Compare commits

..

8 Commits
0.21.2 ... 0.22

Author SHA1 Message Date
74ab2c71b1 v0.22 (#46)
artix-chroot: tweak msg

remove unused func & var

buildiso: small msg cosmetics

deploypkg: use full filenames on removal

readd lost get_compliant_name()

update artools-pkg.conf

links-add: don't elf read kernel documentation

chroot-run: remove & tweak msgs

links-add: unquote files var

tweak msgs

shellcheck ignore colors

remove info() and use
only use config vars in caps

Makefile: start 0.22

Reviewed-on: #46
Co-Authored-By: artoo <artoo@artixlinux.org>
Co-Committed-By: artoo <artoo@artixlinux.org>
2020-12-26 00:12:19 +01:00
1f64eba1e6 refactor (#45)
fix workspace defaults

buildiso: fix pac conf selection

refactor

use load_valid_names()

Reviewed-on: #45
Co-Authored-By: artoo <artoo@artixlinux.org>
Co-Committed-By: artoo <artoo@artixlinux.org>
2020-12-21 16:09:56 +01:00
442d397ac0 profile.sh: use local vars in load 2020-12-20 10:52:27 +01:00
35dbadef56 comparepkg: add list funcs 2020-12-19 23:49:49 +01:00
a9852e82e5 checkrepo (#44)
checkrepo: move arrays in place

split out new checkrepo from comparepkg

Reviewed-on: #44
Co-Authored-By: artoo <artoo@artixlinux.org>
Co-Committed-By: artoo <artoo@artixlinux.org>
2020-12-19 23:11:02 +01:00
ae723c88df Merge branch 'shellcheck' 2020-12-19 15:24:16 +01:00
f08ce91d81 shellcheck 2020-12-19 15:23:20 +01:00
887ed0c343 arch: switch to GH mirror 2020-12-18 23:26:01 +01:00
32 changed files with 428 additions and 352 deletions

View File

@@ -1,4 +1,4 @@
VERSION=0.21 VERSION=0.22
TOOLS = artools TOOLS = artools
PREFIX ?= /usr PREFIX ?= /usr
@@ -37,7 +37,8 @@ PKG_BIN = \
bin/pkg/finddeps \ bin/pkg/finddeps \
bin/pkg/find-libdeps \ bin/pkg/find-libdeps \
bin/pkg/batchpkg \ bin/pkg/batchpkg \
bin/pkg/signpkg bin/pkg/signpkg \
bin/pkg/checkrepo
LN_COMMITPKG = \ LN_COMMITPKG = \
extrapkg \ extrapkg \

View File

@@ -21,13 +21,13 @@ m4_include(lib/base/mount.sh)
#{{{ functions #{{{ functions
chroot_part_mount() { chroot_part_mount() {
info "mount: [%s]" "$2" msg2 "mount: [%s]" "$2"
mount "$@" && CHROOT_ACTIVE_PART_MOUNTS=("$2" "${CHROOT_ACTIVE_PART_MOUNTS[@]}") mount "$@" && CHROOT_ACTIVE_PART_MOUNTS=("$2" "${CHROOT_ACTIVE_PART_MOUNTS[@]}")
} }
chroot_part_umount() { chroot_part_umount() {
chroot_api_umount chroot_api_umount
info "umount: [%s]" "${CHROOT_ACTIVE_PART_MOUNTS[@]}" msg2 "umount: [%s]" "${CHROOT_ACTIVE_PART_MOUNTS[@]}"
umount "${CHROOT_ACTIVE_PART_MOUNTS[@]}" umount "${CHROOT_ACTIVE_PART_MOUNTS[@]}"
unset CHROOT_ACTIVE_PART_MOUNTS unset CHROOT_ACTIVE_PART_MOUNTS
} }
@@ -80,7 +80,7 @@ select_os(){
local last=${os##*:} local last=${os##*:}
case $last in case $last in
'efi') count=$((count-1)) ;; 'efi') count=$((count-1)) ;;
*) info "$i) $(get_os_name "$os")"; i=$((i+1)) ;; *) msg2 "$i) $(get_os_name "$os")"; i=$((i+1)) ;;
esac esac
done done
i=0 i=0

View File

@@ -15,6 +15,7 @@
m4_include(lib/base/message.sh) m4_include(lib/base/message.sh)
m4_include(lib/base/mount.sh) m4_include(lib/base/mount.sh)
m4_include(lib/base/chroot.sh) m4_include(lib/base/chroot.sh)
m4_include(lib/base/chroot-version.sh)
# $1: chroot # $1: chroot
kill_chroot_process(){ kill_chroot_process(){
@@ -26,7 +27,7 @@ kill_chroot_process(){
# this process is in the chroot... # this process is in the chroot...
pid=$(basename "$(dirname "$root_dir")") pid=$(basename "$(dirname "$root_dir")")
name=$(ps -p "$pid" -o comm=) name=$(ps -p "$pid" -o comm=)
info "Killing chroot process: %s (%s)" "$name" "$pid" msg2 "Killing chroot process: %s (%s)" "$name" "$pid"
kill -9 "$pid" kill -9 "$pid"
fi fi
fi fi
@@ -96,7 +97,6 @@ for host_mirror in "${host_mirrors[@]}"; do
if [[ $host_mirror == *file://* ]]; then if [[ $host_mirror == *file://* ]]; then
# shellcheck disable=2016 # shellcheck disable=2016
host_mirror=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g') host_mirror=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g')
info "host mirror: %s" "$host_mirror"
in_array "$host_mirror" "${cache_dirs[@]}" || cache_dirs+=("$host_mirror") in_array "$host_mirror" "${cache_dirs[@]}" || cache_dirs+=("$host_mirror")
fi fi
done done
@@ -142,20 +142,12 @@ chroot_extra_mount() {
chroot_add_resolv_conf "${working_dir}" chroot_add_resolv_conf "${working_dir}"
for arg in "${mount_args[@]}"; do for arg in "${mount_args[@]}"; do
local flag=${arg%%:*} local flag=${arg%%:*} dest=${arg##*:} src=${arg%:*}
local dest=${arg##*:}
local src=${arg%:*}
src=${src#*:} src=${src#*:}
chroot_mount "${src}" "${working_dir}${dest}" "${flag}" chroot_mount "${src}" "${working_dir}${dest}" "${flag}"
done done
} }
sync_host_localtime(){
if [[ -e /etc/localtime ]]; then
cp -L /etc/localtime "${working_dir}"/etc/localtime
fi
}
umask 0022 umask 0022
# Sanity check # Sanity check
@@ -165,8 +157,6 @@ 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
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}"
chroot_extra_mount chroot_extra_mount

View File

@@ -14,6 +14,7 @@
m4_include(lib/base/message.sh) m4_include(lib/base/message.sh)
m4_include(lib/base/chroot.sh) m4_include(lib/base/chroot.sh)
m4_include(lib/base/chroot-version.sh)
working_dir='' working_dir=''
umode='' umode=''

View File

@@ -187,10 +187,9 @@ gen_iso_fn(){
prepare_build(){ prepare_build(){
load_profile load_profile
local repo=default
case "${repo}" in case "${repo}" in
'gremlins'|'goblins') repo="${repo}" ;; 'gremlins'|'goblins') repo="${repo}" ;;
*) repo=default ;;
esac esac
get_pacman_conf "${repo}" get_pacman_conf "${repo}"

View File

@@ -31,16 +31,14 @@ get_compliant_name(){
} }
subrepo_clone(){ subrepo_clone(){
local pkg="$1" org="$2" local pkg="$1" org="$2" gitname
local gitname
gitname=$(get_compliant_name "$pkg") gitname=$(get_compliant_name "$pkg")
msg2 "Subrepo clone [%s] from (%s)" "$pkg" "$org/$gitname" msg2 "Subrepo clone [%s] from (%s)" "$pkg" "$org/$gitname"
git subrepo clone "${GIT_SSH}":"$org"/"$gitname".git "$pkg" git subrepo clone "${GIT_SSH}":"$org"/"$gitname".git "$pkg"
} }
create_repo() { create_repo() {
local pkg="$1" org="$2" local pkg="$1" org="$2" gitname
local gitname
gitname=$(get_compliant_name "$pkg") 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\" }"
@@ -55,20 +53,20 @@ create_repo() {
} }
subrepo_new(){ subrepo_new(){
cd "${TREE_DIR_ARTIX}/${GROUP}" || return cd "${TREE_DIR_ARTIX}/${group}" || return
local org local org
org=$(get_pkg_org "${PACKAGE}") 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"
mkdir -p "${TREE_DIR_ARTIX}/${GROUP}/${PACKAGE}/trunk" mkdir -p "${TREE_DIR_ARTIX}/${group}/${package}/trunk"
commit_jenkins_files "${PACKAGE}" commit_jenkins_files "${package}"
} }
#}}} #}}}
@@ -91,7 +89,7 @@ pull_tree_arch(){
pull_tree "${tree}" "$(get_local_head)" "Arch" pull_tree "${tree}" "$(get_local_head)" "Arch"
) )
else else
clone_tree "${host_tree_arch}" "${tree}" "Arch" clone_tree "${HOST_TREE_ARCH}" "${tree}" "Arch"
fi fi
done done
} }
@@ -112,7 +110,7 @@ config_tree(){
pull_tree_artix(){ pull_tree_artix(){
local repos=() local repos=()
if ${sync_group}; then if ${sync_group}; then
repos=("${GROUP}") repos=("${group}")
else else
repos=("${ARTIX_TREE[@]}") repos=("${ARTIX_TREE[@]}")
fi fi
@@ -215,14 +213,14 @@ from_arch(){
cd "${TREE_DIR_ARTIX}" || return cd "${TREE_DIR_ARTIX}" || return
local srcpath repo archpath artixpath local srcpath repo archpath artixpath
srcpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}") srcpath=$(find_pkg "${TREE_DIR_ARCH}" "${package}")
[[ -z $srcpath ]] && die "Package '%s' does not exist!" "${PACKAGE}" [[ -z $srcpath ]] && die "Package '%s' does not exist!" "${package}"
repo=$(find_repo "$srcpath") repo=$(find_repo "$srcpath")
msg "repo: %s" "${repo#*/}" msg "repo: %s" "${repo#*/}"
archpath=$srcpath/$repo archpath=$srcpath/$repo
artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}") artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${package}")
show_deps "$archpath" show_deps "$archpath"
@@ -234,7 +232,7 @@ from_arch(){
patch_pkg "$artixpath" patch_pkg "$artixpath"
fi fi
else else
die "Package '%s' does not exist!" "${PACKAGE}" die "Package '%s' does not exist!" "${package}"
fi fi
} }
@@ -242,8 +240,8 @@ from_arch(){
view_build(){ view_build(){
local archpath repo local archpath repo
archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}") 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}"
repo=$(find_repo "${archpath}") repo=$(find_repo "${archpath}")
archpath=$archpath/$repo archpath=$archpath/$repo
msg "repo: %s" "${repo#*/}" msg "repo: %s" "${repo#*/}"
@@ -252,9 +250,9 @@ view_build(){
check_tree(){ check_tree(){
local archpath artixpath group local archpath artixpath group
archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}") 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}"
artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}") artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${package}")
group=${artixpath%/*} group=${artixpath%/*}
msg "group: %s" "${group##*/}" msg "group: %s" "${group##*/}"
@@ -269,6 +267,8 @@ sync_repos(){
load_makepkg_config load_makepkg_config
load_valid_names
testing=true testing=true
staging=true staging=true
unstable=false unstable=false
@@ -282,22 +282,21 @@ createnew=false
sync_group=false sync_group=false
check=false check=false
PACKAGE='' package=''
TEAM='community' team='community'
GROUP="${ARTIX_TREE[0]}" group="${ARTIX_TREE[0]}"
host_tree_artix="${GIT_SSH}:artixlinux" host_tree_artix="${GIT_SSH}:artixlinux"
host_tree_arch='git://git.archlinux.org/svntogit'
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 ' 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 " -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"
@@ -318,9 +317,9 @@ opts='p:t:g:sinabcvxyzh'
while getopts "${opts}" arg; do while getopts "${opts}" arg; do
case "${arg}" in case "${arg}" in
p) PACKAGE="$OPTARG" ;; p) package="$OPTARG" ;;
t) TEAM="$OPTARG" ;; t) team="$OPTARG" ;;
g) GROUP="$OPTARG"; sync_group=true ;; g) group="$OPTARG"; sync_group=true ;;
s) sync=true ;; s) sync=true ;;
a) sync_arch=false ;; a) sync_arch=false ;;
b) sync_artix=false ;; b) sync_artix=false ;;

188
bin/pkg/checkrepo.in Normal file
View File

@@ -0,0 +1,188 @@
#!/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.
m4_include(lib/util-base.sh)
m4_include(lib/util-pkg.sh)
m4_include(lib/base/message.sh)
m4_include(lib/pkg/repo.sh)
m4_include(lib/pkg/table.sh)
#{{{ sogrep
query_db() {
for repo in "${searchrepos[@]}"; do
local db
db=${db_cache_dir}/${linksdb_ext}/${CARCH}/${repo}/
if [[ -d ${db} ]]; then
while read -rd '' pkg; do
read -r match
pkg=${pkg#${db}}
pkg="${pkg%/*}"
msg_row "${tableQ}" "${repo}" "${pkg}" "${match}"
done < <(grep -rZ "${library}" "${db}") | sort -u
fi
done
}
#}}}
#{{{ check db
is_db_entry() {
local pkgname="$1" repo="${REPOS[$2]}" entry
entry=${db_cache_dir}/${linksdb_ext}/${CARCH}/$repo/$pkgname
if [[ -d "$entry" ]];then
return 0
fi
return 1
}
check_db(){
local pkgpath="${1%/*}"
for repo in "${!REPOS[@]}"; do
local pkgbuild artixver
[[ -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
# shellcheck disable=1090
. "$pkgbuild" 2>/dev/null
artixver=$(get_full_version)
for name in "${pkgname[@]}"; do
if ! is_db_entry "$name-$artixver" "$repo"; then
msg_row_upgrade "${tableU}" "$repo" "$name" "$artixver" "false"
else
${all_db} && msg_row "${tableU}" "$repo" "$name" "$artixver" "true"
fi
done
unset artixver pkgbuild pkgver epoch pkgname pkgbase
done
}
#}}}
show_lib_table() {
msg_table_header "${tableQ}" "Repo" "Package" "Library"
query_db
}
show_db_table(){
msg_table_header "${tableU}" "Repo" "Package" "Version" "Database"
tree_loop check_db
}
update_db_cache(){
msg "Updating database cache ..."
local cachedir url
for repo in "${searchrepos[@]}"; do
cachedir=${db_cache_dir}/${linksdb_ext}/${CARCH}/${repo}
rm -rf "$cachedir"
mkdir -p "$cachedir"
msg2 "%s" "$repo"
url=${REPOS_MIRROR}/${repo}/os/${CARCH}/${repo}.${linksdb_ext}
curl -L -s "$url" | bsdtar -xf - -C "$cachedir"
done
msg "Done"
}
db_cache_dir="${XDG_CACHE_HOME:-$USER_HOME/.cache}/artools"
linksdb_ext="links.tar.${DBEXT}"
load_makepkg_config
sync=false
check=false
query=false
all_db=false
readonly tableU="%-20s %-35s %-30s %-10s"
readonly tableQ="%-20s %-45s %s"
load_valid_names
#{{{ repo names arrays
declare -A REPOS=(
[${valid_names[0]}]=system
[${valid_names[1]}]=world
[${valid_names[2]}]=galaxy
[${valid_names[3]}]=lib32
[${valid_names[4]}]=gremlins
[${valid_names[5]}]=galaxy-gremlins
[${valid_names[6]}]=lib32-gremlins
[${valid_names[7]}]=goblins
[${valid_names[8]}]=galaxy-goblins
[${valid_names[9]}]=lib32-goblins
[${valid_names[11]}]=kde-wobble
[${valid_names[12]}]=gnome-wobble
)
searchrepos=(
"${REPOS[${valid_names[11]}]}"
"${REPOS[${valid_names[12]}]}"
"${REPOS[${valid_names[7]}]}"
"${REPOS[${valid_names[8]}]}"
"${REPOS[${valid_names[9]}]}"
"${REPOS[${valid_names[4]}]}"
"${REPOS[${valid_names[5]}]}"
"${REPOS[${valid_names[6]}]}"
"${REPOS[${valid_names[0]}]}"
"${REPOS[${valid_names[1]}]}"
"${REPOS[${valid_names[2]}]}"
"${REPOS[${valid_names[3]}]}"
)
#}}}
usage() {
echo "Usage: ${0##*/} [options] (with -q [libname])"
echo ' -r <repo> Repo name to query'
echo ' [default: all]'
echo " -s Sync repo databases"
echo ' -c Check repos'
echo ' -a Show repo db (-c)'
echo " -q Query repo databases for so libs"
echo ' -h This help'
echo ''
echo ''
exit "$1"
}
opts='r:qcsah'
while getopts "${opts}" arg; do
case "${arg}" in
r) searchrepos=("$OPTARG") ;;
s) sync=true ;;
c) check=true ;;
a) all_db=true ;;
q) query=true ;;
h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac
done
shift $(( OPTIND - 1 ))
library="$1"; shift
${sync} && update_db_cache
${check} && show_db_table
${query} && show_lib_table

View File

@@ -65,47 +65,47 @@ prepare_commit(){
fi fi
if [[ $action == 'add' ]] || [[ $action == 'move' ]] ;then if [[ $action == 'add' ]] || [[ $action == 'move' ]] ;then
[[ -d "$CARCH/${REPO_DEST}" ]] && git rm -r "$CARCH/${REPO_DEST}" [[ -d "$CARCH/${repo_dest}" ]] && git rm -r "$CARCH/${repo_dest}"
[[ ! -d "$CARCH" ]] && mkdir "$CARCH" [[ ! -d "$CARCH" ]] && mkdir "$CARCH"
[[ ! -d "$CARCH/${REPO_DEST}" ]] && mkdir "$CARCH/${REPO_DEST}" [[ ! -d "$CARCH/${repo_dest}" ]] && mkdir "$CARCH/${repo_dest}"
fi fi
} }
check_rebuild(){ check_rebuild(){
if [[ -d "$CARCH"/"${valid_names[10]}" ]] \ if [[ -d "$CARCH"/"${valid_names[10]}" ]] \
&& [[ "${REPO_DEST}" == "${valid_names[7]}" ]]; then && [[ "${repo_dest}" == "${valid_names[7]}" ]]; then
git rm -r "$CARCH"/"${valid_names[10]}" git rm -r "$CARCH"/"${valid_names[10]}"
git commit -m "switch from ${valid_names[10]} to ${valid_names[7]}" git commit -m "switch from ${valid_names[10]} to ${valid_names[7]}"
elif [[ -d "$CARCH"/"${valid_names[7]}" ]] \ elif [[ -d "$CARCH"/"${valid_names[7]}" ]] \
&& [[ "${REPO_DEST}" == "${valid_names[10]}" ]]; then && [[ "${repo_dest}" == "${valid_names[10]}" ]]; then
git rm -r "$CARCH"/"${valid_names[7]}" git rm -r "$CARCH"/"${valid_names[7]}"
git commit -m "switch from ${valid_names[7]} to ${valid_names[10]}" git commit -m "switch from ${valid_names[7]} to ${valid_names[10]}"
fi fi
} }
check_team(){ check_team(){
if [[ "${REPO_SRC}" == "${valid_names[0]}" \ if [[ "${repo_src}" == "${valid_names[0]}" \
&& "${REPO_DEST}" == "${valid_names[1]}" ]] || \ && "${repo_dest}" == "${valid_names[1]}" ]] || \
[[ "${REPO_SRC}" == "${valid_names[1]}" \ [[ "${repo_src}" == "${valid_names[1]}" \
&& "${REPO_DEST}" == "${valid_names[0]}" ]] || \ && "${repo_dest}" == "${valid_names[0]}" ]] || \
[[ "${REPO_SRC}" == "${valid_names[1]}" \ [[ "${repo_src}" == "${valid_names[1]}" \
&& "${REPO_DEST}" == "${valid_names[2]}" ]] || \ && "${repo_dest}" == "${valid_names[2]}" ]] || \
[[ "${REPO_SRC}" == "${valid_names[2]}" \ [[ "${repo_src}" == "${valid_names[2]}" \
&& "${REPO_DEST}" == "${valid_names[1]}" ]] ;then && "${repo_dest}" == "${valid_names[1]}" ]] ;then
local org local org
org=$(get_pkg_org "${PACKAGE}") org=$(get_pkg_org "${package}")
add_repo_to_team "${PACKAGE}" "$org" "${REPO_DEST}" add_repo_to_team "${package}" "$org" "${repo_dest}"
remove_repo_from_team "${PACKAGE}" "$org" "${REPO_SRC}" remove_repo_from_team "${package}" "$org" "${repo_src}"
fi fi
} }
path_config() { path_config() {
[[ "${REPO_SRC}" != 'trunk' ]] && pkgbuild="$CARCH/${REPO_SRC}"/PKGBUILD [[ "${repo_src}" != 'trunk' ]] && pkgbuild="$CARCH/${repo_src}"/PKGBUILD
if [[ ! -f "$pkgbuild" ]]; then if [[ ! -f "$pkgbuild" ]]; then
pkgbuild=repos/"${REPO_SRC}-${CARCH}"/PKGBUILD pkgbuild=repos/"${repo_src}-${CARCH}"/PKGBUILD
[[ -f repos/"${REPO_SRC}"-any/PKGBUILD ]] && pkgbuild=repos/"${REPO_SRC}"-any/PKGBUILD [[ -f repos/"${repo_src}"-any/PKGBUILD ]] && pkgbuild=repos/"${repo_src}"-any/PKGBUILD
fi fi
# shellcheck disable=1090 # shellcheck disable=1090
@@ -116,21 +116,21 @@ commit_pkg() {
local commit_msg pkg local commit_msg pkg
if ${remove};then if ${remove};then
action='remove' action='remove'
if [[ "${REPO_SRC}" == 'trunk' ]];then if [[ "${repo_src}" == 'trunk' ]];then
pkg=${PACKAGE} pkg=${package}
git rm -r trunk git rm -r trunk
else else
pkg="${PACKAGE}-$(get_full_version)" pkg="${package}-$(get_full_version)"
prepare_commit prepare_commit
git rm -r "$CARCH/${REPO_SRC}" git rm -r "$CARCH/${repo_src}"
fi fi
commit_msg="[${REPO_SRC}] '$pkg' ${action}" commit_msg="[${repo_src}] '$pkg' ${action}"
msg "Action: %s" "$commit_msg" msg "Action: %s" "$commit_msg"
else else
action='modify' action='modify'
commit_msg="[${REPO_SRC}] '${PACKAGE}-$(get_full_version)' ${action}" commit_msg="[${repo_src}] '${package}-$(get_full_version)' ${action}"
msg "Action: %s" "$commit_msg" msg "Action: %s" "$commit_msg"
git add . git add .
fi fi
@@ -139,23 +139,23 @@ commit_pkg() {
repo_commit_pkg() { repo_commit_pkg() {
local commit_msg local commit_msg
if [[ "${REPO_SRC}" == 'trunk' ]];then if [[ "${repo_src}" == 'trunk' ]];then
action='add' action='add'
prepare_commit prepare_commit
check_rebuild check_rebuild
cp trunk/* "$CARCH/${REPO_DEST}"/ cp trunk/* "$CARCH/${repo_dest}"/
else else
action='move' action='move'
[[ ! -f $pkgbuild ]] && die "%s does not exist!" "$pkgbuild" [[ ! -f $pkgbuild ]] && die "%s does not exist!" "$pkgbuild"
prepare_commit prepare_commit
cp "$CARCH/${REPO_SRC}"/* "$CARCH/${REPO_DEST}"/ cp "$CARCH/${repo_src}"/* "$CARCH/${repo_dest}"/
git rm -r "$CARCH/${REPO_SRC}" git rm -r "$CARCH/${repo_src}"
fi fi
commit_msg="[${REPO_SRC}] -> [${REPO_DEST}] '${PACKAGE}-$(get_full_version)' ${action}" commit_msg="[${repo_src}] -> [${repo_dest}] '${package}-$(get_full_version)' ${action}"
msg "Action: %s" "$commit_msg" msg "Action: %s" "$commit_msg"
git add . git add .
@@ -164,7 +164,7 @@ repo_commit_pkg() {
run(){ run(){
local artixpath head group local artixpath head group
artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}") artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${package}")
if [[ -n ${artixpath} ]];then if [[ -n ${artixpath} ]];then
group=${artixpath%/*} group=${artixpath%/*}
cd "${group}" || return cd "${group}" || return
@@ -183,9 +183,9 @@ run(){
cd "${group}" || return cd "${group}" || return
${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}"
${push} && push_tree "${group##*/}" ${push} && push_tree "${group##*/}"
@@ -193,7 +193,7 @@ run(){
[[ "${cmd}" != 'commitpkg' ]] && check_team [[ "${cmd}" != 'commitpkg' ]] && check_team
else else
die "Package '%s' does not exist!" "${PACKAGE}" die "Package '%s' does not exist!" "${package}"
fi fi
} }
@@ -202,7 +202,7 @@ is_valid_repo(){
for repo in "${valid_names[@]}"; do for repo in "${valid_names[@]}"; do
_valid=${repo:-}${repo:+|}$_valid _valid=${repo:-}${repo:+|}$_valid
done done
eval "case ${REPO_SRC} in eval "case ${repo_src} in
${_valid}) return 0 ;; ${_valid}) return 0 ;;
*) return 1 ;; *) return 1 ;;
esac" esac"
@@ -212,19 +212,21 @@ is_valid_repo(){
load_makepkg_config load_makepkg_config
REPO_SRC='trunk' load_valid_names
PACKAGE=''
repo_src='trunk'
package=''
remove=false remove=false
push=false push=false
pkgbuild=trunk/PKGBUILD pkgbuild=trunk/PKGBUILD
cmd=${0##*/} cmd=${0##*/}
REPO_DEST=${cmd%pkg} repo_dest=${cmd%pkg}
usage() { usage() {
echo "Usage: ${0##*/} [options]" echo "Usage: ${0##*/} [options]"
echo " -s <name> Source repository [default:${REPO_SRC}]" echo " -s <name> Source repository [default:${repo_src}]"
echo ' -p <pkg> Package name' echo ' -p <pkg> Package name'
echo ' -r Delete from repo (commitpkg only)' echo ' -r Delete from repo (commitpkg only)'
echo ' -u Push' echo ' -u Push'
@@ -238,8 +240,8 @@ opts='p:s:urh'
while getopts "${opts}" arg; do while getopts "${opts}" arg; do
case "${arg}" in case "${arg}" in
s) REPO_SRC="$OPTARG" ;; s) repo_src="$OPTARG" ;;
p) PACKAGE="$OPTARG" ;; p) package="$OPTARG" ;;
r) remove=true ;; r) remove=true ;;
u) push=true ;; u) push=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
@@ -249,10 +251,8 @@ done
shift $(( OPTIND - 1 )) shift $(( OPTIND - 1 ))
set_arch_repos "false" "false" "false"
if is_valid_repo;then if is_valid_repo;then
run run
else else
die "source repository '%s' is not valid!" "${REPO_SRC}" die "source repository '%s' is not valid!" "${repo_src}"
fi fi

View File

@@ -16,70 +16,42 @@ m4_include(lib/util-base.sh)
m4_include(lib/util-pkg.sh) m4_include(lib/util-pkg.sh)
m4_include(lib/base/message.sh) m4_include(lib/base/message.sh)
m4_include(lib/pkg/repo.sh) m4_include(lib/pkg/repo.sh)
m4_include(lib/pkg/table.sh)
#{{{ table
msg_table_header(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${BLUE} ${mesg} ${ALL_OFF}\n" "$@" >&2
}
msg_row_downgrade(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${YELLOW} ${mesg}${ALL_OFF}\n" "$@" >&2
}
msg_row_notify(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${GREEN} ${mesg}${ALL_OFF}\n" "$@" >&2
}
msg_row(){
local mesg=$1; shift
# printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
# shellcheck disable=2059
printf "${WHITE} ${mesg}${ALL_OFF}\n" "$@" >&2
}
msg_row_upgrade(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${RED} ${mesg} ${ALL_OFF}\n" "$@" >&2
}
#}}}
#{{{ upgrades, downgrades, moves #{{{ upgrades, downgrades, moves
remove_list(){
local name="$1"
[[ -f "${TREE_DIR_ARTIX}"/$name.list ]] && rm "${TREE_DIR_ARTIX}"/"$name".list
}
write_list(){
local line="$1" name="$2"
printf "%s\n" "$line" >> "${TREE_DIR_ARTIX}"/"$name".list
}
compare_m(){ compare_m(){
result=$(vercmp "$artixver" "$archver")
case ${artixrepo} in case ${artixrepo} in
*testing*|*staging*|*rebuild) *testing*|*staging*|*rebuild)
if [[ "${a}" == "${b}" ]] || [[ "${a}" == 'staging' && "${b}" == 'rebuild' ]]; then if [[ "${a}" == "${b}" ]] || [[ "${a}" == 'staging' && "${b}" == 'rebuild' ]]; then
msg_row "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}" msg_row "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}"
else else
msg_row_notify "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}" msg_row_notify "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}"
if [[ -n "$archrepo" ]]; then [[ -n "$archrepo" ]] && write_list "${a}:${b}:$pkg" pkg_moves
printf "%s\n" "${a}:${b}:$pkg" >> "${TREE_DIR_ARTIX}"/pkg_moves.list
fi
fi fi
;; ;;
esac esac
} }
compare_u(){ compare_u(){
result=$(vercmp "$artixver" "$archver")
if [ "$result" -eq -1 ];then if [ "$result" -eq -1 ];then
msg_row_upgrade "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}" msg_row_upgrade "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}"
printf "%s\n" "${a}:$pkg" >> "${TREE_DIR_ARTIX}"/pkg_upgrades.list write_list "${a}:$pkg" pkg_upgrades
fi fi
} }
compare_d(){ compare_d(){
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}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}" msg_row_downgrade "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}"
@@ -97,12 +69,12 @@ get_archpath(){
} }
pre_compare(){ pre_compare(){
local func="$1" pkgpath="$2" result group local func="$1" pkgpath="$2" result group pkg
group="${pkgpath%/*}" group="${pkgpath%/*}"
group=${group##*/} group=${group##*/}
local pkg artixrepo archrepo pkgbuild artixver archver archpath node a b
pkg=${pkgpath##*/} pkg=${pkgpath##*/}
local artixrepo archrepo pkgbuild artixver archver archpath node a b
artixrepo=$(find_repo "$pkgpath") artixrepo=$(find_repo "$pkgpath")
pkgbuild=$pkgpath/$artixrepo/PKGBUILD pkgbuild=$pkgpath/$artixrepo/PKGBUILD
@@ -125,9 +97,11 @@ pre_compare(){
archver=$(get_full_version) archver=$(get_full_version)
fi fi
result=$(vercmp "$artixver" "$archver")
"$func" "$func"
unset pkgver epoch pkgrel artixver archver pkgbuild archpath unset epoch
fi fi
} }
@@ -148,24 +122,13 @@ compare_move(){
#}}} #}}}
#{{{ functions
tree_loop(){
local func="$1"
for tree in "${ARTIX_TREE[@]}"; do
for package in $(find "${TREE_DIR_ARTIX}/$tree" -name trunk); do
"$func" "$package"
done
done
}
show_compare_header(){ show_compare_header(){
msg_table_header "${table}" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" "Group" msg_table_header "${table}" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" "Group"
} }
show_upgrades_table(){ show_upgrades_table(){
show_compare_header show_compare_header
[[ -f "${TREE_DIR_ARTIX}"/pkg_upgrades.list ]] && rm "${TREE_DIR_ARTIX}"/pkg_upgrades.list remove_list pkg_upgrades
tree_loop compare_upgrades tree_loop compare_upgrades
} }
@@ -176,98 +139,14 @@ show_downgrades_table(){
show_move_table(){ show_move_table(){
show_compare_header show_compare_header
[[ -f "${TREE_DIR_ARTIX}"/pkg_moves.list ]] && rm "${TREE_DIR_ARTIX}"/pkg_moves.list remove_list pkg_moves
tree_loop compare_move tree_loop compare_move
} }
update_db_cache(){
msg "Updating database cache"
for repo in "${searchrepos[@]}"; do
local cachedir=${db_cache_dir}/${linksdb_ext}/${CARCH}/${repo}
rm -rf "$cachedir"
mkdir -p "$cachedir"
msg2 "%s" "$repo"
curl -L -s "${REPOS_MIRROR}/${repo}/os/${CARCH}/${repo}.${linksdb_ext}" \
| bsdtar -xf - -C "$cachedir"
done
msg "Done"
}
#}}}
#{{{ sogrep
query_db() {
for repo in "${searchrepos[@]}"; do
local db=${db_cache_dir}/${linksdb_ext}/${CARCH}/${repo}/
if [[ -d ${db} ]]; then
while read -rd '' pkg; do
read -r match
pkg=${pkg#${db}}
pkg="${pkg%/*}"
msg_row "${tableQ}" "${repo}" "${pkg}" "${match}"
done < <(grep -rZ "${library}" "${db}") | sort -u
fi
done
}
show_lib_table() {
${sync} && update_db_cache
msg_table_header "${tableQ}" "Repo" "Package" "Library"
query_db
}
#}}}
#{{{ check db
is_db_entry() {
local pkgname="$1" repo="${REPOS[$2]}"
if [[ -d ${db_cache_dir}/${linksdb_ext}/${CARCH}/$repo/$pkgname ]];then
return 0
fi
return 1
}
check_db(){
local pkgpath="${1%/*}"
for repo in "${!REPOS[@]}"; do
local pkgbuild artixver
[[ -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
# shellcheck disable=1090
. "$pkgbuild" 2>/dev/null
artixver=$(get_full_version)
for name in "${pkgname[@]}"; do
if ! is_db_entry "$name-$artixver" "$repo"; then
msg_row "${tableU}" "$repo" "$name" "$artixver" "false"
fi
done
unset artixver pkgbuild pkgver epoch pkgname pkgbase
done
}
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"
linksdb_ext="links.tar.${DBEXT}"
load_makepkg_config load_makepkg_config
load_valid_names
testing=true testing=true
staging=true staging=true
unstable=false unstable=false
@@ -276,13 +155,7 @@ upgrades=false
downgrades=false downgrades=false
move=false move=false
sync=false
check=false
query=false
readonly table="%-18s %-18s %-25s %-27s %-27s %-10s" readonly table="%-18s %-18s %-25s %-27s %-27s %-10s"
readonly tableU="%-20s %-35s %-30s %-10s"
readonly tableQ="%-20s %-45s %s"
usage() { usage() {
echo "Usage: ${0##*/} [options] (with -q [libname])" echo "Usage: ${0##*/} [options] (with -q [libname])"
@@ -292,28 +165,19 @@ usage() {
echo " -x Don't inlcude testing packages" echo " -x Don't inlcude testing packages"
echo " -y Don't inlcude staging packages" echo " -y Don't inlcude staging packages"
echo ' -z Include unstable kde and gnome' echo ' -z Include unstable kde and gnome'
echo " -s Sync repo databases"
echo ' -c Check repos'
echo " -q Query repo databases for so libs"
echo ' -r <repo> Repo name to query'
echo ' [default: all]'
echo ' -h This help' echo ' -h This help'
echo '' echo ''
echo '' echo ''
exit "$1" exit "$1"
} }
opts='r:qcsudmxyzh' opts='udmxyzh'
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 ;;
s) sync=true ;;
c) check=true ;;
q) query=true ;;
r) searchrepos=("$OPTARG") ;;
x) testing=false ;; x) testing=false ;;
y) staging=false ;; y) staging=false ;;
z) unstable=true ;; z) unstable=true ;;
@@ -324,50 +188,10 @@ done
shift $(( OPTIND - 1 )) shift $(( OPTIND - 1 ))
library="$1"; shift
set_arch_repos "$testing" "$staging" "$unstable" set_arch_repos "$testing" "$staging" "$unstable"
#{{{ repo names arrays
declare -A REPOS=(
[${valid_names[0]}]=system
[${valid_names[1]}]=world
[${valid_names[2]}]=galaxy
[${valid_names[3]}]=lib32
[${valid_names[4]}]=gremlins
[${valid_names[5]}]=galaxy-gremlins
[${valid_names[6]}]=lib32-gremlins
[${valid_names[7]}]=goblins
[${valid_names[8]}]=galaxy-goblins
[${valid_names[9]}]=lib32-goblins
[${valid_names[11]}]=kde-wobble
[${valid_names[12]}]=gnome-wobble
)
searchrepos=(
"${REPOS[${valid_names[11]}]}"
"${REPOS[${valid_names[12]}]}"
"${REPOS[${valid_names[7]}]}"
"${REPOS[${valid_names[8]}]}"
"${REPOS[${valid_names[9]}]}"
"${REPOS[${valid_names[4]}]}"
"${REPOS[${valid_names[5]}]}"
"${REPOS[${valid_names[6]}]}"
"${REPOS[${valid_names[0]}]}"
"${REPOS[${valid_names[1]}]}"
"${REPOS[${valid_names[2]}]}"
"${REPOS[${valid_names[3]}]}"
)
#}}}
${move} && show_move_table ${move} && show_move_table
${upgrades} && show_upgrades_table ${upgrades} && show_upgrades_table
${downgrades} && show_downgrades_table ${downgrades} && show_downgrades_table
${check} && show_db_table
${query} && show_lib_table

View File

@@ -17,7 +17,7 @@ m4_include(lib/util-pkg.sh)
m4_include(lib/base/message.sh) m4_include(lib/base/message.sh)
m4_include(lib/pkg/deploy.sh) m4_include(lib/pkg/deploy.sh)
#{{{ functions #{{{ deploy
add(){ add(){
if pkgfile=$(find_cached_pkgfile "${pkgname}"); then if pkgfile=$(find_cached_pkgfile "${pkgname}"); then
@@ -29,9 +29,9 @@ add(){
} }
remove(){ remove(){
packages+=("$pkgname") packages+=("$(get_pkgbasename "${pkgname}")")
action='remove' action='remove'
rm -v "$repo_path"/"$pkgname"*.pkg.tar.* rm -v "$repo_path"/"${pkgname}"{,.sig}
} }
repo_action(){ repo_action(){

View File

@@ -232,8 +232,9 @@ db_write_entry() {
msg2 "Creating '%s' db entry..." "${REPO_DB_NAME}" msg2 "Creating '%s' db entry..." "${REPO_DB_NAME}"
local linksentry=$tmpdir/${REPO_DB_NAME}/$pkgname-$pkgver/${REPO_DB_NAME} local linksentry=$tmpdir/${REPO_DB_NAME}/$pkgname-$pkgver/${REPO_DB_NAME}
local files=$(find "$tmppkg" -type f ! -ipath "*/Documentation/*")
for f in $(find "$tmppkg" -type f); do for f in ${files}; do
readelf -d "$f" 2> /dev/null | sed -nr 's/.*Shared library: \[(.*)\].*/\1/p' readelf -d "$f" 2> /dev/null | sed -nr 's/.*Shared library: \[(.*)\].*/\1/p'
done | sort -u > "$linksentry" done | sort -u > "$linksentry"

View File

@@ -32,7 +32,6 @@ clean_first=0
run_namcap=0 run_namcap=0
run_checkpkg=0 run_checkpkg=0
temp_chroot=0 temp_chroot=0
run_nocheck=0
bindmounts=() bindmounts=()
@@ -290,7 +289,7 @@ while getopts "${opts}" arg; do
I) install_pkgs+=("$OPTARG") ;; I) install_pkgs+=("$OPTARG") ;;
l) copy="$OPTARG" ;; l) copy="$OPTARG" ;;
n) run_namcap=1; makepkg_args+=(--install) ;; n) run_namcap=1; makepkg_args+=(--install) ;;
N) run_nocheck=1; makepkg_args+=(--nocheck) ;; N) makepkg_args+=(--nocheck) ;;
C) run_checkpkg=1 ;; C) run_checkpkg=1 ;;
T) temp_chroot=1; copy+="-$$" ;; T) temp_chroot=1; copy+="-$$" ;;
U) makepkg_user="$OPTARG" ;; U) makepkg_user="$OPTARG" ;;

View File

@@ -152,10 +152,10 @@ shift $(( OPTIND - 1 ))
srcpath=$(readlink -f "$1") srcpath=$(readlink -f "$1")
[[ -f "$srcpath"/PKGBUILD ]] || die "%s/PKGBUILD does not exist!" "$srcpath" [[ -f "$srcpath"/PKGBUILD ]] || die "%s/PKGBUILD does not exist!" "$srcpath"
PACKAGE="$srcpath"/PKGBUILD; shift package="$srcpath"/PKGBUILD; shift
# shellcheck disable=1090 # shellcheck disable=1090
. "$PACKAGE" . "${package}"
load_makepkg_config load_makepkg_config

View File

@@ -6,4 +6,4 @@
# CHROOTS_DIR=/var/lib/artools # CHROOTS_DIR=/var/lib/artools
# the workspace directory # the workspace directory
# WORKSPACE_DIR="/home/${USER}/artools-workspace" # WORKSPACE_DIR="${USER_HOME}/artools-workspace"

View File

@@ -36,5 +36,11 @@
# default repos root for deploypkg # default repos root for deploypkg
# REPOS_ROOT=${WORKSPACE_DIR}/repos # REPOS_ROOT=${WORKSPACE_DIR}/repos
# default mirror for comparepkg -s # default mirror for checkrepo
# REPOS_MIRROR="http://mirror1.artixlinux.org/repos" # REPOS_MIRROR="http://mirror1.artixlinux.org/repos"
# enable if trouble with default github arch mirror
# ARCH_TREE=(packages community)
# enable if trouble with default github arch mirror
# HOST_TREE_ARCH='https://git.archlinux.org/svntogit'

View File

@@ -36,7 +36,7 @@ goblins=(
"${valid_names[10]}" "${valid_names[10]}"
) )
unstable=( wobble=(
"${valid_names[11]}" "${valid_names[11]}"
"${valid_names[12]}" "${valid_names[12]}"
) )

View File

@@ -0,0 +1,3 @@
#!/hint/bash
CHROOTVERSION=0.10

View File

@@ -2,8 +2,6 @@
#{{{ chroot #{{{ chroot
CHROOTVERSION=0.10
orig_argv=("$0" "$@") orig_argv=("$0" "$@")
check_root() { check_root() {
local keepenv="$1" local keepenv="$1"

View File

@@ -14,15 +14,10 @@ shopt -s extglob
if [[ -t 2 && "$TERM" != dumb ]]; then if [[ -t 2 && "$TERM" != dumb ]]; then
colorize colorize
else else
# shellcheck disable=2034
declare -gr ALL_OFF='' BOLD='' BLUE='' GREEN='' RED='' YELLOW='' declare -gr ALL_OFF='' BOLD='' BLUE='' GREEN='' RED='' YELLOW=''
fi fi
info() {
local mesg=$1; shift
# shellcheck disable=2059
printf "${YELLOW} -->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}
stat_busy() { stat_busy() {
local mesg=$1; shift local mesg=$1; shift
# shellcheck disable=2059 # shellcheck disable=2059

View File

@@ -13,7 +13,7 @@ trap_setup(){
} }
chroot_mount() { chroot_mount() {
# info "mount: [%s]" "$2" # msg2 "mount: [%s]" "$2"
mount "$@" && CHROOT_ACTIVE_MOUNTS=("$2" "${CHROOT_ACTIVE_MOUNTS[@]}") mount "$@" && CHROOT_ACTIVE_MOUNTS=("$2" "${CHROOT_ACTIVE_MOUNTS[@]}")
} }
@@ -75,7 +75,7 @@ chroot_api_mount() {
chroot_api_umount() { chroot_api_umount() {
if (( ${#CHROOT_ACTIVE_MOUNTS[@]} )); then if (( ${#CHROOT_ACTIVE_MOUNTS[@]} )); then
# info "umount: [%s]" "${CHROOT_ACTIVE_MOUNTS[@]}" # msg2 "umount: [%s]" "${CHROOT_ACTIVE_MOUNTS[@]}"
umount "${CHROOT_ACTIVE_MOUNTS[@]}" umount "${CHROOT_ACTIVE_MOUNTS[@]}"
fi fi
unset CHROOT_ACTIVE_MOUNTS unset CHROOT_ACTIVE_MOUNTS

View File

@@ -85,7 +85,7 @@ write_unpackfs() {
configure_calamares(){ configure_calamares(){
local mods="$1/etc/calamares/modules" local mods="$1/etc/calamares/modules"
if [[ -d "$mods" ]];then if [[ -d "$mods" ]];then
msg2 "Configuring Calamares" msg2 "Configuring: Calamares"
write_users_conf > "$mods"/users.conf write_users_conf > "$mods"/users.conf
write_services_"${INITSYS}"_conf "$mods" write_services_"${INITSYS}"_conf "$mods"
write_postcfg > "$mods"/postcfg.conf write_postcfg > "$mods"/postcfg.conf

View File

@@ -7,9 +7,9 @@ configure_hosts(){
} }
configure_logind(){ configure_logind(){
local conf=$1/etc/"$2"/logind.conf local conf=$1/etc/elogind/logind.conf
if [[ -e "$conf" ]];then if [[ -e "$conf" ]];then
msg2 "Configuring logind ..." msg2 "Configuring: logind"
sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' "$conf" sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' "$conf"
sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' "$conf" sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' "$conf"
sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' "$conf" sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' "$conf"
@@ -18,14 +18,12 @@ configure_logind(){
configure_services(){ configure_services(){
local mnt="$1" local mnt="$1"
info "Configuring [%s] services" "${INITSYS}"
add_svc_"${INITSYS}" "$mnt" "${SERVICES[*]} ${SERVICES_LIVE[*]}" add_svc_"${INITSYS}" "$mnt" "${SERVICES[*]} ${SERVICES_LIVE[*]}"
info "Done configuring [%s] services" "${INITSYS}"
} }
configure_system(){ configure_system(){
local mnt="$1" local mnt="$1"
configure_logind "$mnt" "elogind" configure_logind "$mnt"
echo "${HOST_NAME}" > "$mnt"/etc/hostname echo "${HOST_NAME}" > "$mnt"/etc/hostname
} }
@@ -47,7 +45,7 @@ configure_chroot(){
configure_services "$fs" configure_services "$fs"
configure_calamares "$fs" configure_calamares "$fs"
[[ ! -d "$fs/etc/artools" ]] && mkdir -p "$fs/etc/artools" [[ ! -d "$fs/etc/artools" ]] && mkdir -p "$fs/etc/artools"
msg2 "Writing live.conf" msg2 "Writing: live.conf"
write_live_session_conf > "$fs/etc/artools/live.conf" write_live_session_conf > "$fs/etc/artools/live.conf"
msg "Done configuring [%s]" "${fs##*/}" msg "Done configuring [%s]" "${fs##*/}"
} }

View File

@@ -3,7 +3,7 @@
#{{{ mount #{{{ mount
track_img() { track_img() {
info "mount: [%s]" "$2" msg2 "mount: [%s]" "$2"
mount "$@" && IMG_ACTIVE_MOUNTS=("$2" "${IMG_ACTIVE_MOUNTS[@]}") mount "$@" && IMG_ACTIVE_MOUNTS=("$2" "${IMG_ACTIVE_MOUNTS[@]}")
} }
@@ -15,7 +15,7 @@ mount_img() {
umount_img() { umount_img() {
if [[ -n "${IMG_ACTIVE_MOUNTS[*]}" ]];then if [[ -n "${IMG_ACTIVE_MOUNTS[*]}" ]];then
info "umount: [%s]" "${IMG_ACTIVE_MOUNTS[@]}" msg2 "umount: [%s]" "${IMG_ACTIVE_MOUNTS[@]}"
umount "${IMG_ACTIVE_MOUNTS[@]}" umount "${IMG_ACTIVE_MOUNTS[@]}"
unset IMG_ACTIVE_MOUNTS unset IMG_ACTIVE_MOUNTS
rm -r "$1" rm -r "$1"
@@ -23,7 +23,7 @@ umount_img() {
} }
track_fs() { track_fs() {
info "overlayfs mount: [%s]" "$5" msg2 "overlayfs mount: [%s]" "$5"
mount "$@" && FS_ACTIVE_MOUNTS=("$5" "${FS_ACTIVE_MOUNTS[@]}") mount "$@" && FS_ACTIVE_MOUNTS=("$5" "${FS_ACTIVE_MOUNTS[@]}")
} }
@@ -45,7 +45,7 @@ mount_overlayfs(){
umount_overlayfs(){ umount_overlayfs(){
if [[ -n "${FS_ACTIVE_MOUNTS[*]}" ]];then if [[ -n "${FS_ACTIVE_MOUNTS[*]}" ]];then
info "overlayfs umount: [%s]" "${FS_ACTIVE_MOUNTS[@]}" msg2 "overlayfs umount: [%s]" "${FS_ACTIVE_MOUNTS[@]}"
umount "${FS_ACTIVE_MOUNTS[@]}" umount "${FS_ACTIVE_MOUNTS[@]}"
unset FS_ACTIVE_MOUNTS unset FS_ACTIVE_MOUNTS
rm -rf "${mnt_dir}/work" rm -rf "${mnt_dir}/work"

View File

@@ -59,9 +59,9 @@ load_profile(){
load_pkgs(){ load_pkgs(){
local pkglist="$1" init="$2" local pkglist="$1" init="$2"
info "Loading Packages: [%s] ..." "${pkglist##*/}" msg2 "Loading Packages: [%s] ..." "${pkglist##*/}"
local _init="s|@$init||g" local _init="s|@$init||g" _init_rm1 _init_rm2
case "$init" in case "$init" in
'openrc') _init_rm1="s|@runit.*||g"; _init_rm2="s|@s6.*||g" ;; 'openrc') _init_rm1="s|@runit.*||g"; _init_rm2="s|@s6.*||g" ;;
's6') _init_rm1="s|@runit.*||g"; _init_rm2="s|@openrc.*||g" ;; 's6') _init_rm1="s|@runit.*||g"; _init_rm2="s|@openrc.*||g" ;;

View File

@@ -13,7 +13,7 @@ add_svc_openrc(){
local mnt="$1" names="$2" rlvl="${3:-default}" local mnt="$1" names="$2" rlvl="${3:-default}"
for svc in $names; do for svc in $names; do
if [[ -f $mnt/etc/init.d/$svc ]];then if [[ -f $mnt/etc/init.d/$svc ]];then
msg2 "Setting %s ..." "$svc" msg2 "Setting [%s]: %s" "${INITSYS}" "$svc"
[[ $svc == "xdm" ]] && set_xdm "$mnt" [[ $svc == "xdm" ]] && set_xdm "$mnt"
chroot "$mnt" rc-update add "$svc" "$rlvl" &>/dev/null chroot "$mnt" rc-update add "$svc" "$rlvl" &>/dev/null
fi fi
@@ -24,7 +24,7 @@ add_svc_runit(){
local mnt="$1" names="$2" rlvl="${3:-default}" local mnt="$1" names="$2" rlvl="${3:-default}"
for svc in $names; do for svc in $names; do
if [[ -d $mnt/etc/runit/sv/$svc ]]; then if [[ -d $mnt/etc/runit/sv/$svc ]]; then
msg2 "Setting %s ..." "$svc" msg2 "Setting [%s]: %s" "${INITSYS}" "$svc"
chroot "$mnt" ln -s /etc/runit/sv/"$svc" /etc/runit/runsvdir/"$rlvl" &>/dev/null chroot "$mnt" ln -s /etc/runit/sv/"$svc" /etc/runit/runsvdir/"$rlvl" &>/dev/null
fi fi
done done
@@ -37,7 +37,7 @@ add_svc_s6(){
chroot "$mnt" s6-rc-db -c /etc/s6/rc/compiled type "$svc" &> /dev/null || error=true chroot "$mnt" s6-rc-db -c /etc/s6/rc/compiled type "$svc" &> /dev/null || error=true
ret="$?" ret="$?"
if [ $ret -eq 0 ] && [[ "$error" == false ]]; then if [ $ret -eq 0 ] && [[ "$error" == false ]]; then
msg2 "Setting %s ..." "$svc" msg2 "Setting [%s]: %s" "${INITSYS}" "$svc"
chroot "$mnt" s6-rc-bundle-update -c /etc/s6/rc/compiled add "$rlvl" "$svc" chroot "$mnt" s6-rc-bundle-update -c /etc/s6/rc/compiled add "$rlvl" "$svc"
fi fi
done done

View File

@@ -1,6 +1,6 @@
#!/hint/bash #!/hint/bash
#{{{ deploy #{{{ functions
find_cached_pkgfile() { find_cached_pkgfile() {
local searchdirs=("$PKGDEST" "$PWD") results=() local searchdirs=("$PKGDEST" "$PWD") results=()
@@ -25,4 +25,13 @@ find_cached_pkgfile() {
esac esac
} }
get_pkgbasename() {
local name="$1"
local rm_pkg=${name%.pkg.tar*}
rm_pkg=${rm_pkg%-*}
rm_pkg=${rm_pkg%-*}
rm_pkg=${rm_pkg%-*}
echo "$rm_pkg"
}
#}}} #}}}

View File

@@ -2,6 +2,14 @@
#{{{ git #{{{ git
get_compliant_name(){
local gitname="$1"
case "$gitname" in
*+) gitname=${gitname//+/plus}
esac
echo "$gitname"
}
get_pkg_org(){ get_pkg_org(){
local pkg="$1" org sub local pkg="$1" org sub
case ${pkg} in case ${pkg} in

View File

@@ -4,20 +4,26 @@
shopt -s extglob shopt -s extglob
load_valid_names(){
local conf
conf="${DATADIR}"/valid-names.conf
[[ -f "$conf" ]] || return 1
# shellcheck source=/usr/share/artools/valid-names.conf
[[ -r "$conf" ]] && . "$conf"
return 0
}
set_arch_repos(){ set_arch_repos(){
local x="$1" y="$2" z="$3" local _testing="$1" _staging="$2" _unstable="$3"
# shellcheck disable=1090 [[ -z ${valid_names[*]} ]] && load_valid_names
. "${DATADIR}"/valid-names.conf
ARCH_REPOS=("${stable[@]}") ARCH_REPOS=("${stable[@]}")
$_testing && ARCH_REPOS+=("${gremlins[@]}")
$x && ARCH_REPOS+=("${gremlins[@]}") $_staging && ARCH_REPOS+=("${goblins[@]}")
$y && ARCH_REPOS+=("${goblins[@]}") $_unstable && ARCH_REPOS+=("${wobble[@]}")
$z && ARCH_REPOS+=("${unstable[@]}")
} }
find_repo(){ find_repo(){
local pkg="$1" repo pkgarch="${2:-${CARCH}}" local pkg="$1" pkgarch="${2:-${CARCH}}" repo
for r in "${ARCH_REPOS[@]}"; do for r in "${ARCH_REPOS[@]}"; do
[[ -f $pkg/repos/$r-$pkgarch/PKGBUILD ]] && repo=repos/"$r-$pkgarch" [[ -f $pkg/repos/$r-$pkgarch/PKGBUILD ]] && repo=repos/"$r-$pkgarch"
[[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=repos/"$r"-any [[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=repos/"$r"-any
@@ -27,10 +33,19 @@ find_repo(){
} }
find_pkg(){ find_pkg(){
local searchdir="$1" pkg="$2" local searchdir="$1" pkg="$2" result
local result
result=$(find "$searchdir" -mindepth 2 -maxdepth 2 -type d -name "$pkg") result=$(find "$searchdir" -mindepth 2 -maxdepth 2 -type d -name "$pkg")
echo "$result" echo "$result"
} }
tree_loop(){
local func="$1" pkgs
for tree in "${ARTIX_TREE[@]}"; do
pkgs=$(find "${TREE_DIR_ARTIX}/$tree" -name repos -o -name "$CARCH")
for _package in ${pkgs}; do
"$func" "$_package"
done
done
}
#}}} #}}}

36
lib/pkg/table.sh Normal file
View File

@@ -0,0 +1,36 @@
#!/hint/bash
#{{{ table
msg_table_header(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${BLUE} ${mesg} ${ALL_OFF}\n" "$@" >&2
}
msg_row_downgrade(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${YELLOW} ${mesg}${ALL_OFF}\n" "$@" >&2
}
msg_row_notify(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${GREEN} ${mesg}${ALL_OFF}\n" "$@" >&2
}
msg_row(){
local mesg=$1; shift
# printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
# shellcheck disable=2059
printf "${WHITE} ${mesg}${ALL_OFF}\n" "$@" >&2
}
msg_row_upgrade(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${RED} ${mesg} ${ALL_OFF}\n" "$@" >&2
}
#}}}

View File

@@ -23,12 +23,12 @@ load_base_config(){
[[ -f "$conf" ]] || return 1 [[ -f "$conf" ]] || return 1
# shellcheck disable=1090 # shellcheck source=/etc/artools/artools-base.conf
[[ -r "$conf" ]] && . "$conf" [[ -r "$conf" ]] && . "$conf"
CHROOTS_DIR=${CHROOTS_DIR:-'/var/lib/artools'} CHROOTS_DIR=${CHROOTS_DIR:-'/var/lib/artools'}
WORKSPACE_DIR=${WORKSPACE_DIR:-"/home/${USER}/artools-workspace"} WORKSPACE_DIR=${WORKSPACE_DIR:-"${USER_HOME}/artools-workspace"}
return 0 return 0
} }

View File

@@ -8,7 +8,7 @@ load_iso_config(){
[[ -f "$conf" ]] || return 1 [[ -f "$conf" ]] || return 1
# shellcheck disable=1090 # shellcheck source=/etc/artools/artools-iso.conf
[[ -r "$conf" ]] && . "$conf" [[ -r "$conf" ]] && . "$conf"
ISO_POOL=${ISO_POOL:-"${WORKSPACE_DIR}/iso"} ISO_POOL=${ISO_POOL:-"${WORKSPACE_DIR}/iso"}

View File

@@ -8,14 +8,14 @@ load_pkg_config(){
[[ -f "$conf" ]] || return 1 [[ -f "$conf" ]] || return 1
# shellcheck disable=1090 # shellcheck source=/etc/artools/artools-pkg.conf
[[ -r "$conf" ]] && . "$conf" [[ -r "$conf" ]] && . "$conf"
local git_domain="gitea.artixlinux.org" local git_domain="gitea.artixlinux.org"
GIT_URL="https://${git_domain}" GIT_URL=${GIT_URL:-"https://${git_domain}"}
GIT_SSH="gitea@${git_domain}" GIT_SSH=${GIT_SSH:-"gitea@${git_domain}"}
GIT_TOKEN=${GIT_TOKEN:-''} GIT_TOKEN=${GIT_TOKEN:-''}
@@ -26,7 +26,10 @@ load_pkg_config(){
packages-{gfx,gtk,media,net,qt5,xorg} packages-{gfx,gtk,media,net,qt5,xorg}
) )
local dev_tree=(packages-{python,perl,java,ruby}) local dev_tree=(
packages-{python,perl,java,ruby}
python-{world,galaxy}
)
local init_tree=(packages-{openrc,runit,s6}) local init_tree=(packages-{openrc,runit,s6})
@@ -49,12 +52,15 @@ load_pkg_config(){
TREE_DIR_ARCH=${TREE_DIR_ARCH:-"${WORKSPACE_DIR}/archlinux"} TREE_DIR_ARCH=${TREE_DIR_ARCH:-"${WORKSPACE_DIR}/archlinux"}
ARCH_TREE=(packages community) [[ -z ${ARCH_TREE[*]} ]] && \
ARCH_TREE=(svntogit-{packages,community})
REPOS_ROOT=${REPOS_ROOT:-"${WORKSPACE_DIR}/repos"} REPOS_ROOT=${REPOS_ROOT:-"${WORKSPACE_DIR}/repos"}
REPOS_MIRROR=${REPOS_MIRROR:-'http://mirror1.artixlinux.org/repos'} REPOS_MIRROR=${REPOS_MIRROR:-'http://mirror1.artixlinux.org/repos'}
HOST_TREE_ARCH=${HOST_TREE_ARCH:-'https://github.com/archlinux'}
DBEXT=${DBEXT:-'xz'} DBEXT=${DBEXT:-'xz'}
return 0 return 0