forked from artix/artools
Compare commits
23 Commits
Author | SHA1 | Date | |
---|---|---|---|
a3e6b17c5f | |||
21a37f6b00 | |||
80416b76d5 | |||
2113ffe4c6 | |||
438473c878 | |||
86c5c2f47b | |||
d333c245c0 | |||
4a650f00d7 | |||
08b73032a2 | |||
1a250c2167 | |||
46431619f2 | |||
12d2159c12 | |||
3865ceab58 | |||
890e631e1b | |||
273e928905 | |||
f5c328f8e5 | |||
4089151791 | |||
211579f9d7 | |||
2a85209e1e | |||
40d691bc85 | |||
d9da64eb51 | |||
5902f987cc | |||
bfa888251e |
8
Makefile
8
Makefile
@@ -1,4 +1,4 @@
|
|||||||
VERSION=0.17
|
VERSION=0.18
|
||||||
|
|
||||||
CHROOT_VERSION=0.10
|
CHROOT_VERSION=0.10
|
||||||
|
|
||||||
@@ -14,7 +14,6 @@ BASE_CONF = \
|
|||||||
data/conf/artools-base.conf
|
data/conf/artools-base.conf
|
||||||
|
|
||||||
BASE_BIN = \
|
BASE_BIN = \
|
||||||
bin/base/signfile \
|
|
||||||
bin/base/chroot-run \
|
bin/base/chroot-run \
|
||||||
bin/base/mkchroot \
|
bin/base/mkchroot \
|
||||||
bin/base/basestrap \
|
bin/base/basestrap \
|
||||||
@@ -45,7 +44,8 @@ PKG_BIN = \
|
|||||||
bin/pkg/checkpkg \
|
bin/pkg/checkpkg \
|
||||||
bin/pkg/finddeps \
|
bin/pkg/finddeps \
|
||||||
bin/pkg/find-libdeps \
|
bin/pkg/find-libdeps \
|
||||||
bin/pkg/batchpkg
|
bin/pkg/batchpkg \
|
||||||
|
bin/pkg/signpkg
|
||||||
|
|
||||||
LN_COMMITPKG = \
|
LN_COMMITPKG = \
|
||||||
extrapkg \
|
extrapkg \
|
||||||
@@ -90,7 +90,7 @@ LN_DEPLOYPKG = \
|
|||||||
deploypkg-gnome-wobble
|
deploypkg-gnome-wobble
|
||||||
|
|
||||||
PKG_LIBS = \
|
PKG_LIBS = \
|
||||||
$(wildcard lib/pkg/*)
|
$(wildcard lib/pkg/*.sh)
|
||||||
|
|
||||||
PKG_UTIL = lib/util-pkg.sh
|
PKG_UTIL = lib/util-pkg.sh
|
||||||
|
|
||||||
|
@@ -28,7 +28,7 @@ artools
|
|||||||
- pkg:
|
- pkg:
|
||||||
* namcap
|
* namcap
|
||||||
* git-subrepo
|
* git-subrepo
|
||||||
* jshon
|
* jq
|
||||||
|
|
||||||
- iso:
|
- iso:
|
||||||
* dosfstools
|
* dosfstools
|
||||||
|
@@ -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) ;;
|
||||||
|
@@ -17,32 +17,38 @@
|
|||||||
prepare_artools
|
prepare_artools
|
||||||
|
|
||||||
patch_pkg(){
|
patch_pkg(){
|
||||||
local pkg="$1"
|
local pkgpath="$1"
|
||||||
|
local pkg=${pkgpath%/*}
|
||||||
|
pkg=${pkg##*/}
|
||||||
case $pkg in
|
case $pkg in
|
||||||
glibc)
|
glibc)
|
||||||
|
msg2 "Patching %s" "$pkg"
|
||||||
sed -e 's|{locale,systemd/system,tmpfiles.d}|{locale,tmpfiles.d}|' \
|
sed -e 's|{locale,systemd/system,tmpfiles.d}|{locale,tmpfiles.d}|' \
|
||||||
-e '/nscd.service/d' \
|
-e '/nscd.service/d' \
|
||||||
-i $pkg/trunk/PKGBUILD
|
-i $pkgpath/PKGBUILD
|
||||||
;;
|
;;
|
||||||
linux|linux-lts)
|
linux|linux-lts)
|
||||||
sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i $pkg/trunk/PKGBUILD
|
msg2 "Patching %s" "$pkg"
|
||||||
|
sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i $pkgpath/PKGBUILD
|
||||||
sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
|
sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
|
||||||
-i $pkg/trunk/config
|
-i $pkgpath/config
|
||||||
;;
|
;;
|
||||||
bash)
|
bash)
|
||||||
|
msg2 "Patching %s" "$pkg"
|
||||||
sed -e 's|system.bash_logout)|system.bash_logout artix.bashrc)|' \
|
sed -e 's|system.bash_logout)|system.bash_logout artix.bashrc)|' \
|
||||||
-e "s|etc/bash.|etc/bash/|g" \
|
-e "s|etc/bash.|etc/bash/|g" \
|
||||||
-e 's|"$pkgdir/etc/skel/.bash_logout"|"$pkgdir/etc/skel/.bash_logout"\n install -Dm644 artix.bashrc $pkgdir/etc/bash/bashrc.d/artix.bashrc|' \
|
-e 's|"$pkgdir/etc/skel/.bash_logout"|"$pkgdir/etc/skel/.bash_logout"\n install -Dm644 artix.bashrc $pkgdir/etc/bash/bashrc.d/artix.bashrc|' \
|
||||||
-i $pkg/trunk/PKGBUILD
|
-i $pkgpath/PKGBUILD
|
||||||
cd $pkg/trunk
|
cd $pkgpath
|
||||||
patch -Np 1 -i ${DATADIR}/patches/artix-bash.patch
|
patch -Np 1 -i ${DATADIR}/patches/artix-bash.patch
|
||||||
updpkgsums
|
updpkgsums
|
||||||
cd ../..
|
cd ../..
|
||||||
;;
|
;;
|
||||||
gstreamer|gst-plugins-*|licenses)
|
gstreamer|gst-plugins-*|licenses)
|
||||||
|
msg2 "Patching %s" "$pkg"
|
||||||
sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \
|
sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \
|
||||||
-e 's|(Arch Linux)|(Artix Linux)|' \
|
-e 's|(Arch Linux)|(Artix Linux)|' \
|
||||||
-i $pkg/trunk/PKGBUILD
|
-i $pkgpath/PKGBUILD
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
@@ -79,12 +85,12 @@ pull_tree_artix(){
|
|||||||
sync_pkg(){
|
sync_pkg(){
|
||||||
local rsync_args=(-aWxvci --progress --delete-before --no-R --no-implied-dirs)
|
local rsync_args=(-aWxvci --progress --delete-before --no-R --no-implied-dirs)
|
||||||
local src="$1" dest="$2"
|
local src="$1" dest="$2"
|
||||||
|
msg "Sync from Arch [%s] to Artix [%s]" "${src##*archlinux/}" "${dest##*artixlinux/}"
|
||||||
rsync "${rsync_args[@]}" $src/ $dest/
|
rsync "${rsync_args[@]}" $src/ $dest/
|
||||||
}
|
}
|
||||||
|
|
||||||
show_deps(){
|
show_deps(){
|
||||||
local src="$1" repo="$2"
|
local src="$1"
|
||||||
|
|
||||||
. $src/PKGBUILD 2>/dev/null
|
. $src/PKGBUILD 2>/dev/null
|
||||||
|
|
||||||
@@ -92,7 +98,6 @@ show_deps(){
|
|||||||
|
|
||||||
local archver=$(get_full_version)
|
local archver=$(get_full_version)
|
||||||
|
|
||||||
msg2 "repo: %s" "$repo"
|
|
||||||
[[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}"
|
[[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}"
|
||||||
msg2 "pkgname: %s" "${pkgname[*]}"
|
msg2 "pkgname: %s" "${pkgname[*]}"
|
||||||
[[ -n $pkgdesc ]] && msg2 "pkgdesc: %s" "${pkgdesc}"
|
[[ -n $pkgdesc ]] && msg2 "pkgdesc: %s" "${pkgdesc}"
|
||||||
@@ -106,84 +111,65 @@ 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
|
|
||||||
|
|
||||||
local org=$(get_pkg_org "${PACKAGE}")
|
local org=$(get_pkg_org "${PACKAGE}")
|
||||||
|
|
||||||
create_repo "${PACKAGE}" "$org"
|
create_repo "${PACKAGE}" "$org"
|
||||||
|
|
||||||
add_repo_to_team "${PACKAGE}" "$org" "$team"
|
add_repo_to_team "${PACKAGE}" "$org" "${TEAM}"
|
||||||
|
|
||||||
subrepo_clone "${PACKAGE}" "$org"
|
subrepo_clone "${PACKAGE}" "$org"
|
||||||
|
|
||||||
prepare_dir "$dest"
|
prepare_dir "${TREE_DIR_ARTIX}/${GROUP}/${PACKAGE}/trunk"
|
||||||
|
|
||||||
commit_jenkins_files "${PACKAGE}"
|
commit_jenkins_files "${PACKAGE}"
|
||||||
}
|
}
|
||||||
|
|
||||||
from_arch(){
|
from_arch(){
|
||||||
local src= dest=
|
|
||||||
|
|
||||||
cd ${TREE_DIR_ARTIX}
|
cd ${TREE_DIR_ARTIX}
|
||||||
|
|
||||||
local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
|
local srcpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}")
|
||||||
[[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
|
[[ -z $srcpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
|
||||||
|
|
||||||
local package=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE}
|
local repo=$(find_repo "$srcpath")
|
||||||
local repo=$(find_repo "$package" "${staging}" "${unstable}")
|
msg "repo: %s" "$repo"
|
||||||
|
|
||||||
src=$package/repos/$repo
|
local archpath=$srcpath/repos/$repo
|
||||||
|
local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
|
||||||
|
|
||||||
local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
|
show_deps "$archpath"
|
||||||
local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch")
|
|
||||||
|
|
||||||
dest=${TREE_DIR_ARTIX}/$tree_dir/${PACKAGE}/trunk
|
if [[ -f "$artixpath"/.gitrepo ]]; then
|
||||||
|
artixpath="$artixpath"/trunk
|
||||||
|
|
||||||
msg "tree: %s" "$tree_dir"
|
if [[ -d "$artixpath" ]];then
|
||||||
show_deps "$src" "$repo"
|
sync_pkg "$archpath" "$artixpath"
|
||||||
|
patch_pkg "$artixpath"
|
||||||
if [[ -d $dest ]];then
|
fi
|
||||||
|
|
||||||
cd ${TREE_DIR_ARTIX}/$git_tree_artix
|
|
||||||
|
|
||||||
. $dest/PKGBUILD 2>/dev/null
|
|
||||||
local artixver=$(get_full_version)
|
|
||||||
|
|
||||||
msg2 "Artix Version: %s" "$artixver"
|
|
||||||
else
|
else
|
||||||
subrepo_new "$tree_dir" "$git_tree_arch"
|
die "Package '%s' does not exist!" "${PACKAGE}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg "Sync (%s) from [%s] to [%s]" "${PACKAGE}" "$git_tree_arch" "$tree_dir"
|
|
||||||
|
|
||||||
sync_pkg "$src" "$dest"
|
|
||||||
patch_pkg "${PACKAGE}"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
view_build(){
|
view_build(){
|
||||||
local src=
|
local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}")
|
||||||
local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
|
[[ -z $archpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
|
||||||
[[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
|
local repo=$(find_repo "${archpath}")
|
||||||
|
archpath=$archpath/repos/$repo
|
||||||
local pkg_path=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE}
|
msg2 "repo: %s" "$repo"
|
||||||
local repo=$(find_repo "$pkg_path" "${staging}" "${unstable}")
|
show_deps "$archpath"
|
||||||
|
|
||||||
src=$pkg_path/repos/$repo
|
|
||||||
|
|
||||||
show_deps "$src" "$repo"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
check_tree(){
|
check_tree(){
|
||||||
local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
|
local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}")
|
||||||
[[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
|
[[ -z $archpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
|
||||||
local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
|
local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
|
||||||
local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch")
|
local group=${artixpath%/*}
|
||||||
msg "tree_dir: %s" "$tree_dir"
|
msg "group: %s" "${group##*/}"
|
||||||
[[ -z $git_tree_artix ]] && msg2 "exists: %s" "no"
|
|
||||||
[[ -n $git_tree_artix ]] && msg2 "exists: %s" "yes"
|
[[ -z $artixpath ]] && msg2 "exists: %s" "no"
|
||||||
|
[[ -n $artixpath ]] && msg2 "exists: %s" "yes"
|
||||||
}
|
}
|
||||||
|
|
||||||
sync_repos(){
|
sync_repos(){
|
||||||
@@ -199,39 +185,42 @@ sync_repos(){
|
|||||||
|
|
||||||
load_makepkg_config
|
load_makepkg_config
|
||||||
|
|
||||||
|
testing=true
|
||||||
|
staging=true
|
||||||
|
unstable=false
|
||||||
|
|
||||||
sync=false
|
sync=false
|
||||||
sync_arch=true
|
sync_arch=true
|
||||||
sync_artix=true
|
sync_artix=true
|
||||||
import=false
|
import=false
|
||||||
view=false
|
view=false
|
||||||
createnew=false
|
createnew=false
|
||||||
conf=false
|
|
||||||
unstable=false
|
|
||||||
staging=true
|
|
||||||
sync_group=false
|
sync_group=false
|
||||||
check=false
|
check=false
|
||||||
|
|
||||||
PACKAGE=''
|
PACKAGE=''
|
||||||
|
|
||||||
TEAM=${TREE_NAMES_ARTIX[0]}
|
TEAM='community'
|
||||||
GROUP=${TREE_NAMES_ARTIX[0]}
|
GROUP=${TREE_NAMES_ARTIX[0]}
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "Usage: ${0##*/} [options]"
|
echo "Usage: ${0##*/} [options]"
|
||||||
echo ' -p <pkg> Package name'
|
echo ' -p <pkg> Package name'
|
||||||
echo ' -t <team> Team name (only with -n)'
|
echo ' -t <team> Team name (only with -n)'
|
||||||
|
echo ' Possible values: core,extra,community,multilib'
|
||||||
echo " [default: ${TEAM}]"
|
echo " [default: ${TEAM}]"
|
||||||
echo ' -g <group> Group name, the superrepo (only with -n or -s)'
|
echo ' -g <group> Group name, the superrepo (only with -n or -s)'
|
||||||
echo " [default: ${GROUP}]"
|
echo " [default: ${GROUP}]"
|
||||||
echo " -s Clone or pull repos"
|
echo " -s Clone or pull repos"
|
||||||
echo " -z Don't clone or pull arch repos"
|
echo " -a Don't clone or pull arch repos"
|
||||||
echo " -y Don't clone or pull artix repos"
|
echo " -b Don't clone or pull artix repos"
|
||||||
echo ' -i Import a package from arch repos'
|
echo ' -i Import a package from arch repos'
|
||||||
echo ' -n Make new remote subrepo and clone it'
|
echo ' -n New remote subrepo and clone it'
|
||||||
echo ' -u Include kde & gnome unstable (only with -i)'
|
|
||||||
echo ' -w Exclude staging (only with -i)'
|
|
||||||
echo ' -v Check if a package is in the artix tree(s)'
|
echo ' -v Check if a package is in the artix tree(s)'
|
||||||
echo ' -c View package depends'
|
echo ' -c View package depends'
|
||||||
|
echo ' -x Exclude testing (only with -i)'
|
||||||
|
echo ' -y Exclude staging (only with -i)'
|
||||||
|
echo ' -z Include kde & gnome unstable (only with -i)'
|
||||||
echo ' -h This help'
|
echo ' -h This help'
|
||||||
echo ''
|
echo ''
|
||||||
echo ''
|
echo ''
|
||||||
@@ -240,7 +229,7 @@ usage() {
|
|||||||
|
|
||||||
orig_argv=("$0" "$@")
|
orig_argv=("$0" "$@")
|
||||||
|
|
||||||
opts='p:t:g:uwsinzycvh'
|
opts='p:t:g:sinabcvxyzh'
|
||||||
|
|
||||||
while getopts "${opts}" arg; do
|
while getopts "${opts}" arg; do
|
||||||
case "${arg}" in
|
case "${arg}" in
|
||||||
@@ -248,14 +237,15 @@ while getopts "${opts}" arg; do
|
|||||||
t) TEAM="$OPTARG" ;;
|
t) TEAM="$OPTARG" ;;
|
||||||
g) GROUP="$OPTARG"; sync_group=true ;;
|
g) GROUP="$OPTARG"; sync_group=true ;;
|
||||||
s) sync=true ;;
|
s) sync=true ;;
|
||||||
z) sync_arch=false ;;
|
a) sync_arch=false ;;
|
||||||
y) sync_artix=false ;;
|
b) sync_artix=false ;;
|
||||||
i) import=true ;;
|
i) import=true ;;
|
||||||
n) createnew=true ;;
|
n) createnew=true ;;
|
||||||
w) staging=false ;;
|
|
||||||
u) unstable=true ;;
|
|
||||||
c) check=true ;;
|
c) check=true ;;
|
||||||
v) view=true ;;
|
v) view=true ;;
|
||||||
|
x) testing=false ;;
|
||||||
|
y) staging=false ;;
|
||||||
|
z) unstable=true ;;
|
||||||
h|?) usage 0 ;;
|
h|?) usage 0 ;;
|
||||||
*) echo "invalid argument '${arg}'"; usage 1 ;;
|
*) echo "invalid argument '${arg}'"; usage 1 ;;
|
||||||
esac
|
esac
|
||||||
@@ -266,6 +256,8 @@ shift $(($OPTIND - 1))
|
|||||||
prepare_dir "${TREE_DIR_ARTIX}"
|
prepare_dir "${TREE_DIR_ARTIX}"
|
||||||
prepare_dir "${TREE_DIR_ARCH}"
|
prepare_dir "${TREE_DIR_ARCH}"
|
||||||
|
|
||||||
|
set_arch_repos "$testing" "$staging" "$unstable"
|
||||||
|
|
||||||
${sync} && sync_repos
|
${sync} && sync_repos
|
||||||
|
|
||||||
${view} && view_build
|
${view} && view_build
|
||||||
|
@@ -18,6 +18,68 @@ shopt -s extglob
|
|||||||
|
|
||||||
load_makepkg_config
|
load_makepkg_config
|
||||||
|
|
||||||
|
pkgver_equal() {
|
||||||
|
if [[ $1 = *-* && $2 = *-* ]]; then
|
||||||
|
# if both versions have a pkgrel, then they must be an exact match
|
||||||
|
[[ $1 = "$2" ]]
|
||||||
|
else
|
||||||
|
# otherwise, trim any pkgrel and compare the bare version.
|
||||||
|
[[ ${1%%-*} = "${2%%-*}" ]]
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
find_cached_package() {
|
||||||
|
local searchdirs=("$PKGDEST" "$PWD") results=()
|
||||||
|
local targetname=$1 targetver=$2 targetarch=$3
|
||||||
|
local dir pkg pkgbasename name ver rel arch r results
|
||||||
|
|
||||||
|
for dir in "${searchdirs[@]}"; do
|
||||||
|
[[ -d $dir ]] || continue
|
||||||
|
|
||||||
|
for pkg in "$dir"/*.pkg.tar?(.!(sig|*.*)); do
|
||||||
|
[[ -f $pkg ]] || continue
|
||||||
|
|
||||||
|
# avoid adding duplicates of the same inode
|
||||||
|
for r in "${results[@]}"; do
|
||||||
|
[[ $r -ef $pkg ]] && continue 2
|
||||||
|
done
|
||||||
|
|
||||||
|
# split apart package filename into parts
|
||||||
|
pkgbasename=${pkg##*/}
|
||||||
|
pkgbasename=${pkgbasename%.pkg.tar*}
|
||||||
|
|
||||||
|
arch=${pkgbasename##*-}
|
||||||
|
pkgbasename=${pkgbasename%-"$arch"}
|
||||||
|
|
||||||
|
rel=${pkgbasename##*-}
|
||||||
|
pkgbasename=${pkgbasename%-"$rel"}
|
||||||
|
|
||||||
|
ver=${pkgbasename##*-}
|
||||||
|
name=${pkgbasename%-"$ver"}
|
||||||
|
|
||||||
|
if [[ $targetname = "$name" && $targetarch = "$arch" ]] &&
|
||||||
|
pkgver_equal "$targetver" "$ver-$rel"; then
|
||||||
|
results+=("$pkg")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
case ${#results[*]} in
|
||||||
|
0)
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
1)
|
||||||
|
printf '%s\n' "${results[0]}"
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
error 'Multiple packages found:'
|
||||||
|
printf '\t%s\n' "${results[@]}" >&2
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
cat <<- _EOF_
|
cat <<- _EOF_
|
||||||
Usage: ${BASH_SOURCE[0]##*/} [OPTIONS]
|
Usage: ${BASH_SOURCE[0]##*/} [OPTIONS]
|
||||||
|
@@ -32,15 +32,30 @@ prepare_commit(){
|
|||||||
[[ ! -d repos/$dest ]] && mkdir repos/$dest
|
[[ ! -d repos/$dest ]] && mkdir repos/$dest
|
||||||
}
|
}
|
||||||
|
|
||||||
commit_pkg(){
|
check_team(){
|
||||||
local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
|
if [[ ${REPO_SRC} == "core" && ${REPO_DEST} == "extra" ]] || \
|
||||||
if [[ -n ${git_tree} ]];then
|
[[ ${REPO_SRC} == "extra" && ${REPO_DEST} == "core" ]] || \
|
||||||
|
[[ ${REPO_SRC} == "extra" && ${REPO_DEST} == "community" ]] || \
|
||||||
|
[[ ${REPO_SRC} == "community" && ${REPO_DEST} == "extra" ]] ;then
|
||||||
|
|
||||||
cd ${TREE_DIR_ARTIX}/${git_tree}
|
local org=$(get_pkg_org "${PACKAGE}")
|
||||||
|
add_repo_to_team "${PACKAGE}" "$org" "${REPO_DEST}"
|
||||||
|
remove_repo_from_team "${PACKAGE}" "$org" "${REPO_SRC}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
commit_pkg(){
|
||||||
|
local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
|
||||||
|
|
||||||
|
if [[ -n ${artixpath} ]];then
|
||||||
|
|
||||||
|
local group=${artixpath%/*}
|
||||||
|
|
||||||
|
cd ${group}
|
||||||
|
|
||||||
local head=$(get_local_head)
|
local head=$(get_local_head)
|
||||||
|
|
||||||
cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE}
|
cd ${artixpath}
|
||||||
|
|
||||||
local pkgbuild=$(get_path "${REPO_SRC}")
|
local pkgbuild=$(get_path "${REPO_SRC}")
|
||||||
|
|
||||||
@@ -67,19 +82,18 @@ commit_pkg(){
|
|||||||
commit_msg="[${REPO_SRC}] '${PACKAGE}-$version' ${action}"
|
commit_msg="[${REPO_SRC}] '${PACKAGE}-$version' ${action}"
|
||||||
msg "Action: %s" "$commit_msg"
|
msg "Action: %s" "$commit_msg"
|
||||||
git add .
|
git add .
|
||||||
|
|
||||||
fi
|
fi
|
||||||
git commit -m "$commit_msg"
|
git commit -m "$commit_msg"
|
||||||
|
|
||||||
cd ${TREE_DIR_ARTIX}/${git_tree}
|
cd ${group}
|
||||||
|
|
||||||
${push} && pull_tree "${git_tree}" "$head"
|
${push} && pull_tree "${group##*/}" "$head"
|
||||||
|
|
||||||
# subrepo_pull "${PACKAGE}"
|
# subrepo_pull "${PACKAGE}"
|
||||||
subrepo_push "${PACKAGE}"
|
subrepo_push "${PACKAGE}"
|
||||||
subrepo_clean "${PACKAGE}"
|
subrepo_clean "${PACKAGE}"
|
||||||
|
|
||||||
${push} && push_tree "${git_tree}"
|
${push} && push_tree "${group##*/}"
|
||||||
|
|
||||||
git prune
|
git prune
|
||||||
else
|
else
|
||||||
@@ -87,15 +101,17 @@ commit_pkg(){
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
symlink_commit_pkg(){
|
repo_commit_pkg(){
|
||||||
local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
|
local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
|
||||||
if [[ -n ${git_tree} ]];then
|
if [[ -n ${artixpath} ]];then
|
||||||
|
|
||||||
cd ${TREE_DIR_ARTIX}/${git_tree}
|
local group=${artixpath%/*}
|
||||||
|
|
||||||
|
cd ${group}
|
||||||
|
|
||||||
local head=$(get_local_head)
|
local head=$(get_local_head)
|
||||||
|
|
||||||
cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE}
|
cd ${artixpath}
|
||||||
|
|
||||||
local pkgbuild=$(get_path "${REPO_SRC}")
|
local pkgbuild=$(get_path "${REPO_SRC}")
|
||||||
|
|
||||||
@@ -127,22 +143,36 @@ symlink_commit_pkg(){
|
|||||||
git add .
|
git add .
|
||||||
git commit -m "$commit_msg"
|
git commit -m "$commit_msg"
|
||||||
|
|
||||||
cd ${TREE_DIR_ARTIX}/${git_tree}
|
cd ${group}
|
||||||
|
|
||||||
${push} && pull_tree "${git_tree}" "$head"
|
${push} && pull_tree "${group##*/}" "$head"
|
||||||
|
|
||||||
# subrepo_pull "${PACKAGE}"
|
# subrepo_pull "${PACKAGE}"
|
||||||
subrepo_push "${PACKAGE}"
|
subrepo_push "${PACKAGE}"
|
||||||
subrepo_clean "${PACKAGE}"
|
subrepo_clean "${PACKAGE}"
|
||||||
|
|
||||||
${push} && push_tree "${git_tree}"
|
${push} && push_tree "${group##*/}"
|
||||||
|
|
||||||
git prune
|
git prune
|
||||||
|
|
||||||
|
check_team
|
||||||
else
|
else
|
||||||
error "Package '%s' does not exist!" "${PACKAGE}"
|
error "Package '%s' does not exist!" "${PACKAGE}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is_valid_repo(){
|
||||||
|
local src="$1" cases=
|
||||||
|
set_arch_repos true true true
|
||||||
|
for r in ${ARCH_REPOS[@]};do
|
||||||
|
cases=${cases:-}${cases:+|}${r}
|
||||||
|
done
|
||||||
|
eval "case $src in
|
||||||
|
${cases}|trunk) return 0 ;;
|
||||||
|
*) return 1 ;;
|
||||||
|
esac"
|
||||||
|
}
|
||||||
|
|
||||||
load_makepkg_config
|
load_makepkg_config
|
||||||
|
|
||||||
REPO_SRC='trunk'
|
REPO_SRC='trunk'
|
||||||
@@ -186,7 +216,7 @@ if $(is_valid_repo "${REPO_SRC}");then
|
|||||||
if [[ "${cmd}" == 'commitpkg' ]];then
|
if [[ "${cmd}" == 'commitpkg' ]];then
|
||||||
commit_pkg
|
commit_pkg
|
||||||
else
|
else
|
||||||
symlink_commit_pkg
|
repo_commit_pkg
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
error "source repository '%s' is not valid!" "${REPO_SRC}"
|
error "source repository '%s' is not valid!" "${REPO_SRC}"
|
||||||
|
@@ -16,116 +16,126 @@
|
|||||||
|
|
||||||
prepare_artools
|
prepare_artools
|
||||||
|
|
||||||
compare(){
|
get_import_path(){
|
||||||
local pkgpath="$1" group="$2"
|
local pkg="$1" import_path=
|
||||||
|
|
||||||
|
for tree in ${TREE_NAMES_ARCH[@]};do
|
||||||
|
[[ -d ${TREE_DIR_ARCH}/$tree/$pkg/repos ]] && import_path=${TREE_DIR_ARCH}/$tree/$pkg
|
||||||
|
done
|
||||||
|
echo $import_path
|
||||||
|
}
|
||||||
|
|
||||||
|
compare_m(){
|
||||||
|
local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4"
|
||||||
|
|
||||||
|
local result=$(vercmp "$artixver" "$archver")
|
||||||
|
if [[ $artixrepo == *testing* ]] || [[ $artixrepo == *staging* ]]; then
|
||||||
|
if [[ "$archrepo" == "$artixrepo" ]]; then
|
||||||
|
msg_row "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||||
|
else
|
||||||
|
msg_row_notify "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||||
|
if [[ -n "$archrepo" ]]; then
|
||||||
|
printf "%s\n" "${archrepo%-*}:${artixrepo%-*}:$pkg" >> ${TREE_DIR_ARTIX}/pkg_moves.list
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
compare_u(){
|
||||||
|
local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4"
|
||||||
|
|
||||||
|
local result=$(vercmp "$artixver" "$archver")
|
||||||
|
if [ $result -eq -1 ];then
|
||||||
|
msg_row_upgrade "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||||
|
printf "%s\n" "${archrepo%-*}:$pkg" >> ${TREE_DIR_ARTIX}/pkg_upgrades.list
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
compare_d(){
|
||||||
|
local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4"
|
||||||
|
|
||||||
|
local result=$(vercmp "$artixver" "$archver")
|
||||||
|
if [ $result -eq 1 ];then
|
||||||
|
if [[ -n "$archver" ]] && [[ -n "$archrepo" ]];then
|
||||||
|
msg_row_downgrade "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pre_compare(){
|
||||||
|
local func="$1" pkgpath="$2"
|
||||||
|
local group="${pkgpath%/*}"
|
||||||
|
group=${group##*/}
|
||||||
local pkg=${pkgpath##*/}
|
local pkg=${pkgpath##*/}
|
||||||
local artixrepo=$(find_repo "$pkgpath" "${staging}" "${unstable}")
|
local artixrepo=$(find_repo "$pkgpath")
|
||||||
local artixshow=${artixrepo%-*}
|
|
||||||
local pkgbuild=$pkgpath/repos/$artixrepo/PKGBUILD
|
local pkgbuild=$pkgpath/repos/$artixrepo/PKGBUILD
|
||||||
|
|
||||||
if [[ -f $pkgbuild ]];then
|
if [[ -f $pkgbuild ]];then
|
||||||
|
|
||||||
. $pkgbuild 2>/dev/null
|
. $pkgbuild 2>/dev/null
|
||||||
local artixver=$(get_full_version)
|
local artixver=$(get_full_version)
|
||||||
|
|
||||||
local archpath=$(get_import_path $pkg)
|
local archpath=$(get_import_path $pkg)
|
||||||
|
local archrepo=$(find_repo "${archpath}")
|
||||||
local archrepo=$(find_repo "$archpath" "${staging}" "${unstable}")
|
|
||||||
|
|
||||||
local archshow=${archrepo%-*}
|
|
||||||
pkgbuild=$archpath/repos/$archrepo/PKGBUILD
|
pkgbuild=$archpath/repos/$archrepo/PKGBUILD
|
||||||
|
|
||||||
if [[ -f $pkgbuild ]];then
|
if [[ -f "$pkgbuild" ]];then
|
||||||
. $pkgbuild 2>/dev/null
|
. $pkgbuild 2>/dev/null
|
||||||
local archver=$(get_full_version)
|
local archver=$(get_full_version)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local result=$(vercmp "$artixver" "$archver")
|
"$func" "$artixver" "$artixrepo" "$archver" "$archrepo"
|
||||||
|
|
||||||
local repomatch=false
|
|
||||||
[[ "$archrepo" == "$artixrepo" ]] && repomatch=true
|
|
||||||
|
|
||||||
if ${move};then
|
|
||||||
|
|
||||||
if [ $result -gt -1 ];then
|
|
||||||
case $artixrepo in
|
|
||||||
*testing*|*staging*)
|
|
||||||
if $repomatch;then
|
|
||||||
msg_row "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
|
||||||
else
|
|
||||||
msg_row_notify "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
|
||||||
|
|
||||||
if [[ -n "$archshow" ]]; then
|
|
||||||
printf "%s\n" "$archshow:$artixshow:$pkg" >> ${TREE_DIR_ARTIX}/pkg_moves.list
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif ${upgrades};then
|
|
||||||
|
|
||||||
if [ $result -eq -1 ];then
|
|
||||||
msg_row_upgrade "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
|
||||||
|
|
||||||
printf "%s\n" "$archshow:$pkg" >> ${TREE_DIR_ARTIX}/pkg_upgrades.list
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif ${downgrades};then
|
|
||||||
|
|
||||||
if [ $result -eq 1 ];then
|
|
||||||
if [[ -n $archver ]] && [[ -n $archrepo ]];then
|
|
||||||
msg_row_downgrade "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
unset pkgver epoch pkgrel artixver archver pkgbuild archpath
|
unset pkgver epoch pkgrel artixver archver pkgbuild archpath
|
||||||
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
is_db_entry() {
|
compare_upgrades(){
|
||||||
local pkgname="$1" repo="$(arch2artix $2)"
|
local pkgpath="${1%/*}"
|
||||||
if [[ -d ${db_cache_dir}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then
|
pre_compare compare_u "$pkgpath"
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
return 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
check_db(){
|
compare_downgrades(){
|
||||||
local pkgpath="$1"
|
local pkgpath="${1%/*}"
|
||||||
local pkg=${pkgpath##*/}
|
pre_compare compare_d "$pkgpath"
|
||||||
local sarch=(any ${ARCH})
|
}
|
||||||
local arch_repos=$(arch_repos "${staging}" "${unstable}")
|
|
||||||
|
|
||||||
for repo in ${arch_repos[@]};do
|
compare_move(){
|
||||||
|
local pkgpath="${1%/*}"
|
||||||
|
pre_compare compare_m "$pkgpath"
|
||||||
|
}
|
||||||
|
|
||||||
for a in ${sarch[@]};do
|
tree_loop(){
|
||||||
|
local func="$1"
|
||||||
local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD
|
for tree in ${TREE_NAMES_ARTIX[@]};do
|
||||||
|
local pkgs=$(find ${TREE_DIR_ARTIX}/$tree -name trunk)
|
||||||
if [[ -f $pkgbuild ]];then
|
for package in ${pkgs[@]}; do
|
||||||
|
"$func" "$package"
|
||||||
. $pkgbuild 2>/dev/null
|
|
||||||
local artixver=$(get_full_version)
|
|
||||||
local is_entry=false
|
|
||||||
|
|
||||||
for name in ${pkgname[@]};do
|
|
||||||
|
|
||||||
if is_db_entry "$name-$artixver" "$repo";then
|
|
||||||
is_entry=true
|
|
||||||
fi
|
|
||||||
if ! $is_entry; then
|
|
||||||
msg_row "${tableU}" "$repo" "$name" "$artixver" "$is_entry"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
show_compare_header(){
|
||||||
|
msg_table_header "${table}" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" "Group"
|
||||||
|
}
|
||||||
|
|
||||||
|
show_upgrades_table(){
|
||||||
|
show_compare_header
|
||||||
|
[[ -f ${TREE_DIR_ARTIX}/pkg_upgrades.list ]] && rm ${TREE_DIR_ARTIX}/pkg_upgrades.list
|
||||||
|
tree_loop compare_upgrades
|
||||||
|
}
|
||||||
|
|
||||||
|
show_downgrades_table(){
|
||||||
|
show_compare_header
|
||||||
|
tree_loop compare_downgrades
|
||||||
|
}
|
||||||
|
|
||||||
|
show_move_table(){
|
||||||
|
show_compare_header
|
||||||
|
[[ -f ${TREE_DIR_ARTIX}/pkg_moves.list ]] && rm ${TREE_DIR_ARTIX}/pkg_moves.list
|
||||||
|
tree_loop compare_move
|
||||||
|
}
|
||||||
|
|
||||||
update_db_cache(){
|
update_db_cache(){
|
||||||
msg "Updating database cache"
|
msg "Updating database cache"
|
||||||
for repo in "${searchrepos[@]}"; do
|
for repo in "${searchrepos[@]}"; do
|
||||||
@@ -148,80 +158,125 @@ query_db() {
|
|||||||
read -r match
|
read -r match
|
||||||
pkg=${pkg#${db}}
|
pkg=${pkg#${db}}
|
||||||
pkg="${pkg%/*}"
|
pkg="${pkg%/*}"
|
||||||
|
|
||||||
msg_row "${tableQ}" "${repo}" "${pkg}" "${match}"
|
msg_row "${tableQ}" "${repo}" "${pkg}" "${match}"
|
||||||
done < <(grep -rZ "${library}" "${db}") | sort -u
|
done < <(grep -rZ "${library}" "${db}") | sort -u
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
exit 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
show_version_table(){
|
show_lib_table() {
|
||||||
|
${sync} && update_db_cache
|
||||||
|
msg_table_header "${tableQ}" "Repo" "Package" "Library"
|
||||||
|
query_db
|
||||||
|
}
|
||||||
|
|
||||||
if ${check};then
|
is_db_entry() {
|
||||||
${sync} && update_db_cache
|
local pkgname="$1" repo="${REPOS[$2]}"
|
||||||
msg_table_header "${tableU}" "Repo" "Package" "Version" "Database"
|
|
||||||
elif ${query};then
|
if [[ -d ${db_cache_dir}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then
|
||||||
${sync} && update_db_cache
|
return 0
|
||||||
msg_table_header "${tableQ}" "Repo" "Package" "Library"
|
|
||||||
query_db
|
|
||||||
else
|
|
||||||
msg_table_header "${table}" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" "Group"
|
|
||||||
fi
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
if ${move} && [[ -f ${TREE_DIR_ARTIX}/pkg_moves.list ]]; then
|
check_db(){
|
||||||
rm ${TREE_DIR_ARTIX}/pkg_moves.list
|
local pkgpath="${1%/*}"
|
||||||
elif ${upgrades} && [[ -f ${TREE_DIR_ARTIX}/pkg_upgrades.list ]]; then
|
local pkg=${pkgpath##*/}
|
||||||
rm ${TREE_DIR_ARTIX}/pkg_upgrades.list
|
local sarch=(any ${ARCH})
|
||||||
fi
|
|
||||||
|
|
||||||
for tree in ${TREE_NAMES_ARTIX[@]};do
|
for repo in ${ARCH_REPOS[@]};do
|
||||||
local git=$(find ${TREE_DIR_ARTIX}/$tree/ -mindepth 1 -maxdepth 1 -type d)
|
for a in ${sarch[@]};do
|
||||||
for package in ${git[@]}; do
|
|
||||||
if ${check};then
|
local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD
|
||||||
check_db "$package"
|
|
||||||
else
|
if [[ -f $pkgbuild ]];then
|
||||||
compare "$package" "$tree"
|
|
||||||
|
. $pkgbuild 2>/dev/null
|
||||||
|
local artixver=$(get_full_version)
|
||||||
|
|
||||||
|
local is_entry=false
|
||||||
|
|
||||||
|
for name in ${pkgname[@]};do
|
||||||
|
|
||||||
|
if is_db_entry "$name-$artixver" "$repo";then
|
||||||
|
is_entry=true
|
||||||
|
fi
|
||||||
|
if ! $is_entry;then
|
||||||
|
msg_row "${tableU}" "$repo" "$name" "$artixver" "$is_entry"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
show_db_table(){
|
||||||
|
${sync} && update_db_cache
|
||||||
|
msg_table_header "${tableU}" "Repo" "Package" "Version" "Database"
|
||||||
|
tree_loop check_db
|
||||||
|
}
|
||||||
|
|
||||||
db_cache_dir="${XDG_CACHE_HOME:-$USER_HOME/.cache}/artools"
|
db_cache_dir="${XDG_CACHE_HOME:-$USER_HOME/.cache}/artools"
|
||||||
|
|
||||||
load_makepkg_config
|
load_makepkg_config
|
||||||
|
|
||||||
unstable=false
|
testing=true
|
||||||
staging=true
|
staging=true
|
||||||
|
unstable=false
|
||||||
|
|
||||||
upgrades=false
|
upgrades=false
|
||||||
downgrades=false
|
downgrades=false
|
||||||
move=false
|
move=false
|
||||||
check=false
|
|
||||||
sync=false
|
|
||||||
query=false
|
|
||||||
|
|
||||||
artix_repos=(
|
sync=false
|
||||||
'goblins' 'gremlins' 'system' 'world'
|
check=false
|
||||||
'galaxy-goblins' 'galaxy-gremlins' 'galaxy'
|
query=false
|
||||||
'lib32-goblins' 'lib32-gremlins' 'lib32'
|
|
||||||
'gnome-wobble' 'kde-wobble'
|
|
||||||
)
|
|
||||||
|
|
||||||
readonly table="%-18s %-18s %-25s %-27s %-27s %-10s"
|
readonly table="%-18s %-18s %-25s %-27s %-27s %-10s"
|
||||||
readonly tableU="%-20s %-35s %-30s %-10s"
|
readonly tableU="%-20s %-35s %-30s %-10s"
|
||||||
readonly tableQ="%-20s %-45s %s"
|
readonly tableQ="%-20s %-45s %s"
|
||||||
|
|
||||||
searchrepos=(${artix_repos[@]})
|
declare -A REPOS=(
|
||||||
|
[core]=system
|
||||||
|
[extra]=world
|
||||||
|
[community]=galaxy
|
||||||
|
[multilib]=lib32
|
||||||
|
[testing]=gremlins
|
||||||
|
[staging]=goblins
|
||||||
|
[community-testing]=galaxy-gremlins
|
||||||
|
[community-staging]=galaxy-goblins
|
||||||
|
[multilib-testing]=lib32-gremlins
|
||||||
|
[multilib-staging]=lib32-goblins
|
||||||
|
[kde-unstable]=kde-wobble
|
||||||
|
[gnome-unstable]=gnome-wobble
|
||||||
|
)
|
||||||
|
|
||||||
|
searchrepos=(
|
||||||
|
${REPOS[kde-unstable]}
|
||||||
|
${REPOS[gnome-unstable]}
|
||||||
|
${REPOS[staging]}
|
||||||
|
${REPOS[testing]}
|
||||||
|
${REPOS[core]}
|
||||||
|
${REPOS[extra]}
|
||||||
|
${REPOS[community-staging]}
|
||||||
|
${REPOS[community-testing]}
|
||||||
|
${REPOS[community]}
|
||||||
|
${REPOS[multilib-staging]}
|
||||||
|
${REPOS[multilib-testing]}
|
||||||
|
${REPOS[multilib]}
|
||||||
|
)
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "Usage: ${0##*/} [options] (with -q [libname])"
|
echo "Usage: ${0##*/} [options] (with -q [libname])"
|
||||||
echo ' -u Show upgrade packages'
|
echo ' -u Show upgrade packages'
|
||||||
echo ' -d Show downgrade packages'
|
echo ' -d Show downgrade packages'
|
||||||
echo ' -m Show packages to move'
|
echo ' -m Show packages to move'
|
||||||
echo " -x Don't inlcude staging packages"
|
echo " -x Don't inlcude testing packages"
|
||||||
echo ' -y Include unstable kde and gnome'
|
echo " -y Don't inlcude staging packages"
|
||||||
echo ' -c Check repos'
|
echo ' -z Include unstable kde and gnome'
|
||||||
echo " -s Sync repo databases"
|
echo " -s Sync repo databases"
|
||||||
|
echo ' -c Check repos'
|
||||||
echo " -q Query repo databases for so libs"
|
echo " -q Query repo databases for so libs"
|
||||||
echo ' -r <repo> Repo name to query'
|
echo ' -r <repo> Repo name to query'
|
||||||
echo ' [default: all]'
|
echo ' [default: all]'
|
||||||
@@ -233,19 +288,20 @@ usage() {
|
|||||||
|
|
||||||
orig_argv=("$0" "$@")
|
orig_argv=("$0" "$@")
|
||||||
|
|
||||||
opts='r:qcsudmxyh'
|
opts='r:qcsudmxyzh'
|
||||||
|
|
||||||
while getopts "${opts}" arg; do
|
while getopts "${opts}" arg; do
|
||||||
case "${arg}" in
|
case "${arg}" in
|
||||||
u) upgrades=true ;;
|
u) upgrades=true ;;
|
||||||
d) downgrades=true ;;
|
d) downgrades=true ;;
|
||||||
m) move=true ;;
|
m) move=true ;;
|
||||||
x) staging=false ;;
|
|
||||||
y) unstable=true ;;
|
|
||||||
c) check=true ;;
|
|
||||||
s) sync=true ;;
|
s) sync=true ;;
|
||||||
|
c) check=true ;;
|
||||||
q) query=true ;;
|
q) query=true ;;
|
||||||
r) searchrepos=("$OPTARG") ;;
|
r) searchrepos=("$OPTARG") ;;
|
||||||
|
x) testing=false ;;
|
||||||
|
y) staging=false ;;
|
||||||
|
z) unstable=true ;;
|
||||||
h|?) usage 0 ;;
|
h|?) usage 0 ;;
|
||||||
*) echo "invalid argument '${arg}'"; usage 1 ;;
|
*) echo "invalid argument '${arg}'"; usage 1 ;;
|
||||||
esac
|
esac
|
||||||
@@ -255,4 +311,14 @@ shift $(($OPTIND - 1))
|
|||||||
|
|
||||||
library="$1"; shift
|
library="$1"; shift
|
||||||
|
|
||||||
show_version_table
|
set_arch_repos "$testing" "$staging" "$unstable"
|
||||||
|
|
||||||
|
${move} && show_move_table
|
||||||
|
|
||||||
|
${upgrades} && show_upgrades_table
|
||||||
|
|
||||||
|
${downgrades} && show_downgrades_table
|
||||||
|
|
||||||
|
${check} && show_db_table
|
||||||
|
|
||||||
|
${query} && show_lib_table
|
||||||
|
@@ -16,35 +16,11 @@
|
|||||||
|
|
||||||
prepare_artools
|
prepare_artools
|
||||||
|
|
||||||
find_cached_pkgfile() {
|
|
||||||
local searchdirs=("$PKGDEST" "$PWD") results=()
|
|
||||||
local pkg="$1"
|
|
||||||
local search=${pkg%.*}
|
|
||||||
for dir in "${searchdirs[@]}"; do
|
|
||||||
[[ -d $dir ]] || continue
|
|
||||||
results+=$(find "$dir" -type f -name "$search.*" ! -path '*.sig')
|
|
||||||
done
|
|
||||||
case ${#results[*]} in
|
|
||||||
0)
|
|
||||||
return 1
|
|
||||||
;;
|
|
||||||
1)
|
|
||||||
printf '%s\n' "${results[0]}"
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
error 'Multiple packages found:'
|
|
||||||
printf '\t%s\n' "${results[@]}" >&2
|
|
||||||
return 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
get_pkgbasename(){
|
get_pkgbasename(){
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
local pkgbasename name ver rel arch
|
local pkgbasename name ver rel arch
|
||||||
|
|
||||||
pkgbasename=${pkg%.pkg.tar.?z}
|
pkgbasename=${pkg%.pkg.tar*}
|
||||||
arch=${pkgbasename##*-}
|
arch=${pkgbasename##*-}
|
||||||
pkgbasename=${pkgbasename%-"$arch"}
|
pkgbasename=${pkgbasename%-"$arch"}
|
||||||
|
|
||||||
@@ -57,86 +33,41 @@ get_pkgbasename(){
|
|||||||
echo $name
|
echo $name
|
||||||
}
|
}
|
||||||
|
|
||||||
update_repo2(){
|
add(){
|
||||||
local repo="$1"
|
packages+=("$pkg.$ext")
|
||||||
local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
|
action='add'
|
||||||
|
ln -sf "${pkgfile}"{,.sig} "$repo_path"/
|
||||||
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
|
|
||||||
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
|
local to_remove=$(get_pkgbasename "$pkg.$ext")
|
||||||
local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
|
packages+=("$to_remove")
|
||||||
|
action='remove'
|
||||||
|
rm "$repo_path"/"$to_remove"*pkg.tar*
|
||||||
|
}
|
||||||
|
|
||||||
. PKGBUILD
|
repo_action(){
|
||||||
|
local packages=() action= func="$1"
|
||||||
local pkgsearch=(${pkgname[@]})
|
for pkgname in ${passfiles[@]}; do
|
||||||
if check_option "debug" "y"; then
|
pkg=${pkgname%.*}
|
||||||
pkgbase=${pkgbase:-${pkgname[@]}}
|
for ext in zst xz;do
|
||||||
pkgsearch+=("${pkgbase}-debug")
|
if pkgfile=$(find_cached_pkgfile "$pkg.$ext");then
|
||||||
fi
|
msg "Found: %s" "${pkgfile}"
|
||||||
|
"$func"
|
||||||
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
|
||||||
fi
|
done
|
||||||
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 +75,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 +104,13 @@ passfiles="$@"
|
|||||||
|
|
||||||
prepare_dir "${REPOS_ROOT}"
|
prepare_dir "${REPOS_ROOT}"
|
||||||
|
|
||||||
|
repo_path=${REPOS_ROOT}/${dest_repo}/os/${ARCH}
|
||||||
|
|
||||||
if [[ -n ${passfiles[@]} ]]; then
|
if [[ -n ${passfiles[@]} ]]; then
|
||||||
update_repo2 "${dest_repo}"
|
if ${add_pkg}; then
|
||||||
else
|
repo_action add
|
||||||
update_repo "${dest_repo}"
|
fi
|
||||||
|
if ${rm_pkg}; then
|
||||||
|
repo_action remove
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
@@ -377,11 +377,7 @@ if chroot-run \
|
|||||||
"$copydir" \
|
"$copydir" \
|
||||||
/chrootbuild "${makepkg_args[@]}"
|
/chrootbuild "${makepkg_args[@]}"
|
||||||
then
|
then
|
||||||
pkgnames=()
|
mapfile -t pkgnames < <(sudo -u "$makepkg_user" bash -c 'source PKGBUILD; printf "%s\n" "${pkgname[@]}"')
|
||||||
for pkgfile in "$copydir"/pkgdest/*; do
|
|
||||||
pkgfile=${pkgfile##*/};
|
|
||||||
pkgnames+=("${pkgfile%-*-*-*}");
|
|
||||||
done
|
|
||||||
move_products
|
move_products
|
||||||
else
|
else
|
||||||
(( ret += 1 ))
|
(( ret += 1 ))
|
||||||
@@ -398,27 +394,28 @@ if (( ret != 0 )); then
|
|||||||
else
|
else
|
||||||
if (( run_checkpkg )); then
|
if (( run_checkpkg )); then
|
||||||
msg "Running checkpkg"
|
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
|
mapfile -t remotepkgs < <(pacman --config "$copydir"/etc/pacman.conf \
|
||||||
remotepkgs=($(pacman -Sddp --dbpath "$dbpath" --logfile /dev/null "${pkgnames[@]}"))
|
--dbpath "$copydir"/var/lib/pacman \
|
||||||
if (( $? )); then
|
-Sddp "${pkgnames[@]}")
|
||||||
|
|
||||||
|
if ! wait $!; then
|
||||||
warning "Skipped checkpkg due to missing repo packages"
|
warning "Skipped checkpkg due to missing repo packages"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
# download package files if any non-local location exists
|
# download package files if any non-local location exists
|
||||||
for remotepkg in "${remotepkgs[@]}"; do
|
for remotepkg in "${remotepkgs[@]}"; do
|
||||||
[[ $remotepkg == file://* ]] && continue
|
if [[ $remotepkg != file://* ]]; then
|
||||||
msg2 "Downloading current versions"
|
msg2 "Downloading current versions"
|
||||||
pacman --noconfirm -Swdd --dbpath "$dbpath" --logfile /dev/null "${pkgnames[@]}"
|
chroot-run "$copydir" pacman --noconfirm -Swdd "${pkgnames[@]}"
|
||||||
break
|
mapfile -t remotepkgs < <(pacman --config "$copydir"/etc/pacman.conf \
|
||||||
|
--dbpath "$copydir"/var/lib/pacman \
|
||||||
|
-Sddp "${pkgnames[@]}")
|
||||||
|
break
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
msg2 "Checking packages"
|
msg2 "Checking packages"
|
||||||
sudo -u "$makepkg_user" checkpkg --rmdir --warn
|
sudo -u "$makepkg_user" checkpkg --rmdir --warn "${remotepkgs[@]/#file:\/\//}"
|
||||||
fi
|
fi
|
||||||
true
|
true
|
||||||
fi
|
fi
|
||||||
|
46
bin/pkg/signpkg.in
Normal file
46
bin/pkg/signpkg.in
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright (C) 2018-19 artoo@artixlinux.org
|
||||||
|
# Copyright (C) 2018 Artix Linux Developers
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; version 2 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
|
prepare_artools
|
||||||
|
|
||||||
|
load_makepkg_config
|
||||||
|
|
||||||
|
passfiles="$@"
|
||||||
|
|
||||||
|
sign_pkg(){
|
||||||
|
local file_to_sign="$1"
|
||||||
|
|
||||||
|
if [ ! -e "$file_to_sign" ]; then
|
||||||
|
error "%s does not exist!" "$file_to_sign"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "${BUILDBOT_GPGP}" ]]; then
|
||||||
|
msg2 "Signing [%s]" "${file_to_sign##*/}"
|
||||||
|
gpg --batch --passphrase "${BUILDBOT_GPGP}" --detach-sign "$file_to_sign"
|
||||||
|
else
|
||||||
|
msg2 "Signing [%s] with key %s" "${file_to_sign##*/}" "${GPGKEY}..."
|
||||||
|
gpg --detach-sign --use-agent -u "${GPGKEY}" "$file_to_sign"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
for pkg in ${passfiles[@]}; do
|
||||||
|
if pkgfile=$(find_cached_pkgfile "$pkg");then
|
||||||
|
msg "Found: %s" "${pkgfile}"
|
||||||
|
[[ -e "${pkgfile}".sig ]] && rm "${pkgfile}".sig
|
||||||
|
sign_pkg "${pkgfile}"
|
||||||
|
fi
|
||||||
|
done
|
@@ -14,6 +14,8 @@
|
|||||||
# packages
|
# packages
|
||||||
# community
|
# community
|
||||||
# packages-kernel
|
# packages-kernel
|
||||||
|
# packages-net
|
||||||
|
# packages-gfx
|
||||||
# packages-openrc
|
# packages-openrc
|
||||||
# packages-runit
|
# packages-runit
|
||||||
# packages-s6
|
# packages-s6
|
||||||
@@ -32,6 +34,7 @@
|
|||||||
# packages-mate
|
# packages-mate
|
||||||
# packages-kde
|
# packages-kde
|
||||||
# packages-xfce
|
# packages-xfce
|
||||||
|
# packages-wm
|
||||||
# )
|
# )
|
||||||
|
|
||||||
# HOST_TREE_ARCH=git://git.archlinux.org/svntogit
|
# HOST_TREE_ARCH=git://git.archlinux.org/svntogit
|
||||||
|
@@ -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
|
||||||
@@ -45,7 +47,7 @@ add_svc_s6(){
|
|||||||
|
|
||||||
# rebuild s6-linux-init binaries
|
# rebuild s6-linux-init binaries
|
||||||
chroot $mnt rm -r /etc/s6/current
|
chroot $mnt rm -r /etc/s6/current
|
||||||
chroot $mnt s6-linux-init-maker -1 -N -f etc/s6/skel -G "/usr/bin/agetty -L -8 tty1 115200" -c /etc/s6/current /etc/s6/current
|
chroot $mnt s6-linux-init-maker -1 -N -f /etc/s6/skel -G "/usr/bin/agetty -L -8 tty1 115200" -c /etc/s6/current /etc/s6/current
|
||||||
chroot $mnt mv /etc/s6/current/bin/init /etc/s6/current/bin/s6-init
|
chroot $mnt mv /etc/s6/current/bin/init /etc/s6/current/bin/s6-init
|
||||||
chroot $mnt cp -a /etc/s6/current/bin /usr
|
chroot $mnt cp -a /etc/s6/current/bin /usr
|
||||||
}
|
}
|
||||||
|
185
lib/pkg/git.sh
Normal file
185
lib/pkg/git.sh
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright (C) 2018-19 artoo@artixlinux.org
|
||||||
|
# Copyright (C) 2018 Artix Linux Developers
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; version 2 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
get_local_head(){
|
||||||
|
echo $(git log --pretty=%H ...refs/heads/master^ | head -n 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
get_remote_head(){
|
||||||
|
echo $(git ls-remote origin -h refs/heads/master | cut -f1)
|
||||||
|
}
|
||||||
|
|
||||||
|
clone_tree(){
|
||||||
|
local timer=$(get_timer) url="$1" tree="$2" os="${3:-$(get_osname)}"
|
||||||
|
|
||||||
|
msg "Cloning %s (%s) ..." "$tree" "$os"
|
||||||
|
|
||||||
|
git clone $url/$tree.git
|
||||||
|
show_elapsed_time "${FUNCNAME}" "${timer}"
|
||||||
|
}
|
||||||
|
|
||||||
|
has_changes(){
|
||||||
|
local head_l="$1" head_r="$2"
|
||||||
|
if [[ "$head_l" == "$head_r" ]]; then
|
||||||
|
msg2 "remote changes: no"
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
msg2 "remote changes: yes"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pull_tree(){
|
||||||
|
local tree="$1" local_head="$2" os="${3:-$(get_osname)}"
|
||||||
|
local remote_head=$(get_remote_head)
|
||||||
|
|
||||||
|
msg "Checking (%s) (%s)" "${tree}" "$os"
|
||||||
|
if has_changes "${local_head}" "${remote_head}";then
|
||||||
|
git pull origin master
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
push_tree(){
|
||||||
|
local tree="$1"
|
||||||
|
msg "Update (%s)" "${tree}"
|
||||||
|
git push origin master
|
||||||
|
}
|
||||||
|
|
||||||
|
write_jenkinsfile(){
|
||||||
|
local pkg="$1"
|
||||||
|
local jenkins=$pkg/Jenkinsfile
|
||||||
|
|
||||||
|
echo "@Library('artix-ci') import org.artixlinux.RepoPackage" > $jenkins
|
||||||
|
echo '' >> $jenkins
|
||||||
|
echo 'PackagePipeline(new RepoPackage(this))' >> $jenkins
|
||||||
|
echo '' >> $jenkins
|
||||||
|
|
||||||
|
git add $jenkins
|
||||||
|
}
|
||||||
|
|
||||||
|
write_agentyaml(){
|
||||||
|
local pkg="$1"
|
||||||
|
local agent=$pkg/.artixlinux/agent.yaml label='master'
|
||||||
|
[[ -d $pkg/.artixlinux ]] || mkdir $pkg/.artixlinux
|
||||||
|
|
||||||
|
echo '%YAML 1.2' > $agent
|
||||||
|
echo '---' >> $agent
|
||||||
|
echo '' >> $agent
|
||||||
|
echo "label: $label" >> $agent
|
||||||
|
echo '' >> $agent
|
||||||
|
|
||||||
|
git add $agent
|
||||||
|
}
|
||||||
|
|
||||||
|
commit_jenkins_files(){
|
||||||
|
local pkg="$1"
|
||||||
|
|
||||||
|
write_jenkinsfile "$pkg"
|
||||||
|
write_agentyaml "$pkg"
|
||||||
|
|
||||||
|
git commit -m "initial commit"
|
||||||
|
}
|
||||||
|
|
||||||
|
config_tree(){
|
||||||
|
local tree="$1"
|
||||||
|
cd $tree
|
||||||
|
git config --bool pull.rebase true
|
||||||
|
git config commit.gpgsign true
|
||||||
|
if [[ -n "${GPGKEY}" ]];then
|
||||||
|
git config user.signingkey "${GPGKEY}"
|
||||||
|
else
|
||||||
|
warning "No GPGKEY configured in makepkg.conf!"
|
||||||
|
fi
|
||||||
|
cd ..
|
||||||
|
}
|
||||||
|
|
||||||
|
# write_gitignore() {
|
||||||
|
# local pkg="$1"
|
||||||
|
# local gitignore=$pkg/.gitignore
|
||||||
|
# echo '# ---> ArchLinuxPackages' > $gitignore
|
||||||
|
# echo '*.tar' >> $gitignore
|
||||||
|
# echo '*.tar.*' >> $gitignore
|
||||||
|
# echo '*.jar' >> $gitignore
|
||||||
|
# echo '*.exe' >> $gitignore
|
||||||
|
# echo '*.msi' >> $gitignore
|
||||||
|
# echo '*.zip' >> $gitignore
|
||||||
|
# echo '*.tgz' >> $gitignore
|
||||||
|
# echo '*.log' >> $gitignore
|
||||||
|
# echo '*.log.*' >> $gitignore
|
||||||
|
# echo '*.sig' >> $gitignore
|
||||||
|
# echo '' >> $gitignore
|
||||||
|
# echo 'pkg/' >> $gitignore
|
||||||
|
# echo 'src/' >> $gitignore
|
||||||
|
# echo '' >> $gitignore
|
||||||
|
# echo '# ---> Archives' >> $gitignore
|
||||||
|
# echo '*.7z' >> $gitignore
|
||||||
|
# echo '*.rar' >> $gitignore
|
||||||
|
# echo '*.gz' >> $gitignore
|
||||||
|
# echo '*.bzip' >> $gitignore
|
||||||
|
# echo '*.bz2' >> $gitignore
|
||||||
|
# echo '*.xz' >> $gitignore
|
||||||
|
# echo '*.lzma' >> $gitignore
|
||||||
|
# echo '*.cab' >> $gitignore
|
||||||
|
# echo '' >> $gitignore
|
||||||
|
# echo '# ---> systemd' >> $gitignore
|
||||||
|
# echo '*.service' >> $gitignore
|
||||||
|
# echo '*.socket' >> $gitignore
|
||||||
|
# echo '*.timer' >> $gitignore
|
||||||
|
# echo '' >> $gitignore
|
||||||
|
# echo '# ---> snap' >> $gitignore
|
||||||
|
# echo '*.snap' >> $gitignore
|
||||||
|
# echo '' >> $gitignore
|
||||||
|
#
|
||||||
|
# git add $gitignore
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# write_readme(){
|
||||||
|
# local pkg="$1"
|
||||||
|
# local readme=$pkg/README.md
|
||||||
|
#
|
||||||
|
# echo "# $pkg" > $readme
|
||||||
|
# echo '' >> $readme
|
||||||
|
#
|
||||||
|
# git add $readme
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# subrepo_new2(){
|
||||||
|
# local group="${1:-$GROUP}" team="${2:-$TEAM}"
|
||||||
|
# local dest=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk
|
||||||
|
#
|
||||||
|
# cd ${TREE_DIR_ARTIX}/$group
|
||||||
|
#
|
||||||
|
# local org=$(get_pkg_org "${PACKAGE}")
|
||||||
|
#
|
||||||
|
# prepare_dir "$dest"
|
||||||
|
#
|
||||||
|
# subrepo_init "${PACKAGE}" "$org"
|
||||||
|
#
|
||||||
|
# commit_jenkins_files2 "${PACKAGE}"
|
||||||
|
#
|
||||||
|
# subrepo_push "${PACKAGE}"
|
||||||
|
#
|
||||||
|
# add_repo_to_team "${PACKAGE}" "$org" "$team"
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# commit_jenkins_files2(){
|
||||||
|
# local pkg="$1"
|
||||||
|
#
|
||||||
|
# write_jenkinsfile "$pkg"
|
||||||
|
# write_agentyaml "$pkg"
|
||||||
|
# write_readme "$pkg"
|
||||||
|
# write_gitignore "$pkg"
|
||||||
|
#
|
||||||
|
# git commit -m "initial commit"
|
||||||
|
# }
|
@@ -12,7 +12,7 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
create_repo(){
|
create_repo() {
|
||||||
local pkg="$1" org="$2"
|
local pkg="$1" org="$2"
|
||||||
local gitname=$(get_compliant_name "$pkg")
|
local gitname=$(get_compliant_name "$pkg")
|
||||||
local json="{ \"auto_init\": true, \"name\":\"$gitname\", \"gitignores\":\"ArchLinuxPackages\", \"readme\": \"Default\" }"
|
local json="{ \"auto_init\": true, \"name\":\"$gitname\", \"gitignores\":\"ArchLinuxPackages\", \"readme\": \"Default\" }"
|
||||||
@@ -27,33 +27,16 @@ create_repo(){
|
|||||||
echo
|
echo
|
||||||
}
|
}
|
||||||
|
|
||||||
delete_repo(){
|
get_team_id() {
|
||||||
local pkg="$1" org="$2"
|
local org="$1" team="$2"
|
||||||
local gitname=$(get_compliant_name "$pkg")
|
local id=$(curl -s -X GET "${GIT_URL}/api/v1/orgs/$org/teams/search?q=$team&access_token=${GIT_TOKEN}" \
|
||||||
|
-H "accept: application/json" | jq '.data[] .id')
|
||||||
msg2 "Delete package repo [%s] in org (%s)" "${pkg}" "${org}"
|
|
||||||
|
|
||||||
curl -s -X DELETE "${GIT_URL}/api/v1/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
|
|
||||||
-H "accept: application/json"
|
|
||||||
}
|
|
||||||
|
|
||||||
load_team_id(){
|
|
||||||
local org="$1" team="$2" id=0
|
|
||||||
|
|
||||||
local ids=($(curl -s -X GET "${GIT_URL}/api/v1/orgs/$org/teams?access_token=${GIT_TOKEN}" \
|
|
||||||
-H "accept: application/json" | jshon -a -e id))
|
|
||||||
|
|
||||||
case $team in
|
|
||||||
packages) id="${ids[2]}" ;;
|
|
||||||
community) id="${ids[1]}" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
echo $id
|
echo $id
|
||||||
}
|
}
|
||||||
|
|
||||||
add_repo_to_team(){
|
add_repo_to_team() {
|
||||||
local pkg="$1" org="$2" team="$3"
|
local pkg="$1" org="$2" team="$3"
|
||||||
local id=$(load_team_id "$org" "$team")
|
local id=$(get_team_id "$org" "$team")
|
||||||
local gitname=$(get_compliant_name "$pkg")
|
local gitname=$(get_compliant_name "$pkg")
|
||||||
|
|
||||||
msg2 "Adding package repo [%s] to team (%s)" "$gitname" "$team"
|
msg2 "Adding package repo [%s] to team (%s)" "$gitname" "$team"
|
||||||
@@ -61,3 +44,14 @@ add_repo_to_team(){
|
|||||||
curl -s -X PUT "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
|
curl -s -X PUT "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
|
||||||
-H "accept: application/json"
|
-H "accept: application/json"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
remove_repo_from_team() {
|
||||||
|
local pkg="$1" org="$2" team="$3"
|
||||||
|
local id=$(get_team_id "$org" "$team")
|
||||||
|
local gitname=$(get_compliant_name "$pkg")
|
||||||
|
|
||||||
|
msg2 "Removing package repo [%s] from team (%s)" "$gitname" "$team"
|
||||||
|
|
||||||
|
curl -s -X DELETE "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
|
||||||
|
-H "accept: application/json"
|
||||||
|
}
|
||||||
|
@@ -12,14 +12,6 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
get_local_head(){
|
|
||||||
echo $(git log --pretty=%H ...refs/heads/master^ | head -n 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
get_remote_head(){
|
|
||||||
echo $(git ls-remote origin -h refs/heads/master | cut -f1)
|
|
||||||
}
|
|
||||||
|
|
||||||
get_pkg_org(){
|
get_pkg_org(){
|
||||||
local pkg="$1" org= sub=
|
local pkg="$1" org= sub=
|
||||||
case ${pkg} in
|
case ${pkg} in
|
||||||
@@ -31,111 +23,34 @@ get_pkg_org(){
|
|||||||
echo $org
|
echo $org
|
||||||
}
|
}
|
||||||
|
|
||||||
|
subrepo_init() {
|
||||||
|
local pkg="$1" org="$2"
|
||||||
|
local gitname=$(get_compliant_name "$pkg")
|
||||||
|
msg2 "Subrepo init (%s)" "$pkg"
|
||||||
|
git subrepo init "$pkg" -r gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git
|
||||||
|
}
|
||||||
|
|
||||||
subrepo_push(){
|
subrepo_push(){
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
msg2 "Push (%s)" "$pkg"
|
msg2 "Subrepo push (%s)" "$pkg"
|
||||||
git subrepo push "$pkg"
|
git subrepo push "$pkg" || die "%s push failed" "$pkg"
|
||||||
}
|
}
|
||||||
|
|
||||||
subrepo_clean(){
|
subrepo_clean(){
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
msg2 "Clean (%s)" "$pkg"
|
msg2 "Subrepo clean (%s)" "$pkg"
|
||||||
git subrepo clean "$pkg"
|
git subrepo clean "$pkg"
|
||||||
}
|
}
|
||||||
|
|
||||||
subrepo_pull(){
|
subrepo_pull(){
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
msg2 "Pull (%s)" "$pkg"
|
msg2 "Subrepo pull (%s)" "$pkg"
|
||||||
git subrepo pull "$pkg"
|
git subrepo pull "$pkg"
|
||||||
}
|
}
|
||||||
|
|
||||||
subrepo_clone(){
|
subrepo_clone(){
|
||||||
local pkg="$1" org="$2"
|
local pkg="$1" org="$2"
|
||||||
local gitname=$(get_compliant_name "$pkg")
|
local gitname=$(get_compliant_name "$pkg")
|
||||||
msg2 "Clone [%s] from (%s)" "$pkg" "$org/$gitname"
|
msg2 "Subrepo clone [%s] from (%s)" "$pkg" "$org/$gitname"
|
||||||
git subrepo clone gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git "$pkg"
|
git subrepo clone gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git "$pkg"
|
||||||
}
|
}
|
||||||
|
|
||||||
clone_tree(){
|
|
||||||
local timer=$(get_timer) url="$1" tree="$2" os="${3:-$(get_osname)}"
|
|
||||||
|
|
||||||
msg "Cloning %s (%s) ..." "$tree" "$os"
|
|
||||||
|
|
||||||
git clone $url/$tree.git
|
|
||||||
show_elapsed_time "${FUNCNAME}" "${timer}"
|
|
||||||
}
|
|
||||||
|
|
||||||
has_changes(){
|
|
||||||
local head_l="$1" head_r="$2"
|
|
||||||
if [[ "$head_l" == "$head_r" ]]; then
|
|
||||||
msg2 "remote changes: no"
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
msg2 "remote changes: yes"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
pull_tree(){
|
|
||||||
local tree="$1" local_head="$2" os="${3:-$(get_osname)}"
|
|
||||||
local remote_head=$(get_remote_head)
|
|
||||||
|
|
||||||
msg "Checking %s (%s)" "${tree}" "$os"
|
|
||||||
if has_changes "${local_head}" "${remote_head}";then
|
|
||||||
git pull origin master
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
push_tree(){
|
|
||||||
local tree="$1"
|
|
||||||
msg "Update (%s)" "${tree}"
|
|
||||||
git push origin master
|
|
||||||
}
|
|
||||||
|
|
||||||
write_jenkinsfile(){
|
|
||||||
local pkg="$1"
|
|
||||||
local jenkins=$pkg/Jenkinsfile
|
|
||||||
|
|
||||||
echo "@Library('artix-ci') import org.artixlinux.RepoPackage" > $jenkins
|
|
||||||
echo '' >> $jenkins
|
|
||||||
echo 'PackagePipeline(new RepoPackage(this))' >> $jenkins
|
|
||||||
echo '' >> $jenkins
|
|
||||||
|
|
||||||
git add $jenkins
|
|
||||||
}
|
|
||||||
|
|
||||||
write_agentyaml(){
|
|
||||||
local pkg="$1"
|
|
||||||
local agent=$pkg/.artixlinux/agent.yaml label='master'
|
|
||||||
[[ -d $pkg/.artixlinux ]] || mkdir $pkg/.artixlinux
|
|
||||||
|
|
||||||
echo '%YAML 1.2' > $agent
|
|
||||||
echo '---' >> $agent
|
|
||||||
echo '' >> $agent
|
|
||||||
echo "label: $label" >> $agent
|
|
||||||
echo '' >> $agent
|
|
||||||
|
|
||||||
git add $agent
|
|
||||||
}
|
|
||||||
|
|
||||||
commit_jenkins_files(){
|
|
||||||
local pkg="$1"
|
|
||||||
|
|
||||||
write_jenkinsfile "$pkg"
|
|
||||||
write_agentyaml "$pkg"
|
|
||||||
|
|
||||||
git commit -m "add jenkinsfile & .artixlinux/agent.yaml"
|
|
||||||
}
|
|
||||||
|
|
||||||
config_tree(){
|
|
||||||
local tree="$1"
|
|
||||||
cd $tree
|
|
||||||
git config --bool pull.rebase true
|
|
||||||
git config commit.gpgsign true
|
|
||||||
if [[ -n "${GPGKEY}" ]];then
|
|
||||||
git config user.signingkey "${GPGKEY}"
|
|
||||||
else
|
|
||||||
warning "No GPGKEY configured in makepkg.conf!"
|
|
||||||
fi
|
|
||||||
cd ..
|
|
||||||
}
|
|
||||||
|
158
lib/pkg/util.sh
158
lib/pkg/util.sh
@@ -16,165 +16,43 @@ shopt -s extglob
|
|||||||
|
|
||||||
get_compliant_name(){
|
get_compliant_name(){
|
||||||
local gitname="$1"
|
local gitname="$1"
|
||||||
case $gitname in
|
case "$gitname" in
|
||||||
*+) gitname=${gitname//+/plus}
|
*+) gitname=${gitname//+/plus}
|
||||||
esac
|
esac
|
||||||
echo $gitname
|
echo "$gitname"
|
||||||
}
|
}
|
||||||
|
|
||||||
arch2artix(){
|
set_arch_repos(){
|
||||||
local repo="$1" artix=none
|
local x="$1" y="$2" z="$3"
|
||||||
case "$repo" in
|
ARCH_REPOS=(core extra community multilib)
|
||||||
core) artix=system ;;
|
|
||||||
extra) artix=world ;;
|
|
||||||
community) artix=galaxy ;;
|
|
||||||
multilib) artix=lib32 ;;
|
|
||||||
staging) artix=goblins ;;
|
|
||||||
testing) artix=gremlins ;;
|
|
||||||
community-staging) artix=galaxy-goblins ;;
|
|
||||||
community-testing) artix=galaxy-gremlins ;;
|
|
||||||
multilib-staging) artix=lib32-goblins ;;
|
|
||||||
multilib-testing) artix=lib32-gremlins ;;
|
|
||||||
kde-unstable) artix=kde-wobble ;;
|
|
||||||
gnome-unstable) artix=gnome-wobble ;;
|
|
||||||
esac
|
|
||||||
echo $artix
|
|
||||||
}
|
|
||||||
|
|
||||||
find_tree(){
|
$x && ARCH_REPOS+=(testing community-testing multilib-testing)
|
||||||
local tree="$1" pkg="$2"
|
$y && ARCH_REPOS+=(staging community-staging multilib-staging)
|
||||||
local result=$(find $tree -mindepth 2 -maxdepth 2 -type d -name "$pkg")
|
$z && ARCH_REPOS+=(gnome-unstable kde-unstable)
|
||||||
result=${result%/*}
|
|
||||||
echo ${result##*/}
|
|
||||||
}
|
|
||||||
|
|
||||||
arch_repos(){
|
|
||||||
local stag="$1" unst="$2"
|
|
||||||
local repos=(core extra testing community community-testing multilib multilib-testing)
|
|
||||||
|
|
||||||
$stag && repos+=(staging community-staging multilib-staging)
|
|
||||||
$unst && repos+=(gnome-unstable kde-unstable)
|
|
||||||
|
|
||||||
echo ${repos[@]}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
find_repo(){
|
find_repo(){
|
||||||
local pkg="$1" stag="$2" unst="$3" repo=
|
local pkg="$1" repo=
|
||||||
|
for r in ${ARCH_REPOS[@]};do
|
||||||
for r in $(arch_repos "$stag" "$unst");do
|
|
||||||
[[ -f $pkg/repos/$r-${ARCH}/PKGBUILD ]] && repo=$r-${ARCH}
|
[[ -f $pkg/repos/$r-${ARCH}/PKGBUILD ]] && repo=$r-${ARCH}
|
||||||
[[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any
|
[[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any
|
||||||
done
|
done
|
||||||
echo $repo
|
echo $repo
|
||||||
}
|
}
|
||||||
|
|
||||||
is_valid_repo(){
|
find_pkg(){
|
||||||
local src="$1" cases=
|
local searchdir="$1" pkg="$2"
|
||||||
for r in $(arch_repos true true);do
|
local result=$(find "$searchdir" -mindepth 2 -maxdepth 2 -type d -name "$pkg")
|
||||||
cases=${cases:-}${cases:+|}${r}
|
echo "$result"
|
||||||
done
|
|
||||||
eval "case $src in
|
|
||||||
${cases}|trunk) return 0 ;;
|
|
||||||
*) return 1 ;;
|
|
||||||
esac"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get_cases(){
|
find_cached_pkgfile() {
|
||||||
local pkglist="${SYSCONFDIR}/pkglist.d/$1.list"
|
|
||||||
|
|
||||||
local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g"
|
|
||||||
|
|
||||||
local pkgs=($(sed "$_com_rm" "$pkglist" | sed "$_space" | sed "$_clean"))
|
|
||||||
|
|
||||||
local cases=
|
|
||||||
for p in ${pkgs[@]};do
|
|
||||||
cases=${cases:-}${cases:+|}${p}
|
|
||||||
done
|
|
||||||
echo $cases
|
|
||||||
}
|
|
||||||
|
|
||||||
get_artix_tree(){
|
|
||||||
local pkg="$1" artix_tree="${2:-$3}" tree
|
|
||||||
eval "case $pkg in
|
|
||||||
$(get_cases kernel)) tree=packages-kernel ;;
|
|
||||||
$(get_cases python)) tree=packages-python ;;
|
|
||||||
$(get_cases perl)) tree=packages-perl ;;
|
|
||||||
$(get_cases ruby)) tree=packages-ruby ;;
|
|
||||||
$(get_cases openrc)) tree=packages-openrc ;;
|
|
||||||
$(get_cases runit)) tree=packages-runit ;;
|
|
||||||
$(get_cases s6)) tree=packages-s6 ;;
|
|
||||||
$(get_cases media)) tree=packages-media ;;
|
|
||||||
$(get_cases xorg)) tree=packages-xorg ;;
|
|
||||||
$(get_cases qt5)) tree=packages-qt5 ;;
|
|
||||||
$(get_cases gtk)) tree=packages-gtk ;;
|
|
||||||
$(get_cases java)) tree=packages-java ;;
|
|
||||||
$(get_cases haskell)) tree=packages-haskell ;;
|
|
||||||
$(get_cases devel)) tree=packages-devel ;;
|
|
||||||
$(get_cases lxqt)) tree=packages-lxqt ;;
|
|
||||||
$(get_cases cinnamon)) tree=packages-cinnamon ;;
|
|
||||||
$(get_cases kde)) tree=packages-kde ;;
|
|
||||||
$(get_cases gnome)) tree=packages-gnome ;;
|
|
||||||
$(get_cases mate)) tree=packages-mate ;;
|
|
||||||
$(get_cases xfce)) tree=packages-xfce ;;
|
|
||||||
*) tree=$artix_tree
|
|
||||||
esac"
|
|
||||||
echo $tree
|
|
||||||
}
|
|
||||||
|
|
||||||
get_import_path(){
|
|
||||||
local pkg="$1" import_path=
|
|
||||||
for tree in ${TREE_NAMES_ARCH[@]};do
|
|
||||||
[[ -d ${TREE_DIR_ARCH}/$tree/$pkg/repos ]] && import_path=${TREE_DIR_ARCH}/$tree/$pkg
|
|
||||||
done
|
|
||||||
echo $import_path
|
|
||||||
}
|
|
||||||
|
|
||||||
pkgver_equal() {
|
|
||||||
if [[ $1 = *-* && $2 = *-* ]]; then
|
|
||||||
# if both versions have a pkgrel, then they must be an exact match
|
|
||||||
[[ $1 = "$2" ]]
|
|
||||||
else
|
|
||||||
# otherwise, trim any pkgrel and compare the bare version.
|
|
||||||
[[ ${1%%-*} = "${2%%-*}" ]]
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
find_cached_package() {
|
|
||||||
local searchdirs=("$PKGDEST" "$PWD") results=()
|
local searchdirs=("$PKGDEST" "$PWD") results=()
|
||||||
local targetname=$1 targetver=$2 targetarch=$3
|
local pkg="$1"
|
||||||
local dir pkg pkgbasename name ver rel arch r results
|
|
||||||
|
|
||||||
for dir in "${searchdirs[@]}"; do
|
for dir in "${searchdirs[@]}"; do
|
||||||
[[ -d $dir ]] || continue
|
[[ -d "$dir" ]] || continue
|
||||||
|
[[ -e "$dir/$pkg" ]] && results+=("$dir/$pkg")
|
||||||
for pkg in "$dir"/*.pkg.tar?(.!(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
|
||||||
|
@@ -41,6 +41,8 @@ load_pkg_config(){
|
|||||||
packages
|
packages
|
||||||
community
|
community
|
||||||
packages-kernel
|
packages-kernel
|
||||||
|
packages-net
|
||||||
|
packages-gfx
|
||||||
packages-openrc
|
packages-openrc
|
||||||
packages-runit
|
packages-runit
|
||||||
packages-s6
|
packages-s6
|
||||||
@@ -58,6 +60,7 @@ load_pkg_config(){
|
|||||||
packages-mate
|
packages-mate
|
||||||
packages-kde
|
packages-kde
|
||||||
packages-xfce
|
packages-xfce
|
||||||
|
packages-wm
|
||||||
# packages-haskell
|
# packages-haskell
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user