summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-05-20doc: update manpage footer for GitLab and remove static list of maintainersLevente Polyak
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-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>
2023-05-20build: command to build packages inside a clean chrootLevente Polyak
2023-05-20commitpkg: error out if the repo is not configured to latest specsLevente Polyak
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-20commitpkg: print deprecation warning when executed directlyLevente Polyak
2023-05-20archrelease: print deprecation warning when executed directlyLevente Polyak
2023-05-20test: added pkgctl devel wrapper for convenient development testingLevente Polyak
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-20archrelease: add checks for valid remote and up-to-date branch refLevente Polyak
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-20build: replace m4 defines with sed scripts during buildLevente Polyak
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-20conf: move makepkg and pacman config into separate conf.d dirsLevente Polyak
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-19release: command to commit, tag and upload build artifactsLevente Polyak
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-19git: convert repos and tags config to new repo layoutLevente Polyak
2023-05-19db: command for Pacman database modification like update, move etcLevente Polyak
2023-05-19commitpkg: add exported pgp keys with gitLevente Polyak
2023-05-19repo: added command to create a new packaging repositoryLevente Polyak
2023-05-19auth: implemented module to authenticate against our GitLabLevente Polyak
This helps to have a convenient way to manage and test our personal GitLab tokens. Those are used for certain API calls like creating new repositories. prefill the access token web view as per https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#prefill-personal-access-token-name-and-scopes Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-19gitlab: implemented module for required API callsLevente Polyak
We need to use API calls as we can't create repositories in protected namespaces by simply pushing a none existing repository. For privacy reasons this is limited to private personal repositories in GitLab.
2023-05-19config: implemented simple config module to store token and settingsLevente Polyak
2023-05-19src: modularize repo layout into a libraryLevente Polyak
This will greatly help us to structure the functionality and commands in a more sane way. We will distribute the sources as actual libraries and reuse code with imports instead of processing everything with m4 and duplicating a lot of code.
2023-05-19pkgctl: add a unified command-line frontend for devtoolsLevente Polyak
This is the first step of a simple and highly structured unified interface to devtools commands in a single wrapper. The split is based on groups like `repo`, `build` and `diff` Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-19pkgrepo: add subcommand to open the packaging repository's websiteLevente Polyak
This can be quite handy if a packager quickly wants to check the GitLab page for merge requests or but reports. Quickly calling a cli command inside the current packaging clone or with the pkgname provided will open the remote location inside the browser. Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-19pkgrepo: add option to clone all existing packagesLevente Polyak
This can be very handy for cache warming on the repo server or to perform mass operations on all PKGBUILDs. Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-19pkgrepo: rename archco as a general purpose tool for packaging reposLevente Polyak
Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-19commitpkg: use library location for common server and remote propertiesLevente Polyak
It makes a lot of sense to have them in a central place that can be swapped and also re-used across different execution units. Hence lets move the repos.archlinux.org host to lib/common.sh Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-19archco: add option to clone all packages of a maintainerLevente Polyak
Query Archweb to retrieve a list of all packages of a maintainer by their pkgbase. AFterwards loop through all packages and clone them. Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-05-19archco: implement clone and configure subcommandsLevente Polyak
Manages Git packaging repositories and helps with their configuration according to distro specs. Git author information and the used signing key is set up from makepkg.conf read from any valid location like /etc or XDG_CONFIG_HOME. The configure command can be used to synchronize the distro specs and makepkg.conf settings for previously cloned repositories. The unprivileged option can be used for cloning packaging repositories without SSH access using read-only HTTPS. Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-03-19archco: convert tool to git cloneLevente Polyak
2023-03-19crossrepomove: drop support as this is not needed anymoreLevente Polyak
We unified the source repositories to a single location. Having to cross repo move them between physical locations is not required anymore.
2023-03-19commitpkg: omit pkgbase in commit msg as git repos are per pkgbaseLevente Polyak
2023-03-19archrelease: fix git tag conversion and use library function for itLevente Polyak
This allows us to reuse the code and have the conversion in a single place instead of cluttering rules across different execution units. It also fixes the implementations according to the specs of git-check-ref-format. Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-03-19archrelease: explicitly push the main refspecLevente Polyak
2023-03-19archrelease: Added pkgver to git tag conversionMorten Linderud
Signed-off-by: Morten Linderud <foxboron@archlinux.org>
2023-03-19archrelease: ensure we check the checksum of the packageMorten Linderud
Signed-off-by: Morten Linderud <foxboron@archlinux.org>
2023-03-19commitpkg: ensure we always stage and rm filesMorten Linderud
Signed-off-by: Morten Linderud <foxboron@archlinux.org>
2023-03-19commitpkg: ensure we always use the main branchMorten Linderud
Signed-off-by: Morten Linderud <foxboron@archlinux.org> Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-03-19git: first iteration of git supportMorten Linderud
Signed-off-by: Morten Linderud <foxboron@archlinux.org> Adjusted-by: Levente Polyak <anthraxx@archlinux.org>
2023-03-19commitpkg: disallow weak hashing algorithmsJelle van der Waa
Do not allow uploads of source=() with only weak cryptographic hashing algorithms but require at least one strong algorithm. This doesn't 100% enforce it ofcourse, but it allows for an early failure instead of failing in `db-update`. Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-03-16sogrep: do not hardcode the mirrornl6720
Use the first mirror that is configured for each repo in pacman.conf. With the default configuration, this means to use the first mirror from /etc/pacman.d/mirrorlist. If a repo is not configured in pacman.conf, fall back to https://geo.mirror.pkgbuild.com.
2023-03-07Version 2023030720230307Levente Polyak
2023-03-06fix: enable extglob before func definition for bash-5.2 compatibilityTobias Powalowski
The `extglob` option changes the behavior of the shell parser, since extended glob patterns would otherwise be syntax errors. bash-5.2 changed the way a function definition is processed by calling the parser instead of relying on the ad-hoc code in bash-5.1 and earlier versions. This means, in bash-5.2 the shell function was parsed without `extglob` being enabled because the `shopt` command to enable it was part of the function body. Add `shopt` options for `extglob` around function definitions to address this issue and allow bash-5.2 to correctly parse the function. Co-authored-by: Frédéric Pierret (fepitre) <frederic.pierret@qubes-os.org> Co-authored-by: Levente Polyak <anthraxx@archlinux.org> Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-03-06archbuild: add doc for bind mount configCeleste Liu
Signed-off-by: Celeste Liu <CoelacanthusHex@gmail.com>
2023-02-15mkarchroot: stop adding C.UTF-8 to locale.genEvangelos Foutras
Adding such an entry is problematic as it results in locale -a showing: C C.UTF-8 C.utf8 POSIX (other locales) In the above, C.UTF-8 is built-in whereas C.utf8 comes from locale.gen. The duplicate locale has the potential to expose undesired behavior in upstream software: https://github.com/sudo-project/sudo/issues/241
2023-01-17commitpkg: abort execution if msg file editor exits none-successfullyLevente Polyak
Previously the script execution did not abort if the msg file editor exited none-successfully leading to undesired commits with a potentially unfinished message. Instead abort the commit if the msg file editor is deliberately terminated with a failure code. Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-01-17commitpkg: properly cleanup commit msg file on abortLevente Polyak
Use the workdir location which gets cleaned up automatically. Previously this was leaking tmpfiles if the commitpkg command got aborted after file creation. Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2023-01-06archbuild: add architecture-specific mount configCeleste Liu
config path: @pkgdatadir@/mount.d/${arch} config format: Each line will start with 'ro' and 'rw' will be used, other lines will be ignore, rest of line is out/path:in/path. e.g. ``` ro /some/path:/proc/cpuinfo rw /some/some/path:/var/cache/pacman/pkg ``` For example, in the RISC-V port, if we use qemu-user to build, we need to pass a parameter to makechrootpkg to map a correct /proc/cpuinfo, so that software that relies on /proc/cpuinfo to obtain information can be built normally. Signed-off-by: Celeste Liu <CoelacanthusHex@gmail.com>
2023-01-06makechrootpkg: make /tmp inside nspawn largerFelix Yan
systemd by default limits the /tmp folder to be 10% of the host memory: https://github.com/systemd/systemd/blob/6f2cea06bfce6ad99f0ac37ab12af61ef7549fe3/src/shared/mount-util.h#L33 This is problematic to our builds because many toolchains opt to put build artifacts in /tmp, and expecting the host memory to be 10 times larger is not optimal or even realistic sometimes. This MR attempts to enlarge it to 50% memory as the host machine's default value of /tmp. This should be a fair compromise between being overly conservative and taking up too much memory to crash the system.
2023-01-05Version 2023010520230105Levente Polyak
2023-01-03makepkg.conf: enable rust debuginfoLevente Polyak
This enables DEBUG_RUSTFLAGS with the appropriate debuginfo settings. The empty RUSTFLAGS variable is required workaround to avoid double compilation during package function call. The issue is that the behavior of the current implementation of buildenv_debugflags is not idempotent, so consecutive calls will append the same flags again leading to cargo consider the build inputs to have changed. Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
2022-11-21mkarchroot: remove deprecated -d optionMorten Linderud
It's been deprecated for a few years now. https://github.com/archlinux/arch-install-scripts/commit/91562aa99cd8237a2dec1aff5101949e40bf7d75 Signed-off-by: Morten Linderud <foxboron@archlinux.org>