Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2024-02-15feat(offload-build): use rsync instead of scpOrhun Parmaksız
This commit simply replaces the usage of `scp` with `rsync` for faster file transfer. Signed-off-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-02-14fix(common): ensure TERM is always set with a fallback to dumbLevente Polyak
This avoids some corner cases that some applications behave ill when TERM is completely unset. Instead, ensure we set TERM to dumb as a fallback, which should serve better than not having any term defined. Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2024-02-14feat(offload-build): preserve the TERM variableChristian Heusel
Signed-off-by: Christian Heusel <christian@heusel.eu>
2024-02-14fix(common): check before using tput with a fallback for colorsChristian Heusel
The latest release of devtools has included some pretty printing capabilities and fancy terminal stuff with the spinner and so on. It seems like the existing safeguards to disable this for incapable terminals were not enough though, therefore we saw two types of errors: - offload-build: ``` ==> Building in chroot for [extra] (x86_64)... tput: unknown terminal "unknown" tput: unknown terminal "unknown" tput: unknown terminal "unknown" ``` - repro builders: ``` ==> Successfully switched <package> to version <version> tput: No value for $TERM and no -T specified ERROR: Failed checkout <package> ``` The recently included fail option made this error populate to the command level and therefore increased its impact from a not so nice logging message to a more severe problem which made the command abort. We fix this by checking if tput is supported or else use the raw escape sequences instead of tput commands. Fixes: fedfc80 ("feat(term): add terminal utils to handle a dynamic spinner") Fixes: 66e83c9 ("feat(version): pretty print and group together version check results") Fixes: d0dc0e1 ("feat(search): add optional plain output formatting") Signed-off-by: Christian Heusel <christian@heusel.eu>
2024-02-11fix(build): explicitly add --nosign when building a srcpkgJakub Klinkovský
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.
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): avoid trying to download none existing debug packagesLevente Polyak
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>
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(offload-build): deprecate in favor of pkgctl build --offloadLevente Polyak
Emit a warning when offload-build is invoked to warn about future removal. Signed-off-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-03fix(commitpkg): prefer core.editor over $EDITOR and $VISUALChristian Heusel
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>
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(makerepropkg): Add option to skip running check for speedupkpcyrd
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>
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>