build-x86-images.sh 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #!/bin/sh
  2. set -eu
  3. . ./lib.sh
  4. PROGNAME=$(basename "$0")
  5. ARCH=$(uname -m)
  6. IMAGES="base enlightenment xfce mate cinnamon gnome kde lxde lxqt"
  7. REPO=
  8. DATE=$(date +%Y%m%d)
  9. help() {
  10. echo "$PROGNAME: [-a arch] [-b base|enlightenment|xfce|mate|cinnamon|gnome|kde|lxde|lxqt] [-r repo]" >&2
  11. }
  12. while getopts "a:b:hr:V" opt; do
  13. case $opt in
  14. a) ARCH="$OPTARG";;
  15. b) IMAGES="$OPTARG";;
  16. h) help; exit 0;;
  17. r) REPO="-r $OPTARG $REPO";;
  18. V) version; exit 0;;
  19. *) help; exit 1;;
  20. esac
  21. done
  22. shift $((OPTIND - 1))
  23. INCLUDEDIR=$(mktemp -d)
  24. trap "cleanup" INT TERM
  25. cleanup() {
  26. rm -r "$INCLUDEDIR"
  27. }
  28. build_variant() {
  29. variant="$1"
  30. shift
  31. IMG=void-live-${ARCH}-${DATE}-${variant}.iso
  32. GRUB_PKGS="grub-i386-efi grub-x86_64-efi"
  33. PKGS="dialog cryptsetup lvm2 mdadm void-docs-browse xtools-minimal xmirror $GRUB_PKGS"
  34. PKGS="dialog cryptsetup lvm2 mdadm void-docs-browse xtools-minimal xmirror espeakup $GRUB_PKGS"
  35. XORG_PKGS="xorg-minimal xorg-input-drivers xorg-video-drivers setxkbmap xauth font-misc-misc terminus-font dejavu-fonts-ttf alsa-plugins-pulseaudio"
  36. SERVICES="sshd"
  37. case $variant in
  38. base)
  39. SERVICES="$SERVICES dhcpcd wpa_supplicant acpid"
  40. ;;
  41. enlightenment)
  42. PKGS="$PKGS $XORG_PKGS lightdm lightdm-gtk3-greeter enlightenment terminology udisks2 firefox"
  43. SERVICES="$SERVICES acpid dhcpcd wpa_supplicant lightdm dbus polkitd"
  44. ;;
  45. xfce)
  46. PKGS="$PKGS $XORG_PKGS lightdm lightdm-gtk3-greeter xfce4 gnome-themes-standard gnome-keyring network-manager-applet gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox"
  47. SERVICES="$SERVICES dbus elogind lightdm NetworkManager polkitd"
  48. ;;
  49. mate)
  50. PKGS="$PKGS $XORG_PKGS lightdm lightdm-gtk3-greeter mate mate-extra gnome-keyring network-manager-applet gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox"
  51. SERVICES="$SERVICES dbus elogind lightdm NetworkManager polkitd"
  52. ;;
  53. cinnamon)
  54. PKGS="$PKGS $XORG_PKGS lightdm lightdm-gtk3-greeter cinnamon gnome-keyring colord gnome-terminal gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox"
  55. SERVICES="$SERVICES dbus elogind lightdm NetworkManager polkitd"
  56. ;;
  57. gnome)
  58. PKGS="$PKGS $XORG_PKGS gnome firefox"
  59. SERVICES="$SERVICES dbus elogind gdm NetworkManager polkitd"
  60. ;;
  61. kde)
  62. PKGS="$PKGS $XORG_PKGS kde5 konsole firefox dolphin"
  63. SERVICES="$SERVICES dbus elogind NetworkManager sddm"
  64. ;;
  65. lxde)
  66. PKGS="$PKGS $XORG_PKGS lxde lightdm lightdm-gtk3-greeter gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox"
  67. SERVICES="$SERVICES acpid dbus dhcpcd wpa_supplicant lightdm polkitd"
  68. ;;
  69. lxqt)
  70. PKGS="$PKGS $XORG_PKGS lxqt sddm gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox"
  71. SERVICES="$SERVICES elogind dbus dhcpcd wpa_supplicant sddm polkitd"
  72. ;;
  73. *)
  74. >&2 echo "Unknown variant $variant"
  75. exit 1
  76. ;;
  77. esac
  78. ./mklive.sh -a "$ARCH" -o "$IMG" -p "$PKGS" -S "$SERVICES" -I "$INCLUDEDIR" ${REPO} "$@"
  79. }
  80. if [ ! -x mklive.sh ]; then
  81. echo mklive.sh not found >&2
  82. exit 1
  83. fi
  84. if [ -x installer.sh ]; then
  85. MKLIVE_VERSION="$(PROGNAME='' version)"
  86. installer=$(mktemp)
  87. sed "s/@@MKLIVE_VERSION@@/${MKLIVE_VERSION}/" installer.sh > "$installer"
  88. install -Dm755 "$installer" "$INCLUDEDIR"/usr/bin/void-installer
  89. rm "$installer"
  90. else
  91. echo installer.sh not found >&2
  92. exit 1
  93. fi
  94. for image in $IMAGES; do
  95. build_variant "$image" "$@"
  96. done