Compare commits
39 Commits
Author | SHA1 | Date | |
---|---|---|---|
6d5dbc5774 | |||
36ee26e18c | |||
0b9e18ed5b | |||
b26b6da61c | |||
e1f762cd91 | |||
ee55448fe0 | |||
b3415307b1 | |||
2516fccc3b | |||
45ecb59ffd | |||
11fff303f9 | |||
b05d1c999f | |||
1572c94389 | |||
601f7c30ba | |||
2f37832558 | |||
bf70341af9 | |||
ea3a06a9bc | |||
812cf9a317 | |||
70aa91ddd8 | |||
15407b612a | |||
8d4adb5b47 | |||
85659bfa5e | |||
f0799f85e4 | |||
3810656411 | |||
79b99440fc | |||
d353cd8d46 | |||
90623d0485 | |||
2c0c3b2032 | |||
a463f22118 | |||
86504ac676 | |||
450ac445e4 | |||
56b350ffd0 | |||
a6c4513867 | |||
c50715f258 | |||
77296c4527 | |||
3f419cc41e | |||
60d7ac62a5 | |||
8cc8b66e7f | |||
0ae8c16801 | |||
bb674109ed |
23
Makefile
23
Makefile
@@ -1,4 +1,4 @@
|
|||||||
VERSION=0.15
|
VERSION=0.16
|
||||||
|
|
||||||
CHROOT_VERSION=0.10
|
CHROOT_VERSION=0.10
|
||||||
|
|
||||||
@@ -10,8 +10,8 @@ LIBDIR = $(PREFIX)/lib
|
|||||||
DATADIR = $(PREFIX)/share
|
DATADIR = $(PREFIX)/share
|
||||||
CPIODIR = $(SYSCONFDIR)/initcpio
|
CPIODIR = $(SYSCONFDIR)/initcpio
|
||||||
|
|
||||||
CONF = \
|
BASE_CONF = \
|
||||||
data/artools.conf
|
data/conf/artools-base.conf
|
||||||
|
|
||||||
BASE_BIN = \
|
BASE_BIN = \
|
||||||
bin/base/signfile \
|
bin/base/signfile \
|
||||||
@@ -29,6 +29,9 @@ BASE_UTIL = lib/util-base.sh
|
|||||||
BASE_DATA = \
|
BASE_DATA = \
|
||||||
$(wildcard data/base/pacman*.conf)
|
$(wildcard data/base/pacman*.conf)
|
||||||
|
|
||||||
|
PKG_CONF = \
|
||||||
|
data/conf/artools-pkg.conf
|
||||||
|
|
||||||
PKG_BIN = \
|
PKG_BIN = \
|
||||||
bin/pkg/buildpkg \
|
bin/pkg/buildpkg \
|
||||||
bin/pkg/deploypkg \
|
bin/pkg/deploypkg \
|
||||||
@@ -41,7 +44,8 @@ PKG_BIN = \
|
|||||||
bin/pkg/links-add \
|
bin/pkg/links-add \
|
||||||
bin/pkg/checkpkg \
|
bin/pkg/checkpkg \
|
||||||
bin/pkg/finddeps \
|
bin/pkg/finddeps \
|
||||||
bin/pkg/find-libdeps
|
bin/pkg/find-libdeps \
|
||||||
|
bin/pkg/batchpkg
|
||||||
|
|
||||||
LN_COMMITPKG = \
|
LN_COMMITPKG = \
|
||||||
extrapkg \
|
extrapkg \
|
||||||
@@ -96,6 +100,9 @@ PKG_DATA = \
|
|||||||
PATCHES = \
|
PATCHES = \
|
||||||
$(wildcard data/patches/*.patch)
|
$(wildcard data/patches/*.patch)
|
||||||
|
|
||||||
|
ISO_CONF = \
|
||||||
|
data/conf/artools-iso.conf
|
||||||
|
|
||||||
ISO_BIN = \
|
ISO_BIN = \
|
||||||
bin/iso/buildiso \
|
bin/iso/buildiso \
|
||||||
bin/iso/deployiso
|
bin/iso/deployiso
|
||||||
@@ -151,7 +158,7 @@ clean:
|
|||||||
|
|
||||||
install_base:
|
install_base:
|
||||||
install $(DIRMODE) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
|
install $(DIRMODE) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
|
||||||
install $(FILEMODE) $(CONF) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
|
install $(FILEMODE) $(BASE_CONF) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
|
||||||
|
|
||||||
install $(DIRMODE) $(DESTDIR)$(BINDIR)
|
install $(DIRMODE) $(DESTDIR)$(BINDIR)
|
||||||
install $(MODE) $(BASE_BIN) $(DESTDIR)$(BINDIR)
|
install $(MODE) $(BASE_BIN) $(DESTDIR)$(BINDIR)
|
||||||
@@ -164,6 +171,9 @@ install_base:
|
|||||||
install $(FILEMODE) $(BASE_DATA) $(DESTDIR)$(DATADIR)/$(TOOLS)
|
install $(FILEMODE) $(BASE_DATA) $(DESTDIR)$(DATADIR)/$(TOOLS)
|
||||||
|
|
||||||
install_pkg:
|
install_pkg:
|
||||||
|
install $(DIRMODE) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
|
||||||
|
install $(FILEMODE) $(PKG_CONF) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
|
||||||
|
|
||||||
install $(DIRMODE) $(DESTDIR)$(BINDIR)
|
install $(DIRMODE) $(DESTDIR)$(BINDIR)
|
||||||
install $(MODE) $(PKG_BIN) $(DESTDIR)$(BINDIR)
|
install $(MODE) $(PKG_BIN) $(DESTDIR)$(BINDIR)
|
||||||
|
|
||||||
@@ -189,6 +199,9 @@ install_cpio:
|
|||||||
+make CPIODIR=$(CPIODIR) DESTDIR=$(DESTDIR) -C initcpio install
|
+make CPIODIR=$(CPIODIR) DESTDIR=$(DESTDIR) -C initcpio install
|
||||||
|
|
||||||
install_iso: install_cpio
|
install_iso: install_cpio
|
||||||
|
install $(DIRMODE) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
|
||||||
|
install $(FILEMODE) $(ISO_CONF) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
|
||||||
|
|
||||||
install $(DIRMODE) $(DESTDIR)$(BINDIR)
|
install $(DIRMODE) $(DESTDIR)$(BINDIR)
|
||||||
install $(MODE) $(ISO_BIN) $(DESTDIR)$(BINDIR)
|
install $(MODE) $(ISO_BIN) $(DESTDIR)$(BINDIR)
|
||||||
|
|
||||||
|
27
README.md
27
README.md
@@ -39,15 +39,18 @@ artools
|
|||||||
|
|
||||||
#### Configuration
|
#### Configuration
|
||||||
|
|
||||||
artools.conf is the central configuration file for artools.
|
artools-{base,pkg,iso}.conf are the configuration files for artools.
|
||||||
By default, the config is installed in
|
By default, the config files are installed in
|
||||||
|
|
||||||
/etc/artools/artools.conf
|
```bash
|
||||||
|
/etc/artools/artools-{base,pkg,iso}.conf
|
||||||
|
```
|
||||||
|
|
||||||
A user artools.conf can be placed in
|
A user artools-{base,pkg,iso}.conf can be placed in
|
||||||
|
|
||||||
$HOME/.config/artools/artools.conf
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$HOME/.config/artools/artools-{base,pkg,iso}.conf
|
||||||
|
```
|
||||||
|
|
||||||
If the userconfig is present, artools will load the userconfig values, however, if variables have been set in the systemwide
|
If the userconfig is present, artools will load the userconfig values, however, if variables have been set in the systemwide
|
||||||
|
|
||||||
@@ -55,13 +58,17 @@ These values take precedence over the userconfig.
|
|||||||
Best practise is to leave systemwide file untouched.
|
Best practise is to leave systemwide file untouched.
|
||||||
By default it is commented and shows just initialization values done in code.
|
By default it is commented and shows just initialization values done in code.
|
||||||
|
|
||||||
Tools configuration is done in artools.conf or by args.
|
Tools configuration is done in artools-{base,pkg,iso}.conf or by args.
|
||||||
Specifying args will override artools.conf settings.
|
Specifying args will override artools-{base,pkg,iso}.conf settings.
|
||||||
|
|
||||||
Both, pacman.conf and makepkg.conf for chroots are loaded from
|
Both, pacman.conf and makepkg.conf for chroots are loaded from
|
||||||
|
|
||||||
/usr/share/artools/{makepkg,pacman-*}.conf
|
```bash
|
||||||
|
usr/share/artools/{makepkg,pacman-*}.conf
|
||||||
|
```
|
||||||
|
|
||||||
and can be overridden dropping them in
|
and can be overridden dropping them in
|
||||||
|
|
||||||
$HOME/.config/artools/
|
```bash
|
||||||
|
$HOME/.config/artools/
|
||||||
|
```
|
||||||
|
@@ -46,10 +46,6 @@ select_os(){
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
load_user_info
|
|
||||||
|
|
||||||
load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
|
|
||||||
|
|
||||||
automount=false
|
automount=false
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
|
@@ -23,6 +23,8 @@ umask 0022
|
|||||||
working_dir=''
|
working_dir=''
|
||||||
files=()
|
files=()
|
||||||
|
|
||||||
|
mount_args=()
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "Usage: ${0##*/} [options] working-dir [run arguments]"
|
echo "Usage: ${0##*/} [options] working-dir [run arguments]"
|
||||||
echo "A wrapper around chroot. Provides support for pacman."
|
echo "A wrapper around chroot. Provides support for pacman."
|
||||||
@@ -33,16 +35,15 @@ usage() {
|
|||||||
echo ' -c <dir> Set pacman cache'
|
echo ' -c <dir> Set pacman cache'
|
||||||
echo ' -f <file> Copy file from the host to the chroot'
|
echo ' -f <file> Copy file from the host to the chroot'
|
||||||
echo ' -s Do not run setarch'
|
echo ' -s Do not run setarch'
|
||||||
echo ' -r <list> Bind mountargs ro'
|
echo ' -b <list> Bind mountargs'
|
||||||
echo ' -w <list> Bind mountargs rw'
|
echo ' List format [mntarg1:src1:dest1 ... mntargN:srcN:destN]'
|
||||||
echo ' List format [src1:target1 ... srcN:targetN]'
|
|
||||||
echo ' -h This message'
|
echo ' -h This message'
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
orig_argv=("$0" "$@")
|
orig_argv=("$0" "$@")
|
||||||
|
|
||||||
opts='hC:M:c:r:w:f:s'
|
opts='hC:M:c:b:f:s'
|
||||||
|
|
||||||
while getopts ${opts} arg; do
|
while getopts ${opts} arg; do
|
||||||
case "${arg}" in
|
case "${arg}" in
|
||||||
@@ -51,8 +52,7 @@ while getopts ${opts} arg; do
|
|||||||
c) cache_dirs+=("$OPTARG") ;;
|
c) cache_dirs+=("$OPTARG") ;;
|
||||||
f) files+=("$OPTARG") ;;
|
f) files+=("$OPTARG") ;;
|
||||||
s) nosetarch=1 ;;
|
s) nosetarch=1 ;;
|
||||||
r) bindmounts_ro=("$OPTARG") ;;
|
b) bindmounts=("$OPTARG"); mount_args+=(${bindmounts[@]}) ;;
|
||||||
w) bindmounts_rw=("$OPTARG") ;;
|
|
||||||
h|?) usage ;;
|
h|?) usage ;;
|
||||||
*) error "invalid argument '$arg'"; usage ;;
|
*) error "invalid argument '$arg'"; usage ;;
|
||||||
esac
|
esac
|
||||||
@@ -76,6 +76,14 @@ fi
|
|||||||
|
|
||||||
host_mirrors=($($pacconf_cmd --repo world Server 2> /dev/null | sed -r 's#(.*/)world/os/.*#\1$repo/os/$arch#'))
|
host_mirrors=($($pacconf_cmd --repo world Server 2> /dev/null | sed -r 's#(.*/)world/os/.*#\1$repo/os/$arch#'))
|
||||||
|
|
||||||
|
for host_mirror in "${host_mirrors[@]}"; do
|
||||||
|
if [[ $host_mirror == *file://* ]]; then
|
||||||
|
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")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
while read -r line; do
|
while read -r line; do
|
||||||
mapfile -t lines < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" \
|
mapfile -t lines < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" \
|
||||||
--repo $line Server | sed -r 's#(.*/)[^/]+/os/.+#\1$repo/os/$arch#')
|
--repo $line Server | sed -r 's#(.*/)[^/]+/os/.+#\1$repo/os/$arch#')
|
||||||
@@ -95,9 +103,9 @@ copy_hostconf () {
|
|||||||
|
|
||||||
printf 'Server = %s\n' "${host_mirrors[@]}" >"$working_dir/etc/pacman.d/mirrorlist"
|
printf 'Server = %s\n' "${host_mirrors[@]}" >"$working_dir/etc/pacman.d/mirrorlist"
|
||||||
|
|
||||||
[[ -n $pacman_conf ]] && cp $pacman_conf "$1/etc/pacman.conf"
|
[[ -n $pacman_conf ]] && cp $pacman_conf "${working_dir}/etc/pacman.conf"
|
||||||
|
|
||||||
[[ -n $makepkg_conf ]] && cp $makepkg_conf "$1/etc/makepkg.conf"
|
[[ -n $makepkg_conf ]] && cp $makepkg_conf "${working_dir}/etc/makepkg.conf"
|
||||||
|
|
||||||
local file
|
local file
|
||||||
for file in "${files[@]}"; do
|
for file in "${files[@]}"; do
|
||||||
@@ -105,36 +113,31 @@ copy_hostconf () {
|
|||||||
cp -T "$file" "$working_dir$file"
|
cp -T "$file" "$working_dir$file"
|
||||||
done
|
done
|
||||||
|
|
||||||
sed -r "s|^#?\\s*CacheDir.+|CacheDir = ${cache_dirs[*]}|g" -i "$1/etc/pacman.conf"
|
sed -r "s|^#?\\s*CacheDir.+|CacheDir = ${cache_dirs[*]}|g" -i "${working_dir}/etc/pacman.conf"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mount_args+=("-B:${cache_dirs[0]//:/\\:}:${cache_dirs[0]//:/\\:}" "-B:/etc/hosts:/etc/hosts")
|
||||||
|
|
||||||
|
for cache_dir in "${cache_dirs[@]:1}"; do
|
||||||
|
mount_args+=("-Br:${cache_dir//:/\\:}:${cache_dir//:/\\:}")
|
||||||
|
done
|
||||||
|
|
||||||
chroot_extra_mount() {
|
chroot_extra_mount() {
|
||||||
chroot_add_resolv_conf "$1"
|
chroot_add_resolv_conf "${working_dir}"
|
||||||
chroot_mount "/etc/hosts" "$1/etc/hosts" -B
|
|
||||||
chroot_mount "${cache_dirs[0]}" "$1${cache_dirs[0]}" -B
|
|
||||||
# if [[ -e /etc/localtime ]];then
|
|
||||||
# [[ -e $1/etc/localtime ]] || touch $1/etc/localtime
|
|
||||||
# chroot_mount "/etc/localtime" "$1/etc/localtime" -B
|
|
||||||
# fi
|
|
||||||
|
|
||||||
for cache_dir in ${cache_dirs[@]:1}; do
|
for arg in ${mount_args[@]}; do
|
||||||
chroot_mount "$cache_dir" "$1${cache_dir}" -Br
|
local flag=${arg%%:*}
|
||||||
|
local dest=${arg##*:}
|
||||||
|
local src=${arg%:*}
|
||||||
|
src=${src#*:}
|
||||||
|
chroot_mount "${src}" "${working_dir}${dest}" "${flag}"
|
||||||
done
|
done
|
||||||
|
}
|
||||||
|
|
||||||
for m in ${bindmounts_ro[@]}; do
|
sync_host_localtime(){
|
||||||
chroot_mount "${m%%:*}" "$1${m##*:}" -Br
|
if [[ -e /etc/localtime ]]; then
|
||||||
done
|
cp -L /etc/localtime "${working_dir}"/etc/localtime
|
||||||
|
fi
|
||||||
for m in ${bindmounts_rw[@]}; do
|
|
||||||
chroot_mount "${m%%:*}" "$1${m##*:}" -B
|
|
||||||
done
|
|
||||||
|
|
||||||
for host_mirror in "${host_mirrors[@]}"; do
|
|
||||||
if [[ $host_mirror == *file://* ]]; then
|
|
||||||
host_mirror_path=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g')
|
|
||||||
chroot_mount "$host_mirror_path" "$1$host_mirror_path" -Br
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
umask 0022
|
umask 0022
|
||||||
@@ -146,11 +149,13 @@ 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 "${working_dir}"
|
chroot_extra_mount
|
||||||
|
|
||||||
copy_hostconf "${working_dir}"
|
copy_hostconf
|
||||||
|
|
||||||
eval $(grep '^CARCH=' "$working_dir/etc/makepkg.conf")
|
eval $(grep '^CARCH=' "$working_dir/etc/makepkg.conf")
|
||||||
|
|
||||||
|
@@ -14,10 +14,7 @@
|
|||||||
|
|
||||||
. @libdir@/artools/util-base.sh
|
. @libdir@/artools/util-base.sh
|
||||||
|
|
||||||
load_user_info
|
load_makepkg_config
|
||||||
|
|
||||||
load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
|
|
||||||
load_vars /etc/makepkg.conf
|
|
||||||
|
|
||||||
file_to_sign="$1"
|
file_to_sign="$1"
|
||||||
|
|
||||||
|
@@ -12,7 +12,6 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
. @libdir@/artools/util-base.sh
|
|
||||||
. @libdir@/artools/util-iso.sh
|
. @libdir@/artools/util-iso.sh
|
||||||
|
|
||||||
gen_iso_fn(){
|
gen_iso_fn(){
|
||||||
@@ -42,7 +41,7 @@ prepare_build(){
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
pacman_conf="${DATADIR}/$pac_file"
|
pacman_conf="${DATADIR}/$pac_file"
|
||||||
[[ -f ${USERCONFDIR}/artools/$pac_file ]] && pacman_conf="${USERCONFDIR}/artools/$pac_file"
|
[[ -f ${USER_CONF_DIR}/$pac_file ]] && pacman_conf="${USER_CONF_DIR}/$pac_file"
|
||||||
|
|
||||||
iso_file=$(gen_iso_fn).iso
|
iso_file=$(gen_iso_fn).iso
|
||||||
|
|
||||||
@@ -110,10 +109,6 @@ build(){
|
|||||||
show_elapsed_time "${FUNCNAME}" "${timer_start}"
|
show_elapsed_time "${FUNCNAME}" "${timer_start}"
|
||||||
}
|
}
|
||||||
|
|
||||||
load_user_info
|
|
||||||
|
|
||||||
load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
|
|
||||||
|
|
||||||
clean_first=true
|
clean_first=true
|
||||||
pretend=false
|
pretend=false
|
||||||
images_only=false
|
images_only=false
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
. @libdir@/artools/util-base.sh
|
. @libdir@/artools/util-iso.sh
|
||||||
|
|
||||||
connect(){
|
connect(){
|
||||||
echo "${ACCOUNT}@${FILE_HOST}:${FILE_HOME}"
|
echo "${ACCOUNT}@${FILE_HOST}:${FILE_HOME}"
|
||||||
@@ -30,10 +30,6 @@ sync_dir(){
|
|||||||
show_elapsed_time "${FUNCNAME}" "${timer_start}"
|
show_elapsed_time "${FUNCNAME}" "${timer_start}"
|
||||||
}
|
}
|
||||||
|
|
||||||
load_user_info
|
|
||||||
|
|
||||||
load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
|
|
||||||
|
|
||||||
update=false
|
update=false
|
||||||
verbose=false
|
verbose=false
|
||||||
|
|
||||||
|
71
bin/pkg/batchpkg.in
Normal file
71
bin/pkg/batchpkg.in
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
#!/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.
|
||||||
|
|
||||||
|
. /usr/lib/artools/util-pkg.sh
|
||||||
|
|
||||||
|
batch_move() {
|
||||||
|
local name="${1:-pkg_moves}"
|
||||||
|
local pkglist=${TREE_DIR_ARTIX}/$name.list
|
||||||
|
[[ -f $pkglist ]] || die "%s does not exist!" "$pkglist"
|
||||||
|
while read entry;do
|
||||||
|
local pkg=${entry##*:}
|
||||||
|
local src=${entry%:*}
|
||||||
|
src=${src#*:}
|
||||||
|
local dest=${entry%%:*}
|
||||||
|
if ${runlist}; then
|
||||||
|
"${dest}"pkg -s "${src}" -u -p "${pkg}"
|
||||||
|
else
|
||||||
|
msg "%s" "${dest}pkg -s ${src} -u -p ${pkg}"
|
||||||
|
fi
|
||||||
|
done < $pkglist
|
||||||
|
}
|
||||||
|
|
||||||
|
# batch_upgrade() {
|
||||||
|
# local pkglist=${TREE_DIR_ARTIX}/pkg_upgrades.list
|
||||||
|
# [[ -f $pkglist ]] || die "%s does not exist!" "$pkglist"
|
||||||
|
# while read entry;do
|
||||||
|
# local pkg=${entry#*:}
|
||||||
|
# local dest=${entry%:*}
|
||||||
|
# echo "buildtree -i -p ${pkg}"
|
||||||
|
# echo "${dest}pkg -u -p ${pkg}"
|
||||||
|
# done < $pkglist
|
||||||
|
# }
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "Usage: ${0##*/} [optional listname]"
|
||||||
|
echo ' -r Run generated commands'
|
||||||
|
echo ' -h This help'
|
||||||
|
echo ''
|
||||||
|
echo ''
|
||||||
|
exit $1
|
||||||
|
}
|
||||||
|
|
||||||
|
movelistname=pkg_moves
|
||||||
|
runlist=false
|
||||||
|
|
||||||
|
opts='rh'
|
||||||
|
|
||||||
|
while getopts "${opts}" arg; do
|
||||||
|
case "${arg}" in
|
||||||
|
r) runlist=true ;;
|
||||||
|
h|?) usage 0 ;;
|
||||||
|
*) echo "invalid argument '${arg}'"; usage 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
shift $(($OPTIND - 1))
|
||||||
|
|
||||||
|
movelistname="$1"; shift
|
||||||
|
|
||||||
|
batch_move "$movelistname"
|
@@ -12,15 +12,12 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
. @libdir@/artools/util-base.sh
|
|
||||||
. @libdir@/artools/util-pkg.sh
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
load_user_info
|
|
||||||
|
|
||||||
load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
|
|
||||||
|
|
||||||
create_first=false
|
create_first=false
|
||||||
rebuild=false
|
rebuild=false
|
||||||
|
no_check=false
|
||||||
|
is_checkpkg=false
|
||||||
|
|
||||||
mkchrootpkg_args=(-c -n)
|
mkchrootpkg_args=(-c -n)
|
||||||
|
|
||||||
@@ -33,6 +30,8 @@ usage() {
|
|||||||
echo " -r <dir> Create chroots in this directory"
|
echo " -r <dir> Create chroots in this directory"
|
||||||
echo ' -c Recreate the chroot before building'
|
echo ' -c Recreate the chroot before building'
|
||||||
echo ' -m Major rebuild'
|
echo ' -m Major rebuild'
|
||||||
|
echo ' -N Disable check() function'
|
||||||
|
echo ' -C Run checkpkg after built'
|
||||||
echo ' -h This help'
|
echo ' -h This help'
|
||||||
echo ''
|
echo ''
|
||||||
echo "Default mkchrootpkg_args args: ${mkchrootpkg_args[*]}"
|
echo "Default mkchrootpkg_args args: ${mkchrootpkg_args[*]}"
|
||||||
@@ -42,13 +41,15 @@ usage() {
|
|||||||
|
|
||||||
orig_argv=("$0" "$@")
|
orig_argv=("$0" "$@")
|
||||||
|
|
||||||
opts='hcmr:'
|
opts='hcCNmr:'
|
||||||
|
|
||||||
while getopts "${opts}" arg; do
|
while getopts "${opts}" arg; do
|
||||||
case "${arg}" in
|
case "${arg}" in
|
||||||
r) CHROOTS_PKG="$OPTARG" ;;
|
r) CHROOTS_PKG="$OPTARG" ;;
|
||||||
c) create_first=true ;;
|
c) create_first=true ;;
|
||||||
m) rebuild=true ;;
|
m) rebuild=true ;;
|
||||||
|
C) is_checkpkg=true; mkchrootpkg_args+=(-C) ;;
|
||||||
|
N) no_check=true; mkchrootpkg_args+=(-N) ;;
|
||||||
h|?) usage 0 ;;
|
h|?) usage 0 ;;
|
||||||
*) echo "invalid argument '%s'" "${arg}"; usage 1 ;;
|
*) echo "invalid argument '%s'" "${arg}"; usage 1 ;;
|
||||||
esac
|
esac
|
||||||
@@ -65,10 +66,10 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
pacman_conf="${DATADIR}/pacman-${repo}.conf"
|
pacman_conf="${DATADIR}/pacman-${repo}.conf"
|
||||||
[[ -f ${USERCONFDIR}/artools/pacman-${repo}.conf ]] && pacman_conf="${USERCONFDIR}/artools/pacman-${repo}.conf"
|
[[ -f ${USER_CONF_DIR}/pacman-${repo}.conf ]] && pacman_conf="${USER_CONF_DIR}/pacman-${repo}.conf"
|
||||||
|
|
||||||
makepkg_conf="${DATADIR}/makepkg.conf"
|
makepkg_conf="${DATADIR}/makepkg.conf"
|
||||||
[[ -f ${USERCONFDIR}/artools/makepkg.conf ]] && makepkg_conf="${USERCONFDIR}/artools/makepkg.conf"
|
[[ -f ${USER_CONF_DIR}/makepkg.conf ]] && makepkg_conf="${USER_CONF_DIR}/makepkg.conf"
|
||||||
|
|
||||||
check_root SOURCE_DATE_EPOCH
|
check_root SOURCE_DATE_EPOCH
|
||||||
|
|
||||||
|
@@ -12,9 +12,39 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
. @libdir@/artools/util-base.sh
|
|
||||||
. @libdir@/artools/util-pkg.sh
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
|
patch_pkg(){
|
||||||
|
local pkg="$1"
|
||||||
|
case $pkg in
|
||||||
|
glibc)
|
||||||
|
sed -e 's|{locale,systemd/system,tmpfiles.d}|{locale,tmpfiles.d}|' \
|
||||||
|
-e '/nscd.service/d' \
|
||||||
|
-i $pkg/trunk/PKGBUILD
|
||||||
|
;;
|
||||||
|
linux|linux-lts)
|
||||||
|
sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i $pkg/trunk/PKGBUILD
|
||||||
|
sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
|
||||||
|
-i $pkg/trunk/config
|
||||||
|
;;
|
||||||
|
bash)
|
||||||
|
sed -e 's|system.bash_logout)|system.bash_logout artix.bashrc)|' \
|
||||||
|
-e "s|etc/bash.|etc/bash/|g" \
|
||||||
|
-e 's|"$pkgdir/etc/skel/.bash_logout"|"$pkgdir/etc/skel/.bash_logout"\n install -Dm644 artix.bashrc $pkgdir/etc/bash/bashrc.d/artix.bashrc|' \
|
||||||
|
-i $pkg/trunk/PKGBUILD
|
||||||
|
cd $pkg/trunk
|
||||||
|
patch -Np 1 -i ${DATADIR}/patches/artix-bash.patch
|
||||||
|
updpkgsums
|
||||||
|
cd ../..
|
||||||
|
;;
|
||||||
|
gstreamer|gst-plugins-*|licenses)
|
||||||
|
sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \
|
||||||
|
-e 's|(Arch Linux)|(Artix Linux)|' \
|
||||||
|
-i $pkg/trunk/PKGBUILD
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
pull_tree_arch(){
|
pull_tree_arch(){
|
||||||
cd ${TREE_DIR_ARCH}
|
cd ${TREE_DIR_ARCH}
|
||||||
for tree in ${TREE_NAMES_ARCH[@]};do
|
for tree in ${TREE_NAMES_ARCH[@]};do
|
||||||
@@ -165,11 +195,7 @@ sync_repos(){
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
load_user_info
|
load_makepkg_config
|
||||||
|
|
||||||
load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
|
|
||||||
load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
|
|
||||||
load_vars /etc/makepkg.conf
|
|
||||||
|
|
||||||
sync=false
|
sync=false
|
||||||
sync_arch=true
|
sync_arch=true
|
||||||
|
@@ -12,21 +12,26 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
. @libdir@/artools/util-base.sh
|
|
||||||
. @libdir@/artools/util-pkg.sh
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
shopt -s extglob
|
shopt -s extglob
|
||||||
|
|
||||||
|
# Source makepkg.conf; fail if it is not found
|
||||||
if [[ -r '/etc/makepkg.conf' ]]; then
|
if [[ -r '/etc/makepkg.conf' ]]; then
|
||||||
source '/etc/makepkg.conf'
|
# shellcheck source=makepkg-x86_64.conf
|
||||||
|
source '/etc/makepkg.conf'
|
||||||
else
|
else
|
||||||
die '/etc/makepkg.conf not found!'
|
die '/etc/makepkg.conf not found!'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
load_user_info
|
# Source user-specific makepkg.conf overrides
|
||||||
|
if [[ -r "${XDG_CONFIG_HOME:-$HOME/.config}/pacman/makepkg.conf" ]]; then
|
||||||
load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
|
# shellcheck source=/dev/null
|
||||||
load_vars /etc/makepkg.conf
|
source "${XDG_CONFIG_HOME:-$HOME/.config}/pacman/makepkg.conf"
|
||||||
|
elif [[ -r "$HOME/.makepkg.conf" ]]; then
|
||||||
|
# shellcheck source=/dev/null
|
||||||
|
source "$HOME/.makepkg.conf"
|
||||||
|
fi
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
cat <<- _EOF_
|
cat <<- _EOF_
|
||||||
@@ -60,17 +65,17 @@ while :; do
|
|||||||
case $1 in
|
case $1 in
|
||||||
-r|--rmdir)
|
-r|--rmdir)
|
||||||
RMDIR=1
|
RMDIR=1
|
||||||
;;
|
;;
|
||||||
-w|--warn)
|
-w|--warn)
|
||||||
WARN=1
|
WARN=1
|
||||||
;;
|
;;
|
||||||
-h|--help)
|
-h|--help)
|
||||||
usage
|
usage
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
--)
|
--)
|
||||||
shift; break
|
shift; break
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
@@ -79,8 +84,9 @@ if [[ ! -f PKGBUILD ]]; then
|
|||||||
die 'This must be run in the directory of a built package.'
|
die 'This must be run in the directory of a built package.'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# shellcheck source=PKGBUILD.proto
|
||||||
. ./PKGBUILD
|
. ./PKGBUILD
|
||||||
if [[ $arch == 'any' ]]; then
|
if [[ ${arch[0]} == 'any' ]]; then
|
||||||
CARCH='any'
|
CARCH='any'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -91,7 +97,7 @@ TEMPDIR=$(mktemp -d --tmpdir checkpkg-script.XXXX)
|
|||||||
for _pkgname in "${pkgname[@]}"; do
|
for _pkgname in "${pkgname[@]}"; do
|
||||||
comparepkg=$_pkgname
|
comparepkg=$_pkgname
|
||||||
pkgurl=
|
pkgurl=
|
||||||
target_pkgver=$(get_full_version)
|
target_pkgver=$(get_full_version "$_pkgname")
|
||||||
if ! pkgfile=$(find_cached_package "$_pkgname" "$target_pkgver" "$CARCH"); then
|
if ! pkgfile=$(find_cached_package "$_pkgname" "$target_pkgver" "$CARCH"); then
|
||||||
die 'tarball not found for package: %s' "${_pkgname}-$target_pkgver"
|
die 'tarball not found for package: %s' "${_pkgname}-$target_pkgver"
|
||||||
fi
|
fi
|
||||||
@@ -142,7 +148,7 @@ for _pkgname in "${pkgname[@]}"; do
|
|||||||
(( WARN )) && warning "$message" || msg "$message"
|
(( WARN )) && warning "$message" || msg "$message"
|
||||||
echo "$diff_output"
|
echo "$diff_output"
|
||||||
else
|
else
|
||||||
msg "No soname differences for %s" "$_pkgname."
|
msg "No soname differences for %s." "$_pkgname"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@@ -12,7 +12,6 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
. @libdir@/artools/util-base.sh
|
|
||||||
. @libdir@/artools/util-pkg.sh
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
get_path(){
|
get_path(){
|
||||||
@@ -142,11 +141,7 @@ symlink_commit_pkg(){
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
load_user_info
|
load_makepkg_config
|
||||||
|
|
||||||
load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
|
|
||||||
load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
|
|
||||||
load_vars /etc/makepkg.conf
|
|
||||||
|
|
||||||
REPO_SRC='trunk'
|
REPO_SRC='trunk'
|
||||||
PACKAGE=''
|
PACKAGE=''
|
||||||
|
@@ -12,7 +12,6 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
. @libdir@/artools/util-base.sh
|
|
||||||
. @libdir@/artools/util-pkg.sh
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
compare(){
|
compare(){
|
||||||
@@ -53,6 +52,10 @@ compare(){
|
|||||||
msg_row "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
msg_row "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||||
else
|
else
|
||||||
msg_row_notify "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
msg_row_notify "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||||
|
|
||||||
|
if [[ -n "$archshow" ]]; then
|
||||||
|
printf "%s\n" "$archshow:$artixshow:$pkg" >> ${TREE_DIR_ARTIX}/pkg_moves.list
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -62,6 +65,8 @@ compare(){
|
|||||||
|
|
||||||
if [ $result -eq -1 ];then
|
if [ $result -eq -1 ];then
|
||||||
msg_row_upgrade "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
msg_row_upgrade "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||||
|
|
||||||
|
printf "%s\n" "$archshow:$pkg" >> ${TREE_DIR_ARTIX}/pkg_upgrades.list
|
||||||
fi
|
fi
|
||||||
|
|
||||||
elif ${downgrades};then
|
elif ${downgrades};then
|
||||||
@@ -80,7 +85,7 @@ compare(){
|
|||||||
|
|
||||||
is_db_entry() {
|
is_db_entry() {
|
||||||
local pkgname="$1" repo="$(arch2artix $2)"
|
local pkgname="$1" repo="$(arch2artix $2)"
|
||||||
if [[ -d ${USERCACHEDIR}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then
|
if [[ -d ${USER_CACHE_DIR}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
return 1
|
return 1
|
||||||
@@ -110,7 +115,7 @@ check_db(){
|
|||||||
is_entry=true
|
is_entry=true
|
||||||
fi
|
fi
|
||||||
if ! $is_entry; then
|
if ! $is_entry; then
|
||||||
msg_row "${table2}" "$repo" "$name" "$artixver" "$is_entry"
|
msg_row "${tableU}" "$repo" "$name" "$artixver" "$is_entry"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase
|
unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase
|
||||||
@@ -122,28 +127,27 @@ check_db(){
|
|||||||
update_db_cache(){
|
update_db_cache(){
|
||||||
msg "Updating database cache"
|
msg "Updating database cache"
|
||||||
for repo in "${searchrepos[@]}"; do
|
for repo in "${searchrepos[@]}"; do
|
||||||
local cachedir=${USERCACHEDIR}/${LINKSDBEXT}/${ARCH}/${repo}
|
local cachedir=${USER_CACHE_DIR}/${LINKSDBEXT}/${ARCH}/${repo}
|
||||||
rm -rf "$cachedir"
|
rm -rf "$cachedir"
|
||||||
mkdir -p "$cachedir"
|
mkdir -p "$cachedir"
|
||||||
msg2 "%s" "$repo"
|
msg2 "%s" "$repo"
|
||||||
curl -s "${REPOS_MIRROR}/${repo}/os/${ARCH}/${repo}.${LINKSDBEXT}" \
|
curl -L -s "${REPOS_MIRROR}/${repo}/os/${ARCH}/${repo}.${LINKSDBEXT}" \
|
||||||
| bsdtar -xf - -C "$cachedir"
|
| bsdtar -xf - -C "$cachedir"
|
||||||
done
|
done
|
||||||
msg "Done"
|
msg "Done"
|
||||||
}
|
}
|
||||||
|
|
||||||
query_db() {
|
query_db() {
|
||||||
msg_table_header "${table3}" "Repo" "Package" "Library"
|
|
||||||
for repo in "${searchrepos[@]}"; do
|
for repo in "${searchrepos[@]}"; do
|
||||||
local prefix=
|
local prefix=
|
||||||
local db=${USERCACHEDIR}/${LINKSDBEXT}/${ARCH}/${repo}/
|
local db=${USER_CACHE_DIR}/${LINKSDBEXT}/${ARCH}/${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
|
||||||
pkg=${pkg#${db}}
|
pkg=${pkg#${db}}
|
||||||
pkg="${pkg%/*}"
|
pkg="${pkg%/*}"
|
||||||
|
|
||||||
msg_row "${table3}" "${repo}" "${pkg}" "${match}"
|
msg_row "${tableQ}" "${repo}" "${pkg}" "${match}"
|
||||||
done < <(grep -rZ "${library}" "${db}") | sort -u
|
done < <(grep -rZ "${library}" "${db}") | sort -u
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -154,18 +158,23 @@ show_version_table(){
|
|||||||
|
|
||||||
if ${check};then
|
if ${check};then
|
||||||
${sync} && update_db_cache
|
${sync} && update_db_cache
|
||||||
msg_table_header "${table2}" "Repo" "Package" "Version" "Database"
|
msg_table_header "${tableU}" "Repo" "Package" "Version" "Database"
|
||||||
elif ${query};then
|
elif ${query};then
|
||||||
${sync} && update_db_cache
|
${sync} && update_db_cache
|
||||||
|
msg_table_header "${tableQ}" "Repo" "Package" "Library"
|
||||||
query_db
|
query_db
|
||||||
else
|
else
|
||||||
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"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if ${move} && [[ -f ${TREE_DIR_ARTIX}/pkg_moves.list ]]; then
|
||||||
|
rm ${TREE_DIR_ARTIX}/pkg_moves.list
|
||||||
|
elif ${upgrades} && [[ -f ${TREE_DIR_ARTIX}/pkg_upgrades.list ]]; then
|
||||||
|
rm ${TREE_DIR_ARTIX}/pkg_upgrades.list
|
||||||
|
fi
|
||||||
|
|
||||||
for tree in ${TREE_NAMES_ARTIX[@]};do
|
for tree in ${TREE_NAMES_ARTIX[@]};do
|
||||||
|
|
||||||
local git=$(find ${TREE_DIR_ARTIX}/$tree/ -mindepth 1 -maxdepth 1 -type d)
|
local git=$(find ${TREE_DIR_ARTIX}/$tree/ -mindepth 1 -maxdepth 1 -type d)
|
||||||
|
|
||||||
for package in ${git[@]}; do
|
for package in ${git[@]}; do
|
||||||
if ${check};then
|
if ${check};then
|
||||||
check_db "$package"
|
check_db "$package"
|
||||||
@@ -176,11 +185,7 @@ show_version_table(){
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
load_user_info
|
load_makepkg_config
|
||||||
|
|
||||||
load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
|
|
||||||
load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
|
|
||||||
load_vars /etc/makepkg.conf
|
|
||||||
|
|
||||||
unstable=false
|
unstable=false
|
||||||
staging=true
|
staging=true
|
||||||
@@ -199,8 +204,8 @@ artix_repos=(
|
|||||||
)
|
)
|
||||||
|
|
||||||
readonly table="%-18s %-18s %-25s %-27s %-27s %-10s"
|
readonly table="%-18s %-18s %-25s %-27s %-27s %-10s"
|
||||||
readonly table2="%-20s %-35s %-30s %-10s"
|
readonly tableU="%-20s %-35s %-30s %-10s"
|
||||||
readonly table3="%-20s %-45s %s"
|
readonly tableQ="%-20s %-45s %s"
|
||||||
|
|
||||||
searchrepos=(${artix_repos[@]})
|
searchrepos=(${artix_repos[@]})
|
||||||
|
|
||||||
|
@@ -12,7 +12,6 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
. @libdir@/artools/util-base.sh
|
|
||||||
. @libdir@/artools/util-pkg.sh
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
find_cached_pkgfile() {
|
find_cached_pkgfile() {
|
||||||
@@ -65,7 +64,6 @@ update_repo2(){
|
|||||||
if ${add_pkg};then
|
if ${add_pkg};then
|
||||||
local action='add'
|
local action='add'
|
||||||
packages+=("$name")
|
packages+=("$name")
|
||||||
# checkpkg "${pkgfile}" || return 2
|
|
||||||
if ${sign_pkg};then
|
if ${sign_pkg};then
|
||||||
[[ -e ${pkgfile}.sig ]] && rm ${pkgfile}.sig
|
[[ -e ${pkgfile}.sig ]] && rm ${pkgfile}.sig
|
||||||
signfile ${pkgfile}
|
signfile ${pkgfile}
|
||||||
@@ -109,7 +107,6 @@ update_repo(){
|
|||||||
if ${add_pkg};then
|
if ${add_pkg};then
|
||||||
local action='add'
|
local action='add'
|
||||||
packages+=("$pkg")
|
packages+=("$pkg")
|
||||||
# checkpkg "${pkgfile}" || return 2
|
|
||||||
if ${sign_pkg};then
|
if ${sign_pkg};then
|
||||||
[[ -e ${pkgfile}.sig ]] && rm ${pkgfile}.sig
|
[[ -e ${pkgfile}.sig ]] && rm ${pkgfile}.sig
|
||||||
signfile ${pkgfile}
|
signfile ${pkgfile}
|
||||||
@@ -132,11 +129,7 @@ update_repo(){
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
load_user_info
|
load_makepkg_config
|
||||||
|
|
||||||
load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
|
|
||||||
load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
|
|
||||||
load_vars /etc/makepkg.conf
|
|
||||||
|
|
||||||
add_pkg=false
|
add_pkg=false
|
||||||
del_pkg=false
|
del_pkg=false
|
||||||
|
@@ -33,6 +33,7 @@ REPO_DB_PREFIX=
|
|||||||
REPO_DB_SUFFIX=
|
REPO_DB_SUFFIX=
|
||||||
LOCKFILE=
|
LOCKFILE=
|
||||||
CLEAN_LOCK=0
|
CLEAN_LOCK=0
|
||||||
|
# PREVENT_DOWNGRADE=0
|
||||||
|
|
||||||
. @libdir@/artools/util-base.sh
|
. @libdir@/artools/util-base.sh
|
||||||
|
|
||||||
@@ -52,6 +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")"
|
||||||
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"
|
||||||
@@ -199,6 +201,18 @@ db_write_entry() {
|
|||||||
if (( ONLYADDNEW )); then
|
if (( ONLYADDNEW )); then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
# else
|
||||||
|
# pkgentry=$(find_pkgentry "$pkgname")
|
||||||
|
# if [[ -n $pkgentry ]]; then
|
||||||
|
#
|
||||||
|
# local version=$(sed -n '/^%VERSION%$/ {n;p;q}' "$pkgentry/desc")
|
||||||
|
# if (( $(vercmp "$version" "$pkgver") > 0 )); then
|
||||||
|
# warning "$(gettext "A newer version for '%s' is already present in database")" "$pkgname"
|
||||||
|
# if (( PREVENT_DOWNGRADE )); then
|
||||||
|
# return 0
|
||||||
|
# fi
|
||||||
|
# fi
|
||||||
|
# fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# remove an existing entry if it exists, ignore failures
|
# remove an existing entry if it exists, ignore failures
|
||||||
@@ -459,6 +473,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 ;;
|
||||||
*) args+=("$1") ;;
|
*) args+=("$1") ;;
|
||||||
esac
|
esac
|
||||||
shift
|
shift
|
||||||
|
@@ -29,10 +29,11 @@ keepbuilddir=0
|
|||||||
update_first=0
|
update_first=0
|
||||||
clean_first=0
|
clean_first=0
|
||||||
run_namcap=0
|
run_namcap=0
|
||||||
|
run_checkpkg=0
|
||||||
temp_chroot=0
|
temp_chroot=0
|
||||||
|
run_nocheck=0
|
||||||
|
|
||||||
bindmounts_ro=()
|
bindmounts=()
|
||||||
bindmounts_rw=()
|
|
||||||
|
|
||||||
copy=$USER
|
copy=$USER
|
||||||
[[ -n ${SUDO_USER:-} ]] && copy=$SUDO_USER
|
[[ -n ${SUDO_USER:-} ]] && copy=$SUDO_USER
|
||||||
@@ -73,6 +74,8 @@ usage() {
|
|||||||
echo ' Useful for maintaining multiple copies'
|
echo ' Useful for maintaining multiple copies'
|
||||||
echo " Default: $copy"
|
echo " Default: $copy"
|
||||||
echo '-n Run namcap on the package'
|
echo '-n Run namcap on the package'
|
||||||
|
echo '-C Run checkpkg on the package'
|
||||||
|
echo '-N Disable check() function'
|
||||||
echo '-T Build in a temporary directory'
|
echo '-T Build in a temporary directory'
|
||||||
echo '-U Run makepkg as a specified user'
|
echo '-U Run makepkg as a specified user'
|
||||||
exit 1
|
exit 1
|
||||||
@@ -80,37 +83,31 @@ usage() {
|
|||||||
|
|
||||||
# {{{ functions
|
# {{{ functions
|
||||||
|
|
||||||
# Usage: sync_chroot $rootdir $copydir [$copy]
|
# Usage: sync_chroot $chrootdir $copydir [$copy]
|
||||||
sync_chroot() {
|
sync_chroot() {
|
||||||
local rootdir=$1
|
local chrootdir=$1
|
||||||
local copydir=$2
|
local copydir=$2
|
||||||
local copy=${3:-$2}
|
local copy=${3:-$2}
|
||||||
|
|
||||||
if [[ "$rootdir" -ef "$copydir" ]]; then
|
if [[ "$chrootdir/root" -ef "$copydir" ]]; then
|
||||||
error 'Cannot sync copy with itself: %s' "$copydir"
|
error 'Cannot sync copy with itself: %s' "$copydir"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Get a read lock on the root chroot to make
|
# Get a read lock on the root chroot to make
|
||||||
# sure we don't clone a half-updated chroot
|
# sure we don't clone a half-updated chroot
|
||||||
slock 8 "$rootdir.lock" \
|
slock 8 "$chrootdir/root.lock" \
|
||||||
"Locking clean chroot [%s]" "$rootdir"
|
"Locking clean chroot [%s]" "$chrootdir/root"
|
||||||
|
|
||||||
stat_busy "Synchronizing chroot copy [%s] -> [%s]" "$rootdir" "$copy"
|
stat_busy "Synchronizing chroot copy [%s] -> [%s]" "$chrootdir/root" "$copy"
|
||||||
if is_subvolume "$rootdir" && is_same_fs "$rootdir" "$(dirname -- "$copydir")" && ! mountpoint -q "$copydir"; then
|
if is_btrfs "$chrootdir" && ! mountpoint -q "$copydir"; then
|
||||||
if is_subvolume "$copydir"; then
|
subvolume_delete_recursive "$copydir" ||
|
||||||
subvolume_delete_recursive "$copydir" ||
|
die "Unable to delete subvolume %s" "$copydir"
|
||||||
die "Unable to delete subvolume %s" "$copydir"
|
btrfs subvolume snapshot "$chrootdir/root" "$copydir" >/dev/null ||
|
||||||
else
|
|
||||||
# avoid change of filesystem in case of an umount failure
|
|
||||||
rm --recursive --force --one-file-system "$copydir" ||
|
|
||||||
die "Unable to delete %s" "$copydir"
|
|
||||||
fi
|
|
||||||
btrfs subvolume snapshot "$rootdir" "$copydir" >/dev/null ||
|
|
||||||
die "Unable to create subvolume %s" "$copydir"
|
die "Unable to create subvolume %s" "$copydir"
|
||||||
else
|
else
|
||||||
mkdir -p "$copydir"
|
mkdir -p "$copydir"
|
||||||
rsync -a --delete -q -W -x "$rootdir/" "$copydir"
|
rsync -a --delete -q -W -x "$chrootdir/root/" "$copydir"
|
||||||
fi
|
fi
|
||||||
stat_done
|
stat_done
|
||||||
|
|
||||||
@@ -149,8 +146,7 @@ install_packages() {
|
|||||||
|
|
||||||
cp -- "${install_pkgs[@]}" "$copydir/root/"
|
cp -- "${install_pkgs[@]}" "$copydir/root/"
|
||||||
chroot-run \
|
chroot-run \
|
||||||
-r "${bindmounts_ro[@]}" \
|
-b "${bindmounts[@]}" \
|
||||||
-r "${bindmounts_rw[@]}" \
|
|
||||||
"$copydir" \
|
"$copydir" \
|
||||||
bash -c 'yes y | pacman -U -- "$@"' -bash "${pkgnames[@]/#//root/}"
|
bash -c 'yes y | pacman -U -- "$@"' -bash "${pkgnames[@]/#//root/}"
|
||||||
ret=$?
|
ret=$?
|
||||||
@@ -249,9 +245,6 @@ download_sources() {
|
|||||||
env SRCDEST="$SRCDEST" BUILDDIR="$WORKDIR" \
|
env SRCDEST="$SRCDEST" BUILDDIR="$WORKDIR" \
|
||||||
makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o "${verifysource_args[@]}" ||
|
makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o "${verifysource_args[@]}" ||
|
||||||
die "Could not download sources."
|
die "Could not download sources."
|
||||||
|
|
||||||
# Clean up garbage from verifysource
|
|
||||||
# rm -rf "$builddir"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
move_products() {
|
move_products() {
|
||||||
@@ -287,18 +280,19 @@ move_products() {
|
|||||||
|
|
||||||
orig_argv=("$0" "$@")
|
orig_argv=("$0" "$@")
|
||||||
|
|
||||||
opts='hcur:I:l:nTD:d:U:'
|
opts='hcur:I:l:nNCTb:U:'
|
||||||
|
|
||||||
while getopts "${opts}" arg; do
|
while getopts "${opts}" arg; do
|
||||||
case "$arg" in
|
case "$arg" in
|
||||||
c) clean_first=1 ;;
|
c) clean_first=1 ;;
|
||||||
D) bindmounts_ro+=("$OPTARG") ;;
|
b) bindmounts+=("$OPTARG") ;;
|
||||||
d) bindmounts_rw+=("$OPTARG") ;;
|
|
||||||
u) update_first=1 ;;
|
u) update_first=1 ;;
|
||||||
r) passeddir="$OPTARG" ;;
|
r) passeddir="$OPTARG" ;;
|
||||||
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) ;;
|
||||||
|
C) run_checkpkg=1 ;;
|
||||||
T) temp_chroot=1; copy+="-$$" ;;
|
T) temp_chroot=1; copy+="-$$" ;;
|
||||||
U) makepkg_user="$OPTARG" ;;
|
U) makepkg_user="$OPTARG" ;;
|
||||||
h|*) usage ;;
|
h|*) usage ;;
|
||||||
@@ -335,12 +329,12 @@ for arg in "${@:$OPTIND}"; do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
load_user_info
|
|
||||||
|
|
||||||
umask 0022
|
umask 0022
|
||||||
|
|
||||||
load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
|
ORIG_HOME=$HOME
|
||||||
load_vars /etc/makepkg.conf
|
IFS=: read -r _ _ _ _ _ HOME _ < <(getent passwd "${SUDO_USER:-$USER}")
|
||||||
|
load_makepkg_config
|
||||||
|
HOME=$ORIG_HOME
|
||||||
|
|
||||||
# Use PKGBUILD directory if these don't exist
|
# Use PKGBUILD directory if these don't exist
|
||||||
[[ -d $PKGDEST ]] || PKGDEST=$PWD
|
[[ -d $PKGDEST ]] || PKGDEST=$PWD
|
||||||
@@ -352,14 +346,13 @@ load_vars /etc/makepkg.conf
|
|||||||
lock 9 "$copydir.lock" "Locking chroot copy [%s]" "$copy"
|
lock 9 "$copydir.lock" "Locking chroot copy [%s]" "$copy"
|
||||||
|
|
||||||
if [[ ! -d $copydir ]] || (( clean_first )); then
|
if [[ ! -d $copydir ]] || (( clean_first )); then
|
||||||
sync_chroot "$chrootdir/root" "$copydir" "$copy"
|
sync_chroot "$chrootdir" "$copydir" "$copy"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
bindmounts_rw+=("${PWD}:/startdir" "${SRCDEST}:/srcdest")
|
bindmounts+=("-B:${PWD}:/startdir" "-B:${SRCDEST}:/srcdest")
|
||||||
|
|
||||||
(( update_first )) && chroot-run \
|
(( update_first )) && chroot-run \
|
||||||
-r "${bindmounts_ro[*]}" \
|
-b "${bindmounts[*]}" \
|
||||||
-w "${bindmounts_rw[*]}" \
|
|
||||||
"$copydir" \
|
"$copydir" \
|
||||||
pacman -Syuu --noconfirm
|
pacman -Syuu --noconfirm
|
||||||
|
|
||||||
@@ -380,11 +373,15 @@ download_sources
|
|||||||
prepare_chroot
|
prepare_chroot
|
||||||
|
|
||||||
if chroot-run \
|
if chroot-run \
|
||||||
-r "${bindmounts_ro[*]}" \
|
-b "${bindmounts[*]}" \
|
||||||
-w "${bindmounts_rw[*]}" \
|
|
||||||
"$copydir" \
|
"$copydir" \
|
||||||
/chrootbuild "${makepkg_args[@]}"
|
/chrootbuild "${makepkg_args[@]}"
|
||||||
then
|
then
|
||||||
|
pkgnames=()
|
||||||
|
for pkgfile in "$copydir"/pkgdest/*; do
|
||||||
|
pkgfile=${pkgfile##*/};
|
||||||
|
pkgnames+=("${pkgfile%-*-*-*}");
|
||||||
|
done
|
||||||
move_products
|
move_products
|
||||||
else
|
else
|
||||||
(( ret += 1 ))
|
(( ret += 1 ))
|
||||||
@@ -399,6 +396,15 @@ if (( ret != 0 )); then
|
|||||||
die "Build failed, check %s/build" "$copydir"
|
die "Build failed, check %s/build" "$copydir"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
if (( run_checkpkg )); then
|
||||||
|
msg "Running checkpkg"
|
||||||
|
msg2 "Downloading current versions"
|
||||||
|
if pacman --noconfirm -Swdd --logfile /dev/null "${pkgnames[@]}"; then
|
||||||
|
msg2 "Checking packages"
|
||||||
|
sudo -u "$makepkg_user" checkpkg --rmdir --warn
|
||||||
|
else
|
||||||
|
warning "Skipped checkpkg due to missing packages"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
true
|
true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@@ -144,6 +144,6 @@ PACKAGE="$1"/PKGBUILD; shift
|
|||||||
|
|
||||||
. "$PACKAGE"
|
. "$PACKAGE"
|
||||||
|
|
||||||
. /etc/makepkg.conf
|
load_makepkg_config
|
||||||
|
|
||||||
write_pkg_yaml
|
write_pkg_yaml
|
||||||
|
@@ -16,10 +16,9 @@
|
|||||||
#GPGDir = /etc/pacman.d/gnupg/
|
#GPGDir = /etc/pacman.d/gnupg/
|
||||||
#HookDir = /etc/pacman.d/hooks/
|
#HookDir = /etc/pacman.d/hooks/
|
||||||
HoldPkg = pacman glibc
|
HoldPkg = pacman glibc
|
||||||
#XferCommand = /usr/bin/curl -C - -f %u > %o
|
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
|
||||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||||
#CleanMethod = KeepInstalled
|
#CleanMethod = KeepInstalled
|
||||||
#UseDelta = 0.7
|
|
||||||
Architecture = auto
|
Architecture = auto
|
||||||
|
|
||||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||||
|
@@ -16,10 +16,9 @@
|
|||||||
#GPGDir = /etc/pacman.d/gnupg/
|
#GPGDir = /etc/pacman.d/gnupg/
|
||||||
#HookDir = /etc/pacman.d/hooks/
|
#HookDir = /etc/pacman.d/hooks/
|
||||||
HoldPkg = pacman glibc
|
HoldPkg = pacman glibc
|
||||||
#XferCommand = /usr/bin/curl -C - -f %u > %o
|
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
|
||||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||||
#CleanMethod = KeepInstalled
|
#CleanMethod = KeepInstalled
|
||||||
#UseDelta = 0.7
|
|
||||||
Architecture = auto
|
Architecture = auto
|
||||||
|
|
||||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||||
|
@@ -16,10 +16,9 @@
|
|||||||
#GPGDir = /etc/pacman.d/gnupg/
|
#GPGDir = /etc/pacman.d/gnupg/
|
||||||
#HookDir = /etc/pacman.d/hooks/
|
#HookDir = /etc/pacman.d/hooks/
|
||||||
HoldPkg = pacman glibc
|
HoldPkg = pacman glibc
|
||||||
#XferCommand = /usr/bin/curl -C - -f %u > %o
|
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
|
||||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||||
#CleanMethod = KeepInstalled
|
#CleanMethod = KeepInstalled
|
||||||
#UseDelta = 0.7
|
|
||||||
Architecture = auto
|
Architecture = auto
|
||||||
|
|
||||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||||
|
@@ -16,10 +16,9 @@
|
|||||||
#GPGDir = /etc/pacman.d/gnupg/
|
#GPGDir = /etc/pacman.d/gnupg/
|
||||||
#HookDir = /etc/pacman.d/hooks/
|
#HookDir = /etc/pacman.d/hooks/
|
||||||
HoldPkg = pacman glibc
|
HoldPkg = pacman glibc
|
||||||
#XferCommand = /usr/bin/curl -C - -f %u > %o
|
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
|
||||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||||
#CleanMethod = KeepInstalled
|
#CleanMethod = KeepInstalled
|
||||||
#UseDelta = 0.7
|
|
||||||
Architecture = auto
|
Architecture = auto
|
||||||
|
|
||||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||||
|
@@ -16,10 +16,9 @@
|
|||||||
#GPGDir = /etc/pacman.d/gnupg/
|
#GPGDir = /etc/pacman.d/gnupg/
|
||||||
#HookDir = /etc/pacman.d/hooks/
|
#HookDir = /etc/pacman.d/hooks/
|
||||||
HoldPkg = pacman glibc
|
HoldPkg = pacman glibc
|
||||||
#XferCommand = /usr/bin/curl -C - -f %u > %o
|
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
|
||||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||||
#CleanMethod = KeepInstalled
|
#CleanMethod = KeepInstalled
|
||||||
#UseDelta = 0.7
|
|
||||||
Architecture = auto
|
Architecture = auto
|
||||||
|
|
||||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||||
|
@@ -16,10 +16,9 @@
|
|||||||
#GPGDir = /etc/pacman.d/gnupg/
|
#GPGDir = /etc/pacman.d/gnupg/
|
||||||
#HookDir = /etc/pacman.d/hooks/
|
#HookDir = /etc/pacman.d/hooks/
|
||||||
HoldPkg = pacman glibc
|
HoldPkg = pacman glibc
|
||||||
#XferCommand = /usr/bin/curl -C - -f %u > %o
|
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
|
||||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||||
#CleanMethod = KeepInstalled
|
#CleanMethod = KeepInstalled
|
||||||
#UseDelta = 0.7
|
|
||||||
Architecture = auto
|
Architecture = auto
|
||||||
|
|
||||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||||
|
@@ -16,10 +16,9 @@
|
|||||||
#GPGDir = /etc/pacman.d/gnupg/
|
#GPGDir = /etc/pacman.d/gnupg/
|
||||||
#HookDir = /etc/pacman.d/hooks/
|
#HookDir = /etc/pacman.d/hooks/
|
||||||
HoldPkg = pacman glibc
|
HoldPkg = pacman glibc
|
||||||
#XferCommand = /usr/bin/curl -C - -f %u > %o
|
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
|
||||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||||
#CleanMethod = KeepInstalled
|
#CleanMethod = KeepInstalled
|
||||||
#UseDelta = 0.7
|
|
||||||
Architecture = auto
|
Architecture = auto
|
||||||
|
|
||||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||||
|
@@ -16,10 +16,9 @@
|
|||||||
#GPGDir = /etc/pacman.d/gnupg/
|
#GPGDir = /etc/pacman.d/gnupg/
|
||||||
#HookDir = /etc/pacman.d/hooks/
|
#HookDir = /etc/pacman.d/hooks/
|
||||||
HoldPkg = pacman glibc
|
HoldPkg = pacman glibc
|
||||||
#XferCommand = /usr/bin/curl -C - -f %u > %o
|
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
|
||||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||||
#CleanMethod = KeepInstalled
|
#CleanMethod = KeepInstalled
|
||||||
#UseDelta = 0.7
|
|
||||||
Architecture = auto
|
Architecture = auto
|
||||||
|
|
||||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||||
|
9
data/conf/artools-base.conf
Normal file
9
data/conf/artools-base.conf
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
#############################################
|
||||||
|
################ artools-base ###############
|
||||||
|
#############################################
|
||||||
|
|
||||||
|
# build dir where buildpkg or buildiso chroots are created
|
||||||
|
# CHROOTS_DIR=/var/lib/artools
|
||||||
|
|
||||||
|
# the workspace directory
|
||||||
|
# WORKSPACE_DIR="/home/${OWNER}/artools-workspace"
|
21
data/conf/artools-iso.conf
Normal file
21
data/conf/artools-iso.conf
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#############################################
|
||||||
|
################ artools-iso ################
|
||||||
|
#############################################
|
||||||
|
|
||||||
|
# the iso storage directory
|
||||||
|
# ISO_POOL="${WORKSPACE_DIR}/iso"
|
||||||
|
|
||||||
|
# the dist release; default: auto
|
||||||
|
# ISO_VERSION=$(date +%Y%m%d)
|
||||||
|
|
||||||
|
# possible values: openrc, runit, s6
|
||||||
|
# INITSYS="openrc"
|
||||||
|
|
||||||
|
# gpg key; leave empty or commented to skip sfs signing
|
||||||
|
# GPG_KEY=""
|
||||||
|
|
||||||
|
# set upload bandwidth limit in kB/s
|
||||||
|
# UPLIMIT=1000
|
||||||
|
|
||||||
|
# the server user
|
||||||
|
# ACCOUNT=[SetUser]
|
@@ -1,13 +1,3 @@
|
|||||||
#############################################
|
|
||||||
################ artools-base ###############
|
|
||||||
#############################################
|
|
||||||
|
|
||||||
# build dir where buildpkg or buildiso chroots are created
|
|
||||||
# CHROOTS_DIR=/var/lib/artools
|
|
||||||
|
|
||||||
# the workspace directory
|
|
||||||
# WORKSPACE_DIR="/home/${OWNER}/artools-workspace"
|
|
||||||
|
|
||||||
#############################################
|
#############################################
|
||||||
################ artools-pkg ################
|
################ artools-pkg ################
|
||||||
#############################################
|
#############################################
|
||||||
@@ -53,25 +43,3 @@
|
|||||||
|
|
||||||
# default mirror for sogrep
|
# default mirror for sogrep
|
||||||
# REPOS_MIRROR="http://mirror1.artixlinux.org/repos"
|
# REPOS_MIRROR="http://mirror1.artixlinux.org/repos"
|
||||||
|
|
||||||
#############################################
|
|
||||||
################ artools-iso ################
|
|
||||||
#############################################
|
|
||||||
|
|
||||||
# the iso storage directory
|
|
||||||
# ISO_POOL="${WORKSPACE_DIR}/iso"
|
|
||||||
|
|
||||||
# the dist release; default: auto
|
|
||||||
# ISO_VERSION=$(date +%Y%m%d)
|
|
||||||
|
|
||||||
# possible values: openrc, runit, s6
|
|
||||||
# INITSYS="openrc"
|
|
||||||
|
|
||||||
# gpg key; leave empty or commented to skip sfs signing
|
|
||||||
# GPG_KEY=""
|
|
||||||
|
|
||||||
# set upload bandwidth limit in kB/s
|
|
||||||
# UPLIMIT=1000
|
|
||||||
|
|
||||||
# the server user
|
|
||||||
# ACCOUNT=[SetUser]
|
|
@@ -132,17 +132,17 @@ DBGSRCDIR="/usr/src/debug"
|
|||||||
COMPRESSGZ=(gzip -c -f -n)
|
COMPRESSGZ=(gzip -c -f -n)
|
||||||
COMPRESSBZ2=(bzip2 -c -f)
|
COMPRESSBZ2=(bzip2 -c -f)
|
||||||
COMPRESSXZ=(xz -c -z -)
|
COMPRESSXZ=(xz -c -z -)
|
||||||
|
COMPRESSZST=(zstd -c -z -q -)
|
||||||
COMPRESSLRZ=(lrzip -q)
|
COMPRESSLRZ=(lrzip -q)
|
||||||
COMPRESSLZO=(lzop -q)
|
COMPRESSLZO=(lzop -q)
|
||||||
COMPRESSZ=(compress -c -f)
|
COMPRESSZ=(compress -c -f)
|
||||||
|
COMPRESSLZ4=(lz4 -q)
|
||||||
|
COMPRESSLZ=(lzip -c -f)
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
# EXTENSION DEFAULTS
|
# EXTENSION DEFAULTS
|
||||||
#########################################################################
|
#########################################################################
|
||||||
#
|
#
|
||||||
# WARNING: Do NOT modify these variables unless you know what you are
|
|
||||||
# doing.
|
|
||||||
#
|
|
||||||
PKGEXT='.pkg.tar.xz'
|
PKGEXT='.pkg.tar.xz'
|
||||||
SRCEXT='.src.tar.gz'
|
SRCEXT='.src.tar.gz'
|
||||||
|
|
||||||
|
143
lib/base/util.sh
143
lib/base/util.sh
@@ -25,158 +25,15 @@ show_elapsed_time(){
|
|||||||
info "Time %s: %s minutes" "$1" "$(elapsed_time $2)"
|
info "Time %s: %s minutes" "$1" "$(elapsed_time $2)"
|
||||||
}
|
}
|
||||||
|
|
||||||
load_vars() {
|
|
||||||
local var
|
|
||||||
|
|
||||||
[[ -f $1 ]] || return 1
|
|
||||||
|
|
||||||
for var in {SRC,SRCPKG,PKG,LOG}DEST MAKEFLAGS PACKAGER CARCH GPGKEY; do
|
|
||||||
[[ -z ${!var:-} ]] && eval "$(source "$1"; printf "%s='%s'" "$var" "${!var}")"
|
|
||||||
done
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
prepare_dir(){
|
prepare_dir(){
|
||||||
[[ ! -d $1 ]] && mkdir -p $1
|
[[ ! -d $1 ]] && mkdir -p $1
|
||||||
}
|
}
|
||||||
|
|
||||||
get_disturl(){
|
|
||||||
. /usr/lib/os-release
|
|
||||||
echo "${HOME_URL}"
|
|
||||||
}
|
|
||||||
|
|
||||||
get_osname(){
|
get_osname(){
|
||||||
. /usr/lib/os-release
|
. /usr/lib/os-release
|
||||||
echo "${NAME}"
|
echo "${NAME}"
|
||||||
}
|
}
|
||||||
|
|
||||||
init_artools_base(){
|
|
||||||
|
|
||||||
ARCH=$(uname -m)
|
|
||||||
|
|
||||||
CHROOTS_DIR=${CHROOTS_DIR:-'/var/lib/artools'}
|
|
||||||
|
|
||||||
WORKSPACE_DIR=${WORKSPACE_DIR:-"/home/${OWNER}/artools-workspace"}
|
|
||||||
|
|
||||||
prepare_dir "${WORKSPACE_DIR}"
|
|
||||||
}
|
|
||||||
|
|
||||||
init_artools_pkg(){
|
|
||||||
|
|
||||||
DOMAIN='artixlinux.org'
|
|
||||||
|
|
||||||
GIT_DOMAIN="gitea.${DOMAIN}"
|
|
||||||
|
|
||||||
GIT_URL="https://${GIT_DOMAIN}"
|
|
||||||
|
|
||||||
GIT_TOKEN=${GIT_TOKEN:-''}
|
|
||||||
|
|
||||||
TREE_DIR_ARTIX=${TREE_DIR_ARTIX:-"${WORKSPACE_DIR}/artixlinux"}
|
|
||||||
|
|
||||||
[[ -z ${TREE_NAMES_ARTIX[@]} ]] && \
|
|
||||||
TREE_NAMES_ARTIX=(
|
|
||||||
packages
|
|
||||||
community
|
|
||||||
packages-kernel
|
|
||||||
packages-openrc
|
|
||||||
packages-runit
|
|
||||||
packages-xorg
|
|
||||||
packages-python
|
|
||||||
packages-perl
|
|
||||||
packages-java
|
|
||||||
packages-qt5
|
|
||||||
packages-devel
|
|
||||||
packages-ruby
|
|
||||||
packages-gtk
|
|
||||||
packages-gnome
|
|
||||||
packages-cinnamon
|
|
||||||
packages-lxqt
|
|
||||||
packages-mate
|
|
||||||
packages-kde
|
|
||||||
packages-xfce
|
|
||||||
# packages-haskell
|
|
||||||
)
|
|
||||||
|
|
||||||
HOST_TREE_ARTIX=${HOST_TREE_ARTIX:-"gitea@${GIT_DOMAIN}:artixlinux"}
|
|
||||||
|
|
||||||
TREE_DIR_ARCH=${TREE_DIR_ARCH:-"${WORKSPACE_DIR}/archlinux"}
|
|
||||||
|
|
||||||
TREE_NAMES_ARCH=(packages community)
|
|
||||||
|
|
||||||
HOST_TREE_ARCH=${HOST_TREE_ARCH:-'git://git.archlinux.org/svntogit'}
|
|
||||||
|
|
||||||
CHROOTS_PKG="${CHROOTS_DIR}/buildpkg"
|
|
||||||
|
|
||||||
REPOS_ROOT=${REPOS_ROOT:-"${WORKSPACE_DIR}/repos"}
|
|
||||||
|
|
||||||
REPOS_MIRROR=${REPOS_MIRROR:-'http://mirror1.artixlinux.org/repos'}
|
|
||||||
|
|
||||||
DBEXT=${DBEXT:-'xz'}
|
|
||||||
|
|
||||||
LINKSDBEXT=${LINKSDBEXT:-"links.tar.${DBEXT}"}
|
|
||||||
|
|
||||||
PKGDBEXT=${PKGDBEXT:-"db.tar.${DBEXT}"}
|
|
||||||
}
|
|
||||||
|
|
||||||
init_artools_iso(){
|
|
||||||
CHROOTS_ISO="${CHROOTS_DIR}/buildiso"
|
|
||||||
|
|
||||||
ISO_POOL=${ISO_POOL:-"${WORKSPACE_DIR}/iso"}
|
|
||||||
|
|
||||||
prepare_dir "${ISO_POOL}"
|
|
||||||
|
|
||||||
PROFILE='base'
|
|
||||||
|
|
||||||
ISO_VERSION=${ISO_VERSION:-"$(date +%Y%m%d)"}
|
|
||||||
|
|
||||||
INITSYS=${INITSYS:-'openrc'}
|
|
||||||
|
|
||||||
GPG_KEY=${GPG_KEY:-''}
|
|
||||||
|
|
||||||
UPLIMIT=${UPLIMIT:-1000}
|
|
||||||
|
|
||||||
FILE_HOST="download.${DOMAIN}"
|
|
||||||
|
|
||||||
FILE_HOME=${FILE_HOME:-'/srv/iso'}
|
|
||||||
|
|
||||||
FILE_PORT=${FILE_PORT:-65432}
|
|
||||||
|
|
||||||
ACCOUNT=${ACCOUNT:-'naughtyISOuploader'}
|
|
||||||
}
|
|
||||||
|
|
||||||
load_config(){
|
|
||||||
|
|
||||||
local conf="$1"
|
|
||||||
|
|
||||||
[[ -f "$conf" ]] || return 1
|
|
||||||
|
|
||||||
[[ -r "$conf" ]] && . "$conf"
|
|
||||||
|
|
||||||
init_artools_base
|
|
||||||
|
|
||||||
init_artools_pkg
|
|
||||||
|
|
||||||
init_artools_iso
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
load_user_info(){
|
|
||||||
OWNER=${SUDO_USER:-$USER}
|
|
||||||
|
|
||||||
if [[ -n $SUDO_USER ]]; then
|
|
||||||
eval "USER_HOME=~$SUDO_USER"
|
|
||||||
else
|
|
||||||
USER_HOME=$HOME
|
|
||||||
fi
|
|
||||||
|
|
||||||
USERCONFDIR="${XDG_CONFIG_HOME:-$USER_HOME/.config}"
|
|
||||||
prepare_dir "${USERCONFDIR}"
|
|
||||||
|
|
||||||
USERCACHEDIR="${XDG_CACHE_HOME:-$USER_HOME/.cache}/artools"
|
|
||||||
}
|
|
||||||
|
|
||||||
# orig_argv=("$0" "$@")
|
# orig_argv=("$0" "$@")
|
||||||
check_root() {
|
check_root() {
|
||||||
local keepenv=$1
|
local keepenv=$1
|
||||||
|
@@ -12,29 +12,36 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
add_svc_rc(){
|
add_svc_openrc(){
|
||||||
local mnt="$1" name="$2" rlvl="$3"
|
local mnt="$1" names="$2" rlvl="${3:-default}"
|
||||||
if [[ -f $mnt/etc/init.d/$name ]];then
|
for svc in $names; do
|
||||||
msg2 "Setting %s ..." "$name"
|
if [[ -f $mnt/etc/init.d/$svc ]];then
|
||||||
chroot $mnt rc-update add $name $rlvl &>/dev/null
|
msg2 "Setting %s ..." "$svc"
|
||||||
fi
|
[[ $svc == "xdm" ]] && set_xdm "$mnt"
|
||||||
|
chroot $mnt rc-update add $svc $rlvl &>/dev/null
|
||||||
|
fi
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
add_svc_runit(){
|
add_svc_runit(){
|
||||||
local mnt="$1" name="$2"
|
local mnt="$1" names="$2" rlvl="${3:-default}"
|
||||||
if [[ -d $mnt/etc/runit/sv/$name ]]; then
|
for svc in $names; do
|
||||||
msg2 "Setting %s ..." "$name"
|
if [[ -d $mnt/etc/runit/sv/$svc ]]; then
|
||||||
chroot $mnt ln -s /etc/runit/sv/$name /etc/runit/runsvdir/default &>/dev/null
|
msg2 "Setting %s ..." "$svc"
|
||||||
fi
|
chroot $mnt ln -s /etc/runit/sv/$svc /etc/runit/runsvdir/$rlvl &>/dev/null
|
||||||
|
fi
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
add_svc_s6(){
|
add_svc_s6(){
|
||||||
local mnt="$1" name="$2"
|
local mnt="$1" names="$2" valid="" rlvl="${3:-default}"
|
||||||
if [[ -d $mnt/etc/s6/sv/$name ]]; then
|
for svc in $names; do
|
||||||
msg2 "Setting %s ..." "$name"
|
if [[ -d $mnt/etc/s6/sv/$svc ]]; then
|
||||||
# chroot $mnt s6-rc-bundle $name default &>/dev/null
|
msg2 "Setting %s ..." "$svc"
|
||||||
# chroot $mnt s6-rc -u change default &>/dev/null
|
valid=${valid:-}${valid:+' '}${svc}
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
|
chroot $mnt s6-rc-bundle -c /etc/s6/rc/compiled add $rlvl $valid
|
||||||
}
|
}
|
||||||
|
|
||||||
set_xdm(){
|
set_xdm(){
|
||||||
@@ -60,50 +67,19 @@ configure_logind(){
|
|||||||
|
|
||||||
configure_services(){
|
configure_services(){
|
||||||
local mnt="$1"
|
local mnt="$1"
|
||||||
info "Configuring [%s]" "${INITSYS}"
|
info "Configuring [%s] services" "${INITSYS}"
|
||||||
case ${INITSYS} in
|
add_svc_${INITSYS} "$mnt" "${SERVICES[*]} ${SERVICES_LIVE[*]}"
|
||||||
'openrc')
|
info "Done configuring [%s] services" "${INITSYS}"
|
||||||
for svc in ${SERVICES[@]}; do
|
|
||||||
[[ $svc == "xdm" ]] && set_xdm "$mnt"
|
|
||||||
add_svc_rc "$mnt" "$svc" "default"
|
|
||||||
done
|
|
||||||
for svc in ${SERVICES_LIVE[@]}; do
|
|
||||||
add_svc_rc "$mnt" "$svc" "default"
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
'runit')
|
|
||||||
for svc in ${SERVICES[@]}; do
|
|
||||||
add_svc_runit "$mnt" "$svc"
|
|
||||||
done
|
|
||||||
for svc in ${SERVICES_LIVE[@]}; do
|
|
||||||
add_svc_runit "$mnt" "$svc"
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
's6')
|
|
||||||
for svc in ${SERVICES[@]}; do
|
|
||||||
add_svc_s6 "$mnt" "$svc"
|
|
||||||
done
|
|
||||||
for svc in ${SERVICES_LIVE[@]}; do
|
|
||||||
add_svc_s6 "$mnt" "$svc"
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
info "Done configuring [%s]" "${INITSYS}"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
configure_system(){
|
configure_system(){
|
||||||
local mnt="$1"
|
local mnt="$1"
|
||||||
case ${INITSYS} in
|
configure_logind "$mnt" "elogind"
|
||||||
'openrc' | 'runit'|'s6')
|
|
||||||
configure_logind "$mnt" "elogind"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
echo ${HOST_NAME} > $mnt/etc/hostname
|
echo ${HOST_NAME} > $mnt/etc/hostname
|
||||||
}
|
}
|
||||||
|
|
||||||
write_users_conf(){
|
write_users_conf(){
|
||||||
local yaml=$(write_yaml_header)
|
local yaml=$(write_yaml_header)
|
||||||
yaml+=$(write_empty_line)
|
|
||||||
yaml+=$(write_yaml_map 0 'defaultGroups')
|
yaml+=$(write_yaml_map 0 'defaultGroups')
|
||||||
local IFS=','
|
local IFS=','
|
||||||
for g in ${ADDGROUPS[@]};do
|
for g in ${ADDGROUPS[@]};do
|
||||||
@@ -125,50 +101,40 @@ write_users_conf(){
|
|||||||
printf '%s' "${yaml}"
|
printf '%s' "${yaml}"
|
||||||
}
|
}
|
||||||
|
|
||||||
write_servicescfg_conf(){
|
write_services_conf(){
|
||||||
|
local key1="$1" val1="$2" key2="$3" val2="$4"
|
||||||
local yaml=$(write_yaml_header)
|
local yaml=$(write_yaml_header)
|
||||||
yaml+=$(write_empty_line)
|
yaml+=$(write_yaml_map 0 "$key1" "$val1")
|
||||||
case "${INITSYS}" in
|
yaml+=$(write_yaml_map 0 "$key2" "$val2")
|
||||||
'runit')
|
yaml+=$(write_yaml_map 0 'services')
|
||||||
yaml+=$(write_yaml_map 0 'svDir' '/etc/runit/sv')
|
for svc in ${SERVICES[@]};do
|
||||||
yaml+=$(write_yaml_map 0 'runsvDir' '/etc/runit/runsvdir')
|
yaml+=$(write_yaml_seq 2 "$svc")
|
||||||
yaml+=$(write_yaml_map 0 'services')
|
done
|
||||||
yaml+=$(write_yaml_map 2 'enabled')
|
|
||||||
for svc in ${SERVICES[@]};do
|
|
||||||
yaml+=$(write_yaml_seq_map 4 'name' "$svc")
|
|
||||||
yaml+=$(write_yaml_map 6 'runlevel' 'default')
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
'openrc')
|
|
||||||
yaml+=$(write_yaml_map 0 'initdDir' '/etc/init.d')
|
|
||||||
yaml+=$(write_yaml_map 0 'runlevelsDir' '/etc/runlevels')
|
|
||||||
yaml+=$(write_yaml_map 0 'services')
|
|
||||||
for svc in ${SERVICES[@]};do
|
|
||||||
yaml+=$(write_yaml_seq_map 2 'name' "$svc")
|
|
||||||
yaml+=$(write_yaml_map 4 'runlevel' 'default')
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
's6')
|
|
||||||
yaml+=$(write_yaml_map 0 'svDir' '/etc/s6/sv')
|
|
||||||
yaml+=$(write_yaml_map 0 'rcDir' '/etc/s6-rc')
|
|
||||||
yaml+=$(write_yaml_map 0 'services')
|
|
||||||
for svc in ${SERVICES[@]};do
|
|
||||||
yaml+=$(write_yaml_seq_map 2 'name' "$svc")
|
|
||||||
yaml+=$(write_yaml_map 4 'bundle' 'default')
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
yaml+=$(write_empty_line)
|
yaml+=$(write_empty_line)
|
||||||
printf '%s' "${yaml}"
|
printf '%s' "${yaml}"
|
||||||
}
|
}
|
||||||
|
|
||||||
write_unpackfs_conf(){
|
write_services_openrc_conf(){
|
||||||
|
local conf="$1"/services-openrc.conf
|
||||||
|
write_services_conf 'initdDir' '/etc/init.d' 'runlevelsDir' '/etc/runlevels' > "$conf"
|
||||||
|
}
|
||||||
|
|
||||||
|
write_services_runit_conf(){
|
||||||
|
local conf="$1"/services-runit.conf
|
||||||
|
write_services_conf 'svDir' '/etc/runit/sv' 'runsvDir' '/etc/runit/runsvdir' > "$conf"
|
||||||
|
}
|
||||||
|
|
||||||
|
write_services_s6_conf(){
|
||||||
|
local conf="$1"/services-s6.conf
|
||||||
|
write_services_conf 'svDir' '/etc/s6/sv' 'dbDir' '/etc/s6/rc/compiled' > "$conf"
|
||||||
|
}
|
||||||
|
|
||||||
|
write_postcfg(){
|
||||||
local yaml=$(write_yaml_header)
|
local yaml=$(write_yaml_header)
|
||||||
yaml+=$(write_empty_line)
|
yaml+=$(write_yaml_map 0 'keyrings')
|
||||||
yaml+=$(write_yaml_map 0 'unpack')
|
for k in archlinux artix;do
|
||||||
yaml+=$(write_yaml_seq_map 2 'source' "/run/artix/bootmnt/artix/x86_64/rootfs.sfs")
|
yaml+=$(write_yaml_seq 2 "$k")
|
||||||
yaml+=$(write_yaml_map 4 'sourcefs' 'squashfs')
|
done
|
||||||
yaml+=$(write_yaml_map 4 'destination' '""')
|
|
||||||
yaml+=$(write_empty_line)
|
yaml+=$(write_empty_line)
|
||||||
printf '%s' "${yaml}"
|
printf '%s' "${yaml}"
|
||||||
}
|
}
|
||||||
@@ -178,10 +144,10 @@ configure_calamares(){
|
|||||||
if [[ -d "$mods" ]];then
|
if [[ -d "$mods" ]];then
|
||||||
msg2 "Configuring Calamares"
|
msg2 "Configuring Calamares"
|
||||||
write_users_conf > "$mods"/users.conf
|
write_users_conf > "$mods"/users.conf
|
||||||
write_servicescfg_conf > "$mods"/services-"${INITSYS}".conf
|
write_services_"${INITSYS}"_conf "$mods"
|
||||||
write_unpackfs_conf > "$mods"/unpackfs.conf
|
write_postcfg > "$mods"/postcfg.conf
|
||||||
sed -e "s|openrc|${INITSYS}|" -i "$mods"/postcfg.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
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,6 +159,7 @@ configure_image(){
|
|||||||
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"
|
||||||
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##*/}"
|
||||||
}
|
}
|
||||||
|
@@ -97,16 +97,23 @@ make_sfs() {
|
|||||||
show_elapsed_time "${FUNCNAME}" "${timer_start}"
|
show_elapsed_time "${FUNCNAME}" "${timer_start}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_disturl(){
|
||||||
|
. /usr/lib/os-release
|
||||||
|
echo "${HOME_URL}"
|
||||||
|
}
|
||||||
|
|
||||||
assemble_iso(){
|
assemble_iso(){
|
||||||
msg "Creating ISO image..."
|
msg "Creating ISO image..."
|
||||||
local mod_date=$(date -u +%Y-%m-%d-%H-%M-%S-00 | sed -e s/-//g)
|
local mod_date=$(date -u +%Y-%m-%d-%H-%M-%S-00 | sed -e s/-//g)
|
||||||
|
local appid="$(get_osname) Live/Rescue CD"
|
||||||
|
local publisher="$(get_osname) <$(get_disturl)>"
|
||||||
|
|
||||||
xorriso -as mkisofs \
|
xorriso -as mkisofs \
|
||||||
--modification-date=${mod_date} \
|
--modification-date=${mod_date} \
|
||||||
--protective-msdos-label \
|
--protective-msdos-label \
|
||||||
-volid "${iso_label}" \
|
-volid "${iso_label}" \
|
||||||
-appid "$(get_osname) Live/Rescue CD" \
|
-appid "${appid}" \
|
||||||
-publisher "$(get_osname) <$(get_disturl)>" \
|
-publisher "${publisher}" \
|
||||||
-preparer "Prepared by artools/${0##*/}" \
|
-preparer "Prepared by artools/${0##*/}" \
|
||||||
-r -graft-points -no-pad \
|
-r -graft-points -no-pad \
|
||||||
--sort-weight 0 / \
|
--sort-weight 0 / \
|
||||||
|
@@ -51,7 +51,7 @@ load_profile(){
|
|||||||
ADDGROUPS=${ADDGROUPS:-"video,power,optical,network,lp,scanner,wheel,users,log"}
|
ADDGROUPS=${ADDGROUPS:-"video,power,optical,network,lp,scanner,wheel,users,log"}
|
||||||
|
|
||||||
if [[ -z ${SERVICES[@]} ]];then
|
if [[ -z ${SERVICES[@]} ]];then
|
||||||
SERVICES=('acpid' 'bluetooth' 'cronie' 'cupsd' 'syslog-ng' 'connman')
|
SERVICES=('acpid' 'bluetoothd' 'cronie' 'cupsd' 'syslog-ng' 'connmand')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ${DISPLAYMANAGER} != "none" ]];then
|
if [[ ${DISPLAYMANAGER} != "none" ]];then
|
||||||
@@ -61,15 +61,12 @@ load_profile(){
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z ${SERVICES_LIVE[@]} ]];then
|
SERVICES_LIVE=('artix-live' 'pacman-init')
|
||||||
SERVICES_LIVE=('artix-live' 'pacman-init')
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
write_live_session_conf(){
|
write_live_session_conf(){
|
||||||
msg2 "Writing live.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}")
|
||||||
|
@@ -20,55 +20,6 @@ get_compliant_name(){
|
|||||||
echo $gitname
|
echo $gitname
|
||||||
}
|
}
|
||||||
|
|
||||||
patch_pkg(){
|
|
||||||
local pkg="$1"
|
|
||||||
case $pkg in
|
|
||||||
'glibc')
|
|
||||||
sed -e 's|{locale,systemd/system,tmpfiles.d}|{locale,tmpfiles.d}|' \
|
|
||||||
-e '/nscd.service/d' \
|
|
||||||
-i $pkg/trunk/PKGBUILD
|
|
||||||
;;
|
|
||||||
'tp_smapi'|'acpi_call'|'r8168'|'bbswitch'|'broadcom-wl')
|
|
||||||
sed -e 's|-ARCH|-ARTIX|g' -i $pkg/trunk/PKGBUILD
|
|
||||||
;;
|
|
||||||
'nvidia')
|
|
||||||
sed -e 's|-ARCH|-ARTIX|g' -e 's|for Arch kernel|for Artix kernel|g' \
|
|
||||||
-e 's|for LTS Arch kernel|for LTS Artix kernel|g' \
|
|
||||||
-i $pkg/trunk/PKGBUILD
|
|
||||||
;;
|
|
||||||
'linux')
|
|
||||||
sed -e 's|-ARCH|-ARTIX|g' -i $pkg/trunk/PKGBUILD
|
|
||||||
sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
|
|
||||||
-e 's|CONFIG_CRYPTO_SPECK=.*|CONFIG_CRYPTO_SPECK=n|' \
|
|
||||||
-i $pkg/trunk/config
|
|
||||||
cd $pkg/trunk
|
|
||||||
updpkgsums
|
|
||||||
cd ../..
|
|
||||||
|
|
||||||
;;
|
|
||||||
'licenses')
|
|
||||||
sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' -i $pkg/trunk/PKGBUILD
|
|
||||||
;;
|
|
||||||
'bash')
|
|
||||||
sed -e 's|system.bash_logout)|system.bash_logout artix.bashrc)|' \
|
|
||||||
-e "s|etc/bash.|etc/bash/|g" \
|
|
||||||
-e 's|"$pkgdir/etc/skel/.bash_logout"|"$pkgdir/etc/skel/.bash_logout"\n install -Dm644 artix.bashrc $pkgdir/etc/bash/bashrc.d/artix.bashrc|' \
|
|
||||||
-i $pkg/trunk/PKGBUILD
|
|
||||||
|
|
||||||
|
|
||||||
cd $pkg/trunk
|
|
||||||
patch -Np 1 -i ${DATADIR}/patches/artix-bash.patch
|
|
||||||
updpkgsums
|
|
||||||
cd ../..
|
|
||||||
;;
|
|
||||||
gstreamer|gst-plugins-*)
|
|
||||||
sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \
|
|
||||||
-e 's|(Arch Linux)|(Artix Linux)|' \
|
|
||||||
-i $pkg/trunk/PKGBUILD
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
arch2artix(){
|
arch2artix(){
|
||||||
local repo="$1" artix=none
|
local repo="$1" artix=none
|
||||||
case "$repo" in
|
case "$repo" in
|
||||||
|
@@ -23,3 +23,45 @@ SYSCONFDIR=${SYSCONFDIR:-'@sysconfdir@/artools'}
|
|||||||
for baselib in ${LIBDIR}/base/*.sh; do
|
for baselib in ${LIBDIR}/base/*.sh; do
|
||||||
. $baselib
|
. $baselib
|
||||||
done
|
done
|
||||||
|
|
||||||
|
load_user_info(){
|
||||||
|
OWNER=${SUDO_USER:-$USER}
|
||||||
|
|
||||||
|
if [[ -n $SUDO_USER ]]; then
|
||||||
|
eval "USER_HOME=~$SUDO_USER"
|
||||||
|
else
|
||||||
|
USER_HOME=$HOME
|
||||||
|
fi
|
||||||
|
|
||||||
|
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$USER_HOME/.config}"
|
||||||
|
|
||||||
|
USER_CONF_DIR="${XDG_CONFIG_HOME}/artools"
|
||||||
|
|
||||||
|
prepare_dir "${USER_CONF_DIR}"
|
||||||
|
|
||||||
|
USER_CACHE_DIR="${XDG_CACHE_HOME:-$USER_HOME/.cache}/artools"
|
||||||
|
}
|
||||||
|
|
||||||
|
load_base_config(){
|
||||||
|
|
||||||
|
local conf="$1/artools-base.conf"
|
||||||
|
|
||||||
|
[[ -f "$conf" ]] || return 1
|
||||||
|
|
||||||
|
[[ -r "$conf" ]] && . "$conf"
|
||||||
|
|
||||||
|
|
||||||
|
ARCH=$(uname -m)
|
||||||
|
|
||||||
|
CHROOTS_DIR=${CHROOTS_DIR:-'/var/lib/artools'}
|
||||||
|
|
||||||
|
WORKSPACE_DIR=${WORKSPACE_DIR:-"/home/${OWNER}/artools-workspace"}
|
||||||
|
|
||||||
|
prepare_dir "${WORKSPACE_DIR}"
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
load_user_info
|
||||||
|
|
||||||
|
load_base_config "${USER_CONF_DIR}" || load_base_config "${SYSCONFDIR}"
|
||||||
|
@@ -12,6 +12,45 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
. @libdir@/artools/util-base.sh
|
||||||
|
|
||||||
for isolib in ${LIBDIR}/iso/*.sh; do
|
for isolib in ${LIBDIR}/iso/*.sh; do
|
||||||
. $isolib
|
. $isolib
|
||||||
done
|
done
|
||||||
|
|
||||||
|
load_iso_config(){
|
||||||
|
|
||||||
|
local conf="$1/artools-iso.conf"
|
||||||
|
|
||||||
|
[[ -f "$conf" ]] || return 1
|
||||||
|
|
||||||
|
[[ -r "$conf" ]] && . "$conf"
|
||||||
|
|
||||||
|
CHROOTS_ISO="${CHROOTS_DIR}/buildiso"
|
||||||
|
|
||||||
|
ISO_POOL=${ISO_POOL:-"${WORKSPACE_DIR}/iso"}
|
||||||
|
|
||||||
|
prepare_dir "${ISO_POOL}"
|
||||||
|
|
||||||
|
PROFILE='base'
|
||||||
|
|
||||||
|
ISO_VERSION=${ISO_VERSION:-"$(date +%Y%m%d)"}
|
||||||
|
|
||||||
|
INITSYS=${INITSYS:-'openrc'}
|
||||||
|
|
||||||
|
GPG_KEY=${GPG_KEY:-''}
|
||||||
|
|
||||||
|
UPLIMIT=${UPLIMIT:-1000}
|
||||||
|
|
||||||
|
FILE_HOST="download.${DOMAIN}"
|
||||||
|
|
||||||
|
FILE_HOME=${FILE_HOME:-'/srv/iso'}
|
||||||
|
|
||||||
|
FILE_PORT=${FILE_PORT:-65432}
|
||||||
|
|
||||||
|
ACCOUNT=${ACCOUNT:-'naughtyISOuploader'}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
load_iso_config "${USER_CONF_DIR}" || load_iso_config "${SYSCONFDIR}"
|
||||||
|
@@ -12,6 +12,75 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
. @libdir@/artools/util-base.sh
|
||||||
|
|
||||||
for pkglib in ${LIBDIR}/pkg/*.sh; do
|
for pkglib in ${LIBDIR}/pkg/*.sh; do
|
||||||
. $pkglib
|
. $pkglib
|
||||||
done
|
done
|
||||||
|
|
||||||
|
load_pkg_config(){
|
||||||
|
|
||||||
|
local conf="$1/artools-pkg.conf"
|
||||||
|
|
||||||
|
[[ -f "$conf" ]] || return 1
|
||||||
|
|
||||||
|
[[ -r "$conf" ]] && . "$conf"
|
||||||
|
|
||||||
|
DOMAIN='artixlinux.org'
|
||||||
|
|
||||||
|
GIT_DOMAIN="gitea.${DOMAIN}"
|
||||||
|
|
||||||
|
GIT_URL="https://${GIT_DOMAIN}"
|
||||||
|
|
||||||
|
GIT_TOKEN=${GIT_TOKEN:-''}
|
||||||
|
|
||||||
|
TREE_DIR_ARTIX=${TREE_DIR_ARTIX:-"${WORKSPACE_DIR}/artixlinux"}
|
||||||
|
|
||||||
|
[[ -z ${TREE_NAMES_ARTIX[@]} ]] && \
|
||||||
|
TREE_NAMES_ARTIX=(
|
||||||
|
packages
|
||||||
|
community
|
||||||
|
packages-kernel
|
||||||
|
packages-openrc
|
||||||
|
packages-runit
|
||||||
|
packages-xorg
|
||||||
|
packages-python
|
||||||
|
packages-perl
|
||||||
|
packages-java
|
||||||
|
packages-qt5
|
||||||
|
packages-devel
|
||||||
|
packages-ruby
|
||||||
|
packages-gtk
|
||||||
|
packages-gnome
|
||||||
|
packages-cinnamon
|
||||||
|
packages-lxqt
|
||||||
|
packages-mate
|
||||||
|
packages-kde
|
||||||
|
packages-xfce
|
||||||
|
# packages-haskell
|
||||||
|
)
|
||||||
|
|
||||||
|
HOST_TREE_ARTIX=${HOST_TREE_ARTIX:-"gitea@${GIT_DOMAIN}:artixlinux"}
|
||||||
|
|
||||||
|
TREE_DIR_ARCH=${TREE_DIR_ARCH:-"${WORKSPACE_DIR}/archlinux"}
|
||||||
|
|
||||||
|
TREE_NAMES_ARCH=(packages community)
|
||||||
|
|
||||||
|
HOST_TREE_ARCH=${HOST_TREE_ARCH:-'git://git.archlinux.org/svntogit'}
|
||||||
|
|
||||||
|
CHROOTS_PKG="${CHROOTS_DIR}/buildpkg"
|
||||||
|
|
||||||
|
REPOS_ROOT=${REPOS_ROOT:-"${WORKSPACE_DIR}/repos"}
|
||||||
|
|
||||||
|
REPOS_MIRROR=${REPOS_MIRROR:-'http://mirror1.artixlinux.org/repos'}
|
||||||
|
|
||||||
|
DBEXT=${DBEXT:-'xz'}
|
||||||
|
|
||||||
|
LINKSDBEXT=${LINKSDBEXT:-"links.tar.${DBEXT}"}
|
||||||
|
|
||||||
|
PKGDBEXT=${PKGDBEXT:-"db.tar.${DBEXT}"}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
load_pkg_config "${USER_CONF_DIR}" || load_pkg_config "${SYSCONFDIR}"
|
||||||
|
Reference in New Issue
Block a user