Compare commits

...

10 Commits
0.3 ... 0.4

Author SHA1 Message Date
udeved
3f05c3e97d version 0.4 2017-07-30 01:12:04 +02:00
artoo
edb486c662 Merge pull request #15 from artix-linux/devel
Devel
2017-07-30 01:10:03 +02:00
udeved
088ae05ad8 util-pkg-publish: fix silly error 2017-07-29 23:29:10 +02:00
udeved
0cbbe9f23f buildiso, buildyaml: remove profile multilib, basic and extra switches 2017-07-29 23:03:08 +02:00
udeved
f591a6b94e util-pkg-publish: add better repo lock check 2017-07-29 22:44:38 +02:00
artoo
47d7a47d96 Merge pull request #14 from artix-linux/devel
Devel-0.4
2017-07-28 17:03:40 +02:00
udeved
f0a5f0f442 util-yaml: clean old code 2017-07-28 10:32:48 +02:00
udeved
d3b67b4a1b buildiso: fix trap
buildyaml: fix profile loading
deployiso: cosmetics
2017-07-28 03:42:28 +02:00
udeved
00e041a143 util-yaml: fix netgroups 2017-07-28 02:48:36 +02:00
udeved
3b70c77f35 remove iso build lists 2017-07-28 02:42:58 +02:00
22 changed files with 170 additions and 466 deletions

View File

@@ -1,4 +1,4 @@
Version=0.3
Version=0.4
PREFIX = /usr/local
SYSCONFDIR = /etc
@@ -51,9 +51,6 @@ LIBS_PKG = \
SHARED_PKG = \
data/makepkg.conf
LIST_ISO = \
$(wildcard data/iso.list.d/*.list)
BIN_ISO = \
bin/buildiso \
bin/deployiso
@@ -155,9 +152,6 @@ install_pkg:
gzip -c man/buildtree.1 > $(DESTDIR)$(PREFIX)/share/man/man1/buildtree.1.gz
install_iso:
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/artools/iso.list.d
install -m0644 ${LIST_ISO} $(DESTDIR)$(SYSCONFDIR)/artools/iso.list.d
install -dm0755 $(DESTDIR)$(PREFIX)/bin
install -m0755 ${BIN_ISO} $(DESTDIR)$(PREFIX)/bin
@@ -215,7 +209,6 @@ uninstall_pkg:
rm -f $(DESTDIR)$(PREFIX)/share/man/man1/buildtree.1.gz
uninstall_iso:
for f in ${LIST_ISO}; do rm -f $(DESTDIR)$(SYSCONFDIR)/artools/iso.list.d/$$f; done
for f in ${BIN_ISO}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$f; done
for f in ${SHARED_ISO}; do rm -f $(DESTDIR)$(PREFIX)/share/artools/$$f; done

View File

@@ -19,56 +19,17 @@ SYSCONFDIR='@sysconfdir@'
import ${LIBDIR}/util.sh
import ${LIBDIR}/util-iso.sh
prepare_build(){
timer_start=$(get_timer)
profile=$1
local profile_dir=${run_dir}/${profile}
load_profile "${profile_dir}"
local user_conf=${profile_dir}/user-repos.conf pac_arch='default' pacman_conf
[[ "${target_arch}" == 'x86_64' ]] && pac_arch='multilib'
if [[ -f ${user_conf} ]];then
info "detected: %s" "user-repos.conf"
check_user_repos_conf "${user_conf}"
pacman_conf=${tmp_dir}/custom-pacman.conf
cat ${DATADIR}/pacman-$pac_arch.conf ${user_conf} > "$pacman_conf"
else
pacman_conf="${DATADIR}/pacman-$pac_arch.conf"
fi
iso_file=$(gen_iso_fn).iso
mkchroot_args+=(-C ${pacman_conf})
work_dir=${chroots_iso}/${profile}/${target_arch}
iso_dir="${cache_dir_iso}/${profile}"
iso_root=${chroots_iso}/${profile}/iso
mnt_dir=${chroots_iso}/${profile}/mnt
prepare_dir "${mnt_dir}"
prepare_dir "${iso_dir}"
}
show_profile(){
local prof="$1"
prepare_build "$prof"
prepare_build
msg2 "iso_file: %s" "${iso_file}"
if ${verbose};then
msg2 "autologin: %s" "${autologin}"
[[ ${target_arch} == 'x86_64' ]] && msg2 "multilib: %s" "${multilib}"
msg2 "extra: %s" "${extra}"
msg2 "netinstall: %s" "${netinstall}"
msg2 "chrootcfg: %s" "${chrootcfg}"
${netinstall} && msg2 "netgroups: %s" "$(get_yaml)"
msg2 "netgroups: %s" "$(get_yaml)"
msg2 "hostname: %s" "${hostname}"
msg2 "username: %s" "${username}"
msg2 "password: %s" "${password}"
msg2 "login_shell: %s" "${login_shell}"
msg2 "addgroups: %s" "${addgroups}"
msg2 "enable_live: %s" "${enable_live[*]}"
@@ -82,12 +43,8 @@ display_settings(){
show_version
show_config
# msg "PROFILE:"
# msg2 "build_lists: %s" "$(show_build_lists ${list_dir_iso})"
# msg2 "build_list_iso: %s" "${build_list_iso}"
msg2 "is_build_list: %s" "${is_build_list}"
msg "OPTIONS:"
msg2 "profile: %s" "${profile}"
msg2 "arch: %s" "${target_arch}"
msg2 "initsys: %s" "${initsys}"
msg2 "kernel: %s" "${kernel}"
@@ -104,8 +61,8 @@ display_settings(){
msg2 "dist_release: %s" "${dist_release}"
msg2 "dist_branding: %s" "${dist_branding}"
msg "BUILD QUEUE:"
run show_profile "${build_list_iso}"
msg "BUILD:"
show_profile
}
load_user_info
@@ -122,10 +79,11 @@ verbose=false
persist=false
mkchroot_args=()
profile=lxqt
usage() {
echo "Usage: ${0##*/} [options]"
echo " -p <profile> Buildset or profile [default: ${build_list_iso}]"
echo " -p <profile> Profile [default: ${profile}]"
echo " -a <arch> Arch [default: ${target_arch}]"
echo ' -r <dir> Chroots directory'
echo " [default: ${chroots_iso}]"
@@ -156,7 +114,7 @@ opts='p:a:r:t:k:i:g:czxmvqh'
while getopts "${opts}" arg; do
case "${arg}" in
p) build_list_iso="$OPTARG" ;;
p) profile="$OPTARG" ;;
a) target_arch="$OPTARG" ;;
r) chroots_iso="$OPTARG" ;;
t) cache_dir_iso="$OPTARG" ;;
@@ -182,4 +140,4 @@ check_requirements
${pretend} && display_settings && exit 1
run build "${build_list_iso}"
build

View File

@@ -37,9 +37,6 @@ display_settings(){
show_version
show_config
# msg "PROFILE:"
# msg2 "build_lists: %s" "$(show_build_lists ${list_dir_pkg})"
# msg2 "build_list_pkg: %s" "${build_list_pkg}"
msg2 "is_build_list: %s" "${is_build_list}"
msg "OPTIONS:"
@@ -64,7 +61,7 @@ display_settings(){
fi
msg "BUILD QUEUE:"
run show_pkg "${build_list_pkg}"
run show_pkg "${build_list}"
}
load_user_info
@@ -106,7 +103,7 @@ prepare_build(){
[[ "$pac_arch" == 'multilib' ]] && target_arch='x86_64'
mkchroot_args+=(-C ${pacman_conf} -M ${makepkg_conf} -U "${build_mirror}")
mkchroot_args+=(-C ${pacman_conf} -M ${makepkg_conf})
mkchrootpkg_args+=(-r ${work_dir})
@@ -114,7 +111,7 @@ prepare_build(){
prepare_dir "${work_dir}"
eval_build_list "${list_dir_pkg}" "${build_list_pkg}"
eval_build_list "${build_list}"
packages=('base-devel')
${is_multilib} && packages+=('multilib-devel')
@@ -124,7 +121,7 @@ prepare_build(){
usage() {
echo "Usage: ${0##*/} [options]"
echo " -p <pkg> Build list or pkg [default: ${build_list_pkg}]"
echo " -p <pkg> Build list or pkg [default: ${build_list}]"
echo " -a <arch> Arch [default: ${target_arch}]"
echo ' -r <dir> Chroots directory'
echo " [default: ${chroots_pkg}]"
@@ -149,7 +146,7 @@ opts='p:a:r:i:odcuwnsqh'
while getopts "${opts}" arg; do
case "${arg}" in
p) build_list_pkg="$OPTARG" ;;
p) build_list="$OPTARG" ;;
a) target_arch="$OPTARG" ;;
r) chroots_pkg="$OPTARG" ;;
i) install_pkgs+=("$OPTARG"); mkchrootpkg_args+=(-I "${install_pkgs[*]}") ;;
@@ -178,4 +175,4 @@ ${delete_first} && delete_chroot "${work_dir}/root" "${work_dir}"
${create_first} && create_chroot "${mkchroot_args[@]}" "${work_dir}/root" "${packages[@]}"
run make_pkg "${build_list_pkg}"
run make_pkg "${build_list}"

View File

@@ -20,34 +20,16 @@ import ${LIBDIR}/util.sh
import ${LIBDIR}/util-yaml-check.sh
import ${LIBDIR}/util-profile.sh
prepare_check(){
local profile="$1"
local profile_dir=${run_dir}/${profile}
load_profile "${profile_dir}"
yaml_dir=${cache_dir_netinstall}/${profile}/${target_arch}
prepare_dir "${yaml_dir}"
}
show_profile(){
prepare_check "$1"
prepare_build
msg2 "yaml_dir: %s" "${yaml_dir}"
msg2 "autologin: %s" "${autologin}"
[[ ${target_arch} == 'x86_64' ]] && msg2 "multilib: %s" "${multilib}"
msg2 "extra: %s" "${extra}"
msg2 "netinstall: %s" "${netinstall}"
msg2 "chrootcfg: %s" "${chrootcfg}"
${netinstall} && msg2 "netgroups: %s" "$(get_yaml)"
msg2 "netgroups: %s" "$(get_yaml)"
msg2 "hostname: %s" "${hostname}"
msg2 "username: %s" "${username}"
msg2 "password: %s" "${password}"
msg2 "login_shell: %s" "${login_shell}"
msg2 "addgroups: %s" "${addgroups}"
msg2 "enable_live: %s" "${enable_live[*]}"
@@ -62,12 +44,8 @@ display_settings(){
show_version
show_config
# msg "PROFILE:"
# msg2 "build_lists: %s" "$(show_build_lists ${list_dir_iso})"
# msg2 "build_list_iso: %s" "${build_list_iso}"
msg2 "is_build_list: %s" "${is_build_list}"
msg "OPTIONS:"
msg2 "profile: %s" "${profile}"
msg2 "arch: %s" "${target_arch}"
msg2 "initsys: %s" "${initsys}"
msg2 "kernel: %s" "${kernel}"
@@ -76,8 +54,8 @@ display_settings(){
msg2 "calamares: %s" "${calamares}"
msg2 "group: %s" "${group}"
msg "CHECK QUEUE:"
run show_profile "${build_list_iso}"
msg "BUILD:"
show_profile
}
load_user_info
@@ -93,10 +71,11 @@ calamares=false
pretend=false
group=false
cache_dir_netinstall="${workspace_dir}/netinstall"
profile=lxqt
usage() {
echo "Usage: ${0##*/} [options]"
echo " -p <profile> Buildset or profile [default: ${build_list_iso}]"
echo " -p <profile> Buildset or profile [default: ${profile}]"
echo " -a <arch> Arch [default: ${target_arch}]"
echo " -k <name> Kernel to use[default: ${kernel}]"
echo " -i <name> Init system to use [default: ${initsys}]"
@@ -115,7 +94,7 @@ opts='p:a:i:k:gcqh'
while getopts "${opts}" arg; do
case "${arg}" in
p) build_list_iso="$OPTARG" ;;
p) profile="$OPTARG" ;;
a) target_arch="$OPTARG" ;;
i) initsys="$OPTARG" ;;
k) kernel="$OPTARG" ;;
@@ -129,10 +108,8 @@ done
shift $(($OPTIND - 1))
eval_build_list "${list_dir_iso}" "${build_list_iso}"
${pretend} && display_settings && exit 1
${group} && write_pacman_group_yaml "${build_list_iso}" && exit 0
${group} && write_pacman_group_yaml "${profile}" && exit 0
run make_profile_yaml "${build_list_iso}"
build

View File

@@ -18,18 +18,12 @@ SYSCONFDIR='@sysconfdir@'
import ${LIBDIR}/util.sh
import ${LIBDIR}/util-iso-publish.sh
show_profile(){
prepare_transfer "$1"
info "Profile: [$1]"
msg2 "src_dir: ${src_dir}"
msg2 "target_dir: ${target_dir}"
}
display_settings(){
show_version
show_config
msg "OPTIONS:"
msg2 "profile: %s" "${profile}"
msg2 "uplimit: %s kB/s" "${uplimit}"
# msg2 "dist_release: %s" "${dist_release}"
@@ -51,7 +45,8 @@ display_settings(){
msg2 "project: %s" "${project}"
msg "UPLOAD:"
show_profile "${profile}"
msg2 "src_dir: ${src_dir}"
msg2 "target_dir: ${target_dir}"
}
load_user_info
@@ -62,13 +57,13 @@ pretend=false
update=false
verbose=false
torrent=false
profile=''
profile=lxqt
rsync_args=(-aP --progress -e ssh)
usage() {
echo "Usage: ${0##*/} [options]"
echo " -p Source folder to upload"
echo " -p Source folder to upload [default: ${profile}]"
echo " -l Limit bandwidth in kB/s [default:${uplimit}]"
echo ' -u Update remote directory'
echo ' -t Create iso torrent'
@@ -101,6 +96,8 @@ timer_start=$(get_timer)
rsync_args+=(--bwlimit=${uplimit})
prepare_transfer
${pretend} && display_settings #&& exit 1
sync_dir "${profile}"
sync_dir

View File

@@ -38,13 +38,10 @@
################ buildpkg ################
# default pkg build list; name without .list extension
# build_list_pkg=default
# build_list=default
################ buildiso ################
# default iso build list; name without .list extension
# build_list_iso=default
# the dist release; default: auto
# dist_release=rolling

View File

@@ -1 +0,0 @@
lxqt

View File

@@ -2,12 +2,6 @@
###### use this file in the profile ######
##########################################
# use multilib packages; x86_64 only
# multilib="true"
# use extra packages as defined in pkglist to activate a full profile
# extra="false"
################ install ################
# default displaymanager: none
@@ -17,12 +11,6 @@
# Set to false to disable autologin in the livecd
# autologin="true"
# configure calamares for netinstall
# netinstall="false"
# configure calamares to use chrootcfg instead of unpackfs; default: unpackfs
# chrootcfg="false"
# service runlevels
# openrc_boot=('elogind')
# openrc_default=('acpid' 'bluetooth' 'cronie' 'cupsd' 'dbus' 'syslog-ng' 'NetworkManager')

View File

@@ -173,7 +173,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
<variablelist>
<varlistentry>
<term><varname>build_list_pkg=</varname></term>
<term><varname>build_list=</varname></term>
<listitem><para>Default list for buildpkg without the .list
extension.
@@ -189,13 +189,6 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
<para>The following options are understood:</para>
<variablelist>
<varlistentry>
<term><varname>build_list_iso=</varname></term>
<listitem><para>Default list for buildiso without the .list
extension.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>dist_release=</varname></term>

View File

@@ -75,8 +75,8 @@ along with artools; If not, see <http://www.gnu.org/licenses/>.
<varlistentry>
<term><option>-p PROFILE...</option></term>
<listitem><para>Name of the build list or name of the directory
you will build. It needs to contain an existing build list or a
<listitem><para>Name of the name of the directory
you will build. It needs to contain a
folder with a valid profile.</para></listitem>
</varlistentry>

View File

@@ -73,7 +73,7 @@ along with artools; If not, see <http://www.gnu.org/licenses/>.
<varlistentry>
<term><option>-p PROFILE...</option></term>
<listitem><para>Name of the build list or name of the directory.</para></listitem>
<listitem><para>Name of the profile directory.</para></listitem>
</varlistentry>
<varlistentry>

View File

@@ -73,7 +73,7 @@ along with artools; If not, see <http://www.gnu.org/licenses/>.
<varlistentry>
<term><option>-p PROFILE...</option></term>
<listitem><para>Name of the build list or name of the directory
<listitem><para>Name of the iso profile directory
you will upload.</para></listitem>
</varlistentry>

View File

@@ -91,42 +91,6 @@ along with artools; If not, see <http://www.gnu.org/licenses/>.
</listitem>
</varlistentry>
<varlistentry>
<term><varname>netinstall=</varname></term>
<listitem><para>Accepts
<option>false</option> (the default)
<option>true</option>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>chrootcfg=</varname></term>
<listitem><para>Accepts
<option>false</option> (the default)
<option>true</option>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>extra=</varname></term>
<listitem><para>Accepts
<option>false</option> (the default)
<option>false</option>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>multilib=</varname></term>
<listitem><para>Accepts
<option>true</option> (the default)
<option>false</option>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>openrc_boot=</varname></term>
@@ -166,14 +130,6 @@ along with artools; If not, see <http://www.gnu.org/licenses/>.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>login_shell=</varname></term>
<listitem><para>Accepts any login shell for the user, eg. /bin/zsh.
login_shell defaults to /bin/bash
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>addgroups=</varname></term>

View File

@@ -32,17 +32,14 @@ make_torrent(){
}
prepare_transfer(){
prof="$1"
target_dir="/iso/$prof/"
src_dir="${cache_dir_iso}/$prof/"
target_dir="/iso/${profile}/"
src_dir="${cache_dir_iso}/${profile}/"
${torrent} && make_torrent
}
sync_dir(){
prof="$1"
prepare_transfer "$prof"
msg "Start upload [%s] ..." "$prof"
msg "Start upload [%s] ..." "${profile}"
rsync "${rsync_args[@]}" ${src_dir} $(connect)${target_dir}
msg "Done upload [%s]" "$prof"
msg "Done upload [%s]" "${profile}"
show_elapsed_time "${FUNCNAME}" "${timer_start}"
}

View File

@@ -227,10 +227,7 @@ make_iso() {
gen_iso_fn(){
local vars=() name
vars+=("${os_id}")
# if ! ${chrootcfg};then
# [[ -n ${profile} ]] && vars+=("${profile}")
# fi
# [[ ${initsys} == 'openrc' ]] && vars+=("${initsys}")
# vars+=("${profile}")
vars+=("${dist_release}")
vars+=("${target_arch}")
for n in ${vars[@]};do
@@ -370,19 +367,6 @@ make_grub(){
fi
}
check_requirements(){
eval_build_list "${list_dir_iso}" "${build_list_iso}"
[[ -f ${run_dir}/repo_info ]] || die "%s is not a valid iso profiles directory!" "${run_dir}"
for sig in TERM HUP QUIT; do
trap "trap_exit $sig \"$(gettext "%s signal caught. Exiting...")\" \"$sig\"" "$sig"
done
trap 'trap_exit INT "$(gettext "Aborted by user! Exiting...")"' INT
trap 'trap_exit USR1 "$(gettext "An unknown error has occurred. Exiting...")"' ERR
}
compress_images(){
local timer=$(get_timer)
run_safe "make_iso"
@@ -408,16 +392,42 @@ prepare_images(){
show_elapsed_time "${FUNCNAME}" "${timer}"
}
archive_logs(){
local name=$(gen_iso_fn) ext=log.tar.xz src=${tmp_dir}/archives.list
find ${log_dir} -maxdepth 1 -name "$name*.log" -printf "%f\n" > $src
msg2 "Archiving log files [%s] ..." "$name.$ext"
tar -cJf ${log_dir}/$name.$ext -C ${log_dir} -T $src
msg2 "Cleaning log files ..."
find ${log_dir} -maxdepth 1 -name "$name*.log" -delete
check_requirements(){
[[ -f ${run_dir}/repo_info ]] || die "%s is not a valid iso profiles directory!" "${run_dir}"
for sig in TERM HUP QUIT; do
trap "trap_exit $sig \"$(gettext "%s signal caught. Exiting...")\" \"$sig\"" "$sig"
done
trap 'trap_exit INT "$(gettext "Aborted by user! Exiting...")"' INT
trap 'trap_exit USR1 "$(gettext "An unknown error has occurred. Exiting...")"' ERR
}
make_profile(){
prepare_build(){
timer_start=$(get_timer)
local profile_dir=${run_dir}/${profile}
load_profile "${profile_dir}"
local pac_arch='default' pacman_conf
[[ "${target_arch}" == 'x86_64' ]] && pac_arch='multilib'
pacman_conf="${DATADIR}/pacman-$pac_arch.conf"
iso_file=$(gen_iso_fn).iso
mkchroot_args+=(-C ${pacman_conf})
work_dir=${chroots_iso}/${profile}/${target_arch}
iso_dir="${cache_dir_iso}/${profile}"
iso_root=${chroots_iso}/${profile}/iso
mnt_dir=${chroots_iso}/${profile}/mnt
prepare_dir "${mnt_dir}"
prepare_dir "${iso_dir}"
}
build(){
prepare_build
msg "Start building [%s]" "${profile}"
if ${clean_first};then
chroot_clean "${chroots_iso}/${profile}/${target_arch}"
@@ -435,26 +445,17 @@ make_profile(){
if ${iso_only}; then
[[ ! -d ${work_dir} ]] && die "Create images: buildiso -p %s -x" "${profile}"
compress_images
${verbose} && archive_logs
exit 1
fi
if ${images_only}; then
prepare_images
${verbose} && archive_logs
warning "Continue compress: buildiso -p %s -zc ..." "${profile}"
exit 1
else
prepare_images
compress_images
${verbose} && archive_logs
fi
reset_profile
msg "Finished building [%s]" "${profile}"
show_elapsed_time "${FUNCNAME}" "${timer_start}"
}
build(){
local prof="$1"
prepare_build "$prof"
make_profile
}

View File

@@ -27,6 +27,15 @@ update_lock(){
rsync "${rsync_args[@]}" --exclude='os' "${repos_local}/$repo/" "$(connect)${repos_remote}/$repo/"
}
is_locked(){
local repo="$1" url="https://${host}/projects/${project}/files/repos"
if wget --spider -v $url/$repo/$repo.lock;then
return 0
else
return 1
fi
}
repo_lock(){
local repo="$1"
if [[ ! -f ${repos_local}/$repo/$repo.lock ]];then
@@ -47,8 +56,11 @@ repo_unlock(){
repo_download(){
local repo="$1"
rsync "${rsync_args[@]}" "$(connect)${repos_remote}/$repo/" "${repos_local}/$repo/"
[[ -f ${repos_local}/$repo/$repo.lock ]] && die "The '%s' repository is locked" "$repo"
if is_locked "$repo"; then
die "The '%s' repository is locked" "$repo"
else
rsync "${rsync_args[@]}" "$(connect)${repos_remote}/$repo/" "${repos_local}/$repo/"
fi
}
repo_upload(){

View File

@@ -33,7 +33,7 @@ sync_tree_branches(){
info "needs sync"
git pull origin $b
fi
msg "Done [%s]" "$repo"
msg "Done [%s] (%s)" "$repo" "$b"
done
git checkout master &> /dev/null
show_elapsed_time "${FUNCNAME}" "${timer}"

View File

@@ -9,14 +9,37 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
repo_add_pkg(){
repo="$1" arch="$2" pkg="$3" ext="db.tar.xz"
repo-add "$repo/os/$arch/$repo.$ext" "$repo/os/$arch/$pkg"
# $1: list_dir
show_build_lists(){
local list temp
for item in $(ls $1/*.list); do
temp=${item##*/}
list=${list:-}${list:+|}${temp%.list}
done
echo $list
}
repo_del_pkg(){
repo="$1" arch="$2" pkg="$3" ext="db.tar.xz"
repo-remove "$repo/os/$arch/$repo.$ext" "$repo/os/$arch/$pkg"
read_build_list(){
local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g"
build_list=$(sed "$_com_rm" "$1.list" | sed "$_space" | sed "$_clean")
}
# $1: build list
eval_build_list(){
eval "case $1 in
$(show_build_lists ${list_dir_pkg})) is_build_list=true; read_build_list ${list_dir_pkg}/$1 ;;
*) is_build_list=false ;;
esac"
}
run(){
if ${is_build_list};then
for item in ${build_list[@]};do
$1 $item
done
else
$1 $2
fi
}
in_array() {

View File

@@ -39,16 +39,12 @@ load_profile(){
[[ -z ${autologin} ]] && autologin="true"
[[ ${displaymanager} == 'none' ]] && autologin="false"
[[ -z ${multilib} ]] && multilib="true"
[[ -z ${hostname} ]] && hostname="artix"
[[ -z ${username} ]] && username="artix"
[[ -z ${password} ]] && password="artix"
[[ -z ${login_shell} ]] && login_shell='/bin/bash'
if [[ -z ${addgroups} ]];then
addgroups="video,power,storage,optical,network,lp,scanner,wheel,users"
fi
@@ -63,48 +59,31 @@ load_profile(){
[[ ${displaymanager} != "none" ]] && openrc_default+=('xdm')
[[ -z ${netinstall} ]] && netinstall='false'
[[ -z ${chrootcfg} ]] && chrootcfg='false'
enable_live=('artix-live' 'pacman-init')
netgroups="https://raw.githubusercontent.com/artix-linux/iso-profiles/master/shared/netgroups"
netgroups="https://raw.githubusercontent.com/artix-linux/iso-profiles/master/base/netgroups"
basic='true'
[[ -z ${extra} ]] && extra='false'
${extra} && basic='false'
root_list=${run_dir}/shared/Packages-Root
root_list=${run_dir}/base/Packages-Root
[[ -f "$profdir/Packages-Root" ]] && root_list="$profdir/Packages-Root"
root_overlay="${run_dir}/shared/root-overlay"
root_overlay="${run_dir}/base/root-overlay"
[[ -d "$profdir/root-overlay" ]] && root_overlay="$profdir/root-overlay"
[[ -f "$profdir/Packages-Desktop" ]] && desktop_list=$profdir/Packages-Desktop
[[ -d "$profdir/desktop-overlay" ]] && desktop_overlay="$profdir/desktop-overlay"
live_list="${run_dir}/shared/Packages-Live"
live_list="${run_dir}/base/Packages-Live"
[[ -f "$profdir/Packages-Live" ]] && live_list="$profdir/Packages-Live"
live_overlay="${run_dir}/shared/live-overlay"
live_overlay="${run_dir}/base/live-overlay"
[[ -d "$profdir/live-overlay" ]] && live_overlay="$profdir/live-overlay"
if ${netinstall};then
sort -u ${run_dir}/shared/Packages-Net ${live_list} > ${tmp_dir}/packages-live-net.list
live_list=${tmp_dir}/packages-live-net.list
else
chrootcfg="false"
fi
return 0
}
reset_profile(){
unset displaymanager
unset autologin
unset multilib
unset hostname
unset username
unset password
@@ -112,10 +91,6 @@ reset_profile(){
unset openrc_boot
unset openrc_default
unset enable_live
unset login_shell
unset netinstall
unset chrootcfg
unset extra
unset root_list
unset desktop_list
unset live_list
@@ -134,9 +109,6 @@ write_live_session_conf(){
echo '# autologin' >> ${conf}
echo "autologin=${autologin}" >> ${conf}
echo '' >> ${conf}
echo '# login shell' >> ${conf}
echo "login_shell=${login_shell}" >> ${conf}
echo '' >> ${conf}
echo '# live username' >> ${conf}
echo "username=${username}" >> ${conf}
echo '' >> ${conf}
@@ -152,32 +124,18 @@ load_pkgs(){
local pkglist="$1" arch="$2" init="$3" _kv="$4"
info "Loading Packages: [%s] ..." "${pkglist##*/}"
local _init="s|>openrc||g" #_init_rm="s|>runit.*||g"
local _init="s|>$init||g"
case "$init" in
'openrc') _init_rm1="s|>runit.*||g"; _init_rm2="s|>s6*||g" ;;
's6') _init_rm1="s|>runit.*||g"; _init_rm2="s|>openrc.*||g" ;;
'runit') _init_rm1="s|>s6.*||g"; _init_rm2="s|>openrc.*||g" ;;
esac
local _basic="s|>basic.*||g"
if ${basic};then
_basic="s|>basic||g"
fi
local _extra="s|>extra.*||g"
if ${extra};then
_extra="s|>extra||g"
fi
local _multi _arch _arch_rm
local _arch="s|>x86_64||g" _arch_rm="s|>i686.*||g"
if [[ "$arch" == 'i686' ]];then
_arch="s|>i686||g"
_arch_rm="s|>x86_64.*||g"
_multi="s|>multilib.*||g"
else
_arch="s|>x86_64||g"
_arch_rm="s|>i686.*||g"
if ${multilib};then
_multi="s|>multilib||g"
else
_multi="s|>multilib.*||g"
fi
fi
local _blacklist="s|>blacklist.*||g" \
@@ -191,11 +149,10 @@ load_pkgs(){
| sed "$_blacklist" \
| sed "$_purge" \
| sed "$_init" \
| sed "$_init_rm1" \
| sed "$_init_rm2" \
| sed "$_arch" \
| sed "$_arch_rm" \
| sed "$_multi" \
| sed "$_kernel" \
| sed "$_basic" \
| sed "$_extra" \
| sed "$_clean"))
}

View File

@@ -12,36 +12,48 @@
import ${LIBDIR}/util-yaml.sh
write_netgroup_yaml(){
msg2 "Writing %s ..." "${2##*/}"
echo "---" > "$2"
echo "- name: '$1'" >> "$2"
echo " description: '$1'" >> "$2"
echo " selected: false" >> "$2"
echo " hidden: false" >> "$2"
echo " critical: false" >> "$2"
echo " packages:" >> "$2"
local name="$1" yaml="$2"
msg2 "Writing %s ..." "${yaml##*/}"
echo "---" > "$yaml"
echo "- name: '$name'" >> "$yaml"
echo " description: '$name'" >> "$yaml"
echo " selected: false" >> "$yaml"
echo " hidden: false" >> "$yaml"
echo " critical: false" >> "$yaml"
echo " packages:" >> "$yaml"
for p in ${packages[@]};do
echo " - $p" >> "$2"
echo " - $p" >> "$yaml"
done
}
write_pacman_group_yaml(){
packages=$(pacman -Sgq "$1")
local group="$1"
packages=$(pacman -Sgq "$group")
prepare_dir "${cache_dir_netinstall}/pacman"
write_netgroup_yaml "$1" "${cache_dir_netinstall}/pacman/$1.yaml"
write_netgroup_yaml "$group" "${cache_dir_netinstall}/pacman/$group.yaml"
}
gen_fn(){
echo "${yaml_dir}/$1-${target_arch}-${initsys}.yaml"
}
make_profile_yaml(){
prepare_check "$1"
prepare_build(){
local profile_dir=${run_dir}/${profile}
load_profile "${profile_dir}"
yaml_dir=${cache_dir_netinstall}/${profile}/${target_arch}
prepare_dir "${yaml_dir}"
}
build(){
prepare_build
load_pkgs "${root_list}" "${target_arch}" "${initsys}" "${kernel}"
write_netgroup_yaml "$1" "$(gen_fn "Packages-Root")"
write_netgroup_yaml "${profile}" "$(gen_fn "Packages-Root")"
if [[ -f "${desktop_list}" ]]; then
load_pkgs "${desktop_list}" "${target_arch}" "${initsys}" "${kernel}"
write_netgroup_yaml "$1" "$(gen_fn "Packages-Desktop")"
write_netgroup_yaml "${profile}" "$(gen_fn "Packages-Desktop")"
fi
${calamares} && configure_calamares "${yaml_dir}"
reset_profile

View File

@@ -93,21 +93,6 @@ write_initcpio_conf(){
echo "kernel: ${kernel}" >> "$conf"
}
write_unpack_conf(){
local conf="${modules_dir}/unpackfs.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo "---" > "$conf"
echo "unpack:" >> "$conf"
echo " - source: \"/run/artix/bootmnt/${os_id}/${target_arch}/rootfs.sfs\"" >> "$conf"
echo " sourcefs: \"squashfs\"" >> "$conf"
echo " destination: \"\"" >> "$conf"
if [[ -f "${desktop_list}" ]] ; then
echo " - source: \"/run/artix/bootmnt/${os_id}/${target_arch}/desktopfs.sfs\"" >> "$conf"
echo " sourcefs: \"squashfs\"" >> "$conf"
echo " destination: \"\"" >> "$conf"
fi
}
write_users_conf(){
local conf="${modules_dir}/users.conf"
msg2 "Writing %s ..." "${conf##*/}"
@@ -127,15 +112,6 @@ write_users_conf(){
echo "avatarFilePath: ~/.face" >> "$conf" # mostly used file-name for avatar
}
write_packages_conf(){
local conf="${modules_dir}/packages.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo "---" > "$conf"
echo "backend: pacman" >> "$conf"
echo '' >> "$conf"
echo "update_db: true" >> "$conf"
}
write_welcome_conf(){
local conf="${modules_dir}/welcome.conf"
msg2 "Writing %s ..." "${conf##*/}"
@@ -158,9 +134,7 @@ write_welcome_conf(){
echo " - storage" >> "$conf"
echo " - ram" >> "$conf"
echo " - root" >> "$conf"
if ${netinstall};then
echo " - internet" >> "$conf"
fi
echo " - internet" >> "$conf"
}
write_umount_conf(){
@@ -172,17 +146,7 @@ write_umount_conf(){
}
get_yaml(){
local args=() yaml
if ${chrootcfg};then
args+=("chrootcfg")
else
args+=("packages")
fi
args+=("${initsys}")
for arg in ${args[@]};do
yaml=${yaml:-}${yaml:+-}${arg}
done
echo "${yaml}.yaml"
echo "netgroups-${initsys}.yaml"
}
write_netinstall_conf(){
@@ -213,26 +177,13 @@ write_settings_conf(){
echo " - keyboard" >> "$conf"
echo " - partition" >> "$conf"
echo " - users" >> "$conf" && write_users_conf
if ${netinstall};then
echo " - netinstall" >> "$conf" && write_netinstall_conf
fi
echo " - netinstall" >> "$conf" && write_netinstall_conf
echo " - summary" >> "$conf"
echo " - exec:" >> "$conf"
echo " - partition" >> "$conf"
echo " - mount" >> "$conf"
if ${netinstall};then
if ${chrootcfg}; then
echo " - chrootcfg" >> "$conf"
echo " - networkcfg" >> "$conf"
else
echo " - unpackfs" >> "$conf" && write_unpack_conf
echo " - networkcfg" >> "$conf"
echo " - packages" >> "$conf" && write_packages_conf
fi
else
echo " - unpackfs" >> "$conf" && write_unpack_conf
echo " - networkcfg" >> "$conf"
fi
echo " - chrootcfg" >> "$conf"
echo " - networkcfg" >> "$conf"
echo " - machineid" >> "$conf" && write_machineid_conf
echo " - fstab" >> "$conf"
echo " - locale" >> "$conf"

View File

@@ -8,80 +8,6 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# $1: section
parse_section() {
local is_section=0
while read line; do
[[ $line =~ ^\ {0,}# ]] && continue
[[ -z "$line" ]] && continue
if [ $is_section == 0 ]; then
if [[ $line =~ ^\[.*?\] ]]; then
line=${line:1:$((${#line}-2))}
section=${line// /}
if [[ $section == $1 ]]; then
is_section=1
continue
fi
continue
fi
elif [[ $line =~ ^\[.*?\] && $is_section == 1 ]]; then
break
else
pc_key=${line%%=*}
pc_key=${pc_key// /}
pc_value=${line##*=}
pc_value=${pc_value## }
eval "$pc_key='$pc_value'"
fi
done < "$2"
}
get_repos() {
local section repos=() filter='^\ {0,}#'
while read line; do
[[ $line =~ "${filter}" ]] && continue
[[ -z "$line" ]] && continue
if [[ $line =~ ^\[.*?\] ]]; then
line=${line:1:$((${#line}-2))}
section=${line// /}
case ${section} in
"options") continue ;;
*) repos+=("${section}") ;;
esac
fi
done < "$1"
echo ${repos[@]}
}
check_user_repos_conf(){
local repositories=$(get_repos "$1") uri='file://'
for repo in ${repositories[@]}; do
msg2 "parsing repo [%s] ..." "${repo}"
parse_section "${repo}" "$1"
[[ ${pc_value} == $uri* ]] && die "Using local repositories is not supported!"
done
}
# $1: list_dir
show_build_lists(){
local list temp
for item in $(ls $1/*.list); do
temp=${item##*/}
list=${list:-}${list:+|}${temp%.list}
done
echo $list
}
# $1: make_conf_dir
show_build_profiles(){
local cpuarch temp
for item in $(ls $1/*.conf); do
temp=${item##*/}
cpuarch=${cpuarch:-}${cpuarch:+|}${temp%.conf}
done
echo $cpuarch
}
get_timer(){
echo $(date +%s)
}
@@ -189,7 +115,7 @@ init_buildpkg(){
[[ -d ${AT_USERCONFDIR}/pkg.list.d ]] && list_dir_pkg=${AT_USERCONFDIR}/pkg.list.d
[[ -z ${build_list_pkg} ]] && build_list_pkg='default'
[[ -z ${build_list} ]] && build_list='default'
cache_dir_pkg=${workspace_dir}/pkg
@@ -199,12 +125,6 @@ init_buildpkg(){
init_buildiso(){
chroots_iso="${chroots_dir}/buildiso"
list_dir_iso="${SYSCONFDIR}/iso.list.d"
[[ -d ${AT_USERCONFDIR}/iso.list.d ]] && list_dir_iso=${AT_USERCONFDIR}/iso.list.d
[[ -z ${build_list_iso} ]] && build_list_iso='default'
cache_dir_iso="${workspace_dir}/iso"
prepare_dir "${cache_dir_iso}"
@@ -312,30 +232,6 @@ show_config(){
fi
}
read_build_list(){
local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g"
build_list=$(sed "$_com_rm" "$1.list" | sed "$_space" | sed "$_clean")
}
# $1: list_dir
# $2: build list
eval_build_list(){
eval "case $2 in
$(show_build_lists $1)) is_build_list=true; read_build_list $1/$2 ;;
*) is_build_list=false ;;
esac"
}
run(){
if ${is_build_list};then
for item in ${build_list[@]};do
$1 $item
done
else
$1 $2
fi
}
check_root() {
(( EUID == 0 )) && return
if type -P sudo >/dev/null; then