Commit Graph

1127 Commits

Author SHA1 Message Date
Levente Polyak 6aa42e1f6e
commitpkg: use library location for common server and remote properties
It makes a lot of sense to have them in a central place that can be
swapped and also re-used across different execution units. Hence lets
move the repos.archlinux.org host to lib/common.sh

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-19 22:27:12 +02:00
Levente Polyak 30616c4fde
archco: add option to clone all packages of a maintainer
Query Archweb to retrieve a list of all packages of a maintainer by
their pkgbase. AFterwards loop through all packages and clone them.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-19 22:27:11 +02:00
Levente Polyak 5eb09a9cc9
archco: implement clone and configure subcommands
Manages Git packaging repositories and helps with their configuration
according to distro specs.

Git author information and the used signing key is set up from
makepkg.conf read from any valid location like /etc or XDG_CONFIG_HOME.

The configure command can be used to synchronize the distro specs and
makepkg.conf settings for previously cloned repositories.

The unprivileged option can be used for cloning packaging repositories
without SSH access using read-only HTTPS.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-19 22:27:11 +02:00
Levente Polyak 6675894159
archco: convert tool to git clone 2023-03-19 22:02:04 +01:00
Levente Polyak bb72473529
crossrepomove: drop support as this is not needed anymore
We unified the source repositories to a single location. Having to cross
repo move them between physical locations is not required anymore.
2023-03-19 22:02:04 +01:00
Levente Polyak 1f4ca51ca1
commitpkg: omit pkgbase in commit msg as git repos are per pkgbase 2023-03-19 22:02:04 +01:00
Levente Polyak b9d20c10a9
archrelease: fix git tag conversion and use library function for it
This allows us to reuse the code and have the conversion in a single
place instead of cluttering rules across different execution units.

It also fixes the implementations according to the specs of
git-check-ref-format.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-03-19 22:02:04 +01:00
Levente Polyak 1844418956
archrelease: explicitly push the main refspec 2023-03-19 22:02:04 +01:00
Morten Linderud f0946c65f5
archrelease: Added pkgver to git tag conversion
Signed-off-by: Morten Linderud <foxboron@archlinux.org>
2023-03-19 22:02:04 +01:00
Morten Linderud f7d122044b
archrelease: ensure we check the checksum of the package
Signed-off-by: Morten Linderud <foxboron@archlinux.org>
2023-03-19 22:02:04 +01:00
Morten Linderud b6f5220bed
commitpkg: ensure we always stage and rm files
Signed-off-by: Morten Linderud <foxboron@archlinux.org>
2023-03-19 22:02:04 +01:00
Morten Linderud f4213f9c36
commitpkg: ensure we always use the main branch
Signed-off-by: Morten Linderud <foxboron@archlinux.org>
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-03-19 22:02:04 +01:00
Morten Linderud 90aba4f84b
git: first iteration of git support
Signed-off-by: Morten Linderud <foxboron@archlinux.org>
Adjusted-by: Levente Polyak <anthraxx@archlinux.org>
2023-03-19 22:02:04 +01:00
Jelle van der Waa 9297eb344e
commitpkg: disallow weak hashing algorithms
Do not allow uploads of source=() with only weak cryptographic hashing
algorithms but require at least one strong algorithm.

This doesn't 100% enforce it ofcourse, but it allows for an early
failure instead of failing in `db-update`.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-03-19 21:57:30 +01:00
nl6720 b34814419d
sogrep: do not hardcode the mirror
Use the first mirror that is configured for each repo in pacman.conf.
With the default configuration, this means to use the first mirror from /etc/pacman.d/mirrorlist.

If a repo is not configured in pacman.conf, fall back to https://geo.mirror.pkgbuild.com.
2023-03-16 19:03:56 +02:00
Levente Polyak 6dd7be3fd4
Version 20230307 2023-03-07 01:51:40 +01:00
Tobias Powalowski 0365edb264
fix: enable extglob before func definition for bash-5.2 compatibility
The `extglob` option changes the behavior of the shell parser, since
extended glob patterns would otherwise be syntax errors. bash-5.2
changed the way a function definition is processed by calling the parser
instead of relying on the ad-hoc code in bash-5.1 and earlier versions.
This means, in bash-5.2 the shell function was parsed without `extglob`
being enabled because the `shopt` command to enable it was part of the
function body.

Add `shopt` options for `extglob` around function definitions to address
this issue and allow bash-5.2 to correctly parse the function.

Co-authored-by: Frédéric Pierret (fepitre) <frederic.pierret@qubes-os.org>
Co-authored-by: Levente Polyak <anthraxx@archlinux.org>
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-03-06 21:51:27 +01:00
Celeste Liu 4ff7aa0d8a
archbuild: add doc for bind mount config
Signed-off-by: Celeste Liu <CoelacanthusHex@gmail.com>
2023-03-06 21:06:59 +01:00
Evangelos Foutras 320c1fd0ac
mkarchroot: stop adding C.UTF-8 to locale.gen
Adding such an entry is problematic as it results in locale -a showing:

  C
  C.UTF-8
  C.utf8
  POSIX
  (other locales)

In the above, C.UTF-8 is built-in whereas C.utf8 comes from locale.gen.

The duplicate locale has the potential to expose undesired behavior in
upstream software: https://github.com/sudo-project/sudo/issues/241
2023-02-15 22:51:40 +02:00
Levente Polyak 7b209b63a7
commitpkg: abort execution if msg file editor exits none-successfully
Previously the script execution did not abort if the msg file editor
exited none-successfully leading to undesired commits with a potentially
unfinished message. Instead abort the commit if the msg file editor is
deliberately terminated with a failure code.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-01-17 00:48:24 +01:00
Levente Polyak d45e77738b
commitpkg: properly cleanup commit msg file on abort
Use the workdir location which gets cleaned up automatically. Previously
this was leaking tmpfiles if the commitpkg command got aborted after
file creation.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-01-17 00:47:20 +01:00
Celeste Liu 009c58f7c9
archbuild: add architecture-specific mount config
config path: @pkgdatadir@/mount.d/${arch}

config format:
Each line will start with 'ro' and 'rw' will be used, other lines will
be ignore, rest of line is out/path:in/path. e.g.

```
ro /some/path:/proc/cpuinfo
rw /some/some/path:/var/cache/pacman/pkg
```

For example, in the RISC-V port, if we use qemu-user to build, we need
to pass a parameter to makechrootpkg to map a correct /proc/cpuinfo, so
that software that relies on /proc/cpuinfo to obtain information can be
built normally.

Signed-off-by: Celeste Liu <CoelacanthusHex@gmail.com>
2023-01-06 16:58:29 +01:00
Felix Yan 112026580d
makechrootpkg: make /tmp inside nspawn larger
systemd by default limits the /tmp folder to be 10% of the host memory:
6f2cea06bf/src/shared/mount-util.h (L33)

This is problematic to our builds because many toolchains opt to put
build artifacts in /tmp, and expecting the host memory to be 10 times
larger is not optimal or even realistic sometimes.

This MR attempts to enlarge it to 50% memory as the host machine's
default value of /tmp. This should be a fair compromise between being
overly conservative and taking up too much memory to crash the system.
2023-01-06 16:25:46 +01:00
Levente Polyak f870ab6864
Version 20230105 2023-01-05 16:20:42 +01:00
Levente Polyak ea782a8ab7
makepkg.conf: enable rust debuginfo
This enables DEBUG_RUSTFLAGS with the appropriate debuginfo settings.

The empty RUSTFLAGS variable is required workaround to avoid double
compilation during package function call. The issue is that the
behavior of the current implementation of buildenv_debugflags is not
idempotent, so consecutive calls will append the same flags again
leading to cargo consider the build inputs to have changed.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-01-03 23:23:43 +01:00
Morten Linderud a510331698
mkarchroot: remove deprecated -d option
It's been deprecated for a few years now.

91562aa99c

Signed-off-by: Morten Linderud <foxboron@archlinux.org>
2022-11-21 21:48:22 +01:00
Hugo Osvaldo Barrera dca8f91d26
makerepropkg: Use $CARCH instead of hardcoded x86_64
`makerepropkg` has a hardcoded "x86_64", so fails to run on other
[unofficial] architectures, because it tries to use an x86_64-specific
makepkg config, which overrides CARCH=x86_64.

This patch addresses hardcoded half of the problem; ArchLinux derivates
still needs to ship a custom `devtools` package with their own
`makepkg-$CARCH.conf`. Usually, the only thing that really needs to be
changed in the per-architecture custom makepkg.conf is CARCH and CHOST.

See: https://lists.archlinux.org/archives/list/arch-projects@lists.archlinux.org/thread/XEEW5LXYFN3XXI5YXAUY5E4LZLMKOFTL/
2022-11-08 22:25:32 +01:00
Morten Linderud b64d8ebacf
makepkg.conf: Include debug option by default
Signed-off-by: Morten Linderud <foxboron@archlinux.org>
2022-11-07 22:11:35 +01:00
Levente Polyak 248cdf7ff2
Version 20221012 2022-10-12 21:40:39 +02:00
Levente Polyak 04a821dddf
common: prevent globbing and word splitting in find_cached_package
We changed the glob in 5d02c6df7f
but we forgot to quote the newly introduced variables.
2022-10-12 21:29:30 +02:00
Mike Yuan d82bc69716
makechrootpkg: fix short option handling for makepkg_args
Currently, when multiple short options are passed as a single argument,
only the one that matches the first case statement will be parsed. This
shall be fixed by using switch-case resume.
2022-10-13 00:10:17 +08:00
Felix Yan 5d02c6df7f
common: improve performance of find_cached_package
find_cached_package was unnecessarily looping over all packages which
uses a lot of CPU and could be exceptionally slow when PKGDEST contains
a lot of packages.

Fix this by adding the target pkgname, pkgver and arch to the glob and
only process potential candidates.
2022-10-11 20:25:08 +02:00
Levente Polyak 20f89df443
Version 20221002 2022-10-02 22:21:36 +02:00
Levente Polyak fcaf3ecec0
fix: do not set extglob globally to avoid side-effects
Instead only enable it for whatever operation requires them.

Example sides effects:
commitpkg can accidently execute PKGBUILD functions when sourcing the
PKGBUILD that has function names like package_libsigc++()

Fixes #87
2022-09-01 23:40:21 +02:00
Levente Polyak 280ef10d37
make: declare lib files as build dependencies for bash src scripts 2022-09-01 23:40:21 +02:00
Levente Polyak f8d2ad9a7d
diffpkg: pass the --color option appropriately to diffoscope
Diffoscope has a different option, called --text-color which only
understands the verbose options. Hence we extend the --color shorthand
for --color=auto and pass the changed option name to diffoscope.
2022-09-01 23:38:44 +02:00
Levente Polyak 2e4060445a
crossrepomove: fix moving debug packages to the target repo
We did not copy over the optional debug packages to the staging
environment before db-updating the moved state. Afterwards the db-remove
call removed the debug packages from the source repo. This lead to
dropping debug packages when using crossrepomove.

This approach ensures we have a uniform shell to avoid shell glob
behavior inconsistencies. The copy of the package path is mandatory and
will error out if missing while the debug package path is optional as
reflected by a subshell that succeeds either way.

Fixes #92
2022-08-31 23:55:05 +02:00
morganamilo 1e23bbc164
makechrootpkg: support -A makepkg flag 2022-08-31 23:38:13 +02:00
Levente Polyak 53be0527e2
fix: properly check for invalid argument in checkpkg and diffpkg
The option switch case only matches by splitting via '|' instead of ','
2022-08-31 02:26:47 +02:00
Levente Polyak f4e8047d65
diffpkg: prefer to search inside the pool dir if available
On certain packaging machines where the pacman cache gets updated very
infrequently, the behavior of diffpkg may not function correctly as old
packages were to be downloaded as diff target. In such cases we look for
a pool directory first and search via a glob for an available pool
package sorted by version.

The pool search glob has three glob segments each disallowing the dash
delimiter to split across pkgrel, pkgver and arch. This will return the
correct package from the pool without considering overly eager wildcards
that potentially match different pkgnames.

The default pool search directory is /srv/ftp/pool
2022-08-31 02:26:47 +02:00
Levente Polyak 70a3041ff8
diffpkg: allow to set column width for side-by-side view
The magic values `columns` and `auto` allow to set specific aspects,
with 'auto' as the default value:

- auto: Set width to the maximum line length of all input files
- columns: Set width to the shell defined $COLUMNS env var

Furthermore any number can be passed to set a static width.
2022-08-31 02:26:47 +02:00
Levente Polyak ba070f1ca9
diffpkg: add colored output option with default of auto 2022-08-23 20:23:51 +02:00
Levente Polyak b9dadc5576
diffpkg: allow to choose between unified context and two columns 2022-08-23 20:23:22 +02:00
Greg Land 6bd7e70e68
doc: Fixed spelling error in devtools man page 2022-08-13 15:23:14 +02:00
Levente Polyak 626aecb472
make: split out man page files into doc/man folder 2022-06-22 01:05:03 +02:00
Levente Polyak 2088244564
make: use GEN message for all generated content 2022-06-22 01:05:03 +02:00
Levente Polyak 37df0765d2
cleanup: move PKGBUILD.proto to contrib folder 2022-06-22 01:05:03 +02:00
Levente Polyak 6d946989f3
doc: update links and references after moving to GitLab 2022-06-22 01:05:03 +02:00
Levente Polyak 5e680513e6
make: automatically collect man pages via wildcard 2022-06-22 01:05:02 +02:00
Levente Polyak d94badcd0b
make: split out source files into src folder 2022-06-22 01:05:02 +02:00