Compare commits
	
		
			43 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| d5e3d86210 | |||
| bfb20645c6 | |||
| 0b2973e802 | |||
| 887a587954 | |||
| 59c664fb30 | |||
| 75a9c79c72 | |||
| 00821f6e26 | |||
| ceb83ff765 | |||
| 8b3f5899d3 | |||
| c1956b0139 | |||
| 4206fdeff1 | |||
| ae41ba16c6 | |||
| cf87f88580 | |||
| 76e97b3702 | |||
| d1b2da317f | |||
| e59680bf11 | |||
| defafdecce | |||
| 2c21030758 | |||
| e29cd8817a | |||
| e551f42888 | |||
| ad33bccd49 | |||
| 31eeaa9a0d | |||
| f5daac0d67 | |||
| 2484ea39a4 | |||
| 9b222bdb83 | |||
| a3e6b17c5f | |||
| 21a37f6b00 | |||
| 80416b76d5 | |||
| 2113ffe4c6 | |||
| 438473c878 | |||
| 86c5c2f47b | |||
| d333c245c0 | |||
| 4a650f00d7 | |||
| 08b73032a2 | |||
| 1a250c2167 | |||
| 46431619f2 | |||
| 12d2159c12 | |||
| 3865ceab58 | |||
| 890e631e1b | |||
| 273e928905 | |||
| f5c328f8e5 | |||
| 4089151791 | |||
| 211579f9d7 | 
							
								
								
									
										7
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								Makefile
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
VERSION=0.17
 | 
			
		||||
VERSION=0.20
 | 
			
		||||
 | 
			
		||||
CHROOT_VERSION=0.10
 | 
			
		||||
 | 
			
		||||
@@ -14,7 +14,6 @@ BASE_CONF = \
 | 
			
		||||
	data/conf/artools-base.conf
 | 
			
		||||
 | 
			
		||||
BASE_BIN = \
 | 
			
		||||
	bin/base/signfile \
 | 
			
		||||
	bin/base/chroot-run \
 | 
			
		||||
	bin/base/mkchroot \
 | 
			
		||||
	bin/base/basestrap \
 | 
			
		||||
@@ -45,7 +44,8 @@ PKG_BIN = \
 | 
			
		||||
	bin/pkg/checkpkg \
 | 
			
		||||
	bin/pkg/finddeps \
 | 
			
		||||
	bin/pkg/find-libdeps \
 | 
			
		||||
	bin/pkg/batchpkg
 | 
			
		||||
	bin/pkg/batchpkg \
 | 
			
		||||
	bin/pkg/signpkg
 | 
			
		||||
 | 
			
		||||
LN_COMMITPKG = \
 | 
			
		||||
	extrapkg \
 | 
			
		||||
@@ -116,7 +116,6 @@ ISO_LIBS = \
 | 
			
		||||
 | 
			
		||||
ISO_UTIL = lib/util-iso.sh
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DIRMODE = -dm0755
 | 
			
		||||
FILEMODE = -m0644
 | 
			
		||||
MODE =  -m0755
 | 
			
		||||
 
 | 
			
		||||
@@ -147,7 +147,7 @@ elif [[ $(cat "$working_dir/.artools") != ${CHROOTVERSION} ]]; then
 | 
			
		||||
    die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "${CHROOTVERSION}"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
sync_host_localtime
 | 
			
		||||
#sync_host_localtime
 | 
			
		||||
 | 
			
		||||
chroot_api_mount "${working_dir}" || die "failed to setup API filesystems in chroot %s" "${working_dir}"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2018-19 artoo@artixlinux.org
 | 
			
		||||
# Copyright (C) 2018-20 artoo@artixlinux.org
 | 
			
		||||
# Copyright (C) 2018 Artix Linux Developers
 | 
			
		||||
#
 | 
			
		||||
# This program is free software; you can redistribute it and/or modify
 | 
			
		||||
@@ -33,34 +33,65 @@ batch_move() {
 | 
			
		||||
    done < $pkglist
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# batch_upgrade() {
 | 
			
		||||
#     local pkglist=${TREE_DIR_ARTIX}/pkg_upgrades.list
 | 
			
		||||
#     [[ -f $pkglist ]] || die "%s does not exist!" "$pkglist"
 | 
			
		||||
#     while read entry;do
 | 
			
		||||
#         local pkg=${entry#*:}
 | 
			
		||||
#         local dest=${entry%:*}
 | 
			
		||||
#         echo "buildtree -i -p ${pkg}"
 | 
			
		||||
#         echo "${dest}pkg -u -p ${pkg}"
 | 
			
		||||
#     done < $pkglist
 | 
			
		||||
# }
 | 
			
		||||
batch_create() {
 | 
			
		||||
    local name="${1:-pkg_create}"
 | 
			
		||||
    local pkglist=${TREE_DIR_ARTIX}/$name.list
 | 
			
		||||
    [[ -f $pkglist ]] || die "%s does not exist!" "$pkglist"
 | 
			
		||||
    while read entry;do
 | 
			
		||||
        local pkg=${entry##*:}
 | 
			
		||||
        local group=${entry%:*}
 | 
			
		||||
        group=${group#*:}
 | 
			
		||||
        local team=${entry%%:*}
 | 
			
		||||
        if ${runlist}; then
 | 
			
		||||
            buildtree -n -p "${pkg}" -t "${team}" -g "${group}"
 | 
			
		||||
            buildtree -i -p "${pkg}"
 | 
			
		||||
            commitpkg -p "${pkg}"
 | 
			
		||||
        else
 | 
			
		||||
            msg "%s" "buildtree -n -p ${pkg} -t ${team} -g ${group}"
 | 
			
		||||
            msg2 "%s" "buildtree -i -p ${pkg}"
 | 
			
		||||
            msg2 "%s" "commitpkg -p ${pkg}"
 | 
			
		||||
        fi
 | 
			
		||||
    done < $pkglist
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
batch_update() {
 | 
			
		||||
    local name="${1:-pkg_upgrades}"
 | 
			
		||||
    local pkglist=${TREE_DIR_ARTIX}/$name.list
 | 
			
		||||
    [[ -f $pkglist ]] || die "%s does not exist!" "$pkglist"
 | 
			
		||||
    while read entry;do
 | 
			
		||||
        local pkg=${entry#*:}
 | 
			
		||||
        local dest=${entry%:*}
 | 
			
		||||
        if ${runlist}; then
 | 
			
		||||
            buildtree -i -p "${pkg}"
 | 
			
		||||
            "${dest}"pkg -u -p "${pkg}"
 | 
			
		||||
        else
 | 
			
		||||
            msg "buildtree -i -p ${pkg}"
 | 
			
		||||
            msg2 "${dest}pkg -u -p ${pkg}"
 | 
			
		||||
        fi
 | 
			
		||||
    done < $pkglist
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${0##*/} [optional listname]"
 | 
			
		||||
    echo '    -r                 Run generated commands'
 | 
			
		||||
    echo '    -c                 Create subrepos from list'
 | 
			
		||||
    echo '    -u                 Update subrepos from list'
 | 
			
		||||
    echo '    -h                 This help'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo ''
 | 
			
		||||
    exit $1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
movelistname=pkg_moves
 | 
			
		||||
runlist=false
 | 
			
		||||
create=false
 | 
			
		||||
update=false
 | 
			
		||||
 | 
			
		||||
opts='rh'
 | 
			
		||||
opts='rcuh'
 | 
			
		||||
 | 
			
		||||
while getopts "${opts}" arg; do
 | 
			
		||||
    case "${arg}" in
 | 
			
		||||
        r) runlist=true ;;
 | 
			
		||||
        c) create=true ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
@@ -68,6 +99,12 @@ done
 | 
			
		||||
 | 
			
		||||
shift $(($OPTIND - 1))
 | 
			
		||||
 | 
			
		||||
movelistname="$1"; shift
 | 
			
		||||
listname="$1"; shift
 | 
			
		||||
 | 
			
		||||
batch_move "$movelistname"
 | 
			
		||||
if ${create};then
 | 
			
		||||
    batch_create "${listname}"
 | 
			
		||||
elif ${update};then
 | 
			
		||||
    batch_update "${listname}"
 | 
			
		||||
else
 | 
			
		||||
    batch_move "${listname}"
 | 
			
		||||
fi
 | 
			
		||||
 
 | 
			
		||||
@@ -30,6 +30,7 @@ base_devel=('base-devel')
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${0##*/} [options] -- [mkchrootpkg_args]"
 | 
			
		||||
    echo "    -r <dir>           Create chroots in this directory"
 | 
			
		||||
    echo "    -d <dir>           Destination repo chroot"
 | 
			
		||||
    echo '    -c                 Recreate the chroot before building'
 | 
			
		||||
    echo '    -m                 Major rebuild'
 | 
			
		||||
    echo '    -N                 Disable check() function'
 | 
			
		||||
@@ -43,11 +44,12 @@ usage() {
 | 
			
		||||
 | 
			
		||||
orig_argv=("$0" "$@")
 | 
			
		||||
 | 
			
		||||
opts='hcCNmr:'
 | 
			
		||||
opts='hcCNmr:d:'
 | 
			
		||||
 | 
			
		||||
while getopts "${opts}" arg; do
 | 
			
		||||
    case "${arg}" in
 | 
			
		||||
        r) CHROOTS_PKG="$OPTARG" ;;
 | 
			
		||||
        d) repo="$OPTARG" ;;
 | 
			
		||||
        c) create_first=true ;;
 | 
			
		||||
        m) rebuild=true ;;
 | 
			
		||||
        C) is_checkpkg=true; mkchrootpkg_args+=(-C) ;;
 | 
			
		||||
 
 | 
			
		||||
@@ -55,7 +55,7 @@ patch_pkg(){
 | 
			
		||||
 | 
			
		||||
pull_tree_arch(){
 | 
			
		||||
    cd ${TREE_DIR_ARCH}
 | 
			
		||||
    for tree in ${TREE_NAMES_ARCH[@]};do
 | 
			
		||||
    for tree in ${ARCH_TREE[@]};do
 | 
			
		||||
        if [[ -d ${tree} ]];then
 | 
			
		||||
            cd ${tree}
 | 
			
		||||
            pull_tree "${tree}" "$(get_local_head)" "Arch"
 | 
			
		||||
@@ -85,7 +85,7 @@ pull_tree_artix(){
 | 
			
		||||
sync_pkg(){
 | 
			
		||||
    local rsync_args=(-aWxvci --progress --delete-before --no-R --no-implied-dirs)
 | 
			
		||||
    local src="$1" dest="$2"
 | 
			
		||||
 | 
			
		||||
    msg "Sync from Arch [%s] to Artix [%s]" "${src##*archlinux/}" "${dest##*artixlinux/}"
 | 
			
		||||
    rsync "${rsync_args[@]}" $src/ $dest/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -94,15 +94,13 @@ show_deps(){
 | 
			
		||||
 | 
			
		||||
    . $src/PKGBUILD 2>/dev/null
 | 
			
		||||
 | 
			
		||||
    [[ $arch == 'any' ]] && CARCH=any
 | 
			
		||||
 | 
			
		||||
    local archver=$(get_full_version)
 | 
			
		||||
 | 
			
		||||
    [[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}"
 | 
			
		||||
    msg2 "pkgname: %s" "${pkgname[*]}"
 | 
			
		||||
    [[ -n $pkgdesc ]] && msg2 "pkgdesc: %s" "${pkgdesc}"
 | 
			
		||||
    msg2 "Arch Version: %s" "$archver"
 | 
			
		||||
    msg2 "arch: %s" "$CARCH"
 | 
			
		||||
    msg2 "arch: %s" "$arch"
 | 
			
		||||
 | 
			
		||||
    [[ -n ${makedepends[@]} ]] && msg2 "makedepends: %s" "${makedepends[*]}"
 | 
			
		||||
    [[ -n ${checkdepends[@]} ]] && msg2 "checkdepends: %s" "${checkdepends[*]}"
 | 
			
		||||
@@ -111,23 +109,17 @@ show_deps(){
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
subrepo_new(){
 | 
			
		||||
    local group="${1:-$GROUP}" team="${2:-$TEAM}"
 | 
			
		||||
    local dest=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk
 | 
			
		||||
 | 
			
		||||
    cd ${TREE_DIR_ARTIX}/$group
 | 
			
		||||
 | 
			
		||||
    msg2 "team: %s" "$team"
 | 
			
		||||
    msg2 "group: %s" "$group"
 | 
			
		||||
    cd ${TREE_DIR_ARTIX}/${GROUP}
 | 
			
		||||
 | 
			
		||||
    local org=$(get_pkg_org "${PACKAGE}")
 | 
			
		||||
 | 
			
		||||
    create_repo "${PACKAGE}" "$org"
 | 
			
		||||
 | 
			
		||||
    add_repo_to_team "${PACKAGE}" "$org" "$team"
 | 
			
		||||
    add_repo_to_team "${PACKAGE}" "$org" "${TEAM}"
 | 
			
		||||
 | 
			
		||||
    subrepo_clone "${PACKAGE}" "$org"
 | 
			
		||||
 | 
			
		||||
    prepare_dir "$dest"
 | 
			
		||||
    prepare_dir "${TREE_DIR_ARTIX}/${GROUP}/${PACKAGE}/trunk"
 | 
			
		||||
 | 
			
		||||
    commit_jenkins_files "${PACKAGE}"
 | 
			
		||||
}
 | 
			
		||||
@@ -139,48 +131,38 @@ from_arch(){
 | 
			
		||||
    [[ -z $srcpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
			
		||||
 | 
			
		||||
    local repo=$(find_repo "$srcpath")
 | 
			
		||||
    msg "repo: %s" "${repo#*/}"
 | 
			
		||||
 | 
			
		||||
    archpath=$srcpath/repos/$repo
 | 
			
		||||
    local artixpath=$(find_pkg ${TREE_DIR_ARTIX} ${PACKAGE})
 | 
			
		||||
    local tree=${srcpath%/*}
 | 
			
		||||
    local tree=${tree##*/}
 | 
			
		||||
    local group=$(get_group "${PACKAGE}" "$tree")
 | 
			
		||||
 | 
			
		||||
    msg "repo: %s" "$repo"
 | 
			
		||||
    artixpath=$artixpath/trunk
 | 
			
		||||
    local archpath=$srcpath/$repo
 | 
			
		||||
    local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
			
		||||
 | 
			
		||||
    show_deps "$archpath"
 | 
			
		||||
 | 
			
		||||
    if [[ -f $artixpath/PKGBUILD ]];then
 | 
			
		||||
    if [[ -f "$artixpath"/.gitrepo ]]; then
 | 
			
		||||
        artixpath="$artixpath"/trunk
 | 
			
		||||
 | 
			
		||||
        . $artixpath/PKGBUILD 2>/dev/null
 | 
			
		||||
        local artixver=$(get_full_version)
 | 
			
		||||
 | 
			
		||||
        msg2 "Artix Version: %s" "$artixver"
 | 
			
		||||
        if [[ -d "$artixpath" ]];then
 | 
			
		||||
            sync_pkg "$archpath" "$artixpath"
 | 
			
		||||
            patch_pkg "$artixpath"
 | 
			
		||||
        fi
 | 
			
		||||
    else
 | 
			
		||||
        artixpath=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk
 | 
			
		||||
        subrepo_new "${group}" "${repo%-*}"
 | 
			
		||||
        die "Package '%s' does not exist!" "${PACKAGE}"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    msg "Sync (%s) from Arch [%s] to Artix [%s]" "${PACKAGE}" "${archpath##*archlinux/}" "${artixpath##*artixlinux/}"
 | 
			
		||||
 | 
			
		||||
    sync_pkg "$archpath" "$artixpath"
 | 
			
		||||
    patch_pkg "$artixpath"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
view_build(){
 | 
			
		||||
    local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
			
		||||
    [[ -z $archpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
			
		||||
    local repo=$(find_repo "${archpath}")
 | 
			
		||||
    archpath=$archpath/repos/$repo
 | 
			
		||||
    msg2 "repo: %s" "$repo"
 | 
			
		||||
    archpath=$archpath/$repo
 | 
			
		||||
    msg "repo: %s" "${repo#*/}"
 | 
			
		||||
    show_deps "$archpath"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
check_tree(){
 | 
			
		||||
    local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
			
		||||
    [[ -z $archpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
			
		||||
    local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" ${PACKAGE})
 | 
			
		||||
    local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
			
		||||
    local group=${artixpath%/*}
 | 
			
		||||
    msg "group: %s" "${group##*/}"
 | 
			
		||||
 | 
			
		||||
@@ -194,7 +176,7 @@ sync_repos(){
 | 
			
		||||
        if ${sync_group}; then
 | 
			
		||||
            pull_tree_artix "${GROUP}"
 | 
			
		||||
        else
 | 
			
		||||
            pull_tree_artix "${TREE_NAMES_ARTIX[*]}"
 | 
			
		||||
            pull_tree_artix "${ARTIX_TREE[*]}"
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
@@ -217,7 +199,7 @@ check=false
 | 
			
		||||
PACKAGE=''
 | 
			
		||||
 | 
			
		||||
TEAM='community'
 | 
			
		||||
GROUP=${TREE_NAMES_ARTIX[0]}
 | 
			
		||||
GROUP=${ARTIX_TREE[0]}
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${0##*/} [options]"
 | 
			
		||||
@@ -231,7 +213,7 @@ usage() {
 | 
			
		||||
    echo "    -a            Don't clone or pull arch repos"
 | 
			
		||||
    echo "    -b            Don't clone or pull artix repos"
 | 
			
		||||
    echo '    -i            Import a package from arch repos'
 | 
			
		||||
    echo '    -n            Make new remote subrepo and clone it'
 | 
			
		||||
    echo '    -n            New remote subrepo and clone it'
 | 
			
		||||
    echo '    -v            Check if a package is in the artix tree(s)'
 | 
			
		||||
    echo '    -c            View package depends'
 | 
			
		||||
    echo '    -x            Exclude testing (only with -i)'
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,68 @@ shopt -s extglob
 | 
			
		||||
 | 
			
		||||
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() {
 | 
			
		||||
    cat <<- _EOF_
 | 
			
		||||
        Usage: ${BASH_SOURCE[0]##*/} [OPTIONS]
 | 
			
		||||
 
 | 
			
		||||
@@ -16,27 +16,35 @@
 | 
			
		||||
 | 
			
		||||
prepare_artools
 | 
			
		||||
 | 
			
		||||
get_path(){
 | 
			
		||||
    local repo="$1" pkg=trunk/PKGBUILD
 | 
			
		||||
    if [[ $repo != trunk ]]; then
 | 
			
		||||
        [[ -f repos/$repo-${ARCH}/PKGBUILD ]] && pkg=repos/$repo-${ARCH}/PKGBUILD
 | 
			
		||||
        [[ -f repos/$repo-any/PKGBUILD ]] && pkg=repos/$repo-any/PKGBUILD
 | 
			
		||||
    fi
 | 
			
		||||
    echo $pkg
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
prepare_commit(){
 | 
			
		||||
    local dest="$1"
 | 
			
		||||
    [[ -d repos/$dest ]] && git rm -r repos/$dest
 | 
			
		||||
    [[ ! -d repos ]] && mkdir repos
 | 
			
		||||
    [[ ! -d repos/$dest ]] && mkdir repos/$dest
 | 
			
		||||
    # create new layout, copy & remove repos
 | 
			
		||||
    if [[ -d repos ]]; then
 | 
			
		||||
        msg "Switching to new layout ..."
 | 
			
		||||
        [[ ! -d "$CARCH" ]] && mkdir "$CARCH"
 | 
			
		||||
 | 
			
		||||
        for r in $(ls repos); do
 | 
			
		||||
            mkdir "$CARCH/${r%-*}"
 | 
			
		||||
            cp repos/${r}/* $CARCH/${r%-*}/
 | 
			
		||||
            git add $CARCH/${r%-*}
 | 
			
		||||
        done
 | 
			
		||||
 | 
			
		||||
        git rm -r repos
 | 
			
		||||
        git commit -m "switch to new repo layout"
 | 
			
		||||
        msg "Done switch"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [[ $action == 'add' ]] || [[ $action == 'move' ]] ;then
 | 
			
		||||
        [[ -d "$CARCH/${REPO_DEST}" ]] && git rm -r "$CARCH/${REPO_DEST}"
 | 
			
		||||
        [[ ! -d "$CARCH" ]] && mkdir "$CARCH"
 | 
			
		||||
        [[ ! -d "$CARCH/${REPO_DEST}" ]] && mkdir "$CARCH/${REPO_DEST}"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
check_team(){
 | 
			
		||||
    if [[ ${REPO_SRC} == "core" && ${REPO_DEST} == "extra" ]] || \
 | 
			
		||||
        [[ ${REPO_SRC} == "extra" && ${REPO_DEST} == "core" ]] || \
 | 
			
		||||
        [[ ${REPO_SRC} == "extra" && ${REPO_DEST} == "community" ]] || \
 | 
			
		||||
        [[ ${REPO_SRC} == "community" && ${REPO_DEST} == "extra" ]] ;then
 | 
			
		||||
    if [[ "${REPO_SRC}" == "core" && "${REPO_DEST}" == "extra" ]] || \
 | 
			
		||||
        [[ "${REPO_SRC}" == "extra" && "${REPO_DEST}" == "core" ]] || \
 | 
			
		||||
        [[ "${REPO_SRC}" == "extra" && "${REPO_DEST}" == "community" ]] || \
 | 
			
		||||
        [[ "${REPO_SRC}" == "community" && "${REPO_DEST}" == "extra" ]] ;then
 | 
			
		||||
 | 
			
		||||
        local org=$(get_pkg_org "${PACKAGE}")
 | 
			
		||||
        add_repo_to_team "${PACKAGE}" "$org" "${REPO_DEST}"
 | 
			
		||||
@@ -44,109 +52,80 @@ check_team(){
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
commit_pkg(){
 | 
			
		||||
    local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
			
		||||
config() {
 | 
			
		||||
    [[ "${REPO_SRC}" != 'trunk' ]] && pkgbuild="$CARCH/${REPO_SRC}"/PKGBUILD
 | 
			
		||||
 | 
			
		||||
    if [[ -n ${artixpath} ]];then
 | 
			
		||||
 | 
			
		||||
        local group=${artixpath%/*}
 | 
			
		||||
 | 
			
		||||
        cd ${group}
 | 
			
		||||
 | 
			
		||||
        local head=$(get_local_head)
 | 
			
		||||
 | 
			
		||||
        cd ${artixpath}
 | 
			
		||||
 | 
			
		||||
        local pkgbuild=$(get_path "${REPO_SRC}")
 | 
			
		||||
 | 
			
		||||
        . $pkgbuild
 | 
			
		||||
        [[ $arch == 'any' ]] && CARCH=any
 | 
			
		||||
 | 
			
		||||
        local version=$(get_full_version)
 | 
			
		||||
 | 
			
		||||
        local commit_msg=""
 | 
			
		||||
 | 
			
		||||
        if ${remove};then
 | 
			
		||||
            local action='remove'
 | 
			
		||||
            if [[ "${REPO_SRC}" == 'trunk' ]];then
 | 
			
		||||
                local pkg=${PACKAGE}
 | 
			
		||||
                git rm -r trunk
 | 
			
		||||
            else
 | 
			
		||||
                local pkg="${PACKAGE}-$version"
 | 
			
		||||
                git rm -r repos/"${REPO_SRC}-$CARCH"
 | 
			
		||||
            fi
 | 
			
		||||
            commit_msg="[${REPO_SRC}] '$pkg' ${action}"
 | 
			
		||||
            msg "Action: %s" "$commit_msg"
 | 
			
		||||
        else
 | 
			
		||||
            local action='modify'
 | 
			
		||||
            commit_msg="[${REPO_SRC}] '${PACKAGE}-$version' ${action}"
 | 
			
		||||
            msg "Action: %s" "$commit_msg"
 | 
			
		||||
            git add .
 | 
			
		||||
        fi
 | 
			
		||||
        git commit -m "$commit_msg"
 | 
			
		||||
 | 
			
		||||
        cd ${group}
 | 
			
		||||
 | 
			
		||||
        ${push} && pull_tree "${group##*/}" "$head"
 | 
			
		||||
 | 
			
		||||
#         subrepo_pull "${PACKAGE}"
 | 
			
		||||
        subrepo_push "${PACKAGE}"
 | 
			
		||||
        subrepo_clean "${PACKAGE}"
 | 
			
		||||
 | 
			
		||||
        ${push} && push_tree "${group##*/}"
 | 
			
		||||
 | 
			
		||||
        git prune
 | 
			
		||||
    else
 | 
			
		||||
        error "Package '%s' does not exist!" "${PACKAGE}"
 | 
			
		||||
    if [[ ! -f "$pkgbuild" ]]; then
 | 
			
		||||
        pkgbuild=repos/"${REPO_SRC}-${CARCH}"/PKGBUILD
 | 
			
		||||
        [[ -f repos/"${REPO_SRC}"-any/PKGBUILD ]] && pkgbuild=repos/"${REPO_SRC}"-any/PKGBUILD
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
repo_commit_pkg(){
 | 
			
		||||
commit_pkg() {
 | 
			
		||||
    if ${remove};then
 | 
			
		||||
        action='remove'
 | 
			
		||||
        if [[ "${REPO_SRC}" == 'trunk' ]];then
 | 
			
		||||
            local pkg=${PACKAGE}
 | 
			
		||||
            git rm -r trunk
 | 
			
		||||
        else
 | 
			
		||||
            local pkg="${PACKAGE}-$(get_full_version)"
 | 
			
		||||
 | 
			
		||||
            prepare_commit
 | 
			
		||||
 | 
			
		||||
            git rm -r "$CARCH/${REPO_SRC}"
 | 
			
		||||
        fi
 | 
			
		||||
        local commit_msg="[${REPO_SRC}] '$pkg' ${action}"
 | 
			
		||||
        msg "Action: %s" "$commit_msg"
 | 
			
		||||
    else
 | 
			
		||||
        action='modify'
 | 
			
		||||
        local commit_msg="[${REPO_SRC}] '${PACKAGE}-$(get_full_version)' ${action}"
 | 
			
		||||
        msg "Action: %s" "$commit_msg"
 | 
			
		||||
        git add .
 | 
			
		||||
    fi
 | 
			
		||||
    git commit -m "$commit_msg"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
repo_commit_pkg() {
 | 
			
		||||
    if [[ "${REPO_SRC}" == 'trunk' ]];then
 | 
			
		||||
        action='add'
 | 
			
		||||
        prepare_commit
 | 
			
		||||
        cp trunk/* "$CARCH/${REPO_DEST}"/
 | 
			
		||||
    else
 | 
			
		||||
        action='move'
 | 
			
		||||
        [[ ! -f $pkgbuild ]] && die "%s does not exist!" "$pkgbuild"
 | 
			
		||||
 | 
			
		||||
        prepare_commit
 | 
			
		||||
 | 
			
		||||
        cp "$CARCH/${REPO_SRC}"/* "$CARCH/${REPO_DEST}"/
 | 
			
		||||
        git rm -r "$CARCH/${REPO_SRC}"
 | 
			
		||||
    fi
 | 
			
		||||
    local commit_msg="[${REPO_SRC}] -> [${REPO_DEST}] '${PACKAGE}-$(get_full_version)' ${action}"
 | 
			
		||||
    msg "Action: %s" "$commit_msg"
 | 
			
		||||
 | 
			
		||||
    git add .
 | 
			
		||||
    git commit -m "$commit_msg"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
run(){
 | 
			
		||||
    local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
			
		||||
    if [[ -n ${artixpath} ]];then
 | 
			
		||||
 | 
			
		||||
        local group=${artixpath%/*}
 | 
			
		||||
 | 
			
		||||
        cd ${group}
 | 
			
		||||
 | 
			
		||||
        local head=$(get_local_head)
 | 
			
		||||
 | 
			
		||||
        cd ${artixpath}
 | 
			
		||||
 | 
			
		||||
        local pkgbuild=$(get_path "${REPO_SRC}")
 | 
			
		||||
 | 
			
		||||
        config
 | 
			
		||||
        . $pkgbuild
 | 
			
		||||
        [[ $arch == 'any' ]] && CARCH=any
 | 
			
		||||
 | 
			
		||||
        local version=$(get_full_version)
 | 
			
		||||
 | 
			
		||||
        if [[ ${REPO_SRC} == 'trunk' ]];then
 | 
			
		||||
            local action='add'
 | 
			
		||||
            local dest="${REPO_DEST}-$CARCH"
 | 
			
		||||
 | 
			
		||||
            prepare_commit "$dest"
 | 
			
		||||
 | 
			
		||||
            cp trunk/* repos/$dest/
 | 
			
		||||
        if [[ "${cmd}" == 'commitpkg' ]];then
 | 
			
		||||
            commit_pkg
 | 
			
		||||
        else
 | 
			
		||||
            local action='move'
 | 
			
		||||
            local src="${REPO_SRC}-$CARCH" dest="${REPO_DEST}-$CARCH"
 | 
			
		||||
 | 
			
		||||
            [[ ! -f repos/$src/PKGBUILD ]] && die "%s does not exist!" "repos/$src/PKGBUILD"
 | 
			
		||||
            prepare_commit "$dest"
 | 
			
		||||
 | 
			
		||||
            cp repos/$src/* repos/$dest/
 | 
			
		||||
            git rm -r repos/$src
 | 
			
		||||
            repo_commit_pkg
 | 
			
		||||
        fi
 | 
			
		||||
        local commit_msg="[${REPO_SRC}] -> [${REPO_DEST}] '${PACKAGE}-$version' ${action}"
 | 
			
		||||
        msg "Action: %s" "$commit_msg"
 | 
			
		||||
 | 
			
		||||
        git add .
 | 
			
		||||
        git commit -m "$commit_msg"
 | 
			
		||||
 | 
			
		||||
        cd ${group}
 | 
			
		||||
 | 
			
		||||
        ${push} && pull_tree "${group##*/}" "$head"
 | 
			
		||||
 | 
			
		||||
#         subrepo_pull "${PACKAGE}"
 | 
			
		||||
        subrepo_push "${PACKAGE}"
 | 
			
		||||
        subrepo_clean "${PACKAGE}"
 | 
			
		||||
@@ -155,22 +134,17 @@ repo_commit_pkg(){
 | 
			
		||||
 | 
			
		||||
        git prune
 | 
			
		||||
 | 
			
		||||
        check_team
 | 
			
		||||
        [[ "${cmd}" != 'commitpkg' ]] && check_team
 | 
			
		||||
    else
 | 
			
		||||
        error "Package '%s' does not exist!" "${PACKAGE}"
 | 
			
		||||
        die "Package '%s' does not exist!" "${PACKAGE}"
 | 
			
		||||
    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 ;;
 | 
			
		||||
    case "${REPO_SRC}" in
 | 
			
		||||
        core|extra|community|multilib|testing|community-testing|multilib-testing|staging|community-staging|multilib-staging|gnome-unstable|kde-unstable|trunk) return 0 ;;
 | 
			
		||||
        *) return 1 ;;
 | 
			
		||||
    esac"
 | 
			
		||||
    esac
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
load_makepkg_config
 | 
			
		||||
@@ -180,6 +154,8 @@ PACKAGE=''
 | 
			
		||||
remove=false
 | 
			
		||||
push=false
 | 
			
		||||
 | 
			
		||||
pkgbuild=trunk/PKGBUILD
 | 
			
		||||
 | 
			
		||||
cmd=${0##*/}
 | 
			
		||||
REPO_DEST=${cmd%pkg}
 | 
			
		||||
 | 
			
		||||
@@ -212,12 +188,8 @@ done
 | 
			
		||||
 | 
			
		||||
shift $(($OPTIND - 1))
 | 
			
		||||
 | 
			
		||||
if $(is_valid_repo "${REPO_SRC}");then
 | 
			
		||||
    if [[ "${cmd}" == 'commitpkg' ]];then
 | 
			
		||||
        commit_pkg
 | 
			
		||||
    else
 | 
			
		||||
        repo_commit_pkg
 | 
			
		||||
    fi
 | 
			
		||||
if $(is_valid_repo);then
 | 
			
		||||
    run
 | 
			
		||||
else
 | 
			
		||||
    error "source repository '%s' is not valid!" "${REPO_SRC}"
 | 
			
		||||
    die "source repository '%s' is not valid!" "${REPO_SRC}"
 | 
			
		||||
fi
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ prepare_artools
 | 
			
		||||
get_import_path(){
 | 
			
		||||
    local pkg="$1" import_path=
 | 
			
		||||
 | 
			
		||||
    for tree in ${TREE_NAMES_ARCH[@]};do
 | 
			
		||||
    for tree in ${ARCH_TREE[@]};do
 | 
			
		||||
        [[ -d ${TREE_DIR_ARCH}/$tree/$pkg/repos ]] && import_path=${TREE_DIR_ARCH}/$tree/$pkg
 | 
			
		||||
    done
 | 
			
		||||
    echo $import_path
 | 
			
		||||
@@ -27,14 +27,13 @@ get_import_path(){
 | 
			
		||||
 | 
			
		||||
compare_m(){
 | 
			
		||||
    local result=$(vercmp "$artixver" "$archver")
 | 
			
		||||
    local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4"
 | 
			
		||||
    if [[ $artixrepo == *testing* ]] || [[ $artixrepo == *staging* ]]; then
 | 
			
		||||
        if [[ "$archrepo" == "$artixrepo"  ]]; then
 | 
			
		||||
            msg_row "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
			
		||||
        if [[ "${a}" == "${b}"  ]]; then
 | 
			
		||||
            msg_row "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
			
		||||
        else
 | 
			
		||||
            msg_row_notify "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
			
		||||
            msg_row_notify "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
			
		||||
            if [[ -n "$archrepo" ]]; then
 | 
			
		||||
                printf "%s\n" "${archrepo%-*}:${artixrepo%-*}:$pkg" >> ${TREE_DIR_ARTIX}/pkg_moves.list
 | 
			
		||||
                printf "%s\n" "${a}:${b}:$pkg" >> ${TREE_DIR_ARTIX}/pkg_moves.list
 | 
			
		||||
            fi
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
@@ -43,19 +42,17 @@ compare_m(){
 | 
			
		||||
 | 
			
		||||
compare_u(){
 | 
			
		||||
    local result=$(vercmp "$artixver" "$archver")
 | 
			
		||||
    local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4"
 | 
			
		||||
    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
 | 
			
		||||
        msg_row_upgrade "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
			
		||||
        printf "%s\n" "${a}:$pkg" >> ${TREE_DIR_ARTIX}/pkg_upgrades.list
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
compare_d(){
 | 
			
		||||
    local result=$(vercmp "$artixver" "$archver")
 | 
			
		||||
    local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4"
 | 
			
		||||
    if [ $result -eq 1 ];then
 | 
			
		||||
        if [[ -n "$archver" ]] && [[ -n "$archrepo" ]];then
 | 
			
		||||
            msg_row_downgrade "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
			
		||||
            msg_row_downgrade "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
@@ -66,7 +63,7 @@ pre_compare(){
 | 
			
		||||
    group=${group##*/}
 | 
			
		||||
    local pkg=${pkgpath##*/}
 | 
			
		||||
    local artixrepo=$(find_repo "$pkgpath")
 | 
			
		||||
    local pkgbuild=$pkgpath/repos/$artixrepo/PKGBUILD
 | 
			
		||||
    local pkgbuild=$pkgpath/$artixrepo/PKGBUILD
 | 
			
		||||
 | 
			
		||||
    if [[ -f $pkgbuild ]];then
 | 
			
		||||
        . $pkgbuild 2>/dev/null
 | 
			
		||||
@@ -74,14 +71,19 @@ pre_compare(){
 | 
			
		||||
 | 
			
		||||
        local archpath=$(get_import_path $pkg)
 | 
			
		||||
        local archrepo=$(find_repo "${archpath}")
 | 
			
		||||
        pkgbuild=$archpath/repos/$archrepo/PKGBUILD
 | 
			
		||||
        pkgbuild=$archpath/$archrepo/PKGBUILD
 | 
			
		||||
        local node=${artixrepo%/*}
 | 
			
		||||
        local a=${archrepo#*/} b=${artixrepo#*/}
 | 
			
		||||
        a="${a%-*}"
 | 
			
		||||
 | 
			
		||||
        [[ "$node" != "$CARCH" ]] && b=${b%-*}
 | 
			
		||||
 | 
			
		||||
        if [[ -f "$pkgbuild" ]];then
 | 
			
		||||
            . $pkgbuild 2>/dev/null
 | 
			
		||||
            local archver=$(get_full_version)
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        "$func" "$artixver" "$artixrepo" "$archver" "$archrepo"
 | 
			
		||||
        "$func"
 | 
			
		||||
 | 
			
		||||
        unset pkgver epoch pkgrel artixver archver pkgbuild archpath
 | 
			
		||||
    fi
 | 
			
		||||
@@ -104,7 +106,7 @@ compare_move(){
 | 
			
		||||
 | 
			
		||||
tree_loop(){
 | 
			
		||||
    local func="$1"
 | 
			
		||||
    for tree in ${TREE_NAMES_ARTIX[@]};do
 | 
			
		||||
    for tree in ${ARTIX_TREE[@]};do
 | 
			
		||||
        local pkgs=$(find ${TREE_DIR_ARTIX}/$tree -name trunk)
 | 
			
		||||
        for package in ${pkgs[@]}; do
 | 
			
		||||
            "$func" "$package"
 | 
			
		||||
@@ -136,11 +138,11 @@ show_move_table(){
 | 
			
		||||
update_db_cache(){
 | 
			
		||||
    msg "Updating database cache"
 | 
			
		||||
    for repo in "${searchrepos[@]}"; do
 | 
			
		||||
        local cachedir=${db_cache_dir}/${LINKSDBEXT}/${ARCH}/${repo}
 | 
			
		||||
        local cachedir=${db_cache_dir}/${LINKSDBEXT}/${CARCH}/${repo}
 | 
			
		||||
        rm -rf "$cachedir"
 | 
			
		||||
        mkdir -p "$cachedir"
 | 
			
		||||
        msg2 "%s" "$repo"
 | 
			
		||||
        curl -L -s "${REPOS_MIRROR}/${repo}/os/${ARCH}/${repo}.${LINKSDBEXT}" \
 | 
			
		||||
        curl -L -s "${REPOS_MIRROR}/${repo}/os/${CARCH}/${repo}.${LINKSDBEXT}" \
 | 
			
		||||
            | bsdtar -xf - -C "$cachedir"
 | 
			
		||||
    done
 | 
			
		||||
    msg "Done"
 | 
			
		||||
@@ -149,7 +151,7 @@ update_db_cache(){
 | 
			
		||||
query_db() {
 | 
			
		||||
    for repo in "${searchrepos[@]}"; do
 | 
			
		||||
        local prefix=
 | 
			
		||||
        local db=${db_cache_dir}/${LINKSDBEXT}/${ARCH}/${repo}/
 | 
			
		||||
        local db=${db_cache_dir}/${LINKSDBEXT}/${CARCH}/${repo}/
 | 
			
		||||
        if [[ -d ${db} ]]; then
 | 
			
		||||
            while read -rd '' pkg; do
 | 
			
		||||
                read -r match
 | 
			
		||||
@@ -170,7 +172,7 @@ show_lib_table() {
 | 
			
		||||
is_db_entry() {
 | 
			
		||||
    local pkgname="$1" repo="${REPOS[$2]}"
 | 
			
		||||
 | 
			
		||||
    if [[ -d ${db_cache_dir}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then
 | 
			
		||||
    if [[ -d ${db_cache_dir}/${LINKSDBEXT}/${CARCH}/$repo/$pkgname ]];then
 | 
			
		||||
        return 0
 | 
			
		||||
    fi
 | 
			
		||||
    return 1
 | 
			
		||||
@@ -178,33 +180,23 @@ is_db_entry() {
 | 
			
		||||
 | 
			
		||||
check_db(){
 | 
			
		||||
    local pkgpath="${1%/*}"
 | 
			
		||||
    local pkg=${pkgpath##*/}
 | 
			
		||||
    local sarch=(any ${ARCH})
 | 
			
		||||
 | 
			
		||||
    for repo in ${ARCH_REPOS[@]};do
 | 
			
		||||
        for a in ${sarch[@]};do
 | 
			
		||||
    for repo in ${!REPOS[@]};do
 | 
			
		||||
        local pkgbuild=
 | 
			
		||||
        [[ -f $pkgpath/$CARCH/$repo/PKGBUILD ]] && pkgbuild=$pkgpath/$CARCH/$repo/PKGBUILD
 | 
			
		||||
        [[ -f $pkgpath/repos/$repo-$CARCH/PKGBUILD ]] && pkgbuild=$pkgpath/repos/$repo-$CARCH/PKGBUILD
 | 
			
		||||
        [[ -f $pkgpath/repos/$repo-any/PKGBUILD ]] && pkgbuild=$pkgpath/repos/$repo-any/PKGBUILD
 | 
			
		||||
 | 
			
		||||
            local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD
 | 
			
		||||
        . $pkgbuild 2>/dev/null
 | 
			
		||||
        local artixver=$(get_full_version)
 | 
			
		||||
        for name in ${pkgname[@]};do
 | 
			
		||||
 | 
			
		||||
            if [[ -f $pkgbuild ]];then
 | 
			
		||||
 | 
			
		||||
                . $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
 | 
			
		||||
            if ! is_db_entry "$name-$artixver" "$repo";then
 | 
			
		||||
                msg_row "${tableU}" "$repo" "$name" "$artixver" "false"
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
        done
 | 
			
		||||
        unset artixver pkgbuild pkgver epoch pkgname pkgbase
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -234,6 +226,21 @@ readonly table="%-18s %-18s %-25s %-27s %-27s %-10s"
 | 
			
		||||
readonly tableU="%-20s %-35s %-30s %-10s"
 | 
			
		||||
readonly tableQ="%-20s %-45s %s"
 | 
			
		||||
 | 
			
		||||
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]}
 | 
			
		||||
 
 | 
			
		||||
@@ -16,127 +16,40 @@
 | 
			
		||||
 | 
			
		||||
prepare_artools
 | 
			
		||||
 | 
			
		||||
find_cached_pkgfile() {
 | 
			
		||||
    local searchdirs=("$PKGDEST" "$PWD") results=()
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
    local search=${pkg%.*}
 | 
			
		||||
    for dir in "${searchdirs[@]}"; do
 | 
			
		||||
        [[ -d $dir ]] || continue
 | 
			
		||||
        results+=$(find "$dir" -type f -name "$search.*" ! -path '*.sig')
 | 
			
		||||
    done
 | 
			
		||||
    case ${#results[*]} in
 | 
			
		||||
        0)
 | 
			
		||||
            return 1
 | 
			
		||||
        ;;
 | 
			
		||||
        1)
 | 
			
		||||
            printf '%s\n' "${results[0]}"
 | 
			
		||||
            return 0
 | 
			
		||||
        ;;
 | 
			
		||||
        *)
 | 
			
		||||
            error 'Multiple packages found:'
 | 
			
		||||
            printf '\t%s\n' "${results[@]}" >&2
 | 
			
		||||
            return 1
 | 
			
		||||
        ;;
 | 
			
		||||
    esac
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get_pkgbasename(){
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
    local pkgbasename name ver rel arch
 | 
			
		||||
 | 
			
		||||
    pkgbasename=${pkg%.pkg.tar.?z}
 | 
			
		||||
    arch=${pkgbasename##*-}
 | 
			
		||||
    pkgbasename=${pkgbasename%-"$arch"}
 | 
			
		||||
 | 
			
		||||
    rel=${pkgbasename##*-}
 | 
			
		||||
    pkgbasename=${pkgbasename%-"$rel"}
 | 
			
		||||
 | 
			
		||||
    ver=${pkgbasename##*-}
 | 
			
		||||
 | 
			
		||||
    name=${pkgbasename%-"$ver"}
 | 
			
		||||
    echo $name
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
update_repo2(){
 | 
			
		||||
    local repo="$1"
 | 
			
		||||
    local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
 | 
			
		||||
 | 
			
		||||
    for name in ${passfiles[@]}; do
 | 
			
		||||
        if pkgfile=$(find_cached_pkgfile "$name");then
 | 
			
		||||
            info "Found: %s" "$name"
 | 
			
		||||
            if ${add_pkg};then
 | 
			
		||||
                local action='add'
 | 
			
		||||
                packages+=("$name")
 | 
			
		||||
                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
 | 
			
		||||
add(){
 | 
			
		||||
    pkg=${pkgname%.*}
 | 
			
		||||
    for ext in zst xz;do
 | 
			
		||||
        if pkgfile=$(find_cached_pkgfile "$pkg.$ext");then
 | 
			
		||||
            msg "Found: %s" "${pkgfile}"
 | 
			
		||||
            packages+=("$pkg.$ext")
 | 
			
		||||
            action='add'
 | 
			
		||||
            ln -sf "${pkgfile}"{,.sig} "$repo_path"/
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
    cd $repo_path
 | 
			
		||||
    if [[ -n $action ]]; then
 | 
			
		||||
        repo-$action -R $repo.${PKGDBEXT} ${packages[@]}
 | 
			
		||||
        ${linksdb} && links-$action $repo.${LINKSDBEXT} ${packages[@]}
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    return 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
update_repo(){
 | 
			
		||||
    local repo="$1" pkgfile ver
 | 
			
		||||
    local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
 | 
			
		||||
remove(){
 | 
			
		||||
    packages+=("$pkgname")
 | 
			
		||||
    action='remove'
 | 
			
		||||
    rm "$repo_path"/"$pkgname"*pkg.tar*
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    . PKGBUILD
 | 
			
		||||
 | 
			
		||||
    local pkgsearch=(${pkgname[@]})
 | 
			
		||||
    if check_option "debug" "y"; then
 | 
			
		||||
        pkgbase=${pkgbase:-${pkgname[@]}}
 | 
			
		||||
        pkgsearch+=("${pkgbase}-debug")
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    for name in ${pkgsearch[@]}; do
 | 
			
		||||
        pkgarch=$(get_pkg_arch "$name")
 | 
			
		||||
        ver=$(get_full_version)
 | 
			
		||||
        if pkgfile=$(find_cached_package "$name" "$ver" "$pkgarch");then
 | 
			
		||||
            local pkg=${pkgfile##*/}
 | 
			
		||||
            info "Found: %s" "$pkg"
 | 
			
		||||
            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
 | 
			
		||||
repo_action(){
 | 
			
		||||
    local packages=() action= func="$1"
 | 
			
		||||
    for pkgname in ${passfiles[@]}; do
 | 
			
		||||
        "$func"
 | 
			
		||||
    done
 | 
			
		||||
    cd $repo_path
 | 
			
		||||
    if [[ -n $action ]]; then
 | 
			
		||||
        repo-$action -R $repo.${PKGDBEXT} ${packages[@]}
 | 
			
		||||
        ${linksdb} && links-$action $repo.${LINKSDBEXT} ${packages[@]}
 | 
			
		||||
    if [[ -n "$action" ]]; then
 | 
			
		||||
        repo-"$action" -R "${dest_repo}"."${PKGDBEXT}" "${packages[@]}"
 | 
			
		||||
        ${linksdb} && links-"$action" "${dest_repo}"."${LINKSDBEXT}" "${packages[@]}"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    return 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
load_makepkg_config
 | 
			
		||||
 | 
			
		||||
add_pkg=false
 | 
			
		||||
del_pkg=false
 | 
			
		||||
sign_pkg=false
 | 
			
		||||
rm_pkg=false
 | 
			
		||||
linksdb=false
 | 
			
		||||
 | 
			
		||||
cmd=${0##*/}
 | 
			
		||||
@@ -144,24 +57,24 @@ dest_repo=${cmd#*-}
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${cmd} [options]"
 | 
			
		||||
    echo '    -d <dest>          Destination repository'
 | 
			
		||||
    echo '    -a                 Add package(s) to repository'
 | 
			
		||||
    echo '    -r                 Remove package(s) from repository'
 | 
			
		||||
    echo '    -l                 Use links db'
 | 
			
		||||
    echo '    -s                 Sign package(s)'
 | 
			
		||||
    echo '    -h                 This help'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo ''
 | 
			
		||||
    exit $1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
opts='arlsh'
 | 
			
		||||
opts='arlhd:'
 | 
			
		||||
 | 
			
		||||
while getopts "${opts}" arg; do
 | 
			
		||||
    case "${arg}" in
 | 
			
		||||
        a) add_pkg=true; del_pkg=false ;;
 | 
			
		||||
        r) del_pkg=true; add_pkg=false ;;
 | 
			
		||||
        d) dest_repo="$OPTARG" ;;
 | 
			
		||||
        a) add_pkg=true; rm_pkg=false ;;
 | 
			
		||||
        r) rm_pkg=true; add_pkg=false ;;
 | 
			
		||||
        l) linksdb=true ;;
 | 
			
		||||
        s) sign_pkg=true ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
@@ -173,8 +86,13 @@ passfiles="$@"
 | 
			
		||||
 | 
			
		||||
prepare_dir "${REPOS_ROOT}"
 | 
			
		||||
 | 
			
		||||
repo_path=${REPOS_ROOT}/${dest_repo}/os/${CARCH}
 | 
			
		||||
 | 
			
		||||
if [[ -n ${passfiles[@]} ]]; then
 | 
			
		||||
    update_repo2 "${dest_repo}"
 | 
			
		||||
else
 | 
			
		||||
    update_repo "${dest_repo}"
 | 
			
		||||
    if ${add_pkg}; then
 | 
			
		||||
        repo_action add
 | 
			
		||||
    fi
 | 
			
		||||
    if ${rm_pkg}; then
 | 
			
		||||
        repo_action remove
 | 
			
		||||
    fi
 | 
			
		||||
fi
 | 
			
		||||
 
 | 
			
		||||
@@ -377,11 +377,7 @@ if chroot-run \
 | 
			
		||||
    "$copydir" \
 | 
			
		||||
    /chrootbuild "${makepkg_args[@]}"
 | 
			
		||||
then
 | 
			
		||||
    pkgnames=()
 | 
			
		||||
    for pkgfile in "$copydir"/pkgdest/*; do
 | 
			
		||||
        pkgfile=${pkgfile##*/};
 | 
			
		||||
        pkgnames+=("${pkgfile%-*-*-*}");
 | 
			
		||||
    done
 | 
			
		||||
    mapfile -t pkgnames < <(sudo -u "$makepkg_user" bash -c 'source PKGBUILD; printf "%s\n" "${pkgname[@]}"')
 | 
			
		||||
    move_products
 | 
			
		||||
else
 | 
			
		||||
    (( ret += 1 ))
 | 
			
		||||
@@ -398,27 +394,28 @@ if (( ret != 0 )); then
 | 
			
		||||
else
 | 
			
		||||
    if (( run_checkpkg )); then
 | 
			
		||||
        msg "Running checkpkg"
 | 
			
		||||
        # sync off-site databases for up-to-date queries
 | 
			
		||||
        trap 'rm -rf $dbpath; cleanup' EXIT INT TERM QUIT
 | 
			
		||||
        dbpath=$(mktemp -d --tmpdir makechrootpkg-database.XXXXXXXXXX)
 | 
			
		||||
        mkdir -p "$dbpath"
 | 
			
		||||
        pacman -Sy --dbpath "$dbpath" --logfile /dev/null
 | 
			
		||||
 | 
			
		||||
        # query current package locations
 | 
			
		||||
        remotepkgs=($(pacman -Sddp --dbpath "$dbpath" --logfile /dev/null "${pkgnames[@]}"))
 | 
			
		||||
        if (( $? )); then
 | 
			
		||||
        mapfile -t remotepkgs < <(pacman --config "$copydir"/etc/pacman.conf \
 | 
			
		||||
            --dbpath "$copydir"/var/lib/pacman \
 | 
			
		||||
            -Sddp "${pkgnames[@]}")
 | 
			
		||||
 | 
			
		||||
        if ! wait $!; then
 | 
			
		||||
            warning "Skipped checkpkg due to missing repo packages"
 | 
			
		||||
            exit 0
 | 
			
		||||
        fi
 | 
			
		||||
        # download package files if any non-local location exists
 | 
			
		||||
        for remotepkg in "${remotepkgs[@]}"; do
 | 
			
		||||
            [[ $remotepkg == file://* ]] && continue
 | 
			
		||||
            msg2 "Downloading current versions"
 | 
			
		||||
            pacman --noconfirm -Swdd --dbpath "$dbpath" --logfile /dev/null "${pkgnames[@]}"
 | 
			
		||||
            break
 | 
			
		||||
            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
 | 
			
		||||
        sudo -u "$makepkg_user" checkpkg --rmdir --warn "${remotepkgs[@]/#file:\/\//}"
 | 
			
		||||
    fi
 | 
			
		||||
    true
 | 
			
		||||
fi
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 | 
			
		||||
. @libdir@/artools/util-base.sh
 | 
			
		||||
 | 
			
		||||
write_attr(){
 | 
			
		||||
srcyaml_write_attr(){
 | 
			
		||||
    local ident1="$1" ident2="$2" ident3="$3"
 | 
			
		||||
    local attrname=$4 attrvalues=("${@:5}")
 | 
			
		||||
 | 
			
		||||
@@ -24,47 +24,41 @@ write_attr(){
 | 
			
		||||
    attrvalues=("${attrvalues[@]%[[:space:]]}")
 | 
			
		||||
 | 
			
		||||
    case $attrname in
 | 
			
		||||
        makedepends|checkdepends|depends|provides|arch)
 | 
			
		||||
        pkgver|pkgrel|epoch|url|install|changelog)
 | 
			
		||||
            for v in ${attrvalues[@]};do
 | 
			
		||||
                Yaml+=$(write_yaml_map $ident3 "$attrname" "$v")
 | 
			
		||||
            done
 | 
			
		||||
        ;;
 | 
			
		||||
        *)
 | 
			
		||||
            Yaml+=$(write_yaml_map $ident1 "$attrname")
 | 
			
		||||
            for v in ${attrvalues[@]};do
 | 
			
		||||
                Yaml+=$(write_yaml_seq $ident2 "$v")
 | 
			
		||||
            done
 | 
			
		||||
        ;;
 | 
			
		||||
        *)
 | 
			
		||||
            for v in ${attrvalues[@]};do
 | 
			
		||||
                Yaml+=$(write_yaml_map $ident3 "$attrname" "$v")
 | 
			
		||||
            done
 | 
			
		||||
        ;;
 | 
			
		||||
    esac
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
extract_info() {
 | 
			
		||||
pkgbuild_extract_to_yaml() {
 | 
			
		||||
    local pkgname=$1 attrname=$2 isarray=$3 outvalue=
 | 
			
		||||
 | 
			
		||||
    if get_pkgbuild_attribute "$pkgname" "$attrname" "$isarray" 'outvalue'; then
 | 
			
		||||
        [[ -z $pkgname ]] && write_attr 2 4 2 "$attrname" "${outvalue[@]}"
 | 
			
		||||
        [[ -n $pkgname ]] && write_attr 4 6 2 "$attrname" "${outvalue[@]}"
 | 
			
		||||
        [[ -z $pkgname ]] && srcyaml_write_attr 2 4 2 "$attrname" "${outvalue[@]}"
 | 
			
		||||
        [[ -n $pkgname ]] && srcyaml_write_attr 4 6 2 "$attrname" "${outvalue[@]}"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_details() {
 | 
			
		||||
srcyaml_write_section_details() {
 | 
			
		||||
    local attr package_arch a
 | 
			
		||||
    local multivalued_arch_attrs=(provides depends makedepends checkdepends)
 | 
			
		||||
 | 
			
		||||
    local singlevalued=()
 | 
			
		||||
    local multivalued=(arch provides depends checkdepends)
 | 
			
		||||
 | 
			
		||||
    if [[ -z "$1" ]];then
 | 
			
		||||
        singlevalued=(pkgver pkgrel epoch)
 | 
			
		||||
        multivalued=(arch provides depends makedepends checkdepends)
 | 
			
		||||
    fi
 | 
			
		||||
    local multivalued_arch_attrs=(source provides conflicts depends replaces
 | 
			
		||||
	                              optdepends makedepends checkdepends)
 | 
			
		||||
# 	                              "${known_hash_algos[@]/%/sums}")
 | 
			
		||||
 | 
			
		||||
    for attr in "${singlevalued[@]}"; do
 | 
			
		||||
        extract_info "$1" "$attr" 0
 | 
			
		||||
        pkgbuild_extract_to_yaml "$1" "$attr" 0
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    for attr in "${multivalued[@]}"; do
 | 
			
		||||
        extract_info "$1" "$attr" 1
 | 
			
		||||
        pkgbuild_extract_to_yaml "$1" "$attr" 1
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    get_pkgbuild_attribute "$1" 'arch' 1 'package_arch'
 | 
			
		||||
@@ -73,47 +67,56 @@ write_details() {
 | 
			
		||||
        [[ $a = any ]] && continue
 | 
			
		||||
 | 
			
		||||
        for attr in "${multivalued_arch_attrs[@]}"; do
 | 
			
		||||
            extract_info "$1" "${attr}_$a" 1
 | 
			
		||||
            pkgbuild_extract_to_yaml "$1" "${attr}_$a" 1
 | 
			
		||||
        done
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_pkg_yaml(){
 | 
			
		||||
 | 
			
		||||
    Yaml=$(write_yaml_header)
 | 
			
		||||
yaml_write_global() {
 | 
			
		||||
    local singlevalued=(pkgver pkgrel epoch url install changelog) #pkgdesc
 | 
			
		||||
    local multivalued=(arch groups license checkdepends makedepends
 | 
			
		||||
                    depends provides conflicts replaces)
 | 
			
		||||
                    #noextract options backup optdepends
 | 
			
		||||
                    #source validpgpkeys "${known_hash_algos[@]/%/sums}")
 | 
			
		||||
 | 
			
		||||
    Yaml+=$(write_empty_line)
 | 
			
		||||
 | 
			
		||||
    local full=$(get_full_version)
 | 
			
		||||
 | 
			
		||||
    local ver=${full:-0}
 | 
			
		||||
 | 
			
		||||
    pkgbase=${pkgbase:-${pkgname[0]}}
 | 
			
		||||
 | 
			
		||||
    Yaml+=$(write_yaml_map 0 "pkgbase")
 | 
			
		||||
    Yaml+=$(write_yaml_map 2 "pkgname" "${pkgbase}")
 | 
			
		||||
    ${details} && write_details ''
 | 
			
		||||
    Yaml+=$(write_yaml_map 2 "fullver" "${ver}")
 | 
			
		||||
 | 
			
		||||
    Yaml+=$(write_yaml_map 2 "name" "${pkgbase:-$pkgname}")
 | 
			
		||||
    ${details} && srcyaml_write_section_details ''
 | 
			
		||||
    Yaml+=$(write_empty_line)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    Yaml+=$(write_yaml_map 0 "package")
 | 
			
		||||
yaml_write_package() {
 | 
			
		||||
    local singlevalued=(url install changelog) #pkgdesc
 | 
			
		||||
    local multivalued=(arch groups license checkdepends depends
 | 
			
		||||
                    provides conflicts replaces) #options backup optdepends)
 | 
			
		||||
 | 
			
		||||
    Yaml+=$(write_yaml_map 0 "packages")
 | 
			
		||||
    for pkg in "${pkgname[@]}"; do
 | 
			
		||||
        Yaml+=$(write_yaml_seq_map 2 "pkgname" "$pkg")
 | 
			
		||||
        ${details} && write_details "$pkg"
 | 
			
		||||
        ${details} && srcyaml_write_section_details "$pkg"
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    Yaml+=$(write_empty_line)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
yaml_write_fileinfo(){
 | 
			
		||||
    local version=$(get_full_version)
 | 
			
		||||
    pkgbase=${pkgbase:-$pkgname}
 | 
			
		||||
    Yaml+=$(write_yaml_map 0 "version" "${version:-0}")
 | 
			
		||||
    Yaml+=$(write_empty_line)
 | 
			
		||||
    local pkgfile=$(print_all_package_names)
 | 
			
		||||
 | 
			
		||||
    Yaml+=$(write_yaml_map 0 "pkgfile")
 | 
			
		||||
    Yaml+=$(write_yaml_map 0 "files")
 | 
			
		||||
    for f in ${pkgfile[@]};do
 | 
			
		||||
        Yaml+=$(write_yaml_seq 2 "${f##*/}")
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    Yaml+=$(write_empty_line)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_srcyaml(){
 | 
			
		||||
    Yaml=$(write_yaml_header)
 | 
			
		||||
    yaml_write_global
 | 
			
		||||
    yaml_write_package
 | 
			
		||||
    yaml_write_fileinfo
 | 
			
		||||
    printf '%s' "${Yaml}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -139,11 +142,13 @@ done
 | 
			
		||||
 | 
			
		||||
shift $(( $OPTIND - 1 ))
 | 
			
		||||
 | 
			
		||||
[[ -f "$1"/PKGBUILD ]] || die "%s/PKGBUILD does not exist!" "$1"
 | 
			
		||||
PACKAGE="$1"/PKGBUILD; shift
 | 
			
		||||
srcpath=$(readlink -f "$1")
 | 
			
		||||
 | 
			
		||||
[[ -f "$srcpath"/PKGBUILD ]] || die "%s/PKGBUILD does not exist!" "$srcpath"
 | 
			
		||||
PACKAGE="$srcpath"/PKGBUILD; shift
 | 
			
		||||
 | 
			
		||||
. "$PACKAGE"
 | 
			
		||||
 | 
			
		||||
load_makepkg_config
 | 
			
		||||
 | 
			
		||||
write_pkg_yaml
 | 
			
		||||
write_srcyaml
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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
 | 
			
		||||
        msg "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
 | 
			
		||||
        msg2 "Found: %s" "${pkgfile}"
 | 
			
		||||
        [[ -e "${pkgfile}".sig ]] && rm "${pkgfile}".sig
 | 
			
		||||
        sign_pkg "${pkgfile}"
 | 
			
		||||
    fi
 | 
			
		||||
done
 | 
			
		||||
@@ -9,29 +9,28 @@
 | 
			
		||||
 | 
			
		||||
# TREE_DIR_ARTIX=${WORKSPACE_DIR}/artixlinux
 | 
			
		||||
 | 
			
		||||
# customize buildtree, packages and community should be enabled
 | 
			
		||||
# customize buildtree; uncomment to include
 | 
			
		||||
# TREE_NAMES_ARTIX=(
 | 
			
		||||
#         packages
 | 
			
		||||
#         community
 | 
			
		||||
#         packages-kernel
 | 
			
		||||
#         packages-openrc
 | 
			
		||||
#         packages-runit
 | 
			
		||||
#         packages-s6
 | 
			
		||||
#         packages-media
 | 
			
		||||
#         packages-xorg
 | 
			
		||||
#         packages-python
 | 
			
		||||
#         packages-perl
 | 
			
		||||
#         packages-java
 | 
			
		||||
#         packages-qt5
 | 
			
		||||
#         packages-devel
 | 
			
		||||
#         packages-ruby
 | 
			
		||||
#         packages-gtk
 | 
			
		||||
#         packages-kf5
 | 
			
		||||
#         packages-plasma
 | 
			
		||||
#         packages-kde
 | 
			
		||||
#         packages-gnome
 | 
			
		||||
#         packages-cinnamon
 | 
			
		||||
#         packages-lxqt
 | 
			
		||||
#         packages-mate
 | 
			
		||||
#         packages-kde
 | 
			
		||||
#         packages-xfce
 | 
			
		||||
#         packages-wm
 | 
			
		||||
#         packages-devel
 | 
			
		||||
#         packages-lib32
 | 
			
		||||
#         packages-qt6
 | 
			
		||||
# )
 | 
			
		||||
 | 
			
		||||
# HOST_TREE_ARCH=git://git.archlinux.org/svntogit
 | 
			
		||||
 
 | 
			
		||||
@@ -97,25 +97,3 @@ Include = /etc/pacman.d/mirrorlist
 | 
			
		||||
#[custom]
 | 
			
		||||
#SigLevel = Optional TrustAll
 | 
			
		||||
#Server = file:///home/custompkgs
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# ARCHLINUX
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
#[testing]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[extra]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[community-testing]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[multilib-testing]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[multilib]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										111
									
								
								data/pacman/pacman-docker.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								data/pacman/pacman-docker.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,111 @@
 | 
			
		||||
#
 | 
			
		||||
# /etc/pacman.conf
 | 
			
		||||
#
 | 
			
		||||
# See the pacman.conf(5) manpage for option and repository directives
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# GENERAL OPTIONS
 | 
			
		||||
#
 | 
			
		||||
[options]
 | 
			
		||||
# The following paths are commented out with their default values listed.
 | 
			
		||||
# If you wish to use different paths, uncomment and update the paths.
 | 
			
		||||
#RootDir     = /
 | 
			
		||||
#DBPath      = /var/lib/pacman/
 | 
			
		||||
#CacheDir    = /var/cache/pacman/pkg/
 | 
			
		||||
#LogFile     = /var/log/pacman.log
 | 
			
		||||
#GPGDir      = /etc/pacman.d/gnupg/
 | 
			
		||||
#HookDir     = /etc/pacman.d/hooks/
 | 
			
		||||
HoldPkg     = pacman glibc
 | 
			
		||||
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
 | 
			
		||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
 | 
			
		||||
#CleanMethod = KeepInstalled
 | 
			
		||||
Architecture = auto
 | 
			
		||||
 | 
			
		||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
 | 
			
		||||
#IgnorePkg   =
 | 
			
		||||
#IgnoreGroup =
 | 
			
		||||
 | 
			
		||||
#NoUpgrade   =
 | 
			
		||||
NoExtract  = usr/share/help/* !usr/share/help/en*
 | 
			
		||||
NoExtract  = usr/share/gtk-doc/html/* usr/share/doc/*
 | 
			
		||||
NoExtract  = usr/share/locale/* usr/share/X11/locale/* usr/share/i18n/*
 | 
			
		||||
NoExtract   = !*locale*/en*/* !usr/share/i18n/charmaps/UTF-8.gz !usr/share/*locale*/locale.*
 | 
			
		||||
NoExtract   = !usr/share/*locales/en_?? !usr/share/*locales/i18n* !usr/share/*locales/iso*
 | 
			
		||||
NoExtract   = !usr/share/*locales/trans*
 | 
			
		||||
NoExtract  = usr/share/man/* usr/share/info/*
 | 
			
		||||
NoExtract  = usr/share/vim/vim*/lang/*
 | 
			
		||||
 | 
			
		||||
# Misc options
 | 
			
		||||
#UseSyslog
 | 
			
		||||
#Color
 | 
			
		||||
#TotalDownload
 | 
			
		||||
CheckSpace
 | 
			
		||||
VerbosePkgLists
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# By default, pacman accepts packages signed by keys that its local keyring
 | 
			
		||||
# trusts (see pacman-key and its man page), as well as unsigned packages.
 | 
			
		||||
SigLevel    = Required DatabaseOptional
 | 
			
		||||
LocalFileSigLevel = Optional
 | 
			
		||||
#RemoteFileSigLevel = Required
 | 
			
		||||
 | 
			
		||||
# NOTE: You must run `pacman-key --init` before first using pacman; the local
 | 
			
		||||
# keyring can then be populated with the keys of all official Artix Linux
 | 
			
		||||
# packagers with `pacman-key --populate archlinux artix`.
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# REPOSITORIES
 | 
			
		||||
#   - can be defined here or included from another file
 | 
			
		||||
#   - pacman will search repositories in the order defined here
 | 
			
		||||
#   - local/custom mirrors can be added here or in separate files
 | 
			
		||||
#   - repositories listed first will take precedence when packages
 | 
			
		||||
#     have identical names, regardless of version number
 | 
			
		||||
#   - URLs will have $repo replaced by the name of the current repo
 | 
			
		||||
#   - URLs will have $arch replaced by the name of the architecture
 | 
			
		||||
#
 | 
			
		||||
# Repository entries are of the format:
 | 
			
		||||
#       [repo-name]
 | 
			
		||||
#       Server = ServerName
 | 
			
		||||
#       Include = IncludePath
 | 
			
		||||
#
 | 
			
		||||
# The header [repo-name] is crucial - it must be present and
 | 
			
		||||
# uncommented to enable the repo.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# The gremlins repositories are disabled by default. To enable, uncomment the
 | 
			
		||||
# repo name header and Include lines. You can add preferred servers immediately
 | 
			
		||||
# after the header, and they will be used before the default mirrors.
 | 
			
		||||
 | 
			
		||||
[system]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist
 | 
			
		||||
 | 
			
		||||
[world]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist
 | 
			
		||||
 | 
			
		||||
[galaxy]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist
 | 
			
		||||
 | 
			
		||||
# If you want to run 32 bit applications on your x86_64 system,
 | 
			
		||||
# enable the lib32 repositories as required here.
 | 
			
		||||
 | 
			
		||||
#[lib32]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist
 | 
			
		||||
 | 
			
		||||
# An example of a custom package repository.  See the pacman manpage for
 | 
			
		||||
# tips on creating your own repositories.
 | 
			
		||||
#[custom]
 | 
			
		||||
#SigLevel = Optional TrustAll
 | 
			
		||||
#Server = file:///home/custompkgs
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# ARCHLINUX
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
#[extra]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[community]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[multilib]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
@@ -109,37 +109,3 @@ Include = /etc/pacman.d/mirrorlist
 | 
			
		||||
#[custom]
 | 
			
		||||
#SigLevel = Optional TrustAll
 | 
			
		||||
#Server = file:///home/custompkgs
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# ARCHLINUX
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
[gnome-unstable]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[staging]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[testing]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[extra]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community-staging]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community-testing]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[multilib-staging]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[multilib-testing]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[multilib]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 
 | 
			
		||||
@@ -106,34 +106,3 @@ Include = /etc/pacman.d/mirrorlist
 | 
			
		||||
#[custom]
 | 
			
		||||
#SigLevel = Optional TrustAll
 | 
			
		||||
#Server = file:///home/custompkgs
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# ARCHLINUX
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
[staging]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[testing]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[extra]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community-staging]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community-testing]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[multilib-staging]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[multilib-testing]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[multilib]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 
 | 
			
		||||
@@ -97,25 +97,3 @@ Include = /etc/pacman.d/mirrorlist
 | 
			
		||||
#[custom]
 | 
			
		||||
#SigLevel = Optional TrustAll
 | 
			
		||||
#Server = file:///home/custompkgs
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# ARCHLINUX
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
[testing]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[extra]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community-testing]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[multilib-testing]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[multilib]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 
 | 
			
		||||
@@ -109,37 +109,3 @@ Include = /etc/pacman.d/mirrorlist
 | 
			
		||||
#[custom]
 | 
			
		||||
#SigLevel = Optional TrustAll
 | 
			
		||||
#Server = file:///home/custompkgs
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# ARCHLINUX
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
[kde-unstable]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[staging]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[testing]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[extra]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community-staging]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community-testing]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[multilib-staging]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[multilib-testing]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[multilib]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 
 | 
			
		||||
@@ -106,34 +106,3 @@ Include = /etc/pacman.d/mirrorlist
 | 
			
		||||
#[custom]
 | 
			
		||||
#SigLevel = Optional TrustAll
 | 
			
		||||
#Server = file:///home/custompkgs
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# ARCHLINUX
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
[staging]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[testing]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[extra]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community-staging]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community-testing]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[multilib-staging]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[multilib-testing]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[multilib]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 
 | 
			
		||||
@@ -97,25 +97,3 @@ Include = /etc/pacman.d/mirrorlist
 | 
			
		||||
#[custom]
 | 
			
		||||
#SigLevel = Optional TrustAll
 | 
			
		||||
#Server = file:///home/custompkgs
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# ARCHLINUX
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
[testing]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[extra]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community-testing]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[multilib-testing]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[multilib]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 
 | 
			
		||||
@@ -97,25 +97,3 @@ Include = /etc/pacman.d/mirrorlist
 | 
			
		||||
#[custom]
 | 
			
		||||
#SigLevel = Optional TrustAll
 | 
			
		||||
#Server = file:///home/custompkgs
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# ARCHLINUX
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
#[testing]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[extra]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[community-testing]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[community]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
#[multilib-testing]
 | 
			
		||||
#Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 | 
			
		||||
[multilib]
 | 
			
		||||
Include = /etc/pacman.d/mirrorlist-arch
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,9 @@ add_svc_runit(){
 | 
			
		||||
add_svc_s6(){
 | 
			
		||||
    local mnt="$1" names="$2" valid="" rlvl="${3:-default}"
 | 
			
		||||
    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"
 | 
			
		||||
            valid=${valid:-}${valid:+' '}${svc}
 | 
			
		||||
        fi
 | 
			
		||||
 
 | 
			
		||||
@@ -15,9 +15,8 @@
 | 
			
		||||
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
 | 
			
		||||
    for fw in intel amd; do
 | 
			
		||||
        cp $src/boot/$fw-ucode.img $dest/$fw-ucode.img
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    cp $src/boot/memtest86+/memtest.bin $dest/memtest
 | 
			
		||||
 
 | 
			
		||||
@@ -103,83 +103,3 @@ config_tree(){
 | 
			
		||||
        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"
 | 
			
		||||
# }
 | 
			
		||||
 
 | 
			
		||||
@@ -27,16 +27,6 @@ create_repo() {
 | 
			
		||||
    echo
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
delete_repo() {
 | 
			
		||||
    local pkg="$1" org="$2"
 | 
			
		||||
    local gitname=$(get_compliant_name "$pkg")
 | 
			
		||||
 | 
			
		||||
    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"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get_team_id() {
 | 
			
		||||
    local org="$1" team="$2"
 | 
			
		||||
    local id=$(curl -s -X GET "${GIT_URL}/api/v1/orgs/$org/teams/search?q=$team&access_token=${GIT_TOKEN}" \
 | 
			
		||||
@@ -44,13 +34,6 @@ get_team_id() {
 | 
			
		||||
    echo $id
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
list_team_repos() {
 | 
			
		||||
    local id="$1"
 | 
			
		||||
    local result=$(curl -X GET "${GIT_URL}/api/v1/teams/$id/repos?access_token=${GIT_TOKEN}" \
 | 
			
		||||
        -H  "accept: application/json" | jq '.[]' | jq -r '.name')
 | 
			
		||||
    echo ${result[@]}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
add_repo_to_team() {
 | 
			
		||||
    local pkg="$1" org="$2" team="$3"
 | 
			
		||||
    local id=$(get_team_id "$org" "$team")
 | 
			
		||||
@@ -72,40 +55,3 @@ remove_repo_from_team() {
 | 
			
		||||
    curl -s -X DELETE "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
 | 
			
		||||
        -H  "accept: application/json"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
add_user_to_team() {
 | 
			
		||||
    local org="$1" team="$2" user="$3"
 | 
			
		||||
    local id=$(get_team_id "$org" "$team")
 | 
			
		||||
 | 
			
		||||
    msg2 "Adding [%s] to team (%s) in org (%s)" "$user" "$team" "$org"
 | 
			
		||||
 | 
			
		||||
    curl -X PUT "${GIT_URL}/api/v1/teams/$id/members/$user?access_token=${GIT_TOKEN}" \
 | 
			
		||||
        -H  "accept: application/json"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
remove_user_from_team() {
 | 
			
		||||
    local org="$1" team="$2" user="$3"
 | 
			
		||||
    local id=$(get_team_id "$org" "$team")
 | 
			
		||||
 | 
			
		||||
    msg2 "Removing [%s] from team (%s) in org (%s)" "$user" "$team" "$org"
 | 
			
		||||
 | 
			
		||||
    curl -X DELETE "${GIT_URL}/api/v1/teams/$id/members/$user?access_token=${GIT_TOKEN}" \
 | 
			
		||||
        -H  "accept: application/json"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
create_team() {
 | 
			
		||||
    local org="$1" name="$2"
 | 
			
		||||
    local json="{  \"can_create_org_repo\": true,  \"description\": \"\",  \"includes_all_repositories\": false,  \"name\": \"$name\",  \"permission\": \"write\",  \"units\": [    \"repo.code\",    \"repo.issues\",    \"repo.ext_issues\",    \"repo.wiki\",    \"repo.pulls\",    \"repo.releases\",    \"repo.ext_wiki\"  ]}"
 | 
			
		||||
 | 
			
		||||
    curl -X POST "${GIT_URL}/api/v1/orgs/$org/teams?access_token=${GIT_TOKEN}" \
 | 
			
		||||
        -H  "accept: application/json" \
 | 
			
		||||
        -H  "Content-Type: application/json" \
 | 
			
		||||
        -d "$json"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
delete_team() {
 | 
			
		||||
    local org="$1" team="$2"
 | 
			
		||||
    local id=$(get_team_id "$org" "$team")
 | 
			
		||||
    curl -X DELETE "${GIT_URL}/api/v1/teams/$id?access_token=${GIT_TOKEN}" \
 | 
			
		||||
        -H  "accept: application/json"
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -33,7 +33,7 @@ subrepo_init() {
 | 
			
		||||
subrepo_push(){
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
    msg2 "Subrepo push (%s)" "$pkg"
 | 
			
		||||
    git subrepo push "$pkg"
 | 
			
		||||
    git subrepo push "$pkg" || die "%s push failed" "$pkg"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
subrepo_clean(){
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										130
									
								
								lib/pkg/util.sh
									
									
									
									
									
								
							
							
						
						
									
										130
									
								
								lib/pkg/util.sh
									
									
									
									
									
								
							@@ -14,80 +14,18 @@
 | 
			
		||||
 | 
			
		||||
shopt -s extglob
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
ARCH_REPOS=(
 | 
			
		||||
    core
 | 
			
		||||
    extra
 | 
			
		||||
    community
 | 
			
		||||
    multilib
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
get_compliant_name(){
 | 
			
		||||
    local gitname="$1"
 | 
			
		||||
    case $gitname in
 | 
			
		||||
        *+) gitname=${gitname//+/plus}
 | 
			
		||||
    case "$gitname" in
 | 
			
		||||
        *+) gitname=${gitname//+/plus} ;;
 | 
			
		||||
        *+*) gitname=${gitname//+/-} ;;
 | 
			
		||||
    esac
 | 
			
		||||
    echo $gitname
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get_group_packages(){
 | 
			
		||||
    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_group(){
 | 
			
		||||
    local pkg="$1" fallback="${2##*/}" tree=
 | 
			
		||||
    eval "case $pkg in
 | 
			
		||||
        $(get_group_packages kernel)) tree=packages-kernel ;;
 | 
			
		||||
        $(get_group_packages python)) tree=packages-python ;;
 | 
			
		||||
        $(get_group_packages perl)) tree=packages-perl ;;
 | 
			
		||||
        $(get_group_packages ruby)) tree=packages-ruby ;;
 | 
			
		||||
        $(get_group_packages openrc)) tree=packages-openrc ;;
 | 
			
		||||
        $(get_group_packages runit)) tree=packages-runit ;;
 | 
			
		||||
        $(get_group_packages s6)) tree=packages-s6 ;;
 | 
			
		||||
        $(get_group_packages media)) tree=packages-media ;;
 | 
			
		||||
        $(get_group_packages xorg)) tree=packages-xorg ;;
 | 
			
		||||
        $(get_group_packages qt5)) tree=packages-qt5 ;;
 | 
			
		||||
        $(get_group_packages gtk)) tree=packages-gtk ;;
 | 
			
		||||
        $(get_group_packages java)) tree=packages-java ;;
 | 
			
		||||
        $(get_group_packages haskell)) tree=packages-haskell ;;
 | 
			
		||||
        $(get_group_packages devel)) tree=packages-devel ;;
 | 
			
		||||
        $(get_group_packages lxqt)) tree=packages-lxqt ;;
 | 
			
		||||
        $(get_group_packages cinnamon)) tree=packages-cinnamon ;;
 | 
			
		||||
        $(get_group_packages kde)) tree=packages-kde ;;
 | 
			
		||||
        $(get_group_packages gnome)) tree=packages-gnome ;;
 | 
			
		||||
        $(get_group_packages mate)) tree=packages-mate ;;
 | 
			
		||||
        $(get_group_packages xfce)) tree=packages-xfce ;;
 | 
			
		||||
        *) tree=$fallback ;;
 | 
			
		||||
    esac"
 | 
			
		||||
    echo $tree
 | 
			
		||||
    echo "$gitname"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
set_arch_repos(){
 | 
			
		||||
    local x="$1" y="$2" z="$3"
 | 
			
		||||
    ARCH_REPOS=(core extra community multilib)
 | 
			
		||||
 | 
			
		||||
    $x && ARCH_REPOS+=(testing community-testing multilib-testing)
 | 
			
		||||
    $y && ARCH_REPOS+=(staging community-staging multilib-staging)
 | 
			
		||||
@@ -95,66 +33,28 @@ set_arch_repos(){
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
find_repo(){
 | 
			
		||||
    local pkg="$1" repo=
 | 
			
		||||
    local pkg="$1" repo= pkgarch="${2:-${CARCH}}"
 | 
			
		||||
    for r in ${ARCH_REPOS[@]};do
 | 
			
		||||
        [[ -f $pkg/repos/$r-${ARCH}/PKGBUILD ]] && repo=$r-${ARCH}
 | 
			
		||||
        [[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any
 | 
			
		||||
        [[ -f $pkg/repos/$r-$pkgarch/PKGBUILD ]] && repo=repos/"$r-$pkgarch"
 | 
			
		||||
        [[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=repos/"$r"-any
 | 
			
		||||
        [[ -f $pkg/$pkgarch/$r/PKGBUILD ]] && repo="$pkgarch/$r"
 | 
			
		||||
    done
 | 
			
		||||
    echo $repo
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
find_pkg(){
 | 
			
		||||
    local searchdir="$1" pkg="$2"
 | 
			
		||||
    local result=$(find $searchdir -mindepth 2 -maxdepth 2 -type d -name "$pkg")
 | 
			
		||||
    echo $result
 | 
			
		||||
    local result=$(find "$searchdir" -mindepth 2 -maxdepth 2 -type d -name "$pkg")
 | 
			
		||||
    echo "$result"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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() {
 | 
			
		||||
find_cached_pkgfile() {
 | 
			
		||||
    local searchdirs=("$PKGDEST" "$PWD") results=()
 | 
			
		||||
    local targetname=$1 targetver=$2 targetarch=$3
 | 
			
		||||
    local dir pkg pkgbasename name ver rel arch r results
 | 
			
		||||
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
    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
 | 
			
		||||
        [[ -d "$dir" ]] || continue
 | 
			
		||||
        [[ -e "$dir/$pkg" ]] && results+=("$dir/$pkg")
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    case ${#results[*]} in
 | 
			
		||||
        0)
 | 
			
		||||
            return 1
 | 
			
		||||
 
 | 
			
		||||
@@ -36,36 +36,37 @@ load_pkg_config(){
 | 
			
		||||
 | 
			
		||||
    TREE_DIR_ARTIX=${TREE_DIR_ARTIX:-"${WORKSPACE_DIR}/artixlinux"}
 | 
			
		||||
 | 
			
		||||
    ARTIX_TREE=(
 | 
			
		||||
        packages community
 | 
			
		||||
        packages-{gfx,gtk,media,net,qt5,xorg}
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    local dev_tree=(packages-{python,perl,java,ruby})
 | 
			
		||||
 | 
			
		||||
    local init_tree=(packages-{openrc,runit,s6})
 | 
			
		||||
 | 
			
		||||
    local desktop_tree=(
 | 
			
		||||
        packages-{kf5,plasma,kde,qt6}
 | 
			
		||||
        packages-{lxqt,gnome,cinnamon,mate,xfce,wm}
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    [[ -z ${TREE_NAMES_ARTIX[@]} ]] && \
 | 
			
		||||
    TREE_NAMES_ARTIX=(
 | 
			
		||||
            packages
 | 
			
		||||
            community
 | 
			
		||||
            packages-kernel
 | 
			
		||||
            packages-openrc
 | 
			
		||||
            packages-runit
 | 
			
		||||
            packages-s6
 | 
			
		||||
            packages-xorg
 | 
			
		||||
            packages-python
 | 
			
		||||
            packages-perl
 | 
			
		||||
            packages-java
 | 
			
		||||
            packages-qt5
 | 
			
		||||
            packages-devel
 | 
			
		||||
            packages-ruby
 | 
			
		||||
            packages-gtk
 | 
			
		||||
            packages-gnome
 | 
			
		||||
            packages-cinnamon
 | 
			
		||||
            packages-lxqt
 | 
			
		||||
            packages-mate
 | 
			
		||||
            packages-kde
 | 
			
		||||
            packages-xfce
 | 
			
		||||
#             packages-haskell
 | 
			
		||||
        packages-kernel
 | 
			
		||||
        "${init_tree[@]}"
 | 
			
		||||
        "${dev_tree[@]}"
 | 
			
		||||
        "${desktop_tree[@]}"
 | 
			
		||||
        packages-devel
 | 
			
		||||
        packages-lib32
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    ARTIX_TREE+=("${TREE_NAMES_ARTIX[@]}")
 | 
			
		||||
 | 
			
		||||
    HOST_TREE_ARTIX=${HOST_TREE_ARTIX:-"gitea@${GIT_DOMAIN}:artixlinux"}
 | 
			
		||||
 | 
			
		||||
    TREE_DIR_ARCH=${TREE_DIR_ARCH:-"${WORKSPACE_DIR}/archlinux"}
 | 
			
		||||
 | 
			
		||||
    TREE_NAMES_ARCH=(packages community)
 | 
			
		||||
    ARCH_TREE=(packages community)
 | 
			
		||||
 | 
			
		||||
    HOST_TREE_ARCH=${HOST_TREE_ARCH:-'git://git.archlinux.org/svntogit'}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user