summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-11-04 06:12:14 +0000
committerV3n3RiX <venerix@redcorelinux.org>2017-11-04 06:12:14 +0000
commit8fbf0baee6a6b82876d43cef4abc34d021252d25 (patch)
tree23103fd1ff0aae03ab20229a035573c1df16a5fa
parent8d25c02e51386bb0f463349e85400df9e07d94a7 (diff)
add Makefilev1.1710
-rw-r--r--Makefile22
-rw-r--r--src/backend/c_jail.sh (renamed from src/backend/commands_jail.sh)0
-rw-r--r--src/backend/f_generic.sh (renamed from src/backend/functions_generic.sh)0
-rw-r--r--src/backend/f_help.sh80
-rw-r--r--src/backend/f_import.sh57
-rw-r--r--src/backend/f_makeiso.sh (renamed from src/backend/functions_makeiso.sh)0
-rw-r--r--src/backend/f_makepkg.sh (renamed from src/backend/functions_makepkg.sh)0
-rw-r--r--src/backend/f_modeswitch.sh (renamed from src/backend/functions_modeswitch.sh)0
-rwxr-xr-xsrc/backend/libvasile608
-rw-r--r--src/backend/libvasile.sh50
-rw-r--r--src/backend/v_jail.sh (renamed from src/backend/variables_jail.sh)0
-rwxr-xr-xsrc/frontend/cli/vasile.sh (renamed from src/frontend/cli/vasile)5
12 files changed, 161 insertions, 661 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..2a3461a
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,22 @@
+SUBDIRS =
+DESTDIR =
+UBINDIR ?= /usr/bin
+ULIBDIR ?= /usr/lib/vasile
+
+all:
+ for d in $(SUBDIRS); do $(MAKE) -C $$d; done
+
+clean:
+ for d in $(SUBDIRS); do $(MAKE) -C $$d clean; done
+
+install:
+ for d in $(SUBDIRS); do $(MAKE) -C $$d install; done
+
+ install -d $(DESTDIR)$(UBINDIR)
+ install -m 0755 src/frontend/cli/vasile.sh $(DESTDIR)$(UBINDIR)/
+ install -d $(DESTDIR)$(ULIBDIR)
+ install -m 0644 src/backend/*sh $(DESTDIR)$(ULIBDIR)/
+
+uninstall:
+ rm -rf $(DESTDIR)$(UBINDIR)/vasile.sh
+ rm -rf $(DESTDIR)$(ULIBDIR)
diff --git a/src/backend/commands_jail.sh b/src/backend/c_jail.sh
index fe5e82b..fe5e82b 100644
--- a/src/backend/commands_jail.sh
+++ b/src/backend/c_jail.sh
diff --git a/src/backend/functions_generic.sh b/src/backend/f_generic.sh
index d692c46..d692c46 100644
--- a/src/backend/functions_generic.sh
+++ b/src/backend/f_generic.sh
diff --git a/src/backend/f_help.sh b/src/backend/f_help.sh
new file mode 100644
index 0000000..f8cc605
--- /dev/null
+++ b/src/backend/f_help.sh
@@ -0,0 +1,80 @@
+#!/usr/bin/env bash
+
+export local colorstart="\e[1;49;34m"
+export local colorstop="\e[0m"
+
+showhelp () {
+
+echo -e "\
+"$colorstart"SYNOPSIS"$colorstop"
+ "$colorstart"vasile --option"$colorstop" ["$colorstart"arguments"$colorstop"]
+ "$colorstart"vasile --help"$colorstop"
+
+"$colorstart"DESCRIPTION"$colorstop"
+
+ Vasile is an acronym for ** Versatile Advanced Script for Iso and Latest Enchantments **
+
+"$colorstart"OPTIONS"$colorstop"
+ "$colorstart"--makepkg"$colorstop" ["$colorstart"package(s)"$colorstop"]
+ This option will allow you to build a package or multiple packages in an overlayfs mounted squashfs chroot jail.
+
+ It must be run in the folder where the squashfs chroot jail resides, or else it will fail to mount the squahfs chroot jail and build the package(s).
+
+ The squashfs chroot jail and the md5sum checksum file are hardcored into "$colorstart"libvasile"$colorstop", but you may want to change them to suit your needs.
+
+ You MUST provide package(s) to build as arguments, or else vasile will only mount the chroot jail
+
+ Examples :
+ "$colorstart"vasile --makepkg wine"$colorstop"
+ "$colorstart"vasile --makepkg wine playonlinux q4wine"$colorstop"
+
+ If the package(s) is/are already built, it will not build it/them again (unless newer version(s) is/are available), but install it/them into squahfs chroot jail
+
+ If the package(s) you want to build depends on any already built package(s) it will make use of it/them to satisfy the required dependencies.
+
+ "$colorstart"--makeiso"$colorstop"
+ This option will allow you to build a live iso image based on the squashfs chroot jail.
+
+ It must be run in the folder where the squashfs chroot jail resides, or else it will fail to rsync the contents of it and build the iso image.
+
+ It is not fully automatic, it will only rsync the contents of the squashfs chroot jail, chroot into it, and let you install packages you want into the iso image.
+ There are some predefined package sets available in "$colorstart"/etc/portage/sets"$colorstop". Adjust them to suit your needs.
+
+ It will ALLWAYS use package(s) built with "$colorstart"--makepkg"$colorstop" option. When you are happy with package selection, just exit the chroot environment and
+ the live filesystem will be compressed, live services will be autoenabled, live bootloader autoconfigured and in the end live iso image will be built. You will find
+ a list of predefined live services list hardcoded into "$colorstart"libvasile"$colorstop". Adjust it to suit your needs.
+
+ "$colorstart"--resetmode"$colorstop"
+ This option will allow you to reset the system state. It will remove whole portage tree, overlays and portage configuration files and reset the system profile. Usually
+ you will never want to call this option directly, unless you really really really know what are you doing. It is called automatically when switching to other states.
+
+ !!! WARNING !!! : Never never never leave the system in this state. You will no longer be able to install/remove/upgrade any packages untill you set the system profile,
+ get the portage tree, overlays and configure portage by hand. Or, you can always activate one of the three other supported system states.
+
+ "$colorstart"--binmode"$colorstop"
+ This option will allow you to change the system state to binmode. In this state portage will allways use only binary packages from the binhost. It will fetch a minimal
+ portage tree without any ebuilds in it, but only with portage profiles, metadata and eclass. It will also fetch overlay and portage configuration files, and will adjust
+ "$colorstart"make.conf"$colorstop" for binary only usage. This system state is for those who just meet with the power of Gentoo.
+
+ !!! WARNING !!! : Never never never modify or create any file in "$colorstart"/etc/portage/"$colorstop" in this state.
+
+ "$colorstart"--mixedmode"$colorstop"
+ This option will allow you to change the system state to mixedmode. In this state portage will prefer binary packages from the binhost over ebuilds from the portage tree.
+ It will fetch the full portage tree, the overlay and portage configuration files, and adjust "$colorstart"make.conf"$colorstop" for binary/ebuild usage. Usually you will find this system state
+ useful if you want to install a package not available in the binhost, you want to upgrade a package to a newer version from portage tree or if you wanna rebuild a package
+ with your own useflags.
+
+ !!! WARNING !!! : Never never never modify any file in "$colorstart"/etc/portage/"$colorstop" in this state. If you want to adjust useflags or keywords for a package, you can create a new file
+ e.g.: "$colorstart"100-my.package.use"$colorstop" in "$colorstart"/etc/portage/package.use/"$colorstop" or "$colorstart"100-my.package.keywords"$colorstop" in "$colorstart"/etc/portage/package.keywords/"$colorstop".
+
+ "$colorstart"--srcmode"$colorstop"
+ This option will allow you to change the system state to srcmode. In more clear terms, it will transform your Kogaion/Argent/Redcore system into pure Gentoo. Binary packages
+ from the binhost will be ignored, and you will only install packages building from portage tree using emerge. It will fetch the full portage tree, the overlay and portage
+ configuration files and adjust "$colorstart"make.conf"$colorstop" for ebuild only usage.
+
+ In this system state you can modify whatever you want in "$colorstart"/etc/portage/"$colorstop". You can adjust useflags, keywords, masks, build environment and rebuild the whole system to suit you.
+ You have the full power of Gentoo available only one command away!
+
+ !!! WARNING !!! : Only use this system state if you have a strong knowledge of Gentoo tools e.g.: "$colorstart"emerge, equery, layman, eix, qlist, useflags, keywords, masks"$colorstop". "
+exit 0
+}
diff --git a/src/backend/f_import.sh b/src/backend/f_import.sh
new file mode 100644
index 0000000..f8dbcf3
--- /dev/null
+++ b/src/backend/f_import.sh
@@ -0,0 +1,57 @@
+#!/usr/bin/env bash
+
+if [[ -f /lib/gentoo/functions.sh ]] ; then
+ source /lib/gentoo/functions.sh
+else
+ echo "Cannot import Gentoo functions, I will abort now!"
+ exit 1
+fi
+
+if [[ -f /usr/lib/vasile/v_jail.sh ]] ; then
+ source /usr/lib/vasile/v_jail.sh
+else
+ echo "Cannot import jail variables, I will abort now!"
+ exit 1
+fi
+
+if [[ -f /usr/lib/vasile/c_jail.sh ]] ; then
+ source /usr/lib/vasile/c_jail.sh
+else
+ echo "Cannot import jail commands, I will abort now!"
+ exit 1
+fi
+
+if [[ -f /usr/lib/vasile/f_generic.sh ]] ; then
+ source /usr/lib/vasile/f_generic.sh
+else
+ echo "Cannot import generic functions, I will abort now!"
+ exit 1
+fi
+
+if [[ -f /usr/lib/vasile/f_makepkg.sh ]] ; then
+ source /usr/lib/vasile/f_makepkg.sh
+else
+ echo "Cannot import makepkg functions, I will abort now!"
+ exit 1
+fi
+
+if [[ -f /usr/lib/vasile/f_makeiso.sh ]] ; then
+ source /usr/lib/vasile/f_makeiso.sh
+else
+ echo "Cannot import makeiso functions, I will abort now!"
+ exit 1
+fi
+
+if [[ -f /usr/lib/vasile/f_modeswitch.sh ]] ; then
+ source /usr/lib/vasile/f_modeswitch.sh
+else
+ echo "Cannot import modeswitch functions, I will abort now!"
+ exit 1
+fi
+
+if [[ -f /usr/lib/vasile/f_help.sh ]] ; then
+ source /usr/lib/vasile/f_help.sh
+else
+ echo "Cannot import help functions, I will abort now!"
+ exit 1
+fi
diff --git a/src/backend/functions_makeiso.sh b/src/backend/f_makeiso.sh
index be5a550..be5a550 100644
--- a/src/backend/functions_makeiso.sh
+++ b/src/backend/f_makeiso.sh
diff --git a/src/backend/functions_makepkg.sh b/src/backend/f_makepkg.sh
index 1c16d45..1c16d45 100644
--- a/src/backend/functions_makepkg.sh
+++ b/src/backend/f_makepkg.sh
diff --git a/src/backend/functions_modeswitch.sh b/src/backend/f_modeswitch.sh
index 0f66964..0f66964 100644
--- a/src/backend/functions_modeswitch.sh
+++ b/src/backend/f_modeswitch.sh
diff --git a/src/backend/libvasile b/src/backend/libvasile
deleted file mode 100755
index e1678ad..0000000
--- a/src/backend/libvasile
+++ /dev/null
@@ -1,608 +0,0 @@
-#!/usr/bin/env bash
-
-# import gentoo functions
-
-source /lib/gentoo/functions.sh
-
-# generic variables
-
-export local releasename="redcore"
-export local releasetarget="desktop"
-export local releaseversion="1"
-
-# kernel version && name from inside core squashfs (we need to know this, to generate a matching kernel/live initramfs)
-
-export local kernelver="4.9.53-"$releasename"-lts"
-
-# core squahfs name and md5 checksum file
-
-export local chrootx64=""$releasename"_"$releaseversion"_core_x64.squashfs"
-export local chrootx64md5=""$chrootx64".md5"
-
-# overlay mount variables
-
-export local rodir="rodir"
-export local rwdir="rwdir"
-export local workdir="workdir" # only needed for overlayfs on kernel greather than 3.18
-export local overlaydir="overlaydir"
-
-# build variables and commands to run inside core squashfs when building packages
-
-export local chrootuser="root"
-export local chroottarget="${@:2}"
-export local chrootbuildtarget="emerge -kav "$chroottarget""
-export local chrootsrcmode="vasile --srcmode"
-
-# iso variables and commands to run inside core squahfs when making iso image
-
-export local isouser="root"
-export local isomainarch="x86_64"
-export local isobinmode="vasile --binmode"
-export local isodkms="vasile --dkms"
-export local isokernelname="kernel-genkernel-"$isomainarch"-"$kernelver""
-export local isoramfsname="initramfs-genkernel-"$isomainarch"-"$kernelver""
-export local isoramfscmd="dracut -N -a dmsquash-live -a pollcdrom --force --kver="$kernelver" /boot/"$isoramfsname""
-export local isochainloadcmd="grub2-mkimage -d /usr/lib64/grub/i386-pc -o core.img -O i386-pc biosdisk part_msdos fat -p /boot/grub"
-export local isoefix64cmd="grub2-mkimage -d /usr/lib64/grub/x86_64-efi -o bootx64.efi -O x86_64-efi ext2 fat udf btrfs ntfs reiserfs xfs hfsplus lvm ata part_msdos part_gpt part_apple bsd search_fs_uuid normal chain iso9660 configfile help loadenv reboot cat search memdisk tar boot linux chain -p /boot/grub"
-export local isoefiia32cmd="grub2-mkimage -d /usr/lib64/grub/i386-efi -o bootia32.efi -O i386-efi ext2 fat udf btrfs ntfs reiserfs xfs hfsplus lvm ata part_msdos part_gpt part_apple bsd search_fs_uuid normal chain iso9660 configfile help loadenv reboot cat search memdisk tar boot linux chain -p /boot/grub"
-
-# iso image layout variables
-
-export local bootloaderfetchpath="/tmp/bootcore"
-export local bootloaderconfigs=""$bootloaderfetchpath"/cdroot/boot"
-export local isorootdir=""$releasename"-"$releasetarget"-"$releaseversion"-"$isomainarch""
-export local isogrubdir=""$isorootdir"/boot/grub"
-export local isoefidir=""$isorootdir"/efi/boot"
-export local isorsynctarget=""$isorootdir"/rootfs"
-export local isorsyncsource="/tmp/"$isorootdir""
-export local isocdrootdir=""$isorootdir"/CDroot"
-export local isorealfsdir=""$isocdrootdir"/LiveOS"
-export local isosquashfsdir=""$isorootdir"/LiveOS"
-
-# modechange variables
-
-export local gentooportdir="/usr/ports/gentoo"
-export local redcoreportdir="/usr/ports/redcore"
-export local portconfdir="/etc/portage"
-export local portgitdir="/opt/redcore-build/conf/intel/portage"
-export local portclonedir="/opt/redcore-build"
-
-# generic functions (used for both build && iso creation)
-
-kernelconfig () {
- # check if the host kernel has needed modules for vasile to work properly...fail to start if it doesn't
- if [[ $(zgrep 'CONFIG_OVERLAY_FS=' /proc/config.gz) && $(zgrep "CONFIG_SQUASHFS=" /proc/config.gz) && $(zgrep "CONFIG_BLK_DEV_LOOP=" /proc/config.gz) ]] ; then
- einfo "Kernel configuration seems OK, moving on"
- sleep 1
- else
- eerror "Vasile needs OVERLAYFS && SQUASHFS && LOOP DEVICES to work"
- eerror "Please rebuild the kernel with those activated to use it"
- exit 1
- fi
-}
-
-checkroot () {
- # check for root privileges, needed for mount && chroot...fail to start if not root
- if [[ "$(whoami)" != root ]] ; then
- eerror "You're not root?...No cookies for you, go away !!!"
- exit 1
- fi
-}
-
-checkiflive () {
- # check if running in live mode...fail to start if so
- if [[ -L /dev/mapper/live-base ]] ; then
- eerror "Running in Live mode is unsupported"
- exit 1
- fi
-}
-
-chrootchecksum () {
- # check if core squashfs and md5 checksum file exists, verify core squashfs integrity against md5 checksum file
- # fail to start if core squashfs or md5 checksum file doesn't exist, or if core squashfs fails md5 verification
- while : true ; do
- if [[ -f "$chrootx64" && -f "$chrootx64md5" ]] ; then
- einfo "Squashed chroot && Checksum file found"
- if [[ "$(md5sum -c "$chrootx64md5")" ]] ; then
- einfo "Squashed chroot checksum passed"
- sleep 1
- break
- else
- eerror "Squashed chroot checksum failed"
- exit 1
- fi
- else
- eerror "Squashed chroot || Checksum file not found"
- exit 1
- fi
- done
-}
-
-dkmsmod () {
- checkroot
- # build and install any 3rd party kernel modules using DKMS
- if [[ -x $(which dkms) ]] ; then
- for i in $(dkms status | cut -d " " -f1,2 | sed -e 's/,//g' | sed -e 's/ /\//g' | sed -e 's/://g') ; do
- dkms install $i
- done
- fi
-}
-
-# build functions
-
-chrootprepare () {
- # always start from fresh overlay mount path, if previous exists, remove it and start over
- while : true ; do
- if [[ ! -d "$rodir" && ! -d "$rwdir" && ! -d "$workdir" && ! -d "$overlaydir" ]] ; then
- for i in "$rodir" "$rwdir" "$workdir" "$overlaydir" ; do
- mkdir "$i"
- done
- chrootstart
- break
- elif [[ -d "$rodir" && -d "$rwdir" && -d "$workdir" && -d "$overlaydir" ]] ; then
- chrootstop
- for i in "$rodir" "$rwdir" "$workdir" "$overlaydir" ; do
- rm -rf "$i"
- done
- continue
- fi
- done
-
-}
-
-chrootstop () {
- # umount core squashfs overlay mount
- umount -l "$overlaydir"/proc > /dev/null 2>&1
- umount -l "$overlaydir"/sys > /dev/null 2>&1
- umount -l "$overlaydir"/dev/pts > /dev/null 2>&1
- umount -l "$overlaydir"/dev/shm > /dev/null 2>&1
- umount -l "$overlaydir"/dev > /dev/null 2>&1
- umount -l "$overlaydir"/tmp > /dev/null 2>&1
- umount -l "$overlaydir"/var/cache/packages > /dev/null 2>&1
- umount -l "$overlaydir"/var/cache/distfiles > /dev/null 2>&1
- umount -l "$overlaydir" > /dev/null 2>&1
- umount -l "$rodir" > /dev/null 2>&1
-}
-
-chrootstart () {
- # mount core squashfs in overlay
- mount -t squashfs "$chrootx64" "$rodir"
- mount -t overlay -o lowerdir="$rodir",upperdir="$rwdir",workdir="$workdir" overlay "$overlaydir"
- mount -o bind packages "$overlaydir"/var/cache/packages
- mount -o bind distfiles "$overlaydir"/var/cache/distfiles
- mount -t proc proc "$overlaydir"/proc
- mount -t sysfs sysfs "$overlaydir"/sys
- mount -t devtmpfs -o relatime,size=3055348k,nr_inodes=763837,mode=755 none "$overlaydir"/dev
- mount -t devpts -o nosuid,noexec,relatime,gid=5,mode=620 none "$overlaydir"/dev/pts
- mount -t tmpfs -o nosuid,nodev none "$overlaydir"/dev/shm
- mount -t tmpfs -o nosuid,nodev,noexec none "$overlaydir"/tmp
-}
-
-chrootdevtree () {
- # inject portage tree, redcore overlay && redcore buildsystem (portage config)
- chroot "$overlaydir" su - "$chrootuser" -c "$chrootsrcmode"
-}
-
-chrootbuild () {
- # build and install package(s) given as argument...if is already built, install it
- einfo "All systems are go!"
- sleep 1
- chroot "$overlaydir" su - "$chrootuser" -c "$chrootbuildtarget"
-}
-
-chrootx64 () {
- # land into a chroot env into overlay mounted core squashfs and make build adjustments, if needed
- einfo "DROPPING YOU TO A ROOT SHELL INTO BUILD ENVIRONMENT"
- einfo "FIX FAILURES && ADJUST PORTAGE CONFIGURATION FILES"
- einfo "TEST USEFLAGS && KEYWORDS && MASKS IF REQUIRED"
- einfo "IN THE END : DO NOT FORGET TO COMMIT YOUR CHANGES"
- chroot "$overlaydir" su - "$chrootuser"
-}
-
-makepkg () {
- checkroot
- chrootchecksum
- chrootprepare
- chrootdevtree
- chrootbuild
- chrootx64
- chrootstop
-}
-
-# iso functions
-
-isostart () {
- # mount iso image core
- mount -o bind packages "$isorsynctarget"/var/cache/packages
- mount -t proc proc "$isorsynctarget"/proc
- mount -t sysfs sysfs "$isorsynctarget"/sys
- mount -t devtmpfs -o relatime,size=3055348k,nr_inodes=763837,mode=755 none "$isorsynctarget"/dev
- mount -t devpts -o nosuid,noexec,relatime,gid=5,mode=620 none "$isorsynctarget"/dev/pts
- mount -t tmpfs -o nosuid,nodev none "$isorsynctarget"/dev/shm
- mount -t tmpfs -o nosuid,nodev,noexec none "$isorsynctarget"/tmp
-}
-
-isostop () {
- # umount iso image core
- umount -l "$isorsynctarget"/proc > /dev/null 2>&1
- umount -l "$isorsynctarget"/sys > /dev/null 2>&1
- umount -l "$isorsynctarget"/dev/pts > /dev/null 2>&1
- umount -l "$isorsynctarget"/dev/shm > /dev/null 2>&1
- umount -l "$isorsynctarget"/dev > /dev/null 2>&1
- umount -l "$isorsynctarget"/tmp > /dev/null 2>&1
- umount -l "$isorsynctarget"/var/cache/packages > /dev/null 2>&1
-}
-
-isousertree () {
- # inject portage tree, redcore overlay && redcore buildsystem (portage config)
- chroot "$isorsynctarget" su - "$isouser" -c "$isobinmode"
-}
-
-isoramfs () {
- # generate iso initramfs with required modules for live boot
- chroot "$isorsynctarget" su - "$isouser" -c "$isoramfscmd"
-}
-
-isoefiimg () {
- # generate efi bootloader
- chroot "$isorsynctarget" su - "$isouser" -c "$isoefix64cmd"
- chroot "$isorsynctarget" su - "$isouser" -c "$isoefiia32cmd"
-}
-
-isochainloader () {
- # generate syslinux -> grub chainloader for unetbootin compatibility
- chroot "$isorsynctarget" su - "$isouser" -c "$isochainloadcmd"
-}
-
-isoservices () {
- # enable live user setup service (runlevel : boot)
- chroot "$isorsynctarget" su - "$isouser" -c "rc-update add redcorelive boot"
-
- # enable live iso system services (runlevel : default)
- for service in acpid dbus NetworkManager avahi-daemon syslog-ng cupsd cronie cgmanager consolekit alsasound bluetooth ntpd openrc-settingsd xdm virtualbox-guest-additions ; do
- chroot "$isorsynctarget" su - "$isouser" -c "rc-update add "$service" default"
- done
-}
-
-isomodules () {
- # build and install any 3rd party kernel modules using DKMS (virtualbox-guest in our case)
- chroot "$isorsynctarget" su - "$isouser" -c "$isodkms"
-}
-
-isochroot () {
- # land into a chroot env into iso image core and make adjustments, if needed
- einfo "DROPPING YOU TO A ROOT SHELL INTO ISO ENVIRONMENT"
- einfo "INSTALL APPS & TARGETS & DES YOU WANT INSIDE ISO"
- einfo "EXIT WHEN YOU'RE DONE AND I'LL CREATE THE IMAGE"
- chroot "$isorsynctarget" su - "$isouser"
-}
-
-prepareiso () {
- # prepare iso image layout
- mkdir -p "$isorsynctarget"
- dd if=/dev/zero of=""$isorsynctarget".img" bs=1M count=10240 && sync
- mkfs.ext2 -F ""$isorsynctarget".img"
- mkdir -p "$isorsyncsource"
- mkdir -p "$isocdrootdir"
- mkdir -p "$isosquashfsdir"
- mkdir -p "$isorealfsdir"
- mkdir -p "$isogrubdir"
- mkdir -p "$isoefidir"
- # mount core squashfs and rsync it's contents into core iso image
- mount -t squashfs "$chrootx64" "$isorsyncsource"
- mount -t ext4 ""$isorsynctarget".img" "$isorsynctarget"
- rsync -aHAXr --progress "$isorsyncsource/" "$isorsynctarget/"
- # copy the kernel for live boot
- cp -avx ""$isorsynctarget"/boot/"$isokernelname"" ""$isorootdir"/boot/vmlinuz"
- # generate and copy initramfs for live boot
- isostart
- isoramfs
- isostop
- mv ""$isorsynctarget"/boot/"$isoramfsname"" ""$isorootdir"/boot/initrd"
- # generate and copy efi bootloader for live boot
- isostart
- isoefiimg
- isostop
- mv ""$isorsynctarget"/root/bootx64.efi" "$isoefidir"
- chmod 755 ""$isoefidir"/bootx64.efi"
- mv ""$isorsynctarget"/root/bootia32.efi" "$isoefidir"
- chmod 755 ""$isoefidir"/bootia32.efi"
- # generate and copy syslinux -> grub chainloader for unetbootin compatibility
- isostart
- isochainloader
- isostop
- mv ""$isorsynctarget"/root/core.img" "$isogrubdir"
- cp -avx ""$isorsynctarget"/usr/lib64/grub/i386-pc/lnxboot.img" "$isogrubdir"
- # land into a chroot env into live environment to make adjustments, if needed
- isostart
- isousertree
- isochroot
- isostop
- # build and install any 3rd party kernel modules using DKMS (virtualbox-guest in our case)
- isostart
- isomodules
- isostop
- # enable live iso image system services
- isostart
- isoservices
- isostop
- # umount "real" live filesystem
- umount -l "$isorsynctarget" > /dev/null 2>&1
- # fix any possible "real" live filesystem corruptions
- # e2fsck -fy ""$isorsynctarget".img"
- # move "real" live filesystem into right place
- mv ""$isorsynctarget".img" "$isorealfsdir"
- # compress "fake" live filesystem
- mksquashfs "$isocdrootdir" ""$isorootdir"/squashfs.img" -b 1048576 -comp xz -Xdict-size 100%
- mv ""$isorootdir/"squashfs.img" "$isosquashfsdir"
- # dracut requires "real" live filesystem to be placed
- # into a "fake" squashfs live filesystem as bellow :
- # /cdroot/LiveOS/squashfs.img/LiveOS/rootfs.img
- # squashfs.img is the "fake" squashfs live filesystem
- # rootfs.img is the "real" live filesystem
-}
-
-bootloaderiso () {
- # get grub2 live boot configs and place them into right place
- git clone https://gitlab.com/"$releasename"/boot-core.git "$bootloaderfetchpath"
- cp -avx "$bootloaderconfigs" "$isorootdir"
-}
-
-cleanupiso () {
- # cleanup temporary files used during iso image layout preparation
- umount "$isorsyncsource"
- rm -rf "$isorsynctarget"
- rm -rf "$isorsyncsource"
- rm -rf "$isocdrootdir"
- rm -rf "$bootloaderfetchpath"
-}
-
-makeisoimg () {
- # create iso image
- grub2-mkrescue -o ""$releasename"-"$releasetarget"-"$releaseversion"-"$isomainarch".iso" "$isorootdir"
-}
-
-makeiso () {
- checkroot
- chrootchecksum
- prepareiso
- bootloaderiso
- cleanupiso
- makeisoimg
-}
-
-# modechange functions
-
-removeportagetree() {
- # remove portage tree, but leave packages and distfiles directories intact
- einfo "Removing gentoo portage tree"
- if [ -d ""$gentooportdir"/.git" ] ; then
- find "$gentooportdir" -mindepth 1 -exec rm -rf {} \; > /dev/null 2>&1
- fi
-}
-
-removeoverlays() {
- # remove redcore overlay
- einfo "Removing "$releasename"-"$releasetarget" overlay"
- if [ -d ""$redcoreportdir"/.git" ] ; then
- find "$redcoreportdir" -mindepth 1 -exec rm -rf {} \; > /dev/null 2>&1
- fi
-}
-
-removeportageconfig() {
- # remove redcore buildsystem (portage configuration)
- einfo "Removing "$releasename"-"$releasetarget" buildsystem"
- rm ""$portconfdir"/make.conf" > /dev/null 2>&1
- rm ""$portconfdir"/make.profile" > /dev/null 2>&1
- rm "$portconfdir" > /dev/null 2>&1
- rm -rf "$portclonedir" > /dev/null 2>&1
-}
-
-resetmode () {
- checkroot
- removeportagetree
- removeoverlays
- removeportageconfig
-}
-
-fetchportageconfig() {
- # fetch redcore buildsystem (portage configuration)
- pushd /opt > /dev/null 2>&1
- einfo "Injecting "$releasename"-"$releasetarget" buildsystem"
- git clone https://gitlab.com/redcore/redcore-build.git
- popd > /dev/null 2>&1
-}
-
-fetchfullportagetree() {
- # fetch full portage tree
- if [ ! -d ""$gentooportdir"/.git" ] ; then
- einfo "Injecting mixedmode/srcmode (full) gentoo portage tree"
- cd "$gentooportdir" && git init > /dev/null 2>&1
- git remote add origin https://gitlab.com/redcore/portage.git
- git pull --depth=1 origin master
- git branch -u origin/master master
- rm -rf ""$gentooportdir"/profiles/updates"
- fi
-}
-
-fetchminimalportagetree() {
- # fetch minimal portage tree
- # in binmode we don't want the whole tree of gentoo ebuilds
- # but we need portage profiles portage metadata && portage eclasses
- # so make a sparse-checkout, to fetch only what we need
- if [ ! -d ""$gentooportdir"/.git" ] ; then
- einfo "Injecting binmode (minimal) gentoo portage tree"
- cd "$gentooportdir" && git init > /dev/null 2>&1
- git remote add origin https://gitlab.com/redcore/portage.git
- git config core.sparsecheckout true
- echo "profiles/*" >> .git/info/sparse-checkout
- echo "metadata/*" >> .git/info/sparse-checkout
- echo "eclass/*" >> .git/info/sparse-checkout
- echo ".gitignore" >> .git/info/sparse-checkout
- git pull --depth=1 origin master
- git branch -u origin/master master
- rm -rf ""$gentooportdir"/profiles/updates"
- fi
-}
-
-fetchfulloverlays () {
- # fetch full redcore overlay
- if [ ! -d ""$redcoreportdir"/.git" ] ; then
- einfo "Injecting "$releasename"-"$releasetarget" overlay"
- cd "$redcoreportdir" && git init > /dev/null 2>&1
- git remote add origin https://gitlab.com/redcore/redcore-desktop.git
- git pull --depth=1 origin master
- git branch -u origin/master master
- fi
-}
-
-fetchminimaloverlays () {
- # fetch minimal redcore overlay
- if [ ! -d ""$redcoreportdir"/.git" ] ; then
- einfo "Injecting binmode (minimal) "$releasename"-"$releasetarget" overlay"
- cd "$redcoreportdir" && git init > /dev/null 2>&1
- git remote add origin https://gitlab.com/redcore/redcore-desktop.git
- git config core.sparsecheckout true
- echo "profiles/*" >> .git/info/sparse-checkout
- echo "metadata/*" >> .git/info/sparse-checkout
- echo "eclass/*" >> .git/info/sparse-checkout
- git pull --depth=1 origin master
- git branch -u origin/master master
- fi
-}
-
-setbinmodeconfig() {
- # set make.conf to binmode, portage will always use binary packages from binhost
- ln -sf "$portgitdir" "$portconfdir"
- ln -sf "$portconfdir"/make.conf.amd64-binmode "$portconfdir"/make.conf
- eselect profile set 1
- env-update
- . /etc/profile
-}
-
-setmixedmodeconfig() {
- # set make.conf to mixedmode, portage will prefer binary packages over ebuilds
- # but will use ebuilds if they are newer than binary packages from binhost
- # or if the binary package is not available in binhost
- ln -sf "$portgitdir" "$portconfdir"
- ln -sf "$portconfdir"/make.conf.amd64-mixedmode "$portconfdir"/make.conf
- eselect profile set 1
- env-update
- . /etc/profile
-}
-
-setsrcmodeconfig () {
- # set make.conf to srcmode, portage will always use ebuilds
- ln -sf "$portgitdir" "$portconfdir"
- ln -sf "$portconfdir"/make.conf.amd64-srcmode "$portconfdir"/make.conf
- eselect profile set 1
- env-update
- . /etc/profile
-}
-
-binmode() {
- resetmode
- fetchminimalportagetree
- fetchminimaloverlays
- fetchportageconfig
- setbinmodeconfig
-}
-
-mixedmode() {
- resetmode
- fetchfullportagetree
- fetchfulloverlays
- fetchportageconfig
- setmixedmodeconfig
-}
-
-srcmode() {
- resetmode
- fetchfullportagetree
- fetchfulloverlays
- fetchportageconfig
- setsrcmodeconfig
-}
-
-# help menu color variables
-
-export local colorstart="\e[1;49;34m"
-export local colorstop="\e[0m"
-
-# help menu function
-
-showhelp () {
-
-echo -e "\
-"$colorstart"SYNOPSIS"$colorstop"
- "$colorstart"vasile --option"$colorstop" ["$colorstart"arguments"$colorstop"]
- "$colorstart"vasile --help"$colorstop"
-
-"$colorstart"DESCRIPTION"$colorstop"
-
- Vasile is an acronym for ** Versatile Advanced Script for Iso and Latest Enchantments **
-
-"$colorstart"OPTIONS"$colorstop"
- "$colorstart"--makepkg"$colorstop" ["$colorstart"package(s)"$colorstop"]
- This option will allow you to build a package or multiple packages in an overlayfs mounted squashfs chroot jail.
-
- It must be run in the folder where the squashfs chroot jail resides, or else it will fail to mount the squahfs chroot jail and build the package(s).
-
- The squashfs chroot jail and the md5sum checksum file are hardcored into "$colorstart"libvasile"$colorstop", but you may want to change them to suit your needs.
-
- You MUST provide package(s) to build as arguments, or else vasile will only mount the chroot jail
-
- Examples :
- "$colorstart"vasile --makepkg wine"$colorstop"
- "$colorstart"vasile --makepkg wine playonlinux q4wine"$colorstop"
-
- If the package(s) is/are already built, it will not build it/them again (unless newer version(s) is/are available), but install it/them into squahfs chroot jail
-
- If the package(s) you want to build depends on any already built package(s) it will make use of it/them to satisfy the required dependencies.
-
- "$colorstart"--makeiso"$colorstop"
- This option will allow you to build a live iso image based on the squashfs chroot jail.
-
- It must be run in the folder where the squashfs chroot jail resides, or else it will fail to rsync the contents of it and build the iso image.
-
- It is not fully automatic, it will only rsync the contents of the squashfs chroot jail, chroot into it, and let you install packages you want into the iso image.
- There are some predefined package sets available in "$colorstart"/etc/portage/sets"$colorstop". Adjust them to suit your needs.
-
- It will ALLWAYS use package(s) built with "$colorstart"--makepkg"$colorstop" option. When you are happy with package selection, just exit the chroot environment and
- the live filesystem will be compressed, live services will be autoenabled, live bootloader autoconfigured and in the end live iso image will be built. You will find
- a list of predefined live services list hardcoded into "$colorstart"libvasile"$colorstop". Adjust it to suit your needs.
-
- "$colorstart"--resetmode"$colorstop"
- This option will allow you to reset the system state. It will remove whole portage tree, overlays and portage configuration files and reset the system profile. Usually
- you will never want to call this option directly, unless you really really really know what are you doing. It is called automatically when switching to other states.
-
- !!! WARNING !!! : Never never never leave the system in this state. You will no longer be able to install/remove/upgrade any packages untill you set the system profile,
- get the portage tree, overlays and configure portage by hand. Or, you can always activate one of the three other supported system states.
-
- "$colorstart"--binmode"$colorstop"
- This option will allow you to change the system state to binmode. In this state portage will allways use only binary packages from the binhost. It will fetch a minimal
- portage tree without any ebuilds in it, but only with portage profiles, metadata and eclass. It will also fetch overlay and portage configuration files, and will adjust
- "$colorstart"make.conf"$colorstop" for binary only usage. This system state is for those who just meet with the power of Gentoo.
-
- !!! WARNING !!! : Never never never modify or create any file in "$colorstart"/etc/portage/"$colorstop" in this state.
-
- "$colorstart"--mixedmode"$colorstop"
- This option will allow you to change the system state to mixedmode. In this state portage will prefer binary packages from the binhost over ebuilds from the portage tree.
- It will fetch the full portage tree, the overlay and portage configuration files, and adjust "$colorstart"make.conf"$colorstop" for binary/ebuild usage. Usually you will find this system state
- useful if you want to install a package not available in the binhost, you want to upgrade a package to a newer version from portage tree or if you wanna rebuild a package
- with your own useflags.
-
- !!! WARNING !!! : Never never never modify any file in "$colorstart"/etc/portage/"$colorstop" in this state. If you want to adjust useflags or keywords for a package, you can create a new file
- e.g.: "$colorstart"100-my.package.use"$colorstop" in "$colorstart"/etc/portage/package.use/"$colorstop" or "$colorstart"100-my.package.keywords"$colorstop" in "$colorstart"/etc/portage/package.keywords/"$colorstop".
-
- "$colorstart"--srcmode"$colorstop"
- This option will allow you to change the system state to srcmode. In more clear terms, it will transform your Kogaion/Argent/Redcore system into pure Gentoo. Binary packages
- from the binhost will be ignored, and you will only install packages building from portage tree using emerge. It will fetch the full portage tree, the overlay and portage
- configuration files and adjust "$colorstart"make.conf"$colorstop" for ebuild only usage.
-
- In this system state you can modify whatever you want in "$colorstart"/etc/portage/"$colorstop". You can adjust useflags, keywords, masks, build environment and rebuild the whole system to suit you.
- You have the full power of Gentoo available only one command away!
-
- !!! WARNING !!! : Only use this system state if you have a strong knowledge of Gentoo tools e.g.: "$colorstart"emerge, equery, layman, eix, qlist, useflags, keywords, masks"$colorstop". "
-exit 0
-}
diff --git a/src/backend/libvasile.sh b/src/backend/libvasile.sh
deleted file mode 100644
index 506ee5e..0000000
--- a/src/backend/libvasile.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env bash
-
-if [[ -f /lib/gentoo/functions.sh ]] ; then
- source /lib/gentoo/functions.sh
-else
- echo "Cannot import Gentoo functions, I will abort now!"
- exit 1
-fi
-
-if [[ -f /usr/lib/vasile/variables_jail.sh ]] ; then
- source /usr/lib/vasile/variables_jail.sh
-else
- echo "Cannot import jail variables, I will abort now!"
- exit 1
-fi
-
-if [[ -f /usr/lib/vasile/commands_jail.sh ]] ; then
- source /usr/lib/vasile/commands_jail.sh
-else
- echo "Cannot import jail commands, I will abort now!"
- exit 1
-fi
-
-if [[ -f /usr/lib/vasile/functions_generic.sh ]] ; then
- source /usr/lib/vasile/functions_generic.sh
-else
- echo "Cannot import generic functions, I will abort now!"
- exit 1
-fi
-
-if [[ -f /usr/lib/vasile/functions_makepkg.sh ]] ; then
- source /usr/lib/vasile/functions_makepkg.sh
-else
- echo "Cannot import makepkg functions, I will abort now!"
- exit 1
-fi
-
-if [[ -f /usr/lib/vasile/functions_makeiso.sh ]] ; then
- source /usr/lib/vasile/functions_makeiso.sh
-else
- echo "Cannot import makeiso functions, I will abort now!"
- exit 1
-fi
-
-if [[ -f /usr/lib/vasile/functions_modeswitch.sh ]] ; then
- source /usr/lib/vasile/functions_modeswitch.sh
-else
- echo "Cannot import modeswitch functions, I will abort now!"
- exit 1
-fi
diff --git a/src/backend/variables_jail.sh b/src/backend/v_jail.sh
index 4a08a26..4a08a26 100644
--- a/src/backend/variables_jail.sh
+++ b/src/backend/v_jail.sh
diff --git a/src/frontend/cli/vasile b/src/frontend/cli/vasile.sh
index d64b617..aeb27b3 100755
--- a/src/frontend/cli/vasile
+++ b/src/frontend/cli/vasile.sh
@@ -6,14 +6,13 @@
# Import our variables and functions
-source /usr/lib/vasile/libvasile
+source /usr/lib/vasile/f_import.sh
# Vasile need root privileges and a proper kernel to run
# Also, running it in live mode is a really bad idea
checkiflive
-kernelconfig
-
+checkkerncfg
case $1 in
--makepkg)