From c04a7c0e4812b4d1e815fb11293c7181684c2b35 Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Fri, 13 Jul 2018 02:25:07 -0500
Subject: [PATCH] user/xorg-server: pull in, bump, take, fix

---
 user/xorg-server/20-modules.conf      |  18 ++++
 user/xorg-server/APKBUILD             | 148 ++++++++++++++++++++++++++
 user/xorg-server/autoconfig-sis.patch |  21 ++++
 user/xorg-server/fix-musl-arm.patch   |  20 ++++
 4 files changed, 207 insertions(+)
 create mode 100644 user/xorg-server/20-modules.conf
 create mode 100644 user/xorg-server/APKBUILD
 create mode 100644 user/xorg-server/autoconfig-sis.patch
 create mode 100644 user/xorg-server/fix-musl-arm.patch

diff --git a/user/xorg-server/20-modules.conf b/user/xorg-server/20-modules.conf
new file mode 100644
index 0000000000..4ddcdd461b
--- /dev/null
+++ b/user/xorg-server/20-modules.conf
@@ -0,0 +1,18 @@
+Section "Module"
+    Load "exa"
+#    Load "wfb"
+
+    Load "dri"
+    Load "dri2"
+    Load "glx"
+
+    Load "int10"
+    Load "vbe"
+    Load "fb"
+    Load "shadowfb"
+    Load "shadow"
+    Load "vgahw"
+    Load "evdev"
+    Load "fbdevhw"
+    Load "glamoregl"
+EndSection
diff --git a/user/xorg-server/APKBUILD b/user/xorg-server/APKBUILD
new file mode 100644
index 0000000000..bcfc77eca0
--- /dev/null
+++ b/user/xorg-server/APKBUILD
@@ -0,0 +1,148 @@
+# Contributor: Łukasz Jendrysik <scadu@yandex.com>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xorg-server
+pkgver=1.20.0
+pkgrel=0
+pkgdesc="X.Org X11 server"
+url="https://www.X.Org/"
+arch="all"
+license="MIT"
+options="suid"
+subpackages="$pkgname-dbg $pkgname-dev $pkgname-doc xvfb $pkgname-xephyr
+	$pkgname-xnest $pkgname-xwayland"
+# the modesetting driver is now shipped with xorg server
+replaces="xf86-video-modesetting"
+depends="font-cursor-misc font-misc-misc xkeyboard-config xkbcomp xinit"
+depends_dev="libepoxy-dev libxfont2-dev mesa-dev"
+makedepends="$depends_dev autoconf automake libtool util-macros
+	eudev-dev libpciaccess-dev
+	libdrm-dev libepoxy-dev pixman-dev wayland-dev wayland-protocols
+	libx11-dev libxdamage-dev libxinerama-dev libxkbfile-dev libxkbui-dev
+	libxv-dev libxxf86dga-dev libxxf86misc-dev xcb-util-dev
+	xcb-util-image-dev xcb-util-keysyms-dev xcb-util-renderutil-dev
+	xcb-util-wm-dev xorgproto-dev
+	xtrans
+	openssl-dev perl zlib-dev
+	"
+source="https://www.X.Org/releases/individual/xserver/$pkgname-$pkgver.tar.bz2
+	autoconfig-sis.patch
+	fix-musl-arm.patch
+	"
+
+# secfixes:
+#   1.19.5-r0:
+#     - CVE-2017-12176
+#     - CVE-2017-12177
+#     - CVE-2017-12178
+#     - CVE-2017-12179
+#     - CVE-2017-12180
+#     - CVE-2017-12181
+#     - CVE-2017-12182
+#     - CVE-2017-12183
+#     - CVE-2017-12184
+#     - CVE-2017-12185
+#     - CVE-2017-12186
+#     - CVE-2017-12187
+#     - CVE-2017-13721
+#     - CVE-2017-13723
+
+prepare() {
+	cd "$builddir"
+	default_prepare
+
+	# Fix dbus config path
+	sed -i -e 's/\$(sysconfdir)/\/etc/' config/Makefile.*
+	sed -i -e 's/termio.h/termios.h/' hw/xfree86/os-support/xf86_OSlib.h
+}
+
+build() {
+	cd "$builddir"
+	# xorg modules does not work with the -z now and it seems like we
+	# cannot pass over the linker flag to .so files. so we tweak the
+	# gcc specs.
+	export CFLAGS="$CFLAGS -D_GNU_SOURCE"
+	[ "$CLIBC" == musl ] && export CFLAGS="$CFLAGS -D__gid_t=gid_t -D__uid_t=uid_t"
+	export LDFLAGS="$LDFLAGS -Wl,-z,lazy"
+	_fontroot="/usr/share/fonts"
+
+	./configure \
+		--build=$CBUILD \
+		--host=$CHOST \
+		--prefix=/usr \
+		--sysconfdir=/etc/X11 \
+		--localstatedir=/var \
+		--with-fontrootdir=$_fontroot \
+		--with-default-font-path=${_fontroot}/misc,${_fontroot}/100dpi:unscaled,${_fontroot}/75dpi:unscaled,${_fontroot}/TTF,${_fontroot}/Type1,${_fontroot}/truetype \
+		--with-xkb-path=/usr/share/X11/xkb \
+		--with-xkb-output=/var/lib/xkb \
+		--without-systemd-daemon \
+		--enable-composite \
+		--enable-config-udev \
+		--enable-dri \
+		--enable-dri2 \
+		--enable-glamor \
+		--enable-ipv6 \
+		--enable-kdrive \
+		--enable-xace \
+		--enable-xcsecurity \
+		--enable-xephyr \
+		--enable-xnest \
+		--enable-xorg \
+		--enable-xres \
+		--enable-xv \
+		--enable-xwayland \
+		--disable-config-hal \
+		--disable-dmx \
+		--disable-systemd-logind \
+		--with-os-vendor="${DISTRO_NAME:-Adélie Linux}"
+
+	make
+}
+
+check() {
+	cd "$builddir"
+	make check
+}
+
+package() {
+	cd "$builddir"
+	make -j1 DESTDIR="$pkgdir" install
+	chmod u+s "$pkgdir"/usr/bin/Xorg
+
+	# Don't conflict with xf86-input-evdev
+	rm -f "$pkgdir"/usr/share/X11/xorg.conf.d/10-evdev.conf
+
+	install -m755 -d "$pkgdir"/etc/X11/xorg.conf.d
+	install -m755 -d "$pkgdir"/var/lib/xkb
+	install -m644 -D COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
+}
+
+xvfb() {
+	pkgdesc="X.Org server for virtual framebuffer (for testing)"
+	mkdir -p "$subpkgdir"/usr/bin
+	mv "$pkgdir"/usr/bin/Xvfb "$subpkgdir"/usr/bin/
+}
+
+xephyr() {
+	pkgdesc="kdrive-based X11 server (windowed framebuffer on X11 server)"
+	depends=
+	mkdir -p "$subpkgdir"/usr/bin
+	mv "$pkgdir"/usr/bin/Xephyr "$subpkgdir"/usr/bin/
+}
+
+xnest() {
+	pkgdesc="X.Org nested server"
+	depends=
+	mkdir -p "$subpkgdir"/usr/bin
+	mv "$pkgdir"/usr/bin/Xnest "$subpkgdir"/usr/bin/
+}
+
+xwayland() {
+	pkgdesc="X.Org server for Wayland"
+	mkdir -p "$subpkgdir"/usr/bin
+	mv "$pkgdir"/usr/bin/Xwayland "$subpkgdir"/usr/bin/
+}
+
+sha512sums="1489e8511c9da682ef0460182dfeeddd241c72d4ef4d206d9706f1e39572c09953df851fab18cefb65a1ee4c6710c6ba13c63c9c9fc0bc1b5f12c50780412cde  xorg-server-1.20.0.tar.bz2
+30a78f4278edd535c45ee3f80933427cb029a13abaa4b041f816515fdd8f64f00b9c6aef50d4eba2aaf0d4f333e730399864fd97fa18891273601c77a6637200  autoconfig-sis.patch
+b799e757a22a61ac283adbd7a8df1ad4eccce0bb6cac38a0c962ba8438bba3cf6637a65bb64859e7b32399fca672283a49960207e186c271ba574580de360d09  fix-musl-arm.patch"
diff --git a/user/xorg-server/autoconfig-sis.patch b/user/xorg-server/autoconfig-sis.patch
new file mode 100644
index 0000000000..e97d821140
--- /dev/null
+++ b/user/xorg-server/autoconfig-sis.patch
@@ -0,0 +1,21 @@
+--- ./hw/xfree86/common/xf86pciBus.c.orig	2011-09-24 10:53:45.421697668 +0000
++++ ./hw/xfree86/common/xf86pciBus.c	2011-09-24 10:55:56.416250708 +0000
+@@ -1200,9 +1200,15 @@
+             break;
+         }
+         break;
+-    case 0x1039:
+-        driverList[0] = "sis";
+-        break;
++	case 0x1039:
++	    switch (dev->device_id)
++	    {
++		case 0x6350: case 0x6351:
++		    driverList[0] = "sisimedia"; driverList[1] = "sis"; break;
++		default:
++		    driverList[0] = "sis"; break;
++	    }
++	    break;
+     case 0x126f:
+         driverList[0] = "siliconmotion";
+         break;
diff --git a/user/xorg-server/fix-musl-arm.patch b/user/xorg-server/fix-musl-arm.patch
new file mode 100644
index 0000000000..e661ae1758
--- /dev/null
+++ b/user/xorg-server/fix-musl-arm.patch
@@ -0,0 +1,20 @@
+--- ./hw/xfree86/common/compiler.h.orig
++++ ./hw/xfree86/common/compiler.h
+@@ -721,7 +721,7 @@
+                          :"r"(val), "r"(addr), "i"(ASI_PL));
+ }
+ 
+-#elif defined(__mips__) || (defined(__arm32__) && !defined(__linux__))
++#elif defined(__mips__) || (defined(__arm32__) && !defined(__GLIBC__))
+ #if defined(__arm32__) || defined(__mips64)
+ #define PORT_SIZE long
+ #else
+@@ -996,7 +996,7 @@
+     return xf86ReadMmio32Le((void *) ioBase, port);
+ }
+ 
+-#elif defined(__arm__) && defined(__linux__)
++#elif defined(__arm__) && defined(__GLIBC__)
+ 
+ /* for Linux on ARM, we use the LIBC inx/outx routines */
+ /* note that the appropriate setup via "ioperm" needs to be done */
-- 
GitLab