Compare commits

...

22 Commits

Author SHA1 Message Date
950e0604a4 artixpkg: fix repo import upstream fetch 2025-05-05 17:20:22 +02:00
607fa38500 fixes (#148)
Reviewed-on: artix/artools#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 2025-05-04 09:55:03 +02:00
c67826fd2a pre-rel-fixes (#147)
Reviewed-on: artix/artools#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)
automatically set agent

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

Reviewed-on: artix/artools#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)
Reviewed-on: artix/artools#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)
Reviewed-on: artix/artools#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 2025-02-23 02:04:30 +01:00
744eb3ca96 artixpkg: fix --no-patch logic import 2025-02-22 04:21:33 +01:00
3dd3f806ef artixpkg: add --no-patch import flag 2025-02-17 20:33:06 +01:00
fa245021bf makepkg-conf (#141)
Reviewed-on: artix/artools#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)
Reviewed-on: artix/artools#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
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
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
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 2024-05-13 17:03:59 +02:00
760f5e8281 artools/0.34.x (#135)
Co-authored-by: Dudemanguy <dudemanguy@artixlinux.org>
Co-authored-by: Cory Sanin <corysanin@artixlinux.org>
Reviewed-on: artix/artools#135
2024-05-13 15:41:42 +02:00
bb1585ad7b add initial zsh completions (#132)
Not as advanced as the bash completions but better than nothing.

Co-authored-by: artoo <artoo@artixlinux.org>
Reviewed-on: artix/artools#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)
Reviewed-on: artix/artools#133
2024-04-17 23:08:48 +02:00
35a9c2f305 artools/0.34.x (#131)
Co-authored-by: Dudemanguy <dudemanguy@artixlinux.org>
Co-authored-by: Cory Sanin <corysanin@artixlinux.org>
Reviewed-on: artix/artools#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
Reviewed-on: artix/artools#129
2024-04-10 23:08:20 +02:00
c7f11a5bd5 chroot-run: set PATH in chroot 2024-04-10 23:05:38 +02:00
55 changed files with 835 additions and 628 deletions

View File

@@ -80,7 +80,7 @@ conf_base:
conf_pkg: conf_pkg:
@install -d $(BUILDDIR)/makepkg.conf.d $(BUILDDIR)/artools @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 @cp -a $(TOOLS_CONFIGS_PKG) $(BUILDDIR)/artools
conf_iso: 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 $(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 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 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/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_iso: binprogs_iso
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/$(TOOLS) install -dm0755 $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
@@ -133,13 +135,12 @@ uninstall:
for f in $(notdir $(LIBRARY)); do rm -f $(DESTDIR)$(DATADIR)/lib/$$f; done for f in $(notdir $(LIBRARY)); do rm -f $(DESTDIR)$(DATADIR)/lib/$$f; done
rm -rf $(DESTDIR)$(DATADIR)/lib rm -rf $(DESTDIR)$(DATADIR)/lib
for conf in $(notdir $(TOOLS_CONFIGS)); do rm -f $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)/$${conf##*/}; done 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 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 for f in $(notdir $(SETARCH_ALIASES)); do rm -f $(DESTDIR)$(DATADIR)/setarch-aliases.d/$$f; done
rm -f $(DESTDIR)$(PREFIX)/bin/find-libprovides rm -f $(DESTDIR)$(PREFIX)/bin/find-libprovides
rmdir --ignore-fail-on-non-empty \ rmdir --ignore-fail-on-non-empty \
$(DESTDIR)$(DATADIR)/setarch-aliases.d \ $(DESTDIR)$(DATADIR)/setarch-aliases.d \
$(DESTDIR)$(DATADIR)/makepkg.conf.d \
$(DESTDIR)$(DATADIR)/pacman.conf.d \ $(DESTDIR)$(DATADIR)/pacman.conf.d \
$(DESTDIR)$(DATADIR) \ $(DESTDIR)$(DATADIR) \
$(DESTDIR)$(SYSCONFDIR)/$(TOOLS) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)

View File

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

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 \ CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
-Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \ -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \
-fstack-clash-protection -fcf-protection" -fstack-clash-protection -fcf-protection"
# -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"
CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS" CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \ LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \
-Wl,-z,pack-relative-relocs" -Wl,-z,pack-relative-relocs"
LTOFLAGS="-flto=auto" LTOFLAGS="-flto=auto"
RUSTFLAGS=""
#-- Make Flags: change this for DistCC/SMP systems #-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2" #MAKEFLAGS="-j2"
#-- Debugging flags #-- Debugging flags
DEBUG_CFLAGS="-g" DEBUG_CFLAGS="-g"
DEBUG_CXXFLAGS="$DEBUG_CFLAGS" DEBUG_CXXFLAGS="$DEBUG_CFLAGS"
DEBUG_RUSTFLAGS="-C debuginfo=2"
######################################################################### #########################################################################
# BUILD ENVIRONMENT # BUILD ENVIRONMENT
@@ -82,7 +81,7 @@ BUILDENV=(!distcc color !ccache check !sign)
# These are default values for the options=() settings # 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. # A negated option will do the opposite of the comments below.
# #
#-- strip: Strip symbols from binaries/libraries #-- strip: Strip symbols from binaries/libraries
@@ -94,6 +93,7 @@ BUILDENV=(!distcc color !ccache check !sign)
#-- purge: Remove files specified by PURGE_TARGETS #-- purge: Remove files specified by PURGE_TARGETS
#-- debug: Add debugging flags as specified in DEBUG_* variables #-- debug: Add debugging flags as specified in DEBUG_* variables
#-- lto: Add compile flags for building with link time optimization #-- 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) 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) PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
#-- Directory to store source code in for debug packages #-- Directory to store source code in for debug packages
DBGSRCDIR="/usr/src/debug" DBGSRCDIR="/usr/src/debug"
#-- Prefix and directories for library autodeps
LIB_DIRS=('lib:usr/lib' 'lib32:usr/lib32')
######################################################################### #########################################################################
# PACKAGE OUTPUT # 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 #CheckSpace
VerbosePkgLists VerbosePkgLists
ParallelDownloads = 5 ParallelDownloads = 5
DownloadUser = alpm
#DisableSandbox
# By default, pacman accepts packages signed by keys that its local keyring # 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. # trusts (see pacman-key and its man page), as well as unsigned packages.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -8,6 +8,14 @@ _artixpkg_pkgbase() {
ls -1 "${TREE_DIR_ARTIX}" | tr '\n' ' ' 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() { _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
source "${LIBDIR}"/pkg/db/db.sh 2>/dev/null source "${LIBDIR}"/pkg/db/db.sh 2>/dev/null
@@ -59,18 +67,10 @@ _artixpkg_completion() {
fi fi
done done
teams="${teams:1}" teams="${teams:1}"
agents=""
for word in "${AGENTS[@]}"; do
if [[ $word != -* ]]; then
agents+=" $word"
fi
done
agents="${agents:1}"
case "${comp_cword_exflag}" in case "${comp_cword_exflag}" in
1) 1)
COMPREPLY=($(compgen -W "admin ci git repo version -h --help" -- "${cur}")) COMPREPLY=($(compgen -W "admin git repo version -h --help" -- "${cur}"))
return 0 return 0
;; ;;
2) 2)
@@ -78,11 +78,8 @@ _artixpkg_completion() {
admin) admin)
COMPREPLY=($(compgen -W "maintainer query team topic transfer -h --help" -- ${cur})) COMPREPLY=($(compgen -W "maintainer query team topic transfer -h --help" -- ${cur}))
;; ;;
ci)
COMPREPLY=($(compgen -W "config -h --help" -- ${cur}))
;;
git) git)
COMPREPLY=($(compgen -W "clone config create pull push -h --help" -- ${cur})) COMPREPLY=($(compgen -W "ci clone config create pull push -h --help" -- ${cur}))
;; ;;
repo) repo)
COMPREPLY=($(compgen -W "add remove move import show -h --help" -- ${cur})) COMPREPLY=($(compgen -W "add remove move import show -h --help" -- ${cur}))
@@ -150,12 +147,15 @@ _artixpkg_completion() {
"-t"|"--team") "-t"|"--team")
COMPREPLY=($(compgen -W "$teams" -- ${cur})) 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 # these flags expect a parameter
COMPREPLY=() 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 -a --agent -j --jobs --all -h --help $(_artixpkg_remotepkgbase ${cur})" -- ${cur}))
;; ;;
esac esac
;; ;;
@@ -188,7 +188,10 @@ _artixpkg_completion() {
;; ;;
"artixpkg git pull"*) "artixpkg git pull"*)
case "${prev}" in 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 # these flags expect a parameter
COMPREPLY=() COMPREPLY=()
;; ;;
@@ -206,7 +209,10 @@ _artixpkg_completion() {
;; ;;
"artixpkg git push"*) "artixpkg git push"*)
case "${prev}" in case "${prev}" in
"-m"|"--maintainer"|"-t"|"--topic"|"-j"|"--jobs") "-m"|"--maintainer")
COMPREPLY=($(compgen -W "$(_artixpkg_maintainers)" -- ${cur}))
;;
"-t"|"--topic"|"-j"|"--jobs")
# this flag expects a parameter # this flag expects a parameter
COMPREPLY=() COMPREPLY=()
;; ;;
@@ -215,17 +221,13 @@ _artixpkg_completion() {
;; ;;
esac esac
;; ;;
"artixpkg ci config"*) "artixpkg git ci"*)
case "${prev}" in case "${prev}" in
"-j"|"--jobs")
# this flag expects a parameter
COMPREPLY=()
;;
"-a"|"--agent") "-a"|"--agent")
COMPREPLY=($(compgen -W "$agents" -- ${cur})) COMPREPLY=($(compgen -W "$agents" -- ${cur}))
;; ;;
*) *)
COMPREPLY=($(compgen -W "-a --agent -s --switch -j --jobs -h --help $(_artixpkg_pkgbase)" -- ${cur})) COMPREPLY=($(compgen -W "-a --agent -h --help $(_artixpkg_pkgbase)" -- ${cur}))
;; ;;
esac esac
;; ;;
@@ -241,7 +243,10 @@ _artixpkg_completion() {
;; ;;
"artixpkg admin query"*) "artixpkg admin query"*)
case "${prev}" in case "${prev}" in
"-m"|"--maintainer"|"-t"|"--topic") "-m"|"--maintainer")
COMPREPLY=($(compgen -W "$(_artixpkg_maintainers)" -- ${cur}))
;;
"-t"|"--topic")
# this flag expects a parameter # this flag expects a parameter
COMPREPLY=() COMPREPLY=()
;; ;;

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

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

View File

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

View File

@@ -23,6 +23,11 @@ readonly ARTIX_DB_MAP=(
stable stable
) )
readonly AGENTS=(
orion
taurus
)
readonly ARTIX_TEAMS=( readonly ARTIX_TEAMS=(
"${ARTIX_DB[2]}" "${ARTIX_DB[2]}"
"${ARTIX_DB[5]}" "${ARTIX_DB[5]}"
@@ -30,27 +35,30 @@ readonly ARTIX_TEAMS=(
"${ARTIX_DB[11]}" "${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_DB='.artixlinux/pkgbase.yaml'
readonly REPO_CI='.artixlinux/Jenkinsfile' readonly REPO_CI='.artixlinux/Jenkinsfile'
yaml_array() { readonly SRCINFO='.artixlinux/srcinfo.yaml'
local array
for entry in "$@"; do
array="${array:-}${array:+,} ${entry}"
done
printf "%s\n" "[${array}]"
}
print_package_names() { print_package_names() {
local version local version
local array
local architecture pkg local architecture pkg
version=$(get_full_version) version=$(get_full_version)
for pkg in "${pkgname[@]}"; do for pkg in "${pkgname[@]}"; do
architecture=$(get_pkg_arch "${pkg}") architecture=$(get_pkg_arch "${pkg}")
printf "%s-%s-%s%s\n" "$pkg" "$version" "$architecture" "$PKGEXT" array="${array:-}${array:+,} $pkg-$version-$architecture$PKGEXT"
done done
printf "%s\n" "[${array}]"
} }
print_debug_package_names() { print_debug_package_names() {
@@ -59,7 +67,9 @@ print_debug_package_names() {
version=$(get_full_version) version=$(get_full_version)
if check_option "debug" "y" && check_option "strip" "y"; then if check_option "debug" "y" && check_option "strip" "y"; then
architecture=$(get_pkg_arch) 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 fi
} }
@@ -71,17 +81,6 @@ version_from_yaml() {
printf "%s\n" "${version}" 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() { to_bool() {
local int="$1" local int="$1"
case "${int}" in case "${int}" in
@@ -113,17 +112,9 @@ create_repo_db() {
yq -n '"---"' > "${REPO_DB}" yq -n '"---"' > "${REPO_DB}"
yq -P '.team = null' -i "${REPO_DB}" yq -P '
.team = null |
yq -P 'with( with(
.pkgbase;
.name = null |
.version = null |
.arch = [] |
.pkgname = [] )' \
-i "${REPO_DB}"
yq -P 'with(
.actions; .actions;
.addRepo = null | .addRepo = null |
.removeRepo = null | .removeRepo = null |
@@ -131,39 +122,20 @@ create_repo_db() {
.triggersRebuild = false | .triggersRebuild = false |
.triggersRepoAdd = false | .triggersRepoAdd = false |
.triggersRepoRemove = false | .triggersRepoRemove = false |
.triggersNoCheck = false )' \ .triggersNoCheck = false ) |
-i "${REPO_DB}" .repos = {}
' -i "${REPO_DB}"
yq -P '.repos = {}' -i "${REPO_DB}"
for r in "${ARTIX_DB[@]}"; do for r in "${ARTIX_DB[@]}"; do
local repo local repo
repo=".repos.${r}" \ repo=".repos.${r}" \
yq -P 'with( yq -P '
with(
eval(strenv(repo)); eval(strenv(repo));
.version = null | .version = null |
.packages = [] )' \ .packages = [] |
-i "${REPO_DB}" .debug = [] )
done ' -i "${REPO_DB}"
}
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
done done
} }
@@ -172,27 +144,6 @@ update_yaml_team() {
team="$team" yq -P '.team = env(team)' -i "${REPO_DB}" 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() { update_yaml_add() {
local rebuild="$1" local rebuild="$1"
local add="$2" local add="$2"
@@ -213,27 +164,32 @@ update_yaml_add() {
local pkgs local pkgs
local version local version
local pkgfiles 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) version=$(get_full_version)
repo=".repos.${dest}" repo=".repos.${dest}"
version="${version}" pkgs="${pkgs}" repo="${repo}" \ version="${version}" repo="${repo}" \
yq -P 'with( pkgs="${pkgs}" debug_pkgs="${debug_pkgs}" \
yq -P '
with(
eval(strenv(repo)); eval(strenv(repo));
.version = env(version) | .version = env(version) |
.packages = env(pkgs) )' \ .packages = env(pkgs) |
-i "${REPO_DB}" .debug = env(debug_pkgs) )
' -i "${REPO_DB}"
fi fi
nocheck=$(to_bool "${nocheck}") nocheck=$(to_bool "${nocheck}")
nocheck="${nocheck}" add="${add}" \ nocheck="${nocheck}" add="${add}" \
rebuild="${rebuild}" build="${build}" dest="${dest}" \ rebuild="${rebuild}" build="${build}" dest="${dest}" \
yq -P 'with( yq -P '
with(
.actions; .actions;
.addRepo = env(dest) | .addRepo = env(dest) |
.removeRepo = null | .removeRepo = null |
@@ -241,8 +197,8 @@ update_yaml_add() {
.triggersRebuild = env(rebuild) | .triggersRebuild = env(rebuild) |
.triggersRepoAdd = env(add) | .triggersRepoAdd = env(add) |
.triggersRepoRemove = false | .triggersRepoRemove = false |
.triggersNoCheck = env(nocheck) )' \ .triggersNoCheck = env(nocheck) )
-i "${REPO_DB}" ' -i "${REPO_DB}"
} }
update_yaml_remove() { update_yaml_remove() {
@@ -251,15 +207,14 @@ update_yaml_remove() {
local repo local repo
repo=".repos.${dest}" repo=".repos.${dest}"
repo="${repo}" \ repo="${repo}" dest="${dest}" \
yq -P 'with( yq -P '
with(
eval(strenv(repo)); eval(strenv(repo));
.version = null | .version = null |
.packages = [] )' \ .packages = [] |
-i "${REPO_DB}" .debug = [] ) |
with(
dest="${dest}" \
yq -P 'with(
.actions; .actions;
.addRepo = null | .addRepo = null |
.removeRepo = env(dest) | .removeRepo = env(dest) |
@@ -267,14 +222,15 @@ update_yaml_remove() {
.triggersRebuild = false | .triggersRebuild = false |
.triggersRepoAdd = false | .triggersRepoAdd = false |
.triggersRepoRemove = true | .triggersRepoRemove = true |
.triggersNoCheck = false )' \ .triggersNoCheck = false )
-i "${REPO_DB}" ' -i "${REPO_DB}"
} }
update_yaml_move() { update_yaml_move() {
local src="$1" local src="$1"
local dest="$2" local dest="$2"
local pkgs local pkgs
local debug_pkgs
local version local version
local src_repo local src_repo
local dest_repo local dest_repo
@@ -283,24 +239,25 @@ update_yaml_move() {
dest_repo=".repos.${dest}" dest_repo=".repos.${dest}"
version=$(version_from_yaml "${src}") version=$(version_from_yaml "${src}")
pkgs=$(packages_from_yaml "${src}")
src_repo="${src_repo}" \ pkgs=$(src_repo="${src_repo}" yq -Pr -o json 'eval(strenv(src_repo)).packages' "${REPO_DB}")
yq -P 'with( debug_pkgs=$(src_repo="${src_repo}" yq -Pr -o json 'eval(strenv(src_repo)).debug' "${REPO_DB}")
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)); eval(strenv(src_repo));
.version = null | .version = null |
.packages = [] )' \ .packages = [] |
-i "${REPO_DB}" .debug = [] ) |
with(
version="${version}" pkgs="${pkgs}" dest_repo="${dest_repo}" \
yq -P 'with(
eval(strenv(dest_repo)); eval(strenv(dest_repo));
.version = env(version) | .version = env(version) |
.packages = env(pkgs) )' \ .packages = env(pkgs) |
-i "${REPO_DB}" .debug = env(debug_pkgs) ) |
with(
src=${src} dest="${dest}" \
yq -P 'with(
.actions; .actions;
.addRepo = env(dest) | .addRepo = env(dest) |
.removeRepo = env(src) | .removeRepo = env(src) |
@@ -308,16 +265,8 @@ update_yaml_move() {
.triggersRebuild = false | .triggersRebuild = false |
.triggersRepoAdd = true | .triggersRepoAdd = true |
.triggersRepoRemove = true | .triggersRepoRemove = true |
.triggersNoCheck = false )' \ .triggersNoCheck = false )
-i "${REPO_DB}" ' -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"
} }
team_from_yaml() { team_from_yaml() {
@@ -326,11 +275,12 @@ team_from_yaml() {
printf "$team" printf "$team"
} }
auto_detect() { detect_team() {
local team local team
for repo in "${ARTIX_TEAMS[@]}"; do for repo in "${ARTIX_TEAMS[@]}"; do
local _r res local key res
res=$(_r=".$repo" yq -rP '.repos | eval(strenv(_r)) | .version' "${REPO_DB}") res=$(key=".repos.$repo" yq -rP 'eval(strenv(key)) | .version' "${REPO_DB}")
if [[ "${res}" != "null" ]]; then if [[ "${res}" != "null" ]]; then
team=${repo} team=${repo}
fi fi
@@ -338,41 +288,34 @@ auto_detect() {
printf "%s\n" "$team" 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_db() {
show_agent show_agent
if ! yq -r "${REPO_DB}" 1>/dev/null 2>/dev/null; then if ! yq -r "${REPO_DB}" 1>/dev/null 2>/dev/null; then
die "${REPO_DB} invalid!" die "${REPO_DB} invalid!"
fi fi
yq -rP 'with_entries(select(.key == "team" or .key == "pkgbase"))' "${REPO_DB}" yq -rP 'with_entries(select(.key == "team"))' "${REPO_DB}"
yq -rP '. | .repos | with_entries(select(.value.version))' "${REPO_DB}" yq -rP '.repos | with_entries(select(.value.version))' "${REPO_DB}"
return 0 return 0
} }
show_srcinfo_base() {
pkg2yaml . | yq '.pkgbase'
}
show_srcinfo_pkgs() {
pkg2yaml . | yq '.pkgnames'
}
write_jenkinsfile() { 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 '\n'
printf 'PackagePipeline(new RepoPackage(this))\n' printf 'PackagePipeline(new RepoPackage(this))\n'
} >> "${REPO_CI}" } > "${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}"
} }

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

@@ -18,7 +18,6 @@ artixpkg_git_usage() {
create Create a new Gitea package repository create Create a new Gitea package repository
pull Pull a package repository pull Pull a package repository
push Push a package repository push Push a package repository
ci Configure CI agent
OPTIONS OPTIONS
-h, --help Show this help text -h, --help Show this help text
@@ -29,7 +28,6 @@ artixpkg_git_usage() {
$ ${COMMAND} clone --search mytopic $ ${COMMAND} clone --search mytopic
$ ${COMMAND} config libfoo $ ${COMMAND} config libfoo
$ ${COMMAND} create -c libfoo $ ${COMMAND} create -c libfoo
$ ${COMMAND} ci -a ${AGENTS[1]} libfoo
_EOF_ _EOF_
} }
@@ -62,14 +60,6 @@ artixpkg_git() {
artixpkg_git_config "$@" artixpkg_git_config "$@"
exit 0 exit 0
;; ;;
ci)
_ARTOOLS_COMMAND+=" $1"
shift
# shellcheck source=src/lib/pkg/git/ci.sh
source "${LIBDIR}"/pkg/git/ci.sh
artixpkg_git_ci "$@"
exit 0
;;
create) create)
_ARTOOLS_COMMAND+=" $1" _ARTOOLS_COMMAND+=" $1"
shift shift

View File

@@ -1,126 +0,0 @@
#!/bin/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
[[ -z ${ARTOOLS_INCLUDE_GIT_CI_SH:-} ]] || return 0
ARTOOLS_INCLUDE_GIT_CI_SH=1
# shellcheck source=src/lib/pkg/db/db.sh
source "${LIBDIR}"/pkg/db/db.sh
set -e
artixpkg_git_ci_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[@]})
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} --agent ${AGENTS[1]} libfoo
_EOF_
}
artixpkg_git_ci() {
# options
local paths=()
local AGENT=${AGENTS[0]}
local SWITCH=0
# variables
local path realpath pkgbase
while (( $# )); do
case $1 in
-h|--help)
artixpkg_git_ci_usage
exit 0
;;
-a|--agent)
(( $# <= 1 )) && die "missing argument for %s" "$1"
AGENT="$2"
SWITCH=1
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_git_ci_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

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

View File

@@ -5,8 +5,8 @@
[[ -z ${ARTOOLS_INCLUDE_GIT_CONFIG_SH:-} ]] || return 0 [[ -z ${ARTOOLS_INCLUDE_GIT_CONFIG_SH:-} ]] || return 0
ARTOOLS_INCLUDE_GIT_CONFIG_SH=1 ARTOOLS_INCLUDE_GIT_CONFIG_SH=1
# shellcheck source=src/lib/pkg/packager.sh # shellcheck source=src/lib/pkg/db/db.sh
source "${LIBDIR}"/pkg/packager.sh source "${LIBDIR}"/pkg/db/db.sh
set -e set -e
@@ -91,8 +91,10 @@ artixpkg_git_config() {
# Load makepkg.conf variables to be available for packager identity # Load makepkg.conf variables to be available for packager identity
msg "Collecting packager identity from makepkg.conf" 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 [[ -n ${PACKAGER} ]]; then
if ! packager_name=$(get_packager_name "${PACKAGER}") || \ if ! packager_name=$(get_packager_name "${PACKAGER}") || \
! packager_email=$(get_packager_email "${PACKAGER}"); then ! packager_email=$(get_packager_email "${PACKAGER}"); then
@@ -167,6 +169,33 @@ artixpkg_git_config() {
git config user.signingKey "${GPGKEY}" git config user.signingKey "${GPGKEY}"
fi 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 done
} }

View File

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

View File

@@ -16,14 +16,12 @@ artixpkg_git_push_usage() {
OPTIONS OPTIONS
-m, --maintainer NAME Push all packages of the named maintainer -m, --maintainer NAME Push all packages of the named maintainer
-t, --topic NAME Push all packages of the named topic -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 -h, --help Show this help text
EXAMPLES EXAMPLES
$ ${COMMAND} libfoo linux libbar $ ${COMMAND} libfoo linux libbar
$ ${COMMAND} --maintainer tux $ ${COMMAND} --maintainer tux
$ ${COMMAND} --topic mytopic $ ${COMMAND} --topic mytopic
$ ${COMMAND} -j 8 --topic mytopic
_EOF_ _EOF_
} }
@@ -38,11 +36,6 @@ artixpkg_git_push() {
# options # options
local MAINTAINER= local MAINTAINER=
local TOPIC= local TOPIC=
local CONFIGURE_OPTIONS=()
local jobs=
jobs=$(nproc)
local command=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
while (( $# )); do while (( $# )); do
case $1 in case $1 in
@@ -60,11 +53,6 @@ artixpkg_git_push() {
TOPIC="$2" TOPIC="$2"
shift 2 shift 2
;; ;;
-j|--jobs)
(( $# <= 1 )) && die "missing argument for %s" "$1"
jobs=$2
shift 2
;;
--) --)
shift shift
break break
@@ -90,19 +78,6 @@ artixpkg_git_push() {
mapfile -t pkgbases < <(search_topic "${TOPIC}" | yq -P -r '.data | .[].name' | sort) mapfile -t pkgbases < <(search_topic "${TOPIC}" | yq -P -r '.data | .[].name' | sort)
fi 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 for pkgbase in "${pkgbases[@]}"; do
if [[ -d ${pkgbase} ]]; then if [[ -d ${pkgbase} ]]; then
( cd "${pkgbase}" || return ( cd "${pkgbase}" || return

View File

@@ -8,10 +8,15 @@ ARTOOLS_INCLUDE_REPO_SH=1
# shellcheck source=src/lib/pkg/db/db.sh # shellcheck source=src/lib/pkg/db/db.sh
source "${LIBDIR}"/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 set -e
has_remote_changes() { load_makepkg_config
no_remote_changes() {
local status local status
msg "Checking for remote changes ..." msg "Checking for remote changes ..."
git fetch origin &>/dev/null git fetch origin &>/dev/null
@@ -19,10 +24,10 @@ has_remote_changes() {
if [[ "$status" == *behind* ]]; then if [[ "$status" == *behind* ]]; then
msg2 "changes: yes" msg2 "changes: yes"
error "Remote changes detected! Please pull (%s)" "${pkgbase}" error "Remote changes detected! Please pull (%s)" "${pkgbase}"
return 0 return 1
fi fi
msg2 "changes: no" msg2 "changes: no"
return 1 return 0
} }
artixpkg_repo_usage() { artixpkg_repo_usage() {

View File

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

View File

@@ -9,15 +9,21 @@ set -e
PATCHDIR=${PATCHDIR:-"${WORKSPACE_DIR}/artix-patches"} 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(){ update_patches(){
if [[ ! -d "${PATCHDIR}" ]]; then if [[ ! -d "${PATCHDIR}" ]]; then
# ${GIT_ORG} # ${GIT_ORG}
if ! git clone --depth=1 "${GIT_SSH}:artix/artix-patches.git" "${PATCHDIR}"; then if ! git clone "${PATCH_URL}" "${PATCHDIR}"; then
>&2 echo 'failed to clone %s' "${PATCHDIR}" error "failed to clone %s" "${PATCHDIR}"
fi fi
else else
if ! git -C "${PATCHDIR}" pull; then if ! git -C "${PATCHDIR}" pull; then
>&2 echo "Failed to pull artix-patches" error "Failed to pull artix-patches"
fi fi
fi fi
} }
@@ -25,16 +31,26 @@ update_patches(){
patch_pkgbase(){ patch_pkgbase(){
local name="$1" local name="$1"
local patches="${PATCHDIR}/patches/${name}" local patches="${PATCHDIR}/patches/${name}"
sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \ sed -e 's|arch-meson|artix-meson|' -i PKGBUILD
-e 's|(Arch Linux)|(Artix Linux)|' \
-e 's|arch-meson|artix-meson|' \ if "${PATCH_MAINTAINER}" && [ -n "${PACKAGER}" ]; then
-e 's|# Maintainer:|# Contributor:|' \ sed -e 's|# Maintainer:|# Contributor:|' -i PKGBUILD
-i PKGBUILD
if [ -n "${PACKAGER}" ]; then
printf '%s\n%s\n' "# Maintainer: ${PACKAGER}" "$(cat "PKGBUILD")" >"PKGBUILD" printf '%s\n%s\n' "# Maintainer: ${PACKAGER}" "$(cat "PKGBUILD")" >"PKGBUILD"
fi fi
if [ -d "${patches}" ]; then 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 for file in "${patches}"/*; do
if [ -x "${file}" ]; then if [ -x "${file}" ]; then
echo "$> ${name}/$(basename "${file}")" echo "$> ${name}/$(basename "${file}")"
@@ -57,12 +73,14 @@ artixpkg_repo_import_usage() {
OPTIONS OPTIONS
--tag TAG Switch the current workspace to a specified version tag --tag TAG Switch the current workspace to a specified version tag
--del Delete files before rsync import --del Delete files before rsync import
-n --no-patch No patch import
-h, --help Show this help text -h, --help Show this help text
EXAMPLES EXAMPLES
$ ${COMMAND} libfoo $ ${COMMAND} libfoo
$ ${COMMAND} --tag TAG libfoo $ ${COMMAND} --tag TAG libfoo
$ ${COMMAND} --tag TAG --del libfoo $ ${COMMAND} --tag TAG --del libfoo
$ ${COMMAND} --no-patch libfoo
_EOF_ _EOF_
} }
@@ -76,6 +94,7 @@ artixpkg_repo_import() {
local pkgbases=() local pkgbases=()
local pkgbase local pkgbase
local TAG local TAG
local NP=0
local rsync_args=() local rsync_args=()
rsync_args+=( rsync_args+=(
-axcihW -axcihW
@@ -106,6 +125,10 @@ artixpkg_repo_import() {
rsync_args+=(--delete-before) rsync_args+=(--delete-before)
shift shift
;; ;;
-n|--no-patch)
NP=1
shift
;;
-h|--help) -h|--help)
artixpkg_repo_import_usage artixpkg_repo_import_usage
exit 0 exit 0
@@ -133,14 +156,17 @@ artixpkg_repo_import() {
fi fi
( cd "${pkgbase}" || return ( cd "${pkgbase}" || return
upstream="${arch_map["$pkgbase"]:-$pkgbase}"
stat_busy "Checking for upstream url" stat_busy "Checking for upstream url"
if ! git config --local --get remote.upstream.url &>/dev/null; then if ! git config --local --get remote.upstream.url &>/dev/null; then
git remote add upstream "${GIT_UPSTREAM_URL}/${pkgbase}".git git remote add upstream "${GIT_UPSTREAM_URL}/${upstream}".git
fi fi
stat_done stat_done
msg2 "Fetching upstream tags" msg2 "Fetching upstream tags"
git fetch --tags upstream main local fetch
fetch=$(git fetch --tags upstream main &>/dev/null)
local latest version local latest version
latest=$(git describe --tags FETCH_HEAD) latest=$(git describe --tags FETCH_HEAD)
@@ -149,7 +175,7 @@ artixpkg_repo_import() {
version="${TAG}" version="${TAG}"
fi fi
if ! has_remote_changes; then if no_remote_changes; then
msg "Querying ${pkgbase} ..." msg "Querying ${pkgbase} ..."
if ! show_db; then if ! show_db; then
warning "Could not query ${REPO_DB}" warning "Could not query ${REPO_DB}"
@@ -166,9 +192,11 @@ artixpkg_repo_import() {
msg "Importing upstream changeset for ${version}" msg "Importing upstream changeset for ${version}"
rsync "${rsync_args[@]}" "${temp}"/ "$(pwd)"/ #&>/dev/null rsync "${rsync_args[@]}" "${temp}"/ "$(pwd)"/ #&>/dev/null
if ! (( NP )); then
msg2 "Patching ${pkgbase} ..." msg2 "Patching ${pkgbase} ..."
patch_pkgbase "${pkgbase}" patch_pkgbase "${pkgbase}"
fi fi
fi
) )
fi fi

View File

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

View File

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

View File

@@ -72,7 +72,7 @@ artixpkg_repo_show() {
fi fi
( cd "${pkgbase}" || return ( cd "${pkgbase}" || return
if ! has_remote_changes; then if no_remote_changes; then
if [[ ! -f PKGBUILD ]]; then if [[ ! -f PKGBUILD ]]; then
die "No PKGBUILD found in (%s)" "${pkgbase}" die "No PKGBUILD found in (%s)" "${pkgbase}"
fi fi
@@ -83,13 +83,17 @@ artixpkg_repo_show() {
fi fi
if (( SRC_BASE )); then if (( SRC_BASE )); then
msg "Showing srcinfo base ..." if [[ -f "${SRCINFO}" ]]; then
show_srcinfo_base msg "Showing srcinfo pkgbase ..."
yq '.pkgbase' "${SRCINFO}"
fi
fi fi
if (( SRC_PKGS )); then if (( SRC_PKGS )); then
msg "Showing srcinfo pkgs ..." if [[ -f "${SRCINFO}" ]]; then
show_srcinfo_pkgs msg "Showing srcinfo pkgname ..."
yq '.pkgname' "${SRCINFO}"
fi
fi 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,9 @@ load_pkg_config(){
DBEXT=${DBEXT:-'gz'} DBEXT=${DBEXT:-'gz'}
if [[ -z "${AGENTS[*]}" ]]; then PATCH_MAINTAINER=${PATCH_MAINTAINER:-false}
AGENTS=(orion taurus)
fi PATCH_URL=${PATCH_URL:-"${GIT_SSH}:artix/artix-patches.git"}
return 0 return 0
} }

View File

@@ -49,3 +49,6 @@ is_packager_email_official() {
fi fi
return 1 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

@@ -41,8 +41,6 @@ export _ARTOOLS_COMMAND='artixpkg'
# shellcheck source=src/lib/pkg/util.sh # shellcheck source=src/lib/pkg/util.sh
source "${LIBDIR}"/pkg/util.sh source "${LIBDIR}"/pkg/util.sh
load_makepkg_config
cd "${TREE_DIR_ARTIX}" cd "${TREE_DIR_ARTIX}"
# command checking # command checking

View File

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

View File

@@ -10,13 +10,45 @@ SYSCONFDIR=${SYSCONFDIR:-'@sysconfdir@/artools'}
source "${LIBDIR}"/pkg/util.sh source "${LIBDIR}"/pkg/util.sh
# shellcheck source=src/lib/base/message.sh # shellcheck source=src/lib/base/message.sh
source "${LIBDIR}"/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 # shellcheck source=src/lib/pkg/db/db.sh
source "${LIBDIR}"/pkg/db/db.sh source "${LIBDIR}"/pkg/db/db.sh
shopt -s extglob 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() { extract_db() {
local u="$1" cdir="$2" local u="$1" cdir="$2"
rm -rf "$cdir" rm -rf "$cdir"

View File

@@ -181,7 +181,9 @@ else
set_arch="${CARCH}" set_arch="${CARCH}"
fi 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=$? ret=$?

View File

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

View File

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

View File

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

View File

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