Compare commits
	
		
			37 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 2113ffe4c6 | |||
| 438473c878 | |||
| 86c5c2f47b | |||
| d333c245c0 | |||
| 4a650f00d7 | |||
| 08b73032a2 | |||
| 1a250c2167 | |||
| 46431619f2 | |||
| 12d2159c12 | |||
| 3865ceab58 | |||
| 890e631e1b | |||
| 273e928905 | |||
| f5c328f8e5 | |||
| 4089151791 | |||
| 211579f9d7 | |||
| 2a85209e1e | |||
| 40d691bc85 | |||
| d9da64eb51 | |||
| 5902f987cc | |||
| bfa888251e | |||
| 0ecfa1a0f6 | |||
| e60180ebdb | |||
| 20b65d06c8 | |||
| c7728c2e5b | |||
| a0ca1ab3a4 | |||
| 911a0fff36 | |||
| f80c51e8d3 | |||
| 1e948b3ef5 | |||
| bf0a9bc7fc | |||
| a4a690951c | |||
| e05765269e | |||
| 3df364189b | |||
| 974df38738 | |||
| 7b831d8867 | |||
| 7bf4dff1a1 | |||
| 529e73e2ab | |||
| 7be420a24f | 
							
								
								
									
										8
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								Makefile
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
VERSION=0.16
 | 
					VERSION=0.18
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CHROOT_VERSION=0.10
 | 
					CHROOT_VERSION=0.10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -14,7 +14,6 @@ BASE_CONF = \
 | 
				
			|||||||
	data/conf/artools-base.conf
 | 
						data/conf/artools-base.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BASE_BIN = \
 | 
					BASE_BIN = \
 | 
				
			||||||
	bin/base/signfile \
 | 
					 | 
				
			||||||
	bin/base/chroot-run \
 | 
						bin/base/chroot-run \
 | 
				
			||||||
	bin/base/mkchroot \
 | 
						bin/base/mkchroot \
 | 
				
			||||||
	bin/base/basestrap \
 | 
						bin/base/basestrap \
 | 
				
			||||||
@@ -45,7 +44,8 @@ PKG_BIN = \
 | 
				
			|||||||
	bin/pkg/checkpkg \
 | 
						bin/pkg/checkpkg \
 | 
				
			||||||
	bin/pkg/finddeps \
 | 
						bin/pkg/finddeps \
 | 
				
			||||||
	bin/pkg/find-libdeps \
 | 
						bin/pkg/find-libdeps \
 | 
				
			||||||
	bin/pkg/batchpkg
 | 
						bin/pkg/batchpkg \
 | 
				
			||||||
 | 
						bin/pkg/signpkg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LN_COMMITPKG = \
 | 
					LN_COMMITPKG = \
 | 
				
			||||||
	extrapkg \
 | 
						extrapkg \
 | 
				
			||||||
@@ -90,7 +90,7 @@ LN_DEPLOYPKG = \
 | 
				
			|||||||
	deploypkg-gnome-wobble
 | 
						deploypkg-gnome-wobble
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PKG_LIBS = \
 | 
					PKG_LIBS = \
 | 
				
			||||||
	$(wildcard lib/pkg/*)
 | 
						$(wildcard lib/pkg/*.sh)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PKG_UTIL = lib/util-pkg.sh
 | 
					PKG_UTIL = lib/util-pkg.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@ artools
 | 
				
			|||||||
- pkg:
 | 
					- pkg:
 | 
				
			||||||
  * namcap
 | 
					  * namcap
 | 
				
			||||||
  * git-subrepo
 | 
					  * git-subrepo
 | 
				
			||||||
  * jshon
 | 
					  * jq
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- iso:
 | 
					- iso:
 | 
				
			||||||
  * dosfstools
 | 
					  * dosfstools
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,6 +46,7 @@ newroot=/mnt
 | 
				
			|||||||
hostcache=0
 | 
					hostcache=0
 | 
				
			||||||
copykeyring=1
 | 
					copykeyring=1
 | 
				
			||||||
copymirrorlist=1
 | 
					copymirrorlist=1
 | 
				
			||||||
 | 
					pacmode=-Sy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
usage() {
 | 
					usage() {
 | 
				
			||||||
    echo "usage: ${0##*/} [options] root [packages...]"
 | 
					    echo "usage: ${0##*/} [options] root [packages...]"
 | 
				
			||||||
@@ -54,6 +55,7 @@ usage() {
 | 
				
			|||||||
    echo " -G               Avoid copying the host's pacman keyring to the target"
 | 
					    echo " -G               Avoid copying the host's pacman keyring to the target"
 | 
				
			||||||
    echo " -i               Avoid auto-confirmation of package selections"
 | 
					    echo " -i               Avoid auto-confirmation of package selections"
 | 
				
			||||||
    echo " -M               Avoid copying the host's mirrorlist to the target"
 | 
					    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 " -h               Print this help message"
 | 
				
			||||||
    echo ''
 | 
					    echo ''
 | 
				
			||||||
    echo ' basestrap installs packages to the specified new root directory.'
 | 
					    echo ' basestrap installs packages to the specified new root directory.'
 | 
				
			||||||
@@ -65,7 +67,7 @@ usage() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
orig_argv=("$0" "$@")
 | 
					orig_argv=("$0" "$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opts=':C:cGiM'
 | 
					opts=':C:cGiMU'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts ${opts} arg; do
 | 
					while getopts ${opts} arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
@@ -74,6 +76,7 @@ while getopts ${opts} arg; do
 | 
				
			|||||||
        i) interactive=1 ;;
 | 
					        i) interactive=1 ;;
 | 
				
			||||||
        G) copykeyring=0 ;;
 | 
					        G) copykeyring=0 ;;
 | 
				
			||||||
        M) copymirrorlist=0 ;;
 | 
					        M) copymirrorlist=0 ;;
 | 
				
			||||||
 | 
					        U) pacmode=-U ;;
 | 
				
			||||||
        :) echo "invalid argument ${arg}:$OPTARG"; usage 1;;
 | 
					        :) echo "invalid argument ${arg}:$OPTARG"; usage 1;;
 | 
				
			||||||
        ?) usage 0 ;;
 | 
					        ?) usage 0 ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
@@ -109,7 +112,7 @@ if (( copykeyring ));then
 | 
				
			|||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg2 'Installing packages to %s' "$newroot"
 | 
					msg2 'Installing packages to %s' "$newroot"
 | 
				
			||||||
if ! pacman -r "$newroot" -Sy "${pacman_args[@]}"; then
 | 
					if ! unshare --fork --pid pacman -r "$newroot" $pacmode "${pacman_args[@]}"; then
 | 
				
			||||||
    die 'Failed to install packages to new root'
 | 
					    die 'Failed to install packages to new root'
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -86,15 +86,13 @@ done
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
while read -r line; do
 | 
					while read -r line; do
 | 
				
			||||||
    mapfile -t lines < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" \
 | 
					    mapfile -t lines < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" \
 | 
				
			||||||
        --repo $line Server | sed -r 's#(.*/)[^/]+/os/.+#\1$repo/os/$arch#')
 | 
					        --repo $line Server | sed -r 's#(.*/)[^/]+/os/.+#\1#')
 | 
				
			||||||
    if [[ ${lines[0]} != ${host_mirrors[0]} ]]; then
 | 
					    for line in "${lines[@]}"; do
 | 
				
			||||||
        for line in "${lines[@]}"; do
 | 
					        if [[ $line = file://* ]]; then
 | 
				
			||||||
            if [[ $line = file://* ]]; then
 | 
					            line=${line#file://}
 | 
				
			||||||
                line=${line#file://}
 | 
					            in_array "$line" "${cache_dirs[@]}" || cache_dirs+=("$line")
 | 
				
			||||||
                in_array "$line" "${cache_dirs[@]}" || cache_dirs+=("$line")
 | 
					        fi
 | 
				
			||||||
            fi
 | 
					    done
 | 
				
			||||||
        done
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
done < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" --repo-list)
 | 
					done < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" --repo-list)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
copy_hostconf () {
 | 
					copy_hostconf () {
 | 
				
			||||||
@@ -149,7 +147,7 @@ elif [[ $(cat "$working_dir/.artools") != ${CHROOTVERSION} ]]; then
 | 
				
			|||||||
    die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "${CHROOTVERSION}"
 | 
					    die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "${CHROOTVERSION}"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sync_host_localtime
 | 
					#sync_host_localtime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
chroot_api_mount "${working_dir}" || die "failed to setup API filesystems in chroot %s" "${working_dir}"
 | 
					chroot_api_mount "${working_dir}" || die "failed to setup API filesystems in chroot %s" "${working_dir}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,6 +15,7 @@
 | 
				
			|||||||
. @libdir@/artools/util-base.sh
 | 
					. @libdir@/artools/util-base.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
working_dir=''
 | 
					working_dir=''
 | 
				
			||||||
 | 
					umode=''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
files=()
 | 
					files=()
 | 
				
			||||||
chroot_args=()
 | 
					chroot_args=()
 | 
				
			||||||
@@ -22,6 +23,7 @@ chroot_args=()
 | 
				
			|||||||
usage() {
 | 
					usage() {
 | 
				
			||||||
    echo "Usage: ${0##*/} [options] working-dir package-list..."
 | 
					    echo "Usage: ${0##*/} [options] working-dir package-list..."
 | 
				
			||||||
    echo ' options:'
 | 
					    echo ' options:'
 | 
				
			||||||
 | 
					    echo '    -U            Use pacman -U to install packages'
 | 
				
			||||||
    echo '    -C <file>     Location of a pacman config file'
 | 
					    echo '    -C <file>     Location of a pacman config file'
 | 
				
			||||||
    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'
 | 
				
			||||||
@@ -33,10 +35,11 @@ usage() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
orig_argv=("$0" "$@")
 | 
					orig_argv=("$0" "$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opts='hC:M:c:f:s'
 | 
					opts='hUC:M:c:f:s'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts ${opts} arg; do
 | 
					while getopts ${opts} arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
 | 
					        U) umode=U ;;
 | 
				
			||||||
        C) pacman_conf="$OPTARG" ;;
 | 
					        C) pacman_conf="$OPTARG" ;;
 | 
				
			||||||
        M) makepkg_conf="$OPTARG" ;;
 | 
					        M) makepkg_conf="$OPTARG" ;;
 | 
				
			||||||
        c) cache_dir="$OPTARG" ;;
 | 
					        c) cache_dir="$OPTARG" ;;
 | 
				
			||||||
@@ -45,8 +48,10 @@ while getopts ${opts} arg; do
 | 
				
			|||||||
        h|?) usage ;;
 | 
					        h|?) usage ;;
 | 
				
			||||||
        *) error "invalid argument '%s'" "$arg"; usage ;;
 | 
					        *) error "invalid argument '%s'" "$arg"; usage ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
    chroot_args+=("-$arg")
 | 
					    if [[ $arg != U ]]; then
 | 
				
			||||||
    [[ -v OPTARG ]] && chroot_args+=("$OPTARG")
 | 
					        chroot_args+=("-$arg")
 | 
				
			||||||
 | 
					        [[ -v OPTARG ]] && chroot_args+=("$OPTARG")
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
shift $(($OPTIND - 1))
 | 
					shift $(($OPTIND - 1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -88,7 +93,7 @@ for f in "${files[@]}"; do
 | 
				
			|||||||
    cp "$f" "$working_dir$f"
 | 
					    cp "$f" "$working_dir$f"
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
basestrap -Mc ${pacman_conf:+-C "$pacman_conf"} "$working_dir" \
 | 
					basestrap -${umode}Mc ${pacman_conf:+-C "$pacman_conf"} "$working_dir" \
 | 
				
			||||||
    ${cache_dirs[@]/#/--cachedir=} "$@" || die 'Failed to install all packages'
 | 
					    ${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"
 | 
					printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,32 +0,0 @@
 | 
				
			|||||||
#!/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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
load_makepkg_config
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
file_to_sign="$1"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ ! -e "$1" ]; then
 | 
					 | 
				
			||||||
    error "%s does not exist!" "$file_to_sign"
 | 
					 | 
				
			||||||
    exit 1
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ -n "${BUILDBOT_GPGP}" ]]; then
 | 
					 | 
				
			||||||
    msg2 "Signing [%s]" "${file_to_sign##*/}"
 | 
					 | 
				
			||||||
    gpg --batch --passphrase "${BUILDBOT_GPGP}" --detach-sign "$file_to_sign"
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
    msg2 "Signing [%s] with key %s" "${file_to_sign##*/}" "${GPGKEY}..."
 | 
					 | 
				
			||||||
    gpg --detach-sign --use-agent -u "${GPGKEY}" "$file_to_sign"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
@@ -14,6 +14,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
. @libdir@/artools/util-iso.sh
 | 
					. @libdir@/artools/util-iso.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prepare_artools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
gen_iso_fn(){
 | 
					gen_iso_fn(){
 | 
				
			||||||
    local vars=("artix") name
 | 
					    local vars=("artix") name
 | 
				
			||||||
    vars+=("${PROFILE}")
 | 
					    vars+=("${PROFILE}")
 | 
				
			||||||
@@ -50,6 +52,8 @@ prepare_build(){
 | 
				
			|||||||
    basestrap_args+=(-C ${pacman_conf})
 | 
					    basestrap_args+=(-C ${pacman_conf})
 | 
				
			||||||
    work_dir=${CHROOTS_ISO}/${PROFILE}/artix
 | 
					    work_dir=${CHROOTS_ISO}/${PROFILE}/artix
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    prepare_dir "${ISO_POOL}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    iso_dir="${ISO_POOL}/${PROFILE}"
 | 
					    iso_dir="${ISO_POOL}/${PROFILE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    iso_root=${CHROOTS_ISO}/${PROFILE}/iso
 | 
					    iso_root=${CHROOTS_ISO}/${PROFILE}/iso
 | 
				
			||||||
@@ -75,6 +79,44 @@ display_settings(){
 | 
				
			|||||||
    show_profile
 | 
					    show_profile
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mk_squash(){
 | 
				
			||||||
 | 
					    local timer=$(get_timer)
 | 
				
			||||||
 | 
					    make_sfs "${work_dir}/rootfs"
 | 
				
			||||||
 | 
					    [[ -d "${work_dir}/livefs" ]] && make_sfs "${work_dir}/livefs"
 | 
				
			||||||
 | 
					    show_elapsed_time "${FUNCNAME}" "${timer}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mk_iso(){
 | 
				
			||||||
 | 
					    touch "${iso_root}/.artix"
 | 
				
			||||||
 | 
					    msg "Making bootable image"
 | 
				
			||||||
 | 
					    # Sanity checks
 | 
				
			||||||
 | 
					    [[ ! -d "${iso_root}" ]] && return 1
 | 
				
			||||||
 | 
					    if [[ -f "${iso_dir}/${iso_file}" ]]; then
 | 
				
			||||||
 | 
					        msg2 "Removing existing bootable image..."
 | 
				
			||||||
 | 
					        rm -rf "${iso_dir}/${iso_file}"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    assemble_iso
 | 
				
			||||||
 | 
					    chown -R "${OWNER}:$(id --group ${OWNER})" "${iso_dir}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mk_boot(){
 | 
				
			||||||
 | 
					    local timer=$(get_timer)
 | 
				
			||||||
 | 
					    run_safe "make_bootfs"
 | 
				
			||||||
 | 
					    run_safe "make_grub"
 | 
				
			||||||
 | 
					    show_elapsed_time "${FUNCNAME}" "${timer}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mk_chroots(){
 | 
				
			||||||
 | 
					    local timer=$(get_timer)
 | 
				
			||||||
 | 
					    load_pkgs "${ROOT_LIST}" "${INITSYS}"
 | 
				
			||||||
 | 
					    run_safe "make_rootfs"
 | 
				
			||||||
 | 
					    if [[ -n ${LIVE_LIST} ]]; then
 | 
				
			||||||
 | 
					        load_pkgs "${LIVE_LIST}" "${INITSYS}"
 | 
				
			||||||
 | 
					        run_safe "make_livefs"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    show_elapsed_time "${FUNCNAME}" "${timer}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
build(){
 | 
					build(){
 | 
				
			||||||
    msg "Start building [%s]" "${PROFILE}"
 | 
					    msg "Start building [%s]" "${PROFILE}"
 | 
				
			||||||
    if ${clean_first};then
 | 
					    if ${clean_first};then
 | 
				
			||||||
@@ -95,28 +137,45 @@ build(){
 | 
				
			|||||||
        rm -rf --one-file-system "${iso_root}"
 | 
					        rm -rf --one-file-system "${iso_root}"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ${iso_only}; then
 | 
					    case true in
 | 
				
			||||||
        [[ ! -d ${work_dir} ]] && die "Create images: %s -p %s -x" "${cmd}" "${PROFILE}"
 | 
					        ${chroot_only})
 | 
				
			||||||
        compress_images
 | 
					            mk_chroots
 | 
				
			||||||
        exit 1
 | 
					            warning "Continue squash: %s -p %s -sc ..." "${cmd}" "${PROFILE}"
 | 
				
			||||||
    fi
 | 
					            exit 1
 | 
				
			||||||
    if ${images_only}; then
 | 
					        ;;
 | 
				
			||||||
        prepare_images
 | 
					        ${boot_only})
 | 
				
			||||||
        warning "Continue compress: %s -p %s -zc ..." "${cmd}" "${PROFILE}"
 | 
					            mk_boot
 | 
				
			||||||
        exit 1
 | 
					            warning "Continue iso: %s -p %s -zc ..." "${cmd}" "${PROFILE}"
 | 
				
			||||||
    else
 | 
					            exit 1
 | 
				
			||||||
        prepare_images
 | 
					        ;;
 | 
				
			||||||
        compress_images
 | 
					        ${squash_only})
 | 
				
			||||||
    fi
 | 
					            mk_squash
 | 
				
			||||||
 | 
					            warning "Continue boot: %s -p %s -bc ..." "${cmd}" "${PROFILE}"
 | 
				
			||||||
 | 
					            exit 1
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        ${iso_only})
 | 
				
			||||||
 | 
					            [[ ! -d ${work_dir} ]] && die "Create chroot: %s -p %s -x" "${cmd}" "${PROFILE}"
 | 
				
			||||||
 | 
					            mk_iso
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					        *)
 | 
				
			||||||
 | 
					            mk_chroots
 | 
				
			||||||
 | 
					            mk_boot
 | 
				
			||||||
 | 
					            mk_squash
 | 
				
			||||||
 | 
					            mk_iso
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
    msg "Finished building [%s]" "${PROFILE}"
 | 
					    msg "Finished building [%s]" "${PROFILE}"
 | 
				
			||||||
    show_elapsed_time "${FUNCNAME}" "${timer_start}"
 | 
					    show_elapsed_time "${FUNCNAME}" "${timer_start}"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean_first=true
 | 
					clean_first=true
 | 
				
			||||||
pretend=false
 | 
					pretend=false
 | 
				
			||||||
images_only=false
 | 
					chroot_only=false
 | 
				
			||||||
iso_only=false
 | 
					iso_only=false
 | 
				
			||||||
persist=false
 | 
					persist=false
 | 
				
			||||||
 | 
					use_dracut=false
 | 
				
			||||||
 | 
					squash_only=false
 | 
				
			||||||
 | 
					boot_only=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
basestrap_args=(-GMc)
 | 
					basestrap_args=(-GMc)
 | 
				
			||||||
cmd=${0##*/}
 | 
					cmd=${0##*/}
 | 
				
			||||||
@@ -136,9 +195,12 @@ usage() {
 | 
				
			|||||||
    echo "                       [default: ${GPG_KEY}]"
 | 
					    echo "                       [default: ${GPG_KEY}]"
 | 
				
			||||||
    echo '    -m                 Set SquashFS image mode to persistence'
 | 
					    echo '    -m                 Set SquashFS image mode to persistence'
 | 
				
			||||||
    echo '    -c                 Disable clean work dir'
 | 
					    echo '    -c                 Disable clean work dir'
 | 
				
			||||||
    echo '    -x                 Build images only'
 | 
					    echo '    -x                 Build chroot only'
 | 
				
			||||||
 | 
					    echo '    -s                 Squash chroot only'
 | 
				
			||||||
 | 
					    echo '    -b                 Generate iso boot only'
 | 
				
			||||||
    echo '    -z                 Generate iso only'
 | 
					    echo '    -z                 Generate iso only'
 | 
				
			||||||
    echo '                       Requires pre built images (-x)'
 | 
					    echo '                       Requires pre built images (-x)'
 | 
				
			||||||
 | 
					    echo '    -d                 Use dracut instead of mkinitcpio for iso initramfs'
 | 
				
			||||||
    echo '    -q                 Query settings and pretend build'
 | 
					    echo '    -q                 Query settings and pretend build'
 | 
				
			||||||
    echo '    -h                 This help'
 | 
					    echo '    -h                 This help'
 | 
				
			||||||
    echo ''
 | 
					    echo ''
 | 
				
			||||||
@@ -148,7 +210,7 @@ usage() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
orig_argv=("$0" "$@")
 | 
					orig_argv=("$0" "$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opts='p:r:t:i:g:czxmqh'
 | 
					opts='p:r:t:i:g:czsbxmdqh'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts "${opts}" arg; do
 | 
					while getopts "${opts}" arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
@@ -158,9 +220,12 @@ while getopts "${opts}" arg; do
 | 
				
			|||||||
        i) INITSYS="$OPTARG" ;;
 | 
					        i) INITSYS="$OPTARG" ;;
 | 
				
			||||||
        g) GPG_KEY="$OPTARG" ;;
 | 
					        g) GPG_KEY="$OPTARG" ;;
 | 
				
			||||||
        c) clean_first=false ;;
 | 
					        c) clean_first=false ;;
 | 
				
			||||||
        x) images_only=true ;;
 | 
					        x) chroot_only=true ;;
 | 
				
			||||||
        z) iso_only=true ;;
 | 
					        z) iso_only=true ;;
 | 
				
			||||||
 | 
					        s) squash_only=true ;;
 | 
				
			||||||
 | 
					        b) boot_only=true ;;
 | 
				
			||||||
        m) persist=true ;;
 | 
					        m) persist=true ;;
 | 
				
			||||||
 | 
					        d) use_dracut=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 ;;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
. @libdir@/artools/util-iso.sh
 | 
					. @libdir@/artools/util-iso.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prepare_artools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
connect(){
 | 
					connect(){
 | 
				
			||||||
    echo "${ACCOUNT}@${FILE_HOST}:${FILE_HOME}"
 | 
					    echo "${ACCOUNT}@${FILE_HOST}:${FILE_HOME}"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
. /usr/lib/artools/util-pkg.sh
 | 
					. /usr/lib/artools/util-pkg.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prepare_artools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
batch_move() {
 | 
					batch_move() {
 | 
				
			||||||
    local name="${1:-pkg_moves}"
 | 
					    local name="${1:-pkg_moves}"
 | 
				
			||||||
    local pkglist=${TREE_DIR_ARTIX}/$name.list
 | 
					    local pkglist=${TREE_DIR_ARTIX}/$name.list
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
. @libdir@/artools/util-pkg.sh
 | 
					. @libdir@/artools/util-pkg.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prepare_artools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
create_first=false
 | 
					create_first=false
 | 
				
			||||||
rebuild=false
 | 
					rebuild=false
 | 
				
			||||||
no_check=false
 | 
					no_check=false
 | 
				
			||||||
@@ -28,6 +30,7 @@ base_devel=('base-devel')
 | 
				
			|||||||
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 "    -d <dir>           Destination repo chroot"
 | 
				
			||||||
    echo '    -c                 Recreate the chroot before building'
 | 
					    echo '    -c                 Recreate the chroot before building'
 | 
				
			||||||
    echo '    -m                 Major rebuild'
 | 
					    echo '    -m                 Major rebuild'
 | 
				
			||||||
    echo '    -N                 Disable check() function'
 | 
					    echo '    -N                 Disable check() function'
 | 
				
			||||||
@@ -41,11 +44,12 @@ usage() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
orig_argv=("$0" "$@")
 | 
					orig_argv=("$0" "$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opts='hcCNmr:'
 | 
					opts='hcCNmr:d:'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts "${opts}" arg; do
 | 
					while getopts "${opts}" arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
        r) CHROOTS_PKG="$OPTARG" ;;
 | 
					        r) CHROOTS_PKG="$OPTARG" ;;
 | 
				
			||||||
 | 
					        d) repo="$OPTARG" ;;
 | 
				
			||||||
        c) create_first=true ;;
 | 
					        c) create_first=true ;;
 | 
				
			||||||
        m) rebuild=true ;;
 | 
					        m) rebuild=true ;;
 | 
				
			||||||
        C) is_checkpkg=true; mkchrootpkg_args+=(-C) ;;
 | 
					        C) is_checkpkg=true; mkchrootpkg_args+=(-C) ;;
 | 
				
			||||||
@@ -90,7 +94,7 @@ if ${create_first} || [[ ! -d "${CHROOTS_PKG}/${repo}-${ARCH}" ]];then
 | 
				
			|||||||
    lock_close 9
 | 
					    lock_close 9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rm -rf --one-file-system "${CHROOTS_PKG}/${repo}-${ARCH}"
 | 
					    rm -rf --one-file-system "${CHROOTS_PKG}/${repo}-${ARCH}"
 | 
				
			||||||
    mkdir -p "${CHROOTS_PKG}/${repo}-${ARCH}"
 | 
					    (umask 0022; mkdir -p "${CHROOTS_PKG}/${repo}-${ARCH}")
 | 
				
			||||||
    setarch "${ARCH}" mkchroot \
 | 
					    setarch "${ARCH}" mkchroot \
 | 
				
			||||||
        -C "${pacman_conf}" \
 | 
					        -C "${pacman_conf}" \
 | 
				
			||||||
        -M "${makepkg_conf}" \
 | 
					        -M "${makepkg_conf}" \
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,33 +14,41 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
. @libdir@/artools/util-pkg.sh
 | 
					. @libdir@/artools/util-pkg.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prepare_artools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
patch_pkg(){
 | 
					patch_pkg(){
 | 
				
			||||||
    local pkg="$1"
 | 
					    local pkgpath="$1"
 | 
				
			||||||
 | 
					    local pkg=${pkgpath%/*}
 | 
				
			||||||
 | 
					    pkg=${pkg##*/}
 | 
				
			||||||
    case $pkg in
 | 
					    case $pkg in
 | 
				
			||||||
        glibc)
 | 
					        glibc)
 | 
				
			||||||
 | 
					            msg2 "Patching %s" "$pkg"
 | 
				
			||||||
            sed -e 's|{locale,systemd/system,tmpfiles.d}|{locale,tmpfiles.d}|' \
 | 
					            sed -e 's|{locale,systemd/system,tmpfiles.d}|{locale,tmpfiles.d}|' \
 | 
				
			||||||
                -e '/nscd.service/d' \
 | 
					                -e '/nscd.service/d' \
 | 
				
			||||||
                -i $pkg/trunk/PKGBUILD
 | 
					                -i $pkgpath/PKGBUILD
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
        linux|linux-lts)
 | 
					        linux|linux-lts)
 | 
				
			||||||
            sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i $pkg/trunk/PKGBUILD
 | 
					            msg2 "Patching %s" "$pkg"
 | 
				
			||||||
 | 
					            sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i $pkgpath/PKGBUILD
 | 
				
			||||||
            sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
 | 
					            sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
 | 
				
			||||||
                -i $pkg/trunk/config
 | 
					                -i $pkgpath/config
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
        bash)
 | 
					        bash)
 | 
				
			||||||
 | 
					            msg2 "Patching %s" "$pkg"
 | 
				
			||||||
            sed -e 's|system.bash_logout)|system.bash_logout artix.bashrc)|' \
 | 
					            sed -e 's|system.bash_logout)|system.bash_logout artix.bashrc)|' \
 | 
				
			||||||
            -e "s|etc/bash.|etc/bash/|g" \
 | 
					            -e "s|etc/bash.|etc/bash/|g" \
 | 
				
			||||||
            -e 's|"$pkgdir/etc/skel/.bash_logout"|"$pkgdir/etc/skel/.bash_logout"\n  install -Dm644 artix.bashrc $pkgdir/etc/bash/bashrc.d/artix.bashrc|' \
 | 
					            -e 's|"$pkgdir/etc/skel/.bash_logout"|"$pkgdir/etc/skel/.bash_logout"\n  install -Dm644 artix.bashrc $pkgdir/etc/bash/bashrc.d/artix.bashrc|' \
 | 
				
			||||||
            -i $pkg/trunk/PKGBUILD
 | 
					            -i $pkgpath/PKGBUILD
 | 
				
			||||||
            cd $pkg/trunk
 | 
					            cd $pkgpath
 | 
				
			||||||
                patch -Np 1 -i ${DATADIR}/patches/artix-bash.patch
 | 
					                patch -Np 1 -i ${DATADIR}/patches/artix-bash.patch
 | 
				
			||||||
                updpkgsums
 | 
					                updpkgsums
 | 
				
			||||||
            cd ../..
 | 
					            cd ../..
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
        gstreamer|gst-plugins-*|licenses)
 | 
					        gstreamer|gst-plugins-*|licenses)
 | 
				
			||||||
 | 
					            msg2 "Patching %s" "$pkg"
 | 
				
			||||||
            sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \
 | 
					            sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \
 | 
				
			||||||
                -e 's|(Arch Linux)|(Artix Linux)|' \
 | 
					                -e 's|(Arch Linux)|(Artix Linux)|' \
 | 
				
			||||||
                -i $pkg/trunk/PKGBUILD
 | 
					                -i $pkgpath/PKGBUILD
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -77,12 +85,12 @@ pull_tree_artix(){
 | 
				
			|||||||
sync_pkg(){
 | 
					sync_pkg(){
 | 
				
			||||||
    local rsync_args=(-aWxvci --progress --delete-before --no-R --no-implied-dirs)
 | 
					    local rsync_args=(-aWxvci --progress --delete-before --no-R --no-implied-dirs)
 | 
				
			||||||
    local src="$1" dest="$2"
 | 
					    local src="$1" dest="$2"
 | 
				
			||||||
 | 
					    msg "Sync from Arch [%s] to Artix [%s]" "${src##*archlinux/}" "${dest##*artixlinux/}"
 | 
				
			||||||
    rsync "${rsync_args[@]}" $src/ $dest/
 | 
					    rsync "${rsync_args[@]}" $src/ $dest/
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
show_deps(){
 | 
					show_deps(){
 | 
				
			||||||
    local src="$1" repo="$2"
 | 
					    local src="$1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    . $src/PKGBUILD 2>/dev/null
 | 
					    . $src/PKGBUILD 2>/dev/null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -90,7 +98,6 @@ show_deps(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    local archver=$(get_full_version)
 | 
					    local archver=$(get_full_version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg2 "repo: %s" "$repo"
 | 
					 | 
				
			||||||
    [[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}"
 | 
					    [[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}"
 | 
				
			||||||
    msg2 "pkgname: %s" "${pkgname[*]}"
 | 
					    msg2 "pkgname: %s" "${pkgname[*]}"
 | 
				
			||||||
    [[ -n $pkgdesc ]] && msg2 "pkgdesc: %s" "${pkgdesc}"
 | 
					    [[ -n $pkgdesc ]] && msg2 "pkgdesc: %s" "${pkgdesc}"
 | 
				
			||||||
@@ -104,84 +111,74 @@ show_deps(){
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
subrepo_new(){
 | 
					subrepo_new(){
 | 
				
			||||||
    local group="${1:-$GROUP}" team="${2:-$TEAM}"
 | 
					    cd ${TREE_DIR_ARTIX}/${GROUP}
 | 
				
			||||||
    local dest=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cd ${TREE_DIR_ARTIX}/$group
 | 
					    msg2 "team: %s" "${TEAM}"
 | 
				
			||||||
 | 
					    msg2 "group: %s" "${GROUP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local org=$(get_pkg_org "${PACKAGE}")
 | 
					    local org=$(get_pkg_org "${PACKAGE}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    create_repo "${PACKAGE}" "$org"
 | 
					    create_repo "${PACKAGE}" "$org"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    add_repo_to_team "${PACKAGE}" "$org" "$team"
 | 
					    add_repo_to_team "${PACKAGE}" "$org" "${TEAM}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    subrepo_clone "${PACKAGE}" "$org"
 | 
					    subrepo_clone "${PACKAGE}" "$org"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    prepare_dir "$dest"
 | 
					    prepare_dir "${TREE_DIR_ARTIX}/${GROUP}/${PACKAGE}/trunk"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    commit_jenkins_files "${PACKAGE}"
 | 
					    commit_jenkins_files "${PACKAGE}"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from_arch(){
 | 
					from_arch(){
 | 
				
			||||||
    local src= dest=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    cd ${TREE_DIR_ARTIX}
 | 
					    cd ${TREE_DIR_ARTIX}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
					    local srcpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
				
			||||||
    [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
					    [[ -z $srcpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local package=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE}
 | 
					    local repo=$(find_repo "$srcpath")
 | 
				
			||||||
    local repo=$(find_repo "$package" "${staging}" "${unstable}")
 | 
					    msg "repo: %s" "$repo"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    src=$package/repos/$repo
 | 
					    local archpath=$srcpath/repos/$repo
 | 
				
			||||||
 | 
					    local artixpath=$(find_pkg ${TREE_DIR_ARTIX} ${PACKAGE})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
					    show_deps "$archpath"
 | 
				
			||||||
    local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    dest=${TREE_DIR_ARTIX}/$tree_dir/${PACKAGE}/trunk
 | 
					    if [[ -f "$artixpath"/.gitrepo ]]; then
 | 
				
			||||||
 | 
					        artixpath=$artixpath/trunk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg "tree: %s" "$tree_dir"
 | 
					        if [[ -f $artixpath/PKGBUILD ]];then
 | 
				
			||||||
    show_deps "$src" "$repo"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ -d $dest ]];then
 | 
					            . $artixpath/PKGBUILD 2>/dev/null
 | 
				
			||||||
 | 
					            local artixver=$(get_full_version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        cd ${TREE_DIR_ARTIX}/$git_tree_artix
 | 
					            msg2 "Artix Version: %s" "$artixver"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        . $dest/PKGBUILD 2>/dev/null
 | 
					            sync_pkg "$archpath" "$artixpath"
 | 
				
			||||||
        local artixver=$(get_full_version)
 | 
					            patch_pkg "$artixpath"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
        msg2 "Artix Version: %s" "$artixver"
 | 
					 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        subrepo_new "$tree_dir" "$git_tree_arch"
 | 
					        die "Package '%s' does not exist!" "${PACKAGE}"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					 | 
				
			||||||
    msg "Sync (%s) from [%s] to [%s]" "${PACKAGE}" "$git_tree_arch" "$tree_dir"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    sync_pkg "$src" "$dest"
 | 
					 | 
				
			||||||
    patch_pkg "${PACKAGE}"
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
view_build(){
 | 
					view_build(){
 | 
				
			||||||
    local src=
 | 
					    local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
				
			||||||
    local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
					    [[ -z $archpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
				
			||||||
    [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
					    local repo=$(find_repo "${archpath}")
 | 
				
			||||||
 | 
					    archpath=$archpath/repos/$repo
 | 
				
			||||||
    local pkg_path=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE}
 | 
					    msg2 "repo: %s" "$repo"
 | 
				
			||||||
    local repo=$(find_repo "$pkg_path" "${staging}" "${unstable}")
 | 
					    show_deps "$archpath"
 | 
				
			||||||
 | 
					 | 
				
			||||||
    src=$pkg_path/repos/$repo
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    show_deps "$src" "$repo"
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
check_tree(){
 | 
					check_tree(){
 | 
				
			||||||
    local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
					    local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
				
			||||||
    [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
					    [[ -z $archpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
				
			||||||
    local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
					    local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" ${PACKAGE})
 | 
				
			||||||
    local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch")
 | 
					    local group=${artixpath%/*}
 | 
				
			||||||
    msg "tree_dir: %s" "$tree_dir"
 | 
					    msg "group: %s" "${group##*/}"
 | 
				
			||||||
    [[ -z $git_tree_artix ]] && msg2 "exists: %s" "no"
 | 
					
 | 
				
			||||||
    [[ -n $git_tree_artix ]] && msg2 "exists: %s" "yes"
 | 
					    [[ -z $artixpath ]] && msg2 "exists: %s" "no"
 | 
				
			||||||
 | 
					    [[ -n $artixpath ]] && msg2 "exists: %s" "yes"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sync_repos(){
 | 
					sync_repos(){
 | 
				
			||||||
@@ -197,39 +194,42 @@ sync_repos(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
load_makepkg_config
 | 
					load_makepkg_config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					testing=true
 | 
				
			||||||
 | 
					staging=true
 | 
				
			||||||
 | 
					unstable=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sync=false
 | 
					sync=false
 | 
				
			||||||
sync_arch=true
 | 
					sync_arch=true
 | 
				
			||||||
sync_artix=true
 | 
					sync_artix=true
 | 
				
			||||||
import=false
 | 
					import=false
 | 
				
			||||||
view=false
 | 
					view=false
 | 
				
			||||||
createnew=false
 | 
					createnew=false
 | 
				
			||||||
conf=false
 | 
					 | 
				
			||||||
unstable=false
 | 
					 | 
				
			||||||
staging=true
 | 
					 | 
				
			||||||
sync_group=false
 | 
					sync_group=false
 | 
				
			||||||
check=false
 | 
					check=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PACKAGE=''
 | 
					PACKAGE=''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEAM=${TREE_NAMES_ARTIX[0]}
 | 
					TEAM='community'
 | 
				
			||||||
GROUP=${TREE_NAMES_ARTIX[0]}
 | 
					GROUP=${TREE_NAMES_ARTIX[0]}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
usage() {
 | 
					usage() {
 | 
				
			||||||
    echo "Usage: ${0##*/} [options]"
 | 
					    echo "Usage: ${0##*/} [options]"
 | 
				
			||||||
    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 '                  Possible values: core,extra,community,multilib'
 | 
				
			||||||
    echo "                  [default: ${TEAM}]"
 | 
					    echo "                  [default: ${TEAM}]"
 | 
				
			||||||
    echo '    -g <group>    Group name, the superrepo (only with -n or -s)'
 | 
					    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 "    -a            Don't clone or pull arch repos"
 | 
				
			||||||
    echo "    -y            Don't clone or pull artix repos"
 | 
					    echo "    -b            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            New remote subrepo and clone it'
 | 
				
			||||||
    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 '    -v            Check if a package is in the artix tree(s)'
 | 
				
			||||||
    echo '    -c            View package depends'
 | 
					    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 '    -h            This help'
 | 
				
			||||||
    echo ''
 | 
					    echo ''
 | 
				
			||||||
    echo ''
 | 
					    echo ''
 | 
				
			||||||
@@ -238,7 +238,7 @@ usage() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
orig_argv=("$0" "$@")
 | 
					orig_argv=("$0" "$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opts='p:t:g:uwsinzycvh'
 | 
					opts='p:t:g:sinabcvxyzh'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts "${opts}" arg; do
 | 
					while getopts "${opts}" arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
@@ -246,14 +246,15 @@ while getopts "${opts}" arg; do
 | 
				
			|||||||
        t) TEAM="$OPTARG" ;;
 | 
					        t) TEAM="$OPTARG" ;;
 | 
				
			||||||
        g) GROUP="$OPTARG"; sync_group=true ;;
 | 
					        g) GROUP="$OPTARG"; sync_group=true ;;
 | 
				
			||||||
        s) sync=true ;;
 | 
					        s) sync=true ;;
 | 
				
			||||||
        z) sync_arch=false ;;
 | 
					        a) sync_arch=false ;;
 | 
				
			||||||
        y) sync_artix=false ;;
 | 
					        b) sync_artix=false ;;
 | 
				
			||||||
        i) import=true ;;
 | 
					        i) import=true ;;
 | 
				
			||||||
        n) createnew=true ;;
 | 
					        n) createnew=true ;;
 | 
				
			||||||
        w) staging=false ;;
 | 
					 | 
				
			||||||
        u) unstable=true ;;
 | 
					 | 
				
			||||||
        c) check=true ;;
 | 
					        c) check=true ;;
 | 
				
			||||||
        v) view=true ;;
 | 
					        v) view=true ;;
 | 
				
			||||||
 | 
					        x) testing=false ;;
 | 
				
			||||||
 | 
					        y) staging=false ;;
 | 
				
			||||||
 | 
					        z) unstable=true ;;
 | 
				
			||||||
        h|?) usage 0 ;;
 | 
					        h|?) usage 0 ;;
 | 
				
			||||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
					        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
@@ -264,6 +265,8 @@ shift $(($OPTIND - 1))
 | 
				
			|||||||
prepare_dir "${TREE_DIR_ARTIX}"
 | 
					prepare_dir "${TREE_DIR_ARTIX}"
 | 
				
			||||||
prepare_dir "${TREE_DIR_ARCH}"
 | 
					prepare_dir "${TREE_DIR_ARCH}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set_arch_repos "$testing" "$staging" "$unstable"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
${sync} && sync_repos
 | 
					${sync} && sync_repos
 | 
				
			||||||
 | 
					
 | 
				
			||||||
${view} && view_build
 | 
					${view} && view_build
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,68 @@ shopt -s extglob
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
load_makepkg_config
 | 
					load_makepkg_config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pkgver_equal() {
 | 
				
			||||||
 | 
					    if [[ $1 = *-* && $2 = *-* ]]; then
 | 
				
			||||||
 | 
					        # if both versions have a pkgrel, then they must be an exact match
 | 
				
			||||||
 | 
					        [[ $1 = "$2" ]]
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        # otherwise, trim any pkgrel and compare the bare version.
 | 
				
			||||||
 | 
					        [[ ${1%%-*} = "${2%%-*}" ]]
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					find_cached_package() {
 | 
				
			||||||
 | 
					    local searchdirs=("$PKGDEST" "$PWD") results=()
 | 
				
			||||||
 | 
					    local targetname=$1 targetver=$2 targetarch=$3
 | 
				
			||||||
 | 
					    local dir pkg pkgbasename name ver rel arch r results
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for dir in "${searchdirs[@]}"; do
 | 
				
			||||||
 | 
					        [[ -d $dir ]] || continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for pkg in "$dir"/*.pkg.tar?(.!(sig|*.*)); do
 | 
				
			||||||
 | 
					            [[ -f $pkg ]] || continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # avoid adding duplicates of the same inode
 | 
				
			||||||
 | 
					            for r in "${results[@]}"; do
 | 
				
			||||||
 | 
					                [[ $r -ef $pkg ]] && continue 2
 | 
				
			||||||
 | 
					            done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # split apart package filename into parts
 | 
				
			||||||
 | 
					            pkgbasename=${pkg##*/}
 | 
				
			||||||
 | 
					            pkgbasename=${pkgbasename%.pkg.tar*}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            arch=${pkgbasename##*-}
 | 
				
			||||||
 | 
					            pkgbasename=${pkgbasename%-"$arch"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            rel=${pkgbasename##*-}
 | 
				
			||||||
 | 
					            pkgbasename=${pkgbasename%-"$rel"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ver=${pkgbasename##*-}
 | 
				
			||||||
 | 
					            name=${pkgbasename%-"$ver"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if [[ $targetname = "$name" && $targetarch = "$arch" ]] &&
 | 
				
			||||||
 | 
					                pkgver_equal "$targetver" "$ver-$rel"; then
 | 
				
			||||||
 | 
					                results+=("$pkg")
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
 | 
					    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
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
usage() {
 | 
					usage() {
 | 
				
			||||||
    cat <<- _EOF_
 | 
					    cat <<- _EOF_
 | 
				
			||||||
        Usage: ${BASH_SOURCE[0]##*/} [OPTIONS]
 | 
					        Usage: ${BASH_SOURCE[0]##*/} [OPTIONS]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
. @libdir@/artools/util-pkg.sh
 | 
					. @libdir@/artools/util-pkg.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prepare_artools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
get_path(){
 | 
					get_path(){
 | 
				
			||||||
    local repo="$1" pkg=trunk/PKGBUILD
 | 
					    local repo="$1" pkg=trunk/PKGBUILD
 | 
				
			||||||
    if [[ $repo != trunk ]]; then
 | 
					    if [[ $repo != trunk ]]; then
 | 
				
			||||||
@@ -30,15 +32,30 @@ prepare_commit(){
 | 
				
			|||||||
    [[ ! -d repos/$dest ]] && mkdir repos/$dest
 | 
					    [[ ! -d repos/$dest ]] && mkdir repos/$dest
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
commit_pkg(){
 | 
					check_team(){
 | 
				
			||||||
    local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
					    if [[ ${REPO_SRC} == "core" && ${REPO_DEST} == "extra" ]] || \
 | 
				
			||||||
    if [[ -n ${git_tree} ]];then
 | 
					        [[ ${REPO_SRC} == "extra" && ${REPO_DEST} == "core" ]] || \
 | 
				
			||||||
 | 
					        [[ ${REPO_SRC} == "extra" && ${REPO_DEST} == "community" ]] || \
 | 
				
			||||||
 | 
					        [[ ${REPO_SRC} == "community" && ${REPO_DEST} == "extra" ]] ;then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        cd ${TREE_DIR_ARTIX}/${git_tree}
 | 
					        local org=$(get_pkg_org "${PACKAGE}")
 | 
				
			||||||
 | 
					        add_repo_to_team "${PACKAGE}" "$org" "${REPO_DEST}"
 | 
				
			||||||
 | 
					        remove_repo_from_team "${PACKAGE}" "$org" "${REPO_SRC}"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit_pkg(){
 | 
				
			||||||
 | 
					    local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ -n ${artixpath} ]];then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        local group=${artixpath%/*}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        cd ${group}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        local head=$(get_local_head)
 | 
					        local head=$(get_local_head)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE}
 | 
					        cd ${artixpath}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        local pkgbuild=$(get_path "${REPO_SRC}")
 | 
					        local pkgbuild=$(get_path "${REPO_SRC}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -65,19 +82,18 @@ commit_pkg(){
 | 
				
			|||||||
            commit_msg="[${REPO_SRC}] '${PACKAGE}-$version' ${action}"
 | 
					            commit_msg="[${REPO_SRC}] '${PACKAGE}-$version' ${action}"
 | 
				
			||||||
            msg "Action: %s" "$commit_msg"
 | 
					            msg "Action: %s" "$commit_msg"
 | 
				
			||||||
            git add .
 | 
					            git add .
 | 
				
			||||||
 | 
					 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
        git commit -m "$commit_msg"
 | 
					        git commit -m "$commit_msg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        cd ${TREE_DIR_ARTIX}/${git_tree}
 | 
					        cd ${group}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ${push} && pull_tree "${git_tree}" "$head"
 | 
					        ${push} && pull_tree "${group##*/}" "$head"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#         subrepo_pull "${PACKAGE}"
 | 
					#         subrepo_pull "${PACKAGE}"
 | 
				
			||||||
        subrepo_push "${PACKAGE}"
 | 
					        subrepo_push "${PACKAGE}"
 | 
				
			||||||
        subrepo_clean "${PACKAGE}"
 | 
					        subrepo_clean "${PACKAGE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ${push} && push_tree "${git_tree}"
 | 
					        ${push} && push_tree "${group##*/}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        git prune
 | 
					        git prune
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
@@ -85,15 +101,17 @@ commit_pkg(){
 | 
				
			|||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
symlink_commit_pkg(){
 | 
					repo_commit_pkg(){
 | 
				
			||||||
    local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
					    local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
				
			||||||
    if [[ -n ${git_tree} ]];then
 | 
					    if [[ -n ${artixpath} ]];then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        cd ${TREE_DIR_ARTIX}/${git_tree}
 | 
					        local group=${artixpath%/*}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        cd ${group}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        local head=$(get_local_head)
 | 
					        local head=$(get_local_head)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE}
 | 
					        cd ${artixpath}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        local pkgbuild=$(get_path "${REPO_SRC}")
 | 
					        local pkgbuild=$(get_path "${REPO_SRC}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -125,22 +143,36 @@ symlink_commit_pkg(){
 | 
				
			|||||||
        git add .
 | 
					        git add .
 | 
				
			||||||
        git commit -m "$commit_msg"
 | 
					        git commit -m "$commit_msg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        cd ${TREE_DIR_ARTIX}/${git_tree}
 | 
					        cd ${group}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ${push} && pull_tree "${git_tree}" "$head"
 | 
					        ${push} && pull_tree "${group##*/}" "$head"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#         subrepo_pull "${PACKAGE}"
 | 
					#         subrepo_pull "${PACKAGE}"
 | 
				
			||||||
        subrepo_push "${PACKAGE}"
 | 
					        subrepo_push "${PACKAGE}"
 | 
				
			||||||
        subrepo_clean "${PACKAGE}"
 | 
					        subrepo_clean "${PACKAGE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ${push} && push_tree "${git_tree}"
 | 
					        ${push} && push_tree "${group##*/}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        git prune
 | 
					        git prune
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        check_team
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        error "Package '%s' does not exist!" "${PACKAGE}"
 | 
					        error "Package '%s' does not exist!" "${PACKAGE}"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					is_valid_repo(){
 | 
				
			||||||
 | 
					    local src="$1" cases=
 | 
				
			||||||
 | 
					    set_arch_repos true true true
 | 
				
			||||||
 | 
					    for r in ${ARCH_REPOS[@]};do
 | 
				
			||||||
 | 
					        cases=${cases:-}${cases:+|}${r}
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    eval "case $src in
 | 
				
			||||||
 | 
					        ${cases}|trunk) return 0 ;;
 | 
				
			||||||
 | 
					        *) return 1 ;;
 | 
				
			||||||
 | 
					    esac"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
load_makepkg_config
 | 
					load_makepkg_config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
REPO_SRC='trunk'
 | 
					REPO_SRC='trunk'
 | 
				
			||||||
@@ -184,7 +216,7 @@ if $(is_valid_repo "${REPO_SRC}");then
 | 
				
			|||||||
    if [[ "${cmd}" == 'commitpkg' ]];then
 | 
					    if [[ "${cmd}" == 'commitpkg' ]];then
 | 
				
			||||||
        commit_pkg
 | 
					        commit_pkg
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        symlink_commit_pkg
 | 
					        repo_commit_pkg
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
    error "source repository '%s' is not valid!" "${REPO_SRC}"
 | 
					    error "source repository '%s' is not valid!" "${REPO_SRC}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,116 +14,128 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
. @libdir@/artools/util-pkg.sh
 | 
					. @libdir@/artools/util-pkg.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
compare(){
 | 
					prepare_artools
 | 
				
			||||||
    local pkgpath="$1" group="$2"
 | 
					
 | 
				
			||||||
 | 
					get_import_path(){
 | 
				
			||||||
 | 
					    local pkg="$1" import_path=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for tree in ${TREE_NAMES_ARCH[@]};do
 | 
				
			||||||
 | 
					        [[ -d ${TREE_DIR_ARCH}/$tree/$pkg/repos ]] && import_path=${TREE_DIR_ARCH}/$tree/$pkg
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    echo $import_path
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compare_m(){
 | 
				
			||||||
 | 
					    local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local result=$(vercmp "$artixver" "$archver")
 | 
				
			||||||
 | 
					    if [[ $artixrepo == *testing* ]] || [[ $artixrepo == *staging* ]]; then
 | 
				
			||||||
 | 
					        if [[ "$archrepo" == "$artixrepo"  ]]; then
 | 
				
			||||||
 | 
					            msg_row "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            msg_row_notify "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
				
			||||||
 | 
					            if [[ -n "$archrepo" ]]; then
 | 
				
			||||||
 | 
					                printf "%s\n" "${archrepo%-*}:${artixrepo%-*}:$pkg" >> ${TREE_DIR_ARTIX}/pkg_moves.list
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compare_u(){
 | 
				
			||||||
 | 
					    local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local result=$(vercmp "$artixver" "$archver")
 | 
				
			||||||
 | 
					    if [ $result -eq -1 ];then
 | 
				
			||||||
 | 
					        msg_row_upgrade "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
				
			||||||
 | 
					        printf "%s\n" "${archrepo%-*}:$pkg" >> ${TREE_DIR_ARTIX}/pkg_upgrades.list
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compare_d(){
 | 
				
			||||||
 | 
					    local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local result=$(vercmp "$artixver" "$archver")
 | 
				
			||||||
 | 
					    if [ $result -eq 1 ];then
 | 
				
			||||||
 | 
					        if [[ -n "$archver" ]] && [[ -n "$archrepo" ]];then
 | 
				
			||||||
 | 
					            msg_row_downgrade "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pre_compare(){
 | 
				
			||||||
 | 
					    local func="$1" pkgpath="$2"
 | 
				
			||||||
 | 
					    local group="${pkgpath%/*}"
 | 
				
			||||||
 | 
					    group=${group##*/}
 | 
				
			||||||
    local pkg=${pkgpath##*/}
 | 
					    local pkg=${pkgpath##*/}
 | 
				
			||||||
    local artixrepo=$(find_repo "$pkgpath" "${staging}" "${unstable}")
 | 
					    local artixrepo=$(find_repo "$pkgpath")
 | 
				
			||||||
    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)
 | 
					        local artixver=$(get_full_version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        local archpath=$(get_import_path $pkg)
 | 
					        local archpath=$(get_import_path $pkg)
 | 
				
			||||||
 | 
					        local archrepo=$(find_repo "${archpath}")
 | 
				
			||||||
        local archrepo=$(find_repo "$archpath" "${staging}" "${unstable}")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        local archshow=${archrepo%-*}
 | 
					 | 
				
			||||||
        pkgbuild=$archpath/repos/$archrepo/PKGBUILD
 | 
					        pkgbuild=$archpath/repos/$archrepo/PKGBUILD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if [[ -f $pkgbuild ]];then
 | 
					        if [[ -f "$pkgbuild" ]];then
 | 
				
			||||||
            . $pkgbuild 2>/dev/null
 | 
					            . $pkgbuild 2>/dev/null
 | 
				
			||||||
            local archver=$(get_full_version)
 | 
					            local archver=$(get_full_version)
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        local result=$(vercmp "$artixver" "$archver")
 | 
					        "$func" "$artixver" "$artixrepo" "$archver" "$archrepo"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        local repomatch=false
 | 
					 | 
				
			||||||
        [[ "$archrepo" == "$artixrepo" ]] && repomatch=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if ${move};then
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if [ $result -gt -1 ];then
 | 
					 | 
				
			||||||
                case $artixrepo in
 | 
					 | 
				
			||||||
                    *testing*|*staging*)
 | 
					 | 
				
			||||||
                        if $repomatch;then
 | 
					 | 
				
			||||||
                            msg_row "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
					 | 
				
			||||||
                        else
 | 
					 | 
				
			||||||
                            msg_row_notify "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                            if [[ -n "$archshow" ]]; then
 | 
					 | 
				
			||||||
                                printf "%s\n" "$archshow:$artixshow:$pkg" >> ${TREE_DIR_ARTIX}/pkg_moves.list
 | 
					 | 
				
			||||||
                            fi
 | 
					 | 
				
			||||||
                        fi
 | 
					 | 
				
			||||||
                    ;;
 | 
					 | 
				
			||||||
                esac
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        elif ${upgrades};then
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if [ $result -eq -1 ];then
 | 
					 | 
				
			||||||
                msg_row_upgrade "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                printf "%s\n" "$archshow:$pkg" >> ${TREE_DIR_ARTIX}/pkg_upgrades.list
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        elif ${downgrades};then
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if [ $result -eq 1 ];then
 | 
					 | 
				
			||||||
                if [[ -n $archver ]] && [[ -n $archrepo ]];then
 | 
					 | 
				
			||||||
                    msg_row_downgrade "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
					 | 
				
			||||||
                fi
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        unset pkgver epoch pkgrel artixver archver pkgbuild archpath
 | 
					        unset pkgver epoch pkgrel artixver archver pkgbuild archpath
 | 
				
			||||||
 | 
					 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
is_db_entry() {
 | 
					compare_upgrades(){
 | 
				
			||||||
    local pkgname="$1" repo="$(arch2artix $2)"
 | 
					    local pkgpath="${1%/*}"
 | 
				
			||||||
    if [[ -d ${db_cache_dir}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then
 | 
					    pre_compare compare_u "$pkgpath"
 | 
				
			||||||
        return 0
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    return 1
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
check_db(){
 | 
					compare_downgrades(){
 | 
				
			||||||
    local pkgpath="$1"
 | 
					    local pkgpath="${1%/*}"
 | 
				
			||||||
    local pkg=${pkgpath##*/}
 | 
					    pre_compare compare_d "$pkgpath"
 | 
				
			||||||
    local sarch=(any ${ARCH})
 | 
					}
 | 
				
			||||||
    local arch_repos=$(arch_repos "${staging}" "${unstable}")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for repo in ${arch_repos[@]};do
 | 
					compare_move(){
 | 
				
			||||||
 | 
					    local pkgpath="${1%/*}"
 | 
				
			||||||
 | 
					    pre_compare compare_m "$pkgpath"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for a in ${sarch[@]};do
 | 
					tree_loop(){
 | 
				
			||||||
 | 
					    local func="$1"
 | 
				
			||||||
            local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD
 | 
					    for tree in ${TREE_NAMES_ARTIX[@]};do
 | 
				
			||||||
 | 
					        local pkgs=$(find ${TREE_DIR_ARTIX}/$tree -name trunk)
 | 
				
			||||||
            if [[ -f $pkgbuild ]];then
 | 
					        for package in ${pkgs[@]}; do
 | 
				
			||||||
 | 
					            "$func" "$package"
 | 
				
			||||||
                . $pkgbuild 2>/dev/null
 | 
					 | 
				
			||||||
                local artixver=$(get_full_version)
 | 
					 | 
				
			||||||
                local is_entry=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                for name in ${pkgname[@]};do
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    if is_db_entry "$name-$artixver" "$repo";then
 | 
					 | 
				
			||||||
                        is_entry=true
 | 
					 | 
				
			||||||
                    fi
 | 
					 | 
				
			||||||
                    if ! $is_entry; then
 | 
					 | 
				
			||||||
                        msg_row "${tableU}" "$repo" "$name" "$artixver" "$is_entry"
 | 
					 | 
				
			||||||
                    fi
 | 
					 | 
				
			||||||
                done
 | 
					 | 
				
			||||||
                unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
        done
 | 
					        done
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					show_compare_header(){
 | 
				
			||||||
 | 
					    msg_table_header "${table}" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" "Group"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					show_upgrades_table(){
 | 
				
			||||||
 | 
					    show_compare_header
 | 
				
			||||||
 | 
					    [[ -f ${TREE_DIR_ARTIX}/pkg_upgrades.list ]] && rm ${TREE_DIR_ARTIX}/pkg_upgrades.list
 | 
				
			||||||
 | 
					    tree_loop compare_upgrades
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					show_downgrades_table(){
 | 
				
			||||||
 | 
					    show_compare_header
 | 
				
			||||||
 | 
					    tree_loop compare_downgrades
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					show_move_table(){
 | 
				
			||||||
 | 
					    show_compare_header
 | 
				
			||||||
 | 
					    [[ -f ${TREE_DIR_ARTIX}/pkg_moves.list ]] && rm ${TREE_DIR_ARTIX}/pkg_moves.list
 | 
				
			||||||
 | 
					    tree_loop compare_move
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
update_db_cache(){
 | 
					update_db_cache(){
 | 
				
			||||||
    msg "Updating database cache"
 | 
					    msg "Updating database cache"
 | 
				
			||||||
    for repo in "${searchrepos[@]}"; do
 | 
					    for repo in "${searchrepos[@]}"; do
 | 
				
			||||||
@@ -146,80 +158,125 @@ query_db() {
 | 
				
			|||||||
                read -r match
 | 
					                read -r match
 | 
				
			||||||
                pkg=${pkg#${db}}
 | 
					                pkg=${pkg#${db}}
 | 
				
			||||||
                pkg="${pkg%/*}"
 | 
					                pkg="${pkg%/*}"
 | 
				
			||||||
 | 
					 | 
				
			||||||
                msg_row "${tableQ}" "${repo}" "${pkg}" "${match}"
 | 
					                msg_row "${tableQ}" "${repo}" "${pkg}" "${match}"
 | 
				
			||||||
            done < <(grep -rZ "${library}" "${db}") | sort -u
 | 
					            done < <(grep -rZ "${library}" "${db}") | sort -u
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
    exit 0
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
show_version_table(){
 | 
					show_lib_table() {
 | 
				
			||||||
 | 
					    ${sync} && update_db_cache
 | 
				
			||||||
 | 
					    msg_table_header "${tableQ}" "Repo" "Package" "Library"
 | 
				
			||||||
 | 
					    query_db
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ${check};then
 | 
					is_db_entry() {
 | 
				
			||||||
        ${sync} && update_db_cache
 | 
					    local pkgname="$1" repo="${REPOS[$2]}"
 | 
				
			||||||
        msg_table_header "${tableU}" "Repo" "Package" "Version" "Database"
 | 
					
 | 
				
			||||||
    elif ${query};then
 | 
					    if [[ -d ${db_cache_dir}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then
 | 
				
			||||||
        ${sync} && update_db_cache
 | 
					        return 0
 | 
				
			||||||
        msg_table_header "${tableQ}" "Repo" "Package" "Library"
 | 
					 | 
				
			||||||
        query_db
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        msg_table_header "${table}" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" "Group"
 | 
					 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					    return 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ${move} && [[ -f ${TREE_DIR_ARTIX}/pkg_moves.list ]]; then
 | 
					check_db(){
 | 
				
			||||||
        rm ${TREE_DIR_ARTIX}/pkg_moves.list
 | 
					    local pkgpath="${1%/*}"
 | 
				
			||||||
    elif ${upgrades} && [[ -f ${TREE_DIR_ARTIX}/pkg_upgrades.list ]]; then
 | 
					    local pkg=${pkgpath##*/}
 | 
				
			||||||
        rm ${TREE_DIR_ARTIX}/pkg_upgrades.list
 | 
					    local sarch=(any ${ARCH})
 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for tree in ${TREE_NAMES_ARTIX[@]};do
 | 
					    for repo in ${ARCH_REPOS[@]};do
 | 
				
			||||||
        local git=$(find ${TREE_DIR_ARTIX}/$tree/ -mindepth 1 -maxdepth 1 -type d)
 | 
					        for a in ${sarch[@]};do
 | 
				
			||||||
        for package in ${git[@]}; do
 | 
					
 | 
				
			||||||
            if ${check};then
 | 
					            local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD
 | 
				
			||||||
                check_db "$package"
 | 
					
 | 
				
			||||||
            else
 | 
					            if [[ -f $pkgbuild ]];then
 | 
				
			||||||
                compare "$package" "$tree"
 | 
					
 | 
				
			||||||
 | 
					                . $pkgbuild 2>/dev/null
 | 
				
			||||||
 | 
					                local artixver=$(get_full_version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                local is_entry=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                for name in ${pkgname[@]};do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if is_db_entry "$name-$artixver" "$repo";then
 | 
				
			||||||
 | 
					                        is_entry=true
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					                    if ! $is_entry;then
 | 
				
			||||||
 | 
					                        msg_row "${tableU}" "$repo" "$name" "$artixver" "$is_entry"
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					                done
 | 
				
			||||||
 | 
					                unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
        done
 | 
					        done
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					show_db_table(){
 | 
				
			||||||
 | 
					    ${sync} && update_db_cache
 | 
				
			||||||
 | 
					    msg_table_header "${tableU}" "Repo" "Package" "Version" "Database"
 | 
				
			||||||
 | 
					    tree_loop check_db
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
db_cache_dir="${XDG_CACHE_HOME:-$USER_HOME/.cache}/artools"
 | 
					db_cache_dir="${XDG_CACHE_HOME:-$USER_HOME/.cache}/artools"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
load_makepkg_config
 | 
					load_makepkg_config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
unstable=false
 | 
					testing=true
 | 
				
			||||||
staging=true
 | 
					staging=true
 | 
				
			||||||
 | 
					unstable=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
upgrades=false
 | 
					upgrades=false
 | 
				
			||||||
downgrades=false
 | 
					downgrades=false
 | 
				
			||||||
move=false
 | 
					move=false
 | 
				
			||||||
check=false
 | 
					 | 
				
			||||||
sync=false
 | 
					 | 
				
			||||||
query=false
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
artix_repos=(
 | 
					sync=false
 | 
				
			||||||
    'goblins' 'gremlins' 'system' 'world'
 | 
					check=false
 | 
				
			||||||
    'galaxy-goblins' 'galaxy-gremlins' 'galaxy'
 | 
					query=false
 | 
				
			||||||
    'lib32-goblins' 'lib32-gremlins' 'lib32'
 | 
					 | 
				
			||||||
    'gnome-wobble' 'kde-wobble'
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
readonly table="%-18s %-18s %-25s %-27s %-27s %-10s"
 | 
					readonly table="%-18s %-18s %-25s %-27s %-27s %-10s"
 | 
				
			||||||
readonly tableU="%-20s %-35s %-30s %-10s"
 | 
					readonly tableU="%-20s %-35s %-30s %-10s"
 | 
				
			||||||
readonly tableQ="%-20s %-45s %s"
 | 
					readonly tableQ="%-20s %-45s %s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
searchrepos=(${artix_repos[@]})
 | 
					declare -A REPOS=(
 | 
				
			||||||
 | 
					    [core]=system
 | 
				
			||||||
 | 
					    [extra]=world
 | 
				
			||||||
 | 
					    [community]=galaxy
 | 
				
			||||||
 | 
					    [multilib]=lib32
 | 
				
			||||||
 | 
					    [testing]=gremlins
 | 
				
			||||||
 | 
					    [staging]=goblins
 | 
				
			||||||
 | 
					    [community-testing]=galaxy-gremlins
 | 
				
			||||||
 | 
					    [community-staging]=galaxy-goblins
 | 
				
			||||||
 | 
					    [multilib-testing]=lib32-gremlins
 | 
				
			||||||
 | 
					    [multilib-staging]=lib32-goblins
 | 
				
			||||||
 | 
					    [kde-unstable]=kde-wobble
 | 
				
			||||||
 | 
					    [gnome-unstable]=gnome-wobble
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					searchrepos=(
 | 
				
			||||||
 | 
					    ${REPOS[kde-unstable]}
 | 
				
			||||||
 | 
					    ${REPOS[gnome-unstable]}
 | 
				
			||||||
 | 
					    ${REPOS[staging]}
 | 
				
			||||||
 | 
					    ${REPOS[testing]}
 | 
				
			||||||
 | 
					    ${REPOS[core]}
 | 
				
			||||||
 | 
					    ${REPOS[extra]}
 | 
				
			||||||
 | 
					    ${REPOS[community-staging]}
 | 
				
			||||||
 | 
					    ${REPOS[community-testing]}
 | 
				
			||||||
 | 
					    ${REPOS[community]}
 | 
				
			||||||
 | 
					    ${REPOS[multilib-staging]}
 | 
				
			||||||
 | 
					    ${REPOS[multilib-testing]}
 | 
				
			||||||
 | 
					    ${REPOS[multilib]}
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
usage() {
 | 
					usage() {
 | 
				
			||||||
    echo "Usage: ${0##*/} [options] (with -q [libname])"
 | 
					    echo "Usage: ${0##*/} [options] (with -q [libname])"
 | 
				
			||||||
    echo '    -u            Show upgrade packages'
 | 
					    echo '    -u            Show upgrade packages'
 | 
				
			||||||
    echo '    -d            Show downgrade packages'
 | 
					    echo '    -d            Show downgrade packages'
 | 
				
			||||||
    echo '    -m            Show packages to move'
 | 
					    echo '    -m            Show packages to move'
 | 
				
			||||||
    echo "    -x            Don't inlcude staging packages"
 | 
					    echo "    -x            Don't inlcude testing packages"
 | 
				
			||||||
    echo '    -y            Include unstable kde and gnome'
 | 
					    echo "    -y            Don't inlcude staging packages"
 | 
				
			||||||
    echo '    -c            Check repos'
 | 
					    echo '    -z            Include unstable kde and gnome'
 | 
				
			||||||
    echo "    -s            Sync repo databases"
 | 
					    echo "    -s            Sync repo databases"
 | 
				
			||||||
 | 
					    echo '    -c            Check repos'
 | 
				
			||||||
    echo "    -q            Query repo databases for so libs"
 | 
					    echo "    -q            Query repo databases for so libs"
 | 
				
			||||||
    echo '    -r <repo>     Repo name to query'
 | 
					    echo '    -r <repo>     Repo name to query'
 | 
				
			||||||
    echo '                  [default: all]'
 | 
					    echo '                  [default: all]'
 | 
				
			||||||
@@ -231,19 +288,20 @@ usage() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
orig_argv=("$0" "$@")
 | 
					orig_argv=("$0" "$@")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opts='r:qcsudmxyh'
 | 
					opts='r:qcsudmxyzh'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts "${opts}" arg; do
 | 
					while getopts "${opts}" arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
        u) upgrades=true ;;
 | 
					        u) upgrades=true ;;
 | 
				
			||||||
        d) downgrades=true ;;
 | 
					        d) downgrades=true ;;
 | 
				
			||||||
        m) move=true ;;
 | 
					        m) move=true ;;
 | 
				
			||||||
        x) staging=false ;;
 | 
					 | 
				
			||||||
        y) unstable=true ;;
 | 
					 | 
				
			||||||
        c) check=true ;;
 | 
					 | 
				
			||||||
        s) sync=true ;;
 | 
					        s) sync=true ;;
 | 
				
			||||||
 | 
					        c) check=true ;;
 | 
				
			||||||
        q) query=true ;;
 | 
					        q) query=true ;;
 | 
				
			||||||
        r) searchrepos=("$OPTARG") ;;
 | 
					        r) searchrepos=("$OPTARG") ;;
 | 
				
			||||||
 | 
					        x) testing=false ;;
 | 
				
			||||||
 | 
					        y) staging=false ;;
 | 
				
			||||||
 | 
					        z) unstable=true ;;
 | 
				
			||||||
        h|?) usage 0 ;;
 | 
					        h|?) usage 0 ;;
 | 
				
			||||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
					        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
@@ -253,4 +311,14 @@ shift $(($OPTIND - 1))
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
library="$1"; shift
 | 
					library="$1"; shift
 | 
				
			||||||
 | 
					
 | 
				
			||||||
show_version_table
 | 
					set_arch_repos "$testing" "$staging" "$unstable"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					${move} && show_move_table
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					${upgrades} && show_upgrades_table
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					${downgrades} && show_downgrades_table
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					${check} && show_db_table
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					${query} && show_lib_table
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,34 +14,13 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
. @libdir@/artools/util-pkg.sh
 | 
					. @libdir@/artools/util-pkg.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
find_cached_pkgfile() {
 | 
					prepare_artools
 | 
				
			||||||
    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(){
 | 
					get_pkgbasename(){
 | 
				
			||||||
    local pkg="$1"
 | 
					    local pkg="$1"
 | 
				
			||||||
    local pkgbasename name ver rel arch
 | 
					    local pkgbasename name ver rel arch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pkgbasename=${pkg%.pkg.tar.?z}
 | 
					    pkgbasename=${pkg%.pkg.tar*}
 | 
				
			||||||
    arch=${pkgbasename##*-}
 | 
					    arch=${pkgbasename##*-}
 | 
				
			||||||
    pkgbasename=${pkgbasename%-"$arch"}
 | 
					    pkgbasename=${pkgbasename%-"$arch"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -54,86 +33,42 @@ get_pkgbasename(){
 | 
				
			|||||||
    echo $name
 | 
					    echo $name
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
update_repo2(){
 | 
					add(){
 | 
				
			||||||
    local repo="$1"
 | 
					    packages+=("$pkg")
 | 
				
			||||||
    local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
 | 
					    if [[ -e "${pkgfile}" ]]; then
 | 
				
			||||||
 | 
					        action='add'
 | 
				
			||||||
    for name in ${passfiles[@]}; do
 | 
					        ln -sf "${pkgfile}"{,.sig} "$repo_path"/
 | 
				
			||||||
        if pkgfile=$(find_cached_pkgfile "$name");then
 | 
					 | 
				
			||||||
            info "Found: %s" "$name"
 | 
					 | 
				
			||||||
            if ${add_pkg};then
 | 
					 | 
				
			||||||
                local action='add'
 | 
					 | 
				
			||||||
                packages+=("$name")
 | 
					 | 
				
			||||||
                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
 | 
					    fi
 | 
				
			||||||
 | 
					 | 
				
			||||||
    return 0
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
update_repo(){
 | 
					remove(){
 | 
				
			||||||
    local repo="$1" pkgfile ver
 | 
					    packages+=("$(get_pkgbasename "$pkg")")
 | 
				
			||||||
    local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
 | 
					    if [[ -e "$repo_path"/"$pkg" ]]; then
 | 
				
			||||||
 | 
					        action='remove'
 | 
				
			||||||
    . PKGBUILD
 | 
					        rm "$repo_path"/"$pkg"
 | 
				
			||||||
 | 
					 | 
				
			||||||
    local pkgsearch=(${pkgname[@]})
 | 
					 | 
				
			||||||
    if check_option "debug" "y"; then
 | 
					 | 
				
			||||||
        pkgbase=${pkgbase:-${pkgname[@]}}
 | 
					 | 
				
			||||||
        pkgsearch+=("${pkgbase}-debug")
 | 
					 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					    [[ -e "$repo_path"/"$pkg".sig ]] && rm "$repo_path"/"$pkg".sig
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for name in ${pkgsearch[@]}; do
 | 
					repo_action(){
 | 
				
			||||||
        pkgarch=$(get_pkg_arch "$name")
 | 
					    local packages=() action= func="$1"
 | 
				
			||||||
        ver=$(get_full_version)
 | 
					    for pkg in ${passfiles[@]}; do
 | 
				
			||||||
        if pkgfile=$(find_cached_package "$name" "$ver" "$pkgarch");then
 | 
					        if pkgfile=$(find_cached_pkgfile "$pkg");then
 | 
				
			||||||
            local pkg=${pkgfile##*/}
 | 
					            msg "Found: %s" "${pkgfile}"
 | 
				
			||||||
            info "Found: %s" "$pkg"
 | 
					            "$func"
 | 
				
			||||||
            if ${add_pkg};then
 | 
					 | 
				
			||||||
                local action='add'
 | 
					 | 
				
			||||||
                packages+=("$pkg")
 | 
					 | 
				
			||||||
                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+=("$name")
 | 
					 | 
				
			||||||
                [[ -e $repo_path/$pkg ]] && rm $repo_path/$pkg
 | 
					 | 
				
			||||||
                [[ -e $repo_path/$pkg.sig ]] && rm $repo_path/$pkg.sig
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
    cd $repo_path
 | 
					    cd $repo_path
 | 
				
			||||||
    if [[ -n $action ]]; then
 | 
					    if [[ -n "$action" ]]; then
 | 
				
			||||||
        repo-$action -R $repo.${PKGDBEXT} ${packages[@]}
 | 
					        repo-"$action" -R "${dest_repo}"."${PKGDBEXT}" "${packages[@]}"
 | 
				
			||||||
        ${linksdb} && links-$action $repo.${LINKSDBEXT} ${packages[@]}
 | 
					        ${linksdb} && links-"$action" "${dest_repo}"."${LINKSDBEXT}" "${packages[@]}"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					 | 
				
			||||||
    return 0
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
load_makepkg_config
 | 
					load_makepkg_config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
add_pkg=false
 | 
					add_pkg=false
 | 
				
			||||||
del_pkg=false
 | 
					rm_pkg=false
 | 
				
			||||||
sign_pkg=false
 | 
					 | 
				
			||||||
linksdb=false
 | 
					linksdb=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cmd=${0##*/}
 | 
					cmd=${0##*/}
 | 
				
			||||||
@@ -141,24 +76,24 @@ dest_repo=${cmd#*-}
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
usage() {
 | 
					usage() {
 | 
				
			||||||
    echo "Usage: ${cmd} [options]"
 | 
					    echo "Usage: ${cmd} [options]"
 | 
				
			||||||
 | 
					    echo '    -d <dest>          Destination repository'
 | 
				
			||||||
    echo '    -a                 Add package(s) to repository'
 | 
					    echo '    -a                 Add package(s) to repository'
 | 
				
			||||||
    echo '    -r                 Remove package(s) from repository'
 | 
					    echo '    -r                 Remove package(s) from repository'
 | 
				
			||||||
    echo '    -l                 Use links db'
 | 
					    echo '    -l                 Use links db'
 | 
				
			||||||
    echo '    -s                 Sign package(s)'
 | 
					 | 
				
			||||||
    echo '    -h                 This help'
 | 
					    echo '    -h                 This help'
 | 
				
			||||||
    echo ''
 | 
					    echo ''
 | 
				
			||||||
    echo ''
 | 
					    echo ''
 | 
				
			||||||
    exit $1
 | 
					    exit $1
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opts='arlsh'
 | 
					opts='arlhd:'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts "${opts}" arg; do
 | 
					while getopts "${opts}" arg; do
 | 
				
			||||||
    case "${arg}" in
 | 
					    case "${arg}" in
 | 
				
			||||||
        a) add_pkg=true; del_pkg=false ;;
 | 
					        d) dest_repo="$OPTARG" ;;
 | 
				
			||||||
        r) del_pkg=true; add_pkg=false ;;
 | 
					        a) add_pkg=true; rm_pkg=false ;;
 | 
				
			||||||
 | 
					        r) rm_pkg=true; add_pkg=false ;;
 | 
				
			||||||
        l) linksdb=true ;;
 | 
					        l) linksdb=true ;;
 | 
				
			||||||
        s) sign_pkg=true ;;
 | 
					 | 
				
			||||||
        h|?) usage 0 ;;
 | 
					        h|?) usage 0 ;;
 | 
				
			||||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
					        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
@@ -170,8 +105,13 @@ passfiles="$@"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
prepare_dir "${REPOS_ROOT}"
 | 
					prepare_dir "${REPOS_ROOT}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					repo_path=${REPOS_ROOT}/${dest_repo}/os/${ARCH}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ -n ${passfiles[@]} ]]; then
 | 
					if [[ -n ${passfiles[@]} ]]; then
 | 
				
			||||||
    update_repo2 "${dest_repo}"
 | 
					    if ${add_pkg}; then
 | 
				
			||||||
else
 | 
					        repo_action add
 | 
				
			||||||
    update_repo "${dest_repo}"
 | 
					    fi
 | 
				
			||||||
 | 
					    if ${rm_pkg}; then
 | 
				
			||||||
 | 
					        repo_action remove
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
. @libdir@/artools/util-base.sh
 | 
					 | 
				
			||||||
. @libdir@/artools/util-pkg.sh
 | 
					. @libdir@/artools/util-pkg.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set -e
 | 
					set -e
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -377,11 +377,7 @@ if chroot-run \
 | 
				
			|||||||
    "$copydir" \
 | 
					    "$copydir" \
 | 
				
			||||||
    /chrootbuild "${makepkg_args[@]}"
 | 
					    /chrootbuild "${makepkg_args[@]}"
 | 
				
			||||||
then
 | 
					then
 | 
				
			||||||
    pkgnames=()
 | 
					    mapfile -t pkgnames < <(sudo -u "$makepkg_user" bash -c 'source PKGBUILD; printf "%s\n" "${pkgname[@]}"')
 | 
				
			||||||
    for pkgfile in "$copydir"/pkgdest/*; do
 | 
					 | 
				
			||||||
        pkgfile=${pkgfile##*/};
 | 
					 | 
				
			||||||
        pkgnames+=("${pkgfile%-*-*-*}");
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
    move_products
 | 
					    move_products
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
    (( ret += 1 ))
 | 
					    (( ret += 1 ))
 | 
				
			||||||
@@ -398,13 +394,28 @@ if (( ret != 0 )); then
 | 
				
			|||||||
else
 | 
					else
 | 
				
			||||||
    if (( run_checkpkg )); then
 | 
					    if (( run_checkpkg )); then
 | 
				
			||||||
        msg "Running checkpkg"
 | 
					        msg "Running checkpkg"
 | 
				
			||||||
        msg2 "Downloading current versions"
 | 
					
 | 
				
			||||||
        if pacman --noconfirm -Swdd --logfile /dev/null "${pkgnames[@]}"; then
 | 
					        mapfile -t remotepkgs < <(pacman --config "$copydir"/etc/pacman.conf \
 | 
				
			||||||
            msg2 "Checking packages"
 | 
					            --dbpath "$copydir"/var/lib/pacman \
 | 
				
			||||||
            sudo -u "$makepkg_user" checkpkg --rmdir --warn
 | 
					            -Sddp "${pkgnames[@]}")
 | 
				
			||||||
        else
 | 
					
 | 
				
			||||||
            warning "Skipped checkpkg due to missing packages"
 | 
					        if ! wait $!; then
 | 
				
			||||||
 | 
					            warning "Skipped checkpkg due to missing repo packages"
 | 
				
			||||||
 | 
					            exit 0
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					        # download package files if any non-local location exists
 | 
				
			||||||
 | 
					        for remotepkg in "${remotepkgs[@]}"; do
 | 
				
			||||||
 | 
					            if [[ $remotepkg != file://* ]]; then
 | 
				
			||||||
 | 
					                msg2 "Downloading current versions"
 | 
				
			||||||
 | 
					                chroot-run "$copydir" pacman --noconfirm -Swdd "${pkgnames[@]}"
 | 
				
			||||||
 | 
					                mapfile -t remotepkgs < <(pacman --config "$copydir"/etc/pacman.conf \
 | 
				
			||||||
 | 
					                    --dbpath "$copydir"/var/lib/pacman \
 | 
				
			||||||
 | 
					                    -Sddp "${pkgnames[@]}")
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
 | 
					        msg2 "Checking packages"
 | 
				
			||||||
 | 
					        sudo -u "$makepkg_user" checkpkg --rmdir --warn "${remotepkgs[@]/#file:\/\//}"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    true
 | 
					    true
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										46
									
								
								bin/pkg/signpkg.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								bin/pkg/signpkg.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
				
			|||||||
 | 
					#!/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-pkg.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prepare_artools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					load_makepkg_config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					passfiles="$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sign_pkg(){
 | 
				
			||||||
 | 
					    local file_to_sign="$1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [ ! -e "$file_to_sign" ]; then
 | 
				
			||||||
 | 
					        error "%s does not exist!" "$file_to_sign"
 | 
				
			||||||
 | 
					        exit 1
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ -n "${BUILDBOT_GPGP}" ]]; then
 | 
				
			||||||
 | 
					        msg2 "Signing [%s]" "${file_to_sign##*/}"
 | 
				
			||||||
 | 
					        gpg --batch --passphrase "${BUILDBOT_GPGP}" --detach-sign "$file_to_sign"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        msg2 "Signing [%s] with key %s" "${file_to_sign##*/}" "${GPGKEY}..."
 | 
				
			||||||
 | 
					        gpg --detach-sign --use-agent -u "${GPGKEY}" "$file_to_sign"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for pkg in ${passfiles[@]}; do
 | 
				
			||||||
 | 
					    if pkgfile=$(find_cached_pkgfile "$pkg");then
 | 
				
			||||||
 | 
					        msg "Found: %s" "${pkgfile}"
 | 
				
			||||||
 | 
					        [[ -e "${pkgfile}".sig ]] && rm "${pkgfile}".sig
 | 
				
			||||||
 | 
					        sign_pkg "${pkgfile}"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
@@ -14,6 +14,8 @@
 | 
				
			|||||||
#         packages
 | 
					#         packages
 | 
				
			||||||
#         community
 | 
					#         community
 | 
				
			||||||
#         packages-kernel
 | 
					#         packages-kernel
 | 
				
			||||||
 | 
					#         packages-net
 | 
				
			||||||
 | 
					#         packages-gfx
 | 
				
			||||||
#         packages-openrc
 | 
					#         packages-openrc
 | 
				
			||||||
#         packages-runit
 | 
					#         packages-runit
 | 
				
			||||||
#         packages-s6
 | 
					#         packages-s6
 | 
				
			||||||
@@ -32,6 +34,7 @@
 | 
				
			|||||||
#         packages-mate
 | 
					#         packages-mate
 | 
				
			||||||
#         packages-kde
 | 
					#         packages-kde
 | 
				
			||||||
#         packages-xfce
 | 
					#         packages-xfce
 | 
				
			||||||
 | 
					#         packages-wm
 | 
				
			||||||
# )
 | 
					# )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# HOST_TREE_ARCH=git://git.archlinux.org/svntogit
 | 
					# HOST_TREE_ARCH=git://git.archlinux.org/svntogit
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -132,7 +132,7 @@ DBGSRCDIR="/usr/src/debug"
 | 
				
			|||||||
COMPRESSGZ=(gzip -c -f -n)
 | 
					COMPRESSGZ=(gzip -c -f -n)
 | 
				
			||||||
COMPRESSBZ2=(bzip2 -c -f)
 | 
					COMPRESSBZ2=(bzip2 -c -f)
 | 
				
			||||||
COMPRESSXZ=(xz -c -z -)
 | 
					COMPRESSXZ=(xz -c -z -)
 | 
				
			||||||
COMPRESSZST=(zstd -c -z -q -)
 | 
					COMPRESSZST=(zstd -c -T0 --ultra -20 -)
 | 
				
			||||||
COMPRESSLRZ=(lrzip -q)
 | 
					COMPRESSLRZ=(lrzip -q)
 | 
				
			||||||
COMPRESSLZO=(lzop -q)
 | 
					COMPRESSLZO=(lzop -q)
 | 
				
			||||||
COMPRESSZ=(compress -c -f)
 | 
					COMPRESSZ=(compress -c -f)
 | 
				
			||||||
@@ -143,7 +143,7 @@ COMPRESSLZ=(lzip -c -f)
 | 
				
			|||||||
# EXTENSION DEFAULTS
 | 
					# EXTENSION DEFAULTS
 | 
				
			||||||
#########################################################################
 | 
					#########################################################################
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
PKGEXT='.pkg.tar.xz'
 | 
					PKGEXT='.pkg.tar.zst'
 | 
				
			||||||
SRCEXT='.src.tar.gz'
 | 
					SRCEXT='.src.tar.gz'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# vim: set ft=sh ts=2 sw=2 et:
 | 
					# vim: set ft=sh ts=2 sw=2 et:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -146,7 +146,7 @@ run_hook() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    lower_dir=''
 | 
					    lower_dir=''
 | 
				
			||||||
    live_root="/run/artix"
 | 
					    live_root="/run/artix"
 | 
				
			||||||
    bootmnt="/run/bootmnt"
 | 
					    bootmnt="${live_root}/bootmnt"
 | 
				
			||||||
    overlay_root="${live_root}/overlay_root"
 | 
					    overlay_root="${live_root}/overlay_root"
 | 
				
			||||||
    cow="${live_root}/cowspace"
 | 
					    cow="${live_root}/cowspace"
 | 
				
			||||||
    cp2ram="${live_root}/copytoram"
 | 
					    cp2ram="${live_root}/copytoram"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,7 +15,7 @@
 | 
				
			|||||||
# export LC_MESSAGES=C
 | 
					# export LC_MESSAGES=C
 | 
				
			||||||
export LANG=C
 | 
					export LANG=C
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ -t 2 ]]; then
 | 
					if [[ -t 2 && "$TERM" != dumb ]]; then
 | 
				
			||||||
    colorize
 | 
					    colorize
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
    declare -gr ALL_OFF='' BOLD='' BLUE='' GREEN='' RED='' YELLOW=''
 | 
					    declare -gr ALL_OFF='' BOLD='' BLUE='' GREEN='' RED='' YELLOW=''
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,12 +36,20 @@ add_svc_runit(){
 | 
				
			|||||||
add_svc_s6(){
 | 
					add_svc_s6(){
 | 
				
			||||||
    local mnt="$1" names="$2" valid="" rlvl="${3:-default}"
 | 
					    local mnt="$1" names="$2" valid="" rlvl="${3:-default}"
 | 
				
			||||||
    for svc in $names; do
 | 
					    for svc in $names; do
 | 
				
			||||||
        if [[ -d $mnt/etc/s6/sv/$svc ]]; then
 | 
					        error=false
 | 
				
			||||||
 | 
					        chroot $mnt s6-rc-db -c /etc/s6/rc/compiled type $svc &> /dev/null || error=true
 | 
				
			||||||
 | 
					        if [ $? == 0 ] && [[ $error == false ]]; then
 | 
				
			||||||
            msg2 "Setting %s ..." "$svc"
 | 
					            msg2 "Setting %s ..." "$svc"
 | 
				
			||||||
            valid=${valid:-}${valid:+' '}${svc}
 | 
					            valid=${valid:-}${valid:+' '}${svc}
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
    chroot $mnt s6-rc-bundle -c /etc/s6/rc/compiled add $rlvl $valid
 | 
					    chroot $mnt s6-rc-bundle -c /etc/s6/rc/compiled add $rlvl $valid
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # rebuild s6-linux-init binaries
 | 
				
			||||||
 | 
					    chroot $mnt rm -r /etc/s6/current
 | 
				
			||||||
 | 
					    chroot $mnt s6-linux-init-maker -1 -N -f /etc/s6/skel -G "/usr/bin/agetty -L -8 tty1 115200" -c /etc/s6/current /etc/s6/current
 | 
				
			||||||
 | 
					    chroot $mnt mv /etc/s6/current/bin/init /etc/s6/current/bin/s6-init
 | 
				
			||||||
 | 
					    chroot $mnt cp -a /etc/s6/current/bin /usr
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set_xdm(){
 | 
					set_xdm(){
 | 
				
			||||||
@@ -143,10 +151,10 @@ write_unpackfs() {
 | 
				
			|||||||
    local yaml=$(write_yaml_header)
 | 
					    local yaml=$(write_yaml_header)
 | 
				
			||||||
    yaml+=$(write_yaml_map 0 'unpack')
 | 
					    yaml+=$(write_yaml_map 0 'unpack')
 | 
				
			||||||
#     if ${persist}; then
 | 
					#     if ${persist}; then
 | 
				
			||||||
#         yaml+=$(write_yaml_seq_map 2 'source' '"/run/bootmnt/LiveOS/rootfs.img"')
 | 
					#         yaml+=$(write_yaml_seq_map 2 'source' '"/run/artix/bootmnt/LiveOS/rootfs.img"')
 | 
				
			||||||
#         yaml+=$(write_yaml_map 4 'sourcefs' '"ext4"')
 | 
					#         yaml+=$(write_yaml_map 4 'sourcefs' '"ext4"')
 | 
				
			||||||
#     else
 | 
					#     else
 | 
				
			||||||
    yaml+=$(write_yaml_seq_map 2 'source' '"/run/bootmnt/LiveOS/rootfs.img"')
 | 
					    yaml+=$(write_yaml_seq_map 2 'source' '"/run/artix/bootmnt/LiveOS/rootfs.img"')
 | 
				
			||||||
    yaml+=$(write_yaml_map 4 'sourcefs' '"squashfs"')
 | 
					    yaml+=$(write_yaml_map 4 'sourcefs' '"squashfs"')
 | 
				
			||||||
#     fi
 | 
					#     fi
 | 
				
			||||||
    yaml+=$(write_yaml_map 4 'destination' '""')
 | 
					    yaml+=$(write_yaml_map 4 'destination' '""')
 | 
				
			||||||
@@ -167,7 +175,7 @@ configure_calamares(){
 | 
				
			|||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
configure_image(){
 | 
					configure_chroot(){
 | 
				
			||||||
    local fs="$1"
 | 
					    local fs="$1"
 | 
				
			||||||
    msg "Configuring [%s]" "${fs##*/}"
 | 
					    msg "Configuring [%s]" "${fs##*/}"
 | 
				
			||||||
    configure_hosts "$fs"
 | 
					    configure_hosts "$fs"
 | 
				
			||||||
@@ -179,3 +187,40 @@ configure_image(){
 | 
				
			|||||||
    write_live_session_conf > "$fs/etc/artools/live.conf"
 | 
					    write_live_session_conf > "$fs/etc/artools/live.conf"
 | 
				
			||||||
    msg "Done configuring [%s]" "${fs##*/}"
 | 
					    msg "Done configuring [%s]" "${fs##*/}"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					clean_up_chroot(){
 | 
				
			||||||
 | 
					    local path mnt="$1"
 | 
				
			||||||
 | 
					    msg2 "Cleaning [%s]" "${mnt##*/}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    path=$mnt/boot
 | 
				
			||||||
 | 
					    if [[ -d "$path" ]]; then
 | 
				
			||||||
 | 
					        find "$path" -name 'initramfs*.img' -delete &> /dev/null
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    path=$mnt/var/lib/pacman/sync
 | 
				
			||||||
 | 
					    if [[ -d $path ]];then
 | 
				
			||||||
 | 
					        find "$path" -type f -delete &> /dev/null
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    path=$mnt/var/cache/pacman/pkg
 | 
				
			||||||
 | 
					    if [[ -d $path ]]; then
 | 
				
			||||||
 | 
					        find "$path" -type f -delete &> /dev/null
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    path=$mnt/var/log
 | 
				
			||||||
 | 
					    if [[ -d $path ]]; then
 | 
				
			||||||
 | 
					        find "$path" -type f -delete &> /dev/null
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    path=$mnt/var/tmp
 | 
				
			||||||
 | 
					    if [[ -d $path ]];then
 | 
				
			||||||
 | 
					        find "$path" -mindepth 1 -delete &> /dev/null
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    path=$mnt/tmp
 | 
				
			||||||
 | 
					    if [[ -d $path ]];then
 | 
				
			||||||
 | 
					        find "$path" -mindepth 1 -delete &> /dev/null
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete
 | 
				
			||||||
 | 
					    if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then
 | 
				
			||||||
 | 
					        rm $mnt/boot/grub/grub.cfg
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if [[ -f "$mnt/etc/machine-id" ]]; then
 | 
				
			||||||
 | 
					        rm $mnt/etc/machine-id
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,57 @@
 | 
				
			|||||||
# 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prepare_boot_extras(){
 | 
				
			||||||
 | 
					    local src="$1" dest=${iso_root}/boot
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for u in intel amd;do
 | 
				
			||||||
 | 
					        cp $src/boot/$u-ucode.img $dest/$u-ucode.img
 | 
				
			||||||
 | 
					        cp $src/usr/share/licenses/$u-ucode/LICENSE $dest/$u-ucode.LICENSE
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cp $src/boot/memtest86+/memtest.bin $dest/memtest
 | 
				
			||||||
 | 
					    cp $src/usr/share/licenses/common/GPL2/license.txt $dest/memtest.COPYING
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					##################dracut##################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prepare_initramfs_dracut(){
 | 
				
			||||||
 | 
					    local mnt="$1"
 | 
				
			||||||
 | 
					    local kver=$(<"$mnt"/usr/src/linux/version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    printf "%s\n" 'add_dracutmodules+=" dmsquash-live"' > "$mnt"/etc/dracut.conf.d/50-live.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg "Starting build: %s" "${kver}"
 | 
				
			||||||
 | 
					    artools-chroot "$mnt" dracut -fqM /boot/initramfs.img "$kver"
 | 
				
			||||||
 | 
					    msg "Image generation successful"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cp "$mnt"/boot/initramfs.img "${iso_root}"/boot/initramfs-"${ARCH}".img
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    prepare_boot_extras "$mnt"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					configure_grub_dracut(){
 | 
				
			||||||
 | 
					    msg "Configuring grub kernel options ..."
 | 
				
			||||||
 | 
					    local kopts=(
 | 
				
			||||||
 | 
					        "root=live:LABEL=${iso_label}"
 | 
				
			||||||
 | 
					        'rd.live.squashimg=rootfs.img'
 | 
				
			||||||
 | 
					        'rd.live.image'
 | 
				
			||||||
 | 
					        'rootflags=auto'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    [[ "${PROFILE}" != 'base' ]] && kopts+=("rd.live.join=livefs.img")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local ro_opts=()
 | 
				
			||||||
 | 
					    local rw_opts=()
 | 
				
			||||||
 | 
					#         'rd.writable.fsimg=1'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sed -e "s|@kopts@|${kopts[*]}|" \
 | 
				
			||||||
 | 
					        -e "s|@ro_opts@|${ro_opts[*]}|" \
 | 
				
			||||||
 | 
					        -e "s|@rw_opts@|${rw_opts[*]}|" \
 | 
				
			||||||
 | 
					        -i ${iso_root}/boot/grub/kernels.cfg
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#############################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
write_mkinitcpio_conf() {
 | 
					write_mkinitcpio_conf() {
 | 
				
			||||||
    msg2 "Writing mkinitcpio.conf ..."
 | 
					    msg2 "Writing mkinitcpio.conf ..."
 | 
				
			||||||
    local conf="$1/etc/mkinitcpio-artix.conf"
 | 
					    local conf="$1/etc/mkinitcpio-artix.conf"
 | 
				
			||||||
@@ -35,18 +86,6 @@ prepare_initcpio(){
 | 
				
			|||||||
    cp /etc/initcpio/artix_shutdown $dest/etc/initcpio
 | 
					    cp /etc/initcpio/artix_shutdown $dest/etc/initcpio
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
prepare_boot_extras(){
 | 
					 | 
				
			||||||
    local src="$1" dest=${iso_root}/boot
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for u in intel amd;do
 | 
					 | 
				
			||||||
        cp $src/boot/$u-ucode.img $dest/$u-ucode.img
 | 
					 | 
				
			||||||
        cp $src/usr/share/licenses/$u-ucode/LICENSE $dest/$u-ucode.LICENSE
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    cp $src/boot/memtest86+/memtest.bin $dest/memtest
 | 
					 | 
				
			||||||
    cp $src/usr/share/licenses/common/GPL2/license.txt $dest/memtest.COPYING
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
prepare_initramfs(){
 | 
					prepare_initramfs(){
 | 
				
			||||||
    local mnt="$1"
 | 
					    local mnt="$1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -76,9 +115,10 @@ prepare_initramfs(){
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
configure_grub(){
 | 
					configure_grub(){
 | 
				
			||||||
    local ro_opts=("label=${iso_label}")
 | 
					    msg "Configuring grub kernel options ..."
 | 
				
			||||||
    local rw_opts=("cow_label=${iso_label}")
 | 
					    local ro_opts=()
 | 
				
			||||||
    local kopts=()
 | 
					    local rw_opts=()
 | 
				
			||||||
 | 
					    local kopts=("label=${iso_label}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [[ "${PROFILE}" != 'base' ]] && kopts+=('overlay=livefs')
 | 
					    [[ "${PROFILE}" != 'base' ]] && kopts+=('overlay=livefs')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -90,12 +130,15 @@ configure_grub(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
prepare_grub(){
 | 
					prepare_grub(){
 | 
				
			||||||
    local platform=i386-pc img='core.img' prefix=/boot/grub
 | 
					    local platform=i386-pc img='core.img' prefix=/boot/grub
 | 
				
			||||||
    local lib=$1/usr/lib/grub theme=$2/usr/share/grub
 | 
					    local lib="$1"/usr/lib/grub
 | 
				
			||||||
 | 
					    local theme="$1"/usr/share/grub
 | 
				
			||||||
 | 
					    local livecfg="$2"/usr/share/grub
 | 
				
			||||||
    local grub=${iso_root}/boot/grub efi=${iso_root}/efi/boot
 | 
					    local grub=${iso_root}/boot/grub efi=${iso_root}/efi/boot
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    prepare_dir ${grub}/${platform}
 | 
					    prepare_dir ${grub}/${platform}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cp ${theme}/cfg/*.cfg ${grub}
 | 
					    cp ${livecfg}/cfg/*.cfg ${grub}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cp ${lib}/${platform}/* ${grub}/${platform}
 | 
					    cp ${lib}/${platform}/* ${grub}/${platform}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -118,8 +161,9 @@ prepare_grub(){
 | 
				
			|||||||
    grub-mkimage -d ${grub}/${platform} -o ${efi}/${img} -O ${platform} -p ${prefix} iso9660
 | 
					    grub-mkimage -d ${grub}/${platform} -o ${efi}/${img} -O ${platform} -p ${prefix} iso9660
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    prepare_dir ${grub}/themes
 | 
					    prepare_dir ${grub}/themes
 | 
				
			||||||
    cp -r ${theme}/themes/artix ${grub}/themes/
 | 
					
 | 
				
			||||||
    cp -r ${theme}/{locales,tz} ${grub}
 | 
					    cp -r ${theme}/themes/artix ${grub}/themes
 | 
				
			||||||
 | 
					    cp -r ${livecfg}/{locales,tz} ${grub}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ -f /usr/share/grub/unicode.pf2 ]];then
 | 
					    if [[ -f /usr/share/grub/unicode.pf2 ]];then
 | 
				
			||||||
        msg2 "Copying %s ..." "unicode.pf2"
 | 
					        msg2 "Copying %s ..." "unicode.pf2"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,7 +72,6 @@ make_sfs() {
 | 
				
			|||||||
        error "The path %s does not exist" "${sfs_in}"
 | 
					        error "The path %s does not exist" "${sfs_in}"
 | 
				
			||||||
        retrun 1
 | 
					        retrun 1
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    local timer=$(get_timer)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    mkdir -p ${iso_root}${live_dir}
 | 
					    mkdir -p ${iso_root}${live_dir}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -100,15 +99,14 @@ make_sfs() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        mksquashfs "${mksfs_args[@]}"
 | 
					        mksquashfs "${mksfs_args[@]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        make_checksum "${img_name}"
 | 
					        if ! ${use_dracut}; then
 | 
				
			||||||
        ${persist} && rm -r "${work_dir}/embed"
 | 
					            make_checksum "${img_name}"
 | 
				
			||||||
 | 
					            if [[ -n ${GPG_KEY} ]];then
 | 
				
			||||||
        if [[ -n ${GPG_KEY} ]];then
 | 
					                make_sig "${img_name}"
 | 
				
			||||||
            make_sig "${img_name}"
 | 
					            fi
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					        ${persist} && rm -r "${work_dir}/embed"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    show_elapsed_time "${FUNCNAME}" "${timer_start}"
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
get_disturl(){
 | 
					get_disturl(){
 | 
				
			||||||
@@ -146,19 +144,3 @@ assemble_iso(){
 | 
				
			|||||||
        ${iso_root}/
 | 
					        ${iso_root}/
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
make_iso() {
 | 
					 | 
				
			||||||
    msg "Start [Build ISO]"
 | 
					 | 
				
			||||||
    touch "${iso_root}/.artix"
 | 
					 | 
				
			||||||
    make_sfs "${work_dir}/rootfs"
 | 
					 | 
				
			||||||
    [[ -d "${work_dir}/livefs" ]] && make_sfs "${work_dir}/livefs"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    msg "Making bootable image"
 | 
					 | 
				
			||||||
    # Sanity checks
 | 
					 | 
				
			||||||
    [[ ! -d "${iso_root}" ]] && return 1
 | 
					 | 
				
			||||||
    if [[ -f "${iso_dir}/${iso_file}" ]]; then
 | 
					 | 
				
			||||||
        msg2 "Removing existing bootable image..."
 | 
					 | 
				
			||||||
        rm -rf "${iso_dir}/${iso_file}"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    assemble_iso
 | 
					 | 
				
			||||||
    msg "Done [Build ISO]"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,7 +37,7 @@ track_fs() {
 | 
				
			|||||||
    mount "$@" && FS_ACTIVE_MOUNTS=("$5" "${FS_ACTIVE_MOUNTS[@]}")
 | 
					    mount "$@" && FS_ACTIVE_MOUNTS=("$5" "${FS_ACTIVE_MOUNTS[@]}")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mount_overlay(){
 | 
					mount_overlayfs(){
 | 
				
			||||||
    FS_ACTIVE_MOUNTS=()
 | 
					    FS_ACTIVE_MOUNTS=()
 | 
				
			||||||
    local lower= upper="$1" work="$2"
 | 
					    local lower= upper="$1" work="$2"
 | 
				
			||||||
    mkdir -p "${mnt_dir}/work"
 | 
					    mkdir -p "${mnt_dir}/work"
 | 
				
			||||||
@@ -52,7 +52,7 @@ mount_overlay(){
 | 
				
			|||||||
    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"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
umount_overlay(){
 | 
					umount_overlayfs(){
 | 
				
			||||||
    if [[ -n ${FS_ACTIVE_MOUNTS[@]} ]];then
 | 
					    if [[ -n ${FS_ACTIVE_MOUNTS[@]} ]];then
 | 
				
			||||||
        info "overlayfs umount: [%s]" "${FS_ACTIVE_MOUNTS[@]}"
 | 
					        info "overlayfs umount: [%s]" "${FS_ACTIVE_MOUNTS[@]}"
 | 
				
			||||||
        umount "${FS_ACTIVE_MOUNTS[@]}"
 | 
					        umount "${FS_ACTIVE_MOUNTS[@]}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ error_function() {
 | 
				
			|||||||
        error "A failure occurred in %s()." "$func"
 | 
					        error "A failure occurred in %s()." "$func"
 | 
				
			||||||
        plain "Aborting..."
 | 
					        plain "Aborting..."
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    umount_overlay
 | 
					    umount_overlayfs
 | 
				
			||||||
    umount_img
 | 
					    umount_img
 | 
				
			||||||
    exit 2
 | 
					    exit 2
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -41,7 +41,7 @@ run_safe() {
 | 
				
			|||||||
trap_exit() {
 | 
					trap_exit() {
 | 
				
			||||||
    local sig=$1; shift
 | 
					    local sig=$1; shift
 | 
				
			||||||
    error "$@"
 | 
					    error "$@"
 | 
				
			||||||
    umount_overlay
 | 
					    umount_overlayfs
 | 
				
			||||||
    trap -- "$sig"
 | 
					    trap -- "$sig"
 | 
				
			||||||
    kill "-$sig" "$$"
 | 
					    kill "-$sig" "$$"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -62,43 +62,6 @@ copy_overlay(){
 | 
				
			|||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean_up_image(){
 | 
					 | 
				
			||||||
    local path mnt="$1"
 | 
					 | 
				
			||||||
    msg2 "Cleaning [%s]" "${mnt##*/}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    path=$mnt/boot
 | 
					 | 
				
			||||||
    if [[ -d "$path" ]]; then
 | 
					 | 
				
			||||||
        find "$path" -name 'initramfs*.img' -delete &> /dev/null
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    path=$mnt/var/lib/pacman/sync
 | 
					 | 
				
			||||||
    if [[ -d $path ]];then
 | 
					 | 
				
			||||||
        find "$path" -type f -delete &> /dev/null
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    path=$mnt/var/cache/pacman/pkg
 | 
					 | 
				
			||||||
    if [[ -d $path ]]; then
 | 
					 | 
				
			||||||
        find "$path" -type f -delete &> /dev/null
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    path=$mnt/var/log
 | 
					 | 
				
			||||||
    if [[ -d $path ]]; then
 | 
					 | 
				
			||||||
        find "$path" -type f -delete &> /dev/null
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    path=$mnt/var/tmp
 | 
					 | 
				
			||||||
    if [[ -d $path ]];then
 | 
					 | 
				
			||||||
        find "$path" -mindepth 1 -delete &> /dev/null
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    path=$mnt/tmp
 | 
					 | 
				
			||||||
    if [[ -d $path ]];then
 | 
					 | 
				
			||||||
        find "$path" -mindepth 1 -delete &> /dev/null
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete
 | 
					 | 
				
			||||||
    if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then
 | 
					 | 
				
			||||||
        rm $mnt/boot/grub/grub.cfg
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    if [[ -f "$mnt/etc/machine-id" ]]; then
 | 
					 | 
				
			||||||
        rm $mnt/etc/machine-id
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
make_rootfs() {
 | 
					make_rootfs() {
 | 
				
			||||||
    if [[ ! -e ${work_dir}/rootfs.lock ]]; then
 | 
					    if [[ ! -e ${work_dir}/rootfs.lock ]]; then
 | 
				
			||||||
        msg "Prepare [Base installation] (rootfs)"
 | 
					        msg "Prepare [Base installation] (rootfs)"
 | 
				
			||||||
@@ -110,9 +73,9 @@ make_rootfs() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        copy_overlay "${ROOT_OVERLAY}" "${rootfs}"
 | 
					        copy_overlay "${ROOT_OVERLAY}" "${rootfs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [[ -z ${LIVE_LIST} ]] && configure_image "${rootfs}"
 | 
					        [[ -z ${LIVE_LIST} ]] && configure_chroot "${rootfs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        clean_up_image "${rootfs}"
 | 
					        clean_up_chroot "${rootfs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        : > ${work_dir}/rootfs.lock
 | 
					        : > ${work_dir}/rootfs.lock
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -127,17 +90,17 @@ make_livefs() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        prepare_dir "${livefs}"
 | 
					        prepare_dir "${livefs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        mount_overlay "${livefs}" "${work_dir}"
 | 
					        mount_overlayfs "${livefs}" "${work_dir}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        basestrap "${basestrap_args[@]}" "${livefs}" "${packages[@]}"
 | 
					        basestrap "${basestrap_args[@]}" "${livefs}" "${packages[@]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        copy_overlay "${LIVE_OVERLAY}" "${livefs}"
 | 
					        copy_overlay "${LIVE_OVERLAY}" "${livefs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        configure_image "${livefs}"
 | 
					        configure_chroot "${livefs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        umount_overlay
 | 
					        umount_overlayfs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        clean_up_image "${livefs}"
 | 
					        clean_up_chroot "${livefs}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        : > ${work_dir}/livefs.lock
 | 
					        : > ${work_dir}/livefs.lock
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -155,11 +118,15 @@ make_bootfs() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        local bootfs="${work_dir}/bootfs"
 | 
					        local bootfs="${work_dir}/bootfs"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        mount_overlay "${bootfs}" "${work_dir}"
 | 
					        mount_overlayfs "${bootfs}" "${work_dir}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        prepare_initramfs "${bootfs}"
 | 
					        if ${use_dracut}; then
 | 
				
			||||||
 | 
					            prepare_initramfs_dracut "${bootfs}"
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            prepare_initramfs "${bootfs}"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        umount_overlay
 | 
					        umount_overlayfs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        rm -R ${bootfs}
 | 
					        rm -R ${bootfs}
 | 
				
			||||||
        : > ${work_dir}/bootfs.lock
 | 
					        : > ${work_dir}/bootfs.lock
 | 
				
			||||||
@@ -176,30 +143,13 @@ make_grub(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        prepare_grub "${work_dir}/rootfs" "$layer"
 | 
					        prepare_grub "${work_dir}/rootfs" "$layer"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        configure_grub
 | 
					        if ${use_dracut}; then
 | 
				
			||||||
 | 
					            configure_grub_dracut
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            configure_grub
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        : > ${work_dir}/grub.lock
 | 
					        : > ${work_dir}/grub.lock
 | 
				
			||||||
        msg "Done [/iso/boot/grub]"
 | 
					        msg "Done [/iso/boot/grub]"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
compress_images(){
 | 
					 | 
				
			||||||
    local timer=$(get_timer)
 | 
					 | 
				
			||||||
    run_safe "make_iso"
 | 
					 | 
				
			||||||
    chown -R "${OWNER}:$(id --group ${OWNER})" "${iso_dir}"
 | 
					 | 
				
			||||||
    show_elapsed_time "${FUNCNAME}" "${timer}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
prepare_images(){
 | 
					 | 
				
			||||||
    local timer=$(get_timer)
 | 
					 | 
				
			||||||
    load_pkgs "${ROOT_LIST}" "${INITSYS}"
 | 
					 | 
				
			||||||
    run_safe "make_rootfs"
 | 
					 | 
				
			||||||
    if [[ -n ${LIVE_LIST} ]]; then
 | 
					 | 
				
			||||||
        load_pkgs "${LIVE_LIST}" "${INITSYS}"
 | 
					 | 
				
			||||||
        run_safe "make_livefs"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    run_safe "make_bootfs"
 | 
					 | 
				
			||||||
    run_safe "make_grub"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    show_elapsed_time "${FUNCNAME}" "${timer}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										185
									
								
								lib/pkg/git.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								lib/pkg/git.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,185 @@
 | 
				
			|||||||
 | 
					#!/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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					get_local_head(){
 | 
				
			||||||
 | 
					    echo $(git log --pretty=%H ...refs/heads/master^ | head -n 1)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					get_remote_head(){
 | 
				
			||||||
 | 
					    echo $(git ls-remote origin -h refs/heads/master | cut -f1)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					clone_tree(){
 | 
				
			||||||
 | 
					    local timer=$(get_timer) url="$1" tree="$2" os="${3:-$(get_osname)}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg "Cloning %s (%s) ..." "$tree" "$os"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    git clone $url/$tree.git
 | 
				
			||||||
 | 
					    show_elapsed_time "${FUNCNAME}" "${timer}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					has_changes(){
 | 
				
			||||||
 | 
					    local head_l="$1" head_r="$2"
 | 
				
			||||||
 | 
					    if [[ "$head_l" == "$head_r" ]]; then
 | 
				
			||||||
 | 
					        msg2 "remote changes: no"
 | 
				
			||||||
 | 
					        return 1
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        msg2 "remote changes: yes"
 | 
				
			||||||
 | 
					        return 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pull_tree(){
 | 
				
			||||||
 | 
					    local tree="$1" local_head="$2" os="${3:-$(get_osname)}"
 | 
				
			||||||
 | 
					    local remote_head=$(get_remote_head)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg "Checking (%s) (%s)" "${tree}" "$os"
 | 
				
			||||||
 | 
					    if has_changes "${local_head}" "${remote_head}";then
 | 
				
			||||||
 | 
					        git pull origin master
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					push_tree(){
 | 
				
			||||||
 | 
					    local tree="$1"
 | 
				
			||||||
 | 
					    msg "Update (%s)" "${tree}"
 | 
				
			||||||
 | 
					    git push origin master
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write_jenkinsfile(){
 | 
				
			||||||
 | 
					    local pkg="$1"
 | 
				
			||||||
 | 
					    local jenkins=$pkg/Jenkinsfile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo "@Library('artix-ci') import org.artixlinux.RepoPackage" > $jenkins
 | 
				
			||||||
 | 
					    echo '' >> $jenkins
 | 
				
			||||||
 | 
					    echo 'PackagePipeline(new RepoPackage(this))' >> $jenkins
 | 
				
			||||||
 | 
					    echo '' >> $jenkins
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    git add $jenkins
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write_agentyaml(){
 | 
				
			||||||
 | 
					    local pkg="$1"
 | 
				
			||||||
 | 
					    local agent=$pkg/.artixlinux/agent.yaml label='master'
 | 
				
			||||||
 | 
					    [[ -d $pkg/.artixlinux ]] || mkdir $pkg/.artixlinux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo '%YAML 1.2' > $agent
 | 
				
			||||||
 | 
					    echo '---' >> $agent
 | 
				
			||||||
 | 
					    echo '' >> $agent
 | 
				
			||||||
 | 
					    echo "label: $label" >> $agent
 | 
				
			||||||
 | 
					    echo '' >> $agent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    git add $agent
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit_jenkins_files(){
 | 
				
			||||||
 | 
					    local pkg="$1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    write_jenkinsfile "$pkg"
 | 
				
			||||||
 | 
					    write_agentyaml "$pkg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    git commit -m "initial commit"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					config_tree(){
 | 
				
			||||||
 | 
					    local tree="$1"
 | 
				
			||||||
 | 
					    cd $tree
 | 
				
			||||||
 | 
					        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 ..
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# write_gitignore() {
 | 
				
			||||||
 | 
					#     local pkg="$1"
 | 
				
			||||||
 | 
					#     local gitignore=$pkg/.gitignore
 | 
				
			||||||
 | 
					#     echo '# ---> ArchLinuxPackages' > $gitignore
 | 
				
			||||||
 | 
					#     echo '*.tar' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.tar.*' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.jar' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.exe' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.msi' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.zip' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.tgz' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.log' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.log.*' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.sig' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '' >> $gitignore
 | 
				
			||||||
 | 
					#     echo 'pkg/' >> $gitignore
 | 
				
			||||||
 | 
					#     echo 'src/' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '# ---> Archives' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.7z' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.rar' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.gz' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.bzip' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.bz2' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.xz' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.lzma' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.cab' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '# ---> systemd' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.service' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.socket' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.timer' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '# ---> snap' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '*.snap' >> $gitignore
 | 
				
			||||||
 | 
					#     echo '' >> $gitignore
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#     git add $gitignore
 | 
				
			||||||
 | 
					# }
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# write_readme(){
 | 
				
			||||||
 | 
					#     local pkg="$1"
 | 
				
			||||||
 | 
					#     local readme=$pkg/README.md
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#     echo "# $pkg" > $readme
 | 
				
			||||||
 | 
					#     echo '' >> $readme
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#     git add $readme
 | 
				
			||||||
 | 
					# }
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# subrepo_new2(){
 | 
				
			||||||
 | 
					#     local group="${1:-$GROUP}" team="${2:-$TEAM}"
 | 
				
			||||||
 | 
					#     local dest=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#     cd ${TREE_DIR_ARTIX}/$group
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#     local org=$(get_pkg_org "${PACKAGE}")
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#     prepare_dir "$dest"
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#     subrepo_init "${PACKAGE}" "$org"
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#     commit_jenkins_files2 "${PACKAGE}"
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#     subrepo_push "${PACKAGE}"
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#     add_repo_to_team "${PACKAGE}" "$org" "$team"
 | 
				
			||||||
 | 
					# }
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# commit_jenkins_files2(){
 | 
				
			||||||
 | 
					#     local pkg="$1"
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#     write_jenkinsfile "$pkg"
 | 
				
			||||||
 | 
					#     write_agentyaml "$pkg"
 | 
				
			||||||
 | 
					#     write_readme "$pkg"
 | 
				
			||||||
 | 
					#     write_gitignore "$pkg"
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#     git commit -m "initial commit"
 | 
				
			||||||
 | 
					# }
 | 
				
			||||||
@@ -12,7 +12,7 @@
 | 
				
			|||||||
# 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
create_repo(){
 | 
					create_repo() {
 | 
				
			||||||
    local pkg="$1" org="$2"
 | 
					    local pkg="$1" org="$2"
 | 
				
			||||||
    local gitname=$(get_compliant_name "$pkg")
 | 
					    local gitname=$(get_compliant_name "$pkg")
 | 
				
			||||||
    local json="{ \"auto_init\": true, \"name\":\"$gitname\", \"gitignores\":\"ArchLinuxPackages\", \"readme\": \"Default\" }"
 | 
					    local json="{ \"auto_init\": true, \"name\":\"$gitname\", \"gitignores\":\"ArchLinuxPackages\", \"readme\": \"Default\" }"
 | 
				
			||||||
@@ -27,33 +27,16 @@ create_repo(){
 | 
				
			|||||||
    echo
 | 
					    echo
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
delete_repo(){
 | 
					get_team_id() {
 | 
				
			||||||
    local pkg="$1" org="$2"
 | 
					    local org="$1" team="$2"
 | 
				
			||||||
    local gitname=$(get_compliant_name "$pkg")
 | 
					    local id=$(curl -s -X GET "${GIT_URL}/api/v1/orgs/$org/teams/search?q=$team&access_token=${GIT_TOKEN}" \
 | 
				
			||||||
 | 
					        -H  "accept: application/json" | jq '.data[] .id')
 | 
				
			||||||
    msg2 "Delete package repo [%s] in org (%s)" "${pkg}" "${org}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    curl -s -X DELETE "${GIT_URL}/api/v1/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
 | 
					 | 
				
			||||||
        -H  "accept: application/json"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
load_team_id(){
 | 
					 | 
				
			||||||
    local org="$1" team="$2" id=0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    local ids=($(curl -s -X GET "${GIT_URL}/api/v1/orgs/$org/teams?access_token=${GIT_TOKEN}" \
 | 
					 | 
				
			||||||
        -H  "accept: application/json" | jshon -a -e id))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    case $team in
 | 
					 | 
				
			||||||
        packages) id="${ids[2]}" ;;
 | 
					 | 
				
			||||||
        community) id="${ids[1]}" ;;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    echo $id
 | 
					    echo $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=$(get_team_id "$org" "$team")
 | 
				
			||||||
    local gitname=$(get_compliant_name "$pkg")
 | 
					    local gitname=$(get_compliant_name "$pkg")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg2 "Adding package repo [%s] to team (%s)" "$gitname" "$team"
 | 
					    msg2 "Adding package repo [%s] to team (%s)" "$gitname" "$team"
 | 
				
			||||||
@@ -61,3 +44,14 @@ add_repo_to_team(){
 | 
				
			|||||||
    curl -s -X PUT "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?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"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					remove_repo_from_team() {
 | 
				
			||||||
 | 
					    local pkg="$1" org="$2" team="$3"
 | 
				
			||||||
 | 
					    local id=$(get_team_id "$org" "$team")
 | 
				
			||||||
 | 
					    local gitname=$(get_compliant_name "$pkg")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg2 "Removing package repo [%s] from team (%s)" "$gitname" "$team"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    curl -s -X DELETE "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
 | 
				
			||||||
 | 
					        -H  "accept: application/json"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,14 +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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
get_local_head(){
 | 
					 | 
				
			||||||
    echo $(git log --pretty=%H ...refs/heads/master^ | head -n 1)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
get_remote_head(){
 | 
					 | 
				
			||||||
    echo $(git ls-remote origin -h refs/heads/master | cut -f1)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
get_pkg_org(){
 | 
					get_pkg_org(){
 | 
				
			||||||
    local pkg="$1" org= sub=
 | 
					    local pkg="$1" org= sub=
 | 
				
			||||||
    case ${pkg} in
 | 
					    case ${pkg} in
 | 
				
			||||||
@@ -31,111 +23,34 @@ get_pkg_org(){
 | 
				
			|||||||
    echo $org
 | 
					    echo $org
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					subrepo_init() {
 | 
				
			||||||
 | 
					    local pkg="$1" org="$2"
 | 
				
			||||||
 | 
					    local gitname=$(get_compliant_name "$pkg")
 | 
				
			||||||
 | 
					    msg2 "Subrepo init (%s)" "$pkg"
 | 
				
			||||||
 | 
					    git subrepo init "$pkg" -r gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
subrepo_push(){
 | 
					subrepo_push(){
 | 
				
			||||||
    local pkg="$1"
 | 
					    local pkg="$1"
 | 
				
			||||||
    msg2 "Push (%s)" "$pkg"
 | 
					    msg2 "Subrepo push (%s)" "$pkg"
 | 
				
			||||||
    git subrepo push "$pkg"
 | 
					    git subrepo push "$pkg" || die "%s push failed" "$pkg"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
subrepo_clean(){
 | 
					subrepo_clean(){
 | 
				
			||||||
    local pkg="$1"
 | 
					    local pkg="$1"
 | 
				
			||||||
    msg2 "Clean (%s)" "$pkg"
 | 
					    msg2 "Subrepo clean (%s)" "$pkg"
 | 
				
			||||||
    git subrepo clean "$pkg"
 | 
					    git subrepo clean "$pkg"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
subrepo_pull(){
 | 
					subrepo_pull(){
 | 
				
			||||||
    local pkg="$1"
 | 
					    local pkg="$1"
 | 
				
			||||||
    msg2 "Pull (%s)" "$pkg"
 | 
					    msg2 "Subrepo pull (%s)" "$pkg"
 | 
				
			||||||
    git subrepo pull "$pkg"
 | 
					    git subrepo pull "$pkg"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
subrepo_clone(){
 | 
					subrepo_clone(){
 | 
				
			||||||
    local pkg="$1" org="$2"
 | 
					    local pkg="$1" org="$2"
 | 
				
			||||||
    local gitname=$(get_compliant_name "$pkg")
 | 
					    local gitname=$(get_compliant_name "$pkg")
 | 
				
			||||||
    msg2 "Clone [%s] from (%s)" "$pkg" "$org/$gitname"
 | 
					    msg2 "Subrepo clone [%s] from (%s)" "$pkg" "$org/$gitname"
 | 
				
			||||||
    git subrepo clone gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git "$pkg"
 | 
					    git subrepo clone gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git "$pkg"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
clone_tree(){
 | 
					 | 
				
			||||||
    local timer=$(get_timer) url="$1" tree="$2" os="${3:-$(get_osname)}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    msg "Cloning %s (%s) ..." "$tree" "$os"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    git clone $url/$tree.git
 | 
					 | 
				
			||||||
    show_elapsed_time "${FUNCNAME}" "${timer}"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
has_changes(){
 | 
					 | 
				
			||||||
    local head_l="$1" head_r="$2"
 | 
					 | 
				
			||||||
    if [[ "$head_l" == "$head_r" ]]; then
 | 
					 | 
				
			||||||
        msg2 "remote changes: no"
 | 
					 | 
				
			||||||
        return 1
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        msg2 "remote changes: yes"
 | 
					 | 
				
			||||||
        return 0
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pull_tree(){
 | 
					 | 
				
			||||||
    local tree="$1" local_head="$2" os="${3:-$(get_osname)}"
 | 
					 | 
				
			||||||
    local remote_head=$(get_remote_head)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    msg "Checking %s (%s)" "${tree}" "$os"
 | 
					 | 
				
			||||||
    if has_changes "${local_head}" "${remote_head}";then
 | 
					 | 
				
			||||||
        git pull origin master
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
push_tree(){
 | 
					 | 
				
			||||||
    local tree="$1"
 | 
					 | 
				
			||||||
    msg "Update (%s)" "${tree}"
 | 
					 | 
				
			||||||
    git push origin master
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
write_jenkinsfile(){
 | 
					 | 
				
			||||||
    local pkg="$1"
 | 
					 | 
				
			||||||
    local jenkins=$pkg/Jenkinsfile
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    echo "@Library('artix-ci') import org.artixlinux.RepoPackage" > $jenkins
 | 
					 | 
				
			||||||
    echo '' >> $jenkins
 | 
					 | 
				
			||||||
    echo 'PackagePipeline(new RepoPackage(this))' >> $jenkins
 | 
					 | 
				
			||||||
    echo '' >> $jenkins
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    git add $jenkins
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
write_agentyaml(){
 | 
					 | 
				
			||||||
    local pkg="$1"
 | 
					 | 
				
			||||||
    local agent=$pkg/.artixlinux/agent.yaml label='master'
 | 
					 | 
				
			||||||
    [[ -d $pkg/.artixlinux ]] || mkdir $pkg/.artixlinux
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    echo '%YAML 1.2' > $agent
 | 
					 | 
				
			||||||
    echo '---' >> $agent
 | 
					 | 
				
			||||||
    echo '' >> $agent
 | 
					 | 
				
			||||||
    echo "label: $label" >> $agent
 | 
					 | 
				
			||||||
    echo '' >> $agent
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    git add $agent
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
commit_jenkins_files(){
 | 
					 | 
				
			||||||
    local pkg="$1"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    write_jenkinsfile "$pkg"
 | 
					 | 
				
			||||||
    write_agentyaml "$pkg"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    git commit -m "add jenkinsfile & .artixlinux/agent.yaml"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
config_tree(){
 | 
					 | 
				
			||||||
    local tree="$1"
 | 
					 | 
				
			||||||
    cd $tree
 | 
					 | 
				
			||||||
        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 ..
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										160
									
								
								lib/pkg/util.sh
									
									
									
									
									
								
							
							
						
						
									
										160
									
								
								lib/pkg/util.sh
									
									
									
									
									
								
							@@ -12,167 +12,47 @@
 | 
				
			|||||||
# 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					shopt -s extglob
 | 
				
			||||||
 | 
					
 | 
				
			||||||
get_compliant_name(){
 | 
					get_compliant_name(){
 | 
				
			||||||
    local gitname="$1"
 | 
					    local gitname="$1"
 | 
				
			||||||
    case $gitname in
 | 
					    case "$gitname" in
 | 
				
			||||||
        *+) gitname=${gitname//+/plus}
 | 
					        *+) gitname=${gitname//+/plus}
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
    echo $gitname
 | 
					    echo "$gitname"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
arch2artix(){
 | 
					set_arch_repos(){
 | 
				
			||||||
    local repo="$1" artix=none
 | 
					    local x="$1" y="$2" z="$3"
 | 
				
			||||||
    case "$repo" in
 | 
					    ARCH_REPOS=(core extra community multilib)
 | 
				
			||||||
        core) artix=system ;;
 | 
					 | 
				
			||||||
        extra) artix=world ;;
 | 
					 | 
				
			||||||
        community) artix=galaxy ;;
 | 
					 | 
				
			||||||
        multilib) artix=lib32 ;;
 | 
					 | 
				
			||||||
        staging) artix=goblins ;;
 | 
					 | 
				
			||||||
        testing) artix=gremlins ;;
 | 
					 | 
				
			||||||
        community-staging) artix=galaxy-goblins ;;
 | 
					 | 
				
			||||||
        community-testing) artix=galaxy-gremlins ;;
 | 
					 | 
				
			||||||
        multilib-staging) artix=lib32-goblins ;;
 | 
					 | 
				
			||||||
        multilib-testing) artix=lib32-gremlins ;;
 | 
					 | 
				
			||||||
        kde-unstable) artix=kde-wobble ;;
 | 
					 | 
				
			||||||
        gnome-unstable) artix=gnome-wobble ;;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
    echo $artix
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
find_tree(){
 | 
					    $x && ARCH_REPOS+=(testing community-testing multilib-testing)
 | 
				
			||||||
    local tree="$1" pkg="$2"
 | 
					    $y && ARCH_REPOS+=(staging community-staging multilib-staging)
 | 
				
			||||||
    local result=$(find $tree -mindepth 2 -maxdepth 2 -type d -name "$pkg")
 | 
					    $z && ARCH_REPOS+=(gnome-unstable kde-unstable)
 | 
				
			||||||
    result=${result%/*}
 | 
					 | 
				
			||||||
    echo ${result##*/}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
arch_repos(){
 | 
					 | 
				
			||||||
    local stag="$1" unst="$2"
 | 
					 | 
				
			||||||
    local repos=(core extra testing community community-testing multilib multilib-testing)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $stag && repos+=(staging community-staging multilib-staging)
 | 
					 | 
				
			||||||
    $unst && repos+=(gnome-unstable kde-unstable)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    echo ${repos[@]}
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
find_repo(){
 | 
					find_repo(){
 | 
				
			||||||
    local pkg="$1" stag="$2" unst="$3" repo=
 | 
					    local pkg="$1" repo=
 | 
				
			||||||
 | 
					    for r in ${ARCH_REPOS[@]};do
 | 
				
			||||||
    for r in $(arch_repos "$stag" "$unst");do
 | 
					 | 
				
			||||||
        [[ -f $pkg/repos/$r-${ARCH}/PKGBUILD ]] && repo=$r-${ARCH}
 | 
					        [[ -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
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
is_valid_repo(){
 | 
					find_pkg(){
 | 
				
			||||||
    local src="$1" cases=
 | 
					    local searchdir="$1" pkg="$2"
 | 
				
			||||||
    for r in $(arch_repos true true);do
 | 
					    local result=$(find "$searchdir" -mindepth 2 -maxdepth 2 -type d -name "$pkg")
 | 
				
			||||||
        cases=${cases:-}${cases:+|}${r}
 | 
					    echo "$result"
 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
    eval "case $src in
 | 
					 | 
				
			||||||
        ${cases}|trunk) return 0 ;;
 | 
					 | 
				
			||||||
        *) return 1 ;;
 | 
					 | 
				
			||||||
    esac"
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
get_cases(){
 | 
					find_cached_pkgfile() {
 | 
				
			||||||
    local pkglist="${SYSCONFDIR}/pkglist.d/$1.list"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    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 cases=
 | 
					 | 
				
			||||||
    for p in ${pkgs[@]};do
 | 
					 | 
				
			||||||
        cases=${cases:-}${cases:+|}${p}
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
    echo $cases
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
get_artix_tree(){
 | 
					 | 
				
			||||||
    local pkg="$1" artix_tree="${2:-$3}" tree
 | 
					 | 
				
			||||||
    eval "case $pkg in
 | 
					 | 
				
			||||||
        $(get_cases kernel)) tree=packages-kernel ;;
 | 
					 | 
				
			||||||
        $(get_cases python)) tree=packages-python ;;
 | 
					 | 
				
			||||||
        $(get_cases perl)) tree=packages-perl ;;
 | 
					 | 
				
			||||||
        $(get_cases ruby)) tree=packages-ruby ;;
 | 
					 | 
				
			||||||
        $(get_cases openrc)) tree=packages-openrc ;;
 | 
					 | 
				
			||||||
        $(get_cases runit)) tree=packages-runit ;;
 | 
					 | 
				
			||||||
        $(get_cases s6)) tree=packages-s6 ;;
 | 
					 | 
				
			||||||
        $(get_cases media)) tree=packages-media ;;
 | 
					 | 
				
			||||||
        $(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
 | 
					 | 
				
			||||||
    esac"
 | 
					 | 
				
			||||||
    echo $tree
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
get_import_path(){
 | 
					 | 
				
			||||||
    local pkg="$1" import_path=
 | 
					 | 
				
			||||||
    for tree in ${TREE_NAMES_ARCH[@]};do
 | 
					 | 
				
			||||||
        [[ -d ${TREE_DIR_ARCH}/$tree/$pkg/repos ]] && import_path=${TREE_DIR_ARCH}/$tree/$pkg
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
    echo $import_path
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pkgver_equal() {
 | 
					 | 
				
			||||||
    if [[ $1 = *-* && $2 = *-* ]]; then
 | 
					 | 
				
			||||||
        # if both versions have a pkgrel, then they must be an exact match
 | 
					 | 
				
			||||||
        [[ $1 = "$2" ]]
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        # otherwise, trim any pkgrel and compare the bare version.
 | 
					 | 
				
			||||||
        [[ ${1%%-*} = "${2%%-*}" ]]
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
find_cached_package() {
 | 
					 | 
				
			||||||
    local searchdirs=("$PKGDEST" "$PWD") results=()
 | 
					    local searchdirs=("$PKGDEST" "$PWD") results=()
 | 
				
			||||||
    local targetname=$1 targetver=$2 targetarch=$3
 | 
					    local pkg="$1"
 | 
				
			||||||
    local dir pkg pkgbasename name ver rel arch r results
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for dir in "${searchdirs[@]}"; do
 | 
					    for dir in "${searchdirs[@]}"; do
 | 
				
			||||||
        [[ -d $dir ]] || continue
 | 
					        [[ -d "$dir" ]] || continue
 | 
				
			||||||
 | 
					        [[ -e "$dir/$pkg" ]] && results+=("$dir/$pkg")
 | 
				
			||||||
        for pkg in "$dir"/*.pkg.tar.?z; do
 | 
					 | 
				
			||||||
            [[ -f $pkg ]] || continue
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            # avoid adding duplicates of the same inode
 | 
					 | 
				
			||||||
            for r in "${results[@]}"; do
 | 
					 | 
				
			||||||
                [[ $r -ef $pkg ]] && continue 2
 | 
					 | 
				
			||||||
            done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            # split apart package filename into parts
 | 
					 | 
				
			||||||
            pkgbasename=${pkg##*/}
 | 
					 | 
				
			||||||
            pkgbasename=${pkgbasename%.pkg.tar.?z}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            arch=${pkgbasename##*-}
 | 
					 | 
				
			||||||
            pkgbasename=${pkgbasename%-"$arch"}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            rel=${pkgbasename##*-}
 | 
					 | 
				
			||||||
            pkgbasename=${pkgbasename%-"$rel"}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            ver=${pkgbasename##*-}
 | 
					 | 
				
			||||||
            name=${pkgbasename%-"$ver"}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if [[ $targetname = "$name" && $targetarch = "$arch" ]] &&
 | 
					 | 
				
			||||||
                pkgver_equal "$targetver" "$ver-$rel"; then
 | 
					 | 
				
			||||||
                results+=("$pkg")
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
        done
 | 
					 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
 | 
					 | 
				
			||||||
    case ${#results[*]} in
 | 
					    case ${#results[*]} in
 | 
				
			||||||
        0)
 | 
					        0)
 | 
				
			||||||
            return 1
 | 
					            return 1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,7 +34,10 @@ for baselib in ${LIBDIR}/base/*.sh; do
 | 
				
			|||||||
    . $baselib
 | 
					    . $baselib
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
prepare_dir "${USER_CONF_DIR}"
 | 
					prepare_artools(){
 | 
				
			||||||
 | 
					    prepare_dir "${WORKSPACE_DIR}"
 | 
				
			||||||
 | 
					    prepare_dir "${USER_CONF_DIR}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
load_base_config(){
 | 
					load_base_config(){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -50,8 +53,6 @@ load_base_config(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    WORKSPACE_DIR=${WORKSPACE_DIR:-"/home/${OWNER}/artools-workspace"}
 | 
					    WORKSPACE_DIR=${WORKSPACE_DIR:-"/home/${OWNER}/artools-workspace"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    prepare_dir "${WORKSPACE_DIR}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,8 +30,6 @@ load_iso_config(){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    ISO_POOL=${ISO_POOL:-"${WORKSPACE_DIR}/iso"}
 | 
					    ISO_POOL=${ISO_POOL:-"${WORKSPACE_DIR}/iso"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    prepare_dir "${ISO_POOL}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    PROFILE='base'
 | 
					    PROFILE='base'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ISO_VERSION=${ISO_VERSION:-"$(date +%Y%m%d)"}
 | 
					    ISO_VERSION=${ISO_VERSION:-"$(date +%Y%m%d)"}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,6 +41,8 @@ load_pkg_config(){
 | 
				
			|||||||
            packages
 | 
					            packages
 | 
				
			||||||
            community
 | 
					            community
 | 
				
			||||||
            packages-kernel
 | 
					            packages-kernel
 | 
				
			||||||
 | 
					            packages-net
 | 
				
			||||||
 | 
					            packages-gfx
 | 
				
			||||||
            packages-openrc
 | 
					            packages-openrc
 | 
				
			||||||
            packages-runit
 | 
					            packages-runit
 | 
				
			||||||
            packages-s6
 | 
					            packages-s6
 | 
				
			||||||
@@ -58,6 +60,7 @@ load_pkg_config(){
 | 
				
			|||||||
            packages-mate
 | 
					            packages-mate
 | 
				
			||||||
            packages-kde
 | 
					            packages-kde
 | 
				
			||||||
            packages-xfce
 | 
					            packages-xfce
 | 
				
			||||||
 | 
					            packages-wm
 | 
				
			||||||
#             packages-haskell
 | 
					#             packages-haskell
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user