forked from artix/artools
		
	Compare commits
	
		
			16 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| a53fb9e839 | |||
| 1d85f8000c | |||
| 21c44dba79 | |||
| f4e3abae46 | |||
| a7cef500ad | |||
| f7c29d1c98 | |||
| f1b2af947b | |||
| 5637ba0f8f | |||
| a383531e5d | |||
| 6b4acbdd94 | |||
| b7fd0a4e41 | |||
| b734357ea9 | |||
| 74d44873e7 | |||
| 91e038c3f5 | |||
| 8548a584f3 | |||
| 38fb213e13 | 
							
								
								
									
										5
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								Makefile
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
V=0.26
 | 
			
		||||
V=0.27
 | 
			
		||||
 | 
			
		||||
TOOLS = artools
 | 
			
		||||
PREFIX ?= /usr
 | 
			
		||||
@@ -40,7 +40,8 @@ PKG_BIN = \
 | 
			
		||||
	bin/pkg/batchpkg \
 | 
			
		||||
	bin/pkg/signpkg \
 | 
			
		||||
	bin/pkg/checkrepo \
 | 
			
		||||
	bin/pkg/gitearepo
 | 
			
		||||
	bin/pkg/gitearepo \
 | 
			
		||||
	bin/pkg/tidyarch
 | 
			
		||||
 | 
			
		||||
LN_COMMITPKG = \
 | 
			
		||||
	extrapkg \
 | 
			
		||||
 
 | 
			
		||||
@@ -35,7 +35,7 @@ chroot_part_umount() {
 | 
			
		||||
detect(){
 | 
			
		||||
    local detected
 | 
			
		||||
    detected="$(os-prober | tr ' ' '_' | paste -s -d ' ')"
 | 
			
		||||
    echo "${detected}"
 | 
			
		||||
    printf "%s\n" "${detected}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# $1: os-prober array
 | 
			
		||||
@@ -44,7 +44,7 @@ get_os_name(){
 | 
			
		||||
    str="${str#*:}"
 | 
			
		||||
    str="${str#*:}"
 | 
			
		||||
    str="${str%:*}"
 | 
			
		||||
    echo "$str"
 | 
			
		||||
    printf "%s\n" "$str"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
mount_os(){
 | 
			
		||||
@@ -106,16 +106,16 @@ select_os(){
 | 
			
		||||
automount=false
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "usage: ${0##*/} -a [or] ${0##*/} chroot-dir [command]"
 | 
			
		||||
    echo '    -a             Automount detected linux system'
 | 
			
		||||
    echo '    -h             Print this help message'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo "    If 'command' is unspecified, ${0##*/} will launch /bin/sh."
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo "    If 'automount' is true, ${0##*/} will launch /bin/bash"
 | 
			
		||||
    echo "    and ${chrootdir}."
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo ''
 | 
			
		||||
    printf 'usage: %s -a [or] %s chroot-dir [command]\n' "${0##*/}" "${0##*/}"
 | 
			
		||||
    printf '    -a             Automount detected linux system\n'
 | 
			
		||||
    printf '    -h             Print this help message\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf "    If 'command' is unspecified, %s will launch /bin/sh.\n" "${0##*/}"
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf "    If 'automount' is true, %s will launch /bin/bash\n" "${0##*/}"
 | 
			
		||||
    printf '    and %s\n' "${chrootdir}"
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    exit "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -125,7 +125,6 @@ while getopts ${opts} arg; do
 | 
			
		||||
    case "${arg}" in
 | 
			
		||||
        a) automount=true ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
        *) echo "invalid argument ${arg}"; usage 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
shift $(( OPTIND - 1 ))
 | 
			
		||||
 
 | 
			
		||||
@@ -55,19 +55,19 @@ copymirrorlist=1
 | 
			
		||||
pacmode=-Sy
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "usage: ${0##*/} [options] root [packages...]"
 | 
			
		||||
    echo " -C <config>      Use an alternate config file for pacman"
 | 
			
		||||
    echo " -c               Use the package cache on the host, rather than the target"
 | 
			
		||||
    echo " -G               Avoid copying the host's pacman keyring to the target"
 | 
			
		||||
    echo " -i               Avoid auto-confirmation of package selections"
 | 
			
		||||
    echo " -M               Avoid copying the host's mirrorlist to the target"
 | 
			
		||||
    echo ' -U               Use pacman -U to install packages'
 | 
			
		||||
    echo " -h               Print this help message"
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo ' basestrap installs packages to the specified new root directory.'
 | 
			
		||||
    echo ' If no packages are given, basestrap defaults to the "base" group.'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo ''
 | 
			
		||||
    printf "usage: %s [options] root [packages...]\n" "${0##*/}"
 | 
			
		||||
    printf " -C <config>      Use an alternate config file for pacman\n"
 | 
			
		||||
    printf " -c               Use the package cache on the host, rather than the target\n"
 | 
			
		||||
    printf " -G               Avoid copying the host's pacman keyring to the target\n"
 | 
			
		||||
    printf " -i               Avoid auto-confirmation of package selections\n"
 | 
			
		||||
    printf " -M               Avoid copying the host's mirrorlist to the target\n"
 | 
			
		||||
    printf ' -U               Use pacman -U to install packages\n'
 | 
			
		||||
    printf " -h               Print this help message\n"
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf ' basestrap installs packages to the specified new root directory.\n'
 | 
			
		||||
    printf ' If no packages are given, basestrap defaults to the "base" group.\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    exit "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -81,8 +81,7 @@ while getopts ${opts} arg; do
 | 
			
		||||
        G) copykeyring=0 ;;
 | 
			
		||||
        M) copymirrorlist=0 ;;
 | 
			
		||||
        U) pacmode=-U ;;
 | 
			
		||||
        :) echo "invalid argument ${arg}:$OPTARG"; usage 1;;
 | 
			
		||||
        ?) usage 0 ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
shift $(( OPTIND - 1 ))
 | 
			
		||||
 
 | 
			
		||||
@@ -45,18 +45,18 @@ files=()
 | 
			
		||||
mount_args=("-B:/etc/hosts:/etc/hosts")
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${0##*/} [options] working-dir [run arguments]"
 | 
			
		||||
    echo "A wrapper around chroot. Provides support for pacman."
 | 
			
		||||
    echo
 | 
			
		||||
    echo ' options:'
 | 
			
		||||
    echo '    -C <file>     Location of a pacman config file'
 | 
			
		||||
    echo '    -M <file>     Location of a makepkg config file'
 | 
			
		||||
    echo '    -c <dir>      Set pacman cache'
 | 
			
		||||
    echo '    -f <file>     Copy file from the host to the chroot'
 | 
			
		||||
    echo '    -s            Do not run setarch'
 | 
			
		||||
    echo '    -b <list>     Bind mountargs'
 | 
			
		||||
    echo '                  List format [mntarg1:src1:dest1 ... mntargN:srcN:destN]'
 | 
			
		||||
    echo '    -h            This message'
 | 
			
		||||
    printf "Usage: %s [options] working-dir [run arguments]\n" "${0##*/}"
 | 
			
		||||
    printf "A wrapper around chroot. Provides support for pacman.\n"
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf ' options:\n'
 | 
			
		||||
    printf '    -C <file>     Location of a pacman config file\n'
 | 
			
		||||
    printf '    -M <file>     Location of a makepkg config file\n'
 | 
			
		||||
    printf '    -c <dir>      Set pacman cache\n'
 | 
			
		||||
    printf '    -f <file>     Copy file from the host to the chroot\n'
 | 
			
		||||
    printf '    -s            Do not run setarch\n'
 | 
			
		||||
    printf '    -b <list>     Bind mountargs\n'
 | 
			
		||||
    printf '                  List format [mntarg1:src1:dest1 ... mntargN:srcN:destN]\n'
 | 
			
		||||
    printf '    -h            This message\n'
 | 
			
		||||
    exit 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -71,7 +71,6 @@ while getopts ${opts} arg; do
 | 
			
		||||
        s) nosetarch=1 ;;
 | 
			
		||||
        b) bindmounts+=("$OPTARG"); mount_args+=(${bindmounts[@]}) ;;
 | 
			
		||||
        h|?) usage ;;
 | 
			
		||||
        *) error "invalid argument '$arg'"; usage ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
shift $(( OPTIND - 1 ))
 | 
			
		||||
@@ -85,26 +84,24 @@ shift 1
 | 
			
		||||
 | 
			
		||||
[[ -z $working_dir ]] && die 'Please specify a working directory.'
 | 
			
		||||
 | 
			
		||||
pacconf_cmd=$(command -v pacman-conf || command -v pacconf)
 | 
			
		||||
 | 
			
		||||
if (( ${#cache_dirs[@]} == 0 )); then
 | 
			
		||||
    mapfile -t cache_dirs < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" CacheDir)
 | 
			
		||||
    mapfile -t cache_dirs < <(pacman-conf --config "${pac_conf:-$working_dir/etc/pacman.conf}" CacheDir)
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# shellcheck disable=2016
 | 
			
		||||
host_mirrors=($("$pacconf_cmd" --repo world Server 2> /dev/null | sed -r 's#(.*/)world/os/.*#\1$repo/os/$arch#'))
 | 
			
		||||
host_mirrors=($(pacman-conf --repo world Server 2> /dev/null | sed -r 's#(.*/)world/os/.*#\1$repo/os/$arch#'))
 | 
			
		||||
 | 
			
		||||
for host_mirror in "${host_mirrors[@]}"; do
 | 
			
		||||
    if [[ $host_mirror == *file://* ]]; then
 | 
			
		||||
        # shellcheck disable=2016
 | 
			
		||||
        host_mirror=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g')
 | 
			
		||||
        host_mirror=$(printf "%s\n" "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g')
 | 
			
		||||
        in_array "$host_mirror" "${cache_dirs[@]}" || cache_dirs+=("$host_mirror")
 | 
			
		||||
    fi
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
while read -r line; do
 | 
			
		||||
    # shellcheck disable=2016
 | 
			
		||||
    mapfile -t lines < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" \
 | 
			
		||||
    mapfile -t lines < <(pacman-conf --config "${pac_conf:-$working_dir/etc/pacman.conf}" \
 | 
			
		||||
        --repo "$line" Server | sed -r 's#(.*/)[^/]+/os/.+#\1#')
 | 
			
		||||
    for line in "${lines[@]}"; do
 | 
			
		||||
        if [[ $line = file://* ]]; then
 | 
			
		||||
@@ -112,7 +109,7 @@ while read -r line; do
 | 
			
		||||
            in_array "$line" "${cache_dirs[@]}" || cache_dirs+=("$line")
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
done < <("$pacconf_cmd" --config "${pac_conf:-$working_dir/etc/pacman.conf}" --repo-list)
 | 
			
		||||
done < <(pacman-conf --config "${pac_conf:-$working_dir/etc/pacman.conf}" --repo-list)
 | 
			
		||||
 | 
			
		||||
copy_hostconf () {
 | 
			
		||||
    unshare --fork --pid gpg --homedir "$working_dir"/etc/pacman.d/gnupg/ --no-permission-warning --quiet --batch --import --import-options import-local-sigs "$(pacman-conf GpgDir)"/pubring.gpg >/dev/null 2>&1
 | 
			
		||||
 
 | 
			
		||||
@@ -23,15 +23,15 @@ files=()
 | 
			
		||||
chroot_args=()
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${0##*/} [options] working-dir package-list..."
 | 
			
		||||
    echo ' options:'
 | 
			
		||||
    echo '    -U            Use pacman -U to install packages'
 | 
			
		||||
    echo '    -C <file>     Location of a pacman config file'
 | 
			
		||||
    echo '    -M <file>     Location of a makepkg config file'
 | 
			
		||||
    echo '    -c <dir>      Set pacman cache'
 | 
			
		||||
    echo '    -f <file>     Copy file from the host to the chroot'
 | 
			
		||||
    echo '    -s            Do not run setarch'
 | 
			
		||||
    echo '    -h            This message'
 | 
			
		||||
    printf "Usage: %s [options] working-dir package-list...\n" "${0##*/}"
 | 
			
		||||
    printf ' options:\n'
 | 
			
		||||
    printf '    -U            Use pacman -U to install packages\n'
 | 
			
		||||
    printf '    -C <file>     Location of a pacman config file\n'
 | 
			
		||||
    printf '    -M <file>     Location of a makepkg config file\n'
 | 
			
		||||
    printf '    -c <dir>      Set pacman cache\n'
 | 
			
		||||
    printf '    -f <file>     Copy file from the host to the chroot\n'
 | 
			
		||||
    printf '    -s            Do not run setarch\n'
 | 
			
		||||
    printf '    -h            This message\n'
 | 
			
		||||
    exit 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -46,7 +46,6 @@ while getopts ${opts} arg; do
 | 
			
		||||
        f) files+=("$OPTARG") ;;
 | 
			
		||||
        s) nosetarch=1 ;;
 | 
			
		||||
        h|?) usage ;;
 | 
			
		||||
        *) error "invalid argument '%s'" "$arg"; usage ;;
 | 
			
		||||
    esac
 | 
			
		||||
    if [[ $arg != U ]]; then
 | 
			
		||||
        chroot_args+=("-$arg")
 | 
			
		||||
@@ -64,10 +63,8 @@ shift 1
 | 
			
		||||
 | 
			
		||||
[[ -z $working_dir ]] && die 'Please specify a working directory.'
 | 
			
		||||
 | 
			
		||||
pacconf_cmd=$(command -v pacman-conf || command -v pacconf)
 | 
			
		||||
 | 
			
		||||
if (( ${#cache_dirs[@]} == 0 )); then
 | 
			
		||||
	mapfile -t cache_dirs < <($pacconf_cmd CacheDir)
 | 
			
		||||
	mapfile -t cache_dirs < <(pacman-conf CacheDir)
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
umask 0022
 | 
			
		||||
@@ -97,9 +94,9 @@ basestrap -${umode}Mc ${pacman_conf:+-C "$pacman_conf"} "$working_dir" \
 | 
			
		||||
    "${cache_dirs[@]/#/--cachedir=}" "$@" || die 'Failed to install all packages'
 | 
			
		||||
 | 
			
		||||
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 'KEYMAP=en' > "$working_dir/etc/vconsole.conf"
 | 
			
		||||
echo "${CHROOTVERSION}" > "$working_dir/.artools"
 | 
			
		||||
printf 'LANG=en_US.UTF-8\n' > "$working_dir/etc/locale.conf"
 | 
			
		||||
# printf 'KEYMAP=en\n' > "$working_dir/etc/vconsole.conf"
 | 
			
		||||
printf "%s\n" "${CHROOTVERSION}" > "$working_dir/.artools"
 | 
			
		||||
 | 
			
		||||
dbus-uuidgen --ensure="$working_dir"/etc/machine-id
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -181,7 +181,7 @@ gen_iso_fn(){
 | 
			
		||||
    for n in "${vars[@]}"; do
 | 
			
		||||
        name=${name:-}${name:+-}${n}
 | 
			
		||||
    done
 | 
			
		||||
    echo "$name"
 | 
			
		||||
    printf "%s\n" "$name"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
prepare_build(){
 | 
			
		||||
@@ -325,28 +325,28 @@ chroots_iso="${CHROOTS_DIR}/buildiso"
 | 
			
		||||
arch=$(uname -m)
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${cmd} [options]"
 | 
			
		||||
    echo "    -p <profile>       Profile [default: ${profile}]"
 | 
			
		||||
    echo '    -r <dir>           Chroots directory'
 | 
			
		||||
    echo "                       [default: ${chroots_iso}]"
 | 
			
		||||
    echo '    -t <dir>           Target directory'
 | 
			
		||||
    echo "                       [default: ${ISO_POOL}]"
 | 
			
		||||
    echo '    -i <name>          Init system to use'
 | 
			
		||||
    echo "                       [default: ${INITSYS}]"
 | 
			
		||||
    echo '    -g <key>           The gpg key for img signing'
 | 
			
		||||
    echo "                       [default: none]"
 | 
			
		||||
    echo '    -m                 Set SquashFS image mode to persistence'
 | 
			
		||||
    echo '    -c                 Disable clean work dir'
 | 
			
		||||
    echo '    -x                 Build chroot only'
 | 
			
		||||
    echo '    -s                 Squash chroot only'
 | 
			
		||||
    echo '    -b                 Generate iso boot only'
 | 
			
		||||
    echo '    -z                 Generate iso only'
 | 
			
		||||
    echo '                       Requires pre built images (-x)'
 | 
			
		||||
    echo '    -d                 Use dracut instead of mkinitcpio for iso initramfs'
 | 
			
		||||
    echo '    -q                 Query settings and pretend build'
 | 
			
		||||
    echo '    -h                 This help'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo ''
 | 
			
		||||
    printf 'Usage: %s [options]\n' "${cmd}"
 | 
			
		||||
    printf '    -p <profile>       Profile [default: %s]\n' "${profile}"
 | 
			
		||||
    printf '    -r <dir>           Chroots directory\n'
 | 
			
		||||
    printf '                       [default: %s]\n' "${chroots_iso}"
 | 
			
		||||
    printf '    -t <dir>           Target directory\n'
 | 
			
		||||
    printf '                       [default: %s]\n' "${ISO_POOL}"
 | 
			
		||||
    printf '    -i <name>          Init system to use\n'
 | 
			
		||||
    printf '                       [default: %s]\n' "${INITSYS}"
 | 
			
		||||
    printf '    -g <key>           The gpg key for img signing\n'
 | 
			
		||||
    printf '                       [default: none]\n'
 | 
			
		||||
    printf '    -m                 Set SquashFS image mode to persistence\n'
 | 
			
		||||
    printf '    -c                 Disable clean work dir\n'
 | 
			
		||||
    printf '    -x                 Build chroot only\n'
 | 
			
		||||
    printf '    -s                 Squash chroot only\n'
 | 
			
		||||
    printf '    -b                 Generate iso boot only\n'
 | 
			
		||||
    printf '    -z                 Generate iso only\n'
 | 
			
		||||
    printf '                       Requires pre built images (-x)\n'
 | 
			
		||||
    printf '    -d                 Use dracut instead of mkinitcpio for iso initramfs\n'
 | 
			
		||||
    printf '    -q                 Query settings and pretend build\n'
 | 
			
		||||
    printf '    -h                 This help\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    exit "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -368,7 +368,6 @@ while getopts "${opts}" arg; do
 | 
			
		||||
        d) use_dracut=true ;;
 | 
			
		||||
        q) pretend=true ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -76,13 +76,13 @@ batch_update() {
 | 
			
		||||
#}}}
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${0##*/} [optional listname]"
 | 
			
		||||
    echo '    -r                 Run generated commands'
 | 
			
		||||
    echo '    -c                 Create subrepos from list'
 | 
			
		||||
    echo '    -u                 Update subrepos from list'
 | 
			
		||||
    echo '    -h                 This help'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo ''
 | 
			
		||||
    printf 'Usage: %s [optional listname]\n' "${0##*/}"
 | 
			
		||||
    printf '    -r                 Run generated commands\n'
 | 
			
		||||
    printf '    -c                 Create subrepos from list\n'
 | 
			
		||||
    printf '    -u                 Update subrepos from list\n'
 | 
			
		||||
    printf '    -h                 This help\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    exit "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -98,7 +98,6 @@ while getopts "${opts}" arg; do
 | 
			
		||||
        c) create=true ;;
 | 
			
		||||
        u) update=true ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -29,17 +29,17 @@ chroots_pkg="${CHROOTS_DIR}/buildpkg"
 | 
			
		||||
arch=$(uname -m)
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${0##*/} [options] -- [mkchrootpkg_args]"
 | 
			
		||||
    echo "    -r <dir>           Create chroots in this directory"
 | 
			
		||||
    echo "    -d <dir>           Destination repo chroot"
 | 
			
		||||
    echo '    -c                 Recreate the chroot before building'
 | 
			
		||||
    echo '    -m                 Major rebuild'
 | 
			
		||||
    echo '    -N                 Disable check() function'
 | 
			
		||||
    echo '    -C                 Run checkpkg after built'
 | 
			
		||||
    echo '    -h                 This help'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo "Default mkchrootpkg_args args: ${mkchrootpkg_args[*]}"
 | 
			
		||||
    echo ''
 | 
			
		||||
    printf 'Usage: %s [options] -- [mkchrootpkg_args]\n' "${0##*/}"
 | 
			
		||||
    printf '    -r <dir>           Create chroots in this directory\n'
 | 
			
		||||
    printf '    -d <dir>           Destination repo chroot\n'
 | 
			
		||||
    printf '    -c                 Recreate the chroot before building\n'
 | 
			
		||||
    printf '    -m                 Major rebuild\n'
 | 
			
		||||
    printf '    -N                 Disable check() function\n'
 | 
			
		||||
    printf '    -C                 Run checkpkg after built\n'
 | 
			
		||||
    printf '    -h                 This help\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf 'Default mkchrootpkg_args args: %s\n' "${mkchrootpkg_args[*]}"
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    exit "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -54,7 +54,6 @@ while getopts "${opts}" arg; do
 | 
			
		||||
        C) mkchrootpkg_args+=(-C) ;;
 | 
			
		||||
        N) mkchrootpkg_args+=(-N) ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
        *) echo "invalid argument '%s'" "${arg}"; usage 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -23,15 +23,6 @@ m4_include(lib/pkg/jenkins.sh)
 | 
			
		||||
 | 
			
		||||
#{{{ new git repo
 | 
			
		||||
 | 
			
		||||
subrepo_clone(){
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
    local org="$2"
 | 
			
		||||
    local name="$3"
 | 
			
		||||
 | 
			
		||||
    msg2 "Subrepo clone [%s] from (%s)" "$pkg" "$org/$name"
 | 
			
		||||
    git subrepo clone "${GIT_SSH}":"$org"/"$name".git "$pkg"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
subrepo_new(){
 | 
			
		||||
    cd "${TREE_DIR_ARTIX}/${group}" || return
 | 
			
		||||
 | 
			
		||||
@@ -43,9 +34,10 @@ subrepo_new(){
 | 
			
		||||
 | 
			
		||||
    add_team_to_repo "$gitname" "$org" "${team}"
 | 
			
		||||
 | 
			
		||||
    subrepo_clone "${package}" "$org" "$gitname"
 | 
			
		||||
    msg2 "Subrepo clone [%s] from (%s)" "${package}" "$org/$gitname"
 | 
			
		||||
    git subrepo clone "${GIT_SSH}":"$org/$gitname".git "${package}"
 | 
			
		||||
 | 
			
		||||
    mkdir -p "${TREE_DIR_ARTIX}/${group}/${package}/trunk"
 | 
			
		||||
    prepare_dir "${TREE_DIR_ARTIX}/${group}/${package}/trunk"
 | 
			
		||||
 | 
			
		||||
    commit_jenkins_files "${package}"
 | 
			
		||||
}
 | 
			
		||||
@@ -54,57 +46,54 @@ subrepo_new(){
 | 
			
		||||
 | 
			
		||||
#{{{ pull
 | 
			
		||||
 | 
			
		||||
clone_tree(){
 | 
			
		||||
    local url="$1" tree="$2" os="${3:-Artix}"
 | 
			
		||||
 | 
			
		||||
    msg "Cloning %s (%s) ..." "$tree" "$os"
 | 
			
		||||
 | 
			
		||||
    git clone "$url/$tree".git
 | 
			
		||||
config_tree() {
 | 
			
		||||
    local dist="$1" vars="${2:-false}"
 | 
			
		||||
    case "$dist" in
 | 
			
		||||
        Artix)
 | 
			
		||||
            if "$vars"; then
 | 
			
		||||
                dist_tree=("${ARTIX_TREE[@]}")
 | 
			
		||||
                dist_url="${GIT_SSH}:artixlinux"
 | 
			
		||||
                dist_dir=${TREE_DIR_ARTIX}
 | 
			
		||||
            else
 | 
			
		||||
                git config --bool pull.rebase true
 | 
			
		||||
                git config commit.gpgsign true
 | 
			
		||||
                if [[ -n "${GPGKEY}" ]];then
 | 
			
		||||
                    git config user.signingkey "${GPGKEY}"
 | 
			
		||||
                else
 | 
			
		||||
                    warning "No GPGKEY configured in makepkg.conf!"
 | 
			
		||||
                fi
 | 
			
		||||
            fi
 | 
			
		||||
        ;;
 | 
			
		||||
        Arch)
 | 
			
		||||
            if "$vars"; then
 | 
			
		||||
                dist_tree=("${ARCH_TREE[@]}")
 | 
			
		||||
                dist_url="${HOST_TREE_ARCH}"
 | 
			
		||||
                dist_dir=${TREE_DIR_ARCH}
 | 
			
		||||
            else
 | 
			
		||||
                git config --bool pull.rebase false
 | 
			
		||||
                git config branch.master.mergeoptions --no-edit
 | 
			
		||||
            fi
 | 
			
		||||
        ;;
 | 
			
		||||
    esac
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pull_tree_arch(){
 | 
			
		||||
    cd "${TREE_DIR_ARCH}" || return
 | 
			
		||||
    for tree in "${ARCH_TREE[@]}";do
 | 
			
		||||
        if [[ -d "${tree}" ]];then
 | 
			
		||||
            ( cd "${tree}" || return
 | 
			
		||||
                pull_tree "${tree}" "$(get_local_head)" "Arch"
 | 
			
		||||
update_tree() {
 | 
			
		||||
    local dist="${1:-Artix}"
 | 
			
		||||
    config_tree "$dist" true
 | 
			
		||||
    cd "$dist_dir" || return
 | 
			
		||||
    for tree in "${dist_tree[@]}"; do
 | 
			
		||||
        if [[ -d "$tree" ]]; then
 | 
			
		||||
            ( cd "$tree" || return
 | 
			
		||||
                config_tree "$dist"
 | 
			
		||||
                msg "Checking (%s) (%s)" "$tree" "$dist"
 | 
			
		||||
                pull_tree "$tree" "$(get_local_head)"
 | 
			
		||||
            )
 | 
			
		||||
        else
 | 
			
		||||
            clone_tree "${HOST_TREE_ARCH}" "${tree}" "Arch"
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
config_tree(){
 | 
			
		||||
    local tree="$1"
 | 
			
		||||
    cd "$tree" || return
 | 
			
		||||
        git config --bool pull.rebase true
 | 
			
		||||
        git config commit.gpgsign true
 | 
			
		||||
        if [[ -n "${GPGKEY}" ]];then
 | 
			
		||||
            git config user.signingkey "${GPGKEY}"
 | 
			
		||||
        else
 | 
			
		||||
            warning "No GPGKEY configured in makepkg.conf!"
 | 
			
		||||
        fi
 | 
			
		||||
    cd ..
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pull_tree_artix(){
 | 
			
		||||
    local repos=()
 | 
			
		||||
    if ${sync_group}; then
 | 
			
		||||
        repos=("${group}")
 | 
			
		||||
    else
 | 
			
		||||
        repos=("${ARTIX_TREE[@]}")
 | 
			
		||||
    fi
 | 
			
		||||
    cd "${TREE_DIR_ARTIX}" || return
 | 
			
		||||
    for tree in "${repos[@]}"; do
 | 
			
		||||
        if [[ -d "${tree}" ]];then
 | 
			
		||||
            config_tree "${tree}"
 | 
			
		||||
            ( cd "${tree}" || return
 | 
			
		||||
                pull_tree "${tree}" "$(get_local_head)"
 | 
			
		||||
            msg "Cloning (%s) (%s) ..." "$tree" "$dist"
 | 
			
		||||
            git clone "$dist_url/$tree".git
 | 
			
		||||
            ( cd "$tree" || return
 | 
			
		||||
                config_tree "$dist"
 | 
			
		||||
            )
 | 
			
		||||
        else
 | 
			
		||||
            clone_tree "${host_tree_artix}" "${tree}"
 | 
			
		||||
            config_tree "${tree}"
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
@@ -243,8 +232,8 @@ check_tree(){
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sync_repos(){
 | 
			
		||||
    ${sync_arch} && pull_tree_arch
 | 
			
		||||
    ${sync_artix} && pull_tree_artix
 | 
			
		||||
    ${sync_arch} && update_tree "Arch"
 | 
			
		||||
    ${sync_artix} && update_tree
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
load_makepkg_config
 | 
			
		||||
@@ -261,7 +250,6 @@ sync_artix=true
 | 
			
		||||
import=false
 | 
			
		||||
view=false
 | 
			
		||||
createnew=false
 | 
			
		||||
sync_group=false
 | 
			
		||||
check=false
 | 
			
		||||
 | 
			
		||||
package=''
 | 
			
		||||
@@ -269,29 +257,27 @@ package=''
 | 
			
		||||
team='community'
 | 
			
		||||
group="${ARTIX_TREE[0]}"
 | 
			
		||||
 | 
			
		||||
host_tree_artix="${GIT_SSH}:artixlinux"
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${0##*/} [options]"
 | 
			
		||||
    echo '    -p <pkg>      Package name'
 | 
			
		||||
    echo '    -t <team>     Team name (only with -n)'
 | 
			
		||||
    echo '                  Possible values: core,extra,community,multilib'
 | 
			
		||||
    echo "                  [default: ${team}]"
 | 
			
		||||
    echo '    -g <group>    Group name, the superrepo (only with -n or -s)'
 | 
			
		||||
    echo "                  [default: ${group}]"
 | 
			
		||||
    echo "    -s            Clone or pull repos"
 | 
			
		||||
    echo "    -a            Don't clone or pull arch repos"
 | 
			
		||||
    echo "    -b            Don't clone or pull artix repos"
 | 
			
		||||
    echo '    -i            Import a package from arch repos'
 | 
			
		||||
    echo '    -n            New remote subrepo and clone it'
 | 
			
		||||
    echo '    -v            Check if a package is in the artix tree(s)'
 | 
			
		||||
    echo '    -c            View package depends'
 | 
			
		||||
    echo '    -x            Exclude testing (only with -i)'
 | 
			
		||||
    echo '    -y            Exclude staging (only with -i)'
 | 
			
		||||
    echo '    -z            Include kde & gnome unstable (only with -i)'
 | 
			
		||||
    echo '    -h            This help'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo ''
 | 
			
		||||
    printf "Usage: %s [options]\n" "${0##*/}"
 | 
			
		||||
    printf '    -p <pkg>      Package name\n'
 | 
			
		||||
    printf '    -t <team>     Team name (only with -n)\n'
 | 
			
		||||
    printf '                  Possible values: core,extra,community,multilib\n'
 | 
			
		||||
    printf "                  [default: %s]\n" "${team}"
 | 
			
		||||
    printf '    -g <group>    Group name, the superrepo (only with -n)\n'
 | 
			
		||||
    printf "                  [default: %s]\n" "${group}"
 | 
			
		||||
    printf "    -s            Clone or pull repos\n"
 | 
			
		||||
    printf "    -a            Don't clone or pull arch repos\n"
 | 
			
		||||
    printf "    -b            Don't clone or pull artix repos\n"
 | 
			
		||||
    printf '    -i            Import a package from arch repos\n'
 | 
			
		||||
    printf '    -n            New remote subrepo and clone it\n'
 | 
			
		||||
    printf '    -v            Check if a package is in the artix tree(s)\n'
 | 
			
		||||
    printf '    -c            View package depends\n'
 | 
			
		||||
    printf '    -x            Exclude testing (only with -i)\n'
 | 
			
		||||
    printf '    -y            Exclude staging (only with -i)\n'
 | 
			
		||||
    printf '    -z            Include kde & gnome unstable (only with -i)\n'
 | 
			
		||||
    printf '    -h            This help\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    exit "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -301,7 +287,7 @@ while getopts "${opts}" arg; do
 | 
			
		||||
    case "${arg}" in
 | 
			
		||||
        p) package="$OPTARG" ;;
 | 
			
		||||
        t) team="$OPTARG" ;;
 | 
			
		||||
        g) group="$OPTARG"; sync_group=true ;;
 | 
			
		||||
        g) group="$OPTARG" ;;
 | 
			
		||||
        s) sync=true ;;
 | 
			
		||||
        a) sync_arch=false ;;
 | 
			
		||||
        b) sync_artix=false ;;
 | 
			
		||||
@@ -313,7 +299,6 @@ while getopts "${opts}" arg; do
 | 
			
		||||
        y) staging=false ;;
 | 
			
		||||
        z) unstable=true ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -197,7 +197,7 @@ for _pkgname in "${pkgname[@]}"; do
 | 
			
		||||
    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"
 | 
			
		||||
        printf "%s\n" "$diff_output"
 | 
			
		||||
    else
 | 
			
		||||
        msg "No soname differences for %s." "$_pkgname"
 | 
			
		||||
    fi
 | 
			
		||||
 
 | 
			
		||||
@@ -18,19 +18,42 @@ m4_include(lib/base/message.sh)
 | 
			
		||||
m4_include(lib/pkg/repo.sh)
 | 
			
		||||
m4_include(lib/pkg/table.sh)
 | 
			
		||||
 | 
			
		||||
#{{{ db libs
 | 
			
		||||
 | 
			
		||||
extract_db() {
 | 
			
		||||
    local u="$1" cdir="$2"
 | 
			
		||||
    rm -rf "$cdir"
 | 
			
		||||
    mkdir -p "$cdir"
 | 
			
		||||
    msg2 "%s" "${cdir##*/}"
 | 
			
		||||
    curl -L -s "$u" | bsdtar -xf - -C "$cdir"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
update_db_cache(){
 | 
			
		||||
    msg "Updating database cache ..."
 | 
			
		||||
    local cachedir url
 | 
			
		||||
    for repo in "${searchrepos[@]}"; do
 | 
			
		||||
        cachedir=${db_cache_dir}/linksdb/$repo
 | 
			
		||||
        url=${REPOS_MIRROR}/$repo/os/${CARCH}/$repo.${linksdb_ext}
 | 
			
		||||
        extract_db "$url" "$cachedir"
 | 
			
		||||
    done
 | 
			
		||||
    msg "Done"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#}}}
 | 
			
		||||
 | 
			
		||||
#{{{ sogrep
 | 
			
		||||
 | 
			
		||||
query_db() {
 | 
			
		||||
    for repo in "${searchrepos[@]}"; do
 | 
			
		||||
        local db
 | 
			
		||||
        db=${db_cache_dir}/${linksdb_ext}/${CARCH}/${repo}/
 | 
			
		||||
        db=${db_cache_dir}/linksdb/$repo/
 | 
			
		||||
        if [[ -d ${db} ]]; then
 | 
			
		||||
            while read -rd '' pkg; do
 | 
			
		||||
                read -r match
 | 
			
		||||
                pkg=${pkg#${db}}
 | 
			
		||||
                pkg="${pkg%/*}"
 | 
			
		||||
                msg_row "${tableQ}" "${repo}" "${pkg}" "${match}"
 | 
			
		||||
            done < <(grep -rZ "${library}" "${db}") | sort -u
 | 
			
		||||
                msg_row "${tableQ}" "$repo" "$pkg" "${match}"
 | 
			
		||||
            done < <(grep -rZ "$library" "$db") | sort -u
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
@@ -41,7 +64,7 @@ query_db() {
 | 
			
		||||
 | 
			
		||||
is_db_entry() {
 | 
			
		||||
    local pkgname="$1" repo="${REPOS[$2]}" entry
 | 
			
		||||
    entry=${db_cache_dir}/${linksdb_ext}/${CARCH}/$repo/$pkgname
 | 
			
		||||
    entry=${db_cache_dir}/linksdb/$repo/$pkgname
 | 
			
		||||
 | 
			
		||||
    if [[ -d "$entry" ]];then
 | 
			
		||||
        return 0
 | 
			
		||||
@@ -50,20 +73,14 @@ is_db_entry() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
check_db(){
 | 
			
		||||
    local pkgpath="${1}" oldpath="${1%/*}"/repos
 | 
			
		||||
    local pkgpath="${1}"
 | 
			
		||||
 | 
			
		||||
    for repo in "${!REPOS[@]}"; do
 | 
			
		||||
 | 
			
		||||
        local pkgbuild artixver
 | 
			
		||||
        if [[ -f $pkgpath/$repo/PKGBUILD ]]; then
 | 
			
		||||
            pkgbuild=$pkgpath/$repo/PKGBUILD
 | 
			
		||||
        elif [[ -f $oldpath/$repo-$CARCH/PKGBUILD ]]; then
 | 
			
		||||
            pkgbuild=$oldpath/$repo-$CARCH/PKGBUILD
 | 
			
		||||
        elif [[ -f $oldpath/$repo-any/PKGBUILD ]]; then
 | 
			
		||||
            pkgbuild=$oldpath/$repo-any/PKGBUILD
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        if [[ -f "$pkgbuild" ]]; then
 | 
			
		||||
            # shellcheck disable=1090
 | 
			
		||||
            . "$pkgbuild" 2>/dev/null
 | 
			
		||||
            artixver=$(get_full_version)
 | 
			
		||||
@@ -81,6 +98,54 @@ check_db(){
 | 
			
		||||
 | 
			
		||||
#}}}
 | 
			
		||||
 | 
			
		||||
# {{{ check obsolete
 | 
			
		||||
 | 
			
		||||
show_obsolete_table() {
 | 
			
		||||
    local arch_mirror='https://mirror.f4st.host/archlinux'
 | 
			
		||||
 | 
			
		||||
    local arch_repo artix_repo artix_db arch_db url
 | 
			
		||||
    arch_repo="${searchrepos[@]}"
 | 
			
		||||
    artix_repo="${REPOS[$arch_repo]}"
 | 
			
		||||
 | 
			
		||||
    artix_db="${db_cache_dir}/artixdb/${artix_repo}"
 | 
			
		||||
    arch_db="${db_cache_dir}/archdb/${arch_repo}"
 | 
			
		||||
 | 
			
		||||
    msg "Updating database cache ..."
 | 
			
		||||
    url=${REPOS_MIRROR}/${artix_repo}/os/$CARCH/${artix_repo}.${db_ext}
 | 
			
		||||
    extract_db "$url" "${artix_db}"
 | 
			
		||||
 | 
			
		||||
    url=${arch_mirror}/${arch_repo}/os/$CARCH/${arch_repo}.${db_ext}
 | 
			
		||||
    extract_db "$url" "${arch_db}"
 | 
			
		||||
    msg "Done"
 | 
			
		||||
 | 
			
		||||
    msg_table_header "${tableQ}" "Repo" "Package" "Obsolete"
 | 
			
		||||
    for p in "${artix_db}"/*; do
 | 
			
		||||
        local pkg rel
 | 
			
		||||
        pkg=${p##*/}
 | 
			
		||||
        rel=${pkg##*-}
 | 
			
		||||
        rel=${rel%.*}
 | 
			
		||||
        pkg=${pkg%-*}
 | 
			
		||||
        local p="$pkg-$rel"
 | 
			
		||||
 | 
			
		||||
        if [[ "$p" != *openrc* ]] && [[ "$p" != *runit* ]] \
 | 
			
		||||
        && [[ "$p" != *s6* ]] && [[ "$p" != *suite66* ]] \
 | 
			
		||||
        && [[ "$p" != *udev* ]] && [[ "$p" != *elogind* ]] \
 | 
			
		||||
        && [[ "$p" != *sysusers* ]] && [[ "$p" != *tmpfiles* ]] \
 | 
			
		||||
        && [[ "$p" != *execline* ]] && [[ "$p" != *skalibs* ]] \
 | 
			
		||||
        && [[ "$p" != *netifrc* ]] && [[ "$p" != *bootlogd* ]] \
 | 
			
		||||
        && [[ "$p" != *pam_rundir* ]] && [[ "$p" != *artools* ]] \
 | 
			
		||||
        && [[ "$p" != *archlinux* ]] && [[ "$p" != *iso-profiles* ]] \
 | 
			
		||||
        && [[ "$p" != *calamares* ]] && [[ "$p" != *iso-initcpio* ]] \
 | 
			
		||||
        && [[ "$p" != *dinit* ]] && [[ "$p" != *artix* ]] && [[ "$p" != *blocaled* ]]; then
 | 
			
		||||
            if [[ ! -d "${arch_db}/$p" ]]; then
 | 
			
		||||
                msg_row "${tableQ}" "${artix_repo}" "$p" "true"
 | 
			
		||||
            fi
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#}}}
 | 
			
		||||
 | 
			
		||||
show_lib_table() {
 | 
			
		||||
    msg_table_header "${tableQ}" "Repo" "Package" "Library"
 | 
			
		||||
    query_db
 | 
			
		||||
@@ -91,23 +156,10 @@ show_db_table(){
 | 
			
		||||
    tree_loop check_db
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
update_db_cache(){
 | 
			
		||||
    msg "Updating database cache ..."
 | 
			
		||||
    local cachedir url
 | 
			
		||||
    for repo in "${searchrepos[@]}"; do
 | 
			
		||||
        cachedir=${db_cache_dir}/${linksdb_ext}/${CARCH}/${repo}
 | 
			
		||||
        rm -rf "$cachedir"
 | 
			
		||||
        mkdir -p "$cachedir"
 | 
			
		||||
        msg2 "%s" "$repo"
 | 
			
		||||
        url=${REPOS_MIRROR}/${repo}/os/${CARCH}/${repo}.${linksdb_ext}
 | 
			
		||||
        curl -L -s "$url" | bsdtar -xf - -C "$cachedir"
 | 
			
		||||
    done
 | 
			
		||||
    msg "Done"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
db_cache_dir="${XDG_CACHE_HOME:-$USER_HOME/.cache}/artools"
 | 
			
		||||
 | 
			
		||||
linksdb_ext="links.tar.${DBEXT}"
 | 
			
		||||
db_ext="db.tar.${DBEXT}"
 | 
			
		||||
 | 
			
		||||
load_makepkg_config
 | 
			
		||||
 | 
			
		||||
@@ -115,9 +167,10 @@ sync=false
 | 
			
		||||
check=false
 | 
			
		||||
query=false
 | 
			
		||||
all_db=false
 | 
			
		||||
obsolete=false
 | 
			
		||||
 | 
			
		||||
readonly tableU="%-20s %-35s %-30s %-10s"
 | 
			
		||||
readonly tableQ="%-20s %-45s %s"
 | 
			
		||||
readonly tableQ="%-20s %-55s %s"
 | 
			
		||||
 | 
			
		||||
load_valid_names
 | 
			
		||||
 | 
			
		||||
@@ -156,20 +209,21 @@ searchrepos=(
 | 
			
		||||
#}}}
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${0##*/} [options] (with -q [libname])"
 | 
			
		||||
    echo '    -r <repo>     Repo name to query'
 | 
			
		||||
    echo '                  [default: all]'
 | 
			
		||||
    echo "    -s            Sync repo databases"
 | 
			
		||||
    echo '    -c            Check repos'
 | 
			
		||||
    echo '    -a            Show repo db (-c)'
 | 
			
		||||
    echo "    -q            Query repo databases for so libs"
 | 
			
		||||
    echo '    -h            This help'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo ''
 | 
			
		||||
    printf "Usage: %s [options] (with -q [libname])\n" "${0##*/}"
 | 
			
		||||
    printf '    -r <repo>     Repo name to query\n'
 | 
			
		||||
    printf '                  [default: all]\n'
 | 
			
		||||
    printf "    -s            Sync repo databases\n"
 | 
			
		||||
    printf '    -c            Check repos\n'
 | 
			
		||||
    printf '    -a            Show repo db (-c)\n'
 | 
			
		||||
    printf '    -o            Check for obsolete packages\n'
 | 
			
		||||
    printf "    -q            Query repo databases for so libs\n"
 | 
			
		||||
    printf '    -h            This help\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    exit "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
opts='r:qcsah'
 | 
			
		||||
opts='r:qcsaoh'
 | 
			
		||||
 | 
			
		||||
while getopts "${opts}" arg; do
 | 
			
		||||
    case "${arg}" in
 | 
			
		||||
@@ -178,8 +232,8 @@ while getopts "${opts}" arg; do
 | 
			
		||||
        c) check=true ;;
 | 
			
		||||
        a) all_db=true ;;
 | 
			
		||||
        q) query=true ;;
 | 
			
		||||
        o) obsolete=true ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
@@ -192,3 +246,5 @@ ${sync} && update_db_cache
 | 
			
		||||
${check} && show_db_table
 | 
			
		||||
 | 
			
		||||
${query} && show_lib_table
 | 
			
		||||
 | 
			
		||||
${obsolete} && show_obsolete_table
 | 
			
		||||
 
 | 
			
		||||
@@ -46,33 +46,6 @@ subrepo_pull(){
 | 
			
		||||
    git subrepo pull "$pkg"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
prepare_commit(){
 | 
			
		||||
    # create new layout, copy & remove repos
 | 
			
		||||
    if [[ -d repos ]]; then
 | 
			
		||||
        msg2 "Switching to new layout ..."
 | 
			
		||||
        [[ ! -d "$CARCH" ]] && mkdir "$CARCH"
 | 
			
		||||
 | 
			
		||||
        for r in repos/*; do
 | 
			
		||||
            local name noarch
 | 
			
		||||
            name=${r#*/}
 | 
			
		||||
            noarch=${name%-*}
 | 
			
		||||
            mkdir "$CARCH/${noarch}"
 | 
			
		||||
            cp repos/"${name}"/* "$CARCH/${noarch}/"
 | 
			
		||||
            git add "$CARCH/${noarch}"
 | 
			
		||||
        done
 | 
			
		||||
 | 
			
		||||
        git rm -r repos
 | 
			
		||||
        git commit -m "switch to new repo layout"
 | 
			
		||||
        msg2 "Done switch"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [[ $action == 'add' ]] || [[ $action == 'move' ]] ;then
 | 
			
		||||
        [[ -d "$CARCH/${repo_dest}" ]] && git rm -r "$CARCH/${repo_dest}"
 | 
			
		||||
        [[ ! -d "$CARCH" ]] && mkdir "$CARCH"
 | 
			
		||||
        [[ ! -d "$CARCH/${repo_dest}" ]] && mkdir "$CARCH/${repo_dest}"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
check_rebuild(){
 | 
			
		||||
    if [[ -d "$CARCH"/"${valid_names[10]}" ]] \
 | 
			
		||||
    && [[ "${repo_dest}" == "${valid_names[7]}" ]]; then
 | 
			
		||||
@@ -104,21 +77,16 @@ check_team(){
 | 
			
		||||
path_config() {
 | 
			
		||||
    [[ "${repo_src}" != 'trunk' ]] && pkgbuild="$CARCH/${repo_src}"/PKGBUILD
 | 
			
		||||
 | 
			
		||||
    if [[ ! -f "$pkgbuild" ]]; then
 | 
			
		||||
        pkgbuild=repos/"${repo_src}-${CARCH}"/PKGBUILD
 | 
			
		||||
        [[ -f repos/"${repo_src}"-any/PKGBUILD ]] && pkgbuild=repos/"${repo_src}"-any/PKGBUILD
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # shellcheck disable=1090
 | 
			
		||||
    . "$pkgbuild"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get_repo_commit_msg() {
 | 
			
		||||
    echo "[${repo_src}] -> [${repo_dest}] '${package}-$(get_full_version)' ${action}"
 | 
			
		||||
    printf "[%s] -> [%s] '%s' %s\n" "${repo_src}" "${repo_dest}" "${package}-$(get_full_version)" "${action}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get_commit_msg() {
 | 
			
		||||
    echo "[${repo_src}] '${package}-$(get_full_version)' ${action}"
 | 
			
		||||
    printf "[%s] '%s' %s\n" "${repo_src}" "${package}-$(get_full_version)" "${action}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
commit_pkg() {
 | 
			
		||||
@@ -130,7 +98,6 @@ commit_pkg() {
 | 
			
		||||
        if [[ "${repo_src}" == 'trunk' ]];then
 | 
			
		||||
            git rm -r trunk
 | 
			
		||||
        else
 | 
			
		||||
            prepare_commit
 | 
			
		||||
            git rm -r "$CARCH/${repo_src}"
 | 
			
		||||
        fi
 | 
			
		||||
    else
 | 
			
		||||
@@ -144,11 +111,15 @@ commit_pkg() {
 | 
			
		||||
 | 
			
		||||
repo_commit_pkg() {
 | 
			
		||||
    local commit_msg
 | 
			
		||||
 | 
			
		||||
    [[ -d "$CARCH/${repo_dest}" ]] && git rm -r "$CARCH/${repo_dest}"
 | 
			
		||||
    [[ ! -d "$CARCH" ]] && mkdir "$CARCH"
 | 
			
		||||
    [[ ! -d "$CARCH/${repo_dest}" ]] && mkdir "$CARCH/${repo_dest}"
 | 
			
		||||
 | 
			
		||||
    if [[ "${repo_src}" == 'trunk' ]]; then
 | 
			
		||||
        action='add'
 | 
			
		||||
        commit_msg=$(get_repo_commit_msg)
 | 
			
		||||
        msg "Action: %s" "$commit_msg"
 | 
			
		||||
        prepare_commit
 | 
			
		||||
        check_rebuild
 | 
			
		||||
        cp trunk/* "$CARCH/${repo_dest}"/
 | 
			
		||||
    else
 | 
			
		||||
@@ -156,7 +127,6 @@ repo_commit_pkg() {
 | 
			
		||||
        [[ ! -f $pkgbuild ]] && die "%s does not exist!" "$pkgbuild"
 | 
			
		||||
        commit_msg=$(get_repo_commit_msg)
 | 
			
		||||
        msg "Action: %s" "$commit_msg"
 | 
			
		||||
        prepare_commit
 | 
			
		||||
        cp "$CARCH/${repo_src}"/* "$CARCH/${repo_dest}"/
 | 
			
		||||
        git rm -r "$CARCH/${repo_src}"
 | 
			
		||||
    fi
 | 
			
		||||
@@ -184,8 +154,11 @@ run(){
 | 
			
		||||
 | 
			
		||||
        cd "${group}" || return
 | 
			
		||||
 | 
			
		||||
        ${push} && pull_tree "${group##*/}" "$head"
 | 
			
		||||
#         subrepo_pull "${package}"
 | 
			
		||||
        if ${push}; then
 | 
			
		||||
            msg "Checking (%s) (Artix)" "${group##*/}"
 | 
			
		||||
            pull_tree "${group##*/}" "$head"
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        subrepo_push "${package}"
 | 
			
		||||
        subrepo_clean "${package}"
 | 
			
		||||
 | 
			
		||||
@@ -227,14 +200,14 @@ cmd=${0##*/}
 | 
			
		||||
repo_dest=${cmd%pkg}
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${0##*/} [options]"
 | 
			
		||||
    echo "    -s <name>          Source repository [default:${repo_src}]"
 | 
			
		||||
    echo '    -p <pkg>           Package name'
 | 
			
		||||
    echo '    -r                 Delete from repo (commitpkg only)'
 | 
			
		||||
    echo '    -u                 Push'
 | 
			
		||||
    echo '    -h                 This help'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo ''
 | 
			
		||||
    printf "Usage: %s [options]\n" "${0##*/}"
 | 
			
		||||
    printf "    -s <name>          Source repository [default: %s]\n" "${repo_src}"
 | 
			
		||||
    printf '    -p <pkg>           Package name\n'
 | 
			
		||||
    printf '    -r                 Delete from repo (commitpkg only)\n'
 | 
			
		||||
    printf '    -u                 Push\n'
 | 
			
		||||
    printf '    -h                 This help\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    exit "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -247,7 +220,6 @@ while getopts "${opts}" arg; do
 | 
			
		||||
        r) remove=true ;;
 | 
			
		||||
        u) push=true ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -52,6 +52,9 @@ compare_m(){
 | 
			
		||||
 | 
			
		||||
compare_u(){
 | 
			
		||||
    if [ "$result" -eq -1 ];then
 | 
			
		||||
#         local arel=${archver##*-} brel=${artixver##*-}
 | 
			
		||||
#         local reldiff
 | 
			
		||||
#         reldiff=$(( $arel-${brel%.*} ))
 | 
			
		||||
        msg_row_red "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
			
		||||
        write_list "${a}:$pkg" pkg_upgrades
 | 
			
		||||
    fi
 | 
			
		||||
@@ -71,7 +74,7 @@ get_archpath(){
 | 
			
		||||
    for tree in "${ARCH_TREE[@]}"; do
 | 
			
		||||
        [[ -d ${TREE_DIR_ARCH}/$tree/$pkg/repos ]] && archpath=${TREE_DIR_ARCH}/$tree/$pkg
 | 
			
		||||
    done
 | 
			
		||||
    echo "$archpath"
 | 
			
		||||
    printf "%s\n" "$archpath"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre_compare(){
 | 
			
		||||
@@ -165,16 +168,16 @@ move=false
 | 
			
		||||
readonly table="%-18s %-18s %-25s %-27s %-27s %-10s"
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${0##*/} [options]"
 | 
			
		||||
    echo '    -u            Show upgrade packages'
 | 
			
		||||
    echo '    -d            Show downgrade packages'
 | 
			
		||||
    echo '    -m            Show packages to move'
 | 
			
		||||
    echo "    -x            Don't inlcude testing packages"
 | 
			
		||||
    echo "    -y            Don't inlcude staging packages"
 | 
			
		||||
    echo '    -z            Include unstable kde and gnome'
 | 
			
		||||
    echo '    -h            This help'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo ''
 | 
			
		||||
    printf 'Usage: %s [options]\n' "${0##*/}"
 | 
			
		||||
    printf '    -u            Show upgrade packages\n'
 | 
			
		||||
    printf '    -d            Show downgrade packages\n'
 | 
			
		||||
    printf '    -m            Show packages to move\n'
 | 
			
		||||
    printf '    -x            Do not inlcude testing packages\n'
 | 
			
		||||
    printf '    -y            Do not inlcude staging packages\n'
 | 
			
		||||
    printf '    -z            Include unstable kde and gnome\n'
 | 
			
		||||
    printf '    -h            This help\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    exit "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -189,7 +192,6 @@ while getopts "${opts}" arg; do
 | 
			
		||||
        y) staging=false ;;
 | 
			
		||||
        z) unstable=true ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -61,14 +61,14 @@ cmd=${0##*/}
 | 
			
		||||
dest_repo=${cmd#*-}
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${cmd} [options]"
 | 
			
		||||
    echo '    -d <dest>          Destination repository'
 | 
			
		||||
    echo '    -a                 Add package(s) to repository'
 | 
			
		||||
    echo '    -r                 Remove package(s) from repository'
 | 
			
		||||
    echo '    -l                 Use links db'
 | 
			
		||||
    echo '    -h                 This help'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo ''
 | 
			
		||||
    printf "Usage: %s [options]\n" "${cmd}"
 | 
			
		||||
    printf '    -d <dest>          Destination repository\n'
 | 
			
		||||
    printf '    -a                 Add package(s) to repository\n'
 | 
			
		||||
    printf '    -r                 Remove package(s) from repository\n'
 | 
			
		||||
    printf '    -l                 Use links db\n'
 | 
			
		||||
    printf '    -h                 This help\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    exit "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -81,7 +81,6 @@ while getopts "${opts}" arg; do
 | 
			
		||||
        r) rm_pkg=true; add_pkg=false ;;
 | 
			
		||||
        l) linksdb=true ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -32,9 +32,9 @@ case $script_mode in
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
if [[ -z $1 ]]; then
 | 
			
		||||
    echo "${0##*/} [options] <package file|extracted package dir>"
 | 
			
		||||
    echo "Options:"
 | 
			
		||||
    echo "    --ignore-internal      ignore internal libraries"
 | 
			
		||||
    printf "%s [options] <package file|extracted package dir>\n" "${0##*/}"
 | 
			
		||||
    printf "Options:\n"
 | 
			
		||||
    printf "    --ignore-internal      ignore internal libraries\n"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -61,7 +61,7 @@ process_sofile() {
 | 
			
		||||
    fi
 | 
			
		||||
    if ! in_array "${soname}=${soversion}-${soarch}" "${soobjects[@]}"; then
 | 
			
		||||
        # libfoo.so=1-64
 | 
			
		||||
        echo "${soname}=${soversion}-${soarch}"
 | 
			
		||||
        printf "%s\n" "${soname}=${soversion}-${soarch}"
 | 
			
		||||
        soobjects+=("${soname}=${soversion}-${soarch}")
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -17,11 +17,11 @@ m4_include(lib/base/message.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 ''
 | 
			
		||||
    printf 'Usage: finddeps <depname>\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf 'Find packages that depend on a given depname.\n'
 | 
			
		||||
    printf 'Run this script from the top-level directory of your ABS tree.\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -55,13 +55,13 @@ transfer_repo() {
 | 
			
		||||
#}}}
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${0##*/} [options]"
 | 
			
		||||
    echo '    -r <repo>     Repo name'
 | 
			
		||||
    echo '    -c            Create git repo'
 | 
			
		||||
    echo '    -t            Transfer git repo to landfill org'
 | 
			
		||||
    echo '    -h            This help'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo ''
 | 
			
		||||
    printf "Usage: %s [options]\n" "${0##*/}"
 | 
			
		||||
    printf '    -r <repo>     Repo name\n'
 | 
			
		||||
    printf '    -c            Create git repo\n'
 | 
			
		||||
    printf '    -t            Transfer git repo to landfill org\n'
 | 
			
		||||
    printf '    -h            This help\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    exit "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -76,7 +76,6 @@ while getopts "${opts}" arg; do
 | 
			
		||||
        c) create=true ;;
 | 
			
		||||
        t) transfer=true ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,7 @@ for tree in $PATH $libdirs $extras; do
 | 
			
		||||
            #  Is an ELF binary.
 | 
			
		||||
            if (( $(ldd "$i" 2>/dev/null | grep -c 'not found') != 0 )); then
 | 
			
		||||
                #  Missing lib.
 | 
			
		||||
                echo "$i:" >> "$TEMPDIR/raw.txt"
 | 
			
		||||
                printf "%s\n" "$i:" >> "$TEMPDIR/raw.txt"
 | 
			
		||||
                ldd "$i" 2>/dev/null | grep 'not found' >> "$TEMPDIR/raw.txt"
 | 
			
		||||
            fi
 | 
			
		||||
        fi
 | 
			
		||||
 
 | 
			
		||||
@@ -87,7 +87,7 @@ find_pkgentry() {
 | 
			
		||||
    for pkgentry in "$tmpdir/${REPO_DB_NAME}/$pkgname"*; do
 | 
			
		||||
        name=${pkgentry##*/}
 | 
			
		||||
        if [[ ${name%-*-*} = "$pkgname" ]]; then
 | 
			
		||||
            echo "$pkgentry"
 | 
			
		||||
            printf "%s\n" "$pkgentry"
 | 
			
		||||
            return 0
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
@@ -238,7 +238,7 @@ db_remove_entry() {
 | 
			
		||||
 | 
			
		||||
        # remove entries in "links" database
 | 
			
		||||
        local linksentry
 | 
			
		||||
        linksentry=$(echo "$pkgentry" | sed 's/\(.*\)\/db\//\1\/links\//')
 | 
			
		||||
        linksentry=$(printf "%s\n" "$pkgentry" | sed 's/\(.*\)\/db\//\1\/links\//')
 | 
			
		||||
        rm -rf "$linksentry"
 | 
			
		||||
 | 
			
		||||
        pkgentry=$(find_pkgentry "$pkgname")
 | 
			
		||||
@@ -258,7 +258,7 @@ prepare_repo_db() {
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # check lock file
 | 
			
		||||
    if ( set -o noclobber; echo "$$" > "$LOCKFILE") 2> /dev/null; then
 | 
			
		||||
    if ( set -o noclobber; printf "%s\n" "$$" > "$LOCKFILE") 2> /dev/null; then
 | 
			
		||||
        CLEAN_LOCK=1
 | 
			
		||||
    else
 | 
			
		||||
        error "Failed to acquire lockfile: %s." "$LOCKFILE"
 | 
			
		||||
@@ -399,7 +399,7 @@ trap_exit() {
 | 
			
		||||
    # unhook all traps to avoid race conditions
 | 
			
		||||
    trap '' EXIT TERM HUP QUIT INT ERR
 | 
			
		||||
 | 
			
		||||
    echo
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    error "$@"
 | 
			
		||||
    clean_up 1
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -44,43 +44,43 @@ copy=$USER
 | 
			
		||||
src_owner=${SUDO_USER:-$USER}
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${0##*/} [options] -r <chrootdir> [--] [makepkg args]"
 | 
			
		||||
    echo ' Run this script in a PKGBUILD dir to build a package inside a'
 | 
			
		||||
    echo ' clean chroot. Arguments passed to this script after the'
 | 
			
		||||
    echo ' end-of-options marker (--) will be passed to makepkg.'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo ' The chroot dir consists of the following directories:'
 | 
			
		||||
    echo ' <chrootdir>/{root, copy} but only "root" is required'
 | 
			
		||||
    echo ' by default. The working copy will be created as needed'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo 'The chroot "root" directory must be created via the following'
 | 
			
		||||
    echo 'command:'
 | 
			
		||||
    echo '    mkchroot <chrootdir>/root base-devel'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo 'This script reads {SRC,SRCPKG,PKG,LOG}DEST, MAKEFLAGS and PACKAGER'
 | 
			
		||||
    echo 'from makepkg.conf(5), if those variables are not part of the'
 | 
			
		||||
    echo 'environment.'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo "Default makepkg args: ${default_makepkg_args[*]}"
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo 'Flags:'
 | 
			
		||||
    echo '-h         This help'
 | 
			
		||||
    echo '-c         Clean the chroot before building'
 | 
			
		||||
    echo '-d <dir>   Bind directory into build chroot as read-write'
 | 
			
		||||
    echo '-D <dir>   Bind directory into build chroot as read-only'
 | 
			
		||||
    echo '-u         Update the working copy of the chroot before building'
 | 
			
		||||
    echo '           This is useful for rebuilds without dirtying the pristine'
 | 
			
		||||
    echo '           chroot'
 | 
			
		||||
    echo '-r <dir>   The chroot dir to use'
 | 
			
		||||
    echo '-I <pkg>   Install a package into the working copy of the chroot'
 | 
			
		||||
    echo '-l <copy>  The directory to use as the working copy of the chroot'
 | 
			
		||||
    echo '           Useful for maintaining multiple copies'
 | 
			
		||||
    echo "           Default: $copy"
 | 
			
		||||
    echo '-n         Run namcap on the package'
 | 
			
		||||
    echo '-C         Run checkpkg on the package'
 | 
			
		||||
    echo '-N         Disable check() function'
 | 
			
		||||
    echo '-T         Build in a temporary directory'
 | 
			
		||||
    echo '-U         Run makepkg as a specified user'
 | 
			
		||||
    printf 'Usage: %s [options] -r <chrootdir> [--] [makepkg args]\n' "${0##*/}"
 | 
			
		||||
    printf ' Run this script in a PKGBUILD dir to build a package inside a\n'
 | 
			
		||||
    printf ' clean chroot. Arguments passed to this script after the\n'
 | 
			
		||||
    printf ' end-of-options marker (--) will be passed to makepkg.\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf ' The chroot dir consists of the following directories:\n'
 | 
			
		||||
    printf ' <chrootdir>/{root, copy} but only "root" is required\n'
 | 
			
		||||
    printf ' by default. The working copy will be created as needed\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf "The chroot 'root' directory must be created via the following\n"
 | 
			
		||||
    printf 'command:\n'
 | 
			
		||||
    printf '    mkchroot <chrootdir>/root base-devel\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf 'This script reads {SRC,SRCPKG,PKG,LOG}DEST, MAKEFLAGS and PACKAGER\n'
 | 
			
		||||
    printf 'from makepkg.conf(5), if those variables are not part of the\n'
 | 
			
		||||
    printf 'environment.\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf 'Default makepkg args: %s\n' "${default_makepkg_args[*]}"
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf 'Flags:\n'
 | 
			
		||||
    printf ' -h         This help\n'
 | 
			
		||||
    printf ' -c         Clean the chroot before building\n'
 | 
			
		||||
    printf ' -d <dir>   Bind directory into build chroot as read-write\n'
 | 
			
		||||
    printf ' -D <dir>   Bind directory into build chroot as read-only\n'
 | 
			
		||||
    printf ' -u         Update the working copy of the chroot before building\n'
 | 
			
		||||
    printf '           This is useful for rebuilds without dirtying the pristine\n'
 | 
			
		||||
    printf '           chroot\n'
 | 
			
		||||
    printf ' -r <dir>   The chroot dir to use\n'
 | 
			
		||||
    printf ' -I <pkg>   Install a package into the working copy of the chroot\n'
 | 
			
		||||
    printf ' -l <copy>  The directory to use as the working copy of the chroot\n'
 | 
			
		||||
    printf '            Useful for maintaining multiple copies\n'
 | 
			
		||||
    printf '            Default: %s\n' "$copy"
 | 
			
		||||
    printf ' -n         Run namcap on the package\n'
 | 
			
		||||
    printf ' -C         Run checkpkg on the package\n'
 | 
			
		||||
    printf ' -N         Disable check() function\n'
 | 
			
		||||
    printf ' -T         Build in a temporary directory\n'
 | 
			
		||||
    printf ' -U         Run makepkg as a specified user\n'
 | 
			
		||||
    exit 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -182,7 +182,7 @@ prepare_chroot() {
 | 
			
		||||
        "MAKEFLAGS='${MAKEFLAGS:-}'" "PACKAGER='${PACKAGER:-}'"
 | 
			
		||||
    do
 | 
			
		||||
        grep -q "^$x" "$copydir/etc/makepkg.conf" && continue
 | 
			
		||||
        echo "$x" >>"$copydir/etc/makepkg.conf"
 | 
			
		||||
        printf "%s\n" "$x" >>"$copydir/etc/makepkg.conf"
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    cat > "$copydir/etc/sudoers.d/builduser-pacman" <<EOF
 | 
			
		||||
@@ -239,7 +239,7 @@ _chrootbuild() {
 | 
			
		||||
_chrootnamcap() {
 | 
			
		||||
    pacman -S --needed --noconfirm namcap
 | 
			
		||||
    for pkgfile in /startdir/PKGBUILD /pkgdest/*; do
 | 
			
		||||
        echo "Checking ${pkgfile##*/}"
 | 
			
		||||
        printf "Checking %s\n" "${pkgfile##*/}"
 | 
			
		||||
        sudo -u builduser namcap "$pkgfile" 2>&1 | tee "/logdest/${pkgfile##*/}-namcap.log"
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
@@ -249,7 +249,7 @@ download_sources() {
 | 
			
		||||
    chown "$makepkg_user:" "$WORKDIR"
 | 
			
		||||
 | 
			
		||||
    # Ensure sources are downloaded
 | 
			
		||||
    sudo -u "$makepkg_user" --preserve-env=GNUPGHOME \
 | 
			
		||||
    sudo -u "$makepkg_user" --preserve-env=GNUPGHOME,SSH_AUTH_SOCK \
 | 
			
		||||
        env SRCDEST="$SRCDEST" BUILDDIR="$WORKDIR" \
 | 
			
		||||
        makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o "${verifysource_args[@]}" ||
 | 
			
		||||
        die "Could not download sources."
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,24 @@ m4_include(lib/base/yaml.sh)
 | 
			
		||||
 | 
			
		||||
#{{{ functions
 | 
			
		||||
 | 
			
		||||
print_package_names() {
 | 
			
		||||
    local version=$(get_full_version)
 | 
			
		||||
    local architecture pkg
 | 
			
		||||
    for pkg in ${pkgname[@]}; do
 | 
			
		||||
        architecture=$(get_pkg_arch $pkg)
 | 
			
		||||
        printf "%s/%s-%s-%s%s\n" "$PKGDEST" "$pkg" "$version" "$architecture" "$PKGEXT"
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print_debug_package_names() {
 | 
			
		||||
    local version=$(get_full_version)
 | 
			
		||||
    local architecture
 | 
			
		||||
    if check_option "debug" "y" && check_option "strip" "y"; then
 | 
			
		||||
        architecture=$(get_pkg_arch)
 | 
			
		||||
        printf "%s/%s-%s-%s-%s%s\n" "$PKGDEST" "$pkgbase" "debug" "$version" "$architecture" "$PKGEXT"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
srcyaml_write_attr(){
 | 
			
		||||
    local ident1="$1" ident2="$2" ident3="$3"
 | 
			
		||||
    local attrname=$4 attrvalues=("${@:5}")
 | 
			
		||||
@@ -108,13 +126,19 @@ yaml_write_fileinfo(){
 | 
			
		||||
    pkgbase=${pkgbase:-$pkgname}
 | 
			
		||||
    Yaml+=$(write_yaml_map 0 "version" "${version:-0}")
 | 
			
		||||
    Yaml+=$(write_empty_line)
 | 
			
		||||
    local pkgfile
 | 
			
		||||
    pkgfile=$(print_all_package_names)
 | 
			
		||||
    local pkgfile debug_pkg
 | 
			
		||||
    pkgfile=$(print_package_names)
 | 
			
		||||
    Yaml+=$(write_yaml_map 0 "files")
 | 
			
		||||
    for f in ${pkgfile}; do
 | 
			
		||||
        Yaml+=$(write_yaml_seq 2 "${f##*/}")
 | 
			
		||||
    done
 | 
			
		||||
    Yaml+=$(write_empty_line)
 | 
			
		||||
    debug_pkg=$(print_debug_package_names)
 | 
			
		||||
    Yaml+=$(write_yaml_map 0 "debug")
 | 
			
		||||
    for d in ${debug_pkg}; do
 | 
			
		||||
        Yaml+=$(write_yaml_seq 2 "${d##*/}")
 | 
			
		||||
    done
 | 
			
		||||
    Yaml+=$(write_empty_line)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_srcyaml(){
 | 
			
		||||
@@ -122,16 +146,16 @@ write_srcyaml(){
 | 
			
		||||
    yaml_write_global
 | 
			
		||||
    yaml_write_package
 | 
			
		||||
    yaml_write_fileinfo
 | 
			
		||||
    printf '%s' "${Yaml}"
 | 
			
		||||
    printf '%s\n' "${Yaml}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#}}}
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${0##*/} [options]"
 | 
			
		||||
    echo "    -d            Don't include details"
 | 
			
		||||
    echo '    -h            This help'
 | 
			
		||||
    echo ''
 | 
			
		||||
    printf 'Usage: %s [options]\n' "${0##*/}"
 | 
			
		||||
    printf '    -d            Do not include details\n'
 | 
			
		||||
    printf '    -h            This help\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    exit "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -143,7 +167,6 @@ while getopts "${opts}" arg; do
 | 
			
		||||
    case "${arg}" in
 | 
			
		||||
        d) details=false ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										202
									
								
								bin/pkg/tidyarch.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										202
									
								
								bin/pkg/tidyarch.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,202 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2018-20 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.
 | 
			
		||||
 | 
			
		||||
m4_include(lib/util-base.sh)
 | 
			
		||||
m4_include(lib/util-pkg.sh)
 | 
			
		||||
m4_include(lib/base/message.sh)
 | 
			
		||||
m4_include(lib/pkg/repo.sh)
 | 
			
		||||
 | 
			
		||||
git_rm() {
 | 
			
		||||
    local r="$1"
 | 
			
		||||
    if ! "$run_f"; then
 | 
			
		||||
        printf "git rm -r %s\n" "$r"
 | 
			
		||||
        printf "git commit -m 'remove %s'\n" "${r##*/}"
 | 
			
		||||
    else
 | 
			
		||||
        git rm -r  "$r"
 | 
			
		||||
        git commit -m "remove ${r##*/}"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
compare_ver() {
 | 
			
		||||
    local a="$1" b="$2" tree="$3" func="$4" va vb
 | 
			
		||||
    # shellcheck disable=1090
 | 
			
		||||
    source "$a"/PKGBUILD 2>/dev/null
 | 
			
		||||
    va=$(get_full_version)
 | 
			
		||||
    unset pkgver epoch pkgrel arch
 | 
			
		||||
    # shellcheck disable=1090
 | 
			
		||||
    source "$b"/PKGBUILD 2>/dev/null
 | 
			
		||||
    vb=$(get_full_version)
 | 
			
		||||
    unset pkgver epoch pkgrel arch
 | 
			
		||||
    msg2 "a: %s b: %s" "$va" "$vb"
 | 
			
		||||
    local ret
 | 
			
		||||
    ret=$(vercmp "$va" "$vb")
 | 
			
		||||
    msg2 "ret: %s" "$ret"
 | 
			
		||||
    if [ "$ret" -gt 0 ]; then
 | 
			
		||||
        git_rm "$b"
 | 
			
		||||
    elif [ "$ret" -lt 0 ]; then
 | 
			
		||||
        git_rm "$a"
 | 
			
		||||
    else
 | 
			
		||||
        case "$tree" in
 | 
			
		||||
            "${ARCH_TREE[0]}") git_rm "$a" ;;
 | 
			
		||||
            "${ARCH_TREE[1]}") git_rm "$b" ;;
 | 
			
		||||
        esac
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
check_duplicates() {
 | 
			
		||||
    mapfile -t duplicates < <(find "${TREE_DIR_ARCH}" -mindepth 2 -maxdepth 2 -type d -not -path "*.git" -printf '%f\n' | sort | uniq -d)
 | 
			
		||||
 | 
			
		||||
    for p in "${duplicates[@]}"; do
 | 
			
		||||
        msg "%s" "$p"
 | 
			
		||||
        local av bv a b
 | 
			
		||||
 | 
			
		||||
        a="${TREE_DIR_ARCH}/${ARCH_TREE[0]}"
 | 
			
		||||
        # shellcheck disable=1090
 | 
			
		||||
        source "$a/$p"/trunk/PKGBUILD 2>/dev/null
 | 
			
		||||
        av=$(get_full_version)
 | 
			
		||||
 | 
			
		||||
        b="${TREE_DIR_ARCH}/${ARCH_TREE[1]}"
 | 
			
		||||
        # shellcheck disable=1090
 | 
			
		||||
        source "$b/$p"/trunk/PKGBUILD 2>/dev/null
 | 
			
		||||
        bv=$(get_full_version)
 | 
			
		||||
 | 
			
		||||
        msg2 "a: %s b: %s" "$av" "$bv"
 | 
			
		||||
        ret=$(vercmp "$av" "$bv")
 | 
			
		||||
        msg2 "ret: %s" "$ret"
 | 
			
		||||
 | 
			
		||||
        if [ "$ret" -gt 0 ]; then
 | 
			
		||||
            cd "$b"
 | 
			
		||||
            msg2 "%s" "${b##*/}"
 | 
			
		||||
            git_rm "$p"
 | 
			
		||||
        elif [ "$ret" -lt 0 ]; then
 | 
			
		||||
            cd "$a"
 | 
			
		||||
            msg2 "%s" "${a##*/}"
 | 
			
		||||
            git_rm "$p"
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
# git config core.mergeoptions --no-edit
 | 
			
		||||
check_tree() {
 | 
			
		||||
    for tree in "${ARCH_TREE[@]}"; do
 | 
			
		||||
        cd "${TREE_DIR_ARCH}/$tree" || exit
 | 
			
		||||
 | 
			
		||||
        mapfile -t pkgs < <(find . -mindepth 2 -maxdepth 2 -type d -name repos | sort)
 | 
			
		||||
 | 
			
		||||
        for p in "${pkgs[@]}"; do
 | 
			
		||||
 | 
			
		||||
            mapfile -t repos < <(find "$p" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | sort)
 | 
			
		||||
 | 
			
		||||
            local repos_dir=$p
 | 
			
		||||
            p=${p%/*}
 | 
			
		||||
            p=${p##*/}
 | 
			
		||||
            local size=${#repos[@]}
 | 
			
		||||
 | 
			
		||||
            if (( "$size" > 1 )); then
 | 
			
		||||
                if [[ "${repos[1]}" != "${valid_names[11]}"-* ]] || [[ "${repos[1]}" != "${valid_names[12]}"-* ]]; then
 | 
			
		||||
 | 
			
		||||
                    local a="$repos_dir/${repos[0]}" b="$repos_dir/${repos[1]}"
 | 
			
		||||
 | 
			
		||||
                    # repo mismatches
 | 
			
		||||
                    if [[ "${repos[0]}" == "${valid_names[2]}"-* ]] && [[ "${repos[1]}" == "${valid_names[1]}"-* ]]; then
 | 
			
		||||
                        msg "%s: %s" "$p" "${repos[*]}"
 | 
			
		||||
                        msg2 "%s" "$tree"
 | 
			
		||||
                        compare_ver "$a" "$b" "$tree"
 | 
			
		||||
 | 
			
		||||
                    elif [[ "${repos[0]}" == "${valid_names[2]}"-* ]] && [[ "${repos[1]}" == "${valid_names[7]}"-* ]]; then
 | 
			
		||||
                        msg "%s: %s" "$p" "${repos[*]}"
 | 
			
		||||
                        msg2 "%s" "$tree"
 | 
			
		||||
                        compare_ver "$a" "$b" "$tree"
 | 
			
		||||
 | 
			
		||||
                    elif [[ "${repos[0]}" == "${valid_names[2]}"-* ]] && [[ "${repos[1]}" == "${valid_names[4]}"-* ]]; then
 | 
			
		||||
                        msg "%s: %s" "$p" "${repos[*]}"
 | 
			
		||||
                        msg2 "%s" "$tree"
 | 
			
		||||
                        compare_ver "$a" "$b" "$tree"
 | 
			
		||||
 | 
			
		||||
                    elif [[ "${repos[0]}" == "${valid_names[0]}"-* ]] && [[ "${repos[1]}" == "${valid_names[1]}"-* ]]; then
 | 
			
		||||
                        msg "%s: %s" "$p" "${repos[*]}"
 | 
			
		||||
                        msg2 "%s" "$tree"
 | 
			
		||||
                        compare_ver "$a" "$b" "$tree"
 | 
			
		||||
 | 
			
		||||
                    elif [[ "${repos[0]}" == "${valid_names[2]}"-* ]] && [[ "${repos[1]}" == "${valid_names[0]}"-* ]]; then
 | 
			
		||||
                        msg "%s: %s" "$p" "${repos[*]}"
 | 
			
		||||
                        msg2 "%s" "$tree"
 | 
			
		||||
                        compare_ver "$a" "$b" "$tree"
 | 
			
		||||
 | 
			
		||||
                    elif [[ "${repos[0]}" == "${valid_names[3]}"-* ]] && [[ "${repos[1]}" == "${valid_names[7]}"-* ]]; then
 | 
			
		||||
                        msg "%s: %s" "$p" "${repos[*]}"
 | 
			
		||||
                        msg2 "%s" "$tree"
 | 
			
		||||
                        compare_ver "$a" "$b" "$tree"
 | 
			
		||||
 | 
			
		||||
                    elif [[ "${repos[0]}" == "${valid_names[3]}"-* ]] && [[ "${repos[1]}" == "${valid_names[4]}"-* ]]; then
 | 
			
		||||
                        msg "%s: %s" "$p" "${repos[*]}"
 | 
			
		||||
                        msg2 "%s" "$tree"
 | 
			
		||||
                        compare_ver "$a" "$b" "$tree"
 | 
			
		||||
                    fi
 | 
			
		||||
 | 
			
		||||
                    # same repo name but different arch
 | 
			
		||||
                    if [[ "${repos[0]}" == "${valid_names[0]}"-any ]] && [[ "${repos[1]}" == "${valid_names[0]}"-"$CARCH" ]]; then
 | 
			
		||||
                        msg "%s: %s" "$p" "${repos[*]}"
 | 
			
		||||
                        msg2 "%s" "$tree"
 | 
			
		||||
                        compare_ver "$a" "$b" "$tree"
 | 
			
		||||
 | 
			
		||||
                    elif [[ "${repos[0]}" == "${valid_names[1]}"-any ]] && [[ "${repos[1]}" == "${valid_names[1]}"-"$CARCH" ]]; then
 | 
			
		||||
                        msg "%s: %s" "$p" "${repos[*]}"
 | 
			
		||||
                        msg2 "%s" "$tree"
 | 
			
		||||
                        compare_ver "$a" "$b" "$tree"
 | 
			
		||||
 | 
			
		||||
                    elif [[ "${repos[0]}" == "${valid_names[2]}"-any ]] && [[ "${repos[1]}" == "${valid_names[2]}"-"$CARCH" ]]; then
 | 
			
		||||
                        msg "%s: %s" "$p" "${repos[*]}"
 | 
			
		||||
                        msg2 "%s" "$tree"
 | 
			
		||||
                        compare_ver "$a" "$b" "$tree"
 | 
			
		||||
                    fi
 | 
			
		||||
                fi
 | 
			
		||||
            fi
 | 
			
		||||
        done
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    printf 'Usage: %s\n' "${0##*/}"
 | 
			
		||||
    printf '    -f                 Apply filter\n'
 | 
			
		||||
    printf '    -r                 Run removal\n'
 | 
			
		||||
    printf '    -d                 Check for duplicates\n'
 | 
			
		||||
    printf '    -h                 This help\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    exit "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
load_makepkg_config
 | 
			
		||||
 | 
			
		||||
load_valid_names
 | 
			
		||||
 | 
			
		||||
filter=false
 | 
			
		||||
dupl=false
 | 
			
		||||
run_f=false
 | 
			
		||||
 | 
			
		||||
opts='hrfd'
 | 
			
		||||
 | 
			
		||||
while getopts ${opts} arg; do
 | 
			
		||||
    case "${arg}" in
 | 
			
		||||
        f) filter=true ;;
 | 
			
		||||
        r) run_f=true ;;
 | 
			
		||||
        d) dupl=true ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
shift $(( OPTIND - 1 ))
 | 
			
		||||
 | 
			
		||||
"$filter" && check_tree
 | 
			
		||||
 | 
			
		||||
"$dupl" && check_duplicates
 | 
			
		||||
@@ -15,15 +15,20 @@
 | 
			
		||||
#         packages-runit
 | 
			
		||||
#         packages-s6
 | 
			
		||||
#         packages-suite66
 | 
			
		||||
#         packages-dinit
 | 
			
		||||
#         packages-perl
 | 
			
		||||
#         packages-java
 | 
			
		||||
#         packages-ruby
 | 
			
		||||
#         packages-kf5
 | 
			
		||||
#         packages-gtk
 | 
			
		||||
#         packages-qt5
 | 
			
		||||
#         packages-qt6
 | 
			
		||||
#         packages-xorg
 | 
			
		||||
#         packages-plasma
 | 
			
		||||
#         packages-kde
 | 
			
		||||
#         packages-gnome
 | 
			
		||||
#         packages-cinnamon
 | 
			
		||||
#         packages-lxqt
 | 
			
		||||
#         packages-lxde
 | 
			
		||||
#         packages-mate
 | 
			
		||||
#         packages-xfce
 | 
			
		||||
#         packages-wm
 | 
			
		||||
@@ -33,6 +38,8 @@
 | 
			
		||||
#         packages-misc
 | 
			
		||||
#         python-world
 | 
			
		||||
#         python-galaxy
 | 
			
		||||
#         python-galaxy-groups
 | 
			
		||||
#         python-misc
 | 
			
		||||
#         packages-python
 | 
			
		||||
#         packages-lib32
 | 
			
		||||
# )
 | 
			
		||||
 
 | 
			
		||||
@@ -11,10 +11,10 @@
 | 
			
		||||
#
 | 
			
		||||
#-- The download utilities that makepkg should use to acquire sources
 | 
			
		||||
#  Format: 'protocol::agent'
 | 
			
		||||
DLAGENTS=('file::/usr/bin/curl -gqC - -o %o %u'
 | 
			
		||||
          'ftp::/usr/bin/curl -gqfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
 | 
			
		||||
          'http::/usr/bin/curl -gqb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
 | 
			
		||||
          'https::/usr/bin/curl -gqb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
 | 
			
		||||
DLAGENTS=('file::/usr/bin/curl -qgC - -o %o %u'
 | 
			
		||||
          'ftp::/usr/bin/curl -qgfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
 | 
			
		||||
          'http::/usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
 | 
			
		||||
          'https::/usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
 | 
			
		||||
          'rsync::/usr/bin/rsync --no-motd -z %u %o'
 | 
			
		||||
          'scp::/usr/bin/scp -C %u %o')
 | 
			
		||||
 | 
			
		||||
@@ -49,8 +49,8 @@ LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now"
 | 
			
		||||
#-- Make Flags: change this for DistCC/SMP systems
 | 
			
		||||
#MAKEFLAGS="-j2"
 | 
			
		||||
#-- Debugging flags
 | 
			
		||||
DEBUG_CFLAGS="-g -fvar-tracking-assignments"
 | 
			
		||||
DEBUG_CXXFLAGS="-g -fvar-tracking-assignments"
 | 
			
		||||
DEBUG_CFLAGS="-g"
 | 
			
		||||
DEBUG_CXXFLAGS="-g"
 | 
			
		||||
#DEBUG_RUSTFLAGS="-C debuginfo=2"
 | 
			
		||||
 | 
			
		||||
#########################################################################
 | 
			
		||||
@@ -93,7 +93,7 @@ BUILDENV=(!distcc color !ccache check !sign)
 | 
			
		||||
#-- debug:      Add debugging flags as specified in DEBUG_* variables
 | 
			
		||||
#-- lto:        Add compile flags for building with link time optimization
 | 
			
		||||
#
 | 
			
		||||
OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug !lto)
 | 
			
		||||
OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug lto)
 | 
			
		||||
 | 
			
		||||
#-- File integrity checks to use. Valid: md5, sha1, sha224, sha256, sha384, sha512, b2
 | 
			
		||||
INTEGRITY_CHECK=(sha256)
 | 
			
		||||
 
 | 
			
		||||
@@ -3,11 +3,11 @@
 | 
			
		||||
#{{{ yaml
 | 
			
		||||
 | 
			
		||||
write_yaml_header(){
 | 
			
		||||
    printf '%s' '---'
 | 
			
		||||
    printf '%s\n' '---'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_empty_line(){
 | 
			
		||||
    printf '\n%s\n' ' '
 | 
			
		||||
    printf '\n'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_yaml_map(){
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ write_services_conf(){
 | 
			
		||||
        yaml+=$(write_yaml_seq 2 "$svc")
 | 
			
		||||
    done
 | 
			
		||||
    yaml+=$(write_empty_line)
 | 
			
		||||
    printf '%s' "${yaml}"
 | 
			
		||||
    printf '%s\n' "${yaml}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_services_openrc_conf(){
 | 
			
		||||
@@ -29,6 +29,7 @@ write_services_runit_conf(){
 | 
			
		||||
write_services_s6_conf(){
 | 
			
		||||
    local conf="$1"/services-s6.conf
 | 
			
		||||
    write_services_conf 'svDir' '/etc/s6/sv' 'dbDir' '/etc/s6/rc/compiled' > "$conf"
 | 
			
		||||
    printf '%s\n' "defaultBundle: default" >> "$conf"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_services_suite66_conf(){
 | 
			
		||||
 
 | 
			
		||||
@@ -5,13 +5,13 @@
 | 
			
		||||
get_disturl(){
 | 
			
		||||
    # shellcheck disable=1091
 | 
			
		||||
    . /usr/lib/os-release
 | 
			
		||||
    echo "${HOME_URL}"
 | 
			
		||||
    printf "%s\n" "${HOME_URL}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get_osname(){
 | 
			
		||||
    # shellcheck disable=1091
 | 
			
		||||
    . /usr/lib/os-release
 | 
			
		||||
    echo "${NAME}"
 | 
			
		||||
    printf "%s\n" "${NAME}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
assemble_iso(){
 | 
			
		||||
 
 | 
			
		||||
@@ -56,7 +56,8 @@ read_from_list() {
 | 
			
		||||
read_from_services() {
 | 
			
		||||
    for svc in "${SERVICES[@]}"; do
 | 
			
		||||
        case "$svc" in
 | 
			
		||||
            sddm|gdm|lightdm|mdm|greetd|lxdm|xdm) packages+=("$svc-${INITSYS}") ;;
 | 
			
		||||
            sddm|gdm|lightdm|mdm|greetd|lxdm|xdm)
 | 
			
		||||
                packages+=("$svc-${INITSYS}"); display_manager="$svc" ;;
 | 
			
		||||
            NetworkManager) packages+=("networkmanager-${INITSYS}") ;;
 | 
			
		||||
            connmand) packages+=("connman-${INITSYS}") ;;
 | 
			
		||||
            cupsd) packages+=("cups-${INITSYS}") ;;
 | 
			
		||||
 
 | 
			
		||||
@@ -23,24 +23,26 @@ add_svc_runit(){
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
add_svc_s6(){
 | 
			
		||||
    local mnt="$1" names="$2" rlvl="${3:-default}" error ret
 | 
			
		||||
    local db=/etc/s6/rc/compiled
 | 
			
		||||
    local mnt="$1" names="$2" rlvl="${3:-default}" dep
 | 
			
		||||
    dep="$mnt"/etc/s6/sv/"$display_manager"-srv/dependencies.d
 | 
			
		||||
    for svc in $names; do
 | 
			
		||||
        error=false
 | 
			
		||||
        chroot "$mnt" s6-rc-db -c "$db" type "$svc" &> /dev/null || error=true
 | 
			
		||||
        ret="$?"
 | 
			
		||||
        if [ $ret -eq 0 ] && [[ "$error" == false ]]; then
 | 
			
		||||
            msg2 "Setting %s: [%s]" "${INITSYS}" "$svc"
 | 
			
		||||
            chroot "$mnt" s6-rc-bundle-update -c "$db" add "$rlvl" "$svc"
 | 
			
		||||
        msg2 "Setting %s: [%s]" "${INITSYS}" "$svc"
 | 
			
		||||
        chroot "$mnt" s6-service add "$rlvl" "$svc"
 | 
			
		||||
        if [[ "$svc" == "$display_manager" ]]; then
 | 
			
		||||
            if [[ -d "$dep" ]]; then
 | 
			
		||||
                touch "$dep"/artix-live
 | 
			
		||||
            fi
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    local rlvl=/etc/s6/current
 | 
			
		||||
    chroot "$mnt" s6-db-reload -r
 | 
			
		||||
 | 
			
		||||
    local src=/etc/s6/current skel=/etc/s6/skel getty='/usr/bin/agetty -L -8 tty7 115200'
 | 
			
		||||
    # rebuild s6-linux-init binaries
 | 
			
		||||
    chroot "$mnt" rm -r "$rlvl"
 | 
			
		||||
    chroot "$mnt" s6-linux-init-maker -1 -N -f /etc/s6/skel -G "/usr/bin/agetty -L -8 tty7 115200" -c "$rlvl" "$rlvl"
 | 
			
		||||
    chroot "$mnt" mv "$rlvl"/bin/init "$rlvl"/bin/s6-init
 | 
			
		||||
    chroot "$mnt" cp -a "$rlvl"/bin /usr
 | 
			
		||||
    chroot "$mnt" rm -r "$src"
 | 
			
		||||
    chroot "$mnt" s6-linux-init-maker -1 -N -f "$skel" -G "$getty" -c "$src" "$src"
 | 
			
		||||
    chroot "$mnt" mv "$src"/bin/init "$src"/bin/s6-init
 | 
			
		||||
    chroot "$mnt" cp -a "$src"/bin /usr
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
add_svc_suite66(){
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ get_compliant_name(){
 | 
			
		||||
    case "$gitname" in
 | 
			
		||||
        *+) gitname=${gitname//+/plus}
 | 
			
		||||
    esac
 | 
			
		||||
    echo "$gitname"
 | 
			
		||||
    printf "%s\n" "$gitname"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get_pkg_org(){
 | 
			
		||||
@@ -18,7 +18,7 @@ get_pkg_org(){
 | 
			
		||||
        python-*|python2-*) org="packagesPython" ;;
 | 
			
		||||
        *) sub=${pkg:0:1}; org="packages${sub^^}" ;;
 | 
			
		||||
    esac
 | 
			
		||||
    echo "$org"
 | 
			
		||||
    printf "%s\n" "$org"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
api_put() {
 | 
			
		||||
 
 | 
			
		||||
@@ -31,7 +31,7 @@ get_pkgbasename() {
 | 
			
		||||
    rm_pkg=${rm_pkg%-*}
 | 
			
		||||
    rm_pkg=${rm_pkg%-*}
 | 
			
		||||
    rm_pkg=${rm_pkg%-*}
 | 
			
		||||
    echo "$rm_pkg"
 | 
			
		||||
    printf "%s\n" "$rm_pkg"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#}}}
 | 
			
		||||
 
 | 
			
		||||
@@ -22,12 +22,9 @@ has_changeset(){
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pull_tree(){
 | 
			
		||||
    local tree="$1" local_head="$2" os="${3:-Artix}"
 | 
			
		||||
    local remote_head
 | 
			
		||||
    remote_head=$(get_remote_head)
 | 
			
		||||
 | 
			
		||||
    msg "Checking (%s) (%s)" "${tree}" "$os"
 | 
			
		||||
    if has_changeset "${local_head}" "${remote_head}";then
 | 
			
		||||
    local tree="$1" lh="$2" rh
 | 
			
		||||
    rh=$(get_remote_head)
 | 
			
		||||
    if has_changeset "${lh}" "${rh}";then
 | 
			
		||||
        git pull origin master
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -6,11 +6,11 @@ write_jenkinsfile(){
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
    local jenkins=$pkg/Jenkinsfile
 | 
			
		||||
 | 
			
		||||
    echo "@Library('artix-ci') import org.artixlinux.RepoPackage" > "$jenkins"
 | 
			
		||||
    printf "@Library('artix-ci') import org.artixlinux.RepoPackage\n" > "$jenkins"
 | 
			
		||||
    {
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo 'PackagePipeline(new RepoPackage(this))'
 | 
			
		||||
    echo ''
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf 'PackagePipeline(new RepoPackage(this))\n'
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    } >> "$jenkins"
 | 
			
		||||
 | 
			
		||||
    git add "$jenkins"
 | 
			
		||||
@@ -21,11 +21,11 @@ write_agentyaml(){
 | 
			
		||||
    local agent="$pkg"/.artixlinux/agent.yaml label='master'
 | 
			
		||||
    [[ -d $pkg/.artixlinux ]] || mkdir "$pkg"/.artixlinux
 | 
			
		||||
 | 
			
		||||
    echo '---' > "$agent"
 | 
			
		||||
    printf '---\n' > "$agent"
 | 
			
		||||
    {
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo "label: $label"
 | 
			
		||||
    echo ''
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    printf "label: %s\n" "$label"
 | 
			
		||||
    printf '\n'
 | 
			
		||||
    } >> "$agent"
 | 
			
		||||
 | 
			
		||||
    git add "$agent"
 | 
			
		||||
@@ -37,7 +37,7 @@ commit_jenkins_files(){
 | 
			
		||||
    write_jenkinsfile "$pkg"
 | 
			
		||||
    write_agentyaml "$pkg"
 | 
			
		||||
 | 
			
		||||
    git commit -m "initial commit"
 | 
			
		||||
    git commit -m "initial ci commit"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#}}}
 | 
			
		||||
 
 | 
			
		||||
@@ -29,20 +29,20 @@ find_repo(){
 | 
			
		||||
        [[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=repos/"$r"-any
 | 
			
		||||
        [[ -f $pkg/$pkgarch/$r/PKGBUILD ]] && repo="$pkgarch/$r"
 | 
			
		||||
    done
 | 
			
		||||
    echo "$repo"
 | 
			
		||||
    printf "%s\n" "$repo"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
find_pkg(){
 | 
			
		||||
    local searchdir="$1" pkg="$2" result
 | 
			
		||||
    result=$(find "$searchdir" -mindepth 2 -maxdepth 2 -type d -name "$pkg")
 | 
			
		||||
    echo "$result"
 | 
			
		||||
    printf "%s\n" "$result"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
tree_loop(){
 | 
			
		||||
    local func="$1" pkgs
 | 
			
		||||
    for tree in "${ARTIX_TREE[@]}"; do
 | 
			
		||||
        pkgs=$(find "${TREE_DIR_ARTIX}/$tree" -name repos -o -name "$CARCH" | sort)
 | 
			
		||||
        for _package in ${pkgs}; do
 | 
			
		||||
        mapfile -t pkgs < <(find "${TREE_DIR_ARTIX}/$tree" -name "$CARCH" | sort)
 | 
			
		||||
        for _package in "${pkgs[@]}"; do
 | 
			
		||||
            "$func" "$_package"
 | 
			
		||||
        done
 | 
			
		||||
    done
 | 
			
		||||
 
 | 
			
		||||
@@ -23,19 +23,19 @@ load_pkg_config(){
 | 
			
		||||
 | 
			
		||||
    ARTIX_TREE=(
 | 
			
		||||
        packages community
 | 
			
		||||
        packages-{gfx,gtk,media,net,qt5,xorg}
 | 
			
		||||
        packages-{gfx,media,net}
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    local dev_tree=(
 | 
			
		||||
        packages-{llvm,python,perl,java,ruby}
 | 
			
		||||
        python-{world,galaxy}
 | 
			
		||||
        packages-{llvm,python,perl,java,ruby,misc}
 | 
			
		||||
        python-{world,galaxy,galaxy-groups,misc}
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    local init_tree=(packages-{openrc,runit,s6,suite66,dinit})
 | 
			
		||||
 | 
			
		||||
    local desktop_tree=(
 | 
			
		||||
        packages-{kf5,plasma,kde,qt6}
 | 
			
		||||
        packages-{lxqt,gnome,cinnamon,mate,xfce,wm}
 | 
			
		||||
        packages-{kf5,plasma,kde,qt5,qt6,xorg,gtk}
 | 
			
		||||
        packages-{lxqt,gnome,cinnamon,mate,xfce,wm,lxde}
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    [[ -z ${TREE_NAMES_ARTIX[*]} ]] && \
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user