Compare commits

...

46 Commits

Author SHA1 Message Date
41c90f8d49 iso services: use dinitctl instead of symlinks
All checks were successful
Artools shellcheck / lint (push) Successful in 1m2s
2025-08-15 20:50:54 +02:00
c97a0cdd59 artixpkg repo import: show git diff with -n flag
All checks were successful
Artools shellcheck / lint (push) Successful in 31s
2025-06-28 14:55:24 +02:00
1ba16c45f9 artixpkg: fix removal by git add srcinfo.yaml
All checks were successful
Artools shellcheck / lint (push) Successful in 30s
2025-06-12 17:33:20 +02:00
95afc31152 artixpkg git: show repo db after pull
All checks were successful
Artools shellcheck / lint (push) Successful in 58s
2025-06-08 17:19:48 +02:00
af81317aad dbg (#152)
All checks were successful
Artools shellcheck / lint (push) Successful in 57s
Reviewed-on: #152
Co-authored-by: Artoo <artoo@artixlinux.org>
Co-committed-by: Artoo <artoo@artixlinux.org>
2025-05-25 12:03:22 +02:00
79e12f3d10 artixpkg repo: gen scrinfo.yaml if not present (#151)
All checks were successful
Artools shellcheck / lint (push) Successful in 57s
Reviewed-on: #151
Co-authored-by: Artoo <artoo@artixlinux.org>
Co-committed-by: Artoo <artoo@artixlinux.org>
2025-05-21 20:04:11 +02:00
917cd188d9 artixpkg: add --quiet to import (#150)
All checks were successful
Artools shellcheck / lint (push) Successful in 24s
Reviewed-on: #150
Co-authored-by: Artoo <artoo@artixlinux.org>
Co-committed-by: Artoo <artoo@artixlinux.org>
2025-05-12 21:49:34 +02:00
bfe462432d artixpkg: fix import on rejected tag erroring
All checks were successful
Artools shellcheck / lint (push) Successful in 29s
2025-05-12 21:00:05 +02:00
896e8e195f artixpkg: fix move for new pkgs not in stable yet
All checks were successful
Artools shellcheck / lint (push) Successful in 55s
2025-05-12 18:43:22 +02:00
12d1b784ff bash completion changes (#149)
All checks were successful
Artools shellcheck / lint (push) Successful in 24s
fix package completion. other changes to match latest interface.

Reviewed-on: #149
Co-authored-by: Cory Sanin <corysanin@artixlinux.org>
Co-committed-by: Cory Sanin <corysanin@artixlinux.org>
2025-05-07 18:02:46 +02:00
d8129cbb9a artixpkg: git add jenkinsfile if modified on move
All checks were successful
Artools shellcheck / lint (push) Successful in 25s
2025-05-05 23:20:28 +02:00
950e0604a4 artixpkg: fix repo import upstream fetch
All checks were successful
Artools shellcheck / lint (push) Successful in 55s
2025-05-05 17:20:22 +02:00
607fa38500 fixes (#148)
All checks were successful
Artools shellcheck / lint (push) Successful in 26s
Reviewed-on: #148
Co-authored-by: Artoo <artoo@artixlinux.org>
Co-committed-by: Artoo <artoo@artixlinux.org>
2025-05-04 19:17:36 +02:00
39a2158c48 artixpkg repo move: git add srcinfo.yaml if generated
All checks were successful
Artools shellcheck / lint (push) Successful in 24s
2025-05-04 09:55:03 +02:00
c67826fd2a pre-rel-fixes (#147)
All checks were successful
Artools shellcheck / lint (push) Successful in 55s
Reviewed-on: #147
Co-authored-by: Artoo <artoo@artixlinux.org>
Co-committed-by: Artoo <artoo@artixlinux.org>
2025-05-04 09:03:38 +02:00
3ac0122eac agent (#146)
All checks were successful
Artools shellcheck / lint (push) Successful in 24s
automatically set agent

add, move,remove gain -a/--agent opt

Reviewed-on: #146
Co-authored-by: Artoo <artoo@artixlinux.org>
Co-committed-by: Artoo <artoo@artixlinux.org>
2025-05-01 09:10:45 +02:00
9afe8a863e srcinfo-yaml (#145)
All checks were successful
Artools shellcheck / lint (push) Successful in 58s
Reviewed-on: #145
Co-authored-by: Artoo <artoo@artixlinux.org>
Co-committed-by: Artoo <artoo@artixlinux.org>
2025-04-30 16:08:01 +02:00
9b1b1c46ed pkg2yaml (#144)
All checks were successful
Artools shellcheck / lint (push) Successful in 29s
Reviewed-on: #144
Co-authored-by: Artoo <artoo@artixlinux.org>
Co-committed-by: Artoo <artoo@artixlinux.org>
2025-04-14 20:48:58 +02:00
525c7dd0ee pkg: update makepkg.conf.d
All checks were successful
Artools shellcheck / lint (push) Successful in 8m37s
2025-02-23 02:04:30 +01:00
744eb3ca96 artixpkg: fix --no-patch logic import
All checks were successful
Artools shellcheck / lint (push) Successful in 1m2s
2025-02-22 04:21:33 +01:00
3dd3f806ef artixpkg: add --no-patch import flag
All checks were successful
Artools shellcheck / lint (push) Successful in 1m59s
2025-02-17 20:33:06 +01:00
fa245021bf makepkg-conf (#141)
All checks were successful
Artools shellcheck / lint (push) Successful in 34s
Reviewed-on: #141
Co-authored-by: Artoo <artoo@artixlinux.org>
Co-committed-by: Artoo <artoo@artixlinux.org>
2024-12-07 10:32:40 +01:00
fd74b22bc2 arch-patches (#140)
All checks were successful
Artools shellcheck / lint (push) Successful in 1m9s
Reviewed-on: #140
Co-authored-by: Artoo <artoo@artixlinux.org>
Co-committed-by: Artoo <artoo@artixlinux.org>
2024-12-06 15:11:22 +01:00
538e5051e5 artixpkg: add custom arch mapping for importing packages
Some checks failed
Artools shellcheck / lint (push) Has been cancelled
There are some packages that track upstream arch but have different
names. This can be handled using a special mapping similar to what is
done in artix-checkupdates.
2024-09-05 14:45:39 -05:00
ba2542c697 artixpkg: remove archlinux to artixlinux sed on import
All checks were successful
Artools shellcheck / lint (pull_request) Successful in 38s
Artools shellcheck / lint (push) Successful in 36s
This is not always desirable. For some packages, the upstream url really
is archlinux.org. This can be taken care of in artix-patches instead.
2024-08-26 10:38:56 -05:00
23c6cecdcc artixpkg: remove unneeded sed condition from import
All checks were successful
Artools shellcheck / lint (pull_request) Successful in 36s
Artools shellcheck / lint (push) Successful in 42s
Changing "(Arch Linux)" to "(Artix Linux)" is not used in practice by
any package and doing such name changes like this is better handled in
artix-patches instead of it being a blunt hammer on all imported
packages.
2024-07-26 20:13:35 -05:00
828844fd9a artixpkg git push: remove parallel
All checks were successful
Artools shellcheck / lint (push) Successful in 35s
2024-05-13 17:03:59 +02:00
760f5e8281 artools/0.34.x (#135)
All checks were successful
Artools shellcheck / lint (push) Successful in 35s
Co-authored-by: Dudemanguy <dudemanguy@artixlinux.org>
Co-authored-by: Cory Sanin <corysanin@artixlinux.org>
Reviewed-on: #135
2024-05-13 15:41:42 +02:00
bb1585ad7b add initial zsh completions (#132)
All checks were successful
Artools shellcheck / lint (push) Successful in 38s
Not as advanced as the bash completions but better than nothing.

Co-authored-by: artoo <artoo@artixlinux.org>
Reviewed-on: #132
Co-authored-by: Dudemanguy <dudemanguy@artixlinux.org>
Co-committed-by: Dudemanguy <dudemanguy@artixlinux.org>
2024-04-27 22:02:55 +02:00
be6506d6ee artixpkg git ci: fix team (#133)
All checks were successful
Artools shellcheck / lint (push) Successful in 39s
Reviewed-on: #133
2024-04-17 23:08:48 +02:00
35a9c2f305 artools/0.34.x (#131)
All checks were successful
Artools shellcheck / lint (push) Successful in 43s
Co-authored-by: Dudemanguy <dudemanguy@artixlinux.org>
Co-authored-by: Cory Sanin <corysanin@artixlinux.org>
Reviewed-on: #131
Co-authored-by: Artoo <artoo@artixlinux.org>
Co-committed-by: Artoo <artoo@artixlinux.org>
2024-04-17 17:05:39 +02:00
5347f45cc5 Merge pull request 'chroot-run: set PATH in chroot' (#129) from env-fix into master
All checks were successful
Artools shellcheck / lint (push) Successful in 46s
Reviewed-on: #129
2024-04-10 23:08:20 +02:00
c7f11a5bd5 chroot-run: set PATH in chroot
All checks were successful
Artools shellcheck / lint (pull_request) Successful in 48s
2024-04-10 23:05:38 +02:00
f3794ff2ad Merge pull request 'artixpkg: use artix-patches on import' (#119) from corysanin/artools:artix-patches into master
All checks were successful
Artools shellcheck / lint (push) Successful in 47s
Reviewed-on: #119
2024-04-03 21:56:40 +02:00
c6811cca48 update repo URL 2024-04-03 14:42:23 -05:00
a1f296ff2b moving patch scripts 2024-04-03 14:41:13 -05:00
ac5e0f4b3d simplify PKGBUILD paths 2024-04-03 14:41:13 -05:00
2ecfb04dc6 artixpkg: use artix-patches on import 2024-04-03 14:41:13 -05:00
e81eac2021 artixpkg: update usage (#124)
All checks were successful
Artools shellcheck / lint (push) Successful in 41s
Reviewed-on: #124
Co-authored-by: Artoo <artoo@artixlinux.org>
Co-committed-by: Artoo <artoo@artixlinux.org>
2024-04-02 14:54:11 +02:00
e612d2c6d2 artixpkg git: fix ci lib source
All checks were successful
Artools shellcheck / lint (push) Successful in 46s
2024-04-01 19:27:32 +02:00
2bed697813 Merge pull request 'repopkg: --include-sigs on add' (#123) from repopkg into master
All checks were successful
Artools shellcheck / lint (push) Successful in 42s
Reviewed-on: #123
2024-04-01 14:47:19 +02:00
ba4ac669e7 repopkg: --include-sigs on add
All checks were successful
Artools shellcheck / lint (pull_request) Successful in 33s
2024-04-01 14:45:20 +02:00
47babd20fd Merge pull request 'artixpkg: refactor ci into git sub cmd' (#122) from refactor-ci into master
All checks were successful
Artools shellcheck / lint (push) Successful in 34s
Reviewed-on: #122
2024-04-01 14:39:38 +02:00
d35422a74e artixpkg: refactor ci into git sub cmd
All checks were successful
Artools shellcheck / lint (pull_request) Successful in 36s
2024-04-01 13:09:37 +02:00
94b8957494 artixpkg ci: remove redundant --switch opt
All checks were successful
Artools shellcheck / lint (push) Successful in 42s
2024-03-31 12:22:06 +02:00
a0a485294c artixpkg ci: remove obsolete jobs opt
All checks were successful
Artools shellcheck / lint (push) Successful in 38s
2024-03-30 21:48:10 +01:00
59 changed files with 998 additions and 769 deletions

View File

@@ -1,6 +1,6 @@
SHELL=/bin/bash
V=0.33
V=0.36
BUILDTOOLVER ?= $(V)
CHROOTVER=0.12
@@ -80,7 +80,7 @@ conf_base:
conf_pkg:
@install -d $(BUILDDIR)/makepkg.conf.d $(BUILDDIR)/artools
@cp -a $(MAKEPKG_CONFIGS) $(BUILDDIR)/makepkg.conf.d
@cp -ra $(MAKEPKG_CONFIGS) $(BUILDDIR)/makepkg.conf.d
@cp -a $(TOOLS_CONFIGS_PKG) $(BUILDDIR)/artools
conf_iso:
@@ -111,11 +111,13 @@ install_pkg: binprogs_pkg
for conf in $(notdir $(TOOLS_CONFIGS_PKG)); do install -Dm0644 $(BUILDDIR)/$(TOOLS)/$$conf $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)/$${conf##*/}; done
for conf in $(notdir $(MAKEPKG_CONFIGS)); do install -Dm0644 $(BUILDDIR)/makepkg.conf.d/$$conf $(DESTDIR)$(DATADIR)/makepkg.conf.d/$${conf##*/}; done
cp -ra $(BUILDDIR)/makepkg.conf.d -t $(DESTDIR)$(DATADIR)
for a in $(SETARCH_ALIASES); do install -m0644 $$a -t $(DESTDIR)$(DATADIR)/setarch-aliases.d; done
ln -sf find-libdeps $(DESTDIR)$(PREFIX)/bin/find-libprovides
install -Dm0644 $(BUILDDIR)/contrib/completion/bash/artixpkg $(DESTDIR)$(PREFIX)/share/bash-completion/completions/artixpkg
install -Dm0644 $(BUILDDIR)/contrib/completion/zsh/_artixpkg $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_artixpkg
install_iso: binprogs_iso
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
@@ -133,13 +135,12 @@ uninstall:
for f in $(notdir $(LIBRARY)); do rm -f $(DESTDIR)$(DATADIR)/lib/$$f; done
rm -rf $(DESTDIR)$(DATADIR)/lib
for conf in $(notdir $(TOOLS_CONFIGS)); do rm -f $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)/$${conf##*/}; done
for conf in $(notdir $(MAKEPKG_CONFIGS)); do rm -f $(DESTDIR)$(DATADIR)/makepkg.conf.d/$${conf##*/}; done
rm -rf $(DESTDIR)$(DATADIR)/makepkg.conf.d
for conf in $(notdir $(PACMAN_CONFIGS)); do rm -f $(DESTDIR)$(DATADIR)/pacman.conf.d/$${conf##*/}; done
for f in $(notdir $(SETARCH_ALIASES)); do rm -f $(DESTDIR)$(DATADIR)/setarch-aliases.d/$$f; done
rm -f $(DESTDIR)$(PREFIX)/bin/find-libprovides
rmdir --ignore-fail-on-non-empty \
$(DESTDIR)$(DATADIR)/setarch-aliases.d \
$(DESTDIR)$(DATADIR)/makepkg.conf.d \
$(DESTDIR)$(DATADIR)/pacman.conf.d \
$(DESTDIR)$(DATADIR) \
$(DESTDIR)$(SYSCONFDIR)/$(TOOLS)

View File

@@ -36,5 +36,11 @@
# default archiving org
# GIT_ORG_ARCHIVE='landfill'
# default jenkins agents
# AGENTS=(orion taurus)
# whether to include custom maintainer line when importing from arch
# PATCH_MAINTAINER=false
# override the default git url for patches repo
# PATCH_URL=${GIT_SSH}:artix/artix-patches.git
# override the default debug pool
# PKGDEST_DBG=${WORKSPACE_DIR}/packages-debug

View File

@@ -0,0 +1,18 @@
#!/hint/bash
#
# /etc/makepkg.conf.d/fortran.conf
#
#########################################################################
# FORTRAN LANGUAGE SUPPORT
#########################################################################
# Flags used for the Fortran compiler, similar in spirit to CFLAGS. Read
# linkman:gfortran[1] for more details on the available flags.
#FFLAGS="-O2 -pipe"
#FCFLAGS="$FFLAGS"
# Additional compiler flags appended to `FFLAGS` and `FCFLAGS` for use in debugging. Usually
# this would include: ``-g''. Read linkman:gfortran[1] for more details on the wide
# variety of compiler flags available.
#DEBUG_FFLAGS="-g"

View File

@@ -0,0 +1,19 @@
#!/hint/bash
# shellcheck disable=2034
#
# /etc/makepkg.conf.d/rust.conf
#
#########################################################################
# RUST LANGUAGE SUPPORT
#########################################################################
# Flags used for the Rust compiler, similar in spirit to CFLAGS. Read
# linkman:rustc[1] for more details on the available flags.
RUSTFLAGS="-Cforce-frame-pointers=yes"
# Additional compiler flags appended to `RUSTFLAGS` for use in debugging.
# Usually this would include: ``-C debuginfo=2''. Read linkman:rustc[1] for
# more details on the available flags.
DEBUG_RUSTFLAGS="-C debuginfo=2"

View File

@@ -43,17 +43,16 @@ CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
-Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \
-fstack-clash-protection -fcf-protection"
# -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"
CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \
-Wl,-z,pack-relative-relocs"
LTOFLAGS="-flto=auto"
RUSTFLAGS=""
#-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2"
#-- Debugging flags
DEBUG_CFLAGS="-g"
DEBUG_CXXFLAGS="$DEBUG_CFLAGS"
DEBUG_RUSTFLAGS="-C debuginfo=2"
#########################################################################
# BUILD ENVIRONMENT
@@ -82,7 +81,7 @@ BUILDENV=(!distcc color !ccache check !sign)
# These are default values for the options=() settings
#########################################################################
#
# Makepkg defaults: OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug !lto)
# Makepkg defaults: OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug !lto !autodeps)
# A negated option will do the opposite of the comments below.
#
#-- strip: Strip symbols from binaries/libraries
@@ -94,6 +93,7 @@ BUILDENV=(!distcc color !ccache check !sign)
#-- purge: Remove files specified by PURGE_TARGETS
#-- debug: Add debugging flags as specified in DEBUG_* variables
#-- lto: Add compile flags for building with link time optimization
#-- autodeps: Automatically add depends/provides
#
OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug lto)
@@ -113,6 +113,8 @@ DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc})
PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
#-- Directory to store source code in for debug packages
DBGSRCDIR="/usr/src/debug"
#-- Prefix and directories for library autodeps
LIB_DIRS=('lib:usr/lib' 'lib32:usr/lib32')
#########################################################################
# PACKAGE OUTPUT

View File

@@ -0,0 +1 @@
../conf.d/fortran.conf

View File

@@ -0,0 +1 @@
../conf.d/rust.conf

View File

@@ -36,6 +36,8 @@ NoProgressBar
#CheckSpace
VerbosePkgLists
ParallelDownloads = 5
DownloadUser = alpm
#DisableSandbox
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.

View File

@@ -36,6 +36,8 @@ NoProgressBar
#CheckSpace
VerbosePkgLists
ParallelDownloads = 5
DownloadUser = alpm
#DisableSandbox
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.

View File

@@ -36,6 +36,8 @@ NoProgressBar
#CheckSpace
VerbosePkgLists
ParallelDownloads = 5
DownloadUser = alpm
#DisableSandbox
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.

View File

@@ -35,6 +35,8 @@ Color
CheckSpace
VerbosePkgLists
ParallelDownloads = 10
DownloadUser = alpm
#DisableSandbox
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.

View File

@@ -35,6 +35,8 @@ Color
CheckSpace
VerbosePkgLists
ParallelDownloads = 10
DownloadUser = alpm
#DisableSandbox
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.

View File

@@ -35,6 +35,8 @@ Color
CheckSpace
VerbosePkgLists
ParallelDownloads = 10
DownloadUser = alpm
#DisableSandbox
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.

View File

@@ -36,6 +36,8 @@ NoProgressBar
#CheckSpace
VerbosePkgLists
ParallelDownloads = 5
DownloadUser = alpm
#DisableSandbox
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.

View File

@@ -36,6 +36,8 @@ NoProgressBar
#CheckSpace
VerbosePkgLists
ParallelDownloads = 5
DownloadUser = alpm
#DisableSandbox
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.

View File

@@ -36,6 +36,8 @@ NoProgressBar
#CheckSpace
VerbosePkgLists
ParallelDownloads = 5
DownloadUser = alpm
#DisableSandbox
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.

View File

@@ -36,6 +36,8 @@ NoProgressBar
#CheckSpace
VerbosePkgLists
ParallelDownloads = 5
DownloadUser = alpm
#DisableSandbox
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.

View File

@@ -36,6 +36,8 @@ NoProgressBar
#CheckSpace
VerbosePkgLists
ParallelDownloads = 5
DownloadUser = alpm
#DisableSandbox
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.

View File

@@ -36,6 +36,8 @@ NoProgressBar
#CheckSpace
VerbosePkgLists
ParallelDownloads = 5
DownloadUser = alpm
#DisableSandbox
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.

View File

@@ -36,6 +36,8 @@ NoProgressBar
#CheckSpace
VerbosePkgLists
ParallelDownloads = 5
DownloadUser = alpm
#DisableSandbox
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.

View File

@@ -36,6 +36,8 @@ NoProgressBar
#CheckSpace
VerbosePkgLists
ParallelDownloads = 5
DownloadUser = alpm
#DisableSandbox
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.

View File

@@ -36,6 +36,8 @@ NoProgressBar
#CheckSpace
VerbosePkgLists
ParallelDownloads = 5
DownloadUser = alpm
#DisableSandbox
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.

View File

@@ -3,13 +3,20 @@
LIBDIR=${LIBDIR:-'@libdir@'}
_artixpkg_pkgbase() {
source "${LIBDIR}"/pkg/git/config.sh
source "${LIBDIR}"/pkg/util.sh
ls -1 "${TREE_DIR_ARTIX}" | tr '\n' ' '
}
_artixpkg_remotepkgbase() {
curl -s "https://checkupdates.artixlinux.org/api/1.0/packages?startswith=$1"
}
_artixpkg_maintainers() {
curl -s "https://checkupdates.artixlinux.org/api/1.0/maintainers"
}
_artixpkg_completion() {
local cur prev comps comps_all repos autorepos teams agents cwords comp_cword_exflag
local cur prev comps comps_all repos autorepos teams agents cwords comp_cword_exflag agent_flag_present
source "${LIBDIR}"/pkg/db/db.sh 2>/dev/null
cur="${COMP_WORDS[COMP_CWORD]}"
@@ -26,6 +33,7 @@ _artixpkg_completion() {
comps_all=""
comp_cword_exflag=0
comp_cword_all=0
agent_flag_present=false
for ((i = 0; i < ${#COMP_WORDS[@]} - 1; i++)); do
word="${COMP_WORDS[i]}"
comps_all+=" $word"
@@ -34,6 +42,10 @@ _artixpkg_completion() {
comps+=" $word"
((comp_cword_exflag++))
fi
if [[ $word == -a || $word == --agent ]]; then
# -a can also refer to --adopt
agent_flag_present=true
fi
done
comps="${comps:1}"
comps_all="${comps_all:1}"
@@ -67,10 +79,9 @@ _artixpkg_completion() {
done
agents="${agents:1}"
case "${comp_cword_exflag}" in
1)
COMPREPLY=($(compgen -W "admin ci git repo version -h --help" -- "${cur}"))
COMPREPLY=($(compgen -W "admin git repo version -h --help" -- "${cur}"))
return 0
;;
2)
@@ -78,9 +89,6 @@ _artixpkg_completion() {
admin)
COMPREPLY=($(compgen -W "maintainer query team topic transfer -h --help" -- ${cur}))
;;
ci)
COMPREPLY=($(compgen -W "config -h --help" -- ${cur}))
;;
git)
COMPREPLY=($(compgen -W "clone config create pull push -h --help" -- ${cur}))
;;
@@ -94,37 +102,6 @@ _artixpkg_completion() {
;;
*)
case "${comps}" in
"artixpkg repo add"*)
local repoAddCommon="-p --push -r --rebuild -n --nocheck -h --help"
case "${comp_cword_exflag}" in
3)
COMPREPLY=($(compgen -W "$repoAddCommon $autorepos $repos" -- ${cur}))
;;
*)
COMPREPLY=($(compgen -W "$repoAddCommon $(_artixpkg_pkgbase)" -- ${cur}))
;;
esac
;;
"artixpkg repo remove"*)
case "${comp_cword_exflag}" in
3)
COMPREPLY=($(compgen -W "-p --push -h --help $autorepos $repos" -- ${cur}))
;;
*)
COMPREPLY=($(compgen -W "-p --push -h --help $(_artixpkg_pkgbase)" -- ${cur}))
;;
esac
;;
"artixpkg repo move"*)
case "${comp_cword_exflag}" in
3|4)
COMPREPLY=($(compgen -W "-p --push -h --help $autorepos $repos" -- ${cur}))
;;
*)
COMPREPLY=($(compgen -W "-p --push -h --help $(_artixpkg_pkgbase)" -- ${cur}))
;;
esac
;;
"artixpkg repo import"*)
case "${prev}" in
"--tag")
@@ -139,23 +116,68 @@ _artixpkg_completion() {
"artixpkg repo show")
COMPREPLY=($(compgen -W "-b --base -p --pkgs -h --help" -- ${cur}))
;;
"artixpkg git clone"*)
"artixpkg repo"*)
if [ "$agent_flag_present" = true ] ; then
((comp_cword_exflag--))
fi
case "${prev}" in
"-a"|"--agent")
COMPREPLY=($(compgen -W "$agents" -- ${cur}))
;;
*)
case "${comps}" in
"artixpkg repo add"*)
local repoAddCommon="-p --push -r --rebuild -n --nocheck -a --agent -h --help"
case "${comp_cword_exflag}" in
3)
COMPREPLY=($(compgen -W "$repoAddCommon $autorepos $repos" -- ${cur}))
;;
*)
COMPREPLY=($(compgen -W "$repoAddCommon $(_artixpkg_pkgbase)" -- ${cur}))
;;
esac
;;
"artixpkg repo remove"*)
case "${comp_cword_exflag}" in
3)
COMPREPLY=($(compgen -W "-p --push -a --agent -h --help $autorepos $repos" -- ${cur}))
;;
*)
COMPREPLY=($(compgen -W "-p --push -a --agent -h --help $(_artixpkg_pkgbase)" -- ${cur}))
;;
esac
;;
"artixpkg repo move"*)
case "${comp_cword_exflag}" in
3|4)
COMPREPLY=($(compgen -W "-p --push -a --agent -h --help $autorepos $repos" -- ${cur}))
;;
*)
COMPREPLY=($(compgen -W "-p --push -a --agent -h --help $(_artixpkg_pkgbase)" -- ${cur}))
;;
esac
;;
esac
;;
esac
;;
"artixpkg git clone"*)
case "${prev}" in
"--protocol")
COMPREPLY=($(compgen -W "https" -- ${cur}))
;;
"-t"|"--team")
COMPREPLY=($(compgen -W "$teams" -- ${cur}))
;;
"-m"|"--maintainer"|"-s"|"--search"|"-t"|"--team"|"-j"|"--jobs")
"-m"|"--maintainer")
COMPREPLY=($(compgen -W "$(_artixpkg_maintainers)" -- ${cur}))
;;
"-s"|"--search"|"-j"|"--jobs")
# these flags expect a parameter
COMPREPLY=()
;;
*)
COMPREPLY=($(compgen -W "-m --maintainer --protocol -s --search -t --team -a --agent -j --jobs --all -h --help" -- ${cur}))
COMPREPLY=($(compgen -W "-m --maintainer --protocol -s --search -t --team -j --jobs --all -h --help $(_artixpkg_remotepkgbase ${cur})" -- ${cur}))
;;
esac
;;
@@ -175,20 +197,20 @@ _artixpkg_completion() {
;;
"artixpkg git create"*)
case "${prev}" in
"-a"|"--agent")
COMPREPLY=($(compgen -W "$agents" -- ${cur}))
;;
"-t"|"--team")
COMPREPLY=($(compgen -W "$teams" -- ${cur}))
;;
*)
COMPREPLY=($(compgen -W "-c --clone -a --agent -t --team -h --help" -- ${cur}))
COMPREPLY=($(compgen -W "-c --clone -t --team -h --help" -- ${cur}))
;;
esac
;;
"artixpkg git pull"*)
case "${prev}" in
"-t"|"--topic"|"-m"|"--maintainer"|"-j"|"--jobs")
"-m"|"--maintainer")
COMPREPLY=($(compgen -W "$(_artixpkg_maintainers)" -- ${cur}))
;;
"-t"|"--topic"|"-j"|"--jobs")
# these flags expect a parameter
COMPREPLY=()
;;
@@ -206,33 +228,22 @@ _artixpkg_completion() {
;;
"artixpkg git push"*)
case "${prev}" in
"-m"|"--maintainer"|"-t"|"--topic"|"-j"|"--jobs")
"-m"|"--maintainer")
COMPREPLY=($(compgen -W "$(_artixpkg_maintainers)" -- ${cur}))
;;
"-t"|"--topic")
# this flag expects a parameter
COMPREPLY=()
;;
*)
COMPREPLY=($(compgen -W "-m --maintainer -t --topic -j --jobs -h --help $(_artixpkg_pkgbase)" -- ${cur}))
;;
esac
;;
"artixpkg ci config"*)
case "${prev}" in
"-j"|"--jobs")
# this flag expects a parameter
COMPREPLY=()
;;
"-a"|"--agent")
COMPREPLY=($(compgen -W "$agents" -- ${cur}))
;;
*)
COMPREPLY=($(compgen -W "-a --agent -s --switch -j --jobs -h --help $(_artixpkg_pkgbase)" -- ${cur}))
COMPREPLY=($(compgen -W "-m --maintainer -t --topic -h --help $(_artixpkg_pkgbase)" -- ${cur}))
;;
esac
;;
"artixpkg admin maintainer"*)
case "${comp_cword_all}" in
3)
COMPREPLY=($(compgen -W "-a --adopt --o --orphan -h --help" -- ${cur}))
COMPREPLY=($(compgen -W "-a --adopt -o --orphan -h --help" -- ${cur}))
;;
*)
COMPREPLY=($(compgen -W "-h --help $(_artixpkg_pkgbase)" -- ${cur}))
@@ -241,7 +252,10 @@ _artixpkg_completion() {
;;
"artixpkg admin query"*)
case "${prev}" in
"-m"|"--maintainer"|"-t"|"--topic")
"-m"|"--maintainer")
COMPREPLY=($(compgen -W "$(_artixpkg_maintainers)" -- ${cur}))
;;
"-t"|"--topic")
# this flag expects a parameter
COMPREPLY=()
;;
@@ -267,7 +281,7 @@ _artixpkg_completion() {
COMPREPLY=()
;;
*)
COMPREPLY=($(compgen -W "-a --add -r --remove -d --del -j --jobs -h --help $(_artixpkg_pkgbase)" -- ${cur}))
COMPREPLY=($(compgen -W "-a --add -r --remove -d --delete -j --jobs -h --help $(_artixpkg_pkgbase)" -- ${cur}))
;;
esac
;;
@@ -279,4 +293,4 @@ _artixpkg_completion() {
esac
}
complete -F _artixpkg_completion artixpkg
complete -F _artixpkg_completion artixpkg

View File

@@ -0,0 +1,205 @@
#compdef artixpkg
local -a addcmd admincmd cicmd clonecmd configcmd createcmd gitcmd importcmd \
initialcmd maintainercmd movecmd querycmd pullcmd pushcmd removecmd \
repocmd showcmd teamcmd topiccmd transfercmd versioncmd
_regex_words maintainer '' \
'-a' \
'--adopt' \
'-h' \
'--help' \
'-o' \
'--orphan'
maintainercmd=("$reply[@]")
_regex_words query '' \
'-h' \
'--help' \
'-m' \
'-t'
querycmd=("$reply[@]")
_regex_words team '' \
'-a' \
'--add' \
'-c' \
'--check' \
'-h' \
'--help' \
'-r' \
'--remove'
teamcmd=("$reply[@]")
_regex_words topic '' \
'-a' \
'--add' \
'-d' \
'--delete' \
'-h' \
'--help' \
'-j' \
'--jobs' \
'-r' \
'--remove'
topiccmd=("$reply[@]")
_regex_words transfer '' \
'-h' \
'--help'
transfercmd=("$reply[@]")
_regex_words admin '' \
'-h:Help text' \
'--help:Help text' \
'maintainer:Manage repo maintainer:$maintainercmd' \
'query:Query maintainers and topics:$querycmd' \
'team:Manage repo team:$teamcmd' \
'topic:Manage topics:$topiccmd' \
'transfer:Transfer obsolete repositories to landfill:$transfercmd'
admincmd=("$reply[@]")
_regex_words ci '' \
'-a' \
'--agent' \
'-h' \
'--help'
cicmd=("$reply[@]")
_regex_words clone '' \
'-a' \
'--agent' \
'--all' \
'-h' \
'--help' \
'-j' \
'--jobs' \
'-m' \
'--maintainer' \
'--protocol' \
'-s' \
'--search' \
'-t' \
'--team'
clonecmd=("$reply[@]")
_regex_words config '' \
'-h' \
'--help' \
'-j' \
'--jobs' \
'--protocol'
configcmd=("$reply[@]")
_regex_words create '' \
'-a' \
'--agent' \
'-c' \
'--create' \
'-h' \
'--help' \
'-t' \
'--team'
createcmd=("$reply[@]")
_regex_words pull '' \
'--all' \
'-h' \
'--help' \
'-j' \
'--jobs' \
'-m' \
'--maintainer' \
'-t' \
'--topic'
pullcmd=("$reply[@]")
_regex_words push '' \
'-h' \
'--help' \
'-j' \
'--jobs' \
'-m' \
'--maintainer' \
'-t' \
'--topic'
pushcmd=("$reply[@]")
_regex_words git '' \
'ci:Configure CI agent:$cicmd' \
'clone:Clone a package:$clonecmd' \
'config:Configure a clone:$configcmd' \
'create:Create a new gitea package repository:$createcmd' \
'-h:Help text' \
'--help:Help text' \
'pull:Pull a package repository:$pullcmd' \
'push:Push a package repository:$pushcmd'
gitcmd=("$reply[@]")
_regex_words add '' \
'-h' \
'--help' \
'-n' \
'--nocheck' \
'-p' \
'--push' \
'-r' \
'--rebuild'
addcmd=("$reply[@]")
_regex_words import '' \
'--del' \
'-h' \
'--help' \
'--tag'
importcmd=("$reply[@]")
_regex_words move '' \
'-h' \
'--help' \
'-p' \
'--push'
movecmd=("$reply[@]")
_regex_words remove '' \
'-h' \
'--help' \
'-p' \
'--push'
removecmd=("$reply[@]")
_regex_words show '' \
'-b' \
'--base' \
'-h' \
'--help' \
'-p' \
'--pkgs'
showcmd=("$reply[@]")
_regex_words repo '' \
'add:Add pkgbase to repo:$addcmd' \
'-h:Help text' \
'--help:Help text' \
'import:Import latest tag from arch upstream:$importcmd' \
'move:Move pkgbase between repos:$movecmd' \
'remove:Remove pkgbase from repo:$removecmd' \
'show:Show pkgbase repo db:$showcmd'
repocmd=("$reply[@]")
_regex_words version '' \
'-h' \
'--help'
versioncmd=("$reply[@]")
_regex_words initial '' \
'admin:Manage topics:$admincmd' \
'git:Manage git:$gitcmd' \
'-h:Help text' \
'--help:Help text' \
'repo:Pacman database modification:$repocmd' \
'version:Show artixpkg version:$versioncmd'
initialcmd=("$reply[@]")
_regex_arguments _artixpkg /$'[^\0]##\0'/ "${initialcmd[@]}"
_artixpkg "$@"

View File

@@ -62,7 +62,7 @@ add_svc_dinit(){
for svc in $names; do
if [[ -d $mnt/etc/dinit.d/boot.d ]]; then
msg2 "Setting %s: [%s]" "${INITSYS}" "$svc"
chroot "$mnt" ln -s ../"$svc" /etc/dinit.d/boot.d/"$svc" &>/dev/null
chroot "$mnt" dinitctl enable -o "$svc" &>/dev/null
fi
done
}

View File

@@ -5,8 +5,6 @@
[[ -z ${ARTOOLS_INCLUDE_ADMIN_MAINTAINER_SH:-} ]] || return 0
ARTOOLS_INCLUDE_ADMIN_MAINTAINER_SH=1
# shellcheck source=src/lib/pkg/packager.sh
source "${LIBDIR}"/pkg/packager.sh
set -e
@@ -81,7 +79,9 @@ artixpkg_admin_maintainer() {
pkgbases+=("$@")
load_makepkg_config
# shellcheck source=src/lib/pkg/util/packager.sh
source "${LIBDIR}"/pkg/util/packager.sh
if [[ -n ${PACKAGER} ]]; then
if ! packager_name=$(get_packager_name "${PACKAGER}") || \
! packager_email=$(get_packager_email "${PACKAGER}"); then
@@ -90,9 +90,11 @@ artixpkg_admin_maintainer() {
if ! is_packager_name_valid "${packager_name}"; then
die "invalid PACKAGER '${PACKAGER}' in makepkg.conf"
fi
if is_packager_email_official "${packager_email}"; then
maintainer="maintainer-${packager_name}"
fi
fi
maintainer="maintainer-${packager_name}"
if [[ -n ${GIT_TOKEN} ]]; then

View File

@@ -17,9 +17,9 @@ artixpkg_admin_team_usage() {
-c, --check Check if team is assigned
-l, --list List repo teams
-a, --add NAME Add team to repo
Possible values: $(yaml_array ${ARTIX_TEAMS[@]})
Possible values: (${ARTIX_TEAMS[@]})
-r, --remove NAME Remove team from repo
Possible values: $(yaml_array ${ARTIX_TEAMS[@]})
Possible values: (${ARTIX_TEAMS[@]})
-h, --help Show this help text
EXAMPLES

View File

@@ -196,7 +196,6 @@ remove_all_topics() {
-H "Authorization: token ${GIT_TOKEN}" \
-d "$json"
stat_done
}
#}}}

View File

@@ -1,55 +0,0 @@
#!/hint/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
[[ -z ${ARTOOLS_INCLUDE_CI_SH:-} ]] || return 0
ARTOOLS_INCLUDE_CI_SH=1
set -e
artixpkg_ci_usage() {
local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
cat <<- _EOF_
Usage: ${COMMAND} [COMMAND] [OPTIONS]
COMMANDS
config Configure ci and build agent
OPTIONS
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} config libfoo
_EOF_
}
artixpkg_ci() {
if (( $# < 1 )); then
artixpkg_ci_usage
exit 0
fi
# option checking
while (( $# )); do
case $1 in
-h|--help)
artixpkg_ci_usage
exit 0
;;
config)
_ARTOOLS_COMMAND+=" $1"
shift
# shellcheck source=src/lib/pkg/ci/config.sh
source "${LIBDIR}"/pkg/ci/config.sh
artixpkg_ci_config "$@"
exit 0
;;
-*)
die "invalid argument: %s" "$1"
;;
*)
die "invalid command: %s" "$1"
;;
esac
done
}

View File

@@ -1,140 +0,0 @@
#!/bin/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
[[ -z ${ARTOOLS_INCLUDE_CI_CONFIG_SH:-} ]] || return 0
ARTOOLS_INCLUDE_CI_CONFIG_SH=1
# shellcheck source=src/lib/pkg/db/db.sh
source "${LIBDIR}"/pkg/db/db.sh
set -e
artixpkg_ci_config_usage() {
local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
cat <<- _EOF_
Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
OPTIONS
-a, --agent NAME Set the CI agent (default: ${AGENTS[0]})
Possible values: $(yaml_array ${AGENTS[@]})
-s, --switch Switch agent
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} --agent ${AGENTS[1]} libfoo
$ ${COMMAND} --switch --agent ${AGENTS[1]} libfoo
$ ${COMMAND} *
_EOF_
}
artixpkg_ci_config() {
# options
local jobs=
jobs=$(nproc)
local paths=()
local AGENT=${AGENTS[0]}
local SWITCH=0
# variables
local path realpath pkgbase
while (( $# )); do
case $1 in
-h|--help)
artixpkg_ci_config_usage
exit 0
;;
-s|--switch)
SWITCH=1
shift
;;
-a|--agent)
(( $# <= 1 )) && die "missing argument for %s" "$1"
AGENT="$2"
shift 2
;;
-j|--jobs)
(( $# <= 1 )) && die "missing argument for %s" "$1"
jobs=$2
shift 2
;;
--)
shift
break
;;
-*)
die "invalid argument: %s" "$1"
;;
*)
paths=("$@")
break
;;
esac
done
# check if invoked without any path from within a packaging repo
if (( ${#paths[@]} == 0 )); then
if [[ -f PKGBUILD ]]; then
paths=(".")
else
artixpkg_ci_config_usage
exit 1
fi
fi
for path in "${paths[@]}"; do
if ! realpath=$(realpath -e "${path}"); then
error "No such directory: ${path}"
continue
fi
pkgbase=$(basename "${realpath}")
pkgbase=${pkgbase%.git}
if [[ ! -d "${path}/.git" ]]; then
error "Not a Git repository: ${path}"
continue
fi
( cd "${path}" || return
if [[ ! -f ${REPO_CI} ]]; then
[[ -d .artixlinux ]] || mkdir .artixlinux
msg "Adding ci support ..."
write_jenkinsfile "${AGENT}"
git add "${REPO_CI}"
git commit -m "add ci support"
fi
if [[ ! -f ${REPO_DB} ]]; then
msg "Creating repo db ..."
create_repo_db
if [[ -f PKGBUILD ]]; then
# shellcheck source=contrib/makepkg/PKGBUILD.proto
source PKGBUILD
update_yaml_base
fi
git add "${REPO_DB}"
git commit -m "create repo db"
fi
if (( SWITCH )); then
msg "Switching to agent (${AGENT}) ..."
write_jenkinsfile "${AGENT}"
git add "${REPO_CI}"
git commit -m "switch agent"
fi
)
done
}

View File

@@ -23,6 +23,11 @@ readonly ARTIX_DB_MAP=(
stable
)
readonly AGENTS=(
orion
taurus
)
readonly ARTIX_TEAMS=(
"${ARTIX_DB[2]}"
"${ARTIX_DB[5]}"
@@ -30,27 +35,30 @@ readonly ARTIX_TEAMS=(
"${ARTIX_DB[11]}"
)
declare -A AGENT_MAP=(
["${ARTIX_TEAMS[0]}"]=${AGENTS[0]}
["${ARTIX_TEAMS[1]}"]=${AGENTS[0]}
["${ARTIX_TEAMS[2]}"]=${AGENTS[1]}
["${ARTIX_TEAMS[3]}"]=${AGENTS[1]}
)
readonly REPO_DB='.artixlinux/pkgbase.yaml'
readonly REPO_CI='.artixlinux/Jenkinsfile'
yaml_array() {
local array
readonly SRCINFO='.artixlinux/srcinfo.yaml'
for entry in "$@"; do
array="${array:-}${array:+,} ${entry}"
done
printf "%s\n" "[${array}]"
}
print_package_names() {
local version
local array
local architecture pkg
version=$(get_full_version)
for pkg in "${pkgname[@]}"; do
architecture=$(get_pkg_arch "${pkg}")
printf "%s-%s-%s%s\n" "$pkg" "$version" "$architecture" "$PKGEXT"
array="${array:-}${array:+,} $pkg-$version-$architecture$PKGEXT"
done
printf "%s\n" "[${array}]"
}
print_debug_package_names() {
@@ -59,7 +67,9 @@ print_debug_package_names() {
version=$(get_full_version)
if check_option "debug" "y" && check_option "strip" "y"; then
architecture=$(get_pkg_arch)
printf "%s-%s-%s-%s%s\n" "$pkgbase" "debug" "$version" "$architecture" "$PKGEXT"
printf "[%s-%s-%s-%s%s]\n" "$pkgbase" "debug" "$version" "$architecture" "$PKGEXT"
else
printf "%s\n" "[]"
fi
}
@@ -71,17 +81,6 @@ version_from_yaml() {
printf "%s\n" "${version}"
}
packages_from_yaml() {
local dest="$1"
local repo pkgs packages
repo=".repos.${dest}"
mapfile -t packages < <(repo="${repo}" yq -r 'eval(strenv(repo)).packages[]' "${REPO_DB}")
for p in "${packages[@]}"; do
pkgs="${pkgs:-}${pkgs:+,} ${p}"
done
printf "%s\n" "[${pkgs}]"
}
to_bool() {
local int="$1"
case "${int}" in
@@ -113,17 +112,9 @@ create_repo_db() {
yq -n '"---"' > "${REPO_DB}"
yq -P '.team = null' -i "${REPO_DB}"
yq -P 'with(
.pkgbase;
.name = null |
.version = null |
.arch = [] |
.pkgname = [] )' \
-i "${REPO_DB}"
yq -P 'with(
yq -P '
.team = null |
with(
.actions;
.addRepo = null |
.removeRepo = null |
@@ -131,39 +122,20 @@ create_repo_db() {
.triggersRebuild = false |
.triggersRepoAdd = false |
.triggersRepoRemove = false |
.triggersNoCheck = false )' \
-i "${REPO_DB}"
yq -P '.repos = {}' -i "${REPO_DB}"
.triggersNoCheck = false ) |
.repos = {}
' -i "${REPO_DB}"
for r in "${ARTIX_DB[@]}"; do
local repo
repo=".repos.${r}" \
yq -P 'with(
eval(strenv(repo));
.version = null |
.packages = [] )' \
-i "${REPO_DB}"
done
}
has_repos_map_key() {
local _r="$1"
local r
if ! $(r="$_r" yq -r '.repos | has(strenv(r))' "${REPO_DB}"); then
return 1
fi
return 0
}
delete_obsolete_map_keys() {
local _r
for r in asteroids{-goblins,-gremlins,}; do
if $(_r="$r" yq -r '.repos | has(strenv(_r))' "${REPO_DB}"); then
local repo
repo=".repos.${r}" \
yq 'del(eval(strenv(repo)))' -i "${REPO_DB}"
fi
yq -P '
with(
eval(strenv(repo));
.version = null |
.packages = [] |
.debug = [] )
' -i "${REPO_DB}"
done
}
@@ -172,27 +144,6 @@ update_yaml_team() {
team="$team" yq -P '.team = env(team)' -i "${REPO_DB}"
}
update_yaml_base() {
local version
local name
local pkgnames
local arches
pkgbase="${pkgbase:-${pkgname}}"
version="$(get_full_version)"
pkgnames=$(yaml_array "${pkgname[@]}")
arches=$(yaml_array "${arch[@]}")
name="${pkgbase}" version="${version}" pkgnames="${pkgnames}" arches="${arches}" \
yq -P 'with(
.pkgbase;
.name = env(name) |
.version = env(version) |
.arch = env(arches) |
.pkgname = env(pkgnames) )' \
-i "${REPO_DB}"
}
update_yaml_add() {
local rebuild="$1"
local add="$2"
@@ -213,36 +164,41 @@ update_yaml_add() {
local pkgs
local version
local pkgfiles
local debug_pkgfiles
mapfile -t pkgfiles < <(print_package_names)
pkgs=$(print_package_names)
pkgs=$(yaml_array "${pkgfiles[@]}")
debug_pkgs=$(print_debug_package_names)
version=$(get_full_version)
repo=".repos.${dest}"
version="${version}" pkgs="${pkgs}" repo="${repo}" \
yq -P 'with(
eval(strenv(repo));
.version = env(version) |
.packages = env(pkgs) )' \
-i "${REPO_DB}"
version="${version}" repo="${repo}" \
pkgs="${pkgs}" debug_pkgs="${debug_pkgs}" \
yq -P '
with(
eval(strenv(repo));
.version = env(version) |
.packages = env(pkgs) |
.debug = env(debug_pkgs) )
' -i "${REPO_DB}"
fi
nocheck=$(to_bool "${nocheck}")
nocheck="${nocheck}" add="${add}" \
rebuild="${rebuild}" build="${build}" dest="${dest}" \
yq -P 'with(
.actions;
.addRepo = env(dest) |
.removeRepo = null |
.triggersBuild = env(build) |
.triggersRebuild = env(rebuild) |
.triggersRepoAdd = env(add) |
.triggersRepoRemove = false |
.triggersNoCheck = env(nocheck) )' \
-i "${REPO_DB}"
yq -P '
with(
.actions;
.addRepo = env(dest) |
.removeRepo = null |
.triggersBuild = env(build) |
.triggersRebuild = env(rebuild) |
.triggersRepoAdd = env(add) |
.triggersRepoRemove = false |
.triggersNoCheck = env(nocheck) )
' -i "${REPO_DB}"
}
update_yaml_remove() {
@@ -251,30 +207,30 @@ update_yaml_remove() {
local repo
repo=".repos.${dest}"
repo="${repo}" \
yq -P 'with(
eval(strenv(repo));
.version = null |
.packages = [] )' \
-i "${REPO_DB}"
dest="${dest}" \
yq -P 'with(
.actions;
.addRepo = null |
.removeRepo = env(dest) |
.triggersBuild = false |
.triggersRebuild = false |
.triggersRepoAdd = false |
.triggersRepoRemove = true |
.triggersNoCheck = false )' \
-i "${REPO_DB}"
repo="${repo}" dest="${dest}" \
yq -P '
with(
eval(strenv(repo));
.version = null |
.packages = [] |
.debug = [] ) |
with(
.actions;
.addRepo = null |
.removeRepo = env(dest) |
.triggersBuild = false |
.triggersRebuild = false |
.triggersRepoAdd = false |
.triggersRepoRemove = true |
.triggersNoCheck = false )
' -i "${REPO_DB}"
}
update_yaml_move() {
local src="$1"
local dest="$2"
local pkgs
local debug_pkgs
local version
local src_repo
local dest_repo
@@ -283,41 +239,34 @@ update_yaml_move() {
dest_repo=".repos.${dest}"
version=$(version_from_yaml "${src}")
pkgs=$(packages_from_yaml "${src}")
src_repo="${src_repo}" \
yq -P 'with(
eval(strenv(src_repo));
.version = null |
.packages = [] )' \
-i "${REPO_DB}"
pkgs=$(src_repo="${src_repo}" yq -Pr -o json 'eval(strenv(src_repo)).packages' "${REPO_DB}")
debug_pkgs=$(src_repo="${src_repo}" yq -Pr -o json 'eval(strenv(src_repo)).debug' "${REPO_DB}")
version="${version}" pkgs="${pkgs}" dest_repo="${dest_repo}" \
yq -P 'with(
eval(strenv(dest_repo));
.version = env(version) |
.packages = env(pkgs) )' \
-i "${REPO_DB}"
src=${src} dest="${dest}" \
yq -P 'with(
.actions;
.addRepo = env(dest) |
.removeRepo = env(src) |
.triggersBuild = false |
.triggersRebuild = false |
.triggersRepoAdd = true |
.triggersRepoRemove = true |
.triggersNoCheck = false )' \
-i "${REPO_DB}"
}
show_agent() {
local agent="${AGENTS[0]}"
if grep @${AGENTS[1]} "${REPO_CI}" &>/dev/null; then
agent="${AGENTS[1]}"
fi
msg2 "agent: %s" "$agent"
src_repo="${src_repo}" dest_repo="${dest_repo}" \
version="${version}" src=${src} dest="${dest}" \
pkgs="${pkgs}" debug_pkgs="${debug_pkgs}" \
yq -P '
with(
eval(strenv(src_repo));
.version = null |
.packages = [] |
.debug = [] ) |
with(
eval(strenv(dest_repo));
.version = env(version) |
.packages = env(pkgs) |
.debug = env(debug_pkgs) ) |
with(
.actions;
.addRepo = env(dest) |
.removeRepo = env(src) |
.triggersBuild = false |
.triggersRebuild = false |
.triggersRepoAdd = true |
.triggersRepoRemove = true |
.triggersNoCheck = false )
' -i "${REPO_DB}"
}
team_from_yaml() {
@@ -326,11 +275,12 @@ team_from_yaml() {
printf "$team"
}
auto_detect() {
detect_team() {
local team
for repo in "${ARTIX_TEAMS[@]}"; do
local _r res
res=$(_r=".$repo" yq -rP '.repos | eval(strenv(_r)) | .version' "${REPO_DB}")
local key res
res=$(key=".repos.$repo" yq -rP 'eval(strenv(key)) | .version' "${REPO_DB}")
if [[ "${res}" != "null" ]]; then
team=${repo}
fi
@@ -338,41 +288,34 @@ auto_detect() {
printf "%s\n" "$team"
}
show_agent() {
local agent
local ci
local branch
agent="${AGENTS[0]}"
ci=$(head -n 1 "${REPO_CI}" | cut -d "'" -f2)
branch=${ci#*@}
if [[ -n "$branch" ]]; then
agent="$branch"
fi
msg2 "agent: %s" "$agent"
}
show_db() {
show_agent
if ! yq -r "${REPO_DB}" 1>/dev/null 2>/dev/null; then
die "${REPO_DB} invalid!"
fi
yq -rP 'with_entries(select(.key == "team" or .key == "pkgbase"))' "${REPO_DB}"
yq -rP '. | .repos | with_entries(select(.value.version))' "${REPO_DB}"
yq -rP 'with_entries(select(.key == "team"))' "${REPO_DB}"
yq -rP '.repos | with_entries(select(.value.version))' "${REPO_DB}"
return 0
}
show_srcinfo_base() {
pkg2yaml . | yq '.pkgbase'
}
show_srcinfo_pkgs() {
pkg2yaml . | yq '.pkgnames'
}
write_jenkinsfile() {
printf "@Library('artix-ci@%s') import org.artixlinux.RepoPackage\n" "${1}" > "${REPO_CI}"
local branch="$1"
{
printf "@Library('artix-ci@%s') import org.artixlinux.RepoPackage\n" "${branch}"
printf '\n'
printf 'PackagePipeline(new RepoPackage(this))\n'
} >> "${REPO_CI}"
}
migrate_agent_branch() {
local branch=${AGENTS[0]}
for a in "${AGENTS[@]}"; do
if grep @"$a" "${REPO_CI}" &>/dev/null; then
branch="$a"
fi
done
if grep @galaxy "${REPO_CI}" &>/dev/null; then
branch=${AGENTS[1]}
fi
write_jenkinsfile "${branch}"
} > "${REPO_CI}"
}

20
src/lib/pkg/db/upgrade.sh Normal file
View File

@@ -0,0 +1,20 @@
#!/hint/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
upgrade_db() {
local d
for db in "${ARTIX_DB[@]}"; do
local res
res=$(d=".repos.$db" yq 'eval(strenv(d)) | has("debug")' "${REPO_DB}")
if ! "${res}"; then
d=".repos.$db" \
yq 'eval(strenv(d)).debug = []' -i "${REPO_DB}"
fi
done
if $(yq '. | has("pkgbase") ' "${REPO_DB}"); then
yq 'del(.pkgbase)' -i "${REPO_DB}"
fi
}

View File

@@ -25,8 +25,8 @@ artixpkg_git_usage() {
EXAMPLES
$ ${COMMAND} clone libfoo linux libbar
$ ${COMMAND} clone --maintainer tux
$ ${COMMAND} config --topic mytopic
$ ${COMMAND} config --maintainer tux
$ ${COMMAND} clone --search mytopic
$ ${COMMAND} config libfoo
$ ${COMMAND} create -c libfoo
_EOF_
}

View File

@@ -7,8 +7,6 @@ ARTOOLS_INCLUDE_GIT_CLONE_SH=1
# shellcheck source=src/lib/pkg/git/config.sh
source "${LIBDIR}"/pkg/git/config.sh
# shellcheck source=src/lib/pkg/ci/config.sh
source "${LIBDIR}"/pkg/ci/config.sh
# shellcheck source=src/lib/pkg/admin/team.sh
source "${LIBDIR}"/pkg/admin/team.sh
@@ -23,10 +21,8 @@ artixpkg_git_clone_usage() {
OPTIONS
-m, --maintainer NAME Clone all packages of the named maintainer
-s, --search TOPIC Clone all packages of the named topic
-a, --agent NAME Set the CI agent (default: ${AGENTS[0]})
Possible values: $(yaml_array ${AGENTS[@]})
-t, --team NAME Assign team name (default: ${ARTIX_TEAMS[1]})
Possible values: $(yaml_array ${ARTIX_TEAMS[@]})
Possible values: (${ARTIX_TEAMS[@]})
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
--protocol https Clone the repository over https
--all Clone all existing packages, useful for cache warming
@@ -37,7 +33,6 @@ artixpkg_git_clone_usage() {
$ ${COMMAND} --maintainer tux
$ ${COMMAND} --search mytopic
$ ${COMMAND} -j 8 --search mytopic
$ ${COMMAND} --agent ${AGENTS[1]} libfoo
_EOF_
}
@@ -55,7 +50,6 @@ artixpkg_git_clone() {
local MAINTAINER=
local TOPIC=
local CONFIG_OPTS=()
local AGENT_OPTS=()
local TEAM_OPTS=()
local jobs=
jobs=$(nproc)
@@ -98,11 +92,6 @@ artixpkg_git_clone() {
TEAM_OPTS=("--add" "$2")
shift 2
;;
-a|--agent)
(( $# <= 1 )) && die "missing argument for %s" "$1"
AGENT_OPTS=("$1" "$2")
shift 2
;;
--all)
CLONE_ALL=1
shift
@@ -169,7 +158,7 @@ artixpkg_git_clone() {
fi
artixpkg_git_config "${CONFIG_OPTS[@]}" "${pkgbase}"
artixpkg_ci_config "${AGENT_OPTS[@]}" "${pkgbase}"
artixpkg_admin_team "${TEAM_OPTS[@]}" "${pkgbase}"
done
}

View File

@@ -5,8 +5,8 @@
[[ -z ${ARTOOLS_INCLUDE_GIT_CONFIG_SH:-} ]] || return 0
ARTOOLS_INCLUDE_GIT_CONFIG_SH=1
# shellcheck source=src/lib/pkg/packager.sh
source "${LIBDIR}"/pkg/packager.sh
# shellcheck source=src/lib/pkg/db/db.sh
source "${LIBDIR}"/pkg/db/db.sh
set -e
@@ -91,8 +91,10 @@ artixpkg_git_config() {
# Load makepkg.conf variables to be available for packager identity
msg "Collecting packager identity from makepkg.conf"
# shellcheck source=config/makepkg/x86_64.conf
load_makepkg_config
# shellcheck source=src/lib/pkg/util/packager.sh
source "${LIBDIR}"/pkg/util/packager.sh
if [[ -n ${PACKAGER} ]]; then
if ! packager_name=$(get_packager_name "${PACKAGER}") || \
! packager_email=$(get_packager_email "${PACKAGER}"); then
@@ -167,6 +169,33 @@ artixpkg_git_config() {
git config user.signingKey "${GPGKEY}"
fi
if [[ ! -f ${REPO_CI} ]]; then
[[ -d .artixlinux ]] || mkdir .artixlinux
msg "Adding ci support ..."
local agent
agent="${AGENT_MAP["${TEAM_OPTS[1]}"]}"
write_jenkinsfile "$agent"
git add "${REPO_CI}"
git commit -m "add ci support"
fi
if [[ ! -f ${REPO_DB} ]]; then
msg "Creating repo db ..."
create_repo_db
if [[ -f PKGBUILD ]]; then
pkg2yaml -o "${SRCINFO}"
fi
git add "${REPO_DB}"
git commit -m "create repo db"
fi
)
done
}

View File

@@ -9,8 +9,6 @@ ARTOOLS_INCLUDE_GIT_CREATE_SH=1
source "${LIBDIR}"/pkg/git/clone.sh
# shellcheck source=src/lib/pkg/git/config.sh
source "${LIBDIR}"/pkg/git/config.sh
# shellcheck source=src/lib/pkg/ci/config.sh
source "${LIBDIR}"/pkg/ci/config.sh
# shellcheck source=src/lib/pkg/admin/team.sh
source "${LIBDIR}"/pkg/admin/team.sh
@@ -24,10 +22,8 @@ artixpkg_git_create_usage() {
OPTIONS
-c, --clone Clone the Git repository after creation
-a, --agent NAME Set the CI agent (default: ${AGENTS[0]})
Possible values: $(yaml_array ${AGENTS[@]})
-t, --team NAME Assign team name (default: ${ARTIX_TEAMS[1]})
Possible values: $(yaml_array ${ARTIX_TEAMS[@]})
Possible values: (${ARTIX_TEAMS[@]})
-h, --help Show this help text
EXAMPLES
@@ -42,7 +38,6 @@ artixpkg_git_create() {
local CLONE=0
local CONFIG=0
local AGENT_OPTS=("--agent" "${AGENTS[0]}")
local TEAM_OPTS=("--team" "${ARTIX_TEAMS[1]}")
# variables
@@ -54,11 +49,6 @@ artixpkg_git_create() {
artixpkg_git_create_usage
exit 0
;;
-a|--agent)
(( $# <= 1 )) && die "missing argument for %s" "$1"
AGENT_OPTS=("$1" "$2")
shift 2
;;
-c|--clone)
CLONE=1
shift
@@ -113,10 +103,9 @@ artixpkg_git_create() {
fi
if (( CLONE )); then
artixpkg_git_clone "${AGENT_OPTS[@]}" "${TEAM_OPTS[@]}" "${pkgbase}"
artixpkg_git_clone "${TEAM_OPTS[@]}" "${pkgbase}"
elif (( CONFIG )); then
artixpkg_git_config "${pkgbase}"
artixpkg_ci_config "${AGENT_OPTS[@]}" "${pkgbase}"
artixpkg_admin_team "${TEAM_OPTS[@]}" "${pkgbase}"
fi

View File

@@ -7,6 +7,9 @@ ARTOOLS_INCLUDE_GIT_PULL_SH=1
set -e
# shellcheck source=src/lib/pkg/db/db.sh
source "${LIBDIR}"/pkg/db/db.sh
artixpkg_git_pull_usage() {
local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
@@ -123,6 +126,11 @@ artixpkg_git_pull() {
die 'failed to pull %s' "${pkgbase}"
fi
msg "Querying ${pkgbase} ..."
if ! show_db; then
warning "Could not query ${REPO_DB}"
fi
)
else
warning "Skip pulling ${pkgbase}: Directory does not exist"

View File

@@ -16,14 +16,12 @@ artixpkg_git_push_usage() {
OPTIONS
-m, --maintainer NAME Push all packages of the named maintainer
-t, --topic NAME Push all packages of the named topic
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} libfoo linux libbar
$ ${COMMAND} --maintainer tux
$ ${COMMAND} --topic mytopic
$ ${COMMAND} -j 8 --topic mytopic
_EOF_
}
@@ -38,11 +36,6 @@ artixpkg_git_push() {
# options
local MAINTAINER=
local TOPIC=
local CONFIGURE_OPTIONS=()
local jobs=
jobs=$(nproc)
local command=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
while (( $# )); do
case $1 in
@@ -60,11 +53,6 @@ artixpkg_git_push() {
TOPIC="$2"
shift 2
;;
-j|--jobs)
(( $# <= 1 )) && die "missing argument for %s" "$1"
jobs=$2
shift 2
;;
--)
shift
break
@@ -90,19 +78,6 @@ artixpkg_git_push() {
mapfile -t pkgbases < <(search_topic "${TOPIC}" | yq -P -r '.data | .[].name' | sort)
fi
# parallelization
if [[ ${jobs} != 1 ]] && (( ${#pkgbases[@]} > 1 )); then
# force colors in parallel if parent process is colorized
if [[ -n ${BOLD} ]]; then
export ARTOOLS_COLOR=always
fi
if ! parallel --bar --jobs "${jobs}" "${command}" ::: "${pkgbases[@]}"; then
die 'Failed to push some packages, please check the output'
exit 1
fi
exit 0
fi
for pkgbase in "${pkgbases[@]}"; do
if [[ -d ${pkgbase} ]]; then
( cd "${pkgbase}" || return

View File

@@ -8,10 +8,15 @@ ARTOOLS_INCLUDE_REPO_SH=1
# shellcheck source=src/lib/pkg/db/db.sh
source "${LIBDIR}"/pkg/db/db.sh
# shellcheck source=src/lib/pkg/db/upgrade.sh
source "${LIBDIR}"/pkg/db/upgrade.sh
set -e
has_remote_changes() {
load_makepkg_config
no_remote_changes() {
local status
msg "Checking for remote changes ..."
git fetch origin &>/dev/null
@@ -19,10 +24,10 @@ has_remote_changes() {
if [[ "$status" == *behind* ]]; then
msg2 "changes: yes"
error "Remote changes detected! Please pull (%s)" "${pkgbase}"
return 0
return 1
fi
msg2 "changes: no"
return 1
return 0
}
artixpkg_repo_usage() {
@@ -41,9 +46,12 @@ artixpkg_repo_usage() {
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} add world libfoo
$ ${COMMAND} remove world libfoo
$ ${COMMAND} move world-gremlins world libfoo
$ ${COMMAND} add ${ARTIX_DB_MAP[2]} libfoo
$ ${COMMAND} remove ${ARTIX_DB_MAP[2]} libfoo
$ ${COMMAND} move ${ARTIX_DB_MAP[1]} ${ARTIX_DB_MAP[2]} libfoo
$ ${COMMAND} add ${ARTIX_DB[4]} libfoo
$ ${COMMAND} remove ${ARTIX_DB[4]} libfoo
$ ${COMMAND} move ${ARTIX_DB[3]} ${ARTIX_DB[4]} libfoo
$ ${COMMAND} import libfoo
$ ${COMMAND} show libfoo
_EOF_

View File

@@ -41,6 +41,9 @@ artixpkg_repo_add_usage() {
-p, --push Push pkgbase
-r, --rebuild Triggers a rebuild
-n, --nocheck Disable the check function
-a, --agent NAME Set the CI agent
[default: auto]
possible values: ${AGENTS[@]}
-h, --help Show this help text
EXAMPLES
@@ -66,6 +69,7 @@ artixpkg_repo_add() {
local NOCHECK=0
local ADD=1
local AUTO=0
local AGENT
while (( $# )); do
case $1 in
@@ -85,6 +89,11 @@ artixpkg_repo_add() {
NOCHECK=1
shift
;;
-a|--agent)
(( $# <= 1 )) && die "missing argument for %s" "$1"
AGENT="$2"
shift 2
;;
-*)
die "invalid argument: %s" "$1"
;;
@@ -116,7 +125,7 @@ artixpkg_repo_add() {
fi
( cd "${pkgbase}" || return
if ! has_remote_changes; then
if no_remote_changes; then
if [[ ! -f PKGBUILD ]]; then
die "No PKGBUILD found in (%s)" "${pkgbase}"
@@ -129,27 +138,33 @@ artixpkg_repo_add() {
manage-pkgbuild-keys --export
update_yaml_base
pkg2yaml -o "${SRCINFO}"
local auto
auto=$(auto_detect)
local team
team=$(detect_team)
if [[ -z "${auto}" ]]; then
auto=$(team_from_yaml)
if [[ -z "${team}" ]]; then
team=$(team_from_yaml)
fi
if (( AUTO )); then
if [[ "${DEST}" == "${ARTIX_DB_MAP[2]}" ]]; then
DEST="${auto}"
DEST="${team}"
else
DEST="${auto}-${DEST}"
DEST="${team}-${DEST}"
fi
fi
upgrade_db
update_yaml_add "${REBUILD}" "${ADD}" "${NOCHECK}" "${DEST}"
update_yaml_team "${auto}"
update_yaml_team "${team}"
if [[ -z ${AGENT} ]]; then
AGENT=${AGENT_MAP["${team}"]}
fi
write_jenkinsfile "${AGENT}"
local commit_msg
commit_msg=$(get_commit_msg 'add' "${DEST}")
@@ -158,10 +173,6 @@ artixpkg_repo_add() {
rm .SRCINFO
fi
delete_obsolete_map_keys
migrate_agent_branch
if [[ -n $(git status --porcelain --untracked-files=no) ]]; then
stat_busy 'Staging files'

View File

@@ -7,23 +7,60 @@ ARTOOLS_INCLUDE_REPO_IMPORT_SH=1
set -e
PATCHDIR=${PATCHDIR:-"${WORKSPACE_DIR}/artix-patches"}
declare -A arch_map=(
["archlinux-mirrorlist"]="pacman-mirrorlist"
["artix-rebuild-order"]="arch-rebuild-order"
["virtualbox-host-modules-artix"]="virtualbox-host-modules-arch"
)
update_patches(){
if [[ ! -d "${PATCHDIR}" ]]; then
# ${GIT_ORG}
if ! git clone "${PATCH_URL}" "${PATCHDIR}"; then
error "failed to clone %s" "${PATCHDIR}"
fi
else
if ! git -C "${PATCHDIR}" pull; then
error "Failed to pull artix-patches"
fi
fi
}
patch_pkgbase(){
local name="$1"
case "${name}" in
linux|linux-lts|linux-zen|linux-hardened|linux-rt*)
sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i PKGBUILD
sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
-i config
;;
*)
sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \
-e 's|(Arch Linux)|(Artix Linux)|' \
-e 's|arch-meson|artix-meson|' \
-i PKGBUILD
;;
esac
git --no-pager diff PKGBUILD
local patches="${PATCHDIR}/patches/${name}"
sed -e 's|arch-meson|artix-meson|' -i PKGBUILD
if "${PATCH_MAINTAINER}" && [ -n "${PACKAGER}" ]; then
sed -e 's|# Maintainer:|# Contributor:|' -i PKGBUILD
printf '%s\n%s\n' "# Maintainer: ${PACKAGER}" "$(cat "PKGBUILD")" >"PKGBUILD"
fi
if [ -d "${patches}" ]; then
if [ -f "${patches}/env.txt" ]; then
while read -r line; do
IFS="=" read -r key value <<< "$line"
if [[ -z "${key}" ]] || [[ -z "${value}" ]]; then
die "Invalid key value pair in env.txt"
fi
if declare -p "${key}" &> /dev/null; then
die "Environment variable %s already exists." "${key}"
fi
export "${key}=${value}"
done < "${patches}/env.txt"
fi
for file in "${patches}"/*; do
if [ -x "${file}" ]; then
echo "$> ${name}/$(basename "${file}")"
"${file}" "${TREE_DIR_ARTIX}/${name}"
elif [[ "${file}" == *.diff ]]; then
echo "$> git apply ${name}/$(basename "${file}")"
git -C "${TREE_DIR_ARTIX}/${name}" apply "${file}"
fi
done
fi
}
artixpkg_repo_import_usage() {
@@ -34,12 +71,14 @@ artixpkg_repo_import_usage() {
OPTIONS
--tag TAG Switch the current workspace to a specified version tag
--del Delete files before rsync import
-n --no-patch No patch import
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} libfoo
$ ${COMMAND} --tag TAG libfoo
$ ${COMMAND} --tag TAG --del libfoo
$ ${COMMAND} --no-patch libfoo
_EOF_
}
@@ -53,6 +92,7 @@ artixpkg_repo_import() {
local pkgbases=()
local pkgbase
local TAG
local NP=0
local rsync_args=()
rsync_args+=(
-axcihW
@@ -83,6 +123,10 @@ artixpkg_repo_import() {
rsync_args+=(--delete-before)
shift
;;
-n|--no-patch)
NP=1
shift
;;
-h|--help)
artixpkg_repo_import_usage
exit 0
@@ -96,6 +140,10 @@ artixpkg_repo_import() {
esac
done
if ! (( NP )); then
update_patches
fi
pkgbases+=("$@")
for pkgbase in "${pkgbases[@]}"; do
@@ -108,41 +156,48 @@ artixpkg_repo_import() {
fi
( cd "${pkgbase}" || return
upstream="${arch_map["$pkgbase"]:-$pkgbase}"
stat_busy "Checking for upstream url"
if ! git config --local --get remote.upstream.url &>/dev/null; then
git remote add upstream "${GIT_UPSTREAM_URL}/${pkgbase}".git
if ! git config get remote.upstream.url &>/dev/null; then
git remote add upstream "${GIT_UPSTREAM_URL}/${upstream}".git
fi
stat_done
msg2 "Fetching upstream tags"
git fetch --tags upstream main
stat_busy "Fetching upstream tags"
git fetch -fq --prune --tags upstream main
stat_done
local latest version
latest=$(git describe --tags FETCH_HEAD)
version="${latest}"
if [[ -n "${TAG}" ]]; then
version="${TAG}"
fi
if ! has_remote_changes; then
if no_remote_changes; then
msg "Querying ${pkgbase} ..."
if ! show_db; then
warning "Could not query ${REPO_DB}"
fi
git checkout "${version}" -b "${version}" &>/dev/null
git checkout -q "${version}" -b "${version}"
local temp
temp=$(mktemp -d --tmpdir "${pkgbase}.XXXXXXXXXX")
rsync "${rsync_args[@]}" "$(pwd)"/ "${temp}"/ &>/dev/null
git checkout master &>/dev/null
git branch -D "${version}" &>/dev/null
rsync "${rsync_args[@]}" -q "$(pwd)"/ "${temp}"/
git checkout -q master
git branch -q -D "${version}"
msg "Importing upstream changeset for ${version}"
rsync "${rsync_args[@]}" "${temp}"/ "$(pwd)"/ #&>/dev/null
rsync "${rsync_args[@]}" "${temp}"/ "$(pwd)"/
msg2 "Patching ${pkgbase} ..."
patch_pkgbase "${pkgbase}"
if ! (( NP )); then
msg2 "Patching ${pkgbase} ..."
patch_pkgbase "${pkgbase}"
fi
git --no-pager diff PKGBUILD
fi
)
fi

View File

@@ -15,6 +15,9 @@ artixpkg_repo_move_usage() {
OPTIONS
-p, --push Push pkgbase
-a, --agent NAME Set the CI agent
[default: auto]
possible values: ${AGENTS[@]}
-h, --help Show this help text
EXAMPLES
@@ -39,6 +42,7 @@ artixpkg_repo_move() {
local DEST
local SRC
local AGENT
while (( $# )); do
case $1 in
@@ -50,6 +54,11 @@ artixpkg_repo_move() {
PUSH=1
shift
;;
-a|--agent)
(( $# <= 1 )) && die "missing argument for %s" "$1"
AGENT="$2"
shift 2
;;
-*)
die "invalid argument: %s" "$1"
;;
@@ -86,30 +95,30 @@ artixpkg_repo_move() {
fi
( cd "${pkgbase}" || return
if ! has_remote_changes; then
if no_remote_changes; then
if [[ ! -f PKGBUILD ]]; then
die "No PKGBUILD found in (%s)" "${pkgbase}"
fi
local auto
auto=$(auto_detect)
local team
team=$(detect_team)
if [[ -z "${auto}" ]]; then
auto=$(team_from_yaml)
if [[ -z "${team}" ]]; then
team=$(team_from_yaml)
fi
if (( AUTO )); then
if [[ "${SRC}" == "${ARTIX_DB_MAP[2]}" ]]; then
SRC="${auto}"
SRC="${team}"
else
SRC="${auto}-${SRC}"
SRC="${team}-${SRC}"
fi
if [[ "${DEST}" == "${ARTIX_DB_MAP[2]}" ]]; then
DEST="${auto}"
DEST="${team}"
else
DEST="${auto}-${DEST}"
DEST="${team}-${DEST}"
fi
fi
@@ -120,19 +129,29 @@ artixpkg_repo_move() {
if [[ "$src_version" != "null" ]]; then
if ! [[ -f "${SRCINFO}" ]]; then
pkg2yaml -o "${SRCINFO}"
fi
upgrade_db
update_yaml_move "${SRC}" "${DEST}"
team=$(detect_team)
if [[ -z "$team" ]]; then
team=$(team_from_yaml)
fi
update_yaml_team "${team}"
if [[ -z ${AGENT} ]]; then
AGENT=${AGENT_MAP["${team}"]}
fi
write_jenkinsfile "${AGENT}"
if [[ -f .SRCINFO ]]; then
rm .SRCINFO
fi
delete_obsolete_map_keys
migrate_agent_branch
update_yaml_team "$(auto_detect)"
if [[ -n $(git status --porcelain --untracked-files=no) ]]; then
stat_busy 'Staging files'
@@ -140,6 +159,14 @@ artixpkg_repo_move() {
if [[ "$f" == "${REPO_DB}" ]]; then
git add "$f"
fi
if [[ "$f" == "${REPO_CI}" ]]; then
git add "$f"
fi
done
for f in $(git ls-files --others); do
if [[ "$f" == "${SRCINFO}" ]]; then
git add "$f"
fi
done
stat_done
@@ -166,18 +193,18 @@ artixpkg_repo_move() {
# team change on cross repo move system <-> world
if [[ "${SRC}" == ${ARTIX_DB[2]}* ]] \
&& [[ "${DEST}" == ${ARTIX_DB[5]}* ]]; then
if ! add_team_to_repo "${pkgbase}" "${ARTIX_DB[5]}"; then
if ! add_team_to_repo "${gitname}" "${ARTIX_DB[5]}"; then
warning "failed to add team: ${ARTIX_DB[5]}"
fi
if ! remove_team_from_repo "${pkgbase}" "${ARTIX_DB[2]}"; then
if ! remove_team_from_repo "${gitname}" "${ARTIX_DB[2]}"; then
warning "failed to remove team: ${ARTIX_DB[2]}"
fi
elif [[ "${SRC}" == ${ARTIX_DB[5]}* ]] \
&& [[ "${DEST}" == ${ARTIX_DB[2]}* ]]; then
if ! add_team_to_repo "${pkgbase}" "${ARTIX_DB[2]}"; then
if ! add_team_to_repo "${gitname}" "${ARTIX_DB[2]}"; then
warning "failed to add team: ${ARTIX_DB[2]}"
fi
if ! remove_team_from_repo "${pkgbase}" "${ARTIX_DB[5]}"; then
if ! remove_team_from_repo "${gitname}" "${ARTIX_DB[5]}"; then
warning "failed to remove team: ${ARTIX_DB[5]}"
fi
fi

View File

@@ -15,6 +15,9 @@ artixpkg_repo_remove_usage() {
OPTIONS
-p, --push Push pkgbase
-a, --agent NAME Set the CI agent
[default: auto]
possible values: ${AGENTS[@]}
-h, --help Show this help text
EXAMPLES
@@ -37,6 +40,7 @@ artixpkg_repo_remove() {
local PUSH=0
local AUTO=0
local DEST=''
local AGENT
while (( $# )); do
case $1 in
@@ -48,6 +52,11 @@ artixpkg_repo_remove() {
PUSH=1
shift
;;
-a|--agent)
(( $# <= 1 )) && die "missing argument for %s" "$1"
AGENT="$2"
shift 2
;;
-*)
die "invalid argument: %s" "$1"
;;
@@ -79,35 +88,42 @@ artixpkg_repo_remove() {
fi
( cd "${pkgbase}" || return
if ! has_remote_changes; then
if no_remote_changes; then
if [[ ! -f PKGBUILD ]]; then
die "No PKGBUILD found in (%s)" "${pkgbase}"
fi
local auto
auto=$(auto_detect)
local team
team=$(detect_team)
if [[ -z "${auto}" ]]; then
auto=$(team_from_yaml)
if [[ -z "${team}" ]]; then
team=$(team_from_yaml)
fi
if (( AUTO )); then
if [[ "${DEST}" == "${ARTIX_DB_MAP[2]}" ]]; then
DEST="${auto}"
DEST="${team}"
else
DEST="${auto}-${DEST}"
DEST="${team}-${DEST}"
fi
fi
local commit_msg
commit_msg=$(get_commit_msg 'remove' "${DEST}")
if ! [[ -f "${SRCINFO}" ]]; then
pkg2yaml -o "${SRCINFO}"
fi
upgrade_db
update_yaml_remove "${DEST}"
delete_obsolete_map_keys
migrate_agent_branch
if [[ -z ${AGENT} ]]; then
AGENT=${AGENT_MAP["${team}"]}
fi
write_jenkinsfile "${AGENT}"
if [[ -n $(git status --porcelain --untracked-files=no) ]]; then
@@ -116,6 +132,14 @@ artixpkg_repo_remove() {
if [[ "$f" == "${REPO_DB}" ]]; then
git add "$f"
fi
if [[ "$f" == "${REPO_CI}" ]]; then
git add "$f"
fi
done
for f in $(git ls-files --others); do
if [[ "$f" == "${SRCINFO}" ]]; then
git add "$f"
fi
done
stat_done

View File

@@ -72,7 +72,7 @@ artixpkg_repo_show() {
fi
( cd "${pkgbase}" || return
if ! has_remote_changes; then
if no_remote_changes; then
if [[ ! -f PKGBUILD ]]; then
die "No PKGBUILD found in (%s)" "${pkgbase}"
fi
@@ -83,13 +83,17 @@ artixpkg_repo_show() {
fi
if (( SRC_BASE )); then
msg "Showing srcinfo base ..."
show_srcinfo_base
if [[ -f "${SRCINFO}" ]]; then
msg "Showing srcinfo pkgbase ..."
yq '.pkgbase' "${SRCINFO}"
fi
fi
if (( SRC_PKGS )); then
msg "Showing srcinfo pkgs ..."
show_srcinfo_pkgs
if [[ -f "${SRCINFO}" ]]; then
msg "Showing srcinfo pkgname ..."
yq '.pkgname' "${SRCINFO}"
fi
fi
fi

View File

@@ -1,37 +0,0 @@
#!/hint/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
#{{{ table
msg_table_header(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${BLUE} ${mesg} ${ALL_OFF}\n" "$@"
}
msg_row_yellow(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${YELLOW} ${mesg}${ALL_OFF}\n" "$@"
}
msg_row_green(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${GREEN} ${mesg}${ALL_OFF}\n" "$@"
}
msg_row(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${WHITE} ${mesg}${ALL_OFF}\n" "$@"
}
msg_row_red(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${RED} ${mesg} ${ALL_OFF}\n" "$@"
}
#}}}

View File

@@ -60,9 +60,11 @@ load_pkg_config(){
DBEXT=${DBEXT:-'gz'}
if [[ -z "${AGENTS[*]}" ]]; then
AGENTS=(orion taurus)
fi
PATCH_MAINTAINER=${PATCH_MAINTAINER:-false}
PATCH_URL=${PATCH_URL:-"${GIT_SSH}:artix/artix-patches.git"}
PKGDEST_DBG=${PKGDEST_DBG:-"${WORKSPACE_DIR}/packages-debug"}
return 0
}

View File

@@ -49,3 +49,6 @@ is_packager_email_official() {
fi
return 1
}
# shellcheck source=config/makepkg/x86_64.conf
load_makepkg_config

View File

@@ -1,30 +0,0 @@
#!/hint/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
#{{{ yaml
write_yaml_header(){
printf '%s\n' '---'
}
write_empty_line(){
printf '\n'
}
write_yaml_map(){
local ident="$1" key="$2" val="$3"
printf "\n%${ident}s%s: %s\n" '' "$key" "$val"
}
write_yaml_seq(){
local ident="$1" val="$2"
printf "\n%${ident}s- %s\n" '' "$val"
}
write_yaml_seq_map(){
local ident="$1" key="$2" val="$3"
printf "\n%${ident}s- %s: %s\n" '' "$key" "$val"
}
#}}}

View File

@@ -21,7 +21,6 @@ usage() {
COMMANDS
admin Manage topics, teams and obsolete repos
ci Manage CI and build agent
git Manage Git packaging repositories and their configuration
repo Pacman database modification for package updates, moves, etc.
@@ -42,8 +41,6 @@ export _ARTOOLS_COMMAND='artixpkg'
# shellcheck source=src/lib/pkg/util.sh
source "${LIBDIR}"/pkg/util.sh
load_makepkg_config
cd "${TREE_DIR_ARTIX}"
# command checking
@@ -69,14 +66,6 @@ while (( $# )); do
artixpkg_git "$@"
exit 0
;;
ci)
_ARTOOLS_COMMAND+=" $1"
shift
# shellcheck source=src/lib/pkg/ci.sh
source "${LIBDIR}"/pkg/ci.sh
artixpkg_ci "$@"
exit 0
;;
admin)
_ARTOOLS_COMMAND+=" $1"
shift

View File

@@ -6,10 +6,8 @@ LIBDIR=${LIBDIR:-'@libdir@'}
# shellcheck source=src/lib/base/message.sh
source "${LIBDIR}"/base/message.sh
# shellcheck source=src/lib/pkg/diff.sh
source "${LIBDIR}"/pkg/diff.sh
load_makepkg_config
# shellcheck source=src/lib/pkg/util/diff.sh
source "${LIBDIR}"/pkg/util/diff.sh
usage() {
cat <<- _EOF_

View File

@@ -10,13 +10,45 @@ SYSCONFDIR=${SYSCONFDIR:-'@sysconfdir@/artools'}
source "${LIBDIR}"/pkg/util.sh
# shellcheck source=src/lib/base/message.sh
source "${LIBDIR}"/base/message.sh
# shellcheck source=src/lib/pkg/table.sh
source "${LIBDIR}"/pkg/table.sh
# shellcheck source=src/lib/pkg/db/db.sh
source "${LIBDIR}"/pkg/db/db.sh
shopt -s extglob
#{{{ table
msg_table_header(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${BLUE} ${mesg} ${ALL_OFF}\n" "$@"
}
msg_row_yellow(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${YELLOW} ${mesg}${ALL_OFF}\n" "$@"
}
msg_row_green(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${GREEN} ${mesg}${ALL_OFF}\n" "$@"
}
msg_row(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${WHITE} ${mesg}${ALL_OFF}\n" "$@"
}
msg_row_red(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${RED} ${mesg} ${ALL_OFF}\n" "$@"
}
#}}}
extract_db() {
local u="$1" cdir="$2"
rm -rf "$cdir"

View File

@@ -181,7 +181,9 @@ else
set_arch="${CARCH}"
fi
${CARCH:+setarch "${set_arch}"} chroot "${working_dir}" "$@"
chroot_args=(/usr/bin/env PATH=/usr/local/sbin:/usr/local/bin:/usr/bin)
${CARCH:+setarch "${set_arch}"} chroot "${working_dir}" "${chroot_args[@]}" "$@"
ret=$?

View File

@@ -6,8 +6,8 @@ LIBDIR=${LIBDIR:-'@libdir@'}
# shellcheck source=src/lib/base/message.sh
source "${LIBDIR}"/base/message.sh
# shellcheck source=src/lib/pkg/diff.sh
source "${LIBDIR}"/pkg/diff.sh
# shellcheck source=src/lib/pkg/util/diff.sh
source "${LIBDIR}"/pkg/util/diff.sh
usage() {
cat <<- _EOF_

View File

@@ -8,8 +8,8 @@ LIBDIR=${LIBDIR:-'@libdir@'}
source "${LIBDIR}"/base/message.sh
# shellcheck source=src/lib/base/chroot.sh
source "${LIBDIR}"/base/chroot.sh
# shellcheck source=src/lib/pkg/deploy.sh
source "${LIBDIR}"/pkg/deploy.sh
# shellcheck source=src/lib/pkg/util/deploy.sh
source "${LIBDIR}"/pkg/util/deploy.sh
# shellcheck source=config/makepkg/x86_64.conf
load_makepkg_config

View File

@@ -6,136 +6,198 @@ LIBDIR=${LIBDIR:-'@libdir@'}
# shellcheck source=src/lib/base/message.sh
source "${LIBDIR}"/base/message.sh
# shellcheck source=src/lib/pkg/yaml.sh
source "${LIBDIR}"/pkg/yaml.sh
# shellcheck disable=1091
source "${MAKEPKG_LIBRARY}"/util/pkgbuild.sh
# shellcheck disable=1091
source "${MAKEPKG_LIBRARY}"/util/schema.sh
#{{{ functions
# {{{ functions
srcyaml_write_attr(){
local ident1="$1" ident2="$2" ident3="$3"
local attrname=$4 attrvalues=("${@:5}")
yaml_array_str() {
local array
# normalize whitespace, strip leading and trailing
attrvalues=("${attrvalues[@]//+([[:space:]])/ }")
attrvalues=("${attrvalues[@]#[[:space:]]}")
attrvalues=("${attrvalues[@]%[[:space:]]}")
case $attrname in
pkgver|pkgrel|epoch|url|install|changelog)
for v in "${attrvalues[@]}"; do
Yaml+=$(write_yaml_map "$ident3" "$attrname" "$v")
done
;;
pkgdesc)
Yaml+=$(write_yaml_map "$ident1" "$attrname" "${attrvalues[@]}")
;;
*)
Yaml+=$(write_yaml_map "$ident1" "$attrname")
for v in "${attrvalues[@]}"; do
Yaml+=$(write_yaml_seq "$ident2" "$v")
done
;;
esac
for entry in "$@"; do
array="${array:-}${array:+,} '${entry}'"
done
printf "%s\n" "[${array}]"
}
pkgbuild_extract_to_yaml() {
local pkgname=$1 attrname=$2 isarray=$3 outvalue=
pkgbuild_extract_to_srcyaml() {
# $1: pkgname
# $2: index
# $3: attr name
# $4: multivalued
local pkgname="$1" i="$2" attrname="$3" isarray="$4" outvalue=
if get_pkgbuild_attribute "$pkgname" "$attrname" "$isarray" 'outvalue'; then
[[ -z $pkgname ]] && srcyaml_write_attr 2 4 2 "$attrname" "${outvalue[@]}"
[[ -n $pkgname ]] && srcyaml_write_attr 4 6 2 "$attrname" "${outvalue[@]}"
local ov an
if [[ -n $pkgname ]]; then
an=".pkgname[$i].$attrname"
else
an=".pkgbase.$attrname"
fi
if (( isarray )); then
ov=$(yaml_array_str "${outvalue[@]}")
else
ov="${outvalue[*]}"
if [[ -z "$ov" ]]; then
ov="null"
fi
fi
an="$an" ov="$ov" \
yq -P 'eval(strenv(an)) = env(ov)' -i "${YAML}"
fi
}
srcyaml_write_section_details() {
srcyaml_write_node_details() {
local attr package_arch a
local multivalued_arch_attrs=(source provides conflicts depends replaces
optdepends makedepends checkdepends
"${known_hash_algos[@]/%/sums}")
local multivalued_arch_attrs=(
source
provides
conflicts
depends
replaces
optdepends
makedepends
checkdepends
"${known_hash_algos[@]/%/sums}"
)
for attr in "${singlevalued[@]}"; do
pkgbuild_extract_to_yaml "$1" "$attr" 0
pkgbuild_extract_to_srcyaml "$1" "$2" "$attr" 0
done
for attr in "${multivalued[@]}"; do
pkgbuild_extract_to_yaml "$1" "$attr" 1
pkgbuild_extract_to_srcyaml "$1" "$2" "$attr" 1
done
get_pkgbuild_attribute "$1" 'arch' 1 'package_arch'
get_pkgbuild_attribute "$pn" 'arch' 1 'package_arch'
for a in "${package_arch[@]}"; do
# 'any' is special. there's no support for, e.g. depends_any.
[[ $a = any ]] && continue
for attr in "${multivalued_arch_attrs[@]}"; do
pkgbuild_extract_to_yaml "$1" "${attr}_$a" 1
pkgbuild_extract_to_srcyaml "$1" "$2" "${attr}_$a" 1
done
done
}
yaml_write_global() {
local singlevalued=(pkgdesc pkgver pkgrel epoch url install changelog)
local multivalued=(arch groups license checkdepends makedepends
depends optdepends provides conflicts replaces
noextract options backup
source validpgpkeys "${known_hash_algos[@]/%/sums}")
srcyaml_write_global() {
local singlevalued=(
pkgdesc
pkgver
pkgrel
epoch
url
install
changelog
)
local multivalued=(
arch
groups
license
checkdepends
makedepends
depends
optdepends
provides
conflicts
replaces
noextract
options
backup
source
validpgpkeys
"${known_hash_algos[@]/%/sums}"
)
Yaml+=$(write_yaml_map 0 "pkgbase")
Yaml+=$(write_yaml_map 2 "name" "${pkgbase:-${pkgname}}")
srcyaml_write_section_details ""
srcyaml_write_node_details '' ''
}
yaml_write_package() {
local singlevalued=(pkgdesc url install changelog)
local multivalued=(arch groups license checkdepends depends optdepends
provides conflicts replaces options backup)
srcyaml_write_package() {
local singlevalued=(
pkgdesc
url
install
changelog
)
local multivalued=(
arch
groups
license
checkdepends
depends
optdepends
provides
conflicts
replaces
options
backup
)
Yaml+=$(write_yaml_map 0 "pkgnames")
for pkg in "${pkgname[@]}"; do
Yaml+=$(write_yaml_seq_map 2 "pkgname" "$pkg")
srcyaml_write_section_details "$pkg"
done
srcyaml_write_node_details "$1" "$2"
}
write_srcyaml() {
Yaml=$(write_yaml_header)
yaml_write_global
yaml_write_package
yq -n '"---"' > "${YAML}"
# local version
# version=$(get_full_version)
# Yaml+=$(write_yaml_map 2 "version" "${version}")
local ver
ver=$(get_full_version) \
yq -P '.version = env(ver)' -i "${YAML}"
printf '%s\n' "${Yaml}"
# https://github.com/mikefarah/yq/issues/1836
# yq '. head_comment="generated with artixpkg @buildtoolver@"' -i "${YAML}"
local name=${pkgbase:-$pkgname}
name="$name" \
yq -P '.pkgbase.name = env(name)' -i "${YAML}"
srcyaml_write_global
local pn
local key
for ((i = 0 ; i < "${#pkgname[@]}" ; i++)); do
pn="${pkgname[$i]}" key=".pkgname[$i]" \
yq -P 'eval(strenv(key)).name = env(pn)' -i "${YAML}"
srcyaml_write_package "${pkgname[$i]}" "$i"
done
yq '. foot_comment="generated with artixpkg @buildtoolver@"' -i "${YAML}"
}
#}}}
# }}}
usage() {
printf 'Usage: %s [options]\n' "${0##*/}"
printf " -o <out> Out file (default: ${YAML})\n"
printf ' -h This help\n'
printf '\n'
exit "$1"
}
YAML=/tmp/srcinfo.yaml
# shellcheck source=config/makepkg/x86_64.conf
load_makepkg_config
opts='h'
opts='o:h'
while getopts "${opts}" arg; do
case "${arg}" in
o) YAML="$OPTARG" ;;
h|?) usage 0 ;;
esac
done
shift $(( OPTIND - 1 ))
srcpath=$(readlink -f "$1")
# srcpath=$(readlink -f "$1")
[[ -z "$srcpath" ]] && srcpath="."
[[ -f "$srcpath"/PKGBUILD ]] || die "%s/PKGBUILD does not exist!" "$srcpath"

View File

@@ -10,8 +10,8 @@ SYSCONFDIR=${SYSCONFDIR:-'@sysconfdir@/artools'}
source "${LIBDIR}"/pkg/util.sh
# shellcheck source=src/lib/base/message.sh
source "${LIBDIR}"/base/message.sh
# shellcheck source=src/lib/pkg/deploy.sh
source "${LIBDIR}"/pkg/deploy.sh
# shellcheck source=src/lib/pkg/util/deploy.sh
source "${LIBDIR}"/pkg/util/deploy.sh
#{{{ deploy
@@ -20,6 +20,7 @@ add() {
msg "Found: %s" "${pkgfile}"
packages+=("${pkgname}")
action='add'
action_args+=(--include-sigs)
ln -sfv "${pkgfile}"{,.sig} "${repo_path}"/
fi
}
@@ -30,6 +31,18 @@ remove(){
# pkg removal will be done by a patched repo-remove honoring -R
}
update_dbg() {
local rmp
rmp=${pkgname%"${PKGEXT}"}
rmp=${rmp%-*}
rmp=${rmp%-*}
rm -fv "${PKGDEST_DBG}/${rmp}"*
if pkgfile=$(find_cached_pkgfile "${pkgname}"); then
msg "Found: %s" "${pkgfile}"
ln -sfv "${pkgfile}" "${PKGDEST_DBG}"/
fi
}
repo_action() {
local repo_path
# shellcheck disable=SC2153
@@ -39,11 +52,13 @@ repo_action() {
for pkgname in "${passfiles[@]}"; do
"$func"
done
( cd "${repo_path}" || return
if [[ -n "${action}" ]]; then
repo-"${action}" -R "${dest_repo}.${db_ext}" "${packages[@]}"
fi
)
if ! "${dbg_pkg}"; then
( cd "${repo_path}" || return
if [[ -n "${action}" ]]; then
repo-"${action}" "${action_args[@]}" "${dest_repo}.${db_ext}" "${packages[@]}"
fi
)
fi
}
#}}}
@@ -54,28 +69,32 @@ db_ext="db.tar.${DBEXT}"
add_pkg=false
rm_pkg=false
dbg_pkg=false
cmd=${0##*/}
dest_repo=${cmd#*-}
dest_repo=world #${cmd#*-}
action_args=(-R)
usage() {
printf "Usage: %s [options]\n" "${cmd}"
printf ' -d <dest> Destination repository\n'
printf ' -a Add package(s) to repository\n'
printf ' -r Remove package(s) from repository\n'
printf ' -u Update debug repository\n'
printf ' -h This help\n'
printf '\n'
printf '\n'
exit "$1"
}
opts='arLRhd:'
opts='uarhd:'
while getopts "${opts}" arg; do
case "${arg}" in
d) dest_repo="$OPTARG" ;;
a) add_pkg=true; rm_pkg=false ;;
r) rm_pkg=true; add_pkg=false ;;
u) dbg_pkg=true ;;
h|?) usage 0 ;;
esac
done
@@ -85,10 +104,14 @@ shift $(( OPTIND - 1 ))
passfiles=("$@")
if [[ -n "${passfiles[*]}" ]]; then
if ${add_pkg}; then
repo_action add
fi
if ${rm_pkg}; then
repo_action remove
if ! "${dbg_pkg}"; then
if ${add_pkg}; then
repo_action add
fi
if ${rm_pkg}; then
repo_action remove
fi
else
repo_action update_dbg
fi
fi

View File

@@ -6,8 +6,8 @@ LIBDIR=${LIBDIR:-'@libdir@'}
# shellcheck source=src/lib/base/message.sh
source "${LIBDIR}"/base/message.sh
# shellcheck source=src/lib/pkg/deploy.sh
source "${LIBDIR}"/pkg/deploy.sh
# shellcheck source=src/lib/pkg/util/deploy.sh
source "${LIBDIR}"/pkg/util/deploy.sh
# shellcheck source=config/makepkg/x86_64.conf
load_makepkg_config