melawy-archiso-config/make.sh

326 lines
7.9 KiB
Bash
Executable File

#!/bin/bash
if [[ "$UID" != 0 ]]; then
echo "USER NOT ROOT"
sudo "$0"
exit
else
echo "USER IS ROOT"
fi
DELAY=3
function check_internet() {
ping -c 1 1.1.1.1 > /dev/null
have_internet="$?"
if [ "$have_internet" -ne 0 ]; then
echo "No internet connection"
exit
fi
}
function clean() {
echo "CLEAN"
rm -v airootfs/opt/extra-drivers/*.pkg.tar.*
rm -v airootfs/root/packages/*.pkg.tar.*
rm -v airootfs/usr/share/packages/*.pkg.tar.*
}
function mirrorlist() {
echo "MIRRORLIST"
check_internet
sed -i -e "s/#Server/Server/g" /etc/pacman.d/mirrorlist.pacnew
cp /etc/pacman.d/mirrorlist.pacnew /etc/pacman.d/mirrorlist
reflector --save /etc/pacman.d/mirrorlist -c "CA,FI,FR,DE,IS,IE,IT,JP,KZ,LV,LU,NZ,NO,PL,PT,RU,SG,ES,SE,CH,TW,TH, " --protocol https --latest 50 --fastest 50 --sort rate
}
function prepare() {
echo "PREPARE"
check_internet
pacman -Sy --config pacman_sys.conf
pacman -Sw --config pacman_sys.conf --noconfirm --cachedir "./airootfs/opt/extra-drivers" r8168-dkms
packs=(
dracut
grub-dracut
grub
systemd-boot-dracut
libxvmc
linux-api-headers
linux-cachyos
linux-cachyos-headers
linux-cachyos-zfs
melawy-dracut-initramfs
melawy-dracut-ukify
melawy-refind-menu-generator
melawy-refind-theme-nier-a2
melawy-plymouth-theme-nier-a2
os-prober
refind
update-grub
xf86-video-intel
)
for pack in ${packs[@]}
do
pacman -Sw --config pacman_sys.conf --noconfirm --cachedir "./airootfs/usr/share/packages" $pack
done
paccache -rvk 1 --cachedir "./airootfs/opt/extra-drivers"
paccache -rvk 1 --cachedir "./airootfs/usr/share/packages"
chown -R 1000:1000 ./airootfs/opt/extra-drivers/
chown -R 1000:1000 ./airootfs/usr/share/packages/
chown -R 1000:1000 ../boot/iso
}
function build() {
echo "BUILD"
check_internet
rm -rfv "../work_${edition}"
mkdir -pv "../boot/"{fd,iso,qcow2,shell_scripts,txt} 2>/dev/null
mkdir -pv "../sf" 2>/dev/null
mkdir -pv "../work_${edition}" 2>/dev/null
mkdir -pv "../sf/${iso_dir}" 2>/dev/null
cp -vf "/etc/pacman.d/mirrorlist" "./airootfs/etc/pacman.d/"
if [ -f "../sf/${iso_dir}/${iso_name}.iso" ]; then rm "../sf/${iso_dir}/${iso_name}.iso"; fi
./mkarchiso_last_my -v "."
}
function sign() {
if [ -f "../sf/${iso_dir}/${std_iso_name}.iso" ] || [ -f "../sf/${iso_dir}/${iso_name}.iso" ] ; then
echo "SIGN, SUM, TORRENT"
cp "../verify.sh" "../sf/${iso_dir}/"
if [ -f "../sf/${iso_dir}/${iso_name}-pkglist.txt" ]; then
rm "../sf/${iso_dir}/${iso_name}-pkglist.txt";
fi
cp -vf "../work_${edition}/iso/arch/pkglist.x86_64.txt" "../sf/${iso_dir}/${iso_name}-pkglist.txt"
if [ -f "../sf/${iso_dir}/${std_iso_name}.iso" ]; then
mv "../sf/${iso_dir}/${std_iso_name}.iso" "../sf/${iso_dir}/${iso_name}.iso";
fi
if [ -f "../sf/${iso_dir}/${iso_name}.iso.sig" ]; then
rm "../sf/${iso_dir}/${iso_name}.iso.sig";
fi
echo "Sign ../sf/${iso_dir}/${iso_name}.iso.sig ../sf/${iso_dir}/${iso_name}.iso"
su $(who | grep "tty" | cut -d" " -f1) -c "gpg --detach-sign --local-user BC8B600E8DDA1F4CB77B10D2BA803A261A5EE6B8 --output '../sf/${iso_dir}/${iso_name}.iso.sig' '../sf/${iso_dir}/${iso_name}.iso'"
cd "../sf/${iso_dir}"
if [ -f "${iso_name}.iso.md5" ]; then
rm "${iso_name}.iso.md5";
fi
echo "md5sum ${iso_name}.iso"
md5sum "${iso_name}.iso" > "${iso_name}.iso.md5"
if [ -f "${iso_name}.iso.sha1" ]; then
rm "${iso_name}.iso.sha1";
fi
echo "sha1sum ${iso_name}.iso"
sha1sum "${iso_name}.iso" > "${iso_name}.iso.sha1"
if [ -f "${iso_name}.iso.sha256" ]; then
rm "${iso_name}.iso.sha256";
fi
echo "sha256sum ${iso_name}.iso"
sha256sum "${iso_name}.iso" > "${iso_name}.iso.sha256"
cd ".."
if [ -f "${iso_dir}/${iso_name}.torrent" ]; then rm "${iso_dir}/${iso_name}.torrent"; fi
mktorrent --verbose --comment="https://melawy.ru" --announce="udp://fosstorrents.com:6969/announce,udp://tracker.opentrackr.org:1337/announce,udp://opentracker.i2p.rocks:6969/announce,udp://open.demonii.com:1337/announce,udp://tracker.openbittorrent.com:6969/announce,http://tracker.openbittorrent.com:80/announce,udp://open.stealth.si:80/announce,udp://tracker.torrent.eu.org:451/announce,udp://exodus.desync.com:6969/announce,udp://tracker1.bt.moack.co.kr:80/announce,udp://tracker.moeking.me:6969/announce,udp://explodie.org:6969/announce,https://tracker.tamersunion.org:443/announce,udp://uploads.gamecoast.net:6969/announce,udp://tracker.tiny-vps.com:6969/announce,udp://tracker.bittor.pw:1337/announce,udp://retracker01-msk-virt.corbina.net:80/announce,udp://movies.zsw.ca:6969/announce,udp://isk.richardsw.club:6969/announce,https://tracker.renfei.net:443/announce,https://tr.burnabyhighstar.com:443/announce,http://fosstorrents.com:6969/announce" --output="${iso_dir}/${iso_name}.torrent" "${iso_dir}"
chown -R 1000:1000 ../sf
fi
}
function std_build() {
# clean
# sleep $DELAY
#
# prepare
# sleep $DELAY
build
sleep $DELAY
sign
sleep $DELAY
_notify
sleep $DELAY
exit
}
function get_users() { /usr/bin/users | sed 's| |\n|g' | sort | uniq ; }
_notify() {
local msg="Finished"
local title="Make"
# at TTY
echo "==> INFO: $msg" >&2
# notification
local user userid cmd
for user in $(get_users) ; do
userid=$(/usr/bin/id -u $user)
cmd=(
DISPLAY=:0
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$userid/bus
/usr/bin/notify-send
--expire-time=10000
--icon=info
--urgency=normal
"'$title'"
"'$msg'"
)
/usr/bin/su $user -c "${cmd[*]}"
done
}
while true; do
cd "$(dirname $0)"
echo "PWD: $(dirname $0)"
# clear
cat << _EOF_
Please Select:
1 - Melawy-Linux-Full
2 - Melawy-Linux-Tiny
3 - Melawy-Linux-NetInstall
0 - Exit
_EOF_
read -p "Enter selection [0-3] > "
dir=""
if [[ $REPLY =~ ^[0-3]$ ]]; then
case $REPLY in
1)
dir="Melawy-Linux-Full"
sleep $DELAY
# continue
;;
2)
dir="Melawy-Linux-Tiny"
sleep $DELAY
# continue
;;
3)
dir="Melawy-Linux-NetInstall"
sleep $DELAY
# continue
;;
0)
break
;;
esac
else
echo "Invalid entry."
sleep $DELAY
exit
fi
if [ -n "$dir" ]; then
cd $dir
else
exit
fi
# clear
cat << _EOF_
Please Select:
1 - Clean
2 - Mirrirlist
3 - Prepare
4 - Build
5 - Sign
6 - Std build chain
0 - Exit
_EOF_
read -p "Enter selection [0-6] > "
edition="$(basename $(pwd))"
date_tag=$(date +%Y.%m.%d)
std_iso_name="Melawy-Linux-${date_tag}-x86_64"
iso_name="${edition}-${date_tag}-x86_64"
iso_dir="${edition}-${date_tag}"
if [[ $REPLY =~ ^[0-6]$ ]]; then
case $REPLY in
1)
clean
sleep $DELAY
continue
;;
2)
mirrorlist
sleep $DELAY
continue
;;
3)
prepare
sleep $DELAY
continue
;;
4)
build
sleep $DELAY
continue
;;
5)
sign
sleep $DELAY
continue
;;
6)
std_build
sleep $DELAY
continue
;;
0)
break
;;
esac
else
echo "Invalid entry."
sleep $DELAY
fi
done
# notify-send -a "$(basename $(pwd)): Make" -t 10000 "finished" "$(date '+%Y.%m.%d %H:%M:%S')"
_notify
echo "Ready"
#
# if [ "$status" == 0 ]; then
# sleep 5
# kill $(ps x | grep konsole | grep $0 | awk '{print $1}')
# fi