summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
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-09-04feat(release): always generate a .SRCINFO file on releaseJelle van der Waa
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>
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-21feat(arch-nspawn): Use a unique scope name instead of --keep-unitJan Alexander Steffens (heftig)
`--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.
2023-07-21chore(arch-nspawn): Simplify args construction for systemd-nspawnJan Alexander Steffens (heftig)
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-23pkgctl --arch32: check out also build-support, do not overwrite PKGBUILD if ↵Andreas Baumann
we already have one
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-06-17fix(commitpkg): ensure the PKGBUILD is version controlledChristian Heusel
Early exit in case the PKGBUILD is not yet properly under version control, which can happen for freshly initialized repositories. Furthermore print an appropriate error message including a hint how to resolve this. Fixes #154 Fixes #167 Signed-off-by: Christian Heusel <christian@heusel.eu> Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-06-13pkgctl repo clone --arch32 does a Arch32 specific clone nowAndreas Baumann
2023-06-12fix more whitespacesErich Eckner
2023-06-12fix whitespace errorErich Eckner
2023-06-08fixed wrongly-merged host_mirrors computation in arch-nspawn.inAndreas Baumann
2023-06-08started to add a --arch32 flag (atm just setting arch correctly)Andreas Baumann
2023-05-29merged with devtools 1.0.1 upstream (git repo migration)Andreas Baumann
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-27fix(commitpkg): only force existing files to be under version controlLevente Polyak
Before porting commitpkg to Git, the code has checked the SVN status for none commited files. During the port this has changed by straight checking for any passed files if they were under version control or not. In general the whole logic is very brittle as variables are searched by regex and directly passed to eval while ignoring any function scoping. This leads to missing files when they reference the $pkgname inside a package function but also provide wrong ones when eval simply returns the first $pkgname while ignoring and function scopes. In the future this should completely be replaces by .SRCINFO processing. Fixes #145 Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-26fix(archroot): preserve original args for check_root before discardingToolybird
arch-nspawn, mkarchroot, makerepropkg all call "shift" after getopts processing. Save the original args and pass on to check_root to prevent options being discarded. Fixes 41d4624879d01b1269d6af9c1440592a15ad7784 Fixes #149 Signed-off-by: Toolybird <toolybird@tuta.io> Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
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>
2023-05-23feature(commitpkg): auto generate .SRCINFO if presentMorten Linderud
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-23fix(diffpkg): Fix scoping of DIFFOPTIONS when comparing split pkgsJan Alexander Steffens (heftig)
`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-23fix(commitpkg): reliably check tree status regardless of configurationJan Alexander Steffens (heftig)
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-20feature(parallel): run up to N jobs in parallel for repo clone/configureLevente Polyak
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-20chore(archroot): force build chroot recreation to adapt new configsLevente Polyak
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-20chore(git): use default ssh port 22 url schemeLevente Polyak
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-20fix(archroot): pass along the real command and argv by the caller1.0.0rc1Levente Polyak
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-20pkgctl build: support worker slots for none tty buildsLevente Polyak
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-20archrelease: fix mangled release package status outputAlexander Epaneshnikov
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-20pkgctl repo clone: add option to switch working treeChristian Heusel
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-20build: allow release options only in combination with --releaseChristian Heusel
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-20pkgctl repo: introduce the switch subcommandChristian Heusel
Signed-off-by: Christian Heusel <christian@heusel.eu> Co-Authored-By: Levente Polyak <anthraxx@archlinux.org>
2023-05-20pkgctl: introduce the version subcommandChristian Heusel
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-20config: fixup file permissions to be more strictLevente Polyak
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-20build: support nocheck for initial bootstrap buildsLevente Polyak
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-20config: allow suppying the gitlab token via env varChristian Heusel
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-20edit: improve editor presence checkingCampbell Jones
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-20rebuildpkgs: drop legacy script, will be replaced with a smarter UXLevente Polyak
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-20gitlab: add project path function to map special charsLevente Polyak
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-20repo-configure: automatically determine protocol from packager identityLevente Polyak
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>