Compare commits
	
		
			29 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| f0b84c0442 | |||
| f0262f3cbd | |||
| 1905aef7d7 | |||
| 0a80e2b4e1 | |||
| 4679c59de0 | |||
| f308217f62 | |||
| 0cd97b0b1d | |||
| a4956dba6e | |||
| 8738706db2 | |||
| 5ca22931dd | |||
| 652ddcd3a9 | |||
| 7c60916356 | |||
| b4e6dface6 | |||
| fa38579488 | |||
| 07c1605666 | |||
| bfde5dbbb1 | |||
| 0918ff749d | |||
| 3d3e4376c5 | |||
| 7499878d00 | |||
| d9e99543f6 | |||
| 43983042dd | |||
| 1b5f09076f | |||
| d770030869 | |||
| ea06ec0b2e | |||
| e67990ae04 | |||
| b37d5f0236 | |||
| 989af04593 | |||
| 90f46d7ecc | |||
| 8e872ca9ca | 
							
								
								
									
										172
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										172
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,59 +1,48 @@ | |||||||
| VERSION=0.11 | VERSION=0.12 | ||||||
|  |  | ||||||
| CHROOT_VERSION=0.9 | CHROOT_VERSION=0.9 | ||||||
|  |  | ||||||
| TOOLS = artools | TOOLS = artools | ||||||
| PREFIX ?= /usr/local | PREFIX ?= /usr | ||||||
| SYSCONFDIR = /etc | SYSCONFDIR = /etc | ||||||
| BINDIR = $(PREFIX)/bin | BINDIR = $(PREFIX)/bin | ||||||
| LIBDIR = $(PREFIX)/lib | LIBDIR = $(PREFIX)/lib | ||||||
| DATADIR = $(PREFIX)/share | DATADIR = $(PREFIX)/share | ||||||
| CPIODIR = $(SYSCONFDIR)/initcpio | CPIODIR = $(SYSCONFDIR)/initcpio | ||||||
|  |  | ||||||
| SYSCONF = \ | CONF = \ | ||||||
| 	data/artools.conf | 	data/artools.conf | ||||||
|  |  | ||||||
| BIN_BASE = \ | BASE_BIN = \ | ||||||
| 	bin/mkchroot \ | 	bin/base/signfile \ | ||||||
| 	bin/basestrap \ | 	bin/base/chroot-run \ | ||||||
| 	bin/artools-chroot \ | 	bin/base/mkchroot \ | ||||||
| 	bin/fstabgen \ | 	bin/base/basestrap \ | ||||||
| 	bin/signfile \ | 	bin/base/artools-chroot \ | ||||||
| 	bin/chroot-run | 	bin/base/fstabgen | ||||||
|  |  | ||||||
| LIBS_BASE = \ | BASE_LIBS = \ | ||||||
| 	lib/util.sh \ | 	$(wildcard lib/base/*.sh) | ||||||
| 	lib/util-msg.sh \ |  | ||||||
| 	lib/util-mount.sh \ |  | ||||||
| 	lib/util-chroot.sh \ |  | ||||||
| 	lib/util-fstab.sh |  | ||||||
|  |  | ||||||
| SHARED_BASE = \ | BASE_UTIL = lib/util-base.sh | ||||||
| 	$(wildcard data/pacman*.conf) |  | ||||||
|  |  | ||||||
| BIN_PKG = \ | BASE_DATA = \ | ||||||
| 	bin/checkpkg \ | 	$(wildcard data/base/pacman*.conf) | ||||||
| 	bin/lddd \ |  | ||||||
| 	bin/finddeps \ |  | ||||||
| 	bin/find-libdeps \ |  | ||||||
| 	bin/mkchrootpkg \ |  | ||||||
| 	bin/buildpkg \ |  | ||||||
| 	bin/buildtree \ |  | ||||||
| 	bin/deploypkg \ |  | ||||||
| 	bin/commitpkg \ |  | ||||||
| 	bin/comparepkg \ |  | ||||||
| 	bin/pkg2yaml |  | ||||||
|  |  | ||||||
| LIBS_PKG = \ | PKG_BIN = \ | ||||||
| 	$(wildcard lib/util-pkg*.sh) | 	bin/pkg/buildpkg \ | ||||||
|  | 	bin/pkg/deploypkg \ | ||||||
|  | 	bin/pkg/commitpkg \ | ||||||
|  | 	bin/pkg/comparepkg \ | ||||||
|  | 	bin/pkg/checkpkg \ | ||||||
|  | 	bin/pkg/mkchrootpkg \ | ||||||
|  | 	bin/pkg/pkg2yaml \ | ||||||
|  | 	bin/pkg/buildtree \ | ||||||
|  | 	bin/pkg/lddd \ | ||||||
|  | 	bin/pkg/finddeps \ | ||||||
|  | 	bin/pkg/find-libdeps | ||||||
|  |  | ||||||
| SHARED_PKG = \ | LN_COMMITPKG = \ | ||||||
| 	data/makepkg.conf |  | ||||||
|  |  | ||||||
| PATCHES = \ |  | ||||||
| 	$(wildcard data/patches/*.patch) |  | ||||||
|  |  | ||||||
| COMMITPKG_SYMS = \ |  | ||||||
| 	extrapkg \ | 	extrapkg \ | ||||||
| 	corepkg \ | 	corepkg \ | ||||||
| 	testingpkg \ | 	testingpkg \ | ||||||
| @@ -67,7 +56,7 @@ COMMITPKG_SYMS = \ | |||||||
| 	kde-unstablepkg \ | 	kde-unstablepkg \ | ||||||
| 	gnome-unstablepkg | 	gnome-unstablepkg | ||||||
|  |  | ||||||
| BUILDPKG_SYMS = \ | LN_BUILDPKG = \ | ||||||
| 	buildpkg-system \ | 	buildpkg-system \ | ||||||
| 	buildpkg-world \ | 	buildpkg-world \ | ||||||
| 	buildpkg-gremlins \ | 	buildpkg-gremlins \ | ||||||
| @@ -81,7 +70,7 @@ BUILDPKG_SYMS = \ | |||||||
| 	buildpkg-kde-wobble \ | 	buildpkg-kde-wobble \ | ||||||
| 	buildpkg-gnome-wobble | 	buildpkg-gnome-wobble | ||||||
|  |  | ||||||
| DEPLOYPKG_SYMS = \ | LN_DEPLOYPKG = \ | ||||||
| 	deploypkg-system \ | 	deploypkg-system \ | ||||||
| 	deploypkg-world \ | 	deploypkg-world \ | ||||||
| 	deploypkg-gremlins \ | 	deploypkg-gremlins \ | ||||||
| @@ -95,94 +84,125 @@ DEPLOYPKG_SYMS = \ | |||||||
| 	deploypkg-kde-wobble \ | 	deploypkg-kde-wobble \ | ||||||
| 	deploypkg-gnome-wobble | 	deploypkg-gnome-wobble | ||||||
|  |  | ||||||
| BIN_ISO = \ | PKG_LIBS = \ | ||||||
| 	bin/buildiso \ | 	$(wildcard lib/pkg/*) | ||||||
| 	bin/deployiso |  | ||||||
|  |  | ||||||
| BUILDISO_SYMS = \ | PKG_LISTS = \ | ||||||
|  | 	$(wildcard data/pkglists/*.list) | ||||||
|  |  | ||||||
|  | PKG_UTIL = lib/util-pkg.sh | ||||||
|  |  | ||||||
|  | PKG_DATA = \ | ||||||
|  | 	data/pkg/makepkg.conf | ||||||
|  |  | ||||||
|  | PATCHES = \ | ||||||
|  | 	$(wildcard data/patches/*.patch) | ||||||
|  |  | ||||||
|  | ISO_BIN = \ | ||||||
|  | 	bin/iso/buildiso \ | ||||||
|  | 	bin/iso/deployiso | ||||||
|  |  | ||||||
|  | LN_BUILDISO = \ | ||||||
| 	buildiso-gremlins \ | 	buildiso-gremlins \ | ||||||
| 	buildiso-goblins | 	buildiso-goblins | ||||||
|  |  | ||||||
| LIBS_ISO = \ | ISO_LIBS = \ | ||||||
| 	$(wildcard lib/util-iso*.sh) | 	$(wildcard lib/iso/*.sh) | ||||||
|  |  | ||||||
| SHARED_ISO = \ | ISO_UTIL = lib/util-iso.sh | ||||||
| 	data/mkinitcpio.conf |  | ||||||
|  | ISO_DATA = \ | ||||||
|  | 	data/iso/mkinitcpio.conf | ||||||
|  |  | ||||||
| DIRMODE = -dm0755 | DIRMODE = -dm0755 | ||||||
| FILEMODE = -m0644 | FILEMODE = -m0644 | ||||||
| MODE =  -m0755 | MODE =  -m0755 | ||||||
|  |  | ||||||
| LN = ln -sf | LN = ln -sf | ||||||
| RM = rm -f | RM = rm -f | ||||||
| M4 = m4 -P | M4 = m4 -P | ||||||
| CHMODAW = chmod a-w | CHMODAW = chmod a-w | ||||||
| CHMODX = chmod +x | CHMODX = chmod +x | ||||||
|  |  | ||||||
| all: $(BIN_BASE) $(BIN_PKG) $(BIN_ISO) | BIN = $(BASE_BIN) $(PKG_BIN) $(ISO_BIN) | ||||||
|  | UTIL = $(BASE_UTIL) $(PKG_UTIL) $(ISO_UTIL) | ||||||
|  |  | ||||||
| EDIT = sed -e "s|@datadir[@]|$(DATADIR)/$(TOOLS)|g" \ | all: $(BIN) $(UTIL) | ||||||
| 	-e "s|@sysconfdir[@]|$(SYSCONFDIR)/$(TOOLS)|g" \ |  | ||||||
| 	-e "s|@libdir[@]|$(LIBDIR)/$(TOOLS)|g" \ | EDIT_UTIL = sed -e "s|@datadir[@]|$(DATADIR)|g" \ | ||||||
| 	-e "s|@version@|$(VERSION)|" \ | 	-e "s|@sysconfdir[@]|$(SYSCONFDIR)|g" \ | ||||||
|  | 	-e "s|@libdir[@]|$(LIBDIR)|g" \ | ||||||
| 	-e "s|@chroot_version@|$(CHROOT_VERSION)|" | 	-e "s|@chroot_version@|$(CHROOT_VERSION)|" | ||||||
|  |  | ||||||
| %: %.in Makefile | EDIT_BIN = sed -e "s|@libdir[@]|$(LIBDIR)|g" | ||||||
|  |  | ||||||
|  | $(UTIL): %: %.in Makefile | ||||||
| 	@echo "GEN $@" | 	@echo "GEN $@" | ||||||
| 	@$(RM) "$@" | 	@$(RM) "$@" | ||||||
| 	@$(M4) $@.in | $(EDIT) >$@ | 	@$(M4) $@.in | $(EDIT_UTIL) >$@ | ||||||
|  | 	@$(CHMODAW) "$@" | ||||||
|  |  | ||||||
|  | $(BIN): %: %.in Makefile | ||||||
|  | 	@echo "GEN $@" | ||||||
|  | 	@$(RM) "$@" | ||||||
|  | 	@$(M4) $@.in | $(EDIT_BIN) >$@ | ||||||
| 	@$(CHMODAW) "$@" | 	@$(CHMODAW) "$@" | ||||||
| 	@$(CHMODX) "$@" | 	@$(CHMODX) "$@" | ||||||
|  |  | ||||||
| clean: | clean: | ||||||
| 	$(RM) $(BIN_BASE) $(BIN_PKG) $(BIN_ISO) | 	$(RM) $(BIN) $(UTIL) | ||||||
|  |  | ||||||
| install_base: | install_base: | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS) | 	install $(DIRMODE) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS) | ||||||
| 	install $(FILEMODE) $(SYSCONF) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS) | 	install $(FILEMODE) $(CONF) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS) | ||||||
|  |  | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(BINDIR) | 	install $(DIRMODE) $(DESTDIR)$(BINDIR) | ||||||
| 	install $(MODE) $(BIN_BASE) $(DESTDIR)$(BINDIR) | 	install $(MODE) $(BASE_BIN) $(DESTDIR)$(BINDIR) | ||||||
|  |  | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(LIBDIR)/$(TOOLS) | 	install $(DIRMODE) $(DESTDIR)$(LIBDIR)/$(TOOLS)/base | ||||||
| 	install $(FILEMODE) $(LIBS_BASE) $(DESTDIR)$(LIBDIR)/$(TOOLS) | 	install $(FILEMODE) $(BASE_UTIL) $(DESTDIR)$(LIBDIR)/$(TOOLS) | ||||||
|  | 	install $(FILEMODE) $(BASE_LIBS) $(DESTDIR)$(LIBDIR)/$(TOOLS)/base | ||||||
|  |  | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS) | 	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS) | ||||||
| 	install $(FILEMODE) $(SHARED_BASE) $(DESTDIR)$(DATADIR)/$(TOOLS) | 	install $(FILEMODE) $(BASE_DATA) $(DESTDIR)$(DATADIR)/$(TOOLS) | ||||||
|  |  | ||||||
| install_pkg: | install_pkg: | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(BINDIR) | 	install $(DIRMODE) $(DESTDIR)$(BINDIR) | ||||||
| 	install $(MODE) $(BIN_PKG) $(DESTDIR)$(BINDIR) | 	install $(MODE) $(PKG_BIN) $(DESTDIR)$(BINDIR) | ||||||
|  |  | ||||||
| 	$(LN) find-libdeps $(DESTDIR)$(BINDIR)/find-libprovides | 	$(LN) find-libdeps $(DESTDIR)$(BINDIR)/find-libprovides | ||||||
|  |  | ||||||
| 	for l in $(COMMITPKG_SYMS); do $(LN) commitpkg $(DESTDIR)$(BINDIR)/$$l; done | 	for l in $(LN_COMMITPKG); do $(LN) commitpkg $(DESTDIR)$(BINDIR)/$$l; done | ||||||
| 	for l in $(BUILDPKG_SYMS); do $(LN) buildpkg $(DESTDIR)$(BINDIR)/$$l; done | 	for l in $(LN_BUILDPKG); do $(LN) buildpkg $(DESTDIR)$(BINDIR)/$$l; done | ||||||
| 	for l in $(DEPLOYPKG_SYMS); do $(LN) deploypkg $(DESTDIR)$(BINDIR)/$$l; done | 	for l in $(LN_DEPLOYPKG); do $(LN) deploypkg $(DESTDIR)$(BINDIR)/$$l; done | ||||||
|  |  | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(LIBDIR)/$(TOOLS) | 	install $(DIRMODE) $(DESTDIR)$(LIBDIR)/$(TOOLS)/pkg | ||||||
| 	install $(FILEMODE) $(LIBS_PKG) $(DESTDIR)$(LIBDIR)/$(TOOLS) | 	install $(FILEMODE) $(PKG_UTIL) $(DESTDIR)$(LIBDIR)/$(TOOLS) | ||||||
|  | 	install $(FILEMODE) $(PKG_LIBS) $(DESTDIR)$(LIBDIR)/$(TOOLS)/pkg | ||||||
|  |  | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS) | 	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS) | ||||||
| 	install $(FILEMODE) $(SHARED_PKG) $(DESTDIR)$(DATADIR)/$(TOOLS) | 	install $(FILEMODE) $(PKG_DATA) $(DESTDIR)$(DATADIR)/$(TOOLS) | ||||||
|  |  | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches | 	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches | ||||||
| 	install $(FILEMODE) $(PATCHES) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches | 	install $(FILEMODE) $(PATCHES) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches | ||||||
|  |  | ||||||
|  | 	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/pkglists | ||||||
|  | 	install $(FILEMODE) $(PKG_LISTS) $(DESTDIR)$(DATADIR)/$(TOOLS)/pkglists | ||||||
| install_cpio: | install_cpio: | ||||||
| 	+make CPIODIR=$(CPIODIR) DESTDIR=$(DESTDIR) -C initcpio install | 	+make CPIODIR=$(CPIODIR) DESTDIR=$(DESTDIR) -C initcpio install | ||||||
|  |  | ||||||
| install_iso: install_cpio | install_iso: install_cpio | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(BINDIR) | 	install $(DIRMODE) $(DESTDIR)$(BINDIR) | ||||||
| 	install $(MODE) $(BIN_ISO) $(DESTDIR)$(BINDIR) | 	install $(MODE) $(ISO_BIN) $(DESTDIR)$(BINDIR) | ||||||
|  |  | ||||||
| 	for l in $(BUILDISO_SYMS); do $(LN) buildiso $(DESTDIR)$(BINDIR)/$$l; done | 	for l in $(LN_BUILDISO); do $(LN) buildiso $(DESTDIR)$(BINDIR)/$$l; done | ||||||
|  |  | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(LIBDIR)/$(TOOLS) | 	install $(DIRMODE) $(DESTDIR)$(LIBDIR)/$(TOOLS)/iso | ||||||
| 	install $(FILEMODE) $(LIBS_ISO) $(DESTDIR)$(LIBDIR)/$(TOOLS) | 	install $(FILEMODE) $(ISO_UTIL) $(DESTDIR)$(LIBDIR)/$(TOOLS) | ||||||
|  | 	install $(FILEMODE) $(ISO_LIBS) $(DESTDIR)$(LIBDIR)/$(TOOLS)/iso | ||||||
|  |  | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS) | 	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS) | ||||||
| 	install $(FILEMODE) $(SHARED_ISO) $(DESTDIR)$(DATADIR)/$(TOOLS) | 	install $(FILEMODE) $(ISO_DATA) $(DESTDIR)$(DATADIR)/$(TOOLS) | ||||||
|  |  | ||||||
| install: install_base install_pkg install_iso | install: install_base install_pkg install_iso | ||||||
|  |  | ||||||
| .PHONY: all clean install | .PHONY: all clean install install_base install_pkg install_iso | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ artools | |||||||
| #### Make flags | #### Make flags | ||||||
|  |  | ||||||
|  |  | ||||||
| * PREFIX=/usr/local (default if defined) | * PREFIX=/usr | ||||||
| * SYSCONFDIR=/etc | * SYSCONFDIR=/etc | ||||||
|  |  | ||||||
| #### Dependencies | #### Dependencies | ||||||
|   | |||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,16 +12,9 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ |  | ||||||
| 
 |  | ||||||
| shopt -s extglob | shopt -s extglob | ||||||
| 
 | 
 | ||||||
| LIBDIR='@libdir@' | . @libdir@/artools/util-base.sh | ||||||
| SYSCONFDIR='@sysconfdir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| import ${LIBDIR}/util.sh |  | ||||||
| import ${LIBDIR}/util-mount.sh |  | ||||||
| 
 | 
 | ||||||
| select_os(){ | select_os(){ | ||||||
|     local os_list=( $(detect) ) count=${#os_list[@]} |     local os_list=( $(detect) ) count=${#os_list[@]} | ||||||
| @@ -52,7 +48,7 @@ select_os(){ | |||||||
| 
 | 
 | ||||||
| load_user_info | load_user_info | ||||||
| 
 | 
 | ||||||
| load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | ||||||
| 
 | 
 | ||||||
| automount=false | automount=false | ||||||
| 
 | 
 | ||||||
| @@ -1,4 +1,16 @@ | |||||||
| #!/bin/bash | #!/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. | ||||||
| 
 | 
 | ||||||
| # | # | ||||||
| # Assumptions: | # Assumptions: | ||||||
| @@ -8,17 +20,9 @@ | |||||||
| #  4) A valid mirror appears in /etc/pacman.d/mirrorlist | #  4) A valid mirror appears in /etc/pacman.d/mirrorlist | ||||||
| # | # | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ |  | ||||||
| 
 |  | ||||||
| shopt -s extglob | shopt -s extglob | ||||||
| 
 | 
 | ||||||
| DATADIR='@datadir@' | . @libdir@/artools/util-base.sh | ||||||
| LIBDIR='@libdir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| import ${LIBDIR}/util.sh |  | ||||||
| import ${LIBDIR}/util-mount.sh |  | ||||||
| import ${LIBDIR}/util-chroot.sh |  | ||||||
| 
 | 
 | ||||||
| copy_mirrorlist(){ | copy_mirrorlist(){ | ||||||
|     cp -a /etc/pacman.d/mirrorlist "$1/etc/pacman.d/" |     cp -a /etc/pacman.d/mirrorlist "$1/etc/pacman.d/" | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,16 +12,9 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ | chroot_version=0.9 | ||||||
| 
 | 
 | ||||||
| chroot_version=@chroot_version@ | . @libdir@/artools/util-base.sh | ||||||
| 
 |  | ||||||
| LIBDIR='@libdir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| import ${LIBDIR}/util.sh |  | ||||||
| import ${LIBDIR}/util-chroot.sh |  | ||||||
| import ${LIBDIR}/util-mount.sh |  | ||||||
| 
 | 
 | ||||||
| working_dir='' | working_dir='' | ||||||
| files=() | files=() | ||||||
| @@ -115,8 +111,8 @@ umask 0022 | |||||||
| # Sanity check | # Sanity check | ||||||
| if [[ ! -f "$working_dir/.artools" ]]; then | if [[ ! -f "$working_dir/.artools" ]]; then | ||||||
|     die "'%s' does not appear to be an artix chroot." "$working_dir" |     die "'%s' does not appear to be an artix chroot." "$working_dir" | ||||||
| elif [[ $(cat "$working_dir/.artools") != $chroot_version ]]; then | elif [[ $(cat "$working_dir/.artools") != ${CHROOTVERSION} ]]; then | ||||||
|     die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "$chroot_version" |     die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "${CHROOTVERSION}" | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| chroot_api_mount "${working_dir}" || die "failed to setup API filesystems in chroot %s" "${working_dir}" | chroot_api_mount "${working_dir}" || die "failed to setup API filesystems in chroot %s" "${working_dir}" | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,14 +12,9 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ |  | ||||||
| 
 |  | ||||||
| shopt -s extglob | shopt -s extglob | ||||||
| 
 | 
 | ||||||
| LIBDIR='@libdir@' | . @libdir@/artools/util-base.sh | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| import ${LIBDIR}/util-fstab.sh |  | ||||||
| 
 | 
 | ||||||
| write_source() { | write_source() { | ||||||
|     local src=$1 spec= label= uuid= comment=() |     local src=$1 spec= label= uuid= comment=() | ||||||
| @@ -73,17 +71,17 @@ optstring_apply_quirks() { | |||||||
| 
 | 
 | ||||||
|     case $fstype in |     case $fstype in | ||||||
|         f2fs) |         f2fs) | ||||||
|         # These are Kconfig options for f2fs. Kernels supporting the options will |             # These are Kconfig options for f2fs. Kernels supporting the options will | ||||||
|         # only provide the negative versions of these (e.g. noacl), and vice versa |             # only provide the negative versions of these (e.g. noacl), and vice versa | ||||||
|         # for kernels without support. |             # for kernels without support. | ||||||
|         optstring_remove_option "$varname" noacl,acl,nouser_xattr,user_xattr |             optstring_remove_option "$varname" noacl,acl,nouser_xattr,user_xattr | ||||||
|         ;; |         ;; | ||||||
|         vfat) |         vfat) | ||||||
|         # Before Linux v3.8, "cp" is prepended to the value of the codepage. |             # Before Linux v3.8, "cp" is prepended to the value of the codepage. | ||||||
|         if optstring_get_option "$varname" codepage && [[ $codepage = cp* ]]; then |             if optstring_get_option "$varname" codepage && [[ $codepage = cp* ]]; then | ||||||
|             optstring_remove_option "$varname" codepage |                 optstring_remove_option "$varname" codepage | ||||||
|             optstring_append_option "$varname" "codepage=${codepage#cp}" |                 optstring_append_option "$varname" "codepage=${codepage#cp}" | ||||||
|         fi |             fi | ||||||
|         ;; |         ;; | ||||||
|     esac |     esac | ||||||
| } | } | ||||||
| @@ -109,8 +107,8 @@ EOF | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| if [[ -z $1 || $1 = @(-h|--help) ]]; then | if [[ -z $1 || $1 = @(-h|--help) ]]; then | ||||||
|   usage |     usage | ||||||
|   exit $(( $# ? 0 : 1 )) |     exit $(( $# ? 0 : 1 )) | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| while getopts ':f:LPpt:U' flag; do | while getopts ':f:LPpt:U' flag; do | ||||||
| @@ -162,20 +160,20 @@ while read -r src target fstype opts fsroot; do | |||||||
| 
 | 
 | ||||||
|     if [[ $fsroot != / ]]; then |     if [[ $fsroot != / ]]; then | ||||||
|         if [[ $fstype = btrfs ]]; then |         if [[ $fstype = btrfs ]]; then | ||||||
|         opts+=,subvol=${fsroot#/} |             opts+=,subvol=${fsroot#/} | ||||||
|         else |         else | ||||||
|         # it's a bind mount |             # it's a bind mount | ||||||
|         src=$(findmnt -funcevo TARGET "$src")$fsroot |             src=$(findmnt -funcevo TARGET "$src")$fsroot | ||||||
|         if [[ $src -ef $target ]]; then |             if [[ $src -ef $target ]]; then | ||||||
|             # hrmm, this is weird. we're probably looking at a file or directory |                 # hrmm, this is weird. we're probably looking at a file or directory | ||||||
|             # that was bound into a chroot from the host machine. Ignore it, |                 # that was bound into a chroot from the host machine. Ignore it, | ||||||
|             # because this won't actually be a valid mount. Worst case, the user |                 # because this won't actually be a valid mount. Worst case, the user | ||||||
|             # just re-adds it. |                 # just re-adds it. | ||||||
|             continue |                 continue | ||||||
|         fi |             fi | ||||||
|         fstype=none |             fstype=none | ||||||
|         opts+=,bind |             opts+=,bind | ||||||
|         pass=0 |             pass=0 | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
| 
 | 
 | ||||||
| @@ -209,22 +207,22 @@ done | |||||||
| 
 | 
 | ||||||
|     while read -r device type _ _ prio; do |     while read -r device type _ _ prio; do | ||||||
|         options=defaults |         options=defaults | ||||||
|         if [[ $prio != -1 ]]; then |         if (( prio >= 0 )); then | ||||||
|         options+=,pri=$prio |             options+=,pri=$prio | ||||||
|         fi |         fi | ||||||
| 
 | 
 | ||||||
|         # skip files marked deleted by the kernel |         # skip files marked deleted by the kernel | ||||||
|         [[ $device = *'\040(deleted)' ]] && continue |         [[ $device = *'\040(deleted)' ]] && continue | ||||||
| 
 | 
 | ||||||
|         if [[ $type = file ]]; then |         if [[ $type = file ]]; then | ||||||
|         printf '%-20s' "$device" |             printf '%-20s' "$device" | ||||||
|         elif [[ $device = /dev/dm-+([0-9]) ]]; then |         elif [[ $device = /dev/dm-+([0-9]) ]]; then | ||||||
|         # device mapper doesn't allow characters we need to worry |             # device mapper doesn't allow characters we need to worry | ||||||
|         # about being mangled, and it does the escaping of dashes |             # about being mangled, and it does the escaping of dashes | ||||||
|         # for us in sysfs. |             # for us in sysfs. | ||||||
|         write_source "$(dm_name_for_devnode "$device")" |             write_source "$(dm_name_for_devnode "$device")" | ||||||
|         else |         else | ||||||
|         write_source "$(unmangle "$device")" |             write_source "$(unmangle "$device")" | ||||||
|         fi |         fi | ||||||
| 
 | 
 | ||||||
|         printf '\t%-10s\t%-10s\t%-10s\t0 0\n\n' 'none' 'swap' "$options" |         printf '\t%-10s\t%-10s\t%-10s\t0 0\n\n' 'none' 'swap' "$options" | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,15 +12,7 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ | . @libdir@/artools/util-base.sh | ||||||
| 
 |  | ||||||
| chroot_version=@chroot_version@ |  | ||||||
| 
 |  | ||||||
| LIBDIR='@libdir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| import ${LIBDIR}/util.sh |  | ||||||
| import ${LIBDIR}/util-chroot.sh |  | ||||||
| 
 | 
 | ||||||
| working_dir='' | working_dir='' | ||||||
| files=() | files=() | ||||||
| @@ -102,7 +97,7 @@ done < <(declare -x | sed -r 's/^declare -x ([^=]*)=.*/\1/' | grep -i '_proxy$') | |||||||
| env -i "${_env[@]}" \ | env -i "${_env[@]}" \ | ||||||
| basestrap "${basestrap_args[@]}" ${pacman_conf:+-C "$pacman_conf"} "$working_dir" ${cache_dirs[@]/#/--cachedir=} "$@" || die 'Failed to install all packages' | basestrap "${basestrap_args[@]}" ${pacman_conf:+-C "$pacman_conf"} "$working_dir" ${cache_dirs[@]/#/--cachedir=} "$@" || die 'Failed to install all packages' | ||||||
| 
 | 
 | ||||||
| echo "$chroot_version" > "$working_dir/.artools" | echo "${CHROOTVERSION}" > "$working_dir/.artools" | ||||||
| 
 | 
 | ||||||
| if [[ ! -f "$working_dir/etc/locale.gen.orig" ]];then | if [[ ! -f "$working_dir/etc/locale.gen.orig" ]];then | ||||||
|     mv "$working_dir/etc/locale.gen" "$working_dir/etc/locale.gen.orig" |     mv "$working_dir/etc/locale.gen" "$working_dir/etc/locale.gen.orig" | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,16 +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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ | . @libdir@/artools/util-base.sh | ||||||
| 
 |  | ||||||
| LIBDIR='@libdir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| import ${LIBDIR}/util.sh |  | ||||||
| 
 | 
 | ||||||
| load_user_info | load_user_info | ||||||
| 
 | 
 | ||||||
| load_vars "${PAC_USERCONFDIR}/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" | load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" | ||||||
| load_vars /etc/makepkg.conf | load_vars /etc/makepkg.conf | ||||||
| 
 | 
 | ||||||
| file_to_sign="$1" | file_to_sign="$1" | ||||||
| @@ -28,9 +26,10 @@ if [ ! -e "$1" ]; then | |||||||
|     exit 1 |     exit 1 | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| msg2 "Signing [%s] with key %s" "${file_to_sign##*/}" "${GPGKEY}..." |  | ||||||
| if [[ -n "${BUILDBOT_GPGP}" ]]; then | if [[ -n "${BUILDBOT_GPGP}" ]]; then | ||||||
|  |     msg2 "Signing [%s]" "${file_to_sign##*/}" | ||||||
|     gpg --batch --passphrase "${BUILDBOT_GPGP}" --detach-sign "$file_to_sign" |     gpg --batch --passphrase "${BUILDBOT_GPGP}" --detach-sign "$file_to_sign" | ||||||
| else | else | ||||||
|  |     msg2 "Signing [%s] with key %s" "${file_to_sign##*/}" "${GPGKEY}..." | ||||||
|     gpg --detach-sign --use-agent -u "${GPGKEY}" "$file_to_sign" |     gpg --detach-sign --use-agent -u "${GPGKEY}" "$file_to_sign" | ||||||
| fi | fi | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,15 +12,8 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ | . @libdir@/artools/util-base.sh | ||||||
| 
 | . @libdir@/artools/util-iso.sh | ||||||
| LIBDIR='@libdir@' |  | ||||||
| DATADIR='@datadir@' |  | ||||||
| SYSCONFDIR='@sysconfdir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| import ${LIBDIR}/util.sh |  | ||||||
| import ${LIBDIR}/util-iso.sh |  | ||||||
| 
 | 
 | ||||||
| prepare_build(){ | prepare_build(){ | ||||||
|     timer_start=$(get_timer) |     timer_start=$(get_timer) | ||||||
| @@ -31,7 +27,7 @@ prepare_build(){ | |||||||
|     esac |     esac | ||||||
| 
 | 
 | ||||||
|     pacman_conf="${DATADIR}/$pac_file" |     pacman_conf="${DATADIR}/$pac_file" | ||||||
|     [[ -f $AT_USERCONFDIR/$pac_file ]] && pacman_conf="$AT_USERCONFDIR/$pac_file" |     [[ -f ${USERCONFDIR}/artools/$pac_file ]] && pacman_conf="${USERCONFDIR}/artools/$pac_file" | ||||||
| 
 | 
 | ||||||
|     iso_file=$(gen_iso_fn).iso |     iso_file=$(gen_iso_fn).iso | ||||||
| 
 | 
 | ||||||
| @@ -99,7 +95,7 @@ build(){ | |||||||
| 
 | 
 | ||||||
| load_user_info | load_user_info | ||||||
| 
 | 
 | ||||||
| load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | ||||||
| 
 | 
 | ||||||
| clean_first=true | clean_first=true | ||||||
| pretend=false | pretend=false | ||||||
| @@ -161,12 +157,12 @@ done | |||||||
| 
 | 
 | ||||||
| shift $(($OPTIND - 1)) | shift $(($OPTIND - 1)) | ||||||
| 
 | 
 | ||||||
|  | ${pretend} && display_settings && exit 1 | ||||||
|  | 
 | ||||||
| check_root | check_root | ||||||
| 
 | 
 | ||||||
| prepare_traps | prepare_traps | ||||||
| 
 | 
 | ||||||
| prepare_build | prepare_build | ||||||
| 
 | 
 | ||||||
| ${pretend} && display_settings && exit 1 |  | ||||||
| 
 |  | ||||||
| build | build | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,13 +12,7 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ | . @libdir@/artools/util-base.sh | ||||||
| 
 |  | ||||||
| LIBDIR='@libdir@' |  | ||||||
| SYSCONFDIR='@sysconfdir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| import ${LIBDIR}/util.sh |  | ||||||
| 
 | 
 | ||||||
| connect(){ | connect(){ | ||||||
|     echo "${ACCOUNT}@${FILE_HOST}:${FILE_HOME}" |     echo "${ACCOUNT}@${FILE_HOST}:${FILE_HOME}" | ||||||
| @@ -35,7 +32,7 @@ sync_dir(){ | |||||||
| 
 | 
 | ||||||
| load_user_info | load_user_info | ||||||
| 
 | 
 | ||||||
| load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | ||||||
| 
 | 
 | ||||||
| update=false | update=false | ||||||
| verbose=false | verbose=false | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,19 +12,12 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ | . @libdir@/artools/util-base.sh | ||||||
| 
 | . @libdir@/artools/util-pkg.sh | ||||||
| LIBDIR='@libdir@' |  | ||||||
| SYSCONFDIR='@sysconfdir@' |  | ||||||
| DATADIR='@datadir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| import ${LIBDIR}/util.sh |  | ||||||
| import ${LIBDIR}/util-chroot.sh |  | ||||||
| 
 | 
 | ||||||
| load_user_info | load_user_info | ||||||
| 
 | 
 | ||||||
| load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | ||||||
| 
 | 
 | ||||||
| create_first=false | create_first=false | ||||||
| 
 | 
 | ||||||
| @@ -38,10 +34,10 @@ case ${repo} in | |||||||
| esac | esac | ||||||
| 
 | 
 | ||||||
| pacman_conf="${DATADIR}/pacman-${repo}.conf" | pacman_conf="${DATADIR}/pacman-${repo}.conf" | ||||||
| [[ -f $AT_USERCONFDIR/pacman-${repo}.conf ]] && pacman_conf="$AT_USERCONFDIR/pacman-${repo}.conf" | [[ -f ${USERCONFDIR}/artools/pacman-${repo}.conf ]] && pacman_conf="${USERCONFDIR}/artools/pacman-${repo}.conf" | ||||||
| 
 | 
 | ||||||
| makepkg_conf="${DATADIR}/makepkg.conf" | makepkg_conf="${DATADIR}/makepkg.conf" | ||||||
| [[ -f $AT_USERCONFDIR/makepkg.conf ]] && makepkg_conf="$AT_USERCONFDIR/makepkg.conf" | [[ -f ${USERCONFDIR}/artools/makepkg.conf ]] && makepkg_conf="${USERCONFDIR}/artools/makepkg.conf" | ||||||
| 
 | 
 | ||||||
| usage() { | usage() { | ||||||
|     echo "Usage: ${0##*/} [options] -- [mkchrootpkg_args]" |     echo "Usage: ${0##*/} [options] -- [mkchrootpkg_args]" | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,101 +12,54 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ | . @libdir@/artools/util-base.sh | ||||||
| 
 | . @libdir@/artools/util-pkg.sh | ||||||
| LIBDIR='@libdir@' |  | ||||||
| SYSCONFDIR='@sysconfdir@' |  | ||||||
| DATADIR='@datadir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| import ${LIBDIR}/util.sh |  | ||||||
| import ${LIBDIR}/util-pkg.sh |  | ||||||
| import ${LIBDIR}/util-pkg-gitea.sh |  | ||||||
| import ${LIBDIR}/util-pkg-subrepo.sh |  | ||||||
| 
 | 
 | ||||||
| pull_tree_arch(){ | pull_tree_arch(){ | ||||||
|     cd ${TREE_DIR_ARCH} |     cd ${TREE_DIR_ARCH} | ||||||
|     for tree in ${tree_names[@]};do |     for tree in ${TREE_NAMES_ARCH[@]};do | ||||||
|         if [[ -d ${tree} ]];then |         if [[ -d ${tree} ]];then | ||||||
|             cd ${tree} |             cd ${tree} | ||||||
|             msg "Checking (%s)" "${tree}" |             pull_tree "${tree}" | ||||||
|             pull_tree |  | ||||||
|             cd .. |             cd .. | ||||||
|         else |         else | ||||||
|             msg "Cloning (%s) ..." "$tree" |             clone_tree "${HOST_TREE_ARCH}" "${tree}" | ||||||
|             clone_tree "${HOST_TREE_ARCH}/${tree}" |  | ||||||
|         fi |         fi | ||||||
|     done |     done | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| config_tree(){ |  | ||||||
|     local tree="$1" |  | ||||||
|     cd $tree |  | ||||||
|         git config --bool pull.rebase true |  | ||||||
|         git config commit.gpgsign true |  | ||||||
|         if [[ -n "${GPGKEY}" ]];then |  | ||||||
|             git config user.signingkey "${GPGKEY}" |  | ||||||
|         else |  | ||||||
|             warning "No GPGKEY configured in makepkg.conf!" |  | ||||||
|         fi |  | ||||||
|     cd .. |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| pull_tree_artix(){ | pull_tree_artix(){ | ||||||
|     cd ${TREE_DIR_ARTIX} |     cd ${TREE_DIR_ARTIX} | ||||||
|     for tree in ${tree_names[@]};do |     for tree in ${TREE_NAMES_ARTIX[@]};do | ||||||
|         if [[ -d ${tree} ]];then |         if [[ -d ${tree} ]];then | ||||||
|             config_tree "${tree}" |             config_tree "${tree}" | ||||||
|             cd ${tree} |             cd ${tree} | ||||||
|             msg "Checking (%s)" "${tree}" |             pull_tree "${tree}" | ||||||
|             pull_tree |  | ||||||
|             cd .. |             cd .. | ||||||
|         else |         else | ||||||
|             msg "Cloning (%s) ..." "$tree" |             clone_tree "${HOST_TREE_ARTIX}" "${tree}" | ||||||
|             clone_tree "${HOST_TREE_ARTIX}/${tree}" |  | ||||||
|             config_tree "${tree}" |             config_tree "${tree}" | ||||||
|         fi |         fi | ||||||
|     done |     done | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| mkrepo(){ |  | ||||||
|     local pkg="$1" team="$2" |  | ||||||
|     local pkg_path=${TREE_DIR_ARTIX}/$team/$pkg |  | ||||||
| 
 |  | ||||||
|     cd ${TREE_DIR_ARTIX}/$team |  | ||||||
| 
 |  | ||||||
|     local org=$(get_pkg_org "$pkg") |  | ||||||
| 
 |  | ||||||
|     create_repo "$pkg" "$org" |  | ||||||
| 
 |  | ||||||
|     add_repo_to_team "$pkg" "$org" "$team" |  | ||||||
| 
 |  | ||||||
|     subrepo_clone "$pkg" "$org" |  | ||||||
| 
 |  | ||||||
|     prepare_dir "$pkg_path/trunk" |  | ||||||
| 
 |  | ||||||
|     commit_jenkins_files "$pkg" |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| sync_pkg(){ | sync_pkg(){ | ||||||
|     local rsync_args=(-aWxvci --progress --delete-before --no-R --no-implied-dirs) |     local rsync_args=(-aWxvci --progress --delete-before --no-R --no-implied-dirs) | ||||||
|     local src="$1" dest="$2" tree="$3" |     local src="$1" dest="$2" | ||||||
| 
 | 
 | ||||||
|     info "Sync from archlinux (%s)" "$git_tree_arch" |  | ||||||
|     rsync "${rsync_args[@]}" $src/ $dest/ |     rsync "${rsync_args[@]}" $src/ $dest/ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| show_deps(){ | show_deps(){ | ||||||
|     local src="$1" repo="$2" |     local src="$1" repo="$2" | ||||||
| 
 | 
 | ||||||
|     source $src/PKGBUILD 2>/dev/null |     . $src/PKGBUILD 2>/dev/null | ||||||
| 
 | 
 | ||||||
|     [[ $arch == 'any' ]] && CARCH=any |     [[ $arch == 'any' ]] && CARCH=any | ||||||
| 
 | 
 | ||||||
|     local archver=$(get_full_version $pkg) |     local archver=$(get_full_version $pkg) | ||||||
| 
 | 
 | ||||||
|     msg "git tree: %s" "$git_tree_arch" |     msg "repo: %s" "$repo" | ||||||
|     msg2 "repo: %s" "$repo" |  | ||||||
|     [[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}" |     [[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}" | ||||||
|     msg2 "pkgname: %s" "${pkgname[*]}" |     msg2 "pkgname: %s" "${pkgname[*]}" | ||||||
|     [[ -n $pkgdesc ]] && msg2 "pkgdesc: %s" "${pkgdesc}" |     [[ -n $pkgdesc ]] && msg2 "pkgdesc: %s" "${pkgdesc}" | ||||||
| @@ -127,41 +83,28 @@ from_arch(){ | |||||||
|     src=$package/repos/$repo |     src=$package/repos/$repo | ||||||
| 
 | 
 | ||||||
|     local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "$pkg") |     local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "$pkg") | ||||||
|     dest=${TREE_DIR_ARTIX}/$git_tree_artix/$pkg/trunk |     local tree_dir=$(get_artix_tree "$pkg" "$git_tree_artix" "$git_tree_arch") | ||||||
|  | 
 | ||||||
|  |     dest=${TREE_DIR_ARTIX}/$tree_dir/$pkg/trunk | ||||||
| 
 | 
 | ||||||
|     show_deps "$src" "$repo" |     show_deps "$src" "$repo" | ||||||
| 
 | 
 | ||||||
|     if [[ -d $dest ]];then |     if [[ -d $dest ]];then | ||||||
|  | 
 | ||||||
|         cd ${TREE_DIR_ARTIX}/$git_tree_artix |         cd ${TREE_DIR_ARTIX}/$git_tree_artix | ||||||
| 
 | 
 | ||||||
|         source $dest/PKGBUILD 2>/dev/null |         . $dest/PKGBUILD 2>/dev/null | ||||||
|         local artixver=$(get_full_version $pkg) |         local artixver=$(get_full_version $pkg) | ||||||
| 
 | 
 | ||||||
|         msg2 "Artix Version: %s" "$artixver" |         msg2 "Artix Version: %s" "$artixver" | ||||||
|         sync_pkg "$src" "$dest" "$git_tree_arch" |  | ||||||
|         patch_pkg "$pkg" |  | ||||||
|     else |     else | ||||||
|         [[ $git_tree_arch == 'packages' ]] && git_tree_artix=$git_tree_arch |         subrepo_new "$pkg" "$tree_dir" "$git_tree_arch" | ||||||
|         [[ $git_tree_arch == 'community' ]] && git_tree_artix=$git_tree_arch |  | ||||||
| 
 |  | ||||||
|         local pkg_path=${TREE_DIR_ARTIX}/$git_tree_artix/$pkg |  | ||||||
| 
 |  | ||||||
|         cd ${TREE_DIR_ARTIX}/$git_tree_artix |  | ||||||
| 
 |  | ||||||
|         local org=$(get_pkg_org "$pkg") |  | ||||||
| 
 |  | ||||||
|         create_repo "$pkg" "$org" |  | ||||||
| 
 |  | ||||||
|         add_repo_to_team "$pkg" "$org" "$git_tree_artix" |  | ||||||
| 
 |  | ||||||
|         subrepo_clone "$pkg" "$org" |  | ||||||
| 
 |  | ||||||
|         commit_jenkins_files "$pkg" |  | ||||||
| 
 |  | ||||||
| #         dest=$pkg_path/trunk |  | ||||||
| 
 |  | ||||||
|         sync_pkg "$src" "$dest" "$git_tree_arch" |  | ||||||
|     fi |     fi | ||||||
|  | 
 | ||||||
|  |     msg "Sync (%s) from [%s] to [%s]" "$pkg" "$git_tree_arch" "$tree_dir" | ||||||
|  | 
 | ||||||
|  |     sync_pkg "$src" "$dest" | ||||||
|  |     patch_pkg "$pkg" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| view_build(){ | view_build(){ | ||||||
| @@ -184,8 +127,8 @@ sync_repos(){ | |||||||
| 
 | 
 | ||||||
| load_user_info | load_user_info | ||||||
| 
 | 
 | ||||||
| load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | ||||||
| load_vars "${PAC_USERCONFDIR}/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" | load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" | ||||||
| load_vars /etc/makepkg.conf | load_vars /etc/makepkg.conf | ||||||
| 
 | 
 | ||||||
| sync=false | sync=false | ||||||
| @@ -197,8 +140,7 @@ conf=false | |||||||
| 
 | 
 | ||||||
| PACKAGE='' | PACKAGE='' | ||||||
| 
 | 
 | ||||||
| tree_names=(packages community) | TEAM=${TREE_NAMES[0]} | ||||||
| TEAM=${tree_names[0]} |  | ||||||
| SUBORG='' | SUBORG='' | ||||||
| 
 | 
 | ||||||
| usage() { | usage() { | ||||||
| @@ -210,8 +152,8 @@ usage() { | |||||||
|     echo "    -s            Clone or pull repos" |     echo "    -s            Clone or pull repos" | ||||||
|     echo "    -z            Don't clone or pull arch repos" |     echo "    -z            Don't clone or pull arch repos" | ||||||
|     echo '    -i            Import a package from arch repos' |     echo '    -i            Import a package from arch repos' | ||||||
|     echo '    -m            Make new remote subrepo and clone it' |     echo '    -n            Make new remote subrepo and clone it' | ||||||
|     echo '    -C            Configure subrepo url' |     echo '    -c            Configure subrepo url' | ||||||
|     echo '    -v            View package depends' |     echo '    -v            View package depends' | ||||||
|     echo '    -h            This help' |     echo '    -h            This help' | ||||||
|     echo '' |     echo '' | ||||||
| @@ -250,6 +192,6 @@ ${view} && view_build "${PACKAGE}" | |||||||
| 
 | 
 | ||||||
| ${import} && from_arch "${PACKAGE}" | ${import} && from_arch "${PACKAGE}" | ||||||
| 
 | 
 | ||||||
| ${createnew} && mkrepo "${PACKAGE}" "${TEAM}" | ${createnew} && subrepo_new "${PACKAGE}" "${TEAM}" | ||||||
| 
 | 
 | ||||||
| ${conf} && subrepo_config "${PACKAGE}" "${SUBORG}" | ${conf} && subrepo_config "${PACKAGE}" "${SUBORG}" | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,19 +12,14 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ | . @libdir@/artools/util-base.sh | ||||||
| 
 | . @libdir@/artools/util-pkg.sh | ||||||
| LIBDIR='@libdir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| import ${LIBDIR}/util.sh |  | ||||||
| import ${LIBDIR}/util-pkg.sh |  | ||||||
| 
 | 
 | ||||||
| shopt -s extglob | shopt -s extglob | ||||||
| 
 | 
 | ||||||
| load_user_info | load_user_info | ||||||
| 
 | 
 | ||||||
| load_vars "${PAC_USERCONFDIR}/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" | load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" | ||||||
| load_vars /etc/makepkg.conf | load_vars /etc/makepkg.conf | ||||||
| 
 | 
 | ||||||
| if [[ ! -f PKGBUILD ]]; then | if [[ ! -f PKGBUILD ]]; then | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,31 +12,20 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ | . @libdir@/artools/util-base.sh | ||||||
| 
 | . @libdir@/artools/util-pkg.sh | ||||||
| LIBDIR='@libdir@' |  | ||||||
| SYSCONFDIR='@sysconfdir@' |  | ||||||
| DATADIR='@datadir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| import ${LIBDIR}/util.sh |  | ||||||
| import ${LIBDIR}/util-pkg.sh |  | ||||||
| import ${LIBDIR}/util-pkg-subrepo.sh |  | ||||||
| 
 |  | ||||||
| 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 |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| commit_pkg(){ | commit_pkg(){ | ||||||
|     local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}") |     local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}") | ||||||
|     if [[ -n ${git_tree} ]];then |     if [[ -n ${git_tree} ]];then | ||||||
|  | 
 | ||||||
|  |         cd ${TREE_DIR_ARTIX}/${git_tree} | ||||||
|  | 
 | ||||||
|  |         local head=$(get_local_head) | ||||||
|  | 
 | ||||||
|         cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE} |         cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE} | ||||||
| 
 | 
 | ||||||
|         source trunk/PKGBUILD |         . trunk/PKGBUILD | ||||||
|         [[ $arch == 'any' ]] && CARCH=any |         [[ $arch == 'any' ]] && CARCH=any | ||||||
|         local ver=$(get_full_version "${PACKAGE}") |         local ver=$(get_full_version "${PACKAGE}") | ||||||
|         local commit_msg="" |         local commit_msg="" | ||||||
| @@ -60,14 +52,14 @@ commit_pkg(){ | |||||||
| 
 | 
 | ||||||
|         cd ${TREE_DIR_ARTIX}/${git_tree} |         cd ${TREE_DIR_ARTIX}/${git_tree} | ||||||
| 
 | 
 | ||||||
|         if ${push};then |         ${push} && pull_tree "${git_tree}" "$head" | ||||||
|             mainrepo_pull "${git_tree}" | 
 | ||||||
|  |         subrepo_pull "${PACKAGE}" | ||||||
|  |         subrepo_push "${PACKAGE}" | ||||||
|  |         subrepo_clean "${PACKAGE}" | ||||||
|  | 
 | ||||||
|  |         ${push} && push_tree "${git_tree}" | ||||||
| 
 | 
 | ||||||
|             subrepo_push "${PACKAGE}" |  | ||||||
|             subrepo_clean "${PACKAGE}" |  | ||||||
| #             sleep 1 |  | ||||||
|             mainrepo_push "${git_tree}" |  | ||||||
|         fi |  | ||||||
|         git prune |         git prune | ||||||
|     else |     else | ||||||
|         error "Package '%s' does not exist!" "${PACKAGE}" |         error "Package '%s' does not exist!" "${PACKAGE}" | ||||||
| @@ -77,9 +69,14 @@ commit_pkg(){ | |||||||
| symlink_commit_pkg(){ | symlink_commit_pkg(){ | ||||||
|     local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}") |     local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}") | ||||||
|     if [[ -n ${git_tree} ]];then |     if [[ -n ${git_tree} ]];then | ||||||
|  | 
 | ||||||
|  |         cd ${TREE_DIR_ARTIX}/${git_tree} | ||||||
|  | 
 | ||||||
|  |         local head=$(get_local_head) | ||||||
|  | 
 | ||||||
|         cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE} |         cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE} | ||||||
| 
 | 
 | ||||||
|         source trunk/PKGBUILD |         . trunk/PKGBUILD | ||||||
|         [[ $arch == 'any' ]] && CARCH=any |         [[ $arch == 'any' ]] && CARCH=any | ||||||
|         local ver=$(get_full_version "${PACKAGE}") |         local ver=$(get_full_version "${PACKAGE}") | ||||||
| 
 | 
 | ||||||
| @@ -96,6 +93,7 @@ symlink_commit_pkg(){ | |||||||
|             local action='move' |             local action='move' | ||||||
|             local src="${REPO_SRC}-$CARCH" dest="${REPO_DEST}-$CARCH" |             local src="${REPO_SRC}-$CARCH" dest="${REPO_DEST}-$CARCH" | ||||||
| 
 | 
 | ||||||
|  |             [[ ! -f repos/$src/PKGBUILD ]] && die "%s does not exist!" "repos/$src/PKGBUILD" | ||||||
|             [[ -d repos/$dest ]] && git rm -r repos/$dest |             [[ -d repos/$dest ]] && git rm -r repos/$dest | ||||||
|             [[ ! -d repos ]] && mkdir repos |             [[ ! -d repos ]] && mkdir repos | ||||||
|             [[ ! -d repos/$dest ]] && mkdir repos/$dest |             [[ ! -d repos/$dest ]] && mkdir repos/$dest | ||||||
| @@ -111,14 +109,14 @@ symlink_commit_pkg(){ | |||||||
| 
 | 
 | ||||||
|         cd ${TREE_DIR_ARTIX}/${git_tree} |         cd ${TREE_DIR_ARTIX}/${git_tree} | ||||||
| 
 | 
 | ||||||
|         if ${push};then |         ${push} && pull_tree "${git_tree}" "$head" | ||||||
|             mainrepo_pull "${git_tree}" | 
 | ||||||
|  |         subrepo_pull "${PACKAGE}" | ||||||
|  |         subrepo_push "${PACKAGE}" | ||||||
|  |         subrepo_clean "${PACKAGE}" | ||||||
|  | 
 | ||||||
|  |         ${push} && push_tree "${git_tree}" | ||||||
| 
 | 
 | ||||||
|             subrepo_push "${PACKAGE}" |  | ||||||
|             subrepo_clean "${PACKAGE}" |  | ||||||
| #             sleep 1 |  | ||||||
|             mainrepo_push "${git_tree}" |  | ||||||
|         fi |  | ||||||
|         git prune |         git prune | ||||||
|     else |     else | ||||||
|         error "Package '%s' does not exist!" "${PACKAGE}" |         error "Package '%s' does not exist!" "${PACKAGE}" | ||||||
| @@ -127,8 +125,8 @@ symlink_commit_pkg(){ | |||||||
| 
 | 
 | ||||||
| load_user_info | load_user_info | ||||||
| 
 | 
 | ||||||
| load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | ||||||
| load_vars "${PAC_USERCONFDIR}/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" | load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" | ||||||
| load_vars /etc/makepkg.conf | load_vars /etc/makepkg.conf | ||||||
| 
 | 
 | ||||||
| REPO_SRC='trunk' | REPO_SRC='trunk' | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,20 +12,13 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ | . @libdir@/artools/util-base.sh | ||||||
| 
 | . @libdir@/artools/util-pkg.sh | ||||||
| LIBDIR='@libdir@' |  | ||||||
| SYSCONFDIR='@sysconfdir@' |  | ||||||
| DATADIR='@datadir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| import ${LIBDIR}/util.sh |  | ||||||
| import ${LIBDIR}/util-pkg.sh |  | ||||||
| 
 | 
 | ||||||
| show_version_table(){ | show_version_table(){ | ||||||
|     msg_table_header "%-20s %-20s %-25s %-30s %-30s" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" |     msg_table_header "%-20s %-20s %-25s %-30s %-30s" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" | ||||||
| 
 | 
 | ||||||
|     for tree in ${tree_names[@]};do |     for tree in ${TREE_NAMES_ARTIX[@]};do | ||||||
| 
 | 
 | ||||||
|         local git=$(find ${TREE_DIR_ARTIX}/$tree/ -mindepth 1 -maxdepth 1 -type d) |         local git=$(find ${TREE_DIR_ARTIX}/$tree/ -mindepth 1 -maxdepth 1 -type d) | ||||||
| 
 | 
 | ||||||
| @@ -35,7 +31,7 @@ show_version_table(){ | |||||||
| 
 | 
 | ||||||
|             if [[ -f $pkgbuild ]];then |             if [[ -f $pkgbuild ]];then | ||||||
| 
 | 
 | ||||||
|                 source $pkgbuild 2>/dev/null |                 . $pkgbuild 2>/dev/null | ||||||
|                 local artixver=$(get_full_version $pkg) |                 local artixver=$(get_full_version $pkg) | ||||||
| 
 | 
 | ||||||
|                 local archpath=$(get_import_path $pkg) |                 local archpath=$(get_import_path $pkg) | ||||||
| @@ -46,7 +42,7 @@ show_version_table(){ | |||||||
|                 pkgbuild=$archpath/repos/$archrepo/PKGBUILD |                 pkgbuild=$archpath/repos/$archrepo/PKGBUILD | ||||||
| 
 | 
 | ||||||
|                 if [[ -f $pkgbuild ]];then |                 if [[ -f $pkgbuild ]];then | ||||||
|                     source $pkgbuild 2>/dev/null |                     . $pkgbuild 2>/dev/null | ||||||
|                     local archver=$(get_full_version $pkg) |                     local archver=$(get_full_version $pkg) | ||||||
|                 fi |                 fi | ||||||
| 
 | 
 | ||||||
| @@ -93,8 +89,8 @@ show_version_table(){ | |||||||
| 
 | 
 | ||||||
| load_user_info | load_user_info | ||||||
| 
 | 
 | ||||||
| load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | ||||||
| load_vars "${PAC_USERCONFDIR}/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" | load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" | ||||||
| load_vars /etc/makepkg.conf | load_vars /etc/makepkg.conf | ||||||
| 
 | 
 | ||||||
| unstable=false | unstable=false | ||||||
| @@ -103,8 +99,6 @@ upgrades=false | |||||||
| downgrades=false | downgrades=false | ||||||
| move=false | move=false | ||||||
| 
 | 
 | ||||||
| tree_names=(packages community) |  | ||||||
| 
 |  | ||||||
| usage() { | usage() { | ||||||
|     echo "Usage: ${0##*/} [options]" |     echo "Usage: ${0##*/} [options]" | ||||||
|     echo '    -u            Show upgrade packages' |     echo '    -u            Show upgrade packages' | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,21 +12,14 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ | . @libdir@/artools/util-base.sh | ||||||
| 
 | . @libdir@/artools/util-pkg.sh | ||||||
| LIBDIR='@libdir@' |  | ||||||
| SYSCONFDIR='@sysconfdir@' |  | ||||||
| DATADIR='@datadir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| import ${LIBDIR}/util.sh |  | ||||||
| import ${LIBDIR}/util-pkg.sh |  | ||||||
| 
 | 
 | ||||||
| update_repo(){ | update_repo(){ | ||||||
|     local repo="$1" pkgfile ver ext=db.tar.xz |     local repo="$1" pkgfile ver ext=db.tar.xz | ||||||
|     local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=() |     local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=() | ||||||
| 
 | 
 | ||||||
|     source PKGBUILD |     . PKGBUILD | ||||||
| 
 | 
 | ||||||
|     for name in ${pkgname[@]};do |     for name in ${pkgname[@]};do | ||||||
|         pkgarch=$(get_pkg_arch "$name") |         pkgarch=$(get_pkg_arch "$name") | ||||||
| @@ -55,8 +51,8 @@ update_repo(){ | |||||||
| 
 | 
 | ||||||
| load_user_info | load_user_info | ||||||
| 
 | 
 | ||||||
| load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" | ||||||
| load_vars "${PAC_USERCONFDIR}/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" | load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" | ||||||
| load_vars /etc/makepkg.conf | load_vars /etc/makepkg.conf | ||||||
| 
 | 
 | ||||||
| add_pkg=false | add_pkg=false | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,12 +12,8 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ | . @libdir@/artools/util-base.sh | ||||||
| 
 | . @libdir@/artools/util-pkg.sh | ||||||
| LIBDIR='@libdir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| import ${LIBDIR}/util-pkg.sh |  | ||||||
| 
 | 
 | ||||||
| # $1: sofile | # $1: sofile | ||||||
| # $2: soarch | # $2: soarch | ||||||
| @@ -24,7 +23,7 @@ process_sofile() { | |||||||
|     # extract the major version: 1 |     # extract the major version: 1 | ||||||
|     soversion="${1##*\.so\.}" |     soversion="${1##*\.so\.}" | ||||||
|     if [[ "$soversion" = "$1" ]] && (($IGNORE_INTERNAL)); then |     if [[ "$soversion" = "$1" ]] && (($IGNORE_INTERNAL)); then | ||||||
|         continue |         return | ||||||
|     fi |     fi | ||||||
|     if ! in_array "${soname}=${soversion}-$2" ${soobjects[@]}; then |     if ! in_array "${soname}=${soversion}-$2" ${soobjects[@]}; then | ||||||
|     # libfoo.so=1-64 |     # libfoo.so=1-64 | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,11 +12,8 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ | . @libdir@/artools/util-base.sh | ||||||
| 
 | 
 | ||||||
| LIBDIR='@libdir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| match=$1 | match=$1 | ||||||
| 
 | 
 | ||||||
| if [[ -z $match ]]; then | if [[ -z $match ]]; then | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,11 +12,7 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ | . @libdir@/artools/util-base.sh | ||||||
| 
 |  | ||||||
| LIBDIR='@libdir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| 
 | 
 | ||||||
| ifs=$IFS | ifs=$IFS | ||||||
| IFS="${IFS}:" | IFS="${IFS}:" | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,13 +12,7 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| VERSION=@version@ | . @libdir@/artools/util-base.sh | ||||||
| 
 |  | ||||||
| LIBDIR='@libdir@' |  | ||||||
| 
 |  | ||||||
| [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh |  | ||||||
| import ${LIBDIR}/util.sh |  | ||||||
| import ${LIBDIR}/util-chroot.sh |  | ||||||
| 
 | 
 | ||||||
| shopt -s nullglob | shopt -s nullglob | ||||||
| 
 | 
 | ||||||
| @@ -240,18 +237,21 @@ download_sources() { | |||||||
|     local copydir=$1 |     local copydir=$1 | ||||||
|     local makepkg_user=$2 |     local makepkg_user=$2 | ||||||
| 
 | 
 | ||||||
|     local builddir | #     local builddir | ||||||
|     builddir="$(mktemp -d)" | #     builddir="$(mktemp -d)" | ||||||
|     chown "$makepkg_user:" "$builddir" | #     chown "$makepkg_user:" "$builddir" | ||||||
|  | 
 | ||||||
|  |     setup_workdir | ||||||
|  |     chown "$makepkg_user:" "$WORKDIR" | ||||||
| 
 | 
 | ||||||
|     # Ensure sources are downloaded |     # Ensure sources are downloaded | ||||||
|     sudo -u "$makepkg_user" --preserve-env=GNUPGHOME \ |     sudo -u "$makepkg_user" --preserve-env=GNUPGHOME \ | ||||||
|         env SRCDEST="$SRCDEST" BUILDDIR="$builddir" \ |         env SRCDEST="$SRCDEST" BUILDDIR="$WORKDIR" \ | ||||||
|         makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o || |         makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o || | ||||||
|         die "Could not download sources." |         die "Could not download sources." | ||||||
| 
 | 
 | ||||||
|     # Clean up garbage from verifysource |     # Clean up garbage from verifysource | ||||||
|     rm -rf "$builddir" | #     rm -rf "$builddir" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # Usage: move_products $copydir $owner | # Usage: move_products $copydir $owner | ||||||
| @@ -339,7 +339,7 @@ main() { | |||||||
|     [[ -n $makepkg_user && -z $(id -u "$makepkg_user") ]] && die 'Invalid makepkg user.' |     [[ -n $makepkg_user && -z $(id -u "$makepkg_user") ]] && die 'Invalid makepkg user.' | ||||||
|     makepkg_user=${makepkg_user:-${SUDO_USER:-$USER}} |     makepkg_user=${makepkg_user:-${SUDO_USER:-$USER}} | ||||||
| 
 | 
 | ||||||
|     check_root SOURCE_DATE_EPOCH,GNUPGHOME |     check_root SOURCE_DATE_EPOCH,SRCDEST,SRCPKGDEST,PKGDEST,LOGDEST,MAKEFLAGS,PACKAGER,GNUPGHOME | ||||||
| 
 | 
 | ||||||
|     # Canonicalize chrootdir, getting rid of trailing / |     # Canonicalize chrootdir, getting rid of trailing / | ||||||
|     chrootdir=$(readlink -e "$passeddir") |     chrootdir=$(readlink -e "$passeddir") | ||||||
| @@ -369,7 +369,7 @@ main() { | |||||||
| 
 | 
 | ||||||
|     umask 0022 |     umask 0022 | ||||||
| 
 | 
 | ||||||
|     load_vars "${XDG_CONFIG_HOME:-$USER_HOME/.config}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" |     load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" | ||||||
|     load_vars /etc/makepkg.conf |     load_vars /etc/makepkg.conf | ||||||
| 
 | 
 | ||||||
|     # Use PKGBUILD directory if these don't exist |     # Use PKGBUILD directory if these don't exist | ||||||
							
								
								
									
										139
									
								
								bin/pkg/pkg2yaml.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								bin/pkg/pkg2yaml.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,139 @@ | |||||||
|  | #!/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 | ||||||
|  |  | ||||||
|  | write_attr(){ | ||||||
|  |     local ident1="$1" ident2="$2" ident3="$3" | ||||||
|  |     local attrname=$4 attrvalues=("${@:5}") | ||||||
|  |  | ||||||
|  |     # normalize whitespace, strip leading and trailing | ||||||
|  |     attrvalues=("${attrvalues[@]//+([[:space:]])/ }") | ||||||
|  |     attrvalues=("${attrvalues[@]#[[:space:]]}") | ||||||
|  |     attrvalues=("${attrvalues[@]%[[:space:]]}") | ||||||
|  |  | ||||||
|  |     case $attrname in | ||||||
|  |         makedepends|checkdepends|depends|provides|arch) | ||||||
|  |             Yaml+=$(write_yaml_map $ident1 "$attrname") | ||||||
|  |             for v in ${attrvalues[@]};do | ||||||
|  |                 Yaml+=$(write_yaml_seq $ident2 "$v") | ||||||
|  |             done | ||||||
|  |         ;; | ||||||
|  |         *) | ||||||
|  |             for v in ${attrvalues[@]};do | ||||||
|  |                 Yaml+=$(write_yaml_map $ident3 "$attrname" "$v") | ||||||
|  |             done | ||||||
|  |         ;; | ||||||
|  |     esac | ||||||
|  | } | ||||||
|  |  | ||||||
|  | extract_info() { | ||||||
|  |     local pkgname=$1 attrname=$2 isarray=$3 outvalue= | ||||||
|  |  | ||||||
|  |     if get_pkgbuild_attribute "$pkgname" "$attrname" "$isarray" 'outvalue'; then | ||||||
|  |         [[ -z $pkgname ]] && write_attr 2 4 2 "$attrname" "${outvalue[@]}" | ||||||
|  |         [[ -n $pkgname ]] && write_attr 4 6 2 "$attrname" "${outvalue[@]}" | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | write_details() { | ||||||
|  |     local attr package_arch a | ||||||
|  |     local multivalued_arch_attrs=(provides depends makedepends checkdepends) | ||||||
|  |  | ||||||
|  |     local singlevalued=() | ||||||
|  |     local multivalued=(arch provides depends checkdepends) | ||||||
|  |  | ||||||
|  |     if [[ -z "$1" ]];then | ||||||
|  |         singlevalued=(pkgver pkgrel epoch) | ||||||
|  |         multivalued=(arch provides depends makedepends checkdepends) | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     for attr in "${singlevalued[@]}"; do | ||||||
|  |         extract_info "$1" "$attr" 0 | ||||||
|  |     done | ||||||
|  |  | ||||||
|  |     for attr in "${multivalued[@]}"; do | ||||||
|  |         extract_info "$1" "$attr" 1 | ||||||
|  |     done | ||||||
|  |  | ||||||
|  |     get_pkgbuild_attribute "$1" 'arch' 1 'package_arch' | ||||||
|  |     for a in "${package_arch[@]}"; do | ||||||
|  |         # 'any' is special. there's no support for, e.g. depends_any. | ||||||
|  |         [[ $a = any ]] && continue | ||||||
|  |  | ||||||
|  |         for attr in "${multivalued_arch_attrs[@]}"; do | ||||||
|  |             extract_info "$1" "${attr}_$a" 1 | ||||||
|  |         done | ||||||
|  |     done | ||||||
|  | } | ||||||
|  |  | ||||||
|  | write_pkg_yaml(){ | ||||||
|  |     local pkgfile=$(print_all_package_names) | ||||||
|  |  | ||||||
|  |     Yaml=$(write_yaml_header) | ||||||
|  |  | ||||||
|  |     Yaml+=$(write_empty_line) | ||||||
|  |  | ||||||
|  |     Yaml+=$(write_yaml_map 0 "pkgbase") | ||||||
|  |     Yaml+=$(write_yaml_map 2 "pkgname" "${pkgbase:-$pkgname}") | ||||||
|  |     ${details} && write_details '' | ||||||
|  |  | ||||||
|  |     Yaml+=$(write_empty_line) | ||||||
|  |  | ||||||
|  |     Yaml+=$(write_yaml_map 0 "package") | ||||||
|  |     for pkg in "${pkgname[@]}"; do | ||||||
|  |         Yaml+=$(write_yaml_seq_map 2 "pkgname" "$pkg") | ||||||
|  |         ${details} && write_details "$pkg" | ||||||
|  |     done | ||||||
|  |  | ||||||
|  |     Yaml+=$(write_empty_line) | ||||||
|  |  | ||||||
|  |     Yaml+=$(write_yaml_map 0 "pkgfile") | ||||||
|  |     for f in ${pkgfile[@]};do | ||||||
|  |         Yaml+=$(write_yaml_seq 2 "${f##*/}") | ||||||
|  |     done | ||||||
|  |  | ||||||
|  |     Yaml+=$(write_empty_line) | ||||||
|  |  | ||||||
|  |     printf '%s' "${Yaml}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | usage() { | ||||||
|  |     echo "Usage: ${0##*/} [options]" | ||||||
|  |     echo "    -d            Don't include details" | ||||||
|  |     echo '    -h            This help' | ||||||
|  |     echo '' | ||||||
|  |     exit $1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | details=true | ||||||
|  |  | ||||||
|  | opts='dh' | ||||||
|  |  | ||||||
|  | while getopts "${opts}" arg; do | ||||||
|  |     case "${arg}" in | ||||||
|  |         d) details=false ;; | ||||||
|  |         h|?) usage 0 ;; | ||||||
|  |         *) echo "invalid argument '${arg}'"; usage 1 ;; | ||||||
|  |     esac | ||||||
|  | done | ||||||
|  |  | ||||||
|  | shift $(( $OPTIND - 1 )) | ||||||
|  |  | ||||||
|  | [[ -f "$1"/PKGBUILD ]] || die "%s/PKGBUILD does not exist!" "$1" | ||||||
|  | PACKAGE="$1"/PKGBUILD; shift | ||||||
|  |  | ||||||
|  | . "$PACKAGE" | ||||||
|  |  | ||||||
|  | write_pkg_yaml | ||||||
| @@ -1,44 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
| # |  | ||||||
| # 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. |  | ||||||
|  |  | ||||||
| VERSION=@version@ |  | ||||||
|  |  | ||||||
| VERSION=0.10.4.r2.gd0e3c4e |  | ||||||
|  |  | ||||||
| if [[ -f "$1"/PKGBUILD ]]; then |  | ||||||
|     LIBRARY=${LIBRARY:-'/usr/share/makepkg'} |  | ||||||
|  |  | ||||||
|     for lib in "$LIBRARY"/*.sh; do |  | ||||||
|         source "$lib" |  | ||||||
|     done |  | ||||||
|     . /etc/makepkg.conf |  | ||||||
|  |  | ||||||
|     . "$1"/PKGBUILD |  | ||||||
|  |  | ||||||
|     pkgfile=$(print_all_package_names) |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| NL=$'\n' |  | ||||||
|  |  | ||||||
| Yaml="%YAML 1.2"$NL |  | ||||||
| Yaml+="---"$NL |  | ||||||
|  |  | ||||||
| Yaml+="pkgfile:"$NL |  | ||||||
| for f in ${pkgfile[@]};do |  | ||||||
|     Yaml+="  - ${f##*/}"$NL |  | ||||||
| done |  | ||||||
|  |  | ||||||
| Yaml+="pkgname:"$NL |  | ||||||
| for n in ${pkgname[@]};do |  | ||||||
|     Yaml+="  - ${n##*/}"$NL |  | ||||||
| done |  | ||||||
|  |  | ||||||
| printf '%s' "${Yaml}" |  | ||||||
| @@ -17,7 +17,7 @@ | |||||||
|  |  | ||||||
| # HOST_TREE_ARTIX='gitea@gitea.artixlinux.org:artix' | # HOST_TREE_ARTIX='gitea@gitea.artixlinux.org:artix' | ||||||
|  |  | ||||||
| # HOST_TREE_ARCH=git://projects.archlinux.org/svntogit | # HOST_TREE_ARCH=git://git.archlinux.org/svntogit | ||||||
|  |  | ||||||
| # default repos root | # default repos root | ||||||
| # REPOS_ROOT=${WORKSPACE_DIR}/repos | # REPOS_ROOT=${WORKSPACE_DIR}/repos | ||||||
|   | |||||||
							
								
								
									
										63
									
								
								data/pkglists/freedesktop.list
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								data/pkglists/freedesktop.list
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | |||||||
|  | accountsservice | ||||||
|  | cairo | ||||||
|  | colord | ||||||
|  | cppunit | ||||||
|  | dbus | ||||||
|  | dbus-glib | ||||||
|  | dbus-python | ||||||
|  | desktop-file-utils | ||||||
|  | fontconfig | ||||||
|  | geoclue2 | ||||||
|  | glu | ||||||
|  | gst-plugins-bad | ||||||
|  | gst-plugins-base | ||||||
|  | gst-plugins-good | ||||||
|  | gst-plugins-ugly | ||||||
|  | gstreamer | ||||||
|  | harfbuzz | ||||||
|  | hicolor-icon-theme | ||||||
|  | libatasmart | ||||||
|  | libbsd | ||||||
|  | libdrm | ||||||
|  | libevdev | ||||||
|  | libinput | ||||||
|  | libmbim | ||||||
|  | libnice | ||||||
|  | libqmi | ||||||
|  | libvdpau | ||||||
|  | libxcb | ||||||
|  | libxft | ||||||
|  | libxi | ||||||
|  | media-player-info | ||||||
|  | mesa | ||||||
|  | modemmanager | ||||||
|  | networkmanager | ||||||
|  | orc | ||||||
|  | p11-kit | ||||||
|  | polkit | ||||||
|  | poppler | ||||||
|  | poppler-data | ||||||
|  | pulseaudio | ||||||
|  | pyxdg | ||||||
|  | r | ||||||
|  | sdl | ||||||
|  | shared-mime-info | ||||||
|  | sound-theme-freedesktop | ||||||
|  | startup-notification | ||||||
|  | systemdcompat | ||||||
|  | telepathy-glib | ||||||
|  | ttf-dejavu | ||||||
|  | udisks2 | ||||||
|  | upower | ||||||
|  | wayland | ||||||
|  | wayland-protocols | ||||||
|  | webrtc-audio-processing | ||||||
|  | xcb-proto | ||||||
|  | xcb-util | ||||||
|  | xcb-util-cursor | ||||||
|  | xcb-util-image | ||||||
|  | xcb-util-keysyms | ||||||
|  | xcb-util-renderutil | ||||||
|  | xcb-util-wm | ||||||
|  | xdg-user-dirs | ||||||
|  | xdg-utils | ||||||
							
								
								
									
										63
									
								
								data/pkglists/gnome.list
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								data/pkglists/gnome.list
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | |||||||
|  | adwaita-icon-theme | ||||||
|  | atk | ||||||
|  | at-spi2-atk | ||||||
|  | at-spi2-core | ||||||
|  | babl | ||||||
|  | cantarell-fonts | ||||||
|  | cogl | ||||||
|  | dconf | ||||||
|  | flatpak | ||||||
|  | gamin | ||||||
|  | gcab | ||||||
|  | gconf | ||||||
|  | gcr | ||||||
|  | gdk-pixbuf2 | ||||||
|  | gegl02 | ||||||
|  | git | ||||||
|  | glade | ||||||
|  | glib2 | ||||||
|  | glib-networking | ||||||
|  | gnome-common | ||||||
|  | gnome-keyring | ||||||
|  | gobject-introspection | ||||||
|  | gsettings-desktop-schemas | ||||||
|  | gssdp | ||||||
|  | gtk2 | ||||||
|  | gtk3 | ||||||
|  | gtk-doc | ||||||
|  | gtksourceview3 | ||||||
|  | gupnp | ||||||
|  | gupnp-igd | ||||||
|  | gvfs | ||||||
|  | json-glib | ||||||
|  | libcloudproviders | ||||||
|  | libcroco | ||||||
|  | libgee | ||||||
|  | libglade | ||||||
|  | libgnome-keyring | ||||||
|  | libgudev | ||||||
|  | libnotify | ||||||
|  | librsvg | ||||||
|  | libsecret | ||||||
|  | libsoup | ||||||
|  | libxml2 | ||||||
|  | libxslt | ||||||
|  | meld | ||||||
|  | mobile-broadband-provider-info | ||||||
|  | modemmanager | ||||||
|  | networkmanager | ||||||
|  | network-manager-applet | ||||||
|  | orca | ||||||
|  | ostree | ||||||
|  | pango | ||||||
|  | pyatspi | ||||||
|  | pygobject | ||||||
|  | pygobject2 | ||||||
|  | pygtk | ||||||
|  | rest | ||||||
|  | ttf-bitstream-vera | ||||||
|  | vala | ||||||
|  | vte | ||||||
|  | vte3 | ||||||
|  | yelp-tools | ||||||
|  | yelp-xsl | ||||||
							
								
								
									
										4
									
								
								data/pkglists/kde.list
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								data/pkglists/kde.list
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | phonon-gstreamer | ||||||
|  | polkit-qt | ||||||
|  | extra-cmake-modules | ||||||
|  | phonon | ||||||
							
								
								
									
										16
									
								
								data/pkglists/kernel.list
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								data/pkglists/kernel.list
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | linux | ||||||
|  | nvidia | ||||||
|  | acpi_call | ||||||
|  | bbswitch | ||||||
|  | broadcom-wl | ||||||
|  | tp_smapi | ||||||
|  | r8168 | ||||||
|  | virtualbox-modules-artix | ||||||
|  | linux-lts | ||||||
|  | nvidia-lts | ||||||
|  | acpi_call-lts | ||||||
|  | bbswitch-lts | ||||||
|  | broadcom-wl-lts | ||||||
|  | tp_smapi-lts | ||||||
|  | r8168-lts | ||||||
|  | linux-firmware | ||||||
							
								
								
									
										37
									
								
								data/pkglists/xorg.list
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								data/pkglists/xorg.list
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | |||||||
|  | libdmx | ||||||
|  | libfontenc | ||||||
|  | libice | ||||||
|  | libpciaccess | ||||||
|  | libsm | ||||||
|  | libx11 | ||||||
|  | libxau | ||||||
|  | libxaw | ||||||
|  | libxcomposite | ||||||
|  | libxcursor | ||||||
|  | libxdamage | ||||||
|  | libxdmcp | ||||||
|  | libxext | ||||||
|  | libxfixes | ||||||
|  | libxfont2 | ||||||
|  | libxi|libxft | ||||||
|  | libxinerama | ||||||
|  | libxkbfile | ||||||
|  | libxkbui | ||||||
|  | libxmu | ||||||
|  | libxpm | ||||||
|  | libxrandr | ||||||
|  | libxrender | ||||||
|  | libxres | ||||||
|  | libxshmfence | ||||||
|  | libxss | ||||||
|  | libxt | ||||||
|  | libxtst | ||||||
|  | libxv | ||||||
|  | libxvmc | ||||||
|  | libxxf86vm | ||||||
|  | pixman | ||||||
|  | xbitmaps | ||||||
|  | xkeyboard-config | ||||||
|  | xorgproto | ||||||
|  | xterm | ||||||
|  | xtrans | ||||||
| @@ -1,4 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -1,4 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -11,6 +15,7 @@ | |||||||
| declare -A pseudofs_types=([anon_inodefs]=1 | declare -A pseudofs_types=([anon_inodefs]=1 | ||||||
|                         [autofs]=1 |                         [autofs]=1 | ||||||
|                         [bdev]=1 |                         [bdev]=1 | ||||||
|  |                         [bpf]=1 | ||||||
|                         [binfmt_misc]=1 |                         [binfmt_misc]=1 | ||||||
|                         [cgroup]=1 |                         [cgroup]=1 | ||||||
|                         [cgroup2]=1 |                         [cgroup2]=1 | ||||||
| @@ -21,6 +26,7 @@ declare -A pseudofs_types=([anon_inodefs]=1 | |||||||
|                         [devpts]=1 |                         [devpts]=1 | ||||||
|                         [devtmpfs]=1 |                         [devtmpfs]=1 | ||||||
|                         [dlmfs]=1 |                         [dlmfs]=1 | ||||||
|  |                         [efivarfs]=1 | ||||||
|                         [fuse.gvfs-fuse-daemon]=1 |                         [fuse.gvfs-fuse-daemon]=1 | ||||||
|                         [fusectl]=1 |                         [fusectl]=1 | ||||||
|                         [hugetlbfs]=1 |                         [hugetlbfs]=1 | ||||||
| @@ -1,4 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -11,8 +15,6 @@ | |||||||
| # export LC_MESSAGES=C | # export LC_MESSAGES=C | ||||||
| export LANG=C | export LANG=C | ||||||
| 
 | 
 | ||||||
| source /usr/share/makepkg/util.sh |  | ||||||
| 
 |  | ||||||
| if [[ -t 2 ]]; then | if [[ -t 2 ]]; then | ||||||
|     colorize |     colorize | ||||||
| else | else | ||||||
| @@ -62,8 +64,30 @@ slock() { | |||||||
|     fi |     fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | _setup_workdir=false | ||||||
|  | setup_workdir() { | ||||||
|  |     [[ -z ${WORKDIR:-} ]] && WORKDIR=$(mktemp -d --tmpdir "${0##*/}.XXXXXXXXXX") | ||||||
|  |     _setup_workdir=true | ||||||
|  |     trap 'trap_abort' INT QUIT TERM HUP | ||||||
|  |     trap 'trap_exit' EXIT | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | trap_abort() { | ||||||
|  |     trap - EXIT INT QUIT TERM HUP | ||||||
|  |     abort | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | trap_exit() { | ||||||
|  |     local r=$? | ||||||
|  |     trap - EXIT INT QUIT TERM HUP | ||||||
|  |     cleanup $r | ||||||
|  | } | ||||||
|  | 
 | ||||||
| cleanup() { | cleanup() { | ||||||
|     exit ${1:-0} |     if [[ -n ${WORKDIR:-} ]] && $_setup_workdir; then | ||||||
|  |         rm -rf "$WORKDIR" | ||||||
|  |     fi | ||||||
|  |     exit "${1:-0}" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| abort() { | abort() { | ||||||
| @@ -100,11 +124,3 @@ msg_row_upgrade(){ | |||||||
|     local mesg=$1; shift |     local mesg=$1; shift | ||||||
|     printf "${RED}${RED} ${mesg} ${ALL_OFF}\n" "$@" >&2 |     printf "${RED}${RED} ${mesg} ${ALL_OFF}\n" "$@" >&2 | ||||||
| } | } | ||||||
| 
 |  | ||||||
| import(){ |  | ||||||
|     if [[ -r "$1" ]];then |  | ||||||
|         source "$1" |  | ||||||
|     else |  | ||||||
|         die 'Could not import %s' "$1" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
| @@ -1,4 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -44,7 +48,7 @@ trap_setup(){ | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| chroot_mount() { | chroot_mount() { | ||||||
|     info "mount: [%s]" "$2" | #     info "mount: [%s]" "$2" | ||||||
|     mount "$@" && CHROOT_ACTIVE_MOUNTS=("$2" "${CHROOT_ACTIVE_MOUNTS[@]}") |     mount "$@" && CHROOT_ACTIVE_MOUNTS=("$2" "${CHROOT_ACTIVE_MOUNTS[@]}") | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @@ -84,16 +88,18 @@ chroot_mount_conditional() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| chroot_setup(){ | chroot_setup(){ | ||||||
|     chroot_mount_conditional "! mountpoint -q '$1'" "$1" "$1" --bind && |     local mnt="$1" os="$2" run_args='-t tmpfs -o nosuid,nodev,mode=0755' | ||||||
|     chroot_mount proc "$1/proc" -t proc -o nosuid,noexec,nodev && |     $os && run_args='--bind' | ||||||
|     chroot_mount sys "$1/sys" -t sysfs -o nosuid,noexec,nodev,ro && |     chroot_mount_conditional "! mountpoint -q '$mnt'" "$mnt" "$mnt" --bind && | ||||||
|     ignore_error chroot_mount_conditional "[[ -d '$1/sys/firmware/efi/efivars' ]]" \ |     chroot_mount proc "$mnt/proc" -t proc -o nosuid,noexec,nodev && | ||||||
|         efivarfs "$1/sys/firmware/efi/efivars" -t efivarfs -o nosuid,noexec,nodev && |     chroot_mount sys "$mnt/sys" -t sysfs -o nosuid,noexec,nodev,ro && | ||||||
|     chroot_mount udev "$1/dev" -t devtmpfs -o mode=0755,nosuid && |     ignore_error chroot_mount_conditional "[[ -d '$mnt/sys/firmware/efi/efivars' ]]" \ | ||||||
|     chroot_mount devpts "$1/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec && |         efivarfs "$mnt/sys/firmware/efi/efivars" -t efivarfs -o nosuid,noexec,nodev && | ||||||
|     chroot_mount shm "$1/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev && |     chroot_mount udev "$mnt/dev" -t devtmpfs -o mode=0755,nosuid && | ||||||
|     chroot_mount run "$1/run" -t tmpfs -o nosuid,nodev,mode=0755 && |     chroot_mount devpts "$mnt/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec && | ||||||
|     chroot_mount tmp "$1/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid |     chroot_mount shm "$mnt/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev && | ||||||
|  |     chroot_mount /run "$mnt/run" ${run_args} && | ||||||
|  |     chroot_mount tmp "$mnt/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| mount_os(){ | mount_os(){ | ||||||
| @@ -115,19 +121,19 @@ mount_os(){ | |||||||
|         esac |         esac | ||||||
|     done |     done | ||||||
| 
 | 
 | ||||||
|     chroot_setup "$1" |     chroot_setup "$1" true | ||||||
|     chroot_add_resolv_conf "$1" |     chroot_add_resolv_conf "$1" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| chroot_api_mount() { | chroot_api_mount() { | ||||||
|     CHROOT_ACTIVE_MOUNTS=() |     CHROOT_ACTIVE_MOUNTS=() | ||||||
|     trap_setup chroot_api_umount |     trap_setup chroot_api_umount | ||||||
|     chroot_setup "$1" |     chroot_setup "$1" false | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| chroot_api_umount() { | chroot_api_umount() { | ||||||
|     if (( ${#CHROOT_ACTIVE_MOUNTS[@]} )); then |     if (( ${#CHROOT_ACTIVE_MOUNTS[@]} )); then | ||||||
|         info "umount: [%s]" "${CHROOT_ACTIVE_MOUNTS[@]}" | #         info "umount: [%s]" "${CHROOT_ACTIVE_MOUNTS[@]}" | ||||||
|         umount "${CHROOT_ACTIVE_MOUNTS[@]}" |         umount "${CHROOT_ACTIVE_MOUNTS[@]}" | ||||||
|     fi |     fi | ||||||
|     unset CHROOT_ACTIVE_MOUNTS |     unset CHROOT_ACTIVE_MOUNTS | ||||||
| @@ -1,4 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -38,12 +42,12 @@ prepare_dir(){ | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| get_disturl(){ | get_disturl(){ | ||||||
|     source /usr/lib/os-release |     . /usr/lib/os-release | ||||||
|     echo "${HOME_URL}" |     echo "${HOME_URL}" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| get_osname(){ | get_osname(){ | ||||||
|     source /usr/lib/os-release |     . /usr/lib/os-release | ||||||
|     echo "${NAME}" |     echo "${NAME}" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @@ -51,9 +55,9 @@ init_artools_base(){ | |||||||
| 
 | 
 | ||||||
|     ARCH=$(uname -m) |     ARCH=$(uname -m) | ||||||
| 
 | 
 | ||||||
|     [[ -z ${CHROOTS_DIR} ]] && CHROOTS_DIR='/var/lib/artools' |     CHROOTS_DIR=${CHROOTS_DIR:-'/var/lib/artools'} | ||||||
| 
 | 
 | ||||||
|     [[ -z ${WORKSPACE_DIR} ]] && WORKSPACE_DIR=/home/${OWNER}/artools-workspace |     WORKSPACE_DIR=${WORKSPACE_DIR:-"/home/${OWNER}/artools-workspace"} | ||||||
| 
 | 
 | ||||||
|     prepare_dir "${WORKSPACE_DIR}" |     prepare_dir "${WORKSPACE_DIR}" | ||||||
| } | } | ||||||
| @@ -66,55 +70,73 @@ init_artools_pkg(){ | |||||||
| 
 | 
 | ||||||
|     GIT_URL="https://${GIT_DOMAIN}" |     GIT_URL="https://${GIT_DOMAIN}" | ||||||
| 
 | 
 | ||||||
|     [[ -z ${GIT_TOKEN} ]] && GIT_TOKEN='' |     GIT_TOKEN=${GIT_TOKEN:-''} | ||||||
| 
 | 
 | ||||||
|     [[ -z ${TREE_DIR_ARTIX} ]] && TREE_DIR_ARTIX="${WORKSPACE_DIR}/artixlinux" |     TREE_DIR_ARTIX=${TREE_DIR_ARTIX:-"${WORKSPACE_DIR}/artixlinux"} | ||||||
| 
 | 
 | ||||||
|     [[ -z ${HOST_TREE_ARTIX} ]] && HOST_TREE_ARTIX="gitea@${GIT_DOMAIN}:artixlinux" |     [[ -z ${TREE_NAMES_ARTIX[@]} ]] && \ | ||||||
|  |     TREE_NAMES_ARTIX=( | ||||||
|  |         packages | ||||||
|  |         community | ||||||
|  |         packages-kernel | ||||||
|  |         packages-openrc | ||||||
|  |         packages-runit | ||||||
|  |         packages-xorg | ||||||
|  |         packages-python | ||||||
|  |         packages-perl | ||||||
|  |         packages-qt5 | ||||||
|  |         packages-ruby | ||||||
|  | #         packages-desktop | ||||||
|  | #         packages-kde | ||||||
|  | #         packages-gnome | ||||||
|  |     ) | ||||||
| 
 | 
 | ||||||
|     [[ -z ${TREE_DIR_ARCH} ]] && TREE_DIR_ARCH="${WORKSPACE_DIR}/archlinux" |     HOST_TREE_ARTIX=${HOST_TREE_ARTIX:-"gitea@${GIT_DOMAIN}:artixlinux"} | ||||||
| 
 | 
 | ||||||
|     [[ -z ${HOST_TREE_ARCH} ]] && HOST_TREE_ARCH='git://projects.archlinux.org/svntogit' |     TREE_DIR_ARCH=${TREE_DIR_ARCH:-"${WORKSPACE_DIR}/archlinux"} | ||||||
|  | 
 | ||||||
|  |     TREE_NAMES_ARCH=(packages community) | ||||||
|  | 
 | ||||||
|  |     HOST_TREE_ARCH=${HOST_TREE_ARCH:-'git://git.archlinux.org/svntogit'} | ||||||
| 
 | 
 | ||||||
|     CHROOTS_PKG="${CHROOTS_DIR}/buildpkg" |     CHROOTS_PKG="${CHROOTS_DIR}/buildpkg" | ||||||
| 
 | 
 | ||||||
|     [[ -z ${REPOS_ROOT} ]] && REPOS_ROOT="${WORKSPACE_DIR}/repos" |     REPOS_ROOT=${REPOS_ROOT:-"${WORKSPACE_DIR}/repos"} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| init_artools_iso(){ | init_artools_iso(){ | ||||||
|     CHROOTS_ISO="${CHROOTS_DIR}/buildiso" |     CHROOTS_ISO="${CHROOTS_DIR}/buildiso" | ||||||
| 
 | 
 | ||||||
|     [[ -z ${ISO_POOL} ]] && ISO_POOL="${WORKSPACE_DIR}/iso" |     ISO_POOL=${ISO_POOL:-"${WORKSPACE_DIR}/iso"} | ||||||
| 
 | 
 | ||||||
|     prepare_dir "${ISO_POOL}" |     prepare_dir "${ISO_POOL}" | ||||||
| 
 | 
 | ||||||
|     PROFILE='base' |     PROFILE='base' | ||||||
| 
 | 
 | ||||||
|     [[ -z ${ISO_VERSION} ]] && ISO_VERSION=$(date +%Y%m%d) |     ISO_VERSION=${ISO_VERSION:-"$(date +%Y%m%d)"} | ||||||
| 
 | 
 | ||||||
|     [[ -z ${INITSYS} ]] && INITSYS="openrc" |     INITSYS=${INITSYS:-'openrc'} | ||||||
| 
 | 
 | ||||||
|     [[ -z ${GPG_KEY} ]] && GPG_KEY='' |     GPG_KEY=${GPG_KEY:-''} | ||||||
| 
 | 
 | ||||||
|     [[ -z ${UPLIMIT} ]] && UPLIMIT=1000 |     UPLIMIT=${UPLIMIT:-1000} | ||||||
| 
 | 
 | ||||||
|     FILE_HOST="download.${DOMAIN}" |     FILE_HOST="download.${DOMAIN}" | ||||||
| 
 | 
 | ||||||
|     [[ -z ${FILE_HOME} ]] && FILE_HOME="/srv/iso" |     FILE_HOME=${FILE_HOME:-'/srv/iso'} | ||||||
| 
 | 
 | ||||||
|     [[ -z ${FILE_PORT} ]] && FILE_PORT=65432 |     FILE_PORT=${FILE_PORT:-65432} | ||||||
| 
 | 
 | ||||||
|     [[ -z ${ACCOUNT} ]] && ACCOUNT="naughtyISOuploader" |     ACCOUNT=${ACCOUNT:-'naughtyISOuploader'} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| load_config(){ | load_config(){ | ||||||
| 
 | 
 | ||||||
|     [[ -f $1 ]] || return 1 |     local conf="$1" | ||||||
| 
 | 
 | ||||||
|     ARTOOLS_CONF="$1" |     [[ -f "$conf" ]] || return 1 | ||||||
| 
 | 
 | ||||||
|     [[ -r ${ARTOOLS_CONF} ]] && source ${ARTOOLS_CONF} |     [[ -r "$conf" ]] && . "$conf" | ||||||
| 
 | 
 | ||||||
|     init_artools_base |     init_artools_base | ||||||
| 
 | 
 | ||||||
| @@ -134,13 +156,6 @@ user_run(){ | |||||||
|     su ${OWNER} -c "$@" |     su ${OWNER} -c "$@" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| clean_dir(){ |  | ||||||
|     if [[ -d $1 ]]; then |  | ||||||
|         msg "Cleaning [%s] ..." "$1" |  | ||||||
|         rm -r $1/* |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| load_user_info(){ | load_user_info(){ | ||||||
|     OWNER=${SUDO_USER:-$USER} |     OWNER=${SUDO_USER:-$USER} | ||||||
| 
 | 
 | ||||||
| @@ -150,9 +165,8 @@ load_user_info(){ | |||||||
|         USER_HOME=$HOME |         USER_HOME=$HOME | ||||||
|     fi |     fi | ||||||
| 
 | 
 | ||||||
|     AT_USERCONFDIR="${XDG_CONFIG_HOME:-$USER_HOME/.config}/artools" |     USERCONFDIR="${XDG_CONFIG_HOME:-$USER_HOME/.config}" | ||||||
|     PAC_USERCONFDIR="${XDG_CONFIG_HOME:-$USER_HOME/.config}/pacman" |     prepare_dir "${USERCONFDIR}" | ||||||
|     prepare_dir "${AT_USERCONFDIR}" |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # orig_argv=("$0" "$@") | # orig_argv=("$0" "$@") | ||||||
							
								
								
									
										36
									
								
								lib/base/yaml.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								lib/base/yaml.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | #!/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. | ||||||
|  |  | ||||||
|  | write_yaml_header(){ | ||||||
|  |     printf '%s' '---' | ||||||
|  | } | ||||||
|  |  | ||||||
|  | write_empty_line(){ | ||||||
|  |     printf '\n%s\n' ' ' | ||||||
|  | } | ||||||
|  |  | ||||||
|  | write_yaml_map(){ | ||||||
|  |     local ident="$1" key="$2" val="$3" | ||||||
|  |     printf "\n%${ident}s%s: %s\n" '' "$key" "$val" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | write_yaml_seq(){ | ||||||
|  |     local ident="$1" val="$2" | ||||||
|  |     printf "\n%${ident}s- %s\n" '' "$val" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | write_yaml_seq_map(){ | ||||||
|  |     local ident="$1" key="$2" val="$3" | ||||||
|  |     printf "\n%${ident}s- %s: %s\n" '' "$key" "$val" | ||||||
|  | } | ||||||
							
								
								
									
										160
									
								
								lib/iso/chrootcfg.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								lib/iso/chrootcfg.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,160 @@ | |||||||
|  | #!/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. | ||||||
|  |  | ||||||
|  | add_svc_rc(){ | ||||||
|  |     local mnt="$1" name="$2" rlvl="$3" | ||||||
|  |     if [[ -f $mnt/etc/init.d/$name ]];then | ||||||
|  |         msg2 "Setting %s ..." "$name" | ||||||
|  |         chroot $mnt rc-update add $name $rlvl &>/dev/null | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | add_svc_runit(){ | ||||||
|  |     local mnt="$1" name="$2" | ||||||
|  |     if [[ -d $mnt/etc/runit/sv/$name ]]; then | ||||||
|  |         msg2 "Setting %s ..." "$name" | ||||||
|  |         chroot $mnt ln -s /etc/runit/sv/$name /etc/runit/runsvdir/default &>/dev/null | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | set_xdm(){ | ||||||
|  |     if [[ -f $1/etc/conf.d/xdm ]];then | ||||||
|  |         local conf='DISPLAYMANAGER="'${DISPLAYMANAGER}'"' | ||||||
|  |         sed -i -e "s|^.*DISPLAYMANAGER=.*|${conf}|" $1/etc/conf.d/xdm | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | configure_hosts(){ | ||||||
|  |     sed -e "s|localhost.localdomain|localhost.localdomain ${HOST_NAME}|" -i $1/etc/hosts | ||||||
|  | } | ||||||
|  |  | ||||||
|  | configure_logind(){ | ||||||
|  |     local conf=$1/etc/$2/logind.conf | ||||||
|  |     if [[ -e $conf ]];then | ||||||
|  |         msg2 "Configuring logind ..." | ||||||
|  |         sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' "$conf" | ||||||
|  |         sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' "$conf" | ||||||
|  |         sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' "$conf" | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | configure_services(){ | ||||||
|  |     local mnt="$1" | ||||||
|  |     info "Configuring [%s]" "${INITSYS}" | ||||||
|  |     case ${INITSYS} in | ||||||
|  |         'openrc') | ||||||
|  |             for svc in ${SERVICES[@]}; do | ||||||
|  |                 [[ $svc == "xdm" ]] && set_xdm "$mnt" | ||||||
|  |                 add_svc_rc "$mnt" "$svc" "default" | ||||||
|  |             done | ||||||
|  |             for svc in ${SERVICES_LIVE[@]}; do | ||||||
|  |                 add_svc_rc "$mnt" "$svc" "default" | ||||||
|  |             done | ||||||
|  |         ;; | ||||||
|  |         'runit') | ||||||
|  |             for svc in ${SERVICES[@]}; do | ||||||
|  |                 add_svc_runit "$mnt" "$svc" | ||||||
|  |             done | ||||||
|  |             for svc in ${SERVICES_LIVE[@]}; do | ||||||
|  |                 add_svc_runit "$mnt" "$svc" | ||||||
|  |             done | ||||||
|  |         ;; | ||||||
|  |     esac | ||||||
|  |     info "Done configuring [%s]" "${INITSYS}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | configure_system(){ | ||||||
|  |     local mnt="$1" | ||||||
|  |     case ${INITSYS} in | ||||||
|  |         'openrc' | 'runit') | ||||||
|  |             configure_logind "$mnt" "elogind" | ||||||
|  |         ;; | ||||||
|  |     esac | ||||||
|  |     echo ${HOST_NAME} > $mnt/etc/hostname | ||||||
|  | } | ||||||
|  |  | ||||||
|  | write_users_conf(){ | ||||||
|  |     local yaml=$(write_yaml_header) | ||||||
|  |     yaml+=$(write_empty_line) | ||||||
|  |     yaml+=$(write_yaml_map 0 'defaultGroups') | ||||||
|  |     local IFS=',' | ||||||
|  |     for g in ${ADDGROUPS[@]};do | ||||||
|  |         yaml+=$(write_yaml_seq 2 "$g") | ||||||
|  |     done | ||||||
|  |     unset IFS | ||||||
|  |     yaml+=$(write_yaml_map 0 'autologinGroup' 'autologin') | ||||||
|  |     yaml+=$(write_yaml_map 0 'doAutologin' 'false') | ||||||
|  |     yaml+=$(write_yaml_map 0 'sudoersGroup' 'wheel') | ||||||
|  |     yaml+=$(write_yaml_map 0 'setRootPassword' 'true') | ||||||
|  |     yaml+=$(write_yaml_map 0 'availableShells' '/bin/bash, /bin/zsh') | ||||||
|  | #     yaml+=$(write_yaml_map 0 'passwordRequirements') | ||||||
|  | #     yaml+=$(write_yaml_map 2 'minLength' '-1') | ||||||
|  | #     yaml+=$(write_yaml_map 2 'maxLength' '-1') | ||||||
|  | #     yaml+=$(write_yaml_map 2 'libpwquality') | ||||||
|  | #     yaml+=$(write_yaml_seq 4 "minlen=8") | ||||||
|  | #     yaml+=$(write_yaml_seq 4 "minclass=80") | ||||||
|  |     yaml+=$(write_empty_line) | ||||||
|  |     printf '%s' "${yaml}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | write_servicescfg_conf(){ | ||||||
|  |     local yaml=$(write_yaml_header) | ||||||
|  |     yaml+=$(write_empty_line) | ||||||
|  |     case "${INITSYS}" in | ||||||
|  |         'runit') | ||||||
|  |             yaml+=$(write_yaml_map 0 'svDir' '/etc/runit/sv') | ||||||
|  |             yaml+=$(write_yaml_map 0 'runsvDir' '/etc/runit/runsvdir') | ||||||
|  |             yaml+=$(write_yaml_map 0 'services') | ||||||
|  |             yaml+=$(write_yaml_map 2 'enabled') | ||||||
|  |             for svc in ${SERVICES[@]};do | ||||||
|  |                 yaml+=$(write_yaml_seq_map 4 'name' "$svc") | ||||||
|  |                 yaml+=$(write_yaml_map 6 'runlevel' 'default') | ||||||
|  |             done | ||||||
|  |         ;; | ||||||
|  |         'openrc') | ||||||
|  |             yaml+=$(write_yaml_map 0 'initdDir' '/etc/init.d') | ||||||
|  |             yaml+=$(write_yaml_map 0 'runlevelsDir' '/etc/runlevels') | ||||||
|  |             yaml+=$(write_yaml_map 0 'services') | ||||||
|  |             for svc in ${SERVICES[@]};do | ||||||
|  |                 yaml+=$(write_yaml_seq_map 2 'name' "$svc") | ||||||
|  |                 yaml+=$(write_yaml_map 4 'runlevel' 'default') | ||||||
|  |             done | ||||||
|  |         ;; | ||||||
|  |     esac | ||||||
|  |     yaml+=$(write_empty_line) | ||||||
|  |     printf '%s' "${yaml}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | configure_calamares(){ | ||||||
|  |     local mods="$1/etc/calamares/modules" | ||||||
|  |     if [[ -d "$mods" ]];then | ||||||
|  |         msg2 "Configuring Calamares" | ||||||
|  |         write_users_conf > "$mods"/users.conf | ||||||
|  |         write_servicescfg_conf > "$mods"/services-"${INITSYS}".conf | ||||||
|  |         sed -e "s|openrc|${INITSYS}|" -i "$mods"/postcfg.conf | ||||||
|  |         sed -e "s|services-openrc|services-${INITSYS}|" -i "$1"/etc/calamares/settings.conf | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | configure_live_image(){ | ||||||
|  |     local fs="$1" | ||||||
|  |     msg "Configuring [livefs]" | ||||||
|  |     configure_hosts "$fs" | ||||||
|  |     configure_system "$fs" | ||||||
|  |     configure_services "$fs" | ||||||
|  |     configure_calamares "$fs" | ||||||
|  |     [[ ! -d "$fs/etc/artools" ]] && mkdir -p "$fs/etc/artools" | ||||||
|  |     write_live_session_conf > "$fs/etc/artools/live.conf" | ||||||
|  |     msg "Done configuring [livefs]" | ||||||
|  | } | ||||||
| @@ -1,12 +1,15 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| # | # | ||||||
| # This program is distributed in the hope that it will be useful, | # This program is distributed in the hope that it will be useful, | ||||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
| # 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(){ | prepare_initcpio(){ | ||||||
| @@ -26,8 +29,8 @@ prepare_initramfs(){ | |||||||
|     fi |     fi | ||||||
| 
 | 
 | ||||||
|     if [[ -n ${GPG_KEY} ]]; then |     if [[ -n ${GPG_KEY} ]]; then | ||||||
|         user_run "gpg --export ${GPG_KEY} >${AT_USERCONFDIR}/gpgkey" |         user_run "gpg --export ${GPG_KEY} >${USERCONFDIR}/artools/gpgkey" | ||||||
|         exec 17<>${AT_USERCONFDIR}/GPG_KEY |         exec 17<>${USERCONFDIR}/artools/GPG_KEY | ||||||
|     fi |     fi | ||||||
|     local _kernel=$(cat $mnt/usr/lib/modules/*/version) |     local _kernel=$(cat $mnt/usr/lib/modules/*/version) | ||||||
|     ARTIX_GNUPG_FD=${GPG_KEY:+17} chroot-run $mnt \ |     ARTIX_GNUPG_FD=${GPG_KEY:+17} chroot-run $mnt \ | ||||||
| @@ -38,8 +41,8 @@ prepare_initramfs(){ | |||||||
|     if [[ -n ${GPG_KEY} ]]; then |     if [[ -n ${GPG_KEY} ]]; then | ||||||
|         exec 17<&- |         exec 17<&- | ||||||
|     fi |     fi | ||||||
|     if [[ -f ${AT_USERCONFDIR}/GPG_KEY ]]; then |     if [[ -f ${USERCONFDIR}/artools/GPG_KEY ]]; then | ||||||
|         rm ${AT_USERCONFDIR}/GPG_KEY |         rm ${USERCONFDIR}/artools/GPG_KEY | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
							
								
								
									
										147
									
								
								lib/iso/iso.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										147
									
								
								lib/iso/iso.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,147 @@ | |||||||
|  | #!/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. | ||||||
|  |  | ||||||
|  | gen_iso_fn(){ | ||||||
|  |     local vars=("artix") name | ||||||
|  |     vars+=("${PROFILE}") | ||||||
|  |     vars+=("${INITSYS}") | ||||||
|  |     case "${REPOSITORY}" in | ||||||
|  |         'gremlins'|'goblins') vars+=("${REPOSITORY}") ;; | ||||||
|  |     esac | ||||||
|  |     vars+=("${ISO_VERSION}") | ||||||
|  |     vars+=("${ARCH}") | ||||||
|  |     for n in ${vars[@]};do | ||||||
|  |         name=${name:-}${name:+-}${n} | ||||||
|  |     done | ||||||
|  |     echo $name | ||||||
|  | } | ||||||
|  |  | ||||||
|  | clean_iso_root(){ | ||||||
|  |     local dest="$1" | ||||||
|  |     msg "Deleting isoroot [%s] ..." "${dest##*/}" | ||||||
|  |     rm -rf --one-file-system "$dest" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | make_sig () { | ||||||
|  |     local idir="$1" file="$2" | ||||||
|  |     msg2 "Creating signature file..." | ||||||
|  |     cd "$idir" | ||||||
|  |     user_own "$idir" | ||||||
|  |     user_run "gpg --detach-sign --default-key ${GPG_KEY} $file.sfs" | ||||||
|  |     chown -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 | ||||||
|  | make_sfs() { | ||||||
|  |     local src="$1" | ||||||
|  |     if [[ ! -e "${src}" ]]; then | ||||||
|  |         error "The path %s does not exist" "${src}" | ||||||
|  |         retrun 1 | ||||||
|  |     fi | ||||||
|  |     local timer=$(get_timer) dest=${iso_root}/artix/${ARCH} | ||||||
|  |     local name=${1##*/} | ||||||
|  |     local sfs="${dest}/${name}.sfs" | ||||||
|  |     mkdir -p ${dest} | ||||||
|  |     msg "Generating SquashFS image for %s" "${src}" | ||||||
|  |     if [[ -f "${sfs}" ]]; then | ||||||
|  |         local has_changed_dir=$(find ${src} -newer ${sfs}) | ||||||
|  |         msg2 "Possible changes for %s ..." "${src}"  >> /tmp/buildiso.debug | ||||||
|  |         msg2 "%s" "${has_changed_dir}" >> /tmp/buildiso.debug | ||||||
|  |         if [[ -n "${has_changed_dir}" ]]; then | ||||||
|  |             msg2 "SquashFS image %s is not up to date, rebuilding..." "${sfs}" | ||||||
|  |             rm "${sfs}" | ||||||
|  |         else | ||||||
|  |             msg2 "SquashFS image %s is up to date, skipping." "${sfs}" | ||||||
|  |             return | ||||||
|  |         fi | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     if ${persist};then | ||||||
|  |         local size=32G | ||||||
|  |         local mnt="${mnt_dir}/${name}" | ||||||
|  |         msg2 "Creating ext4 image of %s ..." "${size}" | ||||||
|  |         truncate -s ${size} "${src}.img" | ||||||
|  |         local ext4_args=() | ||||||
|  |         ext4_args+=(-O ^has_journal,^resize_inode -E lazy_itable_init=0 -m 0) | ||||||
|  |         mkfs.ext4 ${ext4_args[@]} -F "${src}.img" &>/dev/null | ||||||
|  |         tune2fs -c 0 -i 0 "${src}.img" &> /dev/null | ||||||
|  |         mount_img "${work_dir}/${name}.img" "${mnt}" | ||||||
|  |         msg2 "Copying %s ..." "${src}/" | ||||||
|  |         cp -aT "${src}/" "${mnt}/" | ||||||
|  |         umount_img "${mnt}" | ||||||
|  |  | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     msg2 "Creating SquashFS image, this may take some time..." | ||||||
|  |     local mksfs_args=() | ||||||
|  |     if ${persist};then | ||||||
|  |         mksfs_args+=(${work_dir}/${name}.img) | ||||||
|  |     else | ||||||
|  |         mksfs_args+=(${src}) | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     mksfs_args+=(${sfs} -noappend) | ||||||
|  |  | ||||||
|  |     local highcomp="-b 256K -Xbcj x86" comp='xz' | ||||||
|  |  | ||||||
|  |     mksfs_args+=(-comp ${comp} ${highcomp}) | ||||||
|  |  | ||||||
|  |     mksquashfs "${mksfs_args[@]}" | ||||||
|  |  | ||||||
|  |     make_checksum "${dest}" "${name}" | ||||||
|  |     ${persist} && rm "${src}.img" | ||||||
|  |  | ||||||
|  |     if [[ -n ${GPG_KEY} ]];then | ||||||
|  |         make_sig "${dest}" "${name}" | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     show_elapsed_time "${FUNCNAME}" "${timer_start}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | assemble_iso(){ | ||||||
|  |     msg "Creating ISO image..." | ||||||
|  |     local mod_date=$(date -u +%Y-%m-%d-%H-%M-%S-00  | sed -e s/-//g) | ||||||
|  |  | ||||||
|  |     xorriso -as mkisofs \ | ||||||
|  |         --modification-date=${mod_date} \ | ||||||
|  |         --protective-msdos-label \ | ||||||
|  |         -volid "${iso_label}" \ | ||||||
|  |         -appid "$(get_osname) Live/Rescue CD" \ | ||||||
|  |         -publisher "$(get_osname) <$(get_disturl)>" \ | ||||||
|  |         -preparer "Prepared by artools/${0##*/}" \ | ||||||
|  |         -r -graft-points -no-pad \ | ||||||
|  |         --sort-weight 0 / \ | ||||||
|  |         --sort-weight 1 /boot \ | ||||||
|  |         --grub2-mbr ${iso_root}/boot/grub/i386-pc/boot_hybrid.img \ | ||||||
|  |         -partition_offset 16 \ | ||||||
|  |         -b boot/grub/i386-pc/eltorito.img \ | ||||||
|  |         -c boot.catalog \ | ||||||
|  |         -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info \ | ||||||
|  |         -eltorito-alt-boot \ | ||||||
|  |         -append_partition 2 0xef ${iso_root}/efi.img \ | ||||||
|  |         -e --interval:appended_partition_2:all:: -iso_mbr_part_type 0x00 \ | ||||||
|  |         -no-emul-boot \ | ||||||
|  |         -iso-level 3 \ | ||||||
|  |         -o ${iso_dir}/${iso_file} \ | ||||||
|  |         ${iso_root}/ | ||||||
|  | } | ||||||
							
								
								
									
										68
									
								
								lib/iso/mount.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								lib/iso/mount.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | |||||||
|  | #!/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. | ||||||
|  |  | ||||||
|  | track_img() { | ||||||
|  |     info "mount: [%s]" "$2" | ||||||
|  |     mount "$@" && IMG_ACTIVE_MOUNTS=("$2" "${IMG_ACTIVE_MOUNTS[@]}") | ||||||
|  | } | ||||||
|  |  | ||||||
|  | mount_img() { | ||||||
|  |     IMG_ACTIVE_MOUNTS=() | ||||||
|  |     mkdir -p "$2" | ||||||
|  |     track_img "$1" "$2" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | umount_img() { | ||||||
|  |     if [[ -n ${IMG_ACTIVE_MOUNTS[@]} ]];then | ||||||
|  |         info "umount: [%s]" "${IMG_ACTIVE_MOUNTS[@]}" | ||||||
|  |         umount "${IMG_ACTIVE_MOUNTS[@]}" | ||||||
|  |         unset IMG_ACTIVE_MOUNTS | ||||||
|  |         rm -r "$1" | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | track_fs() { | ||||||
|  |     info "overlayfs mount: [%s]" "$5" | ||||||
|  |     mount "$@" && FS_ACTIVE_MOUNTS=("$5" "${FS_ACTIVE_MOUNTS[@]}") | ||||||
|  | } | ||||||
|  |  | ||||||
|  | mount_overlay(){ | ||||||
|  |     FS_ACTIVE_MOUNTS=() | ||||||
|  |     local lower= upper="$1" work="$2" pkglist="$3" | ||||||
|  |     local fs=${upper##*/} | ||||||
|  |     local rootfs="$work/rootfs" desktopfs="$work/desktopfs" livefs="$work/livefs" | ||||||
|  |     mkdir -p "${mnt_dir}/work" | ||||||
|  |     mkdir -p "$upper" | ||||||
|  |     case $fs in | ||||||
|  |         desktopfs) lower="$rootfs" ;; | ||||||
|  |         livefs) | ||||||
|  |             lower="$rootfs" | ||||||
|  |             [[ -f $pkglist ]] && lower="$desktopfs":"$rootfs" | ||||||
|  |         ;; | ||||||
|  |         bootfs) | ||||||
|  |             lower="$livefs":"$rootfs" | ||||||
|  |             [[ -f $pkglist ]] && lower="$livefs":"$desktopfs":"$rootfs" | ||||||
|  |         ;; | ||||||
|  |     esac | ||||||
|  |     track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | umount_overlay(){ | ||||||
|  |     if [[ -n ${FS_ACTIVE_MOUNTS[@]} ]];then | ||||||
|  |         info "overlayfs umount: [%s]" "${FS_ACTIVE_MOUNTS[@]}" | ||||||
|  |         umount "${FS_ACTIVE_MOUNTS[@]}" | ||||||
|  |         unset FS_ACTIVE_MOUNTS | ||||||
|  |         rm -rf "${mnt_dir}/work" | ||||||
|  |     fi | ||||||
|  | } | ||||||
| @@ -1,4 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -46,22 +50,20 @@ load_profile(){ | |||||||
| 
 | 
 | ||||||
|     [[ -f $profdir/$prof/profile.conf ]] || return 1 |     [[ -f $profdir/$prof/profile.conf ]] || return 1 | ||||||
| 
 | 
 | ||||||
|     [[ -r $profdir/$prof/profile.conf ]] && source $profdir/$prof/profile.conf |     [[ -r $profdir/$prof/profile.conf ]] && . $profdir/$prof/profile.conf | ||||||
| 
 | 
 | ||||||
|     [[ -z ${DISPLAYMANAGER} ]] && DISPLAYMANAGER="none" |     DISPLAYMANAGER=${DISPLAYMANAGER:-'none'} | ||||||
| 
 | 
 | ||||||
|     [[ -z ${AUTOLOGIN} ]] && AUTOLOGIN="true" |     AUTOLOGIN=${AUTOLOGIN:-"true"} | ||||||
|     [[ ${DISPLAYMANAGER} == 'none' ]] && AUTOLOGIN="false" |     [[ ${DISPLAYMANAGER} == 'none' ]] && AUTOLOGIN="false" | ||||||
| 
 | 
 | ||||||
|     [[ -z ${HOST_NAME} ]] && HOST_NAME="artix" |     HOST_NAME=${HOST_NAME:-'artix'} | ||||||
| 
 | 
 | ||||||
|     [[ -z ${USER_NAME} ]] && USER_NAME="artix" |     USER_NAME=${USER_NAME:-'artix'} | ||||||
| 
 | 
 | ||||||
|     [[ -z ${PASSWORD} ]] && PASSWORD="artix" |     PASSWORD=${PASSWORD:-'artix'} | ||||||
| 
 | 
 | ||||||
|     if [[ -z ${ADDGROUPS} ]];then |     ADDGROUPS=${ADDGROUPS:-"video,power,cdrom,network,lp,scanner,wheel,users,log"} | ||||||
|         ADDGROUPS="video,power,storage,optical,network,lp,scanner,wheel,users,log" |  | ||||||
|     fi |  | ||||||
| 
 | 
 | ||||||
|     if [[ -z ${SERVICES[@]} ]];then |     if [[ -z ${SERVICES[@]} ]];then | ||||||
|         SERVICES=('acpid' 'bluetooth' 'cronie' 'cupsd' 'syslog-ng' 'NetworkManager') |         SERVICES=('acpid' 'bluetooth' 'cronie' 'cupsd' 'syslog-ng' 'NetworkManager') | ||||||
| @@ -82,23 +84,14 @@ load_profile(){ | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| write_live_session_conf(){ | write_live_session_conf(){ | ||||||
|     local path=$1${SYSCONFDIR} |     msg2 "Writing live.conf" | ||||||
|     [[ ! -d $path ]] && mkdir -p "$path" |     local conf='' | ||||||
|     local conf=$path/live.conf |     conf+=$(printf '%s\n' '# live session configuration') | ||||||
|     msg2 "Writing %s" "${conf##*/}" |     conf+=$(printf "\nAUTOLOGIN=%s\n" "${AUTOLOGIN}") | ||||||
|     echo '# live session configuration' > ${conf} |     conf+=$(printf "\nUSER_NAME=%s\n" "${USER_NAME}") | ||||||
|     echo '' >> ${conf} |     conf+=$(printf "\nPASSWORD=%s\n" "${PASSWORD}") | ||||||
|     echo '# autologin' >> ${conf} |     conf+=$(printf "\nADDGROUPS='%s'\n" "${ADDGROUPS}") | ||||||
|     echo "AUTOLOGIN=${AUTOLOGIN}" >> ${conf} |     printf '%s' "$conf" | ||||||
|     echo '' >> ${conf} |  | ||||||
|     echo '# live user name' >> ${conf} |  | ||||||
|     echo "USERNAME=${USERNAME}" >> ${conf} |  | ||||||
|     echo '' >> ${conf} |  | ||||||
|     echo '# live password' >> ${conf} |  | ||||||
|     echo "PASSWORD=${PASSWORD}" >> ${conf} |  | ||||||
|     echo '' >> ${conf} |  | ||||||
|     echo '# live group membership' >> ${conf} |  | ||||||
|     echo "ADDGROUPS='${ADDGROUPS}'" >> ${conf} |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| load_pkgs(){ | load_pkgs(){ | ||||||
							
								
								
									
										282
									
								
								lib/iso/util.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										282
									
								
								lib/iso/util.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,282 @@ | |||||||
|  | #!/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. | ||||||
|  |  | ||||||
|  | error_function() { | ||||||
|  |     if [[ -p $logpipe ]]; then | ||||||
|  |         rm "$logpipe" | ||||||
|  |     fi | ||||||
|  |     local func="$1" | ||||||
|  |     # first exit all subshells, then print the error | ||||||
|  |     if (( ! BASH_SUBSHELL )); then | ||||||
|  |         error "A failure occurred in %s()." "$func" | ||||||
|  |         plain "Aborting..." | ||||||
|  |     fi | ||||||
|  |     umount_overlay | ||||||
|  |     umount_img | ||||||
|  |     exit 2 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # $1: function | ||||||
|  | run_log(){ | ||||||
|  |     local func="$1" log_dir='/var/log/artools' | ||||||
|  |     [[ ! -d $log_dir ]] && mkdir -p $log_dir | ||||||
|  |     local logfile=${log_dir}/$(gen_iso_fn).$func.log | ||||||
|  |     logpipe=$(mktemp -u "/tmp/$func.pipe.XXXXXXXX") | ||||||
|  |     mkfifo "$logpipe" | ||||||
|  |     tee "$logfile" < "$logpipe" & | ||||||
|  |     local teepid=$! | ||||||
|  |     $func &> "$logpipe" | ||||||
|  |     wait $teepid | ||||||
|  |     rm "$logpipe" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | run_safe() { | ||||||
|  |     local restoretrap func="$1" | ||||||
|  |     set -e | ||||||
|  |     set -E | ||||||
|  |     restoretrap=$(trap -p ERR) | ||||||
|  |     trap 'error_function $func' ERR | ||||||
|  |  | ||||||
|  |     if ${log};then | ||||||
|  |         run_log "$func" | ||||||
|  |     else | ||||||
|  |         "$func" | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     eval $restoretrap | ||||||
|  |     set +E | ||||||
|  |     set +e | ||||||
|  | } | ||||||
|  |  | ||||||
|  | trap_exit() { | ||||||
|  |     local sig=$1; shift | ||||||
|  |     error "$@" | ||||||
|  |     umount_overlay | ||||||
|  |     trap -- "$sig" | ||||||
|  |     kill "-$sig" "$$" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | prepare_traps(){ | ||||||
|  |     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 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Build ISO | ||||||
|  | make_iso() { | ||||||
|  |     msg "Start [Build ISO]" | ||||||
|  |     touch "${iso_root}/.artix" | ||||||
|  |     for sfs_dir in $(find "${work_dir}" -maxdepth 1 -type d); do | ||||||
|  |         if [[ "${sfs_dir}" != "${work_dir}" ]]; then | ||||||
|  |             make_sfs "${sfs_dir}" | ||||||
|  |         fi | ||||||
|  |     done | ||||||
|  |  | ||||||
|  |     msg "Making bootable image" | ||||||
|  |     # Sanity checks | ||||||
|  |     [[ ! -d "${iso_root}" ]] && return 1 | ||||||
|  |     if [[ -f "${iso_dir}/${iso_file}" ]]; then | ||||||
|  |         msg2 "Removing existing bootable image..." | ||||||
|  |         rm -rf "${iso_dir}/${iso_file}" | ||||||
|  |     fi | ||||||
|  |     assemble_iso | ||||||
|  |     msg "Done [Build ISO]" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | install_packages(){ | ||||||
|  |     local fs="$1" | ||||||
|  |     setarch "${ARCH}" mkchroot \ | ||||||
|  |         "${mkchroot_args[@]}" "${fs}" "${packages[@]}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | copy_overlay(){ | ||||||
|  |     local src="$1" dest="$2" | ||||||
|  |     if [[ -e "$src" ]];then | ||||||
|  |         msg2 "Copying [%s] ..." "${src##*/}" | ||||||
|  |         cp -LR "$src"/* "$dest" | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | clean_up_image(){ | ||||||
|  |     local path mnt="$1" | ||||||
|  |     msg2 "Cleaning [%s]" "${mnt##*/}" | ||||||
|  |  | ||||||
|  |     if [[ -f "$mnt/etc/locale.gen.orig" ]];then | ||||||
|  |         mv "$mnt/etc/locale.gen.orig" "$mnt/etc/locale.gen" | ||||||
|  |         rm "$mnt/etc/locale.conf" | ||||||
|  |     fi | ||||||
|  |     path=$mnt/boot | ||||||
|  |     if [[ -d "$path" ]]; then | ||||||
|  |         find "$path" -name 'initramfs*.img' -delete &> /dev/null | ||||||
|  |     fi | ||||||
|  |     path=$mnt/var/lib/pacman/sync | ||||||
|  |     if [[ -d $path ]];then | ||||||
|  |         find "$path" -type f -delete &> /dev/null | ||||||
|  |     fi | ||||||
|  |     path=$mnt/var/cache/pacman/pkg | ||||||
|  |     if [[ -d $path ]]; then | ||||||
|  |         find "$path" -type f -delete &> /dev/null | ||||||
|  |     fi | ||||||
|  |     path=$mnt/var/log | ||||||
|  |     if [[ -d $path ]]; then | ||||||
|  |         find "$path" -type f -delete &> /dev/null | ||||||
|  |     fi | ||||||
|  |     path=$mnt/var/tmp | ||||||
|  |     if [[ -d $path ]];then | ||||||
|  |         find "$path" -mindepth 1 -delete &> /dev/null | ||||||
|  |     fi | ||||||
|  |     path=$mnt/tmp | ||||||
|  |     if [[ -d $path ]];then | ||||||
|  |         find "$path" -mindepth 1 -delete &> /dev/null | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     if [[ ${mnt##*/} == 'livefs' ]];then | ||||||
|  |         rm -rf "$mnt/etc/pacman.d/gnupg" | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete | ||||||
|  |     if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then | ||||||
|  |         rm $mnt/boot/grub/grub.cfg | ||||||
|  |     fi | ||||||
|  |     if [[ -f "$mnt/etc/machine-id" ]]; then | ||||||
|  |         rm $mnt/etc/machine-id | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | make_rootfs() { | ||||||
|  |     if [[ ! -e ${work_dir}/rootfs.lock ]]; then | ||||||
|  |         msg "Prepare [Base installation] (rootfs)" | ||||||
|  |         local rootfs="${work_dir}/rootfs" | ||||||
|  |  | ||||||
|  |         prepare_dir "${rootfs}" | ||||||
|  |  | ||||||
|  |         install_packages "${rootfs}" | ||||||
|  |  | ||||||
|  |         copy_overlay "${ROOT_OVERLAY}" "${rootfs}" | ||||||
|  |  | ||||||
|  |         clean_up_image "${rootfs}" | ||||||
|  |  | ||||||
|  |         msg "Done [Base installation] (rootfs)" | ||||||
|  |     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() { | ||||||
|  |     if [[ ! -e ${work_dir}/livefs.lock ]]; then | ||||||
|  |         msg "Prepare [Live installation] (livefs)" | ||||||
|  |         local livefs="${work_dir}/livefs" | ||||||
|  |  | ||||||
|  |         prepare_dir "${livefs}" | ||||||
|  |  | ||||||
|  |         mount_overlay "${livefs}" "${work_dir}" "${DESKTOP_LIST}" | ||||||
|  |  | ||||||
|  |         install_packages "${livefs}" | ||||||
|  |  | ||||||
|  |         copy_overlay "${LIVE_OVERLAY}" "${livefs}" | ||||||
|  |  | ||||||
|  |         configure_live_image "${livefs}" | ||||||
|  |  | ||||||
|  |         umount_overlay | ||||||
|  |  | ||||||
|  |         clean_up_image "${livefs}" | ||||||
|  |  | ||||||
|  |         msg "Done [Live installation] (livefs)" | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | make_bootfs() { | ||||||
|  |     if [[ ! -e ${work_dir}/bootfs.lock ]]; then | ||||||
|  |         msg "Prepare [/iso/boot]" | ||||||
|  |         local boot="${iso_root}/boot" | ||||||
|  |  | ||||||
|  |         prepare_dir "${boot}" | ||||||
|  |  | ||||||
|  |         cp ${work_dir}/rootfs/boot/vmlinuz* ${boot}/vmlinuz-${ARCH} | ||||||
|  |  | ||||||
|  |         local bootfs="${work_dir}/bootfs" | ||||||
|  |  | ||||||
|  |         mount_overlay "${bootfs}" "${work_dir}" "${DESKTOP_LIST}" | ||||||
|  |  | ||||||
|  |         prepare_initcpio "${bootfs}" | ||||||
|  |         prepare_initramfs "${bootfs}" | ||||||
|  |  | ||||||
|  |         cp ${bootfs}/boot/initramfs.img ${boot}/initramfs-${ARCH}.img | ||||||
|  |         prepare_boot_extras "${bootfs}" "${boot}" | ||||||
|  |  | ||||||
|  |         umount_overlay | ||||||
|  |  | ||||||
|  |         rm -R ${bootfs} | ||||||
|  |         : > ${work_dir}/bootfs.lock | ||||||
|  |         msg "Done [/iso/boot]" | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | make_grub(){ | ||||||
|  |     if [[ ! -e ${work_dir}/grub.lock ]]; then | ||||||
|  |         msg "Prepare [/iso/boot/grub]" | ||||||
|  |  | ||||||
|  |         prepare_grub "${work_dir}/rootfs" "${work_dir}/livefs" "${iso_root}" | ||||||
|  |  | ||||||
|  |         configure_grub "${iso_root}" | ||||||
|  |  | ||||||
|  |         : > ${work_dir}/grub.lock | ||||||
|  |         msg "Done [/iso/boot/grub]" | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | compress_images(){ | ||||||
|  |     local timer=$(get_timer) | ||||||
|  |     run_safe "make_iso" | ||||||
|  |     user_own "${iso_dir}" "-R" | ||||||
|  |     show_elapsed_time "${FUNCNAME}" "${timer}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | prepare_images(){ | ||||||
|  |     local timer=$(get_timer) | ||||||
|  |     load_pkgs "${ROOT_LIST}" "${INITSYS}" | ||||||
|  |     run_safe "make_rootfs" | ||||||
|  |     if [[ -f "${DESKTOP_LIST}" ]] ; then | ||||||
|  |         load_pkgs "${DESKTOP_LIST}" "${INITSYS}" | ||||||
|  |         run_safe "make_desktopfs" | ||||||
|  |     fi | ||||||
|  |     if [[ -f ${LIVE_LIST} ]]; then | ||||||
|  |         load_pkgs "${LIVE_LIST}" "${INITSYS}" | ||||||
|  |         run_safe "make_livefs" | ||||||
|  |     fi | ||||||
|  |     run_safe "make_bootfs" | ||||||
|  |     run_safe "make_grub" | ||||||
|  |  | ||||||
|  |     show_elapsed_time "${FUNCNAME}" "${timer}" | ||||||
|  | } | ||||||
							
								
								
									
										60
									
								
								lib/pkg/gitea.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								lib/pkg/gitea.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | |||||||
|  | #!/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. | ||||||
|  |  | ||||||
|  | create_repo(){ | ||||||
|  |     local pkg="$1" org="$2" | ||||||
|  |     local gitname=$(get_compliant_name "$pkg") | ||||||
|  |     local json="{ \"auto_init\": true, \"name\":\"$gitname\", \"gitignores\":\"ArchLinuxPackages\", \"readme\": \"Default\" }" | ||||||
|  |  | ||||||
|  |     msg2 "Create package repo [%s] in org (%s)" "${pkg}" "${org}" | ||||||
|  |  | ||||||
|  |     curl -s -X POST "${GIT_URL}/api/v1/org/$org/repos?access_token=${GIT_TOKEN}" \ | ||||||
|  |         -H "accept: application/json" \ | ||||||
|  |         -H "content-type: application/json" \ | ||||||
|  |         -d "$json" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | delete_repo(){ | ||||||
|  |     local pkg="$1" org="$2" | ||||||
|  |     local gitname=$(get_compliant_name "$pkg") | ||||||
|  |  | ||||||
|  |     msg2 "Delete package repo [%s] in org (%s)" "${pkg}" "${org}" | ||||||
|  |  | ||||||
|  |     curl -s -X DELETE "${GIT_URL}/api/v1/repos/$org/$gitname?access_token=${GIT_TOKEN}" \ | ||||||
|  |         -H  "accept: application/json" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | load_team_id(){ | ||||||
|  |     local org="$1" team="$2" id=0 | ||||||
|  |  | ||||||
|  |     local ids=($(curl -s -X GET "${GIT_URL}/api/v1/orgs/$org/teams?access_token=${GIT_TOKEN}" \ | ||||||
|  |         -H  "accept: application/json" | jshon -a -e id)) | ||||||
|  |  | ||||||
|  |     case $team in | ||||||
|  |         packages) id="${ids[2]}" ;; | ||||||
|  |         community) id="${ids[1]}" ;; | ||||||
|  |     esac | ||||||
|  |  | ||||||
|  |     echo $id | ||||||
|  | } | ||||||
|  |  | ||||||
|  | add_repo_to_team(){ | ||||||
|  |     local pkg="$1" org="$2" team="$3" | ||||||
|  |     local id=$(load_team_id "$org" "$team") | ||||||
|  |  | ||||||
|  |     msg2 "Adding package repo [%s] to team (%s)" "$pkg" "$team" | ||||||
|  |  | ||||||
|  |     curl -s -X PUT "${GIT_URL}/api/v1/teams/$id/repos/$org/$pkg?access_token=${GIT_TOKEN}" \ | ||||||
|  |         -H  "accept: application/json" | ||||||
|  | } | ||||||
							
								
								
									
										171
									
								
								lib/pkg/subrepo.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										171
									
								
								lib/pkg/subrepo.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,171 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | # | ||||||
|  | # Copyright (C) 2018-19 artoo@artixlinux.org | ||||||
|  | # Copyright (C) 2018 Artix Linux Developers | ||||||
|  | # | ||||||
|  | # This program is free software; you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation; version 2 of the License. | ||||||
|  | # | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  |  | ||||||
|  | get_local_head(){ | ||||||
|  |     echo $(git log --pretty=%H ...refs/heads/master^ | head -n 1) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | get_remote_head(){ | ||||||
|  |     echo $(git ls-remote origin -h refs/heads/master | cut -f1) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | get_pkg_org(){ | ||||||
|  |     local pkg="$1" org= sub= | ||||||
|  |     case ${pkg} in | ||||||
|  |         ruby-*) org=${pkg:0:6}; sub="${org:5}"; echo "packagesRuby" ;; | ||||||
|  |         perl-*) org=${pkg:0:6}; sub="${org:5}"; echo "packagesPerl" ;; | ||||||
|  |         python-*) org=${pkg:0:8}; sub="${org:7}"; echo "packagesPython" ;; | ||||||
|  |         python2-*) org=${pkg:0:9}; sub="${org:8}"; echo "packagesPython" ;; | ||||||
|  |         lib32*) org=${pkg:0:7}; sub="${org:6}"; echo "packagesL" ;; #"packages${sub^^}" ;; | ||||||
|  | #         lib*) org=${pkg:0:4}; sub="${org:3}"; echo "packagesLib${sub^^}" ;; | ||||||
|  |         *) org=${pkg:0:1}; echo "packages${org^^}" ;; | ||||||
|  |     esac | ||||||
|  | } | ||||||
|  |  | ||||||
|  | subrepo_push(){ | ||||||
|  |     local pkg="$1" | ||||||
|  |     msg2 "Push (%s)" "$pkg" | ||||||
|  |     git subrepo push "$pkg" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | subrepo_config(){ | ||||||
|  |     local pkg="$1" org="$2" | ||||||
|  |     local gitname=$(get_compliant_name "$pkg") | ||||||
|  |     local url=gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git | ||||||
|  |     msg2 "Update .gitrepo (%s) [%s]" "$pkg" "$url" | ||||||
|  |     git subrepo config "$pkg" remote "$url" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | subrepo_clean(){ | ||||||
|  |     local pkg="$1" | ||||||
|  |     msg2 "Clean (%s)" "$pkg" | ||||||
|  |     git subrepo clean "$pkg" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | subrepo_pull(){ | ||||||
|  |     local pkg="$1" | ||||||
|  |     msg2 "Pull (%s)" "$pkg" | ||||||
|  |     git subrepo pull "$pkg" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | subrepo_clone(){ | ||||||
|  |     local pkg="$1" org="$2" | ||||||
|  |     local gitname=$(get_compliant_name "$pkg") | ||||||
|  |     msg2 "Clone [%s] from (%s)" "$pkg" "$org/$gitname" | ||||||
|  |     git subrepo clone gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git "$pkg" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | clone_tree(){ | ||||||
|  |     local timer=$(get_timer) url="$1" tree="$2" | ||||||
|  |  | ||||||
|  |     msg "Cloning (%s) ..." "$tree" | ||||||
|  |  | ||||||
|  |     git clone $url/$tree.git | ||||||
|  |     show_elapsed_time "${FUNCNAME}" "${timer}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | has_changes(){ | ||||||
|  |     local head_l="$1" head_r="$2" | ||||||
|  |     if [[ "$head_l" == "$head_r" ]]; then | ||||||
|  |         msg2 "remote changes: no" | ||||||
|  |         return 1 | ||||||
|  |     else | ||||||
|  |         msg2 "remote changes: yes" | ||||||
|  |         return 0 | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | pull_tree(){ | ||||||
|  |     local tree="$1" | ||||||
|  |     local local_head=${2:-$(get_local_head)} | ||||||
|  |     local remote_head=$(get_remote_head) | ||||||
|  |  | ||||||
|  |     msg "Checking (%s)" "${tree}" | ||||||
|  |     if $(has_changes "${local_head}" "${remote_head}");then | ||||||
|  |         git pull origin master | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | push_tree(){ | ||||||
|  |     local tree="$1" | ||||||
|  |     msg "Update (%s)" "${tree}" | ||||||
|  |     git push origin master | ||||||
|  | } | ||||||
|  |  | ||||||
|  | write_jenkinsfile(){ | ||||||
|  |     local pkg="$1" | ||||||
|  |     local jenkins=$pkg/Jenkinsfile | ||||||
|  |  | ||||||
|  |     echo "@Library('artix-ci') import org.artixlinux.RepoPackage" > $jenkins | ||||||
|  |     echo '' >> $jenkins | ||||||
|  |     echo 'PackagePipeline(new RepoPackage(this))' >> $jenkins | ||||||
|  |     echo '' >> $jenkins | ||||||
|  |  | ||||||
|  |     git add $jenkins | ||||||
|  | } | ||||||
|  |  | ||||||
|  | write_agentyaml(){ | ||||||
|  |     local pkg="$1" | ||||||
|  |     local agent=$pkg/.artixlinux/agent.yaml label='master' | ||||||
|  |     [[ -d $pkg/.artixlinux ]] || mkdir $pkg/.artixlinux | ||||||
|  |  | ||||||
|  |     echo '%YAML 1.2' > $agent | ||||||
|  |     echo '---' >> $agent | ||||||
|  |     echo '' >> $agent | ||||||
|  |     echo "label: $label" >> $agent | ||||||
|  |     echo '' >> $agent | ||||||
|  |  | ||||||
|  |     git add $agent | ||||||
|  | } | ||||||
|  |  | ||||||
|  | commit_jenkins_files(){ | ||||||
|  |     local pkg="$1" | ||||||
|  |  | ||||||
|  |     write_jenkinsfile "$pkg" | ||||||
|  |     write_agentyaml "$pkg" | ||||||
|  |  | ||||||
|  |     git commit -m "add jenkinsfile & .artixlinux/agent.yaml" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | config_tree(){ | ||||||
|  |     local tree="$1" | ||||||
|  |     cd $tree | ||||||
|  |         git config --bool pull.rebase true | ||||||
|  |         git config commit.gpgsign true | ||||||
|  |         if [[ -n "${GPGKEY}" ]];then | ||||||
|  |             git config user.signingkey "${GPGKEY}" | ||||||
|  |         else | ||||||
|  |             warning "No GPGKEY configured in makepkg.conf!" | ||||||
|  |         fi | ||||||
|  |     cd .. | ||||||
|  | } | ||||||
|  |  | ||||||
|  | subrepo_new(){ | ||||||
|  |     local pkg="$1" tree="$2" team="${3:-$2}" | ||||||
|  |     local dest=${TREE_DIR_ARTIX}/$tree/$pkg/trunk | ||||||
|  |  | ||||||
|  |     cd ${TREE_DIR_ARTIX}/$tree | ||||||
|  |  | ||||||
|  |     local org=$(get_pkg_org "$pkg") | ||||||
|  |  | ||||||
|  |     create_repo "$pkg" "$org" | ||||||
|  |  | ||||||
|  |     add_repo_to_team "$pkg" "$org" "$team" | ||||||
|  |  | ||||||
|  |     subrepo_clone "$pkg" "$org" | ||||||
|  |  | ||||||
|  |     prepare_dir "$dest" | ||||||
|  |  | ||||||
|  |     commit_jenkins_files "$pkg" | ||||||
|  | } | ||||||
| @@ -1,5 +1,8 @@ | |||||||
| #!/bin/bash | #!/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 | # 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 | # it under the terms of the GNU General Public License as published by | ||||||
| # the Free Software Foundation; version 2 of the License. | # the Free Software Foundation; version 2 of the License. | ||||||
| @@ -9,12 +12,12 @@ | |||||||
| # 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. | ||||||
| 
 | 
 | ||||||
| get_local_head(){ | get_compliant_name(){ | ||||||
|     echo $(git log --pretty=%H ...refs/heads/$1^ | head -n 1) |     local gitname="$1" | ||||||
| } |     case $gitname in | ||||||
| 
 |         *+) gitname=${gitname//+/plus} | ||||||
| get_remote_head(){ |     esac | ||||||
|     echo $(git ls-remote origin -h refs/heads/$1 | cut -f1) |     echo $gitname | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| patch_pkg(){ | patch_pkg(){ | ||||||
| @@ -66,14 +69,6 @@ patch_pkg(){ | |||||||
|     esac |     esac | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| get_compliant_name(){ |  | ||||||
|     local gitname="$1" |  | ||||||
|     case $gitname in |  | ||||||
|         *+) gitname=${gitname//+/plus} |  | ||||||
|     esac |  | ||||||
|     echo $gitname |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 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") | ||||||
| @@ -95,32 +90,46 @@ find_repo(){ | |||||||
|     echo $repo |     echo $repo | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | get_cases(){ | ||||||
|  |     local pkglist="${DATADIR}/pkglists/$1.list" | ||||||
|  |     local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g" | ||||||
|  | 
 | ||||||
|  |     local pkgs=($(sed "$_com_rm" "$pkglist" | sed "$_space" | sed "$_clean")) | ||||||
|  | 
 | ||||||
|  |     local cases= | ||||||
|  |     for p in ${pkgs[@]};do | ||||||
|  |         cases=${p:+}${p:-|}${p} | ||||||
|  |     done | ||||||
|  |     echo $cases | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | get_artix_tree(){ | ||||||
|  |     local pkg="$1" artix_tree="${2:-$3}" tree | ||||||
|  |     case $pkg in | ||||||
|  |         $(get_cases kernel)) tree=packages-kernel ;; | ||||||
|  |         python-*|python2-*) tree=packages-python ;; | ||||||
|  |         perl-*) tree=packages-perl ;; | ||||||
|  |         ruby-*) tree=packages-ruby ;; | ||||||
|  |         xorg*|xf86*|$(get_cases xorg)) tree=packages-xorg ;; | ||||||
|  |         *-openrc) tree=packages-openrc ;; | ||||||
|  |         *-runit) tree=packages-runit ;; | ||||||
|  |         qt5-*) tree=packages-qt5 ;; | ||||||
|  | #         $(get_cases freedesktop)) tree=packages-desktop ;; | ||||||
|  | #         $(get_cases kde)) tree=packages-kde ;; | ||||||
|  | #         $(get_cases gnome)) tree=packages-gnome ;; | ||||||
|  |         *) tree=$artix_tree | ||||||
|  |     esac | ||||||
|  |     echo $tree | ||||||
|  | } | ||||||
|  | 
 | ||||||
| get_import_path(){ | get_import_path(){ | ||||||
|     local pkg="$1" import_path= |     local pkg="$1" import_path= | ||||||
|     for tree in ${tree_names[@]};do |     for tree in ${TREE_NAMES_ARCH[@]};do | ||||||
|         [[ -d ${TREE_DIR_ARCH}/$tree/$pkg ]] && import_path=${TREE_DIR_ARCH}/$tree/$pkg |         [[ -d ${TREE_DIR_ARCH}/$tree/$pkg ]] && import_path=${TREE_DIR_ARCH}/$tree/$pkg | ||||||
|     done |     done | ||||||
|     echo $import_path |     echo $import_path | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| clone_tree(){ |  | ||||||
|     local timer=$(get_timer) host_tree="$1" |  | ||||||
|     git clone $host_tree.git |  | ||||||
|     show_elapsed_time "${FUNCNAME}" "${timer}" |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| pull_tree(){ |  | ||||||
|     local branch="master" |  | ||||||
|     local local_head=$(get_local_head "$branch") |  | ||||||
|     local remote_head=$(get_remote_head "$branch") |  | ||||||
|     if [[ "${local_head}" == "${remote_head}" ]]; then |  | ||||||
|         msg2 "remote changes: no" |  | ||||||
|     else |  | ||||||
|         msg2 "remote changes: yes" |  | ||||||
|         git pull origin "$branch" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| pkgver_equal() { | pkgver_equal() { | ||||||
|     if [[ $1 = *-* && $2 = *-* ]]; then |     if [[ $1 = *-* && $2 = *-* ]]; then | ||||||
|         # if both versions have a pkgrel, then they must be an exact match |         # if both versions have a pkgrel, then they must be an exact match | ||||||
| @@ -131,6 +140,14 @@ 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 | ||||||
							
								
								
									
										25
									
								
								lib/util-base.sh.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								lib/util-base.sh.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | #!/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. | ||||||
|  |  | ||||||
|  | CHROOTVERSION=@chroot_version@ | ||||||
|  |  | ||||||
|  | . @datadir@/makepkg/util.sh | ||||||
|  |  | ||||||
|  | DATADIR=${DATADIR:-'@datadir@/artools'} | ||||||
|  | LIBDIR=${LIBDIR:-'@libdir@/artools'} | ||||||
|  | SYSCONFDIR=${SYSCONFDIR:-'@sysconfdir@/artools'} | ||||||
|  |  | ||||||
|  | for baselib in ${LIBDIR}/base/*.sh; do | ||||||
|  |     . $baselib | ||||||
|  | done | ||||||
| @@ -1,84 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
| # |  | ||||||
| # 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. |  | ||||||
|  |  | ||||||
| write_users_conf(){ |  | ||||||
|     local conf="$1/users.conf" |  | ||||||
|     msg2 "Writing %s ..." "${conf##*/}" |  | ||||||
|     echo "---" > "$conf" |  | ||||||
|     echo "defaultGroups:" >> "$conf" |  | ||||||
|     local IFS=',' |  | ||||||
|     for g in ${ADDGROUPS[@]};do |  | ||||||
|         echo "    - $g" >> "$conf" |  | ||||||
|     done |  | ||||||
|     unset IFS |  | ||||||
|     echo "autologinGroup:  autologin" >> "$conf" |  | ||||||
|     echo "doAutologin:     false" >> "$conf" |  | ||||||
|     echo "sudoersGroup:    wheel" >> "$conf" |  | ||||||
|     echo "setRootPassword: true" >> "$conf" |  | ||||||
|     echo "availableShells: /bin/bash, /bin/zsh" >> "$conf" # only used in new 'users' module |  | ||||||
|  |  | ||||||
| #     echo "passwordRequirements:" >> "$conf" |  | ||||||
| #     echo "    minLength: -1" >> "$conf" |  | ||||||
| #     echo "    maxLength: -1" >> "$conf" |  | ||||||
| #     echo "    libpwquality:" >> "$conf" |  | ||||||
| #     echo "        - minlen=8" >> "$conf" |  | ||||||
| #     echo "        - minclass=80" >> "$conf" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| write_servicescfg_conf(){ |  | ||||||
|     local init="$2" |  | ||||||
|     local conf="$1"/services-"$init".conf |  | ||||||
|     msg2 "Writing %s ..." "${conf##*/}" |  | ||||||
|     echo '---' >  "$conf" |  | ||||||
|     case "$init" in |  | ||||||
|         'runit') |  | ||||||
|             echo 'svDir: /etc/runit/sv' >> "$conf" |  | ||||||
|             echo '' >> "$conf" |  | ||||||
|             echo 'runsvDir: /etc/runit/runsvdir' >> "$conf" |  | ||||||
|             echo '' >> "$conf" |  | ||||||
|             echo 'services:' >> "$conf" |  | ||||||
|             echo "    enabled:" >> "$conf" |  | ||||||
|             for svc in ${SERVICES[@]};do |  | ||||||
|                 echo "      - name: $svc" >> "$conf" |  | ||||||
|                 echo '        runlevel: default' >> "$conf" |  | ||||||
|             done |  | ||||||
|         ;; |  | ||||||
|         'openrc') |  | ||||||
|             echo 'initdDir: /etc/init.d' >> "$conf" |  | ||||||
|             echo '' >> "$conf" |  | ||||||
|             echo 'runlevelsDir: /etc/runlevels' >> "$conf" |  | ||||||
|             echo '' >> "$conf" |  | ||||||
|             echo 'services:' >> "$conf" |  | ||||||
|             for svc in ${SERVICES[@]};do |  | ||||||
|                 echo "      - name: $svc" >> "$conf" |  | ||||||
|                 echo '        runlevel: default' >> "$conf" |  | ||||||
|             done |  | ||||||
|         ;; |  | ||||||
|     esac |  | ||||||
| } |  | ||||||
|  |  | ||||||
| write_postcfg_conf(){ |  | ||||||
|     local conf="$1/postcfg.conf" init="$2" |  | ||||||
|     sed -e "s|openrc|$init|" -i "$conf" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| configure_calamares(){ |  | ||||||
|     local mods="$1/etc/calamares/modules" init="$2" |  | ||||||
|     if [[ -d "$mods" ]];then |  | ||||||
|         info "Configuring [Calamares]" |  | ||||||
|         write_users_conf "$mods" |  | ||||||
|         write_servicescfg_conf "$mods" "$init" |  | ||||||
|         write_postcfg_conf "$mods" "$init" |  | ||||||
|         local name=services-"$init" |  | ||||||
|         sed -e "s|services-openrc|$name|" -i "$1"/etc/calamares/settings.conf |  | ||||||
|         info "Done configuring [Calamares]" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
							
								
								
									
										556
									
								
								lib/util-iso.sh
									
									
									
									
									
								
							
							
						
						
									
										556
									
								
								lib/util-iso.sh
									
									
									
									
									
								
							| @@ -1,556 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
| # |  | ||||||
| # 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. |  | ||||||
|  |  | ||||||
| import ${LIBDIR}/util-chroot.sh |  | ||||||
| import ${LIBDIR}/util-iso-grub.sh |  | ||||||
| import ${LIBDIR}/util-iso-yaml.sh |  | ||||||
| import ${LIBDIR}/util-iso-profile.sh |  | ||||||
|  |  | ||||||
| track_img() { |  | ||||||
|     info "mount: [%s]" "$2" |  | ||||||
|     mount "$@" && IMG_ACTIVE_MOUNTS=("$2" "${IMG_ACTIVE_MOUNTS[@]}") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| mount_img() { |  | ||||||
|     IMG_ACTIVE_MOUNTS=() |  | ||||||
|     mkdir -p "$2" |  | ||||||
|     track_img "$1" "$2" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| umount_img() { |  | ||||||
|     if [[ -n ${IMG_ACTIVE_MOUNTS[@]} ]];then |  | ||||||
|         info "umount: [%s]" "${IMG_ACTIVE_MOUNTS[@]}" |  | ||||||
|         umount "${IMG_ACTIVE_MOUNTS[@]}" |  | ||||||
|         unset IMG_ACTIVE_MOUNTS |  | ||||||
|         rm -r "$1" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| track_fs() { |  | ||||||
|     info "overlayfs mount: [%s]" "$5" |  | ||||||
|     mount "$@" && FS_ACTIVE_MOUNTS=("$5" "${FS_ACTIVE_MOUNTS[@]}") |  | ||||||
| } |  | ||||||
|  |  | ||||||
| mount_overlay(){ |  | ||||||
|     FS_ACTIVE_MOUNTS=() |  | ||||||
|     local lower= upper="$1" work="$2" pkglist="$3" |  | ||||||
|     local fs=${upper##*/} |  | ||||||
|     local rootfs="$work/rootfs" desktopfs="$work/desktopfs" livefs="$work/livefs" |  | ||||||
|     mkdir -p "${mnt_dir}/work" |  | ||||||
|     mkdir -p "$upper" |  | ||||||
|     case $fs in |  | ||||||
|         desktopfs) lower="$rootfs" ;; |  | ||||||
|         livefs) |  | ||||||
|             lower="$rootfs" |  | ||||||
|             [[ -f $pkglist ]] && lower="$desktopfs":"$rootfs" |  | ||||||
|         ;; |  | ||||||
|         bootfs) |  | ||||||
|             lower="$livefs":"$rootfs" |  | ||||||
|             [[ -f $pkglist ]] && lower="$livefs":"$desktopfs":"$rootfs" |  | ||||||
|         ;; |  | ||||||
|     esac |  | ||||||
|     track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| umount_overlay(){ |  | ||||||
|     if [[ -n ${FS_ACTIVE_MOUNTS[@]} ]];then |  | ||||||
|         info "overlayfs umount: [%s]" "${FS_ACTIVE_MOUNTS[@]}" |  | ||||||
|         umount "${FS_ACTIVE_MOUNTS[@]}" |  | ||||||
|         unset FS_ACTIVE_MOUNTS |  | ||||||
|         rm -rf "${mnt_dir}/work" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| error_function() { |  | ||||||
|     if [[ -p $logpipe ]]; then |  | ||||||
|         rm "$logpipe" |  | ||||||
|     fi |  | ||||||
|     local func="$1" |  | ||||||
|     # first exit all subshells, then print the error |  | ||||||
|     if (( ! BASH_SUBSHELL )); then |  | ||||||
|         error "A failure occurred in %s()." "$func" |  | ||||||
|         plain "Aborting..." |  | ||||||
|     fi |  | ||||||
|     umount_overlay |  | ||||||
|     umount_img |  | ||||||
|     exit 2 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # $1: function |  | ||||||
| run_log(){ |  | ||||||
|     local func="$1" log_dir='/var/log/artools' |  | ||||||
|     [[ ! -d $log_dir ]] && mkdir -p $log_dir |  | ||||||
|     local logfile=${log_dir}/$(gen_iso_fn).$func.log |  | ||||||
|     logpipe=$(mktemp -u "/tmp/$func.pipe.XXXXXXXX") |  | ||||||
|     mkfifo "$logpipe" |  | ||||||
|     tee "$logfile" < "$logpipe" & |  | ||||||
|     local teepid=$! |  | ||||||
|     $func &> "$logpipe" |  | ||||||
|     wait $teepid |  | ||||||
|     rm "$logpipe" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| run_safe() { |  | ||||||
|     local restoretrap func="$1" |  | ||||||
|     set -e |  | ||||||
|     set -E |  | ||||||
|     restoretrap=$(trap -p ERR) |  | ||||||
|     trap 'error_function $func' ERR |  | ||||||
|  |  | ||||||
|     if ${log};then |  | ||||||
|         run_log "$func" |  | ||||||
|     else |  | ||||||
|         "$func" |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     eval $restoretrap |  | ||||||
|     set +E |  | ||||||
|     set +e |  | ||||||
| } |  | ||||||
|  |  | ||||||
| trap_exit() { |  | ||||||
|     local sig=$1; shift |  | ||||||
|     error "$@" |  | ||||||
|     umount_overlay |  | ||||||
|     trap -- "$sig" |  | ||||||
|     kill "-$sig" "$$" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| prepare_traps(){ |  | ||||||
|     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 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| add_svc_rc(){ |  | ||||||
|     local mnt="$1" name="$2" rlvl="$3" |  | ||||||
|     if [[ -f $mnt/etc/init.d/$name ]];then |  | ||||||
|         msg2 "Setting %s ..." "$name" |  | ||||||
|         chroot $mnt rc-update add $name $rlvl &>/dev/null |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| add_svc_runit(){ |  | ||||||
|     local mnt="$1" name="$2" |  | ||||||
|     if [[ -d $mnt/etc/runit/sv/$name ]]; then |  | ||||||
|         msg2 "Setting %s ..." "$name" |  | ||||||
|         chroot $mnt ln -s /etc/runit/sv/$name /etc/runit/runsvdir/default &>/dev/null |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| set_xdm(){ |  | ||||||
|     if [[ -f $1/etc/conf.d/xdm ]];then |  | ||||||
|         local conf='DISPLAYMANAGER="'${DISPLAYMANAGER}'"' |  | ||||||
|         sed -i -e "s|^.*DISPLAYMANAGER=.*|${conf}|" $1/etc/conf.d/xdm |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| configure_hosts(){ |  | ||||||
|     sed -e "s|localhost.localdomain|localhost.localdomain ${HOST_NAME}|" -i $1/etc/hosts |  | ||||||
| } |  | ||||||
|  |  | ||||||
| configure_logind(){ |  | ||||||
|     local conf=$1/etc/$2/logind.conf |  | ||||||
|     if [[ -e $conf ]];then |  | ||||||
|         msg2 "Configuring logind ..." |  | ||||||
|         sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' "$conf" |  | ||||||
|         sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' "$conf" |  | ||||||
|         sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' "$conf" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| configure_services(){ |  | ||||||
|     local mnt="$1" |  | ||||||
|     info "Configuring [%s]" "${INITSYS}" |  | ||||||
|     case ${INITSYS} in |  | ||||||
|         'openrc') |  | ||||||
|             for svc in ${SERVICES[@]}; do |  | ||||||
|                 [[ $svc == "xdm" ]] && set_xdm "$mnt" |  | ||||||
|                 add_svc_rc "$mnt" "$svc" "default" |  | ||||||
|             done |  | ||||||
|             for svc in ${SERVICES_LIVE[@]}; do |  | ||||||
|                 add_svc_rc "$mnt" "$svc" "default" |  | ||||||
|             done |  | ||||||
|         ;; |  | ||||||
|         'runit') |  | ||||||
|             for svc in ${SERVICES[@]}; do |  | ||||||
|                 add_svc_runit "$mnt" "$svc" |  | ||||||
|             done |  | ||||||
|             for svc in ${SERVICES_LIVE[@]}; do |  | ||||||
|                 add_svc_runit "$mnt" "$svc" |  | ||||||
|             done |  | ||||||
|         ;; |  | ||||||
|     esac |  | ||||||
|     info "Done configuring [%s]" "${INITSYS}" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| configure_system(){ |  | ||||||
|     local mnt="$1" |  | ||||||
|     case ${INITSYS} in |  | ||||||
|         'openrc' | 'runit') |  | ||||||
|             configure_logind "$mnt" "elogind" |  | ||||||
|         ;; |  | ||||||
|     esac |  | ||||||
|     echo ${HOST_NAME} > $mnt/etc/hostname |  | ||||||
| } |  | ||||||
|  |  | ||||||
| clean_iso_root(){ |  | ||||||
|     local dest="$1" |  | ||||||
|     msg "Deleting isoroot [%s] ..." "${dest##*/}" |  | ||||||
|     rm -rf --one-file-system "$dest" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| clean_up_image(){ |  | ||||||
|     local path mnt="$1" |  | ||||||
|     msg2 "Cleaning [%s]" "${mnt##*/}" |  | ||||||
|  |  | ||||||
|     if [[ -f "$mnt/etc/locale.gen.orig" ]];then |  | ||||||
|         mv "$mnt/etc/locale.gen.orig" "$mnt/etc/locale.gen" |  | ||||||
|         rm "$mnt/etc/locale.conf" |  | ||||||
|     fi |  | ||||||
|     path=$mnt/boot |  | ||||||
|     if [[ -d "$path" ]]; then |  | ||||||
|         find "$path" -name 'initramfs*.img' -delete &> /dev/null |  | ||||||
|     fi |  | ||||||
|     path=$mnt/var/lib/pacman/sync |  | ||||||
|     if [[ -d $path ]];then |  | ||||||
|         find "$path" -type f -delete &> /dev/null |  | ||||||
|     fi |  | ||||||
|     path=$mnt/var/cache/pacman/pkg |  | ||||||
|     if [[ -d $path ]]; then |  | ||||||
|         find "$path" -type f -delete &> /dev/null |  | ||||||
|     fi |  | ||||||
|     path=$mnt/var/log |  | ||||||
|     if [[ -d $path ]]; then |  | ||||||
|         find "$path" -type f -delete &> /dev/null |  | ||||||
|     fi |  | ||||||
|     path=$mnt/var/tmp |  | ||||||
|     if [[ -d $path ]];then |  | ||||||
|         find "$path" -mindepth 1 -delete &> /dev/null |  | ||||||
|     fi |  | ||||||
|     path=$mnt/tmp |  | ||||||
|     if [[ -d $path ]];then |  | ||||||
|         find "$path" -mindepth 1 -delete &> /dev/null |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     if [[ ${mnt##*/} == 'livefs' ]];then |  | ||||||
|         rm -rf "$mnt/etc/pacman.d/gnupg" |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete |  | ||||||
|     if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then |  | ||||||
|         rm $mnt/boot/grub/grub.cfg |  | ||||||
|     fi |  | ||||||
|     if [[ -f "$mnt/etc/machine-id" ]]; then |  | ||||||
|         rm $mnt/etc/machine-id |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| configure_live_image(){ |  | ||||||
|     local fs="$1" |  | ||||||
|     msg "Configuring [livefs]" |  | ||||||
|     configure_hosts "$fs" |  | ||||||
|     configure_system "$fs" |  | ||||||
|     configure_services "$fs" |  | ||||||
|     configure_calamares "$fs" "${INITSYS}" |  | ||||||
|     write_live_session_conf "$fs" |  | ||||||
|     msg "Done configuring [livefs]" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| 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 |  | ||||||
| make_sfs() { |  | ||||||
|     local src="$1" |  | ||||||
|     if [[ ! -e "${src}" ]]; then |  | ||||||
|         error "The path %s does not exist" "${src}" |  | ||||||
|         retrun 1 |  | ||||||
|     fi |  | ||||||
|     local timer=$(get_timer) dest=${iso_root}/artix/${ARCH} |  | ||||||
|     local name=${1##*/} |  | ||||||
|     local sfs="${dest}/${name}.sfs" |  | ||||||
|     mkdir -p ${dest} |  | ||||||
|     msg "Generating SquashFS image for %s" "${src}" |  | ||||||
|     if [[ -f "${sfs}" ]]; then |  | ||||||
|         local has_changed_dir=$(find ${src} -newer ${sfs}) |  | ||||||
|         msg2 "Possible changes for %s ..." "${src}"  >> /tmp/buildiso.debug |  | ||||||
|         msg2 "%s" "${has_changed_dir}" >> /tmp/buildiso.debug |  | ||||||
|         if [[ -n "${has_changed_dir}" ]]; then |  | ||||||
|             msg2 "SquashFS image %s is not up to date, rebuilding..." "${sfs}" |  | ||||||
|             rm "${sfs}" |  | ||||||
|         else |  | ||||||
|             msg2 "SquashFS image %s is up to date, skipping." "${sfs}" |  | ||||||
|             return |  | ||||||
|         fi |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     if ${persist};then |  | ||||||
|         local size=32G |  | ||||||
|         local mnt="${mnt_dir}/${name}" |  | ||||||
|         msg2 "Creating ext4 image of %s ..." "${size}" |  | ||||||
|         truncate -s ${size} "${src}.img" |  | ||||||
|         local ext4_args=() |  | ||||||
|         ext4_args+=(-O ^has_journal,^resize_inode -E lazy_itable_init=0 -m 0) |  | ||||||
|         mkfs.ext4 ${ext4_args[@]} -F "${src}.img" &>/dev/null |  | ||||||
|         tune2fs -c 0 -i 0 "${src}.img" &> /dev/null |  | ||||||
|         mount_img "${work_dir}/${name}.img" "${mnt}" |  | ||||||
|         msg2 "Copying %s ..." "${src}/" |  | ||||||
|         cp -aT "${src}/" "${mnt}/" |  | ||||||
|         umount_img "${mnt}" |  | ||||||
|  |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     msg2 "Creating SquashFS image, this may take some time..." |  | ||||||
|     local mksfs_args=() |  | ||||||
|     if ${persist};then |  | ||||||
|         mksfs_args+=(${work_dir}/${name}.img) |  | ||||||
|     else |  | ||||||
|         mksfs_args+=(${src}) |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     mksfs_args+=(${sfs} -noappend) |  | ||||||
|  |  | ||||||
|     local highcomp="-b 256K -Xbcj x86" comp='xz' |  | ||||||
|  |  | ||||||
|     mksfs_args+=(-comp ${comp} ${highcomp}) |  | ||||||
|  |  | ||||||
|     mksquashfs "${mksfs_args[@]}" |  | ||||||
|  |  | ||||||
|     make_checksum "${dest}" "${name}" |  | ||||||
|     ${persist} && rm "${src}.img" |  | ||||||
|  |  | ||||||
|     if [[ -n ${GPG_KEY} ]];then |  | ||||||
|         make_sig "${dest}" "${name}" |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     show_elapsed_time "${FUNCNAME}" "${timer_start}" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| assemble_iso(){ |  | ||||||
|     msg "Creating ISO image..." |  | ||||||
|     local mod_date=$(date -u +%Y-%m-%d-%H-%M-%S-00  | sed -e s/-//g) |  | ||||||
|  |  | ||||||
|     xorriso -as mkisofs \ |  | ||||||
|         --modification-date=${mod_date} \ |  | ||||||
|         --protective-msdos-label \ |  | ||||||
|         -volid "${iso_label}" \ |  | ||||||
|         -appid "$(get_osname) Live/Rescue CD" \ |  | ||||||
|         -publisher "$(get_osname) <$(get_disturl)>" \ |  | ||||||
|         -preparer "Prepared by artools/${0##*/}" \ |  | ||||||
|         -r -graft-points -no-pad \ |  | ||||||
|         --sort-weight 0 / \ |  | ||||||
|         --sort-weight 1 /boot \ |  | ||||||
|         --grub2-mbr ${iso_root}/boot/grub/i386-pc/boot_hybrid.img \ |  | ||||||
|         -partition_offset 16 \ |  | ||||||
|         -b boot/grub/i386-pc/eltorito.img \ |  | ||||||
|         -c boot.catalog \ |  | ||||||
|         -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info \ |  | ||||||
|         -eltorito-alt-boot \ |  | ||||||
|         -append_partition 2 0xef ${iso_root}/efi.img \ |  | ||||||
|         -e --interval:appended_partition_2:all:: -iso_mbr_part_type 0x00 \ |  | ||||||
|         -no-emul-boot \ |  | ||||||
|         -iso-level 3 \ |  | ||||||
|         -o ${iso_dir}/${iso_file} \ |  | ||||||
|         ${iso_root}/ |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # Build ISO |  | ||||||
| make_iso() { |  | ||||||
|     msg "Start [Build ISO]" |  | ||||||
|     touch "${iso_root}/.artix" |  | ||||||
|     for sfs_dir in $(find "${work_dir}" -maxdepth 1 -type d); do |  | ||||||
|         if [[ "${sfs_dir}" != "${work_dir}" ]]; then |  | ||||||
|             make_sfs "${sfs_dir}" |  | ||||||
|         fi |  | ||||||
|     done |  | ||||||
|  |  | ||||||
|     msg "Making bootable image" |  | ||||||
|     # Sanity checks |  | ||||||
|     [[ ! -d "${iso_root}" ]] && return 1 |  | ||||||
|     if [[ -f "${iso_dir}/${iso_file}" ]]; then |  | ||||||
|         msg2 "Removing existing bootable image..." |  | ||||||
|         rm -rf "${iso_dir}/${iso_file}" |  | ||||||
|     fi |  | ||||||
|     assemble_iso |  | ||||||
|     msg "Done [Build ISO]" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| gen_iso_fn(){ |  | ||||||
|     local vars=("artix") name |  | ||||||
|     vars+=("${PROFILE}") |  | ||||||
|     vars+=("${INITSYS}") |  | ||||||
|     case "${REPOSITORY}" in |  | ||||||
|         'gremlins'|'goblins') vars+=("${REPOSITORY}") ;; |  | ||||||
|     esac |  | ||||||
|     vars+=("${ISO_VERSION}") |  | ||||||
|     vars+=("${ARCH}") |  | ||||||
|     for n in ${vars[@]};do |  | ||||||
|         name=${name:-}${name:+-}${n} |  | ||||||
|     done |  | ||||||
|     echo $name |  | ||||||
| } |  | ||||||
|  |  | ||||||
| install_packages(){ |  | ||||||
|     local fs="$1" |  | ||||||
|     setarch "${ARCH}" mkchroot \ |  | ||||||
|         "${mkchroot_args[@]}" "${fs}" "${packages[@]}" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| copy_overlay(){ |  | ||||||
|     local src="$1" dest="$2" |  | ||||||
|     if [[ -e "$src" ]];then |  | ||||||
|         msg2 "Copying [%s] ..." "${src##*/}" |  | ||||||
|         cp -LR "$src"/* "$dest" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| make_rootfs() { |  | ||||||
|     if [[ ! -e ${work_dir}/rootfs.lock ]]; then |  | ||||||
|         msg "Prepare [Base installation] (rootfs)" |  | ||||||
|         local rootfs="${work_dir}/rootfs" |  | ||||||
|  |  | ||||||
|         prepare_dir "${rootfs}" |  | ||||||
|  |  | ||||||
|         install_packages "${rootfs}" |  | ||||||
|  |  | ||||||
|         copy_overlay "${ROOT_OVERLAY}" "${rootfs}" |  | ||||||
|  |  | ||||||
|         clean_up_image "${rootfs}" |  | ||||||
|  |  | ||||||
|         msg "Done [Base installation] (rootfs)" |  | ||||||
|     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() { |  | ||||||
|     if [[ ! -e ${work_dir}/livefs.lock ]]; then |  | ||||||
|         msg "Prepare [Live installation] (livefs)" |  | ||||||
|         local livefs="${work_dir}/livefs" |  | ||||||
|  |  | ||||||
|         prepare_dir "${livefs}" |  | ||||||
|  |  | ||||||
|         mount_overlay "${livefs}" "${work_dir}" "${DESKTOP_LIST}" |  | ||||||
|  |  | ||||||
|         install_packages "${livefs}" |  | ||||||
|  |  | ||||||
|         copy_overlay "${LIVE_OVERLAY}" "${livefs}" |  | ||||||
|  |  | ||||||
|         configure_live_image "${livefs}" |  | ||||||
|  |  | ||||||
|         umount_overlay |  | ||||||
|  |  | ||||||
|         clean_up_image "${livefs}" |  | ||||||
|  |  | ||||||
|         msg "Done [Live installation] (livefs)" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| make_bootfs() { |  | ||||||
|     if [[ ! -e ${work_dir}/bootfs.lock ]]; then |  | ||||||
|         msg "Prepare [/iso/boot]" |  | ||||||
|         local boot="${iso_root}/boot" |  | ||||||
|  |  | ||||||
|         prepare_dir "${boot}" |  | ||||||
|  |  | ||||||
|         cp ${work_dir}/rootfs/boot/vmlinuz* ${boot}/vmlinuz-${ARCH} |  | ||||||
|  |  | ||||||
|         local bootfs="${work_dir}/bootfs" |  | ||||||
|  |  | ||||||
|         mount_overlay "${bootfs}" "${work_dir}" "${DESKTOP_LIST}" |  | ||||||
|  |  | ||||||
|         prepare_initcpio "${bootfs}" |  | ||||||
|         prepare_initramfs "${bootfs}" |  | ||||||
|  |  | ||||||
|         cp ${bootfs}/boot/initramfs.img ${boot}/initramfs-${ARCH}.img |  | ||||||
|         prepare_boot_extras "${bootfs}" "${boot}" |  | ||||||
|  |  | ||||||
|         umount_overlay |  | ||||||
|  |  | ||||||
|         rm -R ${bootfs} |  | ||||||
|         : > ${work_dir}/bootfs.lock |  | ||||||
|         msg "Done [/iso/boot]" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| make_grub(){ |  | ||||||
|     if [[ ! -e ${work_dir}/grub.lock ]]; then |  | ||||||
|         msg "Prepare [/iso/boot/grub]" |  | ||||||
|  |  | ||||||
|         prepare_grub "${work_dir}/rootfs" "${work_dir}/livefs" "${iso_root}" |  | ||||||
|  |  | ||||||
|         configure_grub "${iso_root}" |  | ||||||
|  |  | ||||||
|         : > ${work_dir}/grub.lock |  | ||||||
|         msg "Done [/iso/boot/grub]" |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| compress_images(){ |  | ||||||
|     local timer=$(get_timer) |  | ||||||
|     run_safe "make_iso" |  | ||||||
|     user_own "${iso_dir}" "-R" |  | ||||||
|     show_elapsed_time "${FUNCNAME}" "${timer}" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| prepare_images(){ |  | ||||||
|     local timer=$(get_timer) |  | ||||||
|     load_pkgs "${ROOT_LIST}" "${INITSYS}" |  | ||||||
|     run_safe "make_rootfs" |  | ||||||
|     if [[ -f "${DESKTOP_LIST}" ]] ; then |  | ||||||
|         load_pkgs "${DESKTOP_LIST}" "${INITSYS}" |  | ||||||
|         run_safe "make_desktopfs" |  | ||||||
|     fi |  | ||||||
|     if [[ -f ${LIVE_LIST} ]]; then |  | ||||||
|         load_pkgs "${LIVE_LIST}" "${INITSYS}" |  | ||||||
|         run_safe "make_livefs" |  | ||||||
|     fi |  | ||||||
|     run_safe "make_bootfs" |  | ||||||
|     run_safe "make_grub" |  | ||||||
|  |  | ||||||
|     show_elapsed_time "${FUNCNAME}" "${timer}" |  | ||||||
| } |  | ||||||
							
								
								
									
										17
									
								
								lib/util-iso.sh.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								lib/util-iso.sh.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | |||||||
|  | #!/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. | ||||||
|  |  | ||||||
|  | for isolib in ${LIBDIR}/iso/*.sh; do | ||||||
|  |     . $isolib | ||||||
|  | done | ||||||
| @@ -1,234 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
| # |  | ||||||
| # 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. |  | ||||||
|  |  | ||||||
| create_repo(){ |  | ||||||
|     local pkg="$1" org="$2" |  | ||||||
|     local gitname=$(get_compliant_name "$pkg") |  | ||||||
|     local json="{ \"auto_init\": true, \"name\":\"$gitname\", \"gitignores\":\"ArchLinuxPackages\", \"readme\": \"Default\" }" |  | ||||||
|  |  | ||||||
|     msg2 "Create package repo [%s] in org (%s)" "${pkg}" "${org}" |  | ||||||
|  |  | ||||||
|     curl -X POST "${GIT_URL}/api/v1/org/$org/repos?access_token=${GIT_TOKEN}" \ |  | ||||||
|         -H "accept: application/json" \ |  | ||||||
|         -H "content-type: application/json" \ |  | ||||||
|         -d "$json" |  | ||||||
|  |  | ||||||
|     echo |  | ||||||
| } |  | ||||||
|  |  | ||||||
| delete_repo(){ |  | ||||||
|     local pkg="$1" org="$2" |  | ||||||
|     local gitname=$(get_compliant_name "$pkg") |  | ||||||
|  |  | ||||||
|     msg2 "Delete package repo [%s] in org (%s)" "${pkg}" "${org}" |  | ||||||
|  |  | ||||||
|     curl -X DELETE "${GIT_URL}/api/v1/repos/$org/$gitname?access_token=${GIT_TOKEN}" \ |  | ||||||
|         -H  "accept: application/json" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| get_pkg_org(){ |  | ||||||
|     local pkg="$1" org= sub= |  | ||||||
|     case ${pkg} in |  | ||||||
| #         ruby-*) org=${pkg:0:6}; sub="${org:5}"; echo "packagesRuby" ;; |  | ||||||
|         perl-*) org=${pkg:0:6}; sub="${org:5}"; echo "packagesPerl" ;; |  | ||||||
|         python-*) org=${pkg:0:8}; sub="${org:7}"; echo "packagesPython" ;; |  | ||||||
|         python2-*) org=${pkg:0:9}; sub="${org:8}"; echo "packagesPython" ;; |  | ||||||
|         lib32*) org=${pkg:0:7}; sub="${org:6}"; echo "packagesL" ;; #"packages${sub^^}" ;; |  | ||||||
| #         lib*) org=${pkg:0:4}; sub="${org:3}"; echo "packagesLib${sub^^}" ;; |  | ||||||
|         *) org=${pkg:0:1}; echo "packages${org^^}" ;; |  | ||||||
|     esac |  | ||||||
| } |  | ||||||
|  |  | ||||||
| load_team_id(){ |  | ||||||
|     local org="$1" tree="$2" id=0 |  | ||||||
|  |  | ||||||
|     case $org in |  | ||||||
|         packagesA) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=70 ;; |  | ||||||
|                 community) id=71 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesB) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=72 ;; |  | ||||||
|                 community) id=73 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesC) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=74 ;; |  | ||||||
|                 community) id=75 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesD) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=76 ;; |  | ||||||
|                 community) id=77 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesE) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=78 ;; |  | ||||||
|                 community) id=79 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesF) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=80 ;; |  | ||||||
|                 community) id=81 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesG) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=82 ;; |  | ||||||
|                 community) id=83 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesH) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=84 ;; |  | ||||||
|                 community) id=85 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesI) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=86 ;; |  | ||||||
|                 community) id=87 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesJ) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=88 ;; |  | ||||||
|                 community) id=89 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesK) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=90 ;; |  | ||||||
|                 community) id=91 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesL) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=92 ;; |  | ||||||
|                 community) id=93 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesM) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=94 ;; |  | ||||||
|                 community) id=95 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesN) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=96 ;; |  | ||||||
|                 community) id=97 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesO) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=98 ;; |  | ||||||
|                 community) id=99 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesP) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=100 ;; |  | ||||||
|                 community) id=101 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesQ) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=105 ;; |  | ||||||
|                 community) id=106 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesR) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=107 ;; |  | ||||||
|                 community) id=108 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesS) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=109 ;; |  | ||||||
|                 community) id=110 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesT) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=111 ;; |  | ||||||
|                 community) id=112 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesU) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=113 ;; |  | ||||||
|                 community) id=114 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesV) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=115 ;; |  | ||||||
|                 community) id=116 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesW) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=117 ;; |  | ||||||
|                 community) id=118 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesX) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=119 ;; |  | ||||||
|                 community) id=120 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesY) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=121 ;; |  | ||||||
|                 community) id=122 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesZ) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=123 ;; |  | ||||||
|                 community) id=124 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesPython) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=103 ;; |  | ||||||
|                 community) id=104 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|         packagesPerl) |  | ||||||
|             case $tree in |  | ||||||
|                 packages) id=102 ;; |  | ||||||
|                 community) id=125 ;; |  | ||||||
|             esac |  | ||||||
|         ;; |  | ||||||
|     esac |  | ||||||
|     echo $id |  | ||||||
| } |  | ||||||
|  |  | ||||||
| add_repo_to_team(){ |  | ||||||
|     local pkg="$1" org="$2" tree="$3" |  | ||||||
|     local id=$(load_team_id "$org" "$tree") |  | ||||||
|  |  | ||||||
|     msg2 "Adding package repo [%s] to team (%s)" "$pkg" "$tree" |  | ||||||
|  |  | ||||||
|     curl -X PUT "${GIT_URL}/api/v1/teams/$id/repos/$org/$pkg?access_token=${GIT_TOKEN}" \ |  | ||||||
|         -H  "accept: application/json" |  | ||||||
| } |  | ||||||
| @@ -1,90 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
| # |  | ||||||
| # 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. |  | ||||||
|  |  | ||||||
| subrepo_push(){ |  | ||||||
|     local pkg="$1" |  | ||||||
|     msg2 "Update (%s)" "$pkg" |  | ||||||
|     git subrepo push "$pkg" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| subrepo_config(){ |  | ||||||
|     local pkg="$1" org="$2" |  | ||||||
|     local gitname=$(get_compliant_name "$pkg") |  | ||||||
|     local url=gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git |  | ||||||
|     msg2 "Update .gitrepo (%s) [%s]" "$pkg" "$url" |  | ||||||
|     git subrepo config "$pkg" remote "$url" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| subrepo_clean(){ |  | ||||||
|     local pkg="$1" |  | ||||||
|     msg2 "Clean (%s)" "$pkg" |  | ||||||
|     git subrepo clean "$pkg" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| subrepo_pull(){ |  | ||||||
|     local pkg="$1" |  | ||||||
|     git subrepo pull "$pkg" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| subrepo_clone(){ |  | ||||||
|     local pkg="$1" org="$2" |  | ||||||
|     local gitname=$(get_compliant_name "$pkg") |  | ||||||
|     msg2 "Getting package repo [%s] from org (%s)" "$pkg" "$org/$gitname" |  | ||||||
|     git subrepo clone gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git "$pkg" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| mainrepo_pull(){ |  | ||||||
|     local tree="$1" |  | ||||||
|     msg2 "Check (%s)" "${tree}" |  | ||||||
|     git push origin master |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| mainrepo_push(){ |  | ||||||
|     local tree="$1" |  | ||||||
|     msg2 "Update (%s)" "${tree}" |  | ||||||
|     git push origin master |  | ||||||
| } |  | ||||||
|  |  | ||||||
| write_jenkinsfile(){ |  | ||||||
|     local pkg="$1" |  | ||||||
|     local jenkins=$pkg/Jenkinsfile |  | ||||||
|  |  | ||||||
|     echo "@Library('artix-ci') import org.artixlinux.RepoPackage" > $jenkins |  | ||||||
|     echo '' >> $jenkins |  | ||||||
|     echo 'PackagePipeline(new RepoPackage(this))' >> $jenkins |  | ||||||
|     echo '' >> $jenkins |  | ||||||
|  |  | ||||||
|     git add $jenkins |  | ||||||
| } |  | ||||||
|  |  | ||||||
| write_agentyaml(){ |  | ||||||
|     local pkg="$1" |  | ||||||
|     local agent=$pkg/.artixlinux/agent.yaml label='master' |  | ||||||
|     [[ -d $pkg/.artixlinux ]] || mkdir $pkg/.artixlinux |  | ||||||
|  |  | ||||||
|     echo '%YAML 1.2' > $agent |  | ||||||
|     echo '---' >> $agent |  | ||||||
|     echo '' >> $agent |  | ||||||
|     echo "label: $label" >> $agent |  | ||||||
|     echo '' >> $agent |  | ||||||
|  |  | ||||||
|     git add $agent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| commit_jenkins_files(){ |  | ||||||
|     local pkg="$1" |  | ||||||
|  |  | ||||||
|     write_jenkinsfile "$pkg" |  | ||||||
|     write_agentyaml "$pkg" |  | ||||||
|  |  | ||||||
|     git commit -m "add jenkinsfile & .artixlinux/agent.yaml" |  | ||||||
| } |  | ||||||
							
								
								
									
										17
									
								
								lib/util-pkg.sh.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								lib/util-pkg.sh.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | |||||||
|  | #!/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. | ||||||
|  |  | ||||||
|  | for pkglib in ${LIBDIR}/pkg/*.sh; do | ||||||
|  |     . $pkglib | ||||||
|  | done | ||||||
		Reference in New Issue
	
	Block a user