Compare commits

...

17 Commits
0.17.4 ... 0.19

Author SHA1 Message Date
98ad5abd88 dpcker: upd pacman.conf 2020-06-08 02:15:45 +02:00
660a7025a7 add docker data 2020-06-08 02:10:01 +02:00
f5daac0d67 commitpkg: commit removal of obsolete arch 2020-05-28 20:12:33 +02:00
2484ea39a4 commitpkg: support are change when moving 2020-05-28 15:54:43 +02:00
9b222bdb83 commitpkg: rm old arch on change of arch
signpkg: tweak msg
2020-05-28 10:39:19 +02:00
a3e6b17c5f deploypkg: add xz compat 2020-05-25 22:49:27 +02:00
21a37f6b00 buildtree: quote vars 2020-05-25 22:10:26 +02:00
80416b76d5 buildtree: fix import for new pkgs 2020-05-25 21:01:05 +02:00
2113ffe4c6 newrepo (#29)
buildtree: only -n creates repos

buildtree: move msg in sync func

buildtree: deprecate pkglists
2020-05-25 18:29:24 +02:00
438473c878 quote vars 2020-05-25 00:14:17 +02:00
86c5c2f47b rm signfile 2020-05-24 19:06:51 +02:00
d333c245c0 next (#28)
deploypkg: fix return codes

deploypkg: only remocve if pkg is in repo

deploypkg: refactor

move unique funcs to script

signpkg: fix typo

minor tweaks
rm commented code

signpkg: load makepkg.conf

buildpkg & deploypkg: add optarg to set repo, proves to be better in pipeline to generate cmd args
add signpkg

start 0.18

deploypkg: add sign check
2020-05-24 11:15:25 +02:00
4a650f00d7 Merge pull request 's6: use database names instead of directory names' (#27) from Dudemanguy/artools:master into master 2020-04-28 17:52:27 +02:00
08b73032a2 buildtree: add gfx group 2020-04-28 17:51:53 +02:00
1a250c2167 s6: use database names instead of directory names
It's possible for a service in s6 to exist but for its name to not
actually be the same as the name of an existing directory (ex: a
pipeline of a logger and service daemon). Instead, rework this function
to detect if a service exists based on whether it is defined in the
s6-rc database.
2020-04-27 16:42:58 -05:00
46431619f2 chroot-run: don't sync tz 2020-04-26 18:49:48 +02:00
12d2159c12 deploypkg: exclude *.log 2020-04-26 18:49:23 +02:00
16 changed files with 332 additions and 279 deletions

View File

@@ -1,4 +1,4 @@
VERSION=0.17
VERSION=0.19
CHROOT_VERSION=0.10
@@ -14,7 +14,6 @@ BASE_CONF = \
data/conf/artools-base.conf
BASE_BIN = \
bin/base/signfile \
bin/base/chroot-run \
bin/base/mkchroot \
bin/base/basestrap \
@@ -45,7 +44,8 @@ PKG_BIN = \
bin/pkg/checkpkg \
bin/pkg/finddeps \
bin/pkg/find-libdeps \
bin/pkg/batchpkg
bin/pkg/batchpkg \
bin/pkg/signpkg
LN_COMMITPKG = \
extrapkg \
@@ -116,6 +116,11 @@ ISO_LIBS = \
ISO_UTIL = lib/util-iso.sh
DOCKER_DATA = \
data/docker/pacman-docker.conf
DOCKER_ALPM = \
data/docker/package-cleanup.hook
DIRMODE = -dm0755
FILEMODE = -m0644
@@ -154,6 +159,13 @@ $(BIN): %: %.in Makefile
clean:
$(RM) $(BIN) $(UTIL)
install_docker:
install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)
install $(FILEMODE) $(DOCKER_DATA) $(DESTDIR)$(DATADIR)/$(TOOLS)
install $(DIRMODE) $(DESTDIR)$(DATADIR)/libalpm/hooks
install $(FILEMODE) $(DOCKER_ALPM) $(DESTDIR)$(DATADIR)/libalpm/hooks
install_base:
install $(DIRMODE) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
install $(FILEMODE) $(BASE_CONF) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)

View File

@@ -147,7 +147,7 @@ elif [[ $(cat "$working_dir/.artools") != ${CHROOTVERSION} ]]; then
die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "${CHROOTVERSION}"
fi
sync_host_localtime
#sync_host_localtime
chroot_api_mount "${working_dir}" || die "failed to setup API filesystems in chroot %s" "${working_dir}"

View File

@@ -1,32 +0,0 @@
#!/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.
. @libdir@/artools/util-base.sh
load_makepkg_config
file_to_sign="$1"
if [ ! -e "$1" ]; then
error "%s does not exist!" "$file_to_sign"
exit 1
fi
if [[ -n "${BUILDBOT_GPGP}" ]]; then
msg2 "Signing [%s]" "${file_to_sign##*/}"
gpg --batch --passphrase "${BUILDBOT_GPGP}" --detach-sign "$file_to_sign"
else
msg2 "Signing [%s] with key %s" "${file_to_sign##*/}" "${GPGKEY}..."
gpg --detach-sign --use-agent -u "${GPGKEY}" "$file_to_sign"
fi

View File

@@ -30,6 +30,7 @@ base_devel=('base-devel')
usage() {
echo "Usage: ${0##*/} [options] -- [mkchrootpkg_args]"
echo " -r <dir> Create chroots in this directory"
echo " -d <dir> Destination repo chroot"
echo ' -c Recreate the chroot before building'
echo ' -m Major rebuild'
echo ' -N Disable check() function'
@@ -43,11 +44,12 @@ usage() {
orig_argv=("$0" "$@")
opts='hcCNmr:'
opts='hcCNmr:d:'
while getopts "${opts}" arg; do
case "${arg}" in
r) CHROOTS_PKG="$OPTARG" ;;
d) repo="$OPTARG" ;;
c) create_first=true ;;
m) rebuild=true ;;
C) is_checkpkg=true; mkchrootpkg_args+=(-C) ;;

View File

@@ -85,7 +85,7 @@ pull_tree_artix(){
sync_pkg(){
local rsync_args=(-aWxvci --progress --delete-before --no-R --no-implied-dirs)
local src="$1" dest="$2"
msg "Sync from Arch [%s] to Artix [%s]" "${src##*archlinux/}" "${dest##*artixlinux/}"
rsync "${rsync_args[@]}" $src/ $dest/
}
@@ -111,84 +111,21 @@ show_deps(){
}
subrepo_new(){
local group="${1:-$GROUP}" team="${2:-$TEAM}"
local dest=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk
cd ${TREE_DIR_ARTIX}/$group
msg2 "team: %s" "$team"
msg2 "group: %s" "$group"
cd ${TREE_DIR_ARTIX}/${GROUP}
local org=$(get_pkg_org "${PACKAGE}")
create_repo "${PACKAGE}" "$org"
add_repo_to_team "${PACKAGE}" "$org" "$team"
add_repo_to_team "${PACKAGE}" "$org" "${TEAM}"
subrepo_clone "${PACKAGE}" "$org"
prepare_dir "$dest"
prepare_dir "${TREE_DIR_ARTIX}/${GROUP}/${PACKAGE}/trunk"
commit_jenkins_files "${PACKAGE}"
}
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"
local pkgs=($(sed "$_com_rm" "$pkglist" | sed "$_space" | sed "$_clean"))
local cases=
for p in ${pkgs[@]};do
cases=${cases:-}${cases:+|}${p}
done
echo $cases
}
get_group(){
local pkg="$1" fallback="${2##*/}" tree=
eval "case $pkg in
$(get_group_packages kernel)) tree=packages-kernel ;;
$(get_group_packages net)) tree=packages-net ;;
$(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 ;;
$(get_group_packages wm)) tree=packages-wm ;;
*) tree=$fallback ;;
esac"
echo $tree
}
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}
@@ -196,33 +133,23 @@ from_arch(){
[[ -z $srcpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
local repo=$(find_repo "$srcpath")
archpath=$srcpath/repos/$repo
local artixpath=$(find_pkg ${TREE_DIR_ARTIX} ${PACKAGE})
local tree=${srcpath%/*}
local tree=${tree##*/}
local group=$(get_group "${PACKAGE}" "$tree")
msg "repo: %s" "$repo"
artixpath=$artixpath/trunk
local archpath=$srcpath/repos/$repo
local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
show_deps "$archpath"
if [[ -f $artixpath/PKGBUILD ]];then
if [[ -f "$artixpath"/.gitrepo ]]; then
artixpath="$artixpath"/trunk
. $artixpath/PKGBUILD 2>/dev/null
local artixver=$(get_full_version)
msg2 "Artix Version: %s" "$artixver"
if [[ -d "$artixpath" ]];then
sync_pkg "$archpath" "$artixpath"
patch_pkg "$artixpath"
fi
else
artixpath=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk
subrepo_new "${group}" "$(get_team $repo)"
die "Package '%s' does not exist!" "${PACKAGE}"
fi
msg "Sync (%s) from Arch [%s] to Artix [%s]" "${PACKAGE}" "${archpath##*archlinux/}" "${artixpath##*artixlinux/}"
sync_pkg "$archpath" "$artixpath"
patch_pkg "$artixpath"
}
view_build(){
@@ -237,7 +164,7 @@ view_build(){
check_tree(){
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 artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
local group=${artixpath%/*}
msg "group: %s" "${group##*/}"
@@ -288,7 +215,7 @@ usage() {
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 ' -n New remote subrepo and clone it'
echo ' -v Check if a package is in the artix tree(s)'
echo ' -c View package depends'
echo ' -x Exclude testing (only with -i)'

View File

@@ -18,6 +18,68 @@ shopt -s extglob
load_makepkg_config
pkgver_equal() {
if [[ $1 = *-* && $2 = *-* ]]; then
# if both versions have a pkgrel, then they must be an exact match
[[ $1 = "$2" ]]
else
# otherwise, trim any pkgrel and compare the bare version.
[[ ${1%%-*} = "${2%%-*}" ]]
fi
}
find_cached_package() {
local searchdirs=("$PKGDEST" "$PWD") results=()
local targetname=$1 targetver=$2 targetarch=$3
local dir pkg pkgbasename name ver rel arch r results
for dir in "${searchdirs[@]}"; do
[[ -d $dir ]] || continue
for pkg in "$dir"/*.pkg.tar?(.!(sig|*.*)); do
[[ -f $pkg ]] || continue
# avoid adding duplicates of the same inode
for r in "${results[@]}"; do
[[ $r -ef $pkg ]] && continue 2
done
# split apart package filename into parts
pkgbasename=${pkg##*/}
pkgbasename=${pkgbasename%.pkg.tar*}
arch=${pkgbasename##*-}
pkgbasename=${pkgbasename%-"$arch"}
rel=${pkgbasename##*-}
pkgbasename=${pkgbasename%-"$rel"}
ver=${pkgbasename##*-}
name=${pkgbasename%-"$ver"}
if [[ $targetname = "$name" && $targetarch = "$arch" ]] &&
pkgver_equal "$targetver" "$ver-$rel"; then
results+=("$pkg")
fi
done
done
case ${#results[*]} in
0)
return 1
;;
1)
printf '%s\n' "${results[0]}"
return 0
;;
*)
error 'Multiple packages found:'
printf '\t%s\n' "${results[@]}" >&2
return 1
;;
esac
}
usage() {
cat <<- _EOF_
Usage: ${BASH_SOURCE[0]##*/} [OPTIONS]

View File

@@ -26,7 +26,11 @@ get_path(){
}
prepare_commit(){
local dest="$1"
local dest="$1" to_rm="${2:-none}"
if [[ -d repos/$to_rm ]]; then
git rm -r repos/$to_rm
git commit -m "change of package arch"
fi
[[ -d repos/$dest ]] && git rm -r repos/$dest
[[ ! -d repos ]] && mkdir repos
[[ ! -d repos/$dest ]] && mkdir repos/$dest
@@ -101,6 +105,15 @@ commit_pkg(){
fi
}
get_rm_arch(){
local rm_arch='none'
case "$CARCH" in
'any') rm_arch="${REPO_DEST}-x86_64" ;;
'x86_64') rm_arch="${REPO_DEST}-any" ;;
esac
echo $rm_arch
}
repo_commit_pkg(){
local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
if [[ -n ${artixpath} ]];then
@@ -124,7 +137,7 @@ repo_commit_pkg(){
local action='add'
local dest="${REPO_DEST}-$CARCH"
prepare_commit "$dest"
prepare_commit "$dest" "$(get_rm_arch)"
cp trunk/* repos/$dest/
else
@@ -132,7 +145,7 @@ repo_commit_pkg(){
local src="${REPO_SRC}-$CARCH" dest="${REPO_DEST}-$CARCH"
[[ ! -f repos/$src/PKGBUILD ]] && die "%s does not exist!" "repos/$src/PKGBUILD"
prepare_commit "$dest"
prepare_commit "$dest" "$(get_rm_arch)"
cp repos/$src/* repos/$dest/
git rm -r repos/$src

View File

@@ -16,35 +16,11 @@
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 "$search.*" ! -path '*.sig')
done
case ${#results[*]} in
0)
return 1
;;
1)
printf '%s\n' "${results[0]}"
return 0
;;
*)
error 'Multiple packages found:'
printf '\t%s\n' "${results[@]}" >&2
return 1
;;
esac
}
get_pkgbasename(){
local pkg="$1"
local pkgbasename name ver rel arch
pkgbasename=${pkg%.pkg.tar.?z}
pkgbasename=${pkg%.pkg.tar*}
arch=${pkgbasename##*-}
pkgbasename=${pkgbasename%-"$arch"}
@@ -57,86 +33,41 @@ get_pkgbasename(){
echo $name
}
update_repo2(){
local repo="$1"
local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
for name in ${passfiles[@]}; do
if pkgfile=$(find_cached_pkgfile "$name");then
info "Found: %s" "$name"
if ${add_pkg};then
local action='add'
packages+=("$name")
if ${sign_pkg};then
[[ -e ${pkgfile}.sig ]] && rm ${pkgfile}.sig
signfile ${pkgfile}
fi
ln -sf ${pkgfile}{,.sig} $repo_path/
elif ${del_pkg};then
local action='remove'
packages+=("$(get_pkgbasename "$name")")
[[ -e $repo_path/$name ]] && rm $repo_path/$name
[[ -e $repo_path/$name.sig ]] && rm $repo_path/$name.sig
fi
fi
done
cd $repo_path
if [[ -n $action ]]; then
repo-$action -R $repo.${PKGDBEXT} ${packages[@]}
${linksdb} && links-$action $repo.${LINKSDBEXT} ${packages[@]}
fi
return 0
add(){
packages+=("$pkg.$ext")
action='add'
ln -sf "${pkgfile}"{,.sig} "$repo_path"/
}
update_repo(){
local repo="$1" pkgfile ver
local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
remove(){
local to_remove=$(get_pkgbasename "$pkg.$ext")
packages+=("$to_remove")
action='remove'
rm "$repo_path"/"$to_remove"*pkg.tar*
}
. PKGBUILD
local pkgsearch=(${pkgname[@]})
if check_option "debug" "y"; then
pkgbase=${pkgbase:-${pkgname[@]}}
pkgsearch+=("${pkgbase}-debug")
fi
for name in ${pkgsearch[@]}; do
pkgarch=$(get_pkg_arch "$name")
ver=$(get_full_version)
if pkgfile=$(find_cached_package "$name" "$ver" "$pkgarch");then
local pkg=${pkgfile##*/}
info "Found: %s" "$pkg"
if ${add_pkg};then
local action='add'
packages+=("$pkg")
if ${sign_pkg};then
[[ -e ${pkgfile}.sig ]] && rm ${pkgfile}.sig
signfile ${pkgfile}
fi
ln -sf ${pkgfile}{,.sig} $repo_path/
elif ${del_pkg};then
local action='remove'
packages+=("$name")
[[ -e $repo_path/$pkg ]] && rm $repo_path/$pkg
[[ -e $repo_path/$pkg.sig ]] && rm $repo_path/$pkg.sig
repo_action(){
local packages=() action= func="$1"
for pkgname in ${passfiles[@]}; do
pkg=${pkgname%.*}
for ext in zst xz;do
if pkgfile=$(find_cached_pkgfile "$pkg.$ext");then
msg "Found: %s" "${pkgfile}"
"$func"
fi
fi
done
done
cd $repo_path
if [[ -n $action ]]; then
repo-$action -R $repo.${PKGDBEXT} ${packages[@]}
${linksdb} && links-$action $repo.${LINKSDBEXT} ${packages[@]}
if [[ -n "$action" ]]; then
repo-"$action" -R "${dest_repo}"."${PKGDBEXT}" "${packages[@]}"
${linksdb} && links-"$action" "${dest_repo}"."${LINKSDBEXT}" "${packages[@]}"
fi
return 0
}
load_makepkg_config
add_pkg=false
del_pkg=false
sign_pkg=false
rm_pkg=false
linksdb=false
cmd=${0##*/}
@@ -144,24 +75,24 @@ dest_repo=${cmd#*-}
usage() {
echo "Usage: ${cmd} [options]"
echo ' -d <dest> Destination repository'
echo ' -a Add package(s) to repository'
echo ' -r Remove package(s) from repository'
echo ' -l Use links db'
echo ' -s Sign package(s)'
echo ' -h This help'
echo ''
echo ''
exit $1
}
opts='arlsh'
opts='arlhd:'
while getopts "${opts}" arg; do
case "${arg}" in
a) add_pkg=true; del_pkg=false ;;
r) del_pkg=true; add_pkg=false ;;
d) dest_repo="$OPTARG" ;;
a) add_pkg=true; rm_pkg=false ;;
r) rm_pkg=true; add_pkg=false ;;
l) linksdb=true ;;
s) sign_pkg=true ;;
h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac
@@ -173,8 +104,13 @@ passfiles="$@"
prepare_dir "${REPOS_ROOT}"
repo_path=${REPOS_ROOT}/${dest_repo}/os/${ARCH}
if [[ -n ${passfiles[@]} ]]; then
update_repo2 "${dest_repo}"
else
update_repo "${dest_repo}"
if ${add_pkg}; then
repo_action add
fi
if ${rm_pkg}; then
repo_action remove
fi
fi

46
bin/pkg/signpkg.in Normal file
View File

@@ -0,0 +1,46 @@
#!/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.
. @libdir@/artools/util-pkg.sh
prepare_artools
load_makepkg_config
passfiles="$@"
sign_pkg(){
local file_to_sign="$1"
if [ ! -e "$file_to_sign" ]; then
error "%s does not exist!" "$file_to_sign"
exit 1
fi
if [[ -n "${BUILDBOT_GPGP}" ]]; then
msg "Signing [%s]" "${file_to_sign##*/}"
gpg --batch --passphrase "${BUILDBOT_GPGP}" --detach-sign "$file_to_sign"
else
msg2 "Signing [%s] with key %s" "${file_to_sign##*/}" "${GPGKEY}..."
gpg --detach-sign --use-agent -u "${GPGKEY}" "$file_to_sign"
fi
}
for pkg in ${passfiles[@]}; do
if pkgfile=$(find_cached_pkgfile "$pkg");then
msg2 "Found: %s" "${pkgfile}"
[[ -e "${pkgfile}".sig ]] && rm "${pkgfile}".sig
sign_pkg "${pkgfile}"
fi
done

View File

@@ -15,6 +15,7 @@
# community
# packages-kernel
# packages-net
# packages-gfx
# packages-openrc
# packages-runit
# packages-s6

View File

@@ -0,0 +1,11 @@
[Trigger]
Operation = Install
Operation = Upgrade
Type = Package
Target = *
[Action]
Description = Cleaning up package cache...
Depends = coreutils
When = PostTransaction
Exec = /usr/bin/find /var/cache/pacman/pkg/ -type f -delete

View File

@@ -0,0 +1,111 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
#GPGDir = /etc/pacman.d/gnupg/
#HookDir = /etc/pacman.d/hooks/
HoldPkg = pacman glibc
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
NoExtract = usr/share/help/* !usr/share/help/en*
NoExtract = usr/share/gtk-doc/html/* usr/share/doc/*
NoExtract = usr/share/locale/* usr/share/X11/locale/* usr/share/i18n/*
NoExtract = !*locale*/en*/* !usr/share/i18n/charmaps/UTF-8.gz !usr/share/*locale*/locale.*
NoExtract = !usr/share/*locales/en_?? !usr/share/*locales/i18n* !usr/share/*locales/iso*
NoExtract = !usr/share/*locales/trans*
NoExtract = usr/share/man/* usr/share/info/*
NoExtract = usr/share/vim/vim*/lang/*
# Misc options
#UseSyslog
#Color
#TotalDownload
CheckSpace
VerbosePkgLists
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.
SigLevel = Required DatabaseOptional
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required
# NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux artix`.
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The gremlins repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
[system]
Include = /etc/pacman.d/mirrorlist
[world]
Include = /etc/pacman.d/mirrorlist
[galaxy]
Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the lib32 repositories as required here.
#[lib32]
#Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs
#
# ARCHLINUX
#
#[extra]
#Include = /etc/pacman.d/mirrorlist-arch
#[community]
#Include = /etc/pacman.d/mirrorlist-arch
#[multilib]
#Include = /etc/pacman.d/mirrorlist-arch

View File

@@ -36,7 +36,9 @@ add_svc_runit(){
add_svc_s6(){
local mnt="$1" names="$2" valid="" rlvl="${3:-default}"
for svc in $names; do
if [[ -d $mnt/etc/s6/sv/$svc ]]; then
error=false
chroot $mnt s6-rc-db -c /etc/s6/rc/compiled type $svc &> /dev/null || error=true
if [ $? == 0 ] && [[ $error == false ]]; then
msg2 "Setting %s ..." "$svc"
valid=${valid:-}${valid:+' '}${svc}
fi

View File

@@ -33,7 +33,7 @@ subrepo_init() {
subrepo_push(){
local pkg="$1"
msg2 "Subrepo push (%s)" "$pkg"
git subrepo push "$pkg"
git subrepo push "$pkg" || die "%s push failed" "$pkg"
}
subrepo_clean(){

View File

@@ -16,10 +16,10 @@ shopt -s extglob
get_compliant_name(){
local gitname="$1"
case $gitname in
case "$gitname" in
*+) gitname=${gitname//+/plus}
esac
echo $gitname
echo "$gitname"
}
set_arch_repos(){
@@ -42,56 +42,17 @@ find_repo(){
find_pkg(){
local searchdir="$1" pkg="$2"
local result=$(find $searchdir -mindepth 2 -maxdepth 2 -type d -name "$pkg")
echo $result
local result=$(find "$searchdir" -mindepth 2 -maxdepth 2 -type d -name "$pkg")
echo "$result"
}
pkgver_equal() {
if [[ $1 = *-* && $2 = *-* ]]; then
# if both versions have a pkgrel, then they must be an exact match
[[ $1 = "$2" ]]
else
# otherwise, trim any pkgrel and compare the bare version.
[[ ${1%%-*} = "${2%%-*}" ]]
fi
}
find_cached_package() {
find_cached_pkgfile() {
local searchdirs=("$PKGDEST" "$PWD") results=()
local targetname=$1 targetver=$2 targetarch=$3
local dir pkg pkgbasename name ver rel arch r results
local pkg="$1"
for dir in "${searchdirs[@]}"; do
[[ -d $dir ]] || continue
for pkg in "$dir"/*.pkg.tar?(.!(sig|*.*)); do
[[ -f $pkg ]] || continue
# avoid adding duplicates of the same inode
for r in "${results[@]}"; do
[[ $r -ef $pkg ]] && continue 2
done
# split apart package filename into parts
pkgbasename=${pkg##*/}
pkgbasename=${pkgbasename%.pkg.tar*}
arch=${pkgbasename##*-}
pkgbasename=${pkgbasename%-"$arch"}
rel=${pkgbasename##*-}
pkgbasename=${pkgbasename%-"$rel"}
ver=${pkgbasename##*-}
name=${pkgbasename%-"$ver"}
if [[ $targetname = "$name" && $targetarch = "$arch" ]] &&
pkgver_equal "$targetver" "$ver-$rel"; then
results+=("$pkg")
fi
done
[[ -d "$dir" ]] || continue
[[ -e "$dir/$pkg" ]] && results+=("$dir/$pkg")
done
case ${#results[*]} in
0)
return 1

View File

@@ -42,6 +42,7 @@ load_pkg_config(){
community
packages-kernel
packages-net
packages-gfx
packages-openrc
packages-runit
packages-s6