From 705d1ce6795a110231e9e02f05f869ff32b9098f Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Thu, 26 Jun 2025 14:42:09 +0100 Subject: [PATCH 01/26] .github: export MACHINE the right way Otherwise, paths constructed on "build xserver sdk" step aren't valid. Signed-off-by: Mike Gelfand --- .github/workflows/build-xserver.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-xserver.yml b/.github/workflows/build-xserver.yml index d1d8d2bc1..c7cdda103 100644 --- a/.github/workflows/build-xserver.yml +++ b/.github/workflows/build-xserver.yml @@ -20,7 +20,8 @@ jobs: - name: prepare build environment run: | - export MACHINE=`gcc -dumpmachine` + 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 @@ -78,7 +79,8 @@ jobs: - name: prepare build environment run: | - export MACHINE=`gcc -dumpmachine` + 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 From bc8518f8f8357b7958c6d9979e6206490febc3e1 Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Thu, 26 Jun 2025 13:58:15 +0100 Subject: [PATCH 02/26] .github: drop sudo for prerequisites builds Files aren't being installed into privileged directories as part of the build but instead into $X11_PREFIX which resides in current user's home directory. Change the cache key to avoid reusing old cache entries, which would lead to permission errors. Signed-off-by: Mike Gelfand --- .github/workflows/build-xserver.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-xserver.yml b/.github/workflows/build-xserver.yml index c7cdda103..2a83db818 100644 --- a/.github/workflows/build-xserver.yml +++ b/.github/workflows/build-xserver.yml @@ -42,11 +42,11 @@ jobs: ${{ env.X11_PREFIX }} ${{ env.X11_BUILD_DIR }}/xts ${{ env.X11_BUILD_DIR }}/piglit - key: ${{ runner.os }}-x11-deps-${{ hashFiles('.github/scripts/install-prereq.sh') }} - restore-keys: ${{ runner.os }}-x11-deps- + key: ${{ runner.name }}-x11-deps-${{ hashFiles('.github/scripts/install-prereq.sh') }} + restore-keys: ${{ runner.name }}-x11-deps- - name: generic prereq - run: sudo .github/scripts/install-prereq.sh + run: .github/scripts/install-prereq.sh - name: build run: .gitlab-ci/meson-build.sh @@ -101,11 +101,11 @@ jobs: ${{ env.X11_PREFIX }} ${{ env.X11_BUILD_DIR }}/xts ${{ env.X11_BUILD_DIR }}/piglit - key: ${{ runner.os }}-x11-deps-${{ hashFiles('.github/scripts/install-prereq.sh') }} - restore-keys: ${{ runner.os }}-x11-deps- + key: ${{ runner.name }}-x11-deps-${{ hashFiles('.github/scripts/install-prereq.sh') }} + restore-keys: ${{ runner.name }}-x11-deps- - name: generic prereq - run: sudo .github/scripts/install-prereq.sh + run: .github/scripts/install-prereq.sh - name: build xserver sdk run: | From 5e98d8c571f66233649fce71c3625b044f23f5e3 Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Thu, 26 Jun 2025 13:49:10 +0100 Subject: [PATCH 03/26] .gitlab-ci: only look for files when validating man pages Build directory may sometimes contain directories ending with a period and a digit, e.g. in my case * ./meson-private/cmake_xshmfence/CMakeFiles/4.0.3 * ./meson-private/__CMake_compiler_info__/CMakeFiles/4.0.3 Since man pages are files, filter out the rest. Signed-off-by: Mike Gelfand --- .gitlab-ci/manpages-check | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci/manpages-check b/.gitlab-ci/manpages-check index cf2b15349..5d189e7db 100755 --- a/.gitlab-ci/manpages-check +++ b/.gitlab-ci/manpages-check @@ -1,6 +1,6 @@ #!/bin/sh -find build/ -regex ".*\.[1-9]$" -exec grep -E \ +find build/ -type f -regex ".*\.[1-9]$" -exec grep -E \ @vendorversion@\|\ @xorgversion@\|\ @xservername@\|\ From 5ed2865bdd386120e3f29797a153574c97db724e Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Thu, 26 Jun 2025 14:16:43 +0100 Subject: [PATCH 04/26] .github: don't override env vars set externally Helpful for CI builds where we could be setting different paths on different runners (due to OS or something else). Signed-off-by: Mike Gelfand --- .github/scripts/conf.sh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/scripts/conf.sh b/.github/scripts/conf.sh index fd6fb5320..7a0576b7f 100644 --- a/.github/scripts/conf.sh +++ b/.github/scripts/conf.sh @@ -1,6 +1,8 @@ -export X11_PREFIX=/home/runner/x11 +export X11_PREFIX="${X11_PREFIX:-$HOME/x11}" +export X11_BUILD_DIR="${X11_BUILD_DIR:-$HOME/build-deps}" +export DRV_BUILD_DIR="${DRV_BUILD_DIR:-$HOME/build-drivers}" + +export FDO_CI_CONCURRENT=`nproc` + export PATH="$X11_PREFIX/bin:$PATH" export PKG_CONFIG_PATH="$X11_PREFIX/lib/x86_64-linux-gnu/pkgconfig:$X11_PREFIX/lib/pkgconfig:$X11_PREFIX/share/pkgconfig:$PKG_CONFIG_PATH" -export FDO_CI_CONCURRENT=`nproc` -export X11_BUILD_DIR=/home/runner/build-deps -export DRV_BUILD_DIR=/home/runner/build-drivers From 87c8520ba369fb7dd28de40152331e00fe118b4b Mon Sep 17 00:00:00 2001 From: callmetango Date: Thu, 26 Jun 2025 18:40:30 +0000 Subject: [PATCH 05/26] .github: Add new issue forms Add the following forms for issue creation: * Bug report * Feature request * Code cleanup * Documentation update * Organizational task * add issue type selection page on "New Issue" call * mention Github Discussions and the mailing list where appropriate Fixes #257 Signed-off-by: callmetango --- .github/ISSUE_TEMPLATE/01-bug-report.yml | 66 +++++++++++++++++++ .github/ISSUE_TEMPLATE/02-feature-request.yml | 49 ++++++++++++++ .github/ISSUE_TEMPLATE/03-code-cleanup.yml | 50 ++++++++++++++ .github/ISSUE_TEMPLATE/04-doc-update.yml | 39 +++++++++++ .github/ISSUE_TEMPLATE/05-org-task.yml | 44 +++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 8 +++ 6 files changed, 256 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/01-bug-report.yml create mode 100644 .github/ISSUE_TEMPLATE/02-feature-request.yml create mode 100644 .github/ISSUE_TEMPLATE/03-code-cleanup.yml create mode 100644 .github/ISSUE_TEMPLATE/04-doc-update.yml create mode 100644 .github/ISSUE_TEMPLATE/05-org-task.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml diff --git a/.github/ISSUE_TEMPLATE/01-bug-report.yml b/.github/ISSUE_TEMPLATE/01-bug-report.yml new file mode 100644 index 000000000..890e9568e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/01-bug-report.yml @@ -0,0 +1,66 @@ +name: 🐞 Bug report +description: Create a report to help us improve + +labels: [bug, needs-triage] +#type: bug + +body: + - type: markdown + attributes: + value: | + Please fill out the sections below to help everyone identify and fix the bug. If you have a general idea or question then please use the [discussions](https://github.com/orgs/X11Libre/discussions). + - type: dropdown + id: affected-version + attributes: + label: Select the version + options: + - 25.0.0.0 + - 25.0.0.1 + - Git master branch + - other or don't know + default: 1 + validations: + required: true + - type: textarea + id: description + attributes: + label: Describe your issue + placeholder: When I did X then Y happened. + validations: + required: true + - type: textarea + id: steps + attributes: + label: Steps to reproduce + placeholder: | + 1. Start ... + 2. Do this + 3. Do that + validations: + required: true + - type: textarea + id: expected + attributes: + label: What did you expect? + placeholder: I expected this to happen. + - type: textarea + id: environment + attributes: + label: Additional Information + description: Additional information you want to provide such as logs, system info, environment, screenshots, etc. + placeholder: | + Add any other context about the bug here. + - type: checkboxes + id: checks + attributes: + label: Extra fields + options: + - label: I have checked the existing [issues](https://github.com/X11Libre/xserver/issues) + required: true + - label: I have read the [Contributing Guidelines](https://github.com/X11Libre/xserver/blob/master/CONTRIBUTING.md) + required: true + - label: I'd like to work on this issue + - type: markdown + attributes: + value: | + Thanks for reporting this issue! We will get back to you as soon as possible. diff --git a/.github/ISSUE_TEMPLATE/02-feature-request.yml b/.github/ISSUE_TEMPLATE/02-feature-request.yml new file mode 100644 index 000000000..f9fa434e7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/02-feature-request.yml @@ -0,0 +1,49 @@ +name: ✨ Feature request +description: Suggest a feature for this software +labels: [enhancement, needs-triage] + +body: + - type: markdown + attributes: + value: | + Please fill out the sections below to properly describe the new software feature you are suggesting. If you have a general idea or question then please use the [discussions](https://github.com/orgs/X11Libre/discussions). + - type: textarea + id: description + attributes: + label: "Describe the feature" + placeholder: A thing in X that allows to do Y. + validations: + required: true + - type: textarea + id: rationale + attributes: + label: "It should be implemented because" + placeholder: Doing Y is needed for Z. + validations: + required: true + - type: textarea + id: alternative + attributes: + label: "What are the alternatives?" + placeholder: We could do A or B instead. + - type: textarea + id: context + attributes: + label: Additional context + description: Additional information you want to provide such as references to related issues or protocols, the implications on existing use cases, etc. + placeholder: | + Add any other context about the feature request here. + - type: checkboxes + id: checks + attributes: + label: Extra fields + options: + - label: I have checked the existing [issues](https://github.com/X11Libre/xserver/issues) + required: true + - label: I have read the [Contributing Guidelines](https://github.com/X11Libre/xserver/blob/master/CONTRIBUTING.md) + required: true + - label: I'd like to work on this issue + - type: markdown + attributes: + value: | + Thanks for your suggestion! Let's see together if it can be implemented. diff --git a/.github/ISSUE_TEMPLATE/03-code-cleanup.yml b/.github/ISSUE_TEMPLATE/03-code-cleanup.yml new file mode 100644 index 000000000..2c419e857 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/03-code-cleanup.yml @@ -0,0 +1,50 @@ +name: 🔧 Code cleanup +description: Level up the source code +labels: [code-cleanup, needs-triage] +#type: codecleanup + +body: + - type: markdown + attributes: + value: | + Please fill out the sections below to properly describe the code cleanup you are suggesting. If you have a general idea or question then please use the [discussions](https://github.com/orgs/X11Libre/discussions). + - type: textarea + id: description + attributes: + label: "Describe the cleanup" + placeholder: C in X needs to be changed into D. + validations: + required: true + - type: textarea + id: rationale + attributes: + label: "It should be done because" + placeholder: Having D is needed for E. + validations: + required: true + - type: textarea + id: alternative + attributes: + label: "What are the alternatives?" + placeholder: We could do A or B instead. + - type: textarea + id: context + attributes: + label: Additional context + description: Additional information you want to provide such as implications on existing code, how to ensure API/ABI stability, which tests are needed or to be run, related issues, etc. + placeholder: | + Add any other context about the cleanup here. + - type: checkboxes + id: checks + attributes: + label: Extra fields + options: + - label: I have checked the existing [issues](https://github.com/X11Libre/xserver/issues) + required: true + - label: I have read the [Contributing Guidelines](https://github.com/X11Libre/xserver/blob/master/CONTRIBUTING.md) + required: true + - label: I'd like to work on this issue + - type: markdown + attributes: + value: | + Thanks for looking at the source code! Let's see together how it can be improved. diff --git a/.github/ISSUE_TEMPLATE/04-doc-update.yml b/.github/ISSUE_TEMPLATE/04-doc-update.yml new file mode 100644 index 000000000..5d20ca6b6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/04-doc-update.yml @@ -0,0 +1,39 @@ +name: 🔖 Documentation update +description: Make your mark for better documentation + +labels: [documentation, needs-triage] +#type: docchange + +body: + - type: markdown + attributes: + value: | + Please fill out the sections below to help others understand our software. If you have a general idea or question then please use the [discussions](https://github.com/orgs/X11Libre/discussions). + - type: textarea + id: description + attributes: + label: Describe the update + placeholder: These things need to be better documented. + validations: + required: true + - type: textarea + id: environment + attributes: + label: Additional Information + description: Additional information you want to provide such as tickets related to changes in the software, affected files, screenshots, etc. + placeholder: | + Add any other context about the update here. + - type: checkboxes + id: checks + attributes: + label: Extra fields + options: + - label: I have checked the existing [issues](https://github.com/X11Libre/xserver/issues) + required: true + - label: I have read the [Contributing Guidelines](https://github.com/X11Libre/xserver/blob/master/CONTRIBUTING.md) + required: true + - label: I'd like to work on this issue + - type: markdown + attributes: + value: | + Thanks for requesting this update! We will get back to you as soon as possible. diff --git a/.github/ISSUE_TEMPLATE/05-org-task.yml b/.github/ISSUE_TEMPLATE/05-org-task.yml new file mode 100644 index 000000000..049b03baf --- /dev/null +++ b/.github/ISSUE_TEMPLATE/05-org-task.yml @@ -0,0 +1,44 @@ +name: ✅ Organizational task +description: Create a task for project organization + +labels: [needs-triage, organization] +#type: task + +body: + - type: markdown + attributes: + value: | + Please fill out the sections below to get organizational things done. If you have a general idea or question then please use the [discussions](https://github.com/orgs/X11Libre/discussions). + - type: textarea + id: description + attributes: + label: Describe the task + placeholder: These things need to be done. + validations: + required: true + - type: textarea + id: rationale + attributes: + label: "It should be done because" + placeholder: Doing Y is needed for Z. + - type: textarea + id: environment + attributes: + label: Additional Information + description: Additional information you want to provide such as the context for bigger tasks, the implicatons on existing workflows, related issues, etc. + placeholder: | + Add any other context about the task here. + - type: checkboxes + id: checks + attributes: + label: Extra fields + options: + - label: I have checked the existing [issues](https://github.com/X11Libre/xserver/issues) + required: true + - label: I have read the [Contributing Guidelines](https://github.com/X11Libre/xserver/blob/master/CONTRIBUTING.md) + required: true + - label: I'd like to work on this issue + - type: markdown + attributes: + value: | + Thanks for adding this task! We will get back to you as soon as possible. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..5d1b3a851 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: false +contact_links: + - name: XLibre Community Support + url: https://github.com/orgs/X11Libre/discussions + about: Please ask and answer questions here. + - name: Mailing List + url: https://www.freelists.org/list/xlibre + about: You can join the discussions on our mailing list. From b5d569a884c9c6749f3cf90eee913cc43d9e3cc9 Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Tue, 24 Jun 2025 22:50:14 +0100 Subject: [PATCH 06/26] xext: add/fix include guards where missing/broken Signed-off-by: Mike Gelfand --- Xext/geext_priv.h | 2 ++ Xext/panoramiXh.h | 6 +++++- Xext/xvdisp.h | 5 +++++ Xext/xvdix_priv.h | 2 ++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Xext/geext_priv.h b/Xext/geext_priv.h index 5774c7528..95aeb812d 100644 --- a/Xext/geext_priv.h +++ b/Xext/geext_priv.h @@ -2,7 +2,9 @@ * * Copyright © 2024 Enrico Weigelt, metux IT consult */ + #ifndef _XORG_GEEXT_PRIV_H +#define _XORG_GEEXT_PRIV_H #include diff --git a/Xext/panoramiXh.h b/Xext/panoramiXh.h index 2762a59ac..d92da7fd3 100644 --- a/Xext/panoramiXh.h +++ b/Xext/panoramiXh.h @@ -1,8 +1,10 @@ - /* * Server dispatcher function replacements */ +#ifndef XSERVER_PANORAMIXH_H +#define XSERVER_PANORAMIXH_H + extern int PanoramiXCreateWindow(ClientPtr client); extern int PanoramiXChangeWindowAttributes(ClientPtr client); extern int PanoramiXDestroyWindow(ClientPtr client); @@ -71,3 +73,5 @@ extern int connBlockScreenStart; extern xConnSetupPrefix connSetupPrefix; extern int (*SavedProcVector[256]) (ClientPtr client); + +#endif /* XSERVER_PANORAMIXH_H */ diff --git a/Xext/xvdisp.h b/Xext/xvdisp.h index 944959c99..55d21091f 100644 --- a/Xext/xvdisp.h +++ b/Xext/xvdisp.h @@ -1,2 +1,7 @@ +#ifndef XSERVER_XVDISP_H +#define XSERVER_XVDISP_H + extern void XineramifyXv(void); extern int xvUseXinerama; + +#endif /* XSERVER_XVDISP_H */ diff --git a/Xext/xvdix_priv.h b/Xext/xvdix_priv.h index d1ddb68f2..a64a5625a 100644 --- a/Xext/xvdix_priv.h +++ b/Xext/xvdix_priv.h @@ -2,7 +2,9 @@ * * Copyright © 2024 Enrico Weigelt, metux IT consult */ + #ifndef _XORG_XVDIX_PRIV_H +#define _XORG_XVDIX_PRIV_H #include From 7fbd8db7a4a4212e9aba5fc503fe8f3cf0e5adfd Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Tue, 24 Jun 2025 22:50:19 +0100 Subject: [PATCH 07/26] config: add/fix include guards where missing/broken Signed-off-by: Mike Gelfand --- config/config-backends.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config/config-backends.h b/config/config-backends.h index 5f07557b7..cb09ef5be 100644 --- a/config/config-backends.h +++ b/config/config-backends.h @@ -23,6 +23,9 @@ * Author: Daniel Stone */ +#ifndef XSERVER_CONFIG_BACKENDS_H +#define XSERVER_CONFIG_BACKENDS_H + #ifdef HAVE_DIX_CONFIG_H #include #endif @@ -44,3 +47,5 @@ void config_hal_fini(void); int config_wscons_init(void); void config_wscons_fini(void); #endif + +#endif /* XSERVER_CONFIG_BACKENDS_H */ From 166d1b5e6b9a052f31cfd57a8b461983a7d24a56 Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Tue, 24 Jun 2025 22:50:19 +0100 Subject: [PATCH 08/26] fb: add/fix include guards where missing/broken Skipped headers designed for multiple or non-trivial inclusion: * fb/fbbits.h Signed-off-by: Mike Gelfand --- fb/wfbrename.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/fb/wfbrename.h b/fb/wfbrename.h index c7ac73ea0..531ab4172 100644 --- a/fb/wfbrename.h +++ b/fb/wfbrename.h @@ -1,3 +1,6 @@ +#ifndef XSERVER_WFBRENAME_H +#define XSERVER_WFBRENAME_H + #define fbAddTraps wfbAddTraps #define fbAddTriangles wfbAddTriangles #define fbAllocatePrivates wfbAllocatePrivates @@ -118,3 +121,5 @@ #define fbWinPrivateKeyRec wfbWinPrivateKeyRec #define free_pixman_pict wfb_free_pixman_pict #define image_from_pict wfb_image_from_pict + +#endif /* XSERVER_WFBRENAME_H */ From c06a2a3ed7d7e2004faf4e1ae22864c716087a63 Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Tue, 24 Jun 2025 22:50:19 +0100 Subject: [PATCH 09/26] hw: add/fix include guards where missing/broken Skipped headers designed for multiple or non-trivial inclusion: * hw/xfree86/dri2/pci_ids/i810_pci_ids.h * hw/xfree86/dri2/pci_ids/i915_pci_ids.h * hw/xfree86/dri2/pci_ids/i965_pci_ids.h * hw/xfree86/dri2/pci_ids/r200_pci_ids.h * hw/xfree86/dri2/pci_ids/r300_pci_ids.h * hw/xfree86/dri2/pci_ids/r600_pci_ids.h * hw/xfree86/dri2/pci_ids/radeon_pci_ids.h * hw/xfree86/dri2/pci_ids/radeonsi_pci_ids.h * hw/xfree86/dri2/pci_ids/virtio_gpu_pci_ids.h * hw/xfree86/dri2/pci_ids/vmwgfx_pci_ids.h Signed-off-by: Mike Gelfand --- hw/kdrive/ephyr/ephyr_glamor.h | 5 +++++ hw/xfree86/common/xf86VGAarbiterPriv.h | 5 +++++ hw/xfree86/dri2/dri2int.h | 5 +++++ hw/xfree86/drivers/modesetting/driver.h | 5 +++++ hw/xfree86/int10/vbeModes.h | 1 + hw/xfree86/parser/configProcs.h | 5 +++++ hw/xquartz/NSUserDefaults+XQuartzDefaults.h | 5 +++++ hw/xquartz/xpr/driWrap.h | 2 ++ hw/xwin/glx/winpriv.h | 5 +++++ hw/xwin/winauth.h | 5 +++++ hw/xwin/winlayouts.h | 5 +++++ hw/xwin/winmonitors.h | 5 +++++ 12 files changed, 53 insertions(+) diff --git a/hw/kdrive/ephyr/ephyr_glamor.h b/hw/kdrive/ephyr/ephyr_glamor.h index fc4a80d9f..6c80aabde 100644 --- a/hw/kdrive/ephyr/ephyr_glamor.h +++ b/hw/kdrive/ephyr/ephyr_glamor.h @@ -21,6 +21,9 @@ * IN THE SOFTWARE. */ +#ifndef XSERVER_KDRIVE_EPHYR_GLAMOR_H +#define XSERVER_KDRIVE_EPHYR_GLAMOR_H + #include #include "dix-config.h" @@ -63,3 +66,5 @@ ephyr_glamor_damage_redisplay(struct ephyr_glamor *glamor, } #endif /* !GLAMOR */ + +#endif /* XSERVER_KDRIVE_EPHYR_GLAMOR_H */ diff --git a/hw/xfree86/common/xf86VGAarbiterPriv.h b/hw/xfree86/common/xf86VGAarbiterPriv.h index e4ca3450c..03c907bba 100644 --- a/hw/xfree86/common/xf86VGAarbiterPriv.h +++ b/hw/xfree86/common/xf86VGAarbiterPriv.h @@ -24,6 +24,9 @@ * */ +#ifndef XSERVER_XFREE86_XF86VGAARBITERPRIV_H +#define XSERVER_XFREE86_XF86VGAARBITERPRIV_H + #ifdef HAVE_XORG_CONFIG_H #include #endif @@ -273,3 +276,5 @@ static void VGAarbiterGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst, static void VGAarbiterCompositeRects(CARD8 op, PicturePtr pDst, xRenderColor * color, int nRect, xRectangle *rects); + +#endif /* XSERVER_XFREE86_XF86VGAARBITERPRIV_H */ diff --git a/hw/xfree86/dri2/dri2int.h b/hw/xfree86/dri2/dri2int.h index 7f53eba45..4bb272616 100644 --- a/hw/xfree86/dri2/dri2int.h +++ b/hw/xfree86/dri2/dri2int.h @@ -23,4 +23,9 @@ * Author: Daniel Stone */ +#ifndef XSERVER_XFREE86_DRI2INT_H +#define XSERVER_XFREE86_DRI2INT_H + extern Bool DRI2ModuleSetup(void); + +#endif /* XSERVER_XFREE86_DRI2INT_H */ diff --git a/hw/xfree86/drivers/modesetting/driver.h b/hw/xfree86/drivers/modesetting/driver.h index 62b0db0cc..43114b4ae 100644 --- a/hw/xfree86/drivers/modesetting/driver.h +++ b/hw/xfree86/drivers/modesetting/driver.h @@ -29,6 +29,9 @@ * Aaron Plattner */ +#ifndef XSERVER_XFREE86_DRIVER_H +#define XSERVER_XFREE86_DRIVER_H + #include #include #include @@ -261,3 +264,5 @@ void ms_drain_drm_events(ScreenPtr screen); Bool ms_window_has_variable_refresh(modesettingPtr ms, WindowPtr win); void ms_present_set_screen_vrr(ScrnInfoPtr scrn, Bool vrr_enabled); Bool ms_tearfree_is_active_on_crtc(xf86CrtcPtr crtc); + +#endif /* XSERVER_XFREE86_DRIVER_H */ diff --git a/hw/xfree86/int10/vbeModes.h b/hw/xfree86/int10/vbeModes.h index ee0257c15..8ad5ea9c2 100644 --- a/hw/xfree86/int10/vbeModes.h +++ b/hw/xfree86/int10/vbeModes.h @@ -29,6 +29,7 @@ */ #ifndef _VBE_MODES_H +#define _VBE_MODES_H /* * This is intended to be stored in the DisplayModeRec's private area. diff --git a/hw/xfree86/parser/configProcs.h b/hw/xfree86/parser/configProcs.h index 93e3e6706..ef71c4d5a 100644 --- a/hw/xfree86/parser/configProcs.h +++ b/hw/xfree86/parser/configProcs.h @@ -29,6 +29,9 @@ /* exported functions are/were used by the X Server */ +#ifndef XSERVER_XFREE86_CONFIGPROCS_H +#define XSERVER_XFREE86_CONFIGPROCS_H + #include /* Device.c */ @@ -146,3 +149,5 @@ xf86freeExtensions(XF86ConfExtensionsPtr ptr); void ErrorF(const char *f, ...); #endif + +#endif /* XSERVER_XFREE86_CONFIGPROCS_H */ diff --git a/hw/xquartz/NSUserDefaults+XQuartzDefaults.h b/hw/xquartz/NSUserDefaults+XQuartzDefaults.h index 2f180b241..c0d1b6e96 100644 --- a/hw/xquartz/NSUserDefaults+XQuartzDefaults.h +++ b/hw/xquartz/NSUserDefaults+XQuartzDefaults.h @@ -6,6 +6,9 @@ // Copyright (c) 2021 Apple Inc. All rights reserved. // +#ifndef XSERVER_XQUARTZ_NSUSERDEFAULTS_XQUARTZDEFAULTS_H +#define XSERVER_XQUARTZ_NSUSERDEFAULTS_XQUARTZDEFAULTS_H + #import extern NSString * const XQuartzPrefKeyAppsMenu; @@ -47,3 +50,5 @@ extern NSString * const XQuartzPrefKeySyncPrimaryOnSelect; + (NSUserDefaults *)xquartzDefaults; @end + +#endif /* XSERVER_XQUARTZ_NSUSERDEFAULTS_XQUARTZDEFAULTS_H */ diff --git a/hw/xquartz/xpr/driWrap.h b/hw/xquartz/xpr/driWrap.h index 1bc34ee9e..c00452d9c 100644 --- a/hw/xquartz/xpr/driWrap.h +++ b/hw/xquartz/xpr/driWrap.h @@ -28,6 +28,8 @@ */ #ifndef DRIWRAP_H +#define DRIWRAP_H + #include "scrnintstr.h" Bool diff --git a/hw/xwin/glx/winpriv.h b/hw/xwin/glx/winpriv.h index 6f695a971..dfa21bcc2 100644 --- a/hw/xwin/glx/winpriv.h +++ b/hw/xwin/glx/winpriv.h @@ -4,9 +4,14 @@ * Authors: Alexander Gottwald */ +#ifndef XSERVER_XWIN_WINPRIV_H +#define XSERVER_XWIN_WINPRIV_H + #include #include HWND winGetWindowInfo(WindowPtr pWin); Bool winCheckScreenAiglxIsSupported(ScreenPtr pScreen); void winSetScreenAiglxIsActive(ScreenPtr pScreen); + +#endif /* XSERVER_XWIN_WINPRIV_H */ diff --git a/hw/xwin/winauth.h b/hw/xwin/winauth.h index 97cfe52a1..9cde26864 100644 --- a/hw/xwin/winauth.h +++ b/hw/xwin/winauth.h @@ -19,8 +19,13 @@ * IN THE SOFTWARE. */ +#ifndef XSERVER_XWIN_WINAUTH_H +#define XSERVER_XWIN_WINAUTH_H + #include #include // for BOOL BOOL winGenerateAuthorization(void); xcb_auth_info_t * winGetXcbAuthInfo(void); + +#endif /* XSERVER_XWIN_WINAUTH_H */ diff --git a/hw/xwin/winlayouts.h b/hw/xwin/winlayouts.h index 904410a2d..f2bfd49df 100644 --- a/hw/xwin/winlayouts.h +++ b/hw/xwin/winlayouts.h @@ -27,6 +27,9 @@ * XKB settings. */ +#ifndef XSERVER_XWIN_WINLAYOUTS_H +#define XSERVER_XWIN_WINLAYOUTS_H + typedef struct { unsigned int winlayout; int winkbtype; @@ -98,3 +101,5 @@ WinKBLayoutRec winKBLayouts[] = { See http://technet.microsoft.com/en-us/library/cc766503%28WS.10%29.aspx for a listing of input locale (keyboard layout) codes */ + +#endif /* XSERVER_XWIN_WINLAYOUTS_H */ diff --git a/hw/xwin/winmonitors.h b/hw/xwin/winmonitors.h index 5fe3ecd52..87805ba1e 100644 --- a/hw/xwin/winmonitors.h +++ b/hw/xwin/winmonitors.h @@ -27,6 +27,9 @@ from The Open Group. */ +#ifndef XSERVER_XWIN_WINMONITORS_H +#define XSERVER_XWIN_WINMONITORS_H + /* data returned for monitor information */ struct GetMonitorInfoData { int requestedMonitor; @@ -41,3 +44,5 @@ struct GetMonitorInfoData { }; Bool QueryMonitor(int i, struct GetMonitorInfoData *data); + +#endif /* XSERVER_XWIN_WINMONITORS_H */ From f5e00916aabbe189b1d683b57c908b6d895da27f Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Tue, 24 Jun 2025 22:50:19 +0100 Subject: [PATCH 10/26] include: add/fix include guards where missing/broken Signed-off-by: Mike Gelfand --- include/dix-config-apple-verbatim.h | 5 +++++ include/xwin-config.h.meson.in | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/include/dix-config-apple-verbatim.h b/include/dix-config-apple-verbatim.h index f429d200e..52106dbec 100644 --- a/include/dix-config-apple-verbatim.h +++ b/include/dix-config-apple-verbatim.h @@ -1,8 +1,13 @@ /* Do not include this file directly. It is included at the end of */ +#ifndef XSERVER_CONFIG_APPLE_VERBATIM_H +#define XSERVER_CONFIG_APPLE_VERBATIM_H + /* Correctly set _XSERVER64 for OSX fat binaries */ #if defined(__LP64__) && !defined(_XSERVER64) #define _XSERVER64 1 #elif !defined(__LP64__) && defined(_XSERVER64) #undef _XSERVER64 #endif + +#endif /* XSERVER_CONFIG_APPLE_VERBATIM_H */ diff --git a/include/xwin-config.h.meson.in b/include/xwin-config.h.meson.in index bf2a696d6..1066fd525 100644 --- a/include/xwin-config.h.meson.in +++ b/include/xwin-config.h.meson.in @@ -4,6 +4,10 @@ * This file has all defines used in the xwin ddx * */ + +#ifndef XSERVER_XWIN_CONFIG_H +#define XSERVER_XWIN_CONFIG_H + #include /* Winsock networking */ @@ -17,3 +21,5 @@ /* Whether we should re-locate the root to where the executable lives */ #mesondefine RELOCATE_PROJECTROOT + +#endif /* XSERVER_XWIN_CONFIG_H */ From 32b26ccf9e66dfb2c5342d57ca52d93a9292e9bc Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Tue, 24 Jun 2025 22:50:19 +0100 Subject: [PATCH 11/26] mi: add/fix include guards where missing/broken Signed-off-by: Mike Gelfand --- mi/miline.h | 2 +- mi/mipoly.h | 5 +++++ mi/misprite.h | 21 +++++++++++++-------- mi/miwideline.h | 5 +++++ mi/mizerarc.h | 5 +++++ 5 files changed, 29 insertions(+), 9 deletions(-) diff --git a/mi/miline.h b/mi/miline.h index 7ef3b015a..c40e4a98e 100644 --- a/mi/miline.h +++ b/mi/miline.h @@ -1,4 +1,3 @@ - /* Copyright 1994, 1998 The Open Group @@ -26,6 +25,7 @@ in this Software without prior written authorization from The Open Group. */ #ifndef MILINE_H +#define MILINE_H #include "screenint.h" #include "privates.h" diff --git a/mi/mipoly.h b/mi/mipoly.h index 10632f232..b947d20ce 100644 --- a/mi/mipoly.h +++ b/mi/mipoly.h @@ -78,6 +78,9 @@ from The Open Group. * drawn (as with the even-odd rule). */ +#ifndef XSERVER_MIPOLY_H +#define XSERVER_MIPOLY_H + /* * for the winding number rule */ @@ -172,3 +175,5 @@ typedef struct _ScanLineListBlock { pAET = pAET->next; \ } \ } + +#endif /* XSERVER_MIPOLY_H */ diff --git a/mi/misprite.h b/mi/misprite.h index aa67f3229..db0dce25f 100644 --- a/mi/misprite.h +++ b/mi/misprite.h @@ -1,11 +1,3 @@ -/* - * misprite.h - * - * software-sprite/sprite drawing interface spec - * - * mi versions of these routines exist. - */ - /* Copyright 1989, 1998 The Open Group @@ -31,6 +23,17 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ +/* + * misprite.h + * + * software-sprite/sprite drawing interface spec + * + * mi versions of these routines exist. + */ + +#ifndef XSERVER_MISPRITE_H +#define XSERVER_MISPRITE_H + Bool miSpriteInitialize(ScreenPtr pScreen, miPointerScreenFuncPtr screenFuncs); Bool miDCRealizeCursor(ScreenPtr pScreen, CursorPtr pCursor); @@ -44,3 +47,5 @@ Bool miDCRestoreUnderCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y, int w, int h); Bool miDCDeviceInitialize(DeviceIntPtr pDev, ScreenPtr pScreen); void miDCDeviceCleanup(DeviceIntPtr pDev, ScreenPtr pScreen); + +#endif /* XSERVER_MISPRITE_H */ diff --git a/mi/miwideline.h b/mi/miwideline.h index 88bc3d6c8..39a2727e4 100644 --- a/mi/miwideline.h +++ b/mi/miwideline.h @@ -28,6 +28,9 @@ from The Open Group. /* Author: Keith Packard, MIT X Consortium */ +#ifndef XSERVER_MIWIDELINE_H +#define XSERVER_MIWIDELINE_H + #include "mifpoly.h" /* for ICEIL */ /* @@ -91,3 +94,5 @@ typedef struct _LineFace { ValidateGC (pDrawable, pGC); \ } \ } + +#endif /* XSERVER_MIWIDELINE_H */ diff --git a/mi/mizerarc.h b/mi/mizerarc.h index 165e281ed..945efe088 100644 --- a/mi/mizerarc.h +++ b/mi/mizerarc.h @@ -24,6 +24,9 @@ in this Software without prior written authorization from The Open Group. ********************************************************/ +#ifndef XSERVER_MIZERARC_H +#define XSERVER_MIZERARC_H + typedef struct { int x; int y; @@ -122,3 +125,5 @@ extern _X_EXPORT Bool miZeroArcSetup(xArc * /*arc */ , miZeroArcRec * /*info */ , Bool /*ok360 */ ); + +#endif /* XSERVER_MIZERARC_H */ From 565309bb3382f35f2768a6df10eb263b591606e3 Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Tue, 24 Jun 2025 22:50:19 +0100 Subject: [PATCH 12/26] miext: add/fix include guards where missing/broken Skipped headers designed for multiple or non-trivial inclusion: * miext/shadow/shrotpack.h * miext/shadow/shrotpackYX.h Signed-off-by: Mike Gelfand --- miext/shadow/c2p_core.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/miext/shadow/c2p_core.h b/miext/shadow/c2p_core.h index d0db2b5f3..6babd61af 100644 --- a/miext/shadow/c2p_core.h +++ b/miext/shadow/c2p_core.h @@ -27,6 +27,9 @@ * DEALINGS IN THE SOFTWARE. */ +#ifndef XSERVER_C2P_CORE_H +#define XSERVER_C2P_CORE_H + #include "os/bug_priv.h" /* @@ -186,3 +189,5 @@ static inline void transp2x(CARD32 d[], unsigned int n) _transp(d, 1, 0, n, mask); return; } + +#endif /* XSERVER_C2P_CORE_H */ From c4ca14eff06cdeb9f3a9372571d7387d73a100b2 Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Tue, 24 Jun 2025 22:50:20 +0100 Subject: [PATCH 13/26] pseudoramix: add/fix include guards where missing/broken Signed-off-by: Mike Gelfand --- pseudoramiX/pseudoramiX.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pseudoramiX/pseudoramiX.h b/pseudoramiX/pseudoramiX.h index 5393062ee..e7b255336 100644 --- a/pseudoramiX/pseudoramiX.h +++ b/pseudoramiX/pseudoramiX.h @@ -2,7 +2,12 @@ * Minimal implementation of PanoramiX/Xinerama */ +#ifndef XSERVER_PSEUDORAMIX_H +#define XSERVER_PSEUDORAMIX_H + void PseudoramiXAddScreen(int x, int y, int w, int h); void PseudoramiXResetScreens(void); + +#endif /* XSERVER_PSEUDORAMIX_H */ From 26f56735c5ffcc91dba83fc5763c5e2fb19b01d1 Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Tue, 24 Jun 2025 22:50:20 +0100 Subject: [PATCH 14/26] record: add/fix include guards where missing/broken Signed-off-by: Mike Gelfand --- record/set.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/record/set.h b/record/set.h index 74ddda75b..82a8e9ce5 100644 --- a/record/set.h +++ b/record/set.h @@ -51,6 +51,9 @@ from The Open Group. The following types and functions/macros define the ADT. */ +#ifndef XSERVER_SET_H +#define XSERVER_SET_H + /* an interval of set members */ typedef struct { CARD16 first; @@ -133,3 +136,5 @@ int RecordSetMemoryRequirements(RecordSetInterval * /*pIntervals */ , process interval; } */ + +#endif /* XSERVER_SET_H */ From 6a10d96761530603c4e6ea54d225a15ccaa9e669 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Thu, 26 Jun 2025 14:45:33 +0200 Subject: [PATCH 15/26] rootless: fix missing include of dix/screen_hooks_priv.h We're using XorgScreenWindowPositionParamRec here, so need to include that header. Signed-off-by: Enrico Weigelt, metux IT consult --- miext/rootless/rootlessWindow.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/miext/rootless/rootlessWindow.h b/miext/rootless/rootlessWindow.h index 8a030939b..00e95b8a0 100644 --- a/miext/rootless/rootlessWindow.h +++ b/miext/rootless/rootlessWindow.h @@ -34,6 +34,8 @@ #ifndef _ROOTLESSWINDOW_H #define _ROOTLESSWINDOW_H +#include "dix/screen_hooks_priv.h" + #include "rootlessCommon.h" Bool RootlessCreateWindow(WindowPtr pWin); From d89b3596f04e9f040f57e0e81920b85813570aba Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Thu, 26 Jun 2025 12:36:41 +0100 Subject: [PATCH 16/26] xquartz: depend on libX11 (includes X11/Xlib.h) Signed-off-by: Mike Gelfand --- hw/xquartz/mach-startup/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/xquartz/mach-startup/meson.build b/hw/xquartz/mach-startup/meson.build index 2f7694252..8b5afd980 100644 --- a/hw/xquartz/mach-startup/meson.build +++ b/hw/xquartz/mach-startup/meson.build @@ -62,7 +62,7 @@ x11_bin = executable('X11.bin', mach_startup[3], # mach_startupUser.c ], link_with: x11_bin_libs, - dependencies: [xproto_dep, x11_bin_deps, mach_startup_dep], + dependencies: [xproto_dep, x11_dep, x11_bin_deps, mach_startup_dep], include_directories: [inc, '..', top_dir_inc], c_args: xquartz_defs, link_args: ['-Objc'], From edb020e306018123f1a7c359d80d28b1af81955d Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Thu, 26 Jun 2025 12:40:36 +0100 Subject: [PATCH 17/26] xquartz: depend on libXdmcp (includes osdep.h which includes X11/Xdmcp.h) Signed-off-by: Mike Gelfand --- hw/xquartz/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/xquartz/meson.build b/hw/xquartz/meson.build index 83e79eae8..d8dd7cd98 100644 --- a/hw/xquartz/meson.build +++ b/hw/xquartz/meson.build @@ -76,7 +76,7 @@ libXquartz = static_library('Xquartz', c_args: libxquartz_defs, objc_args: libxquartz_defs, include_directories: [inc, '../../pseudoramiX', '../../miext/rootless', top_dir_inc], - dependencies: [xproto_dep, pixman_dep], + dependencies: [xproto_dep, xdmcp_dep, pixman_dep], link_with: [libxserver_pseudoramix, libxserver_miext_rootless], ) From 3e89bd7409d1ee7e0a66a1ab28458ed40161d7f0 Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Thu, 26 Jun 2025 12:43:18 +0100 Subject: [PATCH 18/26] xquartz: add missing include for `DeliverEvents` Signed-off-by: Mike Gelfand --- hw/xquartz/quartz.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/xquartz/quartz.c b/hw/xquartz/quartz.c index 794d648dd..da30f1f08 100644 --- a/hw/xquartz/quartz.c +++ b/hw/xquartz/quartz.c @@ -33,6 +33,8 @@ #include +#include "dix/dix_priv.h" + #include "quartzRandR.h" #include "inputstr.h" #include "quartz.h" From 4f7000f62044c2b30c948144105a7ed0b62c711a Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Thu, 26 Jun 2025 12:44:24 +0100 Subject: [PATCH 19/26] xquartz: add missing include for `XkbSetRulesDflts` Signed-off-by: Mike Gelfand --- hw/xquartz/darwin.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c index 296757118..74d889606 100644 --- a/hw/xquartz/darwin.c +++ b/hw/xquartz/darwin.c @@ -38,6 +38,7 @@ #include "os/ddx_priv.h" #include "os/log_priv.h" #include "os/osdep.h" +#include "xkb/xkbsrv_priv.h" #include "os.h" #include "servermd.h" From f40afc89832d1faf19beb4d394956208a98462cc Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Wed, 25 Jun 2025 02:32:00 +0100 Subject: [PATCH 20/26] .github: .gitlab-ci: add macos (xquartz) build job Signed-off-by: Mike Gelfand --- .github/scripts/conf.sh | 7 +++- .github/scripts/install-prereq.sh | 7 ++++ .github/scripts/macos/install-pkg.sh | 38 ++++++++++++++++++ .github/scripts/util.sh | 13 ++++++- .github/workflows/build-xserver.yml | 58 ++++++++++++++++++++++++++++ .gitlab-ci/check-ddx-build.sh | 1 + 6 files changed, 121 insertions(+), 3 deletions(-) create mode 100755 .github/scripts/macos/install-pkg.sh diff --git a/.github/scripts/conf.sh b/.github/scripts/conf.sh index 7a0576b7f..7cdab25d2 100644 --- a/.github/scripts/conf.sh +++ b/.github/scripts/conf.sh @@ -1,8 +1,13 @@ +export X11_OS=`uname -s` + export X11_PREFIX="${X11_PREFIX:-$HOME/x11}" export X11_BUILD_DIR="${X11_BUILD_DIR:-$HOME/build-deps}" export DRV_BUILD_DIR="${DRV_BUILD_DIR:-$HOME/build-drivers}" -export FDO_CI_CONCURRENT=`nproc` +case "$X11_OS" in +Darwin) export FDO_CI_CONCURRENT=`sysctl -n hw.logicalcpu` ;; +Linux) export FDO_CI_CONCURRENT=`nproc` ;; +esac export PATH="$X11_PREFIX/bin:$PATH" export PKG_CONFIG_PATH="$X11_PREFIX/lib/x86_64-linux-gnu/pkgconfig:$X11_PREFIX/lib/pkgconfig:$X11_PREFIX/share/pkgconfig:$PKG_CONFIG_PATH" diff --git a/.github/scripts/install-prereq.sh b/.github/scripts/install-prereq.sh index e201126a1..2bdbeb65a 100755 --- a/.github/scripts/install-prereq.sh +++ b/.github/scripts/install-prereq.sh @@ -8,10 +8,13 @@ mkdir -p $X11_BUILD_DIR cd $X11_BUILD_DIR build_meson rendercheck https://gitlab.freedesktop.org/xorg/test/rendercheck rendercheck-1.6 +if [ "$X11_OS" = "Linux" ]; then build_meson drm https://gitlab.freedesktop.org/mesa/drm libdrm-2.4.121 \ -Domap=enabled +fi build_meson libxcvt https://gitlab.freedesktop.org/xorg/lib/libxcvt libxcvt-0.1.0 build_ac xorgproto https://gitlab.freedesktop.org/xorg/proto/xorgproto xorgproto-2024.1 +if [ "$X11_OS" = "Linux" ]; then build_meson wayland https://gitlab.freedesktop.org/wayland/wayland 1.21.0 \ -Dtests=false -Ddocumentation=false -Ddtd_validation=false build_meson wayland-protocols https://gitlab.freedesktop.org/wayland/wayland-protocols 1.38 @@ -19,6 +22,10 @@ build_meson libdecor https://gitlab.freedesktop.org/libdecor/libdecor -D{demo,install_demo}=false build_meson libei https://gitlab.freedesktop.org/libinput/libei 1.0.0 \ -Dtests=disabled -Ddocumentation=[] -Dliboeffis=enabled +fi +if [ "$X11_OS" = "Darwin" ]; then +build_ac xset https://gitlab.freedesktop.org/xorg/app/xset xset-1.2.5 +fi build_ac_xts xts https://gitlab.freedesktop.org/xorg/test/xts master # dbbfa96c036e596346147081cbceda136e7c86c1 clone_source piglit https://gitlab.freedesktop.org/mesa/piglit main # 265896c86f90cb72e8f218ba6a3617fca8b9a1e3 diff --git a/.github/scripts/macos/install-pkg.sh b/.github/scripts/macos/install-pkg.sh new file mode 100755 index 000000000..56d2ef236 --- /dev/null +++ b/.github/scripts/macos/install-pkg.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +set -e + +brew update + +brew install \ + autoconf \ + automake \ + bdftopcf \ + libapplewm \ + libtool \ + libx11 \ + libxau \ + libxaw \ + libxcb \ + libxdmcp \ + libxext \ + libxfixes \ + libxfont2 \ + libxkbfile \ + libxi \ + libxmu \ + libxrender \ + libxt \ + libxtst \ + meson \ + mkfontscale \ + pkgconf \ + pixman \ + util-macros \ + xdpyinfo \ + xkbcomp \ + xkeyboard-config \ + xtrans + +pip3 install --break-system-packages \ + mako diff --git a/.github/scripts/util.sh b/.github/scripts/util.sh index 43bccfd24..29e87ff3d 100644 --- a/.github/scripts/util.sh +++ b/.github/scripts/util.sh @@ -82,8 +82,17 @@ build_ac_xts() { clone_source "$pkgname" "$url" "$ref" ( cd $pkgname - CFLAGS=-fcommon ./autogen.sh --prefix=$X11_PREFIX - xvfb-run make -j${FDO_CI_CONCURRENT:-4} install + CFLAGS='-fcommon' + if [ "$X11_OS" = "Darwin" ]; then + sed -E -i~ 's|(\[XTS\], \[)|\1xt xmu xaw7 |' configure.ac + sed -E -i~ -e 's|(XTextProperty)[[:space:]]+(text_prop_good)|\1 *\2|' -e 's|(style_good),[[:space:]]*&(text_prop_good)|\1,\2|' -e 's|text_prop_good\.|text_prop_good->|' xts5/Xlib14/X{mb,wc}TextListToTextProperty.m + CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0" + if cc -Werror=unknown-warning-option -Wincompatible-function-pointer-types -c -xc -o /dev/null /dev/null 2>/dev/null; then + CFLAGS="$CFLAGS -Wno-error=incompatible-function-pointer-types" + fi + fi + ./autogen.sh --prefix=$X11_PREFIX CFLAGS="$CFLAGS" + make -j${FDO_CI_CONCURRENT:-4} install ) touch $X11_PREFIX/$pkgname.DONE fi diff --git a/.github/workflows/build-xserver.yml b/.github/workflows/build-xserver.yml index 2a83db818..417db1bfd 100644 --- a/.github/workflows/build-xserver.yml +++ b/.github/workflows/build-xserver.yml @@ -119,3 +119,61 @@ jobs: - name: compile drivers run: .github/scripts/compile-drivers.sh + + xserver-build-macos: + env: + MESON_ARGS: -Dprefix=/tmp -Dglx=false -Dxnest=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@v4 + + - 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@v4 + 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@v4 + with: + path: | + ${{ env.X11_PREFIX }} + ${{ env.X11_BUILD_DIR }}/xts + ${{ env.X11_BUILD_DIR }}/piglit + key: ${{ runner.os }}-x11-deps-${{ hashFiles('.github/scripts/install-prereq.sh') }} + restore-keys: ${{ runner.os }}-x11-deps- + + - name: generic prereq + run: .github/scripts/install-prereq.sh + + - name: build + run: .gitlab-ci/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/* + - name: ddx build check + run: .gitlab-ci/check-ddx-build.sh + - name: manpage check + run: .gitlab-ci/manpages-check diff --git a/.gitlab-ci/check-ddx-build.sh b/.gitlab-ci/check-ddx-build.sh index 3b3a65f38..6361571ff 100755 --- a/.gitlab-ci/check-ddx-build.sh +++ b/.gitlab-ci/check-ddx-build.sh @@ -19,6 +19,7 @@ fi [[ "$BUILD_XEPHYR" == true ]] && check_executable "hw/kdrive/ephyr/Xephyr" [[ "$BUILD_XNEST" == true ]] && check_executable "hw/xnest/Xnest" [[ "$BUILD_XORG" == true ]] && check_executable "hw/xfree86/Xorg" +[[ "$BUILD_XQUARTZ" == true ]] && check_executable "hw/xquartz/mach-startup/Xquartz" [[ "$BUILD_XVFB" == true ]] && check_executable "hw/vfb/Xvfb" exit 0 From 9ab598e2b2c5647a9d0d043f1f1c2c6d6ab2fb8b Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Fri, 27 Jun 2025 14:41:14 +0100 Subject: [PATCH 21/26] .github: add comments explaning the reasons behind xts patching Signed-off-by: Mike Gelfand --- .github/scripts/util.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/scripts/util.sh b/.github/scripts/util.sh index 29e87ff3d..cd74de195 100644 --- a/.github/scripts/util.sh +++ b/.github/scripts/util.sh @@ -84,9 +84,20 @@ build_ac_xts() { cd $pkgname CFLAGS='-fcommon' if [ "$X11_OS" = "Darwin" ]; then + # xts5/include/XtTest.h includes => needs xt + # xts5/src/libXtaw/*.c include and => need xmu and xaw7 sed -E -i~ 's|(\[XTS\], \[)|\1xt xmu xaw7 |' configure.ac + # xts5/Xlib14/X{mb,wc}TextListToTextProperty.m define a function accepting `XTextProperty` but call it passing + #`XTextProperty*`; since the parameter is seemingly meant for output, accept it as pointer sed -E -i~ -e 's|(XTextProperty)[[:space:]]+(text_prop_good)|\1 *\2|' -e 's|(style_good),[[:space:]]*&(text_prop_good)|\1,\2|' -e 's|text_prop_good\.|text_prop_good->|' xts5/Xlib14/X{mb,wc}TextListToTextProperty.m + # xts5/Xlib*/*.m forward-declare `strcpy()` which is incompatible with _FORTIFY_SOURCE > 0 where `strcpy` is + # a macro; set _FORTIFY_SOURCE to 0 as we don't care much about security in this test code CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0" + # declarations for `XtAppSetError{,Msg}Handler()` in (libXt) make it hard to write warning- + # free code: they want a noreturn-annotated handler as input but return old handler without noreturn annotation, + # so e.g. `XtAppSetErrorHandler(XtAppSetErrorHandler(NULL))` (similar to xts5/Xt13/XtAppSetError*Handler.m) + # doesn't compile complaining about incompatible function pointers, at least with Apple Clang 16 (not sure why + # it treats this warning as error by default though) if cc -Werror=unknown-warning-option -Wincompatible-function-pointer-types -c -xc -o /dev/null /dev/null 2>/dev/null; then CFLAGS="$CFLAGS -Wno-error=incompatible-function-pointer-types" fi From 8f50b8cc191f0d51525e6754fc5287f1348308b2 Mon Sep 17 00:00:00 2001 From: notbabaisyou Date: Thu, 26 Jun 2025 18:57:01 +0200 Subject: [PATCH 22/26] Xext: Fix typo in xace.h `modsetting` -> `modesetting` Signed-off-by: notbabaisyou --- Xext/xace.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Xext/xace.h b/Xext/xace.h index b9c81accf..db1dd750e 100644 --- a/Xext/xace.h +++ b/Xext/xace.h @@ -78,7 +78,7 @@ int XaceHookPropertyAccess(ClientPtr ptr, WindowPtr pWin, PropertyPtr *ppProp, Mask access_mode); int XaceHookSelectionAccess(ClientPtr ptr, Selection ** ppSel, Mask access_mode); -/* needs to be exported for in-tree modsetting, but not part of public API */ +/* needs to be exported for in-tree modesetting, but not part of public API */ _X_EXPORT int XaceHookResourceAccess(ClientPtr client, XID id, RESTYPE rtype, void *res, RESTYPE ptype, void *parent, Mask access_mode); From 4afcb1cd7b91ad3ea729683d5b93db7186616cef Mon Sep 17 00:00:00 2001 From: notbabaisyou Date: Thu, 26 Jun 2025 18:57:35 +0200 Subject: [PATCH 23/26] modesetting: Fix typo. `modsetCreateScreenResources` -> `modesetCreateScreenResources` Signed-off-by: notbabaisyou --- hw/xfree86/drivers/modesetting/driver.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c index 43783c4b1..7c8d779dc 100644 --- a/hw/xfree86/drivers/modesetting/driver.c +++ b/hw/xfree86/drivers/modesetting/driver.c @@ -1631,7 +1631,7 @@ msStopFlippingPixmapTracking(DrawablePtr src, } static Bool -modsetCreateScreenResources(ScreenPtr pScreen) +modesetCreateScreenResources(ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); modesettingPtr ms = modesettingPTR(pScrn); @@ -1941,7 +1941,7 @@ ScreenInit(ScreenPtr pScreen, int argc, char **argv) return FALSE; } - pScreen->CreateScreenResources = modsetCreateScreenResources; + pScreen->CreateScreenResources = modesetCreateScreenResources; xf86SetBlackWhitePixels(pScreen); From 25c002c54b58a81518f7cac6ab6dffa52e53ee56 Mon Sep 17 00:00:00 2001 From: Bastiaan Quast Date: Sat, 21 Jun 2025 11:23:30 -0600 Subject: [PATCH 24/26] CONTRIBUTION.md: "MR" / "MRs" -> pull request(s) --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5640ebf4e..dd351c31b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,9 +10,9 @@ Keep in mind that history is also a piece of documentation. 3. Once release is out, bugfixes should be submitted separately, against - the affected release branch(es) as well as master (so multiple MRs) + the affected release branch(es) as well as master (so multiple pull requests) 4. If new functions or types are introduced, these should be documented in-code, so we can generate docs directly from the code :) -5. Use MR tags if you can - if we need some more, just ask. +5. Use pull request tags if you can - if we need some more, just ask. From 461411c798c263f70daa96f7136614dfefda6adc Mon Sep 17 00:00:00 2001 From: notbabaisyou Date: Sun, 15 Jun 2025 20:15:37 +0200 Subject: [PATCH 25/26] modesetting: allow enabling atomic mode. The Linux kernel has long had code preventing Xorg from using atomic modesetting due to various bugs in it's implementation, some of these issues have since been fixed but some issues remain namely with DPMS and other smaller things, we should allow users to opt-in by setting "Option 'Atomic' 'True'" This shouldn't cause any issues as the feature remains disabled by default. Co-authored-by: Daniel Abrecht Signed-off-by: notbabaisyou --- hw/xfree86/drivers/modesetting/driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c index 7c8d779dc..d509f4400 100644 --- a/hw/xfree86/drivers/modesetting/driver.c +++ b/hw/xfree86/drivers/modesetting/driver.c @@ -1306,7 +1306,7 @@ PreInit(ScrnInfoPtr pScrn, int flags) ms->atomic_modeset_capable = (ret == 0); if (xf86ReturnOptValBool(ms->drmmode.Options, OPTION_ATOMIC, FALSE)) { - ret = drmSetClientCap(ms->fd, DRM_CLIENT_CAP_ATOMIC, 1); + ret = drmSetClientCap(ms->fd, DRM_CLIENT_CAP_ATOMIC, 2); ms->atomic_modeset = (ret == 0); if (!ms->atomic_modeset) xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Atomic modesetting not supported\n"); From 7fb4ba10f257a6efce4123f2ad744920e3d23c3f Mon Sep 17 00:00:00 2001 From: notbabaisyou Date: Tue, 24 Jun 2025 22:29:48 +0200 Subject: [PATCH 26/26] glamor: Enable dmabuf_capable for Zink This lets Zink take advantage of DRM modifiers on GPUs letting it properly handle tiled buffers. Signed-off-by: notbabaisyou --- glamor/glamor_egl.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c index 11ba189a8..88c3737f2 100644 --- a/glamor/glamor_egl.c +++ b/glamor/glamor_egl.c @@ -1192,6 +1192,8 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd) "dmabuf_capable"); else if (strstr((const char *)renderer, "Intel")) glamor_egl->dmabuf_capable = TRUE; + else if (strstr((const char *)renderer, "zink")) + glamor_egl->dmabuf_capable = TRUE; else glamor_egl->dmabuf_capable = FALSE; }