diff --git a/bin/buildiso.in b/bin/buildiso.in index 8b9ff94..fa78cb2 100755 --- a/bin/buildiso.in +++ b/bin/buildiso.in @@ -99,6 +99,8 @@ kde_lng_packages=false auto_svc_conf=false images_only=false iso_only=false +is_cache_pkgs=false +is_cache_lng=false pacman_conf_arch='default' @@ -121,6 +123,8 @@ usage() { echo ' Requires pre built images' echo ' The custom cache will be cleaned if not set' echo ' -q Query settings and pretend build' + echo ' -P Use custom pkgs cache, no download' + echo ' -L Use custom lng cache, no download' echo ' -h This help' echo '' echo '' @@ -129,7 +133,7 @@ usage() { orig_argv=("$@") -opts='a:b:r:t:i:cvfzqxkAIGh' +opts='a:b:r:t:i:cvfzqxkAIGPLh' while getopts "${opts}" arg; do case "${arg}" in @@ -147,6 +151,8 @@ while getopts "${opts}" arg; do A) auto_svc_conf=true ;; I) images_only=true ;; G) iso_only=true ;; + P) is_cache_pkgs=true ;; + L) is_cache_lng=true ;; q) pretend=true ;; h) usage ;; esac @@ -194,16 +200,20 @@ fi ${pretend} && display_settings && exit 1 -${iso_only} && compress_images && exit 1 +if ${iso_only}; then + [[ ! -d ${work_dir} ]] && die "You need to breate images first" + compress_images + exit 1 +fi ${clean_first} && clean_up prepare_buildiso -if ! ${images_only}; then - [[ $(check_cache pkgs-image) ]] && clean_cache_pkgs - [[ $(check_cache lng-image) ]] && clean_cache_lng -fi +# if ! ${images_only}; then +# [[ $(check_cache pkgs-image) ]] && clean_cache_pkgs +# [[ $(check_cache lng-image) ]] && clean_cache_lng +# fi make_images(){ @@ -243,7 +253,7 @@ compress_images(){ if ${images_only}; then make_images - die "Run again with -G switch to make iso only." + exit 1 else make_images fi diff --git a/lib/util-iso.sh b/lib/util-iso.sh index acbf0ad..6a256bf 100644 --- a/lib/util-iso.sh +++ b/lib/util-iso.sh @@ -74,6 +74,266 @@ copy_cache_pkgs(){ cp ${cache_pkgs}/* ${work_dir}/pkgs-image/opt/livecd/pkgs } +prepare_buildiso(){ + mkdir -p "${target_dir}" + mkdir -p "${cache_pkgs}" + mkdir -p "${cache_lng}" +} + +check_cache(){ + if [[ -n $(cat isomounts | grep -F $1) ]]; then + echo true + else + echo false + fi +} + +clean_cache_lng(){ + msg "Cleaning ${cache_lng} ..." + #rm ${cache_lng}/* + find "${cache_lng}" -name '*.pkg.tar.xz' -delete &>/dev/null +} + +clean_cache_pkgs(){ + msg "Cleaning ${cache_pkgs} ..." + #rm ${cache_pkgs}/* + find "${cache_pkgs}" -name '*.pkg.tar.xz' -delete &>/dev/null +} + +clean_up(){ + if [[ -d ${work_dir} ]];then + msg "Removing work dir ${work_dir}" + rm -r ${work_dir} + fi +} + +make_repo(){ + repo-add ${work_dir}/pkgs-image/opt/livecd/pkgs/gfx-pkgs.db.tar.gz ${work_dir}/pkgs-image/opt/livecd/pkgs/*pkg*z +} + +# $1: work dir +# $2: cache dir +# $3: pkglist +download_to_cache(){ + pacman -v --config "${pacman_conf}" \ + --arch "${arch}" --root "$1" \ + --cache $2 \ + -Syw $3 --noconfirm +} + +# Build ISO +make_iso() { + msg "Build ISO" + touch "${work_dir}/iso/.miso" + + mkiso ${iso_args[*]} iso "${work_dir}" "${iso_file}" + chown -R "${iso_owner}:users" "${target_dir}" + msg "Done build ISO" +} + +# Base installation (root-image) +make_root_image() { + if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then + + msg "Base installation (root-image)" + + mkiso ${create_args[*]} -p "${packages}" -i "root-image" create "${work_dir}" + + pacman -Qr "${work_dir}/root-image" > "${work_dir}/root-image/root-image-pkgs.txt" + + cp ${work_dir}/root-image/etc/locale.gen.bak ${work_dir}/root-image/etc/locale.gen + if [ -e ${work_dir}/root-image/boot/grub/grub.cfg ] ; then + rm ${work_dir}/root-image/boot/grub/grub.cfg + fi + if [ -e ${work_dir}/root-image/etc/plymouth/plymouthd.conf ] ; then + sed -i -e "s/^.*Theme=.*/Theme=$plymouth_theme/" ${work_dir}/root-image/etc/plymouth/plymouthd.conf + fi + if [ -e ${work_dir}/root-image/etc/lsb-release ] ; then + sed -i -e "s/^.*DISTRIB_RELEASE.*/DISTRIB_RELEASE=${iso_version}/" ${work_dir}/root-image/etc/lsb-release + fi + if [ -e ${work_dir}/root-image/usr/bin/cupsd ] ; then + mkdir -p "${work_dir}/root-image/etc/systemd/system/multi-user.target.wants" + ln -sf '/usr/lib/systemd/system/org.cups.cupsd.service' "${work_dir}/root-image/etc/systemd/system/multi-user.target.wants/org.cups.cupsd.service" + fi + if [ -e ${work_dir}/root-image/usr/bin/keyboardctl ] ; then + mkdir -p "${work_dir}/root-image/etc/systemd/system/sysinit.target.wants" + ln -sf '/usr/lib/systemd/system/keyboardctl.service' "${work_dir}/root-image/etc/systemd/system/sysinit.target.wants/keyboardctl.service" + fi + if [ -e ${work_dir}/root-image/usr/bin/tlp ] ; then + mkdir -p "${work_dir}"/root-image/etc/systemd/system/{sleep.target.wants,multi-user.target.wants} + ln -sf '/usr/lib/systemd/system/tlp-sleep.service' "${work_dir}/root-image/etc/systemd/system/sleep.target.wants/tlp-sleep.service" + ln -sf '/usr/lib/systemd/system/tlp.service' "${work_dir}/root-image/etc/systemd/system/multi-user.target.wants/tlp.service" + fi + + copy_overlay "${work_dir}/root-image" + + configure_machine_id "${work_dir}/root-image" + + configure_hostname "${work_dir}/root-image" + + # Clean up GnuPG keys + rm -rf "${work_dir}/root-image/etc/pacman.d/gnupg" + + # Change to given branch in options.conf + #sed -i -e "s/stable/$branch/" ${work_dir}/root-image/etc/pacman.d/mirrorlist + #sed -i -e "s/stable/$branch/" ${work_dir}/root-image/etc/pacman-mirrors.conf + + : > ${work_dir}/build.${FUNCNAME} + msg "Done base installation (root-image)" + fi +} + +make_de_image() { + if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then + msg "${desktop} installation (${desktop}-image)" + + mkdir -p ${work_dir}/${desktop}-image + + if [ ! -z "$(mount -l | grep ${desktop}-image)" ]; then + umount -l ${work_dir}/${desktop}-image + fi + + mount -t aufs -o br=${work_dir}/${desktop}-image:${work_dir}/root-image=ro none ${work_dir}/${desktop}-image + + mkiso ${create_args[*]} -i "${desktop}-image" -p "${de_packages}" create "${work_dir}" + + pacman -Qr "${work_dir}/${desktop}-image" > "${work_dir}/${desktop}-image/${desktop}-image-pkgs.txt" + + cp "${work_dir}/${desktop}-image/${desktop}-image-pkgs.txt" ${target_dir}/${img_name}-${desktop}-${iso_version}-${arch}-pkgs.txt + + if [ -e ${desktop}-overlay ] ; then + copy_overlay_desktop + fi + + configure_plymouth "${work_dir}/overlay-image" + + # Clean up GnuPG keys + rm -rf "${work_dir}/${desktop}-image/etc/pacman.d/gnupg" + + umount -l ${work_dir}/${desktop}-image + + rm -R ${work_dir}/${desktop}-image/.wh* + : > ${work_dir}/build.${FUNCNAME} + msg "Done ${desktop} installation (${desktop}-image)" + fi +} + +make_overlay_image() { + if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then + msg "Prepare overlay-image" + + mkdir -p ${work_dir}/overlay-image + + if [ ! -z "$(mount -l | grep overlay-image)" ]; then + umount -l ${work_dir}/overlay-image + fi + + msg2 "mount root-image" + mount -t aufs -o br=${work_dir}/overlay-image:${work_dir}/root-image=ro none ${work_dir}/overlay-image + + if [ ! -z "${desktop}" ] ; then + msg2 "mount ${desktop}-image" + mount -t aufs -o remount,append:${work_dir}/${desktop}-image=ro none ${work_dir}/overlay-image + fi + + mkiso ${create_args[*]} -i "overlay-image" -p "${overlay_packages}" create "${work_dir}" + + pacman -Qr "${work_dir}/overlay-image" > "${work_dir}/overlay-image/overlay-image-pkgs.txt" + + configure_user_root "${work_dir}/overlay-image" + + configure_user "${work_dir}/overlay-image" + + configure_displaymanager "${work_dir}/overlay-image" + + configure_accountsservice "${work_dir}/overlay-image" + + ${auto_svc_conf} && configure_services "${work_dir}/overlay-image" + + copy_overlay_livecd "${work_dir}/overlay-image" + + configure_calamares "${work_dir}/overlay-image" + + #wget -O ${work_dir}/overlay/etc/pacman.d/mirrorlist http://git.manjaro.org/packages-sources/basis/blobs/raw/master/pacman-mirrorlist/mirrorlist + + # copy over setup helpers and config loader + copy_livecd_helpers "${work_dir}/overlay-image/opt/livecd" + + cp ${work_dir}/root-image/etc/pacman.d/mirrorlist ${work_dir}/overlay-image/etc/pacman.d/mirrorlist + sed -i "s/#Server/Server/g" ${work_dir}/overlay-image/etc/pacman.d/mirrorlist + + # Clean up GnuPG keys? + #rm -rf "${work_dir}/${desktop}-image/etc/pacman.d/gnupg" + + umount -l ${work_dir}/overlay-image + + rm -R ${work_dir}/overlay-image/.wh* + + : > ${work_dir}/build.${FUNCNAME} + msg "Done overlay-image" + fi +} + +make_free_overlay(){ + msg "Prepare pkgs-free-overlay" + mkdir -p ${work_dir}/pkgs-free-overlay + if [ ! -z "$(mount -l | grep pkgs-free-overlay)" ]; then + umount -l ${work_dir}/pkgs-free-overlay + fi + + msg2 "mount root-image" + mount -t aufs -o br=${work_dir}/pkgs-free-overlay:${work_dir}/root-image=ro none ${work_dir}/pkgs-free-overlay + + if [ ! -z "${desktop}" ] ; then + msg2 "mount ${desktop}-image" + mount -t aufs -o remount,append:${work_dir}/${desktop}-image=ro none ${work_dir}/pkgs-free-overlay + fi + + mkiso ${create_args[*]} -i "pkgs-free-overlay" -p "${xorg_free_overlay}" create "${work_dir}" + + # Clean up GnuPG keys + rm -rf "${work_dir}/pkgs-free-overlay/etc/pacman.d/gnupg" + + umount -l ${work_dir}/pkgs-free-overlay + + if [ -e ${work_dir}/pkgs-free-overlay/etc/modules-load.d/*virtualbox*conf ] ; then + rm ${work_dir}/pkgs-free-overlay/etc/modules-load.d/*virtualbox*conf + fi + + rm -R ${work_dir}/pkgs-free-overlay/.wh* + msg "Done pkgs-free-overlay" +} + +make_non_free_overlay(){ + msg "Prepare pkgs-nonfree-overlay" + mkdir -p ${work_dir}/pkgs-nonfree-overlay + + if [ ! -z "$(mount -l | grep pkgs-nonfree-overlay)" ]; then + umount -l ${work_dir}/pkgs-nonfree-overlay + fi + + msg2 "mount root-image" + mount -t aufs -o br=${work_dir}/pkgs-nonfree-overlay:${work_dir}/root-image=ro none ${work_dir}/pkgs-nonfree-overlay + + if [ ! -z "${desktop}" ] ; then + msg2 "mount ${desktop}-image" + mount -t aufs -o remount,append:${work_dir}/${desktop}-image=ro none ${work_dir}/pkgs-nonfree-overlay + fi + + mkiso ${create_args[*]} -i "pkgs-nonfree-overlay" -p "${xorg_nonfree_overlay}" create "${work_dir}" + + rm -rf "${work_dir}/pkgs-nonfree-overlay/etc/pacman.d/gnupg" + + umount -l ${work_dir}/pkgs-nonfree-overlay + + if [ -e ${work_dir}/pkgs-nonfree-overlay/etc/modules-load.d/*virtualbox*conf ] ; then + rm ${work_dir}/pkgs-nonfree-overlay/etc/modules-load.d/*virtualbox*conf + fi + + rm -R ${work_dir}/pkgs-nonfree-overlay/.wh* + msg "Done pkgs-nonfree-overlay" +} + configure_xorg_drivers(){ # Disable Catalyst if not present if [ -z "$(ls ${work_dir}/pkgs-image/opt/livecd/pkgs/ | grep catalyst-utils 2> /dev/null)" ]; then @@ -108,6 +368,101 @@ configure_xorg_drivers(){ fi } +make_pkgs_image() { + if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then + msg "Prepare pkgs-image" + mkdir -p ${work_dir}/pkgs-image/opt/livecd/pkgs + + if [ ! -z "$(mount -l | grep pkgs-image)" ]; then + umount -l ${work_dir}/pkgs-image + fi + + msg2 "mount root-image" + mount -t aufs -o br=${work_dir}/pkgs-image:${work_dir}/root-image=ro none ${work_dir}/pkgs-image + + if [ ! -z "${desktop}" ] ; then + msg2 "mount ${desktop}-image" + mount -t aufs -o remount,append:${work_dir}/${desktop}-image=ro none ${work_dir}/pkgs-image + fi + + if ! ${is_cache_pkgs};then + download_to_cache "${work_dir}/pkgs-image" "${cache_pkgs}" "${xorg_packages}" + copy_cache_pkgs + fi + + if [ ! -z "${xorg_packages_cleanup}" ]; then + for xorg_clean in ${xorg_packages_cleanup}; do + rm ${work_dir}/pkgs-image/opt/livecd/pkgs/${xorg_clean} + done + fi + + cp pacman-gfx.conf ${work_dir}/pkgs-image/opt/livecd + rm -r ${work_dir}/pkgs-image/var + + make_repo "${work_dir}/pkgs-image/opt/livecd/pkgs/gfx-pkgs" "${work_dir}/pkgs-image/opt/livecd/pkgs" + + configure_xorg_drivers + + umount -l ${work_dir}/pkgs-image + rm -R ${work_dir}/pkgs-image/.wh* + + if ${xorg_overlays}; then + make_free_overlay + make_non_free_overlay + fi + : > ${work_dir}/build.${FUNCNAME} + msg "Done pkgs-image" + fi +} + +make_lng_image() { + if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then + msg "Prepare lng-image" + mkdir -p ${work_dir}/lng-image/opt/livecd/lng + + if [ ! -z "$(mount -l | grep lng-image)" ]; then + umount -l ${work_dir}/lng-image + fi + + msg2 "mount root-image" + mount -t aufs -o br=${work_dir}/lng-image:${work_dir}/root-image=ro none ${work_dir}/lng-image + + if [ ! -z "${desktop}" ] ; then + msg2 "mount ${desktop}-image" + mount -t aufs -o remount,append:${work_dir}/${desktop}-image=ro none ${work_dir}/lng-image + fi + + if ${kde_lng_packages}; then + if ! ${is_cache_lng};then + download_to_cache "${work_dir}/lng-image" "${cache_lng}" "${lng_packages} ${lng_packages_kde}" + copy_cache_lng + fi + else + if ! ${is_cache_lng};then + download_to_cache "${work_dir}/lng-image" "${cache_lng}" "${lng_packages}" + copy_cache_lng + fi + fi + + if [ ! -z "${lng_packages_cleanup}" ]; then + for lng_clean in ${lng_packages_cleanup}; do + rm ${work_dir}/lng-image/opt/livecd/lng/${lng_clean} + done + fi + + cp pacman-lng.conf ${work_dir}/lng-image/opt/livecd + rm -r ${work_dir}/lng-image/var + + make_repo ${work_dir}/lng-image/opt/livecd/lng/lng-pkgs ${work_dir}/lng-image/opt/livecd/lng + + umount -l ${work_dir}/lng-image + + rm -R ${work_dir}/lng-image/.wh* + : > ${work_dir}/build.${FUNCNAME} + msg "Done lng-image" + fi +} + gen_boot_img(){ local _kernver=$(cat ${work_dir}/boot-image/usr/lib/modules/*-MANJARO/version) chroot-run ${work_dir}/boot-image \ @@ -116,6 +471,46 @@ gen_boot_img(){ -g /boot/${img_name}.img } +# Prepare ${install_dir}/boot/ +make_boot() { + if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then + + msg "Prepare ${install_dir}/boot" + mkdir -p ${work_dir}/iso/${install_dir}/boot/${arch} + + cp ${work_dir}/root-image/boot/memtest86+/memtest.bin ${work_dir}/iso/${install_dir}/boot/${arch}/memtest + + cp ${work_dir}/root-image/boot/vmlinuz* ${work_dir}/iso/${install_dir}/boot/${arch}/${manjaroiso} + mkdir -p ${work_dir}/boot-image + + if [ ! -z "$(mount -l | grep boot-image)" ]; then + umount -l ${work_dir}/boot-image/{proc,sys,dev} + umount ${work_dir}/boot-image + fi + + msg2 "mount root-image" + mount -t aufs -o br=${work_dir}/boot-image:${work_dir}/root-image=ro none ${work_dir}/boot-image + + if [ ! -z "${desktop}" ] ; then + msg2 "mount ${desktop}-image" + mount -t aufs -o remount,append:${work_dir}/${desktop}-image=ro none ${work_dir}/boot-image + fi + + copy_initcpio + + gen_boot_img + + mv ${work_dir}/boot-image/boot/${img_name}.img ${work_dir}/iso/${install_dir}/boot/${arch}/${img_name}.img + + umount ${work_dir}/boot-image + + rm -R ${work_dir}/boot-image + + : > ${work_dir}/build.${FUNCNAME} + msg "Done ${install_dir}/boot" + fi +} + # Prepare /EFI make_efi() { if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then @@ -241,398 +636,6 @@ make_isomounts() { fi } -prepare_buildiso(){ - mkdir -p "${target_dir}" - mkdir -p "${cache_pkgs}" - mkdir -p "${cache_lng}" -} - -check_cache(){ - if [[ -n $(cat isomounts | grep -F $1) ]]; then - echo true - else - echo false - fi -} - -clean_cache_lng(){ - msg "Cleaning ${cache_lng} ..." - #rm ${cache_lng}/* - find "${cache_lng}" -name '*.pkg.tar.xz' -delete &>/dev/null -} - -clean_cache_pkgs(){ - msg "Cleaning ${cache_pkgs} ..." - #rm ${cache_pkgs}/* - find "${cache_pkgs}" -name '*.pkg.tar.xz' -delete &>/dev/null -} - -clean_up(){ - if [[ -d ${work_dir} ]];then - msg "Removing work dir ${work_dir}" - rm -r ${work_dir} - fi -} - -make_repo(){ - repo-add ${work_dir}/pkgs-image/opt/livecd/pkgs/gfx-pkgs.db.tar.gz ${work_dir}/pkgs-image/opt/livecd/pkgs/*pkg*z -} - -# Build ISO -make_iso() { - msg "Build ISO" - touch "${work_dir}/iso/.miso" - - mkiso ${iso_args[*]} iso "${work_dir}" "${iso_file}" - chown -R "${iso_owner}:users" "${target_dir}" - msg "Done build ISO" -} - -# Prepare ${install_dir}/boot/ -make_boot() { - if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then - - msg "Prepare ${install_dir}/boot" - mkdir -p ${work_dir}/iso/${install_dir}/boot/${arch} - - cp ${work_dir}/root-image/boot/memtest86+/memtest.bin ${work_dir}/iso/${install_dir}/boot/${arch}/memtest - - cp ${work_dir}/root-image/boot/vmlinuz* ${work_dir}/iso/${install_dir}/boot/${arch}/${manjaroiso} - mkdir -p ${work_dir}/boot-image - - if [ ! -z "$(mount -l | grep boot-image)" ]; then - umount -l ${work_dir}/boot-image/{proc,sys,dev} - umount ${work_dir}/boot-image - fi - - msg2 "mount root-image" - mount -t aufs -o br=${work_dir}/boot-image:${work_dir}/root-image=ro none ${work_dir}/boot-image - - if [ ! -z "${desktop}" ] ; then - msg2 "mount ${desktop}-image" - mount -t aufs -o remount,append:${work_dir}/${desktop}-image=ro none ${work_dir}/boot-image - fi - - copy_initcpio - - gen_boot_img - - mv ${work_dir}/boot-image/boot/${img_name}.img ${work_dir}/iso/${install_dir}/boot/${arch}/${img_name}.img - - umount ${work_dir}/boot-image - - rm -R ${work_dir}/boot-image - - : > ${work_dir}/build.${FUNCNAME} - msg "Done ${install_dir}/boot" - fi -} - -# Base installation (root-image) -make_root_image() { - if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then - - msg "Base installation (root-image)" - - mkiso ${create_args[*]} -p "${packages}" -i "root-image" create "${work_dir}" - - pacman -Qr "${work_dir}/root-image" > "${work_dir}/root-image/root-image-pkgs.txt" - - cp ${work_dir}/root-image/etc/locale.gen.bak ${work_dir}/root-image/etc/locale.gen - if [ -e ${work_dir}/root-image/boot/grub/grub.cfg ] ; then - rm ${work_dir}/root-image/boot/grub/grub.cfg - fi - if [ -e ${work_dir}/root-image/etc/plymouth/plymouthd.conf ] ; then - sed -i -e "s/^.*Theme=.*/Theme=$plymouth_theme/" ${work_dir}/root-image/etc/plymouth/plymouthd.conf - fi - if [ -e ${work_dir}/root-image/etc/lsb-release ] ; then - sed -i -e "s/^.*DISTRIB_RELEASE.*/DISTRIB_RELEASE=${iso_version}/" ${work_dir}/root-image/etc/lsb-release - fi - if [ -e ${work_dir}/root-image/usr/bin/cupsd ] ; then - mkdir -p "${work_dir}/root-image/etc/systemd/system/multi-user.target.wants" - ln -sf '/usr/lib/systemd/system/org.cups.cupsd.service' "${work_dir}/root-image/etc/systemd/system/multi-user.target.wants/org.cups.cupsd.service" - fi - if [ -e ${work_dir}/root-image/usr/bin/keyboardctl ] ; then - mkdir -p "${work_dir}/root-image/etc/systemd/system/sysinit.target.wants" - ln -sf '/usr/lib/systemd/system/keyboardctl.service' "${work_dir}/root-image/etc/systemd/system/sysinit.target.wants/keyboardctl.service" - fi - if [ -e ${work_dir}/root-image/usr/bin/tlp ] ; then - mkdir -p "${work_dir}"/root-image/etc/systemd/system/{sleep.target.wants,multi-user.target.wants} - ln -sf '/usr/lib/systemd/system/tlp-sleep.service' "${work_dir}/root-image/etc/systemd/system/sleep.target.wants/tlp-sleep.service" - ln -sf '/usr/lib/systemd/system/tlp.service' "${work_dir}/root-image/etc/systemd/system/multi-user.target.wants/tlp.service" - fi - - copy_overlay "${work_dir}/root-image" - - configure_machine_id "${work_dir}/root-image" - - # Clean up GnuPG keys - rm -rf "${work_dir}/root-image/etc/pacman.d/gnupg" - - # Change to given branch in options.conf - #sed -i -e "s/stable/$branch/" ${work_dir}/root-image/etc/pacman.d/mirrorlist - #sed -i -e "s/stable/$branch/" ${work_dir}/root-image/etc/pacman-mirrors.conf - - : > ${work_dir}/build.${FUNCNAME} - msg "Done base installation (root-image)" - fi -} - -make_de_image() { - if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then - msg "${desktop} installation (${desktop}-image)" - - mkdir -p ${work_dir}/${desktop}-image - - if [ ! -z "$(mount -l | grep ${desktop}-image)" ]; then - umount -l ${work_dir}/${desktop}-image - fi - - mount -t aufs -o br=${work_dir}/${desktop}-image:${work_dir}/root-image=ro none ${work_dir}/${desktop}-image - - mkiso ${create_args[*]} -i "${desktop}-image" -p "${de_packages}" create "${work_dir}" - - pacman -Qr "${work_dir}/${desktop}-image" > "${work_dir}/${desktop}-image/${desktop}-image-pkgs.txt" - - cp "${work_dir}/${desktop}-image/${desktop}-image-pkgs.txt" ${target_dir}/${img_name}-${desktop}-${iso_version}-${arch}-pkgs.txt - - if [ -e ${desktop}-overlay ] ; then - copy_overlay_desktop - fi - - # Clean up GnuPG keys - rm -rf "${work_dir}/${desktop}-image/etc/pacman.d/gnupg" - - umount -l ${work_dir}/${desktop}-image - - rm -R ${work_dir}/${desktop}-image/.wh* - : > ${work_dir}/build.${FUNCNAME} - msg "Done ${desktop} installation (${desktop}-image)" - fi -} - -make_free_overlay(){ - msg "Prepare pkgs-free-overlay" - mkdir -p ${work_dir}/pkgs-free-overlay - if [ ! -z "$(mount -l | grep pkgs-free-overlay)" ]; then - umount -l ${work_dir}/pkgs-free-overlay - fi - - msg2 "mount root-image" - mount -t aufs -o br=${work_dir}/pkgs-free-overlay:${work_dir}/root-image=ro none ${work_dir}/pkgs-free-overlay - - if [ ! -z "${desktop}" ] ; then - msg2 "mount ${desktop}-image" - mount -t aufs -o remount,append:${work_dir}/${desktop}-image=ro none ${work_dir}/pkgs-free-overlay - fi - - mkiso ${create_args[*]} -i "pkgs-free-overlay" -p "${xorg_free_overlay}" create "${work_dir}" - - # Clean up GnuPG keys - rm -rf "${work_dir}/pkgs-free-overlay/etc/pacman.d/gnupg" - - umount -l ${work_dir}/pkgs-free-overlay - - if [ -e ${work_dir}/pkgs-free-overlay/etc/modules-load.d/*virtualbox*conf ] ; then - rm ${work_dir}/pkgs-free-overlay/etc/modules-load.d/*virtualbox*conf - fi - - rm -R ${work_dir}/pkgs-free-overlay/.wh* - msg "Done pkgs-free-overlay" -} - -make_non_free_overlay(){ - msg "Prepare pkgs-nonfree-overlay" - mkdir -p ${work_dir}/pkgs-nonfree-overlay - - if [ ! -z "$(mount -l | grep pkgs-nonfree-overlay)" ]; then - umount -l ${work_dir}/pkgs-nonfree-overlay - fi - - msg2 "mount root-image" - mount -t aufs -o br=${work_dir}/pkgs-nonfree-overlay:${work_dir}/root-image=ro none ${work_dir}/pkgs-nonfree-overlay - - if [ ! -z "${desktop}" ] ; then - msg2 "mount ${desktop}-image" - mount -t aufs -o remount,append:${work_dir}/${desktop}-image=ro none ${work_dir}/pkgs-nonfree-overlay - fi - - mkiso ${create_args[*]} -i "pkgs-nonfree-overlay" -p "${xorg_nonfree_overlay}" create "${work_dir}" - - rm -rf "${work_dir}/pkgs-nonfree-overlay/etc/pacman.d/gnupg" - - umount -l ${work_dir}/pkgs-nonfree-overlay - - if [ -e ${work_dir}/pkgs-nonfree-overlay/etc/modules-load.d/*virtualbox*conf ] ; then - rm ${work_dir}/pkgs-nonfree-overlay/etc/modules-load.d/*virtualbox*conf - fi - - rm -R ${work_dir}/pkgs-nonfree-overlay/.wh* - msg "Done pkgs-nonfree-overlay" -} - -# Prepare overlay-image -make_overlay_image() { - if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then - msg "Prepare overlay-image" - - mkdir -p ${work_dir}/overlay-image - - if [ ! -z "$(mount -l | grep overlay-image)" ]; then - umount -l ${work_dir}/overlay-image - fi - - msg2 "mount root-image" - mount -t aufs -o br=${work_dir}/overlay-image:${work_dir}/root-image=ro none ${work_dir}/overlay-image - - if [ ! -z "${desktop}" ] ; then - msg2 "mount ${desktop}-image" - mount -t aufs -o remount,append:${work_dir}/${desktop}-image=ro none ${work_dir}/overlay-image - fi - - mkiso ${create_args[*]} -i "overlay-image" -p "${overlay_packages}" create "${work_dir}" - - pacman -Qr "${work_dir}/overlay-image" > "${work_dir}/overlay-image/overlay-image-pkgs.txt" - - configure_user_root "${work_dir}/overlay-image" - - configure_user "${work_dir}/overlay-image" - - #configure_machine_id "${work_dir}/overlay-image" - - configure_displaymanager "${work_dir}/overlay-image" - - configure_accountsservice "${work_dir}/overlay-image" - - configure_plymouth "${work_dir}/overlay-image" - - configure_hostname "${work_dir}/overlay-image" - - ${auto_svc_conf} && configure_services "${work_dir}/overlay-image" - - copy_overlay_livecd "${work_dir}/overlay-image" - - configure_calamares "${work_dir}/overlay-image" - - #wget -O ${work_dir}/overlay/etc/pacman.d/mirrorlist http://git.manjaro.org/packages-sources/basis/blobs/raw/master/pacman-mirrorlist/mirrorlist - - # copy over setup helpers and config loader - copy_livecd_helpers "${work_dir}/overlay-image/opt/livecd" - - cp ${work_dir}/root-image/etc/pacman.d/mirrorlist ${work_dir}/overlay-image/etc/pacman.d/mirrorlist - sed -i "s/#Server/Server/g" ${work_dir}/overlay-image/etc/pacman.d/mirrorlist - - # Clean up GnuPG keys? - #rm -rf "${work_dir}/${desktop}-image/etc/pacman.d/gnupg" - - umount -l ${work_dir}/overlay-image - - rm -R ${work_dir}/overlay-image/.wh* - - : > ${work_dir}/build.${FUNCNAME} - msg "Done overlay-image" - fi -} - -# $1: work dir -# $2: cache dir -# $3: pkglist -download_to_cache(){ - pacman -v --config "${pacman_conf}" \ - --arch "${arch}" --root "$1" \ - --cache $2 \ - -Syw $3 --noconfirm -} - -make_pkgs_image() { - if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then - msg "Prepare pkgs-image" - mkdir -p ${work_dir}/pkgs-image/opt/livecd/pkgs - - if [ ! -z "$(mount -l | grep pkgs-image)" ]; then - umount -l ${work_dir}/pkgs-image - fi - - msg2 "mount root-image" - mount -t aufs -o br=${work_dir}/pkgs-image:${work_dir}/root-image=ro none ${work_dir}/pkgs-image - - if [ ! -z "${desktop}" ] ; then - msg2 "mount ${desktop}-image" - mount -t aufs -o remount,append:${work_dir}/${desktop}-image=ro none ${work_dir}/pkgs-image - fi - - download_to_cache "${work_dir}/pkgs-image" "${cache_pkgs}" "${xorg_packages}" - copy_cache_pkgs - - if [ ! -z "${xorg_packages_cleanup}" ]; then - for xorg_clean in ${xorg_packages_cleanup}; do - rm ${work_dir}/pkgs-image/opt/livecd/pkgs/${xorg_clean} - done - fi - - cp pacman-gfx.conf ${work_dir}/pkgs-image/opt/livecd - rm -r ${work_dir}/pkgs-image/var - - make_repo "${work_dir}/pkgs-image/opt/livecd/pkgs/gfx-pkgs" "${work_dir}/pkgs-image/opt/livecd/pkgs" - - configure_xorg_drivers - - umount -l ${work_dir}/pkgs-image - rm -R ${work_dir}/pkgs-image/.wh* - - if ${xorg_overlays}; then - make_free_overlay - make_non_free_overlay - fi - : > ${work_dir}/build.${FUNCNAME} - msg "Done pkgs-image" - fi -} - -make_lng_image() { - if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then - msg "Prepare lng-image" - mkdir -p ${work_dir}/lng-image/opt/livecd/lng - - if [ ! -z "$(mount -l | grep lng-image)" ]; then - umount -l ${work_dir}/lng-image - fi - - msg2 "mount root-image" - mount -t aufs -o br=${work_dir}/lng-image:${work_dir}/root-image=ro none ${work_dir}/lng-image - - if [ ! -z "${desktop}" ] ; then - msg2 "mount ${desktop}-image" - mount -t aufs -o remount,append:${work_dir}/${desktop}-image=ro none ${work_dir}/lng-image - fi - - if ${kde_lng_packages}; then - download_to_cache "${work_dir}/lng-image" "${cache_lng}" "${lng_packages} ${lng_packages_kde}" - copy_cache_lng - else - download_to_cache "${work_dir}/lng-image" "${cache_lng}" "${lng_packages}" - copy_cache_lng - fi - - if [ ! -z "${lng_packages_cleanup}" ]; then - for lng_clean in ${lng_packages_cleanup}; do - rm ${work_dir}/lng-image/opt/livecd/lng/${lng_clean} - done - fi - - cp pacman-lng.conf ${work_dir}/lng-image/opt/livecd - rm -r ${work_dir}/lng-image/var - - make_repo ${work_dir}/lng-image/opt/livecd/lng/lng-pkgs ${work_dir}/lng-image/opt/livecd/lng - - umount -l ${work_dir}/lng-image - - rm -R ${work_dir}/lng-image/.wh* - : > ${work_dir}/build.${FUNCNAME} - msg "Done lng-image" - fi -} - load_desktop_definition(){ if [ -e Packages-Xfce ] ; then pkgsfile="Packages-Xfce" diff --git a/lib/util-livecd.sh b/lib/util-livecd.sh index 5776519..7cc89b9 100644 --- a/lib/util-livecd.sh +++ b/lib/util-livecd.sh @@ -523,7 +523,9 @@ configure_displaymanager(){ chroot-run $1 groupadd autologin chroot-run $1 gpasswd -a ${username} autologin &> /dev/null - #chroot-run $1 chmod +r /etc/lightdm/lightdm.conf + + chmod +r $1/etc/lightdm/lightdm.conf + # livecd fix #mkdir -p $1/var/lib/lightdm-data diff --git a/lib/util-pkg.sh b/lib/util-pkg.sh index 6132263..373c7fa 100644 --- a/lib/util-pkg.sh +++ b/lib/util-pkg.sh @@ -9,6 +9,15 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. +load_sets(){ + local prof temp + for item in $(ls ${profiledir}/*.set); do + temp=${item##*/} + prof=${prof:-}${prof:+|}${temp%.set} + done + echo $prof +} + eval_profile(){ eval "case $1 in $(load_sets)) is_profile=true ;; diff --git a/lib/util.sh b/lib/util.sh index fc8d6ef..4bc63a0 100644 --- a/lib/util.sh +++ b/lib/util.sh @@ -369,12 +369,3 @@ load_pacman_conf(){ return 0 } - -load_sets(){ - local prof temp - for item in $(ls ${profiledir}/*.set); do - temp=${item##*/} - prof=${prof:-}${prof:+|}${temp%.set} - done - echo $prof -}