kimberly-build/installation-scripts/30-build-the-iso-the-first-time.sh
2022-04-06 07:37:51 +02:00

309 lines
10 KiB
Bash
Executable file

#!/bin/bash
#set -e
##################################################################################################################
# Author : Erik Dubois
# Website : https://www.erikdubois.online
# Website : https://www.arcolinux.info
# Website : https://www.arcolinux.com
# Website : https://www.arcolinuxd.com
# Website : https://www.arcolinuxb.com
# Website : https://www.arcolinuxiso.com
# Website : https://www.arcolinuxforum.com
# Website : https://www.alci.online
##################################################################################################################
#
# DO NOT JUST RUN THIS. EXAMINE AND JUDGE. RUN AT YOUR OWN RISK.
#
##################################################################################################################
echo
echo "################################################################## "
tput setaf 2
echo "Phase 1 : "
echo "- Setting General parameters"
tput sgr0
echo "################################################################## "
echo
#Let us set the desktop"
#First letter of desktop is small letter
#desktop="xfce"
#lightdmDesktop="xfce"
#arcolinuxVersion='v21.03.1'
#isoLabel='arcolinux-next-'$arcolinuxVersion'-x86_64.iso'
# setting of the general parameters
archisoRequiredVersion="archiso 62.1-1"
buildFolder=$HOME"/alci-build"
outFolder=$HOME"/Alci-Iso-Out"
archisoVersion=$(sudo pacman -Q archiso)
echo "################################################################## "
#echo "Building the desktop : "$desktop
#echo "Building version : "$arcolinuxVersion
#echo "Iso label : "$isoLabel
echo "Do you have the right archiso version? : "$archisoVersion
echo "What is the required archiso version? : "$archisoRequiredVersion
echo "Build folder : "$buildFolder
echo "Out folder : "$outFolder
echo "################################################################## "
if [ "$archisoVersion" == "$archisoRequiredVersion" ]; then
tput setaf 2
echo "##################################################################"
echo "Archiso has the correct version. Continuing ..."
echo "##################################################################"
tput sgr0
else
tput setaf 1
echo "###################################################################################################"
echo "You need to install the correct version of Archiso"
echo "Use 'sudo downgrade archiso' to do that"
echo "or update your system"
echo "If a new archiso package comes in and you want to test if you can still build"
echo "the iso then change the version in line 37."
echo "###################################################################################################"
tput sgr0
fi
echo
echo "################################################################## "
tput setaf 2
echo "Phase 2 :"
echo "- Checking if archiso is installed"
echo "- Saving current archiso version to archiso.md"
echo "- Making mkarchiso verbose"
tput sgr0
echo "################################################################## "
echo
package="archiso"
#----------------------------------------------------------------------------------
#checking if application is already installed or else install with aur helpers
if pacman -Qi $package &> /dev/null; then
echo "Archiso is already installed"
else
#checking which helper is installed
if pacman -Qi yay &> /dev/null; then
echo "################################################################"
echo "######### Installing with yay"
echo "################################################################"
yay -S --noconfirm $package
elif pacman -Qi trizen &> /dev/null; then
echo "################################################################"
echo "######### Installing with trizen"
echo "################################################################"
trizen -S --noconfirm --needed --noedit $package
fi
# Just checking if installation was successful
if pacman -Qi $package &> /dev/null; then
echo "################################################################"
echo "######### "$package" has been installed"
echo "################################################################"
else
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
echo "!!!!!!!!! "$package" has NOT been installed"
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
exit 1
fi
fi
echo
echo "Saving current archiso version to archiso.md"
sudo sed -i "s/\(^archiso-version=\).*/\1$archisoVersion/" ../archiso.md
echo
echo "Making mkarchiso verbose"
sudo sed -i 's/quiet="y"/quiet="n"/g' /usr/bin/mkarchiso
echo
echo "################################################################## "
tput setaf 2
echo "Phase 3 :"
echo "- Deleting the build folder if one exists"
echo "- Copying the Archiso folder to build folder"
tput sgr0
echo "################################################################## "
echo
echo "Deleting the build folder if one exists - takes some time"
[ -d $buildFolder ] && sudo rm -rf $buildFolder
echo
echo "Copying the Archiso folder to build work"
echo
mkdir $buildFolder
cp -r ../archiso $buildFolder/archiso
# echo
# echo "################################################################## "
# tput setaf 2
# echo "Phase 4 :"
# echo "- Deleting any files in /etc/skel"
# echo "- Getting the last version of bashrc in /etc/skel"
# echo "- Removing the old packages.x86_64 file from build folder"
# echo "- Copying the new packages.x86_64 file to the build folder"
# echo "- Changing group for polkit folder"
# tput sgr0
# echo "################################################################## "
# echo
# echo "Deleting any files in /etc/skel"
# rm -rf $buildFolder/archiso/airootfs/etc/skel/.* 2> /dev/null
# echo
# echo "Getting the last version of bashrc in /etc/skel"
# echo
# wget https://raw.githubusercontent.com/arcolinux/arcolinux-root/master/etc/skel/.bashrc-latest -O $buildFolder/archiso/airootfs/etc/skel/.bashrc
# echo "Removing the old packages.x86_64 file from build folder"
# rm $buildFolder/archiso/packages.x86_64
# echo
# echo "Copying the new packages.x86_64 file to the build folder"
# cp -f ../archiso/packages.x86_64 $buildFolder/archiso/packages.x86_64
# echo
# echo "Changing group for polkit folder"
# sudo chgrp polkitd $buildFolder/archiso/airootfs/etc/polkit-1/rules.d
# #is not working so fixing this during calamares installation
# echo
# echo "################################################################## "
# tput setaf 2
# echo "Phase 5 : "
# echo "- Changing all references"
# echo "- Adding time to /etc/dev-rel"
# tput sgr0
# echo "################################################################## "
# echo
#
# #Setting variables
#
# #profiledef.sh
# oldname1='iso_name=arcolinux'
# newname1='iso_name=arcolinux'
#
# oldname2='iso_label="arcolinux'
# newname2='iso_label="arcolinux'
#
# oldname3='ArcoLinux'
# newname3='ArcoLinux'
#
# #hostname
# oldname4='ArcoLinux'
# newname4='ArcoLinux'
#
# #lightdm.conf user-session
# oldname5='user-session=xfce'
# newname5='user-session='$lightdmDesktop
#
# #lightdm.conf autologin-session
# oldname6='#autologin-session='
# newname6='autologin-session='$lightdmDesktop
#
# echo "Changing all references"
# echo
# sed -i 's/'$oldname1'/'$newname1'/g' $buildFolder/archiso/profiledef.sh
# sed -i 's/'$oldname2'/'$newname2'/g' $buildFolder/archiso/profiledef.sh
# sed -i 's/'$oldname3'/'$newname3'/g' $buildFolder/archiso/airootfs/etc/dev-rel
# sed -i 's/'$oldname4'/'$newname4'/g' $buildFolder/archiso/airootfs/etc/hostname
# sed -i 's/'$oldname5'/'$newname5'/g' $buildFolder/archiso/airootfs/etc/lightdm/lightdm.conf
# sed -i 's/'$oldname6'/'$newname6'/g' $buildFolder/archiso/airootfs/etc/lightdm/lightdm.conf
#
# echo "Adding time to /etc/dev-rel"
# date_build=$(date -d now)
# echo "Iso build on : "$date_build
# sudo sed -i "s/\(^ISO_BUILD=\).*/\1$date_build/" $buildFolder/archiso/airootfs/etc/dev-rel
echo
echo "################################################################## "
tput setaf 2
echo "Phase 6 :"
echo "- Cleaning the cache from /var/cache/pacman/pkg/"
tput sgr0
echo "################################################################## "
echo
echo "Cleaning the cache from /var/cache/pacman/pkg/"
yes | sudo pacman -Scc
echo
echo "################################################################## "
tput setaf 2
echo "Phase 7 :"
echo "- Building the iso - this can take a while - be patient"
tput sgr0
echo "################################################################## "
echo
[ -d $outFolder ] || mkdir $outFolder
cd $buildFolder/archiso/
sudo mkarchiso -v -w $buildFolder -o $outFolder $buildFolder/archiso/
# echo
# echo "###################################################################"
# tput setaf 2
# echo "Phase 8 :"
# echo "- Creating checksums"
# echo "- Copying pgklist"
# tput sgr0
# echo "###################################################################"
# echo
#
# cd $outFolder
#
# echo "Creating checksums for : "$isoLabel
# echo "##################################################################"
# echo
# echo "Building sha1sum"
# echo "########################"
# sha1sum $isoLabel | tee $isoLabel.sha1
# echo "Building sha256sum"
# echo "########################"
# sha256sum $isoLabel | tee $isoLabel.sha256
# echo "Building md5sum"
# echo "########################"
# md5sum $isoLabel | tee $isoLabel.md5
# echo
echo "Moving pkglist.x86_64.txt"
echo "########################"
rename=$(date +%Y-%m-%d)
cp $buildFolder/iso/arch/pkglist.x86_64.txt $outFolder/archlinux-$rename-pkglist.txt
echo
echo "##################################################################"
tput setaf 2
echo "Phase 9 :"
echo "- Making sure we start with a clean slate next time"
tput sgr0
echo "################################################################## "
echo
#echo "Deleting the build folder if one exists - takes some time"
#[ -d $buildFolder ] && sudo rm -rf $buildFolder
echo
echo "##################################################################"
tput setaf 2
echo "DONE"
echo "- Check your out folder :"$outFolder
tput sgr0
echo "################################################################## "
echo