Commit Graph

30 Commits

Author SHA1 Message Date
Adriaan de Groot 5f06b321b2 CMake: correct copy-paste-o for destination of config files 2023-11-16 23:23:58 +01:00
Adriaan de Groot 2b0c41609d CMake: restore INSTALL_CONFIG 2023-11-09 21:52:12 +01:00
Adriaan de Groot 8f72d2541f No more INSTALL_CONFIG 2022-11-05 15:46:39 +01:00
Adriaan de Groot ca4dbabf70 Remove PythonQt support
Nothing beyond the example module was ever built with the
PythonQt bindings, as far as I can tell. They have been
deprecated, defaulting OFF for over two years now.

QML modules fill the gap with customizable, run-time
interpreted UI and stronger support from the C++ side
of Calamares.
2021-09-28 23:49:08 +02:00
Adriaan de Groot 719548213f CMake: if pylint is available, run it as part of the test-suite
This introduces a stub-implementation (fake) that mimics the
API offered by libcalamares (the library is actually exposed
to Python via Boost::Python, so it doesn't act like a C-extension).
Using that stub-implementation, we can check Python modules for
validity as part of the test-suite.

The stub-implementation is needed, because otherwise every
Python module already fails at `import libcalamares`.

- stub-implement the API that is actually used by the Python modules
- in globalstorage, be slightly smart about what keys are being
  requested (so that e.g. all the modules that handle partitions
  information get an empty list and can manipulate that, instead of
  erroring out when they get a string)
2021-09-27 21:02:18 +02:00
Adriaan de Groot 2ebf9124d1 CMake: move check for skipped-modules to all subdirs
The check for skipping a subdirectory was applied to Python subdirs,
not to C++ subdirs. This meant that a skipped module would notice
only in calamares_add_plugin() that it should be skipped. The **rest**
of the CMakeLists.txt in the to-be-skipped modules' subdirectory
was not skipped, and so a test might be added for a module that
was skipped. Depending on how the test consumes the code/module
under test, that might fail to link.

Example module is *initramfs*. Reported by yonggan.
2021-03-26 13:37:02 +01:00
Adriaan de Groot 88aa1755ce CMake: split out skip-module-checking to its own cmake module
The skip-checking is now in the functions for adding plugins and
subdirectories, so that third-party building should get it
as well, for free. Since AddModuleSubdirectory and AddPlugin
use the newly split-out module, handling SKIP_MODULES and USE_*
consistently across module repositories is now easier.

While here, make accumulating-the-skipped-modules explicit.
2021-03-23 01:47:10 +01:00
Adriaan de Groot a64a54ff04 CMake: split out global skip-modules checking
There are two ways to skip building a module:
 - SKIP_MODULES (individually listed)
 - USE_* (pick one from a collection)

Move the handling for those ways to a separate function, so that it
can be re-used in the calamares-extensions module too, or other
external module repositories.
2021-03-23 01:45:03 +01:00
Adriaan de Groot 0bf1df72cd CMake: report Python module name without subdirectory
FIXES ##1641
2021-03-22 13:49:04 +01:00
Adriaan de Groot 1cd9b93a22 REUSE: Giant boilerplate cleanup
- point to main Calamares site in the 'part of' headers instead
  of to github (this is the "this file is part of Calamares"
  opening line for most files).
- remove boilerplate from all source files, CMake modules and completions,
  this is the 3-paragraph summary of the GPL-3.0-or-later, which has
  a meaning entirely covered by the SPDX tag.
2020-08-26 02:28:38 +02:00
Adriaan de Groot 31d0b5b194 REUSE: (BSD-2-Clause) CMakeModules/
The intended license for the CMake modules is BSD-2-Clause;
there's no desire to restrict what can be done with these,
and CMake modules are generally 2-clause licensed.
2020-08-26 02:01:48 +02:00
Adriaan de Groot f218e2e9a6 CMake: handle Python modules built from subdirectory a/b 2020-06-12 12:05:35 +02:00
Adriaan de Groot 73f8c627bd CMake: support out-of-tree builds
- The variables that are set for out-of-tree builds are prefixed
  with  to avoid name clashes; make the module-infrastructure
  respect those instead of the in-tree variable names.
- .. and then duplicate the in-tree variables to the out-of-tree
  variables, so we only need one set of module instructions.
2020-06-12 11:35:23 +02:00
Callum Farmer 0d4642ca6a [CMakeModules] Update SPDX identifiers.
Update CalamaresAddTest.cmake

Update CalamaresAddLibrary.cmake

Update CalamaresAddBrandingSubdirectory.cmake

Update CalamaresAddTranslations.cmake

Update CalamaresAddPlugin.cmake

Update CalamaresAddModuleSubdirectory.cmake
2020-06-03 12:28:58 +01:00
Adriaan de Groot c3d8112187 CMake: allow fine-tuning tests
- The Python configuration tests sometimes need extra setup, so
  do that through a CMakeTests.txt file in the test directory.
- Patch up existing tests:
  - grubcfg needs /tmp/calamares/etc/default to exist
  - rawfs won't work on FreeBSD because of differences in /proc
2020-05-15 14:38:45 +02:00
Adriaan de Groot 1ae38c8ebc CMake: add tests when there are test-configs
- If a module has tests/#.global or tests/#.job, these are used
  as arguments to a test-run of loadmodule (which reads them
  and runs the module with that configuration).
- This makes the old python-loading test and test-runner entirely
  obsolete, so remove them too.
2020-05-08 21:53:39 +02:00
Adriaan de Groot c9447d7794 CMake: add test for python modules
- Only Python modules have a loadmodule-test added. This will call
   run(), but with an empty configuration it should be a no-op.
2019-04-28 09:06:10 -04:00
Adriaan de Groot 1e391bda7e CMake: document intention to run more tests on modules
- Loading the module will check Python modules for syntax,
   and C++ modules for symbols. This would be a good idea,
   except for where it calls exec() and does things to the
   running system. Most modules are harmless with an empty
   config, but you never know (e.g. a process module).
2019-04-27 11:58:29 -04:00
Adriaan de Groot 6f9548af34 CMake: Check module interfaces
- Only allow meaningful interface strings
 - Improve documentation of which interfaces work for
   which module types.
2019-04-27 11:30:16 -04:00
Adriaan de Groot 82c51dec37 CMake: don't change cmake logging on release builds
- There is no real need to reduce the logging on release builds,
   it's just confusing that all the cmake-time output changes
   in a non-meaningful way.
2018-09-14 05:33:04 -04:00
Adriaan de Groot 2f6e80dc42 CMake: always copy the config files to the build directory.
Switching to INSTALL_CONFIG=OFF breaks tests by not having them
in the build directory. Some logic was coupling not-installing
to not-using-in-build-dir too closely.
2018-06-28 04:39:12 -04:00
Adriaan de Groot 42ba505ceb CMake: add license headers, copyright
Since we install the CMake files now, also put license headers in them.
These files are intended to help plugin and branding component authors
write them in a simple Calamares-idiomatic way.
2018-03-09 11:13:42 -05:00
Adriaan de Groot 3723355fb9 CMake: ignore config files (and tests) for skipped modules. 2018-02-07 13:31:50 +01:00
Adriaan de Groot 4630008fa1 CMake: don't copy over modules with unsupported interfaces.
If Python isn't found, or PythonQt isn't found, there is no point
in copying over the modules into the build tree; this may even be
misleading because the files are there, but won't work and this
will be noticed at runtime only.

Instead, skip the modules and explain why.
2018-01-15 22:41:06 +01:00
Adriaan de Groot 6e01bb0fa4 CMake: factor out explanation of skipped modules.
Make a function out of explaining-skipped-modules, and call it
not only after collecting all the modules, but also after
the feature summary, so that it's quite clear which modules
are skipped.
2018-01-10 09:20:49 -05:00