Age | Commit message (Collapse) | Author |
|
We should explicitly instruct makepkg to not sign the source package,
even when the BUILDENV array in makepkg.conf contains 'sign'. The
devtools workflow is to always sign separately from building, which is
different from makepkg and it should not depend on its configuration.
Furthermore, this function is currently used only in offload-build to
collect sources that are transferred to the server before the build
itself. Signing this source package does not provide any benefits.
|
|
The adequate target repo options are not appropriately forwarded to the
release subcommand if the auto-release options is activated. Previously
we did not restrict the --repo option, which the build option has used
as a shortcut. Since last release, this option is restricted to new
packages that are not in any official repository yet.
Fix this issue by forwarding the same target repo options that have been
used during the build command and not forcefully the --repo options.
Fixes #209
Component: pkgctl build
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Since last release, offload building now has proper error handling
enabled. This unfortunately lead to a regression for packages, like any
packages, where makepkg claims debug packages are available during
--packagelist while none were actually built. This leads to the scp
command failing when trying to download the none existing packages
which ultimately leads to a termination of the build script.
Fix this by filtering out package files that do not exist before trying
to download them.
Fixes #208
Component: pkgctl build
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
This works around the fact that we are currently not auto detecting
unstable repository targets while providing a stability layer option on
the subcommand. Soften the --repo option rules by allowing unstable
repositories to use that flag for building and releasing against the
unstable repositories.
This will be replaced in the near future by proper integration of target
repository auto-detection that in aware of unstable repositories while
providing a unstable stability layer options.
Component: pkgctl build
Component: pkgctl release
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Previously the behavior was inconsistent and not fully fulfilling its
purpose of only using --repo once when initially pushing a new and
unknown package to the official repositories.
Consolidate the behavior by only allowing to use --repo during the
initial packaging and disallow any subsequent usage. The expected user
experience is to subsequently use --testing or --staging to influence
the auto-detection of the build target. This avoids any kind of human
error which leads to releasing core packages to extra-testing by
accident.
Furthermore, allow the build subcommand to automatically fallback to
extra as the default stable repository target which greatly improves the
usability for AUR or local override builds.
Fixes #193
Fixes #191
Component: pkgctl build
Component: pkgctl release
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
This change introduces the new --install-to-host flag to pkgctl build,
which can be used with one of the modes 'all' or 'auto'. Depending on
the mode either all or just already installed packages are installed to
the host system.
BREAKING CHANGE: the --install flag is renamed to --install-to-chroot
to avoid confusion with the newly introduced flag.
Component: pkgctl build
Signed-off-by: Christian Heusel <christian@heusel.eu>
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
This helps people to be slightly more patient as the progress status
update includes the current percentage.
Component: pkgctl search
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Change 'none pkgbase' to 'non-pkgbase' as the sentence refers sections
that are not the pkgbase section, rather than an empty pkgbase section
or something of that sort that could be misconstrued by using the word
'none'.
Component: pkgctl version check
|
|
For pkgbases with '.' in the name, the TOML-section must be wrapped in
double quotes in order for it not to be parsed as a supersection and a
subsection. This case was not properly handled by checks for if the
TOML-file contains a pkgbase section, and for if the TOML-file contains
superfluous sections. Address this by handling optional double quotes in
the greps related to said checks.
This was discovered in the AUR package ruby-cool.io and the issue can be
reproduced with the following minimal PKGBUILD and .nvchecker.toml file:
$ cat PKGBUILD
pkgname=ruby-cool.io
pkgver=1.8.0
$ cat .nvchecker.toml
["ruby-cool.io"]
source = "gems"
gems = "cool.io"
Before the fix:
$ pkgctl version check
Failure
x ruby-cool.io: missing pkgbase section in .nvchecker.toml: ruby-cool.io
After the fix:
$ pkgctl version check
GEN lib/version/check.sh
Out-of-date
✓ ruby-cool.io: current version 1.8.0 is latest
Component: pkgctl version check
|
|
Component: pkgctl version check
Component: pkgctl version update
|
|
Enhanced and overhauled the documentation for the 'version' subcommand.
The improvements include comprehensive details on the subcommand's
behavior, usage, and a variety of scenarios it handles.
Added a central section within the pkgctl-version manpage that documents
the nvchecker configuration and rules.
Component: pkgctl version
Singled-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
It can be handy to have an exit code that allows better status
indication or chaining.
On exit, return one of the following codes:
- 0: Normal exit condition, all checked versions are up-to-date
- 1: Unknown cause of failure
- 2: Normal exit condition, but there are out-of-date versions
- 3: Failed to run some version checks
Component: pkgctl version check
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Sometimes it can be desired to get a results for each entry even if the
current version is up-to-date. Add a --verbose option to print this
optional detail.
Component: pkgctl version check
Component: pkgctl version upgrade
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
It may take quite some time to check a lot of upstream versions.
However, we still want to nicely group the results together. To avoid
just showing a static status message it makes much more sense to show a
dynamic spinner with a summary of the progress.
Component: pkgctl version check
Component: pkgctl version upgrade
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
The spinner uses a status file that can be used to dynamically update
the message. The spinner itself buffers the output in a frame buffer
variable before flushing a frame in one go.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Collect all check results in arrays and pretty print the results after
grouping them together based on out-of-date, up-to-date and failures.
Print a summary that shows a brief statistic about the results when
processing multiple check items.
Component: pkgctl version check
Component: pkgctl version upgrade
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
This adds support for global keyfile from the user config home
XDG_CONFIG_HOME which allows to set tokens for GitHub and GitLab for
certain nvchecker configuration.
When ~/.config/nvchecker/keyfile.toml exists, it will automatically be
appended as keyfile of the local .nvchecker.toml file.
Component: pkgctl version check
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Add defensive programming to the execution chain of the version check
subcommand for graceful error handling of subprocesses as well as errors
returned from nvchecker itself indicated in the returned JSON.
Furthermore this fixes a bug when processing multiple packages where the
pkgbase variable is stuck for subsequent packages that do not declare a
pkgbase variable itself.
Component: pkgctl version check
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
This subcommand applies the detected upstream version upgrades to a
PKGBUILD.
Component: pkgctl version upgrade
Co-authored-by: Levente Polyak <anthraxx@archlinux.org>
Signed-off-by: Christian Heusel <christian@heusel.eu>
|
|
Component: pkgctl version check
Signed-off-by: Christian Heusel <christian@heusel.eu>
|
|
Component: pkgctl build
Signed-off-by: Christian Heusel <christian@heusel.eu>
|
|
|
|
The version subcommand handles pkgver related commands, the first
subcommand being `check`. Check runs nvchecker if a `.nvchecker.toml`
file exists and compares the current pkgver with the latest release.
Introduces nvchecker as optional dependency which has to be installed in
order to use this particular subcommand.
BREAKING CHANGE: formerly pkgctl version would output the version of the
pkgctl tool, now it is used as a version related subcommand.
Fixes #140
Component: pkgctl version
Component: pkgctl version check
Co-authored-by: Christian Heusel <christian@heusel.eu>
|
|
During certain operations like --edit, --pkgver etc the PKGBUILD
may change since last sourced. If a modified checksum of the PKGBUILD
is detected, re-source it before processing.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
The srcinfo file is essentially a representation of the current build
recipes, hence generate an up to date version by adding it as secondary
build artifact to the build process.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
|
|
Heavily improve the runtime of huge split packages, by creating an own
parallelized high level implementation of the makepkg low level building
blocks for srcinfo generation.
This reduces the runtine to generate the srcinfo file for thunderbird
from 24 seconds down to 1 second.
|
|
Add an aur command to interact with the Arch User Repository including
the drop-from-repo subommand which allows to drop packages from the
official repository to the Arch User Repository in one go.
Related to #143
Component: pkgctl aur drop-from-repo
Co-authored-by: Levente Polyak <anthraxx@archlinux.org>
Signed-off-by: Christian Heusel <christian@heusel.eu>
|
|
This allows to run the search command without bats, which is not used in
the default pretty output format.
Component: pkgctl search
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Previously if we opened a lock on an existing file with useful content
we overwrote it with an empty file. This is obviously not desired, hence
open the file handle in append mode preserving its content.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Search for an expression across the GitLab packaging group. To use a
filter, include it in your query. You may use wildcards (*) to use glob
matching. Available filters for the blobs scope: path, extension.
Every usage of the search command must be authenticated. Consult the
'pkgctl auth' command to authenticate with GitLab or view the
authentication status.
This command uses bats for pretty printing the results including line
numbers and syntax highlighting.
Component: pkgctl search
Co-authored-by: Christian Heusel <christian@heusel.eu>
Co-authored-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Emit a warning when offload-build is invoked to warn about future
removal.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
The philosophy of our CLI is to provide options that better match human
expectations in an intuitive way rather than mimic wording of previous
tools with abbreviation.
Component: pkgctl build
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
BREAKING CHANGE: Increments the repo spec version which requires to
reconfigure all existing packaging repo clones.
Fixes #129
Component: pkgctl repo configure
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
This is done to closer mimick the behaviour of git here, as it prefers
core.editor setting over the other editor options as per git-var(1):
> The order of preference is the $GIT_EDITOR environment variable, then
> core.editor configuration, then $VISUAL, then $EDITOR, and then the
> default chosen at compile time, which is usually vi.
Fixes #192
Signed-off-by: Christian Heusel <christian@heusel.eu>
|
|
There is a single endpoint now to list all pkgbases and their current
maintainers. Use this endpoint for speeding up the clone of all packages
of a maintainer by only issuing a single API call.
Component: pkgctl repo clone
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
In certain situations, users may encounter limitations when unable to
utilize xdg-open (e.g., when connected to an Arch machine via SSH).
Consequently, this commit introduces the option to simply print the
repository link to copy or click on it.
Signed-off-by: Christian Heusel <christian@heusel.eu>
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Add -n to allow running makepkg with --nocheck. This is useful to reduce
the time required to reproduce a package, as they should not depend on
running the check function for being reproducible.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Implement the -x option for makechrootpkg which allows to get an
interactive shell in the chroot after building the package. Useful to
ease the debugging of a package build.
Depending on the argument, the interactive shell is either always
spawned or only when an error occurred during build.
This option is also forwarded from `pkgctl build` via the `--inspect`
flag.
Component: pkgctl build
Component: makechrootpkg
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
This is useful so people who update patches etc. can update their checksums on building.
The functionality itself was already implemented for --pkgver, but was not available separately.
Fixes #168
Component: pkgctl build
Signed-off-by: Christian Heusel <christian@heusel.eu>
|
|
The referenced places were missing in a previous refactoring commit and
hence broke the build command in multiple ways.
Fixes 0669315821ea0af00fcc2c6271eb474174173e0a
|
|
Don't take the full (local) path of the package to install when using
--offload.
Fixes #194
Component: pkgctl build
|
|
Component: pkgctl build
Signed-off-by: Christian Heusel <christian@heusel.eu>
|
|
Even though the variables in these files are globablly used they have a weirdly local sounding name.
This commit fixes this by refactoring all usages throughout our codebase.
Signed-off-by: Christian Heusel <christian@heusel.eu>
|
|
Anything that requires user input (such as a key unlock or hostkey
verify) will block the terminal and wait for input which will never
come.
When cloning or configuring a repo via ssh we therefore initially
connect to gitlab to warm the connection.
Afterwards users are expected to either have setup a ssh ControlMaster
or use something like a ssh agent.
Fixes #148
Component: pkgctl repo clone/configure
Co-Authored-by: Christian Heusel <christian@heusel.eu>
Signed-off-by: Christian Heusel <christian@heusel.eu>
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
By default the sync operation enables dependency checks during the
preparation of the transaction. This isn't necessary for the print
option, but is done nevertheless, which leads to issues for example
during soname dependency problems. The result is a none functional
automatic repo detection.
Fix this by explicitly disabling dependency version checks. We specify
this option twice to skip all dependency checks.
Fixes #189
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
When releasing a package always generate a .SRCINFO file so we can build
tooling based upon these files instead of having to parse bash in a
non-bash language.
Some tests have shown around 30 seconds or generating the metadata on
packages like thunderbird. The implementation in makepkg becomes semi
slow for some split packages that provide a huge number of individual
packages, but it seems reasonably fast so we can instead have a uniform
state of always providing .SRCINFO files.
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
|
|
Currently we used grep -E, in a way that special characters in the
package name such as the '+' in 'ls++' also became part of the regex.
This commit switches this to become a literal string matching using awk.
Signed-off-by: Christian Heusel <christian@heusel.eu>
|
|
As the relative links are relative to the pkgctl invocations PWD and not
necessarily relative to the location where makechrootpkg is invoked from
this fails unexpectedly.
This commit fixes this by just using the full path when passing the
location to makechrootpkg.
Fixes https://gitlab.archlinux.org/archlinux/devtools/-/issues/181
Signed-off-by: Christian Heusel <christian@heusel.eu>
|
|
`--keep-unit` is really only for use in services like
`systemd-nspawn@.service`.
The parameter was added in commit 000ea6c7bbf6191b because
systemd-nspawn defaults the name of the machine (and thus the generated
scope) to the name of the working directory, which is not unique. Thus
spawning a container from `archbuild/extra-x86_64/foo` while
`archbuild/testing-x86_64/foo` is already running would fail.
We can avoid the unit conflict by giving the container a unique machine
name. Creating a scope also allows us to place the container in a slice
hierarchy for resource control.
|