Compare commits

...

44 Commits

Author SHA1 Message Date
b019f42ee1 chroot-run: sleep 1 after killing chroot process 2021-07-06 01:18:37 +02:00
205d668630 update pkg conf defaults 2021-07-05 22:36:00 +02:00
3ae2972d2b commitpkg: fix remove commit msg 2021-07-04 23:10:12 +02:00
5ad1bb49d1 data/pacman: sync conf with pacman-6.0.0-3 2021-07-02 00:33:22 +02:00
b7e7e4c53a buildiso: use tty7 for s6-linux-init 2021-06-29 19:07:07 -05:00
5c58a6cc5b Update 'lib/iso/services.sh'
Signed-off-by: Nathan Owens <ndowens@artixlinux.org>
2021-06-20 19:17:50 +02:00
a12d0a4778 buildiso: default to 'default' tree name 2021-06-05 16:04:09 +02:00
4293f5a967 Merge pull request 'commitpkg: adjust msg' (#52) from msg into master
Reviewed-on: #52
2021-06-01 19:27:33 +02:00
d3e42f60e1 commitpkg: adjust msg 2021-05-30 19:43:51 +02:00
7605aaf55c buildiso: don't write calamares unpack.conf 2021-05-26 20:20:49 +02:00
b57c5e668c links-add: fix db check 2021-05-26 17:52:13 +02:00
db17939f7d buildiso: don't write postcfg.conf 2021-05-25 16:35:19 +02:00
0818ea40e8 links-add: arch backports
* handle GPGKEY with spaces
* do not accept public-only keys for signing
* use more libmakepkg to handle common compression routines
2021-05-22 20:57:29 +02:00
9b2a478aed add missing m4_include 2021-05-20 20:19:08 +02:00
2c3578a850 gitea (#51)
Reviewed-on: #51
Co-authored-by: artoo <artoo@artixlinux.org>
Co-committed-by: artoo <artoo@artixlinux.org>
2021-05-15 20:51:00 +02:00
2dcb55cef4 gitea-api (#50)
Reviewed-on: #50
Co-authored-by: artoo <artoo@artixlinux.org>
Co-committed-by: artoo <artoo@artixlinux.org>
2021-05-15 16:41:18 +02:00
81d890cead default to gz for repo databases 2021-05-15 00:57:33 +02:00
33685e164d commitpkg: revert git add package only 2021-05-06 19:08:17 +02:00
f419683149 proto: update 2021-05-06 18:58:13 +02:00
54f31daccb comparepkg: adjust to artix.list 2021-05-06 17:40:07 +02:00
be0cfb636e Makefile: install proto pkgbuilds 2021-05-06 17:22:26 +02:00
4108a038fa rename suite66 2021-05-06 17:22:02 +02:00
4634c78520 commitpkg: only git add the pkg dir 2021-05-06 17:11:58 +02:00
a9409d3837 update proto pkgbuiild 2021-05-06 17:11:27 +02:00
02c3a079a2 comparepkg: sort pkgs; write artix pkg moves 2021-05-06 16:19:30 +02:00
72993117fa add proto pkgbuild 2021-05-05 17:34:47 +02:00
6e0c336c67 buildiso: write proper calameres services-66.conf 2021-05-03 16:53:20 +02:00
a396dafed9 buildiso: show service msg 2021-05-03 11:07:26 +02:00
c613471459 fstabgen: arch backport 2021-05-03 11:06:48 +02:00
7abd0c9453 add 66 support for package tree 2021-04-30 22:06:13 +02:00
390cc84bbf buildiso: fix 66 service adding 2021-04-30 17:37:06 +02:00
2f1cf770cd artools/0.23 (#49)
Reviewed-on: #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: #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: #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: #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
52 changed files with 750 additions and 576 deletions

View File

@@ -1,4 +1,4 @@
VERSION=0.21 VERSION=0.24
TOOLS = artools TOOLS = artools
PREFIX ?= /usr PREFIX ?= /usr
@@ -38,7 +38,8 @@ PKG_BIN = \
bin/pkg/find-libdeps \ bin/pkg/find-libdeps \
bin/pkg/batchpkg \ bin/pkg/batchpkg \
bin/pkg/signpkg \ bin/pkg/signpkg \
bin/pkg/checkrepo bin/pkg/checkrepo \
bin/pkg/gitearepo
LN_COMMITPKG = \ LN_COMMITPKG = \
extrapkg \ extrapkg \
@@ -87,6 +88,9 @@ PKG_DATA = \
data/pacman/makepkg.conf \ data/pacman/makepkg.conf \
data/valid-names.conf data/valid-names.conf
PROTO = \
$(wildcard data/proto/*.proto)
PATCHES = \ PATCHES = \
$(wildcard data/patches/*.patch) $(wildcard data/patches/*.patch)
@@ -160,6 +164,9 @@ install_pkg:
install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches
install $(FILEMODE) $(PATCHES) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches install $(FILEMODE) $(PATCHES) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches
install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/proto
install $(FILEMODE) $(PROTO) $(DESTDIR)$(DATADIR)/$(TOOLS)/proto
install_cpio: install_cpio:
+make CPIODIR=$(CPIODIR) DESTDIR=$(DESTDIR) -C initcpio install +make CPIODIR=$(CPIODIR) DESTDIR=$(DESTDIR) -C initcpio install

View File

@@ -18,17 +18,13 @@ artools
##### Runtime: ##### Runtime:
- base: - base:
* openssh
* rsync
* haveged
* os-prober * os-prober
* gnupg
* pacman * pacman
- pkg: - pkg:
* namcap * namcap
* git-subrepo * git-subrepo
* jq * rsync
- iso: - iso:
* dosfstools * dosfstools

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,11 +27,12 @@ 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
done done
sleep 1
} }
# umask might have been changed in /etc/profile # umask might have been changed in /etc/profile
@@ -96,7 +98,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
@@ -148,12 +149,6 @@ chroot_extra_mount() {
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
@@ -163,8 +158,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

@@ -364,23 +364,19 @@ while read -r src target fstype opts fsroot; do
pass=0 pass=0
fi fi
if [[ $fsroot != / ]]; then if [[ $fsroot != / && $fstype != btrfs ]]; then
if [[ $fstype = btrfs ]]; then # it's a bind mount
opts+=,subvol=${fsroot#/} src=$(findmnt -funcevo TARGET "$src")$fsroot
else if [[ $src -ef $target ]]; then
# it's a bind mount # hrmm, this is weird. we're probably looking at a file or directory
src=$(findmnt -funcevo TARGET "$src")$fsroot # that was bound into a chroot from the host machine. Ignore it,
if [[ $src -ef $target ]]; then # because this won't actually be a valid mount. Worst case, the user
# hrmm, this is weird. we're probably looking at a file or directory # just re-adds it.
# that was bound into a chroot from the host machine. Ignore it, continue
# because this won't actually be a valid mount. Worst case, the user
# just re-adds it.
continue
fi
fstype=none
opts+=,bind
pass=0
fi fi
fstype=none
opts+=,bind
pass=0
fi fi
# filesystem quirks # filesystem quirks

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

@@ -15,58 +15,39 @@
m4_include(lib/util-base.sh) 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/common.sh)
m4_include(lib/pkg/git.sh) m4_include(lib/pkg/git.sh)
m4_include(lib/pkg/gitea.sh)
m4_include(lib/pkg/repo.sh) m4_include(lib/pkg/repo.sh)
m4_include(lib/pkg/jenkins.sh) m4_include(lib/pkg/jenkins.sh)
#{{{ new git repo #{{{ new git repo
get_compliant_name(){
local gitname="$1"
case "$gitname" in
*+) gitname=${gitname//+/plus} ;;
*+*) gitname=${gitname//+/-} ;;
esac
echo "$gitname"
}
subrepo_clone(){ subrepo_clone(){
local pkg="$1" org="$2" gitname local pkg="$1"
gitname=$(get_compliant_name "$pkg") local org="$2"
msg2 "Subrepo clone [%s] from (%s)" "$pkg" "$org/$gitname" local name="$3"
git subrepo clone "${GIT_SSH}":"$org"/"$gitname".git "$pkg"
}
create_repo() { msg2 "Subrepo clone [%s] from (%s)" "$pkg" "$org/$name"
local pkg="$1" org="$2" gitname git subrepo clone "${GIT_SSH}":"$org"/"$name".git "$pkg"
gitname=$(get_compliant_name "$pkg")
local json="{ \"auto_init\": true, \"name\":\"$gitname\", \"gitignores\":\"ArchLinuxPackages\", \"readme\": \"Default\" }"
msg2 "Create package repo [%s] in org (%s)" "${pkg}" "${org}"
curl -s -X POST "${GIT_URL}/api/v1/org/$org/repos?access_token=${GIT_TOKEN}" \
-H "accept: application/json" \
-H "content-type: application/json" \
-d "$json"
echo
} }
subrepo_new(){ subrepo_new(){
cd "${TREE_DIR_ARTIX}/${GROUP}" || return cd "${TREE_DIR_ARTIX}/${group}" || return
local org local org gitname
org=$(get_pkg_org "${PACKAGE}") org=$(get_pkg_org "${package}")
gitname=$(get_compliant_name "${package}")
create_repo "${PACKAGE}" "$org" gitearepo -cr "$gitname"
add_repo_to_team "${PACKAGE}" "$org" "${TEAM}" add_team_to_repo "$gitname" "$org" "${team}"
subrepo_clone "${PACKAGE}" "$org" subrepo_clone "${package}" "$org" "$gitname"
mkdir -p "${TREE_DIR_ARTIX}/${GROUP}/${PACKAGE}/trunk" mkdir -p "${TREE_DIR_ARTIX}/${group}/${package}/trunk"
commit_jenkins_files "${PACKAGE}" commit_jenkins_files "${package}"
} }
#}}} #}}}
@@ -89,7 +70,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
} }
@@ -110,7 +91,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
@@ -213,14 +194,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"
@@ -232,7 +213,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
} }
@@ -240,8 +221,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#*/}"
@@ -250,9 +231,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##*/}"
@@ -267,6 +248,8 @@ sync_repos(){
load_makepkg_config load_makepkg_config
load_valid_names
testing=true testing=true
staging=true staging=true
unstable=false unstable=false
@@ -280,22 +263,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='https://github.com/archlinux'
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"
@@ -316,9 +298,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 ;;

View File

@@ -18,24 +18,12 @@ m4_include(lib/base/message.sh)
m4_include(lib/pkg/repo.sh) m4_include(lib/pkg/repo.sh)
m4_include(lib/pkg/table.sh) m4_include(lib/pkg/table.sh)
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 #{{{ sogrep
query_db() { query_db() {
for repo in "${searchrepos[@]}"; do for repo in "${searchrepos[@]}"; do
local db=${db_cache_dir}/${linksdb_ext}/${CARCH}/${repo}/ local db
db=${db_cache_dir}/${linksdb_ext}/${CARCH}/${repo}/
if [[ -d ${db} ]]; then if [[ -d ${db} ]]; then
while read -rd '' pkg; do while read -rd '' pkg; do
read -r match read -r match
@@ -52,9 +40,10 @@ query_db() {
#{{{ check db #{{{ check db
is_db_entry() { is_db_entry() {
local pkgname="$1" repo="${REPOS[$2]}" local pkgname="$1" repo="${REPOS[$2]}" entry
entry=${db_cache_dir}/${linksdb_ext}/${CARCH}/$repo/$pkgname
if [[ -d ${db_cache_dir}/${linksdb_ext}/${CARCH}/$repo/$pkgname ]];then if [[ -d "$entry" ]];then
return 0 return 0
fi fi
return 1 return 1
@@ -71,14 +60,14 @@ check_db(){
# shellcheck disable=1090 # shellcheck disable=1090
. "$pkgbuild" 2>/dev/null . "$pkgbuild" 2>/dev/null
artixver=$(get_full_version) artixver=$(get_full_version)
for name in "${pkgname[@]}"; do for name in "${pkgname[@]}"; do
if ! is_db_entry "$name-$artixver" "$repo"; then if ! is_db_entry "$name-$artixver" "$repo"; then
msg_row "${tableU}" "$repo" "$name" "$artixver" "false" msg_row_red "${tableU}" "$repo" "$name" "$artixver" "false"
else
${all_db} && msg_row "${tableU}" "$repo" "$name" "$artixver" "true"
fi fi
done done
unset artixver pkgbuild pkgver epoch pkgname pkgbase unset artixver pkgbuild pkgver epoch pkgname pkgbase
done done
@@ -96,6 +85,20 @@ show_db_table(){
tree_loop check_db 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" db_cache_dir="${XDG_CACHE_HOME:-$USER_HOME/.cache}/artools"
linksdb_ext="links.tar.${DBEXT}" linksdb_ext="links.tar.${DBEXT}"
@@ -105,11 +108,12 @@ load_makepkg_config
sync=false sync=false
check=false check=false
query=false query=false
all_db=false
readonly tableU="%-20s %-35s %-30s %-10s" readonly tableU="%-20s %-35s %-30s %-10s"
readonly tableQ="%-20s %-45s %s" readonly tableQ="%-20s %-45s %s"
set_arch_repos "true" "true" "true" load_valid_names
#{{{ repo names arrays #{{{ repo names arrays
@@ -151,6 +155,7 @@ usage() {
echo ' [default: all]' echo ' [default: all]'
echo " -s Sync repo databases" echo " -s Sync repo databases"
echo ' -c Check repos' echo ' -c Check repos'
echo ' -a Show repo db (-c)'
echo " -q Query repo databases for so libs" echo " -q Query repo databases for so libs"
echo ' -h This help' echo ' -h This help'
echo '' echo ''
@@ -158,13 +163,14 @@ usage() {
exit "$1" exit "$1"
} }
opts='r:qcsh' opts='r:qcsah'
while getopts "${opts}" arg; do while getopts "${opts}" arg; do
case "${arg}" in case "${arg}" in
r) searchrepos=("$OPTARG") ;; r) searchrepos=("$OPTARG") ;;
s) sync=true ;; s) sync=true ;;
c) check=true ;; c) check=true ;;
a) all_db=true ;;
q) query=true ;; q) query=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;; *) echo "invalid argument '${arg}'"; usage 1 ;;

View File

@@ -15,7 +15,9 @@
m4_include(lib/util-base.sh) 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/common.sh)
m4_include(lib/pkg/git.sh) m4_include(lib/pkg/git.sh)
m4_include(lib/pkg/gitea.sh)
m4_include(lib/pkg/repo.sh) m4_include(lib/pkg/repo.sh)
#{{{ functions #{{{ functions
@@ -47,7 +49,7 @@ subrepo_pull(){
prepare_commit(){ prepare_commit(){
# create new layout, copy & remove repos # create new layout, copy & remove repos
if [[ -d repos ]]; then if [[ -d repos ]]; then
msg "Switching to new layout ..." msg2 "Switching to new layout ..."
[[ ! -d "$CARCH" ]] && mkdir "$CARCH" [[ ! -d "$CARCH" ]] && mkdir "$CARCH"
for r in repos/*; do for r in repos/*; do
@@ -61,76 +63,81 @@ prepare_commit(){
git rm -r repos git rm -r repos
git commit -m "switch to new repo layout" git commit -m "switch to new repo layout"
msg "Done switch" msg2 "Done switch"
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 gitname
org=$(get_pkg_org "${PACKAGE}") org=$(get_pkg_org "${package}")
add_repo_to_team "${PACKAGE}" "$org" "${REPO_DEST}" gitname=$(get_compliant_name "${package}")
remove_repo_from_team "${PACKAGE}" "$org" "${REPO_SRC}" add_team_to_repo "$gitname" "${org}" "${repo_dest}"
remove_team_from_repo "$gitname" "${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
. "$pkgbuild" . "$pkgbuild"
} }
get_repo_commit_msg() {
echo "[${repo_src}] -> [${repo_dest}] '${package}-$(get_full_version)' ${action}"
}
get_commit_msg() {
echo "[${repo_src}] '${package}-$(get_full_version)' ${action}"
}
commit_pkg() { 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 commit_msg=$(get_commit_msg)
pkg=${PACKAGE} msg "Action: %s" "$commit_msg"
if [[ "${repo_src}" == 'trunk' ]];then
git rm -r trunk git rm -r trunk
else else
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}"
msg "Action: %s" "$commit_msg"
else else
action='modify' action='modify'
commit_msg="[${REPO_SRC}] '${PACKAGE}-$(get_full_version)' ${action}" commit_msg=$(get_commit_msg)
msg "Action: %s" "$commit_msg" msg "Action: %s" "$commit_msg"
git add . git add .
fi fi
@@ -139,32 +146,29 @@ 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'
commit_msg=$(get_repo_commit_msg)
msg "Action: %s" "$commit_msg"
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"
commit_msg=$(get_repo_commit_msg)
msg "Action: %s" "$commit_msg"
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}"
msg "Action: %s" "$commit_msg"
git add . git add .
git commit -m "$commit_msg" git commit -m "$commit_msg"
} }
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 +187,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 +197,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 +206,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 +216,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 +244,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 +255,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

@@ -23,24 +23,27 @@ m4_include(lib/pkg/table.sh)
remove_list(){ remove_list(){
local name="$1" local name="$1"
[[ -f "${TREE_DIR_ARTIX}"/$name.list ]] && rm "${TREE_DIR_ARTIX}"/$name.list [[ -f "${TREE_DIR_ARTIX}"/$name.list ]] && rm "${TREE_DIR_ARTIX}"/"$name".list
} }
write_list(){ write_list(){
local line="$1" name="$2" local line="$1" name="$2"
printf "%s\n" "$line" >> "${TREE_DIR_ARTIX}"/$name.list 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 if [[ -n "$archrepo" ]]; then
write_list "${a}:${b}:$pkg" pkg_moves write_list "${a}:${b}:$pkg" pkg_moves
else
write_list "@repo@:${b}:$pkg" artix
fi fi
fi fi
;; ;;
@@ -48,18 +51,16 @@ compare_m(){
} }
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#*-}"
write_list "${a}:$pkg" pkg_upgrades 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
} }
@@ -102,9 +103,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
} }
@@ -143,11 +146,14 @@ show_downgrades_table(){
show_move_table(){ show_move_table(){
show_compare_header show_compare_header
remove_list pkg_moves remove_list pkg_moves
remove_list artix
tree_loop compare_move tree_loop compare_move
} }
load_makepkg_config load_makepkg_config
load_valid_names
testing=true testing=true
staging=true staging=true
unstable=false unstable=false
@@ -159,7 +165,7 @@ move=false
readonly table="%-18s %-18s %-25s %-27s %-27s %-10s" readonly table="%-18s %-18s %-25s %-27s %-27s %-10s"
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'

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

89
bin/pkg/gitearepo.in Normal file
View File

@@ -0,0 +1,89 @@
#!/bin/bash
#
# Copyright (C) 2018-21 artoo@artixlinux.org
# Copyright (C) 2021 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/common.sh)
#{{{ functions
create_repo() {
local name="$1"
local org="$2"
local json url
json="{ \"auto_init\": true, \"name\":\"$name\", \"gitignores\":\"ArchLinuxPackages\", \"readme\": \"Default\" }"
url="${GIT_URL}/api/v1/org/$org/repos?access_token=${GIT_TOKEN}"
msg2 "Create package repo [%s] in org (%s)" "$name" "$org"
api_post "$url" -H "accept: application/json" \
-H "content-type: application/json" \
-d "$json"
}
transfer_repo() {
local name="$1"
local old_owner="$2"
local new_owner="landfill" json url
local json url
json="{ \"new_owner\": \"$new_owner\", \"team_ids\": []}"
url="${GIT_URL}/api/v1/repos/$old_owner/$name/transfer?access_token=${GIT_TOKEN}"
msg2 "Transfer package repo [%s] in org (%s)" "$name" "$new_owner"
api_post "$url" -H "accept: application/json" \
-H "Content-Type: application/json" \
-d "$json"
}
#}}}
usage() {
echo "Usage: ${0##*/} [options]"
echo ' -r <repo> Repo name'
echo ' -c Create git repo'
echo ' -t Transfer git repo to landfill org'
echo ' -h This help'
echo ''
echo ''
exit "$1"
}
create=false
transfer=false
opts='r:cth'
while getopts "${opts}" arg; do
case "${arg}" in
r) repo="$OPTARG" ;;
c) create=true ;;
t) transfer=true ;;
h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac
done
shift $(( OPTIND - 1 ))
org=$(get_pkg_org "${repo}")
${create} && create_repo "${repo}" "${org}"
${transfer} && transfer_repo "${repo}" "${org}"

View File

@@ -35,7 +35,7 @@ REPO_DB_PREFIX=
REPO_DB_SUFFIX= REPO_DB_SUFFIX=
LOCKFILE= LOCKFILE=
CLEAN_LOCK=0 CLEAN_LOCK=0
# PREVENT_DOWNGRADE=0 PREVENT_DOWNGRADE=0
# ensure we have a sane umask set # ensure we have a sane umask set
umask 0022 umask 0022
@@ -53,7 +53,7 @@ Multiple packages to add can be specified on the command line.\n"
printf -- "\n" printf -- "\n"
printf -- "Options:\n" printf -- "Options:\n"
printf -- " -n, --new only add packages that are not already in the database\n" printf -- " -n, --new only add packages that are not already in the database\n"
# printf -- "$(gettext " -p, --prevent-downgrade do not add package to database if a newer version is already present\n")" printf -- " -p, --prevent-downgrade do not add package to database if a newer version is already present\n"
elif [[ $cmd == "links-remove" ]] ; then elif [[ $cmd == "links-remove" ]] ; then
printf -- "Usage: links-remove [options] <path-to-db> <packagename> ...\n" printf -- "Usage: links-remove [options] <path-to-db> <packagename> ...\n"
printf -- "\n" printf -- "\n"
@@ -103,7 +103,7 @@ check_gpg() {
fi fi
if (( ! VERIFY )); then if (( ! VERIFY )); then
if ! gpg --list-key "${GPGKEY}" &>/dev/null; then if ! gpg --list-secret-key ${GPGKEY:+"$GPGKEY"} &>/dev/null; then
if [[ -n "$GPGKEY" ]]; then if [[ -n "$GPGKEY" ]]; then
error "The key ${GPGKEY} does not exist in your keyring." error "The key ${GPGKEY} does not exist in your keyring."
elif (( ! KEY )); then elif (( ! KEY )); then
@@ -121,11 +121,11 @@ create_signature() {
local ret=0 local ret=0
msg "Signing database '%s'..." "${dbfile##*/.tmp.}" msg "Signing database '%s'..." "${dbfile##*/.tmp.}"
local SIGNWITHKEY="" local SIGNWITHKEY=()
if [[ -n $GPGKEY ]]; then if [[ -n $GPGKEY ]]; then
SIGNWITHKEY="-u ${GPGKEY}" SIGNWITHKEY=(-u "${GPGKEY}")
fi fi
gpg --detach-sign --use-agent --no-armor "${SIGNWITHKEY}" "$dbfile" &>/dev/null || ret=$? gpg --detach-sign --use-agent --no-armor "${SIGNWITHKEY[@]}" "$dbfile" &>/dev/null || ret=$?
if (( ! ret )); then if (( ! ret )); then
msg2 "Created signature file '%s'" "${dbfile##*/.tmp.}.sig" msg2 "Created signature file '%s'" "${dbfile##*/.tmp.}.sig"
@@ -155,21 +155,13 @@ verify_signature() {
} }
verify_repo_extension() { verify_repo_extension() {
local repofile=$1 local junk=()
if [[ $1 = *.links.tar* ]] && get_compression_command "$1" junk; then
return 0
fi
case $repofile in error "'%s' does not have a valid database archive extension." "$1"
*.links.tar.gz) TAR_OPT="z" ;; exit 1
*.links.tar.bz2) TAR_OPT="j" ;;
*.links.tar.xz) TAR_OPT="J" ;;
*.links.tar.zst) TAR_OPT="--zstd" ;;
*.links.tar.Z) TAR_OPT="Z" ;;
*.links.tar) TAR_OPT="" ;;
*) error "'%s' does not have a valid database archive extension." \
"$repofile"
exit 1 ;;
esac
printf '%s' "$TAR_OPT"
} }
# write an entry to the pacman database # write an entry to the pacman database
@@ -201,18 +193,18 @@ db_write_entry() {
if (( ONLYADDNEW )); then if (( ONLYADDNEW )); then
return 0 return 0
fi fi
# else else
# pkgentry=$(find_pkgentry "$pkgname") pkgentry=$(find_pkgentry "$pkgname")
# if [[ -n $pkgentry ]]; then if [[ -n $pkgentry ]]; then
#
# local version=$(sed -n '/^%VERSION%$/ {n;p;q}' "$pkgentry/desc") local version=$(sed -n '/^%VERSION%$/ {n;p;q}' "$pkgentry/desc")
# if (( $(vercmp "$version" "$pkgver") > 0 )); then if (( $(vercmp "$version" "$pkgver") > 0 )); then
# warning "$(gettext "A newer version for '%s' is already present in database")" "$pkgname" warning "A newer version for '%s' is already present in database" "$pkgname"
# if (( PREVENT_DOWNGRADE )); then if (( PREVENT_DOWNGRADE )); then
# return 0 return 0
# fi fi
# fi fi
# fi fi
fi fi
# remove an existing entry if it exists, ignore failures # remove an existing entry if it exists, ignore failures
@@ -232,8 +224,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"
@@ -396,7 +389,6 @@ rotate_db() {
} }
create_db() { create_db() {
TAR_OPT=$(verify_repo_extension "$REPO_DB_FILE")
# $LOCKFILE is already guaranteed to be absolute so this is safe # $LOCKFILE is already guaranteed to be absolute so this is safe
dirname=${LOCKFILE%/*} dirname=${LOCKFILE%/*}
@@ -405,13 +397,13 @@ create_db() {
tempname=$dirname/.tmp.$filename tempname=$dirname/.tmp.$filename
pushd "$tmpdir/${REPO_DB_NAME}" >/dev/null pushd "$tmpdir/${REPO_DB_NAME}" >/dev/null
if ( shopt -s nullglob; files=(*); (( ${#files[*]} )) ); then local files=(*)
bsdtar -c"${TAR_OPT}"f "$tempname" * if [[ ${files[*]} = '*' ]]; then
else
# we have no packages remaining? zip up some emptyness # we have no packages remaining? zip up some emptyness
warning "No packages remain, creating empty database." warning "No packages remain, creating empty database."
bsdtar -c"${TAR_OPT}"f "$tempname" -T /dev/null files=(-T /dev/null)
fi fi
bsdtar -cf - "${files[@]}" | compress_as "$filename" > "$tempname"
popd >/dev/null popd >/dev/null
create_signature "$tempname" create_signature "$tempname"
@@ -475,7 +467,7 @@ while (( $# )); do
-s|--sign) SIGN=1 ;; -s|--sign) SIGN=1 ;;
-k|--key) KEY=1 ; shift; GPGKEY=$1 ;; -k|--key) KEY=1 ; shift; GPGKEY=$1 ;;
-v|--verify) VERIFY=1 ;; -v|--verify) VERIFY=1 ;;
# -p|--prevent-downgrade) PREVENT_DOWNGRADE=1 ;; -p|--prevent-downgrade) PREVENT_DOWNGRADE=1 ;;
*) args+=("$1") ;; *) args+=("$1") ;;
esac esac
shift shift
@@ -493,7 +485,7 @@ else
LOCKFILE=$PWD/$REPO_DB_FILE.lck LOCKFILE=$PWD/$REPO_DB_FILE.lck
fi fi
verify_repo_extension "$REPO_DB_FILE" >/dev/null verify_repo_extension "$REPO_DB_FILE"
REPO_DB_PREFIX=${REPO_DB_FILE##*/} REPO_DB_PREFIX=${REPO_DB_FILE##*/}
REPO_DB_PREFIX=${REPO_DB_PREFIX%.links.*} REPO_DB_PREFIX=${REPO_DB_PREFIX%.links.*}

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, suite66
# 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

@@ -13,7 +13,8 @@
# packages-openrc # packages-openrc
# packages-runit # packages-runit
# packages-s6 # packages-s6
# packages-python # packages-suite66
# python-world
# packages-perl # packages-perl
# packages-java # packages-java
# packages-ruby # packages-ruby
@@ -29,6 +30,10 @@
# packages-devel # packages-devel
# packages-lib32 # packages-lib32
# packages-qt6 # packages-qt6
# packages-office
# packages-misc
# packages-python
# python-galaxy
# ) # )
# TREE_DIR_ARCH=${WORKSPACE_DIR}/archlinux # TREE_DIR_ARCH=${WORKSPACE_DIR}/archlinux
@@ -38,3 +43,9 @@
# default mirror for checkrepo # 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

@@ -26,6 +26,7 @@ DLAGENTS=('file::/usr/bin/curl -gqC - -o %o %u'
#-- The package required by makepkg to download VCS sources #-- The package required by makepkg to download VCS sources
# Format: 'protocol::package' # Format: 'protocol::package'
VCSCLIENTS=('bzr::bzr' VCSCLIENTS=('bzr::bzr'
'fossil::fossil'
'git::git' 'git::git'
'hg::mercurial' 'hg::mercurial'
'svn::subversion') 'svn::subversion')
@@ -38,21 +39,25 @@ CARCH="x86_64"
CHOST="x86_64-pc-linux-gnu" CHOST="x86_64-pc-linux-gnu"
#-- Compiler and Linker Flags #-- Compiler and Linker Flags
CPPFLAGS="-D_FORTIFY_SOURCE=2" #CPPFLAGS=""
CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt" CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
CXXFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt" -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
-fstack-clash-protection -fcf-protection"
CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now" LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now"
#RUSTFLAGS="-C opt-level=2"
#-- Make Flags: change this for DistCC/SMP systems #-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2" #MAKEFLAGS="-j2"
#-- Debugging flags #-- Debugging flags
DEBUG_CFLAGS="-g -fvar-tracking-assignments" DEBUG_CFLAGS="-g -fvar-tracking-assignments"
DEBUG_CXXFLAGS="-g -fvar-tracking-assignments" DEBUG_CXXFLAGS="-g -fvar-tracking-assignments"
#DEBUG_RUSTFLAGS="-C debuginfo=2"
######################################################################### #########################################################################
# BUILD ENVIRONMENT # BUILD ENVIRONMENT
######################################################################### #########################################################################
# #
# Defaults: BUILDENV=(!distcc !color !ccache check !sign) # Makepkg defaults: BUILDENV=(!distcc !color !ccache check !sign)
# A negated environment option will do the opposite of the comments below. # A negated environment option will do the opposite of the comments below.
# #
#-- distcc: Use the Distributed C/C++/ObjC compiler #-- distcc: Use the Distributed C/C++/ObjC compiler
@@ -75,7 +80,7 @@ BUILDENV=(!distcc color !ccache check !sign)
# These are default values for the options=() settings # These are default values for the options=() settings
######################################################################### #########################################################################
# #
# Default: OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug) # Makepkg defaults: OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug !lto)
# A negated option will do the opposite of the comments below. # A negated option will do the opposite of the comments below.
# #
#-- strip: Strip symbols from binaries/libraries #-- strip: Strip symbols from binaries/libraries
@@ -86,11 +91,12 @@ BUILDENV=(!distcc color !ccache check !sign)
#-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip #-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip
#-- purge: Remove files specified by PURGE_TARGETS #-- purge: Remove files specified by PURGE_TARGETS
#-- debug: Add debugging flags as specified in DEBUG_* variables #-- debug: Add debugging flags as specified in DEBUG_* variables
#-- lto: Add compile flags for building with link time optimization
# #
OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug) OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug !lto)
#-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512 #-- File integrity checks to use. Valid: md5, sha1, sha224, sha256, sha384, sha512, b2
INTEGRITY_CHECK=(md5) INTEGRITY_CHECK=(sha256)
#-- Options to be used when stripping binaries. See `man strip' for details. #-- Options to be used when stripping binaries. See `man strip' for details.
STRIP_BINARIES="--strip-all" STRIP_BINARIES="--strip-all"
#-- Options to be used when stripping shared libraries. See `man strip' for details. #-- Options to be used when stripping shared libraries. See `man strip' for details.
@@ -146,4 +152,10 @@ COMPRESSLZ=(lzip -c -f)
PKGEXT='.pkg.tar.zst' PKGEXT='.pkg.tar.zst'
SRCEXT='.src.tar.gz' SRCEXT='.src.tar.gz'
#########################################################################
# OTHER
#########################################################################
#
#-- Command used to run pacman as root, instead of trying sudo and su
#PACMAN_AUTH=()
# vim: set ft=sh ts=2 sw=2 et: # vim: set ft=sh ts=2 sw=2 et:

View File

@@ -31,9 +31,11 @@ Architecture = auto
# Misc options # Misc options
#UseSyslog #UseSyslog
#Color #Color
#TotalDownload NoProgressBar
CheckSpace # We cannot check disk space from within a chroot environment
#CheckSpace
VerbosePkgLists VerbosePkgLists
ParallelDownloads = 5
# By default, pacman accepts packages signed by keys that its local keyring # By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages. # trusts (see pacman-key and its man page), as well as unsigned packages.
@@ -43,7 +45,7 @@ LocalFileSigLevel = Optional
# NOTE: You must run `pacman-key --init` before first using pacman; the local # NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux # keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux artix`. # packagers with `pacman-key --populate artix`.
# #
# REPOSITORIES # REPOSITORIES
@@ -83,15 +85,6 @@ Include = /etc/pacman.d/mirrorlist
[galaxy] [galaxy]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the lib32 repositories as required here.
#[lib32-gremlins]
#Include = /etc/pacman.d/mirrorlist
#[lib32]
#Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for # An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories. # tips on creating your own repositories.
#[custom] #[custom]

View File

@@ -38,10 +38,11 @@ NoExtract = usr/share/vim/vim*/lang/*
# Misc options # Misc options
#UseSyslog #UseSyslog
#Color #Color
#TotalDownload NoProgressBar
CheckSpace # We cannot check disk space from within a chroot environment
#CheckSpace
VerbosePkgLists VerbosePkgLists
ParallelDownloads = 5
# By default, pacman accepts packages signed by keys that its local keyring # By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages. # trusts (see pacman-key and its man page), as well as unsigned packages.
@@ -51,7 +52,7 @@ LocalFileSigLevel = Optional
# NOTE: You must run `pacman-key --init` before first using pacman; the local # NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux # keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux artix`. # packagers with `pacman-key --populate artix`.
# #
# REPOSITORIES # REPOSITORIES
@@ -96,16 +97,3 @@ Include = /etc/pacman.d/mirrorlist
#[custom] #[custom]
#SigLevel = Optional TrustAll #SigLevel = Optional TrustAll
#Server = file:///home/custompkgs #Server = file:///home/custompkgs
#
# ARCHLINUX
#
#[extra]
#Include = /etc/pacman.d/mirrorlist-arch
#[community]
#Include = /etc/pacman.d/mirrorlist-arch
#[multilib]
#Include = /etc/pacman.d/mirrorlist-arch

View File

@@ -31,9 +31,11 @@ Architecture = auto
# Misc options # Misc options
#UseSyslog #UseSyslog
#Color #Color
#TotalDownload NoProgressBar
CheckSpace # We cannot check disk space from within a chroot environment
#CheckSpace
VerbosePkgLists VerbosePkgLists
ParallelDownloads = 5
# By default, pacman accepts packages signed by keys that its local keyring # By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages. # trusts (see pacman-key and its man page), as well as unsigned packages.
@@ -43,7 +45,7 @@ LocalFileSigLevel = Optional
# NOTE: You must run `pacman-key --init` before first using pacman; the local # NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux # keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux artix`. # packagers with `pacman-key --populate artix`.
# #
# REPOSITORIES # REPOSITORIES
@@ -92,18 +94,6 @@ Include = /etc/pacman.d/mirrorlist
[galaxy] [galaxy]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the lib32 repositories as required here.
#[lib32-goblins]
#Include = /etc/pacman.d/mirrorlist
#[lib32-gremlins]
#Include = /etc/pacman.d/mirrorlist
#[lib32]
#Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for # An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories. # tips on creating your own repositories.
#[custom] #[custom]

View File

@@ -31,9 +31,11 @@ Architecture = auto
# Misc options # Misc options
#UseSyslog #UseSyslog
#Color #Color
#TotalDownload NoProgressBar
CheckSpace # We cannot check disk space from within a chroot environment
#CheckSpace
VerbosePkgLists VerbosePkgLists
ParallelDownloads = 5
# By default, pacman accepts packages signed by keys that its local keyring # By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages. # trusts (see pacman-key and its man page), as well as unsigned packages.
@@ -43,7 +45,7 @@ LocalFileSigLevel = Optional
# NOTE: You must run `pacman-key --init` before first using pacman; the local # NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux # keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux artix`. # packagers with `pacman-key --populate artix`.
# #
# REPOSITORIES # REPOSITORIES
@@ -89,18 +91,6 @@ Include = /etc/pacman.d/mirrorlist
[galaxy] [galaxy]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the lib32 repositories as required here.
#[lib32-goblins]
#Include = /etc/pacman.d/mirrorlist
#[lib32-gremlins]
#Include = /etc/pacman.d/mirrorlist
#[lib32]
#Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for # An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories. # tips on creating your own repositories.
#[custom] #[custom]

View File

@@ -31,9 +31,11 @@ Architecture = auto
# Misc options # Misc options
#UseSyslog #UseSyslog
#Color #Color
#TotalDownload NoProgressBar
CheckSpace # We cannot check disk space from within a chroot environment
#CheckSpace
VerbosePkgLists VerbosePkgLists
ParallelDownloads = 5
# By default, pacman accepts packages signed by keys that its local keyring # By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages. # trusts (see pacman-key and its man page), as well as unsigned packages.
@@ -43,7 +45,7 @@ LocalFileSigLevel = Optional
# NOTE: You must run `pacman-key --init` before first using pacman; the local # NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux # keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux artix`. # packagers with `pacman-key --populate artix`.
# #
# REPOSITORIES # REPOSITORIES
@@ -83,15 +85,6 @@ Include = /etc/pacman.d/mirrorlist
[galaxy] [galaxy]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the lib32 repositories as required here.
#[lib32-gremlins]
#Include = /etc/pacman.d/mirrorlist
#[lib32]
#Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for # An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories. # tips on creating your own repositories.
#[custom] #[custom]

View File

@@ -31,9 +31,11 @@ Architecture = auto
# Misc options # Misc options
#UseSyslog #UseSyslog
#Color #Color
#TotalDownload NoProgressBar
CheckSpace # We cannot check disk space from within a chroot environment
#CheckSpace
VerbosePkgLists VerbosePkgLists
ParallelDownloads = 5
# By default, pacman accepts packages signed by keys that its local keyring # By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages. # trusts (see pacman-key and its man page), as well as unsigned packages.
@@ -43,7 +45,7 @@ LocalFileSigLevel = Optional
# NOTE: You must run `pacman-key --init` before first using pacman; the local # NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux # keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux artix`. # packagers with `pacman-key --populate artix`.
# #
# REPOSITORIES # REPOSITORIES
@@ -92,18 +94,6 @@ Include = /etc/pacman.d/mirrorlist
[galaxy] [galaxy]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the lib32 repositories as required here.
#[lib32-goblins]
#Include = /etc/pacman.d/mirrorlist
#[lib32-gremlins]
#Include = /etc/pacman.d/mirrorlist
#[lib32]
#Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for # An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories. # tips on creating your own repositories.
#[custom] #[custom]

View File

@@ -31,9 +31,11 @@ Architecture = auto
# Misc options # Misc options
#UseSyslog #UseSyslog
#Color #Color
#TotalDownload NoProgressBar
CheckSpace # We cannot check disk space from within a chroot environment
#CheckSpace
VerbosePkgLists VerbosePkgLists
ParallelDownloads = 5
# By default, pacman accepts packages signed by keys that its local keyring # By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages. # trusts (see pacman-key and its man page), as well as unsigned packages.
@@ -43,7 +45,7 @@ LocalFileSigLevel = Optional
# NOTE: You must run `pacman-key --init` before first using pacman; the local # NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux # keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux artix`. # packagers with `pacman-key --populate artix`.
# #
# REPOSITORIES # REPOSITORIES

View File

@@ -31,9 +31,11 @@ Architecture = auto
# Misc options # Misc options
#UseSyslog #UseSyslog
#Color #Color
#TotalDownload NoProgressBar
CheckSpace # We cannot check disk space from within a chroot environment
#CheckSpace
VerbosePkgLists VerbosePkgLists
ParallelDownloads = 5
# By default, pacman accepts packages signed by keys that its local keyring # By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages. # trusts (see pacman-key and its man page), as well as unsigned packages.
@@ -43,7 +45,7 @@ LocalFileSigLevel = Optional
# NOTE: You must run `pacman-key --init` before first using pacman; the local # NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux # keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux artix`. # packagers with `pacman-key --populate artix`.
# #
# REPOSITORIES # REPOSITORIES

View File

@@ -31,9 +31,11 @@ Architecture = auto
# Misc options # Misc options
#UseSyslog #UseSyslog
#Color #Color
#TotalDownload NoProgressBar
CheckSpace # We cannot check disk space from within a chroot environment
#CheckSpace
VerbosePkgLists VerbosePkgLists
ParallelDownloads = 5
# By default, pacman accepts packages signed by keys that its local keyring # By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages. # trusts (see pacman-key and its man page), as well as unsigned packages.
@@ -43,7 +45,7 @@ LocalFileSigLevel = Optional
# NOTE: You must run `pacman-key --init` before first using pacman; the local # NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux # keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux artix`. # packagers with `pacman-key --populate artix`.
# #
# REPOSITORIES # REPOSITORIES

View File

@@ -0,0 +1,38 @@
# Maintainer: Your Name <youremail@domain.com>
pkgname=NAME-openrc
pkgver=VERSION
pkgrel=1
epoch=
pkgdesc="Openrc NAME init script"
arch=('any')
url="https://gitea.artixlinux.org/artixlinux/packages-openrc"
license=('GPL2')
groups=()
depends=("openrc" "NAME")
makedepends=()
checkdepends=()
optdepends=()
provides=("init-NAME")
conflicts=("init-NAME")
replaces=()
backup=()
options=()
install=
changelog=
source=(NAME.{confd,initd})
sha256sums=()
_inst_openrc() {
local sv="$1"
if [ -f "${srcdir}/$sv".confd ]; then
install -Dm644 "${srcdir}/$sv".confd "${pkgdir}"/etc/conf.d/"$sv"
fi
if [ -f "${srcdir}/$sv".initd ]; then
install -Dm755 "${srcdir}/$sv".initd "${pkgdir}"/etc/init.d/"$sv"
fi
}
package() {
_inst_openrc "NAME"
}

View File

@@ -0,0 +1,41 @@
# Maintainer: Your Name <youremail@domain.com>
pkgname=NAME-runit
pkgver=VERSION
pkgrel=1
epoch=
pkgdesc="Runit NAME init script"
arch=('any')
url="https://gitea.artixlinux.org/artixlinux/packages-runit"
license=('GPL2')
groups=()
depends=("runit" "NAME")
makedepends=()
checkdepends=()
optdepends=()
provides=("init-NAME")
conflicts=("init-NAME")
replaces=()
backup=()
options=()
install=
changelog=
source=(NAME.{run,finish,check})
sha256sums=()
_inst_runit() {
local sv="$1"
if [ -f "${srcdir}/$sv".conf ]; then
install -Dm644 "${srcdir}/$sv".conf "${pkgdir}"/etc/runit/sv/"$sv"/conf
fi
for f in run finish check; do
if [ -f "${srcdir}/$sv.$f" ]; then
install -Dm755 "${srcdir}/$sv.$f" "${pkgdir}"/etc/runit/sv/"$sv/$f"
fi
done
}
package() {
_inst_runit "NAME"
}

View File

@@ -0,0 +1,39 @@
# Maintainer: Your Name <youremail@domain.com>
pkgname=NAME-s6
pkgver=VERSION
pkgrel=1
epoch=
pkgdesc="S6 NAME init script"
arch=('any')
url="https://gitea.artixlinux.org/artixlinux/packages-s6"
license=('GPL2')
groups=()
depends=("s6-base" "NAME")
makedepends=()
checkdepends=()
optdepends=()
provides=("init-NAME")
conflicts=("init-NAME")
replaces=()
backup=()
options=()
install=
changelog=
source=(NAME.{dependencies,down,up,type})
sha256sums=()
_inst_s6(){
local sv="$1"
for f in dependencies down type up; do
if [ -f "${srcdir}/$sv.$f" ]; then
install -Dm644 "${srcdir}/$sv.$f" "${pkgdir}"/etc/s6/sv/"$sv/$f"
fi
done
}
package() {
_inst_s6 "NAME"
}

View File

@@ -0,0 +1,34 @@
# Maintainer: Your Name <youremail@domain.com>
pkgname=NAME-suite66
pkgver=VERSION
pkgrel=1
epoch=
pkgdesc="Suite66 NAME init script"
arch=('any')
url="https://gitea.artixlinux.org/artixlinux/packages-suite66"
license=('GPL2')
groups=()
depends=("suite66-base" "NAME")
makedepends=()
checkdepends=()
optdepends=()
provides=("init-NAME")
conflicts=("init-NAME")
replaces=()
backup=()
options=()
install=
changelog=
source=(NAME)
sha256sums=()
_inst_66() {
local sv="$1"
install -Dm644 "$sv" -t "${pkgdir}"/etc/66/service
}
package() {
_inst_66 "NAME"
}

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,41 +31,16 @@ 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_postcfg(){ write_services_66_conf(){
local yaml local conf="$1"/services-66.conf
yaml=$(write_yaml_header) write_services_conf 'svDir' '/etc/66/service' 'runsvDir' '/var/lib/66/system' > "$conf"
yaml+=$(write_yaml_map 0 'keyrings')
for k in archlinux artix;do
yaml+=$(write_yaml_seq 2 "$k")
done
yaml+=$(write_empty_line)
printf '%s' "${yaml}"
}
write_unpackfs() {
local yaml
yaml=$(write_yaml_header)
yaml+=$(write_yaml_map 0 'unpack')
# if ${persist}; then
# yaml+=$(write_yaml_seq_map 2 'source' '"/run/artix/bootmnt/LiveOS/rootfs.img"')
# yaml+=$(write_yaml_map 4 'sourcefs' '"ext4"')
# else
yaml+=$(write_yaml_seq_map 2 'source' '"/run/artix/bootmnt/LiveOS/rootfs.img"')
yaml+=$(write_yaml_map 4 'sourcefs' '"squashfs"')
# fi
yaml+=$(write_yaml_map 4 'destination' '""')
yaml+=$(write_empty_line)
printf '%s' "${yaml}"
} }
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_unpackfs > "$mods"/unpackfs.conf
sed -e "s|services-openrc|services-${INITSYS}|" \ sed -e "s|services-openrc|services-${INITSYS}|" \
-i "$1"/etc/calamares/settings.conf -i "$1"/etc/calamares/settings.conf
fi fi

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" _init_rm1 _init_rm2 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,33 @@ 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 tty7 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"
for svc in $names; do
if [[ -f "$mnt"/etc/66/service/"$svc" ]]; then
msg2 "Setting %s: [%s]" "${INITSYS}" "$svc"
chroot "$mnt" 66-enable -t default "$svc" &>/dev/null
fi
done
} }
#}}} #}}}

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

@@ -0,0 +1,36 @@
#!/hint/bash
#{{{ common functions
get_compliant_name(){
local gitname="$1"
case "$gitname" in
*+) gitname=${gitname//+/plus}
esac
echo "$gitname"
}
get_pkg_org(){
local pkg="$1" org sub
case ${pkg} in
ruby-*) org="packagesRuby" ;;
perl-*) org="packagesPerl" ;;
python-*|python2-*) org="packagesPython" ;;
*) sub=${pkg:0:1}; org="packages${sub^^}" ;;
esac
echo "$org"
}
api_put() {
curl -s -X PUT "$@"
}
api_delete() {
curl -s -X DELETE "$@"
}
api_post() {
curl -s -X POST "$@"
}
#}}}

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,51 +2,6 @@
#{{{ git #{{{ git
get_pkg_org(){
local pkg="$1" org sub
case ${pkg} in
ruby-*) org="packagesRuby" ;;
perl-*) org="packagesPerl" ;;
python-*|python2-*) org="packagesPython" ;;
*) sub=${pkg:0:1}; org="packages${sub^^}" ;;
esac
echo "$org"
}
get_team_id() {
local org="$1" team="$2"
local id
id=$(curl -s -X GET "${GIT_URL}/api/v1/orgs/$org/teams/search?q=$team&access_token=${GIT_TOKEN}" \
-H "accept: application/json" | jq '.data[] .id')
echo "$id"
}
add_repo_to_team() {
local pkg="$1" org="$2" team="$3"
local id
id=$(get_team_id "$org" "$team")
local gitname
gitname=$(get_compliant_name "$pkg")
msg2 "Adding package repo [%s] to team (%s)" "$gitname" "$team"
curl -s -X PUT "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
-H "accept: application/json"
}
remove_repo_from_team() {
local pkg="$1" org="$2" team="$3"
local id
id=$(get_team_id "$org" "$team")
local gitname
gitname=$(get_compliant_name "$pkg")
msg2 "Removing package repo [%s] from team (%s)" "$gitname" "$team"
curl -s -X DELETE "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
-H "accept: application/json"
}
get_local_head(){ get_local_head(){
git log --pretty=%H ...refs/heads/master^ | head -n 1 git log --pretty=%H ...refs/heads/master^ | head -n 1
} }

31
lib/pkg/gitea.sh Normal file
View File

@@ -0,0 +1,31 @@
#!/hint/bash
#{{{ gitea api
add_team_to_repo() {
local name="$1"
local org="$2"
local team="$3"
local url
url="${GIT_URL}/api/v1/repos/$org/$name/teams/$team?access_token=${GIT_TOKEN}"
msg2 "Adding team (%s) to package repo [%s]" "$team" "$name"
api_put "$url" -H "accept: application/json"
}
remove_team_from_repo() {
local name="$1"
local org="$2"
local team="$3"
local url
url="${GIT_URL}/api/v1/repos/$org/$name/teams/$team?access_token=${GIT_TOKEN}"
msg2 "Removing team (%s) from package repo [%s]" "$team" "$name"
api_delete "$url" -H "accept: application/json"
}
#}}}

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 _testing="${1:-false}" _staging="${2:-false}" _unstable="${3:-false}" 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[@]}") $_testing && ARCH_REPOS+=("${gremlins[@]}")
$_staging && ARCH_REPOS+=("${goblins[@]}") $_staging && ARCH_REPOS+=("${goblins[@]}")
$_unstable && ARCH_REPOS+=("${unstable[@]}") $_unstable && ARCH_REPOS+=("${wobble[@]}")
} }
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
@@ -35,9 +41,9 @@ find_pkg(){
tree_loop(){ tree_loop(){
local func="$1" pkgs local func="$1" pkgs
for tree in "${ARTIX_TREE[@]}"; do for tree in "${ARTIX_TREE[@]}"; do
pkgs=$(find "${TREE_DIR_ARTIX}/$tree" -name repos -o -name "$CARCH") pkgs=$(find "${TREE_DIR_ARTIX}/$tree" -name repos -o -name "$CARCH" | sort)
for package in ${pkgs}; do for _package in ${pkgs}; do
"$func" "$package" "$func" "$_package"
done done
done done
} }

View File

@@ -8,13 +8,13 @@ msg_table_header(){
printf "${BLUE} ${mesg} ${ALL_OFF}\n" "$@" >&2 printf "${BLUE} ${mesg} ${ALL_OFF}\n" "$@" >&2
} }
msg_row_downgrade(){ msg_row_yellow(){
local mesg=$1; shift local mesg=$1; shift
# shellcheck disable=2059 # shellcheck disable=2059
printf "${YELLOW} ${mesg}${ALL_OFF}\n" "$@" >&2 printf "${YELLOW} ${mesg}${ALL_OFF}\n" "$@" >&2
} }
msg_row_notify(){ msg_row_green(){
local mesg=$1; shift local mesg=$1; shift
# shellcheck disable=2059 # shellcheck disable=2059
printf "${GREEN} ${mesg}${ALL_OFF}\n" "$@" >&2 printf "${GREEN} ${mesg}${ALL_OFF}\n" "$@" >&2
@@ -27,7 +27,7 @@ msg_row(){
printf "${WHITE} ${mesg}${ALL_OFF}\n" "$@" >&2 printf "${WHITE} ${mesg}${ALL_OFF}\n" "$@" >&2
} }
msg_row_upgrade(){ msg_row_red(){
local mesg=$1; shift local mesg=$1; shift
# shellcheck disable=2059 # shellcheck disable=2059
printf "${RED} ${mesg} ${ALL_OFF}\n" "$@" >&2 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,9 +26,12 @@ 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,suite66})
local desktop_tree=( local desktop_tree=(
packages-{kf5,plasma,kde,qt6} packages-{kf5,plasma,kde,qt6}
@@ -49,13 +52,16 @@ load_pkg_config(){
TREE_DIR_ARCH=${TREE_DIR_ARCH:-"${WORKSPACE_DIR}/archlinux"} TREE_DIR_ARCH=${TREE_DIR_ARCH:-"${WORKSPACE_DIR}/archlinux"}
[[ -z ${ARCH_TREE[*]} ]] && \
ARCH_TREE=(svntogit-{packages,community}) 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'}
DBEXT=${DBEXT:-'xz'} HOST_TREE_ARCH=${HOST_TREE_ARCH:-'https://github.com/archlinux'}
DBEXT=${DBEXT:-'gz'}
return 0 return 0
} }