When using a build.rs script to dynamically generate bindgen bindings
at build-time, it will run on the host, and by default bindgen will
generate bindings for the host arch/libc instead of the target.
To generate the bindings on cross, we need to use BINDGEN_EXTRA_CLANG_ARGS
to specify the proper sysroot and include path for the target.
These arguments are not used for anything other than bindgen's clang
invocation.
Normally, we can add them into configure_args directly.
However, if we need to link with 2 or more libaries (e.g. -latomic
and -lexecinfo on armv6-musl), we have noway to do it properly:
- configure_args will be splited on whitespace
- cmake denies to recognise CMAKE_*_STANDARD_LIBRARIES as a list,
hence denies to split on semicolon (";")
Let's pass LIBS as CMAKE_*_STANDARD_LIBRARIES instead.
Some packages couldn't work well with XBPS_MAKEJOBS,
thus we disable parallel build for those packages.
On the other hand, some packages including but not limited to openjdk
use an internal mechanism to build themselves in parallel.
Let's invent another variable for those packages.
(message by sgn)
Co-authored-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
As of today, everything fails on CI with:
```
Run common/travis/fetch_upstream.sh
Fetching upstream...
fatal: remote error:
The unauthenticated git protocol on port 9418 is no longer supported.
Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information.
Error: Process completed with exit code 128.
```
Switching `git://` to `https://` should fix this.
The option `nostrip_files` takes a filename without path, in contrast to
option `nopie_files` which takes only full path.
This commit makes it so that `nostrip_files` can take either the
filename or the full path.
Setting this variable will make xbps-src use an alternative mirror for
remote repositories.
Using this variable one can change the remote repository for all
architectures in a single setting and without the need to modify
`etc/xbps.d/repos-remote*.conf`. This is much more convenient as it
allows changing remote repos without a dirty worktree.
To use just add a line like the following to `etc/conf`:
XBPS_MIRROR=https://repo-us.voidlinux.org/current
We also disable 00-repository-main.conf for cross so we don't use the
remote repo from the xbps package.
Packages with debug symbols do invalidate their cache with every version
change since $wrksrc does contain the version number and is getting cached
Closes: #33002 [via git-merge-pr]
Hasn't been necessary in Go for a long time [1], so we should take
advantage of that. For an example of the advantages, the 'micro' editor
went from 15MB to 11MB on disk.
[1] https://honnef.co/posts/2016/10/go-and-strip/
We call this "zig-build" instead of just "zig" as this build-style
relies on usage of the zig build system. In the future, other build
systems such as meson may support zig code. Furthermore, the zig
build system may be used to build C/C++ code as well, not just zig.
--dev-bind isn't necessary in any case it was being used for. We can
also use --ro-bind for /void-packages.
A possible future improvement would be to mount / read only during the
actual build.
Also exec bwrap, as done in the uchroot and uunshare chroot styles. And
update homepage.
The -l option causes a looser behavior of patch(1), where patches
are applied when there is a match with no regard to leading
whitespace. This means that it is possible to get false positives:
for example, in srcpkgs/glu, there is a patch that was supposed
to be long gone (since the release already includes it) but it
was overlooked since with -l it happens to apply in a different
portion of the source (where it is wrong).
Avoid these cases.
Message contained one of many packages to install,
incorrectly suggesting that this is problematic one.
Remove that. List of packages is printed on previous line.
In a discussion a year ago [1], I proposed dropping versioned libs
subpackages and the consensus was that the versioning should be kept.
Since then, protobuf has been updated several times and we've always
been able to migrate all dependants, so there's no need to keep the
versioned packages around just in case that can't happen some day.
Let's drop the versioned packages to make upgrades easier and avoid
polluting repo indexes with old packages that don't get cleaned. Users
who need old versions of the libs for un-packaged software may need to
build those old versions by hand, but this is just one of the pitfalls
of using a rolling Linux distribution.
[1]: https://github.com/void-linux/void-packages/pull/18691
- enable pthreads build
- switch gp binary to static link libpari; this offsets the slowdown due
to pthreads
- use -flto and -fno-semantic-interposition which improve speed a little
bit more
- ship the static library, so external programs can static link
- change of maintainer agreed by sgn
I had to add a minimal patch to the makefile, so that the build step
builds and the install step installs. I will try to upstream that patch.
This commit is only to unlock builders.
Builds error out with:
=> debug-me-1.20200820_2: running do_build ...
=> Using stack config in stack.yaml.
Cabal file info not found for posix-pty-0.2.1.1, updating
Selected mirror https://hackage.haskell.org/
Downloading root
Waiting to acquire cache lock on /builddir/debug-me-1.20200820/.stack/pantry/hackage/hackage-security-lock
fdLock: invalid argument (Invalid argument)
Tracked in: #32221
- stop versioning the libpoppler subpackage, we always rebuild
dependants anyway
- add boost since it makes the splash backend much faster [1], but make
it a build option so disabling is easy and any eventual Boost API
breaks are easily overcome
[1] https://gitlab.freedesktop.org/poppler/poppler/-/issues/1080
Instead of using file(1) to check for ELF files, just read bytes
directly from the file and check if they are the ELF magic bytes.
Should probably be factored out into a common function that can be used
in other places, if necessary.
Also use awk instead of "grep|awk" for some minor speedup.
Historically, PKGDESTDIR was only set during pkg_install, and
XBPS_PKGDESTDIR was set to indicate that we're in subpkg's
pkg_install.
However, from 0b95cb8f5d, (Merge xbps-src code to make it usable in
a standalone mode., 2014-03-22), PKGDESTDIR is always set,
regardless of states.
Let's drop all usages of XBPS_PKGDESTDIR.
While we're at it, error out of vmove is used outside of subpkg.
`wrksrc` is supposed to be a top-level directory. Should the build
system need to be run inside a sub-directory, `build_wrksrc` should be
used instead. We change to `build_wrksrc` implicitly before `do_build`
and `do_install`.
Let's respect `build_wrksrc` in `perl-module`.
Currently fails with a hard to understand error message:
2021-04-16T11:51:36.1074291Z => ERROR: rust-std-1.51.0_1: post-install_06-strip-and-debug-pkgs: '$STRIPCMD --strip-unneeded "$f"' exited with 1
nss modules from samba, like libnss_winbind, will be used by
musl-nscd-devel, and therefore should use its headers for the
definitions of return values and others.
Without musl-nscd-devel to provide <nss.h>, samba uses a fallback header
that carries completely incompatible return value definitions.
Co-authored-by: Érico Nogueira <erico.erc@gmail.com>
Some packages require tzdata to testing, however, adding `tzdata` to
those checkdepends will break masterdir, since `tzdata` provides
`/usr/share/zoneinfo/UTC`, hence, it will be removed upon cleanup.
Let's add `tzdata` into `base-chroot` and remove the shenanigan in
`chroot.sh`.
1. Relying on `python3 -m pytest --help` to test for pytest can fail
because the pytest packages's __main__ is still invoked; this can
trigger import problems and falsely indicate that pytest is missing.
A simpler test is to just confirm that pytest is importable. If so,
the interpreter returns 0. Otherwise, an ImportError is thrown and
the interpreter will return 1.
2. Many templates require a custom do_check just to set PYTHONPATH to
either a build directory (especially for compiled extensions) or some
subdirectory of the source tree. Setting PYTHONPATH automatically to
the build directory should drastically reduce the need for custom
do_check in py3 templates. (This only applies to python3-module.sh
because pep517 builders will have unpredictable build directories.)
Closes: #31354.
This update breaks some C++ implementations (see [1] and
05ed2cb76b).
All packages that depend on libmicrohttpd have been checked; all but two
(psensor and retroshare) build against libmicrohttpd >= 0.9.71 by now,
and those two are easy enough to patch.
The relevant change is just switching some API return types from `int`
to an enum with the same values, so there isn't any concern about ABI
compatibility with the change (and in fact it's only a warning on a C
compiler).
[1] https://github.com/kismetwireless/kismet/issues/281
GitHub Action and fetch_upstream.sh script limits fetch depth to 200.
With such depth, should the PR was based on very old tree, we couldn't
find the merge-base to diff again.
In theory, we could replace actions/checkout and fetch_upstream.sh to
fetch more than 200 depth. However, there isn't much gain from such
change and it will increase the time to fetch upstream for all PR.
Arguably, such problematic PR couldn't be built because other steps
would build changed packages' dependencies, too.
Let's complain and exit early instead.
* CI will stop whenever a step is failing.
* We always want to enforce commit message lint
* `xlint` is reporting some false positive for license with " WITH "
Let's make the lint-commits part of xlint.sh
The HEAD given by GitHub Action is always non-fast-forward merge commit.
In the next change, lint-commits will use the tip from
"changed_templates.sh".
Let pick the correct tip for interrogation.
Also move to llvm12 and add llvm-unwind-devel to depends, since it's
required by some packages when building things with ldc.
Forcing linking against libunwind from llvm is necessary, otherwise the
resulting runtime is underlinked and fails to find the unw_* symbols it
needs. Argument taken from Alpine:
aaaa982c68/community/ldc/APKBUILD
It's in POSIX-future and some applications have started depending on it.
It's easier to backport into musl than fix each individual package.
Since we are adding a new interface to libc, update common/shlibs entry
as well. This should probably have been done for all musl updates.
And since we are here, also backport:
- isascii fix (removes the need for a patch in fceux)
- make epoll a cancellation point (fixes a bug in jack pipewire utilities)
The dot (.) inside [] matches literal dot. I don't know how it's
working, however the update-check for some packages is broken (i.e.
anthy-unicode).
Let's remove the backslash.
We need `chmod -R` to be able to cleanup after Go packages, but it's
unnecessary in most other cases. By only running it when the first `rm
-rf` fails, we optimize for the most common case and get a tiny speedup
for this build step.
- still depends on nodejs 10, which will be EOL starting May 2021
- template is very out of date (current version is 1.56.0), which shows
lack of interest for the package
- as seen in [1], depends on outdated electron9 (which void no longer
provides, if we wanted to use system electron), and that's a recent
development
[1] https://github.com/atom/atom/pull/21777
As of it's now, package built with build-helper/qmake natively won't
pick our CFLAGS CXXFLAGS and LDFLAGS. The result could be seen in no
debug symbol in djview.
Furthermore, cross build won't pick our hardening flags.
Let's force qmake pick our flags by using the same method as
build-style/qmake.
- CMAKE_BUILD_TYPE=Release will force -O3 instead of respecting our
CFLAGS and CXXFLAGS
- Theoretically, we could patch cmake to always use -O2 instead,
however, patching will break users' expectation when compiling their
our code.
- RelWithDebInfo could be another option if it's acceptable to always
have debug symbol available.
- However, some projects ignore all CFLAGS and CXXFLAGS;
- Some other projects relies on CMAKE_BUILD_TYPE=Release to install to
correct location and/or disable coverage.
- To get away with -O3, we need patching either ways, let's go with
CMAKE_BUILD_TYPE=None, and patch all problematic softwares.
- Installing gumbo-parser-devel didn't provide .so files,
because they are in the base package, so packages depending on
this library used the static one instead.
- add libgumbo to shlibs
- fix checks
- remove starting an article
Move unrelated libraries to gettext package, since they are only used by
it and by gtranslator, which will for the most part be installed
alongside gtranslator already.
The main purpose with this PR is to stop shipping unversioned libintl.so
in gettext-libs. What happens in this case is that packages built
natively for musl with localization support will have gettext in
hostmakedepends, which will lead to gettext-libs being in the host, and,
consequently, /usr/lib/libintl.so being available.
Due to CMake's FindIntl being bad, CMake projects will assume they
should use libintl.so instead of the gettext support from libc, and link
against it unnecessarily (and sometimes innefectively: CMake points the
compiler at /usr/include/libintl.h instead of our
/usr/include/gettext/libintl.h, which means the musl header will be used
instead, and unless the main executable is linked against libintl, the
library's functions won't even be used). Leaving only the essential
libraries in gettext-libs (versioned libintl.so files) and guaranteeing
gettext doesn't pull in the unversioned one means many packages won't
depend on libintl unnecessarily any more. As a matter of fact, this is a
case where our cross builds were more "correct" than native ones, since
libintl.so in the host won't be found for the target.
Furthermore, some packages require autopoint(1) in order to run
autoreconf; to avoid depending on gettext-devel for it, and ending up
linking in libintl into the final binary, we split it into the
gettext-devel-tools subpackage as well.
Also pull in Alpine patches fixing test failures.
* List dependencies of subpackages as part of the source packages
dependencies, knowing the subpackage they are coming from does
not matter to a build scheduler as long as xbps-src requires
those to exist in the same way to main depends= have to exist.
* Resolve virtual? packages through existing means in xbps-src to
avoid duplicating and possibly diverting from xbps-src's
behaviour in tools that use dbulk-dump.
* Filter out dependencies on the template itself from sub packages,
this matches the xbps-src behaviour and there is no need to
have to duplicate logic for this into the scheduling tool.
* Error out on archs= restrictions as we do already on broken=
and nocross=, there shouldn't be the need to discover archs=
restrictions when attempting to build the package.
- makedepend on mpfr-devel: used for arbitrary precision floats,
otherwise they are limited to double precision (53 bits ~ 13 digits)
- makedepend on pari-devel: used for number theory functions
- fix one line of test output to match a change in pari
- fix a bug in invmod which resulted in a test fail (chk_xavier)
- increase stacksize in musl which is needed for tests to pass
In addition to the two new makedepends, there is a small patch that
fixes one line of test output to match a change in pari.
With this commit, all 12 tests pass in glibc and in musl.
See #28989 for the original issue.
At least KiCAD tries to find wx-config-gtk3 in the current directory,
without looking for it in PATH, so the build fails. Actually give it a
full path, like we do for the cross build case.