summaryrefslogtreecommitdiff
path: root/src/lib
AgeCommit message (Collapse)Author
2024-02-09fix(build): forward target repo options to the release subcommandLevente Polyak
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>
2024-02-08fix(build): allow unstable repositories to override repo targetLevente Polyak
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>
2024-02-08feat(build): consolidate repo flags in build and release subcommandLevente Polyak
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>
2024-02-06feat(build): allow to test-install the built packagesChristian Heusel
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>
2024-02-06feat(search): add status spinner to long running GitLab callsLevente Polyak
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>
2024-02-05fix(doc): Correct typo in version check error messageCarl Smedstad
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
2024-02-05fix(version): Handle pkgbase with '.' correctlyCarl Smedstad
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
2024-02-05fix(version): fix typo never should be newerJelle van der Waa
Component: pkgctl version check Component: pkgctl version update
2024-01-22doc(version): extensively revamp documentation for version subcommandsLevente Polyak
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>
2024-01-22feat(version): use exit code for check to indicate out-of-date versionsLevente Polyak
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>
2024-01-22feat(version): add verbose option to display up-to-date versionsLevente Polyak
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>
2024-01-22feat(version): add spinner while checking upstream versionsLevente Polyak
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>
2024-01-22feat(term): add terminal utils to handle a dynamic spinnerLevente Polyak
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>
2024-01-21feat(version): pretty print and group together version check resultsLevente Polyak
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>
2024-01-21feat(version): support nvchecker keyfile from user config homeLevente Polyak
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>
2024-01-21fix(version): add error handling to version check subcommandLevente Polyak
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>
2024-01-21feat(upgrade): introduce the version upgrade subcommandChristian Heusel
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>
2024-01-21chore(check): factor out function to get upstream versionChristian Heusel
Component: pkgctl version check Signed-off-by: Christian Heusel <christian@heusel.eu>
2024-01-21chore(build): factor out functions to modify PKGBUILDsChristian Heusel
Component: pkgctl build Signed-off-by: Christian Heusel <christian@heusel.eu>
2024-01-18chore(search): correct typo in optional dependency batLevente Polyak
2024-01-10feat(version): introduce version check subcommandJelle van der Waa
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>
2024-01-10fix(build): re-source the PKGBUILD to update changed valuesLevente Polyak
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>
2024-01-10feat(build): update srcinfo file after buildLevente Polyak
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>
2024-01-10feat(util): add library function to generate source packagesLevente Polyak
2024-01-10feat(util): parallelize srcinfo generationLevente Polyak
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.
2024-01-09feat(aur): add subcommand to drop a package from the repos to the AURChristian Heusel
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>
2024-01-07feat(search): add optional plain output formattingLevente Polyak
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>
2024-01-07fix(util): open lock file in append mode to avoid overwriting filesLevente Polyak
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>
2024-01-07feat(search): add subcommand to search across the packaging groupJelle van der Waa
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>
2024-01-05chore(build): use more intuitive update-checksums option for humansLevente Polyak
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>
2023-12-19feat(configure): ship default ignore via excludeLevente Polyak
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>
2023-12-03feat(clone): speedup maintainer and universe clone queryLevente Polyak
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>
2023-11-26feat(web): implement option to print the URL instead of opening itChristian Heusel
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>
2023-11-26feat(makechrootpkg): add option to interactively inspect the chrootLevente Polyak
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>
2023-11-20feat(build): add --updpkgsums optionChristian Heusel
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>
2023-10-17fix(build): use correct variable to reference available architecturesLevente Polyak
The referenced places were missing in a previous refactoring commit and hence broke the build command in multiple ways. Fixes 0669315821ea0af00fcc2c6271eb474174173e0a
2023-10-14fix(build): allow using --install and --offload simultaneouslyAntonio Rojas
Don't take the full (local) path of the package to install when using --offload. Fixes #194 Component: pkgctl build
2023-10-02chore: refactor loop variable nameChristian Heusel
Component: pkgctl build Signed-off-by: Christian Heusel <christian@heusel.eu>
2023-10-02chore: refactor variable names in valid-{tags,repos}.shChristian Heusel
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>
2023-09-26fix(clone): ssh connection may require user input (key unlocking etc)Levente Polyak
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>
2023-09-10fix(pkgctl): avoid pacman db dependency checks during repo detectionLevente Polyak
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>
2023-08-27fix(build): fix repo detection for special chars in package nameChristian Heusel
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>
2023-08-27fix(build): installing packages into the chroot fails for relative linksChristian Heusel
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>
2023-07-06chore: fix spelling mistake packge -> packageChristian Heusel
it seems like the mistake was copied to a few locations, this commit fixes it. Signed-off-by: Christian Heusel <christian@heusel.eu>
2023-07-05chore(build): skip invalid architectures on autodetectionChristian Heusel
This is done so that pkgctl can be better used to build aur packages which can have arch=(...) settings for which we do not have a clean chroot builder. Signed-off-by: Christian Heusel <christian@heusel.eu>
2023-06-18chore(doc): fix spelling typo in pkgrel detectionChristian Heusel
Signed-off-by: Christian Heusel <christian@heusel.eu> Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-27chore(build): improve error wording if no package repo could be detectedAntonio Rojas
Not being in any official repo does not necessarily mean this is a new package. One could simply be building an AUR or custom local package. Make the message less confusing in such case.
2023-05-27chore(doc): remove duplicate subcommand from example help textDaniel M. Capella
2023-05-24fix(completion): incorporate repo layout into offload-build completionChih-Hsuan Yen
Use new repo names for build targets. This follows /usr/bin/*-build links other than x86_64_v3 ones.
2023-05-24feature(clone): add protocol option to force cloning over HTTPSLevente Polyak
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>