Compare commits
	
		
			36 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 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 | ||||
| @@ -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/ | ||||
| } | ||||
|  | ||||
| @@ -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 | ||||
|  | ||||
|         . $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 | ||||
|     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##*/}" | ||||
|  | ||||
| @@ -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 | ||||
| } | ||||
|  | ||||
| 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 +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 | ||||
| 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#*-}" | ||||
|         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 | ||||
| @@ -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 | ||||
|  | ||||
|             local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD | ||||
|  | ||||
|             if [[ -f $pkgbuild ]];then | ||||
|     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 | ||||
|  | ||||
|         . $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') | ||||
| 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/${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 | ||||
|             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,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 | ||||
| @@ -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 | ||||
|   | ||||
| @@ -105,8 +105,8 @@ Include = /etc/pacman.d/mirrorlist | ||||
| #[testing] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [extra] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[extra] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| #[community-testing] | ||||
| #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 | ||||
| @@ -114,17 +114,17 @@ Include = /etc/pacman.d/mirrorlist | ||||
| # ARCHLINUX | ||||
| # | ||||
|  | ||||
| [gnome-unstable] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[gnome-unstable] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [staging] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[staging] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [testing] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[testing] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [extra] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[extra] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [community-staging] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
|   | ||||
| @@ -111,14 +111,14 @@ Include = /etc/pacman.d/mirrorlist | ||||
| # ARCHLINUX | ||||
| # | ||||
|  | ||||
| [staging] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[staging] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [testing] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[testing] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [extra] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[extra] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [community-staging] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
|   | ||||
| @@ -102,11 +102,11 @@ Include = /etc/pacman.d/mirrorlist | ||||
| # ARCHLINUX | ||||
| # | ||||
|  | ||||
| [testing] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[testing] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [extra] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[extra] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [community-testing] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
|   | ||||
| @@ -114,17 +114,17 @@ Include = /etc/pacman.d/mirrorlist | ||||
| # ARCHLINUX | ||||
| # | ||||
|  | ||||
| [kde-unstable] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[kde-unstable] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [staging] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[staging] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [testing] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[testing] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [extra] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[extra] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [community-staging] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
|   | ||||
| @@ -111,14 +111,14 @@ Include = /etc/pacman.d/mirrorlist | ||||
| # ARCHLINUX | ||||
| # | ||||
|  | ||||
| [staging] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[staging] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [testing] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[testing] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [extra] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[extra] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [community-staging] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
|   | ||||
| @@ -102,11 +102,11 @@ Include = /etc/pacman.d/mirrorlist | ||||
| # ARCHLINUX | ||||
| # | ||||
|  | ||||
| [testing] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[testing] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [extra] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[extra] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [community-testing] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
|   | ||||
| @@ -105,8 +105,8 @@ Include = /etc/pacman.d/mirrorlist | ||||
| #[testing] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| [extra] | ||||
| Include = /etc/pacman.d/mirrorlist-arch | ||||
| #[extra] | ||||
| #Include = /etc/pacman.d/mirrorlist-arch | ||||
|  | ||||
| #[community-testing] | ||||
| #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 | ||||
|   | ||||
| @@ -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 | ||||
|         [[ -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