forked from artix/artools
		
	Compare commits
	
		
			45 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 3ed0c310a3 | |||
| b1213d5c2c | |||
| 
						
						
							
						
						26dffde972
	
				 | 
					
					
						|||
| 915eca6c2e | |||
| 
						
						
							
						
						a52e32d740
	
				 | 
					
					
						|||
| 
						
						
							
						
						34ed4ef723
	
				 | 
					
					
						|||
| aaa319c67a | |||
| 
						
						
							
						
						3304c888a5
	
				 | 
					
					
						|||
| 
						
						
							
						
						095c7ced45
	
				 | 
					
					
						|||
| f4eef7a3cd | |||
| 
						
						
							
						
						6fc1850f1f
	
				 | 
					
					
						|||
| c0a3a7e796 | |||
| 
						
						
							
						
						08fff866ed
	
				 | 
					
					
						|||
| 
						
						
							
						
						8bef697c44
	
				 | 
					
					
						|||
| a6eadf1af4 | |||
| 
						
						
							
						
						2595cd2a3a
	
				 | 
					
					
						|||
| 1917c252aa | |||
| 
						
						
							
						
						4c458bf242
	
				 | 
					
					
						|||
| 
						
						
							
						
						5b00c80698
	
				 | 
					
					
						|||
| 98c3c8c5b0 | |||
| 
						
						
							
						
						0786c46474
	
				 | 
					
					
						|||
| 
						
						
							
						
						d22406b308
	
				 | 
					
					
						|||
| 87ea01db9b | |||
| cb347b511a | |||
| 
						
						
							
						
						e15d70f732
	
				 | 
					
					
						|||
| 
						
						
							
						
						5ad0d72378
	
				 | 
					
					
						|||
| 
						
						
							
						
						f8dccbf59e
	
				 | 
					
					
						|||
| 
						
						
							
						
						a3bcbd40d2
	
				 | 
					
					
						|||
| 
						
						
							
						
						7a6c7e61de
	
				 | 
					
					
						|||
| 
						
						
							
						
						b517c7dcf8
	
				 | 
					
					
						|||
| b5c3decf9b | |||
| 
						
						
							
						
						de2d4bb4de
	
				 | 
					
					
						|||
| 
						
						
							
						
						f2eb80f1ab
	
				 | 
					
					
						|||
| 
						
						
							
						
						5f2ac0a406
	
				 | 
					
					
						|||
| 
						
						
							
						
						473a5ce6aa
	
				 | 
					
					
						|||
| 
						
						
							
						
						f511f7c0e9
	
				 | 
					
					
						|||
| 
						
						
							
						
						bbca425bf8
	
				 | 
					
					
						|||
| 
						
						
							
						
						10fe40eccb
	
				 | 
					
					
						|||
| 6ce9a5b751 | |||
| 108dcf620a | |||
| 7fc2909a29 | |||
| 
						 | 
					f248c20401 | ||
| 
						
						
							
						
						1516ef432e
	
				 | 
					
					
						|||
| cc3bd8049c | |||
| 13d6f8ba37 | 
							
								
								
									
										25
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								Makefile
									
									
									
									
									
								
							@@ -3,7 +3,7 @@ SHELL=/bin/bash
 | 
				
			|||||||
V=0.31
 | 
					V=0.31
 | 
				
			||||||
BUILDTOOLVER ?= $(V)
 | 
					BUILDTOOLVER ?= $(V)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CHROOTVER=0.11
 | 
					CHROOTVER=0.12
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TOOLS = artools
 | 
					TOOLS = artools
 | 
				
			||||||
SYSCONFDIR = /etc
 | 
					SYSCONFDIR = /etc
 | 
				
			||||||
@@ -36,24 +36,6 @@ TOOLS_CONFIGS_BASE=$(wildcard config/conf/*base*)
 | 
				
			|||||||
TOOLS_CONFIGS_PKG=$(wildcard config/conf/*pkg*)
 | 
					TOOLS_CONFIGS_PKG=$(wildcard config/conf/*pkg*)
 | 
				
			||||||
TOOLS_CONFIGS_ISO=$(wildcard config/conf/*iso*)
 | 
					TOOLS_CONFIGS_ISO=$(wildcard config/conf/*iso*)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LN_BUILDPKG = \
 | 
					 | 
				
			||||||
	buildpkg-system \
 | 
					 | 
				
			||||||
	buildpkg-system-gremlins \
 | 
					 | 
				
			||||||
	buildpkg-system-goblins \
 | 
					 | 
				
			||||||
	buildpkg-world \
 | 
					 | 
				
			||||||
	buildpkg-world-gremlins \
 | 
					 | 
				
			||||||
	buildpkg-world-goblins \
 | 
					 | 
				
			||||||
	buildpkg-lib32 \
 | 
					 | 
				
			||||||
	buildpkg-lib32-gremlins \
 | 
					 | 
				
			||||||
	buildpkg-lib32-goblins \
 | 
					 | 
				
			||||||
	buildpkg-galaxy \
 | 
					 | 
				
			||||||
	buildpkg-galaxy-gremlins \
 | 
					 | 
				
			||||||
	buildpkg-galaxy-goblins
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
LN_BUILDISO = \
 | 
					 | 
				
			||||||
	buildiso-gremlins \
 | 
					 | 
				
			||||||
	buildiso-goblins
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
all: binprogs_base binprogs_pkg binprogs_iso library_base library_pkg library_iso conf_base conf_pkg conf_iso
 | 
					all: binprogs_base binprogs_pkg binprogs_iso library_base library_pkg library_iso conf_base conf_pkg conf_iso
 | 
				
			||||||
binprogs_base: $(BINPROGS_BASE)
 | 
					binprogs_base: $(BINPROGS_BASE)
 | 
				
			||||||
binprogs_pkg: $(BINPROGS_PKG)
 | 
					binprogs_pkg: $(BINPROGS_PKG)
 | 
				
			||||||
@@ -130,7 +112,6 @@ install_pkg: binprogs_pkg
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	for conf in $(notdir $(MAKEPKG_CONFIGS)); do install -Dm0644 $(BUILDDIR)/makepkg.conf.d/$$conf $(DESTDIR)$(DATADIR)/makepkg.conf.d/$${conf##*/}; done
 | 
						for conf in $(notdir $(MAKEPKG_CONFIGS)); do install -Dm0644 $(BUILDDIR)/makepkg.conf.d/$$conf $(DESTDIR)$(DATADIR)/makepkg.conf.d/$${conf##*/}; done
 | 
				
			||||||
	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
 | 
				
			||||||
	for l in $(LN_BUILDPKG); do ln -sf buildpkg $(DESTDIR)$(PREFIX)/bin/$$l; done
 | 
					 | 
				
			||||||
	ln -sf find-libdeps $(DESTDIR)$(PREFIX)/bin/find-libprovides
 | 
						ln -sf find-libdeps $(DESTDIR)$(PREFIX)/bin/find-libprovides
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install_iso: binprogs_iso
 | 
					install_iso: binprogs_iso
 | 
				
			||||||
@@ -142,8 +123,6 @@ install_iso: binprogs_iso
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	for conf in $(notdir $(TOOLS_CONFIGS_ISO)); do install -Dm0644 $(BUILDDIR)/$(TOOLS)/$$conf $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)/$${conf##*/}; done
 | 
						for conf in $(notdir $(TOOLS_CONFIGS_ISO)); do install -Dm0644 $(BUILDDIR)/$(TOOLS)/$$conf $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)/$${conf##*/}; done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for l in $(LN_BUILDISO); do ln -sf buildiso $(DESTDIR)$(PREFIX)/bin/$$l; done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
install: all install_base install_pkg install_iso
 | 
					install: all install_base install_pkg install_iso
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uninstall:
 | 
					uninstall:
 | 
				
			||||||
@@ -154,8 +133,6 @@ uninstall:
 | 
				
			|||||||
	for conf in $(notdir $(MAKEPKG_CONFIGS)); do rm -f $(DESTDIR)$(DATADIR)/makepkg.conf.d/$${conf##*/}; done
 | 
						for conf in $(notdir $(MAKEPKG_CONFIGS)); do rm -f $(DESTDIR)$(DATADIR)/makepkg.conf.d/$${conf##*/}; done
 | 
				
			||||||
	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
 | 
				
			||||||
	for l in $(LN_BUILDPKG); do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done
 | 
					 | 
				
			||||||
	for l in $(LN_BUILDISO); do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; 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 \
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -74,11 +74,11 @@ Specifying args will override artools-{base,pkg,iso}.conf settings.
 | 
				
			|||||||
Both, pacman.conf and makepkg.conf for chroots are loaded from
 | 
					Both, pacman.conf and makepkg.conf for chroots are loaded from
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
usr/share/artools/makepkg.conf.d/makepkg.conf
 | 
					usr/share/artools/makepkg.conf.d/${arch}.conf
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
usr/share/artools/pacmanconf.d/${repo}.conf
 | 
					usr/share/artools/pacmanconf.d/${repo}-${arch}.conf
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
and can be overridden dropping them in
 | 
					and can be overridden dropping them in
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,3 +10,11 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# the workspace directory
 | 
					# the workspace directory
 | 
				
			||||||
# WORKSPACE_DIR="${USER_HOME}/artools-workspace"
 | 
					# WORKSPACE_DIR="${USER_HOME}/artools-workspace"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# the arch to build
 | 
				
			||||||
 | 
					# ARCH=$(uname -m)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# default pacman.conf repos to include
 | 
				
			||||||
 | 
					# possible buildpkg values: {system,world,galaxy,lib32}{-gremlins,-goblins}
 | 
				
			||||||
 | 
					# possible buildiso values: {world,galaxy}{-gremlins,-goblins}
 | 
				
			||||||
 | 
					# REPO="world"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -70,27 +70,30 @@ LocalFileSigLevel = Optional
 | 
				
			|||||||
# repo name header and Include lines. You can add preferred servers immediately
 | 
					# repo name header and Include lines. You can add preferred servers immediately
 | 
				
			||||||
# after the header, and they will be used before the default mirrors.
 | 
					# after the header, and they will be used before the default mirrors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system-goblins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[system-gremlins]
 | 
					[system-gremlins]
 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[system]
 | 
					[system]
 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world-goblins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[world-gremlins]
 | 
					[world-gremlins]
 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[world]
 | 
					[world]
 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[galaxy-gremlins]
 | 
					 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[galaxy]
 | 
					 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If you want to run 32 bit applications on your x86_64 system,
 | 
					# If you want to run 32 bit applications on your x86_64 system,
 | 
				
			||||||
# enable the lib32 repositories as required here.
 | 
					# enable the lib32 repositories as required here.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[lib32-goblins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[lib32-gremlins]
 | 
					[lib32-gremlins]
 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -70,39 +70,21 @@ LocalFileSigLevel = Optional
 | 
				
			|||||||
# repo name header and Include lines. You can add preferred servers immediately
 | 
					# repo name header and Include lines. You can add preferred servers immediately
 | 
				
			||||||
# after the header, and they will be used before the default mirrors.
 | 
					# after the header, and they will be used before the default mirrors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[system-goblins]
 | 
					 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[system-gremlins]
 | 
					[system-gremlins]
 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[system]
 | 
					[system]
 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[world-goblins]
 | 
					 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[world-gremlins]
 | 
					[world-gremlins]
 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[world]
 | 
					[world]
 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[galaxy-goblins]
 | 
					 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[galaxy-gremlins]
 | 
					 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[galaxy]
 | 
					 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If you want to run 32 bit applications on your x86_64 system,
 | 
					# If you want to run 32 bit applications on your x86_64 system,
 | 
				
			||||||
# enable the lib32 repositories as required here.
 | 
					# enable the lib32 repositories as required here.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[lib32-goblins]
 | 
					 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[lib32-gremlins]
 | 
					[lib32-gremlins]
 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -82,12 +82,6 @@ Include = /etc/pacman.d/mirrorlist
 | 
				
			|||||||
[world]
 | 
					[world]
 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[galaxy-gremlins]
 | 
					 | 
				
			||||||
#Include = /etc/pacman.d/mirrorlist
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[galaxy]
 | 
					 | 
				
			||||||
Include = /etc/pacman.d/mirrorlist
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If you want to run 32 bit applications on your x86_64 system,
 | 
					# If you want to run 32 bit applications on your x86_64 system,
 | 
				
			||||||
# enable the lib32 repositories as required here.
 | 
					# enable the lib32 repositories as required here.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										95
									
								
								config/pacman/system-goblins-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								config/pacman/system-goblins-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,95 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# /etc/pacman.conf
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# See the pacman.conf(5) manpage for option and repository directives
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# GENERAL OPTIONS
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					[options]
 | 
				
			||||||
 | 
					# The following paths are commented out with their default values listed.
 | 
				
			||||||
 | 
					# If you wish to use different paths, uncomment and update the paths.
 | 
				
			||||||
 | 
					#RootDir     = /
 | 
				
			||||||
 | 
					#DBPath      = /var/lib/pacman/
 | 
				
			||||||
 | 
					#CacheDir    = /var/cache/pacman/pkg/
 | 
				
			||||||
 | 
					#LogFile     = /var/log/pacman.log
 | 
				
			||||||
 | 
					#GPGDir      = /etc/pacman.d/gnupg/
 | 
				
			||||||
 | 
					#HookDir     = /etc/pacman.d/hooks/
 | 
				
			||||||
 | 
					HoldPkg     = pacman glibc
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
 | 
				
			||||||
 | 
					#CleanMethod = KeepInstalled
 | 
				
			||||||
 | 
					Architecture = auto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
 | 
				
			||||||
 | 
					#IgnorePkg   =
 | 
				
			||||||
 | 
					#IgnoreGroup =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#NoUpgrade   =
 | 
				
			||||||
 | 
					#NoExtract   =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Misc options
 | 
				
			||||||
 | 
					#UseSyslog
 | 
				
			||||||
 | 
					#Color
 | 
				
			||||||
 | 
					NoProgressBar
 | 
				
			||||||
 | 
					# We cannot check disk space from within a chroot environment
 | 
				
			||||||
 | 
					#CheckSpace
 | 
				
			||||||
 | 
					VerbosePkgLists
 | 
				
			||||||
 | 
					ParallelDownloads = 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 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.
 | 
				
			||||||
 | 
					SigLevel    = Required DatabaseOptional
 | 
				
			||||||
 | 
					LocalFileSigLevel = Optional
 | 
				
			||||||
 | 
					#RemoteFileSigLevel = Required
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# NOTE: You must run `pacman-key --init` before first using pacman; the local
 | 
				
			||||||
 | 
					# keyring can then be populated with the keys of all official Artix Linux
 | 
				
			||||||
 | 
					# packagers with `pacman-key --populate artix`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# REPOSITORIES
 | 
				
			||||||
 | 
					#   - can be defined here or included from another file
 | 
				
			||||||
 | 
					#   - pacman will search repositories in the order defined here
 | 
				
			||||||
 | 
					#   - local/custom mirrors can be added here or in separate files
 | 
				
			||||||
 | 
					#   - repositories listed first will take precedence when packages
 | 
				
			||||||
 | 
					#     have identical names, regardless of version number
 | 
				
			||||||
 | 
					#   - URLs will have $repo replaced by the name of the current repo
 | 
				
			||||||
 | 
					#   - URLs will have $arch replaced by the name of the architecture
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Repository entries are of the format:
 | 
				
			||||||
 | 
					#       [repo-name]
 | 
				
			||||||
 | 
					#       Server = ServerName
 | 
				
			||||||
 | 
					#       Include = IncludePath
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# The header [repo-name] is crucial - it must be present and
 | 
				
			||||||
 | 
					# uncommented to enable the repo.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The gremlins repositories are disabled by default. To enable, uncomment the
 | 
				
			||||||
 | 
					# repo name header and Include lines. You can add preferred servers immediately
 | 
				
			||||||
 | 
					# after the header, and they will be used before the default mirrors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system-goblins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system-gremlins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world-goblins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world-gremlins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# An example of a custom package repository.  See the pacman manpage for
 | 
				
			||||||
 | 
					# tips on creating your own repositories.
 | 
				
			||||||
 | 
					#[custom]
 | 
				
			||||||
 | 
					#SigLevel = Optional TrustAll
 | 
				
			||||||
 | 
					#Server = file:///home/custompkgs
 | 
				
			||||||
							
								
								
									
										89
									
								
								config/pacman/system-gremlins-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								config/pacman/system-gremlins-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,89 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# /etc/pacman.conf
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# See the pacman.conf(5) manpage for option and repository directives
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# GENERAL OPTIONS
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					[options]
 | 
				
			||||||
 | 
					# The following paths are commented out with their default values listed.
 | 
				
			||||||
 | 
					# If you wish to use different paths, uncomment and update the paths.
 | 
				
			||||||
 | 
					#RootDir     = /
 | 
				
			||||||
 | 
					#DBPath      = /var/lib/pacman/
 | 
				
			||||||
 | 
					#CacheDir    = /var/cache/pacman/pkg/
 | 
				
			||||||
 | 
					#LogFile     = /var/log/pacman.log
 | 
				
			||||||
 | 
					#GPGDir      = /etc/pacman.d/gnupg/
 | 
				
			||||||
 | 
					#HookDir     = /etc/pacman.d/hooks/
 | 
				
			||||||
 | 
					HoldPkg     = pacman glibc
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
 | 
				
			||||||
 | 
					#CleanMethod = KeepInstalled
 | 
				
			||||||
 | 
					Architecture = auto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
 | 
				
			||||||
 | 
					#IgnorePkg   =
 | 
				
			||||||
 | 
					#IgnoreGroup =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#NoUpgrade   =
 | 
				
			||||||
 | 
					#NoExtract   =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Misc options
 | 
				
			||||||
 | 
					#UseSyslog
 | 
				
			||||||
 | 
					#Color
 | 
				
			||||||
 | 
					NoProgressBar
 | 
				
			||||||
 | 
					# We cannot check disk space from within a chroot environment
 | 
				
			||||||
 | 
					#CheckSpace
 | 
				
			||||||
 | 
					VerbosePkgLists
 | 
				
			||||||
 | 
					ParallelDownloads = 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 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.
 | 
				
			||||||
 | 
					SigLevel    = Required DatabaseOptional
 | 
				
			||||||
 | 
					LocalFileSigLevel = Optional
 | 
				
			||||||
 | 
					#RemoteFileSigLevel = Required
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# NOTE: You must run `pacman-key --init` before first using pacman; the local
 | 
				
			||||||
 | 
					# keyring can then be populated with the keys of all official Artix Linux
 | 
				
			||||||
 | 
					# packagers with `pacman-key --populate artix`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# REPOSITORIES
 | 
				
			||||||
 | 
					#   - can be defined here or included from another file
 | 
				
			||||||
 | 
					#   - pacman will search repositories in the order defined here
 | 
				
			||||||
 | 
					#   - local/custom mirrors can be added here or in separate files
 | 
				
			||||||
 | 
					#   - repositories listed first will take precedence when packages
 | 
				
			||||||
 | 
					#     have identical names, regardless of version number
 | 
				
			||||||
 | 
					#   - URLs will have $repo replaced by the name of the current repo
 | 
				
			||||||
 | 
					#   - URLs will have $arch replaced by the name of the architecture
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Repository entries are of the format:
 | 
				
			||||||
 | 
					#       [repo-name]
 | 
				
			||||||
 | 
					#       Server = ServerName
 | 
				
			||||||
 | 
					#       Include = IncludePath
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# The header [repo-name] is crucial - it must be present and
 | 
				
			||||||
 | 
					# uncommented to enable the repo.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The gremlins repositories are disabled by default. To enable, uncomment the
 | 
				
			||||||
 | 
					# repo name header and Include lines. You can add preferred servers immediately
 | 
				
			||||||
 | 
					# after the header, and they will be used before the default mirrors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system-gremlins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world-gremlins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# An example of a custom package repository.  See the pacman manpage for
 | 
				
			||||||
 | 
					# tips on creating your own repositories.
 | 
				
			||||||
 | 
					#[custom]
 | 
				
			||||||
 | 
					#SigLevel = Optional TrustAll
 | 
				
			||||||
 | 
					#Server = file:///home/custompkgs
 | 
				
			||||||
							
								
								
									
										89
									
								
								config/pacman/system-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								config/pacman/system-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,89 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# /etc/pacman.conf
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# See the pacman.conf(5) manpage for option and repository directives
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# GENERAL OPTIONS
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					[options]
 | 
				
			||||||
 | 
					# The following paths are commented out with their default values listed.
 | 
				
			||||||
 | 
					# If you wish to use different paths, uncomment and update the paths.
 | 
				
			||||||
 | 
					#RootDir     = /
 | 
				
			||||||
 | 
					#DBPath      = /var/lib/pacman/
 | 
				
			||||||
 | 
					#CacheDir    = /var/cache/pacman/pkg/
 | 
				
			||||||
 | 
					#LogFile     = /var/log/pacman.log
 | 
				
			||||||
 | 
					#GPGDir      = /etc/pacman.d/gnupg/
 | 
				
			||||||
 | 
					#HookDir     = /etc/pacman.d/hooks/
 | 
				
			||||||
 | 
					HoldPkg     = pacman glibc
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
 | 
				
			||||||
 | 
					#CleanMethod = KeepInstalled
 | 
				
			||||||
 | 
					Architecture = auto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
 | 
				
			||||||
 | 
					#IgnorePkg   =
 | 
				
			||||||
 | 
					#IgnoreGroup =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#NoUpgrade   =
 | 
				
			||||||
 | 
					#NoExtract   =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Misc options
 | 
				
			||||||
 | 
					#UseSyslog
 | 
				
			||||||
 | 
					#Color
 | 
				
			||||||
 | 
					NoProgressBar
 | 
				
			||||||
 | 
					# We cannot check disk space from within a chroot environment
 | 
				
			||||||
 | 
					#CheckSpace
 | 
				
			||||||
 | 
					VerbosePkgLists
 | 
				
			||||||
 | 
					ParallelDownloads = 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 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.
 | 
				
			||||||
 | 
					SigLevel    = Required DatabaseOptional
 | 
				
			||||||
 | 
					LocalFileSigLevel = Optional
 | 
				
			||||||
 | 
					#RemoteFileSigLevel = Required
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# NOTE: You must run `pacman-key --init` before first using pacman; the local
 | 
				
			||||||
 | 
					# keyring can then be populated with the keys of all official Artix Linux
 | 
				
			||||||
 | 
					# packagers with `pacman-key --populate artix`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# REPOSITORIES
 | 
				
			||||||
 | 
					#   - can be defined here or included from another file
 | 
				
			||||||
 | 
					#   - pacman will search repositories in the order defined here
 | 
				
			||||||
 | 
					#   - local/custom mirrors can be added here or in separate files
 | 
				
			||||||
 | 
					#   - repositories listed first will take precedence when packages
 | 
				
			||||||
 | 
					#     have identical names, regardless of version number
 | 
				
			||||||
 | 
					#   - URLs will have $repo replaced by the name of the current repo
 | 
				
			||||||
 | 
					#   - URLs will have $arch replaced by the name of the architecture
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Repository entries are of the format:
 | 
				
			||||||
 | 
					#       [repo-name]
 | 
				
			||||||
 | 
					#       Server = ServerName
 | 
				
			||||||
 | 
					#       Include = IncludePath
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# The header [repo-name] is crucial - it must be present and
 | 
				
			||||||
 | 
					# uncommented to enable the repo.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The gremlins repositories are disabled by default. To enable, uncomment the
 | 
				
			||||||
 | 
					# repo name header and Include lines. You can add preferred servers immediately
 | 
				
			||||||
 | 
					# after the header, and they will be used before the default mirrors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[system-gremlins]
 | 
				
			||||||
 | 
					#Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[world-gremlins]
 | 
				
			||||||
 | 
					#Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# An example of a custom package repository.  See the pacman manpage for
 | 
				
			||||||
 | 
					# tips on creating your own repositories.
 | 
				
			||||||
 | 
					#[custom]
 | 
				
			||||||
 | 
					#SigLevel = Optional TrustAll
 | 
				
			||||||
 | 
					#Server = file:///home/custompkgs
 | 
				
			||||||
							
								
								
									
										95
									
								
								config/pacman/world-goblins-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								config/pacman/world-goblins-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,95 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# /etc/pacman.conf
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# See the pacman.conf(5) manpage for option and repository directives
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# GENERAL OPTIONS
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					[options]
 | 
				
			||||||
 | 
					# The following paths are commented out with their default values listed.
 | 
				
			||||||
 | 
					# If you wish to use different paths, uncomment and update the paths.
 | 
				
			||||||
 | 
					#RootDir     = /
 | 
				
			||||||
 | 
					#DBPath      = /var/lib/pacman/
 | 
				
			||||||
 | 
					#CacheDir    = /var/cache/pacman/pkg/
 | 
				
			||||||
 | 
					#LogFile     = /var/log/pacman.log
 | 
				
			||||||
 | 
					#GPGDir      = /etc/pacman.d/gnupg/
 | 
				
			||||||
 | 
					#HookDir     = /etc/pacman.d/hooks/
 | 
				
			||||||
 | 
					HoldPkg     = pacman glibc
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
 | 
				
			||||||
 | 
					#CleanMethod = KeepInstalled
 | 
				
			||||||
 | 
					Architecture = auto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
 | 
				
			||||||
 | 
					#IgnorePkg   =
 | 
				
			||||||
 | 
					#IgnoreGroup =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#NoUpgrade   =
 | 
				
			||||||
 | 
					#NoExtract   =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Misc options
 | 
				
			||||||
 | 
					#UseSyslog
 | 
				
			||||||
 | 
					#Color
 | 
				
			||||||
 | 
					NoProgressBar
 | 
				
			||||||
 | 
					# We cannot check disk space from within a chroot environment
 | 
				
			||||||
 | 
					#CheckSpace
 | 
				
			||||||
 | 
					VerbosePkgLists
 | 
				
			||||||
 | 
					ParallelDownloads = 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 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.
 | 
				
			||||||
 | 
					SigLevel    = Required DatabaseOptional
 | 
				
			||||||
 | 
					LocalFileSigLevel = Optional
 | 
				
			||||||
 | 
					#RemoteFileSigLevel = Required
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# NOTE: You must run `pacman-key --init` before first using pacman; the local
 | 
				
			||||||
 | 
					# keyring can then be populated with the keys of all official Artix Linux
 | 
				
			||||||
 | 
					# packagers with `pacman-key --populate artix`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# REPOSITORIES
 | 
				
			||||||
 | 
					#   - can be defined here or included from another file
 | 
				
			||||||
 | 
					#   - pacman will search repositories in the order defined here
 | 
				
			||||||
 | 
					#   - local/custom mirrors can be added here or in separate files
 | 
				
			||||||
 | 
					#   - repositories listed first will take precedence when packages
 | 
				
			||||||
 | 
					#     have identical names, regardless of version number
 | 
				
			||||||
 | 
					#   - URLs will have $repo replaced by the name of the current repo
 | 
				
			||||||
 | 
					#   - URLs will have $arch replaced by the name of the architecture
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Repository entries are of the format:
 | 
				
			||||||
 | 
					#       [repo-name]
 | 
				
			||||||
 | 
					#       Server = ServerName
 | 
				
			||||||
 | 
					#       Include = IncludePath
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# The header [repo-name] is crucial - it must be present and
 | 
				
			||||||
 | 
					# uncommented to enable the repo.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The gremlins repositories are disabled by default. To enable, uncomment the
 | 
				
			||||||
 | 
					# repo name header and Include lines. You can add preferred servers immediately
 | 
				
			||||||
 | 
					# after the header, and they will be used before the default mirrors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system-goblins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system-gremlins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world-goblins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world-gremlins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# An example of a custom package repository.  See the pacman manpage for
 | 
				
			||||||
 | 
					# tips on creating your own repositories.
 | 
				
			||||||
 | 
					#[custom]
 | 
				
			||||||
 | 
					#SigLevel = Optional TrustAll
 | 
				
			||||||
 | 
					#Server = file:///home/custompkgs
 | 
				
			||||||
							
								
								
									
										89
									
								
								config/pacman/world-gremlins-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								config/pacman/world-gremlins-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,89 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# /etc/pacman.conf
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# See the pacman.conf(5) manpage for option and repository directives
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# GENERAL OPTIONS
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					[options]
 | 
				
			||||||
 | 
					# The following paths are commented out with their default values listed.
 | 
				
			||||||
 | 
					# If you wish to use different paths, uncomment and update the paths.
 | 
				
			||||||
 | 
					#RootDir     = /
 | 
				
			||||||
 | 
					#DBPath      = /var/lib/pacman/
 | 
				
			||||||
 | 
					#CacheDir    = /var/cache/pacman/pkg/
 | 
				
			||||||
 | 
					#LogFile     = /var/log/pacman.log
 | 
				
			||||||
 | 
					#GPGDir      = /etc/pacman.d/gnupg/
 | 
				
			||||||
 | 
					#HookDir     = /etc/pacman.d/hooks/
 | 
				
			||||||
 | 
					HoldPkg     = pacman glibc
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
 | 
				
			||||||
 | 
					#CleanMethod = KeepInstalled
 | 
				
			||||||
 | 
					Architecture = auto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
 | 
				
			||||||
 | 
					#IgnorePkg   =
 | 
				
			||||||
 | 
					#IgnoreGroup =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#NoUpgrade   =
 | 
				
			||||||
 | 
					#NoExtract   =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Misc options
 | 
				
			||||||
 | 
					#UseSyslog
 | 
				
			||||||
 | 
					#Color
 | 
				
			||||||
 | 
					NoProgressBar
 | 
				
			||||||
 | 
					# We cannot check disk space from within a chroot environment
 | 
				
			||||||
 | 
					#CheckSpace
 | 
				
			||||||
 | 
					VerbosePkgLists
 | 
				
			||||||
 | 
					ParallelDownloads = 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 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.
 | 
				
			||||||
 | 
					SigLevel    = Required DatabaseOptional
 | 
				
			||||||
 | 
					LocalFileSigLevel = Optional
 | 
				
			||||||
 | 
					#RemoteFileSigLevel = Required
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# NOTE: You must run `pacman-key --init` before first using pacman; the local
 | 
				
			||||||
 | 
					# keyring can then be populated with the keys of all official Artix Linux
 | 
				
			||||||
 | 
					# packagers with `pacman-key --populate artix`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# REPOSITORIES
 | 
				
			||||||
 | 
					#   - can be defined here or included from another file
 | 
				
			||||||
 | 
					#   - pacman will search repositories in the order defined here
 | 
				
			||||||
 | 
					#   - local/custom mirrors can be added here or in separate files
 | 
				
			||||||
 | 
					#   - repositories listed first will take precedence when packages
 | 
				
			||||||
 | 
					#     have identical names, regardless of version number
 | 
				
			||||||
 | 
					#   - URLs will have $repo replaced by the name of the current repo
 | 
				
			||||||
 | 
					#   - URLs will have $arch replaced by the name of the architecture
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Repository entries are of the format:
 | 
				
			||||||
 | 
					#       [repo-name]
 | 
				
			||||||
 | 
					#       Server = ServerName
 | 
				
			||||||
 | 
					#       Include = IncludePath
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# The header [repo-name] is crucial - it must be present and
 | 
				
			||||||
 | 
					# uncommented to enable the repo.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The gremlins repositories are disabled by default. To enable, uncomment the
 | 
				
			||||||
 | 
					# repo name header and Include lines. You can add preferred servers immediately
 | 
				
			||||||
 | 
					# after the header, and they will be used before the default mirrors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system-gremlins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world-gremlins]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# An example of a custom package repository.  See the pacman manpage for
 | 
				
			||||||
 | 
					# tips on creating your own repositories.
 | 
				
			||||||
 | 
					#[custom]
 | 
				
			||||||
 | 
					#SigLevel = Optional TrustAll
 | 
				
			||||||
 | 
					#Server = file:///home/custompkgs
 | 
				
			||||||
							
								
								
									
										89
									
								
								config/pacman/world-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								config/pacman/world-x86_64.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,89 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# /etc/pacman.conf
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# See the pacman.conf(5) manpage for option and repository directives
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# GENERAL OPTIONS
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					[options]
 | 
				
			||||||
 | 
					# The following paths are commented out with their default values listed.
 | 
				
			||||||
 | 
					# If you wish to use different paths, uncomment and update the paths.
 | 
				
			||||||
 | 
					#RootDir     = /
 | 
				
			||||||
 | 
					#DBPath      = /var/lib/pacman/
 | 
				
			||||||
 | 
					#CacheDir    = /var/cache/pacman/pkg/
 | 
				
			||||||
 | 
					#LogFile     = /var/log/pacman.log
 | 
				
			||||||
 | 
					#GPGDir      = /etc/pacman.d/gnupg/
 | 
				
			||||||
 | 
					#HookDir     = /etc/pacman.d/hooks/
 | 
				
			||||||
 | 
					HoldPkg     = pacman glibc
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
 | 
				
			||||||
 | 
					#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
 | 
				
			||||||
 | 
					#CleanMethod = KeepInstalled
 | 
				
			||||||
 | 
					Architecture = auto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
 | 
				
			||||||
 | 
					#IgnorePkg   =
 | 
				
			||||||
 | 
					#IgnoreGroup =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#NoUpgrade   =
 | 
				
			||||||
 | 
					#NoExtract   =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Misc options
 | 
				
			||||||
 | 
					#UseSyslog
 | 
				
			||||||
 | 
					#Color
 | 
				
			||||||
 | 
					NoProgressBar
 | 
				
			||||||
 | 
					# We cannot check disk space from within a chroot environment
 | 
				
			||||||
 | 
					#CheckSpace
 | 
				
			||||||
 | 
					VerbosePkgLists
 | 
				
			||||||
 | 
					ParallelDownloads = 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 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.
 | 
				
			||||||
 | 
					SigLevel    = Required DatabaseOptional
 | 
				
			||||||
 | 
					LocalFileSigLevel = Optional
 | 
				
			||||||
 | 
					#RemoteFileSigLevel = Required
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# NOTE: You must run `pacman-key --init` before first using pacman; the local
 | 
				
			||||||
 | 
					# keyring can then be populated with the keys of all official Artix Linux
 | 
				
			||||||
 | 
					# packagers with `pacman-key --populate artix`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# REPOSITORIES
 | 
				
			||||||
 | 
					#   - can be defined here or included from another file
 | 
				
			||||||
 | 
					#   - pacman will search repositories in the order defined here
 | 
				
			||||||
 | 
					#   - local/custom mirrors can be added here or in separate files
 | 
				
			||||||
 | 
					#   - repositories listed first will take precedence when packages
 | 
				
			||||||
 | 
					#     have identical names, regardless of version number
 | 
				
			||||||
 | 
					#   - URLs will have $repo replaced by the name of the current repo
 | 
				
			||||||
 | 
					#   - URLs will have $arch replaced by the name of the architecture
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Repository entries are of the format:
 | 
				
			||||||
 | 
					#       [repo-name]
 | 
				
			||||||
 | 
					#       Server = ServerName
 | 
				
			||||||
 | 
					#       Include = IncludePath
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# The header [repo-name] is crucial - it must be present and
 | 
				
			||||||
 | 
					# uncommented to enable the repo.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The gremlins repositories are disabled by default. To enable, uncomment the
 | 
				
			||||||
 | 
					# repo name header and Include lines. You can add preferred servers immediately
 | 
				
			||||||
 | 
					# after the header, and they will be used before the default mirrors.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[system-gremlins]
 | 
				
			||||||
 | 
					#Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[system]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[world-gremlins]
 | 
				
			||||||
 | 
					#Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[world]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# An example of a custom package repository.  See the pacman manpage for
 | 
				
			||||||
 | 
					# tips on creating your own repositories.
 | 
				
			||||||
 | 
					#[custom]
 | 
				
			||||||
 | 
					#SigLevel = Optional TrustAll
 | 
				
			||||||
 | 
					#Server = file:///home/custompkgs
 | 
				
			||||||
@@ -3,6 +3,7 @@
 | 
				
			|||||||
# SPDX-License-Identifier: GPL-3.0-or-later
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LIBDIR=${LIBDIR:-'@libdir@'}
 | 
					LIBDIR=${LIBDIR:-'@libdir@'}
 | 
				
			||||||
 | 
					DATADIR=${DATADIR:-'@datadir@'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# shellcheck source=src/lib/base/message.sh
 | 
					# shellcheck source=src/lib/base/message.sh
 | 
				
			||||||
source "${LIBDIR}"/base/message.sh
 | 
					source "${LIBDIR}"/base/message.sh
 | 
				
			||||||
@@ -36,8 +37,8 @@ kill_chroot_process(){
 | 
				
			|||||||
umask 0022
 | 
					umask 0022
 | 
				
			||||||
 | 
					
 | 
				
			||||||
working_dir=''
 | 
					working_dir=''
 | 
				
			||||||
files=()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					files=()
 | 
				
			||||||
mount_args=("-B:/etc/hosts:/etc/hosts")
 | 
					mount_args=("-B:/etc/hosts:/etc/hosts")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
usage() {
 | 
					usage() {
 | 
				
			||||||
@@ -50,15 +51,18 @@ usage() {
 | 
				
			|||||||
    printf '    -c <dir>      Set pacman cache\n'
 | 
					    printf '    -c <dir>      Set pacman cache\n'
 | 
				
			||||||
    printf '    -f <file>     Copy file from the host to the chroot\n'
 | 
					    printf '    -f <file>     Copy file from the host to the chroot\n'
 | 
				
			||||||
    printf '    -s            Do not run setarch\n'
 | 
					    printf '    -s            Do not run setarch\n'
 | 
				
			||||||
    printf '    -b <list>     Bind mountargs\n'
 | 
					    printf '    -t <opts>     tmpfs mount opts\n'
 | 
				
			||||||
    printf '                  List format [mntarg1:src1:dest1 ... mntargN:srcN:destN]\n'
 | 
					    printf '    -b <args>     Bind mountargs\n'
 | 
				
			||||||
 | 
					    printf '                  Format:\n'
 | 
				
			||||||
 | 
					    printf '                  "arg1:src1:dest1 arg2:src2:dest2"\n'
 | 
				
			||||||
    printf '    -h            This message\n'
 | 
					    printf '    -h            This message\n'
 | 
				
			||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# save all args for check_root
 | 
				
			||||||
orig_args=("$@")
 | 
					orig_args=("$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opts='hC:M:c:b:f:s'
 | 
					opts='hC:M:c:b:f:t:s'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts ${opts} arg; do
 | 
					while getopts ${opts} arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
@@ -67,14 +71,15 @@ while getopts ${opts} arg; do
 | 
				
			|||||||
        c) cache_dirs+=("$OPTARG") ;;
 | 
					        c) cache_dirs+=("$OPTARG") ;;
 | 
				
			||||||
        f) files+=("$OPTARG") ;;
 | 
					        f) files+=("$OPTARG") ;;
 | 
				
			||||||
        s) nosetarch=1 ;;
 | 
					        s) nosetarch=1 ;;
 | 
				
			||||||
 | 
					        t) tmpfs_opts="$OPTARG" ;;
 | 
				
			||||||
        b) bindmounts="$OPTARG"; mount_args+=(${bindmounts}) ;;
 | 
					        b) bindmounts="$OPTARG"; mount_args+=(${bindmounts}) ;;
 | 
				
			||||||
        h|?) usage ;;
 | 
					        h|?) usage ;;
 | 
				
			||||||
 | 
					        *) error "invalid argument '%s'" "$arg"; usage ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
shift $(( OPTIND - 1 ))
 | 
					shift $((OPTIND - 1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(( $# < 1 )) && die 'You must specify a directory.'
 | 
					(( $# < 1 )) && die 'You must specify a directory.'
 | 
				
			||||||
 | 
					 | 
				
			||||||
check_root "" "${BASH_SOURCE[0]}" "${orig_args[@]}"
 | 
					check_root "" "${BASH_SOURCE[0]}" "${orig_args[@]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
working_dir=$(readlink -f "$1")
 | 
					working_dir=$(readlink -f "$1")
 | 
				
			||||||
@@ -83,7 +88,7 @@ shift 1
 | 
				
			|||||||
[[ -z $working_dir ]] && die 'Please specify a working directory.'
 | 
					[[ -z $working_dir ]] && die 'Please specify a working directory.'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (( ${#cache_dirs[@]} == 0 )); then
 | 
					if (( ${#cache_dirs[@]} == 0 )); then
 | 
				
			||||||
    mapfile -t cache_dirs < <(pacman-conf --config "${pac_conf:-$working_dir/etc/pacman.conf}" CacheDir)
 | 
					    mapfile -t cache_dirs < <(pacman-conf --config "${pacman_conf:-$working_dir/etc/pacman.conf}" CacheDir)
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# shellcheck disable=2016
 | 
					# shellcheck disable=2016
 | 
				
			||||||
@@ -91,15 +96,15 @@ mapfile -t host_mirrors < <(pacman-conf --repo world Server 2> /dev/null | sed -
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
for host_mirror in "${host_mirrors[@]}"; do
 | 
					for host_mirror in "${host_mirrors[@]}"; do
 | 
				
			||||||
    if [[ $host_mirror == *file://* ]]; then
 | 
					    if [[ $host_mirror == *file://* ]]; then
 | 
				
			||||||
        # shellcheck disable=2016
 | 
					        host_mirror=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g')
 | 
				
			||||||
        host_mirror=$(printf "%s\n" "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g')
 | 
					        for m in "$host_mirror"/pool/*/; do
 | 
				
			||||||
        in_array "$host_mirror" "${cache_dirs[@]}" || cache_dirs+=("$host_mirror")
 | 
					            in_array "$m" "${cache_dirs[@]}" || cache_dirs+=("$m")
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while read -r line; do
 | 
					while read -r line; do
 | 
				
			||||||
    # shellcheck disable=2016
 | 
					    mapfile -t lines < <(pacman-conf --config "${pacman_conf:-$working_dir/etc/pacman.conf}" \
 | 
				
			||||||
    mapfile -t lines < <(pacman-conf --config "${pac_conf:-$working_dir/etc/pacman.conf}" \
 | 
					 | 
				
			||||||
        --repo "$line" Server | sed -r 's#(.*/)[^/]+/os/.+#\1#')
 | 
					        --repo "$line" Server | sed -r 's#(.*/)[^/]+/os/.+#\1#')
 | 
				
			||||||
    for line in "${lines[@]}"; do
 | 
					    for line in "${lines[@]}"; do
 | 
				
			||||||
        if [[ $line = file://* ]]; then
 | 
					        if [[ $line = file://* ]]; then
 | 
				
			||||||
@@ -107,7 +112,15 @@ while read -r line; do
 | 
				
			|||||||
            in_array "$line" "${cache_dirs[@]}" || cache_dirs+=("$line")
 | 
					            in_array "$line" "${cache_dirs[@]}" || cache_dirs+=("$line")
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
done < <(pacman-conf --config "${pac_conf:-$working_dir/etc/pacman.conf}" --repo-list)
 | 
					done < <(pacman-conf --config "${pacman_conf:-$working_dir/etc/pacman.conf}" --repo-list)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mount_args+=("-B:${cache_dirs[0]//:/\\:}:${cache_dirs[0]//:/\\:}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for cache_dir in "${cache_dirs[@]:1}"; do
 | 
				
			||||||
 | 
					    mount_args+=("-Br:${cache_dir//:/\\:}:${cache_dir//:/\\:}")
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# {{{ functions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
copy_hostconf () {
 | 
					copy_hostconf () {
 | 
				
			||||||
    unshare --fork --pid gpg --homedir "$working_dir"/etc/pacman.d/gnupg/ --no-permission-warning --quiet --batch --import --import-options import-local-sigs "$(pacman-conf GpgDir)"/pubring.gpg >/dev/null 2>&1
 | 
					    unshare --fork --pid gpg --homedir "$working_dir"/etc/pacman.d/gnupg/ --no-permission-warning --quiet --batch --import --import-options import-local-sigs "$(pacman-conf GpgDir)"/pubring.gpg >/dev/null 2>&1
 | 
				
			||||||
@@ -115,9 +128,9 @@ copy_hostconf () {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    printf 'Server = %s\n' "${host_mirrors[@]}" >"$working_dir/etc/pacman.d/mirrorlist"
 | 
					    printf 'Server = %s\n' "${host_mirrors[@]}" >"$working_dir/etc/pacman.d/mirrorlist"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [[ -n $pacman_conf ]] && cp "$pacman_conf" "${working_dir}/etc/pacman.conf"
 | 
					    [[ -n $pacman_conf ]] && cp "$pacman_conf" "$working_dir/etc/pacman.conf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [[ -n $makepkg_conf ]] && cp "$makepkg_conf" "${working_dir}/etc/makepkg.conf"
 | 
					    [[ -n $makepkg_conf ]] && cp "$makepkg_conf" "$working_dir/etc/makepkg.conf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local file
 | 
					    local file
 | 
				
			||||||
    for file in "${files[@]}"; do
 | 
					    for file in "${files[@]}"; do
 | 
				
			||||||
@@ -125,15 +138,9 @@ copy_hostconf () {
 | 
				
			|||||||
        cp -T "$file" "$working_dir$file"
 | 
					        cp -T "$file" "$working_dir$file"
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sed -r "s|^#?\\s*CacheDir.+|CacheDir = ${cache_dirs[*]}|g" -i "${working_dir}/etc/pacman.conf"
 | 
					    sed -r "s|^#?\\s*CacheDir.+|CacheDir = ${cache_dirs[*]}|g" -i "$working_dir/etc/pacman.conf"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mount_args+=("-B:${cache_dirs[0]//:/\\:}:${cache_dirs[0]//:/\\:}")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
for cache_dir in "${cache_dirs[@]:1}"; do
 | 
					 | 
				
			||||||
    mount_args+=("-Br:${cache_dir//:/\\:}:${cache_dir//:/\\:}")
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
chroot_extra_mount() {
 | 
					chroot_extra_mount() {
 | 
				
			||||||
    chroot_add_resolv_conf "${working_dir}"
 | 
					    chroot_add_resolv_conf "${working_dir}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -147,27 +154,28 @@ chroot_extra_mount() {
 | 
				
			|||||||
    done
 | 
					    done
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# }}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
umask 0022
 | 
					umask 0022
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Sanity check
 | 
					# Sanity check
 | 
				
			||||||
if [[ ! -f "$working_dir/.artools" ]]; then
 | 
					if [[ ! -f "$working_dir/.artix-chroot" ]]; then
 | 
				
			||||||
    die "'%s' does not appear to be an artix chroot." "$working_dir"
 | 
					    die "'%s' does not appear to be an Artix chroot." "$working_dir"
 | 
				
			||||||
elif [[ $(cat "$working_dir/.artools") != "${CHROOTVERSION}" ]]; then
 | 
					elif [[ $(cat "$working_dir/.artix-chroot") != "${CHROOTVERSION}" ]]; then
 | 
				
			||||||
    die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "${CHROOTVERSION}"
 | 
					    die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "${CHROOTVERSION}"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
chroot_api_mount "${working_dir}" || die "failed to setup API filesystems in chroot %s" "${working_dir}"
 | 
					chroot_api_mount "${working_dir}" "${tmpfs_opts}" || die "failed to setup API filesystems in chroot %s" "${working_dir}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
chroot_extra_mount
 | 
					chroot_extra_mount
 | 
				
			||||||
 | 
					
 | 
				
			||||||
copy_hostconf
 | 
					copy_hostconf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eval "$(grep '^CARCH=' "$working_dir/etc/makepkg.conf")"
 | 
					eval "$(grep -a '^CARCH=' "$working_dir/etc/makepkg.conf")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[ -z $nosetarch ]] || unset CARCH
 | 
					[[ -z $nosetarch ]] || unset CARCH
 | 
				
			||||||
 | 
					if [[ -f "${DATADIR}/setarch-aliases.d/${CARCH}" ]]; then
 | 
				
			||||||
if [[ -f "/usr/share/artools/artools/setarch-aliases.d/${CARCH}" ]]; then
 | 
					    read -r set_arch < "${DATADIR}/setarch-aliases.d/${CARCH}"
 | 
				
			||||||
    read -r set_arch < "/usr/share/artools/artools/setarch-aliases.d/${CARCH}"
 | 
					 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
    set_arch="${CARCH}"
 | 
					    set_arch="${CARCH}"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -97,7 +97,7 @@ unshare --mount basestrap -${umode}Mc ${pacman_conf:+-C "$pacman_conf"} "$workin
 | 
				
			|||||||
printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen"
 | 
					printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen"
 | 
				
			||||||
printf 'LANG=C.UTF-8\n' > "$working_dir/etc/locale.conf"
 | 
					printf 'LANG=C.UTF-8\n' > "$working_dir/etc/locale.conf"
 | 
				
			||||||
# printf 'KEYMAP=en\n' > "$working_dir/etc/vconsole.conf"
 | 
					# printf 'KEYMAP=en\n' > "$working_dir/etc/vconsole.conf"
 | 
				
			||||||
printf "%s\n" "${CHROOTVERSION}" > "$working_dir/.artools"
 | 
					printf "%s\n" "${CHROOTVERSION}" > "$working_dir/.artix-chroot"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dbus-uuidgen --ensure="$working_dir"/etc/machine-id
 | 
					dbus-uuidgen --ensure="$working_dir"/etc/machine-id
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -184,7 +184,7 @@ gen_iso_fn(){
 | 
				
			|||||||
    vars+=("${profile}")
 | 
					    vars+=("${profile}")
 | 
				
			||||||
    vars+=("${INITSYS}")
 | 
					    vars+=("${INITSYS}")
 | 
				
			||||||
    case "${repo}" in
 | 
					    case "${repo}" in
 | 
				
			||||||
        'gremlins'|'goblins') vars+=("${repo}") ;;
 | 
					        *-gremlins|*-goblins) vars+=("${repo#*-}") ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
    vars+=("${ISO_VERSION}")
 | 
					    vars+=("${ISO_VERSION}")
 | 
				
			||||||
    vars+=("${arch}")
 | 
					    vars+=("${arch}")
 | 
				
			||||||
@@ -197,12 +197,10 @@ gen_iso_fn(){
 | 
				
			|||||||
prepare_build(){
 | 
					prepare_build(){
 | 
				
			||||||
    load_profile
 | 
					    load_profile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    case "${repo}" in
 | 
					    pacman_conf="${DATADIR}/pacman.conf.d/${repo}-${arch}.conf"
 | 
				
			||||||
        buildiso) repo=default ;;
 | 
					    if [[ -f "${USER_CONF_DIR}/pacman.conf.d/${repo}-${arch}.conf" ]]; then
 | 
				
			||||||
    esac
 | 
					        pacman_conf="${USER_CONF_DIR}/pacman.conf.d/${repo}-${arch}.conf"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
    pacman_conf="${DATADIR}/pacman.conf.d/${repo}.conf"
 | 
					 | 
				
			||||||
    [[ -f "${USER_CONF_DIR}/pacman.conf.d/${repo}.conf" ]] && pacman_conf="${USER_CONF_DIR}/pacman.conf.d/${repo}.conf"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    iso_file=$(gen_iso_fn).iso
 | 
					    iso_file=$(gen_iso_fn).iso
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -328,17 +326,21 @@ boot_only=false
 | 
				
			|||||||
basestrap_args=(-GMc)
 | 
					basestrap_args=(-GMc)
 | 
				
			||||||
cmd=${0##*/}
 | 
					cmd=${0##*/}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
repo=${cmd##*-}
 | 
					repo=${REPO}
 | 
				
			||||||
owner=${SUDO_USER:-$USER}
 | 
					owner=${SUDO_USER:-$USER}
 | 
				
			||||||
profile='base'
 | 
					profile='base'
 | 
				
			||||||
chroots_iso="${CHROOTS_DIR}/buildiso"
 | 
					chroots_iso="${CHROOTS_DIR}/buildiso"
 | 
				
			||||||
arch=$(uname -m)
 | 
					arch=${ARCH}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
usage() {
 | 
					usage() {
 | 
				
			||||||
    printf 'Usage: %s [options]\n' "${cmd}"
 | 
					    printf 'Usage: %s [options]\n' "${cmd}"
 | 
				
			||||||
    printf '    -p <profile>       Profile [default: %s]\n' "${profile}"
 | 
					    printf '    -p <profile>       Profile [default: %s]\n' "${profile}"
 | 
				
			||||||
    printf '    -r <dir>           Chroots directory\n'
 | 
					    printf '    -r <dir>           Chroots directory\n'
 | 
				
			||||||
    printf '                       [default: %s]\n' "${chroots_iso}"
 | 
					    printf '                       [default: %s]\n' "${chroots_iso}"
 | 
				
			||||||
 | 
					    printf '    -R <repo>          Build repo\n'
 | 
				
			||||||
 | 
					    printf '                       [default: %s]\n' "${repo}"
 | 
				
			||||||
 | 
					    printf '    -a <arch>          Build arch\n'
 | 
				
			||||||
 | 
					    printf '                       [default: %s]\n' "${arch}"
 | 
				
			||||||
    printf '    -t <dir>           Target directory\n'
 | 
					    printf '    -t <dir>           Target directory\n'
 | 
				
			||||||
    printf '                       [default: %s]\n' "${ISO_POOL}"
 | 
					    printf '                       [default: %s]\n' "${ISO_POOL}"
 | 
				
			||||||
    printf '    -i <name>          Init system to use\n'
 | 
					    printf '    -i <name>          Init system to use\n'
 | 
				
			||||||
@@ -362,11 +364,13 @@ usage() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
orig_args=("$@")
 | 
					orig_args=("$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opts='p:r:t:i:g:czsbxmdqh'
 | 
					opts='p:r:R:t:i:g:a:czsbxmdqh'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts "${opts}" arg; do
 | 
					while getopts "${opts}" arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
        p) profile="$OPTARG" ;;
 | 
					        p) profile="$OPTARG" ;;
 | 
				
			||||||
 | 
					        a) arch="$OPTARG" ;;
 | 
				
			||||||
 | 
					        R) repo="$OPTARG" ;;
 | 
				
			||||||
        r) chroots_iso="$OPTARG" ;;
 | 
					        r) chroots_iso="$OPTARG" ;;
 | 
				
			||||||
        t) ISO_POOL="$OPTARG" ;;
 | 
					        t) ISO_POOL="$OPTARG" ;;
 | 
				
			||||||
        i) INITSYS="$OPTARG" ;;
 | 
					        i) INITSYS="$OPTARG" ;;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,6 +56,7 @@ chroot_mount_conditional() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
chroot_setup(){
 | 
					chroot_setup(){
 | 
				
			||||||
    local mnt="$1"
 | 
					    local mnt="$1"
 | 
				
			||||||
 | 
					    local tmpfs_opts="${2:-mode=1777,strictatime,nodev,nosuid}"
 | 
				
			||||||
    chroot_mount_conditional "! mountpoint -q '$mnt'" "$mnt" "$mnt" --bind &&
 | 
					    chroot_mount_conditional "! mountpoint -q '$mnt'" "$mnt" "$mnt" --bind &&
 | 
				
			||||||
    chroot_mount proc "$mnt/proc" -t proc -o nosuid,noexec,nodev &&
 | 
					    chroot_mount proc "$mnt/proc" -t proc -o nosuid,noexec,nodev &&
 | 
				
			||||||
    chroot_mount sys "$mnt/sys" -t sysfs -o nosuid,noexec,nodev,ro &&
 | 
					    chroot_mount sys "$mnt/sys" -t sysfs -o nosuid,noexec,nodev,ro &&
 | 
				
			||||||
@@ -65,13 +66,13 @@ chroot_setup(){
 | 
				
			|||||||
    chroot_mount devpts "$mnt/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec &&
 | 
					    chroot_mount devpts "$mnt/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec &&
 | 
				
			||||||
    chroot_mount shm "$mnt/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev &&
 | 
					    chroot_mount shm "$mnt/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev &&
 | 
				
			||||||
    chroot_mount /run "$mnt/run" -t tmpfs -o nosuid,nodev,mode=0755 &&
 | 
					    chroot_mount /run "$mnt/run" -t tmpfs -o nosuid,nodev,mode=0755 &&
 | 
				
			||||||
    chroot_mount tmp "$mnt/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid
 | 
					    chroot_mount tmp "$mnt/tmp" -t tmpfs -o "${tmpfs_opts}"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
chroot_api_mount() {
 | 
					chroot_api_mount() {
 | 
				
			||||||
    CHROOT_ACTIVE_MOUNTS=()
 | 
					    CHROOT_ACTIVE_MOUNTS=()
 | 
				
			||||||
    trap_setup chroot_api_umount
 | 
					    trap_setup chroot_api_umount
 | 
				
			||||||
    chroot_setup "$1"
 | 
					    chroot_setup "$1" "$2"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
chroot_api_umount() {
 | 
					chroot_api_umount() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,6 +32,10 @@ load_base_config(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    WORKSPACE_DIR=${WORKSPACE_DIR:-"${USER_HOME}/artools-workspace"}
 | 
					    WORKSPACE_DIR=${WORKSPACE_DIR:-"${USER_HOME}/artools-workspace"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ARCH=${ARCH:-"$(uname -m)"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    REPO=${REPO:-'world'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,7 +34,7 @@ prepare_initramfs_mkinitcpio() {
 | 
				
			|||||||
    [[ "${profile}" == 'base' ]] && mkinitcpio_conf=mkinitcpio-pxe.conf
 | 
					    [[ "${profile}" == 'base' ]] && mkinitcpio_conf=mkinitcpio-pxe.conf
 | 
				
			||||||
    k=$(<"$mnt"/usr/src/linux/version)
 | 
					    k=$(<"$mnt"/usr/src/linux/version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    read_from_list "${common_dir}/Packages-boot"
 | 
					    packages+=($(read_from_list "${common_dir}/Packages-boot"))
 | 
				
			||||||
    basestrap "${basestrap_args[@]}" "$mnt" "${packages[@]}"
 | 
					    basestrap "${basestrap_args[@]}" "$mnt" "${packages[@]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ -n "${GPG_KEY}" ]]; then
 | 
					    if [[ -n "${GPG_KEY}" ]]; then
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										66
									
								
								src/lib/pkg/admin.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								src/lib/pkg/admin.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					#!/hint/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[ -z ${ARTOOLS_INCLUDE_ADMIN_SH:-} ]] || return 0
 | 
				
			||||||
 | 
					ARTOOLS_INCLUDE_ADMIN_SH=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_admin_usage() {
 | 
				
			||||||
 | 
					    local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
 | 
					    cat <<- _EOF_
 | 
				
			||||||
 | 
					    Usage: ${COMMAND} [COMMAND] [OPTIONS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    COMMANDS
 | 
				
			||||||
 | 
					        transfer          Transfer obsolete repository to landfill
 | 
				
			||||||
 | 
					        query             Query maintainers and topics
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OPTIONS
 | 
				
			||||||
 | 
					        -h, --help     Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EXAMPLES
 | 
				
			||||||
 | 
					        $ ${COMMAND} transfer libfoo libbar
 | 
				
			||||||
 | 
					        $ ${COMMAND} query --maintainer tux
 | 
				
			||||||
 | 
					        $ ${COMMAND} query --topic kf5
 | 
				
			||||||
 | 
					_EOF_
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_admin() {
 | 
				
			||||||
 | 
					    if (( $# < 1 )); then
 | 
				
			||||||
 | 
					        artixpkg_admin_usage
 | 
				
			||||||
 | 
					        exit 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # option checking
 | 
				
			||||||
 | 
					    while (( $# )); do
 | 
				
			||||||
 | 
					        case $1 in
 | 
				
			||||||
 | 
					        -h|--help)
 | 
				
			||||||
 | 
					            artixpkg_admin_usage
 | 
				
			||||||
 | 
					            exit 0
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        transfer)
 | 
				
			||||||
 | 
					            _ARTOOLS_COMMAND+=" $1"
 | 
				
			||||||
 | 
					            shift
 | 
				
			||||||
 | 
					            # shellcheck source=src/lib/pkg/admin/transfer.sh
 | 
				
			||||||
 | 
					            source "${LIBDIR}"/pkg/admin/transfer.sh
 | 
				
			||||||
 | 
					            artixpkg_admin_transfer "$@"
 | 
				
			||||||
 | 
					            exit 0
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        query)
 | 
				
			||||||
 | 
					            _ARTOOLS_COMMAND+=" $1"
 | 
				
			||||||
 | 
					            shift
 | 
				
			||||||
 | 
					            # shellcheck source=src/lib/pkg/admin/query.sh
 | 
				
			||||||
 | 
					            source "${LIBDIR}"/pkg/admin/query.sh
 | 
				
			||||||
 | 
					            artixpkg_admin_query "$@"
 | 
				
			||||||
 | 
					            exit 0
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        -*)
 | 
				
			||||||
 | 
					            die "invalid argument: %s" "$1"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        *)
 | 
				
			||||||
 | 
					            die "invalid command: %s" "$1"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										89
									
								
								src/lib/pkg/admin/query.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								src/lib/pkg/admin/query.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,89 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[ -z ${ARTOOLS_INCLUDE_ADMIN_QUERY_SH:-} ]] || return 0
 | 
				
			||||||
 | 
					ARTOOLS_INCLUDE_ADMIN_QUERY_SH=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_admin_query_usage() {
 | 
				
			||||||
 | 
					    local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
 | 
					    cat <<- _EOF_
 | 
				
			||||||
 | 
					    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OPTIONS
 | 
				
			||||||
 | 
					        -m, --maintainer=NAME      Query for packages of the named maintainer
 | 
				
			||||||
 | 
					        -t, --topic=NAME           Query for packages of the named topic
 | 
				
			||||||
 | 
					        -h, --help                 Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EXAMPLES
 | 
				
			||||||
 | 
					        $ ${COMMAND} --maintainer maintainer-mynickname
 | 
				
			||||||
 | 
					        $ ${COMMAND} --topic myopic
 | 
				
			||||||
 | 
					_EOF_
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_admin_query() {
 | 
				
			||||||
 | 
					    if (( $# < 1 )); then
 | 
				
			||||||
 | 
					        artixpkg_admin_query_usage
 | 
				
			||||||
 | 
					        exit 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # options
 | 
				
			||||||
 | 
					    local MAINTAINER=
 | 
				
			||||||
 | 
					    local TOPIC=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while (( $# )); do
 | 
				
			||||||
 | 
					        case $1 in
 | 
				
			||||||
 | 
					            -h|--help)
 | 
				
			||||||
 | 
					                artixpkg_admin_query_usage
 | 
				
			||||||
 | 
					                exit 0
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -m|--maintainer)
 | 
				
			||||||
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
 | 
					                MAINTAINER="$2"
 | 
				
			||||||
 | 
					                shift 2
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            --maintainer=*)
 | 
				
			||||||
 | 
					                MAINTAINER="${1#*=}"
 | 
				
			||||||
 | 
					                shift
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -t|--topic)
 | 
				
			||||||
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
 | 
					                TOPIC="$2"
 | 
				
			||||||
 | 
					                shift 2
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            --topic=*)
 | 
				
			||||||
 | 
					                TOPIC="${1#*=}"
 | 
				
			||||||
 | 
					                shift
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            --)
 | 
				
			||||||
 | 
					                shift
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -*)
 | 
				
			||||||
 | 
					                die "invalid argument: %s" "$1"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            *)
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Query packages of a maintainer
 | 
				
			||||||
 | 
					    if [[ -n ${MAINTAINER} ]]; then
 | 
				
			||||||
 | 
					        local maint
 | 
				
			||||||
 | 
					        maint="maintainer-${MAINTAINER}"
 | 
				
			||||||
 | 
					        mapfile -t pkgbases < <(search_topic "${maint}" | yq -r '.data | .[].name' | sort)
 | 
				
			||||||
 | 
					        printf "%s\n" "${pkgbases[@]}"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ -n ${TOPIC} ]]; then
 | 
				
			||||||
 | 
					        mapfile -t pkgbases < <(search_topic "${TOPIC}" | yq -P -r '.data | .[].name' | sort)
 | 
				
			||||||
 | 
					        printf "%s\n" "${pkgbases[@]}"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										66
									
								
								src/lib/pkg/admin/transfer.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								src/lib/pkg/admin/transfer.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[ -z ${ARTOOLS_INCLUDE_ADMIN_TRANSFER_SH:-} ]] || return 0
 | 
				
			||||||
 | 
					ARTOOLS_INCLUDE_ADMIN_TRANSFER_SH=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_admin_transfer_usage() {
 | 
				
			||||||
 | 
					    local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
 | 
					    cat <<- _EOF_
 | 
				
			||||||
 | 
					    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OPTIONS
 | 
				
			||||||
 | 
					        -h, --help             Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EXAMPLES
 | 
				
			||||||
 | 
					        $ ${COMMAND} libfoo
 | 
				
			||||||
 | 
					        $ ${COMMAND} libfoo libbar
 | 
				
			||||||
 | 
					_EOF_
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_admin_transfer() {
 | 
				
			||||||
 | 
					    if (( $# < 1 )); then
 | 
				
			||||||
 | 
					        artixpkg_admin_transfer_usage
 | 
				
			||||||
 | 
					        exit 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # options
 | 
				
			||||||
 | 
					    local pkgbases=()
 | 
				
			||||||
 | 
					    local pkgbase
 | 
				
			||||||
 | 
					    local waste_org="landfill"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local command=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while (( $# )); do
 | 
				
			||||||
 | 
					        case $1 in
 | 
				
			||||||
 | 
					            -h|--help)
 | 
				
			||||||
 | 
					                artixpkg_admin_transfer_usage
 | 
				
			||||||
 | 
					                exit 0
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            --)
 | 
				
			||||||
 | 
					                shift
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -*)
 | 
				
			||||||
 | 
					                die "invalid argument: %s" "$1"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            *)
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pkgbases+=("$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ -n ${GIT_TOKEN} ]]; then
 | 
				
			||||||
 | 
					        for pkgbase in "${pkgbases[@]}"; do
 | 
				
			||||||
 | 
					            transfer_repo "${pkgbase}" "${waste_org}"
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -4,24 +4,15 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#{{{ gitea api
 | 
					#{{{ gitea api
 | 
				
			||||||
 | 
					
 | 
				
			||||||
get_compliant() {
 | 
					get_compliant_name() {
 | 
				
			||||||
    local name=$1
 | 
					    local name=$1
 | 
				
			||||||
    printf "%s" "${name}" \
 | 
					    printf "%s\n" "${name}" \
 | 
				
			||||||
    | sed -E 's/([a-zA-Z0-9]+)\+([a-zA-Z]+)/\1-\2/g' \
 | 
					    | sed -E 's/([a-zA-Z0-9]+)\+([a-zA-Z]+)/\1-\2/g' \
 | 
				
			||||||
    | sed -E 's/\+/plus/g' \
 | 
					    | sed -E 's/\+/plus/g' \
 | 
				
			||||||
    | sed -E 's/[^a-zA-Z0-9_\-\.]/-/g' \
 | 
					    | sed -E 's/[^a-zA-Z0-9_\-\.]/-/g' \
 | 
				
			||||||
    | sed -E 's/[_\-]{2,}/-/g'
 | 
					    | sed -E 's/[_\-]{2,}/-/g'
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
get_compliant_name(){
 | 
					 | 
				
			||||||
    local gitname="$1"
 | 
					 | 
				
			||||||
    case "$gitname" in
 | 
					 | 
				
			||||||
        *+) gitname=${gitname//+/plus} ;;
 | 
					 | 
				
			||||||
        *+*) gitname=${gitname//+/-} ;;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
    printf "%s\n" "$gitname"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
api_put() {
 | 
					api_put() {
 | 
				
			||||||
    curl -s -X PUT "$@"
 | 
					    curl -s -X PUT "$@"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -72,7 +63,7 @@ create_repo() {
 | 
				
			|||||||
    local pkgbase="$1"
 | 
					    local pkgbase="$1"
 | 
				
			||||||
    local url json
 | 
					    local url json
 | 
				
			||||||
    url="${GIT_HTTPS}/api/v1/org/${GIT_ORG}/repos"
 | 
					    url="${GIT_HTTPS}/api/v1/org/${GIT_ORG}/repos"
 | 
				
			||||||
    json="{ \"auto_init\": true, \"name\": \"$pkgbase\", \"gitignores\": \"ArchLinuxPackages\", \"readme\": \"Default\" }"
 | 
					    json="{ \"auto_init\": true, \"name\": \"$pkgbase\", \"gitignores\": \"ArtixLinuxPackages\", \"readme\": \"Default\" }"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    stat_busy "Create package repo [$pkgbase] in org (${GIT_ORG})"
 | 
					    stat_busy "Create package repo [$pkgbase] in org (${GIT_ORG})"
 | 
				
			||||||
    api_post "$url" \
 | 
					    api_post "$url" \
 | 
				
			||||||
@@ -103,34 +94,10 @@ list_all_repos() {
 | 
				
			|||||||
    local url
 | 
					    local url
 | 
				
			||||||
    url="${GIT_HTTPS}/api/v1/orgs/${GIT_ORG}/repos?limit=10000"
 | 
					    url="${GIT_HTTPS}/api/v1/orgs/${GIT_ORG}/repos?limit=10000"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    stat_busy "Query all packages"
 | 
				
			||||||
    api_get "$url" \
 | 
					    api_get "$url" \
 | 
				
			||||||
        -H "accept: application/json"
 | 
					        -H "accept: application/json"
 | 
				
			||||||
}
 | 
					    stat_done
 | 
				
			||||||
 | 
					 | 
				
			||||||
replace_topic() {
 | 
					 | 
				
			||||||
    local url
 | 
					 | 
				
			||||||
    local repo="$1"
 | 
					 | 
				
			||||||
    local maintainer="$2"
 | 
					 | 
				
			||||||
    url="${GIT_HTTPS}/api/v1/repos/${GIT_ORG}/$repo/topics"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    api_put "$url" \
 | 
					 | 
				
			||||||
        -H "accept: application/json" \
 | 
					 | 
				
			||||||
        -H "Content-Type: application/json" \
 | 
					 | 
				
			||||||
        -H "Authorization: token ${GIT_TOKEN}" \
 | 
					 | 
				
			||||||
        -d "{
 | 
					 | 
				
			||||||
                \"topics\": [
 | 
					 | 
				
			||||||
                    \"${maintainer}\"
 | 
					 | 
				
			||||||
                ]
 | 
					 | 
				
			||||||
            }"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
list_topics() {
 | 
					 | 
				
			||||||
    local url
 | 
					 | 
				
			||||||
    local pkgbase="$1"
 | 
					 | 
				
			||||||
    url="${GIT_HTTPS}/api/v1/repos/${GIT_ORG}/$pkgbase/topics"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    api_get "$url" \
 | 
					 | 
				
			||||||
        -H "accept: application/json"
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
add_topic() {
 | 
					add_topic() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,6 +19,8 @@ readonly ARTIX_DB=(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
readonly REPO_DB='.artixlinux/pkgbase.yaml'
 | 
					readonly REPO_DB='.artixlinux/pkgbase.yaml'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					readonly REPO_CI='.artixlinux/Jenkinsfile'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
yaml_array() {
 | 
					yaml_array() {
 | 
				
			||||||
    local array
 | 
					    local array
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -136,12 +138,12 @@ update_yaml_base() {
 | 
				
			|||||||
    local pkgnames
 | 
					    local pkgnames
 | 
				
			||||||
    local arches
 | 
					    local arches
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    name="${pkgbase:-${pkgname}}"
 | 
					    pkgbase="${pkgbase:-${pkgname}}"
 | 
				
			||||||
    version="$(get_full_version)"
 | 
					    version="$(get_full_version)"
 | 
				
			||||||
    pkgnames=$(yaml_array "${pkgname[@]}")
 | 
					    pkgnames=$(yaml_array "${pkgname[@]}")
 | 
				
			||||||
    arches=$(yaml_array "${arch[@]}")
 | 
					    arches=$(yaml_array "${arch[@]}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    name="${name}" version="${version}" pkgnames="${pkgnames}" arches="${arches}" \
 | 
					    name="${pkgbase}" version="${version}" pkgnames="${pkgnames}" arches="${arches}" \
 | 
				
			||||||
        yq -P 'with(
 | 
					        yq -P 'with(
 | 
				
			||||||
            .pkgbase;
 | 
					            .pkgbase;
 | 
				
			||||||
                .name = env(name) |
 | 
					                .name = env(name) |
 | 
				
			||||||
@@ -274,6 +276,15 @@ show_db() {
 | 
				
			|||||||
    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 '. | .repos |= with_entries(select(.value.version))' "${REPO_DB}"
 | 
					    yq -rP '. | with_entries(select(.value.name))' "${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'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,35 +0,0 @@
 | 
				
			|||||||
#!/hint/bash
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# SPDX-License-Identifier: GPL-3.0-or-later
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
local_head(){
 | 
					 | 
				
			||||||
    git log --pretty=%H ...refs/heads/master^ | head -n 1
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
remote_head(){
 | 
					 | 
				
			||||||
    git ls-remote origin -h refs/heads/master | cut -f1
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
has_changeset(){
 | 
					 | 
				
			||||||
    msg "Checking remote for changes"
 | 
					 | 
				
			||||||
    if [[ "$(local_head)" != "$(remote_head)" ]]; then
 | 
					 | 
				
			||||||
        msg2 "remote changes: yes"
 | 
					 | 
				
			||||||
        return 0
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    msg2 "remote changes: no"
 | 
					 | 
				
			||||||
    return 1
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
commit_ci(){
 | 
					 | 
				
			||||||
    local ci=Jenkinsfile
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    printf "@Library('artix-ci') import org.artixlinux.RepoPackage\n" > "${ci}"
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    printf '\n'
 | 
					 | 
				
			||||||
    printf 'PackagePipeline(new RepoPackage(this))\n'
 | 
					 | 
				
			||||||
    } >> "${ci}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    git add "${ci}"
 | 
					 | 
				
			||||||
    git commit -m "initial ci commit"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,68 +0,0 @@
 | 
				
			|||||||
#!/hint/bash
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# SPDX-License-Identifier: GPL-3.0-or-later
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
declare -rA REPO_MAP=(
 | 
					 | 
				
			||||||
    [core-rebuild]=system-goblins
 | 
					 | 
				
			||||||
    [core-staging]=system-goblins
 | 
					 | 
				
			||||||
    [core-testing]=system-gremlins
 | 
					 | 
				
			||||||
    [core]=system
 | 
					 | 
				
			||||||
    [extra-rebuild]=world-goblins
 | 
					 | 
				
			||||||
    [extra-staging]=world-goblins
 | 
					 | 
				
			||||||
    [extra-testing]=world-gremlins
 | 
					 | 
				
			||||||
    [extra]=world
 | 
					 | 
				
			||||||
    [multilib-staging]=lib32-goblins
 | 
					 | 
				
			||||||
    [multilib-testing]=lib32-gremlins
 | 
					 | 
				
			||||||
    [multilib]=lib32
 | 
					 | 
				
			||||||
    [community-staging]=galaxy-goblins
 | 
					 | 
				
			||||||
    [community-testing]=galaxy-gremlins
 | 
					 | 
				
			||||||
    [community]=galaxy
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate_to_yaml() {
 | 
					 | 
				
			||||||
    if [[ -f trunk/PKGBUILD ]]; then
 | 
					 | 
				
			||||||
        cp -r trunk/* ./
 | 
					 | 
				
			||||||
        stat_busy "Migrating ${pkgbase} to new layout"
 | 
					 | 
				
			||||||
        create_repo_db
 | 
					 | 
				
			||||||
        stat_done
 | 
					 | 
				
			||||||
        # shellcheck source=contrib/makepkg/PKGBUILD.proto
 | 
					 | 
				
			||||||
        source "trunk/PKGBUILD"
 | 
					 | 
				
			||||||
        update_yaml_base
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if [[ -d x86_64 ]]; then
 | 
					 | 
				
			||||||
            local repos
 | 
					 | 
				
			||||||
            mapfile -t repos < <(ls x86_64)
 | 
					 | 
				
			||||||
            for r in "${repos[@]}"; do
 | 
					 | 
				
			||||||
                # shellcheck source=contrib/makepkg/PKGBUILD.proto
 | 
					 | 
				
			||||||
                source "x86_64/${r}/PKGBUILD"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                local repo
 | 
					 | 
				
			||||||
                local pkgs
 | 
					 | 
				
			||||||
                local version
 | 
					 | 
				
			||||||
                local pkgfiles
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                mapfile -t pkgfiles < <(print_package_names)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                pkgs=$(yaml_array "${pkgfiles[@]}")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                version=$(get_full_version)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                repo=".repos.${REPO_MAP[$r]}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                version="${version}" pkgs="${pkgs}" repo="${repo}" \
 | 
					 | 
				
			||||||
                    yq -P 'with(
 | 
					 | 
				
			||||||
                            eval(strenv(repo));
 | 
					 | 
				
			||||||
                                .version = env(version) |
 | 
					 | 
				
			||||||
                                .packages = env(pkgs) )' \
 | 
					 | 
				
			||||||
                        -i "${REPO_DB}"
 | 
					 | 
				
			||||||
            done
 | 
					 | 
				
			||||||
            git rm -r x86_64
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        git rm -r trunk
 | 
					 | 
				
			||||||
        if [[ -f .artixlinux/agent.yaml ]]; then
 | 
					 | 
				
			||||||
            git rm .artixlinux/agent.yaml
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        git add .
 | 
					 | 
				
			||||||
        git commit -m "migrate to new layout"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -31,13 +31,4 @@ find_cached_pkgfile() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
shopt -u extglob
 | 
					shopt -u extglob
 | 
				
			||||||
 | 
					
 | 
				
			||||||
get_pkgbasename() {
 | 
					 | 
				
			||||||
    local name="$1"
 | 
					 | 
				
			||||||
    local rm_pkg=${name%.pkg.tar*}
 | 
					 | 
				
			||||||
    rm_pkg=${rm_pkg%-*}
 | 
					 | 
				
			||||||
    rm_pkg=${rm_pkg%-*}
 | 
					 | 
				
			||||||
    rm_pkg=${rm_pkg%-*}
 | 
					 | 
				
			||||||
    printf "%s\n" "$rm_pkg"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#}}}
 | 
					#}}}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,16 +16,18 @@ artixpkg_git_usage() {
 | 
				
			|||||||
        clone          Clone a package repository
 | 
					        clone          Clone a package repository
 | 
				
			||||||
        config         Configure a clone according to artix specs
 | 
					        config         Configure a clone according to artix specs
 | 
				
			||||||
        create         Create a new Gitea package repository
 | 
					        create         Create a new Gitea package repository
 | 
				
			||||||
 | 
					        pull           Pull a package repository
 | 
				
			||||||
 | 
					        push           Push a package repository
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        -h, --help     Show this help text
 | 
					        -h, --help     Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EXAMPLES
 | 
					    EXAMPLES
 | 
				
			||||||
        $ ${COMMAND} clone libfoo linux libbar
 | 
					        $ ${COMMAND} clone libfoo linux libbar
 | 
				
			||||||
        $ ${COMMAND} clone --maintainer maintainer-mynickname
 | 
					        $ ${COMMAND} clone --maintainer tux
 | 
				
			||||||
        $ ${COMMAND} config -t libfoo
 | 
					        $ ${COMMAND} config --topic mytopic
 | 
				
			||||||
        $ ${COMMAND} config -u libfoo
 | 
					        $ ${COMMAND} config --maintainer tux
 | 
				
			||||||
        $ ${COMMAND} create libfoo
 | 
					        $ ${COMMAND} create -c libfoo
 | 
				
			||||||
_EOF_
 | 
					_EOF_
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -74,6 +76,14 @@ artixpkg_git() {
 | 
				
			|||||||
            artixpkg_git_pull "$@"
 | 
					            artixpkg_git_pull "$@"
 | 
				
			||||||
            exit 0
 | 
					            exit 0
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
 | 
					        push)
 | 
				
			||||||
 | 
					            _ARTOOLS_COMMAND+=" $1"
 | 
				
			||||||
 | 
					            shift
 | 
				
			||||||
 | 
					            # shellcheck source=src/lib/pkg/git/push.sh
 | 
				
			||||||
 | 
					            source "${LIBDIR}"/pkg/git/push.sh
 | 
				
			||||||
 | 
					            artixpkg_git_push "$@"
 | 
				
			||||||
 | 
					            exit 0
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
        -*)
 | 
					        -*)
 | 
				
			||||||
            die "invalid argument: %s" "$1"
 | 
					            die "invalid argument: %s" "$1"
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,16 +17,17 @@ artixpkg_git_clone_usage() {
 | 
				
			|||||||
    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
					    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        -m, --maintainer=NAME  Clone all packages of the named maintainer
 | 
					        -m, --maintainer=NAME      Clone all packages of the named maintainer
 | 
				
			||||||
        --protocol https       Clone the repository over https
 | 
					        --protocol https           Clone the repository over https
 | 
				
			||||||
        -t, --topic=NAME       Clone all packages of the named topic
 | 
					        -t, --topic=NAME           Clone all packages of the named topic
 | 
				
			||||||
        -j, --jobs N           Run up to N jobs in parallel (default: $(nproc))
 | 
					        -a, --agent=NAME           Set the CI agent (default: official)
 | 
				
			||||||
        --universe             Clone all existing packages, useful for cache warming
 | 
					        -j, --jobs N               Run up to N jobs in parallel (default: $(nproc))
 | 
				
			||||||
        -h, --help             Show this help text
 | 
					        --all                      Clone all existing packages, useful for cache warming
 | 
				
			||||||
 | 
					        -h, --help                 Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EXAMPLES
 | 
					    EXAMPLES
 | 
				
			||||||
        $ ${COMMAND} libfoo linux libbar
 | 
					        $ ${COMMAND} libfoo linux libbar
 | 
				
			||||||
        $ ${COMMAND} --maintainer maintainer-mynickname
 | 
					        $ ${COMMAND} --maintainer tux
 | 
				
			||||||
        $ ${COMMAND} --topic myopic
 | 
					        $ ${COMMAND} --topic myopic
 | 
				
			||||||
        $ ${COMMAND} -j 8 --topic myopic
 | 
					        $ ${COMMAND} -j 8 --topic myopic
 | 
				
			||||||
_EOF_
 | 
					_EOF_
 | 
				
			||||||
@@ -90,7 +91,16 @@ artixpkg_git_clone() {
 | 
				
			|||||||
                TOPIC="${1#*=}"
 | 
					                TOPIC="${1#*=}"
 | 
				
			||||||
                shift
 | 
					                shift
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            --universe)
 | 
					            -a|--agent)
 | 
				
			||||||
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
 | 
					                CONFIGURE_OPTIONS+=("$1" "$2")
 | 
				
			||||||
 | 
					                shift 2
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            --agent=*)
 | 
				
			||||||
 | 
					                CONFIGURE_OPTIONS+=("${1#*=}")
 | 
				
			||||||
 | 
					                shift
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            --all)
 | 
				
			||||||
                CLONE_ALL=1
 | 
					                CLONE_ALL=1
 | 
				
			||||||
                shift
 | 
					                shift
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
@@ -115,24 +125,18 @@ artixpkg_git_clone() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # Query packages of a maintainer
 | 
					    # Query packages of a maintainer
 | 
				
			||||||
    if [[ -n ${MAINTAINER} ]]; then
 | 
					    if [[ -n ${MAINTAINER} ]]; then
 | 
				
			||||||
        stat_busy "Query mantainer packages"
 | 
					        local maint
 | 
				
			||||||
            local maint
 | 
					        maint="maintainer-${MAINTAINER}"
 | 
				
			||||||
            maint="maintainer-${MAINTAINER}"
 | 
					        mapfile -t pkgbases < <(search_topic "${maint}" | yq -P -r '.data | .[].name' | sort)
 | 
				
			||||||
            mapfile -t pkgbases < <(search_topic "${maint}" | yq -P -r '.data | .[].name' | sort)
 | 
					 | 
				
			||||||
        stat_done
 | 
					 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ -n ${TOPIC} ]]; then
 | 
					    if [[ -n ${TOPIC} ]]; then
 | 
				
			||||||
        stat_busy "Query topic packages"
 | 
					        mapfile -t pkgbases < <(search_topic "${TOPIC}" | yq -P -r '.data | .[].name' | sort)
 | 
				
			||||||
            mapfile -t pkgbases < <(search_topic "${TOPIC}" | yq -P -r '.data | .[].name' | sort)
 | 
					 | 
				
			||||||
        stat_done
 | 
					 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Query all released packages
 | 
					    # Query all released packages
 | 
				
			||||||
    if (( CLONE_ALL )); then
 | 
					    if (( CLONE_ALL )); then
 | 
				
			||||||
        stat_busy "Query all packages"
 | 
					        mapfile -t pkgbases < <(list_all_repos | yq -P -r '.[] | .name' | sort)
 | 
				
			||||||
            mapfile -t pkgbases < <(list_all_repos | yq -P -r '.[] | .name' | sort)
 | 
					 | 
				
			||||||
        stat_done
 | 
					 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # parallelization
 | 
					    # parallelization
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,29 +7,42 @@ ARTOOLS_INCLUDE_GIT_CONFIG_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/git.sh
 | 
					 | 
				
			||||||
source "${LIBDIR}"/pkg/db/git.sh
 | 
					 | 
				
			||||||
# shellcheck source=src/lib/pkg/db/migrate.sh
 | 
					 | 
				
			||||||
source "${LIBDIR}"/pkg/db/migrate.sh
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
set -e
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit_ci(){
 | 
				
			||||||
 | 
					    [[ -d .artixlinux ]] || mkdir .artixlinux
 | 
				
			||||||
 | 
					    if [[ ${AGENT} == ${ARTIX_DB[11]} ]]; then
 | 
				
			||||||
 | 
					        printf "@Library('artix-ci@${AGENT}') import org.artixlinux.RepoPackage\n" > "${REPO_CI}"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        printf "@Library('artix-ci') import org.artixlinux.RepoPackage\n" > "${REPO_CI}"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        printf '\n'
 | 
				
			||||||
 | 
					        printf 'PackagePipeline(new RepoPackage(this))\n'
 | 
				
			||||||
 | 
					    } >> "${REPO_CI}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    git add "${REPO_CI}"
 | 
				
			||||||
 | 
					    git commit -m "initial ci commit"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
artixpkg_git_config_usage() {
 | 
					artixpkg_git_config_usage() {
 | 
				
			||||||
    local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
					    local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
    cat <<- _EOF_
 | 
					    cat <<- _EOF_
 | 
				
			||||||
    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
					    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        -t, --topic        Set the maintainer topic via gitea api
 | 
					        -m, --maintainer       Set the maintainer topic via gitea api
 | 
				
			||||||
        -u, --upstream     Add upstream arch remote
 | 
					        -u, --upstream         Add upstream arch remote
 | 
				
			||||||
        --protocol https     Configure remote url to use https
 | 
					        -a, --agent=NAME       Set the CI agent (default: official)
 | 
				
			||||||
        -j, --jobs N       Run up to N jobs in parallel (default: $(nproc))
 | 
					        --protocol https       Configure remote url to use https
 | 
				
			||||||
        -h, --help         Show this help text
 | 
					        -j, --jobs N           Run up to N jobs in parallel (default: $(nproc))
 | 
				
			||||||
 | 
					        -h, --help             Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EXAMPLES
 | 
					    EXAMPLES
 | 
				
			||||||
        $ ${COMMAND} -t libfoo
 | 
					        $ ${COMMAND} --maintainer tux
 | 
				
			||||||
        $ ${COMMAND} -u libfoo
 | 
					        $ ${COMMAND} --upstream libfoo
 | 
				
			||||||
        $ ${COMMAND} *
 | 
					        $ ${COMMAND} *
 | 
				
			||||||
_EOF_
 | 
					_EOF_
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -94,6 +107,8 @@ artixpkg_git_config() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    local SET_TOPIC=0
 | 
					    local SET_TOPIC=0
 | 
				
			||||||
    local UPSTREAM=0
 | 
					    local UPSTREAM=0
 | 
				
			||||||
 | 
					    local AGENT=
 | 
				
			||||||
 | 
					    local CI_ADDED=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # variables
 | 
					    # variables
 | 
				
			||||||
    local -r command=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
					    local -r command=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
@@ -106,7 +121,7 @@ artixpkg_git_config() {
 | 
				
			|||||||
            artixpkg_git_config_usage
 | 
					            artixpkg_git_config_usage
 | 
				
			||||||
            exit 0
 | 
					            exit 0
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
        -t|--topic)
 | 
					        -m|--maintainer)
 | 
				
			||||||
            SET_TOPIC=1
 | 
					            SET_TOPIC=1
 | 
				
			||||||
            shift
 | 
					            shift
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
@@ -114,6 +129,15 @@ artixpkg_git_config() {
 | 
				
			|||||||
            UPSTREAM=1
 | 
					            UPSTREAM=1
 | 
				
			||||||
            shift
 | 
					            shift
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
 | 
					        -a|--agent)
 | 
				
			||||||
 | 
					            (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
 | 
					            AGENT="$2"
 | 
				
			||||||
 | 
					            shift 2
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        --agent=*)
 | 
				
			||||||
 | 
					            AGENT="${1#*=}"
 | 
				
			||||||
 | 
					            shift
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
        --protocol=https)
 | 
					        --protocol=https)
 | 
				
			||||||
            proto_force=1
 | 
					            proto_force=1
 | 
				
			||||||
            shift
 | 
					            shift
 | 
				
			||||||
@@ -201,7 +225,7 @@ artixpkg_git_config() {
 | 
				
			|||||||
    for path in "${paths[@]}"; do
 | 
					    for path in "${paths[@]}"; do
 | 
				
			||||||
        if ! realpath=$(realpath -e "${path}"); then
 | 
					        if ! realpath=$(realpath -e "${path}"); then
 | 
				
			||||||
            error "No such directory: ${path}"
 | 
					            error "No such directory: ${path}"
 | 
				
			||||||
#             continue
 | 
					            continue
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        pkgbase=$(basename "${realpath}")
 | 
					        pkgbase=$(basename "${realpath}")
 | 
				
			||||||
@@ -210,7 +234,7 @@ artixpkg_git_config() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if [[ ! -d "${path}/.git" ]]; then
 | 
					        if [[ ! -d "${path}/.git" ]]; then
 | 
				
			||||||
            error "Not a Git repository: ${path}"
 | 
					            error "Not a Git repository: ${path}"
 | 
				
			||||||
#             continue
 | 
					            continue
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
        ( cd "${path}" || return
 | 
					        ( cd "${path}" || return
 | 
				
			||||||
            git config pull.rebase true
 | 
					            git config pull.rebase true
 | 
				
			||||||
@@ -253,16 +277,20 @@ artixpkg_git_config() {
 | 
				
			|||||||
                fi
 | 
					                fi
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            migrate_to_yaml
 | 
					            if [[ ! -f ${REPO_CI} ]]; then
 | 
				
			||||||
 | 
					 | 
				
			||||||
            if [[ ! -f Jenkinsfile ]]; then
 | 
					 | 
				
			||||||
                msg "Adding ci support ..."
 | 
					                msg "Adding ci support ..."
 | 
				
			||||||
                commit_ci
 | 
					                commit_ci
 | 
				
			||||||
 | 
					                CI_ADDED=1
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if [[ -n ${AGENT} ]] && (( ! CI_ADDED )); then
 | 
				
			||||||
 | 
					                msg "Switching ci support for [%s] ..." "${AGENT}"
 | 
				
			||||||
 | 
					                commit_ci
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if [[ ! -f ${REPO_DB} ]]; then
 | 
					            if [[ ! -f ${REPO_DB} ]]; then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                msg "Adding repo db ..."
 | 
					                msg "Creating repo db ..."
 | 
				
			||||||
                create_repo_db
 | 
					                create_repo_db
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if [[ -f PKGBUILD ]]; then
 | 
					                if [[ -f PKGBUILD ]]; then
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,9 +19,9 @@ artixpkg_git_create_usage() {
 | 
				
			|||||||
    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
					    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        -c, --clone       Clone the Git repository after creation
 | 
					        -c, --clone           Clone the Git repository after creation
 | 
				
			||||||
        -t, --team=NAME   Assign team name [default: world]
 | 
					        -t, --team=NAME       Assign team name [default: world]
 | 
				
			||||||
        -h, --help        Show this help text
 | 
					        -h, --help            Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EXAMPLES
 | 
					    EXAMPLES
 | 
				
			||||||
        $ ${COMMAND} libfoo
 | 
					        $ ${COMMAND} libfoo
 | 
				
			||||||
@@ -34,9 +34,15 @@ artixpkg_git_create() {
 | 
				
			|||||||
    local pkgbase
 | 
					    local pkgbase
 | 
				
			||||||
    local clone=0
 | 
					    local clone=0
 | 
				
			||||||
    local config=0
 | 
					    local config=0
 | 
				
			||||||
    local TEAM='world'
 | 
					    local TEAM="${ARTIX_DB[5]}"
 | 
				
			||||||
 | 
					    local OPTIONS=()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local TEAMS=(system world lib32)
 | 
					    local TEAMS=(
 | 
				
			||||||
 | 
					        "${ARTIX_DB[2]}"
 | 
				
			||||||
 | 
					        "${ARTIX_DB[5]}"
 | 
				
			||||||
 | 
					        "${ARTIX_DB[8]}"
 | 
				
			||||||
 | 
					        "${ARTIX_DB[11]}"
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
    # variables
 | 
					    # variables
 | 
				
			||||||
    local path
 | 
					    local path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -92,17 +98,22 @@ artixpkg_git_create() {
 | 
				
			|||||||
    for pkgbase in "${pkgbases[@]}"; do
 | 
					    for pkgbase in "${pkgbases[@]}"; do
 | 
				
			||||||
        local gitname
 | 
					        local gitname
 | 
				
			||||||
        gitname=$(get_compliant_name "${pkgbase}")
 | 
					        gitname=$(get_compliant_name "${pkgbase}")
 | 
				
			||||||
        if ! create_repo "${gitname}" >/dev/null; then
 | 
					        if [[ -n ${GIT_TOKEN} ]]; then
 | 
				
			||||||
            die "failed to create project: ${pkgbase}"
 | 
					            if ! create_repo "${gitname}" >/dev/null; then
 | 
				
			||||||
 | 
					                die "failed to create project: ${pkgbase}"
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					            if ! add_team_to_repo "${gitname}" "${TEAM}" >/dev/null; then
 | 
				
			||||||
 | 
					                warning "failed to assign team: ${TEAM}"
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					            msg_success "Successfully created ${pkgbase}"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
        if ! add_team_to_repo "${gitname}" "${TEAM}" >/dev/null; then
 | 
					        if [[ ${TEAM} == ${ARTIX_DB[11]} ]]; then
 | 
				
			||||||
            warning "failed to assign team: ${TEAM}"
 | 
					            OPTIONS+=(--agent="${TEAM}")
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
        msg_success "Successfully created ${pkgbase}"
 | 
					 | 
				
			||||||
        if (( clone )); then
 | 
					        if (( clone )); then
 | 
				
			||||||
            artixpkg_git_clone "${pkgbase}"
 | 
					            artixpkg_git_clone "${OPTIONS[@]}" "${pkgbase}"
 | 
				
			||||||
        elif (( config )); then
 | 
					        elif (( config )); then
 | 
				
			||||||
            artixpkg_git_config
 | 
					            artixpkg_git_config "${OPTIONS[@]}"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,9 +5,6 @@
 | 
				
			|||||||
[[ -z ${ARTOOLS_INCLUDE_GIT_PULL_SH:-} ]] || return 0
 | 
					[[ -z ${ARTOOLS_INCLUDE_GIT_PULL_SH:-} ]] || return 0
 | 
				
			||||||
ARTOOLS_INCLUDE_GIT_PULL_SH=1
 | 
					ARTOOLS_INCLUDE_GIT_PULL_SH=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# shellcheck source=src/lib/pkg/git/config.sh
 | 
					 | 
				
			||||||
source "${LIBDIR}"/pkg/git/config.sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
set -e
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -17,18 +14,17 @@ artixpkg_git_pull_usage() {
 | 
				
			|||||||
    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
					    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        -m, --maintainer=NAME  Pull all packages of the named maintainer
 | 
					        -m, --maintainer=NAME      Pull all packages of the named maintainer
 | 
				
			||||||
        -t, --topic=NAME       Pull all packages of the named topic
 | 
					        -t, --topic=NAME           Pull all packages of the named topic
 | 
				
			||||||
        -j, --jobs N           Run up to N jobs in parallel (default: $(nproc))
 | 
					        -j, --jobs N               Run up to N jobs in parallel (default: $(nproc))
 | 
				
			||||||
        --universe             Pull all existing packages
 | 
					        --all                      Pull all existing packages
 | 
				
			||||||
        --fetch                Fetch only
 | 
					        -h, --help                 Show this help text
 | 
				
			||||||
        -h, --help             Show this help text
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EXAMPLES
 | 
					    EXAMPLES
 | 
				
			||||||
        $ ${COMMAND} libfoo linux libbar
 | 
					        $ ${COMMAND} libfoo linux libbar
 | 
				
			||||||
        $ ${COMMAND} --maintainer maintainer-mynickname
 | 
					        $ ${COMMAND} --maintainer tux
 | 
				
			||||||
        $ ${COMMAND} --topic myopic
 | 
					        $ ${COMMAND} --topic mytopic
 | 
				
			||||||
        $ ${COMMAND} -j 8 --topic myopic
 | 
					        $ ${COMMAND} -j 8 --topic mytopic
 | 
				
			||||||
_EOF_
 | 
					_EOF_
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -42,7 +38,6 @@ artixpkg_git_pull() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # options
 | 
					    # options
 | 
				
			||||||
    local PULL_ALL=0
 | 
					    local PULL_ALL=0
 | 
				
			||||||
    local FETCH=0
 | 
					 | 
				
			||||||
    local MAINTAINER=
 | 
					    local MAINTAINER=
 | 
				
			||||||
    local TOPIC=
 | 
					    local TOPIC=
 | 
				
			||||||
    local CONFIGURE_OPTIONS=()
 | 
					    local CONFIGURE_OPTIONS=()
 | 
				
			||||||
@@ -75,14 +70,10 @@ artixpkg_git_pull() {
 | 
				
			|||||||
                TOPIC="${1#*=}"
 | 
					                TOPIC="${1#*=}"
 | 
				
			||||||
                shift
 | 
					                shift
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            --universe)
 | 
					            --all)
 | 
				
			||||||
                PULL_ALL=1
 | 
					                PULL_ALL=1
 | 
				
			||||||
                shift
 | 
					                shift
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
            --fetch)
 | 
					 | 
				
			||||||
                FETCH=1
 | 
					 | 
				
			||||||
                shift
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
            -j|--jobs)
 | 
					            -j|--jobs)
 | 
				
			||||||
                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
                jobs=$2
 | 
					                jobs=$2
 | 
				
			||||||
@@ -104,24 +95,18 @@ artixpkg_git_pull() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # Query packages of a maintainer
 | 
					    # Query packages of a maintainer
 | 
				
			||||||
    if [[ -n ${MAINTAINER} ]]; then
 | 
					    if [[ -n ${MAINTAINER} ]]; then
 | 
				
			||||||
        stat_busy "Query mantainer packages"
 | 
					        local maint
 | 
				
			||||||
            local maint
 | 
					        maint="maintainer-${MAINTAINER}"
 | 
				
			||||||
            maint="maintainer-${MAINTAINER}"
 | 
					        mapfile -t pkgbases < <(search_topic "${maint}" | yq -P -r '.data | .[].name' | sort)
 | 
				
			||||||
            mapfile -t pkgbases < <(search_topic "${maint}" | yq -P -r '.data | .[].name' | sort)
 | 
					 | 
				
			||||||
        stat_done
 | 
					 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ -n ${TOPIC} ]]; then
 | 
					    if [[ -n ${TOPIC} ]]; then
 | 
				
			||||||
        stat_busy "Query topic packages"
 | 
					        mapfile -t pkgbases < <(search_topic "${TOPIC}" | yq -P -r '.data | .[].name' | sort)
 | 
				
			||||||
            mapfile -t pkgbases < <(search_topic "${TOPIC}" | yq -P -r '.data | .[].name' | sort)
 | 
					 | 
				
			||||||
        stat_done
 | 
					 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Query all released packages
 | 
					    # Query all released packages
 | 
				
			||||||
    if (( PULL_ALL )); then
 | 
					    if (( PULL_ALL )); then
 | 
				
			||||||
        stat_busy "Query all packages"
 | 
					        mapfile -t pkgbases < <(list_all_repos | yq -P -r '.[] | .name' | sort)
 | 
				
			||||||
            mapfile -t pkgbases < <(list_all_repos | yq -P -r '.[] | .name' | sort)
 | 
					 | 
				
			||||||
        stat_done
 | 
					 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # parallelization
 | 
					    # parallelization
 | 
				
			||||||
@@ -140,17 +125,12 @@ artixpkg_git_pull() {
 | 
				
			|||||||
    for pkgbase in "${pkgbases[@]}"; do
 | 
					    for pkgbase in "${pkgbases[@]}"; do
 | 
				
			||||||
        if [[ -d ${pkgbase} ]]; then
 | 
					        if [[ -d ${pkgbase} ]]; then
 | 
				
			||||||
            ( cd ${pkgbase} || return
 | 
					            ( cd ${pkgbase} || return
 | 
				
			||||||
                if (( FETCH )); then
 | 
					
 | 
				
			||||||
                    msg "Fetching ${pkgbase} ..."
 | 
					                msg "Pulling ${pkgbase} ..."
 | 
				
			||||||
                    if ! git fetch origin; then
 | 
					                if ! git pull origin master; then
 | 
				
			||||||
                        die 'failed to fetch %s' "${pkgbase}"
 | 
					                    die 'failed to pull %s' "${pkgbase}"
 | 
				
			||||||
                    fi
 | 
					 | 
				
			||||||
                else
 | 
					 | 
				
			||||||
                    msg "Pulling ${pkgbase} ..."
 | 
					 | 
				
			||||||
                    if ! git pull origin master; then
 | 
					 | 
				
			||||||
                        die 'failed to pull %s' "${pkgbase}"
 | 
					 | 
				
			||||||
                    fi
 | 
					 | 
				
			||||||
                fi
 | 
					                fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
            warning "Skip pulling ${pkgbase}: Directory does not exist"
 | 
					            warning "Skip pulling ${pkgbase}: Directory does not exist"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										128
									
								
								src/lib/pkg/git/push.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								src/lib/pkg/git/push.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,128 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[ -z ${ARTOOLS_INCLUDE_GIT_PUSH_SH:-} ]] || return 0
 | 
				
			||||||
 | 
					ARTOOLS_INCLUDE_GIT_PUSH_SH=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_git_push_usage() {
 | 
				
			||||||
 | 
					    local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
 | 
					    cat <<- _EOF_
 | 
				
			||||||
 | 
					    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OPTIONS
 | 
				
			||||||
 | 
					        -m, --maintainer=NAME      Push all packages of the named maintainer
 | 
				
			||||||
 | 
					        -t, --topic=NAME           Push all packages of the named topic
 | 
				
			||||||
 | 
					        -j, --jobs N               Run up to N jobs in parallel (default: $(nproc))
 | 
				
			||||||
 | 
					        -h, --help                 Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EXAMPLES
 | 
				
			||||||
 | 
					        $ ${COMMAND} libfoo linux libbar
 | 
				
			||||||
 | 
					        $ ${COMMAND} --maintainer tux
 | 
				
			||||||
 | 
					        $ ${COMMAND} --topic mytopic
 | 
				
			||||||
 | 
					        $ ${COMMAND} -j 8 --topic mytopic
 | 
				
			||||||
 | 
					_EOF_
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_git_push() {
 | 
				
			||||||
 | 
					    if (( $# < 1 )); then
 | 
				
			||||||
 | 
					        artixpkg_git_push_usage
 | 
				
			||||||
 | 
					        exit 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # options
 | 
				
			||||||
 | 
					    local MAINTAINER=
 | 
				
			||||||
 | 
					    local TOPIC=
 | 
				
			||||||
 | 
					    local CONFIGURE_OPTIONS=()
 | 
				
			||||||
 | 
					    local jobs=
 | 
				
			||||||
 | 
					    jobs=$(nproc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local command=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while (( $# )); do
 | 
				
			||||||
 | 
					        case $1 in
 | 
				
			||||||
 | 
					            -h|--help)
 | 
				
			||||||
 | 
					                artixpkg_git_push_usage
 | 
				
			||||||
 | 
					                exit 0
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -m|--maintainer)
 | 
				
			||||||
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
 | 
					                MAINTAINER="$2"
 | 
				
			||||||
 | 
					                shift 2
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            --maintainer=*)
 | 
				
			||||||
 | 
					                MAINTAINER="${1#*=}"
 | 
				
			||||||
 | 
					                shift
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -t|--topic)
 | 
				
			||||||
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
 | 
					                TOPIC="$2"
 | 
				
			||||||
 | 
					                shift 2
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            --topic=*)
 | 
				
			||||||
 | 
					                TOPIC="${1#*=}"
 | 
				
			||||||
 | 
					                shift
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -j|--jobs)
 | 
				
			||||||
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
 | 
					                jobs=$2
 | 
				
			||||||
 | 
					                shift 2
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            --)
 | 
				
			||||||
 | 
					                shift
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -*)
 | 
				
			||||||
 | 
					                die "invalid argument: %s" "$1"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            *)
 | 
				
			||||||
 | 
					                pkgbases=("$@")
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Query packages of a maintainer
 | 
				
			||||||
 | 
					    if [[ -n ${MAINTAINER} ]]; then
 | 
				
			||||||
 | 
					        local maint
 | 
				
			||||||
 | 
					        maint="maintainer-${MAINTAINER}"
 | 
				
			||||||
 | 
					        mapfile -t pkgbases < <(search_topic "${maint}" | yq -P -r '.data | .[].name' | sort)
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ -n ${TOPIC} ]]; then
 | 
				
			||||||
 | 
					        mapfile -t pkgbases < <(search_topic "${TOPIC}" | yq -P -r '.data | .[].name' | sort)
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # parallelization
 | 
				
			||||||
 | 
					    if [[ ${jobs} != 1 ]] && (( ${#pkgbases[@]} > 1 )); then
 | 
				
			||||||
 | 
					        # force colors in parallel if parent process is colorized
 | 
				
			||||||
 | 
					        if [[ -n ${BOLD} ]]; then
 | 
				
			||||||
 | 
					            export ARTOOLS_COLOR=always
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        if ! parallel --bar --jobs "${jobs}" "${command}" ::: "${pkgbases[@]}"; then
 | 
				
			||||||
 | 
					            die 'Failed to push some packages, please check the output'
 | 
				
			||||||
 | 
					            exit 1
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        exit 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for pkgbase in "${pkgbases[@]}"; do
 | 
				
			||||||
 | 
					        if [[ -d ${pkgbase} ]]; then
 | 
				
			||||||
 | 
					            ( cd ${pkgbase} || return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                msg "Pushing ${pkgbase} ..."
 | 
				
			||||||
 | 
					                if ! git push origin master; then
 | 
				
			||||||
 | 
					                    die 'failed to push %s' "${pkgbase}"
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            warning "Skip pushing ${pkgbase}: Directory does not exist"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -11,17 +11,44 @@ source "${LIBDIR}"/pkg/db/db.sh
 | 
				
			|||||||
set -e
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					check_pkgbuild_validity() {
 | 
				
			||||||
 | 
					    # shellcheck source=contrib/makepkg/PKGBUILD.proto
 | 
				
			||||||
 | 
					    . ./PKGBUILD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # skip when there are no sources available
 | 
				
			||||||
 | 
					    if (( ! ${#source[@]} )); then
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # validate sources hash algo is at least > sha1
 | 
				
			||||||
 | 
					    local bad_algos=("cksums" "md5sums" "sha1sums")
 | 
				
			||||||
 | 
					    local good_hash_algo=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # from makepkg libmakepkg/util/schema.sh
 | 
				
			||||||
 | 
					    for integ in "${known_hash_algos[@]}"; do
 | 
				
			||||||
 | 
					        local sumname="${integ}sums"
 | 
				
			||||||
 | 
					        if [[ -n ${!sumname} ]] && ! in_array "${sumname}" "${bad_algos[@]}"; then
 | 
				
			||||||
 | 
					            good_hash_algo=true
 | 
				
			||||||
 | 
					            break
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ! $good_hash_algo; then
 | 
				
			||||||
 | 
					        die "PKGBUILD lacks a secure cryptographic checksum, insecure algorithms: ${bad_algos[*]}"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
artixpkg_repo_usage() {
 | 
					artixpkg_repo_usage() {
 | 
				
			||||||
    local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
					    local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
    cat <<- _EOF_
 | 
					    cat <<- _EOF_
 | 
				
			||||||
    Usage: ${COMMAND} [COMMAND] [OPTIONS]
 | 
					    Usage: ${COMMAND} [COMMAND] [OPTIONS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    COMMANDS
 | 
					    COMMANDS
 | 
				
			||||||
        add          Add built pkgbase to repo
 | 
					        add            Add built pkgbase to repo
 | 
				
			||||||
        move         Move built pkgbase between repos
 | 
					        move           Move built pkgbase between repos
 | 
				
			||||||
        remove       Remove built pkgbase from repo
 | 
					        remove         Remove built pkgbase from repo
 | 
				
			||||||
        import       Import latest tag from arch upstream
 | 
					        import         Import latest tag from arch upstream
 | 
				
			||||||
        show         Show the pkgbase's repo db
 | 
					        show           Show the pkgbase's repo db
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        -h, --help     Show this help text
 | 
					        -h, --help     Show this help text
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,9 +5,6 @@
 | 
				
			|||||||
[[ -z ${ARTOOLS_INCLUDE_REPO_ADD_SH:-} ]] || return 0
 | 
					[[ -z ${ARTOOLS_INCLUDE_REPO_ADD_SH:-} ]] || return 0
 | 
				
			||||||
ARTOOLS_INCLUDE_REPO_ADD_SH=1
 | 
					ARTOOLS_INCLUDE_REPO_ADD_SH=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# shellcheck source=src/lib/pkg/db/git.sh
 | 
					 | 
				
			||||||
source "${LIBDIR}"/pkg/db/git.sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
set -e
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -17,10 +14,10 @@ artixpkg_repo_add_usage() {
 | 
				
			|||||||
    Usage: ${COMMAND} [OPTIONS] [DEST_REPO] [PKGBASE]...
 | 
					    Usage: ${COMMAND} [OPTIONS] [DEST_REPO] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        -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
 | 
				
			||||||
        -h, --help         Show this help text
 | 
					        -h, --help             Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EXAMPLES
 | 
					    EXAMPLES
 | 
				
			||||||
        $ ${COMMAND} world-gremlins libfoo
 | 
					        $ ${COMMAND} world-gremlins libfoo
 | 
				
			||||||
@@ -72,6 +69,7 @@ artixpkg_repo_add() {
 | 
				
			|||||||
    done
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DEST="$1"
 | 
					    DEST="$1"
 | 
				
			||||||
 | 
					    shift
 | 
				
			||||||
    pkgbases+=("$@")
 | 
					    pkgbases+=("$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then
 | 
					    if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then
 | 
				
			||||||
@@ -88,10 +86,6 @@ artixpkg_repo_add() {
 | 
				
			|||||||
            fi
 | 
					            fi
 | 
				
			||||||
            ( cd "${pkgbase}" || return
 | 
					            ( cd "${pkgbase}" || return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#                 if has_changeset; then
 | 
					 | 
				
			||||||
#                     die "Remote changes detected! Please pull (%s)" "${pkgbase}"
 | 
					 | 
				
			||||||
#                 fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if [[ ! -f PKGBUILD ]]; then
 | 
					                if [[ ! -f PKGBUILD ]]; then
 | 
				
			||||||
                    die "No PKGBUILD found in (%s)" "${pkgbase}"
 | 
					                    die "No PKGBUILD found in (%s)" "${pkgbase}"
 | 
				
			||||||
                fi
 | 
					                fi
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,19 +17,16 @@ patch_pkgbase(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    case "${name}" in
 | 
					    case "${name}" in
 | 
				
			||||||
        glibc)
 | 
					        glibc)
 | 
				
			||||||
            msg "Patching %s" "${name}"
 | 
					 | 
				
			||||||
            sed -e 's|{locale,systemd/system,tmpfiles.d}|{locale,tmpfiles.d}|' \
 | 
					            sed -e 's|{locale,systemd/system,tmpfiles.d}|{locale,tmpfiles.d}|' \
 | 
				
			||||||
                -e '/nscd.service/d' \
 | 
					                -e '/nscd.service/d' \
 | 
				
			||||||
                -i "${pkgbuild}"
 | 
					                -i "${pkgbuild}"
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
        linux|linux-lts)
 | 
					        linux|linux-lts|linux-zen|linux-hardened|linux-rt|linux-rt-lts)
 | 
				
			||||||
            msg "Patching %s" "${name}"
 | 
					 | 
				
			||||||
            sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i "${pkgbuild}"
 | 
					            sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i "${pkgbuild}"
 | 
				
			||||||
            sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
 | 
					            sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
 | 
				
			||||||
                -i config
 | 
					                -i config
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
        gstreamer|gst-plugins-*|licenses)
 | 
					        gstreamer|gst-plugins-*|licenses)
 | 
				
			||||||
            msg "Patching %s" "${name}"
 | 
					 | 
				
			||||||
            sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \
 | 
					            sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \
 | 
				
			||||||
                -e 's|(Arch Linux)|(Artix Linux)|' \
 | 
					                -e 's|(Arch Linux)|(Artix Linux)|' \
 | 
				
			||||||
                -i "${pkgbuild}"
 | 
					                -i "${pkgbuild}"
 | 
				
			||||||
@@ -44,12 +41,14 @@ artixpkg_repo_import_usage() {
 | 
				
			|||||||
    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
					    Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        --switch 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
 | 
				
			||||||
        -h, --help         Show this help text
 | 
					        -h, --help         Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EXAMPLES
 | 
					    EXAMPLES
 | 
				
			||||||
        $ ${COMMAND} libfoo
 | 
					        $ ${COMMAND} libfoo
 | 
				
			||||||
        $ ${COMMAND} libfoo --switch TAG
 | 
					        $ ${COMMAND} --tag TAG libfoo
 | 
				
			||||||
 | 
					        $ ${COMMAND} --tag TAG --del libfoo
 | 
				
			||||||
_EOF_
 | 
					_EOF_
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -64,25 +63,44 @@ artixpkg_repo_import() {
 | 
				
			|||||||
    local pkgbase
 | 
					    local pkgbase
 | 
				
			||||||
    local TAG
 | 
					    local TAG
 | 
				
			||||||
    local rsync_args=()
 | 
					    local rsync_args=()
 | 
				
			||||||
    rsync_args+=(-aWxvci --progress --delete-before --no-R --no-implied-dirs)
 | 
					    rsync_args+=(
 | 
				
			||||||
    rsync_args+=(--exclude '.git'  --exclude 'Jenkinsfile' --exclude '.gitignore' --exclude 'README.md')
 | 
					        -axcihW
 | 
				
			||||||
 | 
					        --no-R
 | 
				
			||||||
 | 
					        --no-implied-dirs
 | 
				
			||||||
 | 
					        --exclude '.artixlinux'
 | 
				
			||||||
 | 
					        --exclude '.git'
 | 
				
			||||||
 | 
					        --exclude '.gitignore'
 | 
				
			||||||
 | 
					        --exclude 'README.md'
 | 
				
			||||||
 | 
					        --exclude '*.service'
 | 
				
			||||||
 | 
					        --exclude '*.timer'
 | 
				
			||||||
 | 
					        --exclude '*.socket'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while (( $# )); do
 | 
					    while (( $# )); do
 | 
				
			||||||
        case $1 in
 | 
					        case $1 in
 | 
				
			||||||
        --switch=*)
 | 
					            --tag)
 | 
				
			||||||
            TAG="${1#*=}"
 | 
					                (( $# <= 1 )) && die "missing argument for %s" "$1"
 | 
				
			||||||
            shift
 | 
					                TAG="$2"
 | 
				
			||||||
        ;;
 | 
					                shift 2
 | 
				
			||||||
        -h|--help)
 | 
					            ;;
 | 
				
			||||||
            artixpkg_repo_import_usage
 | 
					            --tag=*)
 | 
				
			||||||
            exit 0
 | 
					                TAG="${1#*=}"
 | 
				
			||||||
        ;;
 | 
					                shift
 | 
				
			||||||
        -*)
 | 
					            ;;
 | 
				
			||||||
            die "invalid argument: %s" "$1"
 | 
					            --del)
 | 
				
			||||||
        ;;
 | 
					                rsync_args+=(--delete-before)
 | 
				
			||||||
        *)
 | 
					                shift
 | 
				
			||||||
            break
 | 
					            ;;
 | 
				
			||||||
        ;;
 | 
					            -h|--help)
 | 
				
			||||||
 | 
					                artixpkg_repo_import_usage
 | 
				
			||||||
 | 
					                exit 0
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -*)
 | 
				
			||||||
 | 
					                die "invalid argument: %s" "$1"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            *)
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
        esac
 | 
					        esac
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -98,10 +116,6 @@ artixpkg_repo_import() {
 | 
				
			|||||||
            fi
 | 
					            fi
 | 
				
			||||||
            ( cd "${pkgbase}" || return
 | 
					            ( cd "${pkgbase}" || return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#                if has_changeset; then
 | 
					 | 
				
			||||||
#                     die "Remote changes detected! Please pull (%s)" "${pkgbase}"
 | 
					 | 
				
			||||||
#                 fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                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}/${pkgbase}".git
 | 
				
			||||||
@@ -129,11 +143,11 @@ artixpkg_repo_import() {
 | 
				
			|||||||
                git checkout master &>/dev/null
 | 
					                git checkout master &>/dev/null
 | 
				
			||||||
                git branch -D "${version}" &>/dev/null
 | 
					                git branch -D "${version}" &>/dev/null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                rsync "${rsync_args[@]}" "${temp}"/ "$(pwd)"/ &>/dev/null
 | 
					                stat_done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                rsync "${rsync_args[@]}" "${temp}"/ "$(pwd)"/ #&>/dev/null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                patch_pkgbase "${pkgbase}"
 | 
					                patch_pkgbase "${pkgbase}"
 | 
				
			||||||
 | 
					 | 
				
			||||||
                stat_done
 | 
					 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,9 +5,6 @@
 | 
				
			|||||||
[[ -z ${ARTOOLS_INCLUDE_REPO_MOVE_SH:-} ]] || return 0
 | 
					[[ -z ${ARTOOLS_INCLUDE_REPO_MOVE_SH:-} ]] || return 0
 | 
				
			||||||
ARTOOLS_INCLUDE_REPO_MOVE_SH=1
 | 
					ARTOOLS_INCLUDE_REPO_MOVE_SH=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# shellcheck source=src/lib/pkg/db/git.sh
 | 
					 | 
				
			||||||
source "${LIBDIR}"/pkg/db/git.sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
set -e
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -83,10 +80,6 @@ artixpkg_repo_move() {
 | 
				
			|||||||
            fi
 | 
					            fi
 | 
				
			||||||
            ( cd "${pkgbase}" || return
 | 
					            ( cd "${pkgbase}" || return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#                 if has_changeset; then
 | 
					 | 
				
			||||||
#                     die "Remote changes detected! Please pull (%s)" "${pkgbase}"
 | 
					 | 
				
			||||||
#                 fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if [[ ! -f PKGBUILD ]]; then
 | 
					                if [[ ! -f PKGBUILD ]]; then
 | 
				
			||||||
                    die "No PKGBUILD found in (%s)" "${pkgbase}"
 | 
					                    die "No PKGBUILD found in (%s)" "${pkgbase}"
 | 
				
			||||||
                fi
 | 
					                fi
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,9 +5,6 @@
 | 
				
			|||||||
[[ -z ${ARTOOLS_INCLUDE_REPO_REMOVE_SH:-} ]] || return 0
 | 
					[[ -z ${ARTOOLS_INCLUDE_REPO_REMOVE_SH:-} ]] || return 0
 | 
				
			||||||
ARTOOLS_INCLUDE_REPO_REMOVE_SH=1
 | 
					ARTOOLS_INCLUDE_REPO_REMOVE_SH=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# shellcheck source=src/lib/pkg/db/git.sh
 | 
					 | 
				
			||||||
source "${LIBDIR}"/pkg/db/git.sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
set -e
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -59,6 +56,7 @@ artixpkg_repo_remove() {
 | 
				
			|||||||
    done
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DEST="$1"
 | 
					    DEST="$1"
 | 
				
			||||||
 | 
					    shift
 | 
				
			||||||
    pkgbases=("$@")
 | 
					    pkgbases=("$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then
 | 
					    if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then
 | 
				
			||||||
@@ -75,10 +73,6 @@ artixpkg_repo_remove() {
 | 
				
			|||||||
            fi
 | 
					            fi
 | 
				
			||||||
            ( cd "${pkgbase}" || return
 | 
					            ( cd "${pkgbase}" || return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#                 if has_changeset; then
 | 
					 | 
				
			||||||
#                     die "Remote changes detected! Please pull (%s)" "${pkgbase}"
 | 
					 | 
				
			||||||
#                 fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if [[ ! -f PKGBUILD ]]; then
 | 
					                if [[ ! -f PKGBUILD ]]; then
 | 
				
			||||||
                    die "No PKGBUILD found in (%s)" "${pkgbase}"
 | 
					                    die "No PKGBUILD found in (%s)" "${pkgbase}"
 | 
				
			||||||
                fi
 | 
					                fi
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										115
									
								
								src/lib/pkg/repo/show.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								src/lib/pkg/repo/show.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,115 @@
 | 
				
			|||||||
 | 
					#!/hint/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[ -z ${ARTOOLS_INCLUDE_REPO_SHOW_SH:-} ]] || return 0
 | 
				
			||||||
 | 
					ARTOOLS_INCLUDE_REPO_SHOW_SH=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					has_changeset(){
 | 
				
			||||||
 | 
					    git fetch origin &>/dev/null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ $(git rev-parse HEAD) != $(git rev-parse @{u}) ]]; then
 | 
				
			||||||
 | 
					        msg2 "changes: yes"
 | 
				
			||||||
 | 
					        git status -sb
 | 
				
			||||||
 | 
					        return 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    msg2 "changes: no"
 | 
				
			||||||
 | 
					    return 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_repo_show_usage() {
 | 
				
			||||||
 | 
					    local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
 | 
					    cat <<- _EOF_
 | 
				
			||||||
 | 
					    Usage: ${COMMAND} [OPTIONS] [DEST_REPO] [PKGBASE]...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OPTIONS
 | 
				
			||||||
 | 
					        -b, --base         Show srcinfo base
 | 
				
			||||||
 | 
					        -p, --pkgs         Show srcinfo pkgs
 | 
				
			||||||
 | 
					        -h, --help         Show this help text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EXAMPLES
 | 
				
			||||||
 | 
					        $ ${COMMAND} libfoo
 | 
				
			||||||
 | 
					        $ ${COMMAND} -b libfoo
 | 
				
			||||||
 | 
					        $ ${COMMAND} -p libfoo
 | 
				
			||||||
 | 
					_EOF_
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_repo_show() {
 | 
				
			||||||
 | 
					    if (( $# < 1 )); then
 | 
				
			||||||
 | 
					        artixpkg_repo_show_usage
 | 
				
			||||||
 | 
					        exit 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # options
 | 
				
			||||||
 | 
					    local pkgbases=()
 | 
				
			||||||
 | 
					    local pkgbase
 | 
				
			||||||
 | 
					    local SRC_BASE=0
 | 
				
			||||||
 | 
					    local SRC_PKGS=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while (( $# )); do
 | 
				
			||||||
 | 
					        case $1 in
 | 
				
			||||||
 | 
					            -h|--help)
 | 
				
			||||||
 | 
					                artixpkg_repo_show_usage
 | 
				
			||||||
 | 
					                exit 0
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -b|--base)
 | 
				
			||||||
 | 
					                SRC_BASE=1
 | 
				
			||||||
 | 
					                shift
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -p|--pkgs)
 | 
				
			||||||
 | 
					                SRC_PKGS=1
 | 
				
			||||||
 | 
					                shift
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            -*)
 | 
				
			||||||
 | 
					                die "invalid argument: %s" "$1"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            *)
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pkgbases=("$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for pkgbase in "${pkgbases[@]}"; do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if [[ -d "${pkgbase}" ]];then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if [[ ! -d "${pkgbase}/.git" ]]; then
 | 
				
			||||||
 | 
					                error "Not a Git repository: ${pkgbase}"
 | 
				
			||||||
 | 
					                continue
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					            ( cd "${pkgbase}" || return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                msg "Checking origin for changes"
 | 
				
			||||||
 | 
					                if has_changeset; then
 | 
				
			||||||
 | 
					                    warning "Remote changes detected! Please update (%s)" "${pkgbase}"
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if [[ ! -f PKGBUILD ]]; then
 | 
				
			||||||
 | 
					                    die "No PKGBUILD found in (%s)" "${pkgbase}"
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                msg "Querying ${pkgbase} ..."
 | 
				
			||||||
 | 
					                if ! show_db; then
 | 
				
			||||||
 | 
					                    warning "Could not query ${REPO_DB}"
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (( SRC_BASE )); then
 | 
				
			||||||
 | 
					                    msg "Showing srcinfo base ..."
 | 
				
			||||||
 | 
					                    show_srcinfo_base
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (( SRC_PKGS )); then
 | 
				
			||||||
 | 
					                    msg "Showing srcinfo pkgs ..."
 | 
				
			||||||
 | 
					                    show_srcinfo_pkgs
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										43
									
								
								src/lib/pkg/version/version.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								src/lib/pkg/version/version.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
				
			|||||||
 | 
					#!/hint/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[ -z ${ARTOOLS_INCLUDE_VERSION_SH:-} ]] || return 0
 | 
				
			||||||
 | 
					ARTOOLS_INCLUDE_VERSION_SH=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_version_usage() {
 | 
				
			||||||
 | 
					    COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
				
			||||||
 | 
					    cat <<- _EOF_
 | 
				
			||||||
 | 
					    Usage: ${COMMAND} [OPTIONS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Shows the current version information of artixpkg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OPTIONS
 | 
				
			||||||
 | 
					        -h, --help    Show this help text
 | 
				
			||||||
 | 
					_EOF_
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_version_print() {
 | 
				
			||||||
 | 
					    cat <<- _EOF_
 | 
				
			||||||
 | 
					    artixpkg @buildtoolver@
 | 
				
			||||||
 | 
					_EOF_
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					artixpkg_version() {
 | 
				
			||||||
 | 
					    while (( $# )); do
 | 
				
			||||||
 | 
					        case $1 in
 | 
				
			||||||
 | 
					            -h|--help)
 | 
				
			||||||
 | 
					                artixpkg_version_usage
 | 
				
			||||||
 | 
					                exit 0
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					            *)
 | 
				
			||||||
 | 
					                die "invalid argument: %s" "$1"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    artixpkg_version_print
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -22,6 +22,8 @@ usage() {
 | 
				
			|||||||
    COMMANDS
 | 
					    COMMANDS
 | 
				
			||||||
        repo      Pacman database modification for packge update, move etc
 | 
					        repo      Pacman database modification for packge update, move etc
 | 
				
			||||||
        git       Manage Git packaging repositories and their configuration
 | 
					        git       Manage Git packaging repositories and their configuration
 | 
				
			||||||
 | 
					        admin     Managegement of topics and obsolete repos
 | 
				
			||||||
 | 
					        version   Show artixpkg version information
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OPTIONS
 | 
					    OPTIONS
 | 
				
			||||||
        -h, --help     Show this help text
 | 
					        -h, --help     Show this help text
 | 
				
			||||||
@@ -67,6 +69,22 @@ while (( $# )); do
 | 
				
			|||||||
        artixpkg_git "$@"
 | 
					        artixpkg_git "$@"
 | 
				
			||||||
        exit 0
 | 
					        exit 0
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
 | 
					    admin)
 | 
				
			||||||
 | 
					        _ARTOOLS_COMMAND+=" $1"
 | 
				
			||||||
 | 
					        shift
 | 
				
			||||||
 | 
					        # shellcheck source=src/lib/pkg/admin.sh
 | 
				
			||||||
 | 
					        source "${LIBDIR}"/pkg/admin.sh
 | 
				
			||||||
 | 
					        artixpkg_admin "$@"
 | 
				
			||||||
 | 
					        exit 0
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					    version|--version|-V)
 | 
				
			||||||
 | 
					        _ARTOOLS_COMMAND+=" $1"
 | 
				
			||||||
 | 
					        shift
 | 
				
			||||||
 | 
					        # shellcheck source=src/lib/pkg/version/version.sh
 | 
				
			||||||
 | 
					        source "${LIBDIR}"/pkg/version/version.sh
 | 
				
			||||||
 | 
					        artixpkg_version "$@"
 | 
				
			||||||
 | 
					        exit 0
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
    *)
 | 
					    *)
 | 
				
			||||||
        die "invalid command: %s" "$1"
 | 
					        die "invalid command: %s" "$1"
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,22 +16,27 @@ source "${LIBDIR}"/base/chroot.sh
 | 
				
			|||||||
create_first=false
 | 
					create_first=false
 | 
				
			||||||
rebuild=false
 | 
					rebuild=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mkchrootpkg_args=(-c -n)
 | 
					mkchrootpkg_args=(-c)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cmd=${0##*/}
 | 
					base_packages=('base-devel')
 | 
				
			||||||
repo=${cmd#*-}
 | 
					 | 
				
			||||||
base_devel=('base-devel')
 | 
					 | 
				
			||||||
chroots_pkg="${CHROOTS_DIR}/buildpkg"
 | 
					chroots_pkg="${CHROOTS_DIR}/buildpkg"
 | 
				
			||||||
arch=$(uname -m)
 | 
					
 | 
				
			||||||
 | 
					arch=${ARCH}
 | 
				
			||||||
 | 
					repo=${REPO}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
usage() {
 | 
					usage() {
 | 
				
			||||||
    printf 'Usage: %s [options] -- [mkchrootpkg_args]\n' "${0##*/}"
 | 
					    printf 'Usage: %s [options] -- [mkchrootpkg_args]\n' "${0##*/}"
 | 
				
			||||||
    printf '    -r <dir>           Create chroots in this directory\n'
 | 
					    printf '    -r <dir>           Create chroots in this directory\n'
 | 
				
			||||||
    printf '    -d <dir>           Destination repo chroot\n'
 | 
					    printf '                       [default: %s]\n' "${chroots_pkg}"
 | 
				
			||||||
 | 
					    printf '    -d <dest>          Destination repo chroot\n'
 | 
				
			||||||
 | 
					    printf '                       [default: %s]\n' "${repo}"
 | 
				
			||||||
 | 
					    printf '    -a <arch>          Build arch chroot\n'
 | 
				
			||||||
 | 
					    printf '                       [default: %s]\n' "${arch}"
 | 
				
			||||||
    printf '    -c                 Recreate the chroot before building\n'
 | 
					    printf '    -c                 Recreate the chroot before building\n'
 | 
				
			||||||
    printf '    -m                 Major rebuild\n'
 | 
					    printf '    -m                 Major rebuild\n'
 | 
				
			||||||
    printf '    -N                 Disable check() function\n'
 | 
					    printf '    -N                 Disable check() function\n'
 | 
				
			||||||
    printf '    -C                 Run checkpkg after built\n'
 | 
					    printf '    -C                 Run checkpkg after build\n'
 | 
				
			||||||
 | 
					    printf '    -n                 Run namcap after build\n'
 | 
				
			||||||
    printf '    -h                 This help\n'
 | 
					    printf '    -h                 This help\n'
 | 
				
			||||||
    printf '\n'
 | 
					    printf '\n'
 | 
				
			||||||
    printf 'Default mkchrootpkg_args args: %s\n' "${mkchrootpkg_args[*]}"
 | 
					    printf 'Default mkchrootpkg_args args: %s\n' "${mkchrootpkg_args[*]}"
 | 
				
			||||||
@@ -39,35 +44,41 @@ usage() {
 | 
				
			|||||||
    exit "$1"
 | 
					    exit "$1"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opts='hcCNmr:d:'
 | 
					opts='hcCNmnr:d:a:'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts "${opts}" arg; do
 | 
					while getopts "${opts}" arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
        r) chroots_pkg="$OPTARG" ;;
 | 
					        r) chroots_pkg="$OPTARG" ;;
 | 
				
			||||||
        d) repo="$OPTARG" ;;
 | 
					        d) repo="$OPTARG" ;;
 | 
				
			||||||
 | 
					        a) arch="$OPTARG" ;;
 | 
				
			||||||
        c) create_first=true ;;
 | 
					        c) create_first=true ;;
 | 
				
			||||||
        m) rebuild=true ;;
 | 
					        m) rebuild=true; repo=${repo%-*} ;;
 | 
				
			||||||
        C) mkchrootpkg_args+=(-C) ;;
 | 
					        C) mkchrootpkg_args+=(-C) ;;
 | 
				
			||||||
        N) mkchrootpkg_args+=(-N) ;;
 | 
					        N) mkchrootpkg_args+=(-N) ;;
 | 
				
			||||||
 | 
					        n) mkchrootpkg_args+=(-n) ;;
 | 
				
			||||||
        h|?) usage 0 ;;
 | 
					        h|?) usage 0 ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ${rebuild};then
 | 
					if [[ "${repo}" == lib32* ]]; then
 | 
				
			||||||
    repo='default'
 | 
					    base_packages+=('multilib-devel')
 | 
				
			||||||
else
 | 
					 | 
				
			||||||
    case ${repo} in
 | 
					 | 
				
			||||||
        system|world|galaxy) repo='default' ;;
 | 
					 | 
				
			||||||
        lib32*) base_devel+=('multilib-devel') ;;
 | 
					 | 
				
			||||||
        *-gremlins|*-goblins) repo=${repo#*-} ;;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pacman_conf="${DATADIR}/pacman.conf.d/${repo}.conf"
 | 
					pacman_conf="${DATADIR}/pacman.conf.d/${repo}-${arch}.conf"
 | 
				
			||||||
[[ -f "${USER_CONF_DIR}/pacman.conf.d/${repo}.conf" ]] && pacman_conf="${USER_CONF_DIR}/pacman.conf.d/${repo}.conf"
 | 
					if [[ -f ${USER_CONF_DIR}/pacman.conf.d/${repo}-${arch}.conf ]]; then
 | 
				
			||||||
 | 
					    pacman_conf="${USER_CONF_DIR}/pacman.conf.d/${repo}-${arch}.conf"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
makepkg_conf="${DATADIR}/makepkg.conf.d/${arch}.conf"
 | 
					makepkg_conf="${DATADIR}/makepkg.conf.d/${arch}.conf"
 | 
				
			||||||
[[ -f ${USER_CONF_DIR}/makepkg.conf.d/${arch}.conf ]] && makepkg_conf="${USER_CONF_DIR}/makepkg.conf.d/${arch}.conf"
 | 
					if [[ -f ${USER_CONF_DIR}/makepkg.conf.d/${arch}.conf ]]; then
 | 
				
			||||||
 | 
					    makepkg_conf="${USER_CONF_DIR}/makepkg.conf.d/${arch}.conf"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					if [[ -f ${DATADIR}/makepkg.conf.d/${repo}-${arch}.conf ]]; then
 | 
				
			||||||
 | 
					    makepkg_conf="${DATADIR}/makepkg.conf.d/${repo}-${arch}.conf"
 | 
				
			||||||
 | 
					    if [[ -f ${USER_CONF_DIR}/makepkg.conf.d/${repo}-${arch}.conf ]]; then
 | 
				
			||||||
 | 
					        makepkg_conf="${USER_CONF_DIR}/makepkg.conf.d/${repo}-${arch}.conf"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ -f "${DATADIR}/setarch-aliases.d/${arch}" ]]; then
 | 
					if [[ -f "${DATADIR}/setarch-aliases.d/${arch}" ]]; then
 | 
				
			||||||
    read -r set_arch < "${DATADIR}/setarch-aliases.d/${arch}"
 | 
					    read -r set_arch < "${DATADIR}/setarch-aliases.d/${arch}"
 | 
				
			||||||
@@ -76,19 +87,19 @@ else
 | 
				
			|||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Architecture-specific Mount
 | 
					# Architecture-specific Mount
 | 
				
			||||||
# arch_mounts=()
 | 
					arch_mounts=()
 | 
				
			||||||
# if [[ -f "${DATADIR}/mount.d/${arch}" ]]; then
 | 
					if [[ -f "${DATADIR}/mount.d/${arch}" ]]; then
 | 
				
			||||||
#     mapfile -t arch_mounts < "${DATADIR}/mount.d/${arch}"
 | 
					    mapfile -t arch_mounts < "${DATADIR}/mount.d/${arch}"
 | 
				
			||||||
# fi
 | 
					fi
 | 
				
			||||||
# for arch_mount in "${arch_mounts[@]}"; do
 | 
					for arch_mount in "${arch_mounts[@]}"; do
 | 
				
			||||||
#     if [[ $arch_mount = rw* ]]; then
 | 
					    if [[ $arch_mount = rw* ]]; then
 | 
				
			||||||
#         arch_mount=${arch_mount#rw }
 | 
					        arch_mount=${arch_mount#rw }
 | 
				
			||||||
#         in_array "$arch_mount" "${mkchrootpkg_args[@]}" || mkchrootpkg_args+=("-d" "$arch_mount")
 | 
					        in_array "$arch_mount" "${mkchrootpkg_args[@]}" || mkchrootpkg_args+=(-b "-B:$arch_mount")
 | 
				
			||||||
#     elif [[ $arch_mount = ro* ]]; then
 | 
					    elif [[ $arch_mount = ro* ]]; then
 | 
				
			||||||
#         arch_mount=${arch_mount#ro }
 | 
					        arch_mount=${arch_mount#ro }
 | 
				
			||||||
#         in_array "$arch_mount" "${mkchrootpkg_args[@]}" || mkchrootpkg_args+=("-D" "$arch_mount")
 | 
					        in_array "$arch_mount" "${mkchrootpkg_args[@]}" || mkchrootpkg_args+=(-b "-Br:$arch_mount")
 | 
				
			||||||
#     fi
 | 
					    fi
 | 
				
			||||||
# done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
check_root SOURCE_DATE_EPOCH,SRCDEST,SRCPKGDEST,PKGDEST,LOGDEST,MAKEFLAGS,PACKAGER,GNUPGHOME "${BASH_SOURCE[0]}" "$@"
 | 
					check_root SOURCE_DATE_EPOCH,SRCDEST,SRCPKGDEST,PKGDEST,LOGDEST,MAKEFLAGS,PACKAGER,GNUPGHOME "${BASH_SOURCE[0]}" "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -114,7 +125,7 @@ if ${create_first} || [[ ! -d "${chroots_pkg}/${repo}-${arch}" ]];then
 | 
				
			|||||||
        -C "${pacman_conf}" \
 | 
					        -C "${pacman_conf}" \
 | 
				
			||||||
        -M "${makepkg_conf}" \
 | 
					        -M "${makepkg_conf}" \
 | 
				
			||||||
        "${chroots_pkg}/${repo}-${arch}/root" \
 | 
					        "${chroots_pkg}/${repo}-${arch}/root" \
 | 
				
			||||||
        "${base_devel[@]}" || abort
 | 
					        "${base_packages[@]}" || abort
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
    lock 9 "${chroots_pkg}/${repo}-${arch}/root.lock" "Locking clean chroot"
 | 
					    lock 9 "${chroots_pkg}/${repo}-${arch}/root.lock" "Locking clean chroot"
 | 
				
			||||||
    chroot-run \
 | 
					    chroot-run \
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,41 +23,66 @@ usage() {
 | 
				
			|||||||
        list for both packages and a library list for both packages.
 | 
					        list for both packages and a library list for both packages.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        OPTIONS
 | 
					        OPTIONS
 | 
				
			||||||
            -r, --rmdir     Remove the temporary directory
 | 
					            -r, --rmdir          Remove the temporary directory
 | 
				
			||||||
            -w, --warn      Print a warning in case of differences
 | 
					            -w, --warn           Print a warning in case of differences
 | 
				
			||||||
            -h, --help      Show this help text
 | 
					            -M, --makepkg-config Set an alternate makepkg configuration file
 | 
				
			||||||
 | 
					            -h, --help           Show this help text
 | 
				
			||||||
_EOF_
 | 
					_EOF_
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RMDIR=0
 | 
					RMDIR=0
 | 
				
			||||||
WARN=0
 | 
					WARN=0
 | 
				
			||||||
 | 
					MAKEPKG_CONF=/etc/makepkg.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OPT_SHORT='rwh'
 | 
					# option checking
 | 
				
			||||||
OPT_LONG=('rmdir' 'warn' 'help')
 | 
					while (( $# )); do
 | 
				
			||||||
if ! parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@"; then
 | 
					 | 
				
			||||||
    exit 1
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
set  -- "${OPTRET[@]}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
while :; do
 | 
					 | 
				
			||||||
    case $1 in
 | 
					    case $1 in
 | 
				
			||||||
        -r|--rmdir)
 | 
					 | 
				
			||||||
            RMDIR=1
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
        -w|--warn)
 | 
					 | 
				
			||||||
            WARN=1
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
        -h|--help)
 | 
					        -h|--help)
 | 
				
			||||||
            usage
 | 
					            usage
 | 
				
			||||||
            exit 0
 | 
					            exit 0
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
 | 
					        -r|--rmdir)
 | 
				
			||||||
 | 
					            RMDIR=1
 | 
				
			||||||
 | 
					            shift
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        -w|--warn)
 | 
				
			||||||
 | 
					            WARN=1
 | 
				
			||||||
 | 
					            shift
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        -M|--makepkg-config)
 | 
				
			||||||
 | 
					            MAKEPKG_CONF="$2"
 | 
				
			||||||
 | 
					            shift 2
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
        --)
 | 
					        --)
 | 
				
			||||||
            shift; break
 | 
					            shift
 | 
				
			||||||
 | 
					            break
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        -*|--*)
 | 
				
			||||||
 | 
					            die "invalid argument: %s" "$1"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        *)
 | 
				
			||||||
 | 
					            break
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
    shift
 | 
					 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Source makepkg.conf; fail if it is not found
 | 
				
			||||||
 | 
					if [[ -r "${MAKEPKG_CONF}" ]]; then
 | 
				
			||||||
 | 
					    # shellcheck source=config/makepkg/x86_64.conf
 | 
				
			||||||
 | 
					    source "${MAKEPKG_CONF}"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    die "${MAKEPKG_CONF} not found!"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Source user-specific makepkg.conf overrides
 | 
				
			||||||
 | 
					if [[ -r "${XDG_CONFIG_HOME:-$HOME/.config}/pacman/makepkg.conf" ]]; then
 | 
				
			||||||
 | 
					    # shellcheck source=/dev/null
 | 
				
			||||||
 | 
					    source "${XDG_CONFIG_HOME:-$HOME/.config}/pacman/makepkg.conf"
 | 
				
			||||||
 | 
					elif [[ -r "$HOME/.makepkg.conf" ]]; then
 | 
				
			||||||
 | 
					    # shellcheck source=/dev/null
 | 
				
			||||||
 | 
					    source "$HOME/.makepkg.conf"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ ! -f PKGBUILD ]]; then
 | 
					if [[ ! -f PKGBUILD ]]; then
 | 
				
			||||||
    die 'This must be run in the directory of a built package.'
 | 
					    die 'This must be run in the directory of a built package.'
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
@@ -72,6 +97,8 @@ STARTDIR=$(pwd)
 | 
				
			|||||||
(( RMDIR )) && trap 'rm -rf $TEMPDIR' EXIT INT TERM QUIT
 | 
					(( RMDIR )) && trap 'rm -rf $TEMPDIR' EXIT INT TERM QUIT
 | 
				
			||||||
TEMPDIR=$(mktemp -d --tmpdir checkpkg-script.XXXX)
 | 
					TEMPDIR=$(mktemp -d --tmpdir checkpkg-script.XXXX)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					changed=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for _pkgname in "${pkgname[@]}"; do
 | 
					for _pkgname in "${pkgname[@]}"; do
 | 
				
			||||||
    comparepkg=$_pkgname
 | 
					    comparepkg=$_pkgname
 | 
				
			||||||
    pkgurl=
 | 
					    pkgurl=
 | 
				
			||||||
@@ -84,8 +111,10 @@ for _pkgname in "${pkgname[@]}"; do
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if (( $# )); then
 | 
					    if (( $# )); then
 | 
				
			||||||
        case $1 in
 | 
					        case $1 in
 | 
				
			||||||
 | 
					            *://*)
 | 
				
			||||||
 | 
					                pkgurl=$1 ;;
 | 
				
			||||||
            /*|*/*)
 | 
					            /*|*/*)
 | 
				
			||||||
                pkgurl=file://$(readlink -m "$1") ;;
 | 
					                pkgurl=$(readlink -m "$1") ;;
 | 
				
			||||||
            *.pkg.tar*)
 | 
					            *.pkg.tar*)
 | 
				
			||||||
                pkgurl=$1 ;;
 | 
					                pkgurl=$1 ;;
 | 
				
			||||||
            '')
 | 
					            '')
 | 
				
			||||||
@@ -124,10 +153,16 @@ for _pkgname in "${pkgname[@]}"; do
 | 
				
			|||||||
    if ! diff_output="$(sdiff -s "$TEMPDIR/libraries-$_pkgname-old" "$TEMPDIR/libraries-$_pkgname")"; then
 | 
					    if ! diff_output="$(sdiff -s "$TEMPDIR/libraries-$_pkgname-old" "$TEMPDIR/libraries-$_pkgname")"; then
 | 
				
			||||||
        message="Sonames differ in $_pkgname!"
 | 
					        message="Sonames differ in $_pkgname!"
 | 
				
			||||||
        (( WARN )) && warning "$message" || msg "$message"
 | 
					        (( WARN )) && warning "$message" || msg "$message"
 | 
				
			||||||
        printf "%s\n" "$diff_output"
 | 
					        printf "%s\n" "$diff_output" 2>&1 | tee "${pkgfile##*/}-checkpkg.log"
 | 
				
			||||||
 | 
					        changed=1
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        msg "No soname differences for %s." "$_pkgname"
 | 
					        msg "No soname differences for %s." "$_pkgname"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(( RMDIR )) || msg "Files saved to %s" "$TEMPDIR"
 | 
					if ! (( RMDIR )); then
 | 
				
			||||||
 | 
					    msg "Files saved to %s" "$TEMPDIR"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exit "$changed"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										111
									
								
								src/pkg/ckchrootpkg.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								src/pkg/ckchrootpkg.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,111 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LIBDIR=${LIBDIR:-'@libdir@'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# shellcheck source=src/lib/base/util.sh
 | 
				
			||||||
 | 
					source "${LIBDIR}"/base/util.sh
 | 
				
			||||||
 | 
					# shellcheck source=src/lib/base/message.sh
 | 
				
			||||||
 | 
					source "${LIBDIR}"/base/message.sh
 | 
				
			||||||
 | 
					# shellcheck source=src/lib/base/chroot.sh
 | 
				
			||||||
 | 
					source "${LIBDIR}"/base/chroot.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					shopt -s nullglob
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					chrootdir=
 | 
				
			||||||
 | 
					makepkg_user=
 | 
				
			||||||
 | 
					passeddir="${CHROOTS_DIR}/buildpkg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					arch=${ARCH}
 | 
				
			||||||
 | 
					repo=${REPO}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					copy=$USER
 | 
				
			||||||
 | 
					[[ -n ${SUDO_USER:-} ]] && copy=$SUDO_USER
 | 
				
			||||||
 | 
					[[ -z "$copy" || $copy = root ]] && copy=copy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					usage() {
 | 
				
			||||||
 | 
					    printf 'Usage: %s [options] -r <chrootdir>\n' "${0##*/}"
 | 
				
			||||||
 | 
					    printf '    -r <dir>           Create chroots in this directory\n'
 | 
				
			||||||
 | 
					    printf '                       Default: %s\n' "${passeddir}"
 | 
				
			||||||
 | 
					    printf '    -d <dest>          Destination repo chroot\n'
 | 
				
			||||||
 | 
					    printf '                       Default: %s\n' "${repo}"
 | 
				
			||||||
 | 
					    printf '    -a <arch>          Build arch chroot\n'
 | 
				
			||||||
 | 
					    printf '                       Default: %s\n' "${arch}"
 | 
				
			||||||
 | 
					    printf '    -l <copy>          The directory to use as the working copy of the chroot\n'
 | 
				
			||||||
 | 
					    printf '                       Useful for maintaining multiple copies\n'
 | 
				
			||||||
 | 
					    printf '                       Default: %s\n' "$copy"
 | 
				
			||||||
 | 
					    printf '    -U                 Run makepkg as a specified user\n'
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					opts='hr:l:U:d:a:'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					while getopts "${opts}" arg; do
 | 
				
			||||||
 | 
					    case "$arg" in
 | 
				
			||||||
 | 
					        r) passeddir="$OPTARG" ;;
 | 
				
			||||||
 | 
					        l) copy="$OPTARG" ;;
 | 
				
			||||||
 | 
					        U) makepkg_user="$OPTARG" ;;
 | 
				
			||||||
 | 
					        d) repo="$OPTARG" ;;
 | 
				
			||||||
 | 
					        a) arch="$OPTARG" ;;
 | 
				
			||||||
 | 
					        h|*) usage ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[ ! -f PKGBUILD ]] && die 'This must be run in a directory containing a PKGBUILD.'
 | 
				
			||||||
 | 
					[[ -n $makepkg_user && -z $(id -u "$makepkg_user") ]] && die 'Invalid makepkg user.'
 | 
				
			||||||
 | 
					makepkg_user=${makepkg_user:-${SUDO_USER:-$USER}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					check_root "" "${BASH_SOURCE[0]}" "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# # Canonicalize chrootdir, getting rid of trailing /
 | 
				
			||||||
 | 
					chrootdir=$(readlink -e "$passeddir")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					chrootdir="$chrootdir"/"${repo}-${arch}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[ ! -d $chrootdir ]] && die "No chroot dir defined, or invalid path '%s'" "$passeddir"
 | 
				
			||||||
 | 
					[[ ! -d $chrootdir/root ]] && die "Missing chroot dir root directory. Try using: mkchroot %s/root base-devel" "$chrootdir"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ ${copy:0:1} = / ]]; then
 | 
				
			||||||
 | 
					    copydir=$copy
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    copydir="$chrootdir/$copy"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					umask 0022
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ORIG_HOME=$HOME
 | 
				
			||||||
 | 
					IFS=: read -r _ _ _ _ _ HOME _ < <(getent passwd "${SUDO_USER:-$USER}")
 | 
				
			||||||
 | 
					load_makepkg_config
 | 
				
			||||||
 | 
					HOME=$ORIG_HOME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[ -d $PKGDEST ]]    || PKGDEST=$PWD
 | 
				
			||||||
 | 
					[[ -d $SRCDEST ]]    || SRCDEST=$PWD
 | 
				
			||||||
 | 
					[[ -d $SRCPKGDEST ]] || SRCPKGDEST=$PWD
 | 
				
			||||||
 | 
					[[ -d $LOGDEST ]]    || LOGDEST=$PWD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg "Running checkpkg"
 | 
				
			||||||
 | 
					mapfile -t pkgnames < <(bash -c 'source PKGBUILD; printf "%s\n" "${pkgname[@]}"')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mapfile -t remotepkgs < <(pacman --config "$copydir"/etc/pacman.conf \
 | 
				
			||||||
 | 
					    --dbpath "$copydir"/var/lib/pacman \
 | 
				
			||||||
 | 
					    -Sddp "${pkgnames[@]}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ! wait $!; then
 | 
				
			||||||
 | 
					    warning "Skipped checkpkg due to missing repo packages"
 | 
				
			||||||
 | 
					    exit 0
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# download package files if any non-local location exists
 | 
				
			||||||
 | 
					for remotepkg in "${remotepkgs[@]}"; do
 | 
				
			||||||
 | 
					    if [[ $remotepkg != file://* ]]; then
 | 
				
			||||||
 | 
					        msg2 "Downloading current versions"
 | 
				
			||||||
 | 
					        chroot-run "$copydir" pacman --noconfirm -Swdd "${pkgnames[@]}"
 | 
				
			||||||
 | 
					        mapfile -t remotepkgs < <(pacman --config "$copydir"/etc/pacman.conf \
 | 
				
			||||||
 | 
					            --dbpath "$copydir"/var/lib/pacman \
 | 
				
			||||||
 | 
					            -Sddp "${pkgnames[@]}")
 | 
				
			||||||
 | 
					        break
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sudo -u "$makepkg_user" checkpkg --rmdir --warn --makepkg-config "$copydir/etc/makepkg.conf" "${remotepkgs[@]/#file:\/\//}"
 | 
				
			||||||
@@ -29,6 +29,7 @@ clean_first=0
 | 
				
			|||||||
run_namcap=0
 | 
					run_namcap=0
 | 
				
			||||||
run_checkpkg=0
 | 
					run_checkpkg=0
 | 
				
			||||||
temp_chroot=0
 | 
					temp_chroot=0
 | 
				
			||||||
 | 
					tmp_opts="nosuid,nodev,size=50%,nr_inodes=2m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bindmounts=''
 | 
					bindmounts=''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -47,7 +48,7 @@ usage() {
 | 
				
			|||||||
    printf ' <chrootdir>/{root, copy} but only "root" is required\n'
 | 
					    printf ' <chrootdir>/{root, copy} but only "root" is required\n'
 | 
				
			||||||
    printf ' by default. The working copy will be created as needed\n'
 | 
					    printf ' by default. The working copy will be created as needed\n'
 | 
				
			||||||
    printf '\n'
 | 
					    printf '\n'
 | 
				
			||||||
    printf "The chroot 'root' directory must be created via the following\n"
 | 
					    printf 'The chroot "root" directory must be created via the following\n'
 | 
				
			||||||
    printf 'command:\n'
 | 
					    printf 'command:\n'
 | 
				
			||||||
    printf '    mkchroot <chrootdir>/root base-devel\n'
 | 
					    printf '    mkchroot <chrootdir>/root base-devel\n'
 | 
				
			||||||
    printf '\n'
 | 
					    printf '\n'
 | 
				
			||||||
@@ -60,26 +61,24 @@ usage() {
 | 
				
			|||||||
    printf 'Flags:\n'
 | 
					    printf 'Flags:\n'
 | 
				
			||||||
    printf ' -h         This help\n'
 | 
					    printf ' -h         This help\n'
 | 
				
			||||||
    printf ' -c         Clean the chroot before building\n'
 | 
					    printf ' -c         Clean the chroot before building\n'
 | 
				
			||||||
    printf ' -d <dir>   Bind directory into build chroot as read-write\n'
 | 
					    printf ' -b <arg>   Bind mount directory/file into build chroot\n'
 | 
				
			||||||
    printf ' -D <dir>   Bind directory into build chroot as read-only\n'
 | 
					 | 
				
			||||||
    printf ' -u         Update the working copy of the chroot before building\n'
 | 
					    printf ' -u         Update the working copy of the chroot before building\n'
 | 
				
			||||||
    printf '           This is useful for rebuilds without dirtying the pristine\n'
 | 
					    printf '            This is useful for rebuilds without dirtying the pristine\n'
 | 
				
			||||||
    printf '           chroot\n'
 | 
					    printf '            chroot\n'
 | 
				
			||||||
    printf ' -r <dir>   The chroot dir to use\n'
 | 
					    printf ' -r <dir>   The chroot dir to use\n'
 | 
				
			||||||
    printf ' -I <pkg>   Install a package into the working copy of the chroot\n'
 | 
					    printf ' -I <pkg>   Install a package into the working copy of the chroot\n'
 | 
				
			||||||
    printf ' -l <copy>  The directory to use as the working copy of the chroot\n'
 | 
					    printf ' -l <copy>  The directory to use as the working copy of the chroot\n'
 | 
				
			||||||
    printf '            Useful for maintaining multiple copies\n'
 | 
					    printf '            Useful for maintaining multiple copies\n'
 | 
				
			||||||
    printf '            Default: %s\n' "$copy"
 | 
					    printf '            Default: %s\n' "$copy"
 | 
				
			||||||
    printf ' -n         Run namcap on the package\n'
 | 
					    printf ' -n         Run namcap on the package\n'
 | 
				
			||||||
    printf ' -C         Run checkpkg on the package\n'
 | 
					 | 
				
			||||||
    printf ' -N         Disable check() function\n'
 | 
					    printf ' -N         Disable check() function\n'
 | 
				
			||||||
 | 
					    printf ' -C         Run checkpkg on the package\n'
 | 
				
			||||||
    printf ' -T         Build in a temporary directory\n'
 | 
					    printf ' -T         Build in a temporary directory\n'
 | 
				
			||||||
    printf ' -U         Run makepkg as a specified user\n'
 | 
					    printf ' -U         Run makepkg as a specified user\n'
 | 
				
			||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# {{{ functions
 | 
					# {{{ functions
 | 
				
			||||||
 | 
					 | 
				
			||||||
# Usage: sync_chroot $chrootdir $copydir [$copy]
 | 
					# Usage: sync_chroot $chrootdir $copydir [$copy]
 | 
				
			||||||
sync_chroot() {
 | 
					sync_chroot() {
 | 
				
			||||||
    local chrootdir=$1
 | 
					    local chrootdir=$1
 | 
				
			||||||
@@ -142,9 +141,7 @@ install_packages() {
 | 
				
			|||||||
    pkgnames=("${install_pkgs[@]##*/}")
 | 
					    pkgnames=("${install_pkgs[@]##*/}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cp -- "${install_pkgs[@]}" "$copydir/root/"
 | 
					    cp -- "${install_pkgs[@]}" "$copydir/root/"
 | 
				
			||||||
    chroot-run \
 | 
					    chroot-run -b "${bindmounts}" "$copydir" \
 | 
				
			||||||
        -b "${bindmounts}" \
 | 
					 | 
				
			||||||
        "$copydir" \
 | 
					 | 
				
			||||||
        bash -c 'yes y | pacman -U -- "$@"' -bash "${pkgnames[@]/#//root/}"
 | 
					        bash -c 'yes y | pacman -U -- "$@"' -bash "${pkgnames[@]/#//root/}"
 | 
				
			||||||
    ret=$?
 | 
					    ret=$?
 | 
				
			||||||
    rm -- "${pkgnames[@]/#/$copydir/root/}"
 | 
					    rm -- "${pkgnames[@]/#/$copydir/root/}"
 | 
				
			||||||
@@ -354,13 +351,11 @@ if [[ ! -d $copydir ]] || (( clean_first )); then
 | 
				
			|||||||
    sync_chroot "$chrootdir" "$copydir" "$copy"
 | 
					    sync_chroot "$chrootdir" "$copydir" "$copy"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
(( update_first )) && chroot-run \
 | 
					(( update_first )) && chroot-run \
 | 
				
			||||||
        -b "${bindmounts}" \
 | 
					        -b "${bindmounts}" \
 | 
				
			||||||
        "$copydir" \
 | 
					        "$copydir" \
 | 
				
			||||||
        pacman -Syuu --noconfirm
 | 
					        pacman -Syuu --noconfirm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ -n ${install_pkgs[*]:-} ]]; then
 | 
					if [[ -n ${install_pkgs[*]:-} ]]; then
 | 
				
			||||||
    install_packages
 | 
					    install_packages
 | 
				
			||||||
    ret=$?
 | 
					    ret=$?
 | 
				
			||||||
@@ -378,6 +373,7 @@ download_sources
 | 
				
			|||||||
prepare_chroot
 | 
					prepare_chroot
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if chroot-run \
 | 
					if chroot-run \
 | 
				
			||||||
 | 
					    -t "${tmp_opts}" \
 | 
				
			||||||
    -b "${bindmounts} -B:${PWD}:/startdir -B:${SRCDEST}:/srcdest" \
 | 
					    -b "${bindmounts} -B:${PWD}:/startdir -B:${SRCDEST}:/srcdest" \
 | 
				
			||||||
    "$copydir" \
 | 
					    "$copydir" \
 | 
				
			||||||
    /chrootbuild "${makepkg_args[@]}"
 | 
					    /chrootbuild "${makepkg_args[@]}"
 | 
				
			||||||
@@ -409,6 +405,7 @@ else
 | 
				
			|||||||
            warning "Skipped checkpkg due to missing repo packages"
 | 
					            warning "Skipped checkpkg due to missing repo packages"
 | 
				
			||||||
            exit 0
 | 
					            exit 0
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # download package files if any non-local location exists
 | 
					        # download package files if any non-local location exists
 | 
				
			||||||
        for remotepkg in "${remotepkgs[@]}"; do
 | 
					        for remotepkg in "${remotepkgs[@]}"; do
 | 
				
			||||||
            if [[ $remotepkg != file://* ]]; then
 | 
					            if [[ $remotepkg != file://* ]]; then
 | 
				
			||||||
@@ -420,8 +417,9 @@ else
 | 
				
			|||||||
                break
 | 
					                break
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
        done
 | 
					        done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        msg2 "Checking packages"
 | 
					        msg2 "Checking packages"
 | 
				
			||||||
        sudo -u "$makepkg_user" checkpkg --rmdir --warn "${remotepkgs[@]/#file:\/\//}"
 | 
					        sudo -u "$makepkg_user" checkpkg --rmdir --warn --makepkg-config "$copydir/etc/makepkg.conf" "${remotepkgs[@]/#file:\/\//}"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    true
 | 
					    true
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,7 +46,7 @@ pkgbuild_extract_to_yaml() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    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[@]}"
 | 
					        [[ -z $pkgname ]] && srcyaml_write_attr 2 4 2 "$attrname" "${outvalue[@]}"
 | 
				
			||||||
        [[ -n $pkgname ]] && srcyaml_write_attr 6 8 4 "$attrname" "${outvalue[@]}"
 | 
					        [[ -n $pkgname ]] && srcyaml_write_attr 4 6 2 "$attrname" "${outvalue[@]}"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -82,12 +82,8 @@ yaml_write_global() {
 | 
				
			|||||||
                        noextract options backup
 | 
					                        noextract options backup
 | 
				
			||||||
                        source validpgpkeys "${known_hash_algos[@]/%/sums}")
 | 
					                        source validpgpkeys "${known_hash_algos[@]/%/sums}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local version
 | 
					 | 
				
			||||||
    version=$(get_full_version)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    Yaml+=$(write_yaml_map 0 "pkgbase")
 | 
					    Yaml+=$(write_yaml_map 0 "pkgbase")
 | 
				
			||||||
    Yaml+=$(write_yaml_map 2 "name" "${pkgbase:-${pkgname}}")
 | 
					    Yaml+=$(write_yaml_map 2 "name" "${pkgbase:-${pkgname}}")
 | 
				
			||||||
    Yaml+=$(write_yaml_map 2 "version" "${version}")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    srcyaml_write_section_details ""
 | 
					    srcyaml_write_section_details ""
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -97,9 +93,9 @@ yaml_write_package() {
 | 
				
			|||||||
    local multivalued=(arch groups license checkdepends depends optdepends
 | 
					    local multivalued=(arch groups license checkdepends depends optdepends
 | 
				
			||||||
                       provides conflicts replaces options backup)
 | 
					                       provides conflicts replaces options backup)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Yaml+=$(write_yaml_map 2 "packages")
 | 
					    Yaml+=$(write_yaml_map 0 "pkgnames")
 | 
				
			||||||
    for pkg in "${pkgname[@]}"; do
 | 
					    for pkg in "${pkgname[@]}"; do
 | 
				
			||||||
        Yaml+=$(write_yaml_seq_map 4 "pkgname" "$pkg")
 | 
					        Yaml+=$(write_yaml_seq_map 2 "pkgname" "$pkg")
 | 
				
			||||||
        srcyaml_write_section_details "$pkg"
 | 
					        srcyaml_write_section_details "$pkg"
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -108,6 +104,11 @@ write_srcyaml() {
 | 
				
			|||||||
    Yaml=$(write_yaml_header)
 | 
					    Yaml=$(write_yaml_header)
 | 
				
			||||||
    yaml_write_global
 | 
					    yaml_write_global
 | 
				
			||||||
    yaml_write_package
 | 
					    yaml_write_package
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#     local version
 | 
				
			||||||
 | 
					#     version=$(get_full_version)
 | 
				
			||||||
 | 
					#     Yaml+=$(write_yaml_map 2 "version" "${version}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    printf '%s\n' "${Yaml}"
 | 
					    printf '%s\n' "${Yaml}"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,5 +36,10 @@ for pkg in "${passfiles[@]}"; do
 | 
				
			|||||||
        msg2 "Found: %s" "${pkgfile}"
 | 
					        msg2 "Found: %s" "${pkgfile}"
 | 
				
			||||||
        [[ -e "${pkgfile}".sig ]] && rm "${pkgfile}".sig
 | 
					        [[ -e "${pkgfile}".sig ]] && rm "${pkgfile}".sig
 | 
				
			||||||
        sign_pkg "${pkgfile}"
 | 
					        sign_pkg "${pkgfile}"
 | 
				
			||||||
 | 
					        ret=0
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        ret=1
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exit "$ret"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user