forked from artix/artools
		
	Compare commits
	
		
			27 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 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.19
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
@@ -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) ;;
 | 
			
		||||
 
 | 
			
		||||
@@ -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/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -111,23 +111,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,40 +133,30 @@ from_arch(){
 | 
			
		||||
    [[ -z $srcpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
			
		||||
 | 
			
		||||
    local repo=$(find_repo "$srcpath")
 | 
			
		||||
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
        . $artixpath/PKGBUILD 2>/dev/null
 | 
			
		||||
        local artixver=$(get_full_version)
 | 
			
		||||
 | 
			
		||||
        msg2 "Artix Version: %s" "$artixver"
 | 
			
		||||
    else
 | 
			
		||||
        artixpath=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk
 | 
			
		||||
        subrepo_new "${group}" "${repo%-*}"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    msg "Sync (%s) from Arch [%s] to Artix [%s]" "${PACKAGE}" "${archpath##*archlinux/}" "${artixpath##*artixlinux/}"
 | 
			
		||||
    if [[ -f "$artixpath"/.gitrepo ]]; then
 | 
			
		||||
        artixpath="$artixpath"/trunk
 | 
			
		||||
 | 
			
		||||
        if [[ -d "$artixpath" ]];then
 | 
			
		||||
            sync_pkg "$archpath" "$artixpath"
 | 
			
		||||
            patch_pkg "$artixpath"
 | 
			
		||||
        fi
 | 
			
		||||
    else
 | 
			
		||||
        die "Package '%s' does not exist!" "${PACKAGE}"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
    archpath=$archpath/$repo
 | 
			
		||||
    msg2 "repo: %s" "$repo"
 | 
			
		||||
    show_deps "$archpath"
 | 
			
		||||
}
 | 
			
		||||
@@ -180,7 +164,7 @@ view_build(){
 | 
			
		||||
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##*/}"
 | 
			
		||||
 | 
			
		||||
@@ -231,7 +215,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,44 @@
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
        if [[ -d repos/"${REPO_SRC}-$CARCH" ]] || [[ -d repos/"${REPO_SRC}"-any ]]; then
 | 
			
		||||
            mkdir "$CARCH/${REPO_SRC}"
 | 
			
		||||
            local old_src="${REPO_SRC}-$CARCH"
 | 
			
		||||
            [[ "$arch" == any ]] && old_src="${REPO_SRC}"-any
 | 
			
		||||
            cp repos/"$old_src"/* "$CARCH/${REPO_SRC}"/
 | 
			
		||||
            git add $CARCH/${REPO_SRC}
 | 
			
		||||
        fi
 | 
			
		||||
        if [[ -d repos/"${REPO_DEST}-$CARCH" ]] || [[ -d repos/"${REPO_DEST}"-any ]]; then
 | 
			
		||||
            mkdir "$CARCH/${REPO_DEST}"
 | 
			
		||||
            local old_dest="${REPO_DEST}-$CARCH"
 | 
			
		||||
            [[ "$arch" == any ]] && old_dest="${REPO_DEST}"-any
 | 
			
		||||
            cp repos/"$old_dest"/* "$CARCH/${REPO_DEST}"/
 | 
			
		||||
            git add $CARCH/${REPO_DEST}
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        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 +61,80 @@ check_team(){
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
config() {
 | 
			
		||||
    [[ "${REPO_SRC}" != 'trunk' ]] && pkgbuild="$CARCH/${REPO_SRC}"/PKGBUILD
 | 
			
		||||
 | 
			
		||||
    if [[ ! -f "$pkgbuild" ]]; then
 | 
			
		||||
        pkgbuild=repos/"${REPO_SRC}-${CARCH}"/PKGBUILD
 | 
			
		||||
        [[ -f repos/"${REPO_SRC}"-any/PKGBUILD ]] && pkgbuild=repos/"${REPO_SRC}"-any/PKGBUILD
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
commit_pkg() {
 | 
			
		||||
    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}")
 | 
			
		||||
 | 
			
		||||
        . $pkgbuild
 | 
			
		||||
        [[ $arch == 'any' ]] && CARCH=any
 | 
			
		||||
 | 
			
		||||
        local version=$(get_full_version)
 | 
			
		||||
 | 
			
		||||
        local commit_msg=""
 | 
			
		||||
 | 
			
		||||
    if ${remove};then
 | 
			
		||||
            local action='remove'
 | 
			
		||||
        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"
 | 
			
		||||
            local pkg="${PACKAGE}-$(get_full_version)"
 | 
			
		||||
 | 
			
		||||
            prepare_commit
 | 
			
		||||
 | 
			
		||||
            git rm -r "$CARCH/${REPO_SRC}"
 | 
			
		||||
        fi
 | 
			
		||||
            commit_msg="[${REPO_SRC}] '$pkg' ${action}"
 | 
			
		||||
        local commit_msg="[${REPO_SRC}] '$pkg' ${action}"
 | 
			
		||||
        msg "Action: %s" "$commit_msg"
 | 
			
		||||
    else
 | 
			
		||||
            local action='modify'
 | 
			
		||||
            commit_msg="[${REPO_SRC}] '${PACKAGE}-$version' ${action}"
 | 
			
		||||
        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"
 | 
			
		||||
 | 
			
		||||
        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}"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
repo_commit_pkg() {
 | 
			
		||||
    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}")
 | 
			
		||||
 | 
			
		||||
        . $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 [[ "${REPO_SRC}" == 'trunk' ]];then
 | 
			
		||||
        action='add'
 | 
			
		||||
        prepare_commit
 | 
			
		||||
        cp trunk/* "$CARCH/${REPO_DEST}"/
 | 
			
		||||
    else
 | 
			
		||||
            local action='move'
 | 
			
		||||
            local src="${REPO_SRC}-$CARCH" dest="${REPO_DEST}-$CARCH"
 | 
			
		||||
        action='move'
 | 
			
		||||
        [[ ! -f $pkgbuild ]] && die "%s does not exist!" "$pkgbuild"
 | 
			
		||||
 | 
			
		||||
            [[ ! -f repos/$src/PKGBUILD ]] && die "%s does not exist!" "repos/$src/PKGBUILD"
 | 
			
		||||
            prepare_commit "$dest"
 | 
			
		||||
        prepare_commit
 | 
			
		||||
 | 
			
		||||
            cp repos/$src/* repos/$dest/
 | 
			
		||||
            git rm -r repos/$src
 | 
			
		||||
        cp "$CARCH/${REPO_SRC}"/* "$CARCH/${REPO_DEST}"/
 | 
			
		||||
        git rm -r "$CARCH/${REPO_SRC}"
 | 
			
		||||
    fi
 | 
			
		||||
        local commit_msg="[${REPO_SRC}] -> [${REPO_DEST}] '${PACKAGE}-$version' ${action}"
 | 
			
		||||
    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}
 | 
			
		||||
        config
 | 
			
		||||
        . $pkgbuild
 | 
			
		||||
 | 
			
		||||
        if [[ "${cmd}" == 'commitpkg' ]];then
 | 
			
		||||
            commit_pkg
 | 
			
		||||
        else
 | 
			
		||||
            repo_commit_pkg
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        cd ${group}
 | 
			
		||||
 | 
			
		||||
        ${push} && pull_tree "${group##*/}" "$head"
 | 
			
		||||
 | 
			
		||||
#         subrepo_pull "${PACKAGE}"
 | 
			
		||||
        subrepo_push "${PACKAGE}"
 | 
			
		||||
        subrepo_clean "${PACKAGE}"
 | 
			
		||||
@@ -155,22 +143,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 +163,8 @@ PACKAGE=''
 | 
			
		||||
remove=false
 | 
			
		||||
push=false
 | 
			
		||||
 | 
			
		||||
pkgbuild=trunk/PKGBUILD
 | 
			
		||||
 | 
			
		||||
cmd=${0##*/}
 | 
			
		||||
REPO_DEST=${cmd%pkg}
 | 
			
		||||
 | 
			
		||||
@@ -212,12 +197,8 @@ done
 | 
			
		||||
 | 
			
		||||
shift $(($OPTIND - 1))
 | 
			
		||||
 | 
			
		||||
if $(is_valid_repo "${REPO_SRC}");then
 | 
			
		||||
    if [[ "${cmd}" == 'commitpkg' ]];then
 | 
			
		||||
        commit_pkg
 | 
			
		||||
if $(is_valid_repo);then
 | 
			
		||||
    run
 | 
			
		||||
else
 | 
			
		||||
        repo_commit_pkg
 | 
			
		||||
    fi
 | 
			
		||||
else
 | 
			
		||||
    error "source repository '%s' is not valid!" "${REPO_SRC}"
 | 
			
		||||
    die "source repository '%s' is not valid!" "${REPO_SRC}"
 | 
			
		||||
fi
 | 
			
		||||
 
 | 
			
		||||
@@ -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#*-}"
 | 
			
		||||
            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
 | 
			
		||||
@@ -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"
 | 
			
		||||
@@ -170,29 +172,16 @@ 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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
check_db(){
 | 
			
		||||
    local pkgpath="${1%/*}"
 | 
			
		||||
    local pkg=${pkgpath##*/}
 | 
			
		||||
    local sarch=(any ${ARCH})
 | 
			
		||||
 | 
			
		||||
    for repo in ${ARCH_REPOS[@]};do
 | 
			
		||||
        for a in ${sarch[@]};do
 | 
			
		||||
 | 
			
		||||
            local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD
 | 
			
		||||
 | 
			
		||||
            if [[ -f $pkgbuild ]];then
 | 
			
		||||
 | 
			
		||||
check_pkg_in_db() {
 | 
			
		||||
    . $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
 | 
			
		||||
@@ -201,10 +190,34 @@ check_db(){
 | 
			
		||||
        if ! $is_entry;then
 | 
			
		||||
            msg_row "${tableU}" "$repo" "$name" "$artixver" "$is_entry"
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
    done
 | 
			
		||||
    unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase
 | 
			
		||||
            fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
check_new() {
 | 
			
		||||
    local func="$1"
 | 
			
		||||
    local pkgbuild=$pkgpath/$CARCH/$repo/PKGBUILD
 | 
			
		||||
    "$func"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
check_old() {
 | 
			
		||||
    local func="$1"
 | 
			
		||||
    for a in any ${CARCH};do
 | 
			
		||||
        local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD
 | 
			
		||||
        "$func"
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
check_db(){
 | 
			
		||||
    local pkgpath="${1%/*}"
 | 
			
		||||
 | 
			
		||||
    for repo in ${!REPOS[@]};do
 | 
			
		||||
        if [[ -f $pkgpath/$CARCH/$repo/PKGBUILD ]]; then
 | 
			
		||||
            check_new "check_pkg_in_db"
 | 
			
		||||
        else
 | 
			
		||||
            check_old "check_pkg_in_db"
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -234,6 +247,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')
 | 
			
		||||
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
 | 
			
		||||
    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
 | 
			
		||||
remove(){
 | 
			
		||||
    packages+=("$pkgname")
 | 
			
		||||
    action='remove'
 | 
			
		||||
    rm "$repo_path"/"$pkgname"*pkg.tar*
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
        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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
update_repo(){
 | 
			
		||||
    local repo="$1" pkgfile ver
 | 
			
		||||
    local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
 | 
			
		||||
 | 
			
		||||
    . 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
 | 
			
		||||
    done
 | 
			
		||||
    cd $repo_path
 | 
			
		||||
    if [[ -n $action ]]; then
 | 
			
		||||
        repo-$action -R $repo.${PKGDBEXT} ${packages[@]}
 | 
			
		||||
        ${linksdb} && links-$action $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/${ARCH}
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
            if [[ $remotepkg != file://* ]]; then
 | 
			
		||||
                msg2 "Downloading current versions"
 | 
			
		||||
            pacman --noconfirm -Swdd --dbpath "$dbpath" --logfile /dev/null "${pkgnames[@]}"
 | 
			
		||||
                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,55 @@ 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)
 | 
			
		||||
    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 +141,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
 | 
			
		||||
@@ -14,6 +14,8 @@
 | 
			
		||||
#         packages
 | 
			
		||||
#         community
 | 
			
		||||
#         packages-kernel
 | 
			
		||||
#         packages-net
 | 
			
		||||
#         packages-gfx
 | 
			
		||||
#         packages-openrc
 | 
			
		||||
#         packages-runit
 | 
			
		||||
#         packages-s6
 | 
			
		||||
@@ -32,6 +34,7 @@
 | 
			
		||||
#         packages-mate
 | 
			
		||||
#         packages-kde
 | 
			
		||||
#         packages-xfce
 | 
			
		||||
#         packages-wm
 | 
			
		||||
# )
 | 
			
		||||
 | 
			
		||||
# HOST_TREE_ARCH=git://git.archlinux.org/svntogit
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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(){
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										127
									
								
								lib/pkg/util.sh
									
									
									
									
									
								
							
							
						
						
									
										127
									
								
								lib/pkg/util.sh
									
									
									
									
									
								
							@@ -14,80 +14,17 @@
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
    case "$gitname" in
 | 
			
		||||
        *+) gitname=${gitname//+/plus}
 | 
			
		||||
    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 +32,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
 | 
			
		||||
        [[ -d "$dir" ]] || continue
 | 
			
		||||
        [[ -e "$dir/$pkg" ]] && results+=("$dir/$pkg")
 | 
			
		||||
    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
 | 
			
		||||
 
 | 
			
		||||
@@ -41,6 +41,8 @@ load_pkg_config(){
 | 
			
		||||
            packages
 | 
			
		||||
            community
 | 
			
		||||
            packages-kernel
 | 
			
		||||
            packages-net
 | 
			
		||||
            packages-gfx
 | 
			
		||||
            packages-openrc
 | 
			
		||||
            packages-runit
 | 
			
		||||
            packages-s6
 | 
			
		||||
@@ -58,6 +60,7 @@ load_pkg_config(){
 | 
			
		||||
            packages-mate
 | 
			
		||||
            packages-kde
 | 
			
		||||
            packages-xfce
 | 
			
		||||
            packages-wm
 | 
			
		||||
#             packages-haskell
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user