this introduces a new build-style void-cross, which can be used
to write system crosstoolchain templates; this is to reduce the
amount of maintenance, resolve existing problems with the cross
toolchain templates and remove repeated code
This allows the build system to detect itself whether it should use
certain features, instead of defaulting to (potentially bad) enabled
status.
Features that aren't detected properly, be it because false positives or
negatives, should be explicitly called out in the templates.
meson 0.54 now honors _FOR_BUILD env vars, and we don't have to set CC
and friends to the host system vars. Setting PKG_CONFIG_FOR_BUILD is
needed since otherwise it would pickup our cross wrapper
Reason: https://gitlab.kitware.com/cmake/cmake/issues/19590
Our workaround within cmake is not sufficient as it does not
address the issue fully and things still break sometimes. So
work around this in the build-style for the time being (and
drop the cmake patch).
Once this is fixed upstream (probably needs special casing
for the -pipe flag and strip it during compile tests) we
can drop this.
Without --locked, cargo ignores the Cargo.lock file during install
and rebuilds the crate with updated dependencies.
This wastes time and makes builds unreproducable.
This forces all haskell-stack build-style using templates to use
the system ghc and never download any binary distributions even
if the version does not match. This is usually fine as long as
the stackage used for the template is recent enough. If it's
not, it should probably be bumped anyway.
This also enables stack to work on all platforms, even those for
which stack does not offer any binary ghc downloads, as long as
the system ghc is provided, e.g. for ppc64le.
ppc is the correct name which cmake reports in a native ppc32
environment, therefore the cross toolchain definition is wrong.
Closes: #12061 [via git-merge-pr]
Signed-off-by: Jürgen Buchmüller <pullmoll@t-online.de>
This reverts commit 6638dc5526.
Setting RelWithDebInfo can cause issues since cmake macros often handle
only Release or Debug build but not RelWithDebInf which might cause
issues https://github.com/void-linux/void-packages/pull/10948
It is advised to set -DCMAKE_BUILD_TYPE=RelWithDebInfo manually in
packages that ignore our CFLAGS or patch them to use them
closes#10948
Waf has a utility function ('lib64' in waflib/Utils.py) which
either returns an empty string or '64' depending on if either of
the paths '/usr/lib64' or '/usr/local/lib64' exist. Then, the
build system itself decides its default LIBDIR to be either
/usr/lib or /usr/lib64 depending on the result of that function,
except when libdir is passed explicitly.
We don't allow lib64 in our packages. We do have the /usr/lib64
path as that is a symlink. Therefore, do not ever allow waf to
configure the path that way.
This adds the build profiles for ppc64 targets as well as
modifications in other parts of the infra.
These targets are supported:
- ppc64le (glibc little endian elfv2)
- ppc64le-musl (musl little endian)
- ppc64-musl (musl big endian)
ELFv1 targets are explicitly not supported at this point.
Big endian musl supports ppc 970 or newer, while little endian
targets are set to a generic powerpc64le which effectively means
POWER8 and newer. Tuning is always set for POWER9, which is the
most likely target hardware. We also make sure AltiVec is always
on, because it is supported on all hardware we target.
[ci skip]
Adds support for Go modules by detecting a go.mod file and, if
available, using it. In addition, to continue supporting vendoring (and
avoid the need for git on all module builds), if a package includes
a vendor directory, the module mode will switch to vendor mode if not
already set. This will use vendored source code for dependencies
instead of downloading that code again using the descriptions under
go.mod.
go_mod_mode=vendor also skips the go.sum check because nothing is
downloaded that isn't already verified, so this fixes packages with
vendored code that have checksum mismatches due to Go 1.11.4 module
checksum changes.
[ci skip]
Closes: #6036 [via git-merge-pr]
PKG_CONFIG environment variable should point to the pkg-config executable
to be used to fetch dependencies that use 'native: true' (indicate to build
against host libraries not cross-compiled ones)
To meet those requirements we set an absolute path to the host
pkg-config since the relative path to pkg-config is taken by the
wrapper.
This currently requires a patch that is a milestone of meson-0.48 that
was generated by the issue:
https://github.com/mesonbuild/meson/issues/1736
meson when compiling something with 'native: true' (for building
executables that are meant to be run on the host system) uses CFLAGS
and CXXFLAGS environment variables, we "pollute" them with
TARGET system cflags/cxxflags, such as -march= for the cross-compiled
arch.
so to fix it we export CFLAGS and CXXFLAGS to be CFLAGS_host and
CXXFLAGS_host respectively, they are set by XBPS and correspond to
the XBPS_CFLAGS/XBPS_CXXFLAGS. This same set of changes is also done
with CC and CXX see L#61
this was found when cross-compiling lighttpd which created the
'lemon' executable to generate inputs
thanks to @Cogitri from Exherbo for helping me debug this
[ci skip]
following https://mesonbuild.com/Cross-compilation.html
- host_machine is our XBPS_TARGET_MACHINE
- build_machine is our XBPS_MACHINE, and meson can find out the details
on it's own
- also don't include -musl in the CPU because meson doesn't recognize it
and projects like Mesa (LibGL) don't enable optimizations for it
- cpu_family and cpu are different, they need to be set properly:
- armv* is arm
- mips* is mips
- i686 is x86
- x86_64 is x86_64
- aarch64 is aarch64
There is no need to use a custom build directory for python{2,3}-only
modules.
This indirectly fixes our issues with packages that use distutils-extra.
Instead of relying on qtchooser to provide the link to the qmake
binary for Qt4 or Qt5 test for either version and use that.
Sometimes qtchooser can fail if e.g. a package was built with Qt4
and after that another package with Qt5 without zapping the masterdir.