Compare commits

..

37 Commits

Author SHA1 Message Date
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
7b67601e44 artixpkg ci: remove parallel agent config, leads to problems with gpg agents signing the commit
All checks were successful
Artools shellcheck / lint (push) Successful in 42s
2024-03-30 21:37:58 +01:00
8db0c1ca39 artixpkg admin: fix maintainer parallel
All checks were successful
Artools shellcheck / lint (push) Successful in 41s
2024-03-27 10:12:14 +01:00
190340e375 artixpkg admin: fix maintainer usage example
All checks were successful
Artools shellcheck / lint (push) Successful in 45s
2024-03-27 00:45:44 +01:00
58 changed files with 876 additions and 723 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=()
;; ;;
@@ -279,4 +284,4 @@ _artixpkg_completion() {
esac 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

@@ -31,7 +31,7 @@ artixpkg_admin_usage() {
$ ${COMMAND} query --topic mytopic $ ${COMMAND} query --topic mytopic
$ ${COMMAND} topic --add mytopic libfoo $ ${COMMAND} topic --add mytopic libfoo
$ ${COMMAND} team --add ${ARTIX_TEAMS[3]} libfoo $ ${COMMAND} team --add ${ARTIX_TEAMS[3]} libfoo
$ ${COMMAND} --adopt libfoo libbar $ ${COMMAND} maintainer --adopt libfoo libbar
_EOF_ _EOF_
} }

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
@@ -58,12 +56,12 @@ artixpkg_admin_maintainer() {
;; ;;
-a|--adopt) -a|--adopt)
ADOPT=1 ADOPT=1
RUNCMD+=" $1 $maintainer" RUNCMD+=" $1"
shift shift
;; ;;
-o|--orphan) -o|--orphan)
ORPHAN=1 ORPHAN=1
RUNCMD+=" $1 $orphan" RUNCMD+=" $1"
shift shift
;; ;;
--) --)
@@ -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

@@ -196,7 +196,6 @@ remove_all_topics() {
-H "Authorization: token ${GIT_TOKEN}" \ -H "Authorization: token ${GIT_TOKEN}" \
-d "$json" -d "$json"
stat_done 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,154 +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 RUNCMD=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
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"
RUNCMD+=" $1 ${AGENT}"
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
# parallelization
if [[ ${jobs} != 1 ]] && (( ${#paths[@]} > 1 )); then
if [[ -n ${BOLD} ]]; then
export ARTOOLS_COLOR=always
fi
if ! parallel --bar --jobs "${jobs}" "${RUNCMD}" ::: "${paths[@]}"; then
die 'Failed to configure some packages, please check the output'
exit 1
fi
exit 0
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 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 '
eval(strenv(repo)); with(
.version = null | eval(strenv(repo));
.packages = [] )' \ .version = null |
-i "${REPO_DB}" .packages = [] |
done .debug = [] )
} ' -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,36 +164,41 @@ 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}" \
eval(strenv(repo)); yq -P '
.version = env(version) | with(
.packages = env(pkgs) )' \ eval(strenv(repo));
-i "${REPO_DB}" .version = env(version) |
.packages = env(pkgs) |
.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 '
.actions; with(
.addRepo = env(dest) | .actions;
.removeRepo = null | .addRepo = env(dest) |
.triggersBuild = env(build) | .removeRepo = null |
.triggersRebuild = env(rebuild) | .triggersBuild = env(build) |
.triggersRepoAdd = env(add) | .triggersRebuild = env(rebuild) |
.triggersRepoRemove = false | .triggersRepoAdd = env(add) |
.triggersNoCheck = env(nocheck) )' \ .triggersRepoRemove = false |
-i "${REPO_DB}" .triggersNoCheck = env(nocheck) )
' -i "${REPO_DB}"
} }
update_yaml_remove() { update_yaml_remove() {
@@ -251,30 +207,30 @@ update_yaml_remove() {
local repo local repo
repo=".repos.${dest}" repo=".repos.${dest}"
repo="${repo}" \ repo="${repo}" dest="${dest}" \
yq -P 'with( yq -P '
eval(strenv(repo)); with(
.version = null | eval(strenv(repo));
.packages = [] )' \ .version = null |
-i "${REPO_DB}" .packages = [] |
.debug = [] ) |
dest="${dest}" \ with(
yq -P 'with( .actions;
.actions; .addRepo = null |
.addRepo = null | .removeRepo = env(dest) |
.removeRepo = env(dest) | .triggersBuild = false |
.triggersBuild = false | .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,41 +239,34 @@ 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}")
eval(strenv(src_repo));
.version = null |
.packages = [] )' \
-i "${REPO_DB}"
version="${version}" pkgs="${pkgs}" dest_repo="${dest_repo}" \ src_repo="${src_repo}" dest_repo="${dest_repo}" \
yq -P 'with( version="${version}" src=${src} dest="${dest}" \
eval(strenv(dest_repo)); pkgs="${pkgs}" debug_pkgs="${debug_pkgs}" \
.version = env(version) | yq -P '
.packages = env(pkgs) )' \ with(
-i "${REPO_DB}" eval(strenv(src_repo));
.version = null |
src=${src} dest="${dest}" \ .packages = [] |
yq -P 'with( .debug = [] ) |
.actions; with(
.addRepo = env(dest) | eval(strenv(dest_repo));
.removeRepo = env(src) | .version = env(version) |
.triggersBuild = false | .packages = env(pkgs) |
.triggersRebuild = false | .debug = env(debug_pkgs) ) |
.triggersRepoAdd = true | with(
.triggersRepoRemove = true | .actions;
.triggersNoCheck = false )' \ .addRepo = env(dest) |
-i "${REPO_DB}" .removeRepo = env(src) |
} .triggersBuild = false |
.triggersRebuild = false |
show_agent() { .triggersRepoAdd = true |
local agent="${AGENTS[0]}" .triggersRepoRemove = true |
if grep @${AGENTS[1]} "${REPO_CI}" &>/dev/null; then .triggersNoCheck = false )
agent="${AGENTS[1]}" ' -i "${REPO_DB}"
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

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

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/ci/config.sh
source "${LIBDIR}"/pkg/ci/config.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_ci_config "${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/ci/config.sh
source "${LIBDIR}"/pkg/ci/config.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_ci_config "${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() {
@@ -41,9 +46,12 @@ artixpkg_repo_usage() {
-h, --help Show this help text -h, --help Show this help text
EXAMPLES EXAMPLES
$ ${COMMAND} add world libfoo $ ${COMMAND} add ${ARTIX_DB_MAP[2]} libfoo
$ ${COMMAND} remove world libfoo $ ${COMMAND} remove ${ARTIX_DB_MAP[2]} libfoo
$ ${COMMAND} move world-gremlins world 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} import libfoo
$ ${COMMAND} show libfoo $ ${COMMAND} show libfoo
_EOF_ _EOF_

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

@@ -7,22 +7,61 @@ ARTOOLS_INCLUDE_REPO_IMPORT_SH=1
set -e 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(){ patch_pkgbase(){
local name="$1" local name="$1"
case "${name}" in local patches="${PATCHDIR}/patches/${name}"
linux|linux-lts|linux-zen|linux-hardened|linux-rt*) sed -e 's|arch-meson|artix-meson|' -i PKGBUILD
sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i PKGBUILD
sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \ if "${PATCH_MAINTAINER}" && [ -n "${PACKAGER}" ]; then
-i config sed -e 's|# Maintainer:|# Contributor:|' -i PKGBUILD
;; printf '%s\n%s\n' "# Maintainer: ${PACKAGER}" "$(cat "PKGBUILD")" >"PKGBUILD"
*) fi
sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \
-e 's|(Arch Linux)|(Artix Linux)|' \ if [ -d "${patches}" ]; then
-e 's|arch-meson|artix-meson|' \ if [ -f "${patches}/env.txt" ]; then
-i PKGBUILD while read -r line; do
;; IFS="=" read -r key value <<< "$line"
esac 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
git --no-pager diff PKGBUILD git --no-pager diff PKGBUILD
} }
@@ -34,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_
} }
@@ -53,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
@@ -83,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
@@ -96,6 +142,8 @@ artixpkg_repo_import() {
esac esac
done done
update_patches
pkgbases+=("$@") pkgbases+=("$@")
for pkgbase in "${pkgbases[@]}"; do for pkgbase in "${pkgbases[@]}"; do
@@ -108,9 +156,11 @@ 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
@@ -124,7 +174,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}"
@@ -141,8 +191,10 @@ 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
msg2 "Patching ${pkgbase} ..." if ! (( NP )); then
patch_pkgbase "${pkgbase}" msg2 "Patching ${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

@@ -21,7 +21,6 @@ usage() {
COMMANDS COMMANDS
admin Manage topics, teams and obsolete repos admin Manage topics, teams and obsolete repos
ci Manage CI and build agent
git Manage Git packaging repositories and their configuration git Manage Git packaging repositories and their configuration
repo Pacman database modification for package updates, moves, etc. repo Pacman database modification for package updates, moves, etc.
@@ -42,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
@@ -69,14 +66,6 @@ while (( $# )); do
artixpkg_git "$@" artixpkg_git "$@"
exit 0 exit 0
;; ;;
ci)
_ARTOOLS_COMMAND+=" $1"
shift
# shellcheck source=src/lib/pkg/ci.sh
source "${LIBDIR}"/pkg/ci.sh
artixpkg_ci "$@"
exit 0
;;
admin) admin)
_ARTOOLS_COMMAND+=" $1" _ARTOOLS_COMMAND+=" $1"
shift shift

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:]]}") done
attrvalues=("${attrvalues[@]%[[:space:]]}") printf "%s\n" "[${array}]"
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
} }
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
@@ -20,6 +20,7 @@ add() {
msg "Found: %s" "${pkgfile}" msg "Found: %s" "${pkgfile}"
packages+=("${pkgname}") packages+=("${pkgname}")
action='add' action='add'
action_args+=(--include-sigs)
ln -sfv "${pkgfile}"{,.sig} "${repo_path}"/ ln -sfv "${pkgfile}"{,.sig} "${repo_path}"/
fi fi
} }
@@ -41,7 +42,7 @@ repo_action() {
done done
( cd "${repo_path}" || return ( cd "${repo_path}" || return
if [[ -n "${action}" ]]; then if [[ -n "${action}" ]]; then
repo-"${action}" -R "${dest_repo}.${db_ext}" "${packages[@]}" repo-"${action}" "${action_args[@]}" "${dest_repo}.${db_ext}" "${packages[@]}"
fi fi
) )
} }
@@ -57,6 +58,7 @@ rm_pkg=false
cmd=${0##*/} cmd=${0##*/}
dest_repo=${cmd#*-} dest_repo=${cmd#*-}
action_args=(-R)
usage() { usage() {
printf "Usage: %s [options]\n" "${cmd}" printf "Usage: %s [options]\n" "${cmd}"

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