Commit Graph

597 Commits

Author SHA1 Message Date
psykose 91e6e0b542 abuild: set *-pyc as noarch
the files are noarch themselves
2023-04-18 18:36:23 +02:00
Natanael Copa b24bc33446 abuild: warn if pycache is found
and add tests for -pyc package split
2023-04-18 13:27:51 +00:00
Dominique Martinet dd07911cbf abuild: add default_pyc helper
Python by default pre-compiles cache files in __pycache__ directories,
which we currently happily install along in python packages.

Theses .pyc files are rather big and the time/space tradeoff could be
left to users if we just split these out to a -pyc subpackage.

With this default_pyc helper, one can add $pkgname-pyc to their
package's subpackages and it will automatically split off the pyc files
in a package that will be automatically installed if the virtual 'pyc'
package is installed.
Note that this does not work so easily if there already were python
subpackages, the function could be adjusted to strip off the last dash
if required but that seems rather rare.

Random data, sizes:
 - python3: currently 47MiB, split into 23M (main package) / 24M (pyc)
 - py3-markdown: currently 700KiB, 368K (main) / 288K (pyc)

Random benchmark, with python3-pyc:
hyperfine --warmup 5 -m 100 \
    "python3 -c 'import time; print(time.strftime(\"%T\"))'"
  Time (mean ± σ):      24.5 ms ±   2.5 ms    [User: 18.4 ms, System: 6.0 ms]
  Range (min … max):    19.4 ms …  28.9 ms    148 runs

without python3-pyc (same as user without root permissions, root would
generate files on first root, for reference this command generates 184KB
of pyc files):
hyperfine --warmup 5 -m 100 \
    -p 'rm -rf /usr/lib/python3.10/__pycache__ /usr/lib/python3.10/encodings/__pycache__' \
    "python3 -c 'import time; print(time.strftime(\"%T\"))'"
  Time (mean ± σ):      53.7 ms ±   4.3 ms    [User: 39.3 ms, System: 14.3 ms]
  Range (min … max):    47.0 ms …  65.6 ms    100 runs

Link: https://gitlab.alpinelinux.org/alpine/aports/-/issues/11906
Suggested-by: Alex Xu (Hello71) <alex_y_xu@yahoo.ca>
2023-04-18 13:22:14 +00:00
Marian Buschsieweke 6806a0d39b abuild: scan for python3 version requirements
Packages installing python3 site packages for python3 in version 3.x.y
depend on python3~3.x. This automatically adds the required
dependencies.

Unit test cases have been added by reusing the `py3-foo-and-bar` test
package. However, the path of that has been renamed to contain spaces
to be extra sure the logic is safe in regrade to spaces in path
names.
2023-04-18 09:26:12 +00:00
Sören Tempel 6864df03aa abuild-rootbld: copy REPODEST value from host to chroot
Otherwise, if a different REPODEST is being used (e.g. due to
`buildrepo -d <repo-dest>`) then the abuild invocation in the
created chroot will not write packages to the correct REPODEST.
Therefore, `buildrepo -R -d` does presently not work correctly.
This commit fixes this by also copying the REPODEST value from
the environment.

This fixes a regression introduced in 1582617eb8.
2023-04-16 14:25:42 +02:00
psykose d4411cf494 abuild: fix qemu CARCH
ddc6f42ddc broke this by using carch,
which is not defined to anything
2023-04-15 21:50:47 +02:00
psykose 9ee552164c abuild: also pass through ABUILD_BOOTSTRAP in rootbld
since 1582617eb8, it's not passed,
so it's not possible to skip tests for a run via a
 $ ABUILD_BOOTSTRAP=1 abuild rootbld
2023-04-15 10:10:07 +02:00
psykose af88d534d3 Revert "abuild: prune python cache dirs by default"
This reverts commit 489fc06e40.

this needs way more thought to work, see
32f314f8076d509bd4c541b1d250b3744947867f in aports

we should probably just create *-pyc splits instead. these
won't reduce mirror size, but at least allow easily uninstalling the cache.
2023-04-14 16:31:54 +02:00
psykose 31efbc97cd abuild: fixup devhelp
- -$pkgrel is wrong- this is an invalid version spec, the -r is missing
- depends="" should be unset inherited from the origin package
2023-04-14 12:24:57 +02:00
Natanael Copa a083465f35 abuild: fix typo in comment 2023-04-14 11:20:48 +02:00
ptrcnull 306e615683 abuild: add a local repository for every remote one in rootbld
Fixes #10071
2023-04-14 09:01:12 +00:00
Sören Tempel 1582617eb8 abuild-rootbld: clear environment for bwrap container
Otherwise, user-set environment variables can leak into the container
and cause spurious build/test failures. A common example is the value of
the SHELL environment variable which is used by a lot of software.
Outside of the bwrap container I use ksh and my SHELL environment
variable points to /bin/ksh, however, inside the container /bin/ksh is
not available and hence software relying on $SHELL doesn't work
properly. This can cause annoying to debug test failures, e.g. !43430.
2023-04-14 09:00:33 +00:00
psykose 489fc06e40 abuild: prune python cache dirs by default
these will be generated post-install in a hook.

ref https://gitlab.alpinelinux.org/alpine/aports/-/issues/11906
2023-04-14 08:56:48 +00:00
Sören Tempel ddc6f42ddc abuild: allow building x86 binaries with qemu-i386 using rootbld 2023-04-14 08:54:26 +00:00
Natanael Copa 396e6e2737 abuild: add support for -devhelp subpackges
fixes https://gitlab.alpinelinux.org/alpine/abuild/-/merge_requests/87
2023-04-14 08:44:48 +00:00
Marian Buschsieweke 10b4e8e8bd abuild: Fix building with spaces in path 2023-04-14 06:03:17 +00:00
psykose b7c4da8f53 abuild: pass --no-warnings to apk index
apk 2.14 now warns on missing deps in the same repo even with --quiet:

WARNING: No provider for the dependencies:
  /bin/sh aardvark-dns abseil-cpp-dev acl acl-dev alsa-lib-dev android-tools aom-dev apache2 at-spi2-core at-spi2-core-dev atomicparsley attr attr-dev
  audacious autoconf avahi avahi-dev aws-c-cal-dev aws-c-compression-dev aws-checksums-dev baloo-dev bash bc binutils binutils-dev black blas-dev bluez
2023-04-14 05:55:29 +00:00
Jakub Jirutka 49ee073171 abuild: ensure that pkgdesc is a single line
If pkgdesc containes a newline, abuild generates an invalid .PKGINFO.
See https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/44042
2023-04-14 05:53:40 +00:00
psykose 97509ac620 abuild: unpack .tar.zst 2023-04-13 18:52:12 +00:00
Natanael Copa 16febc41a2 abuild: warn when p in pkgver should be _p
we have for example had sudo 1.9.5p2 which should have been
1.9.5_p2. Show a warning to avoid this in the future.
2023-04-07 11:27:09 +00:00
Ariadne Conill d54d8f5d06 abuild: bwrap: use --new-session to mitigate TIOCSTI escape (CVE-2017-5226)
Bubblewrap has an under-documented option which helps to protect against abuse
of TIOCSTI ioctls against the session PTY to escape the build sandbox, the
--new-session option.

Related: https://github.com/containers/bubblewrap/issues/555
Related: https://github.com/containers/bubblewrap/issues/142
Related: https://news.ycombinator.com/item?id=30825088
Signed-off-by: Ariadne Conill <ariadne@dereferenced.org>
2023-03-14 11:06:25 +00:00
Natanael Copa 115e41fd1f abuild: remove use of svnurl
Not used by anything in aports
2023-01-10 17:40:09 +01:00
Natanael Copa 42820c6d44 abuild: remove support for "volatile" packages
It never really worked and we don't have any of those. Remove the code
to simplify.
2023-01-10 16:38:15 +00:00
swiftlebottomE b224407821 abuild: Use $ABUILD_USERDIR instead of hardcoding path 2022-12-14 22:00:19 +00:00
Natanael Copa e8c1ce6127 abuild: fix cleanoldpkg
we should only delete packages of the specified architecture

fixes https://gitlab.alpinelinux.org/alpine/abuild/-/issues/10078
2022-12-06 16:59:03 +01:00
Natanael Copa ee13f777d5 abuild: fix check of maintainer address
Also disallow leading and trailing spaces/quotes.

fixes https://gitlab.alpinelinux.org/alpine/abuild/-/issues/10080
2022-12-02 16:44:53 +01:00
Rohit Lodha 37e150738e APKBUILD should be $APKBUILD 2022-12-02 07:29:21 +00:00
Natanael Copa 5c542377a8 abuild: fix amove corner cases
fix `amove dir` (without leading or trailing /)

add various testcases for amove
2022-09-23 12:31:56 +02:00
Natanael Copa 04c2c9edde abuild: use grep -E instead of egrep
fixes the warning:

  egrep: warning: egrep is obsolescent; using grep -E
2022-09-12 17:06:21 +02:00
ptrcnull 7878630e26 abuild: add $conflicts to spellchecking 2022-08-29 08:10:37 +00:00
Drew DeVault 1571e2887e Downgrade suid w/o PIE from error to warning
Some languages (such as Hare) do not support position-independent
executables. Such cases require extra care and scrutiny, but should not
be entirely disallowed.
2022-08-28 18:18:49 +02:00
xdavidwu 3ee93ea8bc abuild: print failed patches to stderr 2022-08-05 14:32:26 +00:00
psykose 927f14f6b3
abuild: fix package size for script-only packages 2022-08-05 16:00:36 +02:00
ptrcnull 33ce0536ef
abuild: set GIT_CEILING_DIRECTORIES before running prepare/build/check/package 2022-06-22 17:50:38 +02:00
Natanael Copa e25a2b6fc5 abuild: use timestamp of APKBUILD if not in git
we normally use the last git commit timestamp for creating reproducible
builds. Fall back to APKBUILD timestamp if there are no git commits.
2022-06-22 16:13:07 +02:00
Natanael Copa a845a0bf1d abuild: echo invalid filenames to stderr 2022-06-22 16:13:07 +02:00
Natanael Copa 1a4e76dd74 abuild: export $git to fix fatal: not a git repository
We re-spawn abuild and need to pass $git
2022-06-22 16:13:07 +02:00
Natanael Copa 63467b1ef3 abuild: pass -v option to subshells
Help debugging in fakeroot by passing -v option
2022-06-22 16:13:07 +02:00
Natanael Copa f69cbe8b96 abuild: show usage on stderr on invalid options 2022-06-22 16:13:07 +02:00
Nathan Rennie-Waldock 83f19b7fd8 abuild: Fix always reporting ccache as missing when USE_CCACHE=1 2022-06-14 12:40:59 +00:00
Olliver Schinagl f5d6e5e34b abuild: Do not store whitespaces in license field
Currently, abuild stores the license variable ad-verbatim in the PKGINFO
file. This causes many downstream systems to fail. For example, `apk
info` won't show anything after the newline, our webview that lists
licenses do not show these either.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
2022-06-14 12:08:01 +00:00
donoban d9f03b387a rootbld: add '--cache-dir' when preparing the $BUILD_ROOT
Otherwise apk will rely on defaults 'etc/apk/cache' and 'var/apk/cache'
based on new chroot directory and will delete everything when rootbld finishes.
2022-04-05 08:02:48 +00:00
donoban 84d7b7693d rootbld: run mkusers inside the chroot and don't affect host users 2022-04-05 08:02:48 +00:00
Natanael Copa 9a96275d87 abuild: test that subpkg's dependencies versions are valid
Also verify the version of provides

Fixes: https://gitlab.alpinelinux.org/alpine/abuild/-/issues/10058
2022-01-17 16:14:58 +01:00
Natanael Copa 8824e43ad9 abuild: verify subpkgnames
Refactor pkgname check and also check subpkgnames

Add tests for invalid subpkgnames
2022-01-17 15:44:10 +01:00
Ross Younger d0ccbb7c09 abuild: filter out security.selinux xattrs
This patch modifies abuild's behaviour to be independent of
whether SELinux labels are present in the build environment.

This is a workaround for containerised build environments where the
hosting environment has SELinux enabled. Security labels leak into the
container, manifesting as xattrs.

Discussion thread:
https://lists.alpinelinux.org/~alpine/devel/%3CCA%2Bgy4ieuXLuQddxmPuiucyZbut%3D14cR8tgmGrh0qE9qLDBivmg%40mail.gmail.com%3E
2021-10-11 20:43:40 +02:00
Alex Xu (Hello71) 3ad93d9a83 abuild: default_dbg: various fixes
- fix symlinks
- fix hard links
- fix dbg not first
- fix scan race condition
- fix (non-extended) attrs
- general refactoring
2021-10-11 15:33:01 +00:00
Ariadne Conill 02652f5dd6 abuild: version cmd: providers
The default provider priority is 0, which disables the normal way apk
selects an unversioned virtual dependency.  Instead, version the
provider so that cmd: dependencies can be robustly used like normal
dependencies.
2021-10-11 15:27:28 +00:00
Alex D. ba127ff45c abuild: use sourced filename instead of whole line for initd checks 2021-10-11 14:46:43 +00:00
Natanael Copa 1c00caaddb abuild: make sure to not get colors in git_last_commit
git log may return color codes if users colored output forcibly enabled
with:

[color]
	ui = always

Use `git rev-list` instead of `git log` to make sure that we don't get
any color codes.

fixes https://gitlab.alpinelinux.org/alpine/abuild/-/issues/10042
2021-10-07 13:06:06 +02:00