Sometimes a package will make a release without verification we
support, in these cases it is nice to be able to toggle off
verification just for that release. Add a new configuration file that
contains the version to not validate.
This file could be extended in the future to support adding specific
keys not to use in the verification process in cases where that key
has problems (though this might be better left to another
configuration file).
Signed-off-by: William Douglas <william.douglas@intel.com>
Modify license skips to handle the common tempfile prefix of '/tmp/*'
and normalize the case where lines lead with a slash vs not.
Also remove a duplicate test for globlike match.
Signed-off-by: William Douglas <william.douglas@intel.com>
Add support for a new config file with glob like handling of paths as
some projects contain license files that are not the license of the
project.
scan_for_licenses now looks at the configuration and does glob like
matching for all the potential license files it tries to add.
This change caused a few structural adjustments to the code and a
slight style change for importing just the toplevel util submodule
that are superficial.
Signed-off-by: William Douglas <william.douglas@intel.com>
This patch has a few interrelated changes in it but primarily it is
supporting a new copy_prepend configuration file for autospec. This is
intended to support cases where changes should be made to the source
directory prior to the source directory being copied for different
builds (avx2, 32bit, etc).
Also with this change some tweaks to how cmake builds are handled to
be more aligned with other build systems. Primarily that the source
directoy is now fully copied rather than just creating a cmake build
directory per build in the same source directory.
Finally check support has been updated to account for the new path and
update support for meson and apx.
Signed-off-by: William Douglas <william.douglas@intel.com>
This change adds the ability to use the cargo build system to build
rust packages. The content being installed will only be the bin
content that is put in ~/.cargo/bin by `cargo install`.
Also fixes up archive handling that was broken in a previous
change.
Signed-off-by: William Douglas <william.douglas@intel.com>
These patterns are being removed as they are not used or are going to
be reworked.
This change also removes support for multi-versioned packages which
were considered for go and cargo purposes.
Signed-off-by: William Douglas <william.douglas@intel.com>
This change allows *extras files to contain '*' matches. This somewhat
emulates the shell glob match in that '/foo*bar' will match '/foobar'
and '/foobazbar' but not '/foo/bar'. The globs are only allowed one
per directory such that '/foo*/bar*' is allowed but '/foo*bar*' is
not.
Signed-off-by: William Douglas <william.douglas@intel.com>
Add support for (*_)provides_{add,ban} configuration files.
This is occasionally useful for cases where a pypi() provide isn't
picked up as the packages isn't a python package but does provide a
python library. It also can be handy when doing some renames to
prevent mass rebuilds.
Signed-off-by: William Douglas <william.douglas@intel.com>
Enable using an alternate command instead of make. This is useful as
some projects are enabling the use of ninja with cmake for instance.
Signed-off-by: William Douglas <william.douglas@intel.com>
Include the ability to have a build_append_once configuration that is
only run once at the top of the build section (before the
build_append, which has gotten a documentation update).
This is motivated by some packages wanting their base build to be
slightly different than the alternate builds.
It is possible instead of this change to instead move to having these
special builds be handled entirely with configuration files or using
another package.
Modified-by: William Douglas <william.douglas@intel.com>
Enable selectively removing version dependencies for a given set of
python modules. The motiviation for this change is to avoid breaking
package builds when there are packages that often lag pypi in updating
their max version requirements.
Signed-off-by: William Douglas <william.douglas@intel.com>
Due to more systems being added for automated runtime dependency
injection for subpackages, we need a way for manual overrides of the
default detected dependencies.
This change provides support for specifying which subpackage runtime
dependencies should be added or removed and consolidates some of the
custom configuration file detection along with it.
Some test suites install files that can't be auto-detected, so support a
tests-extras file to add extra files to the -tests package (not
-extras-tests).
Initial support for concurrent serial and parallel build.
Parallel MPI build enabled via a new setting in "options.conf":
openmpi = false|true (false is default)
* Serial builds remain unaffected.
* Parallel build: Only OpenMPI is supported.
* Parallel builds always assume AVX2.
* Build patterns implemented: "configure" and "cmake".
The build process is controlled by additional files:
"cmake_arg_openmpi": same functionality as "cmake_args"
"configure_openmpi": same functionality as "configure"
The openmpi (configure, build, check, install) sections follow these steps:
module load openmpi
...[configure,build,install,check]
module unload openmpi
Once "openmpi=true", the packages "openmpi-dev", "modules" and "openssh"
are automatically added to BuildRequires. ("openssh" is generally required
to run any MPI test suites).
Packages created:
foo-openmpi: binaries, libraries, docs, ...
foo-dev : contains both serial and MPI devel. files
foo-staticdev: contains both serial and MPI devel. files
Get metadata about the package from pypi for distutils3 build patterns
then use that metadata to get summary, description and provides
information (license and requires maybe leveraged in the future).
The description isn't always very useful (often too long) so only use
it if there isn't one already.
A few options available to configure the flags and optimization are missing from
the documentation (README.rst). This patch adds them.
Also fix a typo in the code
Signed-off-by: Geoffroy Van Cutsem <geoffroy.vancutsem@intel.com>
Update support for handling go packages by handling missing go
dependencies. Make use of go modules and the go proxy (see
https://tip.golang.org/cmd/go/#hdr-Module_proxy_protocol for more
details on the proxy implementation) to discover what artifacts are
needed.
A new go-dep build_pattern that will package all versions that the
go-proxy finds is also added as part of this change. Additional rework
of the golang build_pattern (and Makefile build_pattern as a number of
go packages use Makefiles) to use module vendoring when module
configuration is detected was added as well.
The new functionality is also intended to be used by a higher level
tool that will wrap autospec calls to build missing dependencies as
well as the requested package.
To improve tracking of units that are enabled for restart by
clr-service-restart, add a new config file `service_restart`. It lists
one or more unit names (with full path), one unit per line. The %install
section is updated accordingly.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
Switching to flat file handling using the same conf file parsing as
other config files like extras and dev_extras.
Moves to two different config files for the file list and the requires
list.
This commit changes the syntax of the attrs control file and
actually makes use of it for %file setup.
New syntax of the `attrs` file is `<mode> <user> <group> <filename>`
(space separated).
e.g:
4755 root messagebus /usr/libexec/dbus-daemon-launch-helper
Signed-off-by: Simental Magana, Marcos <marcos.simental.magana@intel.com>
Enable package builders to create custom extras subpackages (suffixed
by -extras). This enables content to be divided more exactly than just
the current extras subpackage support and also allows users to specify
requirements on other subpackages in the package. It is not intended
to replace extras usage as this feature should be used sparingly where
content really must be specificly placed.
Those contain extra auto(re)conf arguments to be passed to AVX2 and
AVX512 builds, instead of configure64.
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Mark the golang, scons, and cargo build patterns as WIP, since they need
more work before considering them production-ready.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
Add support for package specific configuration to be added before any
other actions in each of the %prep, %build and %install sections are
run. As part of this rename the prep_append configuration file to
build_prepend and make_install_append configuration file to
install_append.
Fix#148
Previous to this commit, if the autospec.conf `git` configuration value
is unset, autospec would not instantiate a git repo and not commit any
changes.
However, because the purpose of that config value is to define a pattern
for the git remote URI, it should be completely optional. Users may not
be pushing their repo to a remote location, or the remote repo name may
not match the local repo name (e.g. with Github not allowing certain
characters to appear to repo names).
With this change, autospec will now always commit changes unless
--skip-git is passed on the command line.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
Instead of hardcoding the "-r clear" option to specify the Mock config,
make this configurable with a new -m/--mock-config command line option.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
qmake uses project files called *.pro, which we detect at the top-level,
so long as there's no configure script also present. We scan the *.pro
files for QT{,_PRIVATE,_FOR_CONFIG} += lines, which will give us the
extra dependencies, then convert from the qmake internal name to the
pkgconfig name.
This build pattern works for all Qt 5.10 modules, except that it
concludes that a module depends on itself, if it has a library depending
on another library that it's also building (example: libQtQuick.so
depends on libQtQml.so). For those modules, it's necessary to list the
libraries that are product of the package in the pkgconfig_ban file.
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Resolves#34
In case the user wants to override the base package %description content
autodetected by autospec, add support for a config file named
"description" to provide the content instead.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>