Просмотр исходного кода

Refactor the package lists. Organize by desktop environment, alphabetize, and unify
in single sourced script for both the build and install process.

Hal Emmerich 3 лет назад
Родитель
Сommit
357eb3d793
3 измененных файлов с 194 добавлено и 25 удалено
  1. 7 12
      scripts/InstallScripts/InstallPackages.sh
  2. 21 13
      scripts/buildFilesystem.sh
  3. 166 0
      scripts/package_lists.sh

+ 7 - 12
scripts/InstallScripts/InstallPackages.sh

@@ -17,6 +17,8 @@
 # along with PrawnOS.  If not, see <https://www.gnu.org/licenses/>.
 
 DIR=/InstallResources
+# Import the package lists
+source $DIR/package_lists.sh
 
 cat $DIR/icons/ascii-icon.txt
 echo ""
@@ -35,17 +37,12 @@ done
 dpkg-reconfigure tzdata
 
 #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 network-manager-gnome network-manager-openvpn network-manager-openvpn-gnome
-DEBIAN_FRONTEND=noninteractive apt install -y libegl-mesa0 libegl1-mesa libgl1-mesa-dri libglapi-mesa libglu1-mesa libglx-mesa0
+DEBIAN_FRONTEND=noninteractive apt install -y ${base_debs_download[@]}
+DEBIAN_FRONTEND=noninteractive apt install -y ${mesa_debs_download[@]}
 
-# Browsers
-DEBIAN_FRONTEND=noninteractive apt install -y firefox-esr
-DEBIAN_FRONTEND=noninteractive apt install -y chromium
-
-[ "$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
+[ "$DE" = "gnome" ] && apt install -y ${gnome_debs_download[@]}
+[ "$DE" = "xfce" ] && apt install -y ${xfce_debs_download[@]}
+[ "$DE" = "lxqt" ] && apt install -y ${lxqt_debs_download[@]}
 
 #install the keymap by patching xkb, then bindings work for any desktop environment
 cp $DIR/xkb/compat/* /usr/share/X11/xkb/compat/
@@ -76,8 +73,6 @@ then
   # gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false
   #Tap to click is natural
   # gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true
-
-
 fi
 
 if [ "$DE" = "xfce" ]

+ 21 - 13
scripts/buildFilesystem.sh

@@ -56,6 +56,11 @@ outdev=/dev/loop5
 
 install_resources=resources/InstallResources
 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
 # 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
 XSECURELOCK_PATH=packages/filesystem/xsecurelock
 
+
 #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
 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/ascii/* $outmnt/InstallResources/icons/
 cp scripts/InstallScripts/* $outmnt/InstallResources/
+cp $package_lists $outmnt/InstallResources/
 cp scripts/InstallScripts/InstallPrawnOS.sh $outmnt/
 chmod +x $outmnt/*.sh
 
@@ -212,7 +219,7 @@ chroot $outmnt locale-gen
 
 #Install the base packages
 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
 export -f build_install_crossystem
@@ -228,9 +235,7 @@ chroot $outmnt apt-get clean
 
 #Download support for libinput-gestures
 #Package is copied into /InstallResources/packages
-chroot $outmnt apt install -y libinput-tools xdotool
-
-chroot $outmnt apt install -y  build-essential
+chroot $outmnt apt install -y libinput-tools xdotool 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
 # if required
@@ -246,19 +251,22 @@ cd $PRAWN_ROOT
 cp $XSECURELOCK_PATH/xsecurelock_*_armhf.deb $outmnt/var/cache/apt/archives/
 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:
-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
+## DEs
+#Download the xfce packages to be installed by Install.sh:
+chroot $outmnt apt-get install -y -d ${xfce_debs_download[@]}
 
-#Download the gnome packages
-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
+#Download the lxqt packages to be installed by Install.sh:
+chroot $outmnt apt-get install -y -d ${lxqt_debs_download[@]}
 
-#download mesa packages
-chroot $outmnt apt-get install -y -d libegl-mesa0 libegl1-mesa libgl1-mesa-dri libglapi-mesa libglu1-mesa libglx-mesa0
+#Download the gnome packages to be installed by Install.sh:
+chroot $outmnt apt-get install -y -d ${gnome_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
+## GPU support
+#download mesa packages
+chroot $outmnt apt-get install -y -d ${mesa_debs_download[@]}
 
 #Cleanup hosts
 rm -rf $outmnt/etc/hosts #This is what https://wiki.debian.org/EmDebian/CrossDebootstrap suggests

+ 166 - 0
scripts/package_lists.sh

@@ -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 =======================================