Compare commits
21 Commits
Author | SHA1 | Date | |
---|---|---|---|
4089151791 | |||
211579f9d7 | |||
2a85209e1e | |||
40d691bc85 | |||
d9da64eb51 | |||
5902f987cc | |||
bfa888251e | |||
0ecfa1a0f6 | |||
e60180ebdb | |||
20b65d06c8 | |||
c7728c2e5b | |||
a0ca1ab3a4 | |||
911a0fff36 | |||
f80c51e8d3 | |||
1e948b3ef5 | |||
bf0a9bc7fc | |||
a4a690951c | |||
e05765269e | |||
3df364189b | |||
974df38738 | |||
7b831d8867 |
4
Makefile
4
Makefile
@@ -1,4 +1,4 @@
|
||||
VERSION=0.16
|
||||
VERSION=0.17
|
||||
|
||||
CHROOT_VERSION=0.10
|
||||
|
||||
@@ -90,7 +90,7 @@ LN_DEPLOYPKG = \
|
||||
deploypkg-gnome-wobble
|
||||
|
||||
PKG_LIBS = \
|
||||
$(wildcard lib/pkg/*)
|
||||
$(wildcard lib/pkg/*.sh)
|
||||
|
||||
PKG_UTIL = lib/util-pkg.sh
|
||||
|
||||
|
@@ -28,7 +28,7 @@ artools
|
||||
- pkg:
|
||||
* namcap
|
||||
* git-subrepo
|
||||
* jshon
|
||||
* jq
|
||||
|
||||
- iso:
|
||||
* dosfstools
|
||||
|
@@ -46,6 +46,7 @@ newroot=/mnt
|
||||
hostcache=0
|
||||
copykeyring=1
|
||||
copymirrorlist=1
|
||||
pacmode=-Sy
|
||||
|
||||
usage() {
|
||||
echo "usage: ${0##*/} [options] root [packages...]"
|
||||
@@ -54,6 +55,7 @@ usage() {
|
||||
echo " -G Avoid copying the host's pacman keyring to the target"
|
||||
echo " -i Avoid auto-confirmation of package selections"
|
||||
echo " -M Avoid copying the host's mirrorlist to the target"
|
||||
echo ' -U Use pacman -U to install packages'
|
||||
echo " -h Print this help message"
|
||||
echo ''
|
||||
echo ' basestrap installs packages to the specified new root directory.'
|
||||
@@ -65,7 +67,7 @@ usage() {
|
||||
|
||||
orig_argv=("$0" "$@")
|
||||
|
||||
opts=':C:cGiM'
|
||||
opts=':C:cGiMU'
|
||||
|
||||
while getopts ${opts} arg; do
|
||||
case "${arg}" in
|
||||
@@ -74,6 +76,7 @@ while getopts ${opts} arg; do
|
||||
i) interactive=1 ;;
|
||||
G) copykeyring=0 ;;
|
||||
M) copymirrorlist=0 ;;
|
||||
U) pacmode=-U ;;
|
||||
:) echo "invalid argument ${arg}:$OPTARG"; usage 1;;
|
||||
?) usage 0 ;;
|
||||
esac
|
||||
@@ -109,7 +112,7 @@ if (( copykeyring ));then
|
||||
fi
|
||||
|
||||
msg2 'Installing packages to %s' "$newroot"
|
||||
if ! pacman -r "$newroot" -Sy "${pacman_args[@]}"; then
|
||||
if ! unshare --fork --pid pacman -r "$newroot" $pacmode "${pacman_args[@]}"; then
|
||||
die 'Failed to install packages to new root'
|
||||
fi
|
||||
|
||||
|
@@ -86,15 +86,13 @@ done
|
||||
|
||||
while read -r line; do
|
||||
mapfile -t lines < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" \
|
||||
--repo $line Server | sed -r 's#(.*/)[^/]+/os/.+#\1$repo/os/$arch#')
|
||||
if [[ ${lines[0]} != ${host_mirrors[0]} ]]; then
|
||||
for line in "${lines[@]}"; do
|
||||
if [[ $line = file://* ]]; then
|
||||
line=${line#file://}
|
||||
in_array "$line" "${cache_dirs[@]}" || cache_dirs+=("$line")
|
||||
fi
|
||||
done
|
||||
fi
|
||||
--repo $line Server | sed -r 's#(.*/)[^/]+/os/.+#\1#')
|
||||
for line in "${lines[@]}"; do
|
||||
if [[ $line = file://* ]]; then
|
||||
line=${line#file://}
|
||||
in_array "$line" "${cache_dirs[@]}" || cache_dirs+=("$line")
|
||||
fi
|
||||
done
|
||||
done < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" --repo-list)
|
||||
|
||||
copy_hostconf () {
|
||||
|
@@ -15,6 +15,7 @@
|
||||
. @libdir@/artools/util-base.sh
|
||||
|
||||
working_dir=''
|
||||
umode=''
|
||||
|
||||
files=()
|
||||
chroot_args=()
|
||||
@@ -22,6 +23,7 @@ chroot_args=()
|
||||
usage() {
|
||||
echo "Usage: ${0##*/} [options] working-dir package-list..."
|
||||
echo ' options:'
|
||||
echo ' -U Use pacman -U to install packages'
|
||||
echo ' -C <file> Location of a pacman config file'
|
||||
echo ' -M <file> Location of a makepkg config file'
|
||||
echo ' -c <dir> Set pacman cache'
|
||||
@@ -33,10 +35,11 @@ usage() {
|
||||
|
||||
orig_argv=("$0" "$@")
|
||||
|
||||
opts='hC:M:c:f:s'
|
||||
opts='hUC:M:c:f:s'
|
||||
|
||||
while getopts ${opts} arg; do
|
||||
case "${arg}" in
|
||||
U) umode=U ;;
|
||||
C) pacman_conf="$OPTARG" ;;
|
||||
M) makepkg_conf="$OPTARG" ;;
|
||||
c) cache_dir="$OPTARG" ;;
|
||||
@@ -45,8 +48,10 @@ while getopts ${opts} arg; do
|
||||
h|?) usage ;;
|
||||
*) error "invalid argument '%s'" "$arg"; usage ;;
|
||||
esac
|
||||
chroot_args+=("-$arg")
|
||||
[[ -v OPTARG ]] && chroot_args+=("$OPTARG")
|
||||
if [[ $arg != U ]]; then
|
||||
chroot_args+=("-$arg")
|
||||
[[ -v OPTARG ]] && chroot_args+=("$OPTARG")
|
||||
fi
|
||||
done
|
||||
shift $(($OPTIND - 1))
|
||||
|
||||
@@ -88,7 +93,7 @@ for f in "${files[@]}"; do
|
||||
cp "$f" "$working_dir$f"
|
||||
done
|
||||
|
||||
basestrap -Mc ${pacman_conf:+-C "$pacman_conf"} "$working_dir" \
|
||||
basestrap -${umode}Mc ${pacman_conf:+-C "$pacman_conf"} "$working_dir" \
|
||||
${cache_dirs[@]/#/--cachedir=} "$@" || die 'Failed to install all packages'
|
||||
|
||||
printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen"
|
||||
|
@@ -14,6 +14,8 @@
|
||||
|
||||
. @libdir@/artools/util-iso.sh
|
||||
|
||||
prepare_artools
|
||||
|
||||
gen_iso_fn(){
|
||||
local vars=("artix") name
|
||||
vars+=("${PROFILE}")
|
||||
@@ -50,6 +52,8 @@ prepare_build(){
|
||||
basestrap_args+=(-C ${pacman_conf})
|
||||
work_dir=${CHROOTS_ISO}/${PROFILE}/artix
|
||||
|
||||
prepare_dir "${ISO_POOL}"
|
||||
|
||||
iso_dir="${ISO_POOL}/${PROFILE}"
|
||||
|
||||
iso_root=${CHROOTS_ISO}/${PROFILE}/iso
|
||||
@@ -75,6 +79,44 @@ display_settings(){
|
||||
show_profile
|
||||
}
|
||||
|
||||
mk_squash(){
|
||||
local timer=$(get_timer)
|
||||
make_sfs "${work_dir}/rootfs"
|
||||
[[ -d "${work_dir}/livefs" ]] && make_sfs "${work_dir}/livefs"
|
||||
show_elapsed_time "${FUNCNAME}" "${timer}"
|
||||
}
|
||||
|
||||
mk_iso(){
|
||||
touch "${iso_root}/.artix"
|
||||
msg "Making bootable image"
|
||||
# Sanity checks
|
||||
[[ ! -d "${iso_root}" ]] && return 1
|
||||
if [[ -f "${iso_dir}/${iso_file}" ]]; then
|
||||
msg2 "Removing existing bootable image..."
|
||||
rm -rf "${iso_dir}/${iso_file}"
|
||||
fi
|
||||
assemble_iso
|
||||
chown -R "${OWNER}:$(id --group ${OWNER})" "${iso_dir}"
|
||||
}
|
||||
|
||||
mk_boot(){
|
||||
local timer=$(get_timer)
|
||||
run_safe "make_bootfs"
|
||||
run_safe "make_grub"
|
||||
show_elapsed_time "${FUNCNAME}" "${timer}"
|
||||
}
|
||||
|
||||
mk_chroots(){
|
||||
local timer=$(get_timer)
|
||||
load_pkgs "${ROOT_LIST}" "${INITSYS}"
|
||||
run_safe "make_rootfs"
|
||||
if [[ -n ${LIVE_LIST} ]]; then
|
||||
load_pkgs "${LIVE_LIST}" "${INITSYS}"
|
||||
run_safe "make_livefs"
|
||||
fi
|
||||
show_elapsed_time "${FUNCNAME}" "${timer}"
|
||||
}
|
||||
|
||||
build(){
|
||||
msg "Start building [%s]" "${PROFILE}"
|
||||
if ${clean_first};then
|
||||
@@ -95,29 +137,45 @@ build(){
|
||||
rm -rf --one-file-system "${iso_root}"
|
||||
fi
|
||||
|
||||
if ${iso_only}; then
|
||||
[[ ! -d ${work_dir} ]] && die "Create images: %s -p %s -x" "${cmd}" "${PROFILE}"
|
||||
compress_images
|
||||
exit 1
|
||||
fi
|
||||
if ${images_only}; then
|
||||
prepare_images
|
||||
warning "Continue compress: %s -p %s -zc ..." "${cmd}" "${PROFILE}"
|
||||
exit 1
|
||||
else
|
||||
prepare_images
|
||||
compress_images
|
||||
fi
|
||||
case true in
|
||||
${chroot_only})
|
||||
mk_chroots
|
||||
warning "Continue squash: %s -p %s -sc ..." "${cmd}" "${PROFILE}"
|
||||
exit 1
|
||||
;;
|
||||
${boot_only})
|
||||
mk_boot
|
||||
warning "Continue iso: %s -p %s -zc ..." "${cmd}" "${PROFILE}"
|
||||
exit 1
|
||||
;;
|
||||
${squash_only})
|
||||
mk_squash
|
||||
warning "Continue boot: %s -p %s -bc ..." "${cmd}" "${PROFILE}"
|
||||
exit 1
|
||||
;;
|
||||
${iso_only})
|
||||
[[ ! -d ${work_dir} ]] && die "Create chroot: %s -p %s -x" "${cmd}" "${PROFILE}"
|
||||
mk_iso
|
||||
;;
|
||||
*)
|
||||
mk_chroots
|
||||
mk_boot
|
||||
mk_squash
|
||||
mk_iso
|
||||
;;
|
||||
esac
|
||||
msg "Finished building [%s]" "${PROFILE}"
|
||||
show_elapsed_time "${FUNCNAME}" "${timer_start}"
|
||||
}
|
||||
|
||||
clean_first=true
|
||||
pretend=false
|
||||
images_only=false
|
||||
chroot_only=false
|
||||
iso_only=false
|
||||
persist=false
|
||||
use_dracut=false
|
||||
squash_only=false
|
||||
boot_only=false
|
||||
|
||||
basestrap_args=(-GMc)
|
||||
cmd=${0##*/}
|
||||
@@ -137,7 +195,9 @@ usage() {
|
||||
echo " [default: ${GPG_KEY}]"
|
||||
echo ' -m Set SquashFS image mode to persistence'
|
||||
echo ' -c Disable clean work dir'
|
||||
echo ' -x Build images only'
|
||||
echo ' -x Build chroot only'
|
||||
echo ' -s Squash chroot only'
|
||||
echo ' -b Generate iso boot only'
|
||||
echo ' -z Generate iso only'
|
||||
echo ' Requires pre built images (-x)'
|
||||
echo ' -d Use dracut instead of mkinitcpio for iso initramfs'
|
||||
@@ -150,7 +210,7 @@ usage() {
|
||||
|
||||
orig_argv=("$0" "$@")
|
||||
|
||||
opts='p:r:t:i:g:czxmdqh'
|
||||
opts='p:r:t:i:g:czsbxmdqh'
|
||||
|
||||
while getopts "${opts}" arg; do
|
||||
case "${arg}" in
|
||||
@@ -160,8 +220,10 @@ while getopts "${opts}" arg; do
|
||||
i) INITSYS="$OPTARG" ;;
|
||||
g) GPG_KEY="$OPTARG" ;;
|
||||
c) clean_first=false ;;
|
||||
x) images_only=true ;;
|
||||
x) chroot_only=true ;;
|
||||
z) iso_only=true ;;
|
||||
s) squash_only=true ;;
|
||||
b) boot_only=true ;;
|
||||
m) persist=true ;;
|
||||
d) use_dracut=true ;;
|
||||
q) pretend=true ;;
|
||||
|
@@ -14,6 +14,8 @@
|
||||
|
||||
. @libdir@/artools/util-iso.sh
|
||||
|
||||
prepare_artools
|
||||
|
||||
connect(){
|
||||
echo "${ACCOUNT}@${FILE_HOST}:${FILE_HOME}"
|
||||
}
|
||||
|
@@ -14,6 +14,8 @@
|
||||
|
||||
. /usr/lib/artools/util-pkg.sh
|
||||
|
||||
prepare_artools
|
||||
|
||||
batch_move() {
|
||||
local name="${1:-pkg_moves}"
|
||||
local pkglist=${TREE_DIR_ARTIX}/$name.list
|
||||
|
@@ -14,6 +14,8 @@
|
||||
|
||||
. @libdir@/artools/util-pkg.sh
|
||||
|
||||
prepare_artools
|
||||
|
||||
create_first=false
|
||||
rebuild=false
|
||||
no_check=false
|
||||
@@ -90,7 +92,7 @@ if ${create_first} || [[ ! -d "${CHROOTS_PKG}/${repo}-${ARCH}" ]];then
|
||||
lock_close 9
|
||||
|
||||
rm -rf --one-file-system "${CHROOTS_PKG}/${repo}-${ARCH}"
|
||||
mkdir -p "${CHROOTS_PKG}/${repo}-${ARCH}"
|
||||
(umask 0022; mkdir -p "${CHROOTS_PKG}/${repo}-${ARCH}")
|
||||
setarch "${ARCH}" mkchroot \
|
||||
-C "${pacman_conf}" \
|
||||
-M "${makepkg_conf}" \
|
||||
|
@@ -14,33 +14,41 @@
|
||||
|
||||
. @libdir@/artools/util-pkg.sh
|
||||
|
||||
prepare_artools
|
||||
|
||||
patch_pkg(){
|
||||
local pkg="$1"
|
||||
local pkgpath="$1"
|
||||
local pkg=${pkgpath%/*}
|
||||
pkg=${pkg##*/}
|
||||
case $pkg in
|
||||
glibc)
|
||||
msg2 "Patching %s" "$pkg"
|
||||
sed -e 's|{locale,systemd/system,tmpfiles.d}|{locale,tmpfiles.d}|' \
|
||||
-e '/nscd.service/d' \
|
||||
-i $pkg/trunk/PKGBUILD
|
||||
-i $pkgpath/PKGBUILD
|
||||
;;
|
||||
linux|linux-lts)
|
||||
sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i $pkg/trunk/PKGBUILD
|
||||
msg2 "Patching %s" "$pkg"
|
||||
sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i $pkgpath/PKGBUILD
|
||||
sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
|
||||
-i $pkg/trunk/config
|
||||
-i $pkgpath/config
|
||||
;;
|
||||
bash)
|
||||
msg2 "Patching %s" "$pkg"
|
||||
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
|
||||
-i $pkgpath/PKGBUILD
|
||||
cd $pkgpath
|
||||
patch -Np 1 -i ${DATADIR}/patches/artix-bash.patch
|
||||
updpkgsums
|
||||
cd ../..
|
||||
;;
|
||||
gstreamer|gst-plugins-*|licenses)
|
||||
msg2 "Patching %s" "$pkg"
|
||||
sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \
|
||||
-e 's|(Arch Linux)|(Artix Linux)|' \
|
||||
-i $pkg/trunk/PKGBUILD
|
||||
-i $pkgpath/PKGBUILD
|
||||
;;
|
||||
esac
|
||||
}
|
||||
@@ -82,7 +90,7 @@ sync_pkg(){
|
||||
}
|
||||
|
||||
show_deps(){
|
||||
local src="$1" repo="$2"
|
||||
local src="$1"
|
||||
|
||||
. $src/PKGBUILD 2>/dev/null
|
||||
|
||||
@@ -90,7 +98,6 @@ show_deps(){
|
||||
|
||||
local archver=$(get_full_version)
|
||||
|
||||
msg2 "repo: %s" "$repo"
|
||||
[[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}"
|
||||
msg2 "pkgname: %s" "${pkgname[*]}"
|
||||
[[ -n $pkgdesc ]] && msg2 "pkgdesc: %s" "${pkgdesc}"
|
||||
@@ -109,6 +116,9 @@ subrepo_new(){
|
||||
|
||||
cd ${TREE_DIR_ARTIX}/$group
|
||||
|
||||
msg2 "team: %s" "$team"
|
||||
msg2 "group: %s" "$group"
|
||||
|
||||
local org=$(get_pkg_org "${PACKAGE}")
|
||||
|
||||
create_repo "${PACKAGE}" "$org"
|
||||
@@ -122,66 +132,73 @@ subrepo_new(){
|
||||
commit_jenkins_files "${PACKAGE}"
|
||||
}
|
||||
|
||||
from_arch(){
|
||||
local src= dest=
|
||||
get_team(){
|
||||
local repo="$1" team=
|
||||
case $repo in
|
||||
*testing*|*staging*)
|
||||
set_arch_repos false false false
|
||||
team=$(find_repo "$srcpath")
|
||||
team=${team%-*}
|
||||
;;
|
||||
*) team=${repo%-*} ;;
|
||||
esac
|
||||
echo $team
|
||||
}
|
||||
|
||||
from_arch(){
|
||||
cd ${TREE_DIR_ARTIX}
|
||||
|
||||
local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
|
||||
[[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
|
||||
local srcpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}")
|
||||
[[ -z $srcpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
|
||||
|
||||
local package=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE}
|
||||
local repo=$(find_repo "$package" "${staging}" "${unstable}")
|
||||
local repo=$(find_repo "$srcpath")
|
||||
|
||||
src=$package/repos/$repo
|
||||
archpath=$srcpath/repos/$repo
|
||||
local artixpath=$(find_pkg ${TREE_DIR_ARTIX} ${PACKAGE})
|
||||
local tree=${srcpath%/*}
|
||||
local tree=${tree##*/}
|
||||
local group=$(get_group "${PACKAGE}" "$tree")
|
||||
|
||||
local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
|
||||
local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch")
|
||||
msg "repo: %s" "$repo"
|
||||
artixpath=$artixpath/trunk
|
||||
|
||||
dest=${TREE_DIR_ARTIX}/$tree_dir/${PACKAGE}/trunk
|
||||
show_deps "$archpath"
|
||||
|
||||
msg "tree: %s" "$tree_dir"
|
||||
show_deps "$src" "$repo"
|
||||
if [[ -f $artixpath/PKGBUILD ]];then
|
||||
|
||||
if [[ -d $dest ]];then
|
||||
|
||||
cd ${TREE_DIR_ARTIX}/$git_tree_artix
|
||||
|
||||
. $dest/PKGBUILD 2>/dev/null
|
||||
. $artixpath/PKGBUILD 2>/dev/null
|
||||
local artixver=$(get_full_version)
|
||||
|
||||
msg2 "Artix Version: %s" "$artixver"
|
||||
else
|
||||
subrepo_new "$tree_dir" "$git_tree_arch"
|
||||
artixpath=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk
|
||||
subrepo_new "${group}" "$(get_team $repo)"
|
||||
fi
|
||||
|
||||
msg "Sync (%s) from [%s] to [%s]" "${PACKAGE}" "$git_tree_arch" "$tree_dir"
|
||||
msg "Sync (%s) from Arch [%s] to Artix [%s]" "${PACKAGE}" "${archpath##*archlinux/}" "${artixpath##*artixlinux/}"
|
||||
|
||||
sync_pkg "$src" "$dest"
|
||||
patch_pkg "${PACKAGE}"
|
||||
sync_pkg "$archpath" "$artixpath"
|
||||
patch_pkg "$artixpath"
|
||||
}
|
||||
|
||||
view_build(){
|
||||
local src=
|
||||
local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
|
||||
[[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
|
||||
|
||||
local pkg_path=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE}
|
||||
local repo=$(find_repo "$pkg_path" "${staging}" "${unstable}")
|
||||
|
||||
src=$pkg_path/repos/$repo
|
||||
|
||||
show_deps "$src" "$repo"
|
||||
local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}")
|
||||
[[ -z $archpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
|
||||
local repo=$(find_repo "${archpath}")
|
||||
archpath=$archpath/repos/$repo
|
||||
msg2 "repo: %s" "$repo"
|
||||
show_deps "$archpath"
|
||||
}
|
||||
|
||||
check_tree(){
|
||||
local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
|
||||
[[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
|
||||
local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
|
||||
local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch")
|
||||
msg "tree_dir: %s" "$tree_dir"
|
||||
[[ -z $git_tree_artix ]] && msg2 "exists: %s" "no"
|
||||
[[ -n $git_tree_artix ]] && msg2 "exists: %s" "yes"
|
||||
local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}")
|
||||
[[ -z $archpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
|
||||
local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" ${PACKAGE})
|
||||
local group=${artixpath%/*}
|
||||
msg "group: %s" "${group##*/}"
|
||||
|
||||
[[ -z $artixpath ]] && msg2 "exists: %s" "no"
|
||||
[[ -n $artixpath ]] && msg2 "exists: %s" "yes"
|
||||
}
|
||||
|
||||
sync_repos(){
|
||||
@@ -197,39 +214,42 @@ sync_repos(){
|
||||
|
||||
load_makepkg_config
|
||||
|
||||
testing=true
|
||||
staging=true
|
||||
unstable=false
|
||||
|
||||
sync=false
|
||||
sync_arch=true
|
||||
sync_artix=true
|
||||
import=false
|
||||
view=false
|
||||
createnew=false
|
||||
conf=false
|
||||
unstable=false
|
||||
staging=true
|
||||
sync_group=false
|
||||
check=false
|
||||
|
||||
PACKAGE=''
|
||||
|
||||
TEAM=${TREE_NAMES_ARTIX[0]}
|
||||
TEAM='community'
|
||||
GROUP=${TREE_NAMES_ARTIX[0]}
|
||||
|
||||
usage() {
|
||||
echo "Usage: ${0##*/} [options]"
|
||||
echo ' -p <pkg> Package name'
|
||||
echo ' -t <team> Team name (only with -n)'
|
||||
echo ' Possible values: core,extra,community,multilib'
|
||||
echo " [default: ${TEAM}]"
|
||||
echo ' -g <group> Group name, the superrepo (only with -n or -s)'
|
||||
echo " [default: ${GROUP}]"
|
||||
echo " -s Clone or pull repos"
|
||||
echo " -z Don't clone or pull arch repos"
|
||||
echo " -y Don't clone or pull artix repos"
|
||||
echo " -a Don't clone or pull arch repos"
|
||||
echo " -b Don't clone or pull artix repos"
|
||||
echo ' -i Import a package from arch repos'
|
||||
echo ' -n Make new remote subrepo and clone it'
|
||||
echo ' -u Include kde & gnome unstable (only with -i)'
|
||||
echo ' -w Exclude staging (only with -i)'
|
||||
echo ' -v Check if a package is in the artix tree(s)'
|
||||
echo ' -c View package depends'
|
||||
echo ' -x Exclude testing (only with -i)'
|
||||
echo ' -y Exclude staging (only with -i)'
|
||||
echo ' -z Include kde & gnome unstable (only with -i)'
|
||||
echo ' -h This help'
|
||||
echo ''
|
||||
echo ''
|
||||
@@ -238,7 +258,7 @@ usage() {
|
||||
|
||||
orig_argv=("$0" "$@")
|
||||
|
||||
opts='p:t:g:uwsinzycvh'
|
||||
opts='p:t:g:sinabcvxyzh'
|
||||
|
||||
while getopts "${opts}" arg; do
|
||||
case "${arg}" in
|
||||
@@ -246,14 +266,15 @@ while getopts "${opts}" arg; do
|
||||
t) TEAM="$OPTARG" ;;
|
||||
g) GROUP="$OPTARG"; sync_group=true ;;
|
||||
s) sync=true ;;
|
||||
z) sync_arch=false ;;
|
||||
y) sync_artix=false ;;
|
||||
a) sync_arch=false ;;
|
||||
b) sync_artix=false ;;
|
||||
i) import=true ;;
|
||||
n) createnew=true ;;
|
||||
w) staging=false ;;
|
||||
u) unstable=true ;;
|
||||
c) check=true ;;
|
||||
v) view=true ;;
|
||||
x) testing=false ;;
|
||||
y) staging=false ;;
|
||||
z) unstable=true ;;
|
||||
h|?) usage 0 ;;
|
||||
*) echo "invalid argument '${arg}'"; usage 1 ;;
|
||||
esac
|
||||
@@ -264,6 +285,8 @@ shift $(($OPTIND - 1))
|
||||
prepare_dir "${TREE_DIR_ARTIX}"
|
||||
prepare_dir "${TREE_DIR_ARCH}"
|
||||
|
||||
set_arch_repos "$testing" "$staging" "$unstable"
|
||||
|
||||
${sync} && sync_repos
|
||||
|
||||
${view} && view_build
|
||||
|
@@ -14,6 +14,8 @@
|
||||
|
||||
. @libdir@/artools/util-pkg.sh
|
||||
|
||||
prepare_artools
|
||||
|
||||
get_path(){
|
||||
local repo="$1" pkg=trunk/PKGBUILD
|
||||
if [[ $repo != trunk ]]; then
|
||||
@@ -30,15 +32,30 @@ prepare_commit(){
|
||||
[[ ! -d repos/$dest ]] && mkdir repos/$dest
|
||||
}
|
||||
|
||||
commit_pkg(){
|
||||
local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
|
||||
if [[ -n ${git_tree} ]];then
|
||||
check_team(){
|
||||
if [[ ${REPO_SRC} == "core" && ${REPO_DEST} == "extra" ]] || \
|
||||
[[ ${REPO_SRC} == "extra" && ${REPO_DEST} == "core" ]] || \
|
||||
[[ ${REPO_SRC} == "extra" && ${REPO_DEST} == "community" ]] || \
|
||||
[[ ${REPO_SRC} == "community" && ${REPO_DEST} == "extra" ]] ;then
|
||||
|
||||
cd ${TREE_DIR_ARTIX}/${git_tree}
|
||||
local org=$(get_pkg_org "${PACKAGE}")
|
||||
add_repo_to_team "${PACKAGE}" "$org" "${REPO_DEST}"
|
||||
remove_repo_from_team "${PACKAGE}" "$org" "${REPO_SRC}"
|
||||
fi
|
||||
}
|
||||
|
||||
commit_pkg(){
|
||||
local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
|
||||
|
||||
if [[ -n ${artixpath} ]];then
|
||||
|
||||
local group=${artixpath%/*}
|
||||
|
||||
cd ${group}
|
||||
|
||||
local head=$(get_local_head)
|
||||
|
||||
cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE}
|
||||
cd ${artixpath}
|
||||
|
||||
local pkgbuild=$(get_path "${REPO_SRC}")
|
||||
|
||||
@@ -65,19 +82,18 @@ commit_pkg(){
|
||||
commit_msg="[${REPO_SRC}] '${PACKAGE}-$version' ${action}"
|
||||
msg "Action: %s" "$commit_msg"
|
||||
git add .
|
||||
|
||||
fi
|
||||
git commit -m "$commit_msg"
|
||||
|
||||
cd ${TREE_DIR_ARTIX}/${git_tree}
|
||||
cd ${group}
|
||||
|
||||
${push} && pull_tree "${git_tree}" "$head"
|
||||
${push} && pull_tree "${group##*/}" "$head"
|
||||
|
||||
# subrepo_pull "${PACKAGE}"
|
||||
subrepo_push "${PACKAGE}"
|
||||
subrepo_clean "${PACKAGE}"
|
||||
|
||||
${push} && push_tree "${git_tree}"
|
||||
${push} && push_tree "${group##*/}"
|
||||
|
||||
git prune
|
||||
else
|
||||
@@ -85,15 +101,17 @@ commit_pkg(){
|
||||
fi
|
||||
}
|
||||
|
||||
symlink_commit_pkg(){
|
||||
local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
|
||||
if [[ -n ${git_tree} ]];then
|
||||
repo_commit_pkg(){
|
||||
local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
|
||||
if [[ -n ${artixpath} ]];then
|
||||
|
||||
cd ${TREE_DIR_ARTIX}/${git_tree}
|
||||
local group=${artixpath%/*}
|
||||
|
||||
cd ${group}
|
||||
|
||||
local head=$(get_local_head)
|
||||
|
||||
cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE}
|
||||
cd ${artixpath}
|
||||
|
||||
local pkgbuild=$(get_path "${REPO_SRC}")
|
||||
|
||||
@@ -125,22 +143,36 @@ symlink_commit_pkg(){
|
||||
git add .
|
||||
git commit -m "$commit_msg"
|
||||
|
||||
cd ${TREE_DIR_ARTIX}/${git_tree}
|
||||
cd ${group}
|
||||
|
||||
${push} && pull_tree "${git_tree}" "$head"
|
||||
${push} && pull_tree "${group##*/}" "$head"
|
||||
|
||||
# subrepo_pull "${PACKAGE}"
|
||||
subrepo_push "${PACKAGE}"
|
||||
subrepo_clean "${PACKAGE}"
|
||||
|
||||
${push} && push_tree "${git_tree}"
|
||||
${push} && push_tree "${group##*/}"
|
||||
|
||||
git prune
|
||||
|
||||
check_team
|
||||
else
|
||||
error "Package '%s' does not exist!" "${PACKAGE}"
|
||||
fi
|
||||
}
|
||||
|
||||
is_valid_repo(){
|
||||
local src="$1" cases=
|
||||
set_arch_repos true true true
|
||||
for r in ${ARCH_REPOS[@]};do
|
||||
cases=${cases:-}${cases:+|}${r}
|
||||
done
|
||||
eval "case $src in
|
||||
${cases}|trunk) return 0 ;;
|
||||
*) return 1 ;;
|
||||
esac"
|
||||
}
|
||||
|
||||
load_makepkg_config
|
||||
|
||||
REPO_SRC='trunk'
|
||||
@@ -184,7 +216,7 @@ if $(is_valid_repo "${REPO_SRC}");then
|
||||
if [[ "${cmd}" == 'commitpkg' ]];then
|
||||
commit_pkg
|
||||
else
|
||||
symlink_commit_pkg
|
||||
repo_commit_pkg
|
||||
fi
|
||||
else
|
||||
error "source repository '%s' is not valid!" "${REPO_SRC}"
|
||||
|
@@ -14,116 +14,125 @@
|
||||
|
||||
. @libdir@/artools/util-pkg.sh
|
||||
|
||||
compare(){
|
||||
local pkgpath="$1" group="$2"
|
||||
prepare_artools
|
||||
|
||||
get_import_path(){
|
||||
local pkg="$1" import_path=
|
||||
|
||||
for tree in ${TREE_NAMES_ARCH[@]};do
|
||||
[[ -d ${TREE_DIR_ARCH}/$tree/$pkg/repos ]] && import_path=${TREE_DIR_ARCH}/$tree/$pkg
|
||||
done
|
||||
echo $import_path
|
||||
}
|
||||
|
||||
compare_m(){
|
||||
local result=$(vercmp "$artixver" "$archver")
|
||||
local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4"
|
||||
if [[ $artixrepo == *testing* ]] || [[ $artixrepo == *staging* ]]; then
|
||||
if [[ "$archrepo" == "$artixrepo" ]]; then
|
||||
msg_row "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||
else
|
||||
msg_row_notify "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||
if [[ -n "$archrepo" ]]; then
|
||||
printf "%s\n" "${archrepo%-*}:${artixrepo%-*}:$pkg" >> ${TREE_DIR_ARTIX}/pkg_moves.list
|
||||
fi
|
||||
fi
|
||||
|
||||
fi
|
||||
}
|
||||
|
||||
compare_u(){
|
||||
local result=$(vercmp "$artixver" "$archver")
|
||||
local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4"
|
||||
if [ $result -eq -1 ];then
|
||||
msg_row_upgrade "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||
printf "%s\n" "${archrepo%-*}:$pkg" >> ${TREE_DIR_ARTIX}/pkg_upgrades.list
|
||||
fi
|
||||
}
|
||||
|
||||
compare_d(){
|
||||
local result=$(vercmp "$artixver" "$archver")
|
||||
local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4"
|
||||
if [ $result -eq 1 ];then
|
||||
if [[ -n "$archver" ]] && [[ -n "$archrepo" ]];then
|
||||
msg_row_downgrade "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pre_compare(){
|
||||
local func="$1" pkgpath="$2"
|
||||
local group="${pkgpath%/*}"
|
||||
group=${group##*/}
|
||||
local pkg=${pkgpath##*/}
|
||||
local artixrepo=$(find_repo "$pkgpath" "${staging}" "${unstable}")
|
||||
local artixshow=${artixrepo%-*}
|
||||
local artixrepo=$(find_repo "$pkgpath")
|
||||
local pkgbuild=$pkgpath/repos/$artixrepo/PKGBUILD
|
||||
|
||||
if [[ -f $pkgbuild ]];then
|
||||
|
||||
. $pkgbuild 2>/dev/null
|
||||
local artixver=$(get_full_version)
|
||||
|
||||
local archpath=$(get_import_path $pkg)
|
||||
|
||||
local archrepo=$(find_repo "$archpath" "${staging}" "${unstable}")
|
||||
|
||||
local archshow=${archrepo%-*}
|
||||
local archrepo=$(find_repo "${archpath}")
|
||||
pkgbuild=$archpath/repos/$archrepo/PKGBUILD
|
||||
|
||||
if [[ -f $pkgbuild ]];then
|
||||
if [[ -f "$pkgbuild" ]];then
|
||||
. $pkgbuild 2>/dev/null
|
||||
local archver=$(get_full_version)
|
||||
fi
|
||||
|
||||
local result=$(vercmp "$artixver" "$archver")
|
||||
"$func" "$artixver" "$artixrepo" "$archver" "$archrepo"
|
||||
|
||||
local repomatch=false
|
||||
[[ "$archrepo" == "$artixrepo" ]] && repomatch=true
|
||||
|
||||
if ${move};then
|
||||
|
||||
if [ $result -gt -1 ];then
|
||||
case $artixrepo in
|
||||
*testing*|*staging*)
|
||||
if $repomatch;then
|
||||
msg_row "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||
else
|
||||
msg_row_notify "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||
|
||||
if [[ -n "$archshow" ]]; then
|
||||
printf "%s\n" "$archshow:$artixshow:$pkg" >> ${TREE_DIR_ARTIX}/pkg_moves.list
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
elif ${upgrades};then
|
||||
|
||||
if [ $result -eq -1 ];then
|
||||
msg_row_upgrade "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||
|
||||
printf "%s\n" "$archshow:$pkg" >> ${TREE_DIR_ARTIX}/pkg_upgrades.list
|
||||
fi
|
||||
|
||||
elif ${downgrades};then
|
||||
|
||||
if [ $result -eq 1 ];then
|
||||
if [[ -n $archver ]] && [[ -n $archrepo ]];then
|
||||
msg_row_downgrade "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||
fi
|
||||
fi
|
||||
|
||||
fi
|
||||
unset pkgver epoch pkgrel artixver archver pkgbuild archpath
|
||||
|
||||
fi
|
||||
}
|
||||
|
||||
is_db_entry() {
|
||||
local pkgname="$1" repo="$(arch2artix $2)"
|
||||
if [[ -d ${db_cache_dir}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
compare_upgrades(){
|
||||
local pkgpath="${1%/*}"
|
||||
pre_compare compare_u "$pkgpath"
|
||||
}
|
||||
|
||||
check_db(){
|
||||
local pkgpath="$1"
|
||||
local pkg=${pkgpath##*/}
|
||||
local sarch=(any ${ARCH})
|
||||
local arch_repos=$(arch_repos "${staging}" "${unstable}")
|
||||
compare_downgrades(){
|
||||
local pkgpath="${1%/*}"
|
||||
pre_compare compare_d "$pkgpath"
|
||||
}
|
||||
|
||||
for repo in ${arch_repos[@]};do
|
||||
compare_move(){
|
||||
local pkgpath="${1%/*}"
|
||||
pre_compare compare_m "$pkgpath"
|
||||
}
|
||||
|
||||
for a in ${sarch[@]};do
|
||||
|
||||
local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD
|
||||
|
||||
if [[ -f $pkgbuild ]];then
|
||||
|
||||
. $pkgbuild 2>/dev/null
|
||||
local artixver=$(get_full_version)
|
||||
local is_entry=false
|
||||
|
||||
for name in ${pkgname[@]};do
|
||||
|
||||
if is_db_entry "$name-$artixver" "$repo";then
|
||||
is_entry=true
|
||||
fi
|
||||
if ! $is_entry; then
|
||||
msg_row "${tableU}" "$repo" "$name" "$artixver" "$is_entry"
|
||||
fi
|
||||
done
|
||||
unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase
|
||||
fi
|
||||
tree_loop(){
|
||||
local func="$1"
|
||||
for tree in ${TREE_NAMES_ARTIX[@]};do
|
||||
local pkgs=$(find ${TREE_DIR_ARTIX}/$tree -name trunk)
|
||||
for package in ${pkgs[@]}; do
|
||||
"$func" "$package"
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
show_compare_header(){
|
||||
msg_table_header "${table}" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" "Group"
|
||||
}
|
||||
|
||||
show_upgrades_table(){
|
||||
show_compare_header
|
||||
[[ -f ${TREE_DIR_ARTIX}/pkg_upgrades.list ]] && rm ${TREE_DIR_ARTIX}/pkg_upgrades.list
|
||||
tree_loop compare_upgrades
|
||||
}
|
||||
|
||||
show_downgrades_table(){
|
||||
show_compare_header
|
||||
tree_loop compare_downgrades
|
||||
}
|
||||
|
||||
show_move_table(){
|
||||
show_compare_header
|
||||
[[ -f ${TREE_DIR_ARTIX}/pkg_moves.list ]] && rm ${TREE_DIR_ARTIX}/pkg_moves.list
|
||||
tree_loop compare_move
|
||||
}
|
||||
|
||||
update_db_cache(){
|
||||
msg "Updating database cache"
|
||||
for repo in "${searchrepos[@]}"; do
|
||||
@@ -146,80 +155,110 @@ query_db() {
|
||||
read -r match
|
||||
pkg=${pkg#${db}}
|
||||
pkg="${pkg%/*}"
|
||||
|
||||
msg_row "${tableQ}" "${repo}" "${pkg}" "${match}"
|
||||
done < <(grep -rZ "${library}" "${db}") | sort -u
|
||||
fi
|
||||
done
|
||||
exit 0
|
||||
}
|
||||
|
||||
show_version_table(){
|
||||
show_lib_table() {
|
||||
${sync} && update_db_cache
|
||||
msg_table_header "${tableQ}" "Repo" "Package" "Library"
|
||||
query_db
|
||||
}
|
||||
|
||||
if ${check};then
|
||||
${sync} && update_db_cache
|
||||
msg_table_header "${tableU}" "Repo" "Package" "Version" "Database"
|
||||
elif ${query};then
|
||||
${sync} && update_db_cache
|
||||
msg_table_header "${tableQ}" "Repo" "Package" "Library"
|
||||
query_db
|
||||
else
|
||||
msg_table_header "${table}" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" "Group"
|
||||
is_db_entry() {
|
||||
local pkgname="$1" repo="${REPOS[$2]}"
|
||||
|
||||
if [[ -d ${db_cache_dir}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
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
|
||||
check_db(){
|
||||
local pkgpath="${1%/*}"
|
||||
local pkg=${pkgpath##*/}
|
||||
local sarch=(any ${ARCH})
|
||||
|
||||
for tree in ${TREE_NAMES_ARTIX[@]};do
|
||||
local git=$(find ${TREE_DIR_ARTIX}/$tree/ -mindepth 1 -maxdepth 1 -type d)
|
||||
for package in ${git[@]}; do
|
||||
if ${check};then
|
||||
check_db "$package"
|
||||
else
|
||||
compare "$package" "$tree"
|
||||
for repo in ${ARCH_REPOS[@]};do
|
||||
for a in ${sarch[@]};do
|
||||
|
||||
local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD
|
||||
|
||||
if [[ -f $pkgbuild ]];then
|
||||
|
||||
. $pkgbuild 2>/dev/null
|
||||
local artixver=$(get_full_version)
|
||||
|
||||
local is_entry=false
|
||||
|
||||
for name in ${pkgname[@]};do
|
||||
|
||||
if is_db_entry "$name-$artixver" "$repo";then
|
||||
is_entry=true
|
||||
fi
|
||||
if ! $is_entry;then
|
||||
msg_row "${tableU}" "$repo" "$name" "$artixver" "$is_entry"
|
||||
fi
|
||||
done
|
||||
unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase
|
||||
fi
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
show_db_table(){
|
||||
${sync} && update_db_cache
|
||||
msg_table_header "${tableU}" "Repo" "Package" "Version" "Database"
|
||||
tree_loop check_db
|
||||
}
|
||||
|
||||
db_cache_dir="${XDG_CACHE_HOME:-$USER_HOME/.cache}/artools"
|
||||
|
||||
load_makepkg_config
|
||||
|
||||
unstable=false
|
||||
testing=true
|
||||
staging=true
|
||||
unstable=false
|
||||
|
||||
upgrades=false
|
||||
downgrades=false
|
||||
move=false
|
||||
check=false
|
||||
sync=false
|
||||
query=false
|
||||
|
||||
artix_repos=(
|
||||
'goblins' 'gremlins' 'system' 'world'
|
||||
'galaxy-goblins' 'galaxy-gremlins' 'galaxy'
|
||||
'lib32-goblins' 'lib32-gremlins' 'lib32'
|
||||
'gnome-wobble' 'kde-wobble'
|
||||
)
|
||||
sync=false
|
||||
check=false
|
||||
query=false
|
||||
|
||||
readonly table="%-18s %-18s %-25s %-27s %-27s %-10s"
|
||||
readonly tableU="%-20s %-35s %-30s %-10s"
|
||||
readonly tableQ="%-20s %-45s %s"
|
||||
|
||||
searchrepos=(${artix_repos[@]})
|
||||
searchrepos=(
|
||||
${REPOS[kde-unstable]}
|
||||
${REPOS[gnome-unstable]}
|
||||
${REPOS[staging]}
|
||||
${REPOS[testing]}
|
||||
${REPOS[core]}
|
||||
${REPOS[extra]}
|
||||
${REPOS[community-staging]}
|
||||
${REPOS[community-testing]}
|
||||
${REPOS[community]}
|
||||
${REPOS[multilib-staging]}
|
||||
${REPOS[multilib-testing]}
|
||||
${REPOS[multilib]}
|
||||
)
|
||||
|
||||
usage() {
|
||||
echo "Usage: ${0##*/} [options] (with -q [libname])"
|
||||
echo ' -u Show upgrade packages'
|
||||
echo ' -d Show downgrade packages'
|
||||
echo ' -m Show packages to move'
|
||||
echo " -x Don't inlcude staging packages"
|
||||
echo ' -y Include unstable kde and gnome'
|
||||
echo ' -c Check repos'
|
||||
echo " -x Don't inlcude testing packages"
|
||||
echo " -y Don't inlcude staging packages"
|
||||
echo ' -z Include unstable kde and gnome'
|
||||
echo " -s Sync repo databases"
|
||||
echo ' -c Check repos'
|
||||
echo " -q Query repo databases for so libs"
|
||||
echo ' -r <repo> Repo name to query'
|
||||
echo ' [default: all]'
|
||||
@@ -231,19 +270,20 @@ usage() {
|
||||
|
||||
orig_argv=("$0" "$@")
|
||||
|
||||
opts='r:qcsudmxyh'
|
||||
opts='r:qcsudmxyzh'
|
||||
|
||||
while getopts "${opts}" arg; do
|
||||
case "${arg}" in
|
||||
u) upgrades=true ;;
|
||||
d) downgrades=true ;;
|
||||
m) move=true ;;
|
||||
x) staging=false ;;
|
||||
y) unstable=true ;;
|
||||
c) check=true ;;
|
||||
s) sync=true ;;
|
||||
c) check=true ;;
|
||||
q) query=true ;;
|
||||
r) searchrepos=("$OPTARG") ;;
|
||||
x) testing=false ;;
|
||||
y) staging=false ;;
|
||||
z) unstable=true ;;
|
||||
h|?) usage 0 ;;
|
||||
*) echo "invalid argument '${arg}'"; usage 1 ;;
|
||||
esac
|
||||
@@ -253,4 +293,14 @@ shift $(($OPTIND - 1))
|
||||
|
||||
library="$1"; shift
|
||||
|
||||
show_version_table
|
||||
set_arch_repos "$testing" "$staging" "$unstable"
|
||||
|
||||
${move} && show_move_table
|
||||
|
||||
${upgrades} && show_upgrades_table
|
||||
|
||||
${downgrades} && show_downgrades_table
|
||||
|
||||
${check} && show_db_table
|
||||
|
||||
${query} && show_lib_table
|
||||
|
@@ -14,12 +14,15 @@
|
||||
|
||||
. @libdir@/artools/util-pkg.sh
|
||||
|
||||
prepare_artools
|
||||
|
||||
find_cached_pkgfile() {
|
||||
local searchdirs=("$PKGDEST" "$PWD") results=()
|
||||
local pkg="$1"
|
||||
local search=${pkg%.*}
|
||||
for dir in "${searchdirs[@]}"; do
|
||||
[[ -d $dir ]] || continue
|
||||
results+=$(find "$dir" -type f -name "$pkg")
|
||||
results+=$(find "$dir" -type f -name "$search.*" ! -path '*.sig')
|
||||
done
|
||||
case ${#results[*]} in
|
||||
0)
|
||||
|
@@ -12,7 +12,6 @@
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
. @libdir@/artools/util-base.sh
|
||||
. @libdir@/artools/util-pkg.sh
|
||||
|
||||
set -e
|
||||
|
@@ -398,13 +398,27 @@ if (( ret != 0 )); then
|
||||
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"
|
||||
# sync off-site databases for up-to-date queries
|
||||
trap 'rm -rf $dbpath; cleanup' EXIT INT TERM QUIT
|
||||
dbpath=$(mktemp -d --tmpdir makechrootpkg-database.XXXXXXXXXX)
|
||||
mkdir -p "$dbpath"
|
||||
pacman -Sy --dbpath "$dbpath" --logfile /dev/null
|
||||
|
||||
# query current package locations
|
||||
remotepkgs=($(pacman -Sddp --dbpath "$dbpath" --logfile /dev/null "${pkgnames[@]}"))
|
||||
if (( $? )); then
|
||||
warning "Skipped checkpkg due to missing repo packages"
|
||||
exit 0
|
||||
fi
|
||||
# download package files if any non-local location exists
|
||||
for remotepkg in "${remotepkgs[@]}"; do
|
||||
[[ $remotepkg == file://* ]] && continue
|
||||
msg2 "Downloading current versions"
|
||||
pacman --noconfirm -Swdd --dbpath "$dbpath" --logfile /dev/null "${pkgnames[@]}"
|
||||
break
|
||||
done
|
||||
msg2 "Checking packages"
|
||||
sudo -u "$makepkg_user" checkpkg --rmdir --warn
|
||||
fi
|
||||
true
|
||||
fi
|
||||
|
@@ -132,7 +132,7 @@ DBGSRCDIR="/usr/src/debug"
|
||||
COMPRESSGZ=(gzip -c -f -n)
|
||||
COMPRESSBZ2=(bzip2 -c -f)
|
||||
COMPRESSXZ=(xz -c -z -)
|
||||
COMPRESSZST=(zstd -c -z -q -)
|
||||
COMPRESSZST=(zstd -c -T0 --ultra -20 -)
|
||||
COMPRESSLRZ=(lrzip -q)
|
||||
COMPRESSLZO=(lzop -q)
|
||||
COMPRESSZ=(compress -c -f)
|
||||
@@ -143,7 +143,7 @@ COMPRESSLZ=(lzip -c -f)
|
||||
# EXTENSION DEFAULTS
|
||||
#########################################################################
|
||||
#
|
||||
PKGEXT='.pkg.tar.xz'
|
||||
PKGEXT='.pkg.tar.zst'
|
||||
SRCEXT='.src.tar.gz'
|
||||
|
||||
# vim: set ft=sh ts=2 sw=2 et:
|
||||
|
@@ -146,7 +146,7 @@ run_hook() {
|
||||
|
||||
lower_dir=''
|
||||
live_root="/run/artix"
|
||||
bootmnt="/run/bootmnt"
|
||||
bootmnt="${live_root}/bootmnt"
|
||||
overlay_root="${live_root}/overlay_root"
|
||||
cow="${live_root}/cowspace"
|
||||
cp2ram="${live_root}/copytoram"
|
||||
|
@@ -15,7 +15,7 @@
|
||||
# export LC_MESSAGES=C
|
||||
export LANG=C
|
||||
|
||||
if [[ -t 2 ]]; then
|
||||
if [[ -t 2 && "$TERM" != dumb ]]; then
|
||||
colorize
|
||||
else
|
||||
declare -gr ALL_OFF='' BOLD='' BLUE='' GREEN='' RED='' YELLOW=''
|
||||
|
@@ -42,6 +42,12 @@ add_svc_s6(){
|
||||
fi
|
||||
done
|
||||
chroot $mnt s6-rc-bundle -c /etc/s6/rc/compiled add $rlvl $valid
|
||||
|
||||
# rebuild s6-linux-init binaries
|
||||
chroot $mnt rm -r /etc/s6/current
|
||||
chroot $mnt s6-linux-init-maker -1 -N -f /etc/s6/skel -G "/usr/bin/agetty -L -8 tty1 115200" -c /etc/s6/current /etc/s6/current
|
||||
chroot $mnt mv /etc/s6/current/bin/init /etc/s6/current/bin/s6-init
|
||||
chroot $mnt cp -a /etc/s6/current/bin /usr
|
||||
}
|
||||
|
||||
set_xdm(){
|
||||
@@ -143,10 +149,10 @@ write_unpackfs() {
|
||||
local yaml=$(write_yaml_header)
|
||||
yaml+=$(write_yaml_map 0 'unpack')
|
||||
# if ${persist}; then
|
||||
# yaml+=$(write_yaml_seq_map 2 'source' '"/run/bootmnt/LiveOS/rootfs.img"')
|
||||
# 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/bootmnt/LiveOS/rootfs.img"')
|
||||
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' '""')
|
||||
@@ -167,7 +173,7 @@ configure_calamares(){
|
||||
fi
|
||||
}
|
||||
|
||||
configure_image(){
|
||||
configure_chroot(){
|
||||
local fs="$1"
|
||||
msg "Configuring [%s]" "${fs##*/}"
|
||||
configure_hosts "$fs"
|
||||
@@ -179,3 +185,40 @@ configure_image(){
|
||||
write_live_session_conf > "$fs/etc/artools/live.conf"
|
||||
msg "Done configuring [%s]" "${fs##*/}"
|
||||
}
|
||||
|
||||
clean_up_chroot(){
|
||||
local path mnt="$1"
|
||||
msg2 "Cleaning [%s]" "${mnt##*/}"
|
||||
|
||||
path=$mnt/boot
|
||||
if [[ -d "$path" ]]; then
|
||||
find "$path" -name 'initramfs*.img' -delete &> /dev/null
|
||||
fi
|
||||
path=$mnt/var/lib/pacman/sync
|
||||
if [[ -d $path ]];then
|
||||
find "$path" -type f -delete &> /dev/null
|
||||
fi
|
||||
path=$mnt/var/cache/pacman/pkg
|
||||
if [[ -d $path ]]; then
|
||||
find "$path" -type f -delete &> /dev/null
|
||||
fi
|
||||
path=$mnt/var/log
|
||||
if [[ -d $path ]]; then
|
||||
find "$path" -type f -delete &> /dev/null
|
||||
fi
|
||||
path=$mnt/var/tmp
|
||||
if [[ -d $path ]];then
|
||||
find "$path" -mindepth 1 -delete &> /dev/null
|
||||
fi
|
||||
path=$mnt/tmp
|
||||
if [[ -d $path ]];then
|
||||
find "$path" -mindepth 1 -delete &> /dev/null
|
||||
fi
|
||||
find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete
|
||||
if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then
|
||||
rm $mnt/boot/grub/grub.cfg
|
||||
fi
|
||||
if [[ -f "$mnt/etc/machine-id" ]]; then
|
||||
rm $mnt/etc/machine-id
|
||||
fi
|
||||
}
|
||||
|
@@ -130,12 +130,15 @@ configure_grub(){
|
||||
|
||||
prepare_grub(){
|
||||
local platform=i386-pc img='core.img' prefix=/boot/grub
|
||||
local lib=$1/usr/lib/grub theme=$2/usr/share/grub
|
||||
local lib="$1"/usr/lib/grub
|
||||
local theme="$1"/usr/share/grub
|
||||
local livecfg="$2"/usr/share/grub
|
||||
local grub=${iso_root}/boot/grub efi=${iso_root}/efi/boot
|
||||
|
||||
|
||||
prepare_dir ${grub}/${platform}
|
||||
|
||||
cp ${theme}/cfg/*.cfg ${grub}
|
||||
cp ${livecfg}/cfg/*.cfg ${grub}
|
||||
|
||||
cp ${lib}/${platform}/* ${grub}/${platform}
|
||||
|
||||
@@ -158,8 +161,9 @@ prepare_grub(){
|
||||
grub-mkimage -d ${grub}/${platform} -o ${efi}/${img} -O ${platform} -p ${prefix} iso9660
|
||||
|
||||
prepare_dir ${grub}/themes
|
||||
cp -r ${theme}/themes/artix ${grub}/themes/
|
||||
cp -r ${theme}/{locales,tz} ${grub}
|
||||
|
||||
cp -r ${theme}/themes/artix ${grub}/themes
|
||||
cp -r ${livecfg}/{locales,tz} ${grub}
|
||||
|
||||
if [[ -f /usr/share/grub/unicode.pf2 ]];then
|
||||
msg2 "Copying %s ..." "unicode.pf2"
|
||||
|
@@ -72,7 +72,6 @@ make_sfs() {
|
||||
error "The path %s does not exist" "${sfs_in}"
|
||||
retrun 1
|
||||
fi
|
||||
local timer=$(get_timer)
|
||||
|
||||
mkdir -p ${iso_root}${live_dir}
|
||||
|
||||
@@ -108,7 +107,6 @@ make_sfs() {
|
||||
fi
|
||||
${persist} && rm -r "${work_dir}/embed"
|
||||
fi
|
||||
show_elapsed_time "${FUNCNAME}" "${timer_start}"
|
||||
}
|
||||
|
||||
get_disturl(){
|
||||
@@ -146,19 +144,3 @@ assemble_iso(){
|
||||
${iso_root}/
|
||||
}
|
||||
|
||||
make_iso() {
|
||||
msg "Start [Build ISO]"
|
||||
touch "${iso_root}/.artix"
|
||||
make_sfs "${work_dir}/rootfs"
|
||||
[[ -d "${work_dir}/livefs" ]] && make_sfs "${work_dir}/livefs"
|
||||
|
||||
msg "Making bootable image"
|
||||
# Sanity checks
|
||||
[[ ! -d "${iso_root}" ]] && return 1
|
||||
if [[ -f "${iso_dir}/${iso_file}" ]]; then
|
||||
msg2 "Removing existing bootable image..."
|
||||
rm -rf "${iso_dir}/${iso_file}"
|
||||
fi
|
||||
assemble_iso
|
||||
msg "Done [Build ISO]"
|
||||
}
|
||||
|
@@ -37,7 +37,7 @@ track_fs() {
|
||||
mount "$@" && FS_ACTIVE_MOUNTS=("$5" "${FS_ACTIVE_MOUNTS[@]}")
|
||||
}
|
||||
|
||||
mount_overlay(){
|
||||
mount_overlayfs(){
|
||||
FS_ACTIVE_MOUNTS=()
|
||||
local lower= upper="$1" work="$2"
|
||||
mkdir -p "${mnt_dir}/work"
|
||||
@@ -52,7 +52,7 @@ mount_overlay(){
|
||||
track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper"
|
||||
}
|
||||
|
||||
umount_overlay(){
|
||||
umount_overlayfs(){
|
||||
if [[ -n ${FS_ACTIVE_MOUNTS[@]} ]];then
|
||||
info "overlayfs umount: [%s]" "${FS_ACTIVE_MOUNTS[@]}"
|
||||
umount "${FS_ACTIVE_MOUNTS[@]}"
|
||||
|
@@ -19,7 +19,7 @@ error_function() {
|
||||
error "A failure occurred in %s()." "$func"
|
||||
plain "Aborting..."
|
||||
fi
|
||||
umount_overlay
|
||||
umount_overlayfs
|
||||
umount_img
|
||||
exit 2
|
||||
}
|
||||
@@ -41,7 +41,7 @@ run_safe() {
|
||||
trap_exit() {
|
||||
local sig=$1; shift
|
||||
error "$@"
|
||||
umount_overlay
|
||||
umount_overlayfs
|
||||
trap -- "$sig"
|
||||
kill "-$sig" "$$"
|
||||
}
|
||||
@@ -62,43 +62,6 @@ copy_overlay(){
|
||||
fi
|
||||
}
|
||||
|
||||
clean_up_image(){
|
||||
local path mnt="$1"
|
||||
msg2 "Cleaning [%s]" "${mnt##*/}"
|
||||
|
||||
path=$mnt/boot
|
||||
if [[ -d "$path" ]]; then
|
||||
find "$path" -name 'initramfs*.img' -delete &> /dev/null
|
||||
fi
|
||||
path=$mnt/var/lib/pacman/sync
|
||||
if [[ -d $path ]];then
|
||||
find "$path" -type f -delete &> /dev/null
|
||||
fi
|
||||
path=$mnt/var/cache/pacman/pkg
|
||||
if [[ -d $path ]]; then
|
||||
find "$path" -type f -delete &> /dev/null
|
||||
fi
|
||||
path=$mnt/var/log
|
||||
if [[ -d $path ]]; then
|
||||
find "$path" -type f -delete &> /dev/null
|
||||
fi
|
||||
path=$mnt/var/tmp
|
||||
if [[ -d $path ]];then
|
||||
find "$path" -mindepth 1 -delete &> /dev/null
|
||||
fi
|
||||
path=$mnt/tmp
|
||||
if [[ -d $path ]];then
|
||||
find "$path" -mindepth 1 -delete &> /dev/null
|
||||
fi
|
||||
find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete
|
||||
if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then
|
||||
rm $mnt/boot/grub/grub.cfg
|
||||
fi
|
||||
if [[ -f "$mnt/etc/machine-id" ]]; then
|
||||
rm $mnt/etc/machine-id
|
||||
fi
|
||||
}
|
||||
|
||||
make_rootfs() {
|
||||
if [[ ! -e ${work_dir}/rootfs.lock ]]; then
|
||||
msg "Prepare [Base installation] (rootfs)"
|
||||
@@ -110,9 +73,9 @@ make_rootfs() {
|
||||
|
||||
copy_overlay "${ROOT_OVERLAY}" "${rootfs}"
|
||||
|
||||
[[ -z ${LIVE_LIST} ]] && configure_image "${rootfs}"
|
||||
[[ -z ${LIVE_LIST} ]] && configure_chroot "${rootfs}"
|
||||
|
||||
clean_up_image "${rootfs}"
|
||||
clean_up_chroot "${rootfs}"
|
||||
|
||||
: > ${work_dir}/rootfs.lock
|
||||
|
||||
@@ -127,17 +90,17 @@ make_livefs() {
|
||||
|
||||
prepare_dir "${livefs}"
|
||||
|
||||
mount_overlay "${livefs}" "${work_dir}"
|
||||
mount_overlayfs "${livefs}" "${work_dir}"
|
||||
|
||||
basestrap "${basestrap_args[@]}" "${livefs}" "${packages[@]}"
|
||||
|
||||
copy_overlay "${LIVE_OVERLAY}" "${livefs}"
|
||||
|
||||
configure_image "${livefs}"
|
||||
configure_chroot "${livefs}"
|
||||
|
||||
umount_overlay
|
||||
umount_overlayfs
|
||||
|
||||
clean_up_image "${livefs}"
|
||||
clean_up_chroot "${livefs}"
|
||||
|
||||
: > ${work_dir}/livefs.lock
|
||||
|
||||
@@ -155,7 +118,7 @@ make_bootfs() {
|
||||
|
||||
local bootfs="${work_dir}/bootfs"
|
||||
|
||||
mount_overlay "${bootfs}" "${work_dir}"
|
||||
mount_overlayfs "${bootfs}" "${work_dir}"
|
||||
|
||||
if ${use_dracut}; then
|
||||
prepare_initramfs_dracut "${bootfs}"
|
||||
@@ -163,7 +126,7 @@ make_bootfs() {
|
||||
prepare_initramfs "${bootfs}"
|
||||
fi
|
||||
|
||||
umount_overlay
|
||||
umount_overlayfs
|
||||
|
||||
rm -R ${bootfs}
|
||||
: > ${work_dir}/bootfs.lock
|
||||
@@ -190,24 +153,3 @@ make_grub(){
|
||||
msg "Done [/iso/boot/grub]"
|
||||
fi
|
||||
}
|
||||
|
||||
compress_images(){
|
||||
local timer=$(get_timer)
|
||||
run_safe "make_iso"
|
||||
chown -R "${OWNER}:$(id --group ${OWNER})" "${iso_dir}"
|
||||
show_elapsed_time "${FUNCNAME}" "${timer}"
|
||||
}
|
||||
|
||||
prepare_images(){
|
||||
local timer=$(get_timer)
|
||||
load_pkgs "${ROOT_LIST}" "${INITSYS}"
|
||||
run_safe "make_rootfs"
|
||||
if [[ -n ${LIVE_LIST} ]]; then
|
||||
load_pkgs "${LIVE_LIST}" "${INITSYS}"
|
||||
run_safe "make_livefs"
|
||||
fi
|
||||
run_safe "make_bootfs"
|
||||
run_safe "make_grub"
|
||||
|
||||
show_elapsed_time "${FUNCNAME}" "${timer}"
|
||||
}
|
||||
|
185
lib/pkg/git.sh
Normal file
185
lib/pkg/git.sh
Normal file
@@ -0,0 +1,185 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (C) 2018-19 artoo@artixlinux.org
|
||||
# Copyright (C) 2018 Artix Linux Developers
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
get_local_head(){
|
||||
echo $(git log --pretty=%H ...refs/heads/master^ | head -n 1)
|
||||
}
|
||||
|
||||
get_remote_head(){
|
||||
echo $(git ls-remote origin -h refs/heads/master | cut -f1)
|
||||
}
|
||||
|
||||
clone_tree(){
|
||||
local timer=$(get_timer) url="$1" tree="$2" os="${3:-$(get_osname)}"
|
||||
|
||||
msg "Cloning %s (%s) ..." "$tree" "$os"
|
||||
|
||||
git clone $url/$tree.git
|
||||
show_elapsed_time "${FUNCNAME}" "${timer}"
|
||||
}
|
||||
|
||||
has_changes(){
|
||||
local head_l="$1" head_r="$2"
|
||||
if [[ "$head_l" == "$head_r" ]]; then
|
||||
msg2 "remote changes: no"
|
||||
return 1
|
||||
else
|
||||
msg2 "remote changes: yes"
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
pull_tree(){
|
||||
local tree="$1" local_head="$2" os="${3:-$(get_osname)}"
|
||||
local remote_head=$(get_remote_head)
|
||||
|
||||
msg "Checking (%s) (%s)" "${tree}" "$os"
|
||||
if has_changes "${local_head}" "${remote_head}";then
|
||||
git pull origin master
|
||||
fi
|
||||
}
|
||||
|
||||
push_tree(){
|
||||
local tree="$1"
|
||||
msg "Update (%s)" "${tree}"
|
||||
git push origin master
|
||||
}
|
||||
|
||||
write_jenkinsfile(){
|
||||
local pkg="$1"
|
||||
local jenkins=$pkg/Jenkinsfile
|
||||
|
||||
echo "@Library('artix-ci') import org.artixlinux.RepoPackage" > $jenkins
|
||||
echo '' >> $jenkins
|
||||
echo 'PackagePipeline(new RepoPackage(this))' >> $jenkins
|
||||
echo '' >> $jenkins
|
||||
|
||||
git add $jenkins
|
||||
}
|
||||
|
||||
write_agentyaml(){
|
||||
local pkg="$1"
|
||||
local agent=$pkg/.artixlinux/agent.yaml label='master'
|
||||
[[ -d $pkg/.artixlinux ]] || mkdir $pkg/.artixlinux
|
||||
|
||||
echo '%YAML 1.2' > $agent
|
||||
echo '---' >> $agent
|
||||
echo '' >> $agent
|
||||
echo "label: $label" >> $agent
|
||||
echo '' >> $agent
|
||||
|
||||
git add $agent
|
||||
}
|
||||
|
||||
commit_jenkins_files(){
|
||||
local pkg="$1"
|
||||
|
||||
write_jenkinsfile "$pkg"
|
||||
write_agentyaml "$pkg"
|
||||
|
||||
git commit -m "initial commit"
|
||||
}
|
||||
|
||||
config_tree(){
|
||||
local tree="$1"
|
||||
cd $tree
|
||||
git config --bool pull.rebase true
|
||||
git config commit.gpgsign true
|
||||
if [[ -n "${GPGKEY}" ]];then
|
||||
git config user.signingkey "${GPGKEY}"
|
||||
else
|
||||
warning "No GPGKEY configured in makepkg.conf!"
|
||||
fi
|
||||
cd ..
|
||||
}
|
||||
|
||||
# write_gitignore() {
|
||||
# local pkg="$1"
|
||||
# local gitignore=$pkg/.gitignore
|
||||
# echo '# ---> ArchLinuxPackages' > $gitignore
|
||||
# echo '*.tar' >> $gitignore
|
||||
# echo '*.tar.*' >> $gitignore
|
||||
# echo '*.jar' >> $gitignore
|
||||
# echo '*.exe' >> $gitignore
|
||||
# echo '*.msi' >> $gitignore
|
||||
# echo '*.zip' >> $gitignore
|
||||
# echo '*.tgz' >> $gitignore
|
||||
# echo '*.log' >> $gitignore
|
||||
# echo '*.log.*' >> $gitignore
|
||||
# echo '*.sig' >> $gitignore
|
||||
# echo '' >> $gitignore
|
||||
# echo 'pkg/' >> $gitignore
|
||||
# echo 'src/' >> $gitignore
|
||||
# echo '' >> $gitignore
|
||||
# echo '# ---> Archives' >> $gitignore
|
||||
# echo '*.7z' >> $gitignore
|
||||
# echo '*.rar' >> $gitignore
|
||||
# echo '*.gz' >> $gitignore
|
||||
# echo '*.bzip' >> $gitignore
|
||||
# echo '*.bz2' >> $gitignore
|
||||
# echo '*.xz' >> $gitignore
|
||||
# echo '*.lzma' >> $gitignore
|
||||
# echo '*.cab' >> $gitignore
|
||||
# echo '' >> $gitignore
|
||||
# echo '# ---> systemd' >> $gitignore
|
||||
# echo '*.service' >> $gitignore
|
||||
# echo '*.socket' >> $gitignore
|
||||
# echo '*.timer' >> $gitignore
|
||||
# echo '' >> $gitignore
|
||||
# echo '# ---> snap' >> $gitignore
|
||||
# echo '*.snap' >> $gitignore
|
||||
# echo '' >> $gitignore
|
||||
#
|
||||
# git add $gitignore
|
||||
# }
|
||||
#
|
||||
# write_readme(){
|
||||
# local pkg="$1"
|
||||
# local readme=$pkg/README.md
|
||||
#
|
||||
# echo "# $pkg" > $readme
|
||||
# echo '' >> $readme
|
||||
#
|
||||
# git add $readme
|
||||
# }
|
||||
#
|
||||
# subrepo_new2(){
|
||||
# local group="${1:-$GROUP}" team="${2:-$TEAM}"
|
||||
# local dest=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk
|
||||
#
|
||||
# cd ${TREE_DIR_ARTIX}/$group
|
||||
#
|
||||
# local org=$(get_pkg_org "${PACKAGE}")
|
||||
#
|
||||
# prepare_dir "$dest"
|
||||
#
|
||||
# subrepo_init "${PACKAGE}" "$org"
|
||||
#
|
||||
# commit_jenkins_files2 "${PACKAGE}"
|
||||
#
|
||||
# subrepo_push "${PACKAGE}"
|
||||
#
|
||||
# add_repo_to_team "${PACKAGE}" "$org" "$team"
|
||||
# }
|
||||
#
|
||||
# commit_jenkins_files2(){
|
||||
# local pkg="$1"
|
||||
#
|
||||
# write_jenkinsfile "$pkg"
|
||||
# write_agentyaml "$pkg"
|
||||
# write_readme "$pkg"
|
||||
# write_gitignore "$pkg"
|
||||
#
|
||||
# git commit -m "initial commit"
|
||||
# }
|
@@ -12,7 +12,7 @@
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
create_repo(){
|
||||
create_repo() {
|
||||
local pkg="$1" org="$2"
|
||||
local gitname=$(get_compliant_name "$pkg")
|
||||
local json="{ \"auto_init\": true, \"name\":\"$gitname\", \"gitignores\":\"ArchLinuxPackages\", \"readme\": \"Default\" }"
|
||||
@@ -27,33 +27,16 @@ create_repo(){
|
||||
echo
|
||||
}
|
||||
|
||||
delete_repo(){
|
||||
local pkg="$1" org="$2"
|
||||
local gitname=$(get_compliant_name "$pkg")
|
||||
|
||||
msg2 "Delete package repo [%s] in org (%s)" "${pkg}" "${org}"
|
||||
|
||||
curl -s -X DELETE "${GIT_URL}/api/v1/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
|
||||
-H "accept: application/json"
|
||||
}
|
||||
|
||||
load_team_id(){
|
||||
local org="$1" team="$2" id=0
|
||||
|
||||
local ids=($(curl -s -X GET "${GIT_URL}/api/v1/orgs/$org/teams?access_token=${GIT_TOKEN}" \
|
||||
-H "accept: application/json" | jshon -a -e id))
|
||||
|
||||
case $team in
|
||||
packages) id="${ids[2]}" ;;
|
||||
community) id="${ids[1]}" ;;
|
||||
esac
|
||||
|
||||
get_team_id() {
|
||||
local org="$1" team="$2"
|
||||
local id=$(curl -s -X GET "${GIT_URL}/api/v1/orgs/$org/teams/search?q=$team&access_token=${GIT_TOKEN}" \
|
||||
-H "accept: application/json" | jq '.data[] .id')
|
||||
echo $id
|
||||
}
|
||||
|
||||
add_repo_to_team(){
|
||||
add_repo_to_team() {
|
||||
local pkg="$1" org="$2" team="$3"
|
||||
local id=$(load_team_id "$org" "$team")
|
||||
local id=$(get_team_id "$org" "$team")
|
||||
local gitname=$(get_compliant_name "$pkg")
|
||||
|
||||
msg2 "Adding package repo [%s] to team (%s)" "$gitname" "$team"
|
||||
@@ -61,3 +44,14 @@ add_repo_to_team(){
|
||||
curl -s -X PUT "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
|
||||
-H "accept: application/json"
|
||||
}
|
||||
|
||||
remove_repo_from_team() {
|
||||
local pkg="$1" org="$2" team="$3"
|
||||
local id=$(get_team_id "$org" "$team")
|
||||
local gitname=$(get_compliant_name "$pkg")
|
||||
|
||||
msg2 "Removing package repo [%s] from team (%s)" "$gitname" "$team"
|
||||
|
||||
curl -s -X DELETE "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
|
||||
-H "accept: application/json"
|
||||
}
|
||||
|
@@ -12,14 +12,6 @@
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
get_local_head(){
|
||||
echo $(git log --pretty=%H ...refs/heads/master^ | head -n 1)
|
||||
}
|
||||
|
||||
get_remote_head(){
|
||||
echo $(git ls-remote origin -h refs/heads/master | cut -f1)
|
||||
}
|
||||
|
||||
get_pkg_org(){
|
||||
local pkg="$1" org= sub=
|
||||
case ${pkg} in
|
||||
@@ -31,111 +23,34 @@ get_pkg_org(){
|
||||
echo $org
|
||||
}
|
||||
|
||||
subrepo_init() {
|
||||
local pkg="$1" org="$2"
|
||||
local gitname=$(get_compliant_name "$pkg")
|
||||
msg2 "Subrepo init (%s)" "$pkg"
|
||||
git subrepo init "$pkg" -r gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git
|
||||
}
|
||||
|
||||
subrepo_push(){
|
||||
local pkg="$1"
|
||||
msg2 "Push (%s)" "$pkg"
|
||||
msg2 "Subrepo push (%s)" "$pkg"
|
||||
git subrepo push "$pkg"
|
||||
}
|
||||
|
||||
subrepo_clean(){
|
||||
local pkg="$1"
|
||||
msg2 "Clean (%s)" "$pkg"
|
||||
msg2 "Subrepo clean (%s)" "$pkg"
|
||||
git subrepo clean "$pkg"
|
||||
}
|
||||
|
||||
subrepo_pull(){
|
||||
local pkg="$1"
|
||||
msg2 "Pull (%s)" "$pkg"
|
||||
msg2 "Subrepo pull (%s)" "$pkg"
|
||||
git subrepo pull "$pkg"
|
||||
}
|
||||
|
||||
subrepo_clone(){
|
||||
local pkg="$1" org="$2"
|
||||
local gitname=$(get_compliant_name "$pkg")
|
||||
msg2 "Clone [%s] from (%s)" "$pkg" "$org/$gitname"
|
||||
msg2 "Subrepo clone [%s] from (%s)" "$pkg" "$org/$gitname"
|
||||
git subrepo clone gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git "$pkg"
|
||||
}
|
||||
|
||||
clone_tree(){
|
||||
local timer=$(get_timer) url="$1" tree="$2" os="${3:-$(get_osname)}"
|
||||
|
||||
msg "Cloning %s (%s) ..." "$tree" "$os"
|
||||
|
||||
git clone $url/$tree.git
|
||||
show_elapsed_time "${FUNCNAME}" "${timer}"
|
||||
}
|
||||
|
||||
has_changes(){
|
||||
local head_l="$1" head_r="$2"
|
||||
if [[ "$head_l" == "$head_r" ]]; then
|
||||
msg2 "remote changes: no"
|
||||
return 1
|
||||
else
|
||||
msg2 "remote changes: yes"
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
pull_tree(){
|
||||
local tree="$1" local_head="$2" os="${3:-$(get_osname)}"
|
||||
local remote_head=$(get_remote_head)
|
||||
|
||||
msg "Checking %s (%s)" "${tree}" "$os"
|
||||
if has_changes "${local_head}" "${remote_head}";then
|
||||
git pull origin master
|
||||
fi
|
||||
}
|
||||
|
||||
push_tree(){
|
||||
local tree="$1"
|
||||
msg "Update (%s)" "${tree}"
|
||||
git push origin master
|
||||
}
|
||||
|
||||
write_jenkinsfile(){
|
||||
local pkg="$1"
|
||||
local jenkins=$pkg/Jenkinsfile
|
||||
|
||||
echo "@Library('artix-ci') import org.artixlinux.RepoPackage" > $jenkins
|
||||
echo '' >> $jenkins
|
||||
echo 'PackagePipeline(new RepoPackage(this))' >> $jenkins
|
||||
echo '' >> $jenkins
|
||||
|
||||
git add $jenkins
|
||||
}
|
||||
|
||||
write_agentyaml(){
|
||||
local pkg="$1"
|
||||
local agent=$pkg/.artixlinux/agent.yaml label='master'
|
||||
[[ -d $pkg/.artixlinux ]] || mkdir $pkg/.artixlinux
|
||||
|
||||
echo '%YAML 1.2' > $agent
|
||||
echo '---' >> $agent
|
||||
echo '' >> $agent
|
||||
echo "label: $label" >> $agent
|
||||
echo '' >> $agent
|
||||
|
||||
git add $agent
|
||||
}
|
||||
|
||||
commit_jenkins_files(){
|
||||
local pkg="$1"
|
||||
|
||||
write_jenkinsfile "$pkg"
|
||||
write_agentyaml "$pkg"
|
||||
|
||||
git commit -m "add jenkinsfile & .artixlinux/agent.yaml"
|
||||
}
|
||||
|
||||
config_tree(){
|
||||
local tree="$1"
|
||||
cd $tree
|
||||
git config --bool pull.rebase true
|
||||
git config commit.gpgsign true
|
||||
if [[ -n "${GPGKEY}" ]];then
|
||||
git config user.signingkey "${GPGKEY}"
|
||||
else
|
||||
warning "No GPGKEY configured in makepkg.conf!"
|
||||
fi
|
||||
cd ..
|
||||
}
|
||||
|
158
lib/pkg/util.sh
158
lib/pkg/util.sh
@@ -12,6 +12,30 @@
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
shopt -s extglob
|
||||
|
||||
declare -A REPOS=(
|
||||
[core]=system
|
||||
[extra]=world
|
||||
[community]=galaxy
|
||||
[multilib]=lib32
|
||||
[testing]=gremlins
|
||||
[staging]=goblins
|
||||
[community-testing]=galaxy-gremlins
|
||||
[community-staging]=galaxy-goblins
|
||||
[multilib-testing]=lib32-gremlins
|
||||
[multilib-staging]=lib32-goblins
|
||||
[kde-unstable]=kde-wobble
|
||||
[gnome-unstable]=gnome-wobble
|
||||
)
|
||||
|
||||
ARCH_REPOS=(
|
||||
core
|
||||
extra
|
||||
community
|
||||
multilib
|
||||
)
|
||||
|
||||
get_compliant_name(){
|
||||
local gitname="$1"
|
||||
case $gitname in
|
||||
@@ -20,64 +44,7 @@ get_compliant_name(){
|
||||
echo $gitname
|
||||
}
|
||||
|
||||
arch2artix(){
|
||||
local repo="$1" artix=none
|
||||
case "$repo" in
|
||||
core) artix=system ;;
|
||||
extra) artix=world ;;
|
||||
community) artix=galaxy ;;
|
||||
multilib) artix=lib32 ;;
|
||||
staging) artix=goblins ;;
|
||||
testing) artix=gremlins ;;
|
||||
community-staging) artix=galaxy-goblins ;;
|
||||
community-testing) artix=galaxy-gremlins ;;
|
||||
multilib-staging) artix=lib32-goblins ;;
|
||||
multilib-testing) artix=lib32-gremlins ;;
|
||||
kde-unstable) artix=kde-wobble ;;
|
||||
gnome-unstable) artix=gnome-wobble ;;
|
||||
esac
|
||||
echo $artix
|
||||
}
|
||||
|
||||
find_tree(){
|
||||
local tree="$1" pkg="$2"
|
||||
local result=$(find $tree -mindepth 2 -maxdepth 2 -type d -name "$pkg")
|
||||
result=${result%/*}
|
||||
echo ${result##*/}
|
||||
}
|
||||
|
||||
arch_repos(){
|
||||
local stag="$1" unst="$2"
|
||||
local repos=(core extra testing community community-testing multilib multilib-testing)
|
||||
|
||||
$stag && repos+=(staging community-staging multilib-staging)
|
||||
$unst && repos+=(gnome-unstable kde-unstable)
|
||||
|
||||
echo ${repos[@]}
|
||||
}
|
||||
|
||||
find_repo(){
|
||||
local pkg="$1" stag="$2" unst="$3" repo=
|
||||
|
||||
for r in $(arch_repos "$stag" "$unst");do
|
||||
[[ -f $pkg/repos/$r-${ARCH}/PKGBUILD ]] && repo=$r-${ARCH}
|
||||
[[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any
|
||||
done
|
||||
echo $repo
|
||||
}
|
||||
|
||||
is_valid_repo(){
|
||||
local src="$1" cases=
|
||||
for r in $(arch_repos true true);do
|
||||
cases=${cases:-}${cases:+|}${r}
|
||||
done
|
||||
eval "case $src in
|
||||
${cases}|trunk) return 0 ;;
|
||||
*) return 1 ;;
|
||||
esac"
|
||||
}
|
||||
|
||||
get_cases(){
|
||||
get_group_packages(){
|
||||
local pkglist="${SYSCONFDIR}/pkglist.d/$1.list"
|
||||
|
||||
local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g"
|
||||
@@ -91,40 +58,55 @@ get_cases(){
|
||||
echo $cases
|
||||
}
|
||||
|
||||
get_artix_tree(){
|
||||
local pkg="$1" artix_tree="${2:-$3}" tree
|
||||
get_group(){
|
||||
local pkg="$1" fallback="${2##*/}" tree=
|
||||
eval "case $pkg in
|
||||
$(get_cases kernel)) tree=packages-kernel ;;
|
||||
$(get_cases python)) tree=packages-python ;;
|
||||
$(get_cases perl)) tree=packages-perl ;;
|
||||
$(get_cases ruby)) tree=packages-ruby ;;
|
||||
$(get_cases openrc)) tree=packages-openrc ;;
|
||||
$(get_cases runit)) tree=packages-runit ;;
|
||||
$(get_cases s6)) tree=packages-s6 ;;
|
||||
$(get_cases media)) tree=packages-media ;;
|
||||
$(get_cases xorg)) tree=packages-xorg ;;
|
||||
$(get_cases qt5)) tree=packages-qt5 ;;
|
||||
$(get_cases gtk)) tree=packages-gtk ;;
|
||||
$(get_cases java)) tree=packages-java ;;
|
||||
$(get_cases haskell)) tree=packages-haskell ;;
|
||||
$(get_cases devel)) tree=packages-devel ;;
|
||||
$(get_cases lxqt)) tree=packages-lxqt ;;
|
||||
$(get_cases cinnamon)) tree=packages-cinnamon ;;
|
||||
$(get_cases kde)) tree=packages-kde ;;
|
||||
$(get_cases gnome)) tree=packages-gnome ;;
|
||||
$(get_cases mate)) tree=packages-mate ;;
|
||||
$(get_cases xfce)) tree=packages-xfce ;;
|
||||
*) tree=$artix_tree
|
||||
$(get_group_packages kernel)) tree=packages-kernel ;;
|
||||
$(get_group_packages python)) tree=packages-python ;;
|
||||
$(get_group_packages perl)) tree=packages-perl ;;
|
||||
$(get_group_packages ruby)) tree=packages-ruby ;;
|
||||
$(get_group_packages openrc)) tree=packages-openrc ;;
|
||||
$(get_group_packages runit)) tree=packages-runit ;;
|
||||
$(get_group_packages s6)) tree=packages-s6 ;;
|
||||
$(get_group_packages media)) tree=packages-media ;;
|
||||
$(get_group_packages xorg)) tree=packages-xorg ;;
|
||||
$(get_group_packages qt5)) tree=packages-qt5 ;;
|
||||
$(get_group_packages gtk)) tree=packages-gtk ;;
|
||||
$(get_group_packages java)) tree=packages-java ;;
|
||||
$(get_group_packages haskell)) tree=packages-haskell ;;
|
||||
$(get_group_packages devel)) tree=packages-devel ;;
|
||||
$(get_group_packages lxqt)) tree=packages-lxqt ;;
|
||||
$(get_group_packages cinnamon)) tree=packages-cinnamon ;;
|
||||
$(get_group_packages kde)) tree=packages-kde ;;
|
||||
$(get_group_packages gnome)) tree=packages-gnome ;;
|
||||
$(get_group_packages mate)) tree=packages-mate ;;
|
||||
$(get_group_packages xfce)) tree=packages-xfce ;;
|
||||
*) tree=$fallback ;;
|
||||
esac"
|
||||
echo $tree
|
||||
}
|
||||
|
||||
get_import_path(){
|
||||
local pkg="$1" import_path=
|
||||
for tree in ${TREE_NAMES_ARCH[@]};do
|
||||
[[ -d ${TREE_DIR_ARCH}/$tree/$pkg/repos ]] && import_path=${TREE_DIR_ARCH}/$tree/$pkg
|
||||
set_arch_repos(){
|
||||
local x="$1" y="$2" z="$3"
|
||||
|
||||
$x && ARCH_REPOS+=(testing community-testing multilib-testing)
|
||||
$y && ARCH_REPOS+=(staging community-staging multilib-staging)
|
||||
$z && ARCH_REPOS+=(gnome-unstable kde-unstable)
|
||||
}
|
||||
|
||||
find_repo(){
|
||||
local pkg="$1" repo=
|
||||
for r in ${ARCH_REPOS[@]};do
|
||||
[[ -f $pkg/repos/$r-${ARCH}/PKGBUILD ]] && repo=$r-${ARCH}
|
||||
[[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any
|
||||
done
|
||||
echo $import_path
|
||||
echo $repo
|
||||
}
|
||||
|
||||
find_pkg(){
|
||||
local searchdir="$1" pkg="$2"
|
||||
local result=$(find $searchdir -mindepth 2 -maxdepth 2 -type d -name "$pkg")
|
||||
echo $result
|
||||
}
|
||||
|
||||
pkgver_equal() {
|
||||
@@ -145,7 +127,7 @@ find_cached_package() {
|
||||
for dir in "${searchdirs[@]}"; do
|
||||
[[ -d $dir ]] || continue
|
||||
|
||||
for pkg in "$dir"/*.pkg.tar.?z; do
|
||||
for pkg in "$dir"/*.pkg.tar?(.!(sig|*.*)); do
|
||||
[[ -f $pkg ]] || continue
|
||||
|
||||
# avoid adding duplicates of the same inode
|
||||
@@ -155,7 +137,7 @@ find_cached_package() {
|
||||
|
||||
# split apart package filename into parts
|
||||
pkgbasename=${pkg##*/}
|
||||
pkgbasename=${pkgbasename%.pkg.tar.?z}
|
||||
pkgbasename=${pkgbasename%.pkg.tar*}
|
||||
|
||||
arch=${pkgbasename##*-}
|
||||
pkgbasename=${pkgbasename%-"$arch"}
|
||||
|
@@ -34,7 +34,10 @@ for baselib in ${LIBDIR}/base/*.sh; do
|
||||
. $baselib
|
||||
done
|
||||
|
||||
prepare_dir "${USER_CONF_DIR}"
|
||||
prepare_artools(){
|
||||
prepare_dir "${WORKSPACE_DIR}"
|
||||
prepare_dir "${USER_CONF_DIR}"
|
||||
}
|
||||
|
||||
load_base_config(){
|
||||
|
||||
@@ -50,8 +53,6 @@ load_base_config(){
|
||||
|
||||
WORKSPACE_DIR=${WORKSPACE_DIR:-"/home/${OWNER}/artools-workspace"}
|
||||
|
||||
prepare_dir "${WORKSPACE_DIR}"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
@@ -30,8 +30,6 @@ load_iso_config(){
|
||||
|
||||
ISO_POOL=${ISO_POOL:-"${WORKSPACE_DIR}/iso"}
|
||||
|
||||
prepare_dir "${ISO_POOL}"
|
||||
|
||||
PROFILE='base'
|
||||
|
||||
ISO_VERSION=${ISO_VERSION:-"$(date +%Y%m%d)"}
|
||||
|
Reference in New Issue
Block a user