Compare commits

..

19 Commits
0.21.2 ... 0.23

Author SHA1 Message Date
2f1cf770cd artools/0.23 (#49)
Reviewed-on: artix/artools#49
Co-authored-by: artoo <artoo@artixlinux.org>
Co-committed-by: artoo <artoo@artixlinux.org>
2021-04-29 21:27:56 +02:00
2f5a374523 comparepkg: highlight rebuild trigger pkg 2021-04-25 16:27:20 +02:00
76ca2dfdc7 deploypkg: fix return code 2021-02-08 20:00:56 +01:00
f05688dc12 rm char 2021-02-07 10:21:13 +01:00
091b5deaa8 mkchrootpkg: only expose failed build logs instead of products 2021-02-07 10:18:53 +01:00
93e4beb61f makepkg.conf: make rsync use new-style compression in makepkg.conf 2021-01-28 15:45:54 +01:00
76b4ff511d mkchrootpkg: Expose failed build logs/products 2021-01-28 15:44:23 +01:00
2995207e6b remove code now done in live-services (#48)
buildiso: simplify dm serivce

buildiso: remove openrc specific DM service handling

remove code now done in live-services

Reviewed-on: artix/artools#48
Co-Authored-By: artoo <artoo@artixlinux.org>
Co-Committed-By: artoo <artoo@artixlinux.org>
2021-01-08 19:06:41 +01:00
5aa8bd3333 comparepkg: remove obsolete help opt 2021-01-05 17:58:41 +01:00
699ea06445 Merge pull request 's6: force artix-live dependency on displaymanagers' (#47) from Dudemanguy/artools:master into master
Reviewed-on: artix/artools#47
2021-01-05 17:56:22 +01:00
4b9a883113 s6: force artix-live dependency on displaymanagers
A bit of a hack, but it's good enough. The liveiso has the problem of
the display manager service starting before the artix-live service
starts. This means the artix user isn't created yet and thus autologin
fails. What needs to happen is that every display manager service should
have a dependency on artix-live. However, s6-rc has no way to specify
optional dependencies so simply adding it to the script package can't be
a solution. Instead what we can do is to just check for the existence of
these services when building the iso (this is the only case where we
care about this dependency) and manually add it to the dependencies file
and rebuild the database.
2021-01-05 10:31:48 -06:00
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: artix/artools#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: artix/artools#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: artix/artools#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
34 changed files with 530 additions and 483 deletions

View File

@@ -1,4 +1,4 @@
VERSION=0.21 VERSION=0.23
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

@@ -86,9 +86,9 @@ make_rootfs() {
basestrap "${basestrap_args[@]}" "${rootfs}" "${packages[@]}" basestrap "${basestrap_args[@]}" "${rootfs}" "${packages[@]}"
copy_overlay "${ROOT_OVERLAY}" "${rootfs}" copy_overlay "${root_overlay}" "${rootfs}"
[[ -z ${LIVE_LIST} ]] && configure_chroot "${rootfs}" [[ -z ${live_list} ]] && configure_chroot "${rootfs}"
clean_up_chroot "${rootfs}" clean_up_chroot "${rootfs}"
@@ -109,7 +109,7 @@ make_livefs() {
basestrap "${basestrap_args[@]}" "${livefs}" "${packages[@]}" basestrap "${basestrap_args[@]}" "${livefs}" "${packages[@]}"
copy_overlay "${LIVE_OVERLAY}" "${livefs}" copy_overlay "${live_overlay}" "${livefs}"
configure_chroot "${livefs}" configure_chroot "${livefs}"
@@ -154,7 +154,7 @@ make_grub(){
msg "Prepare [/iso/boot/grub]" msg "Prepare [/iso/boot/grub]"
local layer=${work_dir}/rootfs local layer=${work_dir}/rootfs
[[ -n ${LIVE_LIST} ]] && layer=${work_dir}/livefs [[ -n ${live_list} ]] && layer=${work_dir}/livefs
prepare_grub "${work_dir}/rootfs" "$layer" prepare_grub "${work_dir}/rootfs" "$layer"
@@ -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}"
@@ -249,10 +248,10 @@ mk_boot(){
} }
mk_chroots(){ mk_chroots(){
load_pkgs "${ROOT_LIST}" "${INITSYS}" load_pkgs "${root_list}"
run_safe "make_rootfs" run_safe "make_rootfs"
if [[ -n ${LIVE_LIST} ]]; then if [[ -n ${live_list} ]]; then
load_pkgs "${LIVE_LIST}" "${INITSYS}" load_pkgs "${live_list}"
run_safe "make_livefs" run_safe "make_livefs"
fi fi
} }

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_red "${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,73 +16,47 @@ 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}" ]]; then
msg_row "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}" msg_row "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}"
elif [[ "${a}" == 'staging' && "${b}" == 'rebuild' ]]; then
msg_row_yellow "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}"
else else
msg_row_notify "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}" msg_row_green "${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_red "${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_yellow "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}"
fi fi
fi fi
} }
@@ -97,12 +71,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 +99,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 +124,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 +141,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,44 +157,29 @@ 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]"
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 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 +190,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(){
@@ -92,6 +92,10 @@ passfiles=("$@")
repo_path=${REPOS_ROOT}/${dest_repo}/os/${CARCH} repo_path=${REPOS_ROOT}/${dest_repo}/os/${CARCH}
if [[ -n "${passfiles[*]}" ]]; then if [[ -n "${passfiles[*]}" ]]; then
${add_pkg} && repo_action add if ${add_pkg}; then
${rm_pkg} && repo_action remove repo_action add
fi
if ${rm_pkg}; then
repo_action remove
fi
fi fi

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=()
@@ -248,6 +247,15 @@ download_sources() {
die "Could not download sources." die "Could not download sources."
} }
move_logfiles() {
local l
for l in "$copydir"/logdest/*; do
[[ $l == */logpipe.* ]] && continue
chown "$src_owner" "$l"
mv "$l" "$LOGDEST"
done
}
move_products() { move_products() {
local pkgfile local pkgfile
for pkgfile in "$copydir"/pkgdest/*; do for pkgfile in "$copydir"/pkgdest/*; do
@@ -260,12 +268,7 @@ move_products() {
fi fi
done done
local l move_logfiles
for l in "$copydir"/logdest/*; do
[[ $l == */logpipe.* ]] && continue
chown "$src_owner" "$l"
mv "$l" "$LOGDEST"
done
for s in "$copydir"/srcpkgdest/*; do for s in "$copydir"/srcpkgdest/*; do
chown "$src_owner" "$s" chown "$src_owner" "$s"
@@ -290,7 +293,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" ;;
@@ -380,6 +383,7 @@ then
move_products move_products
else else
(( ret += 1 )) (( ret += 1 ))
move_logfiles
fi fi
(( temp_chroot )) && delete_chroot "$copydir" "$copy" (( temp_chroot )) && delete_chroot "$copydir" "$copy"

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

@@ -8,7 +8,7 @@
# the dist release; default: auto # the dist release; default: auto
# ISO_VERSION=$(date +%Y%m%d) # ISO_VERSION=$(date +%Y%m%d)
# possible values: openrc, runit, s6 # possible values: openrc, runit, s6, 66
# INITSYS="openrc" # INITSYS="openrc"
# gpg key; leave empty or commented to skip img signing # gpg key; leave empty or commented to skip img signing

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

@@ -15,7 +15,7 @@ DLAGENTS=('file::/usr/bin/curl -gqC - -o %o %u'
'ftp::/usr/bin/curl -gqfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u' 'ftp::/usr/bin/curl -gqfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
'http::/usr/bin/curl -gqb "" -fLC - --retry 3 --retry-delay 3 -o %o %u' 'http::/usr/bin/curl -gqb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
'https::/usr/bin/curl -gqb "" -fLC - --retry 3 --retry-delay 3 -o %o %u' 'https::/usr/bin/curl -gqb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
'rsync::/usr/bin/rsync --no-motd -z %u %o' 'rsync::/usr/bin/rsync --no-motd -zz %u %o'
'scp::/usr/bin/scp -C %u %o') 'scp::/usr/bin/scp -C %u %o')
# Other common tools: # Other common tools:

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

@@ -2,30 +2,6 @@
#{{{ calamares #{{{ calamares
write_users_conf(){
local yaml
yaml=$(write_yaml_header)
yaml+=$(write_yaml_map 0 'defaultGroups')
local IFS=','
for g in "${ADDGROUPS[@]}"; do
yaml+=$(write_yaml_seq 2 "$g")
done
unset IFS
yaml+=$(write_yaml_map 0 'autologinGroup' 'autologin')
yaml+=$(write_yaml_map 0 'doAutologin' 'false')
yaml+=$(write_yaml_map 0 'sudoersGroup' 'wheel')
yaml+=$(write_yaml_map 0 'setRootPassword' 'true')
yaml+=$(write_yaml_map 0 'availableShells' '/bin/bash, /bin/zsh')
# yaml+=$(write_yaml_map 0 'passwordRequirements')
# yaml+=$(write_yaml_map 2 'minLength' '-1')
# yaml+=$(write_yaml_map 2 'maxLength' '-1')
# yaml+=$(write_yaml_map 2 'libpwquality')
# yaml+=$(write_yaml_seq 4 "minlen=8")
# yaml+=$(write_yaml_seq 4 "minclass=80")
yaml+=$(write_empty_line)
printf '%s' "${yaml}"
}
write_services_conf(){ write_services_conf(){
local key1="$1" val1="$2" key2="$3" val2="$4" local key1="$1" val1="$2" key2="$3" val2="$4"
local yaml local yaml
@@ -55,6 +31,11 @@ write_services_s6_conf(){
write_services_conf 'svDir' '/etc/s6/sv' 'dbDir' '/etc/s6/rc/compiled' > "$conf" write_services_conf 'svDir' '/etc/s6/sv' 'dbDir' '/etc/s6/rc/compiled' > "$conf"
} }
write_services_66_conf(){
local conf="$1"/services-66.conf
write_services_conf 'svDir' '/etc/66/service' 'dbDir' '/run/66/tree' > "$conf"
}
write_postcfg(){ write_postcfg(){
local yaml local yaml
yaml=$(write_yaml_header) yaml=$(write_yaml_header)
@@ -70,13 +51,10 @@ write_unpackfs() {
local yaml local yaml
yaml=$(write_yaml_header) yaml=$(write_yaml_header)
yaml+=$(write_yaml_map 0 'unpack') yaml+=$(write_yaml_map 0 'unpack')
# if ${persist}; then local fs="squashfs"
# yaml+=$(write_yaml_seq_map 2 'source' '"/run/artix/bootmnt/LiveOS/rootfs.img"') # ${persist} && fs="ext4"
# yaml+=$(write_yaml_map 4 'sourcefs' '"ext4"')
# else
yaml+=$(write_yaml_seq_map 2 'source' '"/run/artix/bootmnt/LiveOS/rootfs.img"') yaml+=$(write_yaml_seq_map 2 'source' '"/run/artix/bootmnt/LiveOS/rootfs.img"')
yaml+=$(write_yaml_map 4 'sourcefs' '"squashfs"') yaml+=$(write_yaml_map 4 'sourcefs' \'"$fs"\')
# fi
yaml+=$(write_yaml_map 4 'destination' '""') yaml+=$(write_yaml_map 4 'destination' '""')
yaml+=$(write_empty_line) yaml+=$(write_empty_line)
printf '%s' "${yaml}" printf '%s' "${yaml}"
@@ -85,8 +63,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_services_"${INITSYS}"_conf "$mods" write_services_"${INITSYS}"_conf "$mods"
write_postcfg > "$mods"/postcfg.conf write_postcfg > "$mods"/postcfg.conf
write_unpackfs > "$mods"/unpackfs.conf write_unpackfs > "$mods"/unpackfs.conf

View File

@@ -2,52 +2,27 @@
#{{{ session #{{{ session
configure_hosts(){
sed -e "s|localhost.localdomain|localhost.localdomain ${HOST_NAME}|" -i "$1"/etc/hosts
}
configure_logind(){
local conf=$1/etc/"$2"/logind.conf
if [[ -e "$conf" ]];then
msg2 "Configuring logind ..."
sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' "$conf"
sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' "$conf"
sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' "$conf"
fi
}
configure_services(){ configure_services(){
local mnt="$1" local mnt="$1"
info "Configuring [%s] services" "${INITSYS}" add_svc_"${INITSYS}" "$mnt" "${SERVICES[*]}"
add_svc_"${INITSYS}" "$mnt" "${SERVICES[*]} ${SERVICES_LIVE[*]}"
info "Done configuring [%s] services" "${INITSYS}"
} }
configure_system(){
local mnt="$1"
configure_logind "$mnt" "elogind"
echo "${HOST_NAME}" > "$mnt"/etc/hostname
}
write_live_session_conf(){ write_live_session_conf(){
local conf='' local conf=''
conf+=$(printf '%s\n' '# live session configuration') conf+=$(printf '%s\n' '# live session configuration')
conf+=$(printf "\nAUTOLOGIN=%s\n" "${AUTOLOGIN}") conf+=$(printf "\nAUTOLOGIN=%s\n" "${AUTOLOGIN}")
conf+=$(printf "\nUSER_NAME=%s\n" "${USER_NAME}")
conf+=$(printf "\nPASSWORD=%s\n" "${PASSWORD}") conf+=$(printf "\nPASSWORD=%s\n" "${PASSWORD}")
conf+=$(printf "\nADDGROUPS='%s'\n" "${ADDGROUPS}")
printf '%s' "$conf" printf '%s' "$conf"
} }
configure_chroot(){ configure_chroot(){
local fs="$1" local fs="$1"
msg "Configuring [%s]" "${fs##*/}" msg "Configuring [%s]" "${fs##*/}"
configure_hosts "$fs"
configure_system "$fs"
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

@@ -5,80 +5,81 @@
show_profile(){ show_profile(){
msg2 "iso_file: %s" "${iso_file}" msg2 "iso_file: %s" "${iso_file}"
msg2 "AUTOLOGIN: %s" "${AUTOLOGIN}" msg2 "AUTOLOGIN: %s" "${AUTOLOGIN}"
msg2 "HOST_NAME: %s" "${HOST_NAME}"
msg2 "USER_NAME: %s" "${USER_NAME}"
msg2 "PASSWORD: %s" "${PASSWORD}" msg2 "PASSWORD: %s" "${PASSWORD}"
msg2 "ADDGROUPS: %s" "${ADDGROUPS}"
msg2 "SERVICES_LIVE: %s" "${SERVICES_LIVE[*]}"
msg2 "SERVICES: %s" "${SERVICES[*]}" msg2 "SERVICES: %s" "${SERVICES[*]}"
} }
load_profile(){ load_profile(){
local profile_dir="${DATADIR}/iso-profiles" local profile_dir="${DATADIR}/iso-profiles"
[[ -d ${WORKSPACE_DIR}/iso-profiles ]] && profile_dir=${WORKSPACE_DIR}/iso-profiles [[ -d "${WORKSPACE_DIR}"/iso-profiles ]] && profile_dir="${WORKSPACE_DIR}"/iso-profiles
ROOT_LIST="$profile_dir/${profile}/Packages-Root" root_list="$profile_dir/${profile}/Packages-Root"
ROOT_OVERLAY="$profile_dir/${profile}/root-overlay" root_overlay="$profile_dir/${profile}/root-overlay"
[[ -f "$profile_dir/${profile}/Packages-Live" ]] && LIVE_LIST="$profile_dir/${profile}/Packages-Live" [[ -f "$profile_dir/${profile}/Packages-Live" ]] && live_list="$profile_dir/${profile}/Packages-Live"
[[ -d "$profile_dir/${profile}/live-overlay" ]] && LIVE_OVERLAY="$profile_dir/${profile}/live-overlay" [[ -d "$profile_dir/${profile}/live-overlay" ]] && live_overlay="$profile_dir/${profile}/live-overlay"
common_dir="${DATADIR}/iso-profiles/common"
[[ -d "$profile_dir"/common ]] && common_dir="${profile_dir}"/common
[[ -f $profile_dir/${profile}/profile.conf ]] || return 1 [[ -f $profile_dir/${profile}/profile.conf ]] || return 1
# shellcheck disable=1090 # shellcheck disable=1090
[[ -r "$profile_dir/${profile}"/profile.conf ]] && . "$profile_dir/${profile}"/profile.conf [[ -r "$profile_dir/${profile}"/profile.conf ]] && . "$profile_dir/${profile}"/profile.conf
DISPLAYMANAGER=${DISPLAYMANAGER:-'none'} AUTOLOGIN=${AUTOLOGIN:-true}
AUTOLOGIN=${AUTOLOGIN:-"true"}
[[ ${DISPLAYMANAGER} == 'none' ]] && AUTOLOGIN="false"
HOST_NAME=${HOST_NAME:-'artix'}
USER_NAME=${USER_NAME:-'artix'}
PASSWORD=${PASSWORD:-'artix'} PASSWORD=${PASSWORD:-'artix'}
ADDGROUPS=${ADDGROUPS:-"video,power,optical,network,lp,scanner,wheel,users,log"}
if [[ -z "${SERVICES[*]}" ]];then if [[ -z "${SERVICES[*]}" ]];then
SERVICES=('acpid' 'bluetoothd' 'cronie' 'cupsd' 'syslog-ng' 'connmand') SERVICES=('acpid' 'bluetoothd' 'cronie' 'cupsd' 'syslog-ng' 'connmand')
fi fi
if [[ ${DISPLAYMANAGER} != "none" ]];then
case "${INITSYS}" in
'openrc') SERVICES+=('xdm') ;;
'runit'|'s6') SERVICES+=("${DISPLAYMANAGER}") ;;
esac
fi
SERVICES_LIVE=('artix-live' 'pacman-init')
return 0 return 0
} }
load_pkgs(){ read_from_list() {
local pkglist="$1" init="$2" local list="$1"
info "Loading Packages: [%s] ..." "${pkglist##*/}" local _space="s| ||g"
local _clean=':a;N;$!ba;s/\n/ /g'
local _com_rm="s|#.*||g"
local _init="s|@$init||g" local _init="s|@initsys@|${INITSYS}|g"
case "$init" in
'openrc') _init_rm1="s|@runit.*||g"; _init_rm2="s|@s6.*||g" ;;
's6') _init_rm1="s|@runit.*||g"; _init_rm2="s|@openrc.*||g" ;;
'runit') _init_rm1="s|@s6.*||g"; _init_rm2="s|@openrc.*||g" ;;
esac
local _space="s| ||g" \ msg2 "Loading Packages: [%s] ..." "${list##*/}"
_clean=':a;N;$!ba;s/\n/ /g' \ packages+=($(sed "$_com_rm" "$list" \
_com_rm="s|#.*||g"
packages=($(sed "$_com_rm" "$pkglist" \
| sed "$_space" \ | sed "$_space" \
| sed "$_purge" \
| sed "$_init" \ | sed "$_init" \
| sed "$_init_rm1" \
| sed "$_init_rm2" \
| sed "$_clean")) | sed "$_clean"))
} }
read_from_services() {
for svc in "${SERVICES[@]}"; do
case "$svc" in
sddm|gdm|lightdm|mdm|greetd|lxdm|xdm) packages+=("$svc-${INITSYS}") ;;
NetworkManager) packages+=("networkmanager-${INITSYS}") ;;
connmand) packages+=("connman-${INITSYS}") ;;
cupsd) packages+=("cups-${INITSYS}") ;;
bluetoothd) packages+=("bluez-${INITSYS}") ;;
syslog-ng|metalog) packages+=("$svc-${INITSYS}") ;;
esac
done
}
load_pkgs(){
local pkglist="$1"
packages=()
if [[ "${pkglist##*/}" == "Packages-Root" ]]; then
read_from_list "${common_dir}/Packages-base"
read_from_list "${common_dir}/Packages-apps"
read_from_list "${common_dir}/Packages-${INITSYS}"
[[ -n "${live_list}" ]] && read_from_list "${common_dir}/Packages-xorg"
read_from_list "$pkglist"
read_from_services
else
read_from_list "$pkglist"
fi
}
#}}} #}}}

View File

@@ -2,19 +2,11 @@
#{{{ services #{{{ services
set_xdm(){
if [[ -f "$1"/etc/conf.d/xdm ]];then
local conf='DISPLAYMANAGER="'${DISPLAYMANAGER}'"'
sed -i -e "s|^.*DISPLAYMANAGER=.*|${conf}|" "$1"/etc/conf.d/xdm
fi
}
add_svc_openrc(){ 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"
chroot "$mnt" rc-update add "$svc" "$rlvl" &>/dev/null chroot "$mnt" rc-update add "$svc" "$rlvl" &>/dev/null
fi fi
done done
@@ -24,7 +16,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
@@ -32,21 +24,34 @@ add_svc_runit(){
add_svc_s6(){ add_svc_s6(){
local mnt="$1" names="$2" rlvl="${3:-default}" error ret local mnt="$1" names="$2" rlvl="${3:-default}" error ret
local db=/etc/s6/rc/compiled
for svc in $names; do for svc in $names; do
error=false error=false
chroot "$mnt" s6-rc-db -c /etc/s6/rc/compiled type "$svc" &> /dev/null || error=true chroot "$mnt" s6-rc-db -c "$db" 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 "$db" add "$rlvl" "$svc"
fi fi
done done
local rlvl=/etc/s6/current
# rebuild s6-linux-init binaries # rebuild s6-linux-init binaries
chroot "$mnt" rm -r /etc/s6/current chroot "$mnt" rm -r "$rlvl"
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 "$rlvl" "$rlvl"
chroot "$mnt" mv /etc/s6/current/bin/init /etc/s6/current/bin/s6-init chroot "$mnt" mv "$rlvl"/bin/init "$rlvl"/bin/s6-init
chroot "$mnt" cp -a /etc/s6/current/bin /usr chroot "$mnt" cp -a "$rlvl"/bin /usr
}
add_svc_66(){
local mnt="$1" names="$2"
chroot "$mnt" 66-tree -cnE root &>/dev/null
for svc in $names; do
if [[ -f $mnt/etc/66/service/$svc ]]; then
chroot "$mnt" 66-enable -t root $svc &>/dev/null
chroot "$mnt" 66-start -t root $svc &>/dev/null
fi
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_yellow(){
local mesg=$1; shift
# shellcheck disable=2059
printf "${YELLOW} ${mesg}${ALL_OFF}\n" "$@" >&2
}
msg_row_green(){
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_red(){
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