Compare commits

...

31 Commits

Author SHA1 Message Date
ede2ac11e2 buildtree: fix has_changes condition 2019-10-22 12:48:50 +02:00
e8913b07c3 buildiso: adopt kernel changes of version file 2019-10-15 21:21:46 +02:00
f5f9a2acb8 buildiso: fix calamares unpackfs.conf writing 2019-10-10 00:16:07 +02:00
c6f7df51d2 checkpkg: arch patches 2019-10-03 22:42:26 +02:00
b105207138 buildiso: fixes 2019-10-02 11:12:27 +02:00
55e98abdc1 buildiso: fixes grub, s6 2019-09-21 11:58:58 +02:00
896c031ea9 buildtree: fix team assignment of alphanumeric char containing repo names 2019-09-17 11:09:16 +02:00
8f16db45e8 artools.conf: update 2019-09-17 10:47:53 +02:00
47ee03e1a4 buildtree: add java dedicated repo 2019-09-17 10:47:29 +02:00
17f49857e2 buildtree: fix new non arch pkg 2019-09-16 01:00:02 +02:00
68e23f7e47 buildtree: fix import of new pkg 2019-09-13 18:36:25 +02:00
c5228a8b43 makechrootpkg: Revert check if the package failed to install 2019-09-13 00:12:06 +02:00
84151f360f s6iso (#16) 2019-09-13 00:08:31 +02:00
a6ca83be7e start 0.15 2019-09-12 15:35:34 +02:00
0a07a1f1dd buildiso: remove base profile 'inheritance' 2019-09-12 15:35:03 +02:00
9dedb2e4cb buildiso: use global profile var 2019-09-07 20:49:09 +02:00
dcf6ec1d7b buildiso: complete optional livefs 2019-09-07 17:18:32 +02:00
62022faad7 buildiso: make livefs optional 2019-09-07 10:52:42 +02:00
dea81dd9f9 chroot-run: don't bind mount localtime 2019-09-07 10:52:13 +02:00
e49d2d77bd commitpkg: comment subrepo pull for now 2019-09-04 23:15:49 +02:00
4a06d4d2eb buildtree: add xfce support 2019-08-24 15:00:51 +02:00
231d054ee9 remove useless param in get_full_version() calls 2019-08-23 20:24:26 +02:00
2945493eb7 use var 2019-08-23 20:23:42 +02:00
0f037f1106 finddeps: colorize 2019-08-23 19:45:59 +02:00
6c4197e76d buildtree: enhance check mode 2019-08-22 16:42:38 +02:00
8ebdad278e buildtree: rm args in funcs 2019-08-22 14:18:37 +02:00
2bacf6d19e deploypkg: fix remove in file mode 2019-08-19 23:07:48 +02:00
6700e1a2e6 Merge branch 'deploy' of artix/artools into master 2019-08-19 14:57:15 +02:00
f874c8c399 buildpkg: add a rebuild option
deploypkg: add option to pass filenames
2019-08-18 21:47:27 +02:00
1a5ea6c4ee buildiso: rm log option; clean up 2019-08-12 22:20:21 +02:00
486acaf47a chroot-run: bind mount /etc/localtime if it exists 2019-08-12 18:41:58 +02:00
22 changed files with 340 additions and 195 deletions

View File

@@ -1,4 +1,4 @@
VERSION=0.14
VERSION=0.15
CHROOT_VERSION=0.10

View File

@@ -112,6 +112,10 @@ chroot_extra_mount() {
chroot_add_resolv_conf "$1"
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
chroot_mount "$cache_dir" "$1${cache_dir}" -Br

View File

@@ -15,10 +15,25 @@
. @libdir@/artools/util-base.sh
. @libdir@/artools/util-iso.sh
gen_iso_fn(){
local vars=("artix") name
vars+=("${PROFILE}")
vars+=("${INITSYS}")
case "${REPOSITORY}" in
'gremlins'|'goblins') vars+=("${REPOSITORY}") ;;
esac
vars+=("${ISO_VERSION}")
vars+=("${ARCH}")
for n in ${vars[@]};do
name=${name:-}${name:+-}${n}
done
echo $name
}
prepare_build(){
timer_start=$(get_timer)
load_profile "${PROFILE}"
load_profile
local pacman_conf pac_file="pacman-default.conf"
@@ -73,7 +88,9 @@ build(){
lock_close 9
rm -rf --one-file-system "${work_dir}"
clean_iso_root "${iso_root}"
msg "Deleting isoroot [%s] ..." "${iso_root##*/}"
rm -rf --one-file-system "${iso_root}"
fi
if ${iso_only}; then
@@ -101,10 +118,9 @@ clean_first=true
pretend=false
images_only=false
iso_only=false
log=false
persist=false
basestrap_args=()
basestrap_args=(-GMc)
cmd=${0##*/}
REPOSITORY=${cmd##*-}
@@ -125,7 +141,6 @@ usage() {
echo ' -x Build images only'
echo ' -z Generate iso only'
echo ' Requires pre built images (-x)'
echo ' -l Log to file'
echo ' -q Query settings and pretend build'
echo ' -h This help'
echo ''
@@ -135,7 +150,7 @@ usage() {
orig_argv=("$0" "$@")
opts='p:r:t:i:g:czxmlqh'
opts='p:r:t:i:g:czxmqh'
while getopts "${opts}" arg; do
case "${arg}" in
@@ -148,7 +163,6 @@ while getopts "${opts}" arg; do
x) images_only=true ;;
z) iso_only=true ;;
m) persist=true ;;
l) log=true ;;
q) pretend=true ;;
h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;

View File

@@ -20,6 +20,7 @@ load_user_info
load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
create_first=false
rebuild=false
mkchrootpkg_args=(-c -n)
@@ -27,22 +28,11 @@ cmd=${0##*/}
repo=${cmd#*-}
base_devel=('base-devel')
case ${repo} in
system|world|galaxy) repo='default' ;;
lib32*) base_devel+=('multilib-devel') ;;
galaxy-gremlins|galaxy-goblins) repo=${repo#*-} ;;
esac
pacman_conf="${DATADIR}/pacman-${repo}.conf"
[[ -f ${USERCONFDIR}/artools/pacman-${repo}.conf ]] && pacman_conf="${USERCONFDIR}/artools/pacman-${repo}.conf"
makepkg_conf="${DATADIR}/makepkg.conf"
[[ -f ${USERCONFDIR}/artools/makepkg.conf ]] && makepkg_conf="${USERCONFDIR}/artools/makepkg.conf"
usage() {
echo "Usage: ${0##*/} [options] -- [mkchrootpkg_args]"
echo " -r <dir> Create chroots in this directory"
echo ' -c Recreate the chroot before building'
echo ' -m Major rebuild'
echo ' -h This help'
echo ''
echo "Default mkchrootpkg_args args: ${mkchrootpkg_args[*]}"
@@ -52,17 +42,34 @@ usage() {
orig_argv=("$0" "$@")
opts='hcr:'
opts='hcmr:'
while getopts "${opts}" arg; do
case "${arg}" in
r) CHROOTS_PKG="$OPTARG" ;;
c) create_first=true ;;
m) rebuild=true ;;
h|?) usage 0 ;;
*) echo "invalid argument '%s'" "${arg}"; usage 1 ;;
esac
done
if ${rebuild};then
repo='default'
else
case ${repo} in
system|world|galaxy) repo='default' ;;
lib32*) base_devel+=('multilib-devel') ;;
galaxy-gremlins|galaxy-goblins) repo=${repo#*-} ;;
esac
fi
pacman_conf="${DATADIR}/pacman-${repo}.conf"
[[ -f ${USERCONFDIR}/artools/pacman-${repo}.conf ]] && pacman_conf="${USERCONFDIR}/artools/pacman-${repo}.conf"
makepkg_conf="${DATADIR}/makepkg.conf"
[[ -f ${USERCONFDIR}/artools/makepkg.conf ]] && makepkg_conf="${USERCONFDIR}/artools/makepkg.conf"
check_root SOURCE_DATE_EPOCH
mkchrootpkg_args+=("${@:$OPTIND}")

View File

@@ -58,7 +58,7 @@ show_deps(){
[[ $arch == 'any' ]] && CARCH=any
local archver=$(get_full_version $pkg)
local archver=$(get_full_version)
msg2 "repo: %s" "$repo"
[[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}"
@@ -73,20 +73,42 @@ show_deps(){
[[ -n ${optdepends[@]} ]] && msg2 "optdepends: %s" "${optdepends[@]}"
}
from_arch(){
local pkg="$1" src= dest=
local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "$pkg")
[[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "$pkg"
subrepo_new(){
local group="${1:-$GROUP}" team="${2:-$TEAM}"
local dest=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk
local package=${TREE_DIR_ARCH}/$git_tree_arch/$pkg
cd ${TREE_DIR_ARTIX}/$group
local org=$(get_pkg_org "${PACKAGE}")
create_repo "${PACKAGE}" "$org"
add_repo_to_team "${PACKAGE}" "$org" "$team"
subrepo_clone "${PACKAGE}" "$org"
prepare_dir "$dest"
commit_jenkins_files "${PACKAGE}"
}
from_arch(){
local src= dest=
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 package=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE}
local repo=$(find_repo "$package" "${staging}" "${unstable}")
src=$package/repos/$repo
local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "$pkg")
local tree_dir=$(get_artix_tree "$pkg" "$git_tree_artix" "$git_tree_arch")
local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch")
dest=${TREE_DIR_ARTIX}/$tree_dir/$pkg/trunk
dest=${TREE_DIR_ARTIX}/$tree_dir/${PACKAGE}/trunk
msg "tree: %s" "$tree_dir"
show_deps "$src" "$repo"
@@ -96,25 +118,25 @@ from_arch(){
cd ${TREE_DIR_ARTIX}/$git_tree_artix
. $dest/PKGBUILD 2>/dev/null
local artixver=$(get_full_version $pkg)
local artixver=$(get_full_version)
msg2 "Artix Version: %s" "$artixver"
else
subrepo_new "$pkg" "$tree_dir" "$git_tree_arch"
subrepo_new "$tree_dir" "$git_tree_arch"
fi
msg "Sync (%s) from [%s] to [%s]" "$pkg" "$git_tree_arch" "$tree_dir"
msg "Sync (%s) from [%s] to [%s]" "${PACKAGE}" "$git_tree_arch" "$tree_dir"
sync_pkg "$src" "$dest"
patch_pkg "$pkg"
patch_pkg "${PACKAGE}"
}
view_build(){
local pkg="$1" src=
local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "$pkg")
[[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "$pkg"
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/$pkg
local pkg_path=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE}
local repo=$(find_repo "$pkg_path" "${staging}" "${unstable}")
src=$pkg_path/repos/$repo
@@ -122,6 +144,16 @@ view_build(){
show_deps "$src" "$repo"
}
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"
}
sync_repos(){
${sync_arch} && pull_tree_arch
if ${sync_artix};then
@@ -149,6 +181,7 @@ conf=false
unstable=false
staging=true
sync_group=false
check=false
PACKAGE=''
@@ -169,7 +202,8 @@ usage() {
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 View package depends'
echo ' -v Check if a package is in the artix tree(s)'
echo ' -c View package depends'
echo ' -h This help'
echo ''
echo ''
@@ -178,7 +212,7 @@ usage() {
orig_argv=("$0" "$@")
opts='p:t:g:uwsinzyvh'
opts='p:t:g:uwsinzycvh'
while getopts "${opts}" arg; do
case "${arg}" in
@@ -192,6 +226,7 @@ while getopts "${opts}" arg; do
n) createnew=true ;;
w) staging=false ;;
u) unstable=true ;;
c) check=true ;;
v) view=true ;;
h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
@@ -205,8 +240,10 @@ prepare_dir "${TREE_DIR_ARCH}"
${sync} && sync_repos
${view} && view_build "${PACKAGE}"
${view} && view_build
${import} && from_arch "${PACKAGE}"
${check} && check_tree
${createnew} && subrepo_new "${PACKAGE}" "${GROUP}" "${TEAM}"
${import} && from_arch
${createnew} && subrepo_new

View File

@@ -28,6 +28,53 @@ load_user_info
load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
load_vars /etc/makepkg.conf
usage() {
cat <<- _EOF_
Usage: ${BASH_SOURCE[0]##*/} [OPTIONS]
Searches for a locally built package corresponding to the PKGBUILD, and
downloads the last version of that package from the Pacman repositories.
It then compares the list of .so files provided by each version of the
package and outputs if there are soname differences for the new package.
A directory is also created using mktemp with files containing a file
list for both packages and a library list for both packages.
OPTIONS
-r, --rmdir Remove the temporary directory
-w, --warn Print a warning in case of differences
-h, --help Show this help text
_EOF_
}
RMDIR=0
WARN=0
OPT_SHORT='rwh'
OPT_LONG=('rmdir' 'warn' 'help')
if ! parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@"; then
exit 1
fi
set -- "${OPTRET[@]}"
while :; do
case $1 in
-r|--rmdir)
RMDIR=1
;;
-w|--warn)
WARN=1
;;
-h|--help)
usage
exit 0
;;
--)
shift; break
;;
esac
shift
done
if [[ ! -f PKGBUILD ]]; then
die 'This must be run in the directory of a built package.'
fi
@@ -38,12 +85,13 @@ if [[ $arch == 'any' ]]; then
fi
STARTDIR=$(pwd)
(( RMDIR )) && trap 'rm -rf $TEMPDIR' EXIT INT TERM QUIT
TEMPDIR=$(mktemp -d --tmpdir checkpkg-script.XXXX)
for _pkgname in "${pkgname[@]}"; do
comparepkg=$_pkgname
pkgurl=
target_pkgver=$(get_full_version "$_pkgname")
target_pkgver=$(get_full_version)
if ! pkgfile=$(find_cached_package "$_pkgname" "$target_pkgver" "$CARCH"); then
die 'tarball not found for package: %s' "${_pkgname}-$target_pkgver"
fi
@@ -90,9 +138,12 @@ for _pkgname in "${pkgname[@]}"; do
find-libprovides "$TEMPDIR/$oldpkg" 2>/dev/null | sort > "$TEMPDIR/libraries-$_pkgname-old"
find-libprovides "$pkgfile" 2>/dev/null | sort > "$TEMPDIR/libraries-$_pkgname"
if ! diff_output="$(sdiff -s "$TEMPDIR/libraries-$_pkgname-old" "$TEMPDIR/libraries-$_pkgname")"; then
msg "Sonames differ in %s!" "$_pkgname"
message="Sonames differ in $_pkgname!"
(( WARN )) && warning "$message" || msg "$message"
echo "$diff_output"
else
msg "No soname differences for %s" "$_pkgname."
fi
done
(( RMDIR )) || msg "Files saved to %s" "$TEMPDIR"

View File

@@ -74,7 +74,7 @@ commit_pkg(){
${push} && pull_tree "${git_tree}" "$head"
subrepo_pull "${PACKAGE}"
# subrepo_pull "${PACKAGE}"
subrepo_push "${PACKAGE}"
subrepo_clean "${PACKAGE}"
@@ -130,7 +130,7 @@ symlink_commit_pkg(){
${push} && pull_tree "${git_tree}" "$head"
subrepo_pull "${PACKAGE}"
# subrepo_pull "${PACKAGE}"
subrepo_push "${PACKAGE}"
subrepo_clean "${PACKAGE}"

View File

@@ -18,14 +18,14 @@
compare(){
local pkgpath="$1" group="$2"
local pkg=${pkgpath##*/}
local artixrepo=$(find_repo "$package" "${staging}" "${unstable}")
local artixrepo=$(find_repo "$pkgpath" "${staging}" "${unstable}")
local artixshow=${artixrepo%-*}
local pkgbuild=$pkgpath/repos/$artixrepo/PKGBUILD
if [[ -f $pkgbuild ]];then
. $pkgbuild 2>/dev/null
local artixver=$(get_full_version $pkg)
local artixver=$(get_full_version)
local archpath=$(get_import_path $pkg)
@@ -36,7 +36,7 @@ compare(){
if [[ -f $pkgbuild ]];then
. $pkgbuild 2>/dev/null
local archver=$(get_full_version $pkg)
local archver=$(get_full_version)
fi
local result=$(vercmp "$artixver" "$archver")
@@ -101,7 +101,7 @@ check_db(){
if [[ -f $pkgbuild ]];then
. $pkgbuild 2>/dev/null
local artixver=$(get_full_version $pkg)
local artixver=$(get_full_version)
local is_entry=false
for name in ${pkgname[@]};do

View File

@@ -15,6 +15,79 @@
. @libdir@/artools/util-base.sh
. @libdir@/artools/util-pkg.sh
find_cached_pkgfile() {
local searchdirs=("$PKGDEST" "$PWD") results=()
local pkg="$1"
for dir in "${searchdirs[@]}"; do
[[ -d $dir ]] || continue
results+=$(find "$dir" -type f -name "$pkg")
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}
arch=${pkgbasename##*-}
pkgbasename=${pkgbasename%-"$arch"}
rel=${pkgbasename##*-}
pkgbasename=${pkgbasename%-"$rel"}
ver=${pkgbasename##*-}
name=${pkgbasename%-"$ver"}
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")
# checkpkg "${pkgfile}" || return 2
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
}
update_repo(){
local repo="$1" pkgfile ver
local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
@@ -29,7 +102,7 @@ update_repo(){
for name in ${pkgsearch[@]}; do
pkgarch=$(get_pkg_arch "$name")
ver=$(get_full_version "$name")
ver=$(get_full_version)
if pkgfile=$(find_cached_package "$name" "$ver" "$pkgarch");then
local pkg=${pkgfile##*/}
info "Found: %s" "$pkg"
@@ -100,6 +173,12 @@ done
shift $(($OPTIND - 1))
passfiles="$@"
prepare_dir "${REPOS_ROOT}"
update_repo "${dest_repo}"
if [[ -n ${passfiles[@]} ]]; then
update_repo2 "${dest_repo}"
else
update_repo "${dest_repo}"
fi

View File

@@ -33,17 +33,18 @@ find . -type d -print0 2>/dev/null| while read -r -d '' d; do
for dep in "${depends[@]}"; do
# lose the version comparator, if any
depname=${dep%%[<>=]*}
[[ $depname = "$match" ]] && echo "$d (depends)"
[[ $depname = "$match" ]] && msg "$d (depends)"
done
for dep in "${makedepends[@]}"; do
# lose the version comparator, if any
depname=${dep%%[<>=]*}
[[ $depname = "$match" ]] && echo "$d (makedepends)"
[[ $depname = "$match" ]] && msg "$d (makedepends)"
done
for dep in "${optdepends[@]/:*}"; do
# lose the version comaparator, if any
depname=${dep%%[<>=]*}
[[ $depname = "$match" ]] && echo "$d (optdepends)"
[[ $depname = "$match" ]] && msg "$d (optdepends)"
done
fi
done

View File

@@ -225,14 +225,8 @@ _chrootbuild() {
sudo --preserve-env=SOURCE_DATE_EPOCH -iu builduser bash -c 'cd /startdir; makepkg "$@"' -bash "$@"
ret=$?
case $ret in
0)
0|14)
return 0;;
14)
# whitelist "The package failed to install." but only if there are multiple split packages
# in which case they might be conflicting
local pkgfiles=(/pkgdest/*.pkg.tar.xz)
(( ${#pkgfiles[@]} > 1))
return $?;;
*)
return $ret;;
esac

View File

@@ -19,16 +19,19 @@
# TREE_DIR_ARTIX=${WORKSPACE_DIR}/artixlinux
# customize buildtree, packages and community should be enabled
# TREE_NAMES_ARTIX=(
# packages
# community
# packages-kernel
# packages-openrc
# packages-runit
# packages-s6
# packages-media
# packages-xorg
# packages-python
# packages-perl
# packages-java
# packages-qt5
# packages-devel
# packages-ruby
@@ -38,6 +41,7 @@
# packages-lxqt
# packages-mate
# packages-kde
# packages-xfce
# )
# HOST_TREE_ARCH=git://git.archlinux.org/svntogit
@@ -60,7 +64,7 @@
# the dist release; default: auto
# ISO_VERSION=$(date +%Y%m%d)
# possible values: openrc, runit (s6 not yet supported)
# possible values: openrc, runit, s6
# INITSYS="openrc"
# gpg key; leave empty or commented to skip sfs signing

View File

@@ -84,6 +84,7 @@ init_artools_pkg(){
packages-xorg
packages-python
packages-perl
packages-java
packages-qt5
packages-devel
packages-ruby
@@ -93,6 +94,8 @@ init_artools_pkg(){
packages-lxqt
packages-mate
packages-kde
packages-xfce
# packages-haskell
)
HOST_TREE_ARTIX=${HOST_TREE_ARTIX:-"gitea@${GIT_DOMAIN}:artixlinux"}
@@ -159,15 +162,6 @@ load_config(){
return 0
}
user_own(){
local flag=$2
chown ${flag} "${OWNER}:$(id --group ${OWNER})" "$1"
}
user_run(){
su ${OWNER} -c "$@"
}
load_user_info(){
OWNER=${SUDO_USER:-$USER}

View File

@@ -28,6 +28,15 @@ add_svc_runit(){
fi
}
add_svc_s6(){
local mnt="$1" name="$2"
if [[ -d $mnt/etc/s6/sv/$name ]]; then
msg2 "Setting %s ..." "$name"
# chroot $mnt s6-rc-bundle $name default &>/dev/null
# chroot $mnt s6-rc -u change default &>/dev/null
fi
}
set_xdm(){
if [[ -f $1/etc/conf.d/xdm ]];then
local conf='DISPLAYMANAGER="'${DISPLAYMANAGER}'"'
@@ -70,6 +79,14 @@ configure_services(){
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}"
}
@@ -77,7 +94,7 @@ configure_services(){
configure_system(){
local mnt="$1"
case ${INITSYS} in
'openrc' | 'runit')
'openrc' | 'runit'|'s6')
configure_logind "$mnt" "elogind"
;;
esac
@@ -131,6 +148,15 @@ write_servicescfg_conf(){
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)
printf '%s' "${yaml}"
@@ -142,7 +168,7 @@ write_unpackfs_conf(){
yaml+=$(write_yaml_map 0 'unpack')
yaml+=$(write_yaml_seq_map 2 'source' "/run/artix/bootmnt/artix/x86_64/rootfs.sfs")
yaml+=$(write_yaml_map 4 'sourcefs' 'squashfs')
yaml+=$(write_yaml_map 4 'destination' '')
yaml+=$(write_yaml_map 4 'destination' '""')
yaml+=$(write_empty_line)
printf '%s' "${yaml}"
}
@@ -159,14 +185,14 @@ configure_calamares(){
fi
}
configure_live_image(){
configure_image(){
local fs="$1"
msg "Configuring [livefs]"
msg "Configuring [%s]" "${fs##*/}"
configure_hosts "$fs"
configure_system "$fs"
configure_services "$fs"
configure_calamares "$fs"
[[ ! -d "$fs/etc/artools" ]] && mkdir -p "$fs/etc/artools"
write_live_session_conf > "$fs/etc/artools/live.conf"
msg "Done configuring [livefs]"
msg "Done configuring [%s]" "${fs##*/}"
}

View File

@@ -29,11 +29,11 @@ prepare_initramfs(){
fi
if [[ -n ${GPG_KEY} ]]; then
user_run "gpg --export ${GPG_KEY} >${USERCONFDIR}/artools/gpgkey"
exec 17<>${USERCONFDIR}/artools/GPG_KEY
su ${OWNER} -c "gpg --export ${GPG_KEY} >/tmp/GPG_KEY"
exec 17<>/tmp/GPG_KEY
fi
local _kernel=$(cat $mnt/usr/lib/modules/*/version)
ARTIX_GNUPG_FD=${GPG_KEY:+17} chroot-run $mnt \
local _kernel=$(<$mnt/usr/src/linux/version)
ARTIX_GNUPG_FD=${GPG_KEY:+17} artools-chroot $mnt \
/usr/bin/mkinitcpio -k ${_kernel} \
-c /etc/mkinitcpio-artix.conf \
-g /boot/initramfs.img
@@ -41,8 +41,8 @@ prepare_initramfs(){
if [[ -n ${GPG_KEY} ]]; then
exec 17<&-
fi
if [[ -f ${USERCONFDIR}/artools/GPG_KEY ]]; then
rm ${USERCONFDIR}/artools/GPG_KEY
if [[ -f /tmp/GPG_KEY ]]; then
rm /tmp/GPG_KEY
fi
}
@@ -59,13 +59,13 @@ prepare_boot_extras(){
}
configure_grub(){
local conf="$1/boot/grub/kernels.cfg"
sed -e "s|@iso_label@|${iso_label}|" -i $conf
sed -e "s|@iso_label@|${iso_label}|" -i ${iso_root}/boot/grub/kernels.cfg
}
prepare_grub(){
local platform=i386-pc img='core.img' grub=$3/boot/grub efi=$3/efi/boot \
lib=$1/usr/lib/grub prefix=/boot/grub theme=$2/usr/share/grub
local platform=i386-pc img='core.img' prefix=/boot/grub
local lib=$1/usr/lib/grub theme=$2/usr/share/grub
local grub=${iso_root}/boot/grub efi=${iso_root}/efi/boot
prepare_dir ${grub}/${platform}
@@ -103,7 +103,7 @@ prepare_grub(){
grub-mkfont -o ${grub}/unicode.pf2 /usr/share/fonts/misc/unifont.bdf
fi
local size=4M mnt="${mnt_dir}/efiboot" efi_img="$3/efi.img"
local size=4M mnt="${mnt_dir}/efiboot" efi_img="${iso_root}/efi.img"
msg2 "Creating fat image of %s ..." "${size}"
truncate -s ${size} "${efi_img}"
mkfs.fat -n ARTIX_EFI "${efi_img}" &>/dev/null

View File

@@ -12,33 +12,12 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
gen_iso_fn(){
local vars=("artix") name
vars+=("${PROFILE}")
vars+=("${INITSYS}")
case "${REPOSITORY}" in
'gremlins'|'goblins') vars+=("${REPOSITORY}") ;;
esac
vars+=("${ISO_VERSION}")
vars+=("${ARCH}")
for n in ${vars[@]};do
name=${name:-}${name:+-}${n}
done
echo $name
}
clean_iso_root(){
local dest="$1"
msg "Deleting isoroot [%s] ..." "${dest##*/}"
rm -rf --one-file-system "$dest"
}
make_sig () {
local idir="$1" file="$2"
msg2 "Creating signature file..."
cd "$idir"
user_own "$idir"
user_run "gpg --detach-sign --default-key ${GPG_KEY} $file.sfs"
chown "${OWNER}:$(id --group ${OWNER})" "$idir"
su ${OWNER} -c "gpg --detach-sign --default-key ${GPG_KEY} $file.sfs"
chown -R root "$idir"
cd ${OLDPWD}
}

View File

@@ -44,7 +44,10 @@ mount_overlay(){
mkdir -p "$upper"
case $upper in
*/livefs) lower="$work/rootfs" ;;
*/bootfs) lower="$work/livefs":"$work/rootfs" ;;
*/bootfs)
lower="$work/rootfs"
[[ -d "$work/livefs" ]] && lower="$work/livefs":"$work/rootfs"
;;
esac
track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper"
}

View File

@@ -12,21 +12,6 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
init_profile(){
local profdir="$1" prof="$2"
ROOT_LIST="$profdir/base/Packages-Root"
ROOT_OVERLAY="$profdir/base/root-overlay"
LIVE_LIST="$profdir/base/Packages-Live"
LIVE_OVERLAY="$profdir/base/live-overlay"
[[ -f "$profdir/$prof/Packages-Root" ]] && ROOT_LIST="$profdir/$prof/Packages-Root"
[[ -d "$profdir/$prof/root-overlay" ]] && ROOT_OVERLAY="$profdir/$prof/root-overlay"
[[ -f "$profdir/$prof/Packages-Live" ]] && LIVE_LIST="$profdir/$prof/Packages-Live"
[[ -d "$profdir/$prof/live-overlay" ]] && LIVE_OVERLAY="$profdir/$prof/live-overlay"
}
show_profile(){
msg2 "iso_file: %s" "${iso_file}"
msg2 "AUTOLOGIN: %s" "${AUTOLOGIN}"
@@ -39,15 +24,18 @@ show_profile(){
}
load_profile(){
local prof="$1"
local profdir="${DATADIR}/iso-profiles"
[[ -d ${WORKSPACE_DIR}/iso-profiles ]] && profdir=${WORKSPACE_DIR}/iso-profiles
local profile_dir="${DATADIR}/iso-profiles"
[[ -d ${WORKSPACE_DIR}/iso-profiles ]] && profile_dir=${WORKSPACE_DIR}/iso-profiles
init_profile "$profdir" "$prof"
ROOT_LIST="$profile_dir/${PROFILE}/Packages-Root"
ROOT_OVERLAY="$profile_dir/${PROFILE}/root-overlay"
[[ -f $profdir/$prof/profile.conf ]] || return 1
[[ -f "$profile_dir/${PROFILE}/Packages-Live" ]] && LIVE_LIST="$profile_dir/${PROFILE}/Packages-Live"
[[ -d "$profile_dir/${PROFILE}/live-overlay" ]] && LIVE_OVERLAY="$profile_dir/${PROFILE}/live-overlay"
[[ -r $profdir/$prof/profile.conf ]] && . $profdir/$prof/profile.conf
[[ -f $profile_dir/${PROFILE}/profile.conf ]] || return 1
[[ -r $profile_dir/${PROFILE}/profile.conf ]] && . $profile_dir/${PROFILE}/profile.conf
DISPLAYMANAGER=${DISPLAYMANAGER:-'none'}
@@ -63,13 +51,13 @@ load_profile(){
ADDGROUPS=${ADDGROUPS:-"video,power,optical,network,lp,scanner,wheel,users,log"}
if [[ -z ${SERVICES[@]} ]];then
SERVICES=('acpid' 'bluetooth' 'cronie' 'cupsd' 'syslog-ng' 'NetworkManager')
SERVICES=('acpid' 'bluetooth' 'cronie' 'cupsd' 'syslog-ng' 'connman')
fi
if [[ ${DISPLAYMANAGER} != "none" ]];then
case "${INITSYS}" in
'openrc') SERVICES+=('xdm') ;;
'runit') SERVICES+=("${DISPLAYMANAGER}") ;;
'runit'|'s6') SERVICES+=("${DISPLAYMANAGER}") ;;
esac
fi
@@ -97,7 +85,7 @@ load_pkgs(){
local _init="s|@$init||g"
case "$init" in
'openrc') _init_rm1="s|@runit.*||g"; _init_rm2="s|@s6*||g" ;;
'openrc') _init_rm1="s|@runit.*||g"; _init_rm2="s|@s6.*||g" ;;
's6') _init_rm1="s|@runit.*||g"; _init_rm2="s|@openrc.*||g" ;;
'runit') _init_rm1="s|@s6.*||g"; _init_rm2="s|@openrc.*||g" ;;
esac

View File

@@ -13,9 +13,6 @@
# GNU General Public License for more details.
error_function() {
if [[ -p $logpipe ]]; then
rm "$logpipe"
fi
local func="$1"
# first exit all subshells, then print the error
if (( ! BASH_SUBSHELL )); then
@@ -27,20 +24,6 @@ error_function() {
exit 2
}
# $1: function
run_log(){
local func="$1" log_dir='/var/log/artools'
[[ ! -d $log_dir ]] && mkdir -p $log_dir
local logfile=${log_dir}/$(gen_iso_fn).$func.log
logpipe=$(mktemp -u "/tmp/$func.pipe.XXXXXXXX")
mkfifo "$logpipe"
tee "$logfile" < "$logpipe" &
local teepid=$!
$func &> "$logpipe"
wait $teepid
rm "$logpipe"
}
run_safe() {
local restoretrap func="$1"
set -e
@@ -48,11 +31,7 @@ run_safe() {
restoretrap=$(trap -p ERR)
trap 'error_function $func' ERR
if ${log};then
run_log "$func"
else
"$func"
fi
"$func"
eval $restoretrap
set +E
@@ -132,11 +111,6 @@ clean_up_image(){
if [[ -d $path ]];then
find "$path" -mindepth 1 -delete &> /dev/null
fi
# if [[ ${mnt##*/} == 'livefs' ]];then
# rm -rf "$mnt/etc/pacman.d/gnupg"
# fi
find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete
if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then
rm $mnt/boot/grub/grub.cfg
@@ -153,11 +127,12 @@ make_rootfs() {
prepare_dir "${rootfs}"
basestrap -GMc "${basestrap_args[@]}" "${rootfs}" "${packages[@]}"
echo "${CHROOTVERSION}" > "${rootfs}/.artools"
basestrap "${basestrap_args[@]}" "${rootfs}" "${packages[@]}"
copy_overlay "${ROOT_OVERLAY}" "${rootfs}"
[[ -z ${LIVE_LIST} ]] && configure_image "${rootfs}"
clean_up_image "${rootfs}"
: > ${work_dir}/rootfs.lock
@@ -175,11 +150,11 @@ make_livefs() {
mount_overlay "${livefs}" "${work_dir}"
basestrap -GMc "${basestrap_args[@]}" "${livefs}" "${packages[@]}"
basestrap "${basestrap_args[@]}" "${livefs}" "${packages[@]}"
copy_overlay "${LIVE_OVERLAY}" "${livefs}"
configure_live_image "${livefs}"
configure_image "${livefs}"
umount_overlay
@@ -222,9 +197,12 @@ make_grub(){
if [[ ! -e ${work_dir}/grub.lock ]]; then
msg "Prepare [/iso/boot/grub]"
prepare_grub "${work_dir}/rootfs" "${work_dir}/livefs" "${iso_root}"
local layer=${work_dir}/rootfs
[[ -n ${LIVE_LIST} ]] && layer=${work_dir}/livefs
configure_grub "${iso_root}"
prepare_grub "${work_dir}/rootfs" "$layer"
configure_grub
: > ${work_dir}/grub.lock
msg "Done [/iso/boot/grub]"
@@ -234,7 +212,7 @@ make_grub(){
compress_images(){
local timer=$(get_timer)
run_safe "make_iso"
user_own "${iso_dir}" "-R"
chown -R "${OWNER}:$(id --group ${OWNER})" "${iso_dir}"
show_elapsed_time "${FUNCNAME}" "${timer}"
}
@@ -242,7 +220,7 @@ prepare_images(){
local timer=$(get_timer)
load_pkgs "${ROOT_LIST}" "${INITSYS}"
run_safe "make_rootfs"
if [[ -f ${LIVE_LIST} ]]; then
if [[ -n ${LIVE_LIST} ]]; then
load_pkgs "${LIVE_LIST}" "${INITSYS}"
run_safe "make_livefs"
fi

View File

@@ -54,9 +54,10 @@ load_team_id(){
add_repo_to_team(){
local pkg="$1" org="$2" team="$3"
local id=$(load_team_id "$org" "$team")
local gitname=$(get_compliant_name "$pkg")
msg2 "Adding package repo [%s] to team (%s)" "$pkg" "$team"
msg2 "Adding package repo [%s] to team (%s)" "$gitname" "$team"
curl -s -X PUT "${GIT_URL}/api/v1/teams/$id/repos/$org/$pkg?access_token=${GIT_TOKEN}" \
curl -s -X PUT "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
-H "accept: application/json"
}

View File

@@ -81,7 +81,7 @@ pull_tree(){
local remote_head=$(get_remote_head)
msg "Checking %s (%s)" "${tree}" "$os"
if $(has_changes "${local_head}" "${remote_head}");then
if has_changes "${local_head}" "${remote_head}";then
git pull origin master
fi
}
@@ -139,22 +139,3 @@ config_tree(){
fi
cd ..
}
subrepo_new(){
local pkg="$1" tree="$2" team="${3:-$2}"
local dest=${TREE_DIR_ARTIX}/$tree/$pkg/trunk
cd ${TREE_DIR_ARTIX}/$tree
local org=$(get_pkg_org "$pkg")
create_repo "$pkg" "$org"
add_repo_to_team "$pkg" "$org" "$team"
subrepo_clone "$pkg" "$org"
prepare_dir "$dest"
commit_jenkins_files "$pkg"
}

View File

@@ -109,7 +109,7 @@ find_repo(){
local pkg="$1" stag="$2" unst="$3" repo=
for r in $(arch_repos "$stag" "$unst");do
[[ -f $pkg/repos/$r-x86_64/PKGBUILD ]] && repo=$r-x86_64
[[ -f $pkg/repos/$r-${ARCH}/PKGBUILD ]] && repo=$r-${ARCH}
[[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any
done
echo $repo
@@ -149,16 +149,20 @@ get_artix_tree(){
$(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
esac"
echo $tree