Compare commits
	
		
			61 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| ede2ac11e2 | |||
| e8913b07c3 | |||
| f5f9a2acb8 | |||
| c6f7df51d2 | |||
| b105207138 | |||
| 55e98abdc1 | |||
| 896c031ea9 | |||
| 8f16db45e8 | |||
| 47ee03e1a4 | |||
| 17f49857e2 | |||
| 68e23f7e47 | |||
| c5228a8b43 | |||
| 84151f360f | |||
| a6ca83be7e | |||
| 0a07a1f1dd | |||
| 9dedb2e4cb | |||
| dcf6ec1d7b | |||
| 62022faad7 | |||
| dea81dd9f9 | |||
| e49d2d77bd | |||
| 4a06d4d2eb | |||
| 231d054ee9 | |||
| 2945493eb7 | |||
| 0f037f1106 | |||
| 6c4197e76d | |||
| 8ebdad278e | |||
| 2bacf6d19e | |||
| 6700e1a2e6 | |||
| f874c8c399 | |||
| 1a5ea6c4ee | |||
| 486acaf47a | |||
| d5ba8ed404 | |||
| daf4c8283e | |||
| 7b65c27025 | |||
| 433a747da9 | |||
| 015c4f0658 | |||
| b1dd485ec0 | |||
| 316514698e | |||
| 614d6e19c8 | |||
| 9c650134c4 | |||
| b849cadbae | |||
| f1067bcd60 | |||
| 3942dde012 | |||
| 30a6c61f52 | |||
| d8195e2288 | |||
| bfe9130cfb | |||
| 8873a71824 | |||
| bb86a05f2f | |||
| bd611c1af2 | |||
| f4e8f703ea | |||
| aa83bc79bb | |||
| 
						
						
							
						
						1bb9687ece
	
				 | 
					
					
						|||
| 48ced03735 | |||
| 0437e66091 | |||
| 9af6d02dea | |||
| 685992cca3 | |||
| 816e13895f | |||
| 6a3f48f181 | |||
| b4d9195c03 | |||
| 0123e6d044 | |||
| e2b2a21ed1 | 
							
								
								
									
										16
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								Makefile
									
									
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
				
			|||||||
VERSION=0.13
 | 
					VERSION=0.15
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CHROOT_VERSION=0.9
 | 
					CHROOT_VERSION=0.10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TOOLS = artools
 | 
					TOOLS = artools
 | 
				
			||||||
PREFIX ?= /usr
 | 
					PREFIX ?= /usr
 | 
				
			||||||
@@ -38,7 +38,10 @@ PKG_BIN = \
 | 
				
			|||||||
	bin/pkg/pkg2yaml \
 | 
						bin/pkg/pkg2yaml \
 | 
				
			||||||
	bin/pkg/buildtree \
 | 
						bin/pkg/buildtree \
 | 
				
			||||||
	bin/pkg/lddd \
 | 
						bin/pkg/lddd \
 | 
				
			||||||
	bin/pkg/links-add
 | 
						bin/pkg/links-add \
 | 
				
			||||||
 | 
						bin/pkg/checkpkg \
 | 
				
			||||||
 | 
						bin/pkg/finddeps \
 | 
				
			||||||
 | 
						bin/pkg/find-libdeps
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LN_COMMITPKG = \
 | 
					LN_COMMITPKG = \
 | 
				
			||||||
	extrapkg \
 | 
						extrapkg \
 | 
				
			||||||
@@ -85,9 +88,6 @@ LN_DEPLOYPKG = \
 | 
				
			|||||||
PKG_LIBS = \
 | 
					PKG_LIBS = \
 | 
				
			||||||
	$(wildcard lib/pkg/*)
 | 
						$(wildcard lib/pkg/*)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PKG_LISTS = \
 | 
					 | 
				
			||||||
	$(wildcard data/pkglists/*.list)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
PKG_UTIL = lib/util-pkg.sh
 | 
					PKG_UTIL = lib/util-pkg.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PKG_DATA = \
 | 
					PKG_DATA = \
 | 
				
			||||||
@@ -167,6 +167,8 @@ install_pkg:
 | 
				
			|||||||
	install $(DIRMODE) $(DESTDIR)$(BINDIR)
 | 
						install $(DIRMODE) $(DESTDIR)$(BINDIR)
 | 
				
			||||||
	install $(MODE) $(PKG_BIN) $(DESTDIR)$(BINDIR)
 | 
						install $(MODE) $(PKG_BIN) $(DESTDIR)$(BINDIR)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						$(LN) find-libdeps $(DESTDIR)$(BINDIR)/find-libprovides
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	$(LN) links-add $(DESTDIR)$(BINDIR)/links-remove
 | 
						$(LN) links-add $(DESTDIR)$(BINDIR)/links-remove
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for l in $(LN_COMMITPKG); do $(LN) commitpkg $(DESTDIR)$(BINDIR)/$$l; done
 | 
						for l in $(LN_COMMITPKG); do $(LN) commitpkg $(DESTDIR)$(BINDIR)/$$l; done
 | 
				
			||||||
@@ -183,8 +185,6 @@ install_pkg:
 | 
				
			|||||||
	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches
 | 
						install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches
 | 
				
			||||||
	install $(FILEMODE) $(PATCHES) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches
 | 
						install $(FILEMODE) $(PATCHES) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/pkglists
 | 
					 | 
				
			||||||
	install $(FILEMODE) $(PKG_LISTS) $(DESTDIR)$(DATADIR)/$(TOOLS)/pkglists
 | 
					 | 
				
			||||||
install_cpio:
 | 
					install_cpio:
 | 
				
			||||||
	+make CPIODIR=$(CPIODIR) DESTDIR=$(DESTDIR) -C initcpio install
 | 
						+make CPIODIR=$(CPIODIR) DESTDIR=$(DESTDIR) -C initcpio install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,18 +36,16 @@ copy_keyring(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
create_min_fs(){
 | 
					create_min_fs(){
 | 
				
			||||||
    msg "Creating install root at %s" "$1"
 | 
					    msg "Creating install root at %s" "$1"
 | 
				
			||||||
    mkdir -m 0755 -p $1/var/{cache/pacman/pkg,lib/pacman,log} $1/{dev,etc}
 | 
					    mkdir -m 0755 -p $1/var/{cache/pacman/pkg,lib/pacman,log} $1/{dev,run,etc/pacman.d}
 | 
				
			||||||
    mkdir -m 1777 -p $1/{tmp,run}
 | 
					    mkdir -m 1777 -p $1/tmp
 | 
				
			||||||
    mkdir -m 0555 -p $1/{sys,proc}
 | 
					    mkdir -m 0555 -p $1/{sys,proc}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
newroot=/mnt
 | 
					newroot=/mnt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
hostcache=false
 | 
					hostcache=0
 | 
				
			||||||
copykeyring=true
 | 
					copykeyring=1
 | 
				
			||||||
copymirrorlist=true
 | 
					copymirrorlist=1
 | 
				
			||||||
directory=false
 | 
					 | 
				
			||||||
interactive=false
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
usage() {
 | 
					usage() {
 | 
				
			||||||
    echo "usage: ${0##*/} [options] root [packages...]"
 | 
					    echo "usage: ${0##*/} [options] root [packages...]"
 | 
				
			||||||
@@ -72,10 +70,10 @@ opts=':C:cGiM'
 | 
				
			|||||||
while getopts ${opts} arg; do
 | 
					while getopts ${opts} arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
        C) pacman_conf=$OPTARG ;;
 | 
					        C) pacman_conf=$OPTARG ;;
 | 
				
			||||||
        c) hostcache=true ;;
 | 
					        c) hostcache=1 ;;
 | 
				
			||||||
        i) interactive=true ;;
 | 
					        i) interactive=1 ;;
 | 
				
			||||||
        G) copykeyring=false ;;
 | 
					        G) copykeyring=0 ;;
 | 
				
			||||||
        M) copymirrorlist=false ;;
 | 
					        M) copymirrorlist=0 ;;
 | 
				
			||||||
        :) echo "invalid argument ${arg}:$OPTARG"; usage 1;;
 | 
					        :) echo "invalid argument ${arg}:$OPTARG"; usage 1;;
 | 
				
			||||||
        ?) usage 0 ;;
 | 
					        ?) usage 0 ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
@@ -88,9 +86,13 @@ check_root
 | 
				
			|||||||
newroot=$1; shift
 | 
					newroot=$1; shift
 | 
				
			||||||
pacman_args=("${@:-base}")
 | 
					pacman_args=("${@:-base}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
${hostcache} || pacman_args+=(--cachedir="$newroot/var/cache/pacman/pkg")
 | 
					if (( ! hostcache ));then
 | 
				
			||||||
 | 
					    pacman_args+=(--cachedir="$newroot/var/cache/pacman/pkg")
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
${interactive} || pacman_args+=(--noconfirm)
 | 
					if (( ! interactive )); then
 | 
				
			||||||
 | 
					    pacman_args+=(--noconfirm)
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[ -n $pacman_conf ]] && pacman_args+=(--config="$pacman_conf")
 | 
					[[ -n $pacman_conf ]] && pacman_args+=(--config="$pacman_conf")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -102,15 +104,16 @@ create_min_fs "$newroot"
 | 
				
			|||||||
# mount API filesystems
 | 
					# mount API filesystems
 | 
				
			||||||
chroot_api_mount "$newroot" || die "failed to setup API filesystems in new root"
 | 
					chroot_api_mount "$newroot" || die "failed to setup API filesystems in new root"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (( copykeyring ));then
 | 
				
			||||||
 | 
					    copy_keyring "$newroot"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg2 'Installing packages to %s' "$newroot"
 | 
					msg2 'Installing packages to %s' "$newroot"
 | 
				
			||||||
if ! pacman -r "$newroot" -Sy "${pacman_args[@]}"; then
 | 
					if ! pacman -r "$newroot" -Sy "${pacman_args[@]}"; then
 | 
				
			||||||
    die 'Failed to install packages to new root'
 | 
					    die 'Failed to install packages to new root'
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ${copykeyring};then
 | 
					 | 
				
			||||||
    copy_keyring "$newroot"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ${copymirrorlist};then
 | 
					if (( copymirrorlist ));then
 | 
				
			||||||
    copy_mirrorlist "$newroot"
 | 
					    copy_mirrorlist "$newroot"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,9 +16,12 @@ chroot_version=0.9
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
. @libdir@/artools/util-base.sh
 | 
					. @libdir@/artools/util-base.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# umask might have been changed in /etc/profile
 | 
				
			||||||
 | 
					# ensure that sane default is set again
 | 
				
			||||||
 | 
					umask 0022
 | 
				
			||||||
 | 
					
 | 
				
			||||||
working_dir=''
 | 
					working_dir=''
 | 
				
			||||||
files=()
 | 
					files=()
 | 
				
			||||||
nosetarch=false
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
usage() {
 | 
					usage() {
 | 
				
			||||||
    echo "Usage: ${0##*/} [options] working-dir [run arguments]"
 | 
					    echo "Usage: ${0##*/} [options] working-dir [run arguments]"
 | 
				
			||||||
@@ -45,9 +48,9 @@ while getopts ${opts} arg; do
 | 
				
			|||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
        C) pacman_conf="$OPTARG" ;;
 | 
					        C) pacman_conf="$OPTARG" ;;
 | 
				
			||||||
        M) makepkg_conf="$OPTARG" ;;
 | 
					        M) makepkg_conf="$OPTARG" ;;
 | 
				
			||||||
        c) cache_dir="$OPTARG" ;;
 | 
					        c) cache_dirs+=("$OPTARG") ;;
 | 
				
			||||||
        f) files+=("$OPTARG") ;;
 | 
					        f) files+=("$OPTARG") ;;
 | 
				
			||||||
        s) nosetarch=true ;;
 | 
					        s) nosetarch=1 ;;
 | 
				
			||||||
        r) bindmounts_ro=("$OPTARG") ;;
 | 
					        r) bindmounts_ro=("$OPTARG") ;;
 | 
				
			||||||
        w) bindmounts_rw=("$OPTARG") ;;
 | 
					        w) bindmounts_rw=("$OPTARG") ;;
 | 
				
			||||||
        h|?) usage ;;
 | 
					        h|?) usage ;;
 | 
				
			||||||
@@ -65,17 +68,30 @@ shift 1
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[ -z $working_dir ]] && die 'Please specify a working directory.'
 | 
					[[ -z $working_dir ]] && die 'Please specify a working directory.'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ -z $cache_dir ]]; then
 | 
					pacconf_cmd=$(command -v pacman-conf || command -v pacconf)
 | 
				
			||||||
    cache_dirs=($(pacman -v 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g'))
 | 
					
 | 
				
			||||||
else
 | 
					if (( ${#cache_dirs[@]} == 0 )); then
 | 
				
			||||||
    cache_dirs=("$cache_dir")
 | 
					    mapfile -t cache_dirs < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" CacheDir)
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pacconf_cmd=$(command -v pacman-conf || command -v pacconf)
 | 
					 | 
				
			||||||
host_mirrors=($($pacconf_cmd --repo world Server 2> /dev/null | sed -r 's#(.*/)world/os/.*#\1$repo/os/$arch#'))
 | 
					host_mirrors=($($pacconf_cmd --repo world Server 2> /dev/null | sed -r 's#(.*/)world/os/.*#\1$repo/os/$arch#'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					while read -r line; do
 | 
				
			||||||
 | 
					    mapfile -t lines < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" \
 | 
				
			||||||
 | 
					        --repo $line Server | sed -r 's#(.*/)[^/]+/os/.+#\1$repo/os/$arch#')
 | 
				
			||||||
 | 
					    if [[ ${lines[0]} != ${host_mirrors[0]} ]]; then
 | 
				
			||||||
 | 
					        for line in "${lines[@]}"; do
 | 
				
			||||||
 | 
					            if [[ $line = file://* ]]; then
 | 
				
			||||||
 | 
					                line=${line#file://}
 | 
				
			||||||
 | 
					                in_array "$line" "${cache_dirs[@]}" || cache_dirs+=("$line")
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					done < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" --repo-list)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
copy_hostconf () {
 | 
					copy_hostconf () {
 | 
				
			||||||
    cp -a /etc/pacman.d/gnupg "$1/etc/pacman.d"
 | 
					    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
 | 
				
			||||||
 | 
					    pacman-key --gpgdir "$working_dir"/etc/pacman.d/gnupg/ --import-trustdb "$(pacman-conf GpgDir)" >/dev/null 2>&1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    printf 'Server = %s\n' "${host_mirrors[@]}" >"$working_dir/etc/pacman.d/mirrorlist"
 | 
					    printf 'Server = %s\n' "${host_mirrors[@]}" >"$working_dir/etc/pacman.d/mirrorlist"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -95,8 +111,11 @@ copy_hostconf () {
 | 
				
			|||||||
chroot_extra_mount() {
 | 
					chroot_extra_mount() {
 | 
				
			||||||
    chroot_add_resolv_conf "$1"
 | 
					    chroot_add_resolv_conf "$1"
 | 
				
			||||||
    chroot_mount "/etc/hosts" "$1/etc/hosts" -B
 | 
					    chroot_mount "/etc/hosts" "$1/etc/hosts" -B
 | 
				
			||||||
#     chroot_mount_conditional "[[ -e $1/etc/machine-id ]]" "/etc/machine-id" "$1/etc/machine-id" -B
 | 
					 | 
				
			||||||
    chroot_mount "${cache_dirs[0]}" "$1${cache_dirs[0]}" -B
 | 
					    chroot_mount "${cache_dirs[0]}" "$1${cache_dirs[0]}" -B
 | 
				
			||||||
 | 
					#     if [[ -e /etc/localtime ]];then
 | 
				
			||||||
 | 
					#         [[ -e $1/etc/localtime ]] || touch $1/etc/localtime
 | 
				
			||||||
 | 
					#         chroot_mount "/etc/localtime" "$1/etc/localtime" -B
 | 
				
			||||||
 | 
					#     fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for cache_dir in ${cache_dirs[@]:1}; do
 | 
					    for cache_dir in ${cache_dirs[@]:1}; do
 | 
				
			||||||
        chroot_mount "$cache_dir" "$1${cache_dir}" -Br
 | 
					        chroot_mount "$cache_dir" "$1${cache_dir}" -Br
 | 
				
			||||||
@@ -135,7 +154,7 @@ copy_hostconf "${working_dir}"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
eval $(grep '^CARCH=' "$working_dir/etc/makepkg.conf")
 | 
					eval $(grep '^CARCH=' "$working_dir/etc/makepkg.conf")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
${nosetarch} && unset CARCH
 | 
					[[ -z $nosetarch ]] || unset CARCH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
${CARCH:+setarch "$CARCH"} chroot "${working_dir}" "$@"
 | 
					${CARCH:+setarch "$CARCH"} chroot "${working_dir}" "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -215,7 +215,7 @@ done
 | 
				
			|||||||
        [[ $device = *'\040(deleted)' ]] && continue
 | 
					        [[ $device = *'\040(deleted)' ]] && continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if [[ $type = file ]]; then
 | 
					        if [[ $type = file ]]; then
 | 
				
			||||||
            printf '%-20s' "$device"
 | 
					            printf '%-20s' "${device#${root%/}}"
 | 
				
			||||||
        elif [[ $device = /dev/dm-+([0-9]) ]]; then
 | 
					        elif [[ $device = /dev/dm-+([0-9]) ]]; then
 | 
				
			||||||
            # device mapper doesn't allow characters we need to worry
 | 
					            # device mapper doesn't allow characters we need to worry
 | 
				
			||||||
            # about being mangled, and it does the escaping of dashes
 | 
					            # about being mangled, and it does the escaping of dashes
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,11 +15,9 @@
 | 
				
			|||||||
. @libdir@/artools/util-base.sh
 | 
					. @libdir@/artools/util-base.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
working_dir=''
 | 
					working_dir=''
 | 
				
			||||||
files=()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
nosetarch=false
 | 
					files=()
 | 
				
			||||||
copy_mirrorlist=true
 | 
					chroot_args=()
 | 
				
			||||||
basestrap_args=(-Gc)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
usage() {
 | 
					usage() {
 | 
				
			||||||
    echo "Usage: ${0##*/} [options] working-dir package-list..."
 | 
					    echo "Usage: ${0##*/} [options] working-dir package-list..."
 | 
				
			||||||
@@ -28,7 +26,6 @@ usage() {
 | 
				
			|||||||
    echo '    -M <file>     Location of a makepkg config file'
 | 
					    echo '    -M <file>     Location of a makepkg config file'
 | 
				
			||||||
    echo '    -c <dir>      Set pacman cache'
 | 
					    echo '    -c <dir>      Set pacman cache'
 | 
				
			||||||
    echo '    -f <file>     Copy file from the host to the chroot'
 | 
					    echo '    -f <file>     Copy file from the host to the chroot'
 | 
				
			||||||
    echo '    -m            Do not copy mirrorlist to the chroot'
 | 
					 | 
				
			||||||
    echo '    -s            Do not run setarch'
 | 
					    echo '    -s            Do not run setarch'
 | 
				
			||||||
    echo '    -h            This message'
 | 
					    echo '    -h            This message'
 | 
				
			||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
@@ -36,7 +33,7 @@ usage() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
orig_argv=("$0" "$@")
 | 
					orig_argv=("$0" "$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opts='hC:M:c:f:sm'
 | 
					opts='hC:M:c:f:s'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts ${opts} arg; do
 | 
					while getopts ${opts} arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
@@ -44,11 +41,12 @@ while getopts ${opts} arg; do
 | 
				
			|||||||
        M) makepkg_conf="$OPTARG" ;;
 | 
					        M) makepkg_conf="$OPTARG" ;;
 | 
				
			||||||
        c) cache_dir="$OPTARG" ;;
 | 
					        c) cache_dir="$OPTARG" ;;
 | 
				
			||||||
        f) files+=("$OPTARG") ;;
 | 
					        f) files+=("$OPTARG") ;;
 | 
				
			||||||
        s) nosetarch=true ;;
 | 
					        s) nosetarch=1 ;;
 | 
				
			||||||
        m) copy_mirrorlist=false; basestrap_args+=(-M) ;;
 | 
					 | 
				
			||||||
        h|?) usage ;;
 | 
					        h|?) usage ;;
 | 
				
			||||||
        *) error "invalid argument '%s'" "$arg"; usage ;;
 | 
					        *) error "invalid argument '%s'" "$arg"; usage ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
 | 
					    chroot_args+=("-$arg")
 | 
				
			||||||
 | 
					    [[ -v OPTARG ]] && chroot_args+=("$OPTARG")
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
shift $(($OPTIND - 1))
 | 
					shift $(($OPTIND - 1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -61,10 +59,10 @@ shift 1
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[ -z $working_dir ]] && die 'Please specify a working directory.'
 | 
					[[ -z $working_dir ]] && die 'Please specify a working directory.'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ -z $cache_dir ]]; then
 | 
					pacconf_cmd=$(command -v pacman-conf || command -v pacconf)
 | 
				
			||||||
    cache_dirs=($(pacman -v $cache_conf 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g'))
 | 
					
 | 
				
			||||||
else
 | 
					if (( ${#cache_dirs[@]} == 0 )); then
 | 
				
			||||||
    cache_dirs=(${cache_dir})
 | 
						mapfile -t cache_dirs < <($pacconf_cmd CacheDir)
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
umask 0022
 | 
					umask 0022
 | 
				
			||||||
@@ -90,26 +88,15 @@ for f in "${files[@]}"; do
 | 
				
			|||||||
    cp "$f" "$working_dir$f"
 | 
					    cp "$f" "$working_dir$f"
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_env=()
 | 
					basestrap -Mc ${pacman_conf:+-C "$pacman_conf"} "$working_dir" \
 | 
				
			||||||
while read -r varname; do
 | 
					    ${cache_dirs[@]/#/--cachedir=} "$@" || die 'Failed to install all packages'
 | 
				
			||||||
    _env+=("$varname=${!varname}")
 | 
					 | 
				
			||||||
done < <(declare -x | sed -r 's/^declare -x ([^=]*)=.*/\1/' | grep -i '_proxy$')
 | 
					 | 
				
			||||||
env -i "${_env[@]}" \
 | 
					 | 
				
			||||||
basestrap "${basestrap_args[@]}" ${pacman_conf:+-C "$pacman_conf"} "$working_dir" ${cache_dirs[@]/#/--cachedir=} "$@" || die 'Failed to install all packages'
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo "${CHROOTVERSION}" > "$working_dir/.artools"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ ! -f "$working_dir/etc/locale.gen.orig" ]];then
 | 
					 | 
				
			||||||
    mv "$working_dir/etc/locale.gen" "$working_dir/etc/locale.gen.orig"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
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"
 | 
				
			||||||
echo 'LANG=en_US.UTF-8' > "$working_dir/etc/locale.conf"
 | 
					echo 'LANG=en_US.UTF-8' > "$working_dir/etc/locale.conf"
 | 
				
			||||||
 | 
					echo "${CHROOTVERSION}" > "$working_dir/.artools"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dbus-uuidgen --ensure="$working_dir"/etc/machine-id
 | 
					dbus-uuidgen --ensure="$working_dir"/etc/machine-id
 | 
				
			||||||
 | 
					
 | 
				
			||||||
chroot_args=(${pacman_conf:+-C "$pacman_conf"} ${makepkg_conf:+-M "$makepkg_conf"} ${cache_dir:+-c "$cache_dir"})
 | 
					 | 
				
			||||||
${nosetarch} && chroot_args+=(${nosetarch:+-s})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
exec chroot-run \
 | 
					exec chroot-run \
 | 
				
			||||||
    "${chroot_args[@]}" \
 | 
					    "${chroot_args[@]}" \
 | 
				
			||||||
    "$working_dir" locale-gen
 | 
					    "$working_dir" locale-gen
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,10 +15,25 @@
 | 
				
			|||||||
. @libdir@/artools/util-base.sh
 | 
					. @libdir@/artools/util-base.sh
 | 
				
			||||||
. @libdir@/artools/util-iso.sh
 | 
					. @libdir@/artools/util-iso.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					gen_iso_fn(){
 | 
				
			||||||
 | 
					    local vars=("artix") name
 | 
				
			||||||
 | 
					    vars+=("${PROFILE}")
 | 
				
			||||||
 | 
					    vars+=("${INITSYS}")
 | 
				
			||||||
 | 
					    case "${REPOSITORY}" in
 | 
				
			||||||
 | 
					        'gremlins'|'goblins') vars+=("${REPOSITORY}") ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					    vars+=("${ISO_VERSION}")
 | 
				
			||||||
 | 
					    vars+=("${ARCH}")
 | 
				
			||||||
 | 
					    for n in ${vars[@]};do
 | 
				
			||||||
 | 
					        name=${name:-}${name:+-}${n}
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    echo $name
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
prepare_build(){
 | 
					prepare_build(){
 | 
				
			||||||
    timer_start=$(get_timer)
 | 
					    timer_start=$(get_timer)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    load_profile "${PROFILE}"
 | 
					    load_profile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local pacman_conf pac_file="pacman-default.conf"
 | 
					    local pacman_conf pac_file="pacman-default.conf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -33,7 +48,7 @@ prepare_build(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    iso_label="ARTIX_$(date +%Y%m)"
 | 
					    iso_label="ARTIX_$(date +%Y%m)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    mkchroot_args+=(-C ${pacman_conf} -m)
 | 
					    basestrap_args+=(-C ${pacman_conf})
 | 
				
			||||||
    work_dir=${CHROOTS_ISO}/${PROFILE}/${ARCH}
 | 
					    work_dir=${CHROOTS_ISO}/${PROFILE}/${ARCH}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    iso_dir="${ISO_POOL}/${PROFILE}"
 | 
					    iso_dir="${ISO_POOL}/${PROFILE}"
 | 
				
			||||||
@@ -73,7 +88,9 @@ build(){
 | 
				
			|||||||
        lock_close 9
 | 
					        lock_close 9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        rm -rf --one-file-system "${work_dir}"
 | 
					        rm -rf --one-file-system "${work_dir}"
 | 
				
			||||||
        clean_iso_root "${iso_root}"
 | 
					
 | 
				
			||||||
 | 
					        msg "Deleting isoroot [%s] ..." "${iso_root##*/}"
 | 
				
			||||||
 | 
					        rm -rf --one-file-system "${iso_root}"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ${iso_only}; then
 | 
					    if ${iso_only}; then
 | 
				
			||||||
@@ -101,10 +118,9 @@ clean_first=true
 | 
				
			|||||||
pretend=false
 | 
					pretend=false
 | 
				
			||||||
images_only=false
 | 
					images_only=false
 | 
				
			||||||
iso_only=false
 | 
					iso_only=false
 | 
				
			||||||
log=false
 | 
					 | 
				
			||||||
persist=false
 | 
					persist=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mkchroot_args=()
 | 
					basestrap_args=(-GMc)
 | 
				
			||||||
cmd=${0##*/}
 | 
					cmd=${0##*/}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
REPOSITORY=${cmd##*-}
 | 
					REPOSITORY=${cmd##*-}
 | 
				
			||||||
@@ -125,7 +141,6 @@ usage() {
 | 
				
			|||||||
    echo '    -x                 Build images only'
 | 
					    echo '    -x                 Build images only'
 | 
				
			||||||
    echo '    -z                 Generate iso only'
 | 
					    echo '    -z                 Generate iso only'
 | 
				
			||||||
    echo '                       Requires pre built images (-x)'
 | 
					    echo '                       Requires pre built images (-x)'
 | 
				
			||||||
    echo '    -l                 Log to file'
 | 
					 | 
				
			||||||
    echo '    -q                 Query settings and pretend build'
 | 
					    echo '    -q                 Query settings and pretend build'
 | 
				
			||||||
    echo '    -h                 This help'
 | 
					    echo '    -h                 This help'
 | 
				
			||||||
    echo ''
 | 
					    echo ''
 | 
				
			||||||
@@ -135,7 +150,7 @@ usage() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
orig_argv=("$0" "$@")
 | 
					orig_argv=("$0" "$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opts='p:r:t:i:g:czxmlqh'
 | 
					opts='p:r:t:i:g:czxmqh'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts "${opts}" arg; do
 | 
					while getopts "${opts}" arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
@@ -148,7 +163,6 @@ while getopts "${opts}" arg; do
 | 
				
			|||||||
        x) images_only=true ;;
 | 
					        x) images_only=true ;;
 | 
				
			||||||
        z) iso_only=true ;;
 | 
					        z) iso_only=true ;;
 | 
				
			||||||
        m) persist=true ;;
 | 
					        m) persist=true ;;
 | 
				
			||||||
        l) log=true ;;
 | 
					 | 
				
			||||||
        q) pretend=true ;;
 | 
					        q) pretend=true ;;
 | 
				
			||||||
        h|?) usage 0 ;;
 | 
					        h|?) usage 0 ;;
 | 
				
			||||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
					        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,7 @@ load_user_info
 | 
				
			|||||||
load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
 | 
					load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
create_first=false
 | 
					create_first=false
 | 
				
			||||||
 | 
					rebuild=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mkchrootpkg_args=(-c -n)
 | 
					mkchrootpkg_args=(-c -n)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -27,22 +28,11 @@ cmd=${0##*/}
 | 
				
			|||||||
repo=${cmd#*-}
 | 
					repo=${cmd#*-}
 | 
				
			||||||
base_devel=('base-devel')
 | 
					base_devel=('base-devel')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
case ${repo} in
 | 
					 | 
				
			||||||
    system|world|galaxy) repo='default' ;;
 | 
					 | 
				
			||||||
    lib32*) base_devel+=('multilib-devel') ;;
 | 
					 | 
				
			||||||
    galaxy-gremlins|galaxy-goblins) repo=${repo#*-} ;;
 | 
					 | 
				
			||||||
esac
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pacman_conf="${DATADIR}/pacman-${repo}.conf"
 | 
					 | 
				
			||||||
[[ -f ${USERCONFDIR}/artools/pacman-${repo}.conf ]] && pacman_conf="${USERCONFDIR}/artools/pacman-${repo}.conf"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
makepkg_conf="${DATADIR}/makepkg.conf"
 | 
					 | 
				
			||||||
[[ -f ${USERCONFDIR}/artools/makepkg.conf ]] && makepkg_conf="${USERCONFDIR}/artools/makepkg.conf"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
usage() {
 | 
					usage() {
 | 
				
			||||||
    echo "Usage: ${0##*/} [options] -- [mkchrootpkg_args]"
 | 
					    echo "Usage: ${0##*/} [options] -- [mkchrootpkg_args]"
 | 
				
			||||||
    echo "    -r <dir>           Create chroots in this directory"
 | 
					    echo "    -r <dir>           Create chroots in this directory"
 | 
				
			||||||
    echo '    -c                 Recreate the chroot before building'
 | 
					    echo '    -c                 Recreate the chroot before building'
 | 
				
			||||||
 | 
					    echo '    -m                 Major rebuild'
 | 
				
			||||||
    echo '    -h                 This help'
 | 
					    echo '    -h                 This help'
 | 
				
			||||||
    echo ''
 | 
					    echo ''
 | 
				
			||||||
    echo "Default mkchrootpkg_args args: ${mkchrootpkg_args[*]}"
 | 
					    echo "Default mkchrootpkg_args args: ${mkchrootpkg_args[*]}"
 | 
				
			||||||
@@ -52,17 +42,34 @@ usage() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
orig_argv=("$0" "$@")
 | 
					orig_argv=("$0" "$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opts='hcr:'
 | 
					opts='hcmr:'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts "${opts}" arg; do
 | 
					while getopts "${opts}" arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
        r) CHROOTS_PKG="$OPTARG" ;;
 | 
					        r) CHROOTS_PKG="$OPTARG" ;;
 | 
				
			||||||
        c) create_first=true ;;
 | 
					        c) create_first=true ;;
 | 
				
			||||||
 | 
					        m) rebuild=true ;;
 | 
				
			||||||
        h|?) usage 0 ;;
 | 
					        h|?) usage 0 ;;
 | 
				
			||||||
        *) echo "invalid argument '%s'" "${arg}"; usage 1 ;;
 | 
					        *) echo "invalid argument '%s'" "${arg}"; usage 1 ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ${rebuild};then
 | 
				
			||||||
 | 
					    repo='default'
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    case ${repo} in
 | 
				
			||||||
 | 
					        system|world|galaxy) repo='default' ;;
 | 
				
			||||||
 | 
					        lib32*) base_devel+=('multilib-devel') ;;
 | 
				
			||||||
 | 
					        galaxy-gremlins|galaxy-goblins) repo=${repo#*-} ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pacman_conf="${DATADIR}/pacman-${repo}.conf"
 | 
				
			||||||
 | 
					[[ -f ${USERCONFDIR}/artools/pacman-${repo}.conf ]] && pacman_conf="${USERCONFDIR}/artools/pacman-${repo}.conf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					makepkg_conf="${DATADIR}/makepkg.conf"
 | 
				
			||||||
 | 
					[[ -f ${USERCONFDIR}/artools/makepkg.conf ]] && makepkg_conf="${USERCONFDIR}/artools/makepkg.conf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
check_root SOURCE_DATE_EPOCH
 | 
					check_root SOURCE_DATE_EPOCH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mkchrootpkg_args+=("${@:$OPTIND}")
 | 
					mkchrootpkg_args+=("${@:$OPTIND}")
 | 
				
			||||||
@@ -94,7 +101,7 @@ else
 | 
				
			|||||||
        -C "${pacman_conf}" \
 | 
					        -C "${pacman_conf}" \
 | 
				
			||||||
        -M "${makepkg_conf}" \
 | 
					        -M "${makepkg_conf}" \
 | 
				
			||||||
        "${CHROOTS_PKG}/${repo}-${ARCH}/root" \
 | 
					        "${CHROOTS_PKG}/${repo}-${ARCH}/root" \
 | 
				
			||||||
        pacman -Syu --noconfirm || abort
 | 
					        pacman -Syuu --noconfirm || abort
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Always build official packages reproducibly
 | 
					# Always build official packages reproducibly
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,8 +29,9 @@ pull_tree_arch(){
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pull_tree_artix(){
 | 
					pull_tree_artix(){
 | 
				
			||||||
 | 
					    local repos=("$1")
 | 
				
			||||||
    cd ${TREE_DIR_ARTIX}
 | 
					    cd ${TREE_DIR_ARTIX}
 | 
				
			||||||
    for tree in ${TREE_NAMES_ARTIX[@]};do
 | 
					    for tree in ${repos[@]};do
 | 
				
			||||||
        if [[ -d ${tree} ]];then
 | 
					        if [[ -d ${tree} ]];then
 | 
				
			||||||
            config_tree "${tree}"
 | 
					            config_tree "${tree}"
 | 
				
			||||||
            cd ${tree}
 | 
					            cd ${tree}
 | 
				
			||||||
@@ -57,7 +58,7 @@ show_deps(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    [[ $arch == 'any' ]] && CARCH=any
 | 
					    [[ $arch == 'any' ]] && CARCH=any
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local archver=$(get_full_version $pkg)
 | 
					    local archver=$(get_full_version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg2 "repo: %s" "$repo"
 | 
					    msg2 "repo: %s" "$repo"
 | 
				
			||||||
    [[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}"
 | 
					    [[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}"
 | 
				
			||||||
@@ -72,20 +73,42 @@ show_deps(){
 | 
				
			|||||||
    [[ -n ${optdepends[@]} ]] && msg2 "optdepends: %s" "${optdepends[@]}"
 | 
					    [[ -n ${optdepends[@]} ]] && msg2 "optdepends: %s" "${optdepends[@]}"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from_arch(){
 | 
					subrepo_new(){
 | 
				
			||||||
    local pkg="$1" src= dest=
 | 
					    local group="${1:-$GROUP}" team="${2:-$TEAM}"
 | 
				
			||||||
    local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "$pkg")
 | 
					    local dest=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk
 | 
				
			||||||
    [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "$pkg"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local package=${TREE_DIR_ARCH}/$git_tree_arch/$pkg
 | 
					    cd ${TREE_DIR_ARTIX}/$group
 | 
				
			||||||
    local repo=$(find_repo "$package")
 | 
					
 | 
				
			||||||
 | 
					    local org=$(get_pkg_org "${PACKAGE}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    create_repo "${PACKAGE}" "$org"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    add_repo_to_team "${PACKAGE}" "$org" "$team"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    subrepo_clone "${PACKAGE}" "$org"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    prepare_dir "$dest"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    commit_jenkins_files "${PACKAGE}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from_arch(){
 | 
				
			||||||
 | 
					    local src= dest=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cd ${TREE_DIR_ARTIX}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
				
			||||||
 | 
					    [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local package=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE}
 | 
				
			||||||
 | 
					    local repo=$(find_repo "$package" "${staging}" "${unstable}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    src=$package/repos/$repo
 | 
					    src=$package/repos/$repo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "$pkg")
 | 
					    local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
				
			||||||
    local tree_dir=$(get_artix_tree "$pkg" "$git_tree_artix" "$git_tree_arch")
 | 
					    local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    dest=${TREE_DIR_ARTIX}/$tree_dir/$pkg/trunk
 | 
					    dest=${TREE_DIR_ARTIX}/$tree_dir/${PACKAGE}/trunk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg "tree: %s" "$tree_dir"
 | 
					    msg "tree: %s" "$tree_dir"
 | 
				
			||||||
    show_deps "$src" "$repo"
 | 
					    show_deps "$src" "$repo"
 | 
				
			||||||
@@ -95,35 +118,51 @@ from_arch(){
 | 
				
			|||||||
        cd ${TREE_DIR_ARTIX}/$git_tree_artix
 | 
					        cd ${TREE_DIR_ARTIX}/$git_tree_artix
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        . $dest/PKGBUILD 2>/dev/null
 | 
					        . $dest/PKGBUILD 2>/dev/null
 | 
				
			||||||
        local artixver=$(get_full_version $pkg)
 | 
					        local artixver=$(get_full_version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        msg2 "Artix Version: %s" "$artixver"
 | 
					        msg2 "Artix Version: %s" "$artixver"
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        subrepo_new "$pkg" "$tree_dir" "$git_tree_arch"
 | 
					        subrepo_new "$tree_dir" "$git_tree_arch"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg "Sync (%s) from [%s] to [%s]" "$pkg" "$git_tree_arch" "$tree_dir"
 | 
					    msg "Sync (%s) from [%s] to [%s]" "${PACKAGE}" "$git_tree_arch" "$tree_dir"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sync_pkg "$src" "$dest"
 | 
					    sync_pkg "$src" "$dest"
 | 
				
			||||||
    patch_pkg "$pkg"
 | 
					    patch_pkg "${PACKAGE}"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
view_build(){
 | 
					view_build(){
 | 
				
			||||||
    local pkg="$1" src=
 | 
					    local src=
 | 
				
			||||||
    local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "$pkg")
 | 
					    local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
				
			||||||
    [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "$pkg"
 | 
					    [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local pkg_path=${TREE_DIR_ARCH}/$git_tree_arch/$pkg
 | 
					    local pkg_path=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE}
 | 
				
			||||||
    local repo=$(find_repo "$pkg_path")
 | 
					    local repo=$(find_repo "$pkg_path" "${staging}" "${unstable}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    src=$pkg_path/repos/$repo
 | 
					    src=$pkg_path/repos/$repo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    show_deps "$src" "$repo"
 | 
					    show_deps "$src" "$repo"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					check_tree(){
 | 
				
			||||||
 | 
					    local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
				
			||||||
 | 
					    [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
				
			||||||
 | 
					    local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
				
			||||||
 | 
					    local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch")
 | 
				
			||||||
 | 
					    msg "tree_dir: %s" "$tree_dir"
 | 
				
			||||||
 | 
					    [[ -z $git_tree_artix ]] && msg2 "exists: %s" "no"
 | 
				
			||||||
 | 
					    [[ -n $git_tree_artix ]] && msg2 "exists: %s" "yes"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sync_repos(){
 | 
					sync_repos(){
 | 
				
			||||||
    ${sync_arch} && pull_tree_arch
 | 
					    ${sync_arch} && pull_tree_arch
 | 
				
			||||||
    ${sync_artix} && pull_tree_artix
 | 
					    if ${sync_artix};then
 | 
				
			||||||
 | 
					        if ${sync_group}; then
 | 
				
			||||||
 | 
					            pull_tree_artix "${GROUP}"
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            pull_tree_artix "${TREE_NAMES_ARTIX[*]}"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
load_user_info
 | 
					load_user_info
 | 
				
			||||||
@@ -139,6 +178,10 @@ import=false
 | 
				
			|||||||
view=false
 | 
					view=false
 | 
				
			||||||
createnew=false
 | 
					createnew=false
 | 
				
			||||||
conf=false
 | 
					conf=false
 | 
				
			||||||
 | 
					unstable=false
 | 
				
			||||||
 | 
					staging=true
 | 
				
			||||||
 | 
					sync_group=false
 | 
				
			||||||
 | 
					check=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PACKAGE=''
 | 
					PACKAGE=''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -150,14 +193,17 @@ usage() {
 | 
				
			|||||||
    echo '    -p <pkg>      Package name'
 | 
					    echo '    -p <pkg>      Package name'
 | 
				
			||||||
    echo '    -t <team>     Team name (only with -n)'
 | 
					    echo '    -t <team>     Team name (only with -n)'
 | 
				
			||||||
    echo "                  [default: ${TEAM}]"
 | 
					    echo "                  [default: ${TEAM}]"
 | 
				
			||||||
    echo '    -g <group>    Group name, the superrepo (only with -n)'
 | 
					    echo '    -g <group>    Group name, the superrepo (only with -n or -s)'
 | 
				
			||||||
    echo "                  [default: ${GROUP}]"
 | 
					    echo "                  [default: ${GROUP}]"
 | 
				
			||||||
    echo "    -s            Clone or pull repos"
 | 
					    echo "    -s            Clone or pull repos"
 | 
				
			||||||
    echo "    -z            Don't clone or pull arch repos"
 | 
					    echo "    -z            Don't clone or pull arch repos"
 | 
				
			||||||
    echo "    -y            Don't clone or pull artix repos"
 | 
					    echo "    -y            Don't clone or pull artix repos"
 | 
				
			||||||
    echo '    -i            Import a package from arch repos'
 | 
					    echo '    -i            Import a package from arch repos'
 | 
				
			||||||
    echo '    -n            Make new remote subrepo and clone it'
 | 
					    echo '    -n            Make new remote subrepo and clone it'
 | 
				
			||||||
    echo '    -v            View package depends'
 | 
					    echo '    -u            Include kde & gnome unstable (only with -i)'
 | 
				
			||||||
 | 
					    echo '    -w            Exclude staging (only with -i)'
 | 
				
			||||||
 | 
					    echo '    -v            Check if a package is in the artix tree(s)'
 | 
				
			||||||
 | 
					    echo '    -c            View package depends'
 | 
				
			||||||
    echo '    -h            This help'
 | 
					    echo '    -h            This help'
 | 
				
			||||||
    echo ''
 | 
					    echo ''
 | 
				
			||||||
    echo ''
 | 
					    echo ''
 | 
				
			||||||
@@ -166,18 +212,21 @@ usage() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
orig_argv=("$0" "$@")
 | 
					orig_argv=("$0" "$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opts='p:t:g:sinzyvh'
 | 
					opts='p:t:g:uwsinzycvh'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts "${opts}" arg; do
 | 
					while getopts "${opts}" arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
        p) PACKAGE="$OPTARG" ;;
 | 
					        p) PACKAGE="$OPTARG" ;;
 | 
				
			||||||
        t) TEAM="$OPTARG" ;;
 | 
					        t) TEAM="$OPTARG" ;;
 | 
				
			||||||
        g) GROUP="$OPTARG" ;;
 | 
					        g) GROUP="$OPTARG"; sync_group=true ;;
 | 
				
			||||||
        s) sync=true ;;
 | 
					        s) sync=true ;;
 | 
				
			||||||
        z) sync_arch=false ;;
 | 
					        z) sync_arch=false ;;
 | 
				
			||||||
        y) sync_artix=false ;;
 | 
					        y) sync_artix=false ;;
 | 
				
			||||||
        i) import=true ;;
 | 
					        i) import=true ;;
 | 
				
			||||||
        n) createnew=true ;;
 | 
					        n) createnew=true ;;
 | 
				
			||||||
 | 
					        w) staging=false ;;
 | 
				
			||||||
 | 
					        u) unstable=true ;;
 | 
				
			||||||
 | 
					        c) check=true ;;
 | 
				
			||||||
        v) view=true ;;
 | 
					        v) view=true ;;
 | 
				
			||||||
        h|?) usage 0 ;;
 | 
					        h|?) usage 0 ;;
 | 
				
			||||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
					        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
				
			||||||
@@ -191,8 +240,10 @@ prepare_dir "${TREE_DIR_ARCH}"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
${sync} && sync_repos
 | 
					${sync} && sync_repos
 | 
				
			||||||
 | 
					
 | 
				
			||||||
${view} && view_build "${PACKAGE}"
 | 
					${view} && view_build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
${import} && from_arch "${PACKAGE}"
 | 
					${check} && check_tree
 | 
				
			||||||
 | 
					
 | 
				
			||||||
${createnew} && subrepo_new "${PACKAGE}" "${GROUP}" "${TEAM}"
 | 
					${import} && from_arch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					${createnew} && subrepo_new
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										149
									
								
								bin/pkg/checkpkg.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										149
									
								
								bin/pkg/checkpkg.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,149 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Copyright (C) 2018-19 artoo@artixlinux.org
 | 
				
			||||||
 | 
					# Copyright (C) 2018 Artix Linux Developers
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation; version 2 of the License.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					. @libdir@/artools/util-base.sh
 | 
				
			||||||
 | 
					. @libdir@/artools/util-pkg.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					shopt -s extglob
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ -r '/etc/makepkg.conf' ]]; then
 | 
				
			||||||
 | 
						source '/etc/makepkg.conf'
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						die '/etc/makepkg.conf not found!'
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					load_user_info
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
 | 
				
			||||||
 | 
					load_vars /etc/makepkg.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					usage() {
 | 
				
			||||||
 | 
					    cat <<- _EOF_
 | 
				
			||||||
 | 
					        Usage: ${BASH_SOURCE[0]##*/} [OPTIONS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Searches for a locally built package corresponding to the PKGBUILD, and
 | 
				
			||||||
 | 
					        downloads the last version of that package from the Pacman repositories.
 | 
				
			||||||
 | 
					        It then compares the list of .so files provided by each version of the
 | 
				
			||||||
 | 
					        package and outputs if there are soname differences for the new package.
 | 
				
			||||||
 | 
					        A directory is also created using mktemp with files containing a file
 | 
				
			||||||
 | 
					        list for both packages and a library list for both packages.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OPTIONS
 | 
				
			||||||
 | 
					            -r, --rmdir     Remove the temporary directory
 | 
				
			||||||
 | 
					            -w, --warn      Print a warning in case of differences
 | 
				
			||||||
 | 
					            -h, --help      Show this help text
 | 
				
			||||||
 | 
					_EOF_
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RMDIR=0
 | 
				
			||||||
 | 
					WARN=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OPT_SHORT='rwh'
 | 
				
			||||||
 | 
					OPT_LONG=('rmdir' 'warn' 'help')
 | 
				
			||||||
 | 
					if ! parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@"; then
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					set  -- "${OPTRET[@]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					while :; do
 | 
				
			||||||
 | 
					    case $1 in
 | 
				
			||||||
 | 
					        -r|--rmdir)
 | 
				
			||||||
 | 
					            RMDIR=1
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        -w|--warn)
 | 
				
			||||||
 | 
					            WARN=1
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        -h|--help)
 | 
				
			||||||
 | 
					            usage
 | 
				
			||||||
 | 
					            exit 0
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        --)
 | 
				
			||||||
 | 
					            shift; break
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					    shift
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ ! -f PKGBUILD ]]; then
 | 
				
			||||||
 | 
					    die 'This must be run in the directory of a built package.'
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					. ./PKGBUILD
 | 
				
			||||||
 | 
					if [[ $arch == 'any' ]]; then
 | 
				
			||||||
 | 
					    CARCH='any'
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					STARTDIR=$(pwd)
 | 
				
			||||||
 | 
					(( RMDIR )) && trap 'rm -rf $TEMPDIR' EXIT INT TERM QUIT
 | 
				
			||||||
 | 
					TEMPDIR=$(mktemp -d --tmpdir checkpkg-script.XXXX)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for _pkgname in "${pkgname[@]}"; do
 | 
				
			||||||
 | 
					    comparepkg=$_pkgname
 | 
				
			||||||
 | 
					    pkgurl=
 | 
				
			||||||
 | 
					    target_pkgver=$(get_full_version)
 | 
				
			||||||
 | 
					    if ! pkgfile=$(find_cached_package "$_pkgname" "$target_pkgver" "$CARCH"); then
 | 
				
			||||||
 | 
					        die 'tarball not found for package: %s' "${_pkgname}-$target_pkgver"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ln -s "$pkgfile" "$TEMPDIR"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (( $# )); then
 | 
				
			||||||
 | 
					        case $1 in
 | 
				
			||||||
 | 
					            /*|*/*)
 | 
				
			||||||
 | 
					                pkgurl=file://$(readlink -m "$1") ;;
 | 
				
			||||||
 | 
					            *.pkg.tar*)
 | 
				
			||||||
 | 
					                pkgurl=$1 ;;
 | 
				
			||||||
 | 
					            '')
 | 
				
			||||||
 | 
					                ;;
 | 
				
			||||||
 | 
					            *)
 | 
				
			||||||
 | 
					                comparepkg=$1 ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					        shift
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    [[ -n $pkgurl ]] || pkgurl=$(pacman -Spdd --print-format '%l' --noconfirm "$comparepkg") ||
 | 
				
			||||||
 | 
					        die "Couldn't download previous package for %s." "$comparepkg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    oldpkg=${pkgurl##*/}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ ${oldpkg} = "${pkgfile##*/}" ]]; then
 | 
				
			||||||
 | 
					        die "The built package (%s) is the one in the repo right now!" "$_pkgname"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ $pkgurl = file://* || ( $pkgurl = /* && -f $pkgurl ) ]]; then
 | 
				
			||||||
 | 
					        ln -s "${pkgurl#file://}" "$TEMPDIR/$oldpkg"
 | 
				
			||||||
 | 
					    elif [[ -f "$PKGDEST/$oldpkg" ]]; then
 | 
				
			||||||
 | 
					        ln -s "$PKGDEST/$oldpkg" "$TEMPDIR/$oldpkg"
 | 
				
			||||||
 | 
					    elif [[ -f "$STARTDIR/$oldpkg" ]]; then
 | 
				
			||||||
 | 
					        ln -s "$STARTDIR/$oldpkg" "$TEMPDIR/$oldpkg"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        curl -fsLC - --retry 3 --retry-delay 3 -o "$TEMPDIR/$oldpkg" "$pkgurl"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    bsdtar tf "$TEMPDIR/$oldpkg" | sort > "$TEMPDIR/filelist-$_pkgname-old"
 | 
				
			||||||
 | 
					    bsdtar tf "$pkgfile" | sort > "$TEMPDIR/filelist-$_pkgname"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sdiff -s "$TEMPDIR/filelist-$_pkgname-old" "$TEMPDIR/filelist-$_pkgname"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    find-libprovides "$TEMPDIR/$oldpkg" 2>/dev/null | sort > "$TEMPDIR/libraries-$_pkgname-old"
 | 
				
			||||||
 | 
					    find-libprovides "$pkgfile" 2>/dev/null | sort > "$TEMPDIR/libraries-$_pkgname"
 | 
				
			||||||
 | 
					    if ! diff_output="$(sdiff -s "$TEMPDIR/libraries-$_pkgname-old" "$TEMPDIR/libraries-$_pkgname")"; then
 | 
				
			||||||
 | 
					        message="Sonames differ in $_pkgname!"
 | 
				
			||||||
 | 
					        (( WARN )) && warning "$message" || msg "$message"
 | 
				
			||||||
 | 
					        echo "$diff_output"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        msg "No soname differences for %s" "$_pkgname."
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(( RMDIR )) || msg "Files saved to %s" "$TEMPDIR"
 | 
				
			||||||
@@ -15,6 +15,22 @@
 | 
				
			|||||||
. @libdir@/artools/util-base.sh
 | 
					. @libdir@/artools/util-base.sh
 | 
				
			||||||
. @libdir@/artools/util-pkg.sh
 | 
					. @libdir@/artools/util-pkg.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					get_path(){
 | 
				
			||||||
 | 
					    local repo="$1" pkg=trunk/PKGBUILD
 | 
				
			||||||
 | 
					    if [[ $repo != trunk ]]; then
 | 
				
			||||||
 | 
					        [[ -f repos/$repo-${ARCH}/PKGBUILD ]] && pkg=repos/$repo-${ARCH}/PKGBUILD
 | 
				
			||||||
 | 
					        [[ -f repos/$repo-any/PKGBUILD ]] && pkg=repos/$repo-any/PKGBUILD
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    echo $pkg
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prepare_commit(){
 | 
				
			||||||
 | 
					    local dest="$1"
 | 
				
			||||||
 | 
					    [[ -d repos/$dest ]] && git rm -r repos/$dest
 | 
				
			||||||
 | 
					    [[ ! -d repos ]] && mkdir repos
 | 
				
			||||||
 | 
					    [[ ! -d repos/$dest ]] && mkdir repos/$dest
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
commit_pkg(){
 | 
					commit_pkg(){
 | 
				
			||||||
    local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
					    local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
				
			||||||
    if [[ -n ${git_tree} ]];then
 | 
					    if [[ -n ${git_tree} ]];then
 | 
				
			||||||
@@ -25,9 +41,13 @@ commit_pkg(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE}
 | 
					        cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        . trunk/PKGBUILD
 | 
					        local pkgbuild=$(get_path "${REPO_SRC}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        . $pkgbuild
 | 
				
			||||||
        [[ $arch == 'any' ]] && CARCH=any
 | 
					        [[ $arch == 'any' ]] && CARCH=any
 | 
				
			||||||
        local ver=$(get_full_version "${PACKAGE}")
 | 
					
 | 
				
			||||||
 | 
					        local version=$(get_full_version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        local commit_msg=""
 | 
					        local commit_msg=""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ${remove};then
 | 
					        if ${remove};then
 | 
				
			||||||
@@ -36,14 +56,14 @@ commit_pkg(){
 | 
				
			|||||||
                local pkg=${PACKAGE}
 | 
					                local pkg=${PACKAGE}
 | 
				
			||||||
                git rm -r trunk
 | 
					                git rm -r trunk
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
                local pkg="${PACKAGE}-$ver"
 | 
					                local pkg="${PACKAGE}-$version"
 | 
				
			||||||
                git rm -r repos/"${REPO_SRC}-$CARCH"
 | 
					                git rm -r repos/"${REPO_SRC}-$CARCH"
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
            commit_msg="[${REPO_SRC}] '$pkg' ${action}"
 | 
					            commit_msg="[${REPO_SRC}] '$pkg' ${action}"
 | 
				
			||||||
            msg "Action: %s" "$commit_msg"
 | 
					            msg "Action: %s" "$commit_msg"
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
            local action='modify'
 | 
					            local action='modify'
 | 
				
			||||||
            commit_msg="[${REPO_SRC}] '${PACKAGE}-$ver' ${action}"
 | 
					            commit_msg="[${REPO_SRC}] '${PACKAGE}-$version' ${action}"
 | 
				
			||||||
            msg "Action: %s" "$commit_msg"
 | 
					            msg "Action: %s" "$commit_msg"
 | 
				
			||||||
            git add .
 | 
					            git add .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -54,7 +74,7 @@ commit_pkg(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        ${push} && pull_tree "${git_tree}" "$head"
 | 
					        ${push} && pull_tree "${git_tree}" "$head"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        subrepo_pull "${PACKAGE}"
 | 
					#         subrepo_pull "${PACKAGE}"
 | 
				
			||||||
        subrepo_push "${PACKAGE}"
 | 
					        subrepo_push "${PACKAGE}"
 | 
				
			||||||
        subrepo_clean "${PACKAGE}"
 | 
					        subrepo_clean "${PACKAGE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -76,17 +96,18 @@ symlink_commit_pkg(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE}
 | 
					        cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        . trunk/PKGBUILD
 | 
					        local pkgbuild=$(get_path "${REPO_SRC}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        . $pkgbuild
 | 
				
			||||||
        [[ $arch == 'any' ]] && CARCH=any
 | 
					        [[ $arch == 'any' ]] && CARCH=any
 | 
				
			||||||
        local ver=$(get_full_version "${PACKAGE}")
 | 
					
 | 
				
			||||||
 | 
					        local version=$(get_full_version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if [[ ${REPO_SRC} == 'trunk' ]];then
 | 
					        if [[ ${REPO_SRC} == 'trunk' ]];then
 | 
				
			||||||
            local action='add'
 | 
					            local action='add'
 | 
				
			||||||
            local dest="${REPO_DEST}-$CARCH"
 | 
					            local dest="${REPO_DEST}-$CARCH"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            [[ -d repos/$dest ]] && git rm -r repos/$dest
 | 
					            prepare_commit "$dest"
 | 
				
			||||||
            [[ ! -d repos ]] && mkdir repos
 | 
					 | 
				
			||||||
            [[ ! -d repos/$dest ]] && mkdir repos/$dest
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            cp trunk/* repos/$dest/
 | 
					            cp trunk/* repos/$dest/
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
@@ -94,14 +115,12 @@ symlink_commit_pkg(){
 | 
				
			|||||||
            local src="${REPO_SRC}-$CARCH" dest="${REPO_DEST}-$CARCH"
 | 
					            local src="${REPO_SRC}-$CARCH" dest="${REPO_DEST}-$CARCH"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            [[ ! -f repos/$src/PKGBUILD ]] && die "%s does not exist!" "repos/$src/PKGBUILD"
 | 
					            [[ ! -f repos/$src/PKGBUILD ]] && die "%s does not exist!" "repos/$src/PKGBUILD"
 | 
				
			||||||
            [[ -d repos/$dest ]] && git rm -r repos/$dest
 | 
					            prepare_commit "$dest"
 | 
				
			||||||
            [[ ! -d repos ]] && mkdir repos
 | 
					 | 
				
			||||||
            [[ ! -d repos/$dest ]] && mkdir repos/$dest
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            cp repos/$src/* repos/$dest/
 | 
					            cp repos/$src/* repos/$dest/
 | 
				
			||||||
            git rm -r repos/$src
 | 
					            git rm -r repos/$src
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
        local commit_msg="[${REPO_SRC}] -> [${REPO_DEST}] '${PACKAGE}-$ver' ${action}"
 | 
					        local commit_msg="[${REPO_SRC}] -> [${REPO_DEST}] '${PACKAGE}-$version' ${action}"
 | 
				
			||||||
        msg "Action: %s" "$commit_msg"
 | 
					        msg "Action: %s" "$commit_msg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        git add .
 | 
					        git add .
 | 
				
			||||||
@@ -111,7 +130,7 @@ symlink_commit_pkg(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        ${push} && pull_tree "${git_tree}" "$head"
 | 
					        ${push} && pull_tree "${git_tree}" "$head"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        subrepo_pull "${PACKAGE}"
 | 
					#         subrepo_pull "${PACKAGE}"
 | 
				
			||||||
        subrepo_push "${PACKAGE}"
 | 
					        subrepo_push "${PACKAGE}"
 | 
				
			||||||
        subrepo_clean "${PACKAGE}"
 | 
					        subrepo_clean "${PACKAGE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,16 +16,16 @@
 | 
				
			|||||||
. @libdir@/artools/util-pkg.sh
 | 
					. @libdir@/artools/util-pkg.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
compare(){
 | 
					compare(){
 | 
				
			||||||
    local pkgpath="$1"
 | 
					    local pkgpath="$1" group="$2"
 | 
				
			||||||
    local pkg=${pkgpath##*/}
 | 
					    local pkg=${pkgpath##*/}
 | 
				
			||||||
    local artixrepo=$(find_repo "$package" "${staging}" "${unstable}")
 | 
					    local artixrepo=$(find_repo "$pkgpath" "${staging}" "${unstable}")
 | 
				
			||||||
    local artixshow=${artixrepo%-*}
 | 
					    local artixshow=${artixrepo%-*}
 | 
				
			||||||
    local pkgbuild=$pkgpath/repos/$artixrepo/PKGBUILD
 | 
					    local pkgbuild=$pkgpath/repos/$artixrepo/PKGBUILD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ -f $pkgbuild ]];then
 | 
					    if [[ -f $pkgbuild ]];then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        . $pkgbuild 2>/dev/null
 | 
					        . $pkgbuild 2>/dev/null
 | 
				
			||||||
        local artixver=$(get_full_version $pkg)
 | 
					        local artixver=$(get_full_version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        local archpath=$(get_import_path $pkg)
 | 
					        local archpath=$(get_import_path $pkg)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -36,7 +36,7 @@ compare(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if [[ -f $pkgbuild ]];then
 | 
					        if [[ -f $pkgbuild ]];then
 | 
				
			||||||
            . $pkgbuild 2>/dev/null
 | 
					            . $pkgbuild 2>/dev/null
 | 
				
			||||||
            local archver=$(get_full_version $pkg)
 | 
					            local archver=$(get_full_version)
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        local result=$(vercmp "$artixver" "$archver")
 | 
					        local result=$(vercmp "$artixver" "$archver")
 | 
				
			||||||
@@ -50,9 +50,9 @@ compare(){
 | 
				
			|||||||
                case $artixrepo in
 | 
					                case $artixrepo in
 | 
				
			||||||
                    *testing*|*staging*)
 | 
					                    *testing*|*staging*)
 | 
				
			||||||
                        if $repomatch;then
 | 
					                        if $repomatch;then
 | 
				
			||||||
                            msg_row "%-20s %-20s %-25s %-30s %-30s" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver"
 | 
					                            msg_row "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
				
			||||||
                        else
 | 
					                        else
 | 
				
			||||||
                            msg_row_notify "%-20s %-20s %-25s %-30s %-30s" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver"
 | 
					                            msg_row_notify "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
				
			||||||
                        fi
 | 
					                        fi
 | 
				
			||||||
                    ;;
 | 
					                    ;;
 | 
				
			||||||
                esac
 | 
					                esac
 | 
				
			||||||
@@ -61,14 +61,14 @@ compare(){
 | 
				
			|||||||
        elif ${upgrades};then
 | 
					        elif ${upgrades};then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if [ $result -eq -1 ];then
 | 
					            if [ $result -eq -1 ];then
 | 
				
			||||||
                msg_row_upgrade "%-20s %-20s %-25s %-30s %-30s" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver"
 | 
					                msg_row_upgrade "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        elif ${downgrades};then
 | 
					        elif ${downgrades};then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if [ $result -eq 1 ];then
 | 
					            if [ $result -eq 1 ];then
 | 
				
			||||||
                if [[ -n $archver ]] && [[ -n $archrepo ]];then
 | 
					                if [[ -n $archver ]] && [[ -n $archrepo ]];then
 | 
				
			||||||
                    msg_row_downgrade "%-20s %-20s %-25s %-30s %-30s" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver"
 | 
					                    msg_row_downgrade "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
				
			||||||
                fi
 | 
					                fi
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -101,7 +101,7 @@ check_db(){
 | 
				
			|||||||
            if [[ -f $pkgbuild ]];then
 | 
					            if [[ -f $pkgbuild ]];then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                . $pkgbuild 2>/dev/null
 | 
					                . $pkgbuild 2>/dev/null
 | 
				
			||||||
                local artixver=$(get_full_version $pkg)
 | 
					                local artixver=$(get_full_version)
 | 
				
			||||||
                local is_entry=false
 | 
					                local is_entry=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                for name in ${pkgname[@]};do
 | 
					                for name in ${pkgname[@]};do
 | 
				
			||||||
@@ -110,7 +110,7 @@ check_db(){
 | 
				
			|||||||
                        is_entry=true
 | 
					                        is_entry=true
 | 
				
			||||||
                    fi
 | 
					                    fi
 | 
				
			||||||
                    if ! $is_entry; then
 | 
					                    if ! $is_entry; then
 | 
				
			||||||
                        msg_row "%-20s %-35s %-20s %-10s" "$repo" "$name" "$artixver" "$is_entry"
 | 
					                        msg_row "${table2}" "$repo" "$name" "$artixver" "$is_entry"
 | 
				
			||||||
                    fi
 | 
					                    fi
 | 
				
			||||||
                done
 | 
					                done
 | 
				
			||||||
                unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase
 | 
					                unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase
 | 
				
			||||||
@@ -133,7 +133,7 @@ update_db_cache(){
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
query_db() {
 | 
					query_db() {
 | 
				
			||||||
    msg_table_header "%-20s %-45s %s" "Repo" "Package" "Library"
 | 
					    msg_table_header "${table3}" "Repo" "Package" "Library"
 | 
				
			||||||
    for repo in "${searchrepos[@]}"; do
 | 
					    for repo in "${searchrepos[@]}"; do
 | 
				
			||||||
        local prefix=
 | 
					        local prefix=
 | 
				
			||||||
        local db=${USERCACHEDIR}/${LINKSDBEXT}/${ARCH}/${repo}/
 | 
					        local db=${USERCACHEDIR}/${LINKSDBEXT}/${ARCH}/${repo}/
 | 
				
			||||||
@@ -143,7 +143,7 @@ query_db() {
 | 
				
			|||||||
                pkg=${pkg#${db}}
 | 
					                pkg=${pkg#${db}}
 | 
				
			||||||
                pkg="${pkg%/*}"
 | 
					                pkg="${pkg%/*}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                msg_row "%-20s %-45s %s" "${repo}" "${pkg}" "${match}"
 | 
					                msg_row "${table3}" "${repo}" "${pkg}" "${match}"
 | 
				
			||||||
            done < <(grep -rZ "${library}" "${db}") | sort -u
 | 
					            done < <(grep -rZ "${library}" "${db}") | sort -u
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
@@ -154,12 +154,12 @@ show_version_table(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if ${check};then
 | 
					    if ${check};then
 | 
				
			||||||
        ${sync} && update_db_cache
 | 
					        ${sync} && update_db_cache
 | 
				
			||||||
        msg_table_header "%-20s %-35s %-20s %-10s" "Repo" "Package" "Version" "Database"
 | 
					        msg_table_header "${table2}" "Repo" "Package" "Version" "Database"
 | 
				
			||||||
    elif ${query};then
 | 
					    elif ${query};then
 | 
				
			||||||
        ${sync} && update_db_cache
 | 
					        ${sync} && update_db_cache
 | 
				
			||||||
        query_db
 | 
					        query_db
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        msg_table_header "%-20s %-20s %-25s %-30s %-30s" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version"
 | 
					        msg_table_header "${table}" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" "Group"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for tree in ${TREE_NAMES_ARTIX[@]};do
 | 
					    for tree in ${TREE_NAMES_ARTIX[@]};do
 | 
				
			||||||
@@ -170,7 +170,7 @@ show_version_table(){
 | 
				
			|||||||
            if ${check};then
 | 
					            if ${check};then
 | 
				
			||||||
                check_db "$package"
 | 
					                check_db "$package"
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
                compare "$package"
 | 
					                compare "$package" "$tree"
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
        done
 | 
					        done
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
@@ -198,6 +198,10 @@ artix_repos=(
 | 
				
			|||||||
    'gnome-wobble' 'kde-wobble'
 | 
					    'gnome-wobble' 'kde-wobble'
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					readonly table="%-18s %-18s %-25s %-27s %-27s %-10s"
 | 
				
			||||||
 | 
					readonly table2="%-20s %-35s %-30s %-10s"
 | 
				
			||||||
 | 
					readonly table3="%-20s %-45s %s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
searchrepos=(${artix_repos[@]})
 | 
					searchrepos=(${artix_repos[@]})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
usage() {
 | 
					usage() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,6 +15,79 @@
 | 
				
			|||||||
. @libdir@/artools/util-base.sh
 | 
					. @libdir@/artools/util-base.sh
 | 
				
			||||||
. @libdir@/artools/util-pkg.sh
 | 
					. @libdir@/artools/util-pkg.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					find_cached_pkgfile() {
 | 
				
			||||||
 | 
					    local searchdirs=("$PKGDEST" "$PWD") results=()
 | 
				
			||||||
 | 
					    local pkg="$1"
 | 
				
			||||||
 | 
					    for dir in "${searchdirs[@]}"; do
 | 
				
			||||||
 | 
					        [[ -d $dir ]] || continue
 | 
				
			||||||
 | 
					        results+=$(find "$dir" -type f -name "$pkg")
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    case ${#results[*]} in
 | 
				
			||||||
 | 
					        0)
 | 
				
			||||||
 | 
					            return 1
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        1)
 | 
				
			||||||
 | 
					            printf '%s\n' "${results[0]}"
 | 
				
			||||||
 | 
					            return 0
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        *)
 | 
				
			||||||
 | 
					            error 'Multiple packages found:'
 | 
				
			||||||
 | 
					            printf '\t%s\n' "${results[@]}" >&2
 | 
				
			||||||
 | 
					            return 1
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					get_pkgbasename(){
 | 
				
			||||||
 | 
					    local pkg="$1"
 | 
				
			||||||
 | 
					    local pkgbasename name ver rel arch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pkgbasename=${pkg%.pkg.tar.?z}
 | 
				
			||||||
 | 
					    arch=${pkgbasename##*-}
 | 
				
			||||||
 | 
					    pkgbasename=${pkgbasename%-"$arch"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rel=${pkgbasename##*-}
 | 
				
			||||||
 | 
					    pkgbasename=${pkgbasename%-"$rel"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ver=${pkgbasename##*-}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    name=${pkgbasename%-"$ver"}
 | 
				
			||||||
 | 
					    echo $name
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					update_repo2(){
 | 
				
			||||||
 | 
					    local repo="$1"
 | 
				
			||||||
 | 
					    local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for name in ${passfiles[@]}; do
 | 
				
			||||||
 | 
					        if pkgfile=$(find_cached_pkgfile "$name");then
 | 
				
			||||||
 | 
					            info "Found: %s" "$name"
 | 
				
			||||||
 | 
					            if ${add_pkg};then
 | 
				
			||||||
 | 
					                local action='add'
 | 
				
			||||||
 | 
					                packages+=("$name")
 | 
				
			||||||
 | 
					#                 checkpkg "${pkgfile}" || return 2
 | 
				
			||||||
 | 
					                if ${sign_pkg};then
 | 
				
			||||||
 | 
					                    [[ -e ${pkgfile}.sig ]] && rm ${pkgfile}.sig
 | 
				
			||||||
 | 
					                    signfile ${pkgfile}
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					                ln -sf ${pkgfile}{,.sig} $repo_path/
 | 
				
			||||||
 | 
					            elif ${del_pkg};then
 | 
				
			||||||
 | 
					                local action='remove'
 | 
				
			||||||
 | 
					                packages+=("$(get_pkgbasename "$name")")
 | 
				
			||||||
 | 
					                [[ -e $repo_path/$name ]] && rm $repo_path/$name
 | 
				
			||||||
 | 
					                [[ -e $repo_path/$name.sig ]] && rm $repo_path/$name.sig
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    cd $repo_path
 | 
				
			||||||
 | 
					    if [[ -n $action ]]; then
 | 
				
			||||||
 | 
					        repo-$action -R $repo.${PKGDBEXT} ${packages[@]}
 | 
				
			||||||
 | 
					        ${linksdb} && links-$action $repo.${LINKSDBEXT} ${packages[@]}
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
update_repo(){
 | 
					update_repo(){
 | 
				
			||||||
    local repo="$1" pkgfile ver
 | 
					    local repo="$1" pkgfile ver
 | 
				
			||||||
    local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
 | 
					    local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
 | 
				
			||||||
@@ -29,7 +102,7 @@ update_repo(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    for name in ${pkgsearch[@]}; do
 | 
					    for name in ${pkgsearch[@]}; do
 | 
				
			||||||
        pkgarch=$(get_pkg_arch "$name")
 | 
					        pkgarch=$(get_pkg_arch "$name")
 | 
				
			||||||
        ver=$(get_full_version "$name")
 | 
					        ver=$(get_full_version)
 | 
				
			||||||
        if pkgfile=$(find_cached_package "$name" "$ver" "$pkgarch");then
 | 
					        if pkgfile=$(find_cached_package "$name" "$ver" "$pkgarch");then
 | 
				
			||||||
            local pkg=${pkgfile##*/}
 | 
					            local pkg=${pkgfile##*/}
 | 
				
			||||||
            info "Found: %s" "$pkg"
 | 
					            info "Found: %s" "$pkg"
 | 
				
			||||||
@@ -100,6 +173,12 @@ done
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
shift $(($OPTIND - 1))
 | 
					shift $(($OPTIND - 1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					passfiles="$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
prepare_dir "${REPOS_ROOT}"
 | 
					prepare_dir "${REPOS_ROOT}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ -n ${passfiles[@]} ]]; then
 | 
				
			||||||
 | 
					    update_repo2 "${dest_repo}"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
    update_repo "${dest_repo}"
 | 
					    update_repo "${dest_repo}"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										100
									
								
								bin/pkg/find-libdeps.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								bin/pkg/find-libdeps.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,100 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Copyright (C) 2018-19 artoo@artixlinux.org
 | 
				
			||||||
 | 
					# Copyright (C) 2018 Artix Linux Developers
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation; version 2 of the License.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					. @libdir@/artools/util-base.sh
 | 
				
			||||||
 | 
					. @libdir@/artools/util-pkg.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					shopt -s extglob
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IGNORE_INTERNAL=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ $1 = "--ignore-internal" ]]; then
 | 
				
			||||||
 | 
					    IGNORE_INTERNAL=1
 | 
				
			||||||
 | 
					    shift
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					script_mode=${BASH_SOURCE[0]##*/find-lib}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					case $script_mode in
 | 
				
			||||||
 | 
					    deps|provides) true;;
 | 
				
			||||||
 | 
					    *) die "Unknown mode %s" "$script_mode" ;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ -z $1 ]]; then
 | 
				
			||||||
 | 
					    echo "${0##*/} [options] <package file|extracted package dir>"
 | 
				
			||||||
 | 
					    echo "Options:"
 | 
				
			||||||
 | 
					    echo "    --ignore-internal      ignore internal libraries"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ -d $1 ]]; then
 | 
				
			||||||
 | 
					    pushd "$1" >/dev/null
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    setup_workdir
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    case ${script_mode} in
 | 
				
			||||||
 | 
					        deps) bsdtar -C "$WORKDIR" -xf "$1";;
 | 
				
			||||||
 | 
					        provides) bsdtar -C "$WORKDIR" -xf "$1" --include="*.so*";;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pushd "$WORKDIR" >/dev/null
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					process_sofile() {
 | 
				
			||||||
 | 
					    # extract the library name: libfoo.so
 | 
				
			||||||
 | 
					    soname="${sofile%.so?(+(.+([0-9])))}".so
 | 
				
			||||||
 | 
					    # extract the major version: 1
 | 
				
			||||||
 | 
					    soversion="${sofile##*\.so\.}"
 | 
				
			||||||
 | 
					    if [[ "$soversion" = "$sofile" ]] && ((IGNORE_INTERNAL)); then
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if ! in_array "${soname}=${soversion}-${soarch}" "${soobjects[@]}"; then
 | 
				
			||||||
 | 
					        # libfoo.so=1-64
 | 
				
			||||||
 | 
					        echo "${soname}=${soversion}-${soarch}"
 | 
				
			||||||
 | 
					        soobjects+=("${soname}=${soversion}-${soarch}")
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					case $script_mode in
 | 
				
			||||||
 | 
					    deps) find_args=(-perm -u+x);;
 | 
				
			||||||
 | 
					    provides) find_args=(-name '*.so*');;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					find . -type f "${find_args[@]}" | while read -r filename; do
 | 
				
			||||||
 | 
					    if [[ $script_mode = "provides" ]]; then
 | 
				
			||||||
 | 
					        # ignore if we don't have a shared object
 | 
				
			||||||
 | 
					        if ! LC_ALL=C readelf -h "$filename" 2>/dev/null | grep -q '.*Type:.*DYN (Shared object file).*'; then
 | 
				
			||||||
 | 
					            continue
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # get architecture of the file; if soarch is empty it's not an ELF binary
 | 
				
			||||||
 | 
					    soarch=$(LC_ALL=C readelf -h "$filename" 2>/dev/null | sed -n 's/.*Class.*ELF\(32\|64\)/\1/p')
 | 
				
			||||||
 | 
					    [[ -n $soarch ]] || continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ $script_mode = "provides" ]]; then
 | 
				
			||||||
 | 
					        # get the string binaries link to: libfoo.so.1.2 -> libfoo.so.1
 | 
				
			||||||
 | 
					        sofile=$(LC_ALL=C readelf -d "$filename" 2>/dev/null | sed -n 's/.*Library soname: \[\(.*\)\].*/\1/p')
 | 
				
			||||||
 | 
					        [[ -z $sofile ]] && sofile="${filename##*/}"
 | 
				
			||||||
 | 
					        process_sofile
 | 
				
			||||||
 | 
					    elif [[ $script_mode = "deps" ]]; then
 | 
				
			||||||
 | 
					        # process all libraries needed by the binary
 | 
				
			||||||
 | 
					        for sofile in $(LC_ALL=C readelf -d "$filename" 2>/dev/null | sed -nr 's/.*Shared library: \[(.*)\].*/\1/p'); do
 | 
				
			||||||
 | 
					            process_sofile
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					popd >/dev/null
 | 
				
			||||||
							
								
								
									
										50
									
								
								bin/pkg/finddeps.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								bin/pkg/finddeps.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Copyright (C) 2018-19 artoo@artixlinux.org
 | 
				
			||||||
 | 
					# Copyright (C) 2018 Artix Linux Developers
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation; version 2 of the License.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This program is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					. @libdir@/artools/util-base.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					match=$1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ -z $match ]]; then
 | 
				
			||||||
 | 
					    echo 'Usage: finddeps <depname>'
 | 
				
			||||||
 | 
					    echo ''
 | 
				
			||||||
 | 
					    echo 'Find packages that depend on a given depname.'
 | 
				
			||||||
 | 
					    echo 'Run this script from the top-level directory of your ABS tree.'
 | 
				
			||||||
 | 
					    echo ''
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					find . -type d -print0 2>/dev/null| while read -r -d '' d; do
 | 
				
			||||||
 | 
					    if [[ -f "$d/PKGBUILD" ]]; then
 | 
				
			||||||
 | 
					        pkgname=() depends=() makedepends=() optdepends=()
 | 
				
			||||||
 | 
					        # shellcheck source=PKGBUILD.proto
 | 
				
			||||||
 | 
					        . "$d/PKGBUILD"
 | 
				
			||||||
 | 
					        for dep in "${depends[@]}"; do
 | 
				
			||||||
 | 
					            # lose the version comparator, if any
 | 
				
			||||||
 | 
					            depname=${dep%%[<>=]*}
 | 
				
			||||||
 | 
					            [[ $depname = "$match" ]] && msg "$d (depends)"
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
 | 
					        for dep in "${makedepends[@]}"; do
 | 
				
			||||||
 | 
					            # lose the version comparator, if any
 | 
				
			||||||
 | 
					            depname=${dep%%[<>=]*}
 | 
				
			||||||
 | 
					            [[ $depname = "$match" ]] && msg "$d (makedepends)"
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
 | 
					        for dep in "${optdepends[@]/:*}"; do
 | 
				
			||||||
 | 
					            # lose the version comaparator, if any
 | 
				
			||||||
 | 
					            depname=${dep%%[<>=]*}
 | 
				
			||||||
 | 
					            [[ $depname = "$match" ]] && msg "$d (optdepends)"
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -16,6 +16,29 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
shopt -s nullglob
 | 
					shopt -s nullglob
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					default_makepkg_args=(--syncdeps --noconfirm --log --holdver --skipinteg)
 | 
				
			||||||
 | 
					makepkg_args=("${default_makepkg_args[@]}")
 | 
				
			||||||
 | 
					verifysource_args=()
 | 
				
			||||||
 | 
					chrootdir=
 | 
				
			||||||
 | 
					passeddir=
 | 
				
			||||||
 | 
					makepkg_user=
 | 
				
			||||||
 | 
					declare -a install_pkgs
 | 
				
			||||||
 | 
					declare -i ret=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					keepbuilddir=0
 | 
				
			||||||
 | 
					update_first=0
 | 
				
			||||||
 | 
					clean_first=0
 | 
				
			||||||
 | 
					run_namcap=0
 | 
				
			||||||
 | 
					temp_chroot=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bindmounts_ro=()
 | 
				
			||||||
 | 
					bindmounts_rw=()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					copy=$USER
 | 
				
			||||||
 | 
					[[ -n ${SUDO_USER:-} ]] && copy=$SUDO_USER
 | 
				
			||||||
 | 
					[[ -z "$copy" || $copy = root ]] && copy=copy
 | 
				
			||||||
 | 
					src_owner=${SUDO_USER:-$USER}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
usage() {
 | 
					usage() {
 | 
				
			||||||
    echo "Usage: ${0##*/} [options] -r <chrootdir> [--] [makepkg args]"
 | 
					    echo "Usage: ${0##*/} [options] -r <chrootdir> [--] [makepkg args]"
 | 
				
			||||||
    echo ' Run this script in a PKGBUILD dir to build a package inside a'
 | 
					    echo ' Run this script in a PKGBUILD dir to build a package inside a'
 | 
				
			||||||
@@ -118,11 +141,7 @@ delete_chroot() {
 | 
				
			|||||||
    stat_done
 | 
					    stat_done
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Usage: install_packages $copydir $pkgs...
 | 
					 | 
				
			||||||
install_packages() {
 | 
					install_packages() {
 | 
				
			||||||
    local copydir=$1
 | 
					 | 
				
			||||||
    local install_pkgs=("${@:2}")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    local -a pkgnames
 | 
					    local -a pkgnames
 | 
				
			||||||
    local ret
 | 
					    local ret
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -133,28 +152,19 @@ install_packages() {
 | 
				
			|||||||
        -r "${bindmounts_ro[@]}" \
 | 
					        -r "${bindmounts_ro[@]}" \
 | 
				
			||||||
        -r "${bindmounts_rw[@]}" \
 | 
					        -r "${bindmounts_rw[@]}" \
 | 
				
			||||||
        "$copydir" \
 | 
					        "$copydir" \
 | 
				
			||||||
        pacman -U --noconfirm -- "${pkgnames[@]/#//root/}"
 | 
					        bash -c 'yes y | pacman -U -- "$@"' -bash "${pkgnames[@]/#//root/}"
 | 
				
			||||||
    ret=$?
 | 
					    ret=$?
 | 
				
			||||||
    rm -- "${pkgnames[@]/#/$copydir/root/}"
 | 
					    rm -- "${pkgnames[@]/#/$copydir/root/}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return $ret
 | 
					    return $ret
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Usage: prepare_chroot $copydir $HOME $keepbuilddir $run_namcap
 | 
					 | 
				
			||||||
# Globals:
 | 
					 | 
				
			||||||
#  - MAKEFLAGS
 | 
					 | 
				
			||||||
#  - PACKAGER
 | 
					 | 
				
			||||||
prepare_chroot() {
 | 
					prepare_chroot() {
 | 
				
			||||||
    local copydir=$1
 | 
					    (( keepbuilddir )) || rm -rf "$copydir/build"
 | 
				
			||||||
    local USER_HOME=$2
 | 
					 | 
				
			||||||
    local keepbuilddir=$3
 | 
					 | 
				
			||||||
    local run_namcap=$4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [[ $keepbuilddir = true ]] || rm -rf "$copydir/build"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local builduser_uid builduser_gid
 | 
					    local builduser_uid builduser_gid
 | 
				
			||||||
    builduser_uid="${SUDO_UID:-$UID}"
 | 
					    builduser_uid="$(id -u "$makepkg_user")"
 | 
				
			||||||
    builduser_gid="$(id -g "$builduser_uid")"
 | 
					    builduser_gid="$(id -g "$makepkg_user")"
 | 
				
			||||||
    local install="install -o $builduser_uid -g $builduser_gid"
 | 
					    local install="install -o $builduser_uid -g $builduser_gid"
 | 
				
			||||||
    local x
 | 
					    local x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -189,7 +199,7 @@ EOF
 | 
				
			|||||||
        declare -p SOURCE_DATE_EPOCH 2>/dev/null || true
 | 
					        declare -p SOURCE_DATE_EPOCH 2>/dev/null || true
 | 
				
			||||||
        printf '_chrootbuild "$@" || exit\n'
 | 
					        printf '_chrootbuild "$@" || exit\n'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if [[ $run_namcap = true ]]; then
 | 
					        if (( run_namcap )); then
 | 
				
			||||||
            declare -f _chrootnamcap
 | 
					            declare -f _chrootnamcap
 | 
				
			||||||
            printf '_chrootnamcap || exit\n'
 | 
					            printf '_chrootnamcap || exit\n'
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
@@ -230,39 +240,21 @@ _chrootnamcap() {
 | 
				
			|||||||
    done
 | 
					    done
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Usage: download_sources $copydir $makepkg_user
 | 
					 | 
				
			||||||
# Globals:
 | 
					 | 
				
			||||||
#  - SRCDEST
 | 
					 | 
				
			||||||
download_sources() {
 | 
					download_sources() {
 | 
				
			||||||
    local copydir=$1
 | 
					 | 
				
			||||||
    local makepkg_user=$2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#     local builddir
 | 
					 | 
				
			||||||
#     builddir="$(mktemp -d)"
 | 
					 | 
				
			||||||
#     chown "$makepkg_user:" "$builddir"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    setup_workdir
 | 
					    setup_workdir
 | 
				
			||||||
    chown "$makepkg_user:" "$WORKDIR"
 | 
					    chown "$makepkg_user:" "$WORKDIR"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Ensure sources are downloaded
 | 
					    # Ensure sources are downloaded
 | 
				
			||||||
    sudo -u "$makepkg_user" --preserve-env=GNUPGHOME \
 | 
					    sudo -u "$makepkg_user" --preserve-env=GNUPGHOME \
 | 
				
			||||||
        env SRCDEST="$SRCDEST" BUILDDIR="$WORKDIR" \
 | 
					        env SRCDEST="$SRCDEST" BUILDDIR="$WORKDIR" \
 | 
				
			||||||
        makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o ||
 | 
					        makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o "${verifysource_args[@]}" ||
 | 
				
			||||||
        die "Could not download sources."
 | 
					        die "Could not download sources."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Clean up garbage from verifysource
 | 
					    # Clean up garbage from verifysource
 | 
				
			||||||
#     rm -rf "$builddir"
 | 
					#     rm -rf "$builddir"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Usage: move_products $copydir $owner
 | 
					 | 
				
			||||||
# Globals:
 | 
					 | 
				
			||||||
#  - PKGDEST
 | 
					 | 
				
			||||||
#  - LOGDEST
 | 
					 | 
				
			||||||
#  - SRCPKGDEST
 | 
					 | 
				
			||||||
move_products() {
 | 
					move_products() {
 | 
				
			||||||
    local copydir=$1
 | 
					 | 
				
			||||||
    local src_owner=$2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    local pkgfile
 | 
					    local pkgfile
 | 
				
			||||||
    for pkgfile in "$copydir"/pkgdest/*; do
 | 
					    for pkgfile in "$copydir"/pkgdest/*; do
 | 
				
			||||||
        chown "$src_owner" "$pkgfile"
 | 
					        chown "$src_owner" "$pkgfile"
 | 
				
			||||||
@@ -295,41 +287,19 @@ move_products() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
orig_argv=("$0" "$@")
 | 
					orig_argv=("$0" "$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main() {
 | 
					opts='hcur:I:l:nTD:d:U:'
 | 
				
			||||||
    default_makepkg_args=(--syncdeps --noconfirm --log --holdver --skipinteg)
 | 
					 | 
				
			||||||
    makepkg_args=("${default_makepkg_args[@]}")
 | 
					 | 
				
			||||||
    keepbuilddir=false
 | 
					 | 
				
			||||||
    update_first=false
 | 
					 | 
				
			||||||
    clean_first=false
 | 
					 | 
				
			||||||
    run_namcap=false
 | 
					 | 
				
			||||||
    temp_chroot=false
 | 
					 | 
				
			||||||
    chrootdir=
 | 
					 | 
				
			||||||
    passeddir=
 | 
					 | 
				
			||||||
    makepkg_user=
 | 
					 | 
				
			||||||
    declare -a install_pkgs
 | 
					 | 
				
			||||||
    declare -i ret=0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    bindmounts_ro=()
 | 
					 | 
				
			||||||
    bindmounts_rw=()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    copy=$USER
 | 
					 | 
				
			||||||
    [[ -n ${SUDO_USER:-} ]] && copy=$SUDO_USER
 | 
					 | 
				
			||||||
    [[ -z "$copy" || $copy = root ]] && copy=copy
 | 
					 | 
				
			||||||
    src_owner=${SUDO_USER:-$USER}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    local opts='hcur:I:l:nTD:d:U:'
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts "${opts}" arg; do
 | 
					while getopts "${opts}" arg; do
 | 
				
			||||||
    case "$arg" in
 | 
					    case "$arg" in
 | 
				
			||||||
            c) clean_first=true ;;
 | 
					        c) clean_first=1 ;;
 | 
				
			||||||
        D) bindmounts_ro+=("$OPTARG") ;;
 | 
					        D) bindmounts_ro+=("$OPTARG") ;;
 | 
				
			||||||
        d) bindmounts_rw+=("$OPTARG") ;;
 | 
					        d) bindmounts_rw+=("$OPTARG") ;;
 | 
				
			||||||
            u) update_first=true ;;
 | 
					        u) update_first=1 ;;
 | 
				
			||||||
        r) passeddir="$OPTARG" ;;
 | 
					        r) passeddir="$OPTARG" ;;
 | 
				
			||||||
        I) install_pkgs+=("$OPTARG") ;;
 | 
					        I) install_pkgs+=("$OPTARG") ;;
 | 
				
			||||||
        l) copy="$OPTARG" ;;
 | 
					        l) copy="$OPTARG" ;;
 | 
				
			||||||
            n) run_namcap=true; makepkg_args+=(--install) ;;
 | 
					        n) run_namcap=1; makepkg_args+=(--install) ;;
 | 
				
			||||||
            T) temp_chroot=true; copy+="-$$" ;;
 | 
					        T) temp_chroot=1; copy+="-$$" ;;
 | 
				
			||||||
        U) makepkg_user="$OPTARG" ;;
 | 
					        U) makepkg_user="$OPTARG" ;;
 | 
				
			||||||
        h|*) usage ;;
 | 
					        h|*) usage ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
@@ -356,12 +326,12 @@ main() {
 | 
				
			|||||||
makepkg_args+=("${@:$OPTIND}")
 | 
					makepkg_args+=("${@:$OPTIND}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# See if -R or -e was passed to makepkg
 | 
					# See if -R or -e was passed to makepkg
 | 
				
			||||||
    for arg in "${makepkg_args[@]}"; do
 | 
					for arg in "${@:$OPTIND}"; do
 | 
				
			||||||
    case ${arg%%=*} in
 | 
					    case ${arg%%=*} in
 | 
				
			||||||
            --repackage|--noextract) keepbuilddir=true; break ;;
 | 
					        --skip*|--holdver) verifysource_args+=("$arg") ;;
 | 
				
			||||||
            --repackage|--noextract) keepbuilddir=true; break ;;
 | 
					        --repackage|--noextract) keepbuilddir=1 ;;
 | 
				
			||||||
        --*) ;;
 | 
					        --*) ;;
 | 
				
			||||||
            -*R*|-*e*) keepbuilddir=true; break ;;
 | 
					        -*R*|-*e*) keepbuilddir=1 ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -381,23 +351,23 @@ main() {
 | 
				
			|||||||
# Lock the chroot we want to use. We'll keep this lock until we exit.
 | 
					# Lock the chroot we want to use. We'll keep this lock until we exit.
 | 
				
			||||||
lock 9 "$copydir.lock" "Locking chroot copy [%s]" "$copy"
 | 
					lock 9 "$copydir.lock" "Locking chroot copy [%s]" "$copy"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ ! -d $copydir ]] || $clean_first; then
 | 
					if [[ ! -d $copydir ]] || (( clean_first )); then
 | 
				
			||||||
    sync_chroot "$chrootdir/root" "$copydir" "$copy"
 | 
					    sync_chroot "$chrootdir/root" "$copydir" "$copy"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bindmounts_rw+=("${PWD}:/startdir" "${SRCDEST}:/srcdest")
 | 
					bindmounts_rw+=("${PWD}:/startdir" "${SRCDEST}:/srcdest")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $update_first && chroot-run \
 | 
					(( update_first )) && chroot-run \
 | 
				
			||||||
        -r "${bindmounts_ro[*]}" \
 | 
					        -r "${bindmounts_ro[*]}" \
 | 
				
			||||||
        -w "${bindmounts_rw[*]}" \
 | 
					        -w "${bindmounts_rw[*]}" \
 | 
				
			||||||
        "$copydir" \
 | 
					        "$copydir" \
 | 
				
			||||||
            pacman -Syu --noconfirm
 | 
					        pacman -Syuu --noconfirm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ -n ${install_pkgs[*]:-} ]]; then
 | 
					if [[ -n ${install_pkgs[*]:-} ]]; then
 | 
				
			||||||
        install_packages "$copydir" "${install_pkgs[@]}"
 | 
					    install_packages
 | 
				
			||||||
    ret=$?
 | 
					    ret=$?
 | 
				
			||||||
        # If there is no PKGBUILD we have done
 | 
					    # If there is no PKGBUILD we are done
 | 
				
			||||||
        [[ -f PKGBUILD ]] || return $ret
 | 
					    [[ -f PKGBUILD ]] || exit $ret
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ "$(id -u "$makepkg_user")" == 0 ]]; then
 | 
					if [[ "$(id -u "$makepkg_user")" == 0 ]]; then
 | 
				
			||||||
@@ -405,9 +375,9 @@ main() {
 | 
				
			|||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    download_sources "$copydir" "$makepkg_user"
 | 
					download_sources
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    prepare_chroot "$copydir" "$USER_HOME" "$keepbuilddir" "$run_namcap"
 | 
					prepare_chroot
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if chroot-run \
 | 
					if chroot-run \
 | 
				
			||||||
    -r "${bindmounts_ro[*]}" \
 | 
					    -r "${bindmounts_ro[*]}" \
 | 
				
			||||||
@@ -415,15 +385,15 @@ main() {
 | 
				
			|||||||
    "$copydir" \
 | 
					    "$copydir" \
 | 
				
			||||||
    /chrootbuild "${makepkg_args[@]}"
 | 
					    /chrootbuild "${makepkg_args[@]}"
 | 
				
			||||||
then
 | 
					then
 | 
				
			||||||
        move_products "$copydir" "$src_owner"
 | 
					    move_products
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
    (( ret += 1 ))
 | 
					    (( ret += 1 ))
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $temp_chroot && delete_chroot "$copydir" "$copy"
 | 
					(( temp_chroot )) && delete_chroot "$copydir" "$copy"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (( ret != 0 )); then
 | 
					if (( ret != 0 )); then
 | 
				
			||||||
        if $temp_chroot; then
 | 
					    if (( temp_chroot )); then
 | 
				
			||||||
        die "Build failed"
 | 
					        die "Build failed"
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        die "Build failed, check %s/build" "$copydir"
 | 
					        die "Build failed, check %s/build" "$copydir"
 | 
				
			||||||
@@ -431,6 +401,4 @@ main() {
 | 
				
			|||||||
else
 | 
					else
 | 
				
			||||||
    true
 | 
					    true
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
main "$@"
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,29 +15,39 @@
 | 
				
			|||||||
# gitea user access token
 | 
					# gitea user access token
 | 
				
			||||||
# GIT_TOKEN=''
 | 
					# GIT_TOKEN=''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# HOST_TREE_ARTIX='gitea@gitea.artixlinux.org:artix'
 | 
					# HOST_TREE_ARTIX='gitea@gitea.artixlinux.org:artixlinux'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# TREE_DIR_ARTIX=${WORKSPACE_DIR}/artixlinux
 | 
					# TREE_DIR_ARTIX=${WORKSPACE_DIR}/artixlinux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# customize buildtree, packages and community should be enabled
 | 
				
			||||||
# TREE_NAMES_ARTIX=(
 | 
					# TREE_NAMES_ARTIX=(
 | 
				
			||||||
#         packages
 | 
					#         packages
 | 
				
			||||||
#         community
 | 
					#         community
 | 
				
			||||||
#         packages-kernel
 | 
					#         packages-kernel
 | 
				
			||||||
#         packages-openrc
 | 
					#         packages-openrc
 | 
				
			||||||
#         packages-runit
 | 
					#         packages-runit
 | 
				
			||||||
 | 
					#         packages-s6
 | 
				
			||||||
 | 
					#         packages-media
 | 
				
			||||||
#         packages-xorg
 | 
					#         packages-xorg
 | 
				
			||||||
#         packages-python
 | 
					#         packages-python
 | 
				
			||||||
#         packages-perl
 | 
					#         packages-perl
 | 
				
			||||||
 | 
					#         packages-java
 | 
				
			||||||
#         packages-qt5
 | 
					#         packages-qt5
 | 
				
			||||||
 | 
					#         packages-devel
 | 
				
			||||||
#         packages-ruby
 | 
					#         packages-ruby
 | 
				
			||||||
 | 
					#         packages-gtk
 | 
				
			||||||
 | 
					#         packages-gnome
 | 
				
			||||||
 | 
					#         packages-cinnamon
 | 
				
			||||||
 | 
					#         packages-lxqt
 | 
				
			||||||
 | 
					#         packages-mate
 | 
				
			||||||
 | 
					#         packages-kde
 | 
				
			||||||
 | 
					#         packages-xfce
 | 
				
			||||||
# )
 | 
					# )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# HOST_TREE_ARCH=git://git.archlinux.org/svntogit
 | 
					# HOST_TREE_ARCH=git://git.archlinux.org/svntogit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# TREE_DIR_ARCH=${WORKSPACE_DIR}/archlinux
 | 
					# TREE_DIR_ARCH=${WORKSPACE_DIR}/archlinux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# TREE_NAMES_ARCH=(packages community)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# default repos root
 | 
					# default repos root
 | 
				
			||||||
# REPOS_ROOT=${WORKSPACE_DIR}/repos
 | 
					# REPOS_ROOT=${WORKSPACE_DIR}/repos
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -54,7 +64,7 @@
 | 
				
			|||||||
# the dist release; default: auto
 | 
					# the dist release; default: auto
 | 
				
			||||||
# ISO_VERSION=$(date +%Y%m%d)
 | 
					# ISO_VERSION=$(date +%Y%m%d)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# possible values: openrc, runit (s6 not yet supported)
 | 
					# possible values: openrc, runit, s6
 | 
				
			||||||
# INITSYS="openrc"
 | 
					# INITSYS="openrc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# gpg key; leave empty or commented to skip sfs signing
 | 
					# gpg key; leave empty or commented to skip sfs signing
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,63 +0,0 @@
 | 
				
			|||||||
accountsservice
 | 
					 | 
				
			||||||
cairo
 | 
					 | 
				
			||||||
colord
 | 
					 | 
				
			||||||
cppunit
 | 
					 | 
				
			||||||
dbus
 | 
					 | 
				
			||||||
dbus-glib
 | 
					 | 
				
			||||||
dbus-python
 | 
					 | 
				
			||||||
desktop-file-utils
 | 
					 | 
				
			||||||
fontconfig
 | 
					 | 
				
			||||||
geoclue2
 | 
					 | 
				
			||||||
glu
 | 
					 | 
				
			||||||
gst-plugins-bad
 | 
					 | 
				
			||||||
gst-plugins-base
 | 
					 | 
				
			||||||
gst-plugins-good
 | 
					 | 
				
			||||||
gst-plugins-ugly
 | 
					 | 
				
			||||||
gstreamer
 | 
					 | 
				
			||||||
harfbuzz
 | 
					 | 
				
			||||||
hicolor-icon-theme
 | 
					 | 
				
			||||||
libatasmart
 | 
					 | 
				
			||||||
libbsd
 | 
					 | 
				
			||||||
libdrm
 | 
					 | 
				
			||||||
libevdev
 | 
					 | 
				
			||||||
libinput
 | 
					 | 
				
			||||||
libmbim
 | 
					 | 
				
			||||||
libnice
 | 
					 | 
				
			||||||
libqmi
 | 
					 | 
				
			||||||
libvdpau
 | 
					 | 
				
			||||||
libxcb
 | 
					 | 
				
			||||||
libxft
 | 
					 | 
				
			||||||
libxi
 | 
					 | 
				
			||||||
media-player-info
 | 
					 | 
				
			||||||
mesa
 | 
					 | 
				
			||||||
modemmanager
 | 
					 | 
				
			||||||
networkmanager
 | 
					 | 
				
			||||||
orc
 | 
					 | 
				
			||||||
p11-kit
 | 
					 | 
				
			||||||
polkit
 | 
					 | 
				
			||||||
poppler
 | 
					 | 
				
			||||||
poppler-data
 | 
					 | 
				
			||||||
pulseaudio
 | 
					 | 
				
			||||||
pyxdg
 | 
					 | 
				
			||||||
r
 | 
					 | 
				
			||||||
sdl
 | 
					 | 
				
			||||||
shared-mime-info
 | 
					 | 
				
			||||||
sound-theme-freedesktop
 | 
					 | 
				
			||||||
startup-notification
 | 
					 | 
				
			||||||
systemdcompat
 | 
					 | 
				
			||||||
telepathy-glib
 | 
					 | 
				
			||||||
ttf-dejavu
 | 
					 | 
				
			||||||
udisks2
 | 
					 | 
				
			||||||
upower
 | 
					 | 
				
			||||||
wayland
 | 
					 | 
				
			||||||
wayland-protocols
 | 
					 | 
				
			||||||
webrtc-audio-processing
 | 
					 | 
				
			||||||
xcb-proto
 | 
					 | 
				
			||||||
xcb-util
 | 
					 | 
				
			||||||
xcb-util-cursor
 | 
					 | 
				
			||||||
xcb-util-image
 | 
					 | 
				
			||||||
xcb-util-keysyms
 | 
					 | 
				
			||||||
xcb-util-renderutil
 | 
					 | 
				
			||||||
xcb-util-wm
 | 
					 | 
				
			||||||
xdg-user-dirs
 | 
					 | 
				
			||||||
xdg-utils
 | 
					 | 
				
			||||||
@@ -1,63 +0,0 @@
 | 
				
			|||||||
adwaita-icon-theme
 | 
					 | 
				
			||||||
atk
 | 
					 | 
				
			||||||
at-spi2-atk
 | 
					 | 
				
			||||||
at-spi2-core
 | 
					 | 
				
			||||||
babl
 | 
					 | 
				
			||||||
cantarell-fonts
 | 
					 | 
				
			||||||
cogl
 | 
					 | 
				
			||||||
dconf
 | 
					 | 
				
			||||||
flatpak
 | 
					 | 
				
			||||||
gamin
 | 
					 | 
				
			||||||
gcab
 | 
					 | 
				
			||||||
gconf
 | 
					 | 
				
			||||||
gcr
 | 
					 | 
				
			||||||
gdk-pixbuf2
 | 
					 | 
				
			||||||
gegl02
 | 
					 | 
				
			||||||
git
 | 
					 | 
				
			||||||
glade
 | 
					 | 
				
			||||||
glib2
 | 
					 | 
				
			||||||
glib-networking
 | 
					 | 
				
			||||||
gnome-common
 | 
					 | 
				
			||||||
gnome-keyring
 | 
					 | 
				
			||||||
gobject-introspection
 | 
					 | 
				
			||||||
gsettings-desktop-schemas
 | 
					 | 
				
			||||||
gssdp
 | 
					 | 
				
			||||||
gtk2
 | 
					 | 
				
			||||||
gtk3
 | 
					 | 
				
			||||||
gtk-doc
 | 
					 | 
				
			||||||
gtksourceview3
 | 
					 | 
				
			||||||
gupnp
 | 
					 | 
				
			||||||
gupnp-igd
 | 
					 | 
				
			||||||
gvfs
 | 
					 | 
				
			||||||
json-glib
 | 
					 | 
				
			||||||
libcloudproviders
 | 
					 | 
				
			||||||
libcroco
 | 
					 | 
				
			||||||
libgee
 | 
					 | 
				
			||||||
libglade
 | 
					 | 
				
			||||||
libgnome-keyring
 | 
					 | 
				
			||||||
libgudev
 | 
					 | 
				
			||||||
libnotify
 | 
					 | 
				
			||||||
librsvg
 | 
					 | 
				
			||||||
libsecret
 | 
					 | 
				
			||||||
libsoup
 | 
					 | 
				
			||||||
libxml2
 | 
					 | 
				
			||||||
libxslt
 | 
					 | 
				
			||||||
meld
 | 
					 | 
				
			||||||
mobile-broadband-provider-info
 | 
					 | 
				
			||||||
modemmanager
 | 
					 | 
				
			||||||
networkmanager
 | 
					 | 
				
			||||||
network-manager-applet
 | 
					 | 
				
			||||||
orca
 | 
					 | 
				
			||||||
ostree
 | 
					 | 
				
			||||||
pango
 | 
					 | 
				
			||||||
pyatspi
 | 
					 | 
				
			||||||
pygobject
 | 
					 | 
				
			||||||
pygobject2
 | 
					 | 
				
			||||||
pygtk
 | 
					 | 
				
			||||||
rest
 | 
					 | 
				
			||||||
ttf-bitstream-vera
 | 
					 | 
				
			||||||
vala
 | 
					 | 
				
			||||||
vte
 | 
					 | 
				
			||||||
vte3
 | 
					 | 
				
			||||||
yelp-tools
 | 
					 | 
				
			||||||
yelp-xsl
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
phonon-gstreamer
 | 
					 | 
				
			||||||
polkit-qt
 | 
					 | 
				
			||||||
extra-cmake-modules
 | 
					 | 
				
			||||||
phonon
 | 
					 | 
				
			||||||
@@ -1,17 +0,0 @@
 | 
				
			|||||||
linux
 | 
					 | 
				
			||||||
nvidia
 | 
					 | 
				
			||||||
nvidia-utils
 | 
					 | 
				
			||||||
acpi_call
 | 
					 | 
				
			||||||
bbswitch
 | 
					 | 
				
			||||||
broadcom-wl
 | 
					 | 
				
			||||||
tp_smapi
 | 
					 | 
				
			||||||
r8168
 | 
					 | 
				
			||||||
virtualbox-modules-artix
 | 
					 | 
				
			||||||
linux-lts
 | 
					 | 
				
			||||||
nvidia-lts
 | 
					 | 
				
			||||||
acpi_call-lts
 | 
					 | 
				
			||||||
bbswitch-lts
 | 
					 | 
				
			||||||
broadcom-wl-lts
 | 
					 | 
				
			||||||
tp_smapi-lts
 | 
					 | 
				
			||||||
r8168-lts
 | 
					 | 
				
			||||||
linux-firmware
 | 
					 | 
				
			||||||
@@ -1,31 +0,0 @@
 | 
				
			|||||||
lxqt-about
 | 
					 | 
				
			||||||
lxqt-admin
 | 
					 | 
				
			||||||
lxqt-config
 | 
					 | 
				
			||||||
lxqt-globalkeys
 | 
					 | 
				
			||||||
lxqt-notificationd
 | 
					 | 
				
			||||||
lxqt-openssh-askpass
 | 
					 | 
				
			||||||
lxqt-panel
 | 
					 | 
				
			||||||
lxqt-policykit
 | 
					 | 
				
			||||||
lxqt-powermanagement
 | 
					 | 
				
			||||||
lxqt-qtplugin
 | 
					 | 
				
			||||||
lxqt-runner
 | 
					 | 
				
			||||||
lxqt-session
 | 
					 | 
				
			||||||
lxqt-sudo
 | 
					 | 
				
			||||||
lxqt-themes
 | 
					 | 
				
			||||||
lxqt-build-tools
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
compton-conf
 | 
					 | 
				
			||||||
lximage-qt
 | 
					 | 
				
			||||||
obconf-qt
 | 
					 | 
				
			||||||
openbox
 | 
					 | 
				
			||||||
pcmanfm-qt
 | 
					 | 
				
			||||||
qterminal
 | 
					 | 
				
			||||||
liblxqt
 | 
					 | 
				
			||||||
libqtxdg
 | 
					 | 
				
			||||||
lxmenu-data
 | 
					 | 
				
			||||||
libfm-qt
 | 
					 | 
				
			||||||
libfm
 | 
					 | 
				
			||||||
qtermwidget
 | 
					 | 
				
			||||||
libsysstat
 | 
					 | 
				
			||||||
libstatgrab
 | 
					 | 
				
			||||||
qps
 | 
					 | 
				
			||||||
@@ -1,37 +0,0 @@
 | 
				
			|||||||
libdmx
 | 
					 | 
				
			||||||
libfontenc
 | 
					 | 
				
			||||||
libice
 | 
					 | 
				
			||||||
libpciaccess
 | 
					 | 
				
			||||||
libsm
 | 
					 | 
				
			||||||
libx11
 | 
					 | 
				
			||||||
libxau
 | 
					 | 
				
			||||||
libxaw
 | 
					 | 
				
			||||||
libxcomposite
 | 
					 | 
				
			||||||
libxcursor
 | 
					 | 
				
			||||||
libxdamage
 | 
					 | 
				
			||||||
libxdmcp
 | 
					 | 
				
			||||||
libxext
 | 
					 | 
				
			||||||
libxfixes
 | 
					 | 
				
			||||||
libxfont2
 | 
					 | 
				
			||||||
libxi|libxft
 | 
					 | 
				
			||||||
libxinerama
 | 
					 | 
				
			||||||
libxkbfile
 | 
					 | 
				
			||||||
libxkbui
 | 
					 | 
				
			||||||
libxmu
 | 
					 | 
				
			||||||
libxpm
 | 
					 | 
				
			||||||
libxrandr
 | 
					 | 
				
			||||||
libxrender
 | 
					 | 
				
			||||||
libxres
 | 
					 | 
				
			||||||
libxshmfence
 | 
					 | 
				
			||||||
libxss
 | 
					 | 
				
			||||||
libxt
 | 
					 | 
				
			||||||
libxtst
 | 
					 | 
				
			||||||
libxv
 | 
					 | 
				
			||||||
libxvmc
 | 
					 | 
				
			||||||
libxxf86vm
 | 
					 | 
				
			||||||
pixman
 | 
					 | 
				
			||||||
xbitmaps
 | 
					 | 
				
			||||||
xkeyboard-config
 | 
					 | 
				
			||||||
xorgproto
 | 
					 | 
				
			||||||
xterm
 | 
					 | 
				
			||||||
xtrans
 | 
					 | 
				
			||||||
@@ -162,7 +162,7 @@ artix_mount_handler() {
 | 
				
			|||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ "${checksum}" == "y" ]]; then
 | 
					    if [[ "${checksum}" == "y" ]]; then
 | 
				
			||||||
        for fs in rootfs desktopfs livefs;do
 | 
					        for fs in rootfs livefs;do
 | 
				
			||||||
            if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs" ]]; then
 | 
					            if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs" ]]; then
 | 
				
			||||||
                if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sha512" ]]; then
 | 
					                if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sha512" ]]; then
 | 
				
			||||||
                    msg -n ":: Self-test requested, please wait..."
 | 
					                    msg -n ":: Self-test requested, please wait..."
 | 
				
			||||||
@@ -182,7 +182,7 @@ artix_mount_handler() {
 | 
				
			|||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ "${verify}" == "y" ]]; then
 | 
					    if [[ "${verify}" == "y" ]]; then
 | 
				
			||||||
        for fs in rootfs desktopfs livefs;do
 | 
					        for fs in rootfs livefs;do
 | 
				
			||||||
            if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs" ]]; then
 | 
					            if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs" ]]; then
 | 
				
			||||||
                if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs.sig" ]]; then
 | 
					                if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs.sig" ]]; then
 | 
				
			||||||
                    msg -n ":: Signature verification requested, please wait..."
 | 
					                    msg -n ":: Signature verification requested, please wait..."
 | 
				
			||||||
@@ -225,7 +225,7 @@ artix_mount_handler() {
 | 
				
			|||||||
    local dest_sfs="/run/artix/sfs" dest_img="/run/artix/img"
 | 
					    local dest_sfs="/run/artix/sfs" dest_img="/run/artix/img"
 | 
				
			||||||
    local lower_dir
 | 
					    local lower_dir
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for sfs in livefs desktopfs rootfs;do
 | 
					    for sfs in livefs rootfs;do
 | 
				
			||||||
        if [[ -f "${src}/${sfs}.sfs" ]]; then
 | 
					        if [[ -f "${src}/${sfs}.sfs" ]]; then
 | 
				
			||||||
            _mnt_sfs "${src}/${sfs}.sfs" "${dest_sfs}/${sfs}"
 | 
					            _mnt_sfs "${src}/${sfs}.sfs" "${dest_sfs}/${sfs}"
 | 
				
			||||||
            if [[ -f "${dest_sfs}/${sfs}/${sfs}.img" ]]; then
 | 
					            if [[ -f "${dest_sfs}/${sfs}/${sfs}.img" ]]; then
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,7 +40,7 @@ artix_pxe_http_mount_handler () {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    local _src=${artix_http_srv}${artixbasedir}/${arch}
 | 
					    local _src=${artix_http_srv}${artixbasedir}/${arch}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for sfs in livefs desktopfs rootfs;do
 | 
					    for sfs in livefs rootfs;do
 | 
				
			||||||
        if [[ ! -z "$( curl -s --head "${_src}/${sfs}.sfs" | grep "OK" )" ]]; then
 | 
					        if [[ ! -z "$( curl -s --head "${_src}/${sfs}.sfs" | grep "OK" )" ]]; then
 | 
				
			||||||
            _curl_get "${_src}/${sfs}.sfs" "/${arch}"
 | 
					            _curl_get "${_src}/${sfs}.sfs" "/${arch}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,7 +31,7 @@ load_vars() {
 | 
				
			|||||||
    [[ -f $1 ]] || return 1
 | 
					    [[ -f $1 ]] || return 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for var in {SRC,SRCPKG,PKG,LOG}DEST MAKEFLAGS PACKAGER CARCH GPGKEY; do
 | 
					    for var in {SRC,SRCPKG,PKG,LOG}DEST MAKEFLAGS PACKAGER CARCH GPGKEY; do
 | 
				
			||||||
        [[ -z ${!var:-} ]] && eval "$(grep -a "^${var}=" "$1")"
 | 
					        [[ -z ${!var:-} ]] && eval "$(source "$1"; printf "%s='%s'" "$var" "${!var}")"
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
@@ -84,11 +84,18 @@ init_artools_pkg(){
 | 
				
			|||||||
            packages-xorg
 | 
					            packages-xorg
 | 
				
			||||||
            packages-python
 | 
					            packages-python
 | 
				
			||||||
            packages-perl
 | 
					            packages-perl
 | 
				
			||||||
 | 
					            packages-java
 | 
				
			||||||
            packages-qt5
 | 
					            packages-qt5
 | 
				
			||||||
 | 
					            packages-devel
 | 
				
			||||||
            packages-ruby
 | 
					            packages-ruby
 | 
				
			||||||
#         packages-desktop
 | 
					            packages-gtk
 | 
				
			||||||
#         packages-kde
 | 
					            packages-gnome
 | 
				
			||||||
#         packages-gnome
 | 
					            packages-cinnamon
 | 
				
			||||||
 | 
					            packages-lxqt
 | 
				
			||||||
 | 
					            packages-mate
 | 
				
			||||||
 | 
					            packages-kde
 | 
				
			||||||
 | 
					            packages-xfce
 | 
				
			||||||
 | 
					#             packages-haskell
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    HOST_TREE_ARTIX=${HOST_TREE_ARTIX:-"gitea@${GIT_DOMAIN}:artixlinux"}
 | 
					    HOST_TREE_ARTIX=${HOST_TREE_ARTIX:-"gitea@${GIT_DOMAIN}:artixlinux"}
 | 
				
			||||||
@@ -155,15 +162,6 @@ load_config(){
 | 
				
			|||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
user_own(){
 | 
					 | 
				
			||||||
    local flag=$2
 | 
					 | 
				
			||||||
    chown ${flag} "${OWNER}:$(id --group ${OWNER})" "$1"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
user_run(){
 | 
					 | 
				
			||||||
    su ${OWNER} -c "$@"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
load_user_info(){
 | 
					load_user_info(){
 | 
				
			||||||
    OWNER=${SUDO_USER:-$USER}
 | 
					    OWNER=${SUDO_USER:-$USER}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,6 +28,15 @@ add_svc_runit(){
 | 
				
			|||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_svc_s6(){
 | 
				
			||||||
 | 
					    local mnt="$1" name="$2"
 | 
				
			||||||
 | 
					    if [[ -d $mnt/etc/s6/sv/$name ]]; then
 | 
				
			||||||
 | 
					        msg2 "Setting %s ..." "$name"
 | 
				
			||||||
 | 
					#         chroot $mnt s6-rc-bundle $name default &>/dev/null
 | 
				
			||||||
 | 
					#         chroot $mnt s6-rc -u change default &>/dev/null
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set_xdm(){
 | 
					set_xdm(){
 | 
				
			||||||
    if [[ -f $1/etc/conf.d/xdm ]];then
 | 
					    if [[ -f $1/etc/conf.d/xdm ]];then
 | 
				
			||||||
        local conf='DISPLAYMANAGER="'${DISPLAYMANAGER}'"'
 | 
					        local conf='DISPLAYMANAGER="'${DISPLAYMANAGER}'"'
 | 
				
			||||||
@@ -70,6 +79,14 @@ configure_services(){
 | 
				
			|||||||
                add_svc_runit "$mnt" "$svc"
 | 
					                add_svc_runit "$mnt" "$svc"
 | 
				
			||||||
            done
 | 
					            done
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
 | 
					        's6')
 | 
				
			||||||
 | 
					            for svc in ${SERVICES[@]}; do
 | 
				
			||||||
 | 
					                add_svc_s6 "$mnt" "$svc"
 | 
				
			||||||
 | 
					            done
 | 
				
			||||||
 | 
					            for svc in ${SERVICES_LIVE[@]}; do
 | 
				
			||||||
 | 
					                add_svc_s6 "$mnt" "$svc"
 | 
				
			||||||
 | 
					            done
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
    info "Done configuring [%s]" "${INITSYS}"
 | 
					    info "Done configuring [%s]" "${INITSYS}"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -77,7 +94,7 @@ configure_services(){
 | 
				
			|||||||
configure_system(){
 | 
					configure_system(){
 | 
				
			||||||
    local mnt="$1"
 | 
					    local mnt="$1"
 | 
				
			||||||
    case ${INITSYS} in
 | 
					    case ${INITSYS} in
 | 
				
			||||||
        'openrc' | 'runit')
 | 
					        'openrc' | 'runit'|'s6')
 | 
				
			||||||
            configure_logind "$mnt" "elogind"
 | 
					            configure_logind "$mnt" "elogind"
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
@@ -131,30 +148,51 @@ write_servicescfg_conf(){
 | 
				
			|||||||
                yaml+=$(write_yaml_map 4 'runlevel' 'default')
 | 
					                yaml+=$(write_yaml_map 4 'runlevel' 'default')
 | 
				
			||||||
            done
 | 
					            done
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
 | 
					        's6')
 | 
				
			||||||
 | 
					            yaml+=$(write_yaml_map 0 'svDir' '/etc/s6/sv')
 | 
				
			||||||
 | 
					            yaml+=$(write_yaml_map 0 'rcDir' '/etc/s6-rc')
 | 
				
			||||||
 | 
					            yaml+=$(write_yaml_map 0 'services')
 | 
				
			||||||
 | 
					            for svc in ${SERVICES[@]};do
 | 
				
			||||||
 | 
					                yaml+=$(write_yaml_seq_map 2 'name' "$svc")
 | 
				
			||||||
 | 
					                yaml+=$(write_yaml_map 4 'bundle' 'default')
 | 
				
			||||||
 | 
					            done
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
    yaml+=$(write_empty_line)
 | 
					    yaml+=$(write_empty_line)
 | 
				
			||||||
    printf '%s' "${yaml}"
 | 
					    printf '%s' "${yaml}"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write_unpackfs_conf(){
 | 
				
			||||||
 | 
					    local yaml=$(write_yaml_header)
 | 
				
			||||||
 | 
					    yaml+=$(write_empty_line)
 | 
				
			||||||
 | 
					    yaml+=$(write_yaml_map 0 'unpack')
 | 
				
			||||||
 | 
					    yaml+=$(write_yaml_seq_map 2 'source' "/run/artix/bootmnt/artix/x86_64/rootfs.sfs")
 | 
				
			||||||
 | 
					    yaml+=$(write_yaml_map 4 'sourcefs' 'squashfs')
 | 
				
			||||||
 | 
					    yaml+=$(write_yaml_map 4 'destination' '""')
 | 
				
			||||||
 | 
					    yaml+=$(write_empty_line)
 | 
				
			||||||
 | 
					    printf '%s' "${yaml}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
configure_calamares(){
 | 
					configure_calamares(){
 | 
				
			||||||
    local mods="$1/etc/calamares/modules"
 | 
					    local mods="$1/etc/calamares/modules"
 | 
				
			||||||
    if [[ -d "$mods" ]];then
 | 
					    if [[ -d "$mods" ]];then
 | 
				
			||||||
        msg2 "Configuring Calamares"
 | 
					        msg2 "Configuring Calamares"
 | 
				
			||||||
        write_users_conf > "$mods"/users.conf
 | 
					        write_users_conf > "$mods"/users.conf
 | 
				
			||||||
        write_servicescfg_conf > "$mods"/services-"${INITSYS}".conf
 | 
					        write_servicescfg_conf > "$mods"/services-"${INITSYS}".conf
 | 
				
			||||||
 | 
					        write_unpackfs_conf > "$mods"/unpackfs.conf
 | 
				
			||||||
        sed -e "s|openrc|${INITSYS}|" -i "$mods"/postcfg.conf
 | 
					        sed -e "s|openrc|${INITSYS}|" -i "$mods"/postcfg.conf
 | 
				
			||||||
        sed -e "s|services-openrc|services-${INITSYS}|" -i "$1"/etc/calamares/settings.conf
 | 
					        sed -e "s|services-openrc|services-${INITSYS}|" -i "$1"/etc/calamares/settings.conf
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
configure_live_image(){
 | 
					configure_image(){
 | 
				
			||||||
    local fs="$1"
 | 
					    local fs="$1"
 | 
				
			||||||
    msg "Configuring [livefs]"
 | 
					    msg "Configuring [%s]" "${fs##*/}"
 | 
				
			||||||
    configure_hosts "$fs"
 | 
					    configure_hosts "$fs"
 | 
				
			||||||
    configure_system "$fs"
 | 
					    configure_system "$fs"
 | 
				
			||||||
    configure_services "$fs"
 | 
					    configure_services "$fs"
 | 
				
			||||||
    configure_calamares "$fs"
 | 
					    configure_calamares "$fs"
 | 
				
			||||||
    [[ ! -d "$fs/etc/artools" ]] && mkdir -p "$fs/etc/artools"
 | 
					    [[ ! -d "$fs/etc/artools" ]] && mkdir -p "$fs/etc/artools"
 | 
				
			||||||
    write_live_session_conf > "$fs/etc/artools/live.conf"
 | 
					    write_live_session_conf > "$fs/etc/artools/live.conf"
 | 
				
			||||||
    msg "Done configuring [livefs]"
 | 
					    msg "Done configuring [%s]" "${fs##*/}"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,11 +29,11 @@ prepare_initramfs(){
 | 
				
			|||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ -n ${GPG_KEY} ]]; then
 | 
					    if [[ -n ${GPG_KEY} ]]; then
 | 
				
			||||||
        user_run "gpg --export ${GPG_KEY} >${USERCONFDIR}/artools/gpgkey"
 | 
					        su ${OWNER} -c "gpg --export ${GPG_KEY} >/tmp/GPG_KEY"
 | 
				
			||||||
        exec 17<>${USERCONFDIR}/artools/GPG_KEY
 | 
					        exec 17<>/tmp/GPG_KEY
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    local _kernel=$(cat $mnt/usr/lib/modules/*/version)
 | 
					    local _kernel=$(<$mnt/usr/src/linux/version)
 | 
				
			||||||
    ARTIX_GNUPG_FD=${GPG_KEY:+17} chroot-run $mnt \
 | 
					    ARTIX_GNUPG_FD=${GPG_KEY:+17} artools-chroot $mnt \
 | 
				
			||||||
        /usr/bin/mkinitcpio -k ${_kernel} \
 | 
					        /usr/bin/mkinitcpio -k ${_kernel} \
 | 
				
			||||||
        -c /etc/mkinitcpio-artix.conf \
 | 
					        -c /etc/mkinitcpio-artix.conf \
 | 
				
			||||||
        -g /boot/initramfs.img
 | 
					        -g /boot/initramfs.img
 | 
				
			||||||
@@ -41,8 +41,8 @@ prepare_initramfs(){
 | 
				
			|||||||
    if [[ -n ${GPG_KEY} ]]; then
 | 
					    if [[ -n ${GPG_KEY} ]]; then
 | 
				
			||||||
        exec 17<&-
 | 
					        exec 17<&-
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    if [[ -f ${USERCONFDIR}/artools/GPG_KEY ]]; then
 | 
					    if [[ -f /tmp/GPG_KEY ]]; then
 | 
				
			||||||
        rm ${USERCONFDIR}/artools/GPG_KEY
 | 
					        rm /tmp/GPG_KEY
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -59,13 +59,13 @@ prepare_boot_extras(){
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
configure_grub(){
 | 
					configure_grub(){
 | 
				
			||||||
    local conf="$1/boot/grub/kernels.cfg"
 | 
					    sed -e "s|@iso_label@|${iso_label}|" -i ${iso_root}/boot/grub/kernels.cfg
 | 
				
			||||||
    sed -e "s|@iso_label@|${iso_label}|" -i $conf
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
prepare_grub(){
 | 
					prepare_grub(){
 | 
				
			||||||
    local platform=i386-pc img='core.img' grub=$3/boot/grub efi=$3/efi/boot \
 | 
					    local platform=i386-pc img='core.img' prefix=/boot/grub
 | 
				
			||||||
        lib=$1/usr/lib/grub prefix=/boot/grub theme=$2/usr/share/grub
 | 
					    local lib=$1/usr/lib/grub theme=$2/usr/share/grub
 | 
				
			||||||
 | 
					    local grub=${iso_root}/boot/grub efi=${iso_root}/efi/boot
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    prepare_dir ${grub}/${platform}
 | 
					    prepare_dir ${grub}/${platform}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -103,7 +103,7 @@ prepare_grub(){
 | 
				
			|||||||
        grub-mkfont -o ${grub}/unicode.pf2 /usr/share/fonts/misc/unifont.bdf
 | 
					        grub-mkfont -o ${grub}/unicode.pf2 /usr/share/fonts/misc/unifont.bdf
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local size=4M mnt="${mnt_dir}/efiboot" efi_img="$3/efi.img"
 | 
					    local size=4M mnt="${mnt_dir}/efiboot" efi_img="${iso_root}/efi.img"
 | 
				
			||||||
    msg2 "Creating fat image of %s ..." "${size}"
 | 
					    msg2 "Creating fat image of %s ..." "${size}"
 | 
				
			||||||
    truncate -s ${size} "${efi_img}"
 | 
					    truncate -s ${size} "${efi_img}"
 | 
				
			||||||
    mkfs.fat -n ARTIX_EFI "${efi_img}" &>/dev/null
 | 
					    mkfs.fat -n ARTIX_EFI "${efi_img}" &>/dev/null
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,33 +12,12 @@
 | 
				
			|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
# GNU General Public License for more details.
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
gen_iso_fn(){
 | 
					 | 
				
			||||||
    local vars=("artix") name
 | 
					 | 
				
			||||||
    vars+=("${PROFILE}")
 | 
					 | 
				
			||||||
    vars+=("${INITSYS}")
 | 
					 | 
				
			||||||
    case "${REPOSITORY}" in
 | 
					 | 
				
			||||||
        'gremlins'|'goblins') vars+=("${REPOSITORY}") ;;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
    vars+=("${ISO_VERSION}")
 | 
					 | 
				
			||||||
    vars+=("${ARCH}")
 | 
					 | 
				
			||||||
    for n in ${vars[@]};do
 | 
					 | 
				
			||||||
        name=${name:-}${name:+-}${n}
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
    echo $name
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
clean_iso_root(){
 | 
					 | 
				
			||||||
    local dest="$1"
 | 
					 | 
				
			||||||
    msg "Deleting isoroot [%s] ..." "${dest##*/}"
 | 
					 | 
				
			||||||
    rm -rf --one-file-system "$dest"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
make_sig () {
 | 
					make_sig () {
 | 
				
			||||||
    local idir="$1" file="$2"
 | 
					    local idir="$1" file="$2"
 | 
				
			||||||
    msg2 "Creating signature file..."
 | 
					    msg2 "Creating signature file..."
 | 
				
			||||||
    cd "$idir"
 | 
					    cd "$idir"
 | 
				
			||||||
    user_own "$idir"
 | 
					    chown "${OWNER}:$(id --group ${OWNER})" "$idir"
 | 
				
			||||||
    user_run "gpg --detach-sign --default-key ${GPG_KEY} $file.sfs"
 | 
					    su ${OWNER} -c "gpg --detach-sign --default-key ${GPG_KEY} $file.sfs"
 | 
				
			||||||
    chown -R root "$idir"
 | 
					    chown -R root "$idir"
 | 
				
			||||||
    cd ${OLDPWD}
 | 
					    cd ${OLDPWD}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,20 +39,14 @@ track_fs() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
mount_overlay(){
 | 
					mount_overlay(){
 | 
				
			||||||
    FS_ACTIVE_MOUNTS=()
 | 
					    FS_ACTIVE_MOUNTS=()
 | 
				
			||||||
    local lower= upper="$1" work="$2" pkglist="$3"
 | 
					    local lower= upper="$1" work="$2"
 | 
				
			||||||
    local fs=${upper##*/}
 | 
					 | 
				
			||||||
    local rootfs="$work/rootfs" desktopfs="$work/desktopfs" livefs="$work/livefs"
 | 
					 | 
				
			||||||
    mkdir -p "${mnt_dir}/work"
 | 
					    mkdir -p "${mnt_dir}/work"
 | 
				
			||||||
    mkdir -p "$upper"
 | 
					    mkdir -p "$upper"
 | 
				
			||||||
    case $fs in
 | 
					    case $upper in
 | 
				
			||||||
        desktopfs) lower="$rootfs" ;;
 | 
					        */livefs) lower="$work/rootfs" ;;
 | 
				
			||||||
        livefs)
 | 
					        */bootfs)
 | 
				
			||||||
            lower="$rootfs"
 | 
					            lower="$work/rootfs"
 | 
				
			||||||
            [[ -f $pkglist ]] && lower="$desktopfs":"$rootfs"
 | 
					            [[ -d "$work/livefs" ]] && lower="$work/livefs":"$work/rootfs"
 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
        bootfs)
 | 
					 | 
				
			||||||
            lower="$livefs":"$rootfs"
 | 
					 | 
				
			||||||
            [[ -f $pkglist ]] && lower="$livefs":"$desktopfs":"$rootfs"
 | 
					 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
    track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper"
 | 
					    track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,24 +12,6 @@
 | 
				
			|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
# GNU General Public License for more details.
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
init_profile(){
 | 
					 | 
				
			||||||
    local profdir="$1" prof="$2"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ROOT_LIST="$profdir/base/Packages-Root"
 | 
					 | 
				
			||||||
    ROOT_OVERLAY="$profdir/base/root-overlay"
 | 
					 | 
				
			||||||
    LIVE_LIST="$profdir/base/Packages-Live"
 | 
					 | 
				
			||||||
    LIVE_OVERLAY="$profdir/base/live-overlay"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [[ -f "$profdir/$prof/Packages-Root" ]] && ROOT_LIST="$profdir/$prof/Packages-Root"
 | 
					 | 
				
			||||||
    [[ -d "$profdir/$prof/root-overlay" ]] && ROOT_OVERLAY="$profdir/$prof/root-overlay"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [[ -f "$profdir/$prof/Packages-Desktop" ]] && DESKTOP_LIST="$profdir/$prof/Packages-Desktop"
 | 
					 | 
				
			||||||
    [[ -d "$profdir/$prof/desktop-overlay" ]] && DESKTOP_OVERLAY="$profdir/$prof/desktop-overlay"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [[ -f "$profdir/$prof/Packages-Live" ]] && LIVE_LIST="$profdir/$prof/Packages-Live"
 | 
					 | 
				
			||||||
    [[ -d "$profdir/$prof/live-overlay" ]] && LIVE_OVERLAY="$profdir/$prof/live-overlay"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
show_profile(){
 | 
					show_profile(){
 | 
				
			||||||
    msg2 "iso_file: %s" "${iso_file}"
 | 
					    msg2 "iso_file: %s" "${iso_file}"
 | 
				
			||||||
    msg2 "AUTOLOGIN: %s" "${AUTOLOGIN}"
 | 
					    msg2 "AUTOLOGIN: %s" "${AUTOLOGIN}"
 | 
				
			||||||
@@ -42,15 +24,18 @@ show_profile(){
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
load_profile(){
 | 
					load_profile(){
 | 
				
			||||||
    local prof="$1"
 | 
					    local profile_dir="${DATADIR}/iso-profiles"
 | 
				
			||||||
    local profdir="${DATADIR}/iso-profiles"
 | 
					    [[ -d ${WORKSPACE_DIR}/iso-profiles ]] && profile_dir=${WORKSPACE_DIR}/iso-profiles
 | 
				
			||||||
    [[ -d ${WORKSPACE_DIR}/iso-profiles ]] && profdir=${WORKSPACE_DIR}/iso-profiles
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    init_profile "$profdir" "$prof"
 | 
					    ROOT_LIST="$profile_dir/${PROFILE}/Packages-Root"
 | 
				
			||||||
 | 
					    ROOT_OVERLAY="$profile_dir/${PROFILE}/root-overlay"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [[ -f $profdir/$prof/profile.conf ]] || return 1
 | 
					    [[ -f "$profile_dir/${PROFILE}/Packages-Live" ]] && LIVE_LIST="$profile_dir/${PROFILE}/Packages-Live"
 | 
				
			||||||
 | 
					    [[ -d "$profile_dir/${PROFILE}/live-overlay" ]] && LIVE_OVERLAY="$profile_dir/${PROFILE}/live-overlay"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [[ -r $profdir/$prof/profile.conf ]] && . $profdir/$prof/profile.conf
 | 
					    [[ -f $profile_dir/${PROFILE}/profile.conf ]] || return 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [[ -r $profile_dir/${PROFILE}/profile.conf ]] && . $profile_dir/${PROFILE}/profile.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DISPLAYMANAGER=${DISPLAYMANAGER:-'none'}
 | 
					    DISPLAYMANAGER=${DISPLAYMANAGER:-'none'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -66,13 +51,13 @@ load_profile(){
 | 
				
			|||||||
    ADDGROUPS=${ADDGROUPS:-"video,power,optical,network,lp,scanner,wheel,users,log"}
 | 
					    ADDGROUPS=${ADDGROUPS:-"video,power,optical,network,lp,scanner,wheel,users,log"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ -z ${SERVICES[@]} ]];then
 | 
					    if [[ -z ${SERVICES[@]} ]];then
 | 
				
			||||||
        SERVICES=('acpid' 'bluetooth' 'cronie' 'cupsd' 'syslog-ng' 'NetworkManager')
 | 
					        SERVICES=('acpid' 'bluetooth' 'cronie' 'cupsd' 'syslog-ng' 'connman')
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ ${DISPLAYMANAGER} != "none" ]];then
 | 
					    if [[ ${DISPLAYMANAGER} != "none" ]];then
 | 
				
			||||||
        case "${INITSYS}" in
 | 
					        case "${INITSYS}" in
 | 
				
			||||||
            'openrc') SERVICES+=('xdm') ;;
 | 
					            'openrc') SERVICES+=('xdm') ;;
 | 
				
			||||||
            'runit') SERVICES+=("${DISPLAYMANAGER}") ;;
 | 
					            'runit'|'s6') SERVICES+=("${DISPLAYMANAGER}") ;;
 | 
				
			||||||
        esac
 | 
					        esac
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -100,7 +85,7 @@ load_pkgs(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    local _init="s|@$init||g"
 | 
					    local _init="s|@$init||g"
 | 
				
			||||||
    case "$init" in
 | 
					    case "$init" in
 | 
				
			||||||
        'openrc') _init_rm1="s|@runit.*||g"; _init_rm2="s|@s6*||g" ;;
 | 
					        'openrc') _init_rm1="s|@runit.*||g"; _init_rm2="s|@s6.*||g" ;;
 | 
				
			||||||
        's6') _init_rm1="s|@runit.*||g"; _init_rm2="s|@openrc.*||g" ;;
 | 
					        's6') _init_rm1="s|@runit.*||g"; _init_rm2="s|@openrc.*||g" ;;
 | 
				
			||||||
        'runit') _init_rm1="s|@s6.*||g"; _init_rm2="s|@openrc.*||g" ;;
 | 
					        'runit') _init_rm1="s|@s6.*||g"; _init_rm2="s|@openrc.*||g" ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,9 +13,6 @@
 | 
				
			|||||||
# GNU General Public License for more details.
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
error_function() {
 | 
					error_function() {
 | 
				
			||||||
    if [[ -p $logpipe ]]; then
 | 
					 | 
				
			||||||
        rm "$logpipe"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    local func="$1"
 | 
					    local func="$1"
 | 
				
			||||||
    # first exit all subshells, then print the error
 | 
					    # first exit all subshells, then print the error
 | 
				
			||||||
    if (( ! BASH_SUBSHELL )); then
 | 
					    if (( ! BASH_SUBSHELL )); then
 | 
				
			||||||
@@ -27,20 +24,6 @@ error_function() {
 | 
				
			|||||||
    exit 2
 | 
					    exit 2
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# $1: function
 | 
					 | 
				
			||||||
run_log(){
 | 
					 | 
				
			||||||
    local func="$1" log_dir='/var/log/artools'
 | 
					 | 
				
			||||||
    [[ ! -d $log_dir ]] && mkdir -p $log_dir
 | 
					 | 
				
			||||||
    local logfile=${log_dir}/$(gen_iso_fn).$func.log
 | 
					 | 
				
			||||||
    logpipe=$(mktemp -u "/tmp/$func.pipe.XXXXXXXX")
 | 
					 | 
				
			||||||
    mkfifo "$logpipe"
 | 
					 | 
				
			||||||
    tee "$logfile" < "$logpipe" &
 | 
					 | 
				
			||||||
    local teepid=$!
 | 
					 | 
				
			||||||
    $func &> "$logpipe"
 | 
					 | 
				
			||||||
    wait $teepid
 | 
					 | 
				
			||||||
    rm "$logpipe"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
run_safe() {
 | 
					run_safe() {
 | 
				
			||||||
    local restoretrap func="$1"
 | 
					    local restoretrap func="$1"
 | 
				
			||||||
    set -e
 | 
					    set -e
 | 
				
			||||||
@@ -48,11 +31,7 @@ run_safe() {
 | 
				
			|||||||
    restoretrap=$(trap -p ERR)
 | 
					    restoretrap=$(trap -p ERR)
 | 
				
			||||||
    trap 'error_function $func' ERR
 | 
					    trap 'error_function $func' ERR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ${log};then
 | 
					 | 
				
			||||||
        run_log "$func"
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
    "$func"
 | 
					    "$func"
 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    eval $restoretrap
 | 
					    eval $restoretrap
 | 
				
			||||||
    set +E
 | 
					    set +E
 | 
				
			||||||
@@ -96,12 +75,6 @@ make_iso() {
 | 
				
			|||||||
    msg "Done [Build ISO]"
 | 
					    msg "Done [Build ISO]"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install_packages(){
 | 
					 | 
				
			||||||
    local fs="$1"
 | 
					 | 
				
			||||||
    setarch "${ARCH}" mkchroot \
 | 
					 | 
				
			||||||
        "${mkchroot_args[@]}" "${fs}" "${packages[@]}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
copy_overlay(){
 | 
					copy_overlay(){
 | 
				
			||||||
    local src="$1" dest="$2"
 | 
					    local src="$1" dest="$2"
 | 
				
			||||||
    if [[ -e "$src" ]];then
 | 
					    if [[ -e "$src" ]];then
 | 
				
			||||||
@@ -114,10 +87,6 @@ clean_up_image(){
 | 
				
			|||||||
    local path mnt="$1"
 | 
					    local path mnt="$1"
 | 
				
			||||||
    msg2 "Cleaning [%s]" "${mnt##*/}"
 | 
					    msg2 "Cleaning [%s]" "${mnt##*/}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ -f "$mnt/etc/locale.gen.orig" ]];then
 | 
					 | 
				
			||||||
        mv "$mnt/etc/locale.gen.orig" "$mnt/etc/locale.gen"
 | 
					 | 
				
			||||||
        rm "$mnt/etc/locale.conf"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    path=$mnt/boot
 | 
					    path=$mnt/boot
 | 
				
			||||||
    if [[ -d "$path" ]]; then
 | 
					    if [[ -d "$path" ]]; then
 | 
				
			||||||
        find "$path" -name 'initramfs*.img' -delete &> /dev/null
 | 
					        find "$path" -name 'initramfs*.img' -delete &> /dev/null
 | 
				
			||||||
@@ -142,11 +111,6 @@ clean_up_image(){
 | 
				
			|||||||
    if [[ -d $path ]];then
 | 
					    if [[ -d $path ]];then
 | 
				
			||||||
        find "$path" -mindepth 1 -delete &> /dev/null
 | 
					        find "$path" -mindepth 1 -delete &> /dev/null
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					 | 
				
			||||||
    if [[ ${mnt##*/} == 'livefs' ]];then
 | 
					 | 
				
			||||||
        rm -rf "$mnt/etc/pacman.d/gnupg"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete
 | 
					    find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete
 | 
				
			||||||
    if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then
 | 
					    if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then
 | 
				
			||||||
        rm $mnt/boot/grub/grub.cfg
 | 
					        rm $mnt/boot/grub/grub.cfg
 | 
				
			||||||
@@ -163,36 +127,20 @@ make_rootfs() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        prepare_dir "${rootfs}"
 | 
					        prepare_dir "${rootfs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        install_packages "${rootfs}"
 | 
					        basestrap "${basestrap_args[@]}" "${rootfs}" "${packages[@]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        copy_overlay "${ROOT_OVERLAY}" "${rootfs}"
 | 
					        copy_overlay "${ROOT_OVERLAY}" "${rootfs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [[ -z ${LIVE_LIST} ]] && configure_image "${rootfs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        clean_up_image "${rootfs}"
 | 
					        clean_up_image "${rootfs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        : > ${work_dir}/rootfs.lock
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        msg "Done [Base installation] (rootfs)"
 | 
					        msg "Done [Base installation] (rootfs)"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
make_desktopfs() {
 | 
					 | 
				
			||||||
    if [[ ! -e ${work_dir}/desktopfs.lock ]]; then
 | 
					 | 
				
			||||||
        msg "Prepare [Desktop installation] (desktopfs)"
 | 
					 | 
				
			||||||
        local desktopfs="${work_dir}/desktopfs"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        prepare_dir "${desktopfs}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        mount_overlay "${desktopfs}" "${work_dir}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        install_packages "${desktopfs}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        copy_overlay "${DESKTOP_OVERLAY}" "${desktopfs}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        umount_overlay
 | 
					 | 
				
			||||||
        clean_up_image "${desktopfs}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        msg "Done [Desktop installation] (desktopfs)"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
make_livefs() {
 | 
					make_livefs() {
 | 
				
			||||||
    if [[ ! -e ${work_dir}/livefs.lock ]]; then
 | 
					    if [[ ! -e ${work_dir}/livefs.lock ]]; then
 | 
				
			||||||
        msg "Prepare [Live installation] (livefs)"
 | 
					        msg "Prepare [Live installation] (livefs)"
 | 
				
			||||||
@@ -200,18 +148,20 @@ make_livefs() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        prepare_dir "${livefs}"
 | 
					        prepare_dir "${livefs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        mount_overlay "${livefs}" "${work_dir}" "${DESKTOP_LIST}"
 | 
					        mount_overlay "${livefs}" "${work_dir}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        install_packages "${livefs}"
 | 
					        basestrap "${basestrap_args[@]}" "${livefs}" "${packages[@]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        copy_overlay "${LIVE_OVERLAY}" "${livefs}"
 | 
					        copy_overlay "${LIVE_OVERLAY}" "${livefs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        configure_live_image "${livefs}"
 | 
					        configure_image "${livefs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        umount_overlay
 | 
					        umount_overlay
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        clean_up_image "${livefs}"
 | 
					        clean_up_image "${livefs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        : > ${work_dir}/livefs.lock
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        msg "Done [Live installation] (livefs)"
 | 
					        msg "Done [Live installation] (livefs)"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -227,7 +177,7 @@ make_bootfs() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        local bootfs="${work_dir}/bootfs"
 | 
					        local bootfs="${work_dir}/bootfs"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        mount_overlay "${bootfs}" "${work_dir}" "${DESKTOP_LIST}"
 | 
					        mount_overlay "${bootfs}" "${work_dir}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        prepare_initcpio "${bootfs}"
 | 
					        prepare_initcpio "${bootfs}"
 | 
				
			||||||
        prepare_initramfs "${bootfs}"
 | 
					        prepare_initramfs "${bootfs}"
 | 
				
			||||||
@@ -247,9 +197,12 @@ make_grub(){
 | 
				
			|||||||
    if [[ ! -e ${work_dir}/grub.lock ]]; then
 | 
					    if [[ ! -e ${work_dir}/grub.lock ]]; then
 | 
				
			||||||
        msg "Prepare [/iso/boot/grub]"
 | 
					        msg "Prepare [/iso/boot/grub]"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        prepare_grub "${work_dir}/rootfs" "${work_dir}/livefs" "${iso_root}"
 | 
					        local layer=${work_dir}/rootfs
 | 
				
			||||||
 | 
					        [[ -n ${LIVE_LIST} ]] && layer=${work_dir}/livefs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        configure_grub "${iso_root}"
 | 
					        prepare_grub "${work_dir}/rootfs" "$layer"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        configure_grub
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        : > ${work_dir}/grub.lock
 | 
					        : > ${work_dir}/grub.lock
 | 
				
			||||||
        msg "Done [/iso/boot/grub]"
 | 
					        msg "Done [/iso/boot/grub]"
 | 
				
			||||||
@@ -259,7 +212,7 @@ make_grub(){
 | 
				
			|||||||
compress_images(){
 | 
					compress_images(){
 | 
				
			||||||
    local timer=$(get_timer)
 | 
					    local timer=$(get_timer)
 | 
				
			||||||
    run_safe "make_iso"
 | 
					    run_safe "make_iso"
 | 
				
			||||||
    user_own "${iso_dir}" "-R"
 | 
					    chown -R "${OWNER}:$(id --group ${OWNER})" "${iso_dir}"
 | 
				
			||||||
    show_elapsed_time "${FUNCNAME}" "${timer}"
 | 
					    show_elapsed_time "${FUNCNAME}" "${timer}"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -267,11 +220,7 @@ prepare_images(){
 | 
				
			|||||||
    local timer=$(get_timer)
 | 
					    local timer=$(get_timer)
 | 
				
			||||||
    load_pkgs "${ROOT_LIST}" "${INITSYS}"
 | 
					    load_pkgs "${ROOT_LIST}" "${INITSYS}"
 | 
				
			||||||
    run_safe "make_rootfs"
 | 
					    run_safe "make_rootfs"
 | 
				
			||||||
    if [[ -f "${DESKTOP_LIST}" ]] ; then
 | 
					    if [[ -n ${LIVE_LIST} ]]; then
 | 
				
			||||||
        load_pkgs "${DESKTOP_LIST}" "${INITSYS}"
 | 
					 | 
				
			||||||
        run_safe "make_desktopfs"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    if [[ -f ${LIVE_LIST} ]]; then
 | 
					 | 
				
			||||||
        load_pkgs "${LIVE_LIST}" "${INITSYS}"
 | 
					        load_pkgs "${LIVE_LIST}" "${INITSYS}"
 | 
				
			||||||
        run_safe "make_livefs"
 | 
					        run_safe "make_livefs"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,9 +54,10 @@ load_team_id(){
 | 
				
			|||||||
add_repo_to_team(){
 | 
					add_repo_to_team(){
 | 
				
			||||||
    local pkg="$1" org="$2" team="$3"
 | 
					    local pkg="$1" org="$2" team="$3"
 | 
				
			||||||
    local id=$(load_team_id "$org" "$team")
 | 
					    local id=$(load_team_id "$org" "$team")
 | 
				
			||||||
 | 
					    local gitname=$(get_compliant_name "$pkg")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg2 "Adding package repo [%s] to team (%s)" "$pkg" "$team"
 | 
					    msg2 "Adding package repo [%s] to team (%s)" "$gitname" "$team"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    curl -s -X PUT "${GIT_URL}/api/v1/teams/$id/repos/$org/$pkg?access_token=${GIT_TOKEN}" \
 | 
					    curl -s -X PUT "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
 | 
				
			||||||
        -H  "accept: application/json"
 | 
					        -H  "accept: application/json"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,14 +23,12 @@ get_remote_head(){
 | 
				
			|||||||
get_pkg_org(){
 | 
					get_pkg_org(){
 | 
				
			||||||
    local pkg="$1" org= sub=
 | 
					    local pkg="$1" org= sub=
 | 
				
			||||||
    case ${pkg} in
 | 
					    case ${pkg} in
 | 
				
			||||||
        ruby-*) org=${pkg:0:6}; sub="${org:5}"; echo "packagesRuby" ;;
 | 
					        ruby-*) org="packagesRuby" ;;
 | 
				
			||||||
        perl-*) org=${pkg:0:6}; sub="${org:5}"; echo "packagesPerl" ;;
 | 
					        perl-*) org="packagesPerl" ;;
 | 
				
			||||||
        python-*) org=${pkg:0:8}; sub="${org:7}"; echo "packagesPython" ;;
 | 
					        python-*|python2-*) org="packagesPython" ;;
 | 
				
			||||||
        python2-*) org=${pkg:0:9}; sub="${org:8}"; echo "packagesPython" ;;
 | 
					        *) sub=${pkg:0:1}; org="packages${sub^^}" ;;
 | 
				
			||||||
        lib32*) org=${pkg:0:7}; sub="${org:6}"; echo "packagesL" ;; #"packages${sub^^}" ;;
 | 
					 | 
				
			||||||
#         lib*) org=${pkg:0:4}; sub="${org:3}"; echo "packagesLib${sub^^}" ;;
 | 
					 | 
				
			||||||
        *) org=${pkg:0:1}; echo "packages${org^^}" ;;
 | 
					 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
 | 
					    echo $org
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
subrepo_push(){
 | 
					subrepo_push(){
 | 
				
			||||||
@@ -83,7 +81,7 @@ pull_tree(){
 | 
				
			|||||||
    local remote_head=$(get_remote_head)
 | 
					    local remote_head=$(get_remote_head)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg "Checking %s (%s)" "${tree}" "$os"
 | 
					    msg "Checking %s (%s)" "${tree}" "$os"
 | 
				
			||||||
    if $(has_changes "${local_head}" "${remote_head}");then
 | 
					    if has_changes "${local_head}" "${remote_head}";then
 | 
				
			||||||
        git pull origin master
 | 
					        git pull origin master
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -141,22 +139,3 @@ config_tree(){
 | 
				
			|||||||
        fi
 | 
					        fi
 | 
				
			||||||
    cd ..
 | 
					    cd ..
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
subrepo_new(){
 | 
					 | 
				
			||||||
    local pkg="$1" tree="$2" team="${3:-$2}"
 | 
					 | 
				
			||||||
    local dest=${TREE_DIR_ARTIX}/$tree/$pkg/trunk
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    cd ${TREE_DIR_ARTIX}/$tree
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    local org=$(get_pkg_org "$pkg")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    create_repo "$pkg" "$org"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    add_repo_to_team "$pkg" "$org" "$team"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    subrepo_clone "$pkg" "$org"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    prepare_dir "$dest"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    commit_jenkins_files "$pkg"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -109,7 +109,7 @@ find_repo(){
 | 
				
			|||||||
    local pkg="$1" stag="$2" unst="$3" repo=
 | 
					    local pkg="$1" stag="$2" unst="$3" repo=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for r in $(arch_repos "$stag" "$unst");do
 | 
					    for r in $(arch_repos "$stag" "$unst");do
 | 
				
			||||||
        [[ -f $pkg/repos/$r-x86_64/PKGBUILD ]] && repo=$r-x86_64
 | 
					        [[ -f $pkg/repos/$r-${ARCH}/PKGBUILD ]] && repo=$r-${ARCH}
 | 
				
			||||||
        [[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any
 | 
					        [[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
    echo $repo
 | 
					    echo $repo
 | 
				
			||||||
@@ -127,7 +127,8 @@ is_valid_repo(){
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
get_cases(){
 | 
					get_cases(){
 | 
				
			||||||
    local pkglist="${DATADIR}/pkglists/$1.list"
 | 
					    local pkglist="${SYSCONFDIR}/pkglist.d/$1.list"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g"
 | 
					    local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local pkgs=($(sed "$_com_rm" "$pkglist" | sed "$_space" | sed "$_clean"))
 | 
					    local pkgs=($(sed "$_com_rm" "$pkglist" | sed "$_space" | sed "$_clean"))
 | 
				
			||||||
@@ -143,22 +144,28 @@ get_artix_tree(){
 | 
				
			|||||||
    local pkg="$1" artix_tree="${2:-$3}" tree
 | 
					    local pkg="$1" artix_tree="${2:-$3}" tree
 | 
				
			||||||
    eval "case $pkg in
 | 
					    eval "case $pkg in
 | 
				
			||||||
        $(get_cases kernel)) tree=packages-kernel ;;
 | 
					        $(get_cases kernel)) tree=packages-kernel ;;
 | 
				
			||||||
        python-*|python2-*) tree=packages-python ;;
 | 
					        $(get_cases python)) tree=packages-python ;;
 | 
				
			||||||
        perl-*) tree=packages-perl ;;
 | 
					        $(get_cases perl)) tree=packages-perl ;;
 | 
				
			||||||
        ruby-*) tree=packages-ruby ;;
 | 
					        $(get_cases ruby)) tree=packages-ruby ;;
 | 
				
			||||||
        xorg*|xf86*|$(get_cases xorg)) tree=packages-xorg ;;
 | 
					        $(get_cases openrc)) tree=packages-openrc ;;
 | 
				
			||||||
        *-openrc) tree=packages-openrc ;;
 | 
					        $(get_cases runit)) tree=packages-runit ;;
 | 
				
			||||||
        *-runit) tree=packages-runit ;;
 | 
					        $(get_cases s6)) tree=packages-s6 ;;
 | 
				
			||||||
        qt5-*) tree=packages-qt5 ;;
 | 
					        $(get_cases media)) tree=packages-media ;;
 | 
				
			||||||
        lxqt*|$(get_cases lxqt)) tree=packages-lxqt ;;
 | 
					        $(get_cases xorg)) tree=packages-xorg ;;
 | 
				
			||||||
 | 
					        $(get_cases qt5)) tree=packages-qt5 ;;
 | 
				
			||||||
 | 
					        $(get_cases gtk)) tree=packages-gtk ;;
 | 
				
			||||||
 | 
					        $(get_cases java)) tree=packages-java ;;
 | 
				
			||||||
 | 
					        $(get_cases haskell)) tree=packages-haskell ;;
 | 
				
			||||||
 | 
					        $(get_cases devel)) tree=packages-devel ;;
 | 
				
			||||||
 | 
					        $(get_cases lxqt)) tree=packages-lxqt ;;
 | 
				
			||||||
 | 
					        $(get_cases cinnamon)) tree=packages-cinnamon ;;
 | 
				
			||||||
 | 
					        $(get_cases kde)) tree=packages-kde ;;
 | 
				
			||||||
 | 
					        $(get_cases gnome)) tree=packages-gnome ;;
 | 
				
			||||||
 | 
					        $(get_cases mate)) tree=packages-mate ;;
 | 
				
			||||||
 | 
					        $(get_cases xfce)) tree=packages-xfce ;;
 | 
				
			||||||
        *) tree=$artix_tree
 | 
					        *) tree=$artix_tree
 | 
				
			||||||
    esac"
 | 
					    esac"
 | 
				
			||||||
    echo $tree
 | 
					    echo $tree
 | 
				
			||||||
 | 
					 | 
				
			||||||
#         $(get_cases freedesktop)) tree=packages-desktop ;;
 | 
					 | 
				
			||||||
#         $(get_cases kde)) tree=packages-kde ;;
 | 
					 | 
				
			||||||
#         $(get_cases gnome)) tree=packages-gnome ;;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
get_import_path(){
 | 
					get_import_path(){
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user