Compare commits
	
		
			24 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 76e97b3702 | |||
| d1b2da317f | |||
| e59680bf11 | |||
| defafdecce | |||
| 2c21030758 | |||
| e29cd8817a | |||
| e551f42888 | |||
| ad33bccd49 | |||
| 31eeaa9a0d | |||
| f5daac0d67 | |||
| 2484ea39a4 | |||
| 9b222bdb83 | |||
| a3e6b17c5f | |||
| 21a37f6b00 | |||
| 80416b76d5 | |||
| 2113ffe4c6 | |||
| 438473c878 | |||
| 86c5c2f47b | |||
| d333c245c0 | |||
| 4a650f00d7 | |||
| 08b73032a2 | |||
| 1a250c2167 | |||
| 46431619f2 | |||
| 12d2159c12 | 
							
								
								
									
										7
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
| VERSION=0.17 | VERSION=0.19 | ||||||
|  |  | ||||||
| CHROOT_VERSION=0.10 | CHROOT_VERSION=0.10 | ||||||
|  |  | ||||||
| @@ -14,7 +14,6 @@ BASE_CONF = \ | |||||||
| 	data/conf/artools-base.conf | 	data/conf/artools-base.conf | ||||||
|  |  | ||||||
| BASE_BIN = \ | BASE_BIN = \ | ||||||
| 	bin/base/signfile \ |  | ||||||
| 	bin/base/chroot-run \ | 	bin/base/chroot-run \ | ||||||
| 	bin/base/mkchroot \ | 	bin/base/mkchroot \ | ||||||
| 	bin/base/basestrap \ | 	bin/base/basestrap \ | ||||||
| @@ -45,7 +44,8 @@ PKG_BIN = \ | |||||||
| 	bin/pkg/checkpkg \ | 	bin/pkg/checkpkg \ | ||||||
| 	bin/pkg/finddeps \ | 	bin/pkg/finddeps \ | ||||||
| 	bin/pkg/find-libdeps \ | 	bin/pkg/find-libdeps \ | ||||||
| 	bin/pkg/batchpkg | 	bin/pkg/batchpkg \ | ||||||
|  | 	bin/pkg/signpkg | ||||||
|  |  | ||||||
| LN_COMMITPKG = \ | LN_COMMITPKG = \ | ||||||
| 	extrapkg \ | 	extrapkg \ | ||||||
| @@ -116,7 +116,6 @@ ISO_LIBS = \ | |||||||
|  |  | ||||||
| ISO_UTIL = lib/util-iso.sh | ISO_UTIL = lib/util-iso.sh | ||||||
|  |  | ||||||
|  |  | ||||||
| DIRMODE = -dm0755 | DIRMODE = -dm0755 | ||||||
| FILEMODE = -m0644 | FILEMODE = -m0644 | ||||||
| MODE =  -m0755 | 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}" |     die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "${CHROOTVERSION}" | ||||||
| fi | fi | ||||||
|  |  | ||||||
| sync_host_localtime | #sync_host_localtime | ||||||
|  |  | ||||||
| chroot_api_mount "${working_dir}" || die "failed to setup API filesystems in chroot %s" "${working_dir}" | chroot_api_mount "${working_dir}" || die "failed to setup API filesystems in chroot %s" "${working_dir}" | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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() { | usage() { | ||||||
|     echo "Usage: ${0##*/} [options] -- [mkchrootpkg_args]" |     echo "Usage: ${0##*/} [options] -- [mkchrootpkg_args]" | ||||||
|     echo "    -r <dir>           Create chroots in this directory" |     echo "    -r <dir>           Create chroots in this directory" | ||||||
|  |     echo "    -d <dir>           Destination repo chroot" | ||||||
|     echo '    -c                 Recreate the chroot before building' |     echo '    -c                 Recreate the chroot before building' | ||||||
|     echo '    -m                 Major rebuild' |     echo '    -m                 Major rebuild' | ||||||
|     echo '    -N                 Disable check() function' |     echo '    -N                 Disable check() function' | ||||||
| @@ -43,11 +44,12 @@ usage() { | |||||||
|  |  | ||||||
| orig_argv=("$0" "$@") | orig_argv=("$0" "$@") | ||||||
|  |  | ||||||
| opts='hcCNmr:' | opts='hcCNmr:d:' | ||||||
|  |  | ||||||
| while getopts "${opts}" arg; do | while getopts "${opts}" arg; do | ||||||
|     case "${arg}" in |     case "${arg}" in | ||||||
|         r) CHROOTS_PKG="$OPTARG" ;; |         r) CHROOTS_PKG="$OPTARG" ;; | ||||||
|  |         d) repo="$OPTARG" ;; | ||||||
|         c) create_first=true ;; |         c) create_first=true ;; | ||||||
|         m) rebuild=true ;; |         m) rebuild=true ;; | ||||||
|         C) is_checkpkg=true; mkchrootpkg_args+=(-C) ;; |         C) is_checkpkg=true; mkchrootpkg_args+=(-C) ;; | ||||||
|   | |||||||
| @@ -85,7 +85,7 @@ pull_tree_artix(){ | |||||||
| sync_pkg(){ | sync_pkg(){ | ||||||
|     local rsync_args=(-aWxvci --progress --delete-before --no-R --no-implied-dirs) |     local rsync_args=(-aWxvci --progress --delete-before --no-R --no-implied-dirs) | ||||||
|     local src="$1" dest="$2" |     local src="$1" dest="$2" | ||||||
|  |     msg "Sync from Arch [%s] to Artix [%s]" "${src##*archlinux/}" "${dest##*artixlinux/}" | ||||||
|     rsync "${rsync_args[@]}" $src/ $dest/ |     rsync "${rsync_args[@]}" $src/ $dest/ | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -94,15 +94,13 @@ show_deps(){ | |||||||
|  |  | ||||||
|     . $src/PKGBUILD 2>/dev/null |     . $src/PKGBUILD 2>/dev/null | ||||||
|  |  | ||||||
|     [[ $arch == 'any' ]] && CARCH=any |  | ||||||
|  |  | ||||||
|     local archver=$(get_full_version) |     local archver=$(get_full_version) | ||||||
|  |  | ||||||
|     [[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}" |     [[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}" | ||||||
|     msg2 "pkgname: %s" "${pkgname[*]}" |     msg2 "pkgname: %s" "${pkgname[*]}" | ||||||
|     [[ -n $pkgdesc ]] && msg2 "pkgdesc: %s" "${pkgdesc}" |     [[ -n $pkgdesc ]] && msg2 "pkgdesc: %s" "${pkgdesc}" | ||||||
|     msg2 "Arch Version: %s" "$archver" |     msg2 "Arch Version: %s" "$archver" | ||||||
|     msg2 "arch: %s" "$CARCH" |     msg2 "arch: %s" "$arch" | ||||||
|  |  | ||||||
|     [[ -n ${makedepends[@]} ]] && msg2 "makedepends: %s" "${makedepends[*]}" |     [[ -n ${makedepends[@]} ]] && msg2 "makedepends: %s" "${makedepends[*]}" | ||||||
|     [[ -n ${checkdepends[@]} ]] && msg2 "checkdepends: %s" "${checkdepends[*]}" |     [[ -n ${checkdepends[@]} ]] && msg2 "checkdepends: %s" "${checkdepends[*]}" | ||||||
| @@ -111,84 +109,21 @@ show_deps(){ | |||||||
| } | } | ||||||
|  |  | ||||||
| subrepo_new(){ | subrepo_new(){ | ||||||
|     local group="${1:-$GROUP}" team="${2:-$TEAM}" |     cd ${TREE_DIR_ARTIX}/${GROUP} | ||||||
|     local dest=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk |  | ||||||
|  |  | ||||||
|     cd ${TREE_DIR_ARTIX}/$group |  | ||||||
|  |  | ||||||
|     msg2 "team: %s" "$team" |  | ||||||
|     msg2 "group: %s" "$group" |  | ||||||
|  |  | ||||||
|     local org=$(get_pkg_org "${PACKAGE}") |     local org=$(get_pkg_org "${PACKAGE}") | ||||||
|  |  | ||||||
|     create_repo "${PACKAGE}" "$org" |     create_repo "${PACKAGE}" "$org" | ||||||
|  |  | ||||||
|     add_repo_to_team "${PACKAGE}" "$org" "$team" |     add_repo_to_team "${PACKAGE}" "$org" "${TEAM}" | ||||||
|  |  | ||||||
|     subrepo_clone "${PACKAGE}" "$org" |     subrepo_clone "${PACKAGE}" "$org" | ||||||
|  |  | ||||||
|     prepare_dir "$dest" |     prepare_dir "${TREE_DIR_ARTIX}/${GROUP}/${PACKAGE}/trunk" | ||||||
|  |  | ||||||
|     commit_jenkins_files "${PACKAGE}" |     commit_jenkins_files "${PACKAGE}" | ||||||
| } | } | ||||||
|  |  | ||||||
| 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 net)) tree=packages-net ;; |  | ||||||
|         $(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 ;; |  | ||||||
|         $(get_group_packages wm)) tree=packages-wm ;; |  | ||||||
|         *) tree=$fallback ;; |  | ||||||
|     esac" |  | ||||||
|     echo $tree |  | ||||||
| } |  | ||||||
|  |  | ||||||
| get_team(){ |  | ||||||
|     local repo="$1" team= |  | ||||||
|     case $repo in |  | ||||||
|         *testing*|*staging*) |  | ||||||
|             set_arch_repos false false false |  | ||||||
|             team=$(find_repo "$srcpath") |  | ||||||
|             team=${team%-*} |  | ||||||
|         ;; |  | ||||||
|         *) team=${repo%-*} ;; |  | ||||||
|     esac |  | ||||||
|     echo $team |  | ||||||
| } |  | ||||||
|  |  | ||||||
| from_arch(){ | from_arch(){ | ||||||
|     cd ${TREE_DIR_ARTIX} |     cd ${TREE_DIR_ARTIX} | ||||||
|  |  | ||||||
| @@ -196,48 +131,38 @@ from_arch(){ | |||||||
|     [[ -z $srcpath ]] && die "Package '%s' does not exist!" "${PACKAGE}" |     [[ -z $srcpath ]] && die "Package '%s' does not exist!" "${PACKAGE}" | ||||||
|  |  | ||||||
|     local repo=$(find_repo "$srcpath") |     local repo=$(find_repo "$srcpath") | ||||||
|  |     msg "repo: %s" "${repo#*/}" | ||||||
|  |  | ||||||
|     archpath=$srcpath/repos/$repo |     local archpath=$srcpath/$repo | ||||||
|     local artixpath=$(find_pkg ${TREE_DIR_ARTIX} ${PACKAGE}) |     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 |  | ||||||
|  |  | ||||||
|     show_deps "$archpath" |     show_deps "$archpath" | ||||||
|  |  | ||||||
|     if [[ -f $artixpath/PKGBUILD ]];then |     if [[ -f "$artixpath"/.gitrepo ]]; then | ||||||
|  |         artixpath="$artixpath"/trunk | ||||||
|  |  | ||||||
|         . $artixpath/PKGBUILD 2>/dev/null |         if [[ -d "$artixpath" ]];then | ||||||
|         local artixver=$(get_full_version) |             sync_pkg "$archpath" "$artixpath" | ||||||
|  |             patch_pkg "$artixpath" | ||||||
|         msg2 "Artix Version: %s" "$artixver" |         fi | ||||||
|     else |     else | ||||||
|         artixpath=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk |         die "Package '%s' does not exist!" "${PACKAGE}" | ||||||
|         subrepo_new "${group}" "$(get_team $repo)" |  | ||||||
|     fi |     fi | ||||||
|  |  | ||||||
|     msg "Sync (%s) from Arch [%s] to Artix [%s]" "${PACKAGE}" "${archpath##*archlinux/}" "${artixpath##*artixlinux/}" |  | ||||||
|  |  | ||||||
|     sync_pkg "$archpath" "$artixpath" |  | ||||||
|     patch_pkg "$artixpath" |  | ||||||
| } | } | ||||||
|  |  | ||||||
| view_build(){ | view_build(){ | ||||||
|     local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}") |     local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}") | ||||||
|     [[ -z $archpath ]] && die "Package '%s' does not exist!" "${PACKAGE}" |     [[ -z $archpath ]] && die "Package '%s' does not exist!" "${PACKAGE}" | ||||||
|     local repo=$(find_repo "${archpath}") |     local repo=$(find_repo "${archpath}") | ||||||
|     archpath=$archpath/repos/$repo |     archpath=$archpath/$repo | ||||||
|     msg2 "repo: %s" "$repo" |     msg "repo: %s" "${repo#*/}" | ||||||
|     show_deps "$archpath" |     show_deps "$archpath" | ||||||
| } | } | ||||||
|  |  | ||||||
| check_tree(){ | check_tree(){ | ||||||
|     local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}") |     local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}") | ||||||
|     [[ -z $archpath ]] && die "Package '%s' does not exist!" "${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%/*} |     local group=${artixpath%/*} | ||||||
|     msg "group: %s" "${group##*/}" |     msg "group: %s" "${group##*/}" | ||||||
|  |  | ||||||
| @@ -288,7 +213,7 @@ usage() { | |||||||
|     echo "    -a            Don't clone or pull arch repos" |     echo "    -a            Don't clone or pull arch repos" | ||||||
|     echo "    -b            Don't clone or pull artix repos" |     echo "    -b            Don't clone or pull artix repos" | ||||||
|     echo '    -i            Import a package from arch repos' |     echo '    -i            Import a package from arch repos' | ||||||
|     echo '    -n            Make new remote subrepo and clone it' |     echo '    -n            New remote subrepo and clone it' | ||||||
|     echo '    -v            Check if a package is in the artix tree(s)' |     echo '    -v            Check if a package is in the artix tree(s)' | ||||||
|     echo '    -c            View package depends' |     echo '    -c            View package depends' | ||||||
|     echo '    -x            Exclude testing (only with -i)' |     echo '    -x            Exclude testing (only with -i)' | ||||||
|   | |||||||
| @@ -18,6 +18,68 @@ shopt -s extglob | |||||||
|  |  | ||||||
| load_makepkg_config | load_makepkg_config | ||||||
|  |  | ||||||
|  | pkgver_equal() { | ||||||
|  |     if [[ $1 = *-* && $2 = *-* ]]; then | ||||||
|  |         # if both versions have a pkgrel, then they must be an exact match | ||||||
|  |         [[ $1 = "$2" ]] | ||||||
|  |     else | ||||||
|  |         # otherwise, trim any pkgrel and compare the bare version. | ||||||
|  |         [[ ${1%%-*} = "${2%%-*}" ]] | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | find_cached_package() { | ||||||
|  |     local searchdirs=("$PKGDEST" "$PWD") results=() | ||||||
|  |     local targetname=$1 targetver=$2 targetarch=$3 | ||||||
|  |     local dir pkg pkgbasename name ver rel arch r results | ||||||
|  |  | ||||||
|  |     for dir in "${searchdirs[@]}"; do | ||||||
|  |         [[ -d $dir ]] || continue | ||||||
|  |  | ||||||
|  |         for pkg in "$dir"/*.pkg.tar?(.!(sig|*.*)); do | ||||||
|  |             [[ -f $pkg ]] || continue | ||||||
|  |  | ||||||
|  |             # avoid adding duplicates of the same inode | ||||||
|  |             for r in "${results[@]}"; do | ||||||
|  |                 [[ $r -ef $pkg ]] && continue 2 | ||||||
|  |             done | ||||||
|  |  | ||||||
|  |             # split apart package filename into parts | ||||||
|  |             pkgbasename=${pkg##*/} | ||||||
|  |             pkgbasename=${pkgbasename%.pkg.tar*} | ||||||
|  |  | ||||||
|  |             arch=${pkgbasename##*-} | ||||||
|  |             pkgbasename=${pkgbasename%-"$arch"} | ||||||
|  |  | ||||||
|  |             rel=${pkgbasename##*-} | ||||||
|  |             pkgbasename=${pkgbasename%-"$rel"} | ||||||
|  |  | ||||||
|  |             ver=${pkgbasename##*-} | ||||||
|  |             name=${pkgbasename%-"$ver"} | ||||||
|  |  | ||||||
|  |             if [[ $targetname = "$name" && $targetarch = "$arch" ]] && | ||||||
|  |                 pkgver_equal "$targetver" "$ver-$rel"; then | ||||||
|  |                 results+=("$pkg") | ||||||
|  |             fi | ||||||
|  |         done | ||||||
|  |     done | ||||||
|  |  | ||||||
|  |     case ${#results[*]} in | ||||||
|  |         0) | ||||||
|  |             return 1 | ||||||
|  |         ;; | ||||||
|  |         1) | ||||||
|  |             printf '%s\n' "${results[0]}" | ||||||
|  |             return 0 | ||||||
|  |         ;; | ||||||
|  |         *) | ||||||
|  |             error 'Multiple packages found:' | ||||||
|  |             printf '\t%s\n' "${results[@]}" >&2 | ||||||
|  |             return 1 | ||||||
|  |         ;; | ||||||
|  |     esac | ||||||
|  | } | ||||||
|  |  | ||||||
| usage() { | usage() { | ||||||
|     cat <<- _EOF_ |     cat <<- _EOF_ | ||||||
|         Usage: ${BASH_SOURCE[0]##*/} [OPTIONS] |         Usage: ${BASH_SOURCE[0]##*/} [OPTIONS] | ||||||
|   | |||||||
| @@ -16,27 +16,35 @@ | |||||||
|  |  | ||||||
| prepare_artools | 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(){ | prepare_commit(){ | ||||||
|     local dest="$1" |     # create new layout, copy & remove repos | ||||||
|     [[ -d repos/$dest ]] && git rm -r repos/$dest |     if [[ -d repos ]]; then | ||||||
|     [[ ! -d repos ]] && mkdir repos |         msg "Switching to new layout ..." | ||||||
|     [[ ! -d repos/$dest ]] && mkdir repos/$dest |         [[ ! -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(){ | check_team(){ | ||||||
|     if [[ ${REPO_SRC} == "core" && ${REPO_DEST} == "extra" ]] || \ |     if [[ "${REPO_SRC}" == "core" && "${REPO_DEST}" == "extra" ]] || \ | ||||||
|         [[ ${REPO_SRC} == "extra" && ${REPO_DEST} == "core" ]] || \ |         [[ "${REPO_SRC}" == "extra" && "${REPO_DEST}" == "core" ]] || \ | ||||||
|         [[ ${REPO_SRC} == "extra" && ${REPO_DEST} == "community" ]] || \ |         [[ "${REPO_SRC}" == "extra" && "${REPO_DEST}" == "community" ]] || \ | ||||||
|         [[ ${REPO_SRC} == "community" && ${REPO_DEST} == "extra" ]] ;then |         [[ "${REPO_SRC}" == "community" && "${REPO_DEST}" == "extra" ]] ;then | ||||||
|  |  | ||||||
|         local org=$(get_pkg_org "${PACKAGE}") |         local org=$(get_pkg_org "${PACKAGE}") | ||||||
|         add_repo_to_team "${PACKAGE}" "$org" "${REPO_DEST}" |         add_repo_to_team "${PACKAGE}" "$org" "${REPO_DEST}" | ||||||
| @@ -44,109 +52,80 @@ check_team(){ | |||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
| commit_pkg(){ | config() { | ||||||
|     local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}") |     [[ "${REPO_SRC}" != 'trunk' ]] && pkgbuild="$CARCH/${REPO_SRC}"/PKGBUILD | ||||||
|  |  | ||||||
|     if [[ -n ${artixpath} ]];then |     if [[ ! -f "$pkgbuild" ]]; then | ||||||
|  |         pkgbuild=repos/"${REPO_SRC}-${CARCH}"/PKGBUILD | ||||||
|         local group=${artixpath%/*} |         [[ -f repos/"${REPO_SRC}"-any/PKGBUILD ]] && pkgbuild=repos/"${REPO_SRC}"-any/PKGBUILD | ||||||
|  |  | ||||||
|         cd ${group} |  | ||||||
|  |  | ||||||
|         local head=$(get_local_head) |  | ||||||
|  |  | ||||||
|         cd ${artixpath} |  | ||||||
|  |  | ||||||
|         local pkgbuild=$(get_path "${REPO_SRC}") |  | ||||||
|  |  | ||||||
|         . $pkgbuild |  | ||||||
|         [[ $arch == 'any' ]] && CARCH=any |  | ||||||
|  |  | ||||||
|         local version=$(get_full_version) |  | ||||||
|  |  | ||||||
|         local commit_msg="" |  | ||||||
|  |  | ||||||
|         if ${remove};then |  | ||||||
|             local action='remove' |  | ||||||
|             if [[ "${REPO_SRC}" == 'trunk' ]];then |  | ||||||
|                 local pkg=${PACKAGE} |  | ||||||
|                 git rm -r trunk |  | ||||||
|             else |  | ||||||
|                 local pkg="${PACKAGE}-$version" |  | ||||||
|                 git rm -r repos/"${REPO_SRC}-$CARCH" |  | ||||||
|             fi |  | ||||||
|             commit_msg="[${REPO_SRC}] '$pkg' ${action}" |  | ||||||
|             msg "Action: %s" "$commit_msg" |  | ||||||
|         else |  | ||||||
|             local action='modify' |  | ||||||
|             commit_msg="[${REPO_SRC}] '${PACKAGE}-$version' ${action}" |  | ||||||
|             msg "Action: %s" "$commit_msg" |  | ||||||
|             git add . |  | ||||||
|         fi |  | ||||||
|         git commit -m "$commit_msg" |  | ||||||
|  |  | ||||||
|         cd ${group} |  | ||||||
|  |  | ||||||
|         ${push} && pull_tree "${group##*/}" "$head" |  | ||||||
|  |  | ||||||
| #         subrepo_pull "${PACKAGE}" |  | ||||||
|         subrepo_push "${PACKAGE}" |  | ||||||
|         subrepo_clean "${PACKAGE}" |  | ||||||
|  |  | ||||||
|         ${push} && push_tree "${group##*/}" |  | ||||||
|  |  | ||||||
|         git prune |  | ||||||
|     else |  | ||||||
|         error "Package '%s' does not exist!" "${PACKAGE}" |  | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
| repo_commit_pkg(){ | commit_pkg() { | ||||||
|  |     if ${remove};then | ||||||
|  |         action='remove' | ||||||
|  |         if [[ "${REPO_SRC}" == 'trunk' ]];then | ||||||
|  |             local pkg=${PACKAGE} | ||||||
|  |             git rm -r trunk | ||||||
|  |         else | ||||||
|  |             local pkg="${PACKAGE}-$(get_full_version)" | ||||||
|  |  | ||||||
|  |             prepare_commit | ||||||
|  |  | ||||||
|  |             git rm -r "$CARCH/${REPO_SRC}" | ||||||
|  |         fi | ||||||
|  |         local commit_msg="[${REPO_SRC}] '$pkg' ${action}" | ||||||
|  |         msg "Action: %s" "$commit_msg" | ||||||
|  |     else | ||||||
|  |         action='modify' | ||||||
|  |         local commit_msg="[${REPO_SRC}] '${PACKAGE}-$(get_full_version)' ${action}" | ||||||
|  |         msg "Action: %s" "$commit_msg" | ||||||
|  |         git add . | ||||||
|  |     fi | ||||||
|  |     git commit -m "$commit_msg" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | repo_commit_pkg() { | ||||||
|  |     if [[ "${REPO_SRC}" == 'trunk' ]];then | ||||||
|  |         action='add' | ||||||
|  |         prepare_commit | ||||||
|  |         cp trunk/* "$CARCH/${REPO_DEST}"/ | ||||||
|  |     else | ||||||
|  |         action='move' | ||||||
|  |         [[ ! -f $pkgbuild ]] && die "%s does not exist!" "$pkgbuild" | ||||||
|  |  | ||||||
|  |         prepare_commit | ||||||
|  |  | ||||||
|  |         cp "$CARCH/${REPO_SRC}"/* "$CARCH/${REPO_DEST}"/ | ||||||
|  |         git rm -r "$CARCH/${REPO_SRC}" | ||||||
|  |     fi | ||||||
|  |     local commit_msg="[${REPO_SRC}] -> [${REPO_DEST}] '${PACKAGE}-$(get_full_version)' ${action}" | ||||||
|  |     msg "Action: %s" "$commit_msg" | ||||||
|  |  | ||||||
|  |     git add . | ||||||
|  |     git commit -m "$commit_msg" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | run(){ | ||||||
|     local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}") |     local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}") | ||||||
|     if [[ -n ${artixpath} ]];then |     if [[ -n ${artixpath} ]];then | ||||||
|  |  | ||||||
|         local group=${artixpath%/*} |         local group=${artixpath%/*} | ||||||
|  |  | ||||||
|         cd ${group} |         cd ${group} | ||||||
|  |  | ||||||
|         local head=$(get_local_head) |         local head=$(get_local_head) | ||||||
|  |  | ||||||
|         cd ${artixpath} |         cd ${artixpath} | ||||||
|  |         config | ||||||
|         local pkgbuild=$(get_path "${REPO_SRC}") |  | ||||||
|  |  | ||||||
|         . $pkgbuild |         . $pkgbuild | ||||||
|         [[ $arch == 'any' ]] && CARCH=any |  | ||||||
|  |  | ||||||
|         local version=$(get_full_version) |         if [[ "${cmd}" == 'commitpkg' ]];then | ||||||
|  |             commit_pkg | ||||||
|         if [[ ${REPO_SRC} == 'trunk' ]];then |  | ||||||
|             local action='add' |  | ||||||
|             local dest="${REPO_DEST}-$CARCH" |  | ||||||
|  |  | ||||||
|             prepare_commit "$dest" |  | ||||||
|  |  | ||||||
|             cp trunk/* repos/$dest/ |  | ||||||
|         else |         else | ||||||
|             local action='move' |             repo_commit_pkg | ||||||
|             local src="${REPO_SRC}-$CARCH" dest="${REPO_DEST}-$CARCH" |  | ||||||
|  |  | ||||||
|             [[ ! -f repos/$src/PKGBUILD ]] && die "%s does not exist!" "repos/$src/PKGBUILD" |  | ||||||
|             prepare_commit "$dest" |  | ||||||
|  |  | ||||||
|             cp repos/$src/* repos/$dest/ |  | ||||||
|             git rm -r repos/$src |  | ||||||
|         fi |         fi | ||||||
|         local commit_msg="[${REPO_SRC}] -> [${REPO_DEST}] '${PACKAGE}-$version' ${action}" |  | ||||||
|         msg "Action: %s" "$commit_msg" |  | ||||||
|  |  | ||||||
|         git add . |  | ||||||
|         git commit -m "$commit_msg" |  | ||||||
|  |  | ||||||
|         cd ${group} |         cd ${group} | ||||||
|  |  | ||||||
|         ${push} && pull_tree "${group##*/}" "$head" |         ${push} && pull_tree "${group##*/}" "$head" | ||||||
|  |  | ||||||
| #         subrepo_pull "${PACKAGE}" | #         subrepo_pull "${PACKAGE}" | ||||||
|         subrepo_push "${PACKAGE}" |         subrepo_push "${PACKAGE}" | ||||||
|         subrepo_clean "${PACKAGE}" |         subrepo_clean "${PACKAGE}" | ||||||
| @@ -155,22 +134,17 @@ repo_commit_pkg(){ | |||||||
|  |  | ||||||
|         git prune |         git prune | ||||||
|  |  | ||||||
|         check_team |         [[ "${cmd}" != 'commitpkg' ]] && check_team | ||||||
|     else |     else | ||||||
|         error "Package '%s' does not exist!" "${PACKAGE}" |         die "Package '%s' does not exist!" "${PACKAGE}" | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
| is_valid_repo(){ | is_valid_repo(){ | ||||||
|     local src="$1" cases= |     case "${REPO_SRC}" in | ||||||
|     set_arch_repos true true true |         core|extra|community|multilib|testing|community-testing|multilib-testing|staging|community-staging|multilib-staging|gnome-unstable|kde-unstable|trunk) return 0 ;; | ||||||
|     for r in ${ARCH_REPOS[@]};do |  | ||||||
|         cases=${cases:-}${cases:+|}${r} |  | ||||||
|     done |  | ||||||
|     eval "case $src in |  | ||||||
|         ${cases}|trunk) return 0 ;; |  | ||||||
|         *) return 1 ;; |         *) return 1 ;; | ||||||
|     esac" |     esac | ||||||
| } | } | ||||||
|  |  | ||||||
| load_makepkg_config | load_makepkg_config | ||||||
| @@ -180,6 +154,8 @@ PACKAGE='' | |||||||
| remove=false | remove=false | ||||||
| push=false | push=false | ||||||
|  |  | ||||||
|  | pkgbuild=trunk/PKGBUILD | ||||||
|  |  | ||||||
| cmd=${0##*/} | cmd=${0##*/} | ||||||
| REPO_DEST=${cmd%pkg} | REPO_DEST=${cmd%pkg} | ||||||
|  |  | ||||||
| @@ -212,12 +188,8 @@ done | |||||||
|  |  | ||||||
| shift $(($OPTIND - 1)) | shift $(($OPTIND - 1)) | ||||||
|  |  | ||||||
| if $(is_valid_repo "${REPO_SRC}");then | if $(is_valid_repo);then | ||||||
|     if [[ "${cmd}" == 'commitpkg' ]];then |     run | ||||||
|         commit_pkg |  | ||||||
|     else |  | ||||||
|         repo_commit_pkg |  | ||||||
|     fi |  | ||||||
| else | else | ||||||
|     error "source repository '%s' is not valid!" "${REPO_SRC}" |     die "source repository '%s' is not valid!" "${REPO_SRC}" | ||||||
| fi | fi | ||||||
|   | |||||||
| @@ -26,16 +26,14 @@ get_import_path(){ | |||||||
| } | } | ||||||
|  |  | ||||||
| compare_m(){ | compare_m(){ | ||||||
|     local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4" |  | ||||||
|  |  | ||||||
|     local result=$(vercmp "$artixver" "$archver") |     local result=$(vercmp "$artixver" "$archver") | ||||||
|     if [[ $artixrepo == *testing* ]] || [[ $artixrepo == *staging* ]]; then |     if [[ $artixrepo == *testing* ]] || [[ $artixrepo == *staging* ]]; then | ||||||
|         if [[ "$archrepo" == "$artixrepo"  ]]; then |         if [[ "${a}" == "${b}"  ]]; then | ||||||
|             msg_row "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}" |             msg_row "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}" | ||||||
|         else |         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 |             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 | ||||||
|         fi |         fi | ||||||
|  |  | ||||||
| @@ -43,22 +41,18 @@ compare_m(){ | |||||||
| } | } | ||||||
|  |  | ||||||
| compare_u(){ | compare_u(){ | ||||||
|     local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4" |  | ||||||
|  |  | ||||||
|     local result=$(vercmp "$artixver" "$archver") |     local result=$(vercmp "$artixver" "$archver") | ||||||
|     if [ $result -eq -1 ];then |     if [ $result -eq -1 ];then | ||||||
|         msg_row_upgrade "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}" |         msg_row_upgrade "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}" | ||||||
|         printf "%s\n" "${archrepo%-*}:$pkg" >> ${TREE_DIR_ARTIX}/pkg_upgrades.list |         printf "%s\n" "${a}:$pkg" >> ${TREE_DIR_ARTIX}/pkg_upgrades.list | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
| compare_d(){ | compare_d(){ | ||||||
|     local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4" |  | ||||||
|  |  | ||||||
|     local result=$(vercmp "$artixver" "$archver") |     local result=$(vercmp "$artixver" "$archver") | ||||||
|     if [ $result -eq 1 ];then |     if [ $result -eq 1 ];then | ||||||
|         if [[ -n "$archver" ]] && [[ -n "$archrepo" ]];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 | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
| @@ -69,7 +63,7 @@ pre_compare(){ | |||||||
|     group=${group##*/} |     group=${group##*/} | ||||||
|     local pkg=${pkgpath##*/} |     local pkg=${pkgpath##*/} | ||||||
|     local artixrepo=$(find_repo "$pkgpath") |     local artixrepo=$(find_repo "$pkgpath") | ||||||
|     local pkgbuild=$pkgpath/repos/$artixrepo/PKGBUILD |     local pkgbuild=$pkgpath/$artixrepo/PKGBUILD | ||||||
|  |  | ||||||
|     if [[ -f $pkgbuild ]];then |     if [[ -f $pkgbuild ]];then | ||||||
|         . $pkgbuild 2>/dev/null |         . $pkgbuild 2>/dev/null | ||||||
| @@ -77,14 +71,19 @@ pre_compare(){ | |||||||
|  |  | ||||||
|         local archpath=$(get_import_path $pkg) |         local archpath=$(get_import_path $pkg) | ||||||
|         local archrepo=$(find_repo "${archpath}") |         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 |         if [[ -f "$pkgbuild" ]];then | ||||||
|             . $pkgbuild 2>/dev/null |             . $pkgbuild 2>/dev/null | ||||||
|             local archver=$(get_full_version) |             local archver=$(get_full_version) | ||||||
|         fi |         fi | ||||||
|  |  | ||||||
|         "$func" "$artixver" "$artixrepo" "$archver" "$archrepo" |         "$func" | ||||||
|  |  | ||||||
|         unset pkgver epoch pkgrel artixver archver pkgbuild archpath |         unset pkgver epoch pkgrel artixver archver pkgbuild archpath | ||||||
|     fi |     fi | ||||||
| @@ -139,11 +138,11 @@ show_move_table(){ | |||||||
| update_db_cache(){ | update_db_cache(){ | ||||||
|     msg "Updating database cache" |     msg "Updating database cache" | ||||||
|     for repo in "${searchrepos[@]}"; do |     for repo in "${searchrepos[@]}"; do | ||||||
|         local cachedir=${db_cache_dir}/${LINKSDBEXT}/${ARCH}/${repo} |         local cachedir=${db_cache_dir}/${LINKSDBEXT}/${CARCH}/${repo} | ||||||
|         rm -rf "$cachedir" |         rm -rf "$cachedir" | ||||||
|         mkdir -p "$cachedir" |         mkdir -p "$cachedir" | ||||||
|         msg2 "%s" "$repo" |         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" |             | bsdtar -xf - -C "$cachedir" | ||||||
|     done |     done | ||||||
|     msg "Done" |     msg "Done" | ||||||
| @@ -152,7 +151,7 @@ update_db_cache(){ | |||||||
| query_db() { | query_db() { | ||||||
|     for repo in "${searchrepos[@]}"; do |     for repo in "${searchrepos[@]}"; do | ||||||
|         local prefix= |         local prefix= | ||||||
|         local db=${db_cache_dir}/${LINKSDBEXT}/${ARCH}/${repo}/ |         local db=${db_cache_dir}/${LINKSDBEXT}/${CARCH}/${repo}/ | ||||||
|         if [[ -d ${db} ]]; then |         if [[ -d ${db} ]]; then | ||||||
|             while read -rd '' pkg; do |             while read -rd '' pkg; do | ||||||
|                 read -r match |                 read -r match | ||||||
| @@ -173,7 +172,7 @@ show_lib_table() { | |||||||
| is_db_entry() { | is_db_entry() { | ||||||
|     local pkgname="$1" repo="${REPOS[$2]}" |     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 |         return 0 | ||||||
|     fi |     fi | ||||||
|     return 1 |     return 1 | ||||||
| @@ -181,33 +180,23 @@ is_db_entry() { | |||||||
|  |  | ||||||
| check_db(){ | check_db(){ | ||||||
|     local pkgpath="${1%/*}" |     local pkgpath="${1%/*}" | ||||||
|     local pkg=${pkgpath##*/} |  | ||||||
|     local sarch=(any ${ARCH}) |  | ||||||
|  |  | ||||||
|     for repo in ${ARCH_REPOS[@]};do |     for repo in ${!REPOS[@]};do | ||||||
|         for a in ${sarch[@]};do |         local pkgbuild= | ||||||
|  |         [[ -f $pkgpath/$CARCH/$repo/PKGBUILD ]] && pkgbuild=$pkgpath/$CARCH/$repo/PKGBUILD | ||||||
|  |         [[ -f $pkgpath/repos/$repo-$CARCH/PKGBUILD ]] && pkgbuild=$pkgpath/repos/$repo-$CARCH/PKGBUILD | ||||||
|  |         [[ -f $pkgpath/repos/$repo-any/PKGBUILD ]] && pkgbuild=$pkgpath/repos/$repo-any/PKGBUILD | ||||||
|  |  | ||||||
|             local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD |         . $pkgbuild 2>/dev/null | ||||||
|  |         local artixver=$(get_full_version) | ||||||
|  |         for name in ${pkgname[@]};do | ||||||
|  |  | ||||||
|             if [[ -f $pkgbuild ]];then |             if ! is_db_entry "$name-$artixver" "$repo";then | ||||||
|  |                 msg_row "${tableU}" "$repo" "$name" "$artixver" "false" | ||||||
|                 . $pkgbuild 2>/dev/null |  | ||||||
|                 local artixver=$(get_full_version) |  | ||||||
|  |  | ||||||
|                 local is_entry=false |  | ||||||
|  |  | ||||||
|                 for name in ${pkgname[@]};do |  | ||||||
|  |  | ||||||
|                     if is_db_entry "$name-$artixver" "$repo";then |  | ||||||
|                         is_entry=true |  | ||||||
|                     fi |  | ||||||
|                     if ! $is_entry;then |  | ||||||
|                         msg_row "${tableU}" "$repo" "$name" "$artixver" "$is_entry" |  | ||||||
|                     fi |  | ||||||
|                 done |  | ||||||
|                 unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase |  | ||||||
|             fi |             fi | ||||||
|  |  | ||||||
|         done |         done | ||||||
|  |         unset artixver pkgbuild pkgver epoch pkgname pkgbase | ||||||
|     done |     done | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -16,127 +16,40 @@ | |||||||
|  |  | ||||||
| prepare_artools | prepare_artools | ||||||
|  |  | ||||||
| find_cached_pkgfile() { | add(){ | ||||||
|     local searchdirs=("$PKGDEST" "$PWD") results=() |     pkg=${pkgname%.*} | ||||||
|     local pkg="$1" |     for ext in zst xz;do | ||||||
|     local search=${pkg%.*} |         if pkgfile=$(find_cached_pkgfile "$pkg.$ext");then | ||||||
|     for dir in "${searchdirs[@]}"; do |             msg "Found: %s" "${pkgfile}" | ||||||
|         [[ -d $dir ]] || continue |             packages+=("$pkg.$ext") | ||||||
|         results+=$(find "$dir" -type f -name "$search.*" ! -path '*.sig') |             action='add' | ||||||
|     done |             ln -sf "${pkgfile}"{,.sig} "$repo_path"/ | ||||||
|     case ${#results[*]} in |  | ||||||
|         0) |  | ||||||
|             return 1 |  | ||||||
|         ;; |  | ||||||
|         1) |  | ||||||
|             printf '%s\n' "${results[0]}" |  | ||||||
|             return 0 |  | ||||||
|         ;; |  | ||||||
|         *) |  | ||||||
|             error 'Multiple packages found:' |  | ||||||
|             printf '\t%s\n' "${results[@]}" >&2 |  | ||||||
|             return 1 |  | ||||||
|         ;; |  | ||||||
|     esac |  | ||||||
| } |  | ||||||
|  |  | ||||||
| get_pkgbasename(){ |  | ||||||
|     local pkg="$1" |  | ||||||
|     local pkgbasename name ver rel arch |  | ||||||
|  |  | ||||||
|     pkgbasename=${pkg%.pkg.tar.?z} |  | ||||||
|     arch=${pkgbasename##*-} |  | ||||||
|     pkgbasename=${pkgbasename%-"$arch"} |  | ||||||
|  |  | ||||||
|     rel=${pkgbasename##*-} |  | ||||||
|     pkgbasename=${pkgbasename%-"$rel"} |  | ||||||
|  |  | ||||||
|     ver=${pkgbasename##*-} |  | ||||||
|  |  | ||||||
|     name=${pkgbasename%-"$ver"} |  | ||||||
|     echo $name |  | ||||||
| } |  | ||||||
|  |  | ||||||
| update_repo2(){ |  | ||||||
|     local repo="$1" |  | ||||||
|     local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=() |  | ||||||
|  |  | ||||||
|     for name in ${passfiles[@]}; do |  | ||||||
|         if pkgfile=$(find_cached_pkgfile "$name");then |  | ||||||
|             info "Found: %s" "$name" |  | ||||||
|             if ${add_pkg};then |  | ||||||
|                 local action='add' |  | ||||||
|                 packages+=("$name") |  | ||||||
|                 if ${sign_pkg};then |  | ||||||
|                     [[ -e ${pkgfile}.sig ]] && rm ${pkgfile}.sig |  | ||||||
|                     signfile ${pkgfile} |  | ||||||
|                 fi |  | ||||||
|                 ln -sf ${pkgfile}{,.sig} $repo_path/ |  | ||||||
|             elif ${del_pkg};then |  | ||||||
|                 local action='remove' |  | ||||||
|                 packages+=("$(get_pkgbasename "$name")") |  | ||||||
|                 [[ -e $repo_path/$name ]] && rm $repo_path/$name |  | ||||||
|                 [[ -e $repo_path/$name.sig ]] && rm $repo_path/$name.sig |  | ||||||
|             fi |  | ||||||
|         fi |         fi | ||||||
|     done |     done | ||||||
|     cd $repo_path |  | ||||||
|     if [[ -n $action ]]; then |  | ||||||
|         repo-$action -R $repo.${PKGDBEXT} ${packages[@]} |  | ||||||
|         ${linksdb} && links-$action $repo.${LINKSDBEXT} ${packages[@]} |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     return 0 |  | ||||||
| } | } | ||||||
|  |  | ||||||
| update_repo(){ | remove(){ | ||||||
|     local repo="$1" pkgfile ver |     packages+=("$pkgname") | ||||||
|     local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=() |     action='remove' | ||||||
|  |     rm "$repo_path"/"$pkgname"*pkg.tar* | ||||||
|  | } | ||||||
|  |  | ||||||
|     . PKGBUILD | repo_action(){ | ||||||
|  |     local packages=() action= func="$1" | ||||||
|     local pkgsearch=(${pkgname[@]}) |     for pkgname in ${passfiles[@]}; do | ||||||
|     if check_option "debug" "y"; then |         "$func" | ||||||
|         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 |     done | ||||||
|     cd $repo_path |     cd $repo_path | ||||||
|     if [[ -n $action ]]; then |     if [[ -n "$action" ]]; then | ||||||
|         repo-$action -R $repo.${PKGDBEXT} ${packages[@]} |         repo-"$action" -R "${dest_repo}"."${PKGDBEXT}" "${packages[@]}" | ||||||
|         ${linksdb} && links-$action $repo.${LINKSDBEXT} ${packages[@]} |         ${linksdb} && links-"$action" "${dest_repo}"."${LINKSDBEXT}" "${packages[@]}" | ||||||
|     fi |     fi | ||||||
|  |  | ||||||
|     return 0 |  | ||||||
| } | } | ||||||
|  |  | ||||||
| load_makepkg_config | load_makepkg_config | ||||||
|  |  | ||||||
| add_pkg=false | add_pkg=false | ||||||
| del_pkg=false | rm_pkg=false | ||||||
| sign_pkg=false |  | ||||||
| linksdb=false | linksdb=false | ||||||
|  |  | ||||||
| cmd=${0##*/} | cmd=${0##*/} | ||||||
| @@ -144,24 +57,24 @@ dest_repo=${cmd#*-} | |||||||
|  |  | ||||||
| usage() { | usage() { | ||||||
|     echo "Usage: ${cmd} [options]" |     echo "Usage: ${cmd} [options]" | ||||||
|  |     echo '    -d <dest>          Destination repository' | ||||||
|     echo '    -a                 Add package(s) to repository' |     echo '    -a                 Add package(s) to repository' | ||||||
|     echo '    -r                 Remove package(s) from repository' |     echo '    -r                 Remove package(s) from repository' | ||||||
|     echo '    -l                 Use links db' |     echo '    -l                 Use links db' | ||||||
|     echo '    -s                 Sign package(s)' |  | ||||||
|     echo '    -h                 This help' |     echo '    -h                 This help' | ||||||
|     echo '' |     echo '' | ||||||
|     echo '' |     echo '' | ||||||
|     exit $1 |     exit $1 | ||||||
| } | } | ||||||
|  |  | ||||||
| opts='arlsh' | opts='arlhd:' | ||||||
|  |  | ||||||
| while getopts "${opts}" arg; do | while getopts "${opts}" arg; do | ||||||
|     case "${arg}" in |     case "${arg}" in | ||||||
|         a) add_pkg=true; del_pkg=false ;; |         d) dest_repo="$OPTARG" ;; | ||||||
|         r) del_pkg=true; add_pkg=false ;; |         a) add_pkg=true; rm_pkg=false ;; | ||||||
|  |         r) rm_pkg=true; add_pkg=false ;; | ||||||
|         l) linksdb=true ;; |         l) linksdb=true ;; | ||||||
|         s) sign_pkg=true ;; |  | ||||||
|         h|?) usage 0 ;; |         h|?) usage 0 ;; | ||||||
|         *) echo "invalid argument '${arg}'"; usage 1 ;; |         *) echo "invalid argument '${arg}'"; usage 1 ;; | ||||||
|     esac |     esac | ||||||
| @@ -173,8 +86,13 @@ passfiles="$@" | |||||||
|  |  | ||||||
| prepare_dir "${REPOS_ROOT}" | prepare_dir "${REPOS_ROOT}" | ||||||
|  |  | ||||||
|  | repo_path=${REPOS_ROOT}/${dest_repo}/os/${CARCH} | ||||||
|  |  | ||||||
| if [[ -n ${passfiles[@]} ]]; then | if [[ -n ${passfiles[@]} ]]; then | ||||||
|     update_repo2 "${dest_repo}" |     if ${add_pkg}; then | ||||||
| else |         repo_action add | ||||||
|     update_repo "${dest_repo}" |     fi | ||||||
|  |     if ${rm_pkg}; then | ||||||
|  |         repo_action remove | ||||||
|  |     fi | ||||||
| fi | fi | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ | |||||||
|  |  | ||||||
| . @libdir@/artools/util-base.sh | . @libdir@/artools/util-base.sh | ||||||
|  |  | ||||||
| write_attr(){ | srcyaml_write_attr(){ | ||||||
|     local ident1="$1" ident2="$2" ident3="$3" |     local ident1="$1" ident2="$2" ident3="$3" | ||||||
|     local attrname=$4 attrvalues=("${@:5}") |     local attrname=$4 attrvalues=("${@:5}") | ||||||
|  |  | ||||||
| @@ -24,47 +24,41 @@ write_attr(){ | |||||||
|     attrvalues=("${attrvalues[@]%[[:space:]]}") |     attrvalues=("${attrvalues[@]%[[:space:]]}") | ||||||
|  |  | ||||||
|     case $attrname in |     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") |             Yaml+=$(write_yaml_map $ident1 "$attrname") | ||||||
|             for v in ${attrvalues[@]};do |             for v in ${attrvalues[@]};do | ||||||
|                 Yaml+=$(write_yaml_seq $ident2 "$v") |                 Yaml+=$(write_yaml_seq $ident2 "$v") | ||||||
|             done |             done | ||||||
|         ;; |         ;; | ||||||
|         *) |  | ||||||
|             for v in ${attrvalues[@]};do |  | ||||||
|                 Yaml+=$(write_yaml_map $ident3 "$attrname" "$v") |  | ||||||
|             done |  | ||||||
|         ;; |  | ||||||
|     esac |     esac | ||||||
| } | } | ||||||
|  |  | ||||||
| extract_info() { | pkgbuild_extract_to_yaml() { | ||||||
|     local pkgname=$1 attrname=$2 isarray=$3 outvalue= |     local pkgname=$1 attrname=$2 isarray=$3 outvalue= | ||||||
|  |  | ||||||
|     if get_pkgbuild_attribute "$pkgname" "$attrname" "$isarray" 'outvalue'; then |     if get_pkgbuild_attribute "$pkgname" "$attrname" "$isarray" 'outvalue'; then | ||||||
|         [[ -z $pkgname ]] && write_attr 2 4 2 "$attrname" "${outvalue[@]}" |         [[ -z $pkgname ]] && srcyaml_write_attr 2 4 2 "$attrname" "${outvalue[@]}" | ||||||
|         [[ -n $pkgname ]] && write_attr 4 6 2 "$attrname" "${outvalue[@]}" |         [[ -n $pkgname ]] && srcyaml_write_attr 4 6 2 "$attrname" "${outvalue[@]}" | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
| write_details() { | srcyaml_write_section_details() { | ||||||
|     local attr package_arch a |     local attr package_arch a | ||||||
|     local multivalued_arch_attrs=(provides depends makedepends checkdepends) |     local multivalued_arch_attrs=(source provides conflicts depends replaces | ||||||
|  | 	                              optdepends makedepends checkdepends) | ||||||
|     local singlevalued=() | # 	                              "${known_hash_algos[@]/%/sums}") | ||||||
|     local multivalued=(arch provides depends checkdepends) |  | ||||||
|  |  | ||||||
|     if [[ -z "$1" ]];then |  | ||||||
|         singlevalued=(pkgver pkgrel epoch) |  | ||||||
|         multivalued=(arch provides depends makedepends checkdepends) |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     for attr in "${singlevalued[@]}"; do |     for attr in "${singlevalued[@]}"; do | ||||||
|         extract_info "$1" "$attr" 0 |         pkgbuild_extract_to_yaml "$1" "$attr" 0 | ||||||
|     done |     done | ||||||
|  |  | ||||||
|     for attr in "${multivalued[@]}"; do |     for attr in "${multivalued[@]}"; do | ||||||
|         extract_info "$1" "$attr" 1 |         pkgbuild_extract_to_yaml "$1" "$attr" 1 | ||||||
|     done |     done | ||||||
|  |  | ||||||
|     get_pkgbuild_attribute "$1" 'arch' 1 'package_arch' |     get_pkgbuild_attribute "$1" 'arch' 1 'package_arch' | ||||||
| @@ -73,47 +67,55 @@ write_details() { | |||||||
|         [[ $a = any ]] && continue |         [[ $a = any ]] && continue | ||||||
|  |  | ||||||
|         for attr in "${multivalued_arch_attrs[@]}"; do |         for attr in "${multivalued_arch_attrs[@]}"; do | ||||||
|             extract_info "$1" "${attr}_$a" 1 |             pkgbuild_extract_to_yaml "$1" "${attr}_$a" 1 | ||||||
|         done |         done | ||||||
|     done |     done | ||||||
| } | } | ||||||
|  |  | ||||||
| write_pkg_yaml(){ | yaml_write_global() { | ||||||
|  |     local singlevalued=(pkgver pkgrel epoch url install changelog) #pkgdesc | ||||||
|     Yaml=$(write_yaml_header) |     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) |     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 0 "pkgbase") | ||||||
|     Yaml+=$(write_yaml_map 2 "pkgname" "${pkgbase}") |     Yaml+=$(write_yaml_map 2 "name" "${pkgbase:-$pkgname}") | ||||||
|     ${details} && write_details '' |     ${details} && srcyaml_write_section_details '' | ||||||
|     Yaml+=$(write_yaml_map 2 "fullver" "${ver}") |  | ||||||
|  |  | ||||||
|     Yaml+=$(write_empty_line) |     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 |     for pkg in "${pkgname[@]}"; do | ||||||
|         Yaml+=$(write_yaml_seq_map 2 "pkgname" "$pkg") |         Yaml+=$(write_yaml_seq_map 2 "pkgname" "$pkg") | ||||||
|         ${details} && write_details "$pkg" |         ${details} && srcyaml_write_section_details "$pkg" | ||||||
|     done |     done | ||||||
|  |  | ||||||
|     Yaml+=$(write_empty_line) |     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) |     local pkgfile=$(print_all_package_names) | ||||||
|  |     Yaml+=$(write_yaml_map 0 "files") | ||||||
|     Yaml+=$(write_yaml_map 0 "pkgfile") |  | ||||||
|     for f in ${pkgfile[@]};do |     for f in ${pkgfile[@]};do | ||||||
|         Yaml+=$(write_yaml_seq 2 "${f##*/}") |         Yaml+=$(write_yaml_seq 2 "${f##*/}") | ||||||
|     done |     done | ||||||
|  |  | ||||||
|     Yaml+=$(write_empty_line) |     Yaml+=$(write_empty_line) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | write_srcyaml(){ | ||||||
|  |     Yaml=$(write_yaml_header) | ||||||
|  |     yaml_write_global | ||||||
|  |     yaml_write_package | ||||||
|  |     yaml_write_fileinfo | ||||||
|     printf '%s' "${Yaml}" |     printf '%s' "${Yaml}" | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -139,11 +141,13 @@ done | |||||||
|  |  | ||||||
| shift $(( $OPTIND - 1 )) | shift $(( $OPTIND - 1 )) | ||||||
|  |  | ||||||
| [[ -f "$1"/PKGBUILD ]] || die "%s/PKGBUILD does not exist!" "$1" | srcpath=$(readlink -f "$1") | ||||||
| PACKAGE="$1"/PKGBUILD; shift |  | ||||||
|  | [[ -f "$srcpath"/PKGBUILD ]] || die "%s/PKGBUILD does not exist!" "$srcpath" | ||||||
|  | PACKAGE="$srcpath"/PKGBUILD; shift | ||||||
|  |  | ||||||
| . "$PACKAGE" | . "$PACKAGE" | ||||||
|  |  | ||||||
| load_makepkg_config | 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 | ||||||
| @@ -15,6 +15,7 @@ | |||||||
| #         community | #         community | ||||||
| #         packages-kernel | #         packages-kernel | ||||||
| #         packages-net | #         packages-net | ||||||
|  | #         packages-gfx | ||||||
| #         packages-openrc | #         packages-openrc | ||||||
| #         packages-runit | #         packages-runit | ||||||
| #         packages-s6 | #         packages-s6 | ||||||
|   | |||||||
							
								
								
									
										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(){ | add_svc_s6(){ | ||||||
|     local mnt="$1" names="$2" valid="" rlvl="${3:-default}" |     local mnt="$1" names="$2" valid="" rlvl="${3:-default}" | ||||||
|     for svc in $names; do |     for svc in $names; do | ||||||
|         if [[ -d $mnt/etc/s6/sv/$svc ]]; then |         error=false | ||||||
|  |         chroot $mnt s6-rc-db -c /etc/s6/rc/compiled type $svc &> /dev/null || error=true | ||||||
|  |         if [ $? == 0 ] && [[ $error == false ]]; then | ||||||
|             msg2 "Setting %s ..." "$svc" |             msg2 "Setting %s ..." "$svc" | ||||||
|             valid=${valid:-}${valid:+' '}${svc} |             valid=${valid:-}${valid:+' '}${svc} | ||||||
|         fi |         fi | ||||||
|   | |||||||
| @@ -33,7 +33,7 @@ subrepo_init() { | |||||||
| subrepo_push(){ | subrepo_push(){ | ||||||
|     local pkg="$1" |     local pkg="$1" | ||||||
|     msg2 "Subrepo push (%s)" "$pkg" |     msg2 "Subrepo push (%s)" "$pkg" | ||||||
|     git subrepo push "$pkg" |     git subrepo push "$pkg" || die "%s push failed" "$pkg" | ||||||
| } | } | ||||||
|  |  | ||||||
| subrepo_clean(){ | subrepo_clean(){ | ||||||
|   | |||||||
| @@ -16,10 +16,10 @@ shopt -s extglob | |||||||
|  |  | ||||||
| get_compliant_name(){ | get_compliant_name(){ | ||||||
|     local gitname="$1" |     local gitname="$1" | ||||||
|     case $gitname in |     case "$gitname" in | ||||||
|         *+) gitname=${gitname//+/plus} |         *+) gitname=${gitname//+/plus} | ||||||
|     esac |     esac | ||||||
|     echo $gitname |     echo "$gitname" | ||||||
| } | } | ||||||
|  |  | ||||||
| set_arch_repos(){ | set_arch_repos(){ | ||||||
| @@ -32,66 +32,28 @@ set_arch_repos(){ | |||||||
| } | } | ||||||
|  |  | ||||||
| find_repo(){ | find_repo(){ | ||||||
|     local pkg="$1" repo= |     local pkg="$1" repo= pkgarch="${2:-${CARCH}}" | ||||||
|     for r in ${ARCH_REPOS[@]};do |     for r in ${ARCH_REPOS[@]};do | ||||||
|         [[ -f $pkg/repos/$r-${ARCH}/PKGBUILD ]] && repo=$r-${ARCH} |         [[ -f $pkg/repos/$r-$pkgarch/PKGBUILD ]] && repo=repos/"$r-$pkgarch" | ||||||
|         [[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any |         [[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=repos/"$r"-any | ||||||
|  |         [[ -f $pkg/$pkgarch/$r/PKGBUILD ]] && repo="$pkgarch/$r" | ||||||
|     done |     done | ||||||
|     echo $repo |     echo $repo | ||||||
| } | } | ||||||
|  |  | ||||||
| find_pkg(){ | find_pkg(){ | ||||||
|     local searchdir="$1" pkg="$2" |     local searchdir="$1" pkg="$2" | ||||||
|     local result=$(find $searchdir -mindepth 2 -maxdepth 2 -type d -name "$pkg") |     local result=$(find "$searchdir" -mindepth 2 -maxdepth 2 -type d -name "$pkg") | ||||||
|     echo $result |     echo "$result" | ||||||
| } | } | ||||||
|  |  | ||||||
| pkgver_equal() { | find_cached_pkgfile() { | ||||||
|     if [[ $1 = *-* && $2 = *-* ]]; then |  | ||||||
|         # if both versions have a pkgrel, then they must be an exact match |  | ||||||
|         [[ $1 = "$2" ]] |  | ||||||
|     else |  | ||||||
|         # otherwise, trim any pkgrel and compare the bare version. |  | ||||||
|         [[ ${1%%-*} = "${2%%-*}" ]] |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| find_cached_package() { |  | ||||||
|     local searchdirs=("$PKGDEST" "$PWD") results=() |     local searchdirs=("$PKGDEST" "$PWD") results=() | ||||||
|     local targetname=$1 targetver=$2 targetarch=$3 |     local pkg="$1" | ||||||
|     local dir pkg pkgbasename name ver rel arch r results |  | ||||||
|  |  | ||||||
|     for dir in "${searchdirs[@]}"; do |     for dir in "${searchdirs[@]}"; do | ||||||
|         [[ -d $dir ]] || continue |         [[ -d "$dir" ]] || continue | ||||||
|  |         [[ -e "$dir/$pkg" ]] && results+=("$dir/$pkg") | ||||||
|         for pkg in "$dir"/*.pkg.tar?(.!(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 |     done | ||||||
|  |  | ||||||
|     case ${#results[*]} in |     case ${#results[*]} in | ||||||
|         0) |         0) | ||||||
|             return 1 |             return 1 | ||||||
|   | |||||||
| @@ -42,6 +42,7 @@ load_pkg_config(){ | |||||||
|             community |             community | ||||||
|             packages-kernel |             packages-kernel | ||||||
|             packages-net |             packages-net | ||||||
|  |             packages-gfx | ||||||
|             packages-openrc |             packages-openrc | ||||||
|             packages-runit |             packages-runit | ||||||
|             packages-s6 |             packages-s6 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user