Refactor the package lists. Organize by desktop environment, alphabetize, and unify

in single sourced script for both the build and install process.
This commit is contained in:
Hal Emmerich 2020-06-11 17:55:01 -05:00
parent 80669839a1
commit 357eb3d793
3 changed files with 194 additions and 25 deletions

View File

@ -17,6 +17,8 @@
# along with PrawnOS. If not, see <https://www.gnu.org/licenses/>. # along with PrawnOS. If not, see <https://www.gnu.org/licenses/>.
DIR=/InstallResources DIR=/InstallResources
# Import the package lists
source $DIR/package_lists.sh
cat $DIR/icons/ascii-icon.txt cat $DIR/icons/ascii-icon.txt
echo "" echo ""
@ -35,17 +37,12 @@ done
dpkg-reconfigure tzdata dpkg-reconfigure tzdata
#Install shared packages #Install shared packages
DEBIAN_FRONTEND=noninteractive apt install -y xorg acpi-support tasksel dpkg librsvg2-common xorg xserver-xorg-input-libinput alsa-utils anacron avahi-daemon eject iw libnss-mdns xdg-utils dconf-cli dconf-editor sudo dtrx emacs sysfsutils bluetooth DEBIAN_FRONTEND=noninteractive apt install -y ${base_debs_download[@]}
DEBIAN_FRONTEND=noninteractive apt install -y network-manager-gnome network-manager-openvpn network-manager-openvpn-gnome DEBIAN_FRONTEND=noninteractive apt install -y ${mesa_debs_download[@]}
DEBIAN_FRONTEND=noninteractive apt install -y libegl-mesa0 libegl1-mesa libgl1-mesa-dri libglapi-mesa libglu1-mesa libglx-mesa0
# Browsers [ "$DE" = "gnome" ] && apt install -y ${gnome_debs_download[@]}
DEBIAN_FRONTEND=noninteractive apt install -y firefox-esr [ "$DE" = "xfce" ] && apt install -y ${xfce_debs_download[@]}
DEBIAN_FRONTEND=noninteractive apt install -y chromium [ "$DE" = "lxqt" ] && apt install -y ${lxqt_debs_download[@]}
[ "$DE" = "gnome" ] && apt install -y gdm3 gnome-session dbus-user-session gnome-shell-extensions nautilus nautilus-admin file-roller gnome-software gnome-software-plugin-flatpak gedit gnome-system-monitor gnome-logs evince gnome-disk-utility gnome-terminal fonts-cantarell gnome-tweaks seahorse papirus-icon-theme materia-gtk-theme eog
[ "$DE" = "xfce" ] && apt install -y lightdm mousepad vlc xfce4 dbus-user-session system-config-printer tango-icon-theme xfce4-power-manager xfce4-terminal xfce4-goodies numix-gtk-theme plank accountsservice papirus-icon-theme
[ "$DE" = "lxqt" ] && apt install -y lightdm lxqt pavucontrol-qt
#install the keymap by patching xkb, then bindings work for any desktop environment #install the keymap by patching xkb, then bindings work for any desktop environment
cp $DIR/xkb/compat/* /usr/share/X11/xkb/compat/ cp $DIR/xkb/compat/* /usr/share/X11/xkb/compat/
@ -76,8 +73,6 @@ then
# gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false # gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false
#Tap to click is natural #Tap to click is natural
# gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true # gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true
fi fi
if [ "$DE" = "xfce" ] if [ "$DE" = "xfce" ]

View File

@ -56,6 +56,11 @@ outdev=/dev/loop5
install_resources=resources/InstallResources install_resources=resources/InstallResources
build_resources=resources/BuildResources build_resources=resources/BuildResources
script_resources=scripts/
package_lists=$script_resources/package_lists.sh
# Import the package lists
source $package_lists
#HACK XSECURELOCK our usage of stable and unstable packages has caught up to us. We end up carrying conflicting files if #HACK XSECURELOCK our usage of stable and unstable packages has caught up to us. We end up carrying conflicting files if
# we grab build-essential from stable and xsecurelock from unstable. This was fixed by grabbing build-essential from # we grab build-essential from stable and xsecurelock from unstable. This was fixed by grabbing build-essential from
@ -64,6 +69,7 @@ build_resources=resources/BuildResources
# I'm rethinking the build system to make (heh) this more elegant, but for now to get the build fixed I'll implement this # I'm rethinking the build system to make (heh) this more elegant, but for now to get the build fixed I'll implement this
XSECURELOCK_PATH=packages/filesystem/xsecurelock XSECURELOCK_PATH=packages/filesystem/xsecurelock
#A hacky way to ensure the loops are properly unmounted and the temp files are properly deleted. #A hacky way to ensure the loops are properly unmounted and the temp files are properly deleted.
#Without this, a reboot is sometimes required to properly clean the loop devices and ensure a clean build #Without this, a reboot is sometimes required to properly clean the loop devices and ensure a clean build
cleanup() { cleanup() {
@ -169,6 +175,7 @@ mkdir $outmnt/InstallResources/icons/
cp $build_resources/logo/icons/icon-small.png $outmnt/InstallResources/icons/ cp $build_resources/logo/icons/icon-small.png $outmnt/InstallResources/icons/
cp $build_resources/logo/icons/ascii/* $outmnt/InstallResources/icons/ cp $build_resources/logo/icons/ascii/* $outmnt/InstallResources/icons/
cp scripts/InstallScripts/* $outmnt/InstallResources/ cp scripts/InstallScripts/* $outmnt/InstallResources/
cp $package_lists $outmnt/InstallResources/
cp scripts/InstallScripts/InstallPrawnOS.sh $outmnt/ cp scripts/InstallScripts/InstallPrawnOS.sh $outmnt/
chmod +x $outmnt/*.sh chmod +x $outmnt/*.sh
@ -212,7 +219,7 @@ chroot $outmnt locale-gen
#Install the base packages #Install the base packages
chroot $outmnt apt update chroot $outmnt apt update
chroot $outmnt apt install -y udev kmod net-tools inetutils-ping traceroute iproute2 isc-dhcp-client wpasupplicant iw alsa-utils cgpt less psmisc netcat-openbsd ca-certificates bzip2 xz-utils ifupdown nano apt-utils git kpartx gdisk parted rsync busybox-static cryptsetup bash-completion libnss-systemd libpam-cap nftables uuid-runtime libgpg-error-l10n libatm1 laptop-detect e2fsprogs-l10n vim chroot $outmnt apt install -y ${base_debs_install[@]}
#build and install crossystem/mosys, funky way to call the bash function inside the chroot #build and install crossystem/mosys, funky way to call the bash function inside the chroot
export -f build_install_crossystem export -f build_install_crossystem
@ -228,9 +235,7 @@ chroot $outmnt apt-get clean
#Download support for libinput-gestures #Download support for libinput-gestures
#Package is copied into /InstallResources/packages #Package is copied into /InstallResources/packages
chroot $outmnt apt install -y libinput-tools xdotool chroot $outmnt apt install -y libinput-tools xdotool build-essential
chroot $outmnt apt install -y build-essential
# we want to include all of our built packages in the apt cache for installation later, but we want to let apt download dependencies # we want to include all of our built packages in the apt cache for installation later, but we want to let apt download dependencies
# if required # if required
@ -246,19 +251,22 @@ cd $PRAWN_ROOT
cp $XSECURELOCK_PATH/xsecurelock_*_armhf.deb $outmnt/var/cache/apt/archives/ cp $XSECURELOCK_PATH/xsecurelock_*_armhf.deb $outmnt/var/cache/apt/archives/
chroot $outmnt apt install -y -d xsecurelock chroot $outmnt apt install -y -d xsecurelock
#Download the shared packages to be installed by Install.sh:
chroot $outmnt apt-get install -y -d ${base_debs_download[@]}
#Download the packages to be installed by Install.sh: ## DEs
chroot $outmnt apt-get install -y -d xorg acpi-support lightdm tasksel dpkg librsvg2-common xorg xserver-xorg-input-libinput alsa-utils anacron avahi-daemon eject iw libnss-mdns xdg-utils lxqt crda xfce4 dbus-user-session system-config-printer tango-icon-theme xfce4-power-manager xfce4-terminal xfce4-goodies mousepad vlc libutempter0 xterm numix-gtk-theme dconf-cli dconf-editor plank network-manager-gnome network-manager-openvpn network-manager-openvpn-gnome dtrx emacs accountsservice sudo pavucontrol-qt papirus-icon-theme sysfsutils bluetooth #Download the xfce packages to be installed by Install.sh:
chroot $outmnt apt-get install -y -d ${xfce_debs_download[@]}
#Download the gnome packages #Download the lxqt packages to be installed by Install.sh:
chroot $outmnt apt-get install -y -d gdm3 gnome-session dbus-user-session gnome-shell-extensions nautilus nautilus-admin file-roller gnome-software gnome-software-plugin-flatpak gedit gnome-system-monitor gnome-clocks evince gnome-logs gnome-disk-utility gnome-terminal epiphany-browser fonts-cantarell gnome-tweaks seahorse materia-gtk-theme eog libpeas-1.0-0 gir1.2-peas-1.0 libgtk3-perl chroot $outmnt apt-get install -y -d ${lxqt_debs_download[@]}
#Download the gnome packages to be installed by Install.sh:
chroot $outmnt apt-get install -y -d ${gnome_debs_download[@]}
## GPU support
#download mesa packages #download mesa packages
chroot $outmnt apt-get install -y -d libegl-mesa0 libegl1-mesa libgl1-mesa-dri libglapi-mesa libglu1-mesa libglx-mesa0 chroot $outmnt apt-get install -y -d ${mesa_debs_download[@]}
chroot $outmnt apt-get install -d -y firefox-esr
# grab chromium as well, since sound is still broken in firefox for some media
chroot $outmnt apt-get install -d -y chromium
#Cleanup hosts #Cleanup hosts
rm -rf $outmnt/etc/hosts #This is what https://wiki.debian.org/EmDebian/CrossDebootstrap suggests rm -rf $outmnt/etc/hosts #This is what https://wiki.debian.org/EmDebian/CrossDebootstrap suggests

166
scripts/package_lists.sh Executable file
View File

@ -0,0 +1,166 @@
#!/bin/bash
# This file is part of PrawnOS (http://www.prawnos.com)
# Copyright (c) 2018 Hal Emmerich <hal@halemmerich.com>
# PrawnOS is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2
# as published by the Free Software Foundation.
# PrawnOS is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with PrawnOS. If not, see <https://www.gnu.org/licenses/>.
# ======================================== Package Lists =========================================
# ================================ KEEP THESE LISTS ALPHABETIZED! ================================
base_debs_install=(
alsa-utils
apt-utils
bash-completion
busybox-static
bzip2
ca-certificates
cgpt
cryptsetup
e2fsprogs-l10n
gdisk
git
ifupdown
inetutils-ping
iproute2
isc-dhcp-client
iw
kmod
kpartx
laptop-detect
less
libatm1
libgpg-error-l10n
libnss-systemd
libpam-cap nftables
nano
net-tools
netcat-openbsd
parted
psmisc
rsync
traceroute
udev
uuid-runtime
vim
wpasupplicant
xz-utils
)
base_debs_download=(
acpi-support
alsa-utils
anacron
avahi-daemon
bluetooth
chromium
crda
dbus-user-session
dpkg
dtrx
eject
emacs
firefox-esr
iw
libnss-mdns
librsvg2-common
libutempter0
lightdm
mousepad
sudo
sysfsutils
tasksel
vlc
xdg-utils
xorg
xorg
xserver-xorg-input-libinput
)
mesa_debs_download=(
libegl-mesa0
libegl1-mesa
libgl1-mesa-dri
libglapi-mesa
libglu1-mesa
libglx-mesa0
)
xfce_debs_download=(
accountsservice
dbus-user-session
dconf-cli
dconf-editor
network-manager-gnome
network-manager-openvpn
network-manager-openvpn-gnome
numix-gtk-theme
papirus-icon-theme
plank
system-config-printer
tango-icon-theme
xfce4
xfce4-goodies
xfce4-power-manager
xfce4-terminal
)
lxqt_debs_download=(
lightdm
lxqt
network-manager-gnome
network-manager-openvpn
network-manager-openvpn-gnome
pavucontrol-qt
)
gnome_debs_download=(
dbus-user-session
dconf-cli
dconf-editor
eog
epiphany-browser
evince
file-roller
fonts-cantarell
gdm3
gedit
gir1.2-peas-1.0
gnome-clocks
gnome-disk-utility
gnome-logs
gnome-session
gnome-shell-extensions
gnome-software
gnome-software-plugin-flatpak
gnome-system-monitor
gnome-terminal
gnome-tweaks
libgtk3-perl
libpeas-1.0-0
lightdm
lxqt
materia-gtk-theme
nautilus
nautilus-admin
network-manager-gnome
network-manager-gnome
network-manager-openvpn
network-manager-openvpn
network-manager-openvpn-gnome
network-manager-openvpn-gnome
pavucontrol-qt
seahorse
)
# ====================================== END Package Lists =======================================