(release/25.2) rootless: fix dangling screen pixmap on RootlessUpdateScreenPixmap() OOM #17227
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build X servers | |
| permissions: | |
| contents: write | |
| env: | |
| MESON_BUILDDIR: "__BUILD" | |
| X11_PREFIX: /home/runner/x11 | |
| X11_BUILD_DIR: /home/runner/work/xserver/xserver/WORK/sources/3rdparty | |
| on: | |
| push: | |
| pull_request: | |
| jobs: | |
| ubuntu-fetch-pkg: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: ./.github/actions/ubuntu-fetch-pkg | |
| xserver-build-ubuntu-no-gbm: | |
| env: | |
| MESON_ARGS: -Dprefix=/usr -Dxephyr=true -Dwerror=true -Dxcsecurity=true -Dgbm=false -Dxorg=true -Dxvfb=true -Dxnest=true -Dxfbdev=true -Dtest_xephyr_gles=false | |
| LIBGL_ALWAYS_SOFTWARE: 1 | |
| GALLIUM_DRIVER: llvmpipe | |
| PIGLIT_PLATFORM: x11_egl | |
| runs-on: ubuntu-latest | |
| needs: ubuntu-fetch-pkg | |
| steps: | |
| - name: Check out repository code | |
| uses: actions/checkout@v4 | |
| - uses: ./.github/actions/ubuntu-install-pkg | |
| - name: prepare build environment | |
| run: | | |
| MACHINE=`gcc -dumpmachine` | |
| echo "MACHINE=$MACHINE" >> "$GITHUB_ENV" | |
| echo "PKG_CONFIG_PATH=$X11_PREFIX/share/pkgconfig:$X11_PREFIX/lib/$MACHINE/pkgconfig:$X11_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" >> "$GITHUB_ENV" | |
| sudo chown root /bin/tar && sudo chmod u+s /bin/tar | |
| - name: X11 prereq cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ${{ env.X11_PREFIX }} | |
| ${{ env.X11_BUILD_DIR }}/xts | |
| ${{ env.X11_BUILD_DIR }}/piglit | |
| key: ${{ runner.name }}-x11-deps-${{ hashFiles('.github/scripts/ubuntu/install-prereq.sh') }} | |
| restore-keys: ${{ runner.name }}-x11-deps- | |
| - name: build and test | |
| run: .github/scripts/ubuntu/run-xserver-build-and-test.sh | |
| - name: archive build logs | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: build-logs | |
| path: | | |
| __BUILD/meson-logs/* | |
| __BUILD/test/piglit-results/* | |
| xserver-build-ubuntu: | |
| env: | |
| MESON_ARGS: -Dprefix=/usr -Dxephyr=true -Dwerror=true -Dxcsecurity=true -Dxorg=true -Dxvfb=true -Dxnest=true -Dxfbdev=true -Dtest_xephyr_gles=false | |
| LIBGL_ALWAYS_SOFTWARE: 1 | |
| GALLIUM_DRIVER: llvmpipe | |
| PIGLIT_PLATFORM: x11_egl | |
| runs-on: ubuntu-latest | |
| needs: ubuntu-fetch-pkg | |
| steps: | |
| - name: Check out repository code | |
| uses: actions/checkout@v6 | |
| - uses: ./.github/actions/ubuntu-install-pkg | |
| - name: prepare build environment | |
| run: | | |
| MACHINE=`gcc -dumpmachine` | |
| echo "MACHINE=$MACHINE" >> "$GITHUB_ENV" | |
| echo "PKG_CONFIG_PATH=$X11_PREFIX/share/pkgconfig:$X11_PREFIX/lib/$MACHINE/pkgconfig:$X11_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" >> "$GITHUB_ENV" | |
| - name: X11 prereq cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ${{ env.X11_PREFIX }} | |
| ${{ env.X11_BUILD_DIR }}/xts | |
| ${{ env.X11_BUILD_DIR }}/piglit | |
| key: ${{ runner.name }}-x11-deps-${{ hashFiles('.github/scripts/ubuntu/install-prereq.sh') }} | |
| restore-keys: ${{ runner.name }}-x11-deps- | |
| - name: build and test | |
| run: .github/scripts/ubuntu/run-xserver-build-and-test.sh | |
| - name: archive build logs | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: build-logs | |
| path: | | |
| __BUILD/meson-logs/* | |
| __BUILD/test/piglit-results/* | |
| drivers-prepare-ubuntu: | |
| env: | |
| MESON_ARGS: -Dprefix=/home/runner/x11 -Dxorg-sdk=true -Dxorg=false -Dxephyr=false -Dwerror=false -Dxcsecurity=false -Dxorg=true -Dxvfb=false -Dxnest=false -Dxfbdev=false | |
| runs-on: ubuntu-latest | |
| needs: ubuntu-fetch-pkg | |
| steps: | |
| - name: Check out repository code | |
| uses: actions/checkout@v6 | |
| - uses: ./.github/actions/ubuntu-install-pkg | |
| - name: prepare build environment | |
| run: | | |
| MACHINE=`gcc -dumpmachine` | |
| echo "MACHINE=$MACHINE" >> "$GITHUB_ENV" | |
| echo "PKG_CONFIG_PATH=$X11_PREFIX/share/pkgconfig:$X11_PREFIX/lib/$MACHINE/pkgconfig:$X11_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" >> "$GITHUB_ENV" | |
| - name: X11 prereq cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ${{ env.X11_PREFIX }} | |
| ${{ env.X11_BUILD_DIR }}/xts | |
| ${{ env.X11_BUILD_DIR }}/piglit | |
| key: drivers-deps-${{ github.sha }} | |
| restore-keys: drivers-deps-${{ github.sha }} | |
| - name: generic prereq and xserver | |
| run: .github/scripts/ubuntu/install-prereq-drivers.sh | |
| drivers-build-ubuntu: | |
| needs: | |
| - ubuntu-fetch-pkg | |
| - drivers-prepare-ubuntu | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| driver: | |
| - input-elographics:25.0.0 | |
| - input-evdev:25.0.0 | |
| - input-joystick:25.0.0 | |
| - input-keyboard:25.0.0 | |
| - input-libinput:25.0.0 | |
| - input-mouse:25.0.0 | |
| - input-synaptics:25.0.0 | |
| - input-vmmouse:25.0.0 | |
| - input-void:25.0.0 | |
| - input-wacom:25.0.0 | |
| - video-amdgpu:25.0.0 | |
| - video-apm:25.0.0 | |
| - video-ark:25.0.0 | |
| - video-ast:25.0.0 | |
| - video-ati:25.0.0 | |
| - video-chips:25.0.0 | |
| - video-cirrus:25.0.0 | |
| - video-dummy:25.0.0 | |
| - video-fbdev:25.0.0 | |
| - video-freedreno:25.0.0 | |
| - video-geode:25.0.0 | |
| - video-i128:25.0.0 | |
| - video-i740:25.0.0 | |
| - video-intel:25.0.1 | |
| - video-mach64:25.0.0 | |
| - video-mga:25.0.0 | |
| - video-neomagic:25.0.0 | |
| - video-nested:25.0.0 | |
| - video-nouveau:25.0.0 | |
| - video-nv:25.0.0 | |
| - video-omap:25.0.0 | |
| - video-qxl:25.0.0 | |
| - video-r128:25.0.0 | |
| - video-rendition:25.0.0 | |
| - video-s3virge:25.0.0 | |
| - video-savage:25.0.0 | |
| - video-siliconmotion:25.0.0 | |
| - video-sis:25.0.0 | |
| - video-sisusb:25.0.0 | |
| - video-suncg14:25.0.0 | |
| - video-suncg3:25.0.0 | |
| - video-suncg6:25.0.0 | |
| - video-sunffb:25.0.0 | |
| - video-suntcx:25.0.0 | |
| - video-sunleo:25.0.0 | |
| - video-tdfx:25.0.0 | |
| - video-trident:25.0.0 | |
| - video-vesa:25.0.0 | |
| - video-vmware:25.0.0 | |
| - video-v4l:25.0.1 | |
| - video-vbox:25.0.0 | |
| - video-voodoo:25.0.0 | |
| - video-xgi:25.0.0 | |
| steps: | |
| - name: Check out repository code | |
| uses: actions/checkout@v4 | |
| - uses: ./.github/actions/ubuntu-install-pkg | |
| - name: prepare build environment | |
| run: | | |
| MACHINE=`gcc -dumpmachine` | |
| echo "MACHINE=$MACHINE" >> "$GITHUB_ENV" | |
| echo "PKG_CONFIG_PATH=$X11_PREFIX/share/pkgconfig:$X11_PREFIX/lib/$MACHINE/pkgconfig:$X11_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" >> "$GITHUB_ENV" | |
| - name: X11 prereq cache | |
| uses: actions/cache/restore@v5 | |
| with: | |
| path: | | |
| ${{ env.X11_PREFIX }} | |
| ${{ env.X11_BUILD_DIR }}/xts | |
| ${{ env.X11_BUILD_DIR }}/piglit | |
| key: drivers-deps-${{ github.sha }} | |
| fail-on-cache-miss: true | |
| - name: compile driver ${{ matrix.driver }} | |
| run: .github/scripts/ubuntu/compile-driver-single.sh ${{ matrix.driver }} | |
| xserver-build-mingw32-ubuntu: | |
| runs-on: ubuntu-latest | |
| env: | |
| MESON_ARGS: -Dprefix=/home/runner/x11 --cross-file=.github/scripts/mingw32/cross-i686-w64-mingw32.txt -Dwerror=true -Dglx=false -Dlisten_tcp=true -Dxvmc=true -Dxv=true -Dxvfb=true -Dxnest=true -Dxephyr=true -Dxfbdev=false | |
| needs: ubuntu-fetch-pkg | |
| steps: | |
| - name: Check out repository code | |
| uses: actions/checkout@v6 | |
| - uses: ./.github/actions/ubuntu-install-pkg | |
| - name: prepare build environment | |
| run: | | |
| MACHINE=`gcc -dumpmachine` | |
| echo "MACHINE=$MACHINE" >> "$GITHUB_ENV" | |
| echo "PKG_CONFIG_PATH=$X11_PREFIX/share/pkgconfig:$X11_PREFIX/lib/$MACHINE/pkgconfig:$X11_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" >> "$GITHUB_ENV" | |
| - name: X11 prereq cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ${{ env.X11_PREFIX }} | |
| ${{ env.X11_BUILD_DIR }}/xts | |
| ${{ env.X11_BUILD_DIR }}/piglit | |
| key: ${{ runner.name }}-x11-deps-${{ hashFiles('.github/scripts/mingw32/cross-prereqs-build.sh') }} | |
| restore-keys: ${{ runner.name }}-x11-deps- | |
| - name: install crosscompiler | |
| run: sudo apt-get install -y mingw-w64-tools gcc-mingw-w64 gcc-mingw-w64-i686 libz-mingw-w64-dev | |
| - name: cross prereq | |
| run: sudo .github/scripts/mingw32/cross-prereqs-build.sh i686-w64-mingw32 | |
| - name: build | |
| run: .github/scripts/meson-build.sh --run-install | |
| xserver-build-macos: | |
| env: | |
| MESON_ARGS: -Dprefix=/tmp -Dglx=false -Dxnest=false -Dxfbdev=false | |
| X11_PREFIX: /Users/runner/x11 | |
| X11_BUILD_DIR: /Users/runner/build-deps | |
| runs-on: macos-latest | |
| steps: | |
| - name: Check out repository code | |
| uses: actions/checkout@v6 | |
| - name: prepare build environment | |
| run: | | |
| echo "PKG_CONFIG_PATH=$X11_PREFIX/share/pkgconfig:$X11_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" >> "$GITHUB_ENV" | |
| - name: homebrew cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: /Users/runner/Library/Caches/Homebrew | |
| key: ${{ runner.os }}-homebrew-cache-${{ hashFiles('.github/scripts/macos/install-pkg.sh') }} | |
| restore-keys: ${{ runner.os }}-homebrew-cache- | |
| - name: pkg install | |
| run: .github/scripts/macos/install-pkg.sh | |
| - name: X11 prereq cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ${{ env.X11_PREFIX }} | |
| key: ${{ runner.os }}-x11-deps-${{ hashFiles('.github/scripts/macos/install-prereq.sh') }} | |
| restore-keys: ${{ runner.os }}-x11-deps- | |
| - name: generic prereq | |
| run: .github/scripts/macos/install-prereq.sh | |
| - name: build | |
| run: .github/scripts/meson-build.sh | |
| - name: tests (may fail) | |
| continue-on-error: true | |
| run: meson test -C "${{ env.MESON_BUILDDIR }}" --print-errorlogs -j1 || true | |
| env: | |
| XTEST_DIR: ${{ env.X11_BUILD_DIR }}/xts | |
| PIGLIT_DIR: ${{ env.X11_BUILD_DIR }}/piglit | |
| - name: archive build logs | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: build-logs-macos | |
| path: | | |
| __BUILD/meson-logs/* | |
| __BUILD/test/piglit-results/* | |
| - name: ddx build check | |
| run: .github/scripts/check-ddx-build.sh | |
| - name: manpage check | |
| run: .github/scripts/manpages-check | |
| xserver-build-freebsd: | |
| runs-on: ubuntu-latest | |
| needs: ubuntu-fetch-pkg | |
| env: | |
| MYTOKEN : ${{ secrets.MYTOKEN }} | |
| MESON_ARGS: -Dprefix=/usr -Dxephyr=true -Dwerror=true -Dxcsecurity=true -Dxorg=true -Dxvfb=true -Dxnest=true -Dxfbdev=false | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: ./.github/actions/ubuntu-pkg-cache | |
| - name: run in freebsd VM | |
| id: xserver-build | |
| uses: vmactions/freebsd-vm@v1 | |
| with: | |
| envs: 'MYTOKEN MESON_ARGS' | |
| usesh: true | |
| release: "14.3" | |
| run: ./.github/scripts/freebsd/run-xserver-build.sh | |
| xserver-build-dragonflybsd: | |
| runs-on: ubuntu-latest | |
| needs: ubuntu-fetch-pkg | |
| env: | |
| MESON_ARGS: -Dwerror=true -Dxephyr=true -Dxorg=true -Dxvfb=true -Dxnest=true -Dxfbdev=false | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: ./.github/actions/ubuntu-pkg-cache | |
| - name: run in DragonFlyBSD VM | |
| id: xserver-build | |
| uses: vmactions/dragonflybsd-vm@v1.1.4 | |
| with: | |
| envs: 'MESON_ARGS' | |
| usesh: true | |
| release: "6.4.2" | |
| run: ./.github/scripts/DragonFlyBSD/run-xserver-build.sh | |
| xserver-build-netbsd: | |
| runs-on: ubuntu-latest | |
| needs: ubuntu-fetch-pkg | |
| env: | |
| MESON_ARGS: -Dwerror=true -Dxephyr=true -Dxorg=true -Dxvfb=true -Dxnest=true -Dxfbdev=false | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: ./.github/actions/ubuntu-pkg-cache | |
| - uses: vmactions/netbsd-vm@v1.2.3 | |
| id: vm | |
| with: | |
| envs: 'MESON_ARGS' | |
| usesh: true | |
| release: '10.1' | |
| run: ./.github/scripts/netbsd/run-xserver-build.sh | |
| xserver-build-alpine: | |
| runs-on: ubuntu-latest | |
| needs: ubuntu-fetch-pkg | |
| container: | |
| image: alpine:latest | |
| env: | |
| MESON_ARGS: -Dprefix=/usr -Dxcsecurity=true -Dxorg=true -Dxephyr=true -Dxvfb=true -Dxnest=true -Dxfbdev=false -Dsystemd_logind=false -Dwerror=false | |
| steps: | |
| # actions/checkout is a JS action; GitHub's bundled Node is | |
| # glibc-linked, so musl-based Alpine needs gcompat to run it. | |
| - name: prepare JS-action runtime | |
| run: apk add --no-cache git gcompat libstdc++ nodejs | |
| - name: Check out repository code | |
| uses: actions/checkout@v6 | |
| - name: build | |
| run: ./.github/scripts/alpine/run-xserver-build.sh | |
| xserver-build-cygwin: | |
| runs-on: windows-latest | |
| steps: | |
| - name: Cygwin packages cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: D:\cygwin-packages | |
| key: ${{ runner.os }}-packages | |
| restore-keys: ${{ runner.os }}-packages | |
| - uses: cygwin/cygwin-install-action@master | |
| with: | |
| # FIXME: temporary workaround for cygwin mirror problem | |
| # https://github.com/cygwin/cygwin-install-action/issues/39 | |
| check-installer-sig: false | |
| platform: x86_64 | |
| site: | | |
| https://mirror.wisegs.com/cygwin/ | |
| https://mirrors.sonic.net/cygwin/ | |
| https://mirror.cpsc.ucalgary.ca/mirror/cygwin.com/ | |
| https://muug.ca/mirror/cygwin/ | |
| https://mirror.csclub.uwaterloo.ca/cygwin/ | |
| https://cygwin.mirror.gtcomm.net/ | |
| http://cygwin.mirror.rafal.ca/ | |
| packages: >- | |
| binutils, bison, ccache, flex, gcc-core, meson, ninja, | |
| pkg-config, python39, windowsdriproto, xorgproto, | |
| libepoxy-devel, libfontenc-devel, libfreetype-devel, | |
| libGL-devel, libnettle-devel, libpixman1-devel, | |
| libtirpc-devel, libXRes-devel, libXaw-devel, libXdmcp-devel, | |
| libXext-devel, libXfont2-devel, libXi-devel, | |
| libXinerama-devel, libXmu-devel, libXpm-devel, | |
| libXrender-devel, libXtst-devel, libxcb-composite-devel, | |
| libxcb-ewmh-devel, libxcb-icccm-devel, libxcb-image-devel, | |
| libxcb-keysyms-devel, libxcb-randr-devel, | |
| libxcb-render-devel, libxcb-render-util-devel, | |
| libxcb-shape-devel, libxcb-util-devel, libxcb-xkb-devel, | |
| libxcvt-devel, libxkbfile-devel, font-util, | |
| khronos-opengl-registry, python39-lxml, xkbcomp-devel, | |
| xkeyboard-config, git | |
| - name: Cygwin ccache cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: D:\cygwin\home\runneradmin\.ccache | |
| key: ${{ runner.os }}-ccache | |
| restore-keys: ${{ runner.os }}-ccache | |
| - run: git config --global --add safe.directory /cygdrive/d/a/xserver/xserver | |
| - uses: actions/checkout@v4 | |
| with: | |
| set-safe-directory: false | |
| - run: | | |
| PATH="/usr/bin:$(cygpath "$SYSTEMROOT")/system32" | |
| shell: bash --noprofile --norc -e -o igncr '{0}' | |
| - run: | | |
| bash ./.github/scripts/Cygwin/build.sh | |
| xserver-build-arch: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: # needed for `git describe` to work | |
| fetch-tags: true | |
| fetch-depth: 0 | |
| - name: determine pkg version from git | |
| run: git describe | sed -e 's~^xlibre-xserver-~~; s~-[0-9a-z]*$~~' | tr '-' '.' > .github/arch/GIT_VERSION | |
| - name: build arch package | |
| uses: callmetango/archlinux-build-package-action@v0.6.0 | |
| with: | |
| path: .github/arch | |
| makepkg-opts: -cfse --noconfirm | |
| - name: upload-artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: arch-binpkg | |
| path: | | |
| ./.github/arch/xlibre-xserver-*.tar.zst | |
| check-sign-off: | |
| name: Check Signed-Off-By | |
| if: github.event_name == 'pull_request' | |
| runs-on: ubuntu-latest | |
| env: | |
| FORCE_COLOR: 1 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: live627/check-pr-signoff-action@v1 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| release: | |
| name: Release pushed tag | |
| runs-on: ubuntu-latest | |
| if: ${{ startsWith(github.ref, 'refs/tags/xlibre-xserver-') }} | |
| needs: | |
| - xserver-build-alpine | |
| - xserver-build-ubuntu | |
| - drivers-build-ubuntu | |
| - xserver-build-mingw32-ubuntu | |
| - xserver-build-macos | |
| - xserver-build-freebsd | |
| - xserver-build-dragonflybsd | |
| - xserver-build-netbsd | |
| - xserver-build-arch | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Create release | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| tag: ${{ github.ref_name }} | |
| run: .github/scripts/github/make-release |