forked from artix/artools
		
	Compare commits
	
		
			9 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 04d3472173 | |||
| 117e0d2f55 | |||
| 4dc7aa8e65 | |||
| 2fc3044e40 | |||
| 77e6e9dfb4 | |||
| b4d9195c03 | |||
| 0123e6d044 | |||
| e2b2a21ed1 | |||
| 0e2e2875db | 
							
								
								
									
										23
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
| VERSION=0.13 | VERSION=0.14 | ||||||
|  |  | ||||||
| CHROOT_VERSION=0.9 | CHROOT_VERSION=0.9 | ||||||
|  |  | ||||||
| @@ -8,7 +8,6 @@ SYSCONFDIR = /etc | |||||||
| BINDIR = $(PREFIX)/bin | BINDIR = $(PREFIX)/bin | ||||||
| LIBDIR = $(PREFIX)/lib | LIBDIR = $(PREFIX)/lib | ||||||
| DATADIR = $(PREFIX)/share | DATADIR = $(PREFIX)/share | ||||||
| CPIODIR = $(SYSCONFDIR)/initcpio |  | ||||||
|  |  | ||||||
| CONF = \ | CONF = \ | ||||||
| 	data/artools.conf | 	data/artools.conf | ||||||
| @@ -34,15 +33,11 @@ PKG_BIN = \ | |||||||
| 	bin/pkg/deploypkg \ | 	bin/pkg/deploypkg \ | ||||||
| 	bin/pkg/commitpkg \ | 	bin/pkg/commitpkg \ | ||||||
| 	bin/pkg/comparepkg \ | 	bin/pkg/comparepkg \ | ||||||
| 	bin/pkg/checkpkg \ |  | ||||||
| 	bin/pkg/mkchrootpkg \ | 	bin/pkg/mkchrootpkg \ | ||||||
| 	bin/pkg/pkg2yaml \ | 	bin/pkg/pkg2yaml \ | ||||||
| 	bin/pkg/buildtree \ | 	bin/pkg/buildtree \ | ||||||
| 	bin/pkg/lddd \ | 	bin/pkg/lddd \ | ||||||
| 	bin/pkg/finddeps \ | 	bin/pkg/links-add | ||||||
| 	bin/pkg/find-libdeps \ |  | ||||||
| 	bin/pkg/links-add \ |  | ||||||
| 	bin/pkg/sogrep |  | ||||||
|  |  | ||||||
| LN_COMMITPKG = \ | LN_COMMITPKG = \ | ||||||
| 	extrapkg \ | 	extrapkg \ | ||||||
| @@ -113,8 +108,8 @@ ISO_LIBS = \ | |||||||
|  |  | ||||||
| ISO_UTIL = lib/util-iso.sh | ISO_UTIL = lib/util-iso.sh | ||||||
|  |  | ||||||
| ISO_DATA = \ | DRACUT = \ | ||||||
| 	data/iso/mkinitcpio.conf | 	data/dracut.conf | ||||||
|  |  | ||||||
| DIRMODE = -dm0755 | DIRMODE = -dm0755 | ||||||
| FILEMODE = -m0644 | FILEMODE = -m0644 | ||||||
| @@ -171,8 +166,6 @@ install_pkg: | |||||||
| 	install $(DIRMODE) $(DESTDIR)$(BINDIR) | 	install $(DIRMODE) $(DESTDIR)$(BINDIR) | ||||||
| 	install $(MODE) $(PKG_BIN) $(DESTDIR)$(BINDIR) | 	install $(MODE) $(PKG_BIN) $(DESTDIR)$(BINDIR) | ||||||
|  |  | ||||||
| 	$(LN) find-libdeps $(DESTDIR)$(BINDIR)/find-libprovides |  | ||||||
|  |  | ||||||
| 	$(LN) links-add $(DESTDIR)$(BINDIR)/links-remove | 	$(LN) links-add $(DESTDIR)$(BINDIR)/links-remove | ||||||
|  |  | ||||||
| 	for l in $(LN_COMMITPKG); do $(LN) commitpkg $(DESTDIR)$(BINDIR)/$$l; done | 	for l in $(LN_COMMITPKG); do $(LN) commitpkg $(DESTDIR)$(BINDIR)/$$l; done | ||||||
| @@ -191,10 +184,8 @@ install_pkg: | |||||||
|  |  | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/pkglists | 	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/pkglists | ||||||
| 	install $(FILEMODE) $(PKG_LISTS) $(DESTDIR)$(DATADIR)/$(TOOLS)/pkglists | 	install $(FILEMODE) $(PKG_LISTS) $(DESTDIR)$(DATADIR)/$(TOOLS)/pkglists | ||||||
| install_cpio: |  | ||||||
| 	+make CPIODIR=$(CPIODIR) DESTDIR=$(DESTDIR) -C initcpio install |  | ||||||
|  |  | ||||||
| install_iso: install_cpio | install_iso: | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(BINDIR) | 	install $(DIRMODE) $(DESTDIR)$(BINDIR) | ||||||
| 	install $(MODE) $(ISO_BIN) $(DESTDIR)$(BINDIR) | 	install $(MODE) $(ISO_BIN) $(DESTDIR)$(BINDIR) | ||||||
|  |  | ||||||
| @@ -204,8 +195,8 @@ install_iso: install_cpio | |||||||
| 	install $(FILEMODE) $(ISO_UTIL) $(DESTDIR)$(LIBDIR)/$(TOOLS) | 	install $(FILEMODE) $(ISO_UTIL) $(DESTDIR)$(LIBDIR)/$(TOOLS) | ||||||
| 	install $(FILEMODE) $(ISO_LIBS) $(DESTDIR)$(LIBDIR)/$(TOOLS)/iso | 	install $(FILEMODE) $(ISO_LIBS) $(DESTDIR)$(LIBDIR)/$(TOOLS)/iso | ||||||
|  |  | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS) | 	install $(DIRMODE) $(DESTDIR)$(SYSCONFDIR)/dracut.cond.d | ||||||
| 	install $(FILEMODE) $(ISO_DATA) $(DESTDIR)$(DATADIR)/$(TOOLS) | 	install $(FILEMODE) $(DRACUT) $(DESTDIR)$(SYSCONFDIR)/dracut.cond.d/90-artix-live.conf | ||||||
|  |  | ||||||
| install: install_base install_pkg install_iso | install: install_base install_pkg install_iso | ||||||
|  |  | ||||||
|   | |||||||
| @@ -34,7 +34,7 @@ artools | |||||||
|   * dosfstools |   * dosfstools | ||||||
|   * libisoburn |   * libisoburn | ||||||
|   * squashfs-tools |   * squashfs-tools | ||||||
|   * mkinitcpio |   * dracut | ||||||
|   * grub |   * grub | ||||||
|  |  | ||||||
| #### Configuration | #### Configuration | ||||||
|   | |||||||
| @@ -1,80 +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 |  | ||||||
| . @libdir@/artools/util-pkg.sh |  | ||||||
|  |  | ||||||
| shopt -s extglob |  | ||||||
|  |  | ||||||
| load_user_info |  | ||||||
|  |  | ||||||
| load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" |  | ||||||
| load_vars /etc/makepkg.conf |  | ||||||
|  |  | ||||||
| if [[ ! -f PKGBUILD ]]; then |  | ||||||
|     die 'This must be run in the directory of a built package.' |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| . ./PKGBUILD |  | ||||||
| if [[ $arch == 'any' ]]; then |  | ||||||
|     CARCH='any' |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| STARTDIR=$(pwd) |  | ||||||
| TEMPDIR=$(mktemp -d --tmpdir checkpkg-script.XXXX) |  | ||||||
|  |  | ||||||
| for _pkgname in "${pkgname[@]}"; do |  | ||||||
|     target_pkgver=$(get_full_version "$_pkgname") |  | ||||||
|     if ! pkgfile=$(find_cached_package "$_pkgname" "$target_pkgver" "$CARCH"); then |  | ||||||
|         die 'tarball not found for package: %s' "${_pkgname}-$target_pkgver" |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     ln -s "$pkgfile" "$TEMPDIR" |  | ||||||
|  |  | ||||||
|     pkgurl=$(pacman -Spdd --print-format '%l' --noconfirm "$_pkgname") |  | ||||||
|  |  | ||||||
|     if [[ $? -ne 0 ]]; then |  | ||||||
|         die "Couldn't download previous package for %s." "$_pkgname" |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     oldpkg=${pkgurl##*://*/} |  | ||||||
|  |  | ||||||
|     if [[ ${oldpkg##*/} = ${pkgfile##*/} ]]; then |  | ||||||
|         die "The built package (%s) is the one in the repo right now!" "$_pkgname" |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     if [[ $pkgurl = file://* ]]; then |  | ||||||
|         ln -s "${pkgurl#file://}" "$TEMPDIR/$oldpkg" |  | ||||||
|     elif [[ -f "$PKGDEST/$oldpkg" ]]; then |  | ||||||
|         ln -s "$PKGDEST/$oldpkg" "$TEMPDIR/$oldpkg" |  | ||||||
|     elif [[ -f "$STARTDIR/$oldpkg" ]]; then |  | ||||||
|         ln -s "$STARTDIR/$oldpkg" "$TEMPDIR/$oldpkg" |  | ||||||
|     else |  | ||||||
|         curl -fsLC - --retry 3 --retry-delay 3 -o "$TEMPDIR/$oldpkg" "$pkgurl" |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     bsdtar tf "$TEMPDIR/$oldpkg" | sort > "$TEMPDIR/filelist-$_pkgname-old" |  | ||||||
|     bsdtar tf "$pkgfile" | sort > "$TEMPDIR/filelist-$_pkgname" |  | ||||||
|  |  | ||||||
|     sdiff -s "$TEMPDIR/filelist-$_pkgname-old" "$TEMPDIR/filelist-$_pkgname" |  | ||||||
|  |  | ||||||
|     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" |  | ||||||
|         echo "$diff_output" |  | ||||||
|     else |  | ||||||
|         msg "No soname differences for %s" "$_pkgname." |  | ||||||
|     fi |  | ||||||
| done |  | ||||||
| @@ -15,19 +15,12 @@ | |||||||
| . @libdir@/artools/util-base.sh | . @libdir@/artools/util-base.sh | ||||||
| . @libdir@/artools/util-pkg.sh | . @libdir@/artools/util-pkg.sh | ||||||
|  |  | ||||||
| show_version_table(){ | compare(){ | ||||||
|     msg_table_header "%-20s %-20s %-25s %-30s %-30s" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" |     local pkgpath="$1" | ||||||
|  |     local pkg=${pkgpath##*/} | ||||||
|     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 |  | ||||||
|  |  | ||||||
|             local pkg=${package##*/} |  | ||||||
|     local artixrepo=$(find_repo "$package" "${staging}" "${unstable}") |     local artixrepo=$(find_repo "$package" "${staging}" "${unstable}") | ||||||
|     local artixshow=${artixrepo%-*} |     local artixshow=${artixrepo%-*} | ||||||
|             local pkgbuild=$package/repos/$artixrepo/PKGBUILD |     local pkgbuild=$pkgpath/repos/$artixrepo/PKGBUILD | ||||||
|  |  | ||||||
|     if [[ -f $pkgbuild ]];then |     if [[ -f $pkgbuild ]];then | ||||||
|  |  | ||||||
| @@ -83,6 +76,102 @@ show_version_table(){ | |||||||
|         unset pkgver epoch pkgrel artixver archver pkgbuild archpath |         unset pkgver epoch pkgrel artixver archver pkgbuild archpath | ||||||
|  |  | ||||||
|     fi |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | is_db_entry() { | ||||||
|  |     local pkgname="$1" repo="$(arch2artix $2)" | ||||||
|  |     if [[ -d ${USERCACHEDIR}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then | ||||||
|  |         return 0 | ||||||
|  |     fi | ||||||
|  |     return 1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | check_db(){ | ||||||
|  |     local pkgpath="$1" | ||||||
|  |     local pkg=${pkgpath##*/} | ||||||
|  |     local sarch=(any ${ARCH}) | ||||||
|  |     local arch_repos=$(arch_repos "${staging}" "${unstable}") | ||||||
|  |  | ||||||
|  |     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 $pkg) | ||||||
|  |                 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 "%-20s %-35s %-20s %-10s" "$repo" "$name" "$artixver" "$is_entry" | ||||||
|  |                     fi | ||||||
|  |                 done | ||||||
|  |                 unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase | ||||||
|  |             fi | ||||||
|  |         done | ||||||
|  |     done | ||||||
|  | } | ||||||
|  |  | ||||||
|  | update_db_cache(){ | ||||||
|  |     msg "Updating database cache" | ||||||
|  |     for repo in "${searchrepos[@]}"; do | ||||||
|  |         local cachedir=${USERCACHEDIR}/${LINKSDBEXT}/${ARCH}/${repo} | ||||||
|  |         rm -rf "$cachedir" | ||||||
|  |         mkdir -p "$cachedir" | ||||||
|  |         msg2 "%s" "$repo" | ||||||
|  |         curl -s "${REPOS_MIRROR}/${repo}/os/${ARCH}/${repo}.${LINKSDBEXT}" \ | ||||||
|  |             | bsdtar -xf - -C "$cachedir" | ||||||
|  |     done | ||||||
|  |     msg "Done" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | query_db() { | ||||||
|  |     msg_table_header "%-20s %-45s %s" "Repo" "Package" "Library" | ||||||
|  |     for repo in "${searchrepos[@]}"; do | ||||||
|  |         local prefix= | ||||||
|  |         local db=${USERCACHEDIR}/${LINKSDBEXT}/${ARCH}/${repo}/ | ||||||
|  |         if [[ -d ${db} ]]; then | ||||||
|  |             while read -rd '' pkg; do | ||||||
|  |                 read -r match | ||||||
|  |                 pkg=${pkg#${db}} | ||||||
|  |                 pkg="${pkg%/*}" | ||||||
|  |  | ||||||
|  |                 msg_row "%-20s %-45s %s" "${repo}" "${pkg}" "${match}" | ||||||
|  |             done < <(grep -rZ "${library}" "${db}") | sort -u | ||||||
|  |         fi | ||||||
|  |     done | ||||||
|  |     exit 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | show_version_table(){ | ||||||
|  |  | ||||||
|  |     if ${check};then | ||||||
|  |         ${sync} && update_db_cache | ||||||
|  |         msg_table_header "%-20s %-35s %-20s %-10s" "Repo" "Package" "Version" "Database" | ||||||
|  |     elif ${query};then | ||||||
|  |         ${sync} && update_db_cache | ||||||
|  |         query_db | ||||||
|  |     else | ||||||
|  |         msg_table_header "%-20s %-20s %-25s %-30s %-30s" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     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" | ||||||
|  |             fi | ||||||
|         done |         done | ||||||
|     done |     done | ||||||
| } | } | ||||||
| @@ -98,14 +187,31 @@ staging=true | |||||||
| upgrades=false | upgrades=false | ||||||
| downgrades=false | downgrades=false | ||||||
| move=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' | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | searchrepos=(${artix_repos[@]}) | ||||||
|  |  | ||||||
| usage() { | usage() { | ||||||
|     echo "Usage: ${0##*/} [options]" |     echo "Usage: ${0##*/} [options] (with -q [libname])" | ||||||
|     echo '    -u            Show upgrade packages' |     echo '    -u            Show upgrade packages' | ||||||
|     echo '    -d            Show downgrade packages' |     echo '    -d            Show downgrade packages' | ||||||
|     echo '    -m            Show packages to move' |     echo '    -m            Show packages to move' | ||||||
|     echo "    -x            Don't inlcude staging packages" |     echo "    -x            Don't inlcude staging packages" | ||||||
|     echo '    -y            Include unstable kde and gnome' |     echo '    -y            Include unstable kde and gnome' | ||||||
|  |     echo '    -c            Check repos' | ||||||
|  |     echo "    -s            Sync repo databases" | ||||||
|  |     echo "    -q            Query repo databases for so libs" | ||||||
|  |     echo '    -r <repo>     Repo name to query' | ||||||
|  |     echo '                  [default: all]' | ||||||
|     echo '    -h            This help' |     echo '    -h            This help' | ||||||
|     echo '' |     echo '' | ||||||
|     echo '' |     echo '' | ||||||
| @@ -114,7 +220,7 @@ usage() { | |||||||
|  |  | ||||||
| orig_argv=("$0" "$@") | orig_argv=("$0" "$@") | ||||||
|  |  | ||||||
| opts='udmxyh' | opts='r:qcsudmxyh' | ||||||
|  |  | ||||||
| while getopts "${opts}" arg; do | while getopts "${opts}" arg; do | ||||||
|     case "${arg}" in |     case "${arg}" in | ||||||
| @@ -123,6 +229,10 @@ while getopts "${opts}" arg; do | |||||||
|         m) move=true ;; |         m) move=true ;; | ||||||
|         x) staging=false ;; |         x) staging=false ;; | ||||||
|         y) unstable=true ;; |         y) unstable=true ;; | ||||||
|  |         c) check=true ;; | ||||||
|  |         s) sync=true ;; | ||||||
|  |         q) query=true ;; | ||||||
|  |         r) searchrepos=("$OPTARG") ;; | ||||||
|         h|?) usage 0 ;; |         h|?) usage 0 ;; | ||||||
|         *) echo "invalid argument '${arg}'"; usage 1 ;; |         *) echo "invalid argument '${arg}'"; usage 1 ;; | ||||||
|     esac |     esac | ||||||
| @@ -130,4 +240,6 @@ done | |||||||
|  |  | ||||||
| shift $(($OPTIND - 1)) | shift $(($OPTIND - 1)) | ||||||
|  |  | ||||||
|  | library="$1"; shift | ||||||
|  |  | ||||||
| show_version_table | show_version_table | ||||||
|   | |||||||
| @@ -1,102 +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 |  | ||||||
| . @libdir@/artools/util-pkg.sh |  | ||||||
|  |  | ||||||
| # $1: sofile |  | ||||||
| # $2: soarch |  | ||||||
| process_sofile() { |  | ||||||
|     # extract the library name: libfoo.so |  | ||||||
|     local soname="${1%.so?(+(.+([0-9])))}".so |  | ||||||
|     # extract the major version: 1 |  | ||||||
|     soversion="${1##*\.so\.}" |  | ||||||
|     if [[ "$soversion" = "$1" ]] && (($IGNORE_INTERNAL)); then |  | ||||||
|         return |  | ||||||
|     fi |  | ||||||
|     if ! in_array "${soname}=${soversion}-$2" ${soobjects[@]}; then |  | ||||||
|     # libfoo.so=1-64 |  | ||||||
|         msg "${soname}=${soversion}-$2" |  | ||||||
|         soobjects+=("${soname}=${soversion}-$2") |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| set -e |  | ||||||
| shopt -s extglob |  | ||||||
|  |  | ||||||
| IGNORE_INTERNAL=0 |  | ||||||
|  |  | ||||||
| if [[ $1 = "--ignore-internal" ]]; then |  | ||||||
|     IGNORE_INTERNAL=1 |  | ||||||
|     shift |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| script_mode=${0##*/find-lib} |  | ||||||
|  |  | ||||||
| case $script_mode in |  | ||||||
|     deps|provides) true;; |  | ||||||
|     *) die "Unknown mode %s" "$script_mode" ;; |  | ||||||
| esac |  | ||||||
|  |  | ||||||
| if [[ -z $1 ]]; then |  | ||||||
|     echo "${0##*/} [options] <package file|extracted package dir>" |  | ||||||
|     echo "Options:" |  | ||||||
|     echo "    --ignore-internal      ignore internal libraries" |  | ||||||
|     exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [[ -d $1 ]]; then |  | ||||||
|     pushd $1 >/dev/null |  | ||||||
| else |  | ||||||
|     WORKDIR=$(mktemp -d --tmpdir "${0##*/}.XXXXXXXXXX") |  | ||||||
|  |  | ||||||
|     case ${script_mode} in |  | ||||||
|         deps) bsdtar -C "$WORKDIR" -xf "$1";; |  | ||||||
|         provides) bsdtar -C "$WORKDIR" -xf "$1" --include="*.so*";; |  | ||||||
|     esac |  | ||||||
|  |  | ||||||
|     pushd "$WORKDIR" >/dev/null |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| case $script_mode in |  | ||||||
|     deps) find_args=(-perm -u+x);; |  | ||||||
|     provides) find_args=(-name *.so*);; |  | ||||||
| esac |  | ||||||
|  |  | ||||||
| find $PWD -type f "${find_args[@]}" | while read filename; do |  | ||||||
|     if [[ $script_mode = "provides" ]]; then |  | ||||||
|         # ignore if we don't have a shared object |  | ||||||
|         if ! LC_ALL=C readelf -h "$filename" 2>/dev/null | grep -q '.*Type:.*DYN (Shared object file).*'; then |  | ||||||
|             continue |  | ||||||
|         fi |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     # get architecture of the file; if soarch is empty it's not an ELF binary |  | ||||||
|     soarch=$(LC_ALL=C readelf -h "$filename" 2>/dev/null | sed -n 's/.*Class.*ELF\(32\|64\)/\1/p') |  | ||||||
|     [[ -n $soarch ]] || continue |  | ||||||
|  |  | ||||||
|     if [[ $script_mode = "provides" ]]; then |  | ||||||
|         # get the string binaries link to: libfoo.so.1.2 -> libfoo.so.1 |  | ||||||
|         sofile=$(LC_ALL=C readelf -d "$filename" 2>/dev/null | sed -n 's/.*Library soname: \[\(.*\)\].*/\1/p') |  | ||||||
|         [[ -z $sofile ]] && sofile="${filename##*/}" |  | ||||||
|         process_sofile "${sofile}" "${soarch}" |  | ||||||
|     elif [[ $script_mode = "deps" ]]; then |  | ||||||
|         # process all libraries needed by the binary |  | ||||||
|         for sofile in $(LC_ALL=C readelf -d "$filename" 2>/dev/null | sed -nr 's/.*Shared library: \[(.*)\].*/\1/p'); do |  | ||||||
|             process_sofile "${sofile}" "${soarch}" |  | ||||||
|         done |  | ||||||
|     fi |  | ||||||
| done |  | ||||||
|  |  | ||||||
| popd >/dev/null |  | ||||||
| @@ -1,48 +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 |  | ||||||
|  |  | ||||||
| match=$1 |  | ||||||
|  |  | ||||||
| if [[ -z $match ]]; then |  | ||||||
|     echo 'Usage: finddeps <depname>' |  | ||||||
|     echo '' |  | ||||||
|     echo 'Find packages that depend on a given depname.' |  | ||||||
|     echo 'Run this script from the top-level directory of your ABS tree.' |  | ||||||
|     echo '' |  | ||||||
|     exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| find $PWD -type d | while read d; do |  | ||||||
|     if [[ -f "$d/PKGBUILD" ]]; then |  | ||||||
|         unset pkgname depends makedepends optdepends |  | ||||||
|         . "$d/PKGBUILD" |  | ||||||
|         for dep in "${depends[@]}"; do |  | ||||||
|             # lose the version comparator, if any |  | ||||||
|             depname=${dep%%[<>=]*} |  | ||||||
|             [[ $depname = $match ]] && msg "$d (depends)" |  | ||||||
|         done |  | ||||||
|         for dep in "${makedepends[@]}"; do |  | ||||||
|             # lose the version comparator, if any |  | ||||||
|             depname=${dep%%[<>=]*} |  | ||||||
|             [[ $depname = $match ]] && msg "$d (makedepends)" |  | ||||||
|         done |  | ||||||
|         for dep in "${optdepends[@]/:*}"; do |  | ||||||
|             # lose the version comaparator, if any |  | ||||||
|             depname=${dep%%[<>=]*} |  | ||||||
|             [[ $depname = $match ]] && msg "$d (optdepends)" |  | ||||||
|         done |  | ||||||
|     fi |  | ||||||
| done |  | ||||||
| @@ -1,140 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
| # |  | ||||||
| #   sogrep - find shared library links in an Arch Linux repository. |  | ||||||
| # |  | ||||||
| #   Copyright (c) 2019 by Eli Schwartz <eschwartz@archlinux.org> |  | ||||||
| #   Copyright (c) 2019 artoo@artixlinux.org |  | ||||||
| # |  | ||||||
| #   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; either version 2 of the License, or |  | ||||||
| #   (at your option) any later version. |  | ||||||
| # |  | ||||||
| #   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. |  | ||||||
| # |  | ||||||
| #   You should have received a copy of the GNU General Public License |  | ||||||
| #   along with this program.  If not, see <https://www.gnu.org/licenses/>. |  | ||||||
| # |  | ||||||
|  |  | ||||||
| . @libdir@/artools/util-base.sh |  | ||||||
|  |  | ||||||
| load_user_info |  | ||||||
|  |  | ||||||
| load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" |  | ||||||
|  |  | ||||||
| # options |  | ||||||
| REFRESH=0 |  | ||||||
| VERBOSE=0 |  | ||||||
|  |  | ||||||
| recache() { |  | ||||||
|     local repo verbosity=-s |  | ||||||
|  |  | ||||||
|     (( VERBOSE )) && verbosity=--progress-bar |  | ||||||
|  |  | ||||||
|     for repo in "${ARTIX_REPOS[@]}"; do |  | ||||||
|             rm -rf "${SOCACHE_DIR}/${ARCH}/${repo}" |  | ||||||
|             mkdir -p "${SOCACHE_DIR}/${ARCH}/${repo}" |  | ||||||
|             curl "$verbosity" "${SOLINKS_MIRROR}/${repo}/os/${ARCH}/${repo}.${LINKSDBEXT}" | bsdtar -xf - -C "${SOCACHE_DIR}/${ARCH}/${repo}" |  | ||||||
|     done |  | ||||||
| } |  | ||||||
|  |  | ||||||
| search() { |  | ||||||
|     local repo=$1 lib=$2 srepos=("${ARTIX_REPOS[@]}") |  | ||||||
|  |  | ||||||
|     if [[ $repo != all ]]; then |  | ||||||
|         if ! in_array "${repo}" "${ARTIX_REPOS[@]}"; then |  | ||||||
|             echo "${BASH_SOURCE[0]##*/}: unrecognized repo '$repo'" |  | ||||||
|             echo "Try '${BASH_SOURCE[0]##*/} --help' for more information." |  | ||||||
|             exit 1 |  | ||||||
|         fi |  | ||||||
|         srepos=("${repo}") |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     for repo in "${srepos[@]}"; do |  | ||||||
|         local prefix= |  | ||||||
|         (( VERBOSE && ${#srepos[@]} > 1 )) && prefix=${repo}/ |  | ||||||
|         db=${SOCACHE_DIR}/${ARCH}/${repo}/ |  | ||||||
|         if [[ -d ${db} ]]; then |  | ||||||
|             while read -rd '' pkg; do |  | ||||||
|                 read -r match |  | ||||||
|                 pkg=${pkg#${db}} |  | ||||||
|                 pkg="${prefix}${pkg%-*-*/links}" |  | ||||||
|  |  | ||||||
|                 if (( VERBOSE )); then |  | ||||||
|                     printf '%-45s %s\n' "${pkg}" "${match}" |  | ||||||
|                 else |  | ||||||
|                     printf '%s\n' "${pkg}" |  | ||||||
|                 fi |  | ||||||
|             done < <(grep -rZ "${lib}" "${db}") | sort -u |  | ||||||
|         fi |  | ||||||
|     done |  | ||||||
| } |  | ||||||
|  |  | ||||||
| usage() { |  | ||||||
|     cat <<- _EOF_ |  | ||||||
|         Usage: ${BASH_SOURCE[0]##*/} [OPTIONS] REPO LIBNAME |  | ||||||
|  |  | ||||||
|         Check the soname links database for Artix Linux repositories containing |  | ||||||
|         packages linked to a given shared library. If the repository specified |  | ||||||
|         is "all", then all repositories will be searched, otherwise only the |  | ||||||
|         named repository will be searched. |  | ||||||
|  |  | ||||||
|         If the links database does not exist, it will be downloaded first. |  | ||||||
|  |  | ||||||
|         OPTIONS |  | ||||||
|             -v, --verbose   Show matched links in addition to pkgname |  | ||||||
|             -r, --refresh   Refresh the links databases |  | ||||||
|             -h, --help      Show this help text |  | ||||||
| _EOF_ |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # utility function to resort with multiple repos + no-verbose |  | ||||||
| resort() { sort -u; } |  | ||||||
|  |  | ||||||
| if (( $# == 0 )); then |  | ||||||
|     echo "error: No arguments passed." |  | ||||||
|     echo "Try '${BASH_SOURCE[0]##*/} --help' for more information." |  | ||||||
|     exit 1 |  | ||||||
| fi |  | ||||||
| OPT_SHORT='vrh' |  | ||||||
| OPT_LONG=('verbose' 'refresh' 'help') |  | ||||||
| if ! parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@"; then |  | ||||||
|     exit 1 |  | ||||||
| fi |  | ||||||
| set  -- "${OPTRET[@]}" |  | ||||||
|  |  | ||||||
| while :; do |  | ||||||
|     case $1 in |  | ||||||
|         -v|--verbose) |  | ||||||
|             resort() { cat; } |  | ||||||
|             VERBOSE=1 |  | ||||||
|             ;; |  | ||||||
|         -r|--refresh) |  | ||||||
|             REFRESH=1 |  | ||||||
|             ;; |  | ||||||
|         -h|--help) |  | ||||||
|             usage |  | ||||||
|             exit 0 |  | ||||||
|             ;; |  | ||||||
|         --) |  | ||||||
|             shift; break |  | ||||||
|             ;; |  | ||||||
|     esac |  | ||||||
|     shift |  | ||||||
| done |  | ||||||
|  |  | ||||||
| if ! (( ( REFRESH && $# == 0 ) || $# == 2 )); then |  | ||||||
|     echo "error: Incorrect number of arguments passed." |  | ||||||
|     echo "Try '${BASH_SOURCE[0]##*/} --help' for more information." |  | ||||||
|     exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if (( REFRESH )) || [[ ! -d ${SOCACHE_DIR} ]]; then |  | ||||||
|     recache |  | ||||||
|     (( $# == 2 )) || exit 0 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| search "$@" |  | ||||||
| @@ -42,7 +42,7 @@ | |||||||
| # REPOS_ROOT=${WORKSPACE_DIR}/repos | # REPOS_ROOT=${WORKSPACE_DIR}/repos | ||||||
|  |  | ||||||
| # default mirror for sogrep | # default mirror for sogrep | ||||||
| # SOLINKS_MIRROR="http://mirror1.artixlinux.org/repos" | # REPOS_MIRROR="http://mirror1.artixlinux.org/repos" | ||||||
|  |  | ||||||
| ############################################# | ############################################# | ||||||
| ################ artools-iso ################ | ################ artools-iso ################ | ||||||
| @@ -57,9 +57,6 @@ | |||||||
| # possible values: openrc, runit (s6 not yet supported) | # possible values: openrc, runit (s6 not yet supported) | ||||||
| # INITSYS="openrc" | # INITSYS="openrc" | ||||||
|  |  | ||||||
| # gpg key; leave empty or commented to skip sfs signing |  | ||||||
| # GPG_KEY="" |  | ||||||
|  |  | ||||||
| # set upload bandwidth limit in kB/s | # set upload bandwidth limit in kB/s | ||||||
| # UPLIMIT=1000 | # UPLIMIT=1000 | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,5 +0,0 @@ | |||||||
| MODULES=(loop dm-snapshot) |  | ||||||
|  |  | ||||||
| HOOKS=(base udev artix_shutdown artix artix_loop_mnt artix_pxe_common artix_pxe_http artix_pxe_nbd artix_pxe_nfs artix_kms modconf block filesystems keyboard keymap) |  | ||||||
|  |  | ||||||
| COMPRESSION="xz" |  | ||||||
| @@ -1,23 +0,0 @@ | |||||||
| DIRMODE = -dm0755 |  | ||||||
| MODE =  -m0755 |  | ||||||
|  |  | ||||||
| CPIOHOOKS = \ |  | ||||||
| 	$(wildcard hooks/*) |  | ||||||
|  |  | ||||||
| CPIOINST = \ |  | ||||||
| 	$(wildcard install/*) |  | ||||||
|  |  | ||||||
| SCRIPT = \ |  | ||||||
| 	$(wildcard script/*) |  | ||||||
|  |  | ||||||
| install_initcpio: |  | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(CPIODIR)/hooks |  | ||||||
| 	install $(MODE) $(CPIOHOOKS) $(DESTDIR)$(CPIODIR)/hooks |  | ||||||
|  |  | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(CPIODIR)/install |  | ||||||
| 	install $(MODE) $(CPIOINST) $(DESTDIR)$(CPIODIR)/install |  | ||||||
| 	install $(MODE) $(SCRIPT) $(DESTDIR)$(CPIODIR) |  | ||||||
|  |  | ||||||
| install: install_initcpio |  | ||||||
|  |  | ||||||
| .PHONY: install |  | ||||||
| @@ -1,250 +0,0 @@ | |||||||
| # args: source, newroot, mountpoint |  | ||||||
| _mnt_dmsnapshot() { |  | ||||||
|     local img="${1}" |  | ||||||
|     local mnt="${2}" |  | ||||||
|     local img_fullname="${img##*/}"; |  | ||||||
|     local img_name="${img_fullname%%.*}" |  | ||||||
|     local dm_snap_name="${dm_snap_prefix}_${img_name}" |  | ||||||
|     local ro_dev ro_dev_size rw_dev |  | ||||||
|  |  | ||||||
|     ro_dev=$(losetup --find --show --read-only "${img}") |  | ||||||
|     echo ${ro_dev} >> /run/artix/used_block_devices |  | ||||||
|     ro_dev_size=$(blockdev --getsz ${ro_dev}) |  | ||||||
|  |  | ||||||
|     if [[ "${cow_persistent}" == "P" ]]; then |  | ||||||
|         if [[ -f "/run/artix/cowspace/${cow_directory}/${img_name}.cow" ]]; then |  | ||||||
|             msg ":: Found '/run/artix/cowspace/${cow_directory}/${img_name}.cow', using as persistent." |  | ||||||
|         else |  | ||||||
|             msg ":: Creating '/run/artix/cowspace/${cow_directory}/${img_name}.cow' as persistent." |  | ||||||
|             truncate -s "${cow_spacesize}" "/run/artix/cowspace/${cow_directory}/${img_name}.cow" |  | ||||||
|         fi |  | ||||||
|     else |  | ||||||
|         if [[ -f "/run/artix/cowspace/${cow_directory}/${img_name}.cow" ]]; then |  | ||||||
|             msg ":: Found '/run/artix/cowspace/${cow_directory}/${img_name}.cow' but non-persistent requested, removing." |  | ||||||
|             rm -f "/run/artix/cowspace/${cow_directory}/${img_name}.cow" |  | ||||||
|         fi |  | ||||||
|         msg ":: Creating '/run/artix/cowspace/${cow_directory}/${img_name}.cow' as non-persistent." |  | ||||||
|         truncate -s "${cow_spacesize}" "/run/artix/cowspace/${cow_directory}/${img_name}.cow" |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     rw_dev=$(losetup --find --show "/run/artix/cowspace/${cow_directory}/${img_name}.cow") |  | ||||||
|     echo ${rw_dev} >> /run/artix/used_block_devices |  | ||||||
|  |  | ||||||
|     dmsetup create ${dm_snap_name} --table "0 ${ro_dev_size} snapshot ${ro_dev} ${rw_dev} ${cow_persistent} ${cow_chunksize}" |  | ||||||
|  |  | ||||||
|     if [[ "${cow_persistent}" != "P" ]]; then |  | ||||||
|         rm -f "/run/artix/cowspace/${cow_directory}/${img_name}.cow" |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     _mnt_dev "/dev/mapper/${dm_snap_name}" "${mnt}" "-w" "defaults" |  | ||||||
|     echo $(readlink -f /dev/mapper/${dm_snap_name}) >> /run/artix/used_block_devices |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # args: source, newroot, mountpoint |  | ||||||
| _mnt_overlayfs() { |  | ||||||
|     local src="${1}" |  | ||||||
|     local newroot="${2}" |  | ||||||
|     local mnt="${3}" |  | ||||||
|     local work_dir="/run/artix/overlay_root/work" |  | ||||||
|     local upper_dir="/run/artix/overlay_root/upper" |  | ||||||
|  |  | ||||||
|     mkdir -p "${upper_dir}" "${work_dir}" |  | ||||||
|  |  | ||||||
|     mount -t overlay overlay -o lowerdir="${src}",upperdir="${upper_dir}",workdir="${work_dir}" "${newroot}${mnt}" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # args: /path/to/image_file, mountpoint |  | ||||||
| _mnt_sfs() { |  | ||||||
|     local img="${1}" |  | ||||||
|     local mnt="${2}" |  | ||||||
|     local img_fullname="${img##*/}" |  | ||||||
|     local sfs_dev |  | ||||||
|     local oper=$( [[ -n "${ip}" && -n "${miso_http_srv}" ]] && echo "mv" || echo "cp" ) |  | ||||||
|  |  | ||||||
|     if [[ "${copytoram}" == "y" ]]; then |  | ||||||
|         msg -n ":: Copying squashfs image to RAM..." |  | ||||||
|         if ! "${oper}" "${img}" "/run/artix/copytoram/${img_fullname}" ; then |  | ||||||
|             echo "ERROR: while copy '${img}' to '/run/artix/copytoram/${img_fullname}'" |  | ||||||
|             launch_interactive_shell |  | ||||||
|         fi |  | ||||||
|         img="/run/artix/copytoram/${img_fullname}" |  | ||||||
|         msg "done." |  | ||||||
|     fi |  | ||||||
|     sfs_dev=$(losetup --find --show --read-only "${img}") |  | ||||||
|     echo ${sfs_dev} >> /run/artix/used_block_devices |  | ||||||
|     _mnt_dev "${sfs_dev}" "${mnt}" "-r" "defaults" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # args: device, mountpoint, flags, opts |  | ||||||
| _mnt_dev() { |  | ||||||
|     local dev="${1}" |  | ||||||
|     local mnt="${2}" |  | ||||||
|     local flg="${3}" |  | ||||||
|     local opts="${4}" |  | ||||||
|  |  | ||||||
|     mkdir -p "${mnt}" |  | ||||||
|  |  | ||||||
|     msg ":: Mounting '${dev}' to '${mnt}'" |  | ||||||
|  |  | ||||||
|     while ! poll_device "${dev}" 30; do |  | ||||||
|         echo "ERROR: '${dev}' device did not show up after 30 seconds..." |  | ||||||
|         echo "   Falling back to interactive prompt" |  | ||||||
|         echo "   You can try to fix the problem manually, log out when you are finished" |  | ||||||
|         launch_interactive_shell |  | ||||||
|     done |  | ||||||
|  |  | ||||||
|     if mount -o "${opts}" "${flg}" "${dev}" "${mnt}"; then |  | ||||||
|         msg ":: Device '${dev}' mounted successfully." |  | ||||||
|     else |  | ||||||
|         echo "ERROR; Failed to mount '${dev}'" |  | ||||||
|         echo "   Falling back to interactive prompt" |  | ||||||
|         echo "   You can try to fix the problem manually, log out when you are finished" |  | ||||||
|         launch_interactive_shell |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| _verify_checksum() { |  | ||||||
|     local _status |  | ||||||
|     cd "/run/artix/bootmnt/${artixbasedir}/${arch}" |  | ||||||
|     sha512sum -c $1.sha512 > /tmp/checksum.log 2>&1 |  | ||||||
|     _status=$? |  | ||||||
|     cd "${OLDPWD}" |  | ||||||
|     return ${_status} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| _verify_signature() { |  | ||||||
|     local _status |  | ||||||
|     cd "/run/artix/bootmnt/${artixbasedir}/${arch}" |  | ||||||
|     gpg --homedir /gpg --status-fd 1 --verify $1.sfs.sig 2>/dev/null | grep -qE '^\[GNUPG:\] GOODSIG' |  | ||||||
|     _status=$? |  | ||||||
|     cd "${OLDPWD}" |  | ||||||
|     return ${_status} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| run_hook() { |  | ||||||
|     [[ -z "${arch}" ]] && arch="$(uname -m)" |  | ||||||
|     [[ -z "${copytoram_size}" ]] && copytoram_size="75%" |  | ||||||
|     [[ -z "${artixbasedir}" ]] && artixbasedir="artix" |  | ||||||
|  |  | ||||||
|     [[ -z "${dm_snap_prefix}" ]] && dm_snap_prefix="arch" |  | ||||||
|     [[ -z "${artixdevice}" ]] && artixdevice="/dev/disk/by-label/${artixlabel}" |  | ||||||
|     [[ -z "${cow_spacesize}" ]] && cow_spacesize="256M" |  | ||||||
|     [[ -z "${overlay_root_size}" ]] && overlay_root_size="75%" |  | ||||||
|  |  | ||||||
|     if [[ -n "${cow_label}" ]]; then |  | ||||||
|         cow_device="/dev/disk/by-label/${cow_label}" |  | ||||||
|         [[ -z "${cow_persistent}" ]] && cow_persistent="P" |  | ||||||
|     elif [[ -n "${cow_device}" ]]; then |  | ||||||
|         [[ -z "${cow_persistent}" ]] && cow_persistent="P" |  | ||||||
|     else |  | ||||||
|         cow_persistent="N" |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     [[ -z "${cow_flags}" ]] && cow_flags="defaults" |  | ||||||
|     [[ -z "${cow_directory}" ]] && cow_directory="persistent_${artixlabel}/${arch}" |  | ||||||
|     [[ -z "${cow_chunksize}" ]] && cow_chunksize="8" |  | ||||||
|  |  | ||||||
|     # set mount handler for artix |  | ||||||
|     mount_handler="artix_mount_handler" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # This function is called normally from init script, but it can be called |  | ||||||
| # as chain from other mount handlers. |  | ||||||
| # args: /path/to/newroot |  | ||||||
| artix_mount_handler() { |  | ||||||
|     local newroot="${1}" |  | ||||||
|  |  | ||||||
|     if ! mountpoint -q "/run/artix/bootmnt"; then |  | ||||||
|         _mnt_dev "${artixdevice}" "/run/artix/bootmnt" "-r" "defaults" |  | ||||||
|         if [[ "${copytoram}" != "y" ]]; then |  | ||||||
|             echo $(readlink -f ${artixdevice}) >> /run/artix/used_block_devices |  | ||||||
|         fi |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     if [[ "${checksum}" == "y" ]]; then |  | ||||||
|         for fs in rootfs desktopfs livefs;do |  | ||||||
|             if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs" ]]; then |  | ||||||
|                 if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sha512" ]]; then |  | ||||||
|                     msg -n ":: Self-test requested, please wait..." |  | ||||||
|                     if _verify_checksum "${fs}"; then |  | ||||||
|                         msg "done. Checksum is OK, continue booting." |  | ||||||
|                     else |  | ||||||
|                         echo "ERROR: one or more files are corrupted" |  | ||||||
|                         echo "see /tmp/checksum.log for details" |  | ||||||
|                         launch_interactive_shell |  | ||||||
|                     fi |  | ||||||
|                 else |  | ||||||
|                     echo "ERROR: checksum=y option specified but ${artixbasedir}/${arch}/${fs}.sha512 not found" |  | ||||||
|                     launch_interactive_shell |  | ||||||
|                 fi |  | ||||||
|             fi |  | ||||||
|         done |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     if [[ "${verify}" == "y" ]]; then |  | ||||||
|         for fs in rootfs desktopfs livefs;do |  | ||||||
|             if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs" ]]; then |  | ||||||
|                 if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs.sig" ]]; then |  | ||||||
|                     msg -n ":: Signature verification requested, please wait..." |  | ||||||
|                     if _verify_signature "${fs}"; then |  | ||||||
|                         msg "done. Signature is OK, continue booting." |  | ||||||
|                     else |  | ||||||
|                         echo "ERROR: one or more files are corrupted" |  | ||||||
|                         launch_interactive_shell |  | ||||||
|                     fi |  | ||||||
|                 else |  | ||||||
|                     echo "ERROR: verify=y option specified but ${artixbasedir}/${arch}/${fs}.sfs.sig not found" |  | ||||||
|                     launch_interactive_shell |  | ||||||
|                 fi |  | ||||||
|             fi |  | ||||||
|         done |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     if [[ "${copytoram}" == "y" ]]; then |  | ||||||
|         msg ":: Mounting /run/artix/copytoram (tmpfs) filesystem, size=${copytoram_size}" |  | ||||||
|         mkdir -p /run/artix/copytoram |  | ||||||
|         mount -t tmpfs -o "size=${copytoram_size}",mode=0755 copytoram /run/artix/copytoram |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     if [[ -n "${cow_device}" ]]; then |  | ||||||
|         _mnt_dev "${cow_device}" "/run/artix/cowspace" "-r" "${cow_flags}" |  | ||||||
|         echo $(readlink -f ${cow_device}) >> /run/artix/used_block_devices |  | ||||||
|         mount -o remount,rw "/run/artix/cowspace" |  | ||||||
|     else |  | ||||||
|         msg ":: Mounting /run/artix/cowspace (tmpfs) filesystem, size=${cow_spacesize}..." |  | ||||||
|         mkdir -p /run/artix/cowspace |  | ||||||
|         mount -t tmpfs -o "size=${cow_spacesize}",mode=0755 cowspace /run/artix/cowspace |  | ||||||
|     fi |  | ||||||
|     mkdir -p -m 0700 "/run/artix/cowspace/${cow_directory}" |  | ||||||
|  |  | ||||||
|     msg -n ":: Mounting overlay root (tmpfs) filesystem, size=${overlay_root_size}..." |  | ||||||
|     mkdir -p /run/artix/overlay_root |  | ||||||
|     mount -t tmpfs -o "size=${overlay_root_size}",mode=0755 overlay_root /run/artix/overlay_root |  | ||||||
|  |  | ||||||
|     local src="/run/artix/bootmnt/${artixbasedir}/${arch}" |  | ||||||
|     local dest_sfs="/run/artix/sfs" dest_img="/run/artix/img" |  | ||||||
|     local lower_dir |  | ||||||
|  |  | ||||||
|     for sfs in livefs desktopfs rootfs;do |  | ||||||
|         if [[ -f "${src}/${sfs}.sfs" ]]; then |  | ||||||
|             _mnt_sfs "${src}/${sfs}.sfs" "${dest_sfs}/${sfs}" |  | ||||||
|             if [[ -f "${dest_sfs}/${sfs}/${sfs}.img" ]]; then |  | ||||||
|                 mkdir -p ${dest_img} |  | ||||||
|                 lower_dir=${lower_dir:-}${lower_dir:+:}"${dest_img}/${sfs}" |  | ||||||
|                 _mnt_dmsnapshot "${dest_sfs}/${sfs}/${sfs}.img" "${dest_img}/${sfs}" |  | ||||||
|             else |  | ||||||
|                 lower_dir=${lower_dir:-}${lower_dir:+:}"${dest_sfs}/${sfs}" |  | ||||||
|             fi |  | ||||||
|         fi |  | ||||||
|     done |  | ||||||
|  |  | ||||||
|     _mnt_overlayfs "${lower_dir}" "${newroot}" "/" |  | ||||||
|  |  | ||||||
|     if [[ "${copytoram}" == "y" ]]; then |  | ||||||
|         umount -d /run/artix/bootmnt |  | ||||||
|         mkdir -p /run/artix/bootmnt/${artixbasedir}/${arch} |  | ||||||
|         mount -o bind /run/artix/copytoram /run/artix/bootmnt/${artixbasedir}/${arch} |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # vim:ft=sh:ts=4:sw=4:et: |  | ||||||
| @@ -1,35 +0,0 @@ | |||||||
| # vim: set ft=sh: |  | ||||||
|  |  | ||||||
| run_hook () { |  | ||||||
|     [[ -n "${img_label}" ]] && img_dev="/dev/disk/by-label/${img_label}" |  | ||||||
|     [[ -z "${img_flags}" ]] && img_flags="defaults" |  | ||||||
|     if [[ -n "${img_dev}" && -n "${img_loop}" ]]; then |  | ||||||
|         mount_handler="artix_loop_mount_handler" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| artix_loop_mount_handler () { |  | ||||||
|     newroot="${1}" |  | ||||||
|  |  | ||||||
|     local _dev_loop |  | ||||||
|  |  | ||||||
|     msg ":: Setup a loop device from ${img_loop} located at device ${img_dev}" |  | ||||||
|     _mnt_dev "${img_dev}" "/run/artix/img_dev" "-r" "${img_flags}" |  | ||||||
|     if [[ "${copytoram}" != "y" ]]; then |  | ||||||
|         echo $(readlink -f ${img_dev}) >> /run/artix/used_block_devices |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     if _dev_loop=$(losetup --find --show --read-only "/run/artix/img_dev/${img_loop}"); then |  | ||||||
|         artixdevice="${_dev_loop}" |  | ||||||
|     else |  | ||||||
|         echo "ERROR: Setting loopback device for file '/run/artix/img_dev/${img_loop}'" |  | ||||||
|         launch_interactive_shell |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     artix_mount_handler ${newroot} |  | ||||||
|  |  | ||||||
|     if [[ "${copytoram}" == "y" ]]; then |  | ||||||
|         losetup -d ${_dev_loop} 2>/dev/null |  | ||||||
|         umount /run/artix/img_dev |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
| @@ -1,72 +0,0 @@ | |||||||
| # vim: set ft=sh: |  | ||||||
|  |  | ||||||
| run_hook () { |  | ||||||
|     # Do *not* declare 'bootif_dev' local! We need it in run_latehook(). |  | ||||||
|     local i net_mac bootif_mac |  | ||||||
|     # These variables will be parsed from /tmp/net-*.conf generated by ipconfig |  | ||||||
|     local DEVICE |  | ||||||
|     local IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY IPV4DNS0 IPV4DNS1 |  | ||||||
|     local HOSTNAME DNSDOMAIN NISDOMAIN ROOTSERVER ROOTPATH |  | ||||||
|     local filename |  | ||||||
|     # /tmp/net-*.conf |  | ||||||
|  |  | ||||||
|     if [[ -n "${ip}" ]]; then |  | ||||||
|         if [[ -n "${BOOTIF}" ]]; then |  | ||||||
|             bootif_mac=${BOOTIF#01-} |  | ||||||
|             bootif_mac=${bootif_mac//-/:} |  | ||||||
|             for i in /sys/class/net/*/address; do |  | ||||||
|                 read net_mac < ${i} |  | ||||||
|                 if [[ "${bootif_mac}" == "${net_mac}" ]]; then |  | ||||||
|                     bootif_dev=${i#/sys/class/net/} |  | ||||||
|                     bootif_dev=${bootif_dev%/address} |  | ||||||
|                     break |  | ||||||
|                 fi |  | ||||||
|             done |  | ||||||
|             if [[ "${ip}" == "dhcp" ]]; then |  | ||||||
|                ip=":::::${bootif_dev}:dhcp" |  | ||||||
|             else |  | ||||||
|                ip="${ip}::${bootif_dev}" |  | ||||||
|            fi |  | ||||||
|         fi |  | ||||||
|  |  | ||||||
|         # setup network and save some values |  | ||||||
|         if ! ipconfig -t 20 "ip=${ip}"; then |  | ||||||
|                 echo "ERROR; Failed to configure network" |  | ||||||
|                 echo "   Falling back to interactive prompt" |  | ||||||
|                 echo "   You can try to fix the problem manually, log out when you are finished" |  | ||||||
|                 launch_interactive_shell |  | ||||||
|         fi |  | ||||||
|  |  | ||||||
|         . /tmp/net-*.conf |  | ||||||
|  |  | ||||||
|         pxeserver=${ROOTSERVER} |  | ||||||
|  |  | ||||||
|         # setup DNS resolver |  | ||||||
|         if [[ "${IPV4DNS0}" != "0.0.0.0" ]]; then |  | ||||||
|             echo "# added by artix_pxe_common hook" > /etc/resolv.conf |  | ||||||
|             echo "nameserver ${IPV4DNS0}" >> /etc/resolv.conf |  | ||||||
|         fi |  | ||||||
|         if [[ "${IPV4DNS1}" != "0.0.0.0" ]]; then |  | ||||||
|             echo "nameserver ${IPV4DNS1}" >> /etc/resolv.conf |  | ||||||
|         fi |  | ||||||
|         if [[ -n "${DNSDOMAIN}" ]]; then |  | ||||||
|             echo "search ${DNSDOMAIN}" >> /etc/resolv.conf |  | ||||||
|             echo "domain ${DNSDOMAIN}" >> /etc/resolv.conf |  | ||||||
|         fi |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| run_latehook () { |  | ||||||
|     if [[ -n "${ip}" ]]; then |  | ||||||
|         [[ -z "${copy_resolvconf}" ]] && copy_resolvconf="y" |  | ||||||
|  |  | ||||||
|         if [[ "${copytoram}" == "y" ]]; then |  | ||||||
|             if [[ -n "${bootif_dev}" ]]; then |  | ||||||
|                 ip addr flush dev "${bootif_dev}" |  | ||||||
|                 ip link set "${bootif_dev}" down |  | ||||||
|             fi |  | ||||||
|         elif [[ "${copy_resolvconf}" != "n" && -f /etc/resolv.conf ]]; then |  | ||||||
|             cp /etc/resolv.conf /new_root/etc/resolv.conf |  | ||||||
|         fi |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
| @@ -1,59 +0,0 @@ | |||||||
| # vim: set ft=sh: |  | ||||||
|  |  | ||||||
| run_hook() { |  | ||||||
|     if [[ -n "${ip}" && -n "${artix_http_srv}" ]]; then |  | ||||||
|  |  | ||||||
|         # booting with http is always copy-to-ram, so set here to make sure |  | ||||||
|         # addresses are flushed and interface is set down |  | ||||||
|         copytoram="y" |  | ||||||
|  |  | ||||||
|         artix_http_srv=$(eval echo ${artix_http_srv}) |  | ||||||
|         [[ -z "${artix_http_spc}" ]] && artix_http_spc="75%" |  | ||||||
|  |  | ||||||
|         mount_handler="artix_pxe_http_mount_handler" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # Fetch a file with CURL |  | ||||||
| # |  | ||||||
| # $1 URL |  | ||||||
| # $2 Destination directory inside httpspace/${artixbasedir} |  | ||||||
| _curl_get() { |  | ||||||
|     local _url="${1}" |  | ||||||
|     local _dst="${2}" |  | ||||||
|  |  | ||||||
|     msg ":: Downloading '${_url}'" |  | ||||||
|     if ! curl -L -f -o "/run/artix/httpspace/${artixbasedir}${_dst}/${_url##*/}" --create-dirs "${_url}"; then |  | ||||||
|         echo "ERROR: Downloading '${_url}'" |  | ||||||
|         echo "   Falling back to interactive prompt" |  | ||||||
|         echo "   You can try to fix the problem manually, log out when you are finished" |  | ||||||
|         launch_interactive_shell |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| artix_pxe_http_mount_handler () { |  | ||||||
|     newroot="${1}" |  | ||||||
|  |  | ||||||
|     msg ":: Mounting /run/artix/httpspace (tmpfs) filesystem, size='${artix_http_spc}'" |  | ||||||
|     mkdir -p "/run/artix/httpspace" |  | ||||||
|     mount -t tmpfs -o size="${artix_http_spc}",mode=0755 httpspace "/run/artix/httpspace" |  | ||||||
|  |  | ||||||
|     local _src=${artix_http_srv}${artixbasedir}/${arch} |  | ||||||
|  |  | ||||||
|     for sfs in livefs desktopfs rootfs;do |  | ||||||
|         if [[ ! -z "$( curl -s --head "${_src}/${sfs}.sfs" | grep "OK" )" ]]; then |  | ||||||
|             _curl_get "${_src}/${sfs}.sfs" "/${arch}" |  | ||||||
|  |  | ||||||
|             if [[ "${checksum}" == "y" ]]; then |  | ||||||
|                 _curl_get "${_src}/${sfs}.md5" "/${arch}" |  | ||||||
|             fi |  | ||||||
|             if [[ "${verify}" == "y" ]]; then |  | ||||||
|                 _curl_get "${_src}/${sfs}.sfs.sig" "/${arch}" |  | ||||||
|             fi |  | ||||||
|         fi |  | ||||||
|     done |  | ||||||
|     mkdir -p "/run/artix/bootmnt" |  | ||||||
|     mount -o bind /run/artix/httpspace /run/artix/bootmnt |  | ||||||
|  |  | ||||||
|     artix_mount_handler ${newroot} |  | ||||||
| } |  | ||||||
| @@ -1,47 +0,0 @@ | |||||||
| # vim: set ft=sh: |  | ||||||
|  |  | ||||||
| run_earlyhook() { |  | ||||||
|     if [[ -n "${ip}" && -n "${artix_nbd_srv}" ]]; then |  | ||||||
|         # Module autoloading like with loop devices does not work, doing manually... |  | ||||||
|         modprobe nbd 2> /dev/null |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| run_hook() { |  | ||||||
|     if [[ -n "${ip}" && -n "${artix_nbd_srv}" ]]; then |  | ||||||
|  |  | ||||||
|         artix_nbd_srv=$(eval echo ${artix_nbd_srv}) |  | ||||||
|         [[ -z "${artix_nbd_name}" ]] && artix_nbd_name="artix" |  | ||||||
|  |  | ||||||
|         mount_handler="artix_pxe_nbd_mount_handler" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| artix_pxe_nbd_mount_handler () { |  | ||||||
|     newroot="${1}" |  | ||||||
|  |  | ||||||
|     msg ":: Waiting for boot device..." |  | ||||||
|     while ! poll_device /dev/nbd0 30; do |  | ||||||
|         echo "ERROR: boot device didn't show up after 30 seconds..." |  | ||||||
|         echo "   Falling back to interactive prompt" |  | ||||||
|         echo "   You can try to fix the problem manually, log out when you are finished" |  | ||||||
|         launch_interactive_shell |  | ||||||
|     done |  | ||||||
|  |  | ||||||
|     msg ":: Setup NBD from ${artix_nbd_srv} at /dev/nbd0" |  | ||||||
|     if [[ "${copytoram}" != "n" ]]; then |  | ||||||
|         nbd-client ${artix_nbd_srv} -N ${artix_nbd_name} /dev/nbd0 |  | ||||||
|         copytoram="y" |  | ||||||
|     else |  | ||||||
|         nbd-client ${artix_nbd_srv} -N ${artix_nbd_name} -persist /dev/nbd0 |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     artixdevice=/dev/nbd0 |  | ||||||
|  |  | ||||||
|     artix_mount_handler ${newroot} |  | ||||||
|  |  | ||||||
|     if [[ "${copytoram}" == "y" ]]; then |  | ||||||
|         msg ":: Disconnect NBD from ${artix_nbd_srv} at /dev/nbd0" |  | ||||||
|         nbd-client -d /dev/nbd0 |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
| @@ -1,30 +0,0 @@ | |||||||
| # vim: set ft=sh: |  | ||||||
|  |  | ||||||
| run_hook() { |  | ||||||
|     if [[ -n "${ip}" && -n "${artix_nfs_srv}" ]]; then |  | ||||||
|  |  | ||||||
|         artix_nfs_srv=$(eval echo ${artix_nfs_srv}) |  | ||||||
|         [[ -n "${artix_nfs_opt}" ]] && artix_nfs_opt="-o ${artix_nfs_opt}" |  | ||||||
|  |  | ||||||
|         mount_handler="artix_nfs_mount_handler" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| artix_nfs_mount_handler() { |  | ||||||
|     newroot="${1}" |  | ||||||
|     mkdir -p "/run/artix/bootmnt" |  | ||||||
|     msg ":: Mounting '${artix_nfs_srv}'" |  | ||||||
|     # Do not put "${artix_nfs_opt}" nfsmount fails! |  | ||||||
|     if ! nfsmount ${artix_nfs_opt} "${artix_nfs_srv}" "/run/artix/bootmnt"; then |  | ||||||
|         echo "ERROR: Mounting '${artix_nfs_srv}'" |  | ||||||
|         echo "   Falling back to interactive prompt" |  | ||||||
|         echo "   You can try to fix the problem manually, log out when you are finished" |  | ||||||
|         launch_interactive_shell |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     if [[ "${copytoram}" != "n" ]]; then |  | ||||||
|         copytoram="y" |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     artix_mount_handler ${newroot} |  | ||||||
| } |  | ||||||
| @@ -1,6 +0,0 @@ | |||||||
| run_cleanuphook() { |  | ||||||
|     rm -rf /usr/lib/modules |  | ||||||
|     cp -ax / /run/initramfs |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # vim: set ft=sh ts=4 sw=4 et: |  | ||||||
| @@ -1,30 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| build() { |  | ||||||
|     add_module "cdrom" |  | ||||||
|     add_module "loop" |  | ||||||
|     add_module "dm-snapshot" |  | ||||||
|     add_module "overlay" |  | ||||||
|  |  | ||||||
|     add_runscript |  | ||||||
|  |  | ||||||
|     add_binary /usr/lib/udev/cdrom_id |  | ||||||
|     add_binary blockdev |  | ||||||
|     add_binary dmsetup |  | ||||||
|     add_binary losetup |  | ||||||
|     add_binary mountpoint |  | ||||||
|     add_binary truncate |  | ||||||
|     add_binary gpg |  | ||||||
|     add_binary grep |  | ||||||
|  |  | ||||||
|     add_file /usr/lib/udev/rules.d/60-cdrom_id.rules |  | ||||||
|     add_file /usr/lib/udev/rules.d/10-dm.rules |  | ||||||
|     add_file /usr/lib/udev/rules.d/95-dm-notify.rules |  | ||||||
|     add_file /usr/lib/initcpio/udev/11-dm-initramfs.rules /usr/lib/udev/rules.d/11-dm-initramfs.rules |  | ||||||
|     if [[ $ARTIX_GNUPG_FD ]]; then |  | ||||||
|         mkdir -p "$BUILDROOT$dest"/gpg |  | ||||||
|         gpg --homedir "$BUILDROOT$dest"/gpg --import <&$ARTIX_GNUPG_FD |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # vim: set ft=sh ts=4 sw=4 et: |  | ||||||
| @@ -1,16 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| build() { |  | ||||||
|     add_module "radeon" |  | ||||||
|     add_module "nouveau" |  | ||||||
|     add_module "i915" |  | ||||||
|     add_module "via-agp" |  | ||||||
|     add_module "sis-agp" |  | ||||||
|     add_module "intel-agp" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| help() { |  | ||||||
|     cat << HELPEOF |  | ||||||
| Adds all common KMS drivers to the initramfs image. |  | ||||||
| HELPEOF |  | ||||||
| } |  | ||||||
| @@ -1,13 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| build() { |  | ||||||
|     add_runscript |  | ||||||
| } |  | ||||||
|  |  | ||||||
| help() { |  | ||||||
| cat<<HELPEOF |  | ||||||
|   This hook loads the necessary modules for boot via loop device. |  | ||||||
| HELPEOF |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # vim: set ft=sh ts=4 sw=4 et: |  | ||||||
| @@ -1,26 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| build() { |  | ||||||
|     add_checked_modules -f "(irda|phy|wimax|wireless|ppp_|plip|pppoe)" "/drivers/net/" |  | ||||||
|  |  | ||||||
|     add_runscript |  | ||||||
|  |  | ||||||
|     add_binary /usr/lib/initcpio/ipconfig /bin/ipconfig |  | ||||||
|  |  | ||||||
|     # Add hosts support files+dns |  | ||||||
|     add_symlink /usr/lib/libnss_files.so.2 $(readlink /usr/lib/libnss_files.so.2) |  | ||||||
|     add_binary $(readlink -f /usr/lib/libnss_files.so.2) |  | ||||||
|     add_symlink /usr/lib/libnss_dns.so.2 $(readlink /usr/lib/libnss_dns.so.2) |  | ||||||
|     add_binary $(readlink -f /usr/lib/libnss_dns.so.2) |  | ||||||
|  |  | ||||||
|     add_dir /etc |  | ||||||
|     echo "hosts: files dns" > $BUILDROOT/etc/nsswitch.conf |  | ||||||
| } |  | ||||||
|  |  | ||||||
| help() { |  | ||||||
| cat<<HELPEOF |  | ||||||
|   This hook loads the necessary modules for boot via PXE. |  | ||||||
| HELPEOF |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # vim: set ft=sh ts=4 sw=4 et: |  | ||||||
| @@ -1,17 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| build() { |  | ||||||
|     add_runscript |  | ||||||
|  |  | ||||||
|     add_binary curl |  | ||||||
|  |  | ||||||
|     add_file $(readlink -f /etc/ssl/certs/ca-certificates.crt) /etc/ssl/certs/ca-certificates.crt |  | ||||||
| } |  | ||||||
|  |  | ||||||
| help() { |  | ||||||
| cat<<HELPEOF |  | ||||||
|   This hook loads the necessary modules for boot via PXE and HTTP. |  | ||||||
| HELPEOF |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # vim: set ft=sh ts=4 sw=4 et: |  | ||||||
| @@ -1,17 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| build() { |  | ||||||
|     add_module "nbd" |  | ||||||
|  |  | ||||||
|     add_runscript |  | ||||||
|  |  | ||||||
|     add_binary nbd-client |  | ||||||
| } |  | ||||||
|  |  | ||||||
| help() { |  | ||||||
| cat<<HELPEOF |  | ||||||
|   This hook loads the necessary modules for boot via PXE and NBD. |  | ||||||
| HELPEOF |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # vim: set ft=sh ts=4 sw=4 et: |  | ||||||
| @@ -1,17 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| build() { |  | ||||||
|     add_module "nfs" |  | ||||||
|  |  | ||||||
|     add_runscript |  | ||||||
|  |  | ||||||
|     add_binary /usr/lib/initcpio/nfsmount /bin/nfsmount |  | ||||||
| } |  | ||||||
|  |  | ||||||
| help() { |  | ||||||
|     cat <<HELPEOF |  | ||||||
|   This hook loads the necessary modules for boot via PXE and NFS. |  | ||||||
| HELPEOF |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # vim: set ft=sh ts=4 sw=4 et: |  | ||||||
| @@ -1,20 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| build() { |  | ||||||
|     add_binary cp |  | ||||||
|  |  | ||||||
|     add_runscript |  | ||||||
|  |  | ||||||
|     add_file /etc/initcpio/artix_shutdown /shutdown |  | ||||||
| } |  | ||||||
|  |  | ||||||
| help() { |  | ||||||
|     cat <<HELPEOF |  | ||||||
| This hook will create a shutdown initramfs in /run/initramfs |  | ||||||
| that we can pivot to on shutdown in order to unmount / and |  | ||||||
| and others mount points, dm-snapshot devices and loopback devices. |  | ||||||
| Mostly usefull for dm-snapshot persistent. |  | ||||||
| HELPEOF |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # vim: set ft=sh ts=4 sw=4 et: |  | ||||||
| @@ -1,38 +0,0 @@ | |||||||
| #!/bin/ash |  | ||||||
|  |  | ||||||
| # /oldroot depends on things inside /oldroot/run/artix... |  | ||||||
| mkdir /oldrun |  | ||||||
| mount -n --move /oldroot/run /oldrun |  | ||||||
|  |  | ||||||
| # Unmount all mounts now. |  | ||||||
| #umount $(mount | awk '$3 ~/^\/oldroot/ {print $3}' | sort -r) |  | ||||||
| umount $(mount | awk '$3 ~/^\/oldroot/ {if($3 != "/run/artix/bootmnt") print $3}' | sort -r) |  | ||||||
|  |  | ||||||
| # Remove all dm-snapshot devices. |  | ||||||
| dmsetup remove_all |  | ||||||
|  |  | ||||||
| # Remove all loopback devices. |  | ||||||
| for _lup in $(grep ^/dev/loop /oldrun/artix/used_block_devices | tac); do |  | ||||||
|     if ! losetup -d ${_lup} 2> /dev/null; then |  | ||||||
|         umount -d ${_lup} |  | ||||||
|     fi |  | ||||||
| done |  | ||||||
|  |  | ||||||
| # Unmount the space used to store *.cow. |  | ||||||
| umount /oldrun/artix/cowspace |  | ||||||
|  |  | ||||||
| # Unmount boot device if needed (no copytoram=y used) |  | ||||||
| if [[ ! -d /oldrun/artix/copytoram ]]; then |  | ||||||
|     if [[ -d /oldrun/artix/img_dev ]]; then |  | ||||||
|         umount /oldrun/artix/img_dev |  | ||||||
|     else |  | ||||||
|         umount /oldrun/artix/bootmnt |  | ||||||
|     fi |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # reboot / poweroff / halt, depending on the argument passed by init |  | ||||||
| # if something invalid is passed, we halt |  | ||||||
| case "$1" in |  | ||||||
|   reboot|poweroff|halt) "$1" -f ;; |  | ||||||
|   *) halt -f;; |  | ||||||
| esac |  | ||||||
| @@ -103,23 +103,13 @@ init_artools_pkg(){ | |||||||
|  |  | ||||||
|     REPOS_ROOT=${REPOS_ROOT:-"${WORKSPACE_DIR}/repos"} |     REPOS_ROOT=${REPOS_ROOT:-"${WORKSPACE_DIR}/repos"} | ||||||
|  |  | ||||||
|     SOLINKS_MIRROR=${SOLINKS_MIRROR:-'http://mirror1.artixlinux.org/repos'} |     REPOS_MIRROR=${REPOS_MIRROR:-'http://mirror1.artixlinux.org/repos'} | ||||||
|  |  | ||||||
|     SOCACHE_DIR="${XDG_CACHE_HOME:-$USER_HOME/.cache}/sogrep" |  | ||||||
|  |  | ||||||
|     DBEXT=${DBEXT:-'xz'} |     DBEXT=${DBEXT:-'xz'} | ||||||
|  |  | ||||||
|     LINKSDBEXT=${LINKSDBEXT:-"links.tar.${DBEXT}"} |     LINKSDBEXT=${LINKSDBEXT:-"links.tar.${DBEXT}"} | ||||||
|  |  | ||||||
|     PKGDBEXT=${PKGDBEXT:-"db.tar.${DBEXT}"} |     PKGDBEXT=${PKGDBEXT:-"db.tar.${DBEXT}"} | ||||||
|  |  | ||||||
|     [[ -z ${ARTIX_REPOS[@]} ]] && \ |  | ||||||
|     ARTIX_REPOS=( |  | ||||||
|         'goblins' 'gremlins' 'system' 'world' |  | ||||||
|         'galaxy-goblins' 'galaxy-gremlins' 'galaxy' |  | ||||||
|         'lib32-goblins' 'lib32-gremlins' 'lib32' |  | ||||||
|         'gnome-wobble' 'kde-wobble' |  | ||||||
|     ) |  | ||||||
| } | } | ||||||
|  |  | ||||||
| init_artools_iso(){ | init_artools_iso(){ | ||||||
| @@ -135,8 +125,6 @@ init_artools_iso(){ | |||||||
|  |  | ||||||
|     INITSYS=${INITSYS:-'openrc'} |     INITSYS=${INITSYS:-'openrc'} | ||||||
|  |  | ||||||
|     GPG_KEY=${GPG_KEY:-''} |  | ||||||
|  |  | ||||||
|     UPLIMIT=${UPLIMIT:-1000} |     UPLIMIT=${UPLIMIT:-1000} | ||||||
|  |  | ||||||
|     FILE_HOST="download.${DOMAIN}" |     FILE_HOST="download.${DOMAIN}" | ||||||
| @@ -185,6 +173,8 @@ load_user_info(){ | |||||||
|  |  | ||||||
|     USERCONFDIR="${XDG_CONFIG_HOME:-$USER_HOME/.config}" |     USERCONFDIR="${XDG_CONFIG_HOME:-$USER_HOME/.config}" | ||||||
|     prepare_dir "${USERCONFDIR}" |     prepare_dir "${USERCONFDIR}" | ||||||
|  |  | ||||||
|  |     USERCACHEDIR="${XDG_CACHE_HOME:-$USER_HOME/.cache}/artools" | ||||||
| } | } | ||||||
|  |  | ||||||
| # orig_argv=("$0" "$@") | # orig_argv=("$0" "$@") | ||||||
|   | |||||||
| @@ -136,12 +136,24 @@ write_servicescfg_conf(){ | |||||||
|     printf '%s' "${yaml}" |     printf '%s' "${yaml}" | ||||||
| } | } | ||||||
|  |  | ||||||
|  | write_unpackfs_conf(){ | ||||||
|  |     local yaml=$(write_yaml_header) | ||||||
|  |     yaml+=$(write_empty_line) | ||||||
|  |     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_empty_line) | ||||||
|  |     printf '%s' "${yaml}" | ||||||
|  | } | ||||||
|  |  | ||||||
| configure_calamares(){ | configure_calamares(){ | ||||||
|     local mods="$1/etc/calamares/modules" |     local mods="$1/etc/calamares/modules" | ||||||
|     if [[ -d "$mods" ]];then |     if [[ -d "$mods" ]];then | ||||||
|         msg2 "Configuring Calamares" |         msg2 "Configuring Calamares" | ||||||
|         write_users_conf > "$mods"/users.conf |         write_users_conf > "$mods"/users.conf | ||||||
|         write_servicescfg_conf > "$mods"/services-"${INITSYS}".conf |         write_servicescfg_conf > "$mods"/services-"${INITSYS}".conf | ||||||
|  |         write_unpackfs_conf > "$mods"/unpackfs.conf | ||||||
|         sed -e "s|openrc|${INITSYS}|" -i "$mods"/postcfg.conf |         sed -e "s|openrc|${INITSYS}|" -i "$mods"/postcfg.conf | ||||||
|         sed -e "s|services-openrc|services-${INITSYS}|" -i "$1"/etc/calamares/settings.conf |         sed -e "s|services-openrc|services-${INITSYS}|" -i "$1"/etc/calamares/settings.conf | ||||||
|     fi |     fi | ||||||
|   | |||||||
| @@ -12,38 +12,11 @@ | |||||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
| # GNU General Public License for more details. | # GNU General Public License for more details. | ||||||
|  |  | ||||||
| prepare_initcpio(){ |  | ||||||
|     msg2 "Copying initcpio ..." |  | ||||||
|     local dest="$1" |  | ||||||
|     cp /etc/initcpio/hooks/artix* $dest/etc/initcpio/hooks |  | ||||||
|     cp /etc/initcpio/install/artix* $dest/etc/initcpio/install |  | ||||||
|     cp /etc/initcpio/artix_shutdown $dest/etc/initcpio |  | ||||||
| } |  | ||||||
|  |  | ||||||
| prepare_initramfs(){ | prepare_initramfs(){ | ||||||
|     local mnt="$1" |     local src="$1" dest="$2" | ||||||
|     cp ${DATADIR}/mkinitcpio.conf $mnt/etc/mkinitcpio-artix.conf |     local kver=$(cat $src/usr/lib/modules/extramodules-ARTIX/version) | ||||||
|  |  | ||||||
|     if [[ "${PROFILE}" != 'base' ]];then |     dracut -fqM $dest/initramfs-${ARCH}.img $kver | ||||||
|         sed -e 's/artix_pxe_common artix_pxe_http artix_pxe_nbd artix_pxe_nfs //' -i $mnt/etc/mkinitcpio-artix.conf |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     if [[ -n ${GPG_KEY} ]]; then |  | ||||||
|         user_run "gpg --export ${GPG_KEY} >${USERCONFDIR}/artools/gpgkey" |  | ||||||
|         exec 17<>${USERCONFDIR}/artools/GPG_KEY |  | ||||||
|     fi |  | ||||||
|     local _kernel=$(cat $mnt/usr/lib/modules/*/version) |  | ||||||
|     ARTIX_GNUPG_FD=${GPG_KEY:+17} chroot-run $mnt \ |  | ||||||
|         /usr/bin/mkinitcpio -k ${_kernel} \ |  | ||||||
|         -c /etc/mkinitcpio-artix.conf \ |  | ||||||
|         -g /boot/initramfs.img |  | ||||||
|  |  | ||||||
|     if [[ -n ${GPG_KEY} ]]; then |  | ||||||
|         exec 17<&- |  | ||||||
|     fi |  | ||||||
|     if [[ -f ${USERCONFDIR}/artools/GPG_KEY ]]; then |  | ||||||
|         rm ${USERCONFDIR}/artools/GPG_KEY |  | ||||||
|     fi |  | ||||||
| } | } | ||||||
|  |  | ||||||
| prepare_boot_extras(){ | prepare_boot_extras(){ | ||||||
| @@ -61,6 +34,17 @@ prepare_boot_extras(){ | |||||||
| configure_grub(){ | configure_grub(){ | ||||||
|     local conf="$1/boot/grub/kernels.cfg" |     local conf="$1/boot/grub/kernels.cfg" | ||||||
|     sed -e "s|@iso_label@|${iso_label}|" -i $conf |     sed -e "s|@iso_label@|${iso_label}|" -i $conf | ||||||
|  |  | ||||||
|  | #     rd.vconsole.keymap= | ||||||
|  | #     rd.live.overlay.size= | ||||||
|  | #     root=live:<URL> | ||||||
|  | #     rd.live.ram=1 | ||||||
|  | #     rd.live.overlay.readonly | ||||||
|  | #     rd.live.overlay=none | ||||||
|  | #     rd.writable.fsimg=1 | ||||||
|  | #      rd.live.dir=<path> | ||||||
|  | #       rd.live.squashimg=<filename of SquashFS image> | ||||||
|  | #       rd.live.overlay.overlayfs=1 | ||||||
| } | } | ||||||
|  |  | ||||||
| prepare_grub(){ | prepare_grub(){ | ||||||
|   | |||||||
| @@ -33,24 +33,6 @@ clean_iso_root(){ | |||||||
|     rm -rf --one-file-system "$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 -R root "$idir" |  | ||||||
|     cd ${OLDPWD} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| make_checksum(){ |  | ||||||
|     local idir="$1" file="$2" |  | ||||||
|     msg2 "Creating sha512sum ..." |  | ||||||
|     cd $idir |  | ||||||
|     sha512sum $file.sfs > $file.sha512 |  | ||||||
|     cd ${OLDPWD} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # $1: image path | # $1: image path | ||||||
| make_sfs() { | make_sfs() { | ||||||
|     local src="$1" |     local src="$1" | ||||||
| @@ -108,13 +90,8 @@ make_sfs() { | |||||||
|  |  | ||||||
|     mksquashfs "${mksfs_args[@]}" |     mksquashfs "${mksfs_args[@]}" | ||||||
|  |  | ||||||
|     make_checksum "${dest}" "${name}" |  | ||||||
|     ${persist} && rm "${src}.img" |     ${persist} && rm "${src}.img" | ||||||
|  |  | ||||||
|     if [[ -n ${GPG_KEY} ]];then |  | ||||||
|         make_sig "${dest}" "${name}" |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     show_elapsed_time "${FUNCNAME}" "${timer_start}" |     show_elapsed_time "${FUNCNAME}" "${timer_start}" | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -39,21 +39,14 @@ track_fs() { | |||||||
|  |  | ||||||
| mount_overlay(){ | mount_overlay(){ | ||||||
|     FS_ACTIVE_MOUNTS=() |     FS_ACTIVE_MOUNTS=() | ||||||
|     local lower= upper="$1" work="$2" pkglist="$3" |     local lower= upper="$1" work="$2" | ||||||
|     local fs=${upper##*/} |     local fs=${upper##*/} | ||||||
|     local rootfs="$work/rootfs" desktopfs="$work/desktopfs" livefs="$work/livefs" |     local rootfs="$work/rootfs" livefs="$work/livefs" | ||||||
|     mkdir -p "${mnt_dir}/work" |     mkdir -p "${mnt_dir}/work" | ||||||
|     mkdir -p "$upper" |     mkdir -p "$upper" | ||||||
|     case $fs in |     case $fs in | ||||||
|         desktopfs) lower="$rootfs" ;; |         livefs) lower="$rootfs" ;; | ||||||
|         livefs) |         bootfs) lower="$livefs":"$rootfs" ;; | ||||||
|             lower="$rootfs" |  | ||||||
|             [[ -f $pkglist ]] && lower="$desktopfs":"$rootfs" |  | ||||||
|         ;; |  | ||||||
|         bootfs) |  | ||||||
|             lower="$livefs":"$rootfs" |  | ||||||
|             [[ -f $pkglist ]] && lower="$livefs":"$desktopfs":"$rootfs" |  | ||||||
|         ;; |  | ||||||
|     esac |     esac | ||||||
|     track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper" |     track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper" | ||||||
| } | } | ||||||
|   | |||||||
| @@ -23,9 +23,6 @@ init_profile(){ | |||||||
|     [[ -f "$profdir/$prof/Packages-Root" ]] && ROOT_LIST="$profdir/$prof/Packages-Root" |     [[ -f "$profdir/$prof/Packages-Root" ]] && ROOT_LIST="$profdir/$prof/Packages-Root" | ||||||
|     [[ -d "$profdir/$prof/root-overlay" ]] && ROOT_OVERLAY="$profdir/$prof/root-overlay" |     [[ -d "$profdir/$prof/root-overlay" ]] && ROOT_OVERLAY="$profdir/$prof/root-overlay" | ||||||
|  |  | ||||||
|     [[ -f "$profdir/$prof/Packages-Desktop" ]] && DESKTOP_LIST="$profdir/$prof/Packages-Desktop" |  | ||||||
|     [[ -d "$profdir/$prof/desktop-overlay" ]] && DESKTOP_OVERLAY="$profdir/$prof/desktop-overlay" |  | ||||||
|  |  | ||||||
|     [[ -f "$profdir/$prof/Packages-Live" ]] && LIVE_LIST="$profdir/$prof/Packages-Live" |     [[ -f "$profdir/$prof/Packages-Live" ]] && LIVE_LIST="$profdir/$prof/Packages-Live" | ||||||
|     [[ -d "$profdir/$prof/live-overlay" ]] && LIVE_OVERLAY="$profdir/$prof/live-overlay" |     [[ -d "$profdir/$prof/live-overlay" ]] && LIVE_OVERLAY="$profdir/$prof/live-overlay" | ||||||
| } | } | ||||||
|   | |||||||
| @@ -173,26 +173,6 @@ make_rootfs() { | |||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
| make_desktopfs() { |  | ||||||
|     if [[ ! -e ${work_dir}/desktopfs.lock ]]; then |  | ||||||
|         msg "Prepare [Desktop installation] (desktopfs)" |  | ||||||
|         local desktopfs="${work_dir}/desktopfs" |  | ||||||
|  |  | ||||||
|         prepare_dir "${desktopfs}" |  | ||||||
|  |  | ||||||
|         mount_overlay "${desktopfs}" "${work_dir}" |  | ||||||
|  |  | ||||||
|         install_packages "${desktopfs}" |  | ||||||
|  |  | ||||||
|         copy_overlay "${DESKTOP_OVERLAY}" "${desktopfs}" |  | ||||||
|  |  | ||||||
|         umount_overlay |  | ||||||
|         clean_up_image "${desktopfs}" |  | ||||||
|  |  | ||||||
|         msg "Done [Desktop installation] (desktopfs)" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| make_livefs() { | make_livefs() { | ||||||
|     if [[ ! -e ${work_dir}/livefs.lock ]]; then |     if [[ ! -e ${work_dir}/livefs.lock ]]; then | ||||||
|         msg "Prepare [Live installation] (livefs)" |         msg "Prepare [Live installation] (livefs)" | ||||||
| @@ -200,7 +180,7 @@ make_livefs() { | |||||||
|  |  | ||||||
|         prepare_dir "${livefs}" |         prepare_dir "${livefs}" | ||||||
|  |  | ||||||
|         mount_overlay "${livefs}" "${work_dir}" "${DESKTOP_LIST}" |         mount_overlay "${livefs}" "${work_dir}" | ||||||
|  |  | ||||||
|         install_packages "${livefs}" |         install_packages "${livefs}" | ||||||
|  |  | ||||||
| @@ -227,12 +207,11 @@ make_bootfs() { | |||||||
|  |  | ||||||
|         local bootfs="${work_dir}/bootfs" |         local bootfs="${work_dir}/bootfs" | ||||||
|  |  | ||||||
|         mount_overlay "${bootfs}" "${work_dir}" "${DESKTOP_LIST}" |         mount_overlay "${bootfs}" "${work_dir}" | ||||||
|  |  | ||||||
|         prepare_initcpio "${bootfs}" |         prepare_initramfs "${bootfs}" "${boot}" | ||||||
|         prepare_initramfs "${bootfs}" |  | ||||||
|  |  | ||||||
|         cp ${bootfs}/boot/initramfs.img ${boot}/initramfs-${ARCH}.img | #         cp ${bootfs}/boot/initramfs.img ${boot}/initramfs-${ARCH}.img | ||||||
|         prepare_boot_extras "${bootfs}" "${boot}" |         prepare_boot_extras "${bootfs}" "${boot}" | ||||||
|  |  | ||||||
|         umount_overlay |         umount_overlay | ||||||
| @@ -267,10 +246,6 @@ prepare_images(){ | |||||||
|     local timer=$(get_timer) |     local timer=$(get_timer) | ||||||
|     load_pkgs "${ROOT_LIST}" "${INITSYS}" |     load_pkgs "${ROOT_LIST}" "${INITSYS}" | ||||||
|     run_safe "make_rootfs" |     run_safe "make_rootfs" | ||||||
|     if [[ -f "${DESKTOP_LIST}" ]] ; then |  | ||||||
|         load_pkgs "${DESKTOP_LIST}" "${INITSYS}" |  | ||||||
|         run_safe "make_desktopfs" |  | ||||||
|     fi |  | ||||||
|     if [[ -f ${LIVE_LIST} ]]; then |     if [[ -f ${LIVE_LIST} ]]; then | ||||||
|         load_pkgs "${LIVE_LIST}" "${INITSYS}" |         load_pkgs "${LIVE_LIST}" "${INITSYS}" | ||||||
|         run_safe "make_livefs" |         run_safe "make_livefs" | ||||||
|   | |||||||
| @@ -69,6 +69,25 @@ patch_pkg(){ | |||||||
|     esac |     esac | ||||||
| } | } | ||||||
|  |  | ||||||
|  | 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(){ | find_tree(){ | ||||||
|     local tree="$1" pkg="$2" |     local tree="$1" pkg="$2" | ||||||
|     local result=$(find $tree -mindepth 2 -maxdepth 2 -type d -name "$pkg") |     local result=$(find $tree -mindepth 2 -maxdepth 2 -type d -name "$pkg") | ||||||
| @@ -76,20 +95,37 @@ find_tree(){ | |||||||
|     echo ${result##*/} |     echo ${result##*/} | ||||||
| } | } | ||||||
|  |  | ||||||
| find_repo(){ | arch_repos(){ | ||||||
|     local pkg="$1" stag="$2" unst="$3" repo= |     local stag="$1" unst="$2" | ||||||
|     local repos=(core extra testing community community-testing multilib multilib-testing) |     local repos=(core extra testing community community-testing multilib multilib-testing) | ||||||
|  |  | ||||||
|     $stag && repos+=(staging community-staging multilib-staging) |     $stag && repos+=(staging community-staging multilib-staging) | ||||||
|     $unst && repos+=(gnome-unstable kde-unstable) |     $unst && repos+=(gnome-unstable kde-unstable) | ||||||
|  |  | ||||||
|     for r in ${repos[@]};do |     echo ${repos[@]} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | 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-x86_64/PKGBUILD ]] && repo=$r-x86_64 | ||||||
|         [[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any |         [[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any | ||||||
|     done |     done | ||||||
|     echo $repo |     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_cases(){ | ||||||
|     local pkglist="${DATADIR}/pkglists/$1.list" |     local pkglist="${DATADIR}/pkglists/$1.list" | ||||||
|     local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g" |     local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g" | ||||||
| @@ -143,14 +179,6 @@ pkgver_equal() { | |||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
| is_valid_repo(){ |  | ||||||
|     local src="$1" |  | ||||||
|     case $src in |  | ||||||
|         core|extra|community|multilib|testing|staging|community-testing|community-staging|multilib-testing|multilib-staging|trunk) return 0 ;; |  | ||||||
|         *) return 1 ;; |  | ||||||
|     esac |  | ||||||
| } |  | ||||||
|  |  | ||||||
| find_cached_package() { | find_cached_package() { | ||||||
|     local searchdirs=("$PKGDEST" "$PWD") results=() |     local searchdirs=("$PKGDEST" "$PWD") results=() | ||||||
|     local targetname=$1 targetver=$2 targetarch=$3 |     local targetname=$1 targetver=$2 targetarch=$3 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user