Commit Graph

1039 Commits

Author SHA1 Message Date
Martchus f98235f44e Add builduser to same groups as on host
This prevents permission errors when relying on a user's group
for accessing certain files (made available within the container
via bind mounts).
2023-05-27 22:24:40 +02:00
Martchus 9366903fe4 Log systemd-nspawn invocation parameters
When debugging it is useful to know what parameters where
used.
2023-05-27 22:24:40 +02:00
Martchus 3691cf3001 Set TERM within the systemd-nspawn container in makechrootpkg
This is required by WINE to prevent
```
unknown: I need something more specific
```
2023-05-27 22:24:40 +02:00
Martchus a3ff522268 Adjust systemd-nspawn flags
* Remove --keep-unit since it causes sometimes errors and does not seem
  to be required
* Increase maximum number of open files (the default of 1000 is too less
  for some packages)
* Use /etc/resolv.conf from host (otherwise systemd-nspawn uses a config
  which does not work on my host setup)
2023-05-27 22:24:40 +02:00
Kevin Mihelich f8b5d6e1c2 makechrootpkg: don't delete MAKEFLAGS and PACKAGER 2023-05-27 22:24:40 +02:00
Kevin Mihelich 69f5233439 archbuild: no setarch 2023-05-27 22:24:40 +02:00
Kevin Mihelich 6505fb7c07 makechrootpkg: no default logging 2023-05-27 22:24:40 +02:00
Kevin Mihelich 71cf5d0fd4 arch-nspawn: arm fix 2023-05-27 22:24:40 +02:00
Kevin Mihelich 391c9c4fa2 makechrootpkg: distcc 2023-05-27 22:24:40 +02:00
Kevin Mihelich e62e6de3f5 arch-nspawn: keep mirrorlist 2023-05-27 22:24:40 +02:00
Kevin Mihelich eb4fc19f9d makechrootpkg: cache dir 2023-05-27 22:24:40 +02:00
Levente Polyak 1b808b8e32
chore(release): version v1.0.1 2023-05-24 03:19:26 +02:00
Chih-Hsuan Yen e4c40a9802
fix(completion): incorporate repo layout into offload-build completion
Use new repo names for build targets. This follows /usr/bin/*-build
links other than x86_64_v3 ones.
2023-05-24 03:06:03 +02:00
Levente Polyak a08bc2acf4
feature(clone): add protocol option to force cloning over HTTPS
This is a rather quick and simple implementation to override the current
logic and force clone with HTTPS. Allowing to explicitly clone over HTTPS
is currently required to unblock reproducible builds where no ssh keys
and GitLab user accounts are set up as of now. Hence this quick solution
comes into play to mitigate the regression on reproducible builds
builders.

Revisit the overall auto detection and protocol logic approach for a
later release related to some ideas floating around in pending
merge-requests.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-24 02:50:08 +02:00
Morten Linderud f11cb9018e
feature(commitpkg): auto generate .SRCINFO if present
This currently makes .SRCINFO files opt-in and helps to keep the file up
to date if already present.

Signed-off-by: Morten Linderud <foxboron@archlinux.org>
2023-05-23 03:03:39 +02:00
Jan Alexander Steffens (heftig) d759eadb50
fix(diffpkg): Fix scoping of DIFFOPTIONS when comparing split pkgs
`diff_pkgs` needs to use a local variable for its options, otherwise
they will accumulate for each package diffed.

Whem comparing split packages this lead to earlier mutated DIFFOPTIONS
containing too many labels which resulted in a failure.
2023-05-23 02:20:03 +02:00
Jan Alexander Steffens (heftig) 1c399778f9
fix(commitpkg): reliably check tree status regardless of configuration
Check git status --porcelain, not --short.

`--short` is influenced by user configuration like `status.branch`
making it non-empty even on a clean tree. Use `--porcelain` to avoid
this.
2023-05-23 01:47:00 +02:00
Levente Polyak edc14ef19c
Version 1.0.0 2023-05-21 12:25:44 +02:00
Levente Polyak 6ce666a166
feature(parallel): run up to N jobs in parallel for repo clone/configure
Run up to N jobs in parallel. By default the number of jobs is equal to the
number of available processing units. For sequential processing this option
needs to be passed with 1.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 16:12:45 +02:00
Levente Polyak bf61b8472a
chore(archroot): force build chroot recreation to adapt new configs
Bumping the chroot version will result in the chroots checking against
the local version and force recreation in case they do not match.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 15:11:16 +02:00
Levente Polyak 80a8cdcba2
chore(git): use default ssh port 22 url scheme
We only need to specifically use ssh:// protocol prefix if we want to
specify a special port. As we moved to support pulling directly over
port 22 from out GitLab instance we can change the url scheme to the
simple variant.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 12:20:36 +02:00
Levente Polyak 41d4624879
fix(archroot): pass along the real command and argv by the caller
Before modularizing the repo layout, we used m4_include to assemble
together sources into a single file. Now, we properly use a library
layout without assembling multiple files, which means we cannot anymore
rely on BASH_SOURCE inside the library file. Hence, pass along the
actual command and argv from the check_root caller.

Fixes: src: modularize repo layout into a library

Signed-off-by: Morten Linderud <foxboron@archlinux.org>
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:20:41 +02:00
Felix Yan 4d3ab0b489
config: update pacman configs for new repository layout
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:08:13 +02:00
Levente Polyak 830dcde2d8
pkgctl build: support worker slots for none tty builds
Allow overriding the worker slot with a dedicated option. Furthermore
detect if the current tty is no pts and fall back to choosing a random
worker slot between 1 and number of available processing units.

Fixes #137

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:08:13 +02:00
Caleb Maclennan 1da97a8b36
doc: Fixup formatting issues in asciidoc man pages 2023-05-20 00:08:13 +02:00
Alexander Epaneshnikov 9330671825
archrelease: fix mangled release package status output
Git push will print its status, hence switch from a busy line
indicator to a single line message and allow Git to print its status
accordingly.

Otherwise we get:
==> Releasing package...Enumerating objects: 6, done.
2023-05-20 00:08:13 +02:00
Christian Heusel 8e3b6bcc5b
pkgctl repo clone: add option to switch working tree
Add an option to call the switch command after clone. Switch to a
specified version. The working tree and the index are updated to match
the version.

Signed-off-by: Christian Heusel <christian@heusel.eu>
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:08:13 +02:00
Christian Heusel 4289be212b
build: allow release options only in combination with --release
It leads to weird expectations when using --db-update or --message
without --release. Make the behavior more user friendly, by aborting the
operation and explaining that release options only work in conjunction
with the release option.

Fixes #131

Signed-off-by: Christian Heusel <christian@heusel.eu>
2023-05-20 00:08:13 +02:00
Christian Heusel ed96635141
pkgctl repo: introduce the switch subcommand
Signed-off-by: Christian Heusel <christian@heusel.eu>
Co-Authored-By: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:08:13 +02:00
Levente Polyak f961e2e948
completion: implemented structured declarative bash completions
This will make it tremendously easier to add arguments, subcommands and
special positional option handling. Instead of the need to code the
nested structure via bash and switch cases, we can simply declare
functions and arrays with the matching names according to the
subcommands or argument labels.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:08:13 +02:00
Christian Heusel 645a5a9f04
pkgctl: introduce the version subcommand
Related to https://gitlab.archlinux.org/archlinux/devtools/-/issues/125

Closes #125

Signed-off-by: Christian Heusel <christian@heusel.eu>
Co-Authored-By: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:08:12 +02:00
Levente Polyak e1142935e5
completion: zsh: allow args even when the command has subcommands
This allows to show arguments on root level of commands that themselves
have subcommands available. Complete those when any - is used in the
completion word.
2023-05-20 00:08:12 +02:00
Levente Polyak bc182032eb
config: fixup file permissions to be more strict
Normally the default in Arch is that all home directories are private.
However, this may have been changed locally. To make sure we never
expose secrets, lets use a umask of 0077 when writing the config.

Additionally add some temporary fixup code to migrate the file and
directory permissions of already existing paths.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:08:12 +02:00
Levente Polyak f3518e248c
build: support nocheck for initial bootstrap builds
Output a warning when this option is used to remind packagers to rebuild
the packages with checks once the bootstrap cycle has been completed.
2023-05-20 00:08:12 +02:00
Levente Polyak 6c2498750e
doc: add dependency declaration to the README.md
This will help to make sure dependencies are explicitly stated and
reflected in the PKGBUILD.
2023-05-20 00:08:12 +02:00
Christian Heusel 5e22e4f81e
config: allow suppying the gitlab token via env var
This would allow to supply the gitlab tokens via the env var
DEVTOOLS_GITLAB_TOKEN and therefore allow users to choose whatever
program they want to fill this env var.

Closes #113

Signed-off-by: Christian Heusel <christian@heusel.eu>
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:08:12 +02:00
Campbell Jones a981ef40e8
edit: improve editor presence checking
Adds a check for the configured Git editor (git config core.editor) in
both commitpkg and build.sh.

Additionally, instead of blindly executing vi when all other options are
exhausted, remove it instead as it is a none standard installed editor
anyway.

Closes #106

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:08:12 +02:00
Levente Polyak fe2eb3076d
rebuildpkgs: drop legacy script, will be replaced with a smarter UX
Instead of trying to port this ancient script, which doesn't even seem
to work with community, let's instead remove it. We will be adding a
replacement script in pkgctl soon with a smarter and more convenient UX.
2023-05-20 00:08:12 +02:00
Levente Polyak 4ae857e665
doc: update manpage footer for GitLab and remove static list of maintainers
The list of all maintainers that have worked so far on devtools is
exceeding a sane amount making each manpage convulsed. The authors can
be pulled from GitLab directly without occupying lots of space on every
manpage. We would like to express gratitude to all our maintainers.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:08:12 +02:00
Levente Polyak eda3a4aea0
gitlab: add project path function to map special chars
Automatic path conversion is limited to GitLab API v4 and will be
removed in the future. It's expected that the caller does the path
conversion on caller side and only passes a valid path to the API within
its limitations.

Hence convert project names to valid paths:
  1. replace single '+' between word boundaries with '-'
  2. replace any other '+' with literal 'plus'
  3. replace any special chars other than '_', '-' and '.' with '-'
  4. replace consecutive '_-' chars with a single '-'
  5. replace 'tree' with 'unix-tree' due to GitLab reserved keyword

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:08:12 +02:00
Levente Polyak f669a71e84
repo-configure: automatically determine protocol from packager identity
The remote protocol is automatically determined from the author email
address by choosing SSH for all official packager identities and
read-only HTTPS otherwise.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:08:11 +02:00
Levente Polyak 1d7f997215
build: command to build packages inside a clean chroot 2023-05-20 00:08:11 +02:00
Levente Polyak 7954382401
commitpkg: error out if the repo is not configured to latest specs
This ensures the repository we try to commit and release from uses the
latest distro specs for its local git config. The check errors out early
before touching anything and prints a recommendation how to update the
repo.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:08:11 +02:00
Levente Polyak 1ae09b43af
commitpkg: print deprecation warning when executed directly 2023-05-20 00:08:11 +02:00
Levente Polyak d402d5f308
archrelease: print deprecation warning when executed directly 2023-05-20 00:08:11 +02:00
Levente Polyak c839d52793
test: added pkgctl devel wrapper for convenient development testing
For local development testing, there is a convenience wrapper for
`pkgctl` that will automatically build the project using make and proxy
all calls to the local build directory.

Either `./test/bin/pkgctl` can be run directly or the `test/bin`
directory can be added to the PATH.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:08:11 +02:00
Levente Polyak cddba60958
archrelease: add checks for valid remote and up-to-date branch ref
It's safest to probe for the validity of the remote origin and abort
early otherwise. This also allows to print some hints how to create or
configure new repositories at appropriate times.
Additionally fetch remote changes and check the local branch contains
the remote branch ref, otherwise abort and print a hint how to pull and
update the branch.

This should add all check needed for the average failure case that may
lead to a weird state or creation of a local tag that may not be
pushable.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:08:11 +02:00
Levente Polyak f1673c60ad
build: replace m4 defines with sed scripts during build
There is no reason anymore to use m4 since we got rid of the includes by
using library files. Let's replace the last usage of m4 and completely
red rid of it.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-20 00:08:11 +02:00
Levente Polyak e0307c7925
conf: move makepkg and pacman config into separate conf.d dirs
We have used the datadir like a kitchen sink, lets clean up a bit by
having a better and well structured layout. Put makepkg and pacman
configs in separate directories: makepkg.conf.d and pacman.conf.d.
2023-05-20 00:08:11 +02:00
Levente Polyak 5752488ef1
release: command to commit, tag and upload build artifacts
This is a smart and more convenient invocation of the classical
commitpkg and archrelease with auto-discovery for target repositories
and a shorthand option to directly call db-update.
2023-05-19 22:27:13 +02:00