diff --git a/data/liveinst/liveinst b/data/liveinst/liveinst index 4ea37b44fb4..f956aee9fea 100755 --- a/data/liveinst/liveinst +++ b/data/liveinst/liveinst @@ -20,10 +20,23 @@ BACKEND_READY_FLAG=/run/anaconda/backend_ready +WAYLAND_DISPLAY_SOCKET=/tmp/anaconda-wldisplay + +# Detect and save the wayland socket before re-exec +if [ -n "$WAYLAND_DISPLAY" ]; then + if [ -e "$WAYLAND_DISPLAY_SOCKET" ]; then + rm -f "${WAYLAND_DISPLAY_SOCKET}" + fi + touch "${WAYLAND_DISPLAY_SOCKET}" + echo "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}" > ${WAYLAND_DISPLAY_SOCKET} +fi + # The command needs to be run with root privileges, so if it was started # unprivileged, restart running as root. if [ "$(id -u)" -ne 0 ]; then - xhost +si:localuser:root + if [ -z "$WAYLAND_DISPLAY" ]; then + xhost +si:localuser:root + fi pkexec "$0" "$@" exit $? fi @@ -38,6 +51,19 @@ if [ -n "${PKEXEC_UID}" ]; then done fi +# pkexec clears WAYLAND_DISPLAY from environment +if [ -z "$WAYLAND_DISPLAY" ] && [ -e "$WAYLAND_DISPLAY_SOCKET" ]; then + WAYLAND_DISPLAY=$(cat "${WAYLAND_DISPLAY_SOCKET}") + export WAYLAND_DISPLAY +fi + +# use the correct home and config directories for system settings +PKEXEC_USER=$(id -un "${PKEXEC_UID}") +HOME=$(bash -c "cd ~${PKEXEC_USER} && pwd") +export HOME +XDG_CONFIG_HOME="${HOME}/.config" +export XDG_CONFIG_HOME + # Allow running another command in the place of anaconda, but in this same # environment. This allows storage testing to make use of all the module # loading and lvm control in this file, too. @@ -175,8 +201,10 @@ start_anaconda() { $ANACONDA "$@" } -# Force the X11 backend since sudo and wayland do not mix -export GDK_BACKEND=x11 +# If no wayland socket is set, force x11 so that it loads correctly +if [ -z "$WAYLAND_DISPLAY" ]; then + export GDK_BACKEND=x11 +fi if [ -x /usr/bin/udisks ]; then /usr/bin/udisks --inhibit -- start_anaconda "$@" diff --git a/dockerfile/anaconda-iso-creator/Dockerfile b/dockerfile/anaconda-iso-creator/Dockerfile index 98e32b9b7a0..27bc24ad800 100644 --- a/dockerfile/anaconda-iso-creator/Dockerfile +++ b/dockerfile/anaconda-iso-creator/Dockerfile @@ -43,6 +43,7 @@ RUN set -ex; \ COPY ["lorax-build", "/"] COPY ["lorax-build-webui", "/"] COPY ["adjust-templates-for-webui.patch", "/"] +COPY ["adjust-templates-for-weston.patch", "/"] RUN mkdir /lorax /anaconda-rpms /images diff --git a/dockerfile/anaconda-iso-creator/adjust-templates-for-weston.patch b/dockerfile/anaconda-iso-creator/adjust-templates-for-weston.patch new file mode 100644 index 00000000000..0a0642bb9e6 --- /dev/null +++ b/dockerfile/anaconda-iso-creator/adjust-templates-for-weston.patch @@ -0,0 +1,56 @@ +From 3b6fcfc755ee9b2a5b4de7965ee2e3fc41045379 Mon Sep 17 00:00:00 2001 +From: Neal Gompa +Date: Thu, 18 Jan 2024 11:59:00 -0500 +Subject: [PATCH] templates.d/99-generic/runtime-cleanup: Do not purge sound + packages + +These cause the build to fail when adding Weston to the boot.iso. +--- + share/templates.d/99-generic/runtime-cleanup.tmpl | 10 +--------- + 1 file changed, 1 insertion(+), 9 deletions(-) + +diff --git a/share/templates.d/99-generic/runtime-cleanup.tmpl b/share/templates.d/99-generic/runtime-cleanup.tmpl +index aad31f77..e4148b7c 100644 +--- a/share/templates.d/99-generic/runtime-cleanup.tmpl ++++ b/share/templates.d/99-generic/runtime-cleanup.tmpl +@@ -9,8 +9,6 @@ remove usr/share/i18n + ## perl needed for powerpc-utils + ## perl is needed by /usr/bin/rxe_cfg from libibverbs + +-## no sound support, thanks +-removepkg flac-libs libsndfile pipewire pulseaudio* rtkit sound-theme-freedesktop wireplumber* + ## we don't create new initramfs/bootloader conf inside anaconda + ## (that happens inside the target system after we install dracut/grubby) + removepkg dracut-network grubby anaconda-dracut +@@ -52,7 +50,6 @@ removepkg mtools glibc-gconv-extra + + ## various other things we remove to save space + removepkg diffutils file +-removepkg libasyncns + removepkg lvm2-libs + removepkg mobile-broadband-provider-info + removepkg rmt rpcbind squashfs-tools +@@ -196,7 +193,6 @@ removefrom libidn2 /usr/share/locale/* + removefrom libnotify /usr/bin/* + removefrom libsemanage /etc/selinux/* + removefrom libstdc++ /usr/share/* +-removefrom libvorbis /usr/${libdir}/libvorbisenc.* + removefrom libxml2 /usr/bin/* + removefrom linux-firmware /usr/lib/firmware/dvb* + removefrom linux-firmware /usr/lib/firmware/*_12mhz* +@@ -365,11 +361,7 @@ removefrom gstreamer1-plugins-base --allbut \ + removepkg geoclue2 + + ## And remove the packages that those extra libraries pulled in +-removepkg cdparanoia-libs opus libtheora libvisual flac-libs gsm avahi-glib avahi-libs \ +- ModemManager-glib +- +-## metacity requires libvorbis and libvorbisfile, but enc/dec are no longer needed +-removefrom libvorbis --allbut /usr/${libdir}/libvorbisfile.* /usr/${libdir}/libvorbis.* ++removepkg cdparanoia-libs libvisual avahi-glib avahi-libs ModemManager-glib + + ## Remove build-id links, they are used with debuginfo + remove /usr/lib/.build-id +-- +2.43.0 + diff --git a/dockerfile/anaconda-iso-creator/lorax-build b/dockerfile/anaconda-iso-creator/lorax-build index 8deb0affb86..2bd251ea274 100755 --- a/dockerfile/anaconda-iso-creator/lorax-build +++ b/dockerfile/anaconda-iso-creator/lorax-build @@ -36,12 +36,16 @@ mkdir -p $REPO_DIR cp -a $INPUT_RPMS/* $REPO_DIR || echo "RPM files can't be copied!" # We could just do the build with official repositories only createrepo_c $REPO_DIR +cp -r /usr/share/lorax/templates.d/ /lorax/ +patch -p2 -i /adjust-templates-for-weston.patch + # build boot.iso with our rpms . /etc/os-release # The download.fedoraproject.org automatic redirector often selects download-ib01.f.o. for GitHub's cloud, which is too unreliable; use a mirror # The --volid argument can cause different network interface naming: https://github.com/rhinstaller/kickstart-tests/issues/448 lorax -p Fedora -v "$VERSION_ID" -r "$VERSION_ID" \ --volid Fedora-S-dvd-x86_64-rawh \ + --sharedir ./templates.d/99-generic/ \ -s http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/ \ -s file://$REPO_DIR/ \ "$@" \ diff --git a/dockerfile/anaconda-iso-creator/lorax-build.j2 b/dockerfile/anaconda-iso-creator/lorax-build.j2 index b568c8468ce..d3bc7ef83c1 100755 --- a/dockerfile/anaconda-iso-creator/lorax-build.j2 +++ b/dockerfile/anaconda-iso-creator/lorax-build.j2 @@ -29,6 +29,9 @@ mkdir -p $REPO_DIR cp -a $INPUT_RPMS/* $REPO_DIR || echo "RPM files can't be copied!" # We could just do the build with official repositories only createrepo_c $REPO_DIR +cp -r /usr/share/lorax/templates.d/ /lorax/ +patch -p2 -i /adjust-templates-for-weston.patch + # build boot.iso with our rpms . /etc/os-release # The download.fedoraproject.org automatic redirector often selects download-ib01.f.o. for GitHub's cloud, which is too unreliable; use a mirror @@ -40,6 +43,7 @@ lorax -p Fedora -v "$VERSION_ID" -r "$VERSION_ID" \ {% else %} --volid Fedora-S-dvd-x86_64-f{$ distro_release $} \ {% endif %} + --sharedir ./templates.d/99-generic/ \ -s http://dl.fedoraproject.org/pub/fedora/linux/development/{$ distro_release $}/Everything/x86_64/os/ \ {% elif distro_name == "rhel" and distro_release == 10 %} MAJOR_VERSION=${VERSION_ID%%.*}