From 49df906573ea1d8f2d66ea2424e3e7d6c3aa1858 Mon Sep 17 00:00:00 2001 From: yafox Date: Wed, 25 Nov 2020 06:21:40 +0000 Subject: [PATCH] initial commit. still needs work, but it works. --- 2048-c/default/conf.sh | 3 + 2048-c/default/inst.sh | 3 + LICENSE | 20 + README | 8 + alsa-lib/default/conf.sh | 15 + alsa-lib/default/deps | 12 + alsa-lib/default/env.sh | 7 + alsa-lib/default/inst.sh | 3 + alsa-lib/default/make.sh | 5 + .../default/patches-available/fix-dlo.patch | 32 + .../patches-available/remove-test.patch | 85 + .../default/patches-enabled/fix-dlo.patch | 1 + .../default/patches-enabled/remove-test.patch | 1 + argon2/default/conf.sh | 3 + argon2/default/deps | 13 + at-spi2-atk/default/conf.sh | 3 + at-spi2-atk/default/deps | 31 + at-spi2-atk/default/env.sh | 7 + at-spi2-atk/default/inst.sh | 3 + at-spi2-atk/default/make.sh | 3 + at-spi2-core/default/conf.sh | 3 + at-spi2-core/default/deps | 25 + at-spi2-core/default/env.sh | 7 + at-spi2-core/default/inst.sh | 3 + at-spi2-core/default/make.sh | 3 + atk/default/conf.sh | 6 + atk/default/deps | 26 + atk/default/inst.sh | 3 + atk/default/make.sh | 6 + attr/default/deps | 13 + autoconf-archive/default/deps | 15 + .../patch | 5 + autoconf/default/conf.sh | 17 + autoconf/default/deps | 17 + autoconf/v2.69b/patch | 5 + automake/default/conf.sh | 21 + automake/default/deps | 12 + awk/default/conf.sh | 5 + awk/default/deps | 9 + awk/default/inst.sh | 6 + awk/default/patch | 11 + bash/default/conf.sh | 20 + bash/default/deps | 14 + bash/default/inst.sh | 6 + bc/default/conf.sh | 17 + bearssl/default/conf.sh | 5 + bearssl/default/deps | 14 + bearssl/default/inst.sh | 8 + bison/default/deps | 17 + bit-babbler/default/conf.sh | 21 + bit-babbler/default/deps | 13 + bit-babbler/default/inst.sh | 14 + bit-babbler/default/patch | 60 + brotli/default/conf.sh | 23 + brotli/default/deps | 18 + brotli/default/patches-available/838.patch | 49 + .../build-tool-against-shared-lib.patch | 16 + .../optimize-mips-s390x.patch | 115 + brotli/default/patches-enabled/838.patch | 1 + .../build-tool-against-shared-lib.patch | 1 + .../patches-enabled/optimize-mips-s390x.patch | 1 + bsd-compat-headers/default/conf.sh | 3 + bsd-compat-headers/default/inst.sh | 5 + bsd-compat-headers/default/make.sh | 3 + bsd-compat-headers/default/patch | 1645 ++++++++ bubblewrap/default/conf.sh | 21 + bubblewrap/default/deps | 19 + .../realpath-workaround.patch | 53 + .../patches-enabled/realpath-workaround.patch | 1 + busybox/default/inst.sh | 4 + bzip2/default/PATCH-NOTES | 13 + bzip2/default/conf.sh | 3 + bzip2/default/deps | 12 + bzip2/default/inst.sh | 4 + bzip2/default/make.sh | 4 + bzip2/default/patch | 67 + cairo/default/conf.sh | 34 + cairo/default/deps | 35 + .../patches-available/CVE-2018-19876.patch | 30 + .../patches-available/musl-stacksize.patch | 23 + .../default/patches-available/pdf-flush.patch | 33 + .../patches-enabled/CVE-2018-19876.patch | 1 + .../patches-enabled/musl-stacksize.patch | 1 + cairo/default/patches-enabled/pdf-flush.patch | 1 + ccache/default/deps | 12 + ccache/default/inst.sh | 19 + ccid/default/conf.sh | 37 + ccid/default/deps | 16 + ccid/default/env.sh | 7 + ccid/default/inst.sh | 8 + cdparanoia/default/APKBUILD | 54 + cdparanoia/default/conf.sh | 13 + cdparanoia/default/deps | 17 + cdparanoia/default/env.sh | 7 + cdparanoia/default/inst.sh | 3 + cdparanoia/default/make.sh | 3 + .../patches-available/fix-includes.patch | 7 + .../default/patches-available/gcc.patch | 582 +++ .../patches-available/no-cuserid.patch | 32 + .../patches-enabled/fix-includes.patch | 1 + cdparanoia/default/patches-enabled/gcc.patch | 1 + .../default/patches-enabled/no-cuserid.patch | 1 + ckbcomp/default/conf.sh | 3 + ckbcomp/default/deps | 12 + ckbcomp/default/inst.sh | 4 + ckbcomp/default/make.sh | 3 + cmake/default/conf.sh | 26 + cmake/default/deps | 17 + cog/default/conf.sh | 11 + cog/default/deps | 96 + cog/default/env.sh | 8 + cog/default/inst.sh | 4 + cog/default/make.sh | 4 + cryptsetup/2.3.2/deps | 12 + cryptsetup/default/conf.sh | 38 + cryptsetup/default/deps | 12 + curl/default/conf.sh | 42 + curl/default/deps | 19 + curl/default/inst.sh | 20 + dash/default/conf.sh | 10 + dash/default/deps | 11 + dash/default/inst.sh | 4 + dbus/default/APKBUILD | 93 + dbus/default/conf.sh | 21 + dbus/default/deps | 24 + dbus/default/env.sh | 8 + dbus/default/inst.sh | 5 + delegate/default/make.sh | 1 + delegate/default/patch | 8 + dmenu/default/conf.sh | 3 + dmenu/default/deps | 33 + dmenu/default/patch | 35 + doas/default/conf.sh | 23 + doas/default/deps | 12 + doas/default/inst.sh | 8 + doas/default/make.sh | 4 + docbook-xml-src/default/conf.sh | 3 + docbook-xml-src/default/inst.sh | 4 + docbook-xml-src/default/make.sh | 3 + docbook-xml/4.5/conf.sh | 3 + docbook-xml/4.5/deps | 18 + docbook-xml/4.5/inst.sh | 310 ++ docbook-xml/4.5/make.sh | 15 + docbook-xsl/default/conf.sh | 3 + docbook-xsl/default/deps | 14 + docbook-xsl/default/inst.sh | 59 + docbook-xsl/default/make.sh | 3 + .../765567_non-recursive_string_subst.patch | 33 + .../765567_non-recursive_string_subst.patch | 1 + dwm/default/conf.sh | 3 + dwm/default/deps | 33 + dwm/default/patch | 35 + e2fsprogs/default/conf.sh | 16 + e2fsprogs/default/deps | 12 + e2fsprogs/default/inst.sh | 19 + e2fsprogs/default/make.sh | 7 + elvis/default/conf.sh | 24 + elvis/default/deps | 11 + eudev/default/conf.sh | 29 + eudev/default/deps | 21 + eudev/default/env.sh | 10 + eudev/default/patch | 47 + expat/default/conf.sh | 24 + expat/default/deps | 16 + expat/default/inst.sh | 6 + expat/default/make.sh | 6 + fbida/default/deps | 21 + fbpad-mkfn/default/conf.sh | 3 + fbpad-mkfn/default/deps | 16 + fbpad-mkfn/default/inst.sh | 4 + fbpad-mkfn/default/patch | 51 + fbpad/default/conf.sh | 3 + fbpad/default/deps | 12 + fbpad/default/inst.sh | 4 + fbpad/default/patch | 11 + fbset/default/conf.sh | 3 + fbset/default/deps | 15 + fbset/default/patch | 1663 ++++++++ fbv/default/conf.sh | 20 + fbv/default/configure | 154 + fbv/default/deps | 16 + fbv/default/patch | 41 + fcft/default/conf.sh | 7 + fcft/default/deps | 36 + fcft/default/inst.sh | 3 + fcft/default/make.sh | 3 + feh/default/conf.sh | 3 + feh/default/deps | 43 + feh/default/patch | 17 + flex/default/deps | 14 + fontconfig/default/conf.sh | 31 + fontconfig/default/deps | 22 + fontconfig/default/make.sh | 6 + foot/default/conf.sh | 12 + foot/default/deps | 42 + foot/default/inst.sh | 3 + foot/default/make.sh | 3 + .../0100-ppc64-TIOCSWINSZ.patch | 22 + .../0100-ppc64-TIOCSWINSZ.patch | 1 + freetype-harfbuzz/default/conf.sh | 25 + freetype-harfbuzz/default/deps | 23 + freetype/default/conf.sh | 26 + freetype/default/deps | 14 + fribidi/default/conf.sh | 23 + fribidi/default/deps | 11 + gc/default/conf.sh | 24 + gc/default/deps | 12 + gcr/default/conf.sh | 28 + gcr/default/deps | 67 + gcr/default/deps.bak | 163 + gcr/default/deps.uniq | 111 + gcr/default/env.sh | 7 + gcr/default/inst.sh | 4 + gcr/default/make.sh | 4 + .../allow-building-without-gpg.patch | 39 + .../dont-run-gpg-tests.patch | 12 + .../fix-64-bit-time_t-32-bit.patch | 14 + .../allow-building-without-gpg.patch | 1 + .../patches-enabled/dont-run-gpg-tests.patch | 1 + .../fix-64-bit-time_t-32-bit.patch | 1 + gdb/9.2/patch | 253 ++ gdb/default/conf.sh | 16 + gdb/default/deps | 14 + gdb/default/inst.sh | 5 + gdb/default/make.sh | 5 + gdb/ppc-musl.patch | 93 + gdb/ppc-ptregs.patch | 10 + gdb/s390x-use-elf-gdb_fpregset_t.patch | 150 + gdk-pixbuf/default/conf.sh | 11 + gdk-pixbuf/default/deps | 30 + gdk-pixbuf/default/inst.sh | 4 + gdk-pixbuf/default/make.sh | 6 + getopt/default/b/Makefile | 111 + getopt/default/b/getopt.c | 474 +++ getopt/default/conf.sh | 3 + getopt/default/deps | 12 + getopt/default/patch | 33 + gettext/default/conf.sh | 26 + gettext/default/deps | 16 + giflib/default/conf.sh | 3 + giflib/default/deps | 11 + giflib/default/patch | 11 + git/default/conf.sh | 45 + git/default/deps | 21 + glib-networking/default/conf.sh | 3 + glib-networking/default/deps | 33 + glib-networking/default/env.sh | 7 + glib-networking/default/inst.sh | 4 + glib-networking/default/make.sh | 3 + glib/default/conf.sh | 20 + glib/default/conf.sh.bak | 24 + glib/default/deps | 24 + glib/default/inst.sh | 5 + glib/default/kiss.sh | 53 + glib/default/make.sh | 3 + gmp/default/conf.sh | 14 + gmp/default/deps | 16 + gmp/default/env.sh | 7 + gmp/default/inst.sh | 4 + gnu-grep/default/deps | 9 + gnu-readline/default/conf.sh | 22 + gnu-readline/default/deps | 13 + gnu-sed/default/deps | 9 + gnu-tar/default/env.sh | 6 + gnupg-dynamic/2/conf.sh | 26 + gnupg-dynamic/2/deps | 25 + gnupg-dynamic/2/env.sh | 10 + gnupg/1/deps | 17 + gnupg/2/conf.sh | 32 + gnupg/2/deps | 23 + gnutls/default/conf.sh | 14 + gnutls/default/deps | 21 + gnutls/default/env.sh | 7 + .../patches-available/tests-certtool.patch | 24 + .../default/patches-available/tests-crq.patch | 31 + .../patches-enabled/tests-certtool.patch | 1 + .../default/patches-enabled/tests-crq.patch | 1 + gobject-introspection-dynamic/default/conf.sh | 6 + gobject-introspection-dynamic/default/deps | 40 + gobject-introspection-dynamic/default/inst.sh | 4 + gobject-introspection-dynamic/default/make.sh | 8 + .../patches-available/musl-time64.patch | 41 + .../default/patches-enabled/musl-time64.patch | 1 + gptfdisk/default/conf.sh | 3 + gptfdisk/default/deps | 16 + gptfdisk/default/inst.sh | 7 + gptfdisk/default/make.sh | 5 + graphviz/default/conf.sh | 43 + graphviz/default/deps | 37 + graphviz/default/env.sh | 7 + graphviz/default/inst.sh | 4 + .../0001-clone-nameclash.patch | 87 + ...0-no-ghostscript-or-groff-dependency.patch | 1371 ++++++ .../0001-clone-nameclash.patch | 1 + ...0-no-ghostscript-or-groff-dependency.patch | 1 + gsettings-desktop-schemas/default/APKBUILD | 28 + gsettings-desktop-schemas/default/conf.sh | 3 + gsettings-desktop-schemas/default/deps | 24 + gsettings-desktop-schemas/default/inst.sh | 3 + gsettings-desktop-schemas/default/make.sh | 3 + gst-plugins-base/default/conf.sh | 10 + gst-plugins-base/default/deps | 46 + gst-plugins-base/default/env.sh | 7 + gst-plugins-base/default/inst.sh | 3 + gst-plugins-base/default/make.sh | 3 + gstreamer/default/conf.sh | 10 + gstreamer/default/deps | 32 + gstreamer/default/env.sh | 7 + gstreamer/default/inst.sh | 3 + gstreamer/default/make.sh | 3 + gtk-dynamic/default/conf.sh | 26 + gtk-dynamic/default/deps | 42 + gtk-dynamic/default/deps.bak | 39 + gtk-dynamic/default/make.sh | 3 + guile/default/conf.sh | 8 + guile/default/deps | 20 + ...owner-not-retained-threads-test-as-u.patch | 29 + ...owner-not-retained-threads-test-as-u.patch | 1 + harfbuzz/default/conf.sh | 33 + harfbuzz/default/deps | 34 + harfbuzz/default/inst.sh | 7 + harfbuzz/default/make.sh | 7 + havoc/default/conf.sh | 3 + havoc/default/deps | 21 + havoc/default/make.sh | 6 + havoc/default/patch | 11 + help2man/default/deps | 12 + http-parser/default/conf.sh | 3 + http-parser/default/inst.sh | 8 + http-parser/default/make.sh | 11 + hwids/default/conf.sh | 3 + hwids/default/deps | 12 + hwids/default/inst.sh | 3 + hwids/default/patch | 19 + icu/default/conf.sh | 13 + icu/default/inst.sh | 4 + icu/default/make.sh | 4 + imlib2/default/conf.sh | 39 + imlib2/default/deps | 38 + imlib2/default/deps.bak | 38 + imlib2/default/patch | 9 + infnoise/.gitignore | 9 + infnoise/default/conf.sh | 5 + infnoise/default/deps | 13 + infnoise/default/inst.sh | 3 + infnoise/default/patch | 40 + iproute2/default/deps | 16 + iproute2/default/patch | 11 + itstool/default/conf.sh | 22 + itstool/default/deps | 20 + .../patches-available/fix-segfault.patch | 25 + .../patches-enabled/fix-segfault.patch | 1 + json-c/0.14/deps | 13 + json-c/default/conf.sh | 23 + json-c/default/deps | 6 + json-c/default/inst.sh | 13 + json-c/default/make.sh | 4 + json-glib/default/conf.sh | 19 + json-glib/default/deps | 24 + json-glib/default/env.sh | 7 + json-glib/default/inst.sh | 3 + json-glib/default/kiss.sh | 53 + json-glib/default/make.sh | 3 + kbd/default/conf.sh | 27 + kbd/default/deps | 23 + kmod/default/conf.sh | 13 + kmod/default/inst.sh | 16 + lcms2/default/conf.sh | 27 + lcms2/default/deps | 14 + lcms2/default/lcms2-2.11.tar.gz | 315 ++ ldd/default/conf.sh | 6 + ldd/default/inst.sh | 5 + ldd/default/make.sh | 9 + less/default/deps | 11 + libaio/default/conf.sh | 5 + libaio/default/deps | 2 + libarchive/default/deps | 18 + libarchive/default/inst.sh | 9 + libassuan/default/deps | 14 + libblkid/README | 2 + libblkid/default/conf.sh | 19 + libblkid/default/deps | 2 + libbsd/default/conf.sh | 21 + libbsd/default/deps | 19 + libcap-ng/default/conf.sh | 20 + libcap-ng/default/deps | 13 + libcap/default/conf.sh | 3 + libcap/default/deps | 16 + libcap/default/inst.sh | 3 + libcap/default/make.sh | 5 + libdrm-dynamic/default/conf.sh | 14 + libdrm-dynamic/default/deps | 24 + libdrm-dynamic/default/inst.sh | 3 + libdrm-dynamic/default/make.sh | 3 + libdrm/default/conf.sh | 11 + libdrm/default/deps | 24 + libdrm/default/inst.sh | 3 + libdrm/default/make.sh | 3 + libdrm/default/patch | 141 + libelf/default/b/error.h | 27 + libelf/default/conf.sh | 23 + libelf/default/deps | 21 + libelf/default/env.sh | 14 + libelf/default/inst.sh | 3 + libelf/default/make.sh | 4 + .../default/patches-available/error-h.patch | 31 + .../patches-available/fix-aarch64_fregs.patch | 14 + .../patches-available/fix-uninitialized.patch | 17 + .../patches-available/musl-asm-ptrace-h.patch | 10 + .../patches-available/musl-cdefs.patch | 20 + .../patches-available/musl-fts-obstack.patch | 87 + .../patches-available/musl-macros.patch | 87 + .../patches-available/musl-qsort_r.patch | 67 + .../patches-available/musl-strerror_r.patch | 19 + .../patches-available/musl-strndupa.patch | 18 + libelf/default/patches-enabled/error-h.patch | 1 + .../patches-enabled/fix-aarch64_fregs.patch | 1 + .../patches-enabled/fix-uninitialized.patch | 1 + .../patches-enabled/musl-asm-ptrace-h.patch | 1 + .../default/patches-enabled/musl-cdefs.patch | 1 + .../patches-enabled/musl-fts-obstack.patch | 1 + .../default/patches-enabled/musl-macros.patch | 1 + .../patches-enabled/musl-qsort_r.patch | 1 + .../patches-enabled/musl-strerror_r.patch | 1 + .../patches-enabled/musl-strndupa.patch | 1 + libepoxy/default/conf.sh | 13 + libepoxy/default/deps | 24 + libepoxy/default/deps.way | 23 + libepoxy/default/deps.x11 | 36 + libepoxy/default/env.sh | 7 + libepoxy/default/inst.sh | 3 + libepoxy/default/make.sh | 3 + libevdev-dynamic/default/conf.sh | 21 + libevdev-dynamic/default/deps | 12 + ...-switch-to-VLAs-for-multitouch-state.patch | 281 ++ ...-switch-to-VLAs-for-multitouch-state.patch | 1 + libevdev/default/conf.sh | 21 + libevdev/default/deps | 12 + ...-switch-to-VLAs-for-multitouch-state.patch | 281 ++ ...-switch-to-VLAs-for-multitouch-state.patch | 1 + libevent/default/deps | 12 + libffi/default/deps | 12 + libfontenc/default/conf.sh | 3 + libfontenc/default/deps | 14 + libftdi1/default/conf.sh | 16 + libftdi1/default/deps | 15 + libftdi1/default/inst.sh | 4 + libftdi1/default/make.sh | 4 + libftdi1/default/patch | 19 + libgcrypt/default/conf.sh | 20 + libgcrypt/default/deps | 15 + libgcrypt/default/env.sh | 7 + libgit2/default/conf.sh | 3 + libgit2/default/deps | 22 + libgit2/default/inst.sh | 4 + libgit2/default/make.sh | 39 + libglvnd/default/conf.sh | 3 + libglvnd/default/deps | 22 + libglvnd/default/env.sh | 7 + libglvnd/default/inst.sh | 3 + libglvnd/default/make.sh | 3 + libgpg-error/default/conf.sh | 20 + libgpg-error/default/deps | 13 + libgpg-error/default/env.sh | 7 + libgudev/default/conf.sh | 9 + libgudev/default/deps | 18 + libgudev/default/env.sh | 7 + libice/default/deps | 28 + libid3tag/default/conf.sh | 24 + libid3tag/default/deps | 14 + libid3tag/default/inst.sh | 17 + libid3tag/default/patch | 15 + libidn2/default/conf.sh | 9 + libidn2/default/deps | 13 + libidn2/default/env.sh | 7 + libinput-dynamic/default/conf.sh | 12 + libinput-dynamic/default/deps | 25 + libinput-dynamic/default/inst.sh | 3 + libinput-dynamic/default/make.sh | 3 + libinput-dynamic/default/meson.build | 1001 +++++ libinput/default/conf.sh | 12 + libinput/default/deps | 25 + libinput/default/inst.sh | 3 + libinput/default/make.sh | 3 + libinput/default/meson.build | 1001 +++++ libinput/default/patch | 11 + libinput/default/patch.bak2 | 19 + libjpeg-turbo/default/conf.sh | 10 + libjpeg-turbo/default/deps | 12 + libksba/default/deps | 14 + libogg/default/conf.sh | 20 + libogg/default/env.sh | 7 + libpciaccess/default/deps | 11 + libpng/default/conf.sh | 25 + libpng/default/deps | 17 + libpopt/default/patch | 1094 +++++ libproxy/default/conf.sh | 10 + libproxy/default/deps | 16 + libproxy/default/env.sh | 7 + libproxy/default/inst.sh | 3 + libproxy/default/make.sh | 3 + libpsl/default/conf.sh | 10 + libpsl/default/deps | 14 + libressl/default/conf.sh | 17 + libressl/default/deps | 12 + libseccomp/default/conf.sh | 8 + libseccomp/default/deps | 13 + libseccomp/default/env.sh | 7 + .../remove-redefinition-prctl.patch | 10 + .../remove-redefinition-prctl.patch | 1 + libsecret/default/conf.sh | 7 + libsecret/default/deps | 31 + libsecret/default/env.sh | 7 + libsecret/default/inst.sh | 3 + libsecret/default/make.sh | 3 + libsm/default/deps | 30 + libsoup/default/conf.sh | 8 + libsoup/default/deps | 51 + libsoup/default/env.sh | 8 + libsoup/default/inst.sh | 3 + libsoup/default/make.sh | 3 + libssh2/default/conf.sh | 24 + libssh2/default/deps | 16 + libssh2/default/make.sh.bak | 7 + .../patches-available/CVE-2019-17498.patch | 72 + .../patches-enabled/CVE-2019-17498.patch | 1 + libtasn1/default/conf.sh | 10 + libtasn1/default/deps | 15 + libtasn1/default/make.sh | 3 + libtheora/default/APKBUILD | 78 + libtheora/default/conf.sh | 15 + libtheora/default/deps | 19 + libtheora/default/env.sh | 7 + libtheora/default/inst.sh | 3 + libtheora/default/make.sh | 4 + .../default/patches-available/automake.patch | 11 + libtheora/default/patches-available/enc.patch | 11 + .../default/patches-available/fix-mmx.patch | 31 + .../default/patches-available/fix-timeb.patch | 75 + .../patches-available/libtheora-flags.patch | 14 + .../default/patches-enabled/automake.patch | 1 + libtheora/default/patches-enabled/enc.patch | 1 + .../default/patches-enabled/fix-mmx.patch | 1 + .../default/patches-enabled/fix-timeb.patch | 1 + .../patches-enabled/libtheora-flags.patch | 1 + libtiff/default/conf.sh | 26 + libtiff/default/deps | 18 + libtool/default/inst.sh | 10 + libucontext/default/conf.sh | 3 + libucontext/default/env.sh | 14 + libusb/default/conf.sh | 25 + libusb/default/deps | 15 + libusb/default/env.sh | 7 + libuuid/README | 2 + libuuid/default/conf.sh | 19 + libvorbis/default/conf.sh | 20 + libvorbis/default/deps | 13 + libvorbis/default/env.sh | 7 + libwebp/default/conf.sh | 23 + libwebp/default/deps | 21 + libwpe/default/conf.sh | 16 + libwpe/default/deps | 16 + libwpe/default/inst.sh | 4 + libwpe/default/make.sh | 4 + libwpebackend-fdo/default/conf.sh | 16 + libwpebackend-fdo/default/deps | 21 + libwpebackend-fdo/default/inst.sh | 4 + libwpebackend-fdo/default/make.sh | 4 + libx11/default/conf.sh | 25 + libx11/default/deps | 28 + libxau/default/conf.sh | 25 + libxau/default/deps | 28 + libxcb/default/conf.sh | 39 + libxcb/default/deps | 26 + libxcb/default/deps.bak | 32 + libxcb/default/make.sh | 3 + libxdamage/default/deps | 20 + libxdmcp/default/deps | 12 + libxext/default/deps | 29 + libxfixes/default/deps | 19 + libxfont2/default/conf.sh | 33 + libxfont2/default/deps | 32 + libxfont2/default/deps.bak | 34 + libxft/default/deps | 30 + libxinerama/default/deps | 30 + libxkbcommon-dynamic/default/conf.sh | 15 + libxkbcommon-dynamic/default/deps | 30 + libxkbcommon-dynamic/default/inst.sh | 3 + libxkbcommon-dynamic/default/make.sh | 3 + .../0001-Track-generated-xkbcomp-parser.patch | 3464 ++++++++++++++++ .../patches-available/0100-static-meson.patch | 29 + .../0001-Track-generated-xkbcomp-parser.patch | 1 + libxkbcommon/default/conf.sh | 15 + libxkbcommon/default/deps | 28 + libxkbcommon/default/inst.sh | 3 + libxkbcommon/default/make.sh | 3 + .../0001-Track-generated-xkbcomp-parser.patch | 3464 ++++++++++++++++ .../patches-available/0100-static-meson.patch | 29 + .../0001-Track-generated-xkbcomp-parser.patch | 1 + .../patches-enabled/0100-static-meson.patch | 1 + libxkbfile/default/deps | 31 + libxml2/default/conf.sh | 22 + libxml2/default/deps | 21 + .../0100-CVE-2019-20388.patch | 12 + .../0200-libxml2-CVE-2020-7595.patch | 32 + ...t-Make-xmlFreeNodeList-non-recursive.patch | 64 + ...libxml2-2.9.8-python3-unicode-errors.patch | 34 + .../0500-CVE-2020-24977.patch | 40 + .../patches-enabled/0100-CVE-2019-20388.patch | 1 + .../0200-libxml2-CVE-2020-7595.patch | 1 + ...t-Make-xmlFreeNodeList-non-recursive.patch | 1 + ...libxml2-2.9.8-python3-unicode-errors.patch | 1 + .../patches-enabled/0500-CVE-2020-24977.patch | 1 + libxrandr/default/deps | 31 + libxrender/default/deps | 22 + libxshmfence/default/conf.sh | 21 + libxshmfence/default/deps | 13 + libxslt/default/deps | 14 + libxt/default/deps | 31 + libxxf86vm/default/deps | 20 + linux-kernel/default/conf.sh | 12 + linux-kernel/default/deps | 25 + linux-kernel/default/env.sh | 6 + linux-kernel/default/inst.sh | 14 + linux-kernel/default/ppc64le-config | 3671 +++++++++++++++++ linux-libre | 1 + lix-os-bootloader/default/conf.sh | 3 + lix-os-bootloader/default/deps | 2 + lix-os-bootloader/default/inst.sh | 14 + lix-os-bootloader/default/make.sh | 19 + lix-os-filesystem/default/conf.sh | 3 + lix-os-filesystem/default/deps | 0 lix-os-filesystem/default/inst.sh | 17 + lix-os-filesystem/default/make.sh | 3 + lix-os-initramfs/.gitignore | 2 + lix-os-initramfs/default/conf.sh | 3 + lix-os-initramfs/default/deps | 14 + lix-os-initramfs/default/deps.bak | 14 + lix-os-initramfs/default/inst.sh | 7 + lix-os-initramfs/default/make.sh | 19 + lix-os-initramfs/default/pull.sh | 9 + lix-os/default/deps | 60 + llvm/default/conf.sh | 41 + llvm/default/deps | 25 + llvm/default/env.sh | 7 + llvm/default/inst.sh | 4 + llvm/default/make.sh | 9 + ...lib-tests-for-musl-s-dlclose-is-noop.patch | 22 + .../fix-LLVMConfig-cmake-install-prefix.patch | 24 + .../fix-memory-mf_exec-on-aarch64.patch | 25 + .../patches-available/python3-test.patch | 8 + ...lib-tests-for-musl-s-dlclose-is-noop.patch | 1 + .../fix-LLVMConfig-cmake-install-prefix.patch | 1 + .../fix-memory-mf_exec-on-aarch64.patch | 1 + .../patches-enabled/python3-test.patch | 1 + lua/default/conf.sh | 5 + lua/default/deps | 12 + lua/default/inst.sh | 5 + lua/default/make.sh | 5 + lua/default/patch | 53 + lvm2/default/NOTES | 19 + lvm2/default/conf.sh | 55 + lvm2/default/deps | 12 + lvm2/default/inst.sh | 4 + lvm2/default/make.sh | 7 + lvm2/default/patch | 258 ++ lynx/2.8.9rel.1/patch | 311 ++ lynx/default/conf.sh | 23 + lynx/default/deps | 18 + lynx/default/inst.sh | 7 + lynx/default/make.sh | 7 + mako/default/conf.sh | 45 + mako/default/deps | 32 + mako/default/inst.sh | 45 + mako/default/kiss.sh | 45 + mako/default/make.sh | 45 + mesa-dynamic/default/conf.sh | 35 + mesa-dynamic/default/conf.sh.bak | 38 + mesa-dynamic/default/conf.sh.bak2 | 24 + mesa-dynamic/default/deps | 34 + mesa-dynamic/default/deps.bak | 41 + mesa-dynamic/default/env.sh | 7 + mesa-dynamic/default/inst.sh | 3 + mesa-dynamic/default/make.sh | 3 + .../0100-adjust-cache-deflate-buffer.patch | 16 + .../0200-musl-fix-includes.patch | 13 + .../0300-add-use-elf-tls.patch | 28 + .../0400-disable-rgb10-by-default.patch | 25 + ...ch64-force-persistent-buffers-to-GTT.patch | 38 + .../0100-adjust-cache-deflate-buffer.patch | 1 + .../0200-musl-fix-includes.patch | 1 + .../0300-add-use-elf-tls.patch | 1 + .../0400-disable-rgb10-by-default.patch | 1 + ...ch64-force-persistent-buffers-to-GTT.patch | 1 + mesa/default/conf.sh | 23 + mesa/default/deps | 31 + mesa/default/deps.bak | 41 + mesa/default/inst.sh | 3 + mesa/default/make.sh | 3 + mesa/default/patch | 477 +++ meson/default/conf.sh | 3 + meson/default/deps | 19 + meson/default/inst.sh | 4 + meson/default/make.sh | 3 + microwindows/default/conf.sh | 3 + microwindows/default/deps | 17 + microwindows/default/inst.sh | 9 + microwindows/default/lock.h | 83 + microwindows/default/make.sh | 5 + microwindows/default/patch | 143 + mksh/default/conf.sh | 3 + mksh/default/deps | 8 + mksh/default/inst.sh | 10 + mksh/default/make.sh | 4 + mle/default/conf.sh | 3 + mle/default/inst.sh | 5 + mle/default/make.sh | 5 + mount/default/conf.sh | 21 + mrustc/default/conf.sh | 51 + mrustc/default/deps | 34 + mrustc/default/inst.sh | 3 + mrustc/default/make.sh | 18 + .../0100-ppc64-support.patch | 59 + .../0200-run_rustc-ppc64le-and-musl.patch | 29 + .../0300-ppc64le-minicargo-manifest.patch | 13 + .../0400-minicargo-disable-ssh.patch | 13 + .../patches-enabled/0100-ppc64-support.patch | 1 + .../0200-run_rustc-ppc64le-and-musl.patch | 29 + .../0300-ppc64le-minicargo-manifest.patch | 1 + .../0400-minicargo-disable-ssh.patch | 1 + mtdev/default/conf.sh | 21 + .../0001-Avoid-__builtin_ffs.patch | 44 + .../patches-available/0100-config-sub.patch | 3039 ++++++++++++++ .../0001-Avoid-__builtin_ffs.patch | 1 + .../patches-enabled/0100-config-sub.patch | 1 + musl-cross-make/default/conf.sh | 7 + musl-cross-make/default/deps | 22 + musl-cross-make/default/env.sh | 30 + musl-cross-make/default/inst.sh | 18 + musl-cross-make/default/make.sh | 3 + musl-cross-make/default/patch | 58 + musl-cross-make/default/patch.bak | 60 + nano/default/conf.sh | 10 + nano/default/deps | 14 + ncgol/default/conf.sh | 3 + ncgol/default/deps | 10 + ncgol/default/inst.sh | 3 + ncgol/default/patch | 10 + ncurses/default/conf.sh | 26 + ncurses/default/deps | 2 + ncurses/default/inst.sh | 16 + netsurf-fb/default/conf.sh | 26 + netsurf-fb/default/deps | 38 + netsurf-fb/default/inst.sh | 16 + netsurf-fb/default/make.sh | 35 + netsurf-fb/default/messages.awk | 9 + netsurf-gtk/default/conf.sh | 26 + netsurf-gtk/default/deps | 55 + netsurf-gtk/default/inst.sh | 16 + netsurf-gtk/default/make.sh | 39 + netsurf-gtk/default/messages.awk | 9 + netsurf-qs/default/conf.sh | 33 + netsurf-qs/default/deps | 33 + netsurf-qs/default/inst.sh | 3 + netsurf-qs/default/make.sh | 14 + netsurf-qs/default/messages.awk | 9 + nettle/default/conf.sh | 11 + nettle/default/deps | 13 + nettle/default/inst.sh | 3 + nettle/default/make.sh | 6 + nix/default/deps | 27 + nldev/default/conf.sh | 5 + nldev/default/patch | 20 + nlmon/default/conf.sh | 5 + nlmon/default/patch | 23 + npth/default/deps | 13 + openjpeg/default/conf.sh | 9 + openjpeg/default/deps | 15 + .../patches-available/CVE-2019-12973.patch | 152 + .../patches-available/CVE-2020-15389.patch | 39 + .../patches-available/CVE-2020-6851.patch | 29 + .../patches-available/CVE-2020-8112.patch | 43 + .../patches-available/fix-cmakelists.patch | 11 + .../patches-enabled/CVE-2019-12973.patch | 1 + .../patches-enabled/CVE-2020-15389.patch | 1 + .../patches-enabled/CVE-2020-6851.patch | 1 + .../patches-enabled/CVE-2020-8112.patch | 1 + .../patches-enabled/fix-cmakelists.patch | 1 + opus/default/conf.sh | 7 + opus/default/env.sh | 7 + orc/default/APKBUILD | 42 + orc/default/conf.sh | 6 + orc/default/deps | 21 + orc/default/env.sh | 7 + orc/default/inst.sh | 3 + orc/default/make.sh | 3 + p11-kit/default/APKBUILD | 54 + p11-kit/default/conf.sh | 6 + p11-kit/default/deps | 23 + p11-kit/default/env.sh | 7 + p11-kit/default/inst.sh | 4 + p11-kit/default/make.sh | 3 + pango/default/conf.sh | 11 + pango/default/deps | 41 + pango/default/inst.sh | 7 + pango/default/make.sh | 7 + patch/default/deps | 12 + pciutils/default/conf.sh | 3 + pciutils/default/deps | 12 + pciutils/default/inst.sh | 19 + pciutils/default/make.sh | 7 + pciutils/default/patch | 39 + pcre/default/conf.sh | 21 + pcre2/default/conf.sh | 21 + pcsc-lite-first-pass/default/conf.sh | 47 + pcsc-lite-first-pass/default/deps | 16 + pcsc-lite-first-pass/default/env.sh | 11 + pcsc-lite/default/conf.sh | 47 + pcsc-lite/default/deps | 22 + pcsc-lite/default/env.sh | 11 + pcsc-lite/default/patch | 11 + perl | 1 + perl-dynamic/default/conf.sh | 38 + perl-dynamic/default/deps | 13 + perl-html-entities/default/conf.sh | 3 + perl-html-entities/default/deps | 14 + perl-html-entities/default/inst.sh | 5 + perl-html-entities/default/make.sh | 3 + perl-static/default/conf.sh | 34 + perl-static/default/deps | 13 + perl-test-pod/default/conf.sh | 4 + perl-test-pod/default/deps | 12 + perl-test-pod/default/inst.sh | 5 + perl-test-pod/default/make.sh | 4 + perl-test-pod/default/patch.bak | 21 + perl-yaml-syck/default/conf.sh | 4 + perl-yaml-syck/default/deps | 12 + perl-yaml-syck/default/inst.sh | 5 + perl-yaml-syck/default/make.sh | 4 + perl-yaml-syck/default/patch | 21 + pinentry/default/conf.sh | 32 + pinentry/default/deps | 17 + pixman/default/conf.sh | 24 + pixman/default/deps | 11 + pkgconf/default/conf.sh | 12 + pkgconf/default/deps | 16 + pkgconf/default/inst.sh | 5 + py3-appdirs/default/conf.sh | 3 + py3-appdirs/default/deps | 12 + py3-appdirs/default/inst.sh | 3 + py3-appdirs/default/make.sh | 3 + py3-libxml2/default/conf.sh | 26 + py3-libxml2/default/deps | 28 + py3-libxml2/default/inst.sh | 18 + .../0100-CVE-2019-20388.patch | 12 + .../0200-libxml2-CVE-2020-7595.patch | 32 + ...t-Make-xmlFreeNodeList-non-recursive.patch | 64 + ...libxml2-2.9.8-python3-unicode-errors.patch | 34 + .../0500-CVE-2020-24977.patch | 40 + .../patches-enabled/0100-CVE-2019-20388.patch | 1 + .../0200-libxml2-CVE-2020-7595.patch | 1 + ...t-Make-xmlFreeNodeList-non-recursive.patch | 1 + ...libxml2-2.9.8-python3-unicode-errors.patch | 1 + .../patches-enabled/0500-CVE-2020-24977.patch | 1 + py3-mako/default/conf.sh | 3 + py3-mako/default/deps | 26 + py3-mako/default/inst.sh | 4 + py3-mako/default/make.sh | 3 + py3-mooltipy/default/conf.sh | 3 + py3-mooltipy/default/deps | 29 + py3-mooltipy/default/inst.sh | 4 + py3-mooltipy/default/make.sh | 3 + py3-ordered-set/default/conf.sh | 3 + py3-ordered-set/default/deps | 12 + py3-ordered-set/default/inst.sh | 5 + py3-ordered-set/default/make.sh | 3 + py3-packaging/default/conf.sh | 3 + py3-packaging/default/deps | 14 + py3-packaging/default/inst.sh | 3 + py3-packaging/default/make.sh | 3 + py3-parsing/default/conf.sh | 3 + py3-parsing/default/deps | 12 + py3-parsing/default/inst.sh | 5 + py3-parsing/default/make.sh | 3 + py3-pip/default/conf.sh | 3 + py3-pip/default/deps | 26 + py3-pip/default/inst.sh | 5 + py3-pip/default/make.sh | 3 + py3-pyusb/default/conf.sh | 3 + py3-pyusb/default/deps | 26 + py3-pyusb/default/inst.sh | 4 + py3-pyusb/default/make.sh | 3 + py3-setuptools/default/conf.sh | 26 + py3-setuptools/default/deps | 17 + py3-setuptools/default/inst.sh | 3 + py3-setuptools/default/make.sh | 3 + py3-six/default/conf.sh | 3 + py3-six/default/deps | 12 + py3-six/default/inst.sh | 3 + py3-six/default/make.sh | 3 + python2/default/conf.sh | 35 + python2/default/deps | 28 + python2/default/inst.sh | 6 + python2/default/make.sh | 14 + .../patches-available/musl-find_library.patch | 45 + .../patches-available/static-modules.patch | 180 + .../patches-available/unchecked-ioctl.patch | 11 + .../patches-enabled/musl-find_library.patch | 1 + .../patches-enabled/static-modules.patch | 1 + .../patches-enabled/unchecked-ioctl.patch | 1 + python2/default/test_threads.py | 15 + python3-dynamic/default/conf.sh | 37 + python3-dynamic/default/deps | 29 + python3-dynamic/default/env.sh | 16 + python3-dynamic/default/inst.sh | 6 + python3-dynamic/default/make.sh | 14 + python3-dynamic/default/patch | 60 + python3-dynamic/default/test_threads.py | 15 + python3/default/conf.sh | 34 + python3/default/deps | 28 + python3/default/inst.sh | 6 + python3/default/make.sh | 14 + python3/default/patch | 232 ++ python3/default/test_threads.py | 15 + quintom-cursor-theme-ink/default/conf.sh | 3 + quintom-cursor-theme-ink/default/inst.sh | 4 + quintom-cursor-theme-ink/default/make.sh | 3 + quintom-cursor-theme-snow/default/conf.sh | 3 + quintom-cursor-theme-snow/default/inst.sh | 4 + quintom-cursor-theme-snow/default/make.sh | 3 + rsync/default/conf.sh | 21 + rsync/default/deps | 16 + ruby/default/conf.sh | 21 + ruby/default/deps | 26 + ruby/default/env.sh | 19 + .../fix-get_main_stack.patch | 70 + ...ubygems-avoid-platform-specific-gems.patch | 31 + .../test_insns-lower-recursion-depth.patch | 47 + .../patches-enabled/fix-get_main_stack.patch | 1 + ...ubygems-avoid-platform-specific-gems.patch | 1 + .../test_insns-lower-recursion-depth.patch | 1 + rust-src/default/conf.sh | 3 + rust-src/default/inst.sh | 4 + rust-src/default/make.sh | 4 + ...er-libgcc_eh-over-libunwind-for-musl.patch | 63 + .../alpine-move-py-scripts-to-share.patch | 23 + .../patches-available/alpine-target.patch | 125 + .../install-template-shebang.patch | 10 + .../link-musl-dynamically.patch | 27 + .../musl-dont-use-crt-static.patch | 13 + .../musl-fix-linux_musl_base.patch | 19 + .../patches-available/need-rpath.patch | 62 + .../need-ssp_nonshared.patch | 11 + ...er-libgcc_eh-over-libunwind-for-musl.patch | 1 + .../patches-enabled/alpine-target.patch | 1 + .../install-template-shebang.patch | 1 + .../link-musl-dynamically.patch | 1 + .../musl-dont-use-crt-static.patch | 1 + samurai/default/conf.sh | 3 + samurai/default/patch | 10 + sbase/default/conf.sh | 5 + sbase/default/deps | 11 + sbase/default/inst.sh | 7 + sbase/default/patch | 19 + scdoc/default/conf.sh | 3 + screen/default/conf.sh | 26 + screen/default/deps | 12 + scron/default/conf.sh | 5 + scron/default/patch | 13 + sdhcp/default/conf.sh | 5 + sdhcp/default/patch | 21 + sdl/default/conf.sh | 33 + sdl/default/deps | 22 + sdl/default/deps.bak | 34 + .../0000-SDL-1.2.10-GrabNotViewable.patch | 22 + .../0100-SDL-1.2.15-const_XData32.patch | 16 + .../0200-CVE-2019-7574.patch | 71 + .../0300-CVE-2019-7572.patch | 64 + .../0400-CVE-2019-7572.patch | 59 + .../0500-CVE-2019-7573.patch | 83 + .../0600-CVE-2019-7577.patch | 75 + .../0700-CVE-2019-7577.patch | 57 + .../0800-CVE-2019-7575.patch | 84 + .../0900-CVE-2019-7578.patch | 67 + .../1000-CVE-2019-7635.patch | 53 + .../1100-CVE-2019-7635.patch | 21 + .../1200-CVE-2019-7636.patch | 29 + .../1300-CVE-2019-7637.patch | 182 + .../1400-CVE-2019-7637.patch | 42 + .../1500-CVE-2019-13616.patch | 20 + .../patches-available/1600-config-sub.patch | 2951 +++++++++++++ .../0000-SDL-1.2.10-GrabNotViewable.patch | 1 + .../0100-SDL-1.2.15-const_XData32.patch | 1 + .../patches-enabled/0200-CVE-2019-7574.patch | 1 + .../patches-enabled/0300-CVE-2019-7572.patch | 1 + .../patches-enabled/0400-CVE-2019-7572.patch | 1 + .../patches-enabled/0500-CVE-2019-7573.patch | 1 + .../patches-enabled/0600-CVE-2019-7577.patch | 1 + .../patches-enabled/0700-CVE-2019-7577.patch | 1 + .../patches-enabled/0800-CVE-2019-7575.patch | 1 + .../patches-enabled/0900-CVE-2019-7578.patch | 1 + .../patches-enabled/1000-CVE-2019-7635.patch | 1 + .../patches-enabled/1100-CVE-2019-7635.patch | 1 + .../patches-enabled/1200-CVE-2019-7636.patch | 1 + .../patches-enabled/1300-CVE-2019-7637.patch | 1 + .../patches-enabled/1400-CVE-2019-7637.patch | 1 + .../patches-enabled/1500-CVE-2019-13616.patch | 1 + .../patches-enabled/1600-config-sub.patch | 1 + shared-mime-info/default/conf.sh | 3 + shared-mime-info/default/deps | 38 + shared-mime-info/default/inst.sh | 3 + shared-mime-info/default/make.sh | 6 + shared-mime-info/default/meson.build | 42 + .../0100-use-samurai-instead-of-ninja.patch | 11 + .../0200-xmlto-skip-validation.patch | 10 + .../0100-use-samurai-instead-of-ninja.patch | 1 + .../0200-xmlto-skip-validation.patch | 1 + sinit/default/conf.sh | 5 + sinit/default/patch | 11 + smdev/default/conf.sh | 5 + smdev/default/deps | 10 + smdev/default/patch | 44 + sqlite/default/conf.sh | 55 + sqlite/default/deps | 13 + st/default/conf.sh | 3 + st/default/deps | 35 + st/default/patch | 30 + strace/default/conf.sh | 22 + strace/default/deps | 15 + .../patches-available/disable-fortify.patch | 39 + .../patches-available/nlattr-fix.patch | 21 + .../patches-enabled/disable-fortify.patch | 1 + .../default/patches-enabled/nlattr-fix.patch | 1 + svc/default/conf.sh | 3 + svc/default/inst.sh | 11 + svc/default/make.sh | 3 + sway/default/conf.sh | 7 + sway/default/deps | 53 + sway/default/inst.sh | 11 + sway/default/make.sh | 7 + swaybg/default/conf.sh | 7 + swaybg/default/deps | 54 + swaybg/default/inst.sh | 11 + swaybg/default/make.sh | 7 + swc/default/conf.sh | 3 + swc/default/deps | 37 + swc/default/inst.sh | 4 + swc/default/make.sh | 8 + swc/default/patch | 14 + swig/default/conf.sh | 7 + swig/default/deps | 16 + .../patches-available/fix-test-sed-PATH.patch | 18 + .../patches-enabled/fix-test-sed-PATH.patch | 1 + tcl/default/conf.sh | 16 + tcl/default/deps | 13 + tcl/default/env.sh | 7 + tcl/default/inst.sh | 4 + tcl/default/make.sh | 4 + .../patches-available/tcl-stat64.patch | 11 + tcl/default/patches-enabled/tcl-stat64.patch | 1 + texinfo/default/deps | 2 + tllist/default/conf.sh | 6 + tllist/default/deps | 20 + tllist/default/inst.sh | 3 + tllist/default/make.sh | 3 + .../default/conf.sh | 3 + .../default/inst.sh | 4 + .../default/make.sh | 3 + .../default/conf.sh | 3 + .../default/inst.sh | 4 + .../default/make.sh | 3 + tls-certs-letsencrypt-e1/default/conf.sh | 3 + tls-certs-letsencrypt-e1/default/inst.sh | 4 + tls-certs-letsencrypt-e1/default/make.sh | 3 + tls-certs-letsencrypt-e2/default/conf.sh | 3 + tls-certs-letsencrypt-e2/default/inst.sh | 4 + tls-certs-letsencrypt-e2/default/make.sh | 3 + tls-certs-letsencrypt-r3/default/conf.sh | 3 + tls-certs-letsencrypt-r3/default/inst.sh | 4 + tls-certs-letsencrypt-r3/default/make.sh | 3 + tls-certs-letsencrypt-r4/default/conf.sh | 3 + tls-certs-letsencrypt-r4/default/inst.sh | 4 + tls-certs-letsencrypt-r4/default/make.sh | 3 + tls-certs-letsencrypt-root-x1/default/conf.sh | 3 + tls-certs-letsencrypt-root-x1/default/inst.sh | 4 + tls-certs-letsencrypt-root-x1/default/make.sh | 3 + tls-certs-letsencrypt-root-x2/default/conf.sh | 3 + tls-certs-letsencrypt-root-x2/default/inst.sh | 4 + tls-certs-letsencrypt-root-x2/default/make.sh | 3 + tls-certs-letsencrypt/default/conf.sh | 3 + tls-certs-letsencrypt/default/inst.sh | 4 + tls-certs-letsencrypt/default/make.sh | 3 + tls-certs-mozilla/default/conf.sh | 3 + tls-certs-mozilla/default/deps | 12 + tls-certs-mozilla/default/inst.sh | 4 + tls-certs-mozilla/default/make.sh | 3 + tls-certs/default/conf.sh | 3 + tls-certs/default/deps | 20 + tls-certs/default/inst.sh | 5 + tls-certs/default/make.sh | 3 + tmux/default/conf.sh | 22 + tmux/default/deps | 17 + tor/default/conf.sh | 32 + tor/default/deps | 16 + tor/default/env.sh | 13 + torsocks/default/conf.sh | 23 + torsocks/default/deps | 12 + torsocks/default/inst.sh | 3 + torsocks/default/make.sh | 3 + tree/default/conf.sh | 3 + tree/default/patch | 18 + ttf-dejavu/default/conf.sh | 3 + ttf-dejavu/default/inst.sh | 4 + ttf-dejavu/default/make.sh | 3 + ubase/default/conf.sh | 5 + ubase/default/deps | 4 + ubase/default/inst.sh | 7 + ubase/default/patch | 99 + unshare/default/conf.sh | 19 + vala/default/conf.sh | 6 + vala/default/deps | 23 + vala/default/env.sh | 7 + velox/default/conf.sh | 3 + velox/default/deps | 38 + velox/default/inst.sh | 5 + velox/default/make.sh | 10 + w3m/default/conf.sh | 33 + w3m/default/deps | 38 + w3m/default/deps.bak | 38 + w3m/default/make.sh | 3 + w3m/default/patch | 19 + wayland-protocols/default/conf.sh | 23 + wayland-protocols/default/deps | 12 + wayland/default/b/wayland-client.pc.in | 12 + wayland/default/b/wayland-server.pc.in | 12 + wayland/default/conf.sh | 30 + wayland/default/deps | 17 + wayland/default/make.sh | 3 + .../0100-remove-test-for-static-linking.patch | 121 + .../patches-available/0200-lffi-pkgconf.patch | 16 + .../0100-remove-test-for-static-linking.patch | 1 + .../patches-enabled/0200-lffi-pkgconf.patch | 1 + webkit2gtk/default/APKBUILD | 243 ++ webkit2gtk/default/conf.sh | 49 + webkit2gtk/default/deps | 97 + webkit2gtk/default/env.sh | 22 + webkit2gtk/default/inst.sh | 7 + webkit2gtk/default/make.sh | 3 + .../0100-suckless-ln-compat.patch | 42 + .../fix-fast-memory-disabled.patch | 14 + .../patches-available/fix-openjpeg.patch | 11 + .../patches-available/lower-stack-usage.patch | 17 + .../patches-available/musl-fixes.patch | 68 + .../use-versioned-libwpe.patch | 13 + .../0100-suckless-ln-compat.patch | 1 + .../fix-fast-memory-disabled.patch | 1 + .../patches-enabled/fix-openjpeg.patch | 1 + .../patches-enabled/lower-stack-usage.patch | 1 + .../default/patches-enabled/musl-fixes.patch | 1 + .../use-versioned-libwpe.patch | 1 + weston/default/APKBUILD | 129 + weston/default/conf.sh | 8 + weston/default/deps | 48 + weston/default/env.sh | 7 + weston/default/inst.sh | 3 + weston/default/make.sh | 3 + .../patches-available/missing-fnctl_h.patch | 15 + .../default/patches-available/timespec.patch | 10 + .../patches-enabled/missing-fnctl_h.patch | 1 + weston/default/patches-enabled/timespec.patch | 1 + wld/default/conf.sh | 3 + wld/default/deps | 30 + wld/default/inst.sh | 4 + wld/default/make.sh | 8 + wld/default/patch | 18 + wlroots/default/conf.sh | 10 + wlroots/default/deps | 40 + wlroots/default/inst.sh | 3 + wlroots/default/make.sh | 3 + wpewebkit/default/APKBUILD | 243 ++ wpewebkit/default/conf.sh | 36 + wpewebkit/default/conf.sh.bak | 42 + wpewebkit/default/deps | 96 + wpewebkit/default/env.sh | 7 + wpewebkit/default/inst.sh | 6 + wpewebkit/default/make.sh | 3 + .../0100-suckless-ln-compat.patch | 38 + .../fix-fast-memory-disabled.patch | 14 + .../patches-available/fix-openjpeg.patch | 11 + .../patches-available/lower-stack-usage.patch | 17 + .../patches-available/musl-fixes.patch | 68 + .../use-versioned-libwpe.patch | 13 + .../0100-suckless-ln-compat.patch | 1 + .../fix-fast-memory-disabled.patch | 1 + .../patches-enabled/fix-openjpeg.patch | 1 + .../patches-enabled/lower-stack-usage.patch | 1 + .../default/patches-enabled/musl-fixes.patch | 1 + .../use-versioned-libwpe.patch | 1 + xcb-proto/default/deps | 13 + xcb-util-image/default/deps | 24 + xcb-util-keysyms/default/deps | 24 + xcb-util-renderutil/default/deps | 24 + xcb-util-wm/default/deps | 24 + xcb-util/default/deps | 23 + xdg-dbus-proxy/default/conf.sh | 8 + xdg-dbus-proxy/default/deps | 18 + xdg-dbus-proxy/default/env.sh | 7 + .../default/patches-available/musl-fix.patch | 22 + .../default/patches-enabled/musl-fix.patch | 1 + xinit/default/conf.sh | 22 + xinit/default/deps | 29 + xkbcomp/default/conf.sh | 21 + xkbcomp/default/deps | 31 + xkeyboard-config/default/conf.sh | 9 + xkeyboard-config/default/deps | 14 + xkeyboard-config/default/deps.bak | 32 + xkeyboard-config/default/deps.bak2 | 14 + xkeyboard-config/default/kiss.sh | 15 + xmlto/default/deps | 17 + ...e-IOPortBase-is-declared-extern-on-m.patch | 29 + ...85f4ebf559a3bac4817b41074c43d4691779.patch | 31 + .../alpine-patches/link-libshadow.patch | 31 + .../default/alpine-patches/xwayland-glx.patch | 419 ++ xorg-server/default/conf.sh | 31 + xorg-server/default/deps | 45 + xorg-server/default/deps.bak | 48 + xorg-server/default/env.sh | 28 + xorg-server/default/kiss.sh | 22 + xorg-server/default/make.sh | 7 + xorg-server/default/modesetting.patch | 14 + .../default/patches-available/fix-crash.patch | 31 + .../rootless_modesetting.patch | 14 + .../default/patches-enabled/fix-crash.patch | 1 + .../rootless_modesetting.patch | 1 + xorgproto/default/conf.sh | 3 + xorgproto/default/deps | 21 + xorgproto/default/inst.sh | 10 + xorgproto/default/make.sh | 5 + xxd/default/conf.sh | 3 + xxd/default/inst.sh | 3 + xxd/default/make.sh | 3 + xz/default/conf.sh | 24 + xz/default/deps | 11 + yaft/default/conf.sh | 4 + yaft/default/deps | 12 + zlib/default/conf.sh | 14 + zlib/default/deps | 11 + 1247 files changed, 49855 insertions(+) create mode 100755 2048-c/default/conf.sh create mode 100755 2048-c/default/inst.sh create mode 100644 LICENSE create mode 100644 README create mode 100755 alsa-lib/default/conf.sh create mode 100644 alsa-lib/default/deps create mode 100644 alsa-lib/default/env.sh create mode 100755 alsa-lib/default/inst.sh create mode 100755 alsa-lib/default/make.sh create mode 100644 alsa-lib/default/patches-available/fix-dlo.patch create mode 100644 alsa-lib/default/patches-available/remove-test.patch create mode 120000 alsa-lib/default/patches-enabled/fix-dlo.patch create mode 120000 alsa-lib/default/patches-enabled/remove-test.patch create mode 100755 argon2/default/conf.sh create mode 100644 argon2/default/deps create mode 100755 at-spi2-atk/default/conf.sh create mode 100644 at-spi2-atk/default/deps create mode 100644 at-spi2-atk/default/env.sh create mode 100755 at-spi2-atk/default/inst.sh create mode 100755 at-spi2-atk/default/make.sh create mode 100755 at-spi2-core/default/conf.sh create mode 100644 at-spi2-core/default/deps create mode 100644 at-spi2-core/default/env.sh create mode 100755 at-spi2-core/default/inst.sh create mode 100755 at-spi2-core/default/make.sh create mode 100755 atk/default/conf.sh create mode 100644 atk/default/deps create mode 100755 atk/default/inst.sh create mode 100755 atk/default/make.sh create mode 100644 attr/default/deps create mode 100644 autoconf-archive/default/deps create mode 100644 autoconf/8a09003664733eb6bef031f56ef9cd575e403023/patch create mode 100755 autoconf/default/conf.sh create mode 100644 autoconf/default/deps create mode 100644 autoconf/v2.69b/patch create mode 100755 automake/default/conf.sh create mode 100644 automake/default/deps create mode 100755 awk/default/conf.sh create mode 100644 awk/default/deps create mode 100755 awk/default/inst.sh create mode 100644 awk/default/patch create mode 100755 bash/default/conf.sh create mode 100644 bash/default/deps create mode 100755 bash/default/inst.sh create mode 100755 bc/default/conf.sh create mode 100755 bearssl/default/conf.sh create mode 100644 bearssl/default/deps create mode 100755 bearssl/default/inst.sh create mode 100644 bison/default/deps create mode 100755 bit-babbler/default/conf.sh create mode 100644 bit-babbler/default/deps create mode 100755 bit-babbler/default/inst.sh create mode 100644 bit-babbler/default/patch create mode 100755 brotli/default/conf.sh create mode 100644 brotli/default/deps create mode 100644 brotli/default/patches-available/838.patch create mode 100644 brotli/default/patches-available/build-tool-against-shared-lib.patch create mode 100644 brotli/default/patches-available/optimize-mips-s390x.patch create mode 120000 brotli/default/patches-enabled/838.patch create mode 120000 brotli/default/patches-enabled/build-tool-against-shared-lib.patch create mode 120000 brotli/default/patches-enabled/optimize-mips-s390x.patch create mode 100755 bsd-compat-headers/default/conf.sh create mode 100755 bsd-compat-headers/default/inst.sh create mode 100755 bsd-compat-headers/default/make.sh create mode 100644 bsd-compat-headers/default/patch create mode 100755 bubblewrap/default/conf.sh create mode 100644 bubblewrap/default/deps create mode 100644 bubblewrap/default/patches-available/realpath-workaround.patch create mode 120000 bubblewrap/default/patches-enabled/realpath-workaround.patch create mode 100755 busybox/default/inst.sh create mode 100644 bzip2/default/PATCH-NOTES create mode 100755 bzip2/default/conf.sh create mode 100644 bzip2/default/deps create mode 100755 bzip2/default/inst.sh create mode 100755 bzip2/default/make.sh create mode 100644 bzip2/default/patch create mode 100755 cairo/default/conf.sh create mode 100644 cairo/default/deps create mode 100644 cairo/default/patches-available/CVE-2018-19876.patch create mode 100644 cairo/default/patches-available/musl-stacksize.patch create mode 100644 cairo/default/patches-available/pdf-flush.patch create mode 120000 cairo/default/patches-enabled/CVE-2018-19876.patch create mode 120000 cairo/default/patches-enabled/musl-stacksize.patch create mode 120000 cairo/default/patches-enabled/pdf-flush.patch create mode 100644 ccache/default/deps create mode 100755 ccache/default/inst.sh create mode 100755 ccid/default/conf.sh create mode 100644 ccid/default/deps create mode 100755 ccid/default/env.sh create mode 100755 ccid/default/inst.sh create mode 100644 cdparanoia/default/APKBUILD create mode 100755 cdparanoia/default/conf.sh create mode 100644 cdparanoia/default/deps create mode 100644 cdparanoia/default/env.sh create mode 100755 cdparanoia/default/inst.sh create mode 100755 cdparanoia/default/make.sh create mode 100644 cdparanoia/default/patches-available/fix-includes.patch create mode 100644 cdparanoia/default/patches-available/gcc.patch create mode 100644 cdparanoia/default/patches-available/no-cuserid.patch create mode 120000 cdparanoia/default/patches-enabled/fix-includes.patch create mode 120000 cdparanoia/default/patches-enabled/gcc.patch create mode 120000 cdparanoia/default/patches-enabled/no-cuserid.patch create mode 100755 ckbcomp/default/conf.sh create mode 100644 ckbcomp/default/deps create mode 100755 ckbcomp/default/inst.sh create mode 100755 ckbcomp/default/make.sh create mode 100755 cmake/default/conf.sh create mode 100644 cmake/default/deps create mode 100755 cog/default/conf.sh create mode 100644 cog/default/deps create mode 100755 cog/default/env.sh create mode 100755 cog/default/inst.sh create mode 100755 cog/default/make.sh create mode 100644 cryptsetup/2.3.2/deps create mode 100755 cryptsetup/default/conf.sh create mode 100644 cryptsetup/default/deps create mode 100755 curl/default/conf.sh create mode 100644 curl/default/deps create mode 100755 curl/default/inst.sh create mode 100755 dash/default/conf.sh create mode 100644 dash/default/deps create mode 100755 dash/default/inst.sh create mode 100644 dbus/default/APKBUILD create mode 100755 dbus/default/conf.sh create mode 100644 dbus/default/deps create mode 100644 dbus/default/env.sh create mode 100755 dbus/default/inst.sh create mode 100644 delegate/default/make.sh create mode 100644 delegate/default/patch create mode 100755 dmenu/default/conf.sh create mode 100644 dmenu/default/deps create mode 100644 dmenu/default/patch create mode 100755 doas/default/conf.sh create mode 100644 doas/default/deps create mode 100755 doas/default/inst.sh create mode 100755 doas/default/make.sh create mode 100755 docbook-xml-src/default/conf.sh create mode 100755 docbook-xml-src/default/inst.sh create mode 100755 docbook-xml-src/default/make.sh create mode 100755 docbook-xml/4.5/conf.sh create mode 100644 docbook-xml/4.5/deps create mode 100755 docbook-xml/4.5/inst.sh create mode 100755 docbook-xml/4.5/make.sh create mode 100755 docbook-xsl/default/conf.sh create mode 100644 docbook-xsl/default/deps create mode 100755 docbook-xsl/default/inst.sh create mode 100755 docbook-xsl/default/make.sh create mode 100644 docbook-xsl/default/patches-available/765567_non-recursive_string_subst.patch create mode 120000 docbook-xsl/default/patches-enabled/765567_non-recursive_string_subst.patch create mode 100755 dwm/default/conf.sh create mode 100644 dwm/default/deps create mode 100644 dwm/default/patch create mode 100755 e2fsprogs/default/conf.sh create mode 100644 e2fsprogs/default/deps create mode 100755 e2fsprogs/default/inst.sh create mode 100755 e2fsprogs/default/make.sh create mode 100755 elvis/default/conf.sh create mode 100644 elvis/default/deps create mode 100755 eudev/default/conf.sh create mode 100644 eudev/default/deps create mode 100755 eudev/default/env.sh create mode 100644 eudev/default/patch create mode 100755 expat/default/conf.sh create mode 100644 expat/default/deps create mode 100755 expat/default/inst.sh create mode 100755 expat/default/make.sh create mode 100644 fbida/default/deps create mode 100755 fbpad-mkfn/default/conf.sh create mode 100644 fbpad-mkfn/default/deps create mode 100755 fbpad-mkfn/default/inst.sh create mode 100644 fbpad-mkfn/default/patch create mode 100755 fbpad/default/conf.sh create mode 100644 fbpad/default/deps create mode 100755 fbpad/default/inst.sh create mode 100644 fbpad/default/patch create mode 100755 fbset/default/conf.sh create mode 100644 fbset/default/deps create mode 100644 fbset/default/patch create mode 100755 fbv/default/conf.sh create mode 100755 fbv/default/configure create mode 100644 fbv/default/deps create mode 100644 fbv/default/patch create mode 100755 fcft/default/conf.sh create mode 100644 fcft/default/deps create mode 100755 fcft/default/inst.sh create mode 100755 fcft/default/make.sh create mode 100755 feh/default/conf.sh create mode 100644 feh/default/deps create mode 100644 feh/default/patch create mode 100644 flex/default/deps create mode 100755 fontconfig/default/conf.sh create mode 100644 fontconfig/default/deps create mode 100755 fontconfig/default/make.sh create mode 100755 foot/default/conf.sh create mode 100644 foot/default/deps create mode 100755 foot/default/inst.sh create mode 100755 foot/default/make.sh create mode 100644 foot/default/patches-available/0100-ppc64-TIOCSWINSZ.patch create mode 120000 foot/default/patches-enabled/0100-ppc64-TIOCSWINSZ.patch create mode 100755 freetype-harfbuzz/default/conf.sh create mode 100644 freetype-harfbuzz/default/deps create mode 100755 freetype/default/conf.sh create mode 100644 freetype/default/deps create mode 100755 fribidi/default/conf.sh create mode 100644 fribidi/default/deps create mode 100755 gc/default/conf.sh create mode 100644 gc/default/deps create mode 100755 gcr/default/conf.sh create mode 100644 gcr/default/deps create mode 100644 gcr/default/deps.bak create mode 100644 gcr/default/deps.uniq create mode 100644 gcr/default/env.sh create mode 100755 gcr/default/inst.sh create mode 100755 gcr/default/make.sh create mode 100644 gcr/default/patches-available/allow-building-without-gpg.patch create mode 100644 gcr/default/patches-available/dont-run-gpg-tests.patch create mode 100644 gcr/default/patches-available/fix-64-bit-time_t-32-bit.patch create mode 120000 gcr/default/patches-enabled/allow-building-without-gpg.patch create mode 120000 gcr/default/patches-enabled/dont-run-gpg-tests.patch create mode 120000 gcr/default/patches-enabled/fix-64-bit-time_t-32-bit.patch create mode 100644 gdb/9.2/patch create mode 100755 gdb/default/conf.sh create mode 100644 gdb/default/deps create mode 100755 gdb/default/inst.sh create mode 100755 gdb/default/make.sh create mode 100644 gdb/ppc-musl.patch create mode 100644 gdb/ppc-ptregs.patch create mode 100644 gdb/s390x-use-elf-gdb_fpregset_t.patch create mode 100755 gdk-pixbuf/default/conf.sh create mode 100644 gdk-pixbuf/default/deps create mode 100755 gdk-pixbuf/default/inst.sh create mode 100755 gdk-pixbuf/default/make.sh create mode 100644 getopt/default/b/Makefile create mode 100644 getopt/default/b/getopt.c create mode 100755 getopt/default/conf.sh create mode 100644 getopt/default/deps create mode 100644 getopt/default/patch create mode 100755 gettext/default/conf.sh create mode 100644 gettext/default/deps create mode 100755 giflib/default/conf.sh create mode 100644 giflib/default/deps create mode 100644 giflib/default/patch create mode 100755 git/default/conf.sh create mode 100644 git/default/deps create mode 100755 glib-networking/default/conf.sh create mode 100644 glib-networking/default/deps create mode 100644 glib-networking/default/env.sh create mode 100755 glib-networking/default/inst.sh create mode 100755 glib-networking/default/make.sh create mode 100755 glib/default/conf.sh create mode 100755 glib/default/conf.sh.bak create mode 100644 glib/default/deps create mode 100755 glib/default/inst.sh create mode 100755 glib/default/kiss.sh create mode 100755 glib/default/make.sh create mode 100755 gmp/default/conf.sh create mode 100644 gmp/default/deps create mode 100644 gmp/default/env.sh create mode 100755 gmp/default/inst.sh create mode 100644 gnu-grep/default/deps create mode 100755 gnu-readline/default/conf.sh create mode 100644 gnu-readline/default/deps create mode 100644 gnu-sed/default/deps create mode 100755 gnu-tar/default/env.sh create mode 100755 gnupg-dynamic/2/conf.sh create mode 100644 gnupg-dynamic/2/deps create mode 100755 gnupg-dynamic/2/env.sh create mode 100644 gnupg/1/deps create mode 100755 gnupg/2/conf.sh create mode 100644 gnupg/2/deps create mode 100755 gnutls/default/conf.sh create mode 100644 gnutls/default/deps create mode 100644 gnutls/default/env.sh create mode 100644 gnutls/default/patches-available/tests-certtool.patch create mode 100644 gnutls/default/patches-available/tests-crq.patch create mode 120000 gnutls/default/patches-enabled/tests-certtool.patch create mode 120000 gnutls/default/patches-enabled/tests-crq.patch create mode 100755 gobject-introspection-dynamic/default/conf.sh create mode 100644 gobject-introspection-dynamic/default/deps create mode 100755 gobject-introspection-dynamic/default/inst.sh create mode 100755 gobject-introspection-dynamic/default/make.sh create mode 100644 gobject-introspection-dynamic/default/patches-available/musl-time64.patch create mode 120000 gobject-introspection-dynamic/default/patches-enabled/musl-time64.patch create mode 100755 gptfdisk/default/conf.sh create mode 100644 gptfdisk/default/deps create mode 100755 gptfdisk/default/inst.sh create mode 100755 gptfdisk/default/make.sh create mode 100755 graphviz/default/conf.sh create mode 100644 graphviz/default/deps create mode 100644 graphviz/default/env.sh create mode 100755 graphviz/default/inst.sh create mode 100644 graphviz/default/patches-available/0001-clone-nameclash.patch create mode 100644 graphviz/default/patches-available/0100-no-ghostscript-or-groff-dependency.patch create mode 120000 graphviz/default/patches-enabled/0001-clone-nameclash.patch create mode 120000 graphviz/default/patches-enabled/0100-no-ghostscript-or-groff-dependency.patch create mode 100644 gsettings-desktop-schemas/default/APKBUILD create mode 100755 gsettings-desktop-schemas/default/conf.sh create mode 100644 gsettings-desktop-schemas/default/deps create mode 100755 gsettings-desktop-schemas/default/inst.sh create mode 100755 gsettings-desktop-schemas/default/make.sh create mode 100755 gst-plugins-base/default/conf.sh create mode 100644 gst-plugins-base/default/deps create mode 100644 gst-plugins-base/default/env.sh create mode 100755 gst-plugins-base/default/inst.sh create mode 100755 gst-plugins-base/default/make.sh create mode 100755 gstreamer/default/conf.sh create mode 100644 gstreamer/default/deps create mode 100644 gstreamer/default/env.sh create mode 100755 gstreamer/default/inst.sh create mode 100755 gstreamer/default/make.sh create mode 100755 gtk-dynamic/default/conf.sh create mode 100644 gtk-dynamic/default/deps create mode 100644 gtk-dynamic/default/deps.bak create mode 100755 gtk-dynamic/default/make.sh create mode 100755 guile/default/conf.sh create mode 100644 guile/default/deps create mode 100644 guile/default/patches-available/0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch create mode 120000 guile/default/patches-enabled/0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch create mode 100755 harfbuzz/default/conf.sh create mode 100644 harfbuzz/default/deps create mode 100755 harfbuzz/default/inst.sh create mode 100755 harfbuzz/default/make.sh create mode 100755 havoc/default/conf.sh create mode 100644 havoc/default/deps create mode 100755 havoc/default/make.sh create mode 100644 havoc/default/patch create mode 100644 help2man/default/deps create mode 100755 http-parser/default/conf.sh create mode 100755 http-parser/default/inst.sh create mode 100755 http-parser/default/make.sh create mode 100755 hwids/default/conf.sh create mode 100644 hwids/default/deps create mode 100755 hwids/default/inst.sh create mode 100644 hwids/default/patch create mode 100755 icu/default/conf.sh create mode 100755 icu/default/inst.sh create mode 100755 icu/default/make.sh create mode 100755 imlib2/default/conf.sh create mode 100644 imlib2/default/deps create mode 100644 imlib2/default/deps.bak create mode 100644 imlib2/default/patch create mode 100644 infnoise/.gitignore create mode 100755 infnoise/default/conf.sh create mode 100644 infnoise/default/deps create mode 100755 infnoise/default/inst.sh create mode 100644 infnoise/default/patch create mode 100644 iproute2/default/deps create mode 100644 iproute2/default/patch create mode 100755 itstool/default/conf.sh create mode 100644 itstool/default/deps create mode 100644 itstool/default/patches-available/fix-segfault.patch create mode 120000 itstool/default/patches-enabled/fix-segfault.patch create mode 100644 json-c/0.14/deps create mode 100755 json-c/default/conf.sh create mode 100644 json-c/default/deps create mode 100755 json-c/default/inst.sh create mode 100755 json-c/default/make.sh create mode 100755 json-glib/default/conf.sh create mode 100644 json-glib/default/deps create mode 100644 json-glib/default/env.sh create mode 100755 json-glib/default/inst.sh create mode 100755 json-glib/default/kiss.sh create mode 100755 json-glib/default/make.sh create mode 100755 kbd/default/conf.sh create mode 100644 kbd/default/deps create mode 100755 kmod/default/conf.sh create mode 100755 kmod/default/inst.sh create mode 100755 lcms2/default/conf.sh create mode 100644 lcms2/default/deps create mode 100644 lcms2/default/lcms2-2.11.tar.gz create mode 100755 ldd/default/conf.sh create mode 100755 ldd/default/inst.sh create mode 100755 ldd/default/make.sh create mode 100644 less/default/deps create mode 100755 libaio/default/conf.sh create mode 100644 libaio/default/deps create mode 100644 libarchive/default/deps create mode 100755 libarchive/default/inst.sh create mode 100644 libassuan/default/deps create mode 100644 libblkid/README create mode 100755 libblkid/default/conf.sh create mode 100644 libblkid/default/deps create mode 100755 libbsd/default/conf.sh create mode 100644 libbsd/default/deps create mode 100755 libcap-ng/default/conf.sh create mode 100644 libcap-ng/default/deps create mode 100755 libcap/default/conf.sh create mode 100644 libcap/default/deps create mode 100755 libcap/default/inst.sh create mode 100755 libcap/default/make.sh create mode 100755 libdrm-dynamic/default/conf.sh create mode 100644 libdrm-dynamic/default/deps create mode 100755 libdrm-dynamic/default/inst.sh create mode 100755 libdrm-dynamic/default/make.sh create mode 100755 libdrm/default/conf.sh create mode 100644 libdrm/default/deps create mode 100755 libdrm/default/inst.sh create mode 100755 libdrm/default/make.sh create mode 100644 libdrm/default/patch create mode 100644 libelf/default/b/error.h create mode 100755 libelf/default/conf.sh create mode 100644 libelf/default/deps create mode 100755 libelf/default/env.sh create mode 100755 libelf/default/inst.sh create mode 100755 libelf/default/make.sh create mode 100644 libelf/default/patches-available/error-h.patch create mode 100644 libelf/default/patches-available/fix-aarch64_fregs.patch create mode 100644 libelf/default/patches-available/fix-uninitialized.patch create mode 100644 libelf/default/patches-available/musl-asm-ptrace-h.patch create mode 100644 libelf/default/patches-available/musl-cdefs.patch create mode 100644 libelf/default/patches-available/musl-fts-obstack.patch create mode 100644 libelf/default/patches-available/musl-macros.patch create mode 100644 libelf/default/patches-available/musl-qsort_r.patch create mode 100644 libelf/default/patches-available/musl-strerror_r.patch create mode 100644 libelf/default/patches-available/musl-strndupa.patch create mode 120000 libelf/default/patches-enabled/error-h.patch create mode 120000 libelf/default/patches-enabled/fix-aarch64_fregs.patch create mode 120000 libelf/default/patches-enabled/fix-uninitialized.patch create mode 120000 libelf/default/patches-enabled/musl-asm-ptrace-h.patch create mode 120000 libelf/default/patches-enabled/musl-cdefs.patch create mode 120000 libelf/default/patches-enabled/musl-fts-obstack.patch create mode 120000 libelf/default/patches-enabled/musl-macros.patch create mode 120000 libelf/default/patches-enabled/musl-qsort_r.patch create mode 120000 libelf/default/patches-enabled/musl-strerror_r.patch create mode 120000 libelf/default/patches-enabled/musl-strndupa.patch create mode 100755 libepoxy/default/conf.sh create mode 100644 libepoxy/default/deps create mode 100644 libepoxy/default/deps.way create mode 100644 libepoxy/default/deps.x11 create mode 100644 libepoxy/default/env.sh create mode 100755 libepoxy/default/inst.sh create mode 100755 libepoxy/default/make.sh create mode 100755 libevdev-dynamic/default/conf.sh create mode 100644 libevdev-dynamic/default/deps create mode 100644 libevdev-dynamic/default/patches-available/0001-Revert-switch-to-VLAs-for-multitouch-state.patch create mode 120000 libevdev-dynamic/default/patches-enabled/0001-Revert-switch-to-VLAs-for-multitouch-state.patch create mode 100755 libevdev/default/conf.sh create mode 100644 libevdev/default/deps create mode 100644 libevdev/default/patches-available/0001-Revert-switch-to-VLAs-for-multitouch-state.patch create mode 120000 libevdev/default/patches-enabled/0001-Revert-switch-to-VLAs-for-multitouch-state.patch create mode 100644 libevent/default/deps create mode 100644 libffi/default/deps create mode 100755 libfontenc/default/conf.sh create mode 100644 libfontenc/default/deps create mode 100755 libftdi1/default/conf.sh create mode 100644 libftdi1/default/deps create mode 100755 libftdi1/default/inst.sh create mode 100755 libftdi1/default/make.sh create mode 100644 libftdi1/default/patch create mode 100755 libgcrypt/default/conf.sh create mode 100644 libgcrypt/default/deps create mode 100644 libgcrypt/default/env.sh create mode 100755 libgit2/default/conf.sh create mode 100644 libgit2/default/deps create mode 100755 libgit2/default/inst.sh create mode 100755 libgit2/default/make.sh create mode 100755 libglvnd/default/conf.sh create mode 100644 libglvnd/default/deps create mode 100755 libglvnd/default/env.sh create mode 100755 libglvnd/default/inst.sh create mode 100755 libglvnd/default/make.sh create mode 100755 libgpg-error/default/conf.sh create mode 100644 libgpg-error/default/deps create mode 100644 libgpg-error/default/env.sh create mode 100755 libgudev/default/conf.sh create mode 100644 libgudev/default/deps create mode 100644 libgudev/default/env.sh create mode 100644 libice/default/deps create mode 100755 libid3tag/default/conf.sh create mode 100644 libid3tag/default/deps create mode 100755 libid3tag/default/inst.sh create mode 100644 libid3tag/default/patch create mode 100755 libidn2/default/conf.sh create mode 100644 libidn2/default/deps create mode 100644 libidn2/default/env.sh create mode 100755 libinput-dynamic/default/conf.sh create mode 100644 libinput-dynamic/default/deps create mode 100755 libinput-dynamic/default/inst.sh create mode 100755 libinput-dynamic/default/make.sh create mode 100644 libinput-dynamic/default/meson.build create mode 100755 libinput/default/conf.sh create mode 100644 libinput/default/deps create mode 100755 libinput/default/inst.sh create mode 100755 libinput/default/make.sh create mode 100644 libinput/default/meson.build create mode 100644 libinput/default/patch create mode 100644 libinput/default/patch.bak2 create mode 100755 libjpeg-turbo/default/conf.sh create mode 100644 libjpeg-turbo/default/deps create mode 100644 libksba/default/deps create mode 100755 libogg/default/conf.sh create mode 100644 libogg/default/env.sh create mode 100644 libpciaccess/default/deps create mode 100755 libpng/default/conf.sh create mode 100644 libpng/default/deps create mode 100644 libpopt/default/patch create mode 100755 libproxy/default/conf.sh create mode 100644 libproxy/default/deps create mode 100644 libproxy/default/env.sh create mode 100755 libproxy/default/inst.sh create mode 100755 libproxy/default/make.sh create mode 100755 libpsl/default/conf.sh create mode 100644 libpsl/default/deps create mode 100755 libressl/default/conf.sh create mode 100644 libressl/default/deps create mode 100755 libseccomp/default/conf.sh create mode 100644 libseccomp/default/deps create mode 100644 libseccomp/default/env.sh create mode 100644 libseccomp/default/patches-available/remove-redefinition-prctl.patch create mode 120000 libseccomp/default/patches-enabled/remove-redefinition-prctl.patch create mode 100755 libsecret/default/conf.sh create mode 100644 libsecret/default/deps create mode 100644 libsecret/default/env.sh create mode 100755 libsecret/default/inst.sh create mode 100755 libsecret/default/make.sh create mode 100644 libsm/default/deps create mode 100755 libsoup/default/conf.sh create mode 100644 libsoup/default/deps create mode 100644 libsoup/default/env.sh create mode 100755 libsoup/default/inst.sh create mode 100755 libsoup/default/make.sh create mode 100755 libssh2/default/conf.sh create mode 100644 libssh2/default/deps create mode 100755 libssh2/default/make.sh.bak create mode 100644 libssh2/default/patches-available/CVE-2019-17498.patch create mode 120000 libssh2/default/patches-enabled/CVE-2019-17498.patch create mode 100755 libtasn1/default/conf.sh create mode 100644 libtasn1/default/deps create mode 100755 libtasn1/default/make.sh create mode 100644 libtheora/default/APKBUILD create mode 100755 libtheora/default/conf.sh create mode 100644 libtheora/default/deps create mode 100644 libtheora/default/env.sh create mode 100755 libtheora/default/inst.sh create mode 100755 libtheora/default/make.sh create mode 100644 libtheora/default/patches-available/automake.patch create mode 100644 libtheora/default/patches-available/enc.patch create mode 100644 libtheora/default/patches-available/fix-mmx.patch create mode 100644 libtheora/default/patches-available/fix-timeb.patch create mode 100644 libtheora/default/patches-available/libtheora-flags.patch create mode 120000 libtheora/default/patches-enabled/automake.patch create mode 120000 libtheora/default/patches-enabled/enc.patch create mode 120000 libtheora/default/patches-enabled/fix-mmx.patch create mode 120000 libtheora/default/patches-enabled/fix-timeb.patch create mode 120000 libtheora/default/patches-enabled/libtheora-flags.patch create mode 100755 libtiff/default/conf.sh create mode 100644 libtiff/default/deps create mode 100755 libtool/default/inst.sh create mode 100755 libucontext/default/conf.sh create mode 100644 libucontext/default/env.sh create mode 100755 libusb/default/conf.sh create mode 100644 libusb/default/deps create mode 100755 libusb/default/env.sh create mode 100644 libuuid/README create mode 100755 libuuid/default/conf.sh create mode 100755 libvorbis/default/conf.sh create mode 100644 libvorbis/default/deps create mode 100644 libvorbis/default/env.sh create mode 100755 libwebp/default/conf.sh create mode 100644 libwebp/default/deps create mode 100755 libwpe/default/conf.sh create mode 100644 libwpe/default/deps create mode 100755 libwpe/default/inst.sh create mode 100755 libwpe/default/make.sh create mode 100755 libwpebackend-fdo/default/conf.sh create mode 100644 libwpebackend-fdo/default/deps create mode 100755 libwpebackend-fdo/default/inst.sh create mode 100755 libwpebackend-fdo/default/make.sh create mode 100755 libx11/default/conf.sh create mode 100644 libx11/default/deps create mode 100755 libxau/default/conf.sh create mode 100644 libxau/default/deps create mode 100755 libxcb/default/conf.sh create mode 100644 libxcb/default/deps create mode 100644 libxcb/default/deps.bak create mode 100755 libxcb/default/make.sh create mode 100644 libxdamage/default/deps create mode 100644 libxdmcp/default/deps create mode 100644 libxext/default/deps create mode 100644 libxfixes/default/deps create mode 100755 libxfont2/default/conf.sh create mode 100644 libxfont2/default/deps create mode 100644 libxfont2/default/deps.bak create mode 100644 libxft/default/deps create mode 100644 libxinerama/default/deps create mode 100755 libxkbcommon-dynamic/default/conf.sh create mode 100644 libxkbcommon-dynamic/default/deps create mode 100755 libxkbcommon-dynamic/default/inst.sh create mode 100755 libxkbcommon-dynamic/default/make.sh create mode 100644 libxkbcommon-dynamic/default/patches-available/0001-Track-generated-xkbcomp-parser.patch create mode 100644 libxkbcommon-dynamic/default/patches-available/0100-static-meson.patch create mode 120000 libxkbcommon-dynamic/default/patches-enabled/0001-Track-generated-xkbcomp-parser.patch create mode 100755 libxkbcommon/default/conf.sh create mode 100644 libxkbcommon/default/deps create mode 100755 libxkbcommon/default/inst.sh create mode 100755 libxkbcommon/default/make.sh create mode 100644 libxkbcommon/default/patches-available/0001-Track-generated-xkbcomp-parser.patch create mode 100644 libxkbcommon/default/patches-available/0100-static-meson.patch create mode 120000 libxkbcommon/default/patches-enabled/0001-Track-generated-xkbcomp-parser.patch create mode 120000 libxkbcommon/default/patches-enabled/0100-static-meson.patch create mode 100644 libxkbfile/default/deps create mode 100755 libxml2/default/conf.sh create mode 100644 libxml2/default/deps create mode 100644 libxml2/default/patches-available/0100-CVE-2019-20388.patch create mode 100644 libxml2/default/patches-available/0200-libxml2-CVE-2020-7595.patch create mode 100644 libxml2/default/patches-available/0300-revert-Make-xmlFreeNodeList-non-recursive.patch create mode 100644 libxml2/default/patches-available/0400-libxml2-2.9.8-python3-unicode-errors.patch create mode 100644 libxml2/default/patches-available/0500-CVE-2020-24977.patch create mode 120000 libxml2/default/patches-enabled/0100-CVE-2019-20388.patch create mode 120000 libxml2/default/patches-enabled/0200-libxml2-CVE-2020-7595.patch create mode 120000 libxml2/default/patches-enabled/0300-revert-Make-xmlFreeNodeList-non-recursive.patch create mode 120000 libxml2/default/patches-enabled/0400-libxml2-2.9.8-python3-unicode-errors.patch create mode 120000 libxml2/default/patches-enabled/0500-CVE-2020-24977.patch create mode 100644 libxrandr/default/deps create mode 100644 libxrender/default/deps create mode 100755 libxshmfence/default/conf.sh create mode 100644 libxshmfence/default/deps create mode 100644 libxslt/default/deps create mode 100644 libxt/default/deps create mode 100644 libxxf86vm/default/deps create mode 100755 linux-kernel/default/conf.sh create mode 100644 linux-kernel/default/deps create mode 100644 linux-kernel/default/env.sh create mode 100755 linux-kernel/default/inst.sh create mode 100644 linux-kernel/default/ppc64le-config create mode 120000 linux-libre create mode 100755 lix-os-bootloader/default/conf.sh create mode 100644 lix-os-bootloader/default/deps create mode 100755 lix-os-bootloader/default/inst.sh create mode 100755 lix-os-bootloader/default/make.sh create mode 100755 lix-os-filesystem/default/conf.sh create mode 100644 lix-os-filesystem/default/deps create mode 100755 lix-os-filesystem/default/inst.sh create mode 100755 lix-os-filesystem/default/make.sh create mode 100644 lix-os-initramfs/.gitignore create mode 100755 lix-os-initramfs/default/conf.sh create mode 100644 lix-os-initramfs/default/deps create mode 100644 lix-os-initramfs/default/deps.bak create mode 100755 lix-os-initramfs/default/inst.sh create mode 100755 lix-os-initramfs/default/make.sh create mode 100755 lix-os-initramfs/default/pull.sh create mode 100644 lix-os/default/deps create mode 100755 llvm/default/conf.sh create mode 100644 llvm/default/deps create mode 100644 llvm/default/env.sh create mode 100755 llvm/default/inst.sh create mode 100755 llvm/default/make.sh create mode 100644 llvm/default/patches-available/0001-Disable-dynamic-lib-tests-for-musl-s-dlclose-is-noop.patch create mode 100644 llvm/default/patches-available/fix-LLVMConfig-cmake-install-prefix.patch create mode 100644 llvm/default/patches-available/fix-memory-mf_exec-on-aarch64.patch create mode 100644 llvm/default/patches-available/python3-test.patch create mode 120000 llvm/default/patches-enabled/0001-Disable-dynamic-lib-tests-for-musl-s-dlclose-is-noop.patch create mode 120000 llvm/default/patches-enabled/fix-LLVMConfig-cmake-install-prefix.patch create mode 120000 llvm/default/patches-enabled/fix-memory-mf_exec-on-aarch64.patch create mode 120000 llvm/default/patches-enabled/python3-test.patch create mode 100755 lua/default/conf.sh create mode 100644 lua/default/deps create mode 100755 lua/default/inst.sh create mode 100755 lua/default/make.sh create mode 100644 lua/default/patch create mode 100644 lvm2/default/NOTES create mode 100755 lvm2/default/conf.sh create mode 100644 lvm2/default/deps create mode 100755 lvm2/default/inst.sh create mode 100755 lvm2/default/make.sh create mode 100644 lvm2/default/patch create mode 100644 lynx/2.8.9rel.1/patch create mode 100755 lynx/default/conf.sh create mode 100644 lynx/default/deps create mode 100755 lynx/default/inst.sh create mode 100755 lynx/default/make.sh create mode 100644 mako/default/conf.sh create mode 100644 mako/default/deps create mode 100644 mako/default/inst.sh create mode 100644 mako/default/kiss.sh create mode 100644 mako/default/make.sh create mode 100755 mesa-dynamic/default/conf.sh create mode 100755 mesa-dynamic/default/conf.sh.bak create mode 100755 mesa-dynamic/default/conf.sh.bak2 create mode 100644 mesa-dynamic/default/deps create mode 100644 mesa-dynamic/default/deps.bak create mode 100644 mesa-dynamic/default/env.sh create mode 100755 mesa-dynamic/default/inst.sh create mode 100755 mesa-dynamic/default/make.sh create mode 100644 mesa-dynamic/default/patches-available/0100-adjust-cache-deflate-buffer.patch create mode 100644 mesa-dynamic/default/patches-available/0200-musl-fix-includes.patch create mode 100644 mesa-dynamic/default/patches-available/0300-add-use-elf-tls.patch create mode 100644 mesa-dynamic/default/patches-available/0400-disable-rgb10-by-default.patch create mode 100644 mesa-dynamic/default/patches-available/0500-radeonsi-On-Aarch64-force-persistent-buffers-to-GTT.patch create mode 120000 mesa-dynamic/default/patches-enabled/0100-adjust-cache-deflate-buffer.patch create mode 120000 mesa-dynamic/default/patches-enabled/0200-musl-fix-includes.patch create mode 120000 mesa-dynamic/default/patches-enabled/0300-add-use-elf-tls.patch create mode 120000 mesa-dynamic/default/patches-enabled/0400-disable-rgb10-by-default.patch create mode 120000 mesa-dynamic/default/patches-enabled/0500-radeonsi-On-Aarch64-force-persistent-buffers-to-GTT.patch create mode 100755 mesa/default/conf.sh create mode 100644 mesa/default/deps create mode 100644 mesa/default/deps.bak create mode 100755 mesa/default/inst.sh create mode 100755 mesa/default/make.sh create mode 100644 mesa/default/patch create mode 100755 meson/default/conf.sh create mode 100644 meson/default/deps create mode 100755 meson/default/inst.sh create mode 100755 meson/default/make.sh create mode 100755 microwindows/default/conf.sh create mode 100644 microwindows/default/deps create mode 100755 microwindows/default/inst.sh create mode 100644 microwindows/default/lock.h create mode 100755 microwindows/default/make.sh create mode 100644 microwindows/default/patch create mode 100755 mksh/default/conf.sh create mode 100644 mksh/default/deps create mode 100755 mksh/default/inst.sh create mode 100755 mksh/default/make.sh create mode 100755 mle/default/conf.sh create mode 100755 mle/default/inst.sh create mode 100755 mle/default/make.sh create mode 100755 mount/default/conf.sh create mode 100755 mrustc/default/conf.sh create mode 100644 mrustc/default/deps create mode 100755 mrustc/default/inst.sh create mode 100755 mrustc/default/make.sh create mode 100644 mrustc/default/patches-available/0100-ppc64-support.patch create mode 100644 mrustc/default/patches-available/0200-run_rustc-ppc64le-and-musl.patch create mode 100644 mrustc/default/patches-available/0300-ppc64le-minicargo-manifest.patch create mode 100644 mrustc/default/patches-available/0400-minicargo-disable-ssh.patch create mode 120000 mrustc/default/patches-enabled/0100-ppc64-support.patch create mode 100644 mrustc/default/patches-enabled/0200-run_rustc-ppc64le-and-musl.patch create mode 120000 mrustc/default/patches-enabled/0300-ppc64le-minicargo-manifest.patch create mode 120000 mrustc/default/patches-enabled/0400-minicargo-disable-ssh.patch create mode 100755 mtdev/default/conf.sh create mode 100644 mtdev/default/patches-available/0001-Avoid-__builtin_ffs.patch create mode 100644 mtdev/default/patches-available/0100-config-sub.patch create mode 120000 mtdev/default/patches-enabled/0001-Avoid-__builtin_ffs.patch create mode 120000 mtdev/default/patches-enabled/0100-config-sub.patch create mode 100755 musl-cross-make/default/conf.sh create mode 100644 musl-cross-make/default/deps create mode 100755 musl-cross-make/default/env.sh create mode 100755 musl-cross-make/default/inst.sh create mode 100755 musl-cross-make/default/make.sh create mode 100644 musl-cross-make/default/patch create mode 100644 musl-cross-make/default/patch.bak create mode 100755 nano/default/conf.sh create mode 100644 nano/default/deps create mode 100755 ncgol/default/conf.sh create mode 100644 ncgol/default/deps create mode 100755 ncgol/default/inst.sh create mode 100644 ncgol/default/patch create mode 100755 ncurses/default/conf.sh create mode 100644 ncurses/default/deps create mode 100755 ncurses/default/inst.sh create mode 100755 netsurf-fb/default/conf.sh create mode 100644 netsurf-fb/default/deps create mode 100755 netsurf-fb/default/inst.sh create mode 100755 netsurf-fb/default/make.sh create mode 100644 netsurf-fb/default/messages.awk create mode 100755 netsurf-gtk/default/conf.sh create mode 100644 netsurf-gtk/default/deps create mode 100755 netsurf-gtk/default/inst.sh create mode 100755 netsurf-gtk/default/make.sh create mode 100644 netsurf-gtk/default/messages.awk create mode 100755 netsurf-qs/default/conf.sh create mode 100644 netsurf-qs/default/deps create mode 100755 netsurf-qs/default/inst.sh create mode 100755 netsurf-qs/default/make.sh create mode 100644 netsurf-qs/default/messages.awk create mode 100755 nettle/default/conf.sh create mode 100644 nettle/default/deps create mode 100755 nettle/default/inst.sh create mode 100755 nettle/default/make.sh create mode 100644 nix/default/deps create mode 100755 nldev/default/conf.sh create mode 100644 nldev/default/patch create mode 100755 nlmon/default/conf.sh create mode 100644 nlmon/default/patch create mode 100644 npth/default/deps create mode 100755 openjpeg/default/conf.sh create mode 100644 openjpeg/default/deps create mode 100644 openjpeg/default/patches-available/CVE-2019-12973.patch create mode 100644 openjpeg/default/patches-available/CVE-2020-15389.patch create mode 100644 openjpeg/default/patches-available/CVE-2020-6851.patch create mode 100644 openjpeg/default/patches-available/CVE-2020-8112.patch create mode 100644 openjpeg/default/patches-available/fix-cmakelists.patch create mode 120000 openjpeg/default/patches-enabled/CVE-2019-12973.patch create mode 120000 openjpeg/default/patches-enabled/CVE-2020-15389.patch create mode 120000 openjpeg/default/patches-enabled/CVE-2020-6851.patch create mode 120000 openjpeg/default/patches-enabled/CVE-2020-8112.patch create mode 120000 openjpeg/default/patches-enabled/fix-cmakelists.patch create mode 100755 opus/default/conf.sh create mode 100644 opus/default/env.sh create mode 100644 orc/default/APKBUILD create mode 100755 orc/default/conf.sh create mode 100644 orc/default/deps create mode 100644 orc/default/env.sh create mode 100755 orc/default/inst.sh create mode 100755 orc/default/make.sh create mode 100644 p11-kit/default/APKBUILD create mode 100755 p11-kit/default/conf.sh create mode 100644 p11-kit/default/deps create mode 100644 p11-kit/default/env.sh create mode 100755 p11-kit/default/inst.sh create mode 100755 p11-kit/default/make.sh create mode 100755 pango/default/conf.sh create mode 100644 pango/default/deps create mode 100755 pango/default/inst.sh create mode 100755 pango/default/make.sh create mode 100644 patch/default/deps create mode 100755 pciutils/default/conf.sh create mode 100644 pciutils/default/deps create mode 100755 pciutils/default/inst.sh create mode 100755 pciutils/default/make.sh create mode 100644 pciutils/default/patch create mode 100755 pcre/default/conf.sh create mode 100755 pcre2/default/conf.sh create mode 100755 pcsc-lite-first-pass/default/conf.sh create mode 100644 pcsc-lite-first-pass/default/deps create mode 100755 pcsc-lite-first-pass/default/env.sh create mode 100755 pcsc-lite/default/conf.sh create mode 100644 pcsc-lite/default/deps create mode 100755 pcsc-lite/default/env.sh create mode 100644 pcsc-lite/default/patch create mode 120000 perl create mode 100755 perl-dynamic/default/conf.sh create mode 100644 perl-dynamic/default/deps create mode 100755 perl-html-entities/default/conf.sh create mode 100644 perl-html-entities/default/deps create mode 100755 perl-html-entities/default/inst.sh create mode 100755 perl-html-entities/default/make.sh create mode 100755 perl-static/default/conf.sh create mode 100644 perl-static/default/deps create mode 100755 perl-test-pod/default/conf.sh create mode 100644 perl-test-pod/default/deps create mode 100755 perl-test-pod/default/inst.sh create mode 100755 perl-test-pod/default/make.sh create mode 100644 perl-test-pod/default/patch.bak create mode 100755 perl-yaml-syck/default/conf.sh create mode 100644 perl-yaml-syck/default/deps create mode 100755 perl-yaml-syck/default/inst.sh create mode 100755 perl-yaml-syck/default/make.sh create mode 100644 perl-yaml-syck/default/patch create mode 100755 pinentry/default/conf.sh create mode 100644 pinentry/default/deps create mode 100755 pixman/default/conf.sh create mode 100644 pixman/default/deps create mode 100755 pkgconf/default/conf.sh create mode 100644 pkgconf/default/deps create mode 100755 pkgconf/default/inst.sh create mode 100755 py3-appdirs/default/conf.sh create mode 100644 py3-appdirs/default/deps create mode 100755 py3-appdirs/default/inst.sh create mode 100755 py3-appdirs/default/make.sh create mode 100755 py3-libxml2/default/conf.sh create mode 100644 py3-libxml2/default/deps create mode 100755 py3-libxml2/default/inst.sh create mode 100644 py3-libxml2/default/patches-available/0100-CVE-2019-20388.patch create mode 100644 py3-libxml2/default/patches-available/0200-libxml2-CVE-2020-7595.patch create mode 100644 py3-libxml2/default/patches-available/0300-revert-Make-xmlFreeNodeList-non-recursive.patch create mode 100644 py3-libxml2/default/patches-available/0400-libxml2-2.9.8-python3-unicode-errors.patch create mode 100644 py3-libxml2/default/patches-available/0500-CVE-2020-24977.patch create mode 120000 py3-libxml2/default/patches-enabled/0100-CVE-2019-20388.patch create mode 120000 py3-libxml2/default/patches-enabled/0200-libxml2-CVE-2020-7595.patch create mode 120000 py3-libxml2/default/patches-enabled/0300-revert-Make-xmlFreeNodeList-non-recursive.patch create mode 120000 py3-libxml2/default/patches-enabled/0400-libxml2-2.9.8-python3-unicode-errors.patch create mode 120000 py3-libxml2/default/patches-enabled/0500-CVE-2020-24977.patch create mode 100755 py3-mako/default/conf.sh create mode 100644 py3-mako/default/deps create mode 100755 py3-mako/default/inst.sh create mode 100755 py3-mako/default/make.sh create mode 100755 py3-mooltipy/default/conf.sh create mode 100644 py3-mooltipy/default/deps create mode 100755 py3-mooltipy/default/inst.sh create mode 100755 py3-mooltipy/default/make.sh create mode 100755 py3-ordered-set/default/conf.sh create mode 100644 py3-ordered-set/default/deps create mode 100755 py3-ordered-set/default/inst.sh create mode 100755 py3-ordered-set/default/make.sh create mode 100755 py3-packaging/default/conf.sh create mode 100644 py3-packaging/default/deps create mode 100755 py3-packaging/default/inst.sh create mode 100755 py3-packaging/default/make.sh create mode 100755 py3-parsing/default/conf.sh create mode 100644 py3-parsing/default/deps create mode 100755 py3-parsing/default/inst.sh create mode 100755 py3-parsing/default/make.sh create mode 100755 py3-pip/default/conf.sh create mode 100644 py3-pip/default/deps create mode 100755 py3-pip/default/inst.sh create mode 100755 py3-pip/default/make.sh create mode 100755 py3-pyusb/default/conf.sh create mode 100644 py3-pyusb/default/deps create mode 100755 py3-pyusb/default/inst.sh create mode 100755 py3-pyusb/default/make.sh create mode 100755 py3-setuptools/default/conf.sh create mode 100644 py3-setuptools/default/deps create mode 100755 py3-setuptools/default/inst.sh create mode 100755 py3-setuptools/default/make.sh create mode 100755 py3-six/default/conf.sh create mode 100644 py3-six/default/deps create mode 100755 py3-six/default/inst.sh create mode 100755 py3-six/default/make.sh create mode 100755 python2/default/conf.sh create mode 100644 python2/default/deps create mode 100755 python2/default/inst.sh create mode 100755 python2/default/make.sh create mode 100644 python2/default/patches-available/musl-find_library.patch create mode 100644 python2/default/patches-available/static-modules.patch create mode 100644 python2/default/patches-available/unchecked-ioctl.patch create mode 120000 python2/default/patches-enabled/musl-find_library.patch create mode 120000 python2/default/patches-enabled/static-modules.patch create mode 120000 python2/default/patches-enabled/unchecked-ioctl.patch create mode 100755 python2/default/test_threads.py create mode 100755 python3-dynamic/default/conf.sh create mode 100644 python3-dynamic/default/deps create mode 100755 python3-dynamic/default/env.sh create mode 100755 python3-dynamic/default/inst.sh create mode 100755 python3-dynamic/default/make.sh create mode 100644 python3-dynamic/default/patch create mode 100755 python3-dynamic/default/test_threads.py create mode 100755 python3/default/conf.sh create mode 100644 python3/default/deps create mode 100755 python3/default/inst.sh create mode 100755 python3/default/make.sh create mode 100644 python3/default/patch create mode 100755 python3/default/test_threads.py create mode 100755 quintom-cursor-theme-ink/default/conf.sh create mode 100755 quintom-cursor-theme-ink/default/inst.sh create mode 100755 quintom-cursor-theme-ink/default/make.sh create mode 100755 quintom-cursor-theme-snow/default/conf.sh create mode 100755 quintom-cursor-theme-snow/default/inst.sh create mode 100755 quintom-cursor-theme-snow/default/make.sh create mode 100755 rsync/default/conf.sh create mode 100644 rsync/default/deps create mode 100755 ruby/default/conf.sh create mode 100644 ruby/default/deps create mode 100755 ruby/default/env.sh create mode 100644 ruby/default/patches-available/fix-get_main_stack.patch create mode 100644 ruby/default/patches-available/rubygems-avoid-platform-specific-gems.patch create mode 100644 ruby/default/patches-available/test_insns-lower-recursion-depth.patch create mode 120000 ruby/default/patches-enabled/fix-get_main_stack.patch create mode 120000 ruby/default/patches-enabled/rubygems-avoid-platform-specific-gems.patch create mode 120000 ruby/default/patches-enabled/test_insns-lower-recursion-depth.patch create mode 100755 rust-src/default/conf.sh create mode 100755 rust-src/default/inst.sh create mode 100755 rust-src/default/make.sh create mode 100644 rust-src/default/patches-available/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch create mode 100644 rust-src/default/patches-available/alpine-move-py-scripts-to-share.patch create mode 100644 rust-src/default/patches-available/alpine-target.patch create mode 100644 rust-src/default/patches-available/install-template-shebang.patch create mode 100644 rust-src/default/patches-available/link-musl-dynamically.patch create mode 100644 rust-src/default/patches-available/musl-dont-use-crt-static.patch create mode 100644 rust-src/default/patches-available/musl-fix-linux_musl_base.patch create mode 100644 rust-src/default/patches-available/need-rpath.patch create mode 100644 rust-src/default/patches-available/need-ssp_nonshared.patch create mode 120000 rust-src/default/patches-enabled/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch create mode 120000 rust-src/default/patches-enabled/alpine-target.patch create mode 120000 rust-src/default/patches-enabled/install-template-shebang.patch create mode 120000 rust-src/default/patches-enabled/link-musl-dynamically.patch create mode 120000 rust-src/default/patches-enabled/musl-dont-use-crt-static.patch create mode 100755 samurai/default/conf.sh create mode 100644 samurai/default/patch create mode 100755 sbase/default/conf.sh create mode 100644 sbase/default/deps create mode 100755 sbase/default/inst.sh create mode 100644 sbase/default/patch create mode 100755 scdoc/default/conf.sh create mode 100755 screen/default/conf.sh create mode 100644 screen/default/deps create mode 100755 scron/default/conf.sh create mode 100644 scron/default/patch create mode 100755 sdhcp/default/conf.sh create mode 100644 sdhcp/default/patch create mode 100755 sdl/default/conf.sh create mode 100644 sdl/default/deps create mode 100644 sdl/default/deps.bak create mode 100644 sdl/default/patches-available/0000-SDL-1.2.10-GrabNotViewable.patch create mode 100644 sdl/default/patches-available/0100-SDL-1.2.15-const_XData32.patch create mode 100644 sdl/default/patches-available/0200-CVE-2019-7574.patch create mode 100644 sdl/default/patches-available/0300-CVE-2019-7572.patch create mode 100644 sdl/default/patches-available/0400-CVE-2019-7572.patch create mode 100644 sdl/default/patches-available/0500-CVE-2019-7573.patch create mode 100644 sdl/default/patches-available/0600-CVE-2019-7577.patch create mode 100644 sdl/default/patches-available/0700-CVE-2019-7577.patch create mode 100644 sdl/default/patches-available/0800-CVE-2019-7575.patch create mode 100644 sdl/default/patches-available/0900-CVE-2019-7578.patch create mode 100644 sdl/default/patches-available/1000-CVE-2019-7635.patch create mode 100644 sdl/default/patches-available/1100-CVE-2019-7635.patch create mode 100644 sdl/default/patches-available/1200-CVE-2019-7636.patch create mode 100644 sdl/default/patches-available/1300-CVE-2019-7637.patch create mode 100644 sdl/default/patches-available/1400-CVE-2019-7637.patch create mode 100644 sdl/default/patches-available/1500-CVE-2019-13616.patch create mode 100644 sdl/default/patches-available/1600-config-sub.patch create mode 120000 sdl/default/patches-enabled/0000-SDL-1.2.10-GrabNotViewable.patch create mode 120000 sdl/default/patches-enabled/0100-SDL-1.2.15-const_XData32.patch create mode 120000 sdl/default/patches-enabled/0200-CVE-2019-7574.patch create mode 120000 sdl/default/patches-enabled/0300-CVE-2019-7572.patch create mode 120000 sdl/default/patches-enabled/0400-CVE-2019-7572.patch create mode 120000 sdl/default/patches-enabled/0500-CVE-2019-7573.patch create mode 120000 sdl/default/patches-enabled/0600-CVE-2019-7577.patch create mode 120000 sdl/default/patches-enabled/0700-CVE-2019-7577.patch create mode 120000 sdl/default/patches-enabled/0800-CVE-2019-7575.patch create mode 120000 sdl/default/patches-enabled/0900-CVE-2019-7578.patch create mode 120000 sdl/default/patches-enabled/1000-CVE-2019-7635.patch create mode 120000 sdl/default/patches-enabled/1100-CVE-2019-7635.patch create mode 120000 sdl/default/patches-enabled/1200-CVE-2019-7636.patch create mode 120000 sdl/default/patches-enabled/1300-CVE-2019-7637.patch create mode 120000 sdl/default/patches-enabled/1400-CVE-2019-7637.patch create mode 120000 sdl/default/patches-enabled/1500-CVE-2019-13616.patch create mode 120000 sdl/default/patches-enabled/1600-config-sub.patch create mode 100755 shared-mime-info/default/conf.sh create mode 100644 shared-mime-info/default/deps create mode 100755 shared-mime-info/default/inst.sh create mode 100755 shared-mime-info/default/make.sh create mode 100644 shared-mime-info/default/meson.build create mode 100644 shared-mime-info/default/patches-available/0100-use-samurai-instead-of-ninja.patch create mode 100644 shared-mime-info/default/patches-available/0200-xmlto-skip-validation.patch create mode 120000 shared-mime-info/default/patches-enabled/0100-use-samurai-instead-of-ninja.patch create mode 120000 shared-mime-info/default/patches-enabled/0200-xmlto-skip-validation.patch create mode 100755 sinit/default/conf.sh create mode 100644 sinit/default/patch create mode 100755 smdev/default/conf.sh create mode 100644 smdev/default/deps create mode 100644 smdev/default/patch create mode 100755 sqlite/default/conf.sh create mode 100644 sqlite/default/deps create mode 100755 st/default/conf.sh create mode 100644 st/default/deps create mode 100644 st/default/patch create mode 100755 strace/default/conf.sh create mode 100644 strace/default/deps create mode 100644 strace/default/patches-available/disable-fortify.patch create mode 100644 strace/default/patches-available/nlattr-fix.patch create mode 120000 strace/default/patches-enabled/disable-fortify.patch create mode 120000 strace/default/patches-enabled/nlattr-fix.patch create mode 100755 svc/default/conf.sh create mode 100755 svc/default/inst.sh create mode 100755 svc/default/make.sh create mode 100755 sway/default/conf.sh create mode 100644 sway/default/deps create mode 100755 sway/default/inst.sh create mode 100755 sway/default/make.sh create mode 100755 swaybg/default/conf.sh create mode 100644 swaybg/default/deps create mode 100755 swaybg/default/inst.sh create mode 100755 swaybg/default/make.sh create mode 100755 swc/default/conf.sh create mode 100644 swc/default/deps create mode 100755 swc/default/inst.sh create mode 100755 swc/default/make.sh create mode 100644 swc/default/patch create mode 100755 swig/default/conf.sh create mode 100644 swig/default/deps create mode 100644 swig/default/patches-available/fix-test-sed-PATH.patch create mode 120000 swig/default/patches-enabled/fix-test-sed-PATH.patch create mode 100755 tcl/default/conf.sh create mode 100644 tcl/default/deps create mode 100644 tcl/default/env.sh create mode 100755 tcl/default/inst.sh create mode 100755 tcl/default/make.sh create mode 100644 tcl/default/patches-available/tcl-stat64.patch create mode 120000 tcl/default/patches-enabled/tcl-stat64.patch create mode 100644 texinfo/default/deps create mode 100755 tllist/default/conf.sh create mode 100644 tllist/default/deps create mode 100755 tllist/default/inst.sh create mode 100755 tllist/default/make.sh create mode 100755 tls-certs-letsencrypt-authority-x3/default/conf.sh create mode 100755 tls-certs-letsencrypt-authority-x3/default/inst.sh create mode 100755 tls-certs-letsencrypt-authority-x3/default/make.sh create mode 100755 tls-certs-letsencrypt-authority-x4/default/conf.sh create mode 100755 tls-certs-letsencrypt-authority-x4/default/inst.sh create mode 100755 tls-certs-letsencrypt-authority-x4/default/make.sh create mode 100755 tls-certs-letsencrypt-e1/default/conf.sh create mode 100755 tls-certs-letsencrypt-e1/default/inst.sh create mode 100755 tls-certs-letsencrypt-e1/default/make.sh create mode 100755 tls-certs-letsencrypt-e2/default/conf.sh create mode 100755 tls-certs-letsencrypt-e2/default/inst.sh create mode 100755 tls-certs-letsencrypt-e2/default/make.sh create mode 100755 tls-certs-letsencrypt-r3/default/conf.sh create mode 100755 tls-certs-letsencrypt-r3/default/inst.sh create mode 100755 tls-certs-letsencrypt-r3/default/make.sh create mode 100755 tls-certs-letsencrypt-r4/default/conf.sh create mode 100755 tls-certs-letsencrypt-r4/default/inst.sh create mode 100755 tls-certs-letsencrypt-r4/default/make.sh create mode 100755 tls-certs-letsencrypt-root-x1/default/conf.sh create mode 100755 tls-certs-letsencrypt-root-x1/default/inst.sh create mode 100755 tls-certs-letsencrypt-root-x1/default/make.sh create mode 100755 tls-certs-letsencrypt-root-x2/default/conf.sh create mode 100755 tls-certs-letsencrypt-root-x2/default/inst.sh create mode 100755 tls-certs-letsencrypt-root-x2/default/make.sh create mode 100644 tls-certs-letsencrypt/default/conf.sh create mode 100644 tls-certs-letsencrypt/default/inst.sh create mode 100644 tls-certs-letsencrypt/default/make.sh create mode 100755 tls-certs-mozilla/default/conf.sh create mode 100644 tls-certs-mozilla/default/deps create mode 100755 tls-certs-mozilla/default/inst.sh create mode 100755 tls-certs-mozilla/default/make.sh create mode 100755 tls-certs/default/conf.sh create mode 100644 tls-certs/default/deps create mode 100755 tls-certs/default/inst.sh create mode 100755 tls-certs/default/make.sh create mode 100755 tmux/default/conf.sh create mode 100644 tmux/default/deps create mode 100755 tor/default/conf.sh create mode 100644 tor/default/deps create mode 100755 tor/default/env.sh create mode 100755 torsocks/default/conf.sh create mode 100644 torsocks/default/deps create mode 100755 torsocks/default/inst.sh create mode 100755 torsocks/default/make.sh create mode 100755 tree/default/conf.sh create mode 100644 tree/default/patch create mode 100755 ttf-dejavu/default/conf.sh create mode 100755 ttf-dejavu/default/inst.sh create mode 100755 ttf-dejavu/default/make.sh create mode 100755 ubase/default/conf.sh create mode 100644 ubase/default/deps create mode 100755 ubase/default/inst.sh create mode 100644 ubase/default/patch create mode 100755 unshare/default/conf.sh create mode 100755 vala/default/conf.sh create mode 100644 vala/default/deps create mode 100644 vala/default/env.sh create mode 100755 velox/default/conf.sh create mode 100644 velox/default/deps create mode 100755 velox/default/inst.sh create mode 100755 velox/default/make.sh create mode 100755 w3m/default/conf.sh create mode 100644 w3m/default/deps create mode 100644 w3m/default/deps.bak create mode 100755 w3m/default/make.sh create mode 100644 w3m/default/patch create mode 100755 wayland-protocols/default/conf.sh create mode 100644 wayland-protocols/default/deps create mode 100644 wayland/default/b/wayland-client.pc.in create mode 100644 wayland/default/b/wayland-server.pc.in create mode 100755 wayland/default/conf.sh create mode 100644 wayland/default/deps create mode 100755 wayland/default/make.sh create mode 100644 wayland/default/patches-available/0100-remove-test-for-static-linking.patch create mode 100644 wayland/default/patches-available/0200-lffi-pkgconf.patch create mode 120000 wayland/default/patches-enabled/0100-remove-test-for-static-linking.patch create mode 120000 wayland/default/patches-enabled/0200-lffi-pkgconf.patch create mode 100644 webkit2gtk/default/APKBUILD create mode 100755 webkit2gtk/default/conf.sh create mode 100644 webkit2gtk/default/deps create mode 100644 webkit2gtk/default/env.sh create mode 100755 webkit2gtk/default/inst.sh create mode 100755 webkit2gtk/default/make.sh create mode 100644 webkit2gtk/default/patches-available/0100-suckless-ln-compat.patch create mode 100644 webkit2gtk/default/patches-available/fix-fast-memory-disabled.patch create mode 100644 webkit2gtk/default/patches-available/fix-openjpeg.patch create mode 100644 webkit2gtk/default/patches-available/lower-stack-usage.patch create mode 100644 webkit2gtk/default/patches-available/musl-fixes.patch create mode 100644 webkit2gtk/default/patches-available/use-versioned-libwpe.patch create mode 120000 webkit2gtk/default/patches-enabled/0100-suckless-ln-compat.patch create mode 120000 webkit2gtk/default/patches-enabled/fix-fast-memory-disabled.patch create mode 120000 webkit2gtk/default/patches-enabled/fix-openjpeg.patch create mode 120000 webkit2gtk/default/patches-enabled/lower-stack-usage.patch create mode 120000 webkit2gtk/default/patches-enabled/musl-fixes.patch create mode 120000 webkit2gtk/default/patches-enabled/use-versioned-libwpe.patch create mode 100644 weston/default/APKBUILD create mode 100755 weston/default/conf.sh create mode 100644 weston/default/deps create mode 100644 weston/default/env.sh create mode 100755 weston/default/inst.sh create mode 100755 weston/default/make.sh create mode 100644 weston/default/patches-available/missing-fnctl_h.patch create mode 100644 weston/default/patches-available/timespec.patch create mode 120000 weston/default/patches-enabled/missing-fnctl_h.patch create mode 120000 weston/default/patches-enabled/timespec.patch create mode 100755 wld/default/conf.sh create mode 100644 wld/default/deps create mode 100755 wld/default/inst.sh create mode 100755 wld/default/make.sh create mode 100644 wld/default/patch create mode 100755 wlroots/default/conf.sh create mode 100644 wlroots/default/deps create mode 100755 wlroots/default/inst.sh create mode 100755 wlroots/default/make.sh create mode 100644 wpewebkit/default/APKBUILD create mode 100755 wpewebkit/default/conf.sh create mode 100755 wpewebkit/default/conf.sh.bak create mode 100644 wpewebkit/default/deps create mode 100644 wpewebkit/default/env.sh create mode 100755 wpewebkit/default/inst.sh create mode 100755 wpewebkit/default/make.sh create mode 100644 wpewebkit/default/patches-available/0100-suckless-ln-compat.patch create mode 100644 wpewebkit/default/patches-available/fix-fast-memory-disabled.patch create mode 100644 wpewebkit/default/patches-available/fix-openjpeg.patch create mode 100644 wpewebkit/default/patches-available/lower-stack-usage.patch create mode 100644 wpewebkit/default/patches-available/musl-fixes.patch create mode 100644 wpewebkit/default/patches-available/use-versioned-libwpe.patch create mode 120000 wpewebkit/default/patches-enabled/0100-suckless-ln-compat.patch create mode 120000 wpewebkit/default/patches-enabled/fix-fast-memory-disabled.patch create mode 120000 wpewebkit/default/patches-enabled/fix-openjpeg.patch create mode 120000 wpewebkit/default/patches-enabled/lower-stack-usage.patch create mode 120000 wpewebkit/default/patches-enabled/musl-fixes.patch create mode 120000 wpewebkit/default/patches-enabled/use-versioned-libwpe.patch create mode 100644 xcb-proto/default/deps create mode 100644 xcb-util-image/default/deps create mode 100644 xcb-util-keysyms/default/deps create mode 100644 xcb-util-renderutil/default/deps create mode 100644 xcb-util-wm/default/deps create mode 100644 xcb-util/default/deps create mode 100755 xdg-dbus-proxy/default/conf.sh create mode 100644 xdg-dbus-proxy/default/deps create mode 100644 xdg-dbus-proxy/default/env.sh create mode 100644 xdg-dbus-proxy/default/patches-available/musl-fix.patch create mode 120000 xdg-dbus-proxy/default/patches-enabled/musl-fix.patch create mode 100755 xinit/default/conf.sh create mode 100644 xinit/default/deps create mode 100755 xkbcomp/default/conf.sh create mode 100644 xkbcomp/default/deps create mode 100755 xkeyboard-config/default/conf.sh create mode 100644 xkeyboard-config/default/deps create mode 100644 xkeyboard-config/default/deps.bak create mode 100644 xkeyboard-config/default/deps.bak2 create mode 100755 xkeyboard-config/default/kiss.sh create mode 100644 xmlto/default/deps create mode 100644 xorg-server/default/alpine-patches/0001-compiler.h-ensure-IOPortBase-is-declared-extern-on-m.patch create mode 100644 xorg-server/default/alpine-patches/e50c85f4ebf559a3bac4817b41074c43d4691779.patch create mode 100644 xorg-server/default/alpine-patches/link-libshadow.patch create mode 100644 xorg-server/default/alpine-patches/xwayland-glx.patch create mode 100755 xorg-server/default/conf.sh create mode 100644 xorg-server/default/deps create mode 100644 xorg-server/default/deps.bak create mode 100755 xorg-server/default/env.sh create mode 100644 xorg-server/default/kiss.sh create mode 100755 xorg-server/default/make.sh create mode 100644 xorg-server/default/modesetting.patch create mode 100644 xorg-server/default/patches-available/fix-crash.patch create mode 100644 xorg-server/default/patches-available/rootless_modesetting.patch create mode 120000 xorg-server/default/patches-enabled/fix-crash.patch create mode 120000 xorg-server/default/patches-enabled/rootless_modesetting.patch create mode 100755 xorgproto/default/conf.sh create mode 100644 xorgproto/default/deps create mode 100755 xorgproto/default/inst.sh create mode 100755 xorgproto/default/make.sh create mode 100755 xxd/default/conf.sh create mode 100755 xxd/default/inst.sh create mode 100755 xxd/default/make.sh create mode 100755 xz/default/conf.sh create mode 100644 xz/default/deps create mode 100755 yaft/default/conf.sh create mode 100644 yaft/default/deps create mode 100755 zlib/default/conf.sh create mode 100644 zlib/default/deps diff --git a/2048-c/default/conf.sh b/2048-c/default/conf.sh new file mode 100755 index 0000000..2662bbf --- /dev/null +++ b/2048-c/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no config for $name yet." diff --git a/2048-c/default/inst.sh b/2048-c/default/inst.sh new file mode 100755 index 0000000..8af36a7 --- /dev/null +++ b/2048-c/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +cp -av 2048 /bin/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..bd8c239 --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright 2020 "yafox" + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README b/README new file mode 100644 index 0000000..f64ffca --- /dev/null +++ b/README @@ -0,0 +1,8 @@ +# how-lix-os-pkgs + +provides a set of dependencies and configuration, build, and install scripts for +lix-os' packages. meant to be checked out into the root directory of a "how" +installation as the "pkg" subdirectory. + +at present it has many half-completed and deprecated packages which will be +removed from the master branch soon. diff --git a/alsa-lib/default/conf.sh b/alsa-lib/default/conf.sh new file mode 100755 index 0000000..9404878 --- /dev/null +++ b/alsa-lib/default/conf.sh @@ -0,0 +1,15 @@ +#!/bin/sh -e + +./configure \ + --disable-python \ + --disable-static \ + --enable-shared \ + --disable-resmgr \ + --enable-rawmidi \ + --enable-seq \ + --enable-aload \ + --disable-dependency-tracking \ + --without-versioned \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" diff --git a/alsa-lib/default/deps b/alsa-lib/default/deps new file mode 100644 index 0000000..930a016 --- /dev/null +++ b/alsa-lib/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf diff --git a/alsa-lib/default/env.sh b/alsa-lib/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/alsa-lib/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/alsa-lib/default/inst.sh b/alsa-lib/default/inst.sh new file mode 100755 index 0000000..efa4104 --- /dev/null +++ b/alsa-lib/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +make -j1 install diff --git a/alsa-lib/default/make.sh b/alsa-lib/default/make.sh new file mode 100755 index 0000000..e4062a3 --- /dev/null +++ b/alsa-lib/default/make.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +make +rm -rf include/sound/* +printf "all:\ncheck:\ninstall:\n" > include/sound/Makefile diff --git a/alsa-lib/default/patches-available/fix-dlo.patch b/alsa-lib/default/patches-available/fix-dlo.patch new file mode 100644 index 0000000..7c7d888 --- /dev/null +++ b/alsa-lib/default/patches-available/fix-dlo.patch @@ -0,0 +1,32 @@ +Patch is from master branch: +https://github.com/alsa-project/alsa-lib/commit/ad8c8e5503980295dd8e5e54a6285d2d7e32eb1e + +From ad8c8e5503980295dd8e5e54a6285d2d7e32eb1e Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Thu, 22 Oct 2020 20:57:32 +0200 +Subject: [PATCH] dlmisc: the snd_plugin_dir_set / snd_plugin_dir must be + declared even for \!DL_ORIGIN_AVAILABLE + +Fixes: 8580c081c2 ("dlsym: add support for ALSA_PLUGIN_DIR environment variable") +BugLink: https://github.com/alsa-project/alsa-lib/issues/91 +Signed-off-by: Jaroslav Kysela +--- + src/dlmisc.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/src/dlmisc.c b/src/dlmisc.c +index c9517c55..f20eb593 100644 +--- a/src/dlmisc.c ++++ b/src/dlmisc.c +@@ -42,11 +42,9 @@ + #ifndef PIC + struct snd_dlsym_link *snd_dlsym_start = NULL; + #endif +-#ifdef DL_ORIGIN_AVAILABLE + static int snd_plugin_dir_set = 0; + static char *snd_plugin_dir = NULL; + #endif +-#endif + + #if defined(DL_ORIGIN_AVAILABLE) && defined(HAVE_LIBPTHREAD) + static pthread_mutex_t snd_dlpath_mutex = PTHREAD_MUTEX_INITIALIZER; diff --git a/alsa-lib/default/patches-available/remove-test.patch b/alsa-lib/default/patches-available/remove-test.patch new file mode 100644 index 0000000..9745de0 --- /dev/null +++ b/alsa-lib/default/patches-available/remove-test.patch @@ -0,0 +1,85 @@ +diff --git a/test/Makefile.am b/test/Makefile.am +index 99c2c4f..ac7bae1 100644 +--- a/test/Makefile.am ++++ b/test/Makefile.am +@@ -2,7 +2,7 @@ SUBDIRS=. lsb + + check_PROGRAMS=control pcm pcm_min latency seq \ + playmidi1 timer rawmidi midiloop \ +- oldapi queue_timer namehint client_event_filter \ ++ queue_timer namehint client_event_filter \ + chmap audio_time user-ctl-element-set pcm-multi-thread + + control_LDADD=../src/libasound.la +@@ -16,7 +16,6 @@ playmidi1_LDADD=../src/libasound.la + timer_LDADD=../src/libasound.la + rawmidi_LDADD=../src/libasound.la + midiloop_LDADD=../src/libasound.la +-oldapi_LDADD=../src/libasound.la + queue_timer_LDADD=../src/libasound.la + namehint_LDADD=../src/libasound.la + client_event_filter_LDADD=../src/libasound.la +diff --git a/test/Makefile.in b/test/Makefile.in +index d096226..699ae45 100644 +--- a/test/Makefile.in ++++ b/test/Makefile.in +@@ -90,7 +90,7 @@ host_triplet = @host@ + check_PROGRAMS = control$(EXEEXT) pcm$(EXEEXT) pcm_min$(EXEEXT) \ + latency$(EXEEXT) seq$(EXEEXT) playmidi1$(EXEEXT) \ + timer$(EXEEXT) rawmidi$(EXEEXT) midiloop$(EXEEXT) \ +- oldapi$(EXEEXT) queue_timer$(EXEEXT) namehint$(EXEEXT) \ ++ queue_timer$(EXEEXT) namehint$(EXEEXT) \ + client_event_filter$(EXEEXT) chmap$(EXEEXT) \ + audio_time$(EXEEXT) user-ctl-element-set$(EXEEXT) \ + pcm-multi-thread$(EXEEXT) +@@ -136,9 +136,6 @@ midiloop_DEPENDENCIES = ../src/libasound.la + namehint_SOURCES = namehint.c + namehint_OBJECTS = namehint.$(OBJEXT) + namehint_DEPENDENCIES = ../src/libasound.la +-oldapi_SOURCES = oldapi.c +-oldapi_OBJECTS = oldapi.$(OBJEXT) +-oldapi_DEPENDENCIES = ../src/libasound.la + pcm_SOURCES = pcm.c + pcm_OBJECTS = pcm.$(OBJEXT) + pcm_DEPENDENCIES = ../src/libasound.la +@@ -222,11 +219,11 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) + am__v_CCLD_0 = @echo " CCLD " $@; + am__v_CCLD_1 = + SOURCES = audio_time.c chmap.c client_event_filter.c control.c \ +- latency.c midiloop.c namehint.c oldapi.c pcm.c \ ++ latency.c midiloop.c namehint.c pcm.c \ + pcm-multi-thread.c pcm_min.c playmidi1.c queue_timer.c \ + rawmidi.c seq.c timer.c user-ctl-element-set.c + DIST_SOURCES = audio_time.c chmap.c client_event_filter.c control.c \ +- latency.c midiloop.c namehint.c oldapi.c pcm.c \ ++ latency.c midiloop.c namehint.c pcm.c \ + pcm-multi-thread.c pcm_min.c playmidi1.c queue_timer.c \ + rawmidi.c seq.c timer.c user-ctl-element-set.c + RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ +@@ -439,7 +436,6 @@ playmidi1_LDADD = ../src/libasound.la + timer_LDADD = ../src/libasound.la + rawmidi_LDADD = ../src/libasound.la + midiloop_LDADD = ../src/libasound.la +-oldapi_LDADD = ../src/libasound.la + queue_timer_LDADD = ../src/libasound.la + namehint_LDADD = ../src/libasound.la + client_event_filter_LDADD = ../src/libasound.la +@@ -524,10 +520,6 @@ namehint$(EXEEXT): $(namehint_OBJECTS) $(namehint_DEPENDENCIES) $(EXTRA_namehint + @rm -f namehint$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(namehint_OBJECTS) $(namehint_LDADD) $(LIBS) + +-oldapi$(EXEEXT): $(oldapi_OBJECTS) $(oldapi_DEPENDENCIES) $(EXTRA_oldapi_DEPENDENCIES) +- @rm -f oldapi$(EXEEXT) +- $(AM_V_CCLD)$(LINK) $(oldapi_OBJECTS) $(oldapi_LDADD) $(LIBS) +- + pcm$(EXEEXT): $(pcm_OBJECTS) $(pcm_DEPENDENCIES) $(EXTRA_pcm_DEPENDENCIES) + @rm -f pcm$(EXEEXT) + $(AM_V_CCLD)$(pcm_LINK) $(pcm_OBJECTS) $(pcm_LDADD) $(LIBS) +@@ -577,7 +569,6 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/latency.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/midiloop.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/namehint.Po@am__quote@ # am--include-marker +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldapi.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcm-multi-thread.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcm.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcm_min.Po@am__quote@ # am--include-marker diff --git a/alsa-lib/default/patches-enabled/fix-dlo.patch b/alsa-lib/default/patches-enabled/fix-dlo.patch new file mode 120000 index 0000000..b30f08d --- /dev/null +++ b/alsa-lib/default/patches-enabled/fix-dlo.patch @@ -0,0 +1 @@ +../patches-available/fix-dlo.patch \ No newline at end of file diff --git a/alsa-lib/default/patches-enabled/remove-test.patch b/alsa-lib/default/patches-enabled/remove-test.patch new file mode 120000 index 0000000..958c6fe --- /dev/null +++ b/alsa-lib/default/patches-enabled/remove-test.patch @@ -0,0 +1 @@ +../patches-available/remove-test.patch \ No newline at end of file diff --git a/argon2/default/conf.sh b/argon2/default/conf.sh new file mode 100755 index 0000000..fc97c0a --- /dev/null +++ b/argon2/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +${EDITOR:-vi} Makefile diff --git a/argon2/default/deps b/argon2/default/deps new file mode 100644 index 0000000..79517fa --- /dev/null +++ b/argon2/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +ncurses +$EDITORDEP diff --git a/at-spi2-atk/default/conf.sh b/at-spi2-atk/default/conf.sh new file mode 100755 index 0000000..47123ce --- /dev/null +++ b/at-spi2-atk/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson --prefix="$PREFIX" ../build diff --git a/at-spi2-atk/default/deps b/at-spi2-atk/default/deps new file mode 100644 index 0000000..d41370e --- /dev/null +++ b/at-spi2-atk/default/deps @@ -0,0 +1,31 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +libxml2 +xz +zlib +gzip +libffi +glib +dbus +at-spi2-core +atk +gtk-dynamic >= 3.0.0 diff --git a/at-spi2-atk/default/env.sh b/at-spi2-atk/default/env.sh new file mode 100644 index 0000000..986c177 --- /dev/null +++ b/at-spi2-atk/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS -lz -llzma" diff --git a/at-spi2-atk/default/inst.sh b/at-spi2-atk/default/inst.sh new file mode 100755 index 0000000..6953b06 --- /dev/null +++ b/at-spi2-atk/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -j$(nproc) -C ../build install diff --git a/at-spi2-atk/default/make.sh b/at-spi2-atk/default/make.sh new file mode 100755 index 0000000..11412b7 --- /dev/null +++ b/at-spi2-atk/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -j$(nproc) -C ../build diff --git a/at-spi2-core/default/conf.sh b/at-spi2-core/default/conf.sh new file mode 100755 index 0000000..47123ce --- /dev/null +++ b/at-spi2-core/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson --prefix="$PREFIX" ../build diff --git a/at-spi2-core/default/deps b/at-spi2-core/default/deps new file mode 100644 index 0000000..1727e2d --- /dev/null +++ b/at-spi2-core/default/deps @@ -0,0 +1,25 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +zlib +libffi +glib +dbus diff --git a/at-spi2-core/default/env.sh b/at-spi2-core/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/at-spi2-core/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/at-spi2-core/default/inst.sh b/at-spi2-core/default/inst.sh new file mode 100755 index 0000000..6953b06 --- /dev/null +++ b/at-spi2-core/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -j$(nproc) -C ../build install diff --git a/at-spi2-core/default/make.sh b/at-spi2-core/default/make.sh new file mode 100755 index 0000000..11412b7 --- /dev/null +++ b/at-spi2-core/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -j$(nproc) -C ../build diff --git a/atk/default/conf.sh b/atk/default/conf.sh new file mode 100755 index 0000000..1125f2f --- /dev/null +++ b/atk/default/conf.sh @@ -0,0 +1,6 @@ +#!/bin/sh -e + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson --prefix=$PREFIX ../build diff --git a/atk/default/deps b/atk/default/deps new file mode 100644 index 0000000..df0be1d --- /dev/null +++ b/atk/default/deps @@ -0,0 +1,26 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +ldd +libffi +pkgconf +zlib +glib +gobject-introspection-dynamic +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson diff --git a/atk/default/inst.sh b/atk/default/inst.sh new file mode 100755 index 0000000..bc595c4 --- /dev/null +++ b/atk/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson install --no-rebuild -C ../build diff --git a/atk/default/make.sh b/atk/default/make.sh new file mode 100755 index 0000000..d872f4f --- /dev/null +++ b/atk/default/make.sh @@ -0,0 +1,6 @@ +#!/bin/sh -e + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson compile -j$(nproc) -C ../build diff --git a/attr/default/deps b/attr/default/deps new file mode 100644 index 0000000..8494467 --- /dev/null +++ b/attr/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +musl-cross-make +make +automake +autoconf +dash +patch +awk +gnu-grep +gnu-sed diff --git a/autoconf-archive/default/deps b/autoconf-archive/default/deps new file mode 100644 index 0000000..51d44fc --- /dev/null +++ b/autoconf-archive/default/deps @@ -0,0 +1,15 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +perl +m4 +autoconf diff --git a/autoconf/8a09003664733eb6bef031f56ef9cd575e403023/patch b/autoconf/8a09003664733eb6bef031f56ef9cd575e403023/patch new file mode 100644 index 0000000..961ca57 --- /dev/null +++ b/autoconf/8a09003664733eb6bef031f56ef9cd575e403023/patch @@ -0,0 +1,5 @@ +--- /dev/null ++++ src-mod/.tarball-version +@@ -0,0 +1 @@ ++2.69.209-8a09 +\ No newline at end of file diff --git a/autoconf/default/conf.sh b/autoconf/default/conf.sh new file mode 100755 index 0000000..e165ba1 --- /dev/null +++ b/autoconf/default/conf.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +autoreconf -vi +./configure \ + --build=$(uname -m)-lix-linux-musl \ + --host=$(uname -m)-lix-linux-musl \ + --prefix= + +## explanation +# +# --build: make sure the correct build string is set. +# +# --host: make sure the correct host string is set. +# +# --prefix: respect the "no /usr/local" scheme. diff --git a/autoconf/default/deps b/autoconf/default/deps new file mode 100644 index 0000000..2abd20c --- /dev/null +++ b/autoconf/default/deps @@ -0,0 +1,17 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +help2man +texinfo +automake +autoconf != $version +perl diff --git a/autoconf/v2.69b/patch b/autoconf/v2.69b/patch new file mode 100644 index 0000000..e5b335b --- /dev/null +++ b/autoconf/v2.69b/patch @@ -0,0 +1,5 @@ +--- /dev/null ++++ src-mod/.tarball-version +@@ -0,0 +1 @@ ++2.69b-5878 +\ No newline at end of file diff --git a/automake/default/conf.sh b/automake/default/conf.sh new file mode 100755 index 0000000..9a59568 --- /dev/null +++ b/automake/default/conf.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +CC="nonexistent" \ +CPP="nonexistent" \ +CXX="nonexistent" \ +./configure #\ +# --build="$BUILD" \ +# --host="$HOST" \ +# --prefix="/" + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/automake/default/deps b/automake/default/deps new file mode 100644 index 0000000..7819957 --- /dev/null +++ b/automake/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +dash +patch +perl +m4 +autoconf +gnu-grep +awk +make diff --git a/awk/default/conf.sh b/awk/default/conf.sh new file mode 100755 index 0000000..438c736 --- /dev/null +++ b/awk/default/conf.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +${EDITOR:-vi} makefile diff --git a/awk/default/deps b/awk/default/deps new file mode 100644 index 0000000..0d20a3d --- /dev/null +++ b/awk/default/deps @@ -0,0 +1,9 @@ +lix-os-filesystem +linux-kernel +patch +sbase +ubase +dash +musl-cross-make +m4 +bison diff --git a/awk/default/inst.sh b/awk/default/inst.sh new file mode 100755 index 0000000..60dc60c --- /dev/null +++ b/awk/default/inst.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +set -e + +[ ! -e /bin/awk ] || rm /bin/awk +cp -v a.out /bin/awk diff --git a/awk/default/patch b/awk/default/patch new file mode 100644 index 0000000..72a55b9 --- /dev/null +++ b/awk/default/patch @@ -0,0 +1,11 @@ +--- a/makefile 2020-08-02 20:28:55.385968902 +0000 ++++ b/makefile 2020-08-08 21:34:09.350000000 +0000 +@@ -31,7 +31,7 @@ + #CC = gcc -Wall -g -Wwrite-strings + #CC = gcc -O4 -Wall -pedantic -fno-strict-aliasing + #CC = gcc -fprofile-arcs -ftest-coverage # then gcov f1.c; cat f1.c.gcov +-HOSTCC = gcc -g -Wall -pedantic -Wcast-qual ++HOSTCC = gcc -g -Wall -pedantic -Wcast-qual -static --static + CC = $(HOSTCC) # change this is cross-compiling. + + # yacc options. pick one; this varies a lot by system. diff --git a/bash/default/conf.sh b/bash/default/conf.sh new file mode 100755 index 0000000..83e9b07 --- /dev/null +++ b/bash/default/conf.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +./configure \ + --enable-static-link \ + --without-bash-malloc \ + --disable-nls \ + --build=$(uname -m)-lix-linux-musl \ + --prefix= + +## explanation +# +# --enable-static-link: links dynamically otherwise. +# +# --without-bash-malloc: use musl's malloc. bash malloc does not work here. +# +# --disable-nls: disable localisation. +# +# --build: configure assumes a glibc system otherwise. +# +# --prefix: respect the "no /usr/local" scheme. diff --git a/bash/default/deps b/bash/default/deps new file mode 100644 index 0000000..453f069 --- /dev/null +++ b/bash/default/deps @@ -0,0 +1,14 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +bison +flex +ncurses diff --git a/bash/default/inst.sh b/bash/default/inst.sh new file mode 100755 index 0000000..ddd192e --- /dev/null +++ b/bash/default/inst.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +set -e + +make -j$(nproc) install +ln -sf bash /bin/sh diff --git a/bc/default/conf.sh b/bc/default/conf.sh new file mode 100755 index 0000000..8b31509 --- /dev/null +++ b/bc/default/conf.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +CC="gcc" \ +./configure --bc-only --disable-generated-tests --disable-nls --prefix=/ + +## explanation +# +# CC: configure tries to use `c99` otherwise. +# +# --bc-only: don't bother building dc as well. +# +# --disable-generated-tests: +# tests depend on bc already being present and aren't really necessary. +# +# --disable-nls: skip locale support. +# +# --prefix: respect lix os' file structure. diff --git a/bearssl/default/conf.sh b/bearssl/default/conf.sh new file mode 100755 index 0000000..e2e286b --- /dev/null +++ b/bearssl/default/conf.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +${EDITOR:-vi} conf/Unix.mk diff --git a/bearssl/default/deps b/bearssl/default/deps new file mode 100644 index 0000000..ca7fec3 --- /dev/null +++ b/bearssl/default/deps @@ -0,0 +1,14 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +ncurses +tls-certs +$EDITORDEP diff --git a/bearssl/default/inst.sh b/bearssl/default/inst.sh new file mode 100755 index 0000000..e5ded32 --- /dev/null +++ b/bearssl/default/inst.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +cp -v build/brssl /bin/brssl +cp -v build/libbearssl.a /lib/ +cp -v build/libbearssl.so /lib/ +cp -v inc/*.h /include/ diff --git a/bison/default/deps b/bison/default/deps new file mode 100644 index 0000000..9ecdab5 --- /dev/null +++ b/bison/default/deps @@ -0,0 +1,17 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 != 1.4.15 +m4 != 1.4.14 +m4 != 1.4.13 +m4 != 1.4.12 +m4 != 1.4.11 +m4 >= 1.4.6 diff --git a/bit-babbler/default/conf.sh b/bit-babbler/default/conf.sh new file mode 100755 index 0000000..8177eb2 --- /dev/null +++ b/bit-babbler/default/conf.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# regenerate the 'configure' script for this system. +autoreconf -ivf + +SEEDD_CONTROL_SOCKET=/var/run/bit-babbler/seedd.socket \ +./configure \ + --disable-shared \ + --enable-static \ + --without-udev \ + --prefix= + +## explanation +# +# SEEDD_CONTROL_SOCKET: put the ipc socket in /var/run instead of /run. +# +# --disable-shared --enable-static: link statically. +# +# --without-udev: avoid udev. it's not necessary. smdev handles hotplugging. +# +# --prefix: respect the "no /usr/local" scheme. diff --git a/bit-babbler/default/deps b/bit-babbler/default/deps new file mode 100644 index 0000000..e418bcb --- /dev/null +++ b/bit-babbler/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libusb +bash diff --git a/bit-babbler/default/inst.sh b/bit-babbler/default/inst.sh new file mode 100755 index 0000000..00bd164 --- /dev/null +++ b/bit-babbler/default/inst.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +make -j$(nproc) install-seedd install-seedd-conf install-bbctl \ + install-bbcheck install-bbvirt install-vm-conf install-man1 + +# explanation +# +# installs all targets EXCEPT the systemd service and the munin scripts. +# automagically creating startup scripts is not "the lix way." nothing should +# ever happen without the user's explicit say-so. making assumptions about +# what service runner the user is using is a bridge too far, as is setting up +# something to run every time the user logs in. if the user wants something +# to run automatically when they boot up, they need to make that happen in a +# way consistent with their preferred init system. diff --git a/bit-babbler/default/patch b/bit-babbler/default/patch new file mode 100644 index 0000000..fc2a393 --- /dev/null +++ b/bit-babbler/default/patch @@ -0,0 +1,60 @@ +diff -ruN src/include/bit-babbler/impl/log.h src-mod/include/bit-babbler/impl/log.h +--- src/include/bit-babbler/impl/log.h 2018-02-08 18:05:43.000000000 +0000 ++++ src-mod/include/bit-babbler/impl/log.h 2020-05-10 18:42:06.440000000 +0000 +@@ -294,7 +294,7 @@ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wformat-nonliteral" + +- #if EM_PLATFORM_LINUX ++ #if EM_PLATFORM_LINUX && defined(__GLIBC__) // not all linuxes use glibc + + // Querying the string length with a NULL for the output is a GNU extension. + // The glibc docs specify that behaviour but SUSv4 does not define it. +diff -ruN src/include/bit-babbler/qa.h src-mod/include/bit-babbler/qa.h +--- src/include/bit-babbler/qa.h 2018-02-08 18:05:43.000000000 +0000 ++++ src-mod/include/bit-babbler/qa.h 2020-05-11 20:50:26.570000000 +0000 +@@ -436,7 +436,7 @@ + public: + + // Accumulators +- size_t bin[ NBINS ]; ++ size_t* bin; + size_t samples; + + size_t inradius; +@@ -464,6 +464,7 @@ + + Data() + { ++ bin = new size_t[ NBINS ]; + clear(); + result[MIN].clear( MIN ); + result[MAX].clear( MAX ); +@@ -474,6 +475,7 @@ + , inradius( data["PiIn"]->As() ) + , pisamples( data["PiSamples"]->As() ) + { //{{{ ++ bin = new size_t[ NBINS ]; + + Json::Data::Handle binarray = data["Bins"]; + +@@ -497,6 +499,7 @@ + + Data( Results_Only_, const Json::Data::Handle &data ) + { //{{{ ++ bin = new size_t[ NBINS ]; + + clear(); + samples = data["Samples"]->As(); +@@ -508,6 +511,11 @@ + + } //}}} + ++ ~Data() ++ { //{{{ ++ delete [] bin; ++ } //}}} ++ + + void clear() + { //{{{ diff --git a/brotli/default/conf.sh b/brotli/default/conf.sh new file mode 100755 index 0000000..83b38cc --- /dev/null +++ b/brotli/default/conf.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +sed -i 's,/usr/bin/env bash,/bin/sh,' tests/*.sh + +./bootstrap +./configure \ + --enable-shared \ + --enable-static \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" + +## explanation +# +# --enable-shared: produce shared libraries +# +# --enable-static: produce static libraries +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/brotli/default/deps b/brotli/default/deps new file mode 100644 index 0000000..6a05a24 --- /dev/null +++ b/brotli/default/deps @@ -0,0 +1,18 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +autoconf +automake +bc +libtool +python3-dynamic diff --git a/brotli/default/patches-available/838.patch b/brotli/default/patches-available/838.patch new file mode 100644 index 0000000..b3a100a --- /dev/null +++ b/brotli/default/patches-available/838.patch @@ -0,0 +1,49 @@ +Upstream: Yes +Reason: Fixes #11948 +From 092446fafb4bfb81738853b7c7f76b293cd92a80 Mon Sep 17 00:00:00 2001 +From: Evgenii Kliuchnikov +Date: Wed, 2 Sep 2020 10:49:49 +0200 +Subject: [PATCH] Revert "Add runtime linker path to pkg-config files (#740)" + +This reverts commit 31754d4ffce14153b5c2addf7a11019ec23f51c1. +--- + scripts/libbrotlicommon.pc.in | 2 +- + scripts/libbrotlidec.pc.in | 2 +- + scripts/libbrotlienc.pc.in | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/scripts/libbrotlicommon.pc.in b/scripts/libbrotlicommon.pc.in +index 10ca969e..2a8cf7a3 100644 +--- a/scripts/libbrotlicommon.pc.in ++++ b/scripts/libbrotlicommon.pc.in +@@ -7,5 +7,5 @@ Name: libbrotlicommon + URL: https://github.com/google/brotli + Description: Brotli common dictionary library + Version: @PACKAGE_VERSION@ +-Libs: -L${libdir} -R${libdir} -lbrotlicommon ++Libs: -L${libdir} -lbrotlicommon + Cflags: -I${includedir} +diff --git a/scripts/libbrotlidec.pc.in b/scripts/libbrotlidec.pc.in +index e7c3124f..6f8ef2e4 100644 +--- a/scripts/libbrotlidec.pc.in ++++ b/scripts/libbrotlidec.pc.in +@@ -7,6 +7,6 @@ Name: libbrotlidec + URL: https://github.com/google/brotli + Description: Brotli decoder library + Version: @PACKAGE_VERSION@ +-Libs: -L${libdir} -R${libdir} -lbrotlidec ++Libs: -L${libdir} -lbrotlidec + Requires.private: libbrotlicommon >= 1.0.2 + Cflags: -I${includedir} +diff --git a/scripts/libbrotlienc.pc.in b/scripts/libbrotlienc.pc.in +index 4dd0811b..2098afe2 100644 +--- a/scripts/libbrotlienc.pc.in ++++ b/scripts/libbrotlienc.pc.in +@@ -7,6 +7,6 @@ Name: libbrotlienc + URL: https://github.com/google/brotli + Description: Brotli encoder library + Version: @PACKAGE_VERSION@ +-Libs: -L${libdir} -R${libdir} -lbrotlienc ++Libs: -L${libdir} -lbrotlienc + Requires.private: libbrotlicommon >= 1.0.2 + Cflags: -I${includedir} diff --git a/brotli/default/patches-available/build-tool-against-shared-lib.patch b/brotli/default/patches-available/build-tool-against-shared-lib.patch new file mode 100644 index 0000000..af7f2b3 --- /dev/null +++ b/brotli/default/patches-available/build-tool-against-shared-lib.patch @@ -0,0 +1,16 @@ +Upstream: no. +Reason: Without it the tool is linked staticlly. + GH has an issue requesting an option to build against the shared lib. +URL: https://github.com/google/brotli/issues/803 + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -183,7 +183,7 @@ + + # Build the brotli executable + add_executable(brotli ${BROTLI_CLI_C}) +-target_link_libraries(brotli ${BROTLI_LIBRARIES_STATIC}) ++target_link_libraries(brotli ${BROTLI_LIBRARIES}) + + # Installation + if(NOT BROTLI_BUNDLED_MODE) diff --git a/brotli/default/patches-available/optimize-mips-s390x.patch b/brotli/default/patches-available/optimize-mips-s390x.patch new file mode 100644 index 0000000..8120285 --- /dev/null +++ b/brotli/default/patches-available/optimize-mips-s390x.patch @@ -0,0 +1,115 @@ +diff --git a/c/common/platform.h b/c/common/platform.h +index 84c448c..853fa83 100755 +--- a/c/common/platform.h ++++ b/c/common/platform.h +@@ -223,12 +223,21 @@ OR: + #define BROTLI_TARGET_RISCV64 + #endif + ++#if defined(__s390x__) ++#define BROTLI_TARGET_S390X ++#endif ++ ++#if defined(__mips64) ++#define BROTLI_TARGET_MIPS64 ++#endif ++ + #if defined(BROTLI_BUILD_64_BIT) + #define BROTLI_64_BITS 1 + #elif defined(BROTLI_BUILD_32_BIT) + #define BROTLI_64_BITS 0 + #elif defined(BROTLI_TARGET_X64) || defined(BROTLI_TARGET_ARMV8_64) || \ +- defined(BROTLI_TARGET_POWERPC64) || defined(BROTLI_TARGET_RISCV64) ++ defined(BROTLI_TARGET_POWERPC64) || defined(BROTLI_TARGET_RISCV64) || \ ++ defined(BROTLI_TARGET_S390X) || defined(BROTLI_TARGET_MIPS64) + #define BROTLI_64_BITS 1 + #else + #define BROTLI_64_BITS 0 +@@ -279,7 +288,7 @@ OR: + #define BROTLI_ALIGNED_READ (!!1) + #elif defined(BROTLI_TARGET_X86) || defined(BROTLI_TARGET_X64) || \ + defined(BROTLI_TARGET_ARMV7) || defined(BROTLI_TARGET_ARMV8_ANY) || \ +- defined(BROTLI_TARGET_RISCV64) ++ defined(BROTLI_TARGET_RISCV64) || defined(BROTLI_TARGET_S390X) + /* Allow unaligned read only for white-listed CPUs. */ + #define BROTLI_ALIGNED_READ (!!0) + #else +@@ -289,22 +298,42 @@ OR: + #if BROTLI_ALIGNED_READ + /* Portable unaligned memory access: read / write values via memcpy. */ + static BROTLI_INLINE uint16_t BrotliUnalignedRead16(const void* p) { ++#if defined(__mips__) && (!defined(__mips_isa_rev) || __mips_isa_rev < 6) ++ const struct { uint16_t x; } __attribute__((__packed__)) *t = p; ++ return t->x; ++#else + uint16_t t; + memcpy(&t, p, sizeof t); + return t; ++#endif + } + static BROTLI_INLINE uint32_t BrotliUnalignedRead32(const void* p) { ++#if defined(__mips__) && (!defined(__mips_isa_rev) || __mips_isa_rev < 6) ++ const struct { uint32_t x; } __attribute__((__packed__)) *t = p; ++ return t->x; ++#else + uint32_t t; + memcpy(&t, p, sizeof t); + return t; ++#endif + } + static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) { ++#if defined(__mips__) && (!defined(__mips_isa_rev) || __mips_isa_rev < 6) ++ const struct { uint64_t x; } __attribute__((__packed__)) *t = p; ++ return t->x; ++#else + uint64_t t; + memcpy(&t, p, sizeof t); + return t; ++#endif + } + static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) { ++#if defined(__mips__) && (!defined(__mips_isa_rev) || __mips_isa_rev < 6) ++ struct { uint64_t x; } __attribute__((__packed__)) *t = p; ++ t->x = v; ++#else + memcpy(p, &v, sizeof v); ++#endif + } + #else /* BROTLI_ALIGNED_READ */ + /* Unaligned memory access is allowed: just cast pointer to requested type. */ +@@ -385,31 +414,20 @@ static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) { + #define BROTLI_UNALIGNED_STORE64LE BrotliUnalignedWrite64 + #elif BROTLI_BIG_ENDIAN /* BROTLI_LITTLE_ENDIAN */ + /* Explain compiler to byte-swap values. */ +-#define BROTLI_BSWAP16_(V) ((uint16_t)( \ +- (((V) & 0xFFU) << 8) | \ +- (((V) >> 8) & 0xFFU))) + static BROTLI_INLINE uint16_t BROTLI_UNALIGNED_LOAD16LE(const void* p) { + uint16_t value = BrotliUnalignedRead16(p); +- return BROTLI_BSWAP16_(value); ++ return __builtin_bswap16(value); + } +-#define BROTLI_BSWAP32_(V) ( \ +- (((V) & 0xFFU) << 24) | (((V) & 0xFF00U) << 8) | \ +- (((V) >> 8) & 0xFF00U) | (((V) >> 24) & 0xFFU)) + static BROTLI_INLINE uint32_t BROTLI_UNALIGNED_LOAD32LE(const void* p) { + uint32_t value = BrotliUnalignedRead32(p); +- return BROTLI_BSWAP32_(value); ++ return __builtin_bswap32(value); + } +-#define BROTLI_BSWAP64_(V) ( \ +- (((V) & 0xFFU) << 56) | (((V) & 0xFF00U) << 40) | \ +- (((V) & 0xFF0000U) << 24) | (((V) & 0xFF000000U) << 8) | \ +- (((V) >> 8) & 0xFF000000U) | (((V) >> 24) & 0xFF0000U) | \ +- (((V) >> 40) & 0xFF00U) | (((V) >> 56) & 0xFFU)) + static BROTLI_INLINE uint64_t BROTLI_UNALIGNED_LOAD64LE(const void* p) { + uint64_t value = BrotliUnalignedRead64(p); +- return BROTLI_BSWAP64_(value); ++ return __builtin_bswap64(value); + } + static BROTLI_INLINE void BROTLI_UNALIGNED_STORE64LE(void* p, uint64_t v) { +- uint64_t value = BROTLI_BSWAP64_(v); ++ uint64_t value = __builtin_bswap64(v); + BrotliUnalignedWrite64(p, value); + } + #else /* BROTLI_LITTLE_ENDIAN */ diff --git a/brotli/default/patches-enabled/838.patch b/brotli/default/patches-enabled/838.patch new file mode 120000 index 0000000..bd6a2b1 --- /dev/null +++ b/brotli/default/patches-enabled/838.patch @@ -0,0 +1 @@ +../patches-available/838.patch \ No newline at end of file diff --git a/brotli/default/patches-enabled/build-tool-against-shared-lib.patch b/brotli/default/patches-enabled/build-tool-against-shared-lib.patch new file mode 120000 index 0000000..de73fad --- /dev/null +++ b/brotli/default/patches-enabled/build-tool-against-shared-lib.patch @@ -0,0 +1 @@ +../patches-available/build-tool-against-shared-lib.patch \ No newline at end of file diff --git a/brotli/default/patches-enabled/optimize-mips-s390x.patch b/brotli/default/patches-enabled/optimize-mips-s390x.patch new file mode 120000 index 0000000..bead190 --- /dev/null +++ b/brotli/default/patches-enabled/optimize-mips-s390x.patch @@ -0,0 +1 @@ +../patches-available/optimize-mips-s390x.patch \ No newline at end of file diff --git a/bsd-compat-headers/default/conf.sh b/bsd-compat-headers/default/conf.sh new file mode 100755 index 0000000..472a149 --- /dev/null +++ b/bsd-compat-headers/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration." diff --git a/bsd-compat-headers/default/inst.sh b/bsd-compat-headers/default/inst.sh new file mode 100755 index 0000000..3b20bdd --- /dev/null +++ b/bsd-compat-headers/default/inst.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +cp -r sys /include/ + +echo "installed headers to /include" diff --git a/bsd-compat-headers/default/make.sh b/bsd-compat-headers/default/make.sh new file mode 100755 index 0000000..d766d0a --- /dev/null +++ b/bsd-compat-headers/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to build." diff --git a/bsd-compat-headers/default/patch b/bsd-compat-headers/default/patch new file mode 100644 index 0000000..630adc7 --- /dev/null +++ b/bsd-compat-headers/default/patch @@ -0,0 +1,1645 @@ +diff -ur --new-file a/sys/cdefs.h b/sys/cdefs.h +--- a/sys/cdefs.h 1970-01-01 00:00:00.000000000 +0000 ++++ b/sys/cdefs.h 2020-09-22 01:28:11.260000000 +0000 +@@ -0,0 +1,26 @@ ++#warning usage of non-standard #include is deprecated ++ ++#undef __P ++#undef __PMT ++ ++#define __P(args) args ++#define __PMT(args) args ++ ++#define __CONCAT(x,y) x ## y ++#define __STRING(x) #x ++ ++#ifdef __cplusplus ++# define __BEGIN_DECLS extern "C" { ++# define __END_DECLS } ++#else ++# define __BEGIN_DECLS ++# define __END_DECLS ++#endif ++ ++#if defined(__GNUC__) && !defined(__cplusplus) ++# define __THROW __attribute__ ((__nothrow__)) ++# define __NTH(fct) __attribute__ ((__nothrow__)) fct ++#else ++# define __THROW ++# define __NTH(fct) fct ++#endif +diff -ur --new-file a/sys/queue.h b/sys/queue.h +--- a/sys/queue.h 1970-01-01 00:00:00.000000000 +0000 ++++ b/sys/queue.h 2020-09-22 01:28:27.240000000 +0000 +@@ -0,0 +1,846 @@ ++/* $NetBSD: queue.h,v 1.70 2015/11/02 15:21:23 christos Exp $ */ ++ ++/* ++ * Copyright (c) 1991, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++ * @(#)queue.h 8.5 (Berkeley) 8/20/94 ++ */ ++ ++#ifndef _SYS_QUEUE_H_ ++#define _SYS_QUEUE_H_ ++ ++/* ++ * This file defines five types of data structures: singly-linked lists, ++ * lists, simple queues, tail queues, and circular queues. ++ * ++ * A singly-linked list is headed by a single forward pointer. The ++ * elements are singly linked for minimum space and pointer manipulation ++ * overhead at the expense of O(n) removal for arbitrary elements. New ++ * elements can be added to the list after an existing element or at the ++ * head of the list. Elements being removed from the head of the list ++ * should use the explicit macro for this purpose for optimum ++ * efficiency. A singly-linked list may only be traversed in the forward ++ * direction. Singly-linked lists are ideal for applications with large ++ * datasets and few or no removals or for implementing a LIFO queue. ++ * ++ * A list is headed by a single forward pointer (or an array of forward ++ * pointers for a hash table header). The elements are doubly linked ++ * so that an arbitrary element can be removed without a need to ++ * traverse the list. New elements can be added to the list before ++ * or after an existing element or at the head of the list. A list ++ * may only be traversed in the forward direction. ++ * ++ * A simple queue is headed by a pair of pointers, one the head of the ++ * list and the other to the tail of the list. The elements are singly ++ * linked to save space, so elements can only be removed from the ++ * head of the list. New elements can be added to the list after ++ * an existing element, at the head of the list, or at the end of the ++ * list. A simple queue may only be traversed in the forward direction. ++ * ++ * A tail queue is headed by a pair of pointers, one to the head of the ++ * list and the other to the tail of the list. The elements are doubly ++ * linked so that an arbitrary element can be removed without a need to ++ * traverse the list. New elements can be added to the list before or ++ * after an existing element, at the head of the list, or at the end of ++ * the list. A tail queue may be traversed in either direction. ++ * ++ * A circle queue is headed by a pair of pointers, one to the head of the ++ * list and the other to the tail of the list. The elements are doubly ++ * linked so that an arbitrary element can be removed without a need to ++ * traverse the list. New elements can be added to the list before or after ++ * an existing element, at the head of the list, or at the end of the list. ++ * A circle queue may be traversed in either direction, but has a more ++ * complex end of list detection. ++ * ++ * For details on the use of these macros, see the queue(3) manual page. ++ */ ++ ++/* ++ * Include the definition of NULL only on NetBSD because sys/null.h ++ * is not available elsewhere. This conditional makes the header ++ * portable and it can simply be dropped verbatim into any system. ++ * The caveat is that on other systems some other header ++ * must provide NULL before the macros can be used. ++ */ ++#ifdef __NetBSD__ ++#include ++#endif ++ ++#if defined(QUEUEDEBUG) ++# if defined(_KERNEL) ++# define QUEUEDEBUG_ABORT(...) panic(__VA_ARGS__) ++# else ++# include ++# define QUEUEDEBUG_ABORT(...) err(1, __VA_ARGS__) ++# endif ++#endif ++ ++/* ++ * Singly-linked List definitions. ++ */ ++#define SLIST_HEAD(name, type) \ ++struct name { \ ++ struct type *slh_first; /* first element */ \ ++} ++ ++#define SLIST_HEAD_INITIALIZER(head) \ ++ { NULL } ++ ++#define SLIST_ENTRY(type) \ ++struct { \ ++ struct type *sle_next; /* next element */ \ ++} ++ ++/* ++ * Singly-linked List access methods. ++ */ ++#define SLIST_FIRST(head) ((head)->slh_first) ++#define SLIST_END(head) NULL ++#define SLIST_EMPTY(head) ((head)->slh_first == NULL) ++#define SLIST_NEXT(elm, field) ((elm)->field.sle_next) ++ ++#define SLIST_FOREACH(var, head, field) \ ++ for((var) = (head)->slh_first; \ ++ (var) != SLIST_END(head); \ ++ (var) = (var)->field.sle_next) ++ ++#define SLIST_FOREACH_SAFE(var, head, field, tvar) \ ++ for ((var) = SLIST_FIRST((head)); \ ++ (var) != SLIST_END(head) && \ ++ ((tvar) = SLIST_NEXT((var), field), 1); \ ++ (var) = (tvar)) ++ ++/* ++ * Singly-linked List functions. ++ */ ++#define SLIST_INIT(head) do { \ ++ (head)->slh_first = SLIST_END(head); \ ++} while (/*CONSTCOND*/0) ++ ++#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ ++ (elm)->field.sle_next = (slistelm)->field.sle_next; \ ++ (slistelm)->field.sle_next = (elm); \ ++} while (/*CONSTCOND*/0) ++ ++#define SLIST_INSERT_HEAD(head, elm, field) do { \ ++ (elm)->field.sle_next = (head)->slh_first; \ ++ (head)->slh_first = (elm); \ ++} while (/*CONSTCOND*/0) ++ ++#define SLIST_REMOVE_AFTER(slistelm, field) do { \ ++ (slistelm)->field.sle_next = \ ++ SLIST_NEXT(SLIST_NEXT((slistelm), field), field); \ ++} while (/*CONSTCOND*/0) ++ ++#define SLIST_REMOVE_HEAD(head, field) do { \ ++ (head)->slh_first = (head)->slh_first->field.sle_next; \ ++} while (/*CONSTCOND*/0) ++ ++#define SLIST_REMOVE(head, elm, type, field) do { \ ++ if ((head)->slh_first == (elm)) { \ ++ SLIST_REMOVE_HEAD((head), field); \ ++ } \ ++ else { \ ++ struct type *curelm = (head)->slh_first; \ ++ while(curelm->field.sle_next != (elm)) \ ++ curelm = curelm->field.sle_next; \ ++ curelm->field.sle_next = \ ++ curelm->field.sle_next->field.sle_next; \ ++ } \ ++} while (/*CONSTCOND*/0) ++ ++ ++/* ++ * List definitions. ++ */ ++#define LIST_HEAD(name, type) \ ++struct name { \ ++ struct type *lh_first; /* first element */ \ ++} ++ ++#define LIST_HEAD_INITIALIZER(head) \ ++ { NULL } ++ ++#define LIST_ENTRY(type) \ ++struct { \ ++ struct type *le_next; /* next element */ \ ++ struct type **le_prev; /* address of previous next element */ \ ++} ++ ++/* ++ * List access methods. ++ */ ++#define LIST_FIRST(head) ((head)->lh_first) ++#define LIST_END(head) NULL ++#define LIST_EMPTY(head) ((head)->lh_first == LIST_END(head)) ++#define LIST_NEXT(elm, field) ((elm)->field.le_next) ++ ++#define LIST_FOREACH(var, head, field) \ ++ for ((var) = ((head)->lh_first); \ ++ (var) != LIST_END(head); \ ++ (var) = ((var)->field.le_next)) ++ ++#define LIST_FOREACH_SAFE(var, head, field, tvar) \ ++ for ((var) = LIST_FIRST((head)); \ ++ (var) != LIST_END(head) && \ ++ ((tvar) = LIST_NEXT((var), field), 1); \ ++ (var) = (tvar)) ++ ++#define LIST_MOVE(head1, head2) do { \ ++ LIST_INIT((head2)); \ ++ if (!LIST_EMPTY((head1))) { \ ++ (head2)->lh_first = (head1)->lh_first; \ ++ LIST_INIT((head1)); \ ++ } \ ++} while (/*CONSTCOND*/0) ++ ++/* ++ * List functions. ++ */ ++#if defined(QUEUEDEBUG) ++#define QUEUEDEBUG_LIST_INSERT_HEAD(head, elm, field) \ ++ if ((head)->lh_first && \ ++ (head)->lh_first->field.le_prev != &(head)->lh_first) \ ++ QUEUEDEBUG_ABORT("LIST_INSERT_HEAD %p %s:%d", (head), \ ++ __FILE__, __LINE__); ++#define QUEUEDEBUG_LIST_OP(elm, field) \ ++ if ((elm)->field.le_next && \ ++ (elm)->field.le_next->field.le_prev != \ ++ &(elm)->field.le_next) \ ++ QUEUEDEBUG_ABORT("LIST_* forw %p %s:%d", (elm), \ ++ __FILE__, __LINE__); \ ++ if (*(elm)->field.le_prev != (elm)) \ ++ QUEUEDEBUG_ABORT("LIST_* back %p %s:%d", (elm), \ ++ __FILE__, __LINE__); ++#define QUEUEDEBUG_LIST_POSTREMOVE(elm, field) \ ++ (elm)->field.le_next = (void *)1L; \ ++ (elm)->field.le_prev = (void *)1L; ++#else ++#define QUEUEDEBUG_LIST_INSERT_HEAD(head, elm, field) ++#define QUEUEDEBUG_LIST_OP(elm, field) ++#define QUEUEDEBUG_LIST_POSTREMOVE(elm, field) ++#endif ++ ++#define LIST_INIT(head) do { \ ++ (head)->lh_first = LIST_END(head); \ ++} while (/*CONSTCOND*/0) ++ ++#define LIST_INSERT_AFTER(listelm, elm, field) do { \ ++ QUEUEDEBUG_LIST_OP((listelm), field) \ ++ if (((elm)->field.le_next = (listelm)->field.le_next) != \ ++ LIST_END(head)) \ ++ (listelm)->field.le_next->field.le_prev = \ ++ &(elm)->field.le_next; \ ++ (listelm)->field.le_next = (elm); \ ++ (elm)->field.le_prev = &(listelm)->field.le_next; \ ++} while (/*CONSTCOND*/0) ++ ++#define LIST_INSERT_BEFORE(listelm, elm, field) do { \ ++ QUEUEDEBUG_LIST_OP((listelm), field) \ ++ (elm)->field.le_prev = (listelm)->field.le_prev; \ ++ (elm)->field.le_next = (listelm); \ ++ *(listelm)->field.le_prev = (elm); \ ++ (listelm)->field.le_prev = &(elm)->field.le_next; \ ++} while (/*CONSTCOND*/0) ++ ++#define LIST_INSERT_HEAD(head, elm, field) do { \ ++ QUEUEDEBUG_LIST_INSERT_HEAD((head), (elm), field) \ ++ if (((elm)->field.le_next = (head)->lh_first) != LIST_END(head))\ ++ (head)->lh_first->field.le_prev = &(elm)->field.le_next;\ ++ (head)->lh_first = (elm); \ ++ (elm)->field.le_prev = &(head)->lh_first; \ ++} while (/*CONSTCOND*/0) ++ ++#define LIST_REMOVE(elm, field) do { \ ++ QUEUEDEBUG_LIST_OP((elm), field) \ ++ if ((elm)->field.le_next != NULL) \ ++ (elm)->field.le_next->field.le_prev = \ ++ (elm)->field.le_prev; \ ++ *(elm)->field.le_prev = (elm)->field.le_next; \ ++ QUEUEDEBUG_LIST_POSTREMOVE((elm), field) \ ++} while (/*CONSTCOND*/0) ++ ++#define LIST_REPLACE(elm, elm2, field) do { \ ++ if (((elm2)->field.le_next = (elm)->field.le_next) != NULL) \ ++ (elm2)->field.le_next->field.le_prev = \ ++ &(elm2)->field.le_next; \ ++ (elm2)->field.le_prev = (elm)->field.le_prev; \ ++ *(elm2)->field.le_prev = (elm2); \ ++ QUEUEDEBUG_LIST_POSTREMOVE((elm), field) \ ++} while (/*CONSTCOND*/0) ++ ++/* ++ * Simple queue definitions. ++ */ ++#define SIMPLEQ_HEAD(name, type) \ ++struct name { \ ++ struct type *sqh_first; /* first element */ \ ++ struct type **sqh_last; /* addr of last next element */ \ ++} ++ ++#define SIMPLEQ_HEAD_INITIALIZER(head) \ ++ { NULL, &(head).sqh_first } ++ ++#define SIMPLEQ_ENTRY(type) \ ++struct { \ ++ struct type *sqe_next; /* next element */ \ ++} ++ ++/* ++ * Simple queue access methods. ++ */ ++#define SIMPLEQ_FIRST(head) ((head)->sqh_first) ++#define SIMPLEQ_END(head) NULL ++#define SIMPLEQ_EMPTY(head) ((head)->sqh_first == SIMPLEQ_END(head)) ++#define SIMPLEQ_NEXT(elm, field) ((elm)->field.sqe_next) ++ ++#define SIMPLEQ_FOREACH(var, head, field) \ ++ for ((var) = ((head)->sqh_first); \ ++ (var) != SIMPLEQ_END(head); \ ++ (var) = ((var)->field.sqe_next)) ++ ++#define SIMPLEQ_FOREACH_SAFE(var, head, field, next) \ ++ for ((var) = ((head)->sqh_first); \ ++ (var) != SIMPLEQ_END(head) && \ ++ ((next = ((var)->field.sqe_next)), 1); \ ++ (var) = (next)) ++ ++/* ++ * Simple queue functions. ++ */ ++#define SIMPLEQ_INIT(head) do { \ ++ (head)->sqh_first = NULL; \ ++ (head)->sqh_last = &(head)->sqh_first; \ ++} while (/*CONSTCOND*/0) ++ ++#define SIMPLEQ_INSERT_HEAD(head, elm, field) do { \ ++ if (((elm)->field.sqe_next = (head)->sqh_first) == NULL) \ ++ (head)->sqh_last = &(elm)->field.sqe_next; \ ++ (head)->sqh_first = (elm); \ ++} while (/*CONSTCOND*/0) ++ ++#define SIMPLEQ_INSERT_TAIL(head, elm, field) do { \ ++ (elm)->field.sqe_next = NULL; \ ++ *(head)->sqh_last = (elm); \ ++ (head)->sqh_last = &(elm)->field.sqe_next; \ ++} while (/*CONSTCOND*/0) ++ ++#define SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ ++ if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL)\ ++ (head)->sqh_last = &(elm)->field.sqe_next; \ ++ (listelm)->field.sqe_next = (elm); \ ++} while (/*CONSTCOND*/0) ++ ++#define SIMPLEQ_REMOVE_HEAD(head, field) do { \ ++ if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL) \ ++ (head)->sqh_last = &(head)->sqh_first; \ ++} while (/*CONSTCOND*/0) ++ ++#define SIMPLEQ_REMOVE_AFTER(head, elm, field) do { \ ++ if (((elm)->field.sqe_next = (elm)->field.sqe_next->field.sqe_next) \ ++ == NULL) \ ++ (head)->sqh_last = &(elm)->field.sqe_next; \ ++} while (/*CONSTCOND*/0) ++ ++#define SIMPLEQ_REMOVE(head, elm, type, field) do { \ ++ if ((head)->sqh_first == (elm)) { \ ++ SIMPLEQ_REMOVE_HEAD((head), field); \ ++ } else { \ ++ struct type *curelm = (head)->sqh_first; \ ++ while (curelm->field.sqe_next != (elm)) \ ++ curelm = curelm->field.sqe_next; \ ++ if ((curelm->field.sqe_next = \ ++ curelm->field.sqe_next->field.sqe_next) == NULL) \ ++ (head)->sqh_last = &(curelm)->field.sqe_next; \ ++ } \ ++} while (/*CONSTCOND*/0) ++ ++#define SIMPLEQ_CONCAT(head1, head2) do { \ ++ if (!SIMPLEQ_EMPTY((head2))) { \ ++ *(head1)->sqh_last = (head2)->sqh_first; \ ++ (head1)->sqh_last = (head2)->sqh_last; \ ++ SIMPLEQ_INIT((head2)); \ ++ } \ ++} while (/*CONSTCOND*/0) ++ ++#define SIMPLEQ_LAST(head, type, field) \ ++ (SIMPLEQ_EMPTY((head)) ? \ ++ NULL : \ ++ ((struct type *)(void *) \ ++ ((char *)((head)->sqh_last) - offsetof(struct type, field)))) ++ ++/* ++ * Tail queue definitions. ++ */ ++#define _TAILQ_HEAD(name, type, qual) \ ++struct name { \ ++ qual type *tqh_first; /* first element */ \ ++ qual type *qual *tqh_last; /* addr of last next element */ \ ++} ++#define TAILQ_HEAD(name, type) _TAILQ_HEAD(name, struct type,) ++ ++#define TAILQ_HEAD_INITIALIZER(head) \ ++ { TAILQ_END(head), &(head).tqh_first } ++ ++#define _TAILQ_ENTRY(type, qual) \ ++struct { \ ++ qual type *tqe_next; /* next element */ \ ++ qual type *qual *tqe_prev; /* address of previous next element */\ ++} ++#define TAILQ_ENTRY(type) _TAILQ_ENTRY(struct type,) ++ ++/* ++ * Tail queue access methods. ++ */ ++#define TAILQ_FIRST(head) ((head)->tqh_first) ++#define TAILQ_END(head) (NULL) ++#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) ++#define TAILQ_LAST(head, headname) \ ++ (*(((struct headname *)(void *)((head)->tqh_last))->tqh_last)) ++#define TAILQ_PREV(elm, headname, field) \ ++ (*(((struct headname *)(void *)((elm)->field.tqe_prev))->tqh_last)) ++#define TAILQ_EMPTY(head) (TAILQ_FIRST(head) == TAILQ_END(head)) ++ ++ ++#define TAILQ_FOREACH(var, head, field) \ ++ for ((var) = ((head)->tqh_first); \ ++ (var) != TAILQ_END(head); \ ++ (var) = ((var)->field.tqe_next)) ++ ++#define TAILQ_FOREACH_SAFE(var, head, field, next) \ ++ for ((var) = ((head)->tqh_first); \ ++ (var) != TAILQ_END(head) && \ ++ ((next) = TAILQ_NEXT(var, field), 1); (var) = (next)) ++ ++#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ ++ for ((var) = TAILQ_LAST((head), headname); \ ++ (var) != TAILQ_END(head); \ ++ (var) = TAILQ_PREV((var), headname, field)) ++ ++#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, prev) \ ++ for ((var) = TAILQ_LAST((head), headname); \ ++ (var) != TAILQ_END(head) && \ ++ ((prev) = TAILQ_PREV((var), headname, field), 1); (var) = (prev)) ++ ++/* ++ * Tail queue functions. ++ */ ++#if defined(QUEUEDEBUG) ++#define QUEUEDEBUG_TAILQ_INSERT_HEAD(head, elm, field) \ ++ if ((head)->tqh_first && \ ++ (head)->tqh_first->field.tqe_prev != &(head)->tqh_first) \ ++ QUEUEDEBUG_ABORT("TAILQ_INSERT_HEAD %p %s:%d", (head), \ ++ __FILE__, __LINE__); ++#define QUEUEDEBUG_TAILQ_INSERT_TAIL(head, elm, field) \ ++ if (*(head)->tqh_last != NULL) \ ++ QUEUEDEBUG_ABORT("TAILQ_INSERT_TAIL %p %s:%d", (head), \ ++ __FILE__, __LINE__); ++#define QUEUEDEBUG_TAILQ_OP(elm, field) \ ++ if ((elm)->field.tqe_next && \ ++ (elm)->field.tqe_next->field.tqe_prev != \ ++ &(elm)->field.tqe_next) \ ++ QUEUEDEBUG_ABORT("TAILQ_* forw %p %s:%d", (elm), \ ++ __FILE__, __LINE__); \ ++ if (*(elm)->field.tqe_prev != (elm)) \ ++ QUEUEDEBUG_ABORT("TAILQ_* back %p %s:%d", (elm), \ ++ __FILE__, __LINE__); ++#define QUEUEDEBUG_TAILQ_PREREMOVE(head, elm, field) \ ++ if ((elm)->field.tqe_next == NULL && \ ++ (head)->tqh_last != &(elm)->field.tqe_next) \ ++ QUEUEDEBUG_ABORT("TAILQ_PREREMOVE head %p elm %p %s:%d",\ ++ (head), (elm), __FILE__, __LINE__); ++#define QUEUEDEBUG_TAILQ_POSTREMOVE(elm, field) \ ++ (elm)->field.tqe_next = (void *)1L; \ ++ (elm)->field.tqe_prev = (void *)1L; ++#else ++#define QUEUEDEBUG_TAILQ_INSERT_HEAD(head, elm, field) ++#define QUEUEDEBUG_TAILQ_INSERT_TAIL(head, elm, field) ++#define QUEUEDEBUG_TAILQ_OP(elm, field) ++#define QUEUEDEBUG_TAILQ_PREREMOVE(head, elm, field) ++#define QUEUEDEBUG_TAILQ_POSTREMOVE(elm, field) ++#endif ++ ++#define TAILQ_INIT(head) do { \ ++ (head)->tqh_first = TAILQ_END(head); \ ++ (head)->tqh_last = &(head)->tqh_first; \ ++} while (/*CONSTCOND*/0) ++ ++#define TAILQ_INSERT_HEAD(head, elm, field) do { \ ++ QUEUEDEBUG_TAILQ_INSERT_HEAD((head), (elm), field) \ ++ if (((elm)->field.tqe_next = (head)->tqh_first) != TAILQ_END(head))\ ++ (head)->tqh_first->field.tqe_prev = \ ++ &(elm)->field.tqe_next; \ ++ else \ ++ (head)->tqh_last = &(elm)->field.tqe_next; \ ++ (head)->tqh_first = (elm); \ ++ (elm)->field.tqe_prev = &(head)->tqh_first; \ ++} while (/*CONSTCOND*/0) ++ ++#define TAILQ_INSERT_TAIL(head, elm, field) do { \ ++ QUEUEDEBUG_TAILQ_INSERT_TAIL((head), (elm), field) \ ++ (elm)->field.tqe_next = TAILQ_END(head); \ ++ (elm)->field.tqe_prev = (head)->tqh_last; \ ++ *(head)->tqh_last = (elm); \ ++ (head)->tqh_last = &(elm)->field.tqe_next; \ ++} while (/*CONSTCOND*/0) ++ ++#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ ++ QUEUEDEBUG_TAILQ_OP((listelm), field) \ ++ if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != \ ++ TAILQ_END(head)) \ ++ (elm)->field.tqe_next->field.tqe_prev = \ ++ &(elm)->field.tqe_next; \ ++ else \ ++ (head)->tqh_last = &(elm)->field.tqe_next; \ ++ (listelm)->field.tqe_next = (elm); \ ++ (elm)->field.tqe_prev = &(listelm)->field.tqe_next; \ ++} while (/*CONSTCOND*/0) ++ ++#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ ++ QUEUEDEBUG_TAILQ_OP((listelm), field) \ ++ (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ ++ (elm)->field.tqe_next = (listelm); \ ++ *(listelm)->field.tqe_prev = (elm); \ ++ (listelm)->field.tqe_prev = &(elm)->field.tqe_next; \ ++} while (/*CONSTCOND*/0) ++ ++#define TAILQ_REMOVE(head, elm, field) do { \ ++ QUEUEDEBUG_TAILQ_PREREMOVE((head), (elm), field) \ ++ QUEUEDEBUG_TAILQ_OP((elm), field) \ ++ if (((elm)->field.tqe_next) != TAILQ_END(head)) \ ++ (elm)->field.tqe_next->field.tqe_prev = \ ++ (elm)->field.tqe_prev; \ ++ else \ ++ (head)->tqh_last = (elm)->field.tqe_prev; \ ++ *(elm)->field.tqe_prev = (elm)->field.tqe_next; \ ++ QUEUEDEBUG_TAILQ_POSTREMOVE((elm), field); \ ++} while (/*CONSTCOND*/0) ++ ++#define TAILQ_REPLACE(head, elm, elm2, field) do { \ ++ if (((elm2)->field.tqe_next = (elm)->field.tqe_next) != \ ++ TAILQ_END(head)) \ ++ (elm2)->field.tqe_next->field.tqe_prev = \ ++ &(elm2)->field.tqe_next; \ ++ else \ ++ (head)->tqh_last = &(elm2)->field.tqe_next; \ ++ (elm2)->field.tqe_prev = (elm)->field.tqe_prev; \ ++ *(elm2)->field.tqe_prev = (elm2); \ ++ QUEUEDEBUG_TAILQ_POSTREMOVE((elm), field); \ ++} while (/*CONSTCOND*/0) ++ ++#define TAILQ_CONCAT(head1, head2, field) do { \ ++ if (!TAILQ_EMPTY(head2)) { \ ++ *(head1)->tqh_last = (head2)->tqh_first; \ ++ (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \ ++ (head1)->tqh_last = (head2)->tqh_last; \ ++ TAILQ_INIT((head2)); \ ++ } \ ++} while (/*CONSTCOND*/0) ++ ++/* ++ * Singly-linked Tail queue declarations. ++ */ ++#define STAILQ_HEAD(name, type) \ ++struct name { \ ++ struct type *stqh_first; /* first element */ \ ++ struct type **stqh_last; /* addr of last next element */ \ ++} ++ ++#define STAILQ_HEAD_INITIALIZER(head) \ ++ { NULL, &(head).stqh_first } ++ ++#define STAILQ_ENTRY(type) \ ++struct { \ ++ struct type *stqe_next; /* next element */ \ ++} ++ ++/* ++ * Singly-linked Tail queue access methods. ++ */ ++#define STAILQ_FIRST(head) ((head)->stqh_first) ++#define STAILQ_END(head) NULL ++#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) ++#define STAILQ_EMPTY(head) (STAILQ_FIRST(head) == STAILQ_END(head)) ++ ++/* ++ * Singly-linked Tail queue functions. ++ */ ++#define STAILQ_INIT(head) do { \ ++ (head)->stqh_first = NULL; \ ++ (head)->stqh_last = &(head)->stqh_first; \ ++} while (/*CONSTCOND*/0) ++ ++#define STAILQ_INSERT_HEAD(head, elm, field) do { \ ++ if (((elm)->field.stqe_next = (head)->stqh_first) == NULL) \ ++ (head)->stqh_last = &(elm)->field.stqe_next; \ ++ (head)->stqh_first = (elm); \ ++} while (/*CONSTCOND*/0) ++ ++#define STAILQ_INSERT_TAIL(head, elm, field) do { \ ++ (elm)->field.stqe_next = NULL; \ ++ *(head)->stqh_last = (elm); \ ++ (head)->stqh_last = &(elm)->field.stqe_next; \ ++} while (/*CONSTCOND*/0) ++ ++#define STAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ ++ if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\ ++ (head)->stqh_last = &(elm)->field.stqe_next; \ ++ (listelm)->field.stqe_next = (elm); \ ++} while (/*CONSTCOND*/0) ++ ++#define STAILQ_REMOVE_HEAD(head, field) do { \ ++ if (((head)->stqh_first = (head)->stqh_first->field.stqe_next) == NULL) \ ++ (head)->stqh_last = &(head)->stqh_first; \ ++} while (/*CONSTCOND*/0) ++ ++#define STAILQ_REMOVE(head, elm, type, field) do { \ ++ if ((head)->stqh_first == (elm)) { \ ++ STAILQ_REMOVE_HEAD((head), field); \ ++ } else { \ ++ struct type *curelm = (head)->stqh_first; \ ++ while (curelm->field.stqe_next != (elm)) \ ++ curelm = curelm->field.stqe_next; \ ++ if ((curelm->field.stqe_next = \ ++ curelm->field.stqe_next->field.stqe_next) == NULL) \ ++ (head)->stqh_last = &(curelm)->field.stqe_next; \ ++ } \ ++} while (/*CONSTCOND*/0) ++ ++#define STAILQ_FOREACH(var, head, field) \ ++ for ((var) = ((head)->stqh_first); \ ++ (var); \ ++ (var) = ((var)->field.stqe_next)) ++ ++#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ ++ for ((var) = STAILQ_FIRST((head)); \ ++ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ ++ (var) = (tvar)) ++ ++#define STAILQ_CONCAT(head1, head2) do { \ ++ if (!STAILQ_EMPTY((head2))) { \ ++ *(head1)->stqh_last = (head2)->stqh_first; \ ++ (head1)->stqh_last = (head2)->stqh_last; \ ++ STAILQ_INIT((head2)); \ ++ } \ ++} while (/*CONSTCOND*/0) ++ ++#define STAILQ_LAST(head, type, field) \ ++ (STAILQ_EMPTY((head)) ? \ ++ NULL : \ ++ ((struct type *)(void *) \ ++ ((char *)((head)->stqh_last) - offsetof(struct type, field)))) ++ ++ ++#ifndef _KERNEL ++/* ++ * Circular queue definitions. Do not use. We still keep the macros ++ * for compatibility but because of pointer aliasing issues their use ++ * is discouraged! ++ */ ++ ++/* ++ * __launder_type(): We use this ugly hack to work around the the compiler ++ * noticing that two types may not alias each other and elide tests in code. ++ * We hit this in the CIRCLEQ macros when comparing 'struct name *' and ++ * 'struct type *' (see CIRCLEQ_HEAD()). Modern compilers (such as GCC ++ * 4.8) declare these comparisons as always false, causing the code to ++ * not run as designed. ++ * ++ * This hack is only to be used for comparisons and thus can be fully const. ++ * Do not use for assignment. ++ * ++ * If we ever choose to change the ABI of the CIRCLEQ macros, we could fix ++ * this by changing the head/tail sentinal values, but see the note above ++ * this one. ++ */ ++static __inline const void * __launder_type(const void *); ++static __inline const void * ++__launder_type(const void *__x) ++{ ++ __asm __volatile("" : "+r" (__x)); ++ return __x; ++} ++ ++#if defined(QUEUEDEBUG) ++#define QUEUEDEBUG_CIRCLEQ_HEAD(head, field) \ ++ if ((head)->cqh_first != CIRCLEQ_ENDC(head) && \ ++ (head)->cqh_first->field.cqe_prev != CIRCLEQ_ENDC(head)) \ ++ QUEUEDEBUG_ABORT("CIRCLEQ head forw %p %s:%d", (head), \ ++ __FILE__, __LINE__); \ ++ if ((head)->cqh_last != CIRCLEQ_ENDC(head) && \ ++ (head)->cqh_last->field.cqe_next != CIRCLEQ_ENDC(head)) \ ++ QUEUEDEBUG_ABORT("CIRCLEQ head back %p %s:%d", (head), \ ++ __FILE__, __LINE__); ++#define QUEUEDEBUG_CIRCLEQ_ELM(head, elm, field) \ ++ if ((elm)->field.cqe_next == CIRCLEQ_ENDC(head)) { \ ++ if ((head)->cqh_last != (elm)) \ ++ QUEUEDEBUG_ABORT("CIRCLEQ elm last %p %s:%d", \ ++ (elm), __FILE__, __LINE__); \ ++ } else { \ ++ if ((elm)->field.cqe_next->field.cqe_prev != (elm)) \ ++ QUEUEDEBUG_ABORT("CIRCLEQ elm forw %p %s:%d", \ ++ (elm), __FILE__, __LINE__); \ ++ } \ ++ if ((elm)->field.cqe_prev == CIRCLEQ_ENDC(head)) { \ ++ if ((head)->cqh_first != (elm)) \ ++ QUEUEDEBUG_ABORT("CIRCLEQ elm first %p %s:%d", \ ++ (elm), __FILE__, __LINE__); \ ++ } else { \ ++ if ((elm)->field.cqe_prev->field.cqe_next != (elm)) \ ++ QUEUEDEBUG_ABORT("CIRCLEQ elm prev %p %s:%d", \ ++ (elm), __FILE__, __LINE__); \ ++ } ++#define QUEUEDEBUG_CIRCLEQ_POSTREMOVE(elm, field) \ ++ (elm)->field.cqe_next = (void *)1L; \ ++ (elm)->field.cqe_prev = (void *)1L; ++#else ++#define QUEUEDEBUG_CIRCLEQ_HEAD(head, field) ++#define QUEUEDEBUG_CIRCLEQ_ELM(head, elm, field) ++#define QUEUEDEBUG_CIRCLEQ_POSTREMOVE(elm, field) ++#endif ++ ++#define CIRCLEQ_HEAD(name, type) \ ++struct name { \ ++ struct type *cqh_first; /* first element */ \ ++ struct type *cqh_last; /* last element */ \ ++} ++ ++#define CIRCLEQ_HEAD_INITIALIZER(head) \ ++ { CIRCLEQ_END(&head), CIRCLEQ_END(&head) } ++ ++#define CIRCLEQ_ENTRY(type) \ ++struct { \ ++ struct type *cqe_next; /* next element */ \ ++ struct type *cqe_prev; /* previous element */ \ ++} ++ ++/* ++ * Circular queue functions. ++ */ ++#define CIRCLEQ_INIT(head) do { \ ++ (head)->cqh_first = CIRCLEQ_END(head); \ ++ (head)->cqh_last = CIRCLEQ_END(head); \ ++} while (/*CONSTCOND*/0) ++ ++#define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ ++ QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \ ++ QUEUEDEBUG_CIRCLEQ_ELM((head), (listelm), field) \ ++ (elm)->field.cqe_next = (listelm)->field.cqe_next; \ ++ (elm)->field.cqe_prev = (listelm); \ ++ if ((listelm)->field.cqe_next == CIRCLEQ_ENDC(head)) \ ++ (head)->cqh_last = (elm); \ ++ else \ ++ (listelm)->field.cqe_next->field.cqe_prev = (elm); \ ++ (listelm)->field.cqe_next = (elm); \ ++} while (/*CONSTCOND*/0) ++ ++#define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \ ++ QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \ ++ QUEUEDEBUG_CIRCLEQ_ELM((head), (listelm), field) \ ++ (elm)->field.cqe_next = (listelm); \ ++ (elm)->field.cqe_prev = (listelm)->field.cqe_prev; \ ++ if ((listelm)->field.cqe_prev == CIRCLEQ_ENDC(head)) \ ++ (head)->cqh_first = (elm); \ ++ else \ ++ (listelm)->field.cqe_prev->field.cqe_next = (elm); \ ++ (listelm)->field.cqe_prev = (elm); \ ++} while (/*CONSTCOND*/0) ++ ++#define CIRCLEQ_INSERT_HEAD(head, elm, field) do { \ ++ QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \ ++ (elm)->field.cqe_next = (head)->cqh_first; \ ++ (elm)->field.cqe_prev = CIRCLEQ_END(head); \ ++ if ((head)->cqh_last == CIRCLEQ_ENDC(head)) \ ++ (head)->cqh_last = (elm); \ ++ else \ ++ (head)->cqh_first->field.cqe_prev = (elm); \ ++ (head)->cqh_first = (elm); \ ++} while (/*CONSTCOND*/0) ++ ++#define CIRCLEQ_INSERT_TAIL(head, elm, field) do { \ ++ QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \ ++ (elm)->field.cqe_next = CIRCLEQ_END(head); \ ++ (elm)->field.cqe_prev = (head)->cqh_last; \ ++ if ((head)->cqh_first == CIRCLEQ_ENDC(head)) \ ++ (head)->cqh_first = (elm); \ ++ else \ ++ (head)->cqh_last->field.cqe_next = (elm); \ ++ (head)->cqh_last = (elm); \ ++} while (/*CONSTCOND*/0) ++ ++#define CIRCLEQ_REMOVE(head, elm, field) do { \ ++ QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \ ++ QUEUEDEBUG_CIRCLEQ_ELM((head), (elm), field) \ ++ if ((elm)->field.cqe_next == CIRCLEQ_ENDC(head)) \ ++ (head)->cqh_last = (elm)->field.cqe_prev; \ ++ else \ ++ (elm)->field.cqe_next->field.cqe_prev = \ ++ (elm)->field.cqe_prev; \ ++ if ((elm)->field.cqe_prev == CIRCLEQ_ENDC(head)) \ ++ (head)->cqh_first = (elm)->field.cqe_next; \ ++ else \ ++ (elm)->field.cqe_prev->field.cqe_next = \ ++ (elm)->field.cqe_next; \ ++ QUEUEDEBUG_CIRCLEQ_POSTREMOVE((elm), field) \ ++} while (/*CONSTCOND*/0) ++ ++#define CIRCLEQ_FOREACH(var, head, field) \ ++ for ((var) = ((head)->cqh_first); \ ++ (var) != CIRCLEQ_ENDC(head); \ ++ (var) = ((var)->field.cqe_next)) ++ ++#define CIRCLEQ_FOREACH_REVERSE(var, head, field) \ ++ for ((var) = ((head)->cqh_last); \ ++ (var) != CIRCLEQ_ENDC(head); \ ++ (var) = ((var)->field.cqe_prev)) ++ ++/* ++ * Circular queue access methods. ++ */ ++#define CIRCLEQ_FIRST(head) ((head)->cqh_first) ++#define CIRCLEQ_LAST(head) ((head)->cqh_last) ++/* For comparisons */ ++#define CIRCLEQ_ENDC(head) (__launder_type(head)) ++/* For assignments */ ++#define CIRCLEQ_END(head) ((void *)(head)) ++#define CIRCLEQ_NEXT(elm, field) ((elm)->field.cqe_next) ++#define CIRCLEQ_PREV(elm, field) ((elm)->field.cqe_prev) ++#define CIRCLEQ_EMPTY(head) \ ++ (CIRCLEQ_FIRST(head) == CIRCLEQ_ENDC(head)) ++ ++#define CIRCLEQ_LOOP_NEXT(head, elm, field) \ ++ (((elm)->field.cqe_next == CIRCLEQ_ENDC(head)) \ ++ ? ((head)->cqh_first) \ ++ : (elm->field.cqe_next)) ++#define CIRCLEQ_LOOP_PREV(head, elm, field) \ ++ (((elm)->field.cqe_prev == CIRCLEQ_ENDC(head)) \ ++ ? ((head)->cqh_last) \ ++ : (elm->field.cqe_prev)) ++#endif /* !_KERNEL */ ++ ++#endif /* !_SYS_QUEUE_H_ */ +diff -ur --new-file a/sys/tree.h b/sys/tree.h +--- a/sys/tree.h 1970-01-01 00:00:00.000000000 +0000 ++++ b/sys/tree.h 2020-09-22 01:28:31.150000000 +0000 +@@ -0,0 +1,761 @@ ++/* $NetBSD: tree.h,v 1.20 2013/09/14 13:20:45 joerg Exp $ */ ++/* $OpenBSD: tree.h,v 1.13 2011/07/09 00:19:45 pirofti Exp $ */ ++/* ++ * Copyright 2002 Niels Provos ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#ifndef _SYS_TREE_H_ ++#define _SYS_TREE_H_ ++ ++/* ++ * This file defines data structures for different types of trees: ++ * splay trees and red-black trees. ++ * ++ * A splay tree is a self-organizing data structure. Every operation ++ * on the tree causes a splay to happen. The splay moves the requested ++ * node to the root of the tree and partly rebalances it. ++ * ++ * This has the benefit that request locality causes faster lookups as ++ * the requested nodes move to the top of the tree. On the other hand, ++ * every lookup causes memory writes. ++ * ++ * The Balance Theorem bounds the total access time for m operations ++ * and n inserts on an initially empty tree as O((m + n)lg n). The ++ * amortized cost for a sequence of m accesses to a splay tree is O(lg n); ++ * ++ * A red-black tree is a binary search tree with the node color as an ++ * extra attribute. It fulfills a set of conditions: ++ * - every search path from the root to a leaf consists of the ++ * same number of black nodes, ++ * - each red node (except for the root) has a black parent, ++ * - each leaf node is black. ++ * ++ * Every operation on a red-black tree is bounded as O(lg n). ++ * The maximum height of a red-black tree is 2lg (n+1). ++ */ ++ ++#define SPLAY_HEAD(name, type) \ ++struct name { \ ++ struct type *sph_root; /* root of the tree */ \ ++} ++ ++#define SPLAY_INITIALIZER(root) \ ++ { NULL } ++ ++#define SPLAY_INIT(root) do { \ ++ (root)->sph_root = NULL; \ ++} while (/*CONSTCOND*/ 0) ++ ++#define SPLAY_ENTRY(type) \ ++struct { \ ++ struct type *spe_left; /* left element */ \ ++ struct type *spe_right; /* right element */ \ ++} ++ ++#define SPLAY_LEFT(elm, field) (elm)->field.spe_left ++#define SPLAY_RIGHT(elm, field) (elm)->field.spe_right ++#define SPLAY_ROOT(head) (head)->sph_root ++#define SPLAY_EMPTY(head) (SPLAY_ROOT(head) == NULL) ++ ++/* SPLAY_ROTATE_{LEFT,RIGHT} expect that tmp hold SPLAY_{RIGHT,LEFT} */ ++#define SPLAY_ROTATE_RIGHT(head, tmp, field) do { \ ++ SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(tmp, field); \ ++ SPLAY_RIGHT(tmp, field) = (head)->sph_root; \ ++ (head)->sph_root = tmp; \ ++} while (/*CONSTCOND*/ 0) ++ ++#define SPLAY_ROTATE_LEFT(head, tmp, field) do { \ ++ SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(tmp, field); \ ++ SPLAY_LEFT(tmp, field) = (head)->sph_root; \ ++ (head)->sph_root = tmp; \ ++} while (/*CONSTCOND*/ 0) ++ ++#define SPLAY_LINKLEFT(head, tmp, field) do { \ ++ SPLAY_LEFT(tmp, field) = (head)->sph_root; \ ++ tmp = (head)->sph_root; \ ++ (head)->sph_root = SPLAY_LEFT((head)->sph_root, field); \ ++} while (/*CONSTCOND*/ 0) ++ ++#define SPLAY_LINKRIGHT(head, tmp, field) do { \ ++ SPLAY_RIGHT(tmp, field) = (head)->sph_root; \ ++ tmp = (head)->sph_root; \ ++ (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field); \ ++} while (/*CONSTCOND*/ 0) ++ ++#define SPLAY_ASSEMBLE(head, node, left, right, field) do { \ ++ SPLAY_RIGHT(left, field) = SPLAY_LEFT((head)->sph_root, field); \ ++ SPLAY_LEFT(right, field) = SPLAY_RIGHT((head)->sph_root, field);\ ++ SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(node, field); \ ++ SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(node, field); \ ++} while (/*CONSTCOND*/ 0) ++ ++/* Generates prototypes and inline functions */ ++ ++#define SPLAY_PROTOTYPE(name, type, field, cmp) \ ++void name##_SPLAY(struct name *, struct type *); \ ++void name##_SPLAY_MINMAX(struct name *, int); \ ++struct type *name##_SPLAY_INSERT(struct name *, struct type *); \ ++struct type *name##_SPLAY_REMOVE(struct name *, struct type *); \ ++ \ ++/* Finds the node with the same key as elm */ \ ++static __inline struct type * \ ++name##_SPLAY_FIND(struct name *head, struct type *elm) \ ++{ \ ++ if (SPLAY_EMPTY(head)) \ ++ return(NULL); \ ++ name##_SPLAY(head, elm); \ ++ if ((cmp)(elm, (head)->sph_root) == 0) \ ++ return (head->sph_root); \ ++ return (NULL); \ ++} \ ++ \ ++static __inline __unused struct type * \ ++name##_SPLAY_NEXT(struct name *head, struct type *elm) \ ++{ \ ++ name##_SPLAY(head, elm); \ ++ if (SPLAY_RIGHT(elm, field) != NULL) { \ ++ elm = SPLAY_RIGHT(elm, field); \ ++ while (SPLAY_LEFT(elm, field) != NULL) { \ ++ elm = SPLAY_LEFT(elm, field); \ ++ } \ ++ } else \ ++ elm = NULL; \ ++ return (elm); \ ++} \ ++ \ ++static __unused __inline struct type * \ ++name##_SPLAY_MIN_MAX(struct name *head, int val) \ ++{ \ ++ name##_SPLAY_MINMAX(head, val); \ ++ return (SPLAY_ROOT(head)); \ ++} ++ ++/* Main splay operation. ++ * Moves node close to the key of elm to top ++ */ ++#define SPLAY_GENERATE(name, type, field, cmp) \ ++struct type * \ ++name##_SPLAY_INSERT(struct name *head, struct type *elm) \ ++{ \ ++ if (SPLAY_EMPTY(head)) { \ ++ SPLAY_LEFT(elm, field) = SPLAY_RIGHT(elm, field) = NULL; \ ++ } else { \ ++ int __comp; \ ++ name##_SPLAY(head, elm); \ ++ __comp = (cmp)(elm, (head)->sph_root); \ ++ if(__comp < 0) { \ ++ SPLAY_LEFT(elm, field) = SPLAY_LEFT((head)->sph_root, field);\ ++ SPLAY_RIGHT(elm, field) = (head)->sph_root; \ ++ SPLAY_LEFT((head)->sph_root, field) = NULL; \ ++ } else if (__comp > 0) { \ ++ SPLAY_RIGHT(elm, field) = SPLAY_RIGHT((head)->sph_root, field);\ ++ SPLAY_LEFT(elm, field) = (head)->sph_root; \ ++ SPLAY_RIGHT((head)->sph_root, field) = NULL; \ ++ } else \ ++ return ((head)->sph_root); \ ++ } \ ++ (head)->sph_root = (elm); \ ++ return (NULL); \ ++} \ ++ \ ++struct type * \ ++name##_SPLAY_REMOVE(struct name *head, struct type *elm) \ ++{ \ ++ struct type *__tmp; \ ++ if (SPLAY_EMPTY(head)) \ ++ return (NULL); \ ++ name##_SPLAY(head, elm); \ ++ if ((cmp)(elm, (head)->sph_root) == 0) { \ ++ if (SPLAY_LEFT((head)->sph_root, field) == NULL) { \ ++ (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field);\ ++ } else { \ ++ __tmp = SPLAY_RIGHT((head)->sph_root, field); \ ++ (head)->sph_root = SPLAY_LEFT((head)->sph_root, field);\ ++ name##_SPLAY(head, elm); \ ++ SPLAY_RIGHT((head)->sph_root, field) = __tmp; \ ++ } \ ++ return (elm); \ ++ } \ ++ return (NULL); \ ++} \ ++ \ ++void \ ++name##_SPLAY(struct name *head, struct type *elm) \ ++{ \ ++ struct type __node, *__left, *__right, *__tmp; \ ++ int __comp; \ ++\ ++ SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\ ++ __left = __right = &__node; \ ++\ ++ while ((__comp = (cmp)(elm, (head)->sph_root)) != 0) { \ ++ if (__comp < 0) { \ ++ __tmp = SPLAY_LEFT((head)->sph_root, field); \ ++ if (__tmp == NULL) \ ++ break; \ ++ if ((cmp)(elm, __tmp) < 0){ \ ++ SPLAY_ROTATE_RIGHT(head, __tmp, field); \ ++ if (SPLAY_LEFT((head)->sph_root, field) == NULL)\ ++ break; \ ++ } \ ++ SPLAY_LINKLEFT(head, __right, field); \ ++ } else if (__comp > 0) { \ ++ __tmp = SPLAY_RIGHT((head)->sph_root, field); \ ++ if (__tmp == NULL) \ ++ break; \ ++ if ((cmp)(elm, __tmp) > 0){ \ ++ SPLAY_ROTATE_LEFT(head, __tmp, field); \ ++ if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\ ++ break; \ ++ } \ ++ SPLAY_LINKRIGHT(head, __left, field); \ ++ } \ ++ } \ ++ SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \ ++} \ ++ \ ++/* Splay with either the minimum or the maximum element \ ++ * Used to find minimum or maximum element in tree. \ ++ */ \ ++void name##_SPLAY_MINMAX(struct name *head, int __comp) \ ++{ \ ++ struct type __node, *__left, *__right, *__tmp; \ ++\ ++ SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\ ++ __left = __right = &__node; \ ++\ ++ while (1) { \ ++ if (__comp < 0) { \ ++ __tmp = SPLAY_LEFT((head)->sph_root, field); \ ++ if (__tmp == NULL) \ ++ break; \ ++ if (__comp < 0){ \ ++ SPLAY_ROTATE_RIGHT(head, __tmp, field); \ ++ if (SPLAY_LEFT((head)->sph_root, field) == NULL)\ ++ break; \ ++ } \ ++ SPLAY_LINKLEFT(head, __right, field); \ ++ } else if (__comp > 0) { \ ++ __tmp = SPLAY_RIGHT((head)->sph_root, field); \ ++ if (__tmp == NULL) \ ++ break; \ ++ if (__comp > 0) { \ ++ SPLAY_ROTATE_LEFT(head, __tmp, field); \ ++ if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\ ++ break; \ ++ } \ ++ SPLAY_LINKRIGHT(head, __left, field); \ ++ } \ ++ } \ ++ SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \ ++} ++ ++#define SPLAY_NEGINF -1 ++#define SPLAY_INF 1 ++ ++#define SPLAY_INSERT(name, x, y) name##_SPLAY_INSERT(x, y) ++#define SPLAY_REMOVE(name, x, y) name##_SPLAY_REMOVE(x, y) ++#define SPLAY_FIND(name, x, y) name##_SPLAY_FIND(x, y) ++#define SPLAY_NEXT(name, x, y) name##_SPLAY_NEXT(x, y) ++#define SPLAY_MIN(name, x) (SPLAY_EMPTY(x) ? NULL \ ++ : name##_SPLAY_MIN_MAX(x, SPLAY_NEGINF)) ++#define SPLAY_MAX(name, x) (SPLAY_EMPTY(x) ? NULL \ ++ : name##_SPLAY_MIN_MAX(x, SPLAY_INF)) ++ ++#define SPLAY_FOREACH(x, name, head) \ ++ for ((x) = SPLAY_MIN(name, head); \ ++ (x) != NULL; \ ++ (x) = SPLAY_NEXT(name, head, x)) ++ ++/* Macros that define a red-black tree */ ++#define RB_HEAD(name, type) \ ++struct name { \ ++ struct type *rbh_root; /* root of the tree */ \ ++} ++ ++#define RB_INITIALIZER(root) \ ++ { NULL } ++ ++#define RB_INIT(root) do { \ ++ (root)->rbh_root = NULL; \ ++} while (/*CONSTCOND*/ 0) ++ ++#define RB_BLACK 0 ++#define RB_RED 1 ++#define RB_ENTRY(type) \ ++struct { \ ++ struct type *rbe_left; /* left element */ \ ++ struct type *rbe_right; /* right element */ \ ++ struct type *rbe_parent; /* parent element */ \ ++ int rbe_color; /* node color */ \ ++} ++ ++#define RB_LEFT(elm, field) (elm)->field.rbe_left ++#define RB_RIGHT(elm, field) (elm)->field.rbe_right ++#define RB_PARENT(elm, field) (elm)->field.rbe_parent ++#define RB_COLOR(elm, field) (elm)->field.rbe_color ++#define RB_ROOT(head) (head)->rbh_root ++#define RB_EMPTY(head) (RB_ROOT(head) == NULL) ++ ++#define RB_SET(elm, parent, field) do { \ ++ RB_PARENT(elm, field) = parent; \ ++ RB_LEFT(elm, field) = RB_RIGHT(elm, field) = NULL; \ ++ RB_COLOR(elm, field) = RB_RED; \ ++} while (/*CONSTCOND*/ 0) ++ ++#define RB_SET_BLACKRED(black, red, field) do { \ ++ RB_COLOR(black, field) = RB_BLACK; \ ++ RB_COLOR(red, field) = RB_RED; \ ++} while (/*CONSTCOND*/ 0) ++ ++#ifndef RB_AUGMENT ++#define RB_AUGMENT(x) do {} while (/*CONSTCOND*/ 0) ++#endif ++ ++#define RB_ROTATE_LEFT(head, elm, tmp, field) do { \ ++ (tmp) = RB_RIGHT(elm, field); \ ++ if ((RB_RIGHT(elm, field) = RB_LEFT(tmp, field)) != NULL) { \ ++ RB_PARENT(RB_LEFT(tmp, field), field) = (elm); \ ++ } \ ++ RB_AUGMENT(elm); \ ++ if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \ ++ if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \ ++ RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \ ++ else \ ++ RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \ ++ } else \ ++ (head)->rbh_root = (tmp); \ ++ RB_LEFT(tmp, field) = (elm); \ ++ RB_PARENT(elm, field) = (tmp); \ ++ RB_AUGMENT(tmp); \ ++ if ((RB_PARENT(tmp, field))) \ ++ RB_AUGMENT(RB_PARENT(tmp, field)); \ ++} while (/*CONSTCOND*/ 0) ++ ++#define RB_ROTATE_RIGHT(head, elm, tmp, field) do { \ ++ (tmp) = RB_LEFT(elm, field); \ ++ if ((RB_LEFT(elm, field) = RB_RIGHT(tmp, field)) != NULL) { \ ++ RB_PARENT(RB_RIGHT(tmp, field), field) = (elm); \ ++ } \ ++ RB_AUGMENT(elm); \ ++ if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \ ++ if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \ ++ RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \ ++ else \ ++ RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \ ++ } else \ ++ (head)->rbh_root = (tmp); \ ++ RB_RIGHT(tmp, field) = (elm); \ ++ RB_PARENT(elm, field) = (tmp); \ ++ RB_AUGMENT(tmp); \ ++ if ((RB_PARENT(tmp, field))) \ ++ RB_AUGMENT(RB_PARENT(tmp, field)); \ ++} while (/*CONSTCOND*/ 0) ++ ++/* Generates prototypes and inline functions */ ++#define RB_PROTOTYPE(name, type, field, cmp) \ ++ RB_PROTOTYPE_INTERNAL(name, type, field, cmp,) ++#define RB_PROTOTYPE_STATIC(name, type, field, cmp) \ ++ RB_PROTOTYPE_INTERNAL(name, type, field, cmp, __unused static) ++#define RB_PROTOTYPE_INTERNAL(name, type, field, cmp, attr) \ ++attr void name##_RB_INSERT_COLOR(struct name *, struct type *); \ ++attr void name##_RB_REMOVE_COLOR(struct name *, struct type *, struct type *);\ ++attr struct type *name##_RB_REMOVE(struct name *, struct type *); \ ++attr struct type *name##_RB_INSERT(struct name *, struct type *); \ ++attr struct type *name##_RB_FIND(struct name *, struct type *); \ ++attr struct type *name##_RB_NFIND(struct name *, struct type *); \ ++attr struct type *name##_RB_NEXT(struct type *); \ ++attr struct type *name##_RB_PREV(struct type *); \ ++attr struct type *name##_RB_MINMAX(struct name *, int); \ ++ \ ++ ++/* Main rb operation. ++ * Moves node close to the key of elm to top ++ */ ++#define RB_GENERATE(name, type, field, cmp) \ ++ RB_GENERATE_INTERNAL(name, type, field, cmp,) ++#define RB_GENERATE_STATIC(name, type, field, cmp) \ ++ RB_GENERATE_INTERNAL(name, type, field, cmp, __unused static) ++#define RB_GENERATE_INTERNAL(name, type, field, cmp, attr) \ ++attr void \ ++name##_RB_INSERT_COLOR(struct name *head, struct type *elm) \ ++{ \ ++ struct type *parent, *gparent, *tmp; \ ++ while ((parent = RB_PARENT(elm, field)) != NULL && \ ++ RB_COLOR(parent, field) == RB_RED) { \ ++ gparent = RB_PARENT(parent, field); \ ++ if (parent == RB_LEFT(gparent, field)) { \ ++ tmp = RB_RIGHT(gparent, field); \ ++ if (tmp && RB_COLOR(tmp, field) == RB_RED) { \ ++ RB_COLOR(tmp, field) = RB_BLACK; \ ++ RB_SET_BLACKRED(parent, gparent, field);\ ++ elm = gparent; \ ++ continue; \ ++ } \ ++ if (RB_RIGHT(parent, field) == elm) { \ ++ RB_ROTATE_LEFT(head, parent, tmp, field);\ ++ tmp = parent; \ ++ parent = elm; \ ++ elm = tmp; \ ++ } \ ++ RB_SET_BLACKRED(parent, gparent, field); \ ++ RB_ROTATE_RIGHT(head, gparent, tmp, field); \ ++ } else { \ ++ tmp = RB_LEFT(gparent, field); \ ++ if (tmp && RB_COLOR(tmp, field) == RB_RED) { \ ++ RB_COLOR(tmp, field) = RB_BLACK; \ ++ RB_SET_BLACKRED(parent, gparent, field);\ ++ elm = gparent; \ ++ continue; \ ++ } \ ++ if (RB_LEFT(parent, field) == elm) { \ ++ RB_ROTATE_RIGHT(head, parent, tmp, field);\ ++ tmp = parent; \ ++ parent = elm; \ ++ elm = tmp; \ ++ } \ ++ RB_SET_BLACKRED(parent, gparent, field); \ ++ RB_ROTATE_LEFT(head, gparent, tmp, field); \ ++ } \ ++ } \ ++ RB_COLOR(head->rbh_root, field) = RB_BLACK; \ ++} \ ++ \ ++attr void \ ++name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, struct type *elm) \ ++{ \ ++ struct type *tmp; \ ++ while ((elm == NULL || RB_COLOR(elm, field) == RB_BLACK) && \ ++ elm != RB_ROOT(head)) { \ ++ if (RB_LEFT(parent, field) == elm) { \ ++ tmp = RB_RIGHT(parent, field); \ ++ if (RB_COLOR(tmp, field) == RB_RED) { \ ++ RB_SET_BLACKRED(tmp, parent, field); \ ++ RB_ROTATE_LEFT(head, parent, tmp, field);\ ++ tmp = RB_RIGHT(parent, field); \ ++ } \ ++ if ((RB_LEFT(tmp, field) == NULL || \ ++ RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\ ++ (RB_RIGHT(tmp, field) == NULL || \ ++ RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\ ++ RB_COLOR(tmp, field) = RB_RED; \ ++ elm = parent; \ ++ parent = RB_PARENT(elm, field); \ ++ } else { \ ++ if (RB_RIGHT(tmp, field) == NULL || \ ++ RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK) {\ ++ struct type *oleft; \ ++ if ((oleft = RB_LEFT(tmp, field)) \ ++ != NULL) \ ++ RB_COLOR(oleft, field) = RB_BLACK;\ ++ RB_COLOR(tmp, field) = RB_RED; \ ++ RB_ROTATE_RIGHT(head, tmp, oleft, field);\ ++ tmp = RB_RIGHT(parent, field); \ ++ } \ ++ RB_COLOR(tmp, field) = RB_COLOR(parent, field);\ ++ RB_COLOR(parent, field) = RB_BLACK; \ ++ if (RB_RIGHT(tmp, field)) \ ++ RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK;\ ++ RB_ROTATE_LEFT(head, parent, tmp, field);\ ++ elm = RB_ROOT(head); \ ++ break; \ ++ } \ ++ } else { \ ++ tmp = RB_LEFT(parent, field); \ ++ if (RB_COLOR(tmp, field) == RB_RED) { \ ++ RB_SET_BLACKRED(tmp, parent, field); \ ++ RB_ROTATE_RIGHT(head, parent, tmp, field);\ ++ tmp = RB_LEFT(parent, field); \ ++ } \ ++ if ((RB_LEFT(tmp, field) == NULL || \ ++ RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\ ++ (RB_RIGHT(tmp, field) == NULL || \ ++ RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\ ++ RB_COLOR(tmp, field) = RB_RED; \ ++ elm = parent; \ ++ parent = RB_PARENT(elm, field); \ ++ } else { \ ++ if (RB_LEFT(tmp, field) == NULL || \ ++ RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) {\ ++ struct type *oright; \ ++ if ((oright = RB_RIGHT(tmp, field)) \ ++ != NULL) \ ++ RB_COLOR(oright, field) = RB_BLACK;\ ++ RB_COLOR(tmp, field) = RB_RED; \ ++ RB_ROTATE_LEFT(head, tmp, oright, field);\ ++ tmp = RB_LEFT(parent, field); \ ++ } \ ++ RB_COLOR(tmp, field) = RB_COLOR(parent, field);\ ++ RB_COLOR(parent, field) = RB_BLACK; \ ++ if (RB_LEFT(tmp, field)) \ ++ RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK;\ ++ RB_ROTATE_RIGHT(head, parent, tmp, field);\ ++ elm = RB_ROOT(head); \ ++ break; \ ++ } \ ++ } \ ++ } \ ++ if (elm) \ ++ RB_COLOR(elm, field) = RB_BLACK; \ ++} \ ++ \ ++attr struct type * \ ++name##_RB_REMOVE(struct name *head, struct type *elm) \ ++{ \ ++ struct type *child, *parent, *old = elm; \ ++ int color; \ ++ if (RB_LEFT(elm, field) == NULL) \ ++ child = RB_RIGHT(elm, field); \ ++ else if (RB_RIGHT(elm, field) == NULL) \ ++ child = RB_LEFT(elm, field); \ ++ else { \ ++ struct type *left; \ ++ elm = RB_RIGHT(elm, field); \ ++ while ((left = RB_LEFT(elm, field)) != NULL) \ ++ elm = left; \ ++ child = RB_RIGHT(elm, field); \ ++ parent = RB_PARENT(elm, field); \ ++ color = RB_COLOR(elm, field); \ ++ if (child) \ ++ RB_PARENT(child, field) = parent; \ ++ if (parent) { \ ++ if (RB_LEFT(parent, field) == elm) \ ++ RB_LEFT(parent, field) = child; \ ++ else \ ++ RB_RIGHT(parent, field) = child; \ ++ RB_AUGMENT(parent); \ ++ } else \ ++ RB_ROOT(head) = child; \ ++ if (RB_PARENT(elm, field) == old) \ ++ parent = elm; \ ++ (elm)->field = (old)->field; \ ++ if (RB_PARENT(old, field)) { \ ++ if (RB_LEFT(RB_PARENT(old, field), field) == old)\ ++ RB_LEFT(RB_PARENT(old, field), field) = elm;\ ++ else \ ++ RB_RIGHT(RB_PARENT(old, field), field) = elm;\ ++ RB_AUGMENT(RB_PARENT(old, field)); \ ++ } else \ ++ RB_ROOT(head) = elm; \ ++ RB_PARENT(RB_LEFT(old, field), field) = elm; \ ++ if (RB_RIGHT(old, field)) \ ++ RB_PARENT(RB_RIGHT(old, field), field) = elm; \ ++ if (parent) { \ ++ left = parent; \ ++ do { \ ++ RB_AUGMENT(left); \ ++ } while ((left = RB_PARENT(left, field)) != NULL); \ ++ } \ ++ goto color; \ ++ } \ ++ parent = RB_PARENT(elm, field); \ ++ color = RB_COLOR(elm, field); \ ++ if (child) \ ++ RB_PARENT(child, field) = parent; \ ++ if (parent) { \ ++ if (RB_LEFT(parent, field) == elm) \ ++ RB_LEFT(parent, field) = child; \ ++ else \ ++ RB_RIGHT(parent, field) = child; \ ++ RB_AUGMENT(parent); \ ++ } else \ ++ RB_ROOT(head) = child; \ ++color: \ ++ if (color == RB_BLACK) \ ++ name##_RB_REMOVE_COLOR(head, parent, child); \ ++ return (old); \ ++} \ ++ \ ++/* Inserts a node into the RB tree */ \ ++attr struct type * \ ++name##_RB_INSERT(struct name *head, struct type *elm) \ ++{ \ ++ struct type *tmp; \ ++ struct type *parent = NULL; \ ++ int comp = 0; \ ++ tmp = RB_ROOT(head); \ ++ while (tmp) { \ ++ parent = tmp; \ ++ comp = (cmp)(elm, parent); \ ++ if (comp < 0) \ ++ tmp = RB_LEFT(tmp, field); \ ++ else if (comp > 0) \ ++ tmp = RB_RIGHT(tmp, field); \ ++ else \ ++ return (tmp); \ ++ } \ ++ RB_SET(elm, parent, field); \ ++ if (parent != NULL) { \ ++ if (comp < 0) \ ++ RB_LEFT(parent, field) = elm; \ ++ else \ ++ RB_RIGHT(parent, field) = elm; \ ++ RB_AUGMENT(parent); \ ++ } else \ ++ RB_ROOT(head) = elm; \ ++ name##_RB_INSERT_COLOR(head, elm); \ ++ return (NULL); \ ++} \ ++ \ ++/* Finds the node with the same key as elm */ \ ++attr struct type * \ ++name##_RB_FIND(struct name *head, struct type *elm) \ ++{ \ ++ struct type *tmp = RB_ROOT(head); \ ++ int comp; \ ++ while (tmp) { \ ++ comp = cmp(elm, tmp); \ ++ if (comp < 0) \ ++ tmp = RB_LEFT(tmp, field); \ ++ else if (comp > 0) \ ++ tmp = RB_RIGHT(tmp, field); \ ++ else \ ++ return (tmp); \ ++ } \ ++ return (NULL); \ ++} \ ++ \ ++/* Finds the first node greater than or equal to the search key */ \ ++attr struct type * \ ++name##_RB_NFIND(struct name *head, struct type *elm) \ ++{ \ ++ struct type *tmp = RB_ROOT(head); \ ++ struct type *res = NULL; \ ++ int comp; \ ++ while (tmp) { \ ++ comp = cmp(elm, tmp); \ ++ if (comp < 0) { \ ++ res = tmp; \ ++ tmp = RB_LEFT(tmp, field); \ ++ } \ ++ else if (comp > 0) \ ++ tmp = RB_RIGHT(tmp, field); \ ++ else \ ++ return (tmp); \ ++ } \ ++ return (res); \ ++} \ ++ \ ++/* ARGSUSED */ \ ++attr struct type * \ ++name##_RB_NEXT(struct type *elm) \ ++{ \ ++ if (RB_RIGHT(elm, field)) { \ ++ elm = RB_RIGHT(elm, field); \ ++ while (RB_LEFT(elm, field)) \ ++ elm = RB_LEFT(elm, field); \ ++ } else { \ ++ if (RB_PARENT(elm, field) && \ ++ (elm == RB_LEFT(RB_PARENT(elm, field), field))) \ ++ elm = RB_PARENT(elm, field); \ ++ else { \ ++ while (RB_PARENT(elm, field) && \ ++ (elm == RB_RIGHT(RB_PARENT(elm, field), field)))\ ++ elm = RB_PARENT(elm, field); \ ++ elm = RB_PARENT(elm, field); \ ++ } \ ++ } \ ++ return (elm); \ ++} \ ++ \ ++/* ARGSUSED */ \ ++attr struct type * \ ++name##_RB_PREV(struct type *elm) \ ++{ \ ++ if (RB_LEFT(elm, field)) { \ ++ elm = RB_LEFT(elm, field); \ ++ while (RB_RIGHT(elm, field)) \ ++ elm = RB_RIGHT(elm, field); \ ++ } else { \ ++ if (RB_PARENT(elm, field) && \ ++ (elm == RB_RIGHT(RB_PARENT(elm, field), field))) \ ++ elm = RB_PARENT(elm, field); \ ++ else { \ ++ while (RB_PARENT(elm, field) && \ ++ (elm == RB_LEFT(RB_PARENT(elm, field), field)))\ ++ elm = RB_PARENT(elm, field); \ ++ elm = RB_PARENT(elm, field); \ ++ } \ ++ } \ ++ return (elm); \ ++} \ ++ \ ++attr struct type * \ ++name##_RB_MINMAX(struct name *head, int val) \ ++{ \ ++ struct type *tmp = RB_ROOT(head); \ ++ struct type *parent = NULL; \ ++ while (tmp) { \ ++ parent = tmp; \ ++ if (val < 0) \ ++ tmp = RB_LEFT(tmp, field); \ ++ else \ ++ tmp = RB_RIGHT(tmp, field); \ ++ } \ ++ return (parent); \ ++} ++ ++#define RB_NEGINF -1 ++#define RB_INF 1 ++ ++#define RB_INSERT(name, x, y) name##_RB_INSERT(x, y) ++#define RB_REMOVE(name, x, y) name##_RB_REMOVE(x, y) ++#define RB_FIND(name, x, y) name##_RB_FIND(x, y) ++#define RB_NFIND(name, x, y) name##_RB_NFIND(x, y) ++#define RB_NEXT(name, x, y) name##_RB_NEXT(y) ++#define RB_PREV(name, x, y) name##_RB_PREV(y) ++#define RB_MIN(name, x) name##_RB_MINMAX(x, RB_NEGINF) ++#define RB_MAX(name, x) name##_RB_MINMAX(x, RB_INF) ++ ++#define RB_FOREACH(x, name, head) \ ++ for ((x) = RB_MIN(name, head); \ ++ (x) != NULL; \ ++ (x) = name##_RB_NEXT(x)) ++ ++#define RB_FOREACH_FROM(x, name, y) \ ++ for ((x) = (y); \ ++ ((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL); \ ++ (x) = (y)) ++ ++#define RB_FOREACH_SAFE(x, name, head, y) \ ++ for ((x) = RB_MIN(name, head); \ ++ ((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL); \ ++ (x) = (y)) ++ ++#define RB_FOREACH_REVERSE(x, name, head) \ ++ for ((x) = RB_MAX(name, head); \ ++ (x) != NULL; \ ++ (x) = name##_RB_PREV(x)) ++ ++#define RB_FOREACH_REVERSE_FROM(x, name, y) \ ++ for ((x) = (y); \ ++ ((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL); \ ++ (x) = (y)) ++ ++#define RB_FOREACH_REVERSE_SAFE(x, name, head, y) \ ++ for ((x) = RB_MAX(name, head); \ ++ ((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL); \ ++ (x) = (y)) ++ ++#endif /* _SYS_TREE_H_ */ diff --git a/bubblewrap/default/conf.sh b/bubblewrap/default/conf.sh new file mode 100755 index 0000000..eb2c91d --- /dev/null +++ b/bubblewrap/default/conf.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +NOCONFIGURE=1 ./autogen.sh + +./configure \ + --with-priv-mode=setuid \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix=$PREFIX + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/bubblewrap/default/deps b/bubblewrap/default/deps new file mode 100644 index 0000000..131f106 --- /dev/null +++ b/bubblewrap/default/deps @@ -0,0 +1,19 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +docbook-xsl +perl +m4 +autoconf +automake +pkgconf +libtool +libcap diff --git a/bubblewrap/default/patches-available/realpath-workaround.patch b/bubblewrap/default/patches-available/realpath-workaround.patch new file mode 100644 index 0000000..8474faf --- /dev/null +++ b/bubblewrap/default/patches-available/realpath-workaround.patch @@ -0,0 +1,53 @@ +Musl realpath() implementation currently depends on /proc which is +not available when setting up pivot root. For the time being just +fallback to a naive normalization algorithm originated from +VoidLinux' xbps. If there was path that would have required advanced +normalizing as provided by realpath() the following parse_mountinfo() +will fail. + + +diff --git bind-mount.c.orig bind-mount.c +index 045fa0e..d05b540 100644 +--- ./bind-mount.c.orig ++++ ./bind-mount.c +@@ -23,6 +23,28 @@ + #include "utils.h" + #include "bind-mount.h" + ++#ifndef __GLIBC__ ++static char * ++normpath(char *path) ++{ ++ char *seg = NULL, *p = NULL; ++ ++ for (p = path, seg = NULL; *p; p++) { ++ if (strncmp(p, "/../", 4) == 0 || strncmp(p, "/..", 4) == 0) { ++ memmove(seg ? seg : p, p+3, strlen(p+3) + 1); ++ return normpath(path); ++ } else if (strncmp(p, "/./", 3) == 0 || strncmp(p, "/.", 3) == 0) { ++ memmove(p, p+2, strlen(p+2) + 1); ++ } else if (strncmp(p, "//", 2) == 0 || strncmp(p, "/", 2) == 0) { ++ memmove(p, p+1, strlen(p+1) + 1); ++ } ++ if (*p == '/') ++ seg = p; ++ } ++ return path; ++} ++#endif ++ + static char * + skip_token (char *line, bool eat_whitespace) + { +@@ -397,7 +419,11 @@ bind_mount (int proc_fd, + path, so to find it in the mount table we need to do that too. */ + resolved_dest = realpath (dest, NULL); + if (resolved_dest == NULL) ++#ifdef __GLIBC__ + return 2; ++#else ++ resolved_dest = normpath(strdup(dest)); ++#endif + + mount_tab = parse_mountinfo (proc_fd, resolved_dest); + if (mount_tab[0].mountpoint == NULL) diff --git a/bubblewrap/default/patches-enabled/realpath-workaround.patch b/bubblewrap/default/patches-enabled/realpath-workaround.patch new file mode 120000 index 0000000..5873971 --- /dev/null +++ b/bubblewrap/default/patches-enabled/realpath-workaround.patch @@ -0,0 +1 @@ +../patches-available/realpath-workaround.patch \ No newline at end of file diff --git a/busybox/default/inst.sh b/busybox/default/inst.sh new file mode 100755 index 0000000..843127d --- /dev/null +++ b/busybox/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +make CONFIG_PREFIX="/" install +chmod -v 4755 "/bin/busybox" diff --git a/bzip2/default/PATCH-NOTES b/bzip2/default/PATCH-NOTES new file mode 100644 index 0000000..4c4f2d3 --- /dev/null +++ b/bzip2/default/PATCH-NOTES @@ -0,0 +1,13 @@ +the bzip2 patch is pretty extensive, so here's a brief explanation. + +1. the first part just sets the correct environmental variable values for a + static build that gets installed to / instead of /usr/local. + +2. most of the other changes consist of replacing $(PREFIX)/man with + $(PREFIX)/share/man. without these changes, bzip2 creates a /man directory + and installs the manpages there instead of in /share/man like every other + package. + +3. in the recommended alpine linux bootstrap host, copying over a symlink to + busybox doesn't replace the symlink. instead it replaces the busybox binary! + so changes were added to remove possible symlinks before copying "over" them. diff --git a/bzip2/default/conf.sh b/bzip2/default/conf.sh new file mode 100755 index 0000000..838f510 --- /dev/null +++ b/bzip2/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +${EDITOR:-vi} Makefile diff --git a/bzip2/default/deps b/bzip2/default/deps new file mode 100644 index 0000000..e8f399b --- /dev/null +++ b/bzip2/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +$EDITORDEP diff --git a/bzip2/default/inst.sh b/bzip2/default/inst.sh new file mode 100755 index 0000000..f26c5af --- /dev/null +++ b/bzip2/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +make install +cp libbz2.so* /lib/ diff --git a/bzip2/default/make.sh b/bzip2/default/make.sh new file mode 100755 index 0000000..5dd44fc --- /dev/null +++ b/bzip2/default/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +make -j$(nproc) -f Makefile +make -j$(nproc) -f Makefile-libbz2_so diff --git a/bzip2/default/patch b/bzip2/default/patch new file mode 100644 index 0000000..48d0a02 --- /dev/null +++ b/bzip2/default/patch @@ -0,0 +1,67 @@ +--- a/Makefile 2019-07-13 17:50:05.000000000 +0000 ++++ b/Makefile 2020-10-05 01:48:19.780000000 +0000 +@@ -18,13 +18,12 @@ + CC=gcc + AR=ar + RANLIB=ranlib +-LDFLAGS= + + BIGFILES=-D_FILE_OFFSET_BITS=64 +-CFLAGS=-Wall -Winline -O2 -g $(BIGFILES) ++CFLAGS=-Wall -Winline -O2 -g $(BIGFILES) -static --static + + # Where you want it installed when you do 'make install' +-PREFIX=/usr/local ++PREFIX= + + + OBJS= blocksort.o \ +@@ -72,9 +71,12 @@ + install: bzip2 bzip2recover + if ( test ! -d $(PREFIX)/bin ) ; then mkdir -p $(PREFIX)/bin ; fi + if ( test ! -d $(PREFIX)/lib ) ; then mkdir -p $(PREFIX)/lib ; fi +- if ( test ! -d $(PREFIX)/man ) ; then mkdir -p $(PREFIX)/man ; fi +- if ( test ! -d $(PREFIX)/man/man1 ) ; then mkdir -p $(PREFIX)/man/man1 ; fi ++ if ( test ! -d $(PREFIX)/share/man ) ; then mkdir -p $(PREFIX)/share/man ; fi ++ if ( test ! -d $(PREFIX)/share/man/man1 ) ; then mkdir -p $(PREFIX)/share/man/man1 ; fi + if ( test ! -d $(PREFIX)/include ) ; then mkdir -p $(PREFIX)/include ; fi ++ if ( test -f $(PREFIX)/bin/bzip2 ) ; then rm $(PREFIX)/bin/bzip2 ; fi ++ if ( test -f $(PREFIX)/bin/bunzip2 ) ; then rm $(PREFIX)/bin/bunzip2 ; fi ++ if ( test -f $(PREFIX)/bin/bzcat ) ; then rm $(PREFIX)/bin/bzcat ; fi + cp -f bzip2 $(PREFIX)/bin/bzip2 + cp -f bzip2 $(PREFIX)/bin/bunzip2 + cp -f bzip2 $(PREFIX)/bin/bzcat +@@ -83,8 +85,8 @@ + chmod a+x $(PREFIX)/bin/bunzip2 + chmod a+x $(PREFIX)/bin/bzcat + chmod a+x $(PREFIX)/bin/bzip2recover +- cp -f bzip2.1 $(PREFIX)/man/man1 +- chmod a+r $(PREFIX)/man/man1/bzip2.1 ++ cp -f bzip2.1 $(PREFIX)/share/man/man1 ++ chmod a+r $(PREFIX)/share/man/man1/bzip2.1 + cp -f bzlib.h $(PREFIX)/include + chmod a+r $(PREFIX)/include/bzlib.h + cp -f libbz2.a $(PREFIX)/lib +@@ -99,14 +101,14 @@ + cp -f bzdiff $(PREFIX)/bin/bzdiff + ln -s -f $(PREFIX)/bin/bzdiff $(PREFIX)/bin/bzcmp + chmod a+x $(PREFIX)/bin/bzdiff +- cp -f bzgrep.1 bzmore.1 bzdiff.1 $(PREFIX)/man/man1 +- chmod a+r $(PREFIX)/man/man1/bzgrep.1 +- chmod a+r $(PREFIX)/man/man1/bzmore.1 +- chmod a+r $(PREFIX)/man/man1/bzdiff.1 +- echo ".so man1/bzgrep.1" > $(PREFIX)/man/man1/bzegrep.1 +- echo ".so man1/bzgrep.1" > $(PREFIX)/man/man1/bzfgrep.1 +- echo ".so man1/bzmore.1" > $(PREFIX)/man/man1/bzless.1 +- echo ".so man1/bzdiff.1" > $(PREFIX)/man/man1/bzcmp.1 ++ cp -f bzgrep.1 bzmore.1 bzdiff.1 $(PREFIX)/share/man/man1 ++ chmod a+r $(PREFIX)/share/man/man1/bzgrep.1 ++ chmod a+r $(PREFIX)/share/man/man1/bzmore.1 ++ chmod a+r $(PREFIX)/share/man/man1/bzdiff.1 ++ echo ".so share/man1/bzgrep.1" > $(PREFIX)/share/man/man1/bzegrep.1 ++ echo ".so share/man1/bzgrep.1" > $(PREFIX)/share/man/man1/bzfgrep.1 ++ echo ".so share/man1/bzmore.1" > $(PREFIX)/share/man/man1/bzless.1 ++ echo ".so share/man1/bzdiff.1" > $(PREFIX)/share/man/man1/bzcmp.1 + + clean: + rm -f *.o libbz2.a bzip2 bzip2recover \ diff --git a/cairo/default/conf.sh b/cairo/default/conf.sh new file mode 100755 index 0000000..bc810d8 --- /dev/null +++ b/cairo/default/conf.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +#CFLAGS="$SHARED_CFLAGS -I/include/glib-2.0 -I/lib/glib-2.0/include -DEGL_NO_X11" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --enable-gobject \ + --enable-ft \ + --enable-fc \ + --enable-pdf \ + --enable-ps \ + --enable-png \ + --enable-svg \ + --enable-tee \ + --enable-egl \ + --enable-glesv2 \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/cairo/default/deps b/cairo/default/deps new file mode 100644 index 0000000..57f01a6 --- /dev/null +++ b/cairo/default/deps @@ -0,0 +1,35 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libffi +glib +gobject-introspection-dynamic +libdrm-dynamic +perl +m4 +autoconf +automake +libtool +pkgconf +bzip2 +gzip +xz +zlib +glib +eudev +pixman +libpng +harfbuzz +freetype-harfbuzz +fontconfig +expat +mesa-dynamic +wayland diff --git a/cairo/default/patches-available/CVE-2018-19876.patch b/cairo/default/patches-available/CVE-2018-19876.patch new file mode 100644 index 0000000..c9cd71f --- /dev/null +++ b/cairo/default/patches-available/CVE-2018-19876.patch @@ -0,0 +1,30 @@ +From 90e85c2493fdfa3551f202ff10282463f1e36645 Mon Sep 17 00:00:00 2001 +From: Carlos Garcia Campos +Date: Mon, 19 Nov 2018 12:33:07 +0100 +Subject: [PATCH] ft: Use FT_Done_MM_Var instead of free when available in + cairo_ft_apply_variations + +Fixes a crash when using freetype >= 2.9 +--- + src/cairo-ft-font.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c +index 325dd61b4..981973f78 100644 +--- a/src/cairo-ft-font.c ++++ b/src/cairo-ft-font.c +@@ -2393,7 +2393,11 @@ skip: + done: + free (coords); + free (current_coords); ++#if HAVE_FT_DONE_MM_VAR ++ FT_Done_MM_Var (face->glyph->library, ft_mm_var); ++#else + free (ft_mm_var); ++#endif + } + } + +-- +2.18.1 + diff --git a/cairo/default/patches-available/musl-stacksize.patch b/cairo/default/patches-available/musl-stacksize.patch new file mode 100644 index 0000000..d10469e --- /dev/null +++ b/cairo/default/patches-available/musl-stacksize.patch @@ -0,0 +1,23 @@ +Reduce the footprint of stack frame usage by turning +some large(r) structures as `static __thread` instead. + +--- a/src/cairo-rectangular-scan-converter.c 2015-10-27 22:04:21.000000000 +0100 ++++ b/src/cairo-rectangular-scan-converter.c 2016-05-07 04:25:26.640851782 +0200 +@@ -489,7 +489,7 @@ + cairo_span_renderer_t *renderer, + rectangle_t **rectangles) + { +- sweep_line_t sweep_line; ++ static __thread sweep_line_t sweep_line; + rectangle_t *start, *stop; + cairo_status_t status; + +@@ -656,7 +656,7 @@ + cairo_span_renderer_t *renderer) + { + cairo_rectangular_scan_converter_t *self = converter; +- rectangle_t *rectangles_stack[CAIRO_STACK_ARRAY_LENGTH (rectangle_t *)]; ++ static __thread rectangle_t *rectangles_stack[CAIRO_STACK_ARRAY_LENGTH (rectangle_t *)]; + rectangle_t **rectangles; + struct _cairo_rectangular_scan_converter_chunk *chunk; + cairo_status_t status; diff --git a/cairo/default/patches-available/pdf-flush.patch b/cairo/default/patches-available/pdf-flush.patch new file mode 100644 index 0000000..c6e2251 --- /dev/null +++ b/cairo/default/patches-available/pdf-flush.patch @@ -0,0 +1,33 @@ +From https://cgit.freedesktop.org/cairo/commit/?id=4c8813f0eaacc32c27126ad2296951a626300b89 + +Fixes https://gitlab.freedesktop.org/cairo/cairo/issues/342 + +From 4c8813f0eaacc32c27126ad2296951a626300b89 Mon Sep 17 00:00:00 2001 +From: Adrian Johnson +Date: Thu, 25 Oct 2018 18:46:17 +1030 +Subject: pdf: add missing flush + +Issue #342 +--- + src/cairo-pdf-surface.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c +index 7eb61aa..939b2d2 100644 +--- a/src/cairo-pdf-surface.c ++++ b/src/cairo-pdf-surface.c +@@ -7711,6 +7711,11 @@ _cairo_pdf_surface_mask (void *abstract_surface, + * and most common, case to handle. */ + if (_cairo_pattern_is_constant_alpha (mask, &extents.bounded, &alpha) && + _can_paint_pattern (source)) { ++ ++ status = _cairo_pdf_operators_flush (&surface->pdf_operators); ++ if (unlikely (status)) ++ goto cleanup; ++ + _cairo_output_stream_printf (surface->output, "q\n"); + status = _cairo_pdf_surface_paint_pattern (surface, + op, +-- +cgit v1.1 + diff --git a/cairo/default/patches-enabled/CVE-2018-19876.patch b/cairo/default/patches-enabled/CVE-2018-19876.patch new file mode 120000 index 0000000..9863f04 --- /dev/null +++ b/cairo/default/patches-enabled/CVE-2018-19876.patch @@ -0,0 +1 @@ +../patches-available/CVE-2018-19876.patch \ No newline at end of file diff --git a/cairo/default/patches-enabled/musl-stacksize.patch b/cairo/default/patches-enabled/musl-stacksize.patch new file mode 120000 index 0000000..9e613f2 --- /dev/null +++ b/cairo/default/patches-enabled/musl-stacksize.patch @@ -0,0 +1 @@ +../patches-available/musl-stacksize.patch \ No newline at end of file diff --git a/cairo/default/patches-enabled/pdf-flush.patch b/cairo/default/patches-enabled/pdf-flush.patch new file mode 120000 index 0000000..aa26fb1 --- /dev/null +++ b/cairo/default/patches-enabled/pdf-flush.patch @@ -0,0 +1 @@ +../patches-available/pdf-flush.patch \ No newline at end of file diff --git a/ccache/default/deps b/ccache/default/deps new file mode 100644 index 0000000..8a07234 --- /dev/null +++ b/ccache/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +zlib diff --git a/ccache/default/inst.sh b/ccache/default/inst.sh new file mode 100755 index 0000000..d97ff19 --- /dev/null +++ b/ccache/default/inst.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +make install + +host="$(cc -dumpmachine)" + +mkdir -p /usr/lib/ccache/bin + +echo "cc +gcc +g++ +cpp +c++ +$host-gcc +$host-g++ +$host-cpp +$host-c++" | while read link; do + ln -sf /usr/bin/ccache /usr/lib/ccache/bin/$link +done diff --git a/ccid/default/conf.sh b/ccid/default/conf.sh new file mode 100755 index 0000000..332376a --- /dev/null +++ b/ccid/default/conf.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +PCSC_LIBS="/lib/libpcsclite.so" \ +LIBUSB_LIBS="/lib/libusb-1.0.so" \ +PCSC_CFLAGS="-I/include/PCSC" \ +LIBUSB_CFLAGS="-I/include/libusb-1.0" \ +./configure \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --enable-static \ + --sysconfdir=/etc \ + --enable-usbdropdir=/lib/pcsc/drivers \ + --prefix= + +## explanation +# +# PCSC_LIBS: configure needs an explicit path for libpcslite. +# +# LIBUSB_LIBS: configure needs an explicit path for libusb. +# +# PCSC_CFLAGS: configure needs an explicit path for libpcslite headers. +# +# LIBUSB_CFLAGS: configure needs an explicit path for libusb headers. +# +# --build: set the correct build string. +# +# --host: set the correct host string. +# +# --enable-static: build the static library as well. +# +# --sysconfdir: look for configuration files in /etc. +# +# --enable-usbdropdir: the directory for dynamically loaded smartcard drivers. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/ccid/default/deps b/ccid/default/deps new file mode 100644 index 0000000..8426372 --- /dev/null +++ b/ccid/default/deps @@ -0,0 +1,16 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +musl-cross-make +make +automake +autoconf +dash +patch +awk +gnu-grep +gnu-sed +perl +libusb +pcsc-lite-first-pass diff --git a/ccid/default/env.sh b/ccid/default/env.sh new file mode 100755 index 0000000..536e5de --- /dev/null +++ b/ccid/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +# TODO: remove the need for these lines by making musl-cross-make build a gcc +# with a header search path of /include only, with all headers contained there. +CPATH="$CPATH:/include:/powerpc64le-lix-linux-musl/include" +CPATH="$CPATH:/include/c++/9.2.0/powerpc64le-lix-linux-musl:/include/c++/9.2.0" +export CPATH diff --git a/ccid/default/inst.sh b/ccid/default/inst.sh new file mode 100755 index 0000000..84a825b --- /dev/null +++ b/ccid/default/inst.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +cp src/.libs/libccid.* /lib/ + +echo "copied to /lib the following:" +cd src/.libs && ls libccid.* diff --git a/cdparanoia/default/APKBUILD b/cdparanoia/default/APKBUILD new file mode 100644 index 0000000..5afc0c0 --- /dev/null +++ b/cdparanoia/default/APKBUILD @@ -0,0 +1,54 @@ +# Contributor: Michael Mason +# Maintainer: Natanael Copa +pkgname=cdparanoia +pkgver=10.2 +pkgrel=9 +pkgdesc="An audio CD extraction application" +url="http://www.xiph.org/paranoia" +arch="all" +options="!check" # Build system has test suite commented out. +license="LGPL-2.0-or-later" +makedepends="libtool autoconf automake linux-headers" +subpackages="$pkgname-dev $pkgname-doc $pkgname-libs" +source="http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-$pkgver.src.tgz + gcc.patch + fix-includes.patch + no-cuserid.patch" +builddir="$srcdir/$pkgname-III-$pkgver" + +prepare() { + default_prepare + mv configure.guess config.guess + mv configure.sub config.sub + update_config_sub + sed -i -e '/configure.\(guess\|sub\)/d' configure.in + aclocal && autoconf + libtoolize +} + +build() { + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info + make -j1 +} + +package() { + make prefix="$pkgdir"/usr MANDIR="$pkgdir"/usr/share/man install +} + +libs() { + pkgdesc="Libraries for libcdda_paranoia (Paranoia III)" + replaces="cdparanoia" + install -d "$subpkgdir"/usr + mv "$pkgdir"/usr/lib "$subpkgdir"/usr/ +} + +sha512sums="4ab0a0f5ef44d56c1af72d1fc1035566a1a89c4eeddb9e8baea675fe51c06138d913342afc8bed167d9fa55672fa25a2763ce21f7e24c1232e4739aff20733a7 cdparanoia-III-10.2.src.tgz +27bf216e8b5b9d6971e3999166544025f166587df06065b89657dac62d0d53c01b76f53146c1e9a400dd71460567fadb8fd4ce00576836f972914d69e8855909 gcc.patch +e8a5ef0f5bcdba697d2d49e31346832bfa2460e6f6cac9256420f57c74a5da2945bdc664368c91365a880ba76e638f58773468d8e8bd16e7afcaff955a1a82ce fix-includes.patch +52882bdc689e1a34bc0f3961aa649f400232a3fe769526a01fcbff4ba0d5183c1ad0737265b69668b857b0887b4e4e3f2c78bad913329cc7b621b14d47e873f9 no-cuserid.patch" diff --git a/cdparanoia/default/conf.sh b/cdparanoia/default/conf.sh new file mode 100755 index 0000000..5ab80e1 --- /dev/null +++ b/cdparanoia/default/conf.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +cp -a /share/automake-*/config.guess configure.guess +cp -a /share/automake-*/config.sub configure.sub +aclocal && autoconf +libtoolize + +./configure \ + --enable-static \ + --enable-shared \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" diff --git a/cdparanoia/default/deps b/cdparanoia/default/deps new file mode 100644 index 0000000..4ae5ed9 --- /dev/null +++ b/cdparanoia/default/deps @@ -0,0 +1,17 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +perl +m4 +autoconf +automake +libtool diff --git a/cdparanoia/default/env.sh b/cdparanoia/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/cdparanoia/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/cdparanoia/default/inst.sh b/cdparanoia/default/inst.sh new file mode 100755 index 0000000..4a88fff --- /dev/null +++ b/cdparanoia/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +make prefix="$PREFIX" MANDIR="$PREFIX"/share/man install diff --git a/cdparanoia/default/make.sh b/cdparanoia/default/make.sh new file mode 100755 index 0000000..4071720 --- /dev/null +++ b/cdparanoia/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +make -j1 diff --git a/cdparanoia/default/patches-available/fix-includes.patch b/cdparanoia/default/patches-available/fix-includes.patch new file mode 100644 index 0000000..8d32539 --- /dev/null +++ b/cdparanoia/default/patches-available/fix-includes.patch @@ -0,0 +1,7 @@ +--- cdparanoia-III-10.2.orig/utils.h ++++ cdparanoia-III-10.2/utils.h +@@ -1,3 +1,4 @@ ++#include + #include + #include + #include diff --git a/cdparanoia/default/patches-available/gcc.patch b/cdparanoia/default/patches-available/gcc.patch new file mode 100644 index 0000000..d75adfb --- /dev/null +++ b/cdparanoia/default/patches-available/gcc.patch @@ -0,0 +1,582 @@ +Index: interface/test_interface.c +=================================================================== +--- a/interface/test_interface.c (Revision 15337) ++++ b/interface/test_interface.c (Revision 15340) +@@ -66,9 +66,9 @@ + if(!fd)fd=fdopen(d->cdda_fd,"r"); + + if(beginprivate->last_milliseconds=20; ++ d->private_data->last_milliseconds=20; + else +- d->private->last_milliseconds=sectors; ++ d->private_data->last_milliseconds=sectors; + + #ifdef CDDA_TEST_UNDERRUN + sectors-=1; +Index: interface/cdda_interface.h +=================================================================== +--- a/interface/cdda_interface.h (Revision 15337) ++++ b/interface/cdda_interface.h (Revision 15340) +@@ -84,7 +84,7 @@ + int is_atapi; + int is_mmc; + +- cdda_private_data_t *private; ++ cdda_private_data_t *private_data; + void *reserved; + unsigned char inqbytes[4]; + +Index: interface/interface.c +=================================================================== +--- a/interface/interface.c (Revision 15337) ++++ b/interface/interface.c (Revision 15340) +@@ -39,9 +39,9 @@ + if(d->drive_model)free(d->drive_model); + if(d->cdda_fd!=-1)close(d->cdda_fd); + if(d->ioctl_fd!=-1 && d->ioctl_fd!=d->cdda_fd)close(d->ioctl_fd); +- if(d->private){ +- if(d->private->sg_hd)free(d->private->sg_hd); +- free(d->private); ++ if(d->private_data){ ++ if(d->private_data->sg_hd)free(d->private_data->sg_hd); ++ free(d->private_data); + } + + free(d); +@@ -127,7 +127,7 @@ + } + } + } +- if(ms)*ms=d->private->last_milliseconds; ++ if(ms)*ms=d->private_data->last_milliseconds; + return(sectors); + } + +Index: interface/scsi_interface.c +=================================================================== +--- a/interface/scsi_interface.c (Revision 15337) ++++ b/interface/scsi_interface.c (Revision 15340) +@@ -15,13 +15,13 @@ + static int timed_ioctl(cdrom_drive *d, int fd, int command, void *arg){ + struct timespec tv1; + struct timespec tv2; +- int ret1=clock_gettime(d->private->clock,&tv1); ++ int ret1=clock_gettime(d->private_data->clock,&tv1); + int ret2=ioctl(fd, command,arg); +- int ret3=clock_gettime(d->private->clock,&tv2); ++ int ret3=clock_gettime(d->private_data->clock,&tv2); + if(ret1<0 || ret3<0){ +- d->private->last_milliseconds=-1; ++ d->private_data->last_milliseconds=-1; + }else{ +- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.; ++ d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.; + } + return ret2; + } +@@ -96,7 +96,7 @@ + static void clear_garbage(cdrom_drive *d){ + fd_set fdset; + struct timeval tv; +- struct sg_header *sg_hd=d->private->sg_hd; ++ struct sg_header *sg_hd=d->private_data->sg_hd; + int flag=0; + + /* clear out any possibly preexisting garbage */ +@@ -185,7 +185,7 @@ + struct timespec tv2; + int tret1,tret2; + int status = 0; +- struct sg_header *sg_hd=d->private->sg_hd; ++ struct sg_header *sg_hd=d->private_data->sg_hd; + long writebytes=SG_OFF+cmd_len+in_size; + + /* generic scsi device services */ +@@ -195,7 +195,7 @@ + + memset(sg_hd,0,sizeof(sg_hd)); + memset(sense_buffer,0,SG_MAX_SENSE); +- memcpy(d->private->sg_buffer,cmd,cmd_len+in_size); ++ memcpy(d->private_data->sg_buffer,cmd,cmd_len+in_size); + sg_hd->twelve_byte = cmd_len == 12; + sg_hd->result = 0; + sg_hd->reply_len = SG_OFF + out_size; +@@ -209,7 +209,7 @@ + tell if the command failed. Scared yet? */ + + if(bytecheck && out_size>in_size){ +- memset(d->private->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size); ++ memset(d->private_data->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size); + /* the size does not remove cmd_len due to the way the kernel + driver copies buffers */ + writebytes+=(out_size-in_size); +@@ -243,7 +243,7 @@ + } + + sigprocmask (SIG_BLOCK, &(d->sigset), NULL ); +- tret1=clock_gettime(d->private->clock,&tv1); ++ tret1=clock_gettime(d->private_data->clock,&tv1); + errno=0; + status = write(d->cdda_fd, sg_hd, writebytes ); + +@@ -289,7 +289,7 @@ + } + } + +- tret2=clock_gettime(d->private->clock,&tv2); ++ tret2=clock_gettime(d->private_data->clock,&tv2); + errno=0; + status = read(d->cdda_fd, sg_hd, SG_OFF + out_size); + sigprocmask ( SIG_UNBLOCK, &(d->sigset), NULL ); +@@ -313,7 +313,7 @@ + if(bytecheck && in_size+cmd_lenprivate->sg_buffer[i]!=bytefill){ ++ if(d->private_data->sg_buffer[i]!=bytefill){ + flag=1; + break; + } +@@ -326,9 +326,9 @@ + + errno=0; + if(tret1<0 || tret2<0){ +- d->private->last_milliseconds=-1; ++ d->private_data->last_milliseconds=-1; + }else{ +- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000; ++ d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000; + } + return(0); + } +@@ -347,7 +347,7 @@ + + memset(&hdr,0,sizeof(hdr)); + memset(sense,0,sizeof(sense)); +- memcpy(d->private->sg_buffer,cmd+cmd_len,in_size); ++ memcpy(d->private_data->sg_buffer,cmd+cmd_len,in_size); + + hdr.cmdp = cmd; + hdr.cmd_len = cmd_len; +@@ -355,7 +355,7 @@ + hdr.mx_sb_len = SG_MAX_SENSE; + hdr.timeout = 50000; + hdr.interface_id = 'S'; +- hdr.dxferp = d->private->sg_buffer; ++ hdr.dxferp = d->private_data->sg_buffer; + hdr.flags = SG_FLAG_DIRECT_IO; /* direct IO if we can get it */ + + /* scary buffer fill hack */ +@@ -400,7 +400,7 @@ + if(bytecheck && in_sizeprivate->sg_buffer[i]!=bytefill){ ++ if(d->private_data->sg_buffer[i]!=bytefill){ + flag=1; + break; + } +@@ -412,7 +412,7 @@ + } + + /* Can't rely on .duration because we can't be certain kernel has HZ set to something useful */ +- /* d->private->last_milliseconds = hdr.duration; */ ++ /* d->private_data->last_milliseconds = hdr.duration; */ + + errno = 0; + return 0; +@@ -445,9 +445,9 @@ + + handle_scsi_cmd(d, cmd, 6, 0, 56, 0,0, sense); + +- key = d->private->sg_buffer[2] & 0xf; +- ASC = d->private->sg_buffer[12]; +- ASCQ = d->private->sg_buffer[13]; ++ key = d->private_data->sg_buffer[2] & 0xf; ++ ASC = d->private_data->sg_buffer[12]; ++ ASCQ = d->private_data->sg_buffer[13]; + + if(key == 2 && ASC == 4 && ASCQ == 1) return 0; + return 1; +@@ -492,7 +492,7 @@ + if (handle_scsi_cmd (d, cmd, 10, 0, size+4,'\377',1,sense)) return(1); + + { +- unsigned char *b=d->private->sg_buffer; ++ unsigned char *b=d->private_data->sg_buffer; + if(b[0])return(1); /* Handles only up to 256 bytes */ + if(b[6])return(1); /* Handles only up to 256 bytes */ + +@@ -604,8 +604,8 @@ + static unsigned int get_orig_sectorsize(cdrom_drive *d){ + if(mode_sense(d,12,0x01))return(-1); + +- d->orgdens = d->private->sg_buffer[4]; +- return(d->orgsize = ((int)(d->private->sg_buffer[10])<<8)+d->private->sg_buffer[11]); ++ d->orgdens = d->private_data->sg_buffer[4]; ++ return(d->orgsize = ((int)(d->private_data->sg_buffer[10])<<8)+d->private_data->sg_buffer[11]); + } + + /* switch CDROM scsi drives to given sector size */ +@@ -664,8 +664,8 @@ + return(-4); + } + +- first=d->private->sg_buffer[2]; +- last=d->private->sg_buffer[3]; ++ first=d->private_data->sg_buffer[2]; ++ last=d->private_data->sg_buffer[3]; + tracks=last-first+1; + + if (last > MAXTRK || first > MAXTRK || last<0 || first<0) { +@@ -683,7 +683,7 @@ + return(-5); + } + { +- scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4); ++ scsi_TOC *toc=(scsi_TOC *)(d->private_data->sg_buffer+4); + + d->disc_toc[i-first].bFlags=toc->bFlags; + d->disc_toc[i-first].bTrack=i; +@@ -704,7 +704,7 @@ + return(-2); + } + { +- scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4); ++ scsi_TOC *toc=(scsi_TOC *)(d->private_data->sg_buffer+4); + + d->disc_toc[i-first].bFlags=toc->bFlags; + d->disc_toc[i-first].bTrack=0xAA; +@@ -738,7 +738,7 @@ + } + + /* copy to our structure and convert start sector */ +- tracks = d->private->sg_buffer[1]; ++ tracks = d->private_data->sg_buffer[1]; + if (tracks > MAXTRK) { + cderror(d,"003: CDROM reporting illegal number of tracks\n"); + return(-3); +@@ -754,33 +754,33 @@ + return(-5); + } + +- d->disc_toc[i].bFlags = d->private->sg_buffer[10]; ++ d->disc_toc[i].bFlags = d->private_data->sg_buffer[10]; + d->disc_toc[i].bTrack = i + 1; + + d->disc_toc[i].dwStartSector= d->adjust_ssize * +- (((signed char)(d->private->sg_buffer[2])<<24) | +- (d->private->sg_buffer[3]<<16)| +- (d->private->sg_buffer[4]<<8)| +- (d->private->sg_buffer[5])); ++ (((signed char)(d->private_data->sg_buffer[2])<<24) | ++ (d->private_data->sg_buffer[3]<<16)| ++ (d->private_data->sg_buffer[4]<<8)| ++ (d->private_data->sg_buffer[5])); + } + + d->disc_toc[i].bFlags = 0; + d->disc_toc[i].bTrack = i + 1; +- memcpy (&foo, d->private->sg_buffer+2, 4); +- memcpy (&bar, d->private->sg_buffer+6, 4); ++ memcpy (&foo, d->private_data->sg_buffer+2, 4); ++ memcpy (&bar, d->private_data->sg_buffer+6, 4); + d->disc_toc[i].dwStartSector = d->adjust_ssize * (be32_to_cpu(foo) + + be32_to_cpu(bar)); + + d->disc_toc[i].dwStartSector= d->adjust_ssize * +- ((((signed char)(d->private->sg_buffer[2])<<24) | +- (d->private->sg_buffer[3]<<16)| +- (d->private->sg_buffer[4]<<8)| +- (d->private->sg_buffer[5]))+ ++ ((((signed char)(d->private_data->sg_buffer[2])<<24) | ++ (d->private_data->sg_buffer[3]<<16)| ++ (d->private_data->sg_buffer[4]<<8)| ++ (d->private_data->sg_buffer[5]))+ + +- ((((signed char)(d->private->sg_buffer[6])<<24) | +- (d->private->sg_buffer[7]<<16)| +- (d->private->sg_buffer[8]<<8)| +- (d->private->sg_buffer[9])))); ++ ((((signed char)(d->private_data->sg_buffer[6])<<24) | ++ (d->private_data->sg_buffer[7]<<16)| ++ (d->private_data->sg_buffer[8]<<8)| ++ (d->private_data->sg_buffer[9])))); + + + d->cd_extra = FixupTOC(d,tracks+1); +@@ -817,7 +817,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -836,7 +836,7 @@ + cmd[9] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -854,7 +854,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -872,7 +872,7 @@ + cmd[9] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -890,7 +890,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -908,7 +908,7 @@ + cmd[9] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -922,7 +922,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -936,7 +936,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -950,7 +950,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -964,7 +964,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -978,7 +978,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -992,7 +992,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -1026,7 +1026,7 @@ + + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -1039,7 +1039,7 @@ + + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -1052,7 +1052,7 @@ + + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -1275,7 +1275,7 @@ + static int count_2352_bytes(cdrom_drive *d){ + long i; + for(i=2351;i>=0;i--) +- if(d->private->sg_buffer[i]!=(unsigned char)'\177') ++ if(d->private_data->sg_buffer[i]!=(unsigned char)'\177') + return(((i+3)>>2)<<2); + + return(0); +@@ -1284,7 +1284,7 @@ + static int verify_nonzero(cdrom_drive *d){ + long i,flag=0; + for(i=0;i<2352;i++) +- if(d->private->sg_buffer[i]!=0){ ++ if(d->private_data->sg_buffer[i]!=0){ + flag=1; + break; + } +@@ -1621,7 +1621,7 @@ + d->is_mmc=0; + if(mode_sense(d,22,0x2A)==0){ + +- b=d->private->sg_buffer; ++ b=d->private_data->sg_buffer; + b+=b[3]+4; + + if((b[0]&0x3F)==0x2A){ +@@ -1669,7 +1669,7 @@ + cderror(d,"008: Unable to identify CDROM model\n"); + return(NULL); + } +- return (d->private->sg_buffer); ++ return (d->private_data->sg_buffer); + } + + int scsi_init_drive(cdrom_drive *d){ +@@ -1725,8 +1725,8 @@ + check_cache(d); + + d->error_retry=1; +- d->private->sg_hd=realloc(d->private->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128); +- d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF; ++ d->private_data->sg_hd=realloc(d->private_data->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128); ++ d->private_data->sg_buffer=((unsigned char *)d->private_data->sg_hd)+SG_OFF; + d->report_all=1; + return(0); + } +Index: interface/cooked_interface.c +=================================================================== +--- a/interface/cooked_interface.c (Revision 15337) ++++ b/interface/cooked_interface.c (Revision 15340) +@@ -13,13 +13,13 @@ + static int timed_ioctl(cdrom_drive *d, int fd, int command, void *arg){ + struct timespec tv1; + struct timespec tv2; +- int ret1=clock_gettime(d->private->clock,&tv1); ++ int ret1=clock_gettime(d->private_data->clock,&tv1); + int ret2=ioctl(fd, command,arg); +- int ret3=clock_gettime(d->private->clock,&tv2); ++ int ret3=clock_gettime(d->private_data->clock,&tv2); + if(ret1<0 || ret3<0){ +- d->private->last_milliseconds=-1; ++ d->private_data->last_milliseconds=-1; + }else{ +- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.; ++ d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.; + } + return ret2; + } +Index: interface/scan_devices.c +=================================================================== +--- a/interface/scan_devices.c (Revision 15337) ++++ b/interface/scan_devices.c (Revision 15340) +@@ -264,11 +264,11 @@ + d->interface=COOKED_IOCTL; + d->bigendianp=-1; /* We don't know yet... */ + d->nsectors=-1; +- d->private=calloc(1,sizeof(*d->private)); ++ d->private_data=calloc(1,sizeof(*d->private_data)); + { + /* goddamnit */ + struct timespec tv; +- d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC); ++ d->private_data->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC); + } + idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",description); + return(d); +@@ -674,15 +674,15 @@ + d->bigendianp=-1; /* We don't know yet... */ + d->nsectors=-1; + d->messagedest = messagedest; +- d->private=calloc(1,sizeof(*d->private)); ++ d->private_data=calloc(1,sizeof(*d->private_data)); + { + /* goddamnit */ + struct timespec tv; +- d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC); ++ d->private_data->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC); + } + if(use_sgio){ + d->interface=SGIO_SCSI; +- d->private->sg_buffer=(unsigned char *)(d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE)); ++ d->private_data->sg_buffer=(unsigned char *)(d->private_data->sg_hd=malloc(MAX_BIG_BUFF_SIZE)); + g_fd=d->cdda_fd=dup(d->ioctl_fd); + }else{ + version=verify_SG_version(d,messagedest,messages); +@@ -696,8 +696,8 @@ + } + + /* malloc our big buffer for scsi commands */ +- d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE); +- d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF; ++ d->private_data->sg_hd=malloc(MAX_BIG_BUFF_SIZE); ++ d->private_data->sg_buffer=((unsigned char *)d->private_data->sg_hd)+SG_OFF; + } + + { +@@ -772,9 +772,9 @@ + if(i_fd!=-1)close(i_fd); + if(g_fd!=-1)close(g_fd); + if(d){ +- if(d->private){ +- if(d->private->sg_hd)free(d->private->sg_hd); +- free(d->private); ++ if(d->private_data){ ++ if(d->private_data->sg_hd)free(d->private_data->sg_hd); ++ free(d->private_data); + } + free(d); + } +@@ -821,7 +821,7 @@ + d->interface=TEST_INTERFACE; + d->bigendianp=-1; /* We don't know yet... */ + d->nsectors=-1; +- d->private=calloc(1,sizeof(*d->private)); ++ d->private_data=calloc(1,sizeof(*d->private_data)); + d->drive_model=copystring("File based test interface"); + idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",d->drive_model); + diff --git a/cdparanoia/default/patches-available/no-cuserid.patch b/cdparanoia/default/patches-available/no-cuserid.patch new file mode 100644 index 0000000..dd6417f --- /dev/null +++ b/cdparanoia/default/patches-available/no-cuserid.patch @@ -0,0 +1,32 @@ +Since IEEE 1003.1-1988 cuserid is not standardized anymore. The musl +libc, used by Alpine Linux, currently does not supporting using it with +a NULL pointer argument [1]. Doing so causes a segmentation fault, to +fix this remove use of cuserid entirely. This is currently achieved by +not including the user name in the error message, while it would be +possible to achieve the same output using getpwuid(geteuid()) this +requires error handling and would make the patch more complicated. + +[1]: https://www.openwall.com/lists/musl/2020/01/29/2 + +diff -upr cdparanoia-III-10.2.orig/interface/scan_devices.c cdparanoia-III-10.2/interface/scan_devices.c +--- cdparanoia-III-10.2.orig/interface/scan_devices.c 2020-02-12 20:29:46.232958848 +0100 ++++ cdparanoia-III-10.2/interface/scan_devices.c 2020-02-12 20:30:06.336297868 +0100 +@@ -6,8 +6,6 @@ + * + ******************************************************************/ + +-#define _GNU_SOURCE /* get cuserid */ +-#define _USE_XOPEN /* get cuserid */ + #include + #include + #include +@@ -93,8 +91,7 @@ cdrom_drive *cdda_find_a_cdrom(int messa + i++; + } + idmessage(messagedest,messages, +- "\n\nNo cdrom drives accessible to %s found.\n", +- cuserid(NULL)); ++ "\n\nNo cdrom drives accessible to current user found.\n", NULL); + return(NULL); + } + diff --git a/cdparanoia/default/patches-enabled/fix-includes.patch b/cdparanoia/default/patches-enabled/fix-includes.patch new file mode 120000 index 0000000..b1e252c --- /dev/null +++ b/cdparanoia/default/patches-enabled/fix-includes.patch @@ -0,0 +1 @@ +../patches-available/fix-includes.patch \ No newline at end of file diff --git a/cdparanoia/default/patches-enabled/gcc.patch b/cdparanoia/default/patches-enabled/gcc.patch new file mode 120000 index 0000000..6607795 --- /dev/null +++ b/cdparanoia/default/patches-enabled/gcc.patch @@ -0,0 +1 @@ +../patches-available/gcc.patch \ No newline at end of file diff --git a/cdparanoia/default/patches-enabled/no-cuserid.patch b/cdparanoia/default/patches-enabled/no-cuserid.patch new file mode 120000 index 0000000..77d30e4 --- /dev/null +++ b/cdparanoia/default/patches-enabled/no-cuserid.patch @@ -0,0 +1 @@ +../patches-available/no-cuserid.patch \ No newline at end of file diff --git a/ckbcomp/default/conf.sh b/ckbcomp/default/conf.sh new file mode 100755 index 0000000..ab896ad --- /dev/null +++ b/ckbcomp/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to do." diff --git a/ckbcomp/default/deps b/ckbcomp/default/deps new file mode 100644 index 0000000..9a61099 --- /dev/null +++ b/ckbcomp/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl diff --git a/ckbcomp/default/inst.sh b/ckbcomp/default/inst.sh new file mode 100755 index 0000000..7f15b70 --- /dev/null +++ b/ckbcomp/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +install -D -m755 Keyboard/ckbcomp /bin/ckbcomp +install -D -m644 man/ckbcomp.1 /man/man1/ckbcomp.1 diff --git a/ckbcomp/default/make.sh b/ckbcomp/default/make.sh new file mode 100755 index 0000000..ab896ad --- /dev/null +++ b/ckbcomp/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to do." diff --git a/cmake/default/conf.sh b/cmake/default/conf.sh new file mode 100755 index 0000000..1502835 --- /dev/null +++ b/cmake/default/conf.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +./bootstrap \ + --system-curl \ + --system-expat \ + --docdir=/share/doc \ + --parallel=$(nproc) \ + --prefix= + +## explanation +# +# --system-curl: use lix-os' own libcurl. +# +# --system-expat: use lix-os' own libexpat. +# +# --system-zlib: use lix-os' own zlib. +# +# --system-bzip2: use lix-os' own libbzip2. +# +# --system-libarchive: use lix-os' own libarchive. +# +# --docdir: put the library copyrights and licenses in /share/doc. +# +# --parallel: run in parallel as much as possible. speeds things up. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/cmake/default/deps b/cmake/default/deps new file mode 100644 index 0000000..1ed9b17 --- /dev/null +++ b/cmake/default/deps @@ -0,0 +1,17 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +libarchive +dash +musl-cross-make +patch +make +autoconf +automake +zlib +bzip2 +xz +curl +expat +ncurses diff --git a/cog/default/conf.sh b/cog/default/conf.sh new file mode 100755 index 0000000..348ae47 --- /dev/null +++ b/cog/default/conf.sh @@ -0,0 +1,11 @@ +#!/bin/sh -e + +cd ../build + +# ld gold usage is disabled since cmake can't find pthreads with it enabled. +cmake \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DCMAKE_SKIP_RPATH=ON \ + -DCMAKE_INSTALL_PREFIX="$PREFIX" \ + -DLIB_INSTALL_DIR=/lib \ + ../src diff --git a/cog/default/deps b/cog/default/deps new file mode 100644 index 0000000..f674764 --- /dev/null +++ b/cog/default/deps @@ -0,0 +1,96 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +ldd +perl-dynamic +m4 +flex +bison +libffi +bzip2 +zlib +xz +libpng +libwebp +libjpeg-turbo +openjpeg +pixman +cmake +tls-certs +glib +gobject-introspection-dynamic +libproxy +libgcrypt +libgpg-error +p11-kit +gsettings-desktop-schemas +libtasn1 +libunistring +libidn2 +bearssl +libressl +nettle +gnutls +libcap +libxml2 +expat +graphviz +libxslt +libpsl +sqlite +brotli >= 1.0.9 +diffutils +file +libsoup +libsecret +libseccomp +eudev +libgudev +gperf +atk +gdk-pixbuf +libxkbcommon-dynamic +libepoxy +gnu-readline +libucontext +libyaml +ruby +python3-dynamic +libdrm-dynamic +mesa-dynamic +fribidi +icu +harfbuzz +freetype-harfbuzz +fontconfig +pango +cairo +wayland +wayland-protocols +bubblewrap +dbus +xdg-dbus-proxy +gstreamer +alsa-lib +cdparanoia +libogg +libvorbis +libtheora +opus +orc +gst-plugins-base +gettext +libwpe +libwpebackend-fdo +at-spi2-core +at-spi2-atk +wpewebkit diff --git a/cog/default/env.sh b/cog/default/env.sh new file mode 100755 index 0000000..b512c37 --- /dev/null +++ b/cog/default/env.sh @@ -0,0 +1,8 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CMAKE_SYSTEM_NAME="Linux" +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/cog/default/inst.sh b/cog/default/inst.sh new file mode 100755 index 0000000..42ba35a --- /dev/null +++ b/cog/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +cd ../build +make -j$(nproc) install diff --git a/cog/default/make.sh b/cog/default/make.sh new file mode 100755 index 0000000..3144d28 --- /dev/null +++ b/cog/default/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +cd ../build +make -j$(nproc) diff --git a/cryptsetup/2.3.2/deps b/cryptsetup/2.3.2/deps new file mode 100644 index 0000000..5f6a5e6 --- /dev/null +++ b/cryptsetup/2.3.2/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +patch +pkgconf +libpopt +libblkid +libuuid +libgpg-error +libgcrypt +argon2 +json-c >= 0.14-20200419 +lvm2 diff --git a/cryptsetup/default/conf.sh b/cryptsetup/default/conf.sh new file mode 100755 index 0000000..192da2f --- /dev/null +++ b/cryptsetup/default/conf.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +#autoreconf -ivf + +./configure \ + --build=$(uname -m)-lix-linux-musl \ + --host=$(uname -m)-lix-linux-musl \ + --disable-udev \ + --disable-shared \ + --enable-static \ + --enable-static-cryptsetup \ + --enable-libargon2 \ + --with-crypto_backend=gcrypt \ + --with-luks2-lock-path=/var/run/cryptsetup \ + --with-sysroot=/ \ + --prefix= + +## explanation +# +# --build, --host: configure does not recognize musl systems on its own. +# +# --disable-udev: lix os doesn't use udev if it can help it. +# +# --disable-shared: don't bother building dynamic libraries. +# +# --enable-static: build libraries for static linking. +# +# --enable-static-cryptsetup: statically link all the cryptsetup utilities. +# +# --enable-libargon2: use the host's argon2 library. it's much faster. +# +# --with-crypto_backend: use gcrypt instead of openssl. +# +# --with-luks2-lock-path: lix os uses /var/run, not /run. +# +# --with-sysroot: tell make where to find the right includes and libs. +# +# --prefix: respect lix os' "no /usr/local" policy. diff --git a/cryptsetup/default/deps b/cryptsetup/default/deps new file mode 100644 index 0000000..997da36 --- /dev/null +++ b/cryptsetup/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +patch +pkgconf +libpopt +libblkid +libuuid +libgpgp-error +libgcrypt +argon2 +json-c < 0.14-20200419 +lvm2 diff --git a/curl/default/conf.sh b/curl/default/conf.sh new file mode 100755 index 0000000..296bee4 --- /dev/null +++ b/curl/default/conf.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +set -e + +# ./configure doesn't fail when bearssl is missing +[ -f /lib/libbearssl.a ] || { echo "bearssl is missing!" >&2 && exit 1; } + +./buildconf +./configure \ + --disable-shared \ + --enable-static \ + --without-libssh2 \ + --without-nghttp2 \ + --without-ssl \ + --with-bearssl \ + --with-pic \ + --with-ca-bundle=/etc/ssl/ca-bundle.crt \ + --build=$(uname -m)-lix-linux-musl \ + --prefix= + +## explanation +# +# --disable-shared --enable-static: +# ensure only static linking is done, respecting lix os' goals. +# +# --without-libssh2: +# following alpine linux's lead on this. libssh2 has had maintenance +# problems in the past. +# see https://gitlab.alpinelinux.org/alpine/aports/issues/10222 +# +# --without-nghttp2: nghttp2 does not seem to support bearssl at the moment. +# +# --without-ssl --with-bearssl: +# the canonical way to use bearssl instead of openssl or libressl. +# +# --with-pic: prefer position-independent code objects. +# +# --with-ca-path: make sure curl looks in this directory for ssl certificates. +# +# --build: curl doesn't infer the right "triplet" without this. +# +# --prefix: respect lix os' simplified directory structure. no /usr/local. diff --git a/curl/default/deps b/curl/default/deps new file mode 100644 index 0000000..ae72f27 --- /dev/null +++ b/curl/default/deps @@ -0,0 +1,19 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +autoconf +automake +m4 +patch +libtool +bearssl +zlib diff --git a/curl/default/inst.sh b/curl/default/inst.sh new file mode 100755 index 0000000..071e95c --- /dev/null +++ b/curl/default/inst.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +DESTDIR=/ make -j$(nproc) install + +# without the dirty hack below, any package that uses curl would have to also +# have libbearssl added to its list of linked libraries when building. merging +# libbearssl.a into libcurl.a here will prevent a lot of trouble later. +if [ -f /lib/libbearssl.a ]; then + echo "merging libbearssl into libcurl" + mv /lib/libcurl.a /lib/libcurl-clean.a + cd /lib + ar -M < +pkgname=dbus +pkgver=1.12.20 +pkgrel=1 +pkgdesc="Freedesktop.org message bus system" +options="!check" # Introduces circular dependency with xorg-server (xvfb-run -> xvfb) +url="https://www.freedesktop.org/Software/dbus" +pkggroups="messagebus" +arch="all" +license="AFL-2.1 OR GPL-2.0-or-later" +subpackages="$pkgname-dev $pkgname-doc $pkgname-libs $pkgname-x11 $pkgname-openrc" +triggers="$pkgname.trigger=/etc/dbus-1/system.d" +depends_dev="util-linux-dev" +makedepends="$depends_dev + autoconf automake libtool autoconf-archive + expat-dev + glib-dev + libsm-dev + libx11-dev + xmlto + " +checkdepends="xvfb-run" +install="$pkgname.pre-install $pkgname.post-install" +source="https://dbus.freedesktop.org/releases/dbus/dbus-$pkgver.tar.gz + 0001-_dbus_generate_random_bytes-use-getrandom-2.patch + avoid-opendir-between-fork-exec.patch + $pkgname.initd + " + +# secfixes: +# 1.12.18-r0: +# - CVE-2020-12049 +# 1.12.16-r0: +# - CVE-2019-12749 + +prepare() { + default_prepare + autoreconf -vif +} + +build() { + cd "$srcdir"/$pkgname-$pkgver + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --with-xml=expat \ + --with-dbus-user=messagebus \ + --with-system-pid-file=/var/run/dbus.pid \ + --disable-verbose-mode \ + --disable-static \ + --enable-inotify \ + --disable-dnotify \ + --enable-modular-tests=yes \ + --disable-asserts \ + --enable-user-session \ + --enable-xml-docs \ + --with-session-socket-dir=/tmp \ + --with-x + make +} + +check() { + xvfb-run make check +} + +package() { + cd "$srcdir"/$pkgname-$pkgver + make -j1 DESTDIR="$pkgdir" install + install -Dm755 "$srcdir"/dbus.initd "$pkgdir"/etc/init.d/dbus + rm -rf "$pkgdir"/usr/lib/systemd +} + +libs() { + pkgdesc="D-BUS access libraries" + replaces="dbus" + mkdir -p "$subpkgdir"/usr/lib + mv "$pkgdir"/usr/lib/lib*.so.* "$subpkgdir"/usr/lib/ +} + +x11() { + pkgdesc="X11 add-ons for D-BUS" + depends="dbus=$pkgver-r$pkgrel" + mkdir -p "$subpkgdir"/usr/bin + mv "$pkgdir"/usr/bin/dbus-launch "$subpkgdir"/usr/bin/ +} + +sha512sums="0964683bc6859374cc94e42e1ec0cdb542cca67971c205fcba4352500b6c0891665b0718e7d85eb060c81cb82e3346c313892bc02384da300ddd306c7eef0056 dbus-1.12.20.tar.gz +3db35499361e84d8e2469b88b033f49813b179188ac25f1841a989988c352af398a56dfd94383813626c6dfd032194f7a9fcdba001ccc3e005e7cd22dae7a7ed 0001-_dbus_generate_random_bytes-use-getrandom-2.patch +cdd01f51882be4f388515441237aa6318888db6e88a4d980bafbf9b790945e4d959c6633d6d002274c0a617ac919f9355ba628c9b502b355f73fed602f997791 avoid-opendir-between-fork-exec.patch +4c6beba2382416e60a3adfa85ef843d90d93ca5f38c23f573e058ffca6d4fc3850d11d40938c74383bba61599569b7fdfb1fcf3b9d2f1463e6b2e2cc81097c84 dbus.initd" diff --git a/dbus/default/conf.sh b/dbus/default/conf.sh new file mode 100755 index 0000000..5db7185 --- /dev/null +++ b/dbus/default/conf.sh @@ -0,0 +1,21 @@ +#!/bin/sh -e + +autoreconf -vif + +./configure \ + --with-xml=expat \ + --with-dbus-user=messagebus \ + --with-system-pid-file=/var/run/dbus.pid \ + --disable-verbose-mode \ + --enable-inotify \ + --disable-dnotify \ + --enable-modular-tests=yes \ + --disable-asserts \ + --disable-xml-docs \ + --with-session-socket-dir=/tmp \ + --enable-static \ + --enable-shared \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" + #--disable-user-session \ diff --git a/dbus/default/deps b/dbus/default/deps new file mode 100644 index 0000000..026d8a1 --- /dev/null +++ b/dbus/default/deps @@ -0,0 +1,24 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +zlib +xz +perl +m4 +autoconf +automake +libtool +libxml2 +expat +libffi +glib +autoconf-archive diff --git a/dbus/default/env.sh b/dbus/default/env.sh new file mode 100644 index 0000000..54aa70e --- /dev/null +++ b/dbus/default/env.sh @@ -0,0 +1,8 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS -I/include/glib-2.0" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" +export LIBS="-lexpat -lxml2" diff --git a/dbus/default/inst.sh b/dbus/default/inst.sh new file mode 100755 index 0000000..130ca73 --- /dev/null +++ b/dbus/default/inst.sh @@ -0,0 +1,5 @@ +#!/bin/sh -e + +make -j1 install +#install -Dm755 dbus.initd /etc/init.d/dbus +rm -rf /usr/lib/systemd diff --git a/delegate/default/make.sh b/delegate/default/make.sh new file mode 100644 index 0000000..270ae64 --- /dev/null +++ b/delegate/default/make.sh @@ -0,0 +1 @@ +#!/bin/sh -e diff --git a/delegate/default/patch b/delegate/default/patch new file mode 100644 index 0000000..2681730 --- /dev/null +++ b/delegate/default/patch @@ -0,0 +1,8 @@ +--- delegate 2020-11-01 20:50:49.510000000 +0000 ++++ delegate 2020-11-01 20:53:42.550000000 +0000 +@@ -1,3 +1,5 @@ ++// retrieved from ++// https://gist.githubusercontent.com/rusek/c5e09dd12cc4c57c9660/raw/2f9fedc5672649c0a1d46ff16e2eddcd2509bac1/delegate.c + /* + Helper program for resolving the path to the interpreter executable + relative to the script location in shebangs. diff --git a/dmenu/default/conf.sh b/dmenu/default/conf.sh new file mode 100755 index 0000000..7b5a8e3 --- /dev/null +++ b/dmenu/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +${EDITOR:-vi} config.mk diff --git a/dmenu/default/deps b/dmenu/default/deps new file mode 100644 index 0000000..b2a6074 --- /dev/null +++ b/dmenu/default/deps @@ -0,0 +1,33 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +libpng +zlib +bzip2 +libtool +autoconf +automake +expat +xorgproto +libxml2 +libxinerama +libx11 +libxext +libxrender +libxft +libxcb +libxau +imlib2 +freetype +fontconfig +$EDITORDEP diff --git a/dmenu/default/patch b/dmenu/default/patch new file mode 100644 index 0000000..8d5c78b --- /dev/null +++ b/dmenu/default/patch @@ -0,0 +1,35 @@ +--- a/config.mk 2020-09-02 16:37:07.000000000 +0000 ++++ b/config.mk 2020-09-08 22:41:18.410000000 +0000 +@@ -2,11 +2,11 @@ + VERSION = 5.0 + + # paths +-PREFIX = /usr/local ++PREFIX = /usr + MANPREFIX = $(PREFIX)/share/man + +-X11INC = /usr/X11R6/include +-X11LIB = /usr/X11R6/lib ++X11INC = /include/X11 ++X11LIB = /lib/X11 + + # Xinerama, comment if you don't want it + XINERAMALIBS = -lXinerama +@@ -20,12 +20,12 @@ + + # includes and libs + INCS = -I$(X11INC) -I$(FREETYPEINC) +-LIBS = -L$(X11LIB) -lX11 $(XINERAMALIBS) $(FREETYPELIBS) ++LIBS = -L$(X11LIB) $(XINERAMALIBS) $(FREETYPELIBS) -lXrender -lX11 -lX11-xcb -lXext -lxcb -lxcb-shm -lXau -lfreetype -lpng -lm -lz -lbz2 -lfontconfig -lexpat -lxml2 + + # flags +-CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L -DVERSION=\"$(VERSION)\" $(XINERAMAFLAGS) +-CFLAGS = -std=c99 -pedantic -Wall -Os $(INCS) $(CPPFLAGS) +-LDFLAGS = $(LIBS) ++CPPFLAGS += -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L -DVERSION=\"$(VERSION)\" $(XINERAMAFLAGS) ++CFLAGS += -std=c99 -pedantic -Wall -Os $(INCS) $(CPPFLAGS) ++LDFLAGS += $(LIBS) + + # compiler and linker +-CC = cc ++CC ?= cc diff --git a/doas/default/conf.sh b/doas/default/conf.sh new file mode 100755 index 0000000..b8bfc93 --- /dev/null +++ b/doas/default/conf.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +set -e + +CFLAGS="$CFLAGS -DTIMESTAMP_DIR=/var/run/doas" \ +./configure --without-pam --with-timestamp --prefix= + +## explanation +# +# --without-pam: +# don't include pluggable authentication module support. it's an optional +# feature which lix os doesn't have by default. +# +# --with-timestamp: +# support the "persist" directive in /etc/doas.conf. without this, the user +# must enter their password *every* time they use 'doas'. with this flag, +# they only have to re-enter their password if it has been five minutes +# since they last entered their password. +# +## note +# +# 'doas' does not support /etc/passwd based authentication. if the user does +# not have an /etc/shadow entry, authentication will *always* fail. diff --git a/doas/default/deps b/doas/default/deps new file mode 100644 index 0000000..a912040 --- /dev/null +++ b/doas/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +m4 +bison +ncurses diff --git a/doas/default/inst.sh b/doas/default/inst.sh new file mode 100755 index 0000000..cf265ed --- /dev/null +++ b/doas/default/inst.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +make -j$(nproc) install + +mkdir -p /var/run/doas +chmod 0700 /var/run/doas diff --git a/doas/default/make.sh b/doas/default/make.sh new file mode 100755 index 0000000..a1ca85a --- /dev/null +++ b/doas/default/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +CFLAGS="$CFLAGS -DTIMESTAMP_DIR='\"/var/run/doas\"'" \ +make -j$(nproc) diff --git a/docbook-xml-src/default/conf.sh b/docbook-xml-src/default/conf.sh new file mode 100755 index 0000000..aa92e98 --- /dev/null +++ b/docbook-xml-src/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "no configuration to do." diff --git a/docbook-xml-src/default/inst.sh b/docbook-xml-src/default/inst.sh new file mode 100755 index 0000000..5b59cca --- /dev/null +++ b/docbook-xml-src/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +mkdir -p /src # a trick for multi-source packages that also respects the LFHS. +cp $name /src/docbook-xml-$version.zip diff --git a/docbook-xml-src/default/make.sh b/docbook-xml-src/default/make.sh new file mode 100755 index 0000000..bc6a772 --- /dev/null +++ b/docbook-xml-src/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "no making to do." diff --git a/docbook-xml/4.5/conf.sh b/docbook-xml/4.5/conf.sh new file mode 100755 index 0000000..aa92e98 --- /dev/null +++ b/docbook-xml/4.5/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "no configuration to do." diff --git a/docbook-xml/4.5/deps b/docbook-xml/4.5/deps new file mode 100644 index 0000000..a4421e9 --- /dev/null +++ b/docbook-xml/4.5/deps @@ -0,0 +1,18 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libxml2 +libarchive +docbook-xml-src == 4.1.2 +docbook-xml-src == 4.2 +docbook-xml-src == 4.3 +docbook-xml-src == 4.4 +docbook-xml-src == 4.5 diff --git a/docbook-xml/4.5/inst.sh b/docbook-xml/4.5/inst.sh new file mode 100755 index 0000000..518736d --- /dev/null +++ b/docbook-xml/4.5/inst.sh @@ -0,0 +1,310 @@ +#!/bin/sh -e + +cd ../build + +install_dtd() { + local dest="/share/xml/docbook/xml-dtd-$1" + cd docbook-xml-$1 + mkdir -p "$dest" + cp -af docbook.cat *.dtd ent/ *.mod "$dest" + chmod 755 "$dest/ent" + cd - > /dev/null +} + +install_dtd 4.1.2 +install_dtd 4.2 +install_dtd 4.3 +install_dtd 4.4 +install_dtd 4.5 + +export XML_CATALOG_FILES="" + +mkdir -p /etc/xml +xmlcatalog --noout --create /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML V4.1.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML CALS Table Model V4.1.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/calstblx.dtd" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML CALS Table Model V4.1.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/calstblx.dtd" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/soextblx.dtd" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML Information Pool V4.1.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/dbpoolx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.1.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/dbhierx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Additional General Entities V4.1.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/dbgenent.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Notations V4.1.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/dbnotnx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Character Entities V4.1.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/dbcentx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "rewriteSystem" \ + "http://www.oasis-open.org/docbook/xml/4.1.2" \ + "file:///share/xml/docbook/xml-dtd-4.1.2" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "rewriteURI" \ + "http://www.oasis-open.org/docbook/xml/4.1.2" \ + "file:///share/xml/docbook/xml-dtd-4.1.2" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML V4.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook CALS Table Model V4.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.2/calstblx.dtd" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \ + "http://www.oasis-open.org/docbook/xml/4.2/soextblx.dtd" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook Information Pool V4.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.2/dbpoolx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.2/dbhierx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Additional General Entities V4.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.2/dbgenent.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Notations V4.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.2/dbnotnx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Character Entities V4.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.2/dbcentx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "rewriteSystem" \ + "http://www.oasis-open.org/docbook/xml/4.2" \ + "file:///share/xml/docbook/xml-dtd-4.2" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "rewriteURI" \ + "http://www.oasis-open.org/docbook/xml/4.2" \ + "file:///share/xml/docbook/xml-dtd-4.2" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML V4.3//EN" \ + "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook CALS Table Model V4.3//EN" \ + "http://www.oasis-open.org/docbook/xml/4.3/calstblx.dtd" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \ + "http://www.oasis-open.org/docbook/xml/4.3/soextblx.dtd" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook Information Pool V4.3//EN" \ + "http://www.oasis-open.org/docbook/xml/4.3/dbpoolx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.3//EN" \ + "http://www.oasis-open.org/docbook/xml/4.3/dbhierx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Additional General Entities V4.3//EN" \ + "http://www.oasis-open.org/docbook/xml/4.3/dbgenent.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Notations V4.3//EN" \ + "http://www.oasis-open.org/docbook/xml/4.3/dbnotnx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Character Entities V4.3//EN" \ + "http://www.oasis-open.org/docbook/xml/4.3/dbcentx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "rewriteSystem" \ + "http://www.oasis-open.org/docbook/xml/4.3" \ + "file:///share/xml/docbook/xml-dtd-4.3" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "rewriteURI" \ + "http://www.oasis-open.org/docbook/xml/4.3" \ + "file:///share/xml/docbook/xml-dtd-4.3" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML V4.4//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook CALS Table Model V4.4//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/calstblx.dtd" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.4//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/htmltblx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/soextblx.dtd" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook Information Pool V4.4//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/dbpoolx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.4//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/dbhierx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Additional General Entities V4.4//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/dbgenent.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Notations V4.4//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/dbnotnx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Character Entities V4.4//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/dbcentx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "rewriteSystem" \ + "http://www.oasis-open.org/docbook/xml/4.4" \ + "file:///share/xml/docbook/xml-dtd-4.4" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "rewriteURI" \ + "http://www.oasis-open.org/docbook/xml/4.4" \ + "file:///share/xml/docbook/xml-dtd-4.4" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML V4.5//EN" \ + "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML CALS Table Model V4.5//EN" \ + "file:///share/xml/docbook/xml-dtd-4.5/calstblx.dtd" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \ + "file:///share/xml/docbook/xml-dtd-4.5/soextblx.dtd" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN" \ + "file:///share/xml/docbook/xml-dtd-4.5/dbpoolx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.5//EN" \ + "file:///share/xml/docbook/xml-dtd-4.5/dbhierx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN" \ + "file:///share/xml/docbook/xml-dtd-4.5/htmltblx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Notations V4.5//EN" \ + "file:///share/xml/docbook/xml-dtd-4.5/dbnotnx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Character Entities V4.5//EN" \ + "file:///share/xml/docbook/xml-dtd-4.5/dbcentx.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Additional General Entities V4.5//EN" \ + "file:///share/xml/docbook/xml-dtd-4.5/dbgenent.mod" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "rewriteSystem" \ + "http://www.oasis-open.org/docbook/xml/4.5" \ + "file:///share/xml/docbook/xml-dtd-4.5" \ + /etc/xml/docbook-xml + +xmlcatalog --noout --add "rewriteURI" \ + "http://www.oasis-open.org/docbook/xml/4.5" \ + "file:///share/xml/docbook/xml-dtd-4.5" \ + /etc/xml/docbook-xml + +[ -e "/etc/xml/catalog" ] || xmlcatalog --noout --create /etc/xml/catalog + +xmlcatalog --noout --add "delegatePublic" \ + "-//OASIS//ENTITIES DocBook XML" \ + "file:///etc/xml/docbook-xml" \ + /etc/xml/catalog + +xmlcatalog --noout --add "delegatePublic" \ + "-//OASIS//DTD DocBook XML" \ + "file:///etc/xml/docbook-xml" \ + /etc/xml/catalog + +xmlcatalog --noout --add "delegateSystem" \ + "http://www.oasis-open.org/docbook/" \ + "file:///etc/xml/docbook-xml" \ + /etc/xml/catalog + +xmlcatalog --noout --add "delegateURI" \ + "http://www.oasis-open.org/docbook/" \ + "file:///etc/xml/docbook-xml" \ + /etc/xml/catalog diff --git a/docbook-xml/4.5/make.sh b/docbook-xml/4.5/make.sh new file mode 100755 index 0000000..b188cbd --- /dev/null +++ b/docbook-xml/4.5/make.sh @@ -0,0 +1,15 @@ +#!/bin/sh -e + +cd ../build + +unpack() { + [ ! -d "docbook-xml-$1" ] || return 0; + mkdir -p docbook-xml-$1 + tar -C docbook-xml-$1 -xvf /src/docbook-xml-${1}.zip +} + +unpack 4.1.2 +unpack 4.2 +unpack 4.3 +unpack 4.4 +unpack 4.5 diff --git a/docbook-xsl/default/conf.sh b/docbook-xsl/default/conf.sh new file mode 100755 index 0000000..b671f5e --- /dev/null +++ b/docbook-xsl/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "nothing to configure." diff --git a/docbook-xsl/default/deps b/docbook-xsl/default/deps new file mode 100644 index 0000000..3eceb07 --- /dev/null +++ b/docbook-xsl/default/deps @@ -0,0 +1,14 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libxml2 +libxslt +docbook-xml diff --git a/docbook-xsl/default/inst.sh b/docbook-xsl/default/inst.sh new file mode 100755 index 0000000..c40b7d3 --- /dev/null +++ b/docbook-xsl/default/inst.sh @@ -0,0 +1,59 @@ +#!/bin/sh -e + +dest="/share/xml/docbook/xsl-stylesheets-$version" +#mkdir -p "$dest" + +install -dm755 "$dest" +install -m644 VERSION VERSION.xsl "$dest/" + +echo "assembly +common +eclipse +epub +epub3 +fo +highlighting +html +htmlhelp +javahelp +lib +manpages +params +profiling +roundtrip +template +website +xhtml +xhtml-1_1 +xhtml5" | while read dir; do + install -dm755 "$dest/$dir" + printf "xml\nxsl\ndtd\nent\n" | while read ext; do + [ "$(ls $dir/*.$ext 2> /dev/null)" ] || continue + install -m644 $dir/*.$ext $dest/$dir + done +done + +install -dm755 /etc/xml +install -m644 -D COPYING /usr/share/licenses/$name/COPYING + +[ -e /etc/xml/catalog ] || xmlcatalog --noout --create /etc/xml/catalog + +xmlcatalog --noout --add "rewriteSystem" \ + "http://docbook.sourceforge.net/release/xsl/$version" \ + "$dest" \ + /etc/xml/catalog + +xmlcatalog --noout --add "rewriteURI" \ + "http://docbook.sourceforge.net/release/xsl/$version" \ + "$dest" \ + /etc/xml/catalog + +xmlcatalog --noout --add "rewriteSystem" \ + "http://docbook.sourceforge.net/release/xsl/current" \ + "$dest" \ + /etc/xml/catalog + +xmlcatalog --noout --add "rewriteURI" \ + "http://docbook.sourceforge.net/release/xsl/current" \ + "$dest" \ + /etc/xml/catalog diff --git a/docbook-xsl/default/make.sh b/docbook-xsl/default/make.sh new file mode 100755 index 0000000..603bf8e --- /dev/null +++ b/docbook-xsl/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "nothing to make." diff --git a/docbook-xsl/default/patches-available/765567_non-recursive_string_subst.patch b/docbook-xsl/default/patches-available/765567_non-recursive_string_subst.patch new file mode 100644 index 0000000..3a5fe80 --- /dev/null +++ b/docbook-xsl/default/patches-available/765567_non-recursive_string_subst.patch @@ -0,0 +1,33 @@ +Description: use EXSLT "replace" function when available + A recursive implementation of string.subst is problematic, + long strings with many matches will cause stack overflows. +Author: Peter De Wachter +Bug-Debian: https://bugs.debian.org/750593 + +diff --git a/lib/lib.xsl b/lib/lib.xsl +index e65776a..bc45cd8 100644 +--- a/lib/lib.xsl ++++ b/lib/lib.xsl +@@ -6,7 +6,11 @@ + + This module implements DTD-independent functions + +- ******************************************************************** --> ++ ******************************************************************** --> ++ + + + +@@ -52,6 +56,9 @@ + + + ++ ++ ++ + + + diff --git a/docbook-xsl/default/patches-enabled/765567_non-recursive_string_subst.patch b/docbook-xsl/default/patches-enabled/765567_non-recursive_string_subst.patch new file mode 120000 index 0000000..08b490c --- /dev/null +++ b/docbook-xsl/default/patches-enabled/765567_non-recursive_string_subst.patch @@ -0,0 +1 @@ +../patches-available/765567_non-recursive_string_subst.patch \ No newline at end of file diff --git a/dwm/default/conf.sh b/dwm/default/conf.sh new file mode 100755 index 0000000..7b5a8e3 --- /dev/null +++ b/dwm/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +${EDITOR:-vi} config.mk diff --git a/dwm/default/deps b/dwm/default/deps new file mode 100644 index 0000000..b2a6074 --- /dev/null +++ b/dwm/default/deps @@ -0,0 +1,33 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +libpng +zlib +bzip2 +libtool +autoconf +automake +expat +xorgproto +libxml2 +libxinerama +libx11 +libxext +libxrender +libxft +libxcb +libxau +imlib2 +freetype +fontconfig +$EDITORDEP diff --git a/dwm/default/patch b/dwm/default/patch new file mode 100644 index 0000000..0b43044 --- /dev/null +++ b/dwm/default/patch @@ -0,0 +1,35 @@ +--- a/config.mk 2019-02-02 12:55:28.000000000 +0000 ++++ b/config.mk 2020-09-08 23:52:06.060000000 +0000 +@@ -4,7 +4,7 @@ + # Customize below to fit your system + + # paths +-PREFIX = /usr/local ++PREFIX = /usr + MANPREFIX = ${PREFIX}/share/man + + X11INC = /usr/X11R6/include +@@ -22,17 +22,17 @@ + + # includes and libs + INCS = -I${X11INC} -I${FREETYPEINC} +-LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS} ++LIBS = -L${X11LIB} ${XINERAMALIBS} ${FREETYPELIBS} -lXrender -lX11 -lX11-xcb -lXext -lxcb -lxcb-shm -lXau -lfreetype -lpng -lm -lz -lbz2 -lfontconfig -lexpat -lxml2 + + # flags + CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_C_SOURCE=2 -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS} +-#CFLAGS = -g -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS} +-CFLAGS = -std=c99 -pedantic -Wall -Wno-deprecated-declarations -Os ${INCS} ${CPPFLAGS} +-LDFLAGS = ${LIBS} ++#CFLAGS += -g -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS} ++CFLAGS += -std=c99 -pedantic -Wall -Wno-deprecated-declarations -Os ${INCS} ${CPPFLAGS} ++LDFLAGS += ${LIBS} + + # Solaris +-#CFLAGS = -fast ${INCS} -DVERSION=\"${VERSION}\" +-#LDFLAGS = ${LIBS} ++#CFLAGS += -fast ${INCS} -DVERSION=\"${VERSION}\" ++#LDFLAGS += ${LIBS} + + # compiler and linker + CC = cc diff --git a/e2fsprogs/default/conf.sh b/e2fsprogs/default/conf.sh new file mode 100755 index 0000000..9e7541a --- /dev/null +++ b/e2fsprogs/default/conf.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +# e2fsprogs recommends out-of-tree builds, so use the 'build' mount. +cd /mnt/build + +/mnt/src/configure --disable-nls --enable-fsck --srcdir="/mnt/src" --prefix= + +## explanation +# +# --disable-nls: skip locale support. +# +# --enable-fsck: also build the fsck wrapper utility. +# +# --srcdir: without this, some makefiles can't find $pkg/config/install-sh +# +# --prefix: respect lix os' directory structure. diff --git a/e2fsprogs/default/deps b/e2fsprogs/default/deps new file mode 100644 index 0000000..930a016 --- /dev/null +++ b/e2fsprogs/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf diff --git a/e2fsprogs/default/inst.sh b/e2fsprogs/default/inst.sh new file mode 100755 index 0000000..ea2cc6e --- /dev/null +++ b/e2fsprogs/default/inst.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +set -e + +cd /mnt/build + +# 'make install' doesn't create these and errors out if they don't exist. +mkdir -p /share/man/man5 \ + /share/man/man3 \ + /share/et \ + /share/ss \ + /include/et \ + /include/ss \ + /include/e2p \ + /include/uuid \ + /include/blkid \ + /include/ext2fs + +make -j$(nproc) install diff --git a/e2fsprogs/default/make.sh b/e2fsprogs/default/make.sh new file mode 100755 index 0000000..e0cd41f --- /dev/null +++ b/e2fsprogs/default/make.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +cd /mnt/build + +make -j$(nproc) diff --git a/elvis/default/conf.sh b/elvis/default/conf.sh new file mode 100755 index 0000000..9651e84 --- /dev/null +++ b/elvis/default/conf.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +export CC="gcc $CFLAGS $LDFLAGS" +export MANPATH="/usr/share/man" + +./configure --ioctl=termios --prefix=/usr + +## explanation +# +# CC: elvis' build system completely ignores LDFLAGS and CFLAGS. +# +# MANPATH: +# elvis' configure script can't figure out where to put the manual pages +# on its own and doesn't like if MANPATH doesn't start with PREFIX. +# +# --ioctl: +# elvis' configure script looks for termios.h in /include, but it resides +# in /include/linux. because it can't find the correct header, it tries to +# use a default one which does not exist. setting this flag makes it skip +# that whole process and use the correct one. +# +# --prefix: +# elvis' configure script throws an error if given an empty prefix. +# setting it to /usr takes advantage of /usr being a symlink to /. diff --git a/elvis/default/deps b/elvis/default/deps new file mode 100644 index 0000000..282b4c7 --- /dev/null +++ b/elvis/default/deps @@ -0,0 +1,11 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +sbase +ubase +dash +patch +make +automake +autoconf +ncurses diff --git a/eudev/default/conf.sh b/eudev/default/conf.sh new file mode 100755 index 0000000..291de72 --- /dev/null +++ b/eudev/default/conf.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +set -e + +./configure \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --disable-hwdb \ + --disable-kmod \ + --with-rootrundir=/var/run \ + --enable-static \ + --prefix= + +# --disable-programs \ + +## explanation +# +# --build: make sure the build string is set correctly. +# +# --host: make sure the host string is set correctly. +# +# --disable-kmod: lix os assumes a static kernel, where modules are not in use. +# +# --disable-programs: smdev handles hotplugging. this package is just here to +# provide a drop-in libudev replacement for packages that cannot do without. +# +# --enable-static: build the static library as well. (shared is on by default.) +# +# --prefix: respect the "no /usr/local" policy. diff --git a/eudev/default/deps b/eudev/default/deps new file mode 100644 index 0000000..faf30e0 --- /dev/null +++ b/eudev/default/deps @@ -0,0 +1,21 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +musl-cross-make +make +automake +autoconf +m4 +pkgconf +libtool +diffutils +file +flex +dash +patch +awk +gnu-grep +gnu-sed +perl +gperf diff --git a/eudev/default/env.sh b/eudev/default/env.sh new file mode 100755 index 0000000..b2946ed --- /dev/null +++ b/eudev/default/env.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +export LDFLAGS="-L/lib" +export CFLAGS="-I/include" + +# TODO: remove the need for these lines by making musl-cross-make build a gcc +# with a header search path of /include only, with all headers contained there. +CPATH="$CPATH:/include:/powerpc64le-lix-linux-musl/include" +CPATH="$CPATH:/include/c++/9.2.0/powerpc64le-lix-linux-musl:/include/c++/9.2.0" +export CPATH diff --git a/eudev/default/patch b/eudev/default/patch new file mode 100644 index 0000000..a476ee5 --- /dev/null +++ b/eudev/default/patch @@ -0,0 +1,47 @@ +diff -ur a/src/udev/Makefile.am b/src/udev/Makefile.am +--- a/src/udev/Makefile.am 2018-12-22 14:41:05.000000000 +0000 ++++ b/src/udev/Makefile.am 2020-10-02 19:03:03.870000000 +0000 +@@ -134,11 +134,5 @@ + keyboard-keys.txt \ + $(BUILT_SOURCES) + +-# install udevadm symlink in sbindir +-install-exec-hook: +- if test "$(bindir)" != "$(sbindir)"; then \ +- $(LN_S) -n -f $(bindir)/udevadm $(DESTDIR)$(sbindir)/udevadm; \ +- fi +- + uninstall-hook: + rm -Rf $(DESTDIR)$(sbindir)/udevadm +diff -ur a/src/udev/Makefile.in b/src/udev/Makefile.in +--- a/src/udev/Makefile.in 2019-10-26 20:18:34.000000000 +0000 ++++ b/src/udevMakefile.in 2020-10-02 19:02:25.230000000 +0000 +@@ -1093,7 +1093,6 @@ + + install-exec-am: install-binPROGRAMS install-sbinPROGRAMS + @$(NORMAL_INSTALL) +- $(MAKE) $(AM_MAKEFLAGS) install-exec-hook + install-html: install-html-am + + install-html-am: +@@ -1173,7 +1172,7 @@ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dist_udevconfDATA \ + install-dvi install-dvi-am install-exec install-exec-am \ +- install-exec-hook install-html install-html-am \ ++ install-html install-html-am \ + install-includeHEADERS install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-sbinPROGRAMS install-sharepkgconfigDATA \ +@@ -1201,12 +1200,6 @@ + keyboard-keys-to-name.h: keyboard-keys.txt Makefile + $(AM_V_GEN)$(AWK) 'BEGIN{ print "const char* const key_names[KEY_CNT] = { "} { print "[" $$1 "] = \"" $$1 "\"," } END{print "};"}' < $< > $@ + +-# install udevadm symlink in sbindir +-install-exec-hook: +- if test "$(bindir)" != "$(sbindir)"; then \ +- $(LN_S) -n -f $(bindir)/udevadm $(DESTDIR)$(sbindir)/udevadm; \ +- fi +- + uninstall-hook: + rm -Rf $(DESTDIR)$(sbindir)/udevadm diff --git a/expat/default/conf.sh b/expat/default/conf.sh new file mode 100755 index 0000000..2e6aec8 --- /dev/null +++ b/expat/default/conf.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +set -e + +# expat keeps its sources one layer deeper than most other packages. +cd expat + +# generate the configure script +./buildconf.sh + +./configure \ + --disable-shared \ + --enable-static \ + --build=$(uname -m)-lix-linux-musl \ + --host=$(uname -m)-lix-linux-musl \ + --prefix= + +## explanation +# +# --disable-shared: don't build the shared libraries. +# +# --build: tell expat what system it's building for. +# +# --prefix: respect lix os' file structure. diff --git a/expat/default/deps b/expat/default/deps new file mode 100644 index 0000000..fe4d650 --- /dev/null +++ b/expat/default/deps @@ -0,0 +1,16 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +autoconf +automake +libtool diff --git a/expat/default/inst.sh b/expat/default/inst.sh new file mode 100755 index 0000000..0d2da9d --- /dev/null +++ b/expat/default/inst.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# expat keeps its sources one layer deeper than most other packages +cd expat + +DESTDIR=/ make -j$(nproc) install diff --git a/expat/default/make.sh b/expat/default/make.sh new file mode 100755 index 0000000..bfd5c5e --- /dev/null +++ b/expat/default/make.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# expat keeps its sources one layer deeper than other packages. +cd expat + +make -j$(nproc) diff --git a/fbida/default/deps b/fbida/default/deps new file mode 100644 index 0000000..8746fef --- /dev/null +++ b/fbida/default/deps @@ -0,0 +1,21 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +freetype +fontconfig +libdrm +libexif +libpng +libtiff +giflib +pixman +libepoxy diff --git a/fbpad-mkfn/default/conf.sh b/fbpad-mkfn/default/conf.sh new file mode 100755 index 0000000..fc97c0a --- /dev/null +++ b/fbpad-mkfn/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +${EDITOR:-vi} Makefile diff --git a/fbpad-mkfn/default/deps b/fbpad-mkfn/default/deps new file mode 100644 index 0000000..702ce43 --- /dev/null +++ b/fbpad-mkfn/default/deps @@ -0,0 +1,16 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +freetype +bzip2 +zlib +libpng +$EDITORDEP diff --git a/fbpad-mkfn/default/inst.sh b/fbpad-mkfn/default/inst.sh new file mode 100755 index 0000000..2620630 --- /dev/null +++ b/fbpad-mkfn/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +cp mkfn_ft /bin/ +cp mkfn_stb /bin/ diff --git a/fbpad-mkfn/default/patch b/fbpad-mkfn/default/patch new file mode 100644 index 0000000..2f15ef4 --- /dev/null +++ b/fbpad-mkfn/default/patch @@ -0,0 +1,51 @@ +--- a/Makefile 2020-09-02 21:15:32.580000000 +0000 ++++ b/Makefile 2020-09-02 22:02:21.720000000 +0000 +@@ -1,15 +1,15 @@ + # fbpad_mkfn makefile + CC = cc + +-CFLAGS = -O2 -Wall +-LDFLAGS = ++CFLAGS = -O2 -Wall -I/include/freetype2 -static --static ++LDFLAGS = -lfreetype -lbz2 -lpng -lz + + all: mkfn_ft mkfn_stb + %.o: %.c + $(CC) -c $(CFLAGS) $< + mkfn_ft: mkfn_ft.c mkfn.o isdw.o +- $(CC) -c $(CFLAGS) `pkg-config --cflags freetype2` mkfn_ft.c +- $(CC) -o $@ mkfn_ft.o mkfn.o isdw.o $(LDFLAGS) `pkg-config --libs freetype2` ++ $(CC) -c $(CFLAGS) mkfn_ft.c ++ $(CC) -o $@ mkfn_ft.o mkfn.o isdw.o $(LDFLAGS) + + mkfn_stb: mkfn_stb.c mkfn.o isdw.o + $(CC) -c $(CFLAGS) -DSTB_TRUETYPE_IMPLEMENTATION mkfn_stb.c +--- a/mkfn.c 2020-09-02 21:15:32.580000000 +0000 ++++ b/mkfn.c 2020-09-02 22:08:05.230000000 +0000 +@@ -84,6 +84,11 @@ + + int main(int argc, char *argv[]) + { ++ if (argc <= 1) { ++ fprintf(stderr, usage); ++ exit(1); ++ } ++ + int i; + char *wdiff = NULL; + char *hdiff = NULL; +@@ -92,9 +97,13 @@ + wdiff = argv[i][2] ? argv[i] + 2 : argv[++i]; + else if (argv[i][1] == 'h') + hdiff = argv[i][2] ? argv[i] + 2 : argv[++i]; +- else ++ else { ++ fprintf(stderr, "unrecognized flag: %s\n", argv[i]); + fprintf(stderr, usage); ++ exit(1); ++ } + } ++ + mkfn_init(); + for (; i < argc; i++) { + char *name = argv[i]; diff --git a/fbpad/default/conf.sh b/fbpad/default/conf.sh new file mode 100755 index 0000000..db25868 --- /dev/null +++ b/fbpad/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +${EDITOR:-vi} conf.h diff --git a/fbpad/default/deps b/fbpad/default/deps new file mode 100644 index 0000000..e8f399b --- /dev/null +++ b/fbpad/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +$EDITORDEP diff --git a/fbpad/default/inst.sh b/fbpad/default/inst.sh new file mode 100755 index 0000000..5007f5b --- /dev/null +++ b/fbpad/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +cp fbpad /bin/fbpad +mkdir -p /share/fbpad diff --git a/fbpad/default/patch b/fbpad/default/patch new file mode 100644 index 0000000..8678c8f --- /dev/null +++ b/fbpad/default/patch @@ -0,0 +1,11 @@ +--- a/conf.h 2020-09-02 20:59:13.880000000 +0000 ++++ b/conf.h 2020-09-02 21:07:58.980000000 +0000 +@@ -17,7 +17,7 @@ + typedef unsigned int fbval_t; + + /* tinyfont files for regular, italic, and bold fonts */ +-#define FR "/path/to/font.tf" ++#define FR "/share/fbpad/font.tf" + #define FI NULL + #define FB NULL + diff --git a/fbset/default/conf.sh b/fbset/default/conf.sh new file mode 100755 index 0000000..fc97c0a --- /dev/null +++ b/fbset/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +${EDITOR:-vi} Makefile diff --git a/fbset/default/deps b/fbset/default/deps new file mode 100644 index 0000000..4f610ec --- /dev/null +++ b/fbset/default/deps @@ -0,0 +1,15 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +bison +flex +m4 +$EDITORDEP diff --git a/fbset/default/patch b/fbset/default/patch new file mode 100644 index 0000000..e810f0e --- /dev/null +++ b/fbset/default/patch @@ -0,0 +1,1663 @@ +this patch is a concatenation of all the patches from debian's fbset package as +of the "buster" release. fbset is a special package in that it has not had a +primary maintainer since 1999. the debian maintainers have provided some +improvements in their fork of it, so those have been brought in here. + +--- + fb.h | 545 +++++++++++++++++++++++++++---------------------------------------- + 1 file changed, 225 insertions(+), 320 deletions(-) + +--- a/fb.h ++++ b/fb.h +@@ -1,16 +1,12 @@ +-#ifndef _LINUX_FB_H +-#define _LINUX_FB_H ++#ifndef _UAPI_LINUX_FB_H ++#define _UAPI_LINUX_FB_H + +-#include ++#include ++#include + + /* Definitions of frame buffers */ + +-#define FB_MAJOR 29 +- +-#define FB_MODES_SHIFT 5 /* 32 modes per framebuffer */ +-#define FB_NUM_MINORS 256 /* 256 Minors */ +-#define FB_MAX (FB_NUM_MINORS / (1 << FB_MODES_SHIFT)) +-#define GET_FB_IDX(node) (MINOR(node) >> FB_MODES_SHIFT) ++#define FB_MAX 32 /* sufficient for now */ + + /* ioctls + 0x46 is 'F' */ +@@ -20,24 +16,44 @@ + #define FBIOGETCMAP 0x4604 + #define FBIOPUTCMAP 0x4605 + #define FBIOPAN_DISPLAY 0x4606 ++#ifndef __KERNEL__ ++#define FBIO_CURSOR _IOWR('F', 0x08, struct fb_cursor) ++#endif + /* 0x4607-0x460B are defined below */ + /* #define FBIOGET_MONITORSPEC 0x460C */ + /* #define FBIOPUT_MONITORSPEC 0x460D */ + /* #define FBIOSWITCH_MONIBIT 0x460E */ + #define FBIOGET_CON2FBMAP 0x460F + #define FBIOPUT_CON2FBMAP 0x4610 ++#define FBIOBLANK 0x4611 /* arg: 0 or vesa level + 1 */ ++#define FBIOGET_VBLANK _IOR('F', 0x12, struct fb_vblank) ++#define FBIO_ALLOC 0x4613 ++#define FBIO_FREE 0x4614 ++#define FBIOGET_GLYPH 0x4615 ++#define FBIOGET_HWCINFO 0x4616 ++#define FBIOPUT_MODEINFO 0x4617 ++#define FBIOGET_DISPINFO 0x4618 ++#define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32) + + #define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */ + #define FB_TYPE_PLANES 1 /* Non interleaved planes */ + #define FB_TYPE_INTERLEAVED_PLANES 2 /* Interleaved planes */ + #define FB_TYPE_TEXT 3 /* Text/attributes */ + #define FB_TYPE_VGA_PLANES 4 /* EGA/VGA planes */ ++#define FB_TYPE_FOURCC 5 /* Type identified by a V4L2 FOURCC */ + + #define FB_AUX_TEXT_MDA 0 /* Monochrome text */ + #define FB_AUX_TEXT_CGA 1 /* CGA/EGA/VGA Color text */ + #define FB_AUX_TEXT_S3_MMIO 2 /* S3 MMIO fasttext */ + #define FB_AUX_TEXT_MGA_STEP16 3 /* MGA Millenium I: text, attr, 14 reserved bytes */ + #define FB_AUX_TEXT_MGA_STEP8 4 /* other MGAs: text, attr, 6 reserved bytes */ ++#define FB_AUX_TEXT_SVGA_GROUP 8 /* 8-15: SVGA tileblit compatible modes */ ++#define FB_AUX_TEXT_SVGA_MASK 7 /* lower three bits says step */ ++#define FB_AUX_TEXT_SVGA_STEP2 8 /* SVGA text mode: text, attr */ ++#define FB_AUX_TEXT_SVGA_STEP4 9 /* SVGA text mode: text, attr, 2 reserved bytes */ ++#define FB_AUX_TEXT_SVGA_STEP8 10 /* SVGA text mode: text, attr, 6 reserved bytes */ ++#define FB_AUX_TEXT_SVGA_STEP16 11 /* SVGA text mode: text, attr, 14 reserved bytes */ ++#define FB_AUX_TEXT_SVGA_LAST 15 /* reserved up to 15 */ + + #define FB_AUX_VGA_PLANES_VGA4 0 /* 16 color planes (EGA/VGA) */ + #define FB_AUX_VGA_PLANES_CFB4 1 /* CFB4 in planes (VGA) */ +@@ -49,6 +65,7 @@ + #define FB_VISUAL_PSEUDOCOLOR 3 /* Pseudo color (like atari) */ + #define FB_VISUAL_DIRECTCOLOR 4 /* Direct color */ + #define FB_VISUAL_STATIC_PSEUDOCOLOR 5 /* Pseudo color readonly */ ++#define FB_VISUAL_FOURCC 6 /* Visual identified by a V4L2 FOURCC */ + + #define FB_ACCEL_NONE 0 /* no hardware accelerator */ + #define FB_ACCEL_ATARIBLITT 1 /* Atari Blitter */ +@@ -73,14 +90,72 @@ + #define FB_ACCEL_MATROX_MGAG100 20 /* Matrox G100 (Productiva G100) */ + #define FB_ACCEL_MATROX_MGAG200 21 /* Matrox G200 (Myst, Mill, ...) */ + #define FB_ACCEL_SUN_CG14 22 /* Sun cgfourteen */ +-#define FB_ACCEL_SUN_BWTWO 23 /* Sun bwtwo */ +-#define FB_ACCEL_SUN_CGTHREE 24 /* Sun cgthree */ +-#define FB_ACCEL_SUN_TCX 25 /* Sun tcx */ +-#define FB_ACCEL_MATROX_MGAG400 26 /* Matrox G400 */ ++#define FB_ACCEL_SUN_BWTWO 23 /* Sun bwtwo */ ++#define FB_ACCEL_SUN_CGTHREE 24 /* Sun cgthree */ ++#define FB_ACCEL_SUN_TCX 25 /* Sun tcx */ ++#define FB_ACCEL_MATROX_MGAG400 26 /* Matrox G400 */ ++#define FB_ACCEL_NV3 27 /* nVidia RIVA 128 */ ++#define FB_ACCEL_NV4 28 /* nVidia RIVA TNT */ ++#define FB_ACCEL_NV5 29 /* nVidia RIVA TNT2 */ ++#define FB_ACCEL_CT_6555x 30 /* C&T 6555x */ ++#define FB_ACCEL_3DFX_BANSHEE 31 /* 3Dfx Banshee */ ++#define FB_ACCEL_ATI_RAGE128 32 /* ATI Rage128 family */ ++#define FB_ACCEL_IGS_CYBER2000 33 /* CyberPro 2000 */ ++#define FB_ACCEL_IGS_CYBER2010 34 /* CyberPro 2010 */ ++#define FB_ACCEL_IGS_CYBER5000 35 /* CyberPro 5000 */ ++#define FB_ACCEL_SIS_GLAMOUR 36 /* SiS 300/630/540 */ ++#define FB_ACCEL_3DLABS_PERMEDIA3 37 /* 3Dlabs Permedia 3 */ ++#define FB_ACCEL_ATI_RADEON 38 /* ATI Radeon family */ ++#define FB_ACCEL_I810 39 /* Intel 810/815 */ ++#define FB_ACCEL_SIS_GLAMOUR_2 40 /* SiS 315, 650, 740 */ ++#define FB_ACCEL_SIS_XABRE 41 /* SiS 330 ("Xabre") */ ++#define FB_ACCEL_I830 42 /* Intel 830M/845G/85x/865G */ ++#define FB_ACCEL_NV_10 43 /* nVidia Arch 10 */ ++#define FB_ACCEL_NV_20 44 /* nVidia Arch 20 */ ++#define FB_ACCEL_NV_30 45 /* nVidia Arch 30 */ ++#define FB_ACCEL_NV_40 46 /* nVidia Arch 40 */ ++#define FB_ACCEL_XGI_VOLARI_V 47 /* XGI Volari V3XT, V5, V8 */ ++#define FB_ACCEL_XGI_VOLARI_Z 48 /* XGI Volari Z7 */ ++#define FB_ACCEL_OMAP1610 49 /* TI OMAP16xx */ ++#define FB_ACCEL_TRIDENT_TGUI 50 /* Trident TGUI */ ++#define FB_ACCEL_TRIDENT_3DIMAGE 51 /* Trident 3DImage */ ++#define FB_ACCEL_TRIDENT_BLADE3D 52 /* Trident Blade3D */ ++#define FB_ACCEL_TRIDENT_BLADEXP 53 /* Trident BladeXP */ ++#define FB_ACCEL_CIRRUS_ALPINE 53 /* Cirrus Logic 543x/544x/5480 */ ++#define FB_ACCEL_NEOMAGIC_NM2070 90 /* NeoMagic NM2070 */ ++#define FB_ACCEL_NEOMAGIC_NM2090 91 /* NeoMagic NM2090 */ ++#define FB_ACCEL_NEOMAGIC_NM2093 92 /* NeoMagic NM2093 */ ++#define FB_ACCEL_NEOMAGIC_NM2097 93 /* NeoMagic NM2097 */ ++#define FB_ACCEL_NEOMAGIC_NM2160 94 /* NeoMagic NM2160 */ ++#define FB_ACCEL_NEOMAGIC_NM2200 95 /* NeoMagic NM2200 */ ++#define FB_ACCEL_NEOMAGIC_NM2230 96 /* NeoMagic NM2230 */ ++#define FB_ACCEL_NEOMAGIC_NM2360 97 /* NeoMagic NM2360 */ ++#define FB_ACCEL_NEOMAGIC_NM2380 98 /* NeoMagic NM2380 */ ++#define FB_ACCEL_PXA3XX 99 /* PXA3xx */ ++ ++#define FB_ACCEL_SAVAGE4 0x80 /* S3 Savage4 */ ++#define FB_ACCEL_SAVAGE3D 0x81 /* S3 Savage3D */ ++#define FB_ACCEL_SAVAGE3D_MV 0x82 /* S3 Savage3D-MV */ ++#define FB_ACCEL_SAVAGE2000 0x83 /* S3 Savage2000 */ ++#define FB_ACCEL_SAVAGE_MX_MV 0x84 /* S3 Savage/MX-MV */ ++#define FB_ACCEL_SAVAGE_MX 0x85 /* S3 Savage/MX */ ++#define FB_ACCEL_SAVAGE_IX_MV 0x86 /* S3 Savage/IX-MV */ ++#define FB_ACCEL_SAVAGE_IX 0x87 /* S3 Savage/IX */ ++#define FB_ACCEL_PROSAVAGE_PM 0x88 /* S3 ProSavage PM133 */ ++#define FB_ACCEL_PROSAVAGE_KM 0x89 /* S3 ProSavage KM133 */ ++#define FB_ACCEL_S3TWISTER_P 0x8a /* S3 Twister */ ++#define FB_ACCEL_S3TWISTER_K 0x8b /* S3 TwisterK */ ++#define FB_ACCEL_SUPERSAVAGE 0x8c /* S3 Supersavage */ ++#define FB_ACCEL_PROSAVAGE_DDR 0x8d /* S3 ProSavage DDR */ ++#define FB_ACCEL_PROSAVAGE_DDRK 0x8e /* S3 ProSavage DDR-K */ ++ ++#define FB_ACCEL_PUV3_UNIGFX 0xa0 /* PKUnity-v3 Unigfx */ ++ ++#define FB_CAP_FOURCC 1 /* Device supports FOURCC-based formats */ + + struct fb_fix_screeninfo { + char id[16]; /* identification string eg "TT Builtin" */ +- char *smem_start; /* Start of frame buffer mem */ ++ unsigned long smem_start; /* Start of frame buffer mem */ + /* (physical address) */ + __u32 smem_len; /* Length of frame buffer mem */ + __u32 type; /* see FB_TYPE_* */ +@@ -90,18 +165,24 @@ struct fb_fix_screeninfo { + __u16 ypanstep; /* zero if no hardware panning */ + __u16 ywrapstep; /* zero if no hardware ywrap */ + __u32 line_length; /* length of a line in bytes */ +- char *mmio_start; /* Start of Memory Mapped I/O */ ++ unsigned long mmio_start; /* Start of Memory Mapped I/O */ + /* (physical address) */ + __u32 mmio_len; /* Length of Memory Mapped I/O */ +- __u32 accel; /* Type of acceleration available */ +- __u16 reserved[3]; /* Reserved for future compatibility */ ++ __u32 accel; /* Indicate to driver which */ ++ /* specific chip/card we have */ ++ __u16 capabilities; /* see FB_CAP_* */ ++ __u16 reserved[2]; /* Reserved for future compatibility */ + }; + + /* Interpretation of offset for color fields: All offsets are from the right, + * inside a "pixel" value, which is exactly 'bits_per_pixel' wide (means: you + * can use the offset as right argument to <<). A pixel afterwards is a bit +- * stream and is written to video memory as that unmodified. This implies +- * big-endian byte order if bits_per_pixel is greater than 8. ++ * stream and is written to video memory as that unmodified. ++ * ++ * For pseudocolor: offset and length should be the same for all color ++ * components. Offset specifies the position of the least significant bit ++ * of the pallette index in a pixel value. Length indicates the number ++ * of available palette entries (i.e. # of entries = 1 << length). + */ + struct fb_bitfield { + __u32 offset; /* beginning of bitfield */ +@@ -111,6 +192,7 @@ struct fb_bitfield { + }; + + #define FB_NONSTD_HAM 1 /* Hold-And-Modify (HAM) */ ++#define FB_NONSTD_REV_PIX_IN_B 2 /* order of pixels in each byte is reversed */ + + #define FB_ACTIVATE_NOW 0 /* set values immediately (or vbl)*/ + #define FB_ACTIVATE_NXTOPEN 1 /* activate on next open */ +@@ -120,8 +202,10 @@ struct fb_bitfield { + #define FB_ACTIVATE_VBL 16 /* activate values on next vbl */ + #define FB_CHANGE_CMAP_VBL 32 /* change colormap on vbl */ + #define FB_ACTIVATE_ALL 64 /* change all VCs on this fb */ ++#define FB_ACTIVATE_FORCE 128 /* force apply even when no change*/ ++#define FB_ACTIVATE_INV_MODE 256 /* invalidate videomode */ + +-#define FB_ACCELF_TEXT 1 /* text mode acceleration */ ++#define FB_ACCELF_TEXT 1 /* (OBSOLETE) see fb_info.flags and vc_mode */ + + #define FB_SYNC_HOR_HIGH_ACT 1 /* horizontal sync high active */ + #define FB_SYNC_VERT_HIGH_ACT 2 /* vertical sync high active */ +@@ -135,12 +219,24 @@ struct fb_bitfield { + #define FB_VMODE_NONINTERLACED 0 /* non interlaced */ + #define FB_VMODE_INTERLACED 1 /* interlaced */ + #define FB_VMODE_DOUBLE 2 /* double scan */ ++#define FB_VMODE_ODD_FLD_FIRST 4 /* interlaced: top line first */ + #define FB_VMODE_MASK 255 + + #define FB_VMODE_YWRAP 256 /* ywrap instead of panning */ + #define FB_VMODE_SMOOTH_XPAN 512 /* smooth xpan possible (internally used) */ + #define FB_VMODE_CONUPDATE 512 /* don't update x/yoffset */ + ++/* ++ * Display rotation support ++ */ ++#define FB_ROTATE_UR 0 ++#define FB_ROTATE_CW 1 ++#define FB_ROTATE_UD 2 ++#define FB_ROTATE_CCW 3 ++ ++#define PICOS2KHZ(a) (1000000000UL/(a)) ++#define KHZ2PICOS(a) (1000000000UL/(a)) ++ + struct fb_var_screeninfo { + __u32 xres; /* visible resolution */ + __u32 yres; +@@ -150,8 +246,8 @@ struct fb_var_screeninfo { + __u32 yoffset; /* resolution */ + + __u32 bits_per_pixel; /* guess what */ +- __u32 grayscale; /* != 0 Graylevels instead of colors */ +- ++ __u32 grayscale; /* 0 = color, 1 = grayscale, */ ++ /* >1 = FOURCC */ + struct fb_bitfield red; /* bitfield in fb mem if true color, */ + struct fb_bitfield green; /* else only length is significant */ + struct fb_bitfield blue; +@@ -164,7 +260,7 @@ struct fb_var_screeninfo { + __u32 height; /* height of picture in mm */ + __u32 width; /* width of picture in mm */ + +- __u32 accel_flags; /* acceleration flags (hints) */ ++ __u32 accel_flags; /* (OBSOLETE) see fb_info.flags */ + + /* Timing: All values in pixclocks, except pixclock (of course) */ + __u32 pixclock; /* pixel clock in ps (pico seconds) */ +@@ -176,7 +272,9 @@ struct fb_var_screeninfo { + __u32 vsync_len; /* length of vertical sync */ + __u32 sync; /* see FB_SYNC_* */ + __u32 vmode; /* see FB_VMODE_* */ +- __u32 reserved[6]; /* Reserved for future compatibility */ ++ __u32 rotate; /* angle we rotate counter clockwise */ ++ __u32 colorspace; /* colorspace for FOURCC-based modes */ ++ __u32 reserved[4]; /* Reserved for future compatibility */ + }; + + struct fb_cmap { +@@ -193,305 +291,112 @@ struct fb_con2fbmap { + __u32 framebuffer; + }; + +-struct fb_monspecs { +- __u32 hfmin; /* hfreq lower limit (Hz) */ +- __u32 hfmax; /* hfreq upper limit (Hz) */ +- __u16 vfmin; /* vfreq lower limit (Hz) */ +- __u16 vfmax; /* vfreq upper limit (Hz) */ +- unsigned dpms : 1; /* supports DPMS */ +-}; +- +-#ifdef __KERNEL__ +- +-#include +- +- +-struct fb_info; +-struct fb_info_gen; +-struct vm_area_struct; +-struct file; +- +- /* +- * Frame buffer operations +- */ +- +-struct fb_ops { +- /* open/release and usage marking */ +- int (*fb_open)(struct fb_info *info, int user); +- int (*fb_release)(struct fb_info *info, int user); +- /* get non settable parameters */ +- int (*fb_get_fix)(struct fb_fix_screeninfo *fix, int con, +- struct fb_info *info); +- /* get settable parameters */ +- int (*fb_get_var)(struct fb_var_screeninfo *var, int con, +- struct fb_info *info); +- /* set settable parameters */ +- int (*fb_set_var)(struct fb_var_screeninfo *var, int con, +- struct fb_info *info); +- /* get colormap */ +- int (*fb_get_cmap)(struct fb_cmap *cmap, int kspc, int con, +- struct fb_info *info); +- /* set colormap */ +- int (*fb_set_cmap)(struct fb_cmap *cmap, int kspc, int con, +- struct fb_info *info); +- /* pan display */ +- int (*fb_pan_display)(struct fb_var_screeninfo *var, int con, +- struct fb_info *info); +- /* perform fb specific ioctl */ +- int (*fb_ioctl)(struct inode *inode, struct file *file, unsigned int cmd, +- unsigned long arg, int con, struct fb_info *info); +- /* perform fb specific mmap */ +- int (*fb_mmap)(struct fb_info *info, struct file *file, struct vm_area_struct *vma); +- /* switch to/from raster image mode */ +- int (*fb_rasterimg)(struct fb_info *info, int start); +-}; +- +- +- /* +- * This is the interface between the low-level console driver and the +- * low-level frame buffer device +- */ +- +-struct display { +- /* Filled in by the frame buffer device */ +- +- struct fb_var_screeninfo var; /* variable infos. yoffset and vmode */ +- /* are updated by fbcon.c */ +- struct fb_cmap cmap; /* colormap */ +- char *screen_base; /* pointer to top of virtual screen */ +- /* (virtual address) */ +- int visual; +- int type; /* see FB_TYPE_* */ +- int type_aux; /* Interleave for interleaved Planes */ +- u_short ypanstep; /* zero if no hardware ypan */ +- u_short ywrapstep; /* zero if no hardware ywrap */ +- u_long line_length; /* length of a line in bytes */ +- u_short can_soft_blank; /* zero if no hardware blanking */ +- u_short inverse; /* != 0 text black on white as default */ +- struct display_switch *dispsw; /* low level operations */ +- void *dispsw_data; /* optional dispsw helper data */ +- +-#if 0 +- struct fb_fix_cursorinfo fcrsr; +- struct fb_var_cursorinfo *vcrsr; +- struct fb_cursorstate crsrstate; +-#endif +- +- /* Filled in by the low-level console driver */ +- +- struct vc_data *conp; /* pointer to console data */ +- struct fb_info *fb_info; /* frame buffer for this console */ +- int vrows; /* number of virtual rows */ +- unsigned short cursor_x; /* current cursor position */ +- unsigned short cursor_y; +- int fgcol; /* text colors */ +- int bgcol; +- u_long next_line; /* offset to one line below */ +- u_long next_plane; /* offset to next plane */ +- u_char *fontdata; /* Font associated to this display */ +- unsigned short _fontheightlog; +- unsigned short _fontwidthlog; +- unsigned short _fontheight; +- unsigned short _fontwidth; +- int userfont; /* != 0 if fontdata kmalloc()ed */ +- u_short scrollmode; /* Scroll Method */ +- short yscroll; /* Hardware scrolling */ +- unsigned char fgshift, bgshift; +- unsigned short charmask; /* 0xff or 0x1ff */ +-}; +- +- +-struct fb_info { +- char modename[40]; /* default video mode */ +- kdev_t node; +- int flags; +-#define FBINFO_FLAG_MODULE 1 /* Low-level driver is a module */ +- struct fb_ops *fbops; +- struct fb_monspecs monspecs; +- struct display *disp; /* initial display variable */ +- struct vc_data *display_fg; /* Console visible on this display */ +- char fontname[40]; /* default font name */ +- int (*changevar)(int); /* tell console var has changed */ +- int (*switch_con)(int, struct fb_info*); +- /* tell fb to switch consoles */ +- int (*updatevar)(int, struct fb_info*); +- /* tell fb to update the vars */ +- void (*blank)(int, struct fb_info*); /* tell fb to (un)blank the screen */ +- /* arg = 0: unblank */ +- /* arg > 0: VESA level (arg-1) */ +- +- /* From here on everything is device dependent */ +-}; +- +-#ifdef MODULE +-#define FBINFO_FLAG_DEFAULT FBINFO_FLAG_MODULE +-#else +-#define FBINFO_FLAG_DEFAULT 0 +-#endif +- +- /* +- * This structure abstracts from the underlying hardware. It is not +- * mandatory but used by the `generic' frame buffer operations. +- * Read drivers/video/skeletonfb.c for more information. +- */ +- +-struct fbgen_hwswitch { +- void (*detect)(void); +- int (*encode_fix)(struct fb_fix_screeninfo *fix, const void *par, +- struct fb_info_gen *info); +- int (*decode_var)(const struct fb_var_screeninfo *var, void *par, +- struct fb_info_gen *info); +- int (*encode_var)(struct fb_var_screeninfo *var, const void *par, +- struct fb_info_gen *info); +- void (*get_par)(void *par, struct fb_info_gen *info); +- void (*set_par)(const void *par, struct fb_info_gen *info); +- int (*getcolreg)(unsigned regno, unsigned *red, unsigned *green, +- unsigned *blue, unsigned *transp, struct fb_info *info); +- int (*setcolreg)(unsigned regno, unsigned red, unsigned green, +- unsigned blue, unsigned transp, struct fb_info *info); +- int (*pan_display)(const struct fb_var_screeninfo *var, +- struct fb_info_gen *info); +- int (*blank)(int blank_mode, struct fb_info_gen *info); +- void (*set_disp)(const void *par, struct display *disp, +- struct fb_info_gen *info); +-}; +- +-struct fb_info_gen { +- struct fb_info info; +- +- /* Entries for a generic frame buffer device */ +- /* Yes, this starts looking like C++ */ +- u_int parsize; +- struct fbgen_hwswitch *fbhw; +- +- /* From here on everything is device dependent */ +-}; +- +- /* +- * `Generic' versions of the frame buffer device operations +- */ +- +-extern int fbgen_get_fix(struct fb_fix_screeninfo *fix, int con, +- struct fb_info *info); +-extern int fbgen_get_var(struct fb_var_screeninfo *var, int con, +- struct fb_info *info); +-extern int fbgen_set_var(struct fb_var_screeninfo *var, int con, +- struct fb_info *info); +-extern int fbgen_get_cmap(struct fb_cmap *cmap, int kspc, int con, +- struct fb_info *info); +-extern int fbgen_set_cmap(struct fb_cmap *cmap, int kspc, int con, +- struct fb_info *info); +-extern int fbgen_pan_display(struct fb_var_screeninfo *var, int con, +- struct fb_info *info); +-extern int fbgen_ioctl(struct inode *inode, struct file *file, +- unsigned int cmd, unsigned long arg, int con, +- struct fb_info *info); +- +- /* +- * Helper functions +- */ +- +-extern int fbgen_do_set_var(struct fb_var_screeninfo *var, int isactive, +- struct fb_info_gen *info); +-extern void fbgen_set_disp(int con, struct fb_info_gen *info); +-extern void fbgen_install_cmap(int con, struct fb_info_gen *info); +-extern int fbgen_update_var(int con, struct fb_info *info); +-extern int fbgen_switch(int con, struct fb_info *info); +-extern void fbgen_blank(int blank, struct fb_info *info); +- +- +-struct fb_videomode { +- const char *name; +- struct fb_var_screeninfo var; +-}; +- +- +-/* drivers/char/fbmem.c */ +-extern int register_framebuffer(struct fb_info *fb_info); +-extern int unregister_framebuffer(const struct fb_info *fb_info); +-extern int fbmon_valid_timings(u_int pixclock, u_int htotal, u_int vtotal, +- const struct fb_info *fb_info); +-extern int fbmon_dpms(const struct fb_info *fb_info); +- +- +-extern int num_registered_fb; +-extern struct fb_info *registered_fb[FB_MAX]; +-extern char con2fb_map[MAX_NR_CONSOLES]; +- +-/* drivers/video/fbcon.c */ +-extern struct display fb_display[MAX_NR_CONSOLES]; +- +-/* drivers/video/fbcmap.c */ +-extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp); +-extern void fb_copy_cmap(struct fb_cmap *from, struct fb_cmap *to, +- int fsfromto); +-extern int fb_get_cmap(struct fb_cmap *cmap, int kspc, +- int (*getcolreg)(u_int, u_int *, u_int *, u_int *, +- u_int *, struct fb_info *), +- struct fb_info *fb_info); +-extern int fb_set_cmap(struct fb_cmap *cmap, int kspc, +- int (*setcolreg)(u_int, u_int, u_int, u_int, u_int, +- struct fb_info *), +- struct fb_info *fb_info); +-extern struct fb_cmap *fb_default_cmap(int len); +-extern void fb_invert_cmaps(void); +- + /* VESA Blanking Levels */ +-#define VESA_NO_BLANKING 0 +-#define VESA_VSYNC_SUSPEND 1 +-#define VESA_HSYNC_SUSPEND 2 +-#define VESA_POWERDOWN 3 +- +-#endif /* __KERNEL__ */ +- +-#if 1 +- +-#define FBCMD_GET_CURRENTPAR 0xDEAD0005 +-#define FBCMD_SET_CURRENTPAR 0xDEAD8005 +- +-#endif +- +- +-#if 1 /* Preliminary */ +- +- /* +- * Hardware Cursor +- */ +- +-#define FBIOGET_FCURSORINFO 0x4607 +-#define FBIOGET_VCURSORINFO 0x4608 +-#define FBIOPUT_VCURSORINFO 0x4609 +-#define FBIOGET_CURSORSTATE 0x460A +-#define FBIOPUT_CURSORSTATE 0x460B +- +- +-struct fb_fix_cursorinfo { +- __u16 crsr_width; /* width and height of the cursor in */ +- __u16 crsr_height; /* pixels (zero if no cursor) */ +- __u16 crsr_xsize; /* cursor size in display pixels */ +- __u16 crsr_ysize; +- __u16 crsr_color1; /* colormap entry for cursor color1 */ +- __u16 crsr_color2; /* colormap entry for cursor color2 */ +-}; +- +-struct fb_var_cursorinfo { +- __u16 width; +- __u16 height; +- __u16 xspot; +- __u16 yspot; +- __u8 data[1]; /* field with [height][width] */ ++#define VESA_NO_BLANKING 0 ++#define VESA_VSYNC_SUSPEND 1 ++#define VESA_HSYNC_SUSPEND 2 ++#define VESA_POWERDOWN 3 ++ ++ ++enum { ++ /* screen: unblanked, hsync: on, vsync: on */ ++ FB_BLANK_UNBLANK = VESA_NO_BLANKING, ++ ++ /* screen: blanked, hsync: on, vsync: on */ ++ FB_BLANK_NORMAL = VESA_NO_BLANKING + 1, ++ ++ /* screen: blanked, hsync: on, vsync: off */ ++ FB_BLANK_VSYNC_SUSPEND = VESA_VSYNC_SUSPEND + 1, ++ ++ /* screen: blanked, hsync: off, vsync: on */ ++ FB_BLANK_HSYNC_SUSPEND = VESA_HSYNC_SUSPEND + 1, ++ ++ /* screen: blanked, hsync: off, vsync: off */ ++ FB_BLANK_POWERDOWN = VESA_POWERDOWN + 1 ++}; ++ ++#define FB_VBLANK_VBLANKING 0x001 /* currently in a vertical blank */ ++#define FB_VBLANK_HBLANKING 0x002 /* currently in a horizontal blank */ ++#define FB_VBLANK_HAVE_VBLANK 0x004 /* vertical blanks can be detected */ ++#define FB_VBLANK_HAVE_HBLANK 0x008 /* horizontal blanks can be detected */ ++#define FB_VBLANK_HAVE_COUNT 0x010 /* global retrace counter is available */ ++#define FB_VBLANK_HAVE_VCOUNT 0x020 /* the vcount field is valid */ ++#define FB_VBLANK_HAVE_HCOUNT 0x040 /* the hcount field is valid */ ++#define FB_VBLANK_VSYNCING 0x080 /* currently in a vsync */ ++#define FB_VBLANK_HAVE_VSYNC 0x100 /* verical syncs can be detected */ ++ ++struct fb_vblank { ++ __u32 flags; /* FB_VBLANK flags */ ++ __u32 count; /* counter of retraces since boot */ ++ __u32 vcount; /* current scanline position */ ++ __u32 hcount; /* current scandot position */ ++ __u32 reserved[4]; /* reserved for future compatibility */ ++}; ++ ++/* Internal HW accel */ ++#define ROP_COPY 0 ++#define ROP_XOR 1 ++ ++struct fb_copyarea { ++ __u32 dx; ++ __u32 dy; ++ __u32 width; ++ __u32 height; ++ __u32 sx; ++ __u32 sy; ++}; ++ ++struct fb_fillrect { ++ __u32 dx; /* screen-relative */ ++ __u32 dy; ++ __u32 width; ++ __u32 height; ++ __u32 color; ++ __u32 rop; ++}; ++ ++struct fb_image { ++ __u32 dx; /* Where to place image */ ++ __u32 dy; ++ __u32 width; /* Size of image */ ++ __u32 height; ++ __u32 fg_color; /* Only used when a mono bitmap */ ++ __u32 bg_color; ++ __u8 depth; /* Depth of the image */ ++ const char *data; /* Pointer to image data */ ++ struct fb_cmap cmap; /* color map info */ + }; + +-struct fb_cursorstate { +- __s16 xoffset; +- __s16 yoffset; +- __u16 mode; +-}; ++/* ++ * hardware cursor control ++ */ + +-#define FB_CURSOR_OFF 0 +-#define FB_CURSOR_ON 1 +-#define FB_CURSOR_FLASH 2 ++#define FB_CUR_SETIMAGE 0x01 ++#define FB_CUR_SETPOS 0x02 ++#define FB_CUR_SETHOT 0x04 ++#define FB_CUR_SETCMAP 0x08 ++#define FB_CUR_SETSHAPE 0x10 ++#define FB_CUR_SETSIZE 0x20 ++#define FB_CUR_SETALL 0xFF ++ ++struct fbcurpos { ++ __u16 x, y; ++}; ++ ++struct fb_cursor { ++ __u16 set; /* what to set */ ++ __u16 enable; /* cursor on/off */ ++ __u16 rop; /* bitop operation */ ++ const char *mask; /* cursor mask bits */ ++ struct fbcurpos hot; /* cursor hot spot */ ++ struct fb_image image; /* Cursor image */ ++}; ++ ++#ifdef CONFIG_FB_BACKLIGHT ++/* Settings for the generic backlight code */ ++#define FB_BACKLIGHT_LEVELS 128 ++#define FB_BACKLIGHT_MAX 0xFF ++#endif + +-#endif /* Preliminary */ + +-#endif /* _LINUX_FB_H */ ++#endif /* _UAPI_LINUX_FB_H */ +--- + etc/fb.modes.ATI | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 77 insertions(+), 7 deletions(-) + +--- a/etc/fb.modes.ATI ++++ b/etc/fb.modes.ATI +@@ -6,6 +6,8 @@ + # Mach64 Programmer's Guide, Appendix C + # (C) 1998 ATI Technologies Inc. + # ++# Kop: this are very generic modes and not only for ATI cards. ++# + + # + # 640x480, 60 Hz, Non-Interlaced (25.175 MHz dotclock) +@@ -132,6 +134,36 @@ mode "640x480-100" + timings 22272 48 32 17 22 128 12 + endmode + ++ ++# ++# 768x576, 75 Hz, Non-Interlaced (49.188 MHz dotclock) ++# ++# Horizontal Vertical ++# Resolution 768 576 ++# Scan Frequency 46.580 kHz 75.008 Hz ++# Sync Width us ms ++# chars lines ++# Front Porch us ms ++# chars lines ++# Back Porch us ms ++# chars lines ++# Active Time us ms ++# chars lines ++# Blank Time us ms ++# chars lines ++# Polarity negative negative ++# ++# This is a mode often used, because fbtv suggests this, since ++# this is the mode for "normal" TVs. ++# ++ ++mode "768x576-75" ++ # D: 49.188 MHz, H: 46.580 kHz, V: 75.008 Hz ++ geometry 768 576 768 576 32 ++ timings 20330 128 32 32 8 128 5 ++endmode ++ ++ + # + # 800x600, 48 Hz, Interlaced (36.00 MHz dotclock) + # +@@ -430,7 +462,7 @@ endmode + # 1024x768, 72 Hz, Non-Interlaced (75.00 MHz dotclock) + # + # Horizontal Vertical +-# Resolution 10224 768 ++# Resolution 1024 768 + # Scan Frequency 58.230 kHz 72.245 Hz + # Sync Width 1.813 us 0.103 ms + # 17 chars 6 lines +@@ -447,7 +479,7 @@ endmode + + mode "1024x768-72" + # D: 75.00 MHz, H: 58.230 kHz, V: 72.245 Hz +- geometry 10224 768 10224 768 8 ++ geometry 1024 768 1024 768 8 + timings 13334 104 24 29 3 136 6 + endmode + +@@ -691,7 +723,45 @@ mode "1152x864-80" + hsync high + vsync high + endmode +- ++ ++# ++# 1280x960, 75 Hz, Non-Interlaced (126.00 MHz dotclock) ++# ++# Horizontal Vertical ++# Resolution 1280 960 ++# Scan Frequency 74.788 kHz 74.788 Hz ++# Sync Width 1.018 us 0.092 ms ++# 14 chars 7 lines ++# Front Porch 0.127 us 0.393 ms ++# 2 chars 30 lines ++# Back Porch 1.473 us 0.747 ms ++# 20 chars 57 lines ++# Active Time 10.473 us 11.311 ms ++# 144 chars 864 lines ++# Blank Time 2.618 us 1.231 ms ++# 36 chars 94 lines ++# Polarity positive positive ++# ++ ++mode "1280x960-75-8" ++ # D: 125.644 MHz, H: 74.788 kHz, V: 74.788 Hz ++ geometry 1280 960 1280 960 8 ++ timings 7959 224 32 36 1 144 3 ++endmode ++ ++mode "1280x960-75" ++ # D: 125.644 MHz, H: 74.788 kHz, V: 74.788 Hz ++ geometry 1280 960 1280 960 16 ++ timings 7959 224 32 36 1 144 3 ++endmode ++ ++mode "1280x960-75-32" ++ # D: 125.644 MHz, H: 74.788 kHz, V: 74.788 Hz ++ geometry 1280 960 1280 960 32 ++ timings 7959 224 32 36 1 144 3 ++endmode ++ ++ + # + # 1280x1024, 43 Hz, Interlaced (80.00 MHz dotclock) + # +@@ -849,13 +919,13 @@ endmode + # + + mode "1280x1024-75" +- # D: 135.00 MHz, H: 79.976 kHz, V: 75.02 Hz +- geometry 1280 1024 1280 1024 8 +- timings 7408 248 16 38 1 144 3 ++ # D: 134.880 MHz, H: 79.905 kHz, V: 74.958 Hz ++ geometry 1280 1024 1280 3264 8 ++ timings 7414 232 64 38 1 112 3 + hsync high + vsync high + endmode +- ++ + # + # 1600x1200, 60 Hz, Non-Interlaced (156.00 MHz dotclock) + # +--- + con2fbmap.1 | 29 ++++++++++++++++++++++++++ + con2fbmap.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 95 insertions(+) + +--- /dev/null ++++ b/con2fbmap.1 +@@ -0,0 +1,29 @@ ++.TH con2fbmap 1 2006-01-18 2.1 "Linux frame buffer utils" ++.SH NAME ++con2fbmap \- shows and sets mapping between consoles and framebuffer devices. ++.SH SYNOPSIS ++.B con2fbmap ++.RI console ++.RI [ framebuffer ] ++.SH DESCRIPTION ++.B This documentation is not finished ++.PP ++.B con2fbmap ++is a system utility to show or change the mapping of the consoles to the ++frame buffer device. The frame buffer device provides a simple and unique ++interface to access different kinds of graphic displays. ++.PP ++Frame buffer devices are accessed via special device nodes located in the ++/dev directory. The naming scheme for these nodes is always ++.IR \fBfb < n >, ++where ++.I n ++is the number of the used frame buffer device. ++.PP ++.SH OPTIONS ++The first option must be there, and identify the console on which to work. ++If the second option is not set, con2fbmap shows the current mapping of ++identified console. If the second argument is given (as a number) con2fbmap ++maps the identified console to said framebuffer device. ++.TP ++Sven LUTHER +--- /dev/null ++++ b/con2fbmap.c +@@ -0,0 +1,66 @@ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define DEFAULT_FRAMEBUFFER "/dev/fb0" ++#define DEFAULT_FRAMEBUFFER_DEVFS "/dev/fb/0" ++ ++const char *programname; ++ ++void Usage(void) ++{ ++ fprintf(stderr, "\nUsage: %s console [framebuffer]\n\n", programname); ++ exit(1); ++} ++ ++int main(int argc, char *argv[]) ++{ ++ int do_write = 0; ++ char *fbpath; /* any frame buffer will do */ ++ int fd; ++ struct fb_con2fbmap map; ++ ++ programname = argv[0]; ++ switch (argc) { ++ case 3: ++ do_write = 1; ++ map.framebuffer = atoi(argv[2]); ++ case 2: ++ map.console = atoi(argv[1]); ++ break; ++ default: ++ Usage(); ++ } ++ ++ if (access("/dev/.devfsd", F_OK) == 0) /* devfs detected */ ++ fbpath = DEFAULT_FRAMEBUFFER_DEVFS; ++ else ++ fbpath = DEFAULT_FRAMEBUFFER; ++ ++ if ((fd = open(fbpath, O_RDONLY)) == -1) { ++ fprintf(stderr, "open %s: %s\n", fbpath, strerror(errno)); ++ exit(1); ++ } ++ if (do_write) { ++ if (ioctl(fd, FBIOPUT_CON2FBMAP, &map)) { ++ fprintf(stderr, "ioctl FBIOPUT_CON2FBMAP: %s\n", strerror(errno)); ++ exit(1); ++ } ++ } else { ++ if (ioctl(fd, FBIOGET_CON2FBMAP, &map)) { ++ fprintf(stderr, "ioctl FBIOGET_CON2FBMAP: %s\n", strerror(errno)); ++ exit(1); ++ } ++ printf("console %d is mapped to framebuffer %d\n", map.console, ++ map.framebuffer); ++ } ++ close(fd); ++ exit(0); ++} +--- + fbset.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/fbset.c ++++ b/fbset.c +@@ -710,7 +710,7 @@ static void DisplayFBInfo(struct fb_fix_ + + puts("Frame buffer device information:"); + printf(" Name : %s\n", fix->id); +- printf(" Address : %p\n", fix->smem_start); ++ printf(" Address : %#0lx\n", fix->smem_start); + printf(" Size : %d\n", fix->smem_len); + printf(" Type : "); + switch (fix->type) { +@@ -780,7 +780,7 @@ static void DisplayFBInfo(struct fb_fix_ + printf(" YWrapStep : %d\n", fix->ywrapstep); + printf(" LineLength : %d\n", fix->line_length); + if (fix->mmio_len) { +- printf(" MMIO Address: %p\n", fix->mmio_start); ++ printf(" MMIO Address: %#0lx\n", fix->mmio_start); + printf(" MMIO Size : %d\n", fix->mmio_len); + } + printf(" Accelerator : "); +--- + fbset.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/fbset.c ++++ b/fbset.c +@@ -832,7 +832,8 @@ static int FillScanRates(struct VideoMod + static void Usage(void) + { + puts(VERSION); +- Die("\nUsage: %s [options] [mode]\n\n" ++ printf( ++ "\nUsage: %s [options] [mode]\n\n" + "Valid options:\n" + " General options:\n" + " -h, --help : display this usage information\n" +@@ -887,6 +888,7 @@ static void Usage(void) + " -step : step increment (in pixels or pixel lines)\n" + " (default is 8 horizontal, 2 vertical)\n", + ProgramName); ++ exit(0); + } + + +--- + fbset.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 54 insertions(+) + +--- a/fbset.c ++++ b/fbset.c +@@ -199,6 +199,60 @@ static struct accelentry { + { FB_ACCEL_SUN_CGTHREE, "Sun cg3" }, + { FB_ACCEL_SUN_TCX, "Sun tcx" }, + { FB_ACCEL_MATROX_MGAG400, "Matrox G400" }, ++ { FB_ACCEL_NV3, "nVidia RIVA 128" }, ++ { FB_ACCEL_NV4, "nVidia RIVA TNT" }, ++ { FB_ACCEL_NV5, "nVidia RIVA TNT2" }, ++ { FB_ACCEL_CT_6555x, "C&T 6555x" }, ++ { FB_ACCEL_3DFX_BANSHEE, "3Dfx Banshee" }, ++ { FB_ACCEL_ATI_RAGE128, "ATI Rage128 family" }, ++ { FB_ACCEL_ATI_RADEON, "ATI Radeon family" }, ++ { FB_ACCEL_IGS_CYBER2000, "CyberPro 2000" }, ++ { FB_ACCEL_IGS_CYBER2010, "CyberPro 2010" }, ++ { FB_ACCEL_IGS_CYBER5000, "CyberPro 5000" }, ++ { FB_ACCEL_SIS_GLAMOUR, "SiS 300/630/540" }, ++ { FB_ACCEL_SIS_GLAMOUR_2, "SiS 315/650/740" }, ++ { FB_ACCEL_SIS_XABRE, "SiS 330 (Xabre)" }, ++ { FB_ACCEL_3DLABS_PERMEDIA3, "3Dlabs Permedia 3" }, ++ { FB_ACCEL_I810, "Intel 810/815" }, ++ { FB_ACCEL_I830, "Intel 830M/845G/85x/865G" }, ++ { FB_ACCEL_NEOMAGIC_NM2070, "NeoMagic NM2070" }, ++ { FB_ACCEL_NEOMAGIC_NM2090, "NeoMagic NM2090" }, ++ { FB_ACCEL_NEOMAGIC_NM2093, "NeoMagic NM2093" }, ++ { FB_ACCEL_NEOMAGIC_NM2097, "NeoMagic NM2097" }, ++ { FB_ACCEL_NEOMAGIC_NM2160, "NeoMagic NM2160" }, ++ { FB_ACCEL_NEOMAGIC_NM2200, "NeoMagic NM2200" }, ++ { FB_ACCEL_NEOMAGIC_NM2230, "NeoMagic NM2230" }, ++ { FB_ACCEL_NEOMAGIC_NM2360, "NeoMagic NM2360" }, ++ { FB_ACCEL_NEOMAGIC_NM2380, "NeoMagic NM2380" }, ++ { FB_ACCEL_PXA3XX, "PXA3xx" }, ++ { FB_ACCEL_SAVAGE4, "S3 Savage4" }, ++ { FB_ACCEL_SAVAGE3D, "S3 Savage3D" }, ++ { FB_ACCEL_SAVAGE3D_MV, "S3 Savage3D-MV" }, ++ { FB_ACCEL_SAVAGE2000, "S3 Savage2000" }, ++ { FB_ACCEL_SAVAGE_MX_MV, "S3 Savage/MX-MV" }, ++ { FB_ACCEL_SAVAGE_MX, "S3 Savage/MX" }, ++ { FB_ACCEL_SAVAGE_IX_MV, "S3 Savage/IX-MV" }, ++ { FB_ACCEL_SAVAGE_IX, "S3 Savage/IX" }, ++ { FB_ACCEL_PROSAVAGE_PM, "S3 ProSavage PM133" }, ++ { FB_ACCEL_PROSAVAGE_KM, "S3 ProSavage KM133" }, ++ { FB_ACCEL_S3TWISTER_P, "S3 Twister" }, ++ { FB_ACCEL_S3TWISTER_K, "S3 TwisterK" }, ++ { FB_ACCEL_SUPERSAVAGE, "S3 Supersavage" }, ++ { FB_ACCEL_PROSAVAGE_DDR, "S3 ProSavage DDR" }, ++ { FB_ACCEL_PROSAVAGE_DDRK, "S3 ProSavage DDR-K" }, ++ { FB_ACCEL_PUV3_UNIGFX, "PKUnity-v3 Unigfx" }, ++ { FB_ACCEL_NV_10, "nVidia Arch 10" }, ++ { FB_ACCEL_NV_20, "nVidia Arch 20" }, ++ { FB_ACCEL_NV_30, "nVidia Arch 30" }, ++ { FB_ACCEL_NV_40, "nVidia Arch 40" }, ++ { FB_ACCEL_XGI_VOLARI_V, "XGI Volari V3XT, V5, V8" }, ++ { FB_ACCEL_XGI_VOLARI_Z, "XGI Volari Z7" }, ++ { FB_ACCEL_OMAP1610, "TI OMAP16xx" }, ++ { FB_ACCEL_TRIDENT_TGUI, "Trident TGUI" }, ++ { FB_ACCEL_TRIDENT_3DIMAGE, "Trident 3DImage" }, ++ { FB_ACCEL_TRIDENT_BLADE3D, "Trident Blade3D" }, ++ { FB_ACCEL_TRIDENT_BLADEXP, "Trident BladeXP" }, ++ { FB_ACCEL_CIRRUS_ALPINE, "Cirrus Logic 543x/544x/5480" }, + }; + + +--- + modes.l | 6 ++++++ + modes.y | 4 ++-- + 2 files changed, 8 insertions(+), 2 deletions(-) + +--- a/modes.l ++++ b/modes.l +@@ -99,6 +99,7 @@ static const char *CopyString(const char + + keyword [a-zA-Z][a-zA-Z0-9]* + number [0-9]* ++colors [0-9/,]* + string \"[^\"\n]*\" + comment \#([^\n]*) + space [ \t]+ +@@ -115,6 +116,11 @@ junk . + return NUMBER; + } + ++{colors} { ++ yylval = (unsigned long)CopyString(yytext); ++ return COLORS; ++ } ++ + {string} { + yylval = (unsigned long)CopyString(yytext); + return STRING; +--- a/modes.y ++++ b/modes.y +@@ -42,7 +42,7 @@ static void ClearVideoMode(void) + + %token MODE GEOMETRY TIMINGS HSYNC VSYNC CSYNC GSYNC EXTSYNC BCAST LACED DOUBLE + RGBA NONSTD ACCEL GRAYSCALE +- ENDMODE POLARITY BOOLEAN STRING NUMBER ++ ENDMODE POLARITY BOOLEAN STRING NUMBER COLORS + + %% + +@@ -148,7 +148,7 @@ double : DOUBLE BOOLEAN + } + ; + +-rgba : RGBA STRING ++rgba : RGBA COLORS + { + makeRGBA(&VideoMode, (const char*)$2); + } +--- + Makefile | 88 +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 53 insertions(+), 35 deletions(-) + +--- a/Makefile ++++ b/Makefile +@@ -2,40 +2,58 @@ + # Linux Frame Buffer Device Configuration + # + +-CC = gcc -Wall -O2 -I. +-BISON = bison -d +-FLEX = flex +-INSTALL = install +-RM = rm -f +- +-All: fbset +- +- +-fbset: fbset.o modes.tab.o lex.yy.o +- +-fbset.o: fbset.c fbset.h fb.h +-modes.tab.o: modes.tab.c fbset.h fb.h +-lex.yy.o: lex.yy.c fbset.h modes.tab.h +- +-lex.yy.c: modes.l +- $(FLEX) modes.l +- +-modes.tab.c: modes.y +- $(BISON) modes.y +- +-install: fbset +- if [ -f /sbin/fbset ]; then rm /sbin/fbset; fi +- $(INSTALL) fbset /usr/sbin +- $(INSTALL) fbset.8 /usr/man/man8 +- $(INSTALL) fb.modes.5 /usr/man/man5 +- if [ ! -c /dev/fb0 ]; then mknod /dev/fb0 c 29 0; fi +- if [ ! -c /dev/fb1 ]; then mknod /dev/fb1 c 29 32; fi +- if [ ! -c /dev/fb2 ]; then mknod /dev/fb2 c 29 64; fi +- if [ ! -c /dev/fb3 ]; then mknod /dev/fb3 c 29 96; fi +- if [ ! -c /dev/fb4 ]; then mknod /dev/fb4 c 29 128; fi +- if [ ! -c /dev/fb5 ]; then mknod /dev/fb5 c 29 160; fi +- if [ ! -c /dev/fb6 ]; then mknod /dev/fb6 c 29 192; fi +- if [ ! -c /dev/fb7 ]; then mknod /dev/fb7 c 29 224; fi ++srcdir = . ++ ++CC = gcc ++CFLAGS = -Wall -O2 -static --static ++BISON = bison -d ++FLEX = flex ++INSTALL = install ++INSTALL_PROGRAM = $(INSTALL) -m 755 ++INSTALL_DATA = $(INSTALL) -m 644 ++RM = rm -f ++ ++all: fbset con2fbmap ++ ++fbset: fbset.o modes.tab.o lex.yy.o ++ ++fbset.o: fbset.c fbset.h fb.h ++modes.tab.o: modes.tab.c fbset.h fb.h ++lex.yy.o: lex.yy.c fbset.h modes.tab.h ++ ++lex.yy.c: modes.l ++ $(FLEX) $< ++ ++modes.tab.c modes.tab.h: modes.y ++ $(BISON) $< ++ ++con2fbmap: con2fbmap.o ++con2fbmap.o: con2fbmap.c ++ ++install: fbset ++ $(INSTALL) -d $(DESTDIR)/etc ++ $(INSTALL) -d $(DESTDIR)/bin ++ $(INSTALL) -d $(DESTDIR)/usr/share/man/man1 ++ $(INSTALL) -d $(DESTDIR)/usr/share/man/man5 ++ $(INSTALL_DATA) $(srcdir)/etc/fb.modes.ATI $(DESTDIR)/etc/fb.modes ++ $(INSTALL_DATA) $(srcdir)/fb.modes.5 $(DESTDIR)/usr/share/man/man5 ++ $(INSTALL_PROGRAM) fbset $(DESTDIR)/bin ++ $(INSTALL_DATA) $(srcdir)/fbset.8 $(DESTDIR)/usr/share/man/man1/fbset.1 ++ $(INSTALL_PROGRAM) $(srcdir)/modeline2fb $(DESTDIR)/bin ++ $(INSTALL_DATA) $(srcdir)/modeline2fb.1 $(DESTDIR)/usr/share/man/man1 ++ $(INSTALL_PROGRAM) con2fbmap $(DESTDIR)/bin ++ $(INSTALL_DATA) $(srcdir)/con2fbmap.1 $(DESTDIR)/usr/share/man/man1 ++ ++install-devices: ++ if [ ! -c /dev/fb0 ]; then mknod $(DESTDIR)/dev/fb0 c 29 0; fi ++ if [ ! -c /dev/fb1 ]; then mknod $(DESTDIR)/dev/fb1 c 29 32; fi ++ if [ ! -c /dev/fb2 ]; then mknod $(DESTDIR)/dev/fb2 c 29 64; fi ++ if [ ! -c /dev/fb3 ]; then mknod $(DESTDIR)/dev/fb3 c 29 96; fi ++ if [ ! -c /dev/fb4 ]; then mknod $(DESTDIR)/dev/fb4 c 29 128; fi ++ if [ ! -c /dev/fb5 ]; then mknod $(DESTDIR)/dev/fb5 c 29 160; fi ++ if [ ! -c /dev/fb6 ]; then mknod $(DESTDIR)/dev/fb6 c 29 192; fi ++ if [ ! -c /dev/fb7 ]; then mknod $(DESTDIR)/dev/fb7 c 29 224; fi + + clean: +- $(RM) *.o fbset lex.yy.c modes.tab.c modes.tab.h ++ $(RM) *.o fbset con2fbmap lex.yy.c modes.tab.c modes.tab.h ++ +--- + fb.modes.5 | 38 +++++++++++++++++++++++++++++++++++++- + fbset.8 | 41 ++++++++++++++++++++++++++++++----------- + modeline2fb.1 | 40 ++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 107 insertions(+), 12 deletions(-) + +--- a/fb.modes.5 ++++ b/fb.modes.5 +@@ -1,4 +1,4 @@ +-.TH fb.modes 8 "Aug 1996" local "Linux frame buffer utils" ++.TH fb.modes 5 2003-08-07 2.1 "Linux frame buffer utils" + .SH NAME + fb.modes \- frame buffer modes file + .SH DESCRIPTION +@@ -27,6 +27,9 @@ timings + .br + .B options + .RI < value > ++.br ++.B rgba ++.RI < red , green , blue , alpha > + .RE + endmode + .SH OPTIONS +@@ -74,6 +77,22 @@ horizontal sync length (in pixels) + vertical sync length (in pixel lines) + .RE + .PP ++rgba options (only valid with truecolor): ++.RS ++.TP ++.I red ++red color bitfields (in length or length/offset) ++.TP ++.I green ++green color bitfields (in length or length/offset) ++.TP ++.I blue ++blue color bitfields (in length or length/offset) ++.TP ++.I alpha ++alpha color bitfields (in length or length/offset) ++.RE ++.PP + other options: + .RS + the first value of this options is the default +@@ -87,6 +106,14 @@ the vertical sync polarity + .IR \fBcsync "\ {" low | high } + the composite sync polarity + .TP ++.IR \fBgsync "\ {" low | high } ++the sync on green polarity ++.TP ++.IR \fBbcast "\ {" false | true } ++enable or disable broadcast modes. If enabled the frame buffer generates ++the exact timings fot several broadcast modes (e.g. PAL or NTSC). Note that ++this option may not be supported by every frame buffer ++.TP + .IR \fBextsync "\ {" false | true } + enable or disable external resync. If enabled the sync timings are not + generated by the frame buffer device and must be provided externally +@@ -106,6 +133,15 @@ and this way the horizontal frequency ca + same resolution can be displayed on different monitors, even if the + horizontal frequency specification differs. Note that this option may not be + supported by every frame buffer device ++.TP ++.IR \fBnostd "\ <" number > ++select nonstandard video mode ++.TP ++.IR \fBaccel "\ {" false | true } ++enable or disable hardware text acceleration ++.TP ++.IR \fBgrayscale "\ {" false | true } ++enable or disable graylevels instead of colors + .RE + .SH INTERNALS + Generally a frame buffer display is organized as follows: +--- a/fbset.8 ++++ b/fbset.8 +@@ -1,4 +1,4 @@ +-.TH fbset 8 "July 1998" local "Linux frame buffer utils" ++.TH fbset 1 2010-04-12 2.1 "Linux frame buffer utils" + .SH NAME + fbset \- show and modify frame buffer device settings + .SH SYNOPSIS +@@ -6,8 +6,6 @@ fbset \- show and modify frame buffer de + .RI [ options ] + .RI [ mode ] + .SH DESCRIPTION +-.B This documentation is out of date!! +-.PP + .B fbset + is a system utility to show or change the settings of the frame buffer + device. The frame buffer device provides a simple and unique interface to +@@ -36,10 +36,8 @@ General options: + .BR \-\-help ",\ " \-h + display an usage information + .TP +-.BR \-\-now ",\ " \-n +-change the video mode immediately. If no frame buffer device is given via +-.B \-fb +-, then this option is activated by default ++.BR \-\-test ++don't change, just test whether the mode is valid + .TP + .BR \-\-show ",\ " \-s + display the video mode settings. This is default if no further option or +@@ -66,14 +64,16 @@ display the timing information as it's n + Frame buffer device nodes: + .RS + .TP ++.BR \-\-all ",\ " \-a ++change all virtual consoles on this device ++.TP + .BR \-fb "\ <" \fIdevice > + .I device + gives the frame buffer device node. If no device via + .B \-fb + is given, + .I /dev/fb0 + is used +-.TP + .RE + .PP + Video mode database: +@@ -86,6 +88,13 @@ see also + .BR fb.modes (5) + .RE + .PP ++Display bitfield colors: ++.RS ++.TP ++.BR \-rgba "\ <" \fIred , \fIgreen , \fIblue , \fIalpha > ++each in length or length/offset color format ++.RE ++.PP + Display geometry: + .RS + .TP +@@ -104,6 +113,10 @@ set virtual vertical resolution (in pixe + .BR \-depth "\ <" \fIvalue > + set display depth (in bits per pixel) + .TP ++.TP ++.BR \-nonstd "\ <" \fIvalue > ++select nonstandard video mode ++.TP + .BR \-\-geometry ",\ " \-g "\ ..." + set all geometry parameters at once in the order + .RI < xres > +@@ -154,13 +167,16 @@ set all timing parameters at once in the + .RI < hslen > + .RI < vslen >, + e.g. +-.B \-g ++.B \-t + .I 35242 64 96 35 12 112 2 + .RE + .PP + Display flags: + .RS + .TP ++.IR \fB\-accel "\ {" false | true } ++set hardware text acceleration enable ++.TP + .IR \fB\-hsync "\ {" low | high } + set the horizontal sync polarity + .TP +@@ -170,6 +186,9 @@ set the vertical sync polarity + .IR \fB\-csync "\ {" low | high } + set the composite sync polarity + .TP ++.IR \fB\-gsync "\ {" false | true } ++set synch on green ++.TP + .IR \fB\-extsync "\ {" false | true } + enable or disable external resync. If enabled the sync timings are not + generated by the frame buffer device and must be provided externally +@@ -217,7 +236,7 @@ insert the following in rc.local: + .B fbset + -fb + .I /dev/fb0 +-vga ++640x480\-60 + .sp + .RE + and make the used frame buffer device known to +@@ -232,7 +251,7 @@ and make the used frame buffer device kn + .br + .I /etc/fb.modes + .SH SEE ALSO +-.BR fb.modes "(5), " fbdev (4) ++.BR fb.modes "(5), " fbdev "(4), " /usr/share/doc/fbset/FAQ.gz + .SH AUTHORS + .TP + Geert Uytterhoeven +--- /dev/null ++++ b/modeline2fb.1 +@@ -0,0 +1,40 @@ ++.TH modeline2fb 1 2006-01-18 2.1 "Linux frame buffer utils" ++.SH NAME ++modeline2fb \- simple modeline to fb.modes translator ++.SH SYNOPSIS ++.B modeline2fb ++[\fIOPTION\fR] [\fIFILES\fR] ++.SH DESCRIPTION ++.PP ++.I Modeline2fb ++is a simple Perl script that converts XF86Config-style modelines to options ++suitable for a fb.modes file. ++.PP ++Note that only one option can be successfully enabled at any particular time. ++.SH OPTIONS ++.TP ++\fB\-d\fR, \fB\-\-depth\fR \fIdepth\fR ++Use the given display depth (default is 8). ++.TP ++\fB\-h\fR \fB\-\-help\fR ++Print out a help screen and exit. ++.SH ADVANCED OPTIONS ++.TP ++\fB\-r\fR \fB\-\-rounding\fR \fIdiv\fR ++Sets the vxres divisor (default is 128). ++.TP ++\fB\-x\fR \fB\-\-vxres\fR \fIX,X,X,...\fR ++Sets extra vxres values. ++.PP ++[\fIFILES\fR] refers to one or more XF86Config files. Note that all modelines ++must be in single-line format. If no files are given on the command line, ++this program reads from standard in. This program will also write to ++standard out. ++.SH EXAMPLE ++modeline2fb \-d 16 /etc/X11/XF86Config ++.SH "SEE ALSO" ++.BR fb.modes(5), ++.BR XF86Config(5) ++.SH AUTHOR ++This manual page is a quick write-up for Debian done by Kevin Kreamer ++. +>From cb00e6fade39afdb2adb0727647e9c97ce0fd02c Mon Sep 17 00:00:00 2001 +From: David Kozub +Date: Thu, 7 Jun 2012 15:46:16 +0200 +Subject: [PATCH] add support for custom sync flags + +--- + fb.modes.5 | 3 +++ + fbset.8 | 4 ++++ + fbset.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ + fbset.h | 3 +++ + modes.l | 3 ++- + modes.y | 10 +++++++++- + 6 files changed, 66 insertions(+), 2 deletions(-) + +--- a/fb.modes.5 ++++ b/fb.modes.5 +@@ -120,6 +120,9 @@ generated by the frame buffer device and + instead. Note that this option may not be supported by every frame buffer + device + .TP ++.IR \fBsync "\ <" number > ++custom sync flags (frame buffer driver dependent) ++.TP + .IR \fBlaced "\ {" false | true } + enable or disable interlace. If enabled the display will be split in two + frames, each frame contains only even and odd lines respectively. These two +--- a/fbset.8 ++++ b/fbset.8 +@@ -191,6 +191,10 @@ generated by the frame buffer device and + instead. Note that this option may not be supported by every frame buffer + device + .TP ++.IR \fB\-sync "\ <" \fIvalue > ++set custom sync flags. If specified, this value is bitwise or-ed to the ++other sync flags. This is useful for drivers that use custom sync flags ++.TP + .IR \fB\-bcast "\ {" false | true } + enable or disable broadcast modes. If enabled the frame buffer generates the + exact timings for several broadcast modes (e.g. PAL or NTSC). Note that +--- a/fbset.c ++++ b/fbset.c +@@ -16,6 +16,9 @@ + * Brad Midgley : + * -match + * ++ * David Kozub : ++ * -sync ++ * + */ + + +@@ -52,6 +55,12 @@ struct inode; + + + /* ++ * Mask to zero-out all known sync flags ++ */ ++#define FB_CUSTOM_SYNC_MASK ~(FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT| \ ++ FB_SYNC_COMP_HIGH_ACT|FB_SYNC_ON_GREEN|FB_SYNC_EXT|FB_SYNC_BROADCAST) ++ ++ /* + * Command Line Options + */ + +@@ -86,6 +95,7 @@ static const char *Opt_vsync = NULL; + static const char *Opt_csync = NULL; + static const char *Opt_gsync = NULL; + static const char *Opt_extsync = NULL; ++static const char *Opt_sync = NULL; + static const char *Opt_bcast = NULL; + static const char *Opt_laced = NULL; + static const char *Opt_double = NULL; +@@ -123,6 +133,7 @@ static struct { + { "-csync", &Opt_csync, 1 }, + { "-gsync", &Opt_gsync, 1 }, + { "-extsync", &Opt_extsync, 1 }, ++ { "-sync", &Opt_sync, 1 }, + { "-bcast", &Opt_bcast, 1 }, + { "-laced", &Opt_laced, 1 }, + { "-double", &Opt_double, 1 }, +@@ -402,6 +413,7 @@ static void ConvertFromVideoMode(const s + var->sync |= FB_SYNC_EXT; + if (vmode->bcast == TRUE) + var->sync |= FB_SYNC_BROADCAST; ++ var->sync |= vmode->sync; + if (vmode->laced == TRUE) + var->vmode = FB_VMODE_INTERLACED; + else if (vmode->dblscan == TRUE) +@@ -445,6 +457,7 @@ static void ConvertToVideoMode(const str + vmode->gsync = var->sync & FB_SYNC_ON_GREEN ? TRUE : FALSE; + vmode->extsync = var->sync & FB_SYNC_EXT ? TRUE : FALSE; + vmode->bcast = var->sync & FB_SYNC_BROADCAST ? TRUE : FALSE; ++ vmode->sync = var->sync & FB_CUSTOM_SYNC_MASK; + vmode->grayscale = var->grayscale; + vmode->laced = FALSE; + vmode->dblscan = FALSE; +@@ -554,6 +567,27 @@ void makeRGBA(struct VideoMode *vmode, c + } + + /* ++ * Take known bits from sync and set appropriate flags instead ++ */ ++ ++void fixCustomSync(struct VideoMode *vmode) ++{ ++ if (vmode->sync & FB_SYNC_HOR_HIGH_ACT) ++ vmode->hsync = 1; ++ if (vmode->sync & FB_SYNC_VERT_HIGH_ACT) ++ vmode->vsync = 1; ++ if (vmode->sync & FB_SYNC_COMP_HIGH_ACT) ++ vmode->csync = 1; ++ if (vmode->sync & FB_SYNC_ON_GREEN) ++ vmode->gsync = 1; ++ if (vmode->sync & FB_SYNC_EXT) ++ vmode->extsync =1; ++ if (vmode->sync & FB_SYNC_BROADCAST) ++ vmode->bcast = 1; ++ vmode->sync &= FB_CUSTOM_SYNC_MASK; ++} ++ ++ /* + * Find a Video Mode + */ + +@@ -617,6 +651,12 @@ static void ModifyVideoMode(struct Video + vmode->extsync = atoboolean(Opt_extsync); + if (Opt_bcast) + vmode->bcast = atoboolean(Opt_bcast); ++ if (Opt_sync) ++ { ++ vmode->sync = strtoul(Opt_sync, NULL, 0); ++ // call this only once all the other sync fields are determined! ++ fixCustomSync(vmode); ++ } + if (Opt_laced) + vmode->laced = atoboolean(Opt_laced); + if (Opt_double) +@@ -693,6 +733,8 @@ static void DisplayVModeInfo(struct Vide + puts(" extsync true"); + if (vmode->bcast) + puts(" bcast true"); ++ if (vmode->sync) ++ printf(" sync 0x%x\n", vmode->sync); + if (vmode->laced) + puts(" laced true"); + if (vmode->dblscan) +@@ -745,6 +787,8 @@ static void DisplayVModeInfo(struct Vide + puts(" # Warning: XFree86 doesn't support extsync\n"); + if (vmode->bcast) + printf(" \"bcast\""); ++ if (vmode->sync) ++ puts(" # Warning: XFree86 doesn't support custom sync values\n"); + if (vmode->accel_flags) + puts(" # Warning: XFree86 doesn't support accel\n"); + if (vmode->grayscale) +@@ -931,6 +975,7 @@ static void Usage(void) + " -csync : composite sync polarity (low or high)\n" + " -gsync : synch on green (false or true)\n" + " -extsync : external sync enable (false or true)\n" ++ " -sync : custom (driver specific) sync value\n" + " -bcast : broadcast enable (false or true)\n" + " -laced : interlace enable (false or true)\n" + " -double : doublescan enable (false or true)\n" +--- a/fbset.h ++++ b/fbset.h +@@ -64,6 +64,8 @@ struct VideoMode { + unsigned laced : 1; + unsigned dblscan : 1; + unsigned grayscale : 1; ++ /* extra (fb driver specific) sync bits */ ++ __u32 sync; + /* scanrates */ + double drate; + double hrate; +@@ -80,3 +82,4 @@ extern int yyparse(void); + extern void Die(const char *fmt, ...) __attribute__ ((noreturn)); + extern void AddVideoMode(const struct VideoMode *vmode); + extern void makeRGBA(struct VideoMode *vmode, const char* opt); ++extern void fixCustomSync(struct VideoMode *vmode); +--- a/modes.l ++++ b/modes.l +@@ -38,6 +38,7 @@ static struct keyword keywords[] = { + { "csync", CSYNC, 0 }, + { "gsync", GSYNC, 0 }, + { "extsync", EXTSYNC, 0 }, ++ { "sync", SYNC, 0 }, + { "bcast", BCAST, 0 }, + { "laced", LACED, 0 }, + { "double", DOUBLE, 0 }, +@@ -98,7 +99,7 @@ static const char *CopyString(const char + %} + + keyword [a-zA-Z][a-zA-Z0-9]* +-number [0-9]* ++number (0x)?[0-9]* + colors [0-9/,]* + string \"[^\"\n]*\" + comment \#([^\n]*) +--- a/modes.y ++++ b/modes.y +@@ -40,7 +40,7 @@ static void ClearVideoMode(void) + + %start file + +-%token MODE GEOMETRY TIMINGS HSYNC VSYNC CSYNC GSYNC EXTSYNC BCAST LACED DOUBLE ++%token MODE GEOMETRY TIMINGS HSYNC VSYNC CSYNC GSYNC EXTSYNC SYNC BCAST LACED DOUBLE + RGBA NONSTD ACCEL GRAYSCALE + ENDMODE POLARITY BOOLEAN STRING NUMBER COLORS + +@@ -91,6 +91,7 @@ options : /* empty */ + | options csync + | options gsync + | options extsync ++ | options sync + | options bcast + | options laced + | options double +@@ -130,6 +131,13 @@ extsync : EXTSYNC BOOLEAN + } + ; + ++sync: SYNC NUMBER ++ { ++ VideoMode.sync = $2; ++ fixCustomSync(&VideoMode); ++ } ++ ; ++ + bcast : BCAST BOOLEAN + { + VideoMode.bcast = $2; +--- a/fbset.h 1999-06-23 14:12:28.000000000 +0000 ++++ b/fbset.h 2020-09-02 18:39:26.030000000 +0000 +@@ -15,7 +15,7 @@ + #include + #include + +-#ifdef __GLIBC__ ++#ifdef __linux__ + #include + #endif diff --git a/fbv/default/conf.sh b/fbv/default/conf.sh new file mode 100755 index 0000000..126136b --- /dev/null +++ b/fbv/default/conf.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +./configure \ + --prefix / \ + --bindir /bin \ + --mandir /share/man \ + --infodir /share/info \ + --libs "-lz" + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/fbv/default/configure b/fbv/default/configure new file mode 100755 index 0000000..60cb29e --- /dev/null +++ b/fbv/default/configure @@ -0,0 +1,154 @@ +#!/bin/sh +## +## fbv configuration script +## + +# See TGT's ./configure script for in-depth comments, becouse this +# one is delivered from it... + +# If You touch anything below, You're asking for trouble + +BASENAME=$(basename "$0") + +unset prefix +unset infodir +unset mandir +unset srcdir +unset bindir +unset libs +unset jpeg +unset png +unset bmp +unset dfb + +help(){ +cat << EOF >&2 +Usage: ./configure [options] +Options: [defaults in brackets after descriptions] + +If a long option shows an argument as mandatory, then it is mandatory +for the equivalent short option also. Similarly for optional arguments. + +General: + --help print this message + --libs=LIBS additional libraries required + +Directory and file names: + --prefix=PREFIX install files in PREFIX [/usr/local] + --bindir=DIR binary executable in DIR [PREFIX/lib] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + +Features and packages: + --without-libjpeg disable libjpeg support even if found + --without-libpng disable libpng support even if found + --without-bmp disable bmp support +EOF +} + +# get options +#TEMP=$(getopt -o h \ +#--long help,\ +#prefix:,srcdir:,bindir:,\ +#infodir:,mandir:,\ +#without-libjpeg,without-libpng,without-bmp,libs: \ +#-n "$BASENAME" -- "$@") + +#if [ $? != 0 ] ; then help ; exit 1 ; fi +# +#eval set -- "$TEMP" + +# process options +while [ "$1" ] ; do + case "$1" in + -h|--help) help ; exit 0 ;; + --libs) libs="$2"; shift 2 ;; + --prefix) prefix="$2" ; shift 2 ;; + --srcdir) srcdir="$2" ; shift 2 ;; + --bindir) bindir="$2" ; shift 2 ;; + --infodir) infodir="$2" ; shift 2 ;; + --mandir) mandir="$2" ; shift 2 ;; + --without-libjpeg) jpeg="disabled" ; shift ;; + --without-libpng) png="disabled" ; shift ;; + --without-bmp) bmp="disabled" ; shift ;; + --) shift ; break ;; + *) help ; exit 1 ;; + esac +done + +[ -z "$prefix" ] && prefix="/usr/local" +[ -z "$bindir" ] && bindir="${prefix}/bin" +[ -z "$mandir" ] && mandir="${prefix}/man" +[ -z "$infodir" ] && infodir="${prefix}/info" + +cat << EOF | tee ./config.log >Make.conf +prefix = $prefix +bindir = $bindir +mandir = $mandir +infodir = $infodir +EOF + +# tests +rm -f \$\$~test \$\$~test.c +cat > \$\$~test.c << EOF +main() +{ +} +EOF + +### +echo -n "checking for libjpeg presence... " +if [ "$jpeg" != "disabled" ]; then +jpeg="no" +cc 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -ljpeg $libs +if [ -e \$\$~test ]; then + libs="-ljpeg $libs" ; jpeg="yes" +fi +fi +echo $jpeg +echo "libjpeg: $jpeg" >> ./config.log +### +echo -n "checking for libpng presence... " +if [ "$png" != "disabled" ]; then +png="no" +cc 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lpng $libs +if [ -e \$\$~test ]; then + libs="-lpng $libs" ; png="yes" +fi +fi +echo $png +echo "libpng: $png" >> ./config.log +### +echo -n "building with bmp support... " +if [ "$bmp" != "disabled" ]; then +bmp="yes" +fi +echo $bmp +echo "bmp: $bmp" >> ./config.log + +### +rm -f \$\$~test \$\$~test.c + +### +echo -n "checking for DEFAULT_FRAMEBUFFER... " +if [ -n "$FRAMEBUFFER" ]; then + dfb="$FRAMEBUFFER" +else + dfb="/dev/fb0" +fi +echo $dfb +echo "fb: $dfb" >> ./config.log + +### +echo >> Make.conf +echo "LIBS = $libs" | tee -a ./config.log >>Make.conf +echo "#define IDSTRING \"fbv "`cat VERSION`"\"" | tee -a ./config.log >config.h +echo "#define DEFAULT_FRAMEBUFFER \"$dfb\"" | tee -a ./config.log >>config.h +[ "$jpeg" != "disabled" ] && echo "#define FBV_SUPPORT_JPEG" | tee -a ./config.log >>config.h +[ "$png" != "disabled" ] && echo "#define FBV_SUPPORT_PNG" | tee -a ./config.log >>config.h +[ "$bmp" != "disabled" ] && echo "#define FBV_SUPPORT_BMP" | tee -a ./config.log >>config.h +echo "installation dir: $bindir" +echo "manuals dir: $mandir" + +exit 0 +## EOF diff --git a/fbv/default/deps b/fbv/default/deps new file mode 100644 index 0000000..24d03f7 --- /dev/null +++ b/fbv/default/deps @@ -0,0 +1,16 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libjpeg-turbo +libpng +gzip +zlib +xz diff --git a/fbv/default/patch b/fbv/default/patch new file mode 100644 index 0000000..5341985 --- /dev/null +++ b/fbv/default/patch @@ -0,0 +1,41 @@ +remove getopt dependency. + +--- a/configure 2020-09-03 00:02:38.290000000 +0000 ++++ b/configure 2020-09-03 00:00:40.570000000 +0000 +@@ -47,19 +47,19 @@ + } + + # get options +-TEMP=$(getopt -o h \ +---long help,\ +-prefix:,srcdir:,bindir:,\ +-infodir:,mandir:,\ +-without-libjpeg,without-libpng,without-bmp,libs: \ +--n "$BASENAME" -- "$@") ++#TEMP=$(getopt -o h \ ++#--long help,\ ++#prefix:,srcdir:,bindir:,\ ++#infodir:,mandir:,\ ++#without-libjpeg,without-libpng,without-bmp,libs: \ ++#-n "$BASENAME" -- "$@") + +-if [ $? != 0 ] ; then help ; exit 1 ; fi ++#if [ $? != 0 ] ; then help ; exit 1 ; fi + # +-eval set -- "$TEMP" ++#eval set -- "$TEMP" + + # process options +-while true ; do ++while [ "$1" ] ; do + case "$1" in + -h|--help) help ; exit 0 ;; + --libs) libs="$2"; shift 2 ;; +@@ -71,7 +71,6 @@ + --without-libjpeg) jpeg="disabled" ; shift ;; + --without-libpng) png="disabled" ; shift ;; + --without-bmp) bmp="disabled" ; shift ;; +- + --) shift ; break ;; + *) help ; exit 1 ;; + esac diff --git a/fcft/default/conf.sh b/fcft/default/conf.sh new file mode 100755 index 0000000..f05f590 --- /dev/null +++ b/fcft/default/conf.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +meson \ + --wrap-mode=nofallback \ + --buildtype=release \ + --prefix=$PREFIX \ + ../build diff --git a/fcft/default/deps b/fcft/default/deps new file mode 100644 index 0000000..6e7155b --- /dev/null +++ b/fcft/default/deps @@ -0,0 +1,36 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +diffutils +mesa-dynamic +pixman +pkgconf +libtool +expat +zlib +bzip2 +libpng +glib +gperf +harfbuzz +freetype-harfbuzz +fontconfig +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +tllist +scdoc diff --git a/fcft/default/inst.sh b/fcft/default/inst.sh new file mode 100755 index 0000000..5013ba7 --- /dev/null +++ b/fcft/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build install diff --git a/fcft/default/make.sh b/fcft/default/make.sh new file mode 100755 index 0000000..43f1628 --- /dev/null +++ b/fcft/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build diff --git a/feh/default/conf.sh b/feh/default/conf.sh new file mode 100755 index 0000000..7b5a8e3 --- /dev/null +++ b/feh/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +${EDITOR:-vi} config.mk diff --git a/feh/default/deps b/feh/default/deps new file mode 100644 index 0000000..b54361f --- /dev/null +++ b/feh/default/deps @@ -0,0 +1,43 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +libtool +autoconf +automake +curl +bzip2 +zlib +giflib +libjpeg-turbo +libpng +libtiff +libwebp +libid3tag +freetype +xorg-util-macros +libxml2 +xorgproto +libxslt +xcb-proto +libxau +libxcb +xtrans +libx11 +libxext +libxinerama +libsm +libice +libxt +imlib2 +pkgconf +$EDITORDEP diff --git a/feh/default/patch b/feh/default/patch new file mode 100644 index 0000000..0dcf5aa --- /dev/null +++ b/feh/default/patch @@ -0,0 +1,17 @@ +--- a/config.mk 2020-08-29 06:50:28.000000000 +0000 ++++ b/config.mk 2020-09-08 21:56:15.470000000 +0000 +@@ -10,7 +10,7 @@ + xinerama ?= 1 + + # Prefix for all installed files +-PREFIX ?= /usr/local ++PREFIX ?= /usr + ICON_PREFIX ?= ${DESTDIR}${PREFIX}/share/icons + + # icons in /usr/share/local/icons (and other prefixes != /usr) are not +@@ -98,4 +98,4 @@ + CFLAGS += -DPREFIX=\"${PREFIX}\" \ + -DPACKAGE=\"${PACKAGE}\" -DVERSION=\"${VERSION}\" + +-LDLIBS += -lm -lpng -lX11 -lImlib2 ++LDLIBS += -lImlib2 -lm -lpng -lX11 -lX11-xcb -lXext -lxcb -lxcb-shm -lXau -lfreetype -lz -lbz2 diff --git a/flex/default/deps b/flex/default/deps new file mode 100644 index 0000000..aaf30be --- /dev/null +++ b/flex/default/deps @@ -0,0 +1,14 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +perl +m4 diff --git a/fontconfig/default/conf.sh b/fontconfig/default/conf.sh new file mode 100755 index 0000000..00b81a3 --- /dev/null +++ b/fontconfig/default/conf.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +# force regeneration of hash functions +rm -f src/fcobjshash.h + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +LIBS="-lglib-2.0" \ +./configure \ + --disable-docs \ + --disable-nls \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +#FREETYPE_CFLAGS="-I/include/freetype2" \ +#FREETYPE_LIBS="/lib/libfreetype.a" \ + +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/fontconfig/default/deps b/fontconfig/default/deps new file mode 100644 index 0000000..835ee36 --- /dev/null +++ b/fontconfig/default/deps @@ -0,0 +1,22 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +libtool +expat +zlib +bzip2 +libpng +glib +harfbuzz +freetype-harfbuzz +gperf +python3 diff --git a/fontconfig/default/make.sh b/fontconfig/default/make.sh new file mode 100755 index 0000000..4e6aaba --- /dev/null +++ b/fontconfig/default/make.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# force regeneration of hash functions +rm -f src/fcobjshash.h + +make -j$(nproc) diff --git a/foot/default/conf.sh b/foot/default/conf.sh new file mode 100755 index 0000000..13f0813 --- /dev/null +++ b/foot/default/conf.sh @@ -0,0 +1,12 @@ +#!/bin/sh -e + +#CFLAGS="$SHARED_CFLAGS -O3 -march=native -fno-plt" \ +#CFLAGS="$SHARED_CFLAGS -O3 -fno-plt" \ +CFLAGS="$SHARED_CFLAGS -O3 -fno-plt -Wno-error" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson \ + -Db_lto=false \ + --buildtype=release \ + --prefix=$PREFIX \ + ../build diff --git a/foot/default/deps b/foot/default/deps new file mode 100644 index 0000000..d0ab44c --- /dev/null +++ b/foot/default/deps @@ -0,0 +1,42 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +diffutils +mesa-dynamic +pixman +pkgconf +libtool +expat +zlib +bzip2 +libpng +libffi +glib +gperf +harfbuzz +freetype-harfbuzz +fontconfig +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +libxkbcommon-dynamic +tllist +fcft +scdoc +ncurses +wayland +wayland-protocols diff --git a/foot/default/inst.sh b/foot/default/inst.sh new file mode 100755 index 0000000..5013ba7 --- /dev/null +++ b/foot/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build install diff --git a/foot/default/make.sh b/foot/default/make.sh new file mode 100755 index 0000000..43f1628 --- /dev/null +++ b/foot/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build diff --git a/foot/default/patches-available/0100-ppc64-TIOCSWINSZ.patch b/foot/default/patches-available/0100-ppc64-TIOCSWINSZ.patch new file mode 100644 index 0000000..5c37445 --- /dev/null +++ b/foot/default/patches-available/0100-ppc64-TIOCSWINSZ.patch @@ -0,0 +1,22 @@ +--- a/render.c 2020-10-11 17:31:25.000000000 +0000 ++++ b/render.c 2020-10-12 00:34:32.630000000 +0000 +@@ -2174,7 +2174,7 @@ + term->margins.left, term->margins.right, term->margins.top, term->margins.bottom); + + /* Signal TIOCSWINSZ */ +- if (term->ptmx >= 0 && ioctl(term->ptmx, TIOCSWINSZ, ++ if (term->ptmx >= 0 && ioctl(term->ptmx, (int) TIOCSWINSZ, + &(struct winsize){ + .ws_row = term->rows, + .ws_col = term->cols, +--- a/terminal.c 2020-10-11 17:31:25.000000000 +0000 ++++ b/terminal.c 2020-10-12 00:37:58.790000000 +0000 +@@ -883,7 +883,7 @@ + goto close_fds; + } + +- if (ioctl(ptmx, TIOCSWINSZ, ++ if (ioctl(ptmx, (int) TIOCSWINSZ, + &(struct winsize){.ws_row = 24, .ws_col = 80}) < 0) + { + LOG_ERRNO("failed to set initial TIOCSWINSZ"); diff --git a/foot/default/patches-enabled/0100-ppc64-TIOCSWINSZ.patch b/foot/default/patches-enabled/0100-ppc64-TIOCSWINSZ.patch new file mode 120000 index 0000000..7c20053 --- /dev/null +++ b/foot/default/patches-enabled/0100-ppc64-TIOCSWINSZ.patch @@ -0,0 +1 @@ +../patches-available/0100-ppc64-TIOCSWINSZ.patch \ No newline at end of file diff --git a/freetype-harfbuzz/default/conf.sh b/freetype-harfbuzz/default/conf.sh new file mode 100755 index 0000000..d2ae3f0 --- /dev/null +++ b/freetype-harfbuzz/default/conf.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --with-bzip2 \ + --with-png \ + --with-harfbuzz \ + --enable-freetype-config \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/freetype-harfbuzz/default/deps b/freetype-harfbuzz/default/deps new file mode 100644 index 0000000..08002e8 --- /dev/null +++ b/freetype-harfbuzz/default/deps @@ -0,0 +1,23 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +diffutils +bzip2 +expat +freetype +glib +mesa-dynamic +pixman +pkgconf +zlib +libpng +icu +harfbuzz diff --git a/freetype/default/conf.sh b/freetype/default/conf.sh new file mode 100755 index 0000000..6738099 --- /dev/null +++ b/freetype/default/conf.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --with-bzip2 \ + --with-png \ + --enable-freetype-config \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/freetype/default/deps b/freetype/default/deps new file mode 100644 index 0000000..178f3e9 --- /dev/null +++ b/freetype/default/deps @@ -0,0 +1,14 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +zlib +bzip2 +libpng diff --git a/fribidi/default/conf.sh b/fribidi/default/conf.sh new file mode 100755 index 0000000..117e507 --- /dev/null +++ b/fribidi/default/conf.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/fribidi/default/deps b/fribidi/default/deps new file mode 100644 index 0000000..0b9c548 --- /dev/null +++ b/fribidi/default/deps @@ -0,0 +1,11 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed diff --git a/gc/default/conf.sh b/gc/default/conf.sh new file mode 100755 index 0000000..7721379 --- /dev/null +++ b/gc/default/conf.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --enable-cplusplus \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/gc/default/deps b/gc/default/deps new file mode 100644 index 0000000..52944ba --- /dev/null +++ b/gc/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libatomic_ops diff --git a/gcr/default/conf.sh b/gcr/default/conf.sh new file mode 100755 index 0000000..dedf54e --- /dev/null +++ b/gcr/default/conf.sh @@ -0,0 +1,28 @@ +#!/bin/sh -e + + +#./autogen.sh \ + +autoreconf -vif + + #--enable-introspection=yes \ +./configure \ + --enable-vala=no \ + --enable-introspection=no \ + --disable-update-icon-cache \ + --disable-update-mime \ + --disable-gtk-doc \ + --without-gtk \ + --disable-static \ + --enable-shared \ + --host="$HOST" \ + --build="$BUILD" \ + --prefix="$PREFIX" + +## gtk support in gcr requires x11! :( +#meson \ +# -Dgtk=false \ +# -Dgtk_doc=false \ +# -Dgpg_path=/bin/gpg \ +# --prefix="$PREFIX" \ +# ../build diff --git a/gcr/default/deps b/gcr/default/deps new file mode 100644 index 0000000..941f66f --- /dev/null +++ b/gcr/default/deps @@ -0,0 +1,67 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +ldd +perl +m4 +autoconf +automake +libtool +libarchive +gettext +zlib +gzip +libffi +libelf +glib +gobject-introspection-dynamic +vala +libtasn1 +p11-kit +libxml2 +expat +libxslt +libgcrypt +libgpg-error +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +samurai + + +flex +bison +diffutils +libpng +expat +git +tls-certs +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +pixman +glib +harfbuzz +freetype +cairo +fontconfig +pkgconf diff --git a/gcr/default/deps.bak b/gcr/default/deps.bak new file mode 100644 index 0000000..ef5507b --- /dev/null +++ b/gcr/default/deps.bak @@ -0,0 +1,163 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +ldd +perl +m4 +autoconf +automake +libtool +libarchive +gettext +zlib +gzip +libffi +libelf +glib +gobject-introspection-dynamic +vala +libtasn1 +p11-kit +libxml2 +expat +libxslt +libgcrypt +libgpg-error +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +samurai + + +flex +bison +diffutils +libpng +expat +git +tls-certs +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +pixman +glib +harfbuzz +freetype +cairo +fontconfig +pkgconf + + +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +ldd +perl-dynamic +m4 +flex +bison +libffi +bzip2 +zlib +xz +libpng +libwebp +libjpeg-turbo +openjpeg +pixman +cmake +tls-certs +glib +gobject-introspection-dynamic +libproxy +libgcrypt +libgpg-error +p11-kit +gsettings-desktop-schemas +libtasn1 +libunistring +libidn2 +bearssl +libressl +nettle +gnutls +libcap +libxml2 +expat +graphviz +libxslt +vala +libpsl +sqlite +brotli >= 1.0.9 +diffutils +file +libsoup +libsecret +libseccomp +eudev +libgudev +gperf +atk +gdk-pixbuf +libxkbcommon-dynamic +libepoxy +gtk-dynamic >= 3.0.0 +gnu-readline +libucontext +libyaml +ruby +python3-dynamic +libdrm-dynamic +mesa-dynamic +fribidi +icu +harfbuzz +freetype-harfbuzz +fontconfig +pango +cairo +wayland +wayland-protocols +bubblewrap +dbus +xdg-dbus-proxy +gstreamer +alsa-lib +cdparanoia +libogg +libvorbis +libtheora +opus +orc +gst-plugins-base +samurai +gettext diff --git a/gcr/default/deps.uniq b/gcr/default/deps.uniq new file mode 100644 index 0000000..37a1aee --- /dev/null +++ b/gcr/default/deps.uniq @@ -0,0 +1,111 @@ + +alsa-lib +atk +autoconf +automake +awk +bearssl +bison +brotli >= 1.0.9 +bubblewrap +bzip2 +cairo +cdparanoia +cmake +dash +dbus +diffutils +eudev +expat +file +flex +fontconfig +freetype +freetype-harfbuzz +fribidi +gdk-pixbuf +gettext +git +glib +gnu-grep +gnu-readline +gnu-sed +gnutls +gobject-introspection-dynamic +gperf +graphviz +gsettings-desktop-schemas +gst-plugins-base +gstreamer +gtk-dynamic >= 3.0.0 +gzip +harfbuzz +icu +ldd +libarchive +libcap +libdrm-dynamic +libelf +libepoxy +libffi +libgcrypt +libgpg-error +libgudev +libidn2 +libjpeg-turbo +libogg +libpng +libproxy +libpsl +libressl +libseccomp +libsecret +libsoup +libtasn1 +libtheora +libtool +libucontext +libunistring +libvorbis +libwebp +libxkbcommon-dynamic +libxml2 +libxslt +libyaml +linux-kernel +lix-os-filesystem +m4 +make +mesa-dynamic +meson +musl-cross-make +nettle +openjpeg +opus +orc +p11-kit +pango +patch +perl +perl-dynamic +pixman +pkgconf +py3-appdirs +py3-ordered-set +py3-packaging +py3-parsing +py3-setuptools +py3-six +python3-dynamic +ruby +samurai +sbase +sqlite +tls-certs +ubase +vala +wayland +wayland-protocols +xdg-dbus-proxy +xz +zlib diff --git a/gcr/default/env.sh b/gcr/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/gcr/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/gcr/default/inst.sh b/gcr/default/inst.sh new file mode 100755 index 0000000..3b4b72b --- /dev/null +++ b/gcr/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +#meson install --no-rebuild -C ../build +make -j$(nproc) install diff --git a/gcr/default/make.sh b/gcr/default/make.sh new file mode 100755 index 0000000..fc1cd9d --- /dev/null +++ b/gcr/default/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +#meson compile -j$(nproc) -C ../build +make -j$(nproc) diff --git a/gcr/default/patches-available/allow-building-without-gpg.patch b/gcr/default/patches-available/allow-building-without-gpg.patch new file mode 100644 index 0000000..7560419 --- /dev/null +++ b/gcr/default/patches-available/allow-building-without-gpg.patch @@ -0,0 +1,39 @@ +Upstream: See https://gitlab.gnome.org/GNOME/gcr/-/merge_requests/50 +diff --git a/meson.build b/meson.build +index f19af0f..57b625b 100644 +--- a/meson.build ++++ b/meson.build +@@ -41,7 +41,10 @@ gobject_dep = dependency('gobject-2.0', version: '>=' + min_glib_version) + gio_dep = dependency('gio-2.0', version: '>=' + min_glib_version) + gio_unix_dep = dependency('gio-unix-2.0',version: '>=' + min_glib_version) + glib_deps = [ glib_dep, gmodule_dep, gthread_dep, gobject_dep, gio_dep, gio_unix_dep, ] +-gpg_bin = find_program('gpg2', 'gpg') ++gpg_path = get_option('gpg_path') ++if gpg_path == '' ++ gpg_path = find_program('gpg2', 'gpg').path() ++endif + libgcrypt_dep = dependency('libgcrypt', version: '>= 1') + p11kit_dep = dependency('p11-kit-1', version: '>= 0.19.0') + p11_system_config_modules = p11kit_dep.get_pkgconfig_variable('p11_system_config_modules') +@@ -65,7 +68,7 @@ conf.set('HAVE_GETTEXT', true) + conf.set('HAVE_LOCALE_H', cc.has_header('locale.h')) + conf.set('HAVE_TIMEGM', cc.has_function('timegm')) + conf.set('HAVE_MLOCK', cc.has_function('mlock')) +-conf.set_quoted('GPG_EXECUTABLE', gpg_bin.path()) ++conf.set_quoted('GPG_EXECUTABLE', gpg_path) + conf.set_quoted('LIBGCRYPT_VERSION', libgcrypt_dep.version()) + config_file = configure_file( + output: 'config.h', +diff --git a/meson_options.txt b/meson_options.txt +index bbdc8e3..ae0f524 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -13,3 +13,8 @@ option('gtk_doc', + value: true, + description: 'Build the reference documentation (requires gtk-doc)', + ) ++option('gpg_path', ++ type: 'string', ++ value: '', ++ description: 'Path to gpg, autodetected if not set', ++) diff --git a/gcr/default/patches-available/dont-run-gpg-tests.patch b/gcr/default/patches-available/dont-run-gpg-tests.patch new file mode 100644 index 0000000..acab924 --- /dev/null +++ b/gcr/default/patches-available/dont-run-gpg-tests.patch @@ -0,0 +1,12 @@ +diff --git a/gcr/meson.build b/gcr/meson.build +index 254a933..8c17e7c 100644 +--- a/gcr/meson.build ++++ b/gcr/meson.build +@@ -271,7 +271,6 @@ gcr_test_names = [ + 'record', + 'memory-icon', + 'gnupg-key', +- 'gnupg-collection', + 'gnupg-process', + 'system-prompt', + 'ssh-askpass', diff --git a/gcr/default/patches-available/fix-64-bit-time_t-32-bit.patch b/gcr/default/patches-available/fix-64-bit-time_t-32-bit.patch new file mode 100644 index 0000000..344d565 --- /dev/null +++ b/gcr/default/patches-available/fix-64-bit-time_t-32-bit.patch @@ -0,0 +1,14 @@ +Upstream: https://gitlab.gnome.org/GNOME/gcr/-/issues/45 +diff --git a/egg/egg-asn1x.c b/egg/egg-asn1x.c +index b7d9d11..16caa6b 100644 +--- a/egg/egg-asn1x.c ++++ b/egg/egg-asn1x.c +@@ -2213,7 +2213,7 @@ anode_read_time (GNode *node, + return anode_failure (node, "invalid time content"); + + /* In order to work with 32 bit time_t. */ +- if (sizeof (time_t) <= 4 && when->tm_year >= 138) { ++ if ((sizeof (time_t) <= 4 || sizeof (long) <= 4) && when->tm_year >= 138) { + *value = (time_t)2145914603; /* 2037-12-31 23:23:23 */ + + /* Convert to seconds since epoch */ diff --git a/gcr/default/patches-enabled/allow-building-without-gpg.patch b/gcr/default/patches-enabled/allow-building-without-gpg.patch new file mode 120000 index 0000000..c527646 --- /dev/null +++ b/gcr/default/patches-enabled/allow-building-without-gpg.patch @@ -0,0 +1 @@ +../patches-available/allow-building-without-gpg.patch \ No newline at end of file diff --git a/gcr/default/patches-enabled/dont-run-gpg-tests.patch b/gcr/default/patches-enabled/dont-run-gpg-tests.patch new file mode 120000 index 0000000..0f23dca --- /dev/null +++ b/gcr/default/patches-enabled/dont-run-gpg-tests.patch @@ -0,0 +1 @@ +../patches-available/dont-run-gpg-tests.patch \ No newline at end of file diff --git a/gcr/default/patches-enabled/fix-64-bit-time_t-32-bit.patch b/gcr/default/patches-enabled/fix-64-bit-time_t-32-bit.patch new file mode 120000 index 0000000..7aed341 --- /dev/null +++ b/gcr/default/patches-enabled/fix-64-bit-time_t-32-bit.patch @@ -0,0 +1 @@ +../patches-available/fix-64-bit-time_t-32-bit.patch \ No newline at end of file diff --git a/gdb/9.2/patch b/gdb/9.2/patch new file mode 100644 index 0000000..6bd28fd --- /dev/null +++ b/gdb/9.2/patch @@ -0,0 +1,253 @@ +The s390 versions of fill_gregset / supply_gregset and fill_fpregset / +supply_fpregset declare the data structure to be filled or supplied from +as gregset_t and fpregset_t, respectively, instead of gdb_gregset_t and +gdb_fpregset_t. This is incompatible with the declaration of these +functions in gregset.h. +gdb/ChangeLog: + + * s390-linux-nat.c (supply_gregset, fill_gregset, fetch_regs) + (store_regs): Replace gregset_t by gdb_gregset_t. + (supply_fpregset, fill_fpregset, fetch_fpregs, store_fpregs): + Replace fpregset_t by gdb_fpregset_t. +Credit to Andreas Arnez at IBM + +--- + +diff --git a/gdb/s390-linux-nat.c b/gdb/s390-linux-nat.c +index 2c60562..c48a35a 100644 +--- a/gdb/s390-linux-nat.c ++++ b/gdb/s390-linux-nat.c +@@ -153,7 +153,7 @@ static s390_linux_nat_target the_s390_linux_nat_target; + make them look like 32-bit registers. */ + + void +-supply_gregset (struct regcache *regcache, const gregset_t *regp) ++supply_gregset (struct regcache *regcache, const gdb_gregset_t *regp) + { + #ifdef __s390x__ + struct gdbarch *gdbarch = regcache->arch (); +@@ -164,7 +164,7 @@ supply_gregset (struct regcache *regcache, const gregset_t *regp) + gdb_byte buf[4]; + + regcache_supply_regset (&s390_64_gregset, regcache, -1, +- regp, sizeof (gregset_t)); ++ regp, sizeof (gdb_gregset_t)); + pswm = extract_unsigned_integer ((const gdb_byte *) regp + + S390_PSWM_OFFSET, 8, byte_order); + pswa = extract_unsigned_integer ((const gdb_byte *) regp +@@ -179,7 +179,7 @@ supply_gregset (struct regcache *regcache, const gregset_t *regp) + #endif + + regcache_supply_regset (&s390_gregset, regcache, -1, regp, +- sizeof (gregset_t)); ++ sizeof (gdb_gregset_t)); + } + + /* Fill register REGNO (if it is a general-purpose register) in +@@ -187,14 +187,14 @@ supply_gregset (struct regcache *regcache, const gregset_t *regp) + do this for all registers. */ + + void +-fill_gregset (const struct regcache *regcache, gregset_t *regp, int regno) ++fill_gregset (const struct regcache *regcache, gdb_gregset_t *regp, int regno) + { + #ifdef __s390x__ + struct gdbarch *gdbarch = regcache->arch (); + if (gdbarch_ptr_bit (gdbarch) == 32) + { + regcache_collect_regset (&s390_64_gregset, regcache, regno, +- regp, sizeof (gregset_t)); ++ regp, sizeof (gdb_gregset_t)); + + if (regno == -1 + || regno == S390_PSWM_REGNUM || regno == S390_PSWA_REGNUM) +@@ -231,26 +231,27 @@ fill_gregset (const struct regcache *regcache, gregset_t *regp, int regno) + #endif + + regcache_collect_regset (&s390_gregset, regcache, regno, regp, +- sizeof (gregset_t)); ++ sizeof (gdb_gregset_t)); + } + + /* Fill GDB's register array with the floating-point register values + in *REGP. */ + void +-supply_fpregset (struct regcache *regcache, const fpregset_t *regp) ++supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *regp) + { + regcache_supply_regset (&s390_fpregset, regcache, -1, regp, +- sizeof (fpregset_t)); ++ sizeof (gdb_fpregset_t)); + } + + /* Fill register REGNO (if it is a general-purpose register) in + *REGP with the value in GDB's register array. If REGNO is -1, + do this for all registers. */ + void +-fill_fpregset (const struct regcache *regcache, fpregset_t *regp, int regno) ++fill_fpregset (const struct regcache *regcache, gdb_fpregset_t *regp, ++ int regno) + { + regcache_collect_regset (&s390_fpregset, regcache, regno, regp, +- sizeof (fpregset_t)); ++ sizeof (gdb_fpregset_t)); + } + + /* Find the TID for the current inferior thread to use with ptrace. */ +@@ -270,7 +271,7 @@ s390_inferior_tid (void) + static void + fetch_regs (struct regcache *regcache, int tid) + { +- gregset_t regs; ++ gdb_gregset_t regs; + ptrace_area parea; + + parea.len = sizeof (regs); +@@ -279,7 +280,7 @@ fetch_regs (struct regcache *regcache, int tid) + if (ptrace (PTRACE_PEEKUSR_AREA, tid, (long) &parea, 0) < 0) + perror_with_name (_("Couldn't get registers")); + +- supply_gregset (regcache, (const gregset_t *) ®s); ++ supply_gregset (regcache, (const gdb_gregset_t *) ®s); + } + + /* Store all valid general-purpose registers in GDB's register cache +@@ -287,7 +288,7 @@ fetch_regs (struct regcache *regcache, int tid) + static void + store_regs (const struct regcache *regcache, int tid, int regnum) + { +- gregset_t regs; ++ gdb_gregset_t regs; + ptrace_area parea; + + parea.len = sizeof (regs); +@@ -307,7 +308,7 @@ store_regs (const struct regcache *regcache, int tid, int regnum) + static void + fetch_fpregs (struct regcache *regcache, int tid) + { +- fpregset_t fpregs; ++ gdb_fpregset_t fpregs; + ptrace_area parea; + + parea.len = sizeof (fpregs); +@@ -316,7 +317,7 @@ fetch_fpregs (struct regcache *regcache, int tid) + if (ptrace (PTRACE_PEEKUSR_AREA, tid, (long) &parea, 0) < 0) + perror_with_name (_("Couldn't get floating point status")); + +- supply_fpregset (regcache, (const fpregset_t *) &fpregs); ++ supply_fpregset (regcache, (const gdb_fpregset_t *) &fpregs); + } + + /* Store all valid floating-point registers in GDB's register cache +@@ -324,7 +325,7 @@ fetch_fpregs (struct regcache *regcache, int tid) + static void + store_fpregs (const struct regcache *regcache, int tid, int regnum) + { +- fpregset_t fpregs; ++ gdb_fpregset_t fpregs; + ptrace_area parea; + + parea.len = sizeof (fpregs); +--- a/gdb/gdbserver/linux-ppc-low.c ++++ b/gdb/gdbserver/linux-ppc-low.c +@@ -21,7 +21,6 @@ + #include "linux-low.h" + + #include +-#include + + #include "nat/ppc-linux.h" + #include "linux-ppc-tdesc.h" +--- a/gdb/nat/ppc-linux.h ++++ b/gdb/nat/ppc-linux.h +@@ -18,7 +18,90 @@ + #ifndef PPC_LINUX_H + #define PPC_LINUX_H 1 + ++#if defined(__GLIBC__) || defined(__UCLIBC__) + #include ++#else // Musl ++// Do not include ptrace.h from Linux headers and since ++// Musl does not define PT_*, define them: ++ ++#define PT_R0 0 ++#define PT_R1 1 ++#define PT_R2 2 ++#define PT_R3 3 ++#define PT_R4 4 ++#define PT_R5 5 ++#define PT_R6 6 ++#define PT_R7 7 ++#define PT_R8 8 ++#define PT_R9 9 ++#define PT_R10 10 ++#define PT_R11 11 ++#define PT_R12 12 ++#define PT_R13 13 ++#define PT_R14 14 ++#define PT_R15 15 ++#define PT_R16 16 ++#define PT_R17 17 ++#define PT_R18 18 ++#define PT_R19 19 ++#define PT_R20 20 ++#define PT_R21 21 ++#define PT_R22 22 ++#define PT_R23 23 ++#define PT_R24 24 ++#define PT_R25 25 ++#define PT_R26 26 ++#define PT_R27 27 ++#define PT_R28 28 ++#define PT_R29 29 ++#define PT_R30 30 ++#define PT_R31 31 ++ ++#define PT_NIP 32 ++#define PT_MSR 33 ++#define PT_ORIG_R3 34 ++#define PT_CTR 35 ++#define PT_LNK 36 ++#define PT_XER 37 ++#define PT_CCR 38 ++#ifndef __powerpc64__ ++#define PT_MQ 39 ++#else ++#define PT_SOFTE 39 ++#endif ++#define PT_TRAP 40 ++#define PT_DAR 41 ++#define PT_DSISR 42 ++#define PT_RESULT 43 ++#define PT_DSCR 44 ++#define PT_REGS_COUNT 44 ++ ++#define PT_FPR0 48 /* each FP reg occupies 2 slots in this space */ ++ ++#ifndef __powerpc64__ ++ ++#define PT_FPR31 (PT_FPR0 + 2*31) ++#define PT_FPSCR (PT_FPR0 + 2*32 + 1) ++ ++#else /* __powerpc64__ */ ++ ++#define PT_FPSCR (PT_FPR0 + 32) /* each FP reg occupies 1 slot in 64-bit space */ ++ ++ ++#define PT_VR0 82 /* each Vector reg occupies 2 slots in 64-bit */ ++#define PT_VSCR (PT_VR0 + 32*2 + 1) ++#define PT_VRSAVE (PT_VR0 + 33*2) ++ ++ ++/* ++ * Only store first 32 VSRs here. The second 32 VSRs in VR0-31 ++ */ ++#define PT_VSR0 150 /* each VSR reg occupies 2 slots in 64-bit */ ++#define PT_VSR31 (PT_VSR0 + 2*31) ++#endif /* __powerpc64__ */ ++ ++#endif // Libc ++ + #include + + /* This sometimes isn't defined. */ diff --git a/gdb/default/conf.sh b/gdb/default/conf.sh new file mode 100755 index 0000000..f965553 --- /dev/null +++ b/gdb/default/conf.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +# gdb prefers an out-of-tree build. +cd ../build + +../src/configure \ + --enable-static \ + --build=$(uname -m)-lix-linux-musl \ + --host=$(uname -m)-lix-linux-musl \ + --prefix= + +## explanation +# +# --build: make sure the build string is set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/gdb/default/deps b/gdb/default/deps new file mode 100644 index 0000000..997cb1f --- /dev/null +++ b/gdb/default/deps @@ -0,0 +1,14 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-sed +gnu-grep +perl +texinfo +libtool diff --git a/gdb/default/inst.sh b/gdb/default/inst.sh new file mode 100755 index 0000000..98ec1b6 --- /dev/null +++ b/gdb/default/inst.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +cd ../build + +make -j$(nproc) install diff --git a/gdb/default/make.sh b/gdb/default/make.sh new file mode 100755 index 0000000..e63dc2a --- /dev/null +++ b/gdb/default/make.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +cd ../build + +make -j$(nproc) diff --git a/gdb/ppc-musl.patch b/gdb/ppc-musl.patch new file mode 100644 index 0000000..70cfa18 --- /dev/null +++ b/gdb/ppc-musl.patch @@ -0,0 +1,93 @@ +--- a/gdb/nat/ppc-linux.h ++++ b/gdb/nat/ppc-linux.h +@@ -18,7 +18,90 @@ + #ifndef PPC_LINUX_H + #define PPC_LINUX_H 1 + ++#if defined(__GLIBC__) || defined(__UCLIBC__) + #include ++#else // Musl ++// Do not include ptrace.h from Linux headers and since ++// Musl does not define PT_*, define them: ++ ++#define PT_R0 0 ++#define PT_R1 1 ++#define PT_R2 2 ++#define PT_R3 3 ++#define PT_R4 4 ++#define PT_R5 5 ++#define PT_R6 6 ++#define PT_R7 7 ++#define PT_R8 8 ++#define PT_R9 9 ++#define PT_R10 10 ++#define PT_R11 11 ++#define PT_R12 12 ++#define PT_R13 13 ++#define PT_R14 14 ++#define PT_R15 15 ++#define PT_R16 16 ++#define PT_R17 17 ++#define PT_R18 18 ++#define PT_R19 19 ++#define PT_R20 20 ++#define PT_R21 21 ++#define PT_R22 22 ++#define PT_R23 23 ++#define PT_R24 24 ++#define PT_R25 25 ++#define PT_R26 26 ++#define PT_R27 27 ++#define PT_R28 28 ++#define PT_R29 29 ++#define PT_R30 30 ++#define PT_R31 31 ++ ++#define PT_NIP 32 ++#define PT_MSR 33 ++#define PT_ORIG_R3 34 ++#define PT_CTR 35 ++#define PT_LNK 36 ++#define PT_XER 37 ++#define PT_CCR 38 ++#ifndef __powerpc64__ ++#define PT_MQ 39 ++#else ++#define PT_SOFTE 39 ++#endif ++#define PT_TRAP 40 ++#define PT_DAR 41 ++#define PT_DSISR 42 ++#define PT_RESULT 43 ++#define PT_DSCR 44 ++#define PT_REGS_COUNT 44 ++ ++#define PT_FPR0 48 /* each FP reg occupies 2 slots in this space */ ++ ++#ifndef __powerpc64__ ++ ++#define PT_FPR31 (PT_FPR0 + 2*31) ++#define PT_FPSCR (PT_FPR0 + 2*32 + 1) ++ ++#else /* __powerpc64__ */ ++ ++#define PT_FPSCR (PT_FPR0 + 32) /* each FP reg occupies 1 slot in 64-bit space */ ++ ++ ++#define PT_VR0 82 /* each Vector reg occupies 2 slots in 64-bit */ ++#define PT_VSCR (PT_VR0 + 32*2 + 1) ++#define PT_VRSAVE (PT_VR0 + 33*2) ++ ++ ++/* ++ * Only store first 32 VSRs here. The second 32 VSRs in VR0-31 ++ */ ++#define PT_VSR0 150 /* each VSR reg occupies 2 slots in 64-bit */ ++#define PT_VSR31 (PT_VSR0 + 2*31) ++#endif /* __powerpc64__ */ ++ ++#endif // Libc ++ + #include + + /* This sometimes isn't defined. */ diff --git a/gdb/ppc-ptregs.patch b/gdb/ppc-ptregs.patch new file mode 100644 index 0000000..743bd2e --- /dev/null +++ b/gdb/ppc-ptregs.patch @@ -0,0 +1,10 @@ +--- a/gdb/gdbserver/linux-ppc-low.c ++++ b/gdb/gdbserver/linux-ppc-low.c +@@ -21,7 +21,6 @@ + #include "linux-low.h" + + #include +-#include + + #include "nat/ppc-linux.h" + #include "linux-ppc-tdesc.h" diff --git a/gdb/s390x-use-elf-gdb_fpregset_t.patch b/gdb/s390x-use-elf-gdb_fpregset_t.patch new file mode 100644 index 0000000..669021f --- /dev/null +++ b/gdb/s390x-use-elf-gdb_fpregset_t.patch @@ -0,0 +1,150 @@ +The s390 versions of fill_gregset / supply_gregset and fill_fpregset / +supply_fpregset declare the data structure to be filled or supplied from +as gregset_t and fpregset_t, respectively, instead of gdb_gregset_t and +gdb_fpregset_t. This is incompatible with the declaration of these +functions in gregset.h. +gdb/ChangeLog: + + * s390-linux-nat.c (supply_gregset, fill_gregset, fetch_regs) + (store_regs): Replace gregset_t by gdb_gregset_t. + (supply_fpregset, fill_fpregset, fetch_fpregs, store_fpregs): + Replace fpregset_t by gdb_fpregset_t. +Credit to Andreas Arnez at IBM + +--- + +diff --git a/gdb/s390-linux-nat.c b/gdb/s390-linux-nat.c +index 2c60562..c48a35a 100644 +--- a/gdb/s390-linux-nat.c ++++ b/gdb/s390-linux-nat.c +@@ -153,7 +153,7 @@ static s390_linux_nat_target the_s390_linux_nat_target; + make them look like 32-bit registers. */ + + void +-supply_gregset (struct regcache *regcache, const gregset_t *regp) ++supply_gregset (struct regcache *regcache, const gdb_gregset_t *regp) + { + #ifdef __s390x__ + struct gdbarch *gdbarch = regcache->arch (); +@@ -164,7 +164,7 @@ supply_gregset (struct regcache *regcache, const gregset_t *regp) + gdb_byte buf[4]; + + regcache_supply_regset (&s390_64_gregset, regcache, -1, +- regp, sizeof (gregset_t)); ++ regp, sizeof (gdb_gregset_t)); + pswm = extract_unsigned_integer ((const gdb_byte *) regp + + S390_PSWM_OFFSET, 8, byte_order); + pswa = extract_unsigned_integer ((const gdb_byte *) regp +@@ -179,7 +179,7 @@ supply_gregset (struct regcache *regcache, const gregset_t *regp) + #endif + + regcache_supply_regset (&s390_gregset, regcache, -1, regp, +- sizeof (gregset_t)); ++ sizeof (gdb_gregset_t)); + } + + /* Fill register REGNO (if it is a general-purpose register) in +@@ -187,14 +187,14 @@ supply_gregset (struct regcache *regcache, const gregset_t *regp) + do this for all registers. */ + + void +-fill_gregset (const struct regcache *regcache, gregset_t *regp, int regno) ++fill_gregset (const struct regcache *regcache, gdb_gregset_t *regp, int regno) + { + #ifdef __s390x__ + struct gdbarch *gdbarch = regcache->arch (); + if (gdbarch_ptr_bit (gdbarch) == 32) + { + regcache_collect_regset (&s390_64_gregset, regcache, regno, +- regp, sizeof (gregset_t)); ++ regp, sizeof (gdb_gregset_t)); + + if (regno == -1 + || regno == S390_PSWM_REGNUM || regno == S390_PSWA_REGNUM) +@@ -231,26 +231,27 @@ fill_gregset (const struct regcache *regcache, gregset_t *regp, int regno) + #endif + + regcache_collect_regset (&s390_gregset, regcache, regno, regp, +- sizeof (gregset_t)); ++ sizeof (gdb_gregset_t)); + } + + /* Fill GDB's register array with the floating-point register values + in *REGP. */ + void +-supply_fpregset (struct regcache *regcache, const fpregset_t *regp) ++supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *regp) + { + regcache_supply_regset (&s390_fpregset, regcache, -1, regp, +- sizeof (fpregset_t)); ++ sizeof (gdb_fpregset_t)); + } + + /* Fill register REGNO (if it is a general-purpose register) in + *REGP with the value in GDB's register array. If REGNO is -1, + do this for all registers. */ + void +-fill_fpregset (const struct regcache *regcache, fpregset_t *regp, int regno) ++fill_fpregset (const struct regcache *regcache, gdb_fpregset_t *regp, ++ int regno) + { + regcache_collect_regset (&s390_fpregset, regcache, regno, regp, +- sizeof (fpregset_t)); ++ sizeof (gdb_fpregset_t)); + } + + /* Find the TID for the current inferior thread to use with ptrace. */ +@@ -270,7 +271,7 @@ s390_inferior_tid (void) + static void + fetch_regs (struct regcache *regcache, int tid) + { +- gregset_t regs; ++ gdb_gregset_t regs; + ptrace_area parea; + + parea.len = sizeof (regs); +@@ -279,7 +280,7 @@ fetch_regs (struct regcache *regcache, int tid) + if (ptrace (PTRACE_PEEKUSR_AREA, tid, (long) &parea, 0) < 0) + perror_with_name (_("Couldn't get registers")); + +- supply_gregset (regcache, (const gregset_t *) ®s); ++ supply_gregset (regcache, (const gdb_gregset_t *) ®s); + } + + /* Store all valid general-purpose registers in GDB's register cache +@@ -287,7 +288,7 @@ fetch_regs (struct regcache *regcache, int tid) + static void + store_regs (const struct regcache *regcache, int tid, int regnum) + { +- gregset_t regs; ++ gdb_gregset_t regs; + ptrace_area parea; + + parea.len = sizeof (regs); +@@ -307,7 +308,7 @@ store_regs (const struct regcache *regcache, int tid, int regnum) + static void + fetch_fpregs (struct regcache *regcache, int tid) + { +- fpregset_t fpregs; ++ gdb_fpregset_t fpregs; + ptrace_area parea; + + parea.len = sizeof (fpregs); +@@ -316,7 +317,7 @@ fetch_fpregs (struct regcache *regcache, int tid) + if (ptrace (PTRACE_PEEKUSR_AREA, tid, (long) &parea, 0) < 0) + perror_with_name (_("Couldn't get floating point status")); + +- supply_fpregset (regcache, (const fpregset_t *) &fpregs); ++ supply_fpregset (regcache, (const gdb_fpregset_t *) &fpregs); + } + + /* Store all valid floating-point registers in GDB's register cache +@@ -324,7 +325,7 @@ fetch_fpregs (struct regcache *regcache, int tid) + static void + store_fpregs (const struct regcache *regcache, int tid, int regnum) + { +- fpregset_t fpregs; ++ gdb_fpregset_t fpregs; + ptrace_area parea; + + parea.len = sizeof (fpregs); diff --git a/gdk-pixbuf/default/conf.sh b/gdk-pixbuf/default/conf.sh new file mode 100755 index 0000000..cf7c1e9 --- /dev/null +++ b/gdk-pixbuf/default/conf.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson \ + -Dinstalled_tests=false \ + -Dgio_sniffing=false \ + -Dx11=false \ + -Dprefix=$PREFIX \ + ../build diff --git a/gdk-pixbuf/default/deps b/gdk-pixbuf/default/deps new file mode 100644 index 0000000..b5379e3 --- /dev/null +++ b/gdk-pixbuf/default/deps @@ -0,0 +1,30 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +ldd +pkgconf +zlib +xz +libtiff +libjpeg-turbo +libpng +libffi +glib +gobject-introspection-dynamic +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +samurai diff --git a/gdk-pixbuf/default/inst.sh b/gdk-pixbuf/default/inst.sh new file mode 100755 index 0000000..db0b645 --- /dev/null +++ b/gdk-pixbuf/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +#meson install --no-rebuild -C ../build +samu -C ../build install diff --git a/gdk-pixbuf/default/make.sh b/gdk-pixbuf/default/make.sh new file mode 100755 index 0000000..2856381 --- /dev/null +++ b/gdk-pixbuf/default/make.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +samu -C ../build diff --git a/getopt/default/b/Makefile b/getopt/default/b/Makefile new file mode 100644 index 0000000..dccf6a2 --- /dev/null +++ b/getopt/default/b/Makefile @@ -0,0 +1,111 @@ +.SUFFIXES: + +DESTDIR= +prefix= +bindir=$(prefix)/bin +sharedir=$(prefix)/share +getoptdir=$(sharedir)/getopt +localedir=$(sharedir)/locale +mandir=$(sharedir)/man +man1dir=$(mandir)/man1 + +# Define this to 0 to use the getopt(3) routines in this package. +LIBCGETOPT=1 + +# Define this to 1 if you do not have the gettext routines +WITHOUT_GETTEXT=0 + +# For creating the archive +PACKAGE=getopt +VERSION=1.1.6 +BASENAME=$(PACKAGE)-$(VERSION) +UNLIKELYNAME=a8vwjfd92 + +SHELL=/bin/sh + +CC=gcc +LD=ld +RM=rm -f +INSTALL=install +MSGFMT=msgfmt + +LANGUAGES = ca cs da de es et eu fi fr gl hr hu id it ja nl pl pt_BR ru sl sv tr uk vi zh_CN zh_TW +MOFILES:=$(patsubst %,po/%.mo,$(LANGUAGES)) + +CPPFLAGS=-DLIBCGETOPT=$(LIBCGETOPT) -DWITHOUT_GETTEXT=$(WITHOUT_GETTEXT) -DLOCALEDIR=\"$(localedir)\" -DNOT_UTIL_LINUX -Dprogram_invocation_short_name=\"$(PACKAGE)\" -Dprogram_version=\"$(VERSION)\" +ifeq ($(LIBCGETOPT),0) +CPPFLAGS+=-I./gnu +endif +WARNINGS=-Wall \ + -W -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual \ + -Wcast-align -Wmissing-declarations \ + -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes \ + -Wnested-externs -Winline +OPTIMIZE=-O3 -fno-strength-reduce +CFLAGS=$(WARNINGS) $(OPTIMIZE) +LDFLAGS= + +sources=getopt.c +ifeq ($(LIBCGETOPT),0) +sources+=gnu/getopt.c gnu/getopt1.c +endif + +objects=$(sources:.c=.o) + +binaries=getopt + +.PHONY: all clean realclean +all: $(binaries) all_po + +clean: clean_po + -$(RM) $(objects) $(binaries) + +getopt: $(objects) + $(CC) $(LDFLAGS) -o $@ $(objects) + +install: getopt install_po + $(INSTALL) -m 755 -d $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir) + $(INSTALL) -m 755 getopt $(DESTDIR)$(bindir) + $(INSTALL) -m 644 getopt.1 $(DESTDIR)$(man1dir) + +install_doc: + $(INSTALL) -m 755 -d $(DESTDIR)$(getoptdir) + $(INSTALL) -m 755 getopt-parse.bash getopt-parse.tcsh \ + getopt-test.bash getopt-test.tcsh \ + $(DESTDIR)$(getoptdir) + +ifeq ($(WITHOUT_GETTEXT),0) +all_po: $(MOFILES) +install_po: all_po + $(INSTALL) -m 755 -d $(DESTDIR)$(localedir) + for lang in $(LANGUAGES) ; do \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(INSTALL) -m 755 -d $(DESTDIR)$$dir ;\ + $(INSTALL) -m 644 po/$$lang.mo $(DESTDIR)$$dir/getopt.mo ;\ + done +clean_po: + $(RM) $(MOFILES) +else +all_po: +install_po: +clean_po: +endif + +%.o: %.c + $(CC) -c $(CPPFLAGS) $(CFLAGS) $*.c -o $*.o + +%.mo: %.po + $(MSGFMT) -o $@ $< + +# You need GNU tar for this to work! +.PHONY: package +package: clean + $(RM) -r $(UNLIKELYNAME) + mkdir $(UNLIKELYNAME) + ln -s .. $(UNLIKELYNAME)/$(BASENAME) + cd $(UNLIKELYNAME) && tar cfvzp ../$(BASENAME).tar.gz --exclude='CVS' --exclude='*.tar.gz' --exclude=$(UNLIKELYNAME) $(BASENAME)/* + $(RM) -r $(UNLIKELYNAME) + +.PHONY: test +test: all + ./run-tests diff --git a/getopt/default/b/getopt.c b/getopt/default/b/getopt.c new file mode 100644 index 0000000..d63ac4f --- /dev/null +++ b/getopt/default/b/getopt.c @@ -0,0 +1,474 @@ +/* + * getopt.c - Enhanced implementation of BSD getopt(1) + * Copyright (c) 1997-2014 Frodo Looijaard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +/* + * Version 1.0-b4: Tue Sep 23 1997. First public release. + * Version 1.0: Wed Nov 19 1997. + * Bumped up the version number to 1.0 + * Fixed minor typo (CSH instead of TCSH) + * Version 1.0.1: Tue Jun 3 1998 + * Fixed sizeof instead of strlen bug + * Bumped up the version number to 1.0.1 + * Version 1.0.2: Thu Jun 11 1998 (not present) + * Fixed gcc-2.8.1 warnings + * Fixed --version/-V option (not present) + * Version 1.0.5: Tue Jun 22 1999 + * Make -u option work (not present) + * Version 1.0.6: Tue Jun 27 2000 + * No important changes + * Version 1.1.0: Tue Jun 30 2000 + * Added NLS support (partly written by Arkadiusz Miśkiewicz + * ) + * Version 1.1.4: Mon Nov 7 2005 + * Fixed a few type's in the manpage + * Version 1.1.5: Sun Aug 12 2012 + * Sync with util-linux-2.21, fixed build problems, many new translations + * Version 1.1.6: Mon Nov 24 2014 + * Sync with util-linux git 20141120, detect ambiguous long options, fix + * backslash problem in tcsh + */ + +/* Exit codes: + * 0) No errors, successful operation. + * 1) getopt(3) returned an error. + * 2) A problem with parameter parsing for getopt(1). + * 3) Internal error, out of memory + * 4) Returned for -T + */ +#define GETOPT_EXIT_CODE 1 +#define PARAMETER_EXIT_CODE 2 +#define XALLOC_EXIT_CODE 3 +#define TEST_EXIT_CODE 4 + +#include +#include +#include +#include +#include + +#if LIBCGETOPT +#include +#else +#include "getopt.h" +#endif + +#include "util-linux-compat.h" +#include "nls.h" +#include "xalloc.h" + +/* NON_OPT is the code that is returned when a non-option is found in '+' + * mode */ +#define NON_OPT 1 +/* LONG_OPT is the code that is returned when a long option is found. */ +#define LONG_OPT 0 + +/* The shells recognized. */ +typedef enum { BASH, TCSH } shell_t; + + +/* Some global variables that tells us how to parse. */ +static shell_t shell = BASH; /* The shell we generate output for. */ +static int quiet_errors = 0; /* 0 is not quiet. */ +static int quiet_output = 0; /* 0 is not quiet. */ +static int quote = 1; /* 1 is do quote. */ + +/* Allow changing which getopt is in use with function pointer */ +int (*getopt_long_fp) (int argc, char *const *argv, const char *optstr, + const struct option * longopts, int *longindex); + +/* Function prototypes */ +static const char *normalize(const char *arg); +static int generate_output(char *argv[], int argc, const char *optstr, + const struct option *longopts); +static void parse_error(const char *message); +static void add_long_options(char *options); +static void add_longopt(const char *name, int has_arg); +static void print_help(void); +static void set_shell(const char *new_shell); + +/* + * This function 'normalizes' a single argument: it puts single quotes + * around it and escapes other special characters. If quote is false, it + * just returns its argument. + * + * Bash only needs special treatment for single quotes; tcsh also recognizes + * exclamation marks within single quotes, and nukes whitespace. This + * function returns a pointer to a buffer that is overwritten by each call. + */ +static const char *normalize(const char *arg) +{ + static char *BUFFER = NULL; + const char *argptr = arg; + char *bufptr; + + free(BUFFER); + + if (!quote) { + /* Just copy arg */ + BUFFER = xmalloc(strlen(arg) + 1); + strcpy(BUFFER, arg); + return BUFFER; + } + + /* + * Each character in arg may take up to four characters in the + * result: For a quote we need a closing quote, a backslash, a quote + * and an opening quote! We need also the global opening and closing + * quote, and one extra character for '\0'. + */ + BUFFER = xmalloc(strlen(arg) * 4 + 3); + + bufptr = BUFFER; + *bufptr++ = '\''; + + while (*argptr) { + if (*argptr == '\'') { + /* Quote: replace it with: '\'' */ + *bufptr++ = '\''; + *bufptr++ = '\\'; + *bufptr++ = '\''; + *bufptr++ = '\''; + } else if (shell == TCSH && *argptr == '\\') { + /* Backslash: replace it with: '\\' */ + *bufptr++ = '\\'; + *bufptr++ = '\\'; + } else if (shell == TCSH && *argptr == '!') { + /* Exclamation mark: replace it with: \! */ + *bufptr++ = '\''; + *bufptr++ = '\\'; + *bufptr++ = '!'; + *bufptr++ = '\''; + } else if (shell == TCSH && *argptr == '\n') { + /* Newline: replace it with: \n */ + *bufptr++ = '\\'; + *bufptr++ = 'n'; + } else if (shell == TCSH && isspace(*argptr)) { + /* Non-newline whitespace: replace it with \ */ + *bufptr++ = '\''; + *bufptr++ = '\\'; + *bufptr++ = *argptr; + *bufptr++ = '\''; + } else + /* Just copy */ + *bufptr++ = *argptr; + argptr++; + } + *bufptr++ = '\''; + *bufptr++ = '\0'; + return BUFFER; +} + +/* + * Generate the output. argv[0] is the program name (used for reporting errors). + * argv[1..] contains the options to be parsed. argc must be the number of + * elements in argv (ie. 1 if there are no options, only the program name), + * optstr must contain the short options, and longopts the long options. + * Other settings are found in global variables. + */ +static int generate_output(char *argv[], int argc, const char *optstr, + const struct option *longopts) +{ + int exit_code = EXIT_SUCCESS; /* Assume everything will be OK */ + int opt; + int longindex; + const char *charptr; + + if (quiet_errors) + /* No error reporting from getopt(3) */ + opterr = 0; + /* Reset getopt(3) */ + optind = 0; + + while ((opt = + (getopt_long_fp(argc, argv, optstr, longopts, &longindex))) + != EOF) + if (opt == '?' || opt == ':') + exit_code = GETOPT_EXIT_CODE; + else if (!quiet_output) { + if (opt == LONG_OPT) { + printf(" --%s", longopts[longindex].name); + if (longopts[longindex].has_arg) + printf(" %s", normalize(optarg ? optarg : "")); + } else if (opt == NON_OPT) + printf(" %s", normalize(optarg ? optarg : "")); + else { + printf(" -%c", opt); + charptr = strchr(optstr, opt); + if (charptr != NULL && *++charptr == ':') + printf(" %s", normalize(optarg ? optarg : "")); + } + } + + if (!quiet_output) { + printf(" --"); + while (optind < argc) + printf(" %s", normalize(argv[optind++])); + printf("\n"); + } + return exit_code; +} + +/* + * Report an error when parsing getopt's own arguments. If message is NULL, + * we already sent a message, we just exit with a helpful hint. + */ +static void __attribute__ ((__noreturn__)) parse_error(const char *message) +{ + if (message) + warnx("%s", message); + fprintf(stderr, _("Try `%s --help' for more information.\n"), + program_invocation_short_name); + exit(PARAMETER_EXIT_CODE); +} + +static struct option *long_options = NULL; +static int long_options_length = 0; /* Length of array */ +static int long_options_nr = 0; /* Nr of used elements in array */ +#define LONG_OPTIONS_INCR 10 +#define init_longopt() add_longopt(NULL,0) + +/* Register a long option. The contents of name is copied. */ +static void add_longopt(const char *name, int has_arg) +{ + char *tmp; + static int flag; + + if (!name) { + /* init */ + free(long_options); + long_options = NULL; + long_options_length = 0; + long_options_nr = 0; + } + + if (long_options_nr == long_options_length) { + long_options_length += LONG_OPTIONS_INCR; + long_options = xrealloc(long_options, + sizeof(struct option) * + long_options_length); + } + + long_options[long_options_nr].name = NULL; + long_options[long_options_nr].has_arg = 0; + long_options[long_options_nr].flag = NULL; + long_options[long_options_nr].val = 0; + + if (long_options_nr && name) { + /* Not for init! */ + long_options[long_options_nr - 1].has_arg = has_arg; + long_options[long_options_nr - 1].flag = &flag; + long_options[long_options_nr - 1].val = long_options_nr; + tmp = xmalloc(strlen(name) + 1); + strcpy(tmp, name); + long_options[long_options_nr - 1].name = tmp; + } + long_options_nr++; +} + + +/* + * Register several long options. options is a string of long options, + * separated by commas or whitespace. This nukes options! + */ +static void add_long_options(char *options) +{ + int arg_opt; + char *tokptr = strtok(options, ", \t\n"); + while (tokptr) { + arg_opt = no_argument; + if (strlen(tokptr) > 0) { + if (tokptr[strlen(tokptr) - 1] == ':') { + if (tokptr[strlen(tokptr) - 2] == ':') { + tokptr[strlen(tokptr) - 2] = '\0'; + arg_opt = optional_argument; + } else { + tokptr[strlen(tokptr) - 1] = '\0'; + arg_opt = required_argument; + } + if (strlen(tokptr) == 0) + parse_error(_ + ("empty long option after " + "-l or --long argument")); + } + add_longopt(tokptr, arg_opt); + } + tokptr = strtok(NULL, ", \t\n"); + } +} + +static void set_shell(const char *new_shell) +{ + if (!strcmp(new_shell, "bash")) + shell = BASH; + else if (!strcmp(new_shell, "tcsh")) + shell = TCSH; + else if (!strcmp(new_shell, "sh")) + shell = BASH; + else if (!strcmp(new_shell, "csh")) + shell = TCSH; + else + parse_error(_ + ("unknown shell after -s or --shell argument")); +} + +static void __attribute__ ((__noreturn__)) print_help(void) +{ + fputs(USAGE_HEADER, stderr); + fprintf(stderr, _( + " %1$s optstring parameters\n" + " %1$s [options] [--] optstring parameters\n" + " %1$s [options] -o|--options optstring [options] [--] parameters\n"), + program_invocation_short_name); + + fputs(USAGE_OPTIONS, stderr); + fputs(_(" -a, --alternative Allow long options starting with single -\n"), stderr); + fputs(_(" -l, --longoptions Long options to be recognized\n"), stderr); + fputs(_(" -n, --name The name under which errors are reported\n"), stderr); + fputs(_(" -o, --options Short options to be recognized\n"), stderr); + fputs(_(" -q, --quiet Disable error reporting by getopt(3)\n"), stderr); + fputs(_(" -Q, --quiet-output No normal output\n"), stderr); + fputs(_(" -s, --shell Set shell quoting conventions\n"), stderr); + fputs(_(" -T, --test Test for getopt(1) version\n"), stderr); + fputs(_(" -u, --unquoted Do not quote the output\n"), stderr); + fputs(USAGE_SEPARATOR, stderr); + fputs(USAGE_HELP, stderr); + fputs(USAGE_VERSION, stderr); + fprintf(stderr, USAGE_MAN_TAIL("getopt(1)")); + exit(PARAMETER_EXIT_CODE); +} + +int main(int argc, char *argv[]) +{ + char *optstr = NULL; + char *name = NULL; + int opt; + int compatible = 0; + + /* Stop scanning as soon as a non-option argument is found! */ + static const char *shortopts = "+ao:l:n:qQs:TuhV"; + static const struct option longopts[] = { + {"options", required_argument, NULL, 'o'}, + {"longoptions", required_argument, NULL, 'l'}, + {"quiet", no_argument, NULL, 'q'}, + {"quiet-output", no_argument, NULL, 'Q'}, + {"shell", required_argument, NULL, 's'}, + {"test", no_argument, NULL, 'T'}, + {"unquoted", no_argument, NULL, 'u'}, + {"help", no_argument, NULL, 'h'}, + {"alternative", no_argument, NULL, 'a'}, + {"name", required_argument, NULL, 'n'}, + {"version", no_argument, NULL, 'V'}, + {NULL, 0, NULL, 0} + }; + + #ifdef LC_ALL + setlocale(LC_ALL, ""); + #endif + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + init_longopt(); + getopt_long_fp = getopt_long; + + if (getenv("GETOPT_COMPATIBLE")) + compatible = 1; + + if (argc == 1) { + if (compatible) { + /* + * For some reason, the original getopt gave no + * error when there were no arguments. + */ + printf(" --\n"); + return EXIT_SUCCESS; + } else + parse_error(_("missing optstring argument")); + } + + if (argv[1][0] != '-' || compatible) { + quote = 0; + optstr = xmalloc(strlen(argv[1]) + 1); + strcpy(optstr, argv[1] + strspn(argv[1], "-+")); + argv[1] = argv[0]; + return generate_output(argv + 1, argc - 1, optstr, + long_options); + } + + while ((opt = + getopt_long(argc, argv, shortopts, longopts, NULL)) != EOF) + switch (opt) { + case 'a': + getopt_long_fp = getopt_long_only; + break; + case 'h': + print_help(); + case 'o': + free(optstr); + optstr = xmalloc(strlen(optarg) + 1); + strcpy(optstr, optarg); + break; + case 'l': + add_long_options(optarg); + break; + case 'n': + free(name); + name = xmalloc(strlen(optarg) + 1); + strcpy(name, optarg); + break; + case 'q': + quiet_errors = 1; + break; + case 'Q': + quiet_output = 1; + break; + case 's': + set_shell(optarg); + break; + case 'T': + return TEST_EXIT_CODE; + case 'u': + quote = 0; + break; + case 'V': + printf(UTIL_LINUX_VERSION); + return EXIT_SUCCESS; + case '?': + case ':': + parse_error(NULL); + default: + parse_error(_("internal error, contact the author.")); + } + + if (!optstr) { + if (optind >= argc) + parse_error(_("missing optstring argument")); + else { + optstr = xmalloc(strlen(argv[optind]) + 1); + strcpy(optstr, argv[optind]); + optind++; + } + } + if (name) + argv[optind - 1] = name; + else + argv[optind - 1] = argv[0]; + + return generate_output(argv + optind - 1, argc-optind + 1, + optstr, long_options); +} diff --git a/getopt/default/conf.sh b/getopt/default/conf.sh new file mode 100755 index 0000000..ce18b43 --- /dev/null +++ b/getopt/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "no configuration to be done." diff --git a/getopt/default/deps b/getopt/default/deps new file mode 100644 index 0000000..113c33c --- /dev/null +++ b/getopt/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +gettext diff --git a/getopt/default/patch b/getopt/default/patch new file mode 100644 index 0000000..82489c2 --- /dev/null +++ b/getopt/default/patch @@ -0,0 +1,33 @@ +diff -u a/Makefile b/Makefile +--- a/Makefile 2014-11-24 12:33:39.000000000 +0000 ++++ b/Makefile 2020-10-11 03:17:17.000000000 +0000 +@@ -1,13 +1,13 @@ + .SUFFIXES: + + DESTDIR= +-prefix=/usr/local ++prefix= + bindir=$(prefix)/bin +-mandir=$(prefix)/man +-man1dir=$(mandir)/man1 + sharedir=$(prefix)/share + getoptdir=$(sharedir)/getopt + localedir=$(sharedir)/locale ++mandir=$(sharedir)/man ++man1dir=$(mandir)/man1 + + # Define this to 0 to use the getopt(3) routines in this package. + LIBCGETOPT=1 +diff -u a/getopt.c b/getopt.c +--- a/getopt.c 2020-10-11 03:18:14.030000000 +0000 ++++ b/getopt.c 2020-10-11 03:21:20.480000000 +0000 +@@ -377,7 +377,9 @@ + {NULL, 0, NULL, 0} + }; + ++ #ifdef LC_ALL + setlocale(LC_ALL, ""); ++ #endif + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + diff --git a/gettext/default/conf.sh b/gettext/default/conf.sh new file mode 100755 index 0000000..b0f256e --- /dev/null +++ b/gettext/default/conf.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +# force posix-compliant printf and a shared build. +gt_cv_func_printf_posix=yes \ +CFLAGS="" \ +CXXFLAGS="" \ +CPPFLAGS="" \ +LDFLAGS="" \ +LIBS="-lxml2 -lunistring" \ +./configure \ + --enable-threads=posix \ + --disable-java \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/gettext/default/deps b/gettext/default/deps new file mode 100644 index 0000000..5afcf6c --- /dev/null +++ b/gettext/default/deps @@ -0,0 +1,16 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +gzip +perl +ncurses +libxml2 +libunistring diff --git a/giflib/default/conf.sh b/giflib/default/conf.sh new file mode 100755 index 0000000..524d8b6 --- /dev/null +++ b/giflib/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to configure." diff --git a/giflib/default/deps b/giflib/default/deps new file mode 100644 index 0000000..0b9c548 --- /dev/null +++ b/giflib/default/deps @@ -0,0 +1,11 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed diff --git a/giflib/default/patch b/giflib/default/patch new file mode 100644 index 0000000..ca637ec --- /dev/null +++ b/giflib/default/patch @@ -0,0 +1,11 @@ +--- a/Makefile 2019-06-24 16:08:57.000000000 +0000 ++++ b/Makefile 2020-09-08 21:02:24.290000000 +0000 +@@ -14,7 +14,7 @@ + TAR = tar + INSTALL = install + +-PREFIX = /usr/local ++PREFIX = + BINDIR = $(PREFIX)/bin + INCDIR = $(PREFIX)/include + LIBDIR = $(PREFIX)/lib diff --git a/git/default/conf.sh b/git/default/conf.sh new file mode 100755 index 0000000..4870a0e --- /dev/null +++ b/git/default/conf.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +set -e + +# git won't build without msgfmt, and gettext-tools won't build on a +# static-linked musl machine. make it a no-op if it's not available. +which msgfmt 2> /dev/null \ +|| sed -i 's/MSGFMT = msgfmt/MSGFMT = echo/' Makefile + +make configure + +CFLAGS="$CFLAGS -g -O2 -Wall" \ +LIBS="-lbearssl -lz" \ +NO_REGEX=YesPlease \ +NO_GETTEXT=YesPlease \ +./configure \ + --without-tcltk \ + --with-expat \ + --with-libpcre2 \ + --build=$(uname -m)-lix-linux-musl \ + --prefix= + +## explanation +# +# CFLAGS: do some completely optional optimization. +# +# LIBS: libcurl seems to depend on bearssl and zlib being included. git doesn't +# seem to pull these in automatically, so it's done here with LIBS. +# +# NO_GETTEXT: gettext allows for internationalization. i.e., it lets git +# replace english text with pre-translated strings based on the user's +# locale. nothing wrong with that, except gettext does not appear to +# compile on static-only musl machines. +# +# NO_REGEX: git relies on global regex constants that are not in musl. +# +# --without-tcltk: don't bother building "git gui." +# +# --with-expat: can't "git push" over http[s] without libexpat. +# +# --with-libpcre2: support perl-compatible regular expressions. +# +# --build: doesn't infer the right build triple on its own. +# +# --prefix: make sure git doesn't put anything in /usr/local. keep it simple. diff --git a/git/default/deps b/git/default/deps new file mode 100644 index 0000000..e3c113c --- /dev/null +++ b/git/default/deps @@ -0,0 +1,21 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libarchive +m4 +automake +autoconf +expat +pcre2 +perl +zlib +bearssl +curl diff --git a/glib-networking/default/conf.sh b/glib-networking/default/conf.sh new file mode 100755 index 0000000..5c015f8 --- /dev/null +++ b/glib-networking/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson --prefix="$PREFIX" . ../build diff --git a/glib-networking/default/deps b/glib-networking/default/deps new file mode 100644 index 0000000..666a6b4 --- /dev/null +++ b/glib-networking/default/deps @@ -0,0 +1,33 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +libffi +zlib +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +samurai +tls-certs +glib +gobject-introspection-dynamic +libproxy +libgcrypt +p11-kit +gsettings-desktop-schemas +libtasn1 +nettle +gnutls diff --git a/glib-networking/default/env.sh b/glib-networking/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/glib-networking/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/glib-networking/default/inst.sh b/glib-networking/default/inst.sh new file mode 100755 index 0000000..fe63643 --- /dev/null +++ b/glib-networking/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +meson install --no-rebuild -C ../build +rm -rf /lib/systemd diff --git a/glib-networking/default/make.sh b/glib-networking/default/make.sh new file mode 100755 index 0000000..0af5a37 --- /dev/null +++ b/glib-networking/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson compile -j$(nproc) -C ../build diff --git a/glib/default/conf.sh b/glib/default/conf.sh new file mode 100755 index 0000000..525860b --- /dev/null +++ b/glib/default/conf.sh @@ -0,0 +1,20 @@ +#!/bin/sh -e + +export DESTDIR="$1" + +# Don't build tests/fuzzing stuff. +find . -type f -name meson.build -exec \ + sed -i "/subdir('tests')/d;/subdir('fuzzing')/d" {} + + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson \ + -Ddefault_library=both \ + -Dinstalled_tests=false \ + -Dinternal_pcre=true \ + -Dman=false \ + -Dfam=false \ + --prefix=/usr \ + ../build + #-Dlibmount=disabled \ diff --git a/glib/default/conf.sh.bak b/glib/default/conf.sh.bak new file mode 100755 index 0000000..9047a23 --- /dev/null +++ b/glib/default/conf.sh.bak @@ -0,0 +1,24 @@ +#!/bin/sh -e + +export DESTDIR="$1" + +# Remove 'libelf' and 'util-linux' dependencies. +sed -i 's/HAVE_LIBELF/HAVE_KISS/' gio/meson.build +sed -i 's/libmount_dep.found()/false/' meson.build + +# Don't build tests/fuzzing stuff. +find . -type f -name meson.build -exec \ + sed -i "/subdir('tests')/d;/subdir('fuzzing')/d" {} + + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson \ + -Ddefault_library=both \ + -Dlibmount=disabled \ + -Dinstalled_tests=false \ + -Dman=false \ + -Dfam=false \ + -Dinternal_pcre=true \ + --prefix=/usr \ + ../build diff --git a/glib/default/deps b/glib/default/deps new file mode 100644 index 0000000..fee5583 --- /dev/null +++ b/glib/default/deps @@ -0,0 +1,24 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +zlib +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +pkgconf +libffi +libelf diff --git a/glib/default/inst.sh b/glib/default/inst.sh new file mode 100755 index 0000000..df4934e --- /dev/null +++ b/glib/default/inst.sh @@ -0,0 +1,5 @@ +#!/bin/sh -e + +samu -C ../build install + +#kiss l dbus >/dev/null || rm -rf "$1/usr/bin/gdbus" diff --git a/glib/default/kiss.sh b/glib/default/kiss.sh new file mode 100755 index 0000000..d4ec56d --- /dev/null +++ b/glib/default/kiss.sh @@ -0,0 +1,53 @@ +#!/bin/sh -e + +export DESTDIR="$1" + +# Remove 'libelf' and 'util-linux' dependencies. +sed -i 's/HAVE_LIBELF/HAVE_KISS/' gio/meson.build +sed -i 's/libmount_dep.found()/false/' meson.build + +# Don't build tests/fuzzing stuff. +find . -type f -name meson.build -exec \ + sed -i "/subdir('tests')/d;/subdir('fuzzing')/d" {} + + +meson \ + --prefix=/usr \ + -Dlibmount=disabled \ + -Dinstalled_tests=false \ + -Ddefault_library=both \ + -Dman=false \ + -Dfam=false \ + -Dinternal_pcre=true \ + . build + +ninja -C build +ninja -C build install + +# json-glib is a separate package which we build alongside +# glib (as if they were one and the same). The upstream for +# json-glib is effectively dead (only translation work) so +# this makes my life a little easier.. +{ + cd json-glib + + # This mess of CFLAGS, etc is needed to point json-glib to + # the freshly built glib sources instead of the system's. + export PKG_CONFIG_PATH="$1/usr/lib/pkgconfig:$PKG_CONFIG_PATH" + export PATH="$1/usr/bin:$PATH" + export CFLAGS="$CFLAGS -I$1/usr/include/glib-2.0" + export CFLAGS="$CFLAGS -I$1/usr/lib/glib-2.0/include -pthread" + export LDFLAGS="$LDFLAGS -L$1/usr/lib/" + + meson \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + -Ddocs=false \ + -Dintrospection=false \ + . output + + ninja -C output + ninja -C output install +} + +kiss l dbus >/dev/null || rm -rf "$1/usr/bin/gdbus" diff --git a/glib/default/make.sh b/glib/default/make.sh new file mode 100755 index 0000000..43f1628 --- /dev/null +++ b/glib/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build diff --git a/gmp/default/conf.sh b/gmp/default/conf.sh new file mode 100755 index 0000000..8283465 --- /dev/null +++ b/gmp/default/conf.sh @@ -0,0 +1,14 @@ +#!/bin/sh -e + +# force update to libtool with fixed cross-build support +libtoolize -f + +./configure \ + --localstatedir=/var/state/gmp \ + --enable-cxx \ + --with-pic \ + --enable-static \ + --enable-shared \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" diff --git a/gmp/default/deps b/gmp/default/deps new file mode 100644 index 0000000..0323b87 --- /dev/null +++ b/gmp/default/deps @@ -0,0 +1,16 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +perl +m4 +texinfo +libtool diff --git a/gmp/default/env.sh b/gmp/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/gmp/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/gmp/default/inst.sh b/gmp/default/inst.sh new file mode 100755 index 0000000..25829c3 --- /dev/null +++ b/gmp/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +make -j1 install +make check diff --git a/gnu-grep/default/deps b/gnu-grep/default/deps new file mode 100644 index 0000000..f40fa4d --- /dev/null +++ b/gnu-grep/default/deps @@ -0,0 +1,9 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash diff --git a/gnu-readline/default/conf.sh b/gnu-readline/default/conf.sh new file mode 100755 index 0000000..f99a57a --- /dev/null +++ b/gnu-readline/default/conf.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +./configure --disable-shared \ + --enable-static \ + --build=$(uname -m)-lix-linux-musl \ + --host=$(uname -m)-lix-linux-musl \ + --docdir=/share/doc \ + --prefix= + +## explanation +# +# --disable-shared: don't build the shared library. +# +# --enable-static: build the static library. +# +# --build: make sure the build string is correct. +# +# --host: make sure the host string is correct. +# +# --docdir: the 'doc' directory defaults to /doc instead of /share/doc. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/gnu-readline/default/deps b/gnu-readline/default/deps new file mode 100644 index 0000000..8494467 --- /dev/null +++ b/gnu-readline/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +musl-cross-make +make +automake +autoconf +dash +patch +awk +gnu-grep +gnu-sed diff --git a/gnu-sed/default/deps b/gnu-sed/default/deps new file mode 100644 index 0000000..f40fa4d --- /dev/null +++ b/gnu-sed/default/deps @@ -0,0 +1,9 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash diff --git a/gnu-tar/default/env.sh b/gnu-tar/default/env.sh new file mode 100755 index 0000000..3283b1d --- /dev/null +++ b/gnu-tar/default/env.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +export LDFLAGS="${LDFLAGS:---static -static}" +export CFLAGS="${CFLAGS:---static -static}" +export CXXFLAGS="${CXXFLAGS:---static -static}" +export FORCE_UNSAFE_CONFIGURE=1 diff --git a/gnupg-dynamic/2/conf.sh b/gnupg-dynamic/2/conf.sh new file mode 100755 index 0000000..4a4635a --- /dev/null +++ b/gnupg-dynamic/2/conf.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +./configure --disable-nls \ + --enable-bzip2 \ + --enable-tofu \ + --enable-scdaemon \ + --build=$(uname -m)-lix-linux-musl \ + --host=$(uname -m)-lix-linux-musl \ + --prefix= + +## explanation +# +# --disable-nls: don't bother with localisation. +# +# --enable-bzip2: enable bzip2 compression. +# +# --enable-tofu: "trust on first use." weaker than web of trust, but easier to +# use. may reconsider this decision later... +# +# --enable-scdaemon: enable smartcard support. +# +# --build: make sure the correct build string is set. +# +# --host: make sure the correct host string is set. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/gnupg-dynamic/2/deps b/gnupg-dynamic/2/deps new file mode 100644 index 0000000..0da09c7 --- /dev/null +++ b/gnupg-dynamic/2/deps @@ -0,0 +1,25 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +musl-cross-make +make +automake +autoconf +dash +patch +awk +gnu-grep +gnu-sed +libgpg-error +libassuan +libgcrypt +libksba +npth +zlib +bzip2 +libusb +sqlite +pinentry +pcsc-lite +ccid diff --git a/gnupg-dynamic/2/env.sh b/gnupg-dynamic/2/env.sh new file mode 100755 index 0000000..b2946ed --- /dev/null +++ b/gnupg-dynamic/2/env.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +export LDFLAGS="-L/lib" +export CFLAGS="-I/include" + +# TODO: remove the need for these lines by making musl-cross-make build a gcc +# with a header search path of /include only, with all headers contained there. +CPATH="$CPATH:/include:/powerpc64le-lix-linux-musl/include" +CPATH="$CPATH:/include/c++/9.2.0/powerpc64le-lix-linux-musl:/include/c++/9.2.0" +export CPATH diff --git a/gnupg/1/deps b/gnupg/1/deps new file mode 100644 index 0000000..d2c1ec9 --- /dev/null +++ b/gnupg/1/deps @@ -0,0 +1,17 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +musl-cross-make +make +automake +autoconf +dash +patch +awk +gnu-grep +gnu-sed +libgpg-error +libassuan +libgcrypt +pinentry diff --git a/gnupg/2/conf.sh b/gnupg/2/conf.sh new file mode 100755 index 0000000..8aed5d8 --- /dev/null +++ b/gnupg/2/conf.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +# intermediate binaries get linked dynamically without this line. +# may not be a problem now, but it could be later. has been before. +CC="gcc $CFLAGS" \ +./configure --disable-nls \ + --enable-bzip2 \ + --enable-tofu \ + --disable-scdaemon \ + --disable-ccid-driver \ + --build=$(uname -m)-lix-linux-musl \ + --host=$(uname -m)-lix-linux-musl \ + --prefix= + +## explanation +# +# --disable-nls: don't bother with localisation. +# +# --enable-bzip2: enable bzip2 compression. +# +# --enable-tofu: "trust on first use." weaker than web of trust, but easier to +# use. may reconsider this decision later... +# +# --disable-scdaemon: don't build smartcard support. +# +# --disable-ccid-driver: don't build the ccid smartcard driver. +# +# --build: make sure the correct build string is set. +# +# --host: make sure the correct host string is set. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/gnupg/2/deps b/gnupg/2/deps new file mode 100644 index 0000000..f47b414 --- /dev/null +++ b/gnupg/2/deps @@ -0,0 +1,23 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +musl-cross-make +make +automake +autoconf +dash +patch +awk +gnu-grep +gnu-sed +libgpg-error +libassuan +libgcrypt +libksba +npth +zlib +bzip2 +libusb +sqlite +pinentry diff --git a/gnutls/default/conf.sh b/gnutls/default/conf.sh new file mode 100755 index 0000000..90e7d8b --- /dev/null +++ b/gnutls/default/conf.sh @@ -0,0 +1,14 @@ +#!/bin/sh -e + +LIBS="-lgmp" \ +./configure \ + --disable-guile \ + --disable-rpath \ + --disable-valgrind-tests \ + --disable-openssl-compatibility \ + --with-default-trust-store-pkcs11="pkcs11:" \ + --enable-static \ + --enable-shared \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" diff --git a/gnutls/default/deps b/gnutls/default/deps new file mode 100644 index 0000000..28b58a1 --- /dev/null +++ b/gnutls/default/deps @@ -0,0 +1,21 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +perl +m4 +texinfo +zlib +libtasn1 +p11-kit +libunistring +nettle +gmp diff --git a/gnutls/default/env.sh b/gnutls/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/gnutls/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/gnutls/default/patches-available/tests-certtool.patch b/gnutls/default/patches-available/tests-certtool.patch new file mode 100644 index 0000000..3c6a9a1 --- /dev/null +++ b/gnutls/default/patches-available/tests-certtool.patch @@ -0,0 +1,24 @@ +I think this tests is simply wrong. +When a PIN is given, the program should run in batch mode. +So the question for "Enter password" should _not_ be present. + +--- a/tests/cert-tests/certtool 2019-02-07 07:33:45.960887338 +0000 ++++ b/tests/cert-tests/certtool 2019-02-07 07:36:14.550955051 +0000 +@@ -49,7 +49,7 @@ + + #check whether password is being honoured + #some CI runners need GNUTLS_PIN (GNUTLS_PIN=${PASS}) +- ${SETSID} "${CERTTOOL}" --generate-self-signed --load-privkey ${TMPFILE1} --template ${srcdir}/templates/template-test.tmpl --ask-pass >${TMPFILE2} 2>&1 <${TMPFILE2} 2>&1 </dev/null 2>&1 +- if test $? != 0;then ++ if test $? != 1; then + cat ${TMPFILE2} + echo "No password was asked" + exit 1 diff --git a/gnutls/default/patches-available/tests-crq.patch b/gnutls/default/patches-available/tests-crq.patch new file mode 100644 index 0000000..948ece5 --- /dev/null +++ b/gnutls/default/patches-available/tests-crq.patch @@ -0,0 +1,31 @@ +The "crq" test somehow fails, I don't exactly know why. +I'm pretty sure that the test is faulty, so I just patch the expected result. + +--- a/tests/cert-tests/data/template-long-dns-crq.pem 2019-02-07 07:28:24.865062914 +0000 ++++ b/tests/cert-tests/data/template-long-dns-crq.pem 2019-02-07 07:28:29.908997322 +0000 +@@ -23,8 +23,8 @@ + Basic Constraints (critical): + Certificate Authority (CA): FALSE + Key Purpose (critical): +- Time stamping. +- Ipsec IKE. ++ Email protection. ++ OCSP signing. + Key Usage (critical): + Digital signature. + Key encipherment. +@@ -53,9 +53,9 @@ + cnktdmVyeS12ZXJ5LXZlcnktdmVyeS12ZXJ5LXZlcnktdmVyeS12ZXJ5LXZlcnkt + dmVyeS12ZXJ5LXZlcnktdmVyeS12ZXJ5LXZlcnktdmVyeS12ZXJ5LXZlcnktdmVy + eS12ZXJ5LXZlcnktdmVyeS12ZXJ5LXZlcnktdmVyeS1sb25nLmNvbTAMBgNVHRMB +-Af8EAjAAMCAGA1UdJQEB/wQWMBQGCCsGAQUFBwMIBggrBgEFBQcDETAPBgNVHQ8B +-Af8EBQMDB6AAMA0GCSqGSIb3DQEBCwUAA4GBAAvOg5LbxJz4p0WZIRSqUJt73TO6 +-9uJwZrvhknWoOcAAKQC77eQ/oKqXuma1OX9TDzgUrBw7IIGcsR8Gi47ix9rAkhuR +-orrwaKg3zc0NnO105jy37AX28m+9yF3rXBsfkKepzU7KQU9Nco4Y6WGYoJb/Vbzt +-G+/JZg2ixgPsm/1b ++Af8EAjAAMCAGA1UdJQEB/wQWMBQGCCsGAQUFBwMEBggrBgEFBQcDCTAPBgNVHQ8B ++Af8EBQMDB6AAMA0GCSqGSIb3DQEBCwUAA4GBAA1ewR8HbtPWqdobY48JE0vFZe35 ++F99U/I6cl6CNcjcVrqQq5B2LtQIZtAO9inP6ldO6cTLiQFq9uAOdWNhuwO/ihbbM ++Gr4nVl56qSG7voi4jHdhfRGj9PkuFPvmSD90tIc+LFD0T2vtOz+BptaaiN4wYAeI ++2dVyz3dNNT0qf+BB + -----END NEW CERTIFICATE REQUEST----- diff --git a/gnutls/default/patches-enabled/tests-certtool.patch b/gnutls/default/patches-enabled/tests-certtool.patch new file mode 120000 index 0000000..0a3e1cf --- /dev/null +++ b/gnutls/default/patches-enabled/tests-certtool.patch @@ -0,0 +1 @@ +../patches-available/tests-certtool.patch \ No newline at end of file diff --git a/gnutls/default/patches-enabled/tests-crq.patch b/gnutls/default/patches-enabled/tests-crq.patch new file mode 120000 index 0000000..e0fae89 --- /dev/null +++ b/gnutls/default/patches-enabled/tests-crq.patch @@ -0,0 +1 @@ +../patches-available/tests-crq.patch \ No newline at end of file diff --git a/gobject-introspection-dynamic/default/conf.sh b/gobject-introspection-dynamic/default/conf.sh new file mode 100755 index 0000000..2d88318 --- /dev/null +++ b/gobject-introspection-dynamic/default/conf.sh @@ -0,0 +1,6 @@ +#!/bin/sh -e + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson --prefix=/usr ../build diff --git a/gobject-introspection-dynamic/default/deps b/gobject-introspection-dynamic/default/deps new file mode 100644 index 0000000..a70aeaa --- /dev/null +++ b/gobject-introspection-dynamic/default/deps @@ -0,0 +1,40 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +ldd +perl +m4 +flex +bison +libffi +diffutils +bzip2 +zlib +libpng +expat +git +tls-certs +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +pixman +glib +harfbuzz +freetype +cairo +fontconfig +samurai +pkgconf diff --git a/gobject-introspection-dynamic/default/inst.sh b/gobject-introspection-dynamic/default/inst.sh new file mode 100755 index 0000000..ad4636f --- /dev/null +++ b/gobject-introspection-dynamic/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +#meson install --no-rebuild -C ../build +samu -C ../build install diff --git a/gobject-introspection-dynamic/default/make.sh b/gobject-introspection-dynamic/default/make.sh new file mode 100755 index 0000000..3fc2f62 --- /dev/null +++ b/gobject-introspection-dynamic/default/make.sh @@ -0,0 +1,8 @@ +#!/bin/sh -e + +#meson compile -j$(nproc) -C ../build +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS -lcairo-gobject -lcairo -lfontconfig -lfreetype -lharfbuzz -lpng -lpixman-1 -lbz2" \ +PKG_CONFIG="pkgconf" \ +samu -C ../build diff --git a/gobject-introspection-dynamic/default/patches-available/musl-time64.patch b/gobject-introspection-dynamic/default/patches-available/musl-time64.patch new file mode 100644 index 0000000..ed85e01 --- /dev/null +++ b/gobject-introspection-dynamic/default/patches-available/musl-time64.patch @@ -0,0 +1,41 @@ +diff --git a/giscanner/ast.py b/giscanner/ast.py +index 66fe0cf..e2f89cc 100644 +--- a/giscanner/ast.py ++++ b/giscanner/ast.py +@@ -344,7 +344,8 @@ type_names['FILE*'] = TYPE_ANY + # integers it's easy enough to expand them. + type_names['size_t'] = type_names['gsize'] + type_names['ssize_t'] = type_names['gssize'] +-type_names['time_t'] = TYPE_LONG ++# musl libc 1.2 and newer uses 64 time_t for all arches ++type_names['time_t'] = TYPE_INT64 + type_names['off_t'] = type_names['gsize'] + type_names['pid_t'] = TYPE_INT + type_names['uid_t'] = TYPE_UINT +diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir +index cef3b12..abb09e2 100644 +--- a/tests/scanner/Regress-1.0-expected.gir ++++ b/tests/scanner/Regress-1.0-expected.gir +@@ -2003,7 +2003,7 @@ uses a C sugar return type. + + + +- ++ + + + +@@ -8381,11 +8381,11 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399 + + + +- ++ + + + +- ++ + + + diff --git a/gobject-introspection-dynamic/default/patches-enabled/musl-time64.patch b/gobject-introspection-dynamic/default/patches-enabled/musl-time64.patch new file mode 120000 index 0000000..4e7087d --- /dev/null +++ b/gobject-introspection-dynamic/default/patches-enabled/musl-time64.patch @@ -0,0 +1 @@ +../patches-available/musl-time64.patch \ No newline at end of file diff --git a/gptfdisk/default/conf.sh b/gptfdisk/default/conf.sh new file mode 100755 index 0000000..fc97c0a --- /dev/null +++ b/gptfdisk/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +${EDITOR:-vi} Makefile diff --git a/gptfdisk/default/deps b/gptfdisk/default/deps new file mode 100644 index 0000000..1599445 --- /dev/null +++ b/gptfdisk/default/deps @@ -0,0 +1,16 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libpopt +libblkid +libuuid +ncurses +$EDITORDEP diff --git a/gptfdisk/default/inst.sh b/gptfdisk/default/inst.sh new file mode 100755 index 0000000..00cb789 --- /dev/null +++ b/gptfdisk/default/inst.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +for file in gdisk cgdisk sgdisk fixparts; do + echo "installing $file" + install $file /bin/ + install $file.8 /share/man/man8/ +done diff --git a/gptfdisk/default/make.sh b/gptfdisk/default/make.sh new file mode 100755 index 0000000..c5c0df5 --- /dev/null +++ b/gptfdisk/default/make.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +# not finding ncurses_dll.h, so point to it explicitly. +CXXFLAGS="$CXXFLAGS -I/include/ncurses" \ +make -j$(nproc) diff --git a/graphviz/default/conf.sh b/graphviz/default/conf.sh new file mode 100755 index 0000000..8a074f2 --- /dev/null +++ b/graphviz/default/conf.sh @@ -0,0 +1,43 @@ +#!/bin/sh -e + +./autogen.sh NOCONFIG + +CONFIG_SHELL=/bin/sh \ +LIBPOSTFIX=/ \ +LUA=lua$_luaver \ +lua_suffix=$_luaver \ +./configure \ + --sysconfdir=/etc \ + --disable-silent-rules \ + --disable-dependency-tracking \ + --disable-ltdl-install \ + --enable-ltdl \ + --enable-sharp=no \ + --enable-go=no \ + --enable-guile=no \ + --enable-java=no \ + --enable-lua=yes \ + --enable-ocaml=no \ + --enable-perl=no \ + --enable-php=no \ + --enable-python=yes \ + --enable-r=no \ + --enable-ruby=no \ + --enable-tcl=no \ + --without-included-ltdl \ + --without-x \ + --with-rsvg=yes \ + --with-pangocairo=yes \ + --with-gdk-pixbuf=yes \ + --with-libgd=no \ + --with-ipsepcola=yes \ + --disable-static \ + --enable-shared \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" \ + +if [ "$CARCH" = "x86_64" ]; then + # the configure script thinks we have sincos. we dont. + sed -i -e '/HAVE_SINCOS/d' config.h +fi diff --git a/graphviz/default/deps b/graphviz/default/deps new file mode 100644 index 0000000..0409490 --- /dev/null +++ b/graphviz/default/deps @@ -0,0 +1,37 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +file +diffutils +bison +flex +perl +m4 +autoconf +automake +libtool +glib +zlib +libpng +libjpeg-turbo +libxml2 +expat +cairo +pango +harfbuzz +freetype-harfbuzz +fontconfig +python3-dynamic +lua +tcl +guile +swig diff --git a/graphviz/default/env.sh b/graphviz/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/graphviz/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/graphviz/default/inst.sh b/graphviz/default/inst.sh new file mode 100755 index 0000000..40b19b8 --- /dev/null +++ b/graphviz/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +# Install has race conditions... +make -j1 pkgconfigdir="$PREFIX/lib/pkgconfig" install diff --git a/graphviz/default/patches-available/0001-clone-nameclash.patch b/graphviz/default/patches-available/0001-clone-nameclash.patch new file mode 100644 index 0000000..6222238 --- /dev/null +++ b/graphviz/default/patches-available/0001-clone-nameclash.patch @@ -0,0 +1,87 @@ +From cb8bbbd3a48fa1f41965617852d11e02eb20b1f0 Mon Sep 17 00:00:00 2001 +From: Natanael Copa +Date: Tue, 26 Jul 2011 12:41:21 +0000 +Subject: [PATCH] clone nameclash + +--- + lib/gvpr/actions.c | 6 +++--- + lib/gvpr/actions.h | 2 +- + lib/gvpr/compile.c | 2 +- + lib/gvpr/gvpr.c | 4 ++-- + 4 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/lib/gvpr/actions.c b/lib/gvpr/actions.c +index 05bfcd1..b3b4a60 100644 +--- a/lib/gvpr/actions.c ++++ b/lib/gvpr/actions.c +@@ -380,7 +380,7 @@ Agraph_t *cloneG(Agraph_t * g, char* name) + * graph. Otherwise, create a clone subgraph of g. + * Assume obj != NULL. + */ +-Agobj_t *clone(Agraph_t * g, Agobj_t * obj) ++Agobj_t *cloneO(Agraph_t * g, Agobj_t * obj) + { + Agobj_t *nobj = 0; + Agedge_t *e; +@@ -415,8 +415,8 @@ Agobj_t *clone(Agraph_t * g, Agobj_t * obj) + case AGINEDGE: + case AGOUTEDGE: + e = (Agedge_t *) obj; +- t = (Agnode_t *) clone(g, OBJ(agtail(e))); +- h = (Agnode_t *) clone(g, OBJ(aghead(e))); ++ t = (Agnode_t *) cloneO(g, OBJ(agtail(e))); ++ h = (Agnode_t *) cloneO(g, OBJ(aghead(e))); + name = agnameof (AGMKOUT(e)); + nobj = (Agobj_t *) openEdge(g, t, h, name); + if (nobj) +diff --git a/lib/gvpr/actions.h b/lib/gvpr/actions.h +index 5c62a3b..4223c52 100644 +--- a/lib/gvpr/actions.h ++++ b/lib/gvpr/actions.h +@@ -22,7 +22,7 @@ extern "C" { + #include "expr.h" + + extern void nodeInduce(Agraph_t * selected); +- extern Agobj_t *clone(Agraph_t * g, Agobj_t * obj); ++ extern Agobj_t *cloneO(Agraph_t * g, Agobj_t * obj); + extern Agraph_t *cloneG(Agraph_t * g, char* name); + extern Agobj_t *copy(Agraph_t * g, Agobj_t * obj); + extern int copyAttr(Agobj_t * obj, Agobj_t * obj1); +diff --git a/lib/gvpr/compile.c b/lib/gvpr/compile.c +index c157572..0914210 100644 +--- a/lib/gvpr/compile.c ++++ b/lib/gvpr/compile.c +@@ -1087,7 +1087,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref, + error(ERROR_WARNING, "NULL object passed to clone()"); + v.integer = 0; + } else +- v.integer = PTR2INT(clone(gp, objp)); ++ v.integer = PTR2INT(cloneO(gp, objp)); + break; + case F_cloneG: + gp = INT2PTR(Agraph_t *, args[0].integer); +diff --git a/lib/gvpr/gvpr.c b/lib/gvpr/gvpr.c +index 0d47d70..9a1bfd1 100644 +--- a/lib/gvpr/gvpr.c ++++ b/lib/gvpr/gvpr.c +@@ -803,7 +803,7 @@ addOutputGraph (Gpr_t* state, gvpropts* uopts) + Agraph_t* g = state->outgraph; + + if ((agroot(g) == state->curgraph) && !uopts->ingraphs) +- g = (Agraph_t*)clone (0, (Agobj_t *)g); ++ g = (Agraph_t*)cloneO (0, (Agobj_t *)g); + + uopts->n_outgraphs++; + uopts->outgraphs = oldof(uopts->outgraphs,Agraph_t*,uopts->n_outgraphs,0); +@@ -988,7 +988,7 @@ int gvpr (int argc, char *argv[], gvpropts * uopts) + + /* begin graph */ + if (incoreGraphs && (opts->compflags & CLONE)) +- state->curgraph = (Agraph_t*)clone (0, (Agobj_t*)(state->curgraph)); ++ state->curgraph = (Agraph_t*)cloneO (0, (Agobj_t*)(state->curgraph)); + state->curobj = (Agobj_t *) state->curgraph; + state->tvroot = 0; + if (bp->begg_stmt) +-- +1.7.6 + diff --git a/graphviz/default/patches-available/0100-no-ghostscript-or-groff-dependency.patch b/graphviz/default/patches-available/0100-no-ghostscript-or-groff-dependency.patch new file mode 100644 index 0000000..ed2b0d0 --- /dev/null +++ b/graphviz/default/patches-available/0100-no-ghostscript-or-groff-dependency.patch @@ -0,0 +1,1371 @@ +diff -ru a/cmd/dot/Makefile.am b/cmd/dot/Makefile.am +--- a/cmd/dot/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/cmd/dot/Makefile.am 2020-10-23 22:39:45.040000000 +0000 +@@ -41,8 +41,8 @@ + endif + endif + +-man_MANS = dot.1 osage.1 patchwork.1 +-pdf_DATA = dot.1.pdf osage.1.pdf patchwork.1.pdf ++#man_MANS = dot.1 osage.1 patchwork.1 ++#pdf_DATA = dot.1.pdf osage.1.pdf patchwork.1.pdf + + dot_SOURCES = dot.c no_builtins.c + dot_CPPFLAGS = $(AM_CPPFLAGS) -DDEMAND_LOADING=1 +@@ -66,23 +66,23 @@ + (cd $(DESTDIR)$(bindir); for i in $(linkedprogram); do rm -f $$i; done;) + (cd $(DESTDIR)$(libdir); rm -f config;) + +-dot.1.pdf: dot.1.ps +- @PS2PDF@ $< $@ ++#dot.1.pdf: dot.1.ps ++# @PS2PDF@ $< $@ + +-dot.1.ps: $(srcdir)/dot.1 +- @GROFF@ -Tps -man $< >$@ ++#dot.1.ps: $(srcdir)/dot.1 ++# @GROFF@ -Tps -man $< >$@ + +-osage.1.pdf: osage.1.ps +- @PS2PDF@ $< $@ ++#osage.1.pdf: osage.1.ps ++# @PS2PDF@ $< $@ + +-osage.1.ps: $(srcdir)/osage.1 +- @GROFF@ -Tps -man $< >$@ ++#osage.1.ps: $(srcdir)/osage.1 ++# @GROFF@ -Tps -man $< >$@ + +-patchwork.1.pdf: patchwork.1.ps +- @PS2PDF@ $< $@ ++#patchwork.1.pdf: patchwork.1.ps ++# @PS2PDF@ $< $@ + +-patchwork.1.ps: $(srcdir)/patchwork.1 +- @GROFF@ -Tps -man $< >$@ ++#patchwork.1.ps: $(srcdir)/patchwork.1 ++# @GROFF@ -Tps -man $< >$@ + + dot_static_SOURCES = dot.c dot_builtins.c + dot_static_CPPFLAGS = $(AM_CPPFLAGS) -DDEMAND_LOADING=0 +@@ -139,6 +139,6 @@ + endif + + +-EXTRA_DIST = dot.1 dot.1.pdf osage.1 osage.1.pdf patchwork.1 patchwork.1.pdf dot.vcxproj* ++#EXTRA_DIST = dot.1 dot.1.pdf osage.1 osage.1.pdf patchwork.1 patchwork.1.pdf dot.vcxproj* + + DISTCLEANFILES = dot.1.pdf osage.1.pdf dot.1.ps osage.1.ps patchwork.1.ps +diff -ru a/cmd/dotty/Makefile.am b/cmd/dotty/Makefile.am +--- a/cmd/dotty/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/cmd/dotty/Makefile.am 2020-10-23 22:39:45.050000000 +0000 +@@ -14,8 +14,8 @@ + dotty_layout.lefty dotty_ui.lefty + endif + +-man_MANS = dotty.1 +-pdf_DATA = dotty.1.pdf ++#man_MANS = dotty.1 ++#pdf_DATA = dotty.1.pdf + + if WITH_WIN32 + dotty_SOURCES = mswin32/dotty.c +@@ -26,14 +26,14 @@ + chmod +x dotty + endif + +-dotty.1.pdf: dotty.1.ps +- @PS2PDF@ $< $@ ++#dotty.1.pdf: dotty.1.ps ++# @PS2PDF@ $< $@ + +-dotty.1.ps: $(srcdir)/dotty.1 +- @GROFF@ -Tps -man $< >$@ ++#dotty.1.ps: $(srcdir)/dotty.1 ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = $(lefty_DATA) $(man_MANS) $(pdf_DATA) \ ++EXTRA_DIST = $(lefty_DATA) \ + dotty.bsh dotty.ksh dotty.sh \ +- notes mswin32 dotty.vcxproj* ++ notes mswin32 # dotty.vcxproj* + + DISTCLEANFILES = $(pdf_DATA) dotty dotty.1.ps +diff -ru a/cmd/edgepaint/Makefile.am b/cmd/edgepaint/Makefile.am +--- a/cmd/edgepaint/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/cmd/edgepaint/Makefile.am 2020-10-23 22:39:45.040000000 +0000 +@@ -15,8 +15,8 @@ + + bin_PROGRAMS = edgepaint + +-man_MANS = edgepaint.1 +-pdf_DATA = edgepaint.1.pdf ++#man_MANS = edgepaint.1 ++#pdf_DATA = edgepaint.1.pdf + + edgepaint_SOURCES = edgepaintmain.c + edgepaint_CPPFLAGS = $(AM_CPPFLAGS) +@@ -33,12 +33,12 @@ + $(top_builddir)/lib/cdt/libcdt.la \ + $(ANN_LIBS) -lstdc++ -lm + +-edgepaint.1.pdf: edgepaint.1.ps +- @PS2PDF@ $< $@ ++#edgepaint.1.pdf: edgepaint.1.ps ++# @PS2PDF@ $< $@ + +-edgepaint.1.ps: $(srcdir)/edgepaint.1 +- @GROFF@ -e -Tps -man -t $< >$@ ++#edgepaint.1.ps: $(srcdir)/edgepaint.1 ++# @GROFF@ -e -Tps -man -t $< >$@ + +-EXTRA_DIST = $(man_MANS) $(pdf_DATA) edgepaint.vcxproj* ++#EXTRA_DIST = $(man_MANS) $(pdf_DATA) edgepaint.vcxproj* + + DISTCLEANFILES = $(pdf_DATA) edgepaint.1.ps +diff -ru a/cmd/gvedit/Makefile.am b/cmd/gvedit/Makefile.am +--- a/cmd/gvedit/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/cmd/gvedit/Makefile.am 2020-10-23 22:39:45.030000000 +0000 +@@ -6,14 +6,14 @@ + pdfdir = $(pkgdatadir)/doc/pdf + gveditdir = $(pkgdatadir)/gvedit + +-mans = gvedit.1 +-pdfs = gvedit.1.pdf ++#mans = gvedit.1 ++#pdfs = gvedit.1.pdf + + if WITH_QT + bin_PROGRAMS = gvedit + gvedit_DATA = attrs.txt +-man_MANS = $(mans) +-pdf_DATA = $(pdfs) ++#man_MANS = $(mans) ++#pdf_DATA = $(pdfs) + endif + + AM_CPPFLAGS = \ +@@ -59,13 +59,13 @@ + attrs.txt: $(top_srcdir)/doc/infosrc/attrs + cp $(top_srcdir)/doc/infosrc/attrs attrs.txt + +-gvedit.1.pdf: gvedit.1.ps +- @PS2PDF@ $< $@ ++#gvedit.1.pdf: gvedit.1.ps ++# @PS2PDF@ $< $@ + +-gvedit.1.ps: $(srcdir)/gvedit.1 +- @GROFF@ -Tps -man $< >$@ ++#gvedit.1.ps: $(srcdir)/gvedit.1 ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = gvedit.vcxproj* gvedit.pro.in mdi.qrc $(mans) $(pdfs) ++EXTRA_DIST = mdi.qrc + + CLEANFILES = moc_csettings.cpp moc_imageviewer.cpp moc_mainwindow.cpp moc_mdichild.cpp qrc_mdi.cpp + +diff -ru a/cmd/gvmap/Makefile.am b/cmd/gvmap/Makefile.am +--- a/cmd/gvmap/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/cmd/gvmap/Makefile.am 2020-10-23 22:39:45.060000000 +0000 +@@ -19,8 +19,8 @@ + dist_bin_SCRIPTS = gvmap.sh + endif + +-man_MANS = gvmap.1 cluster.1 gvmap.sh.1 +-pdf_DATA = gvmap.1.pdf cluster.1.pdf gvmap.sh.1.pdf ++#man_MANS = gvmap.1 cluster.1 gvmap.sh.1 ++#pdf_DATA = gvmap.1.pdf cluster.1.pdf gvmap.sh.1.pdf + + noinst_HEADERS = make_map.h power.h country_graph_coloring.h + +@@ -58,24 +58,24 @@ + + gvmap.sh : + +-gvmap.1.pdf: gvmap.1.ps +- @PS2PDF@ $< $@ ++#gvmap.1.pdf: gvmap.1.ps ++# @PS2PDF@ $< $@ + +-gvmap.1.ps: $(srcdir)/gvmap.1 +- @GROFF@ -Tps -man $< >$@ ++#gvmap.1.ps: $(srcdir)/gvmap.1 ++# @GROFF@ -Tps -man $< >$@ + +-cluster.1.pdf: cluster.1.ps +- @PS2PDF@ $< $@ ++#cluster.1.pdf: cluster.1.ps ++# @PS2PDF@ $< $@ + +-cluster.1.ps: $(srcdir)/cluster.1 +- @GROFF@ -Tps -man $< >$@ ++#cluster.1.ps: $(srcdir)/cluster.1 ++# @GROFF@ -Tps -man $< >$@ + +-gvmap.sh.1.pdf: gvmap.sh.1.ps +- @PS2PDF@ $< $@ ++#gvmap.sh.1.pdf: gvmap.sh.1.ps ++# @PS2PDF@ $< $@ + +-gvmap.sh.1.ps: $(srcdir)/gvmap.sh.1 +- @GROFF@ -Tps -man $< >$@ ++#gvmap.sh.1.ps: $(srcdir)/gvmap.sh.1 ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = $(man_MANS) $(pdf_DATA) gvmap.vcxproj* ++#EXTRA_DIST = $(man_MANS) $(pdf_DATA) gvmap.vcxproj* + + DISTCLEANFILES = $(pdf_DATA) gvmap.1.ps cluster.1.ps gvmap.sh.1.ps +diff -ru a/cmd/gvpr/Makefile.am b/cmd/gvpr/Makefile.am +--- a/cmd/gvpr/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/cmd/gvpr/Makefile.am 2020-10-23 22:39:45.040000000 +0000 +@@ -23,18 +23,18 @@ + bin_PROGRAMS = gvpr + endif + +-man_MANS = gvpr.1 +-pdf_DATA = gvpr.1.pdf ++#man_MANS = gvpr.1 ++#pdf_DATA = gvpr.1.pdf + + gvpr_SOURCES = gvprmain.c + gvpr_CPPFLAGS = $(AM_CPPFLAGS) + gvpr_LDADD = $(top_builddir)/lib/gvpr/libgvpr.la + +-gvpr.1.pdf: gvpr.1.ps +- @PS2PDF@ $< $@ ++#gvpr.1.pdf: gvpr.1.ps ++# @PS2PDF@ $< $@ + +-gvpr.1.ps: $(srcdir)/gvpr.1 +- @GROFF@ -Tps -man -t $< >$@ ++#gvpr.1.ps: $(srcdir)/gvpr.1 ++# @GROFF@ -Tps -man -t $< >$@ + + gvpr_static_SOURCES = gvprmain.c + gvpr_static_CPPFLAGS = $(AM_CPPFLAGS) +@@ -49,6 +49,6 @@ + $(top_builddir)/lib/cdt/libcdt_C.la \ + $(MATH_LIBS) + +-EXTRA_DIST = $(man_MANS) $(pdf_DATA) lib gvpr.vcxproj* ++EXTRA_DIST = lib + + DISTCLEANFILES = $(pdf_DATA) gvpr.1.ps +diff -ru a/cmd/lefty/Makefile.am b/cmd/lefty/Makefile.am +--- a/cmd/lefty/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/cmd/lefty/Makefile.am 2020-10-23 22:39:45.050000000 +0000 +@@ -53,8 +53,8 @@ + bin_PROGRAMS = lefty + endif + +-man_MANS = lefty.1 +-pdf_DATA = lefty.1.pdf ++#man_MANS = lefty.1 ++#pdf_DATA = lefty.1.pdf + + lefty_DATA = lefty.psp + +@@ -88,12 +88,12 @@ + -lXt -lXmu -lXext -lX11 @SOCKET_LIBS@ @MATH_LIBS@ + endif + +-lefty.1.pdf: lefty.1.ps +- @PS2PDF@ $< $@ ++#lefty.1.pdf: lefty.1.ps ++# @PS2PDF@ $< $@ + +-lefty.1.ps: $(srcdir)/lefty.1 +- @GROFF@ -Tps -man $< >$@ ++#lefty.1.ps: $(srcdir)/lefty.1 ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = $(lefty_DATA) $(man_MANS) $(pdf_DATA) lefty.vcxproj* colors.txt aix_mods cs2l/* ++EXTRA_DIST = $(lefty_DATA) colors.txt aix_mods cs2l/* + + DISTCLEANFILES = $(pdf_DATA) lefty.1.ps +diff -ru a/cmd/lneato/Makefile.am b/cmd/lneato/Makefile.am +--- a/cmd/lneato/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/cmd/lneato/Makefile.am 2020-10-23 22:39:45.060000000 +0000 +@@ -11,8 +11,8 @@ + endif + endif + +-man_MANS = lneato.1 +-pdf_DATA = lneato.1.pdf ++#man_MANS = lneato.1 ++#pdf_DATA = lneato.1.pdf + + AM_CFLAGS = -DLNEATO + if WITH_WIN32 +@@ -24,13 +24,12 @@ + chmod +x lneato + endif + +-lneato.1.pdf: lneato.1.ps +- @PS2PDF@ $< $@ ++#lneato.1.pdf: lneato.1.ps ++# @PS2PDF@ $< $@ + +-lneato.1.ps: $(srcdir)/lneato.1 +- @GROFF@ -Tps -man $< >$@ ++#lneato.1.ps: $(srcdir)/lneato.1 ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = $(man_MANS) $(pdf_DATA) lneato.bsh lneato.ksh lneato.sh \ +- mswin32 lneato.vcxproj* ++EXTRA_DIST = lneato.bsh lneato.ksh lneato.sh + + DISTCLEANFILES = lneato $(pdf_DATA) lneato.1.ps +diff -ru a/cmd/mingle/Makefile.am b/cmd/mingle/Makefile.am +--- a/cmd/mingle/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/cmd/mingle/Makefile.am 2020-10-23 22:39:45.030000000 +0000 +@@ -17,8 +17,8 @@ + bin_PROGRAMS = mingle + endif + +-man_MANS = mingle.1 +-pdf_DATA = mingle.1.pdf ++#man_MANS = mingle.1 ++#pdf_DATA = mingle.1.pdf + + mingle_SOURCES = minglemain.c + mingle_CPPFLAGS = $(AM_CPPFLAGS) +@@ -34,12 +34,12 @@ + $(top_builddir)/lib/cdt/libcdt.la \ + $(ANN_LIBS) -lstdc++ -lm + +-mingle.1.pdf: mingle.1.ps +- @PS2PDF@ $< $@ ++#mingle.1.pdf: mingle.1.ps ++# @PS2PDF@ $< $@ + +-mingle.1.ps: $(srcdir)/mingle.1 +- @GROFF@ -e -Tps -man -t $< >$@ ++#mingle.1.ps: $(srcdir)/mingle.1 ++# @GROFF@ -e -Tps -man -t $< >$@ + +-EXTRA_DIST = $(man_MANS) $(pdf_DATA) mingle.vcxproj* ++#EXTRA_DIST = $(man_MANS) $(pdf_DATA) mingle.vcxproj* + + DISTCLEANFILES = $(pdf_DATA) mingle.1.ps +diff -ru a/cmd/smyrna/Makefile.am b/cmd/smyrna/Makefile.am +--- a/cmd/smyrna/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/cmd/smyrna/Makefile.am 2020-10-23 22:39:45.060000000 +0000 +@@ -31,8 +31,8 @@ + if ENABLE_STATIC + bin_PROGRAMS += smyrna_static + endif +-man_MANS += smyrna.1 +-pdf_DATA += smyrna.1.pdf ++#man_MANS += smyrna.1 ++#pdf_DATA += smyrna.1.pdf + endif + + noinst_HEADERS = arcball.h draw.h glexpose.h \ +@@ -80,13 +80,13 @@ + $(top_builddir)/lib/neatogen/libneatogen_C.la \ + $(GTK_LIBS) $(GLUT_LIBS) $(GTKGLEXT_LIBS) $(GLADE_LIBS) $(X_LIBS) $(EXPAT_LIBS) $(GTS_LIBS) $(MATH_LIBS) + +-smyrna.1.pdf: smyrna.1.ps +- @PS2PDF@ $< $@ ++#smyrna.1.pdf: smyrna.1.ps ++# @PS2PDF@ $< $@ + +-smyrna.1.ps: $(srcdir)/smyrna.1 +- @GROFF@ -Tps -man $< >$@ ++#smyrna.1.ps: $(srcdir)/smyrna.1 ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = smyrna.vcxproj* $(man_MANS) $(pdf_DATA) smyrna.1 ++#EXTRA_DIST = smyrna.vcxproj* $(man_MANS) $(pdf_DATA) smyrna.1 + + DISTCLEANFILES = $(pdf_DATA) smyrna.1.ps + +diff -ru a/cmd/tools/Makefile.am b/cmd/tools/Makefile.am +--- a/cmd/tools/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/cmd/tools/Makefile.am 2020-10-23 22:39:45.040000000 +0000 +@@ -25,12 +25,12 @@ + unflatten gvpack dijkstra bcomps mm2gv gvgen gml2gv gv2gml graphml2gv + endif + +-man_MANS = gc.1 gvcolor.1 gxl2gv.1 acyclic.1 nop.1 ccomps.1 sccmap.1 \ +- tred.1 unflatten.1 gvpack.1 dijkstra.1 bcomps.1 mm2gv.1 gvgen.1 gml2gv.1 graphml2gv.1 +-pdf_DATA = gc.1.pdf gvcolor.1.pdf gxl2gv.1.pdf acyclic.1.pdf \ +- nop.1.pdf ccomps.1.pdf sccmap.1.pdf tred.1.pdf \ +- unflatten.1.pdf gvpack.1.pdf dijkstra.1.pdf \ +- bcomps.1.pdf mm2gv.1.pdf gvgen.1.pdf gml2gv.1.pdf graphml2gv.1.pdf ++#man_MANS = gc.1 gvcolor.1 gxl2gv.1 acyclic.1 nop.1 ccomps.1 sccmap.1 \ ++# tred.1 unflatten.1 gvpack.1 dijkstra.1 bcomps.1 mm2gv.1 gvgen.1 gml2gv.1 graphml2gv.1 ++#pdf_DATA = gc.1.pdf gvcolor.1.pdf gxl2gv.1.pdf acyclic.1.pdf \ ++# nop.1.pdf ccomps.1.pdf sccmap.1.pdf tred.1.pdf \ ++# unflatten.1.pdf gvpack.1.pdf dijkstra.1.pdf \ ++# bcomps.1.pdf mm2gv.1.pdf gvgen.1.pdf gml2gv.1.pdf graphml2gv.1.pdf + + install-data-hook: + (cd $(DESTDIR)$(man1dir); rm -f gv2gxl.1; $(LN_S) gxl2gv.1 gv2gxl.1;) +@@ -61,11 +61,11 @@ + $(top_builddir)/lib/cgraph/libcgraph.la \ + $(top_builddir)/lib/cdt/libcdt.la @EXPAT_LIBS@ + +-gxl2gv.1.pdf: gxl2gv.1.ps +- @PS2PDF@ $< $@ ++#gxl2gv.1.pdf: gxl2gv.1.ps ++# @PS2PDF@ $< $@ + +-gxl2gv.1.ps: $(srcdir)/gxl2gv.1 +- @GROFF@ -Tps -man $< >$@ ++#gxl2gv.1.ps: $(srcdir)/gxl2gv.1 ++# @GROFF@ -Tps -man $< >$@ + + sccmap_SOURCES = sccmap.c + +@@ -73,11 +73,11 @@ + $(top_builddir)/lib/ingraphs/libingraphs_C.la \ + $(top_builddir)/lib/cgraph/libcgraph.la @EXPAT_LIBS@ + +-sccmap.1.pdf: sccmap.1.ps +- @PS2PDF@ $< $@ ++#sccmap.1.pdf: sccmap.1.ps ++# @PS2PDF@ $< $@ + +-sccmap.1.ps: $(srcdir)/sccmap.1 +- @GROFF@ -Tps -man $< >$@ ++#sccmap.1.ps: $(srcdir)/sccmap.1 ++# @GROFF@ -Tps -man $< >$@ + + ccomps_SOURCES = ccomps.c + +@@ -85,11 +85,11 @@ + $(top_builddir)/lib/ingraphs/libingraphs_C.la \ + $(top_builddir)/lib/cgraph/libcgraph.la + +-ccomps.1.pdf: ccomps.1.ps +- @PS2PDF@ $< $@ ++#ccomps.1.pdf: ccomps.1.ps ++# @PS2PDF@ $< $@ + +-ccomps.1.ps: $(srcdir)/ccomps.1 +- @GROFF@ -Tps -man $< >$@ ++#ccomps.1.ps: $(srcdir)/ccomps.1 ++# @GROFF@ -Tps -man $< >$@ + + #tred2_SOURCES = tred2.c + # +@@ -105,11 +105,11 @@ + $(top_builddir)/lib/ingraphs/libingraphs_C.la \ + $(top_builddir)/lib/cgraph/libcgraph.la + +-tred.1.pdf: tred.1.ps +- @PS2PDF@ $< $@ ++#tred.1.pdf: tred.1.ps ++# @PS2PDF@ $< $@ + +-tred.1.ps: $(srcdir)/tred.1 +- @GROFF@ -Tps -man $< >$@ ++#tred.1.ps: $(srcdir)/tred.1 ++# @GROFF@ -Tps -man $< >$@ + + unflatten_SOURCES = unflatten.c + +@@ -117,11 +117,11 @@ + $(top_builddir)/lib/ingraphs/libingraphs_C.la \ + $(top_builddir)/lib/cgraph/libcgraph.la + +-unflatten.1.pdf: unflatten.1.ps +- @PS2PDF@ $< $@ ++#unflatten.1.pdf: unflatten.1.ps ++# @PS2PDF@ $< $@ + +-unflatten.1.ps: $(srcdir)/unflatten.1 +- @GROFF@ -Tps -man $< >$@ ++#unflatten.1.ps: $(srcdir)/unflatten.1 ++# @GROFF@ -Tps -man $< >$@ + + acyclic_SOURCES = acyclic.c + +@@ -129,11 +129,11 @@ + $(top_builddir)/lib/ingraphs/libingraphs_C.la \ + $(top_builddir)/lib/cgraph/libcgraph.la + +-acyclic.1.pdf: acyclic.1.ps +- @PS2PDF@ $< $@ ++#acyclic.1.pdf: acyclic.1.ps ++# @PS2PDF@ $< $@ + +-acyclic.1.ps: $(srcdir)/acyclic.1 +- @GROFF@ -Tps -man $< >$@ ++#acyclic.1.ps: $(srcdir)/acyclic.1 ++# @GROFF@ -Tps -man $< >$@ + + nop_SOURCES = nop.c + +@@ -141,11 +141,11 @@ + $(top_builddir)/lib/ingraphs/libingraphs_C.la \ + $(top_builddir)/lib/cgraph/libcgraph.la + +-nop.1.pdf: nop.1.ps +- @PS2PDF@ $< $@ ++#nop.1.pdf: nop.1.ps ++# @PS2PDF@ $< $@ + +-nop.1.ps: $(srcdir)/nop.1 +- @GROFF@ -Tps -man $< >$@ ++#nop.1.ps: $(srcdir)/nop.1 ++# @GROFF@ -Tps -man $< >$@ + + gvcolor_SOURCES = gvcolor.c colxlate.c colortbl.h + +@@ -165,11 +165,11 @@ + $(top_builddir)/lib/ingraphs/libingraphs_C.la \ + $(top_builddir)/lib/cgraph/libcgraph.la + +-bcomps.1.pdf: bcomps.1.ps +- @PS2PDF@ $< $@ ++#bcomps.1.pdf: bcomps.1.ps ++# @PS2PDF@ $< $@ + +-bcomps.1.ps: $(srcdir)/bcomps.1 +- @GROFF@ -Tps -man $< >$@ ++#bcomps.1.ps: $(srcdir)/bcomps.1 ++# @GROFF@ -Tps -man $< >$@ + + gc_SOURCES = gc.c + +@@ -177,11 +177,11 @@ + $(top_builddir)/lib/ingraphs/libingraphs_C.la \ + $(top_builddir)/lib/cgraph/libcgraph.la + +-gc.1.pdf: gc.1.ps +- @PS2PDF@ $< $@ ++#gc.1.pdf: gc.1.ps ++# @PS2PDF@ $< $@ + +-gc.1.ps: $(srcdir)/gc.1 +- @GROFF@ -Tps -man $< >$@ ++#gc.1.ps: $(srcdir)/gc.1 ++# @GROFF@ -Tps -man $< >$@ + + gvpack_SOURCES = gvpack.c + gvpack_CPPFLAGS = $(AM_CPPFLAGS) -DDEMAND_LOADING=0 +@@ -208,11 +208,11 @@ + + #$(PANGOCAIRO_LIBS) $(PANGOFT2_LIBS) $(GTS_LIBS) $(EXPAT_LIBS) $(Z_LIBS) $(_LIBS) $(SOCKET_LIBS) $(IPSEPCOLA_LIBS) $(MATH_LIBS) + +-gvpack.1.pdf: gvpack.1.ps +- @PS2PDF@ $< $@ ++#gvpack.1.pdf: gvpack.1.ps ++# @PS2PDF@ $< $@ + +-gvpack.1.ps: $(srcdir)/gvpack.1 +- @GROFF@ -Tps -man $< >$@ ++#gvpack.1.ps: $(srcdir)/gvpack.1 ++# @GROFF@ -Tps -man $< >$@ + + mm2gv_SOURCES = mm2gv.c matrix_market.c mmio.c + +@@ -223,11 +223,11 @@ + $(top_builddir)/lib/pathplan/libpathplan_C.la \ + $(top_builddir)/lib/cgraph/libcgraph.la @MATH_LIBS@ + +-mm2gv.1.pdf: mm2gv.1.ps +- @PS2PDF@ $< $@ ++#mm2gv.1.pdf: mm2gv.1.ps ++# @PS2PDF@ $< $@ + +-mm2gv.1.ps: mm2gv.1 +- @GROFF@ -Tps -man -e -t $< >$@ ++#mm2gv.1.ps: mm2gv.1 ++# @GROFF@ -Tps -man -e -t $< >$@ + + gv2gml_SOURCES = gv2gml.c + +@@ -263,11 +263,11 @@ + $(top_builddir)/lib/cgraph/libcgraph.la \ + $(top_builddir)/lib/cdt/libcdt.la @MATH_LIBS@ + +-gml2gv.1.pdf: gml2gv.1.ps +- @PS2PDF@ $< $@ ++#gml2gv.1.pdf: gml2gv.1.ps ++# @PS2PDF@ $< $@ + +-gml2gv.1.ps: gml2gv.1 +- @GROFF@ -Tps -man $< >$@ ++#gml2gv.1.ps: gml2gv.1 ++# @GROFF@ -Tps -man $< >$@ + + graphml2gv_SOURCES = graphml2gv.c + +@@ -276,11 +276,11 @@ + $(top_builddir)/lib/cgraph/libcgraph.la \ + $(top_builddir)/lib/cdt/libcdt.la @EXPAT_LIBS@ + +-graphml2gv.1.pdf: graphml2gv.1.ps +- @PS2PDF@ $< $@ ++#graphml2gv.1.pdf: graphml2gv.1.ps ++# @PS2PDF@ $< $@ + +-graphml2gv.1.ps: $(srcdir)/graphml2gv.1 +- @GROFF@ -Tps -man $< >$@ ++#graphml2gv.1.ps: $(srcdir)/graphml2gv.1 ++# @GROFF@ -Tps -man $< >$@ + + dijkstra_SOURCES = dijkstra.c + +@@ -289,29 +289,24 @@ + $(top_builddir)/lib/cgraph/libcgraph.la \ + $(top_builddir)/lib/cdt/libcdt.la + +-dijkstra.1.pdf: dijkstra.1.ps +- @PS2PDF@ $< $@ ++#dijkstra.1.pdf: dijkstra.1.ps ++# @PS2PDF@ $< $@ + +-dijkstra.1.ps: $(srcdir)/dijkstra.1 +- @GROFF@ -Tps -man $< >$@ ++#dijkstra.1.ps: $(srcdir)/dijkstra.1 ++# @GROFF@ -Tps -man $< >$@ + + gvgen_SOURCES = gvgen.c graph_generator.c + + gvgen_LDADD = \ + $(top_builddir)/lib/cgraph/libcgraph.la @MATH_LIBS@ + +-gvgen.1.pdf: gvgen.1.ps +- @PS2PDF@ $< $@ ++#gvgen.1.pdf: gvgen.1.ps ++# @PS2PDF@ $< $@ + +-gvgen.1.ps: $(srcdir)/gvgen.1 +- @GROFF@ -Tps -man $< >$@ ++#gvgen.1.ps: $(srcdir)/gvgen.1 ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = $(man_MANS) $(pdf_DATA) bcomps.vcxproj* \ +- acyclic.vcxproj* bcomps.vcxproj* ccomps.vcxproj* dijkstra.vcxproj* gc.vcxproj* \ +- gvcolor.vcxproj* gvgen.vcxproj* gvpack.vcxproj* gxl2gv.vcxproj* \ +- mm2gv.vcxproj* nop.vcxproj* sccmap.vcxproj* tred.vcxproj* unflatten.vcxproj* \ +- gmlscan.c gmlparse.c gmlparse.h y.output y.tab.c y.tab.h gml2gv.vcxproj* \ +- graphml2gv.vcxproj* gv2gml.vcxproj* ++EXTRA_DIST = gmlscan.c gmlparse.c gmlparse.h y.output y.tab.c y.tab.h + + # FIXME - these are missing + # gv2gxl.vcxproj* +diff -ru a/contrib/diffimg/Makefile.am b/contrib/diffimg/Makefile.am +--- a/contrib/diffimg/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/contrib/diffimg/Makefile.am 2020-10-23 22:39:45.170000000 +0000 +@@ -7,8 +7,8 @@ + + pdfdir = $(pkgdatadir)/doc/pdf + +-man_MANS = diffimg.1 +-pdf_DATA = diffimg.1.pdf ++#man_MANS = diffimg.1 ++#pdf_DATA = diffimg.1.pdf + + if WITH_LIBGD + bin_PROGRAMS = diffimg +@@ -18,11 +18,11 @@ + + diffimg_LDADD = @GDLIB_LIBS@ @MATH_LIBS@ + +-diffimg.1.pdf: diffimg.1.ps +- @PS2PDF@ $< $@ ++#diffimg.1.pdf: diffimg.1.ps ++# @PS2PDF@ $< $@ + +-diffimg.1.ps: $(srcdir)/diffimg.1 +- @GROFF@ -Tps -man $< >$@ ++#diffimg.1.ps: $(srcdir)/diffimg.1 ++# @GROFF@ -Tps -man $< >$@ + + GRAPH = "digraph G { hello -> world }" + +@@ -34,5 +34,5 @@ + if `./diffimg hello1.png hello2.png >test2.png`;then echo same;else echo different;fi + + CLEANFILES = *.png +-EXTRA_DIST = diffimg.vcxproj* diffimg.1 diffimg.1.pdf ++#EXTRA_DIST = diffimg.vcxproj* diffimg.1 diffimg.1.pdf + DISTCLEANFILES = diffimg.1.pdf diffimg.1.ps +diff -ru a/contrib/prune/Makefile.am b/contrib/prune/Makefile.am +--- a/contrib/prune/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/contrib/prune/Makefile.am 2020-10-23 22:39:45.170000000 +0000 +@@ -11,8 +11,8 @@ + + bin_PROGRAMS = prune + noinst_HEADERS = generic_list.h +-man_MANS = prune.1 +-pdf_DATA = prune.1.pdf ++#man_MANS = prune.1 ++#pdf_DATA = prune.1.pdf + + prune_SOURCES = generic_list.c prune.c + +@@ -20,13 +20,13 @@ + $(top_builddir)/lib/cgraph/libcgraph.la \ + $(top_builddir)/lib/cdt/libcdt.la + +-prune.1.pdf: prune.1.ps +- @PS2PDF@ $< $@ ++#prune.1.pdf: prune.1.ps ++# @PS2PDF@ $< $@ + +-prune.1.ps: prune.1 +- @GROFF@ -Tps -man $< >$@ ++#prune.1.ps: prune.1 ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = $(man_MANS) $(pdf_DATA) README test.gv prune.vcxproj* ++EXTRA_DIST = README test.gv + + + DISTCLEANFILES = $(pdf_DATA) prune.1.ps +diff -ru a/lib/cdt/Makefile.am b/lib/cdt/Makefile.am +--- a/lib/cdt/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/lib/cdt/Makefile.am 2020-10-23 22:39:44.980000000 +0000 +@@ -13,8 +13,8 @@ + noinst_HEADERS = dthdr.h + noinst_LTLIBRARIES = libcdt_C.la + lib_LTLIBRARIES = libcdt.la +-man_MANS = cdt.3 +-pdf_DATA = cdt.3.pdf ++#man_MANS = cdt.3 ++#pdf_DATA = cdt.3.pdf + pkgconfig_DATA = libcdt.pc + + libcdt_C_la_SOURCES = dtclose.c dtdisc.c dtextract.c dtflatten.c \ +@@ -24,12 +24,12 @@ + libcdt_la_LDFLAGS = -version-info $(CDT_VERSION) -no-undefined + libcdt_la_SOURCES = $(libcdt_C_la_SOURCES) + +-cdt.3.pdf: cdt.3.ps +- @PS2PDF@ $< $@ ++#cdt.3.pdf: cdt.3.ps ++# @PS2PDF@ $< $@ + +-cdt.3.ps: $(srcdir)/cdt.3 +- @GROFF@ -Tps -man $< >$@ ++#cdt.3.ps: $(srcdir)/cdt.3 ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = $(man_MANS) $(pdf_DATA) cdt.vcxproj* ++#EXTRA_DIST = $(man_MANS) $(pdf_DATA) cdt.vcxproj* + + DISTCLEANFILES = $(pdf_DATA) cdt.3.ps +diff -ru a/lib/cgraph/Makefile.am b/lib/cgraph/Makefile.am +--- a/lib/cgraph/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/lib/cgraph/Makefile.am 2020-10-23 22:39:44.950000000 +0000 +@@ -16,8 +16,8 @@ + noinst_LTLIBRARIES = libcgraph_C.la + lib_LTLIBRARIES = libcgraph.la + pkgconfig_DATA = libcgraph.pc +-man_MANS = cgraph.3 +-pdf_DATA = cgraph.3.pdf ++#man_MANS = cgraph.3 ++#pdf_DATA = cgraph.3.pdf + + libcgraph_C_la_SOURCES = agerror.c agxbuf.c apply.c attr.c edge.c \ + flatten.c graph.c grammar.y id.c imap.c io.c mem.c node.c \ +@@ -49,14 +49,14 @@ + y.output: $(top_srcdir)/lib/cgraph/grammar.y + @YACC@ -dv $(top_srcdir)/lib/cgraph/grammar.y + +-cgraph.3.pdf: cgraph.3.ps +- @PS2PDF@ $< $@ ++#cgraph.3.pdf: cgraph.3.ps ++# @PS2PDF@ $< $@ + +-cgraph.3.ps: $(srcdir)/cgraph.3 +- @GROFF@ -Tps -man $< >$@ ++#cgraph.3.ps: $(srcdir)/cgraph.3 ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = $(man_MANS) $(pdf_DATA) cmpnd.c \ ++EXTRA_DIST = cmpnd.c \ + main.c tester.c grammar.c grammar.h scan.c \ +- y.tab.c y.tab.h y.output cgraph.vcxproj* ++ y.tab.c y.tab.h y.output + + DISTCLEANFILES = $(pdf_DATA) grammar.[ch] scan.c y.output y.tab.[ch] cgraph.3.ps +diff -ru a/lib/expr/Makefile.am b/lib/expr/Makefile.am +--- a/lib/expr/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/lib/expr/Makefile.am 2020-10-23 22:39:44.970000000 +0000 +@@ -19,8 +19,8 @@ + + ### expr.h includes ast.h and vmalloc.h which we don't install + #lib_LTLIBRARIES = libexpr.la +-man_MANS = expr.3 +-pdf_DATA = expr.3.pdf ++#man_MANS = expr.3 ++#pdf_DATA = expr.3.pdf + #pkgconfig_DATA = libexpr.pc + + #### -no-undefined breaks Mac OS/X builds. +@@ -73,15 +73,14 @@ + y.output: $(top_srcdir)/lib/expr/exparse.y + @YACC@ -dtv $(top_srcdir)/lib/expr/exparse.y + +-expr.3.pdf: expr.3.ps +- @PS2PDF@ $< $@ ++#expr.3.pdf: expr.3.ps ++# @PS2PDF@ $< $@ + +-expr.3.ps: $(srcdir)/expr.3 +- @GROFF@ -Tps -man $< >$@ ++#expr.3.ps: $(srcdir)/expr.3 ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = $(man_MANS) $(pdf_DATA) \ +- Makefile.nmake Makefile.orig \ ++EXTRA_DIST = Makefile.nmake Makefile.orig \ + exparse.c exparse.h exop.h \ +- y.tab.c y.tab.h y.output expr.vcxproj* ++ y.tab.c y.tab.h y.output + + DISTCLEANFILES = $(pdf_DATA) exparse.[ch] exop.h y.tab.[ch] y.output expr.3.ps +diff -ru a/lib/gvc/Makefile.am b/lib/gvc/Makefile.am +--- a/lib/gvc/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/lib/gvc/Makefile.am 2020-10-23 22:39:44.990000000 +0000 +@@ -28,8 +28,8 @@ + noinst_LTLIBRARIES = libgvc_C.la + lib_LTLIBRARIES = libgvc.la + pkgconfig_DATA = libgvc.pc +-man_MANS = gvc.3 +-pdf_DATA = gvc.3.pdf ++#man_MANS = gvc.3 ++#pdf_DATA = gvc.3.pdf + + + libgvc_C_la_SOURCES = gvrender.c gvlayout.c gvdevice.c gvloadimage.c \ +@@ -68,12 +68,12 @@ + libgvc_la_LDFLAGS += -export-symbols $(top_srcdir)/lib/gvc.def + endif + +-gvc.3.pdf: gvc.3.ps +- @PS2PDF@ $< $@ ++#gvc.3.pdf: gvc.3.ps ++# @PS2PDF@ $< $@ + +-gvc.3.ps: $(srcdir)/gvc.3 +- @GROFF@ -Tps -man $< >$@ ++#gvc.3.ps: $(srcdir)/gvc.3 ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = $(man_MANS) $(pdf_DATA) ++#EXTRA_DIST = $(man_MANS) $(pdf_DATA) + + DISTCLEANFILES = $(pdf_DATA) gvc.3.ps +diff -ru a/lib/gvpr/Makefile.am b/lib/gvpr/Makefile.am +--- a/lib/gvpr/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/lib/gvpr/Makefile.am 2020-10-23 22:39:44.960000000 +0000 +@@ -25,8 +25,8 @@ + noinst_LTLIBRARIES = libgvpr_C.la + lib_LTLIBRARIES = libgvpr.la + pkgconfig_DATA = libgvpr.pc +-man_MANS = gvpr.3 +-pdf_DATA = gvpr.3.pdf ++#man_MANS = gvpr.3 ++#pdf_DATA = gvpr.3.pdf + + libgvpr_C_la_SOURCES = actions.c compile.c gvpr.c gprstate.c parse.c queue.c + $(libgvpr_C_la_OBJECTS): gdefs.h +@@ -35,11 +35,11 @@ + $(top_builddir)/lib/common/libcommon_C.la \ + $(top_builddir)/lib/ingraphs/libingraphs_C.la + +-gvpr.3.pdf: gvpr.3.ps +- @PS2PDF@ $< $@ ++#gvpr.3.pdf: gvpr.3.ps ++# @PS2PDF@ $< $@ + +-gvpr.3.ps: $(srcdir)/gvpr.3 +- @GROFF@ -Tps -man $< >$@ ++#gvpr.3.ps: $(srcdir)/gvpr.3 ++# @GROFF@ -Tps -man $< >$@ + + libgvpr_la_LDFLAGS = -version-info $(GVPR_VERSION) -no-undefined + libgvpr_la_SOURCES = $(libgvpr_C_la_SOURCES) +@@ -61,6 +61,6 @@ + gdefs.h: $(top_srcdir)/lib/gvpr/gprdata mkdefs$(EXEEXT) + ./mkdefs$(EXEEXT) gdefs.h < $(top_srcdir)/lib/gvpr/gprdata + +-EXTRA_DIST = $(man_MANS) $(pdf_DATA) gprdata mkdefs.c gdefs.h trie.c gvprlib.vcxproj* ++EXTRA_DIST = gprdata mkdefs.c gdefs.h trie.c + + DISTCLEANFILES = $(pdf_DATA) gdefs.h mkdefs$(EXEEXT) gvpr.3.ps +diff -ru a/lib/pack/Makefile.am b/lib/pack/Makefile.am +--- a/lib/pack/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/lib/pack/Makefile.am 2020-10-23 22:39:44.950000000 +0000 +@@ -18,19 +18,19 @@ + + pkginclude_HEADERS = pack.h + noinst_LTLIBRARIES = libpack_C.la +-man_MANS = pack.3 +-pdf_DATA = pack.3.pdf ++#man_MANS = pack.3 ++#pdf_DATA = pack.3.pdf + #pkgconfig_DATA = libpack.pc + + libpack_C_la_SOURCES = ccomps.c pack.c + +-pack.3.pdf: pack.3.ps +- @PS2PDF@ $< $@ ++#pack.3.pdf: pack.3.ps ++# @PS2PDF@ $< $@ + +-pack.3.ps: $(srcdir)/pack.3 +- @GROFF@ -Tps -man $< >$@ ++#pack.3.ps: $(srcdir)/pack.3 ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = $(man_MANS) $(pdf_DATA) ptest.c ++EXTRA_DIST = ptest.c + + DISTCLEANFILES = $(pdf_DATA) pack.3.ps + +diff -ru a/lib/pathplan/Makefile.am b/lib/pathplan/Makefile.am +--- a/lib/pathplan/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/lib/pathplan/Makefile.am 2020-10-23 22:39:44.940000000 +0000 +@@ -16,8 +16,8 @@ + noinst_LTLIBRARIES = libpathplan_C.la + lib_LTLIBRARIES = libpathplan.la + pkgconfig_DATA = libpathplan.pc +-man_MANS = pathplan.3 +-pdf_DATA = pathplan.3.pdf ++#man_MANS = pathplan.3 ++#pdf_DATA = pathplan.3.pdf + + libpathplan_C_la_SOURCES = cvt.c inpoly.c route.c shortest.c \ + shortestpth.c solvers.c triang.c util.c visibility.c +@@ -26,12 +26,12 @@ + libpathplan_la_SOURCES = $(libpathplan_C_la_SOURCES) + libpathplan_la_LIBADD = @MATH_LIBS@ + +-pathplan.3.pdf: pathplan.3.ps +- @PS2PDF@ $< $@ ++#pathplan.3.pdf: pathplan.3.ps ++# @PS2PDF@ $< $@ + +-pathplan.3.ps: $(srcdir)/pathplan.3 +- @GROFF@ -Tps -man $< >$@ ++#pathplan.3.ps: $(srcdir)/pathplan.3 ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = $(man_MANS) $(pdf_DATA) path.lefty Pathplan.vcxproj* pathplan.def ++EXTRA_DIST = path.lefty pathplan.def + + DISTCLEANFILES = $(pdf_DATA) pathplan.3.ps +diff -ru a/lib/xdot/Makefile.am b/lib/xdot/Makefile.am +--- a/lib/xdot/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/lib/xdot/Makefile.am 2020-10-23 22:39:44.980000000 +0000 +@@ -12,20 +12,20 @@ + lib_LTLIBRARIES = libxdot.la + pkgconfig_DATA = libxdot.pc + +-man_MANS = xdot.3 +-pdf_DATA = xdot.3.pdf ++#man_MANS = xdot.3 ++#pdf_DATA = xdot.3.pdf + + libxdot_C_la_SOURCES = xdot.c + libxdot_la_LDFLAGS = -version-info $(XDOT_VERSION) -no-undefined + libxdot_la_SOURCES = $(libxdot_C_la_SOURCES) + +-xdot.3.pdf: xdot.3.ps +- @PS2PDF@ $< $@ ++#xdot.3.pdf: xdot.3.ps ++# @PS2PDF@ $< $@ + +-xdot.3.ps: $(srcdir)/xdot.3 +- @GROFF@ -Tps -man $< >$@ ++#xdot.3.ps: $(srcdir)/xdot.3 ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = $(man_MANS) $(pdf_DATA) xdot.vcxproj* ++#EXTRA_DIST = $(man_MANS) $(pdf_DATA) xdot.vcxproj* + + DISTCLEANFILES = $(pdf_DATA) xdot.3.ps + +diff -ru a/plugin/xlib/Makefile.am b/plugin/xlib/Makefile.am +--- a/plugin/xlib/Makefile.am 2020-06-29 08:47:18.000000000 +0000 ++++ b/plugin/xlib/Makefile.am 2020-10-23 22:39:45.030000000 +0000 +@@ -24,14 +24,14 @@ + endif + endif + +-man_MANS = vimdot.1 +-pdf_DATA = vimdot.1.pdf ++#man_MANS = vimdot.1 ++#pdf_DATA = vimdot.1.pdf + +-vimdot.1.pdf: vimdot.1.ps +- @PS2PDF@ $< $@ ++#vimdot.1.pdf: vimdot.1.ps ++# @PS2PDF@ $< $@ + +-vimdot.1.ps: $(srcdir)/vimdot.1 +- @GROFF@ -Tps -man $< >$@ ++#vimdot.1.ps: $(srcdir)/vimdot.1 ++# @GROFF@ -Tps -man $< >$@ + + libgvplugin_xlib_C_la_SOURCES = \ + gvplugin_xlib.c \ +@@ -53,6 +53,6 @@ + cp $(top_srcdir)/plugin/xlib/vimdot.sh vimdot + chmod +x vimdot + +-EXTRA_DIST = vimdot.sh vimdot.1 vimdot.1.pdf ++EXTRA_DIST = vimdot.sh vimdot.1 #vimdot.1.pdf + + DISTCLEANFILES = vimdot vimdot.1.pdf vimdot.1.ps +diff -ru a/tclpkg/gdtclft/Makefile.am b/tclpkg/gdtclft/Makefile.am +--- a/tclpkg/gdtclft/Makefile.am 2020-06-29 08:47:19.000000000 +0000 ++++ b/tclpkg/gdtclft/Makefile.am 2020-10-23 22:39:45.160000000 +0000 +@@ -20,8 +20,8 @@ + if WITH_LIBGD + if WITH_TCL + pkgtcl_LTLIBRARIES = libgdtclft.la +-man_MANS = $(man) +-pdf_DATA = $(pdf) ++#man_MANS = $(man) ++#pdf_DATA = $(pdf) + noinst_LTLIBRARIES = libgdtclft_C.la + endif + endif +@@ -47,13 +47,13 @@ + endif + endif + +-gdtclft.3tcl.pdf: gdtclft.3tcl.ps +- @PS2PDF@ $< $@ ++#gdtclft.3tcl.pdf: gdtclft.3tcl.ps ++# @PS2PDF@ $< $@ + +-gdtclft.3tcl.ps: $(srcdir)/gdtclft.3tcl +- @GROFF@ -Tps -man $< >$@ ++#gdtclft.3tcl.ps: $(srcdir)/gdtclft.3tcl ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = $(man) $(pdf) ++#EXTRA_DIST = $(man) $(pdf) + + CLEANFILES = pkgIndex.tcl + +diff -ru a/tclpkg/gv/Makefile.am b/tclpkg/gv/Makefile.am +--- a/tclpkg/gv/Makefile.am 2020-06-29 08:47:19.000000000 +0000 ++++ b/tclpkg/gv/Makefile.am 2020-10-23 22:39:45.150000000 +0000 +@@ -292,8 +292,8 @@ + if WITH_SWIG + if WITH_SHARP + pkgsharp_DATA = $(SHARP_data) +-man_MANS += gv.3sharp +-pdf_DATA += gv.3sharp.pdf ++#man_MANS += gv.3sharp ++#pdf_DATA += gv.3sharp.pdf + pkgsharp_LTLIBRARIES = libgv_sharp.la + DEVTSTS += test_sharp + endif +@@ -306,29 +306,29 @@ + endif + if WITH_GO + pkggo_DATA = $(GO_data) +-man_MANS += gv.3go +-pdf_DATA += gv.3go.pdf ++#man_MANS += gv.3go ++#pdf_DATA += gv.3go.pdf + pkggo_LTLIBRARIES = libgv_go.la + DEVTSTS += test_go + endif + if WITH_GUILE + pkgguile_DATA = $(GUILE_data) +-man_MANS += gv.3guile +-pdf_DATA += gv.3guile.pdf ++#man_MANS += gv.3guile ++#pdf_DATA += gv.3guile.pdf + pkgguile_LTLIBRARIES = libgv_guile.la + DEVTSTS += test_guile + endif + if WITH_IO + pkgio_DATA = $(IO_data) +-man_MANS += gv.3io +-pdf_DATA += gv.3io.pdf ++#man_MANS += gv.3io ++#pdf_DATA += gv.3io.pdf + pkgio_LTLIBRARIES = libgv_io.la + DEVTSTS += test_io + endif + if WITH_JAVA + pkgjava_DATA = $(JAVA_data) +-man_MANS += gv.3java +-pdf_DATA += gv.3java.pdf ++#man_MANS += gv.3java ++#pdf_DATA += gv.3java.pdf + pkgjava_LTLIBRARIES = libgv_java.la + DEVTSTS += test_java + endif +@@ -341,29 +341,29 @@ + endif + if WITH_LUA + pkglua_DATA = $(LUA_data) +-man_MANS += gv.3lua +-pdf_DATA += gv.3lua.pdf ++#man_MANS += gv.3lua ++#pdf_DATA += gv.3lua.pdf + pkglua_LTLIBRARIES = libgv_lua.la + DEVTSTS += test_lua + endif + if WITH_OCAML + pkgocaml_DATA = $(OCAML_data) +-man_MANS += gv.3ocaml +-pdf_DATA += gv.3ocaml.pdf ++#man_MANS += gv.3ocaml ++#pdf_DATA += gv.3ocaml.pdf + pkgocaml_LTLIBRARIES = libgv_ocaml.la + DEVTSTS += test_ocaml + endif + if WITH_PERL + pkgperl_DATA = $(PERL_data) +-man_MANS += gv.3perl +-pdf_DATA += gv.3perl.pdf ++#man_MANS += gv.3perl ++#pdf_DATA += gv.3perl.pdf + pkgperl_LTLIBRARIES = libgv_perl.la + DEVTSTS += test_perl + endif + if WITH_PHP + pkgphp_DATA = $(PHP_data) +-man_MANS += gv.3php +-pdf_DATA += gv.3php.pdf ++#man_MANS += gv.3php ++#pdf_DATA += gv.3php.pdf + pkgphp_LTLIBRARIES = libgv_php.la + DEVTSTS += test_php + endif +@@ -382,26 +382,26 @@ + pkgpython3_LTLIBRARIES = libgv_python3.la + DEVTSTS += test_python3 + endif +-man_MANS += gv.3python +-pdf_DATA += gv.3python.pdf ++#man_MANS += gv.3python ++#pdf_DATA += gv.3python.pdf + if WITH_R + pkgR_DATA = $(R_data) +-man_MANS += gv.3r +-pdf_DATA += gv.3r.pdf ++#man_MANS += gv.3r ++#pdf_DATA += gv.3r.pdf + pkgR_LTLIBRARIES = libgv_R.la + DEVTSTS += test_R + endif + if WITH_RUBY + pkgruby_DATA = $(RUBY_data) +-man_MANS += gv.3ruby +-pdf_DATA += gv.3ruby.pdf ++#man_MANS += gv.3ruby ++#pdf_DATA += gv.3ruby.pdf + pkgruby_LTLIBRARIES = libgv_ruby.la + DEVTSTS += test_ruby + endif + if WITH_TCL + pkgtcl_DATA = $(TCL_data) +-man_MANS += gv.3tcl +-pdf_DATA += gv.3tcl.pdf ++#man_MANS += gv.3tcl ++#pdf_DATA += gv.3tcl.pdf + pkgtcl_LTLIBRARIES = libgv_tcl.la + DEVTSTS += test_tcl + +@@ -412,92 +412,92 @@ + endif + endif + +-man = gv.3sharp gv.3go gv.3guile gv.3io gv.3java gv.3lua gv.3ocaml \ +- gv.3perl gv.3php gv.3python gv.3r gv.3ruby gv.3tcl ++#man = gv.3sharp gv.3go gv.3guile gv.3io gv.3java gv.3lua gv.3ocaml \ ++# gv.3perl gv.3php gv.3python gv.3r gv.3ruby gv.3tcl + +-pdf = gv.3sharp.pdf gv.3go.pdf gv.3guile.pdf gv.3io.pdf gv.3java.pdf gv.3lua.pdf \ +- gv.3ocaml.pdf gv.3perl.pdf gv.3php.pdf gv.3python.pdf gv.3r.pdf gv.3ruby.pdf gv.3tcl.pdf ++#pdf = gv.3sharp.pdf gv.3go.pdf gv.3guile.pdf gv.3io.pdf gv.3java.pdf gv.3lua.pdf \ ++# gv.3ocaml.pdf gv.3perl.pdf gv.3php.pdf gv.3python.pdf gv.3r.pdf gv.3ruby.pdf gv.3tcl.pdf + +-$(man): gv.i gv_doc_writer.tcl gv_doc_template.tcl gv_doc_langs.tcl ++#$(man): gv.i gv_doc_writer.tcl gv_doc_template.tcl gv_doc_langs.tcl + $(TCLSH) $(srcdir)/gv_doc_writer.tcl "$(srcdir)" + +-gv.3sharp.pdf: gv.3sharp.ps +- @PS2PDF@ $< $@ ++#gv.3sharp.pdf: gv.3sharp.ps ++# @PS2PDF@ $< $@ + +-gv.3sharp.ps: gv.3sharp +- @GROFF@ -Tps -man $< >$@ ++#gv.3sharp.ps: gv.3sharp ++# @GROFF@ -Tps -man $< >$@ + +-gv.3go.pdf: gv.3go.ps +- @PS2PDF@ $< $@ ++#gv.3go.pdf: gv.3go.ps ++# @PS2PDF@ $< $@ + +-gv.3go.ps: gv.3go +- @GROFF@ -Tps -man $< >$@ ++#gv.3go.ps: gv.3go ++# @GROFF@ -Tps -man $< >$@ + +-gv.3guile.pdf: gv.3guile.ps +- @PS2PDF@ $< $@ ++#gv.3guile.pdf: gv.3guile.ps ++# @PS2PDF@ $< $@ + +-gv.3guile.ps: gv.3guile +- @GROFF@ -Tps -man $< >$@ ++#gv.3guile.ps: gv.3guile ++# @GROFF@ -Tps -man $< >$@ + +-gv.3io.pdf: gv.3io.ps +- @PS2PDF@ $< $@ ++#gv.3io.pdf: gv.3io.ps ++# @PS2PDF@ $< $@ + +-gv.3io.ps: gv.3io +- @GROFF@ -Tps -man $< >$@ ++#gv.3io.ps: gv.3io ++# @GROFF@ -Tps -man $< >$@ + +-gv.3java.pdf: gv.3java.ps +- @PS2PDF@ $< $@ ++#gv.3java.pdf: gv.3java.ps ++# @PS2PDF@ $< $@ + +-gv.3java.ps: gv.3java +- @GROFF@ -Tps -man $< >$@ ++#gv.3java.ps: gv.3java ++# @GROFF@ -Tps -man $< >$@ + +-gv.3lua.pdf: gv.3lua.ps +- @PS2PDF@ $< $@ ++#gv.3lua.pdf: gv.3lua.ps ++# @PS2PDF@ $< $@ + +-gv.3lua.ps: gv.3lua +- @GROFF@ -Tps -man $< >$@ ++#gv.3lua.ps: gv.3lua ++# @GROFF@ -Tps -man $< >$@ + +-gv.3ocaml.pdf: gv.3ocaml.ps +- @PS2PDF@ $< $@ ++#gv.3ocaml.pdf: gv.3ocaml.ps ++# @PS2PDF@ $< $@ + +-gv.3ocaml.ps: gv.3ocaml +- @GROFF@ -Tps -man $< >$@ ++#gv.3ocaml.ps: gv.3ocaml ++# @GROFF@ -Tps -man $< >$@ + +-gv.3perl.pdf: gv.3perl.ps +- @PS2PDF@ $< $@ ++#gv.3perl.pdf: gv.3perl.ps ++# @PS2PDF@ $< $@ + +-gv.3perl.ps: gv.3perl +- @GROFF@ -Tps -man $< >$@ ++#gv.3perl.ps: gv.3perl ++# @GROFF@ -Tps -man $< >$@ + +-gv.3php.pdf: gv.3php.ps +- @PS2PDF@ $< $@ ++#gv.3php.pdf: gv.3php.ps ++# @PS2PDF@ $< $@ + +-gv.3php.ps: gv.3php +- @GROFF@ -Tps -man $< >$@ ++#gv.3php.ps: gv.3php ++# @GROFF@ -Tps -man $< >$@ + +-gv.3python.pdf: gv.3python.ps +- @PS2PDF@ $< $@ ++#gv.3python.pdf: gv.3python.ps ++# @PS2PDF@ $< $@ + +-gv.3python.ps: gv.3python +- @GROFF@ -Tps -man $< >$@ ++#gv.3python.ps: gv.3python ++# @GROFF@ -Tps -man $< >$@ + +-gv.3r.pdf: gv.3r.ps +- @PS2PDF@ $< $@ ++#gv.3r.pdf: gv.3r.ps ++# @PS2PDF@ $< $@ + +-gv.3r.ps: gv.3r +- @GROFF@ -Tps -man $< >$@ ++#gv.3r.ps: gv.3r ++# @GROFF@ -Tps -man $< >$@ + +-gv.3ruby.pdf: gv.3ruby.ps +- @PS2PDF@ $< $@ ++#gv.3ruby.pdf: gv.3ruby.ps ++# @PS2PDF@ $< $@ + +-gv.3ruby.ps: gv.3ruby +- @GROFF@ -Tps -man $< >$@ ++#gv.3ruby.ps: gv.3ruby ++# @GROFF@ -Tps -man $< >$@ + +-gv.3tcl.pdf: gv.3tcl.ps +- @PS2PDF@ $< $@ ++#gv.3tcl.pdf: gv.3tcl.ps ++# @PS2PDF@ $< $@ + +-gv.3tcl.ps: gv.3tcl +- @GROFF@ -Tps -man $< >$@ ++#gv.3tcl.ps: gv.3tcl ++# @GROFF@ -Tps -man $< >$@ + + install-data-hook: + if WITH_JAVA +@@ -643,7 +643,7 @@ + ln -fs ../$(srcdir)/*.gv ../$(srcdir)/*.tcl .; \ + $(TCLSH) ./test.tcl) + +-EXTRA_DIST = $(man) $(pdf) gv_doc_*.tcl ++EXTRA_DIST = gv_doc_*.tcl + + CLEANFILES = test_*/* pkgIndex.tcl \ + gv_sharp.cpp $(SHARP_data) \ +diff -ru a/tclpkg/tcldot/Makefile.am b/tclpkg/tcldot/Makefile.am +--- a/tclpkg/tcldot/Makefile.am 2020-06-29 08:47:19.000000000 +0000 ++++ b/tclpkg/tcldot/Makefile.am 2020-10-23 22:39:45.160000000 +0000 +@@ -35,8 +35,8 @@ + noinst_HEADERS = tcldot.h + pkgtcl_LTLIBRARIES = libtcldot.la libtcldot_builtin.la + +-man_MANS = $(man) +-pdf_DATA = $(pdf) ++#man_MANS = $(man) ++#pdf_DATA = $(pdf) + html_DATA = $(html) + endif + +@@ -108,13 +108,13 @@ + sh $(top_srcdir)/tclpkg/mkpkgindex.sh libtcldot.la Tcldot $(VERSION) + endif + +-tcldot.3tcl.pdf: tcldot.3tcl.ps +- @PS2PDF@ $< $@ ++#tcldot.3tcl.pdf: tcldot.3tcl.ps ++# @PS2PDF@ $< $@ + +-tcldot.3tcl.ps: $(srcdir)/tcldot.3tcl +- @GROFF@ -Tps -man $< >$@ ++#tcldot.3tcl.ps: $(srcdir)/tcldot.3tcl ++# @GROFF@ -Tps -man $< >$@ + +-EXTRA_DIST = $(man) $(pdf) $(html) README README.Tkspline ++EXTRA_DIST = $(html) README README.Tkspline + + CLEANFILES = pkgIndex.tcl + diff --git a/graphviz/default/patches-enabled/0001-clone-nameclash.patch b/graphviz/default/patches-enabled/0001-clone-nameclash.patch new file mode 120000 index 0000000..da2a0a5 --- /dev/null +++ b/graphviz/default/patches-enabled/0001-clone-nameclash.patch @@ -0,0 +1 @@ +../patches-available/0001-clone-nameclash.patch \ No newline at end of file diff --git a/graphviz/default/patches-enabled/0100-no-ghostscript-or-groff-dependency.patch b/graphviz/default/patches-enabled/0100-no-ghostscript-or-groff-dependency.patch new file mode 120000 index 0000000..c01bbc3 --- /dev/null +++ b/graphviz/default/patches-enabled/0100-no-ghostscript-or-groff-dependency.patch @@ -0,0 +1 @@ +../patches-available/0100-no-ghostscript-or-groff-dependency.patch \ No newline at end of file diff --git a/gsettings-desktop-schemas/default/APKBUILD b/gsettings-desktop-schemas/default/APKBUILD new file mode 100644 index 0000000..127e2de --- /dev/null +++ b/gsettings-desktop-schemas/default/APKBUILD @@ -0,0 +1,28 @@ +# Contributor: Natanael Copa +# Contributor: Rasmus Thomsen +# Maintainer: Rasmus Thomsen +pkgname=gsettings-desktop-schemas +pkgver=3.38.0 +pkgrel=0 +pkgdesc="A collection of GSettings schemas" +url="https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas" +arch="noarch" +license="LGPL-2.0-or-later" +makedepends="glib-dev gobject-introspection-dev meson" +subpackages="$pkgname-dev $pkgname-lang" +source="https://download.gnome.org/sources/gsettings-desktop-schemas/${pkgver%.*}/gsettings-desktop-schemas-$pkgver.tar.xz" + +build() { + abuild-meson . output + meson compile ${JOBS:+-j ${JOBS}} -C output +} + +check() { + meson test --no-rebuild -v -C output +} + +package() { + DESTDIR="$pkgdir" meson install --no-rebuild -C output +} + +sha512sums="5af7da90b8e7eec1c98e9e44653955f2882961dd9b5e2bf00e4eeb9f4f1149ae5171c600d457c6ab9c7482471c1a0e98f92f645a7ee7298e1b843c608f660756 gsettings-desktop-schemas-3.38.0.tar.xz" diff --git a/gsettings-desktop-schemas/default/conf.sh b/gsettings-desktop-schemas/default/conf.sh new file mode 100755 index 0000000..47123ce --- /dev/null +++ b/gsettings-desktop-schemas/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson --prefix="$PREFIX" ../build diff --git a/gsettings-desktop-schemas/default/deps b/gsettings-desktop-schemas/default/deps new file mode 100644 index 0000000..9280c4d --- /dev/null +++ b/gsettings-desktop-schemas/default/deps @@ -0,0 +1,24 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +glib +libffi +gobject-introspection-dynamic +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +samurai diff --git a/gsettings-desktop-schemas/default/inst.sh b/gsettings-desktop-schemas/default/inst.sh new file mode 100755 index 0000000..bc595c4 --- /dev/null +++ b/gsettings-desktop-schemas/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson install --no-rebuild -C ../build diff --git a/gsettings-desktop-schemas/default/make.sh b/gsettings-desktop-schemas/default/make.sh new file mode 100755 index 0000000..0af5a37 --- /dev/null +++ b/gsettings-desktop-schemas/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson compile -j$(nproc) -C ../build diff --git a/gst-plugins-base/default/conf.sh b/gst-plugins-base/default/conf.sh new file mode 100755 index 0000000..107cd2d --- /dev/null +++ b/gst-plugins-base/default/conf.sh @@ -0,0 +1,10 @@ +#!/bin/sh -e + +meson \ + -Dx11=disabled \ + -Dalsa=enabled \ + -Dintrospection=enabled \ + -Dpackage-origin="localhost" \ + -Dpackage-name="GStreamer base plug-ins (lix os)" \ + --prefix="$PREFIX" \ + . ../build diff --git a/gst-plugins-base/default/deps b/gst-plugins-base/default/deps new file mode 100644 index 0000000..e4a3720 --- /dev/null +++ b/gst-plugins-base/default/deps @@ -0,0 +1,46 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +ldd +pkgconf +perl +xz +zlib +bzip2 +libpng +libjpeg-turbo +wayland +wayland-protocols +alsa-lib +cdparanoia +libogg +libvorbis +libtheora +opus +orc +libxml2 +expat +libffi +glib +gobject-introspection-dynamic +gstreamer +gtk-dynamic >= 3.0.0 +libdrm-dynamic +mesa-dynamic +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson diff --git a/gst-plugins-base/default/env.sh b/gst-plugins-base/default/env.sh new file mode 100644 index 0000000..f2a8e59 --- /dev/null +++ b/gst-plugins-base/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS -DEGL_NO_X11" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/gst-plugins-base/default/inst.sh b/gst-plugins-base/default/inst.sh new file mode 100755 index 0000000..bc595c4 --- /dev/null +++ b/gst-plugins-base/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson install --no-rebuild -C ../build diff --git a/gst-plugins-base/default/make.sh b/gst-plugins-base/default/make.sh new file mode 100755 index 0000000..0af5a37 --- /dev/null +++ b/gst-plugins-base/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson compile -j$(nproc) -C ../build diff --git a/gstreamer/default/conf.sh b/gstreamer/default/conf.sh new file mode 100755 index 0000000..381fe5f --- /dev/null +++ b/gstreamer/default/conf.sh @@ -0,0 +1,10 @@ +#!/bin/sh -e + +meson \ + -Dintrospection=enabled \ + -Dbash-completion=disabled \ + -Dptp-helper-permissions=capabilities \ + -Dpackage-name="GStreamer (lix os)" \ + -Dpackage-origin="localhost" \ + --prefix="$PREFIX" \ + . ../build diff --git a/gstreamer/default/deps b/gstreamer/default/deps new file mode 100644 index 0000000..e3ccb3e --- /dev/null +++ b/gstreamer/default/deps @@ -0,0 +1,32 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +ldd +perl +m4 +flex +bison +zlib +libffi +glib +gobject-introspection-dynamic +libcap +libxml2 +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +samurai diff --git a/gstreamer/default/env.sh b/gstreamer/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/gstreamer/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/gstreamer/default/inst.sh b/gstreamer/default/inst.sh new file mode 100755 index 0000000..bc595c4 --- /dev/null +++ b/gstreamer/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson install --no-rebuild -C ../build diff --git a/gstreamer/default/make.sh b/gstreamer/default/make.sh new file mode 100755 index 0000000..0af5a37 --- /dev/null +++ b/gstreamer/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson compile -j$(nproc) -C ../build diff --git a/gtk-dynamic/default/conf.sh b/gtk-dynamic/default/conf.sh new file mode 100755 index 0000000..136b0f3 --- /dev/null +++ b/gtk-dynamic/default/conf.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +CFLAGS="$SHARED_CFLAGS -DEGL_NO_X11" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --enable-introspection \ + --enable-explicit-deps \ + --enable-wayland-backend \ + --disable-x11-backend \ + --with-pic \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix=$PREFIX + +## explanation +# +# --enable-shared: build the dynamic libraries. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/gtk-dynamic/default/deps b/gtk-dynamic/default/deps new file mode 100644 index 0000000..6feb2d0 --- /dev/null +++ b/gtk-dynamic/default/deps @@ -0,0 +1,42 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +automake +autoconf +pkgconf +zlib +bzip2 +xz +libdrm-dynamic +libpng +pixman +expat +libffi +glib +gobject-introspection-dynamic +wayland +wayland-protocols +mesa-dynamic +libepoxy +atk +harfbuzz +freetype-harfbuzz +fontconfig +gdk-pixbuf +libxkbcommon-dynamic +python3-dynamic +fribidi +cairo +pango +at-spi2-core +at-spi2-atk diff --git a/gtk-dynamic/default/deps.bak b/gtk-dynamic/default/deps.bak new file mode 100644 index 0000000..8a6c53a --- /dev/null +++ b/gtk-dynamic/default/deps.bak @@ -0,0 +1,39 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +automake +autoconf +pkgconf +zlib +bzip2 +xz +libpng +pixman +expat +libffi +glib +gobject-introspection-dynamic +wayland +wayland-protocols +mesa +atk +fribidi +cairo +harfbuzz +freetype-harfbuzz +fontconfig +gdk-pixbuf +libepoxy +libxkbcommon-dynamic +python3-dynamic +pango diff --git a/gtk-dynamic/default/make.sh b/gtk-dynamic/default/make.sh new file mode 100755 index 0000000..22f63a4 --- /dev/null +++ b/gtk-dynamic/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +make -j$(nproc) diff --git a/guile/default/conf.sh b/guile/default/conf.sh new file mode 100755 index 0000000..147980f --- /dev/null +++ b/guile/default/conf.sh @@ -0,0 +1,8 @@ +#!/bin/sh -e + +./configure \ + --disable-error-on-warning \ + --disable-static \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" diff --git a/guile/default/deps b/guile/default/deps new file mode 100644 index 0000000..5d3d7c9 --- /dev/null +++ b/guile/default/deps @@ -0,0 +1,20 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +perl +m4 +texinfo +libtool +ncurses +libunistring +libffi +gc diff --git a/guile/default/patches-available/0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch b/guile/default/patches-available/0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch new file mode 100644 index 0000000..cbe194d --- /dev/null +++ b/guile/default/patches-available/0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch @@ -0,0 +1,29 @@ +From be9d97e0eeb2423b86fad7094a462b142f5176f7 Mon Sep 17 00:00:00 2001 +From: Rob Browning +Date: Sun, 18 Mar 2012 13:28:24 -0500 +Subject: Mark "mutex with owner not retained" threads test as unresolved. + +As per discussion with upstream, mark this test as unresolved since it +may produce false negatives, depending on the behavior/timing of the +garbage collector. +--- + test-suite/tests/threads.test | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/test-suite/tests/threads.test b/test-suite/tests/threads.test +index 8178120..7d180de 100644 +--- a/test-suite/tests/threads.test ++++ b/test-suite/tests/threads.test +@@ -412,8 +412,10 @@ + + (gc) (gc) + (let ((m (g))) +- (and (mutex? m) +- (eq? (mutex-owner m) (current-thread))))))) ++ (or ++ (and (mutex? m) ++ (eq? (mutex-owner m) (current-thread))) ++ (throw 'unresolved)))))) + + ;; + ;; mutex lock levels diff --git a/guile/default/patches-enabled/0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch b/guile/default/patches-enabled/0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch new file mode 120000 index 0000000..454d785 --- /dev/null +++ b/guile/default/patches-enabled/0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch @@ -0,0 +1 @@ +../patches-available/0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch \ No newline at end of file diff --git a/harfbuzz/default/conf.sh b/harfbuzz/default/conf.sh new file mode 100755 index 0000000..da7f723 --- /dev/null +++ b/harfbuzz/default/conf.sh @@ -0,0 +1,33 @@ +#!/bin/sh -e + +# Point Harfbuzz to the Freetype files. +#export CFLAGS="$CFLAGS -I$1/usr/include/freetype2" +#export CXXFLAGS="$CXXFLAGS -I$1/usr/include/freetype2" +#export LDFLAGS="$LDFLAGS -L$1/usr/lib" +cat << EOF > ../build/pkgconfstatic +#!/bin/sh -e + +pkgconfbin="\$(which pkgconf)" +[ "\$1" = "--version" ] && \$pkgconfbin --version || \$pkgconfbin --static \$@ +EOF +chmod +x ../build/pkgconfstatic +export PKG_CONFIG="../build/pkgconfstatic" + +#-Dpkg_config_path="$1/usr/lib/pkgconfig" \ + +PKG_CONFIG="pkgconf" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson \ + -Ddefault_library=both \ + -Dintrospection=enabled \ + -Dglib=enabled \ + -Dfreetype=enabled \ + -Dicu=enabled \ + -Dbenchmark=disabled \ + -Dtests=disabled \ + --prefix=/usr \ + ../build + +rm ../build/pkgconfstatic diff --git a/harfbuzz/default/deps b/harfbuzz/default/deps new file mode 100644 index 0000000..ce441be --- /dev/null +++ b/harfbuzz/default/deps @@ -0,0 +1,34 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +ldd +libffi +bzip2 +zlib +pkgconf +expat +libpng +freetype +fontconfig +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +mesa-dynamic +pixman +glib +gobject-introspection-dynamic +icu diff --git a/harfbuzz/default/inst.sh b/harfbuzz/default/inst.sh new file mode 100755 index 0000000..6fa0ca3 --- /dev/null +++ b/harfbuzz/default/inst.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +PKG_CONFIG="pkgconf" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson install --no-rebuild -C ../build diff --git a/harfbuzz/default/make.sh b/harfbuzz/default/make.sh new file mode 100755 index 0000000..1caced0 --- /dev/null +++ b/harfbuzz/default/make.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +PKG_CONFIG="pkgconf" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson compile -C ../build diff --git a/havoc/default/conf.sh b/havoc/default/conf.sh new file mode 100755 index 0000000..ce18b43 --- /dev/null +++ b/havoc/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "no configuration to be done." diff --git a/havoc/default/deps b/havoc/default/deps new file mode 100644 index 0000000..e00f9dd --- /dev/null +++ b/havoc/default/deps @@ -0,0 +1,21 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +automake +autoconf +pkgconf +expat +libffi +libxkbcommon +wayland +wayland-protocols diff --git a/havoc/default/make.sh b/havoc/default/make.sh new file mode 100755 index 0000000..4a33131 --- /dev/null +++ b/havoc/default/make.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +#CXXFLAGS="$SHARED_CXXFLAGS" \ +#LDFLAGS="$SHARED_LDFLAGS" \ +CFLAGS="$CFLAGS -O2 -DNDEBUG" \ +make -j$(nproc) diff --git a/havoc/default/patch b/havoc/default/patch new file mode 100644 index 0000000..65d58ed --- /dev/null +++ b/havoc/default/patch @@ -0,0 +1,11 @@ +--- a/Makefile 2020-07-16 20:54:39.000000000 +0000 ++++ b/Makefile 2020-10-12 19:18:28.740000000 +0000 +@@ -10,7 +10,7 @@ + override CFLAGS += -DVERSION=\"$(VERSION)\" + + VPATH=$(WAYLAND_PROTOCOLS_DIR)/stable/xdg-shell +-LIBS=-lrt -lm -lutil -lwayland-client -lwayland-cursor -lxkbcommon -Ltsm -lhtsm ++LIBS=-lrt -lm -lutil -lwayland-client -lwayland-cursor -lffi -lxkbcommon -Ltsm -lhtsm + OBJ=xdg-shell.o gtk-primary-selection.o glyph.o main.o + GEN=xdg-shell.c xdg-shell.h gtk-primary-selection.c gtk-primary-selection.h + diff --git a/help2man/default/deps b/help2man/default/deps new file mode 100644 index 0000000..9a61099 --- /dev/null +++ b/help2man/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl diff --git a/http-parser/default/conf.sh b/http-parser/default/conf.sh new file mode 100755 index 0000000..ce18b43 --- /dev/null +++ b/http-parser/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "no configuration to be done." diff --git a/http-parser/default/inst.sh b/http-parser/default/inst.sh new file mode 100755 index 0000000..631a91b --- /dev/null +++ b/http-parser/default/inst.sh @@ -0,0 +1,8 @@ +#!/bin/sh -e + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" + +make -j$(nproc) install +install -D libhttp_parser.a $PREFIX/lib/ diff --git a/http-parser/default/make.sh b/http-parser/default/make.sh new file mode 100755 index 0000000..1d28cb9 --- /dev/null +++ b/http-parser/default/make.sh @@ -0,0 +1,11 @@ +#!/bin/sh -e + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" + +# dynamic library +make -j$(nproc) library + +# static library +make -j$(nproc) package diff --git a/hwids/default/conf.sh b/hwids/default/conf.sh new file mode 100755 index 0000000..0506aac --- /dev/null +++ b/hwids/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration to do." diff --git a/hwids/default/deps b/hwids/default/deps new file mode 100644 index 0000000..c9f88a6 --- /dev/null +++ b/hwids/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +gzip diff --git a/hwids/default/inst.sh b/hwids/default/inst.sh new file mode 100755 index 0000000..ddbee54 --- /dev/null +++ b/hwids/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +make DESTDIR= MISCDIR="/usr/share/hwids" install diff --git a/hwids/default/patch b/hwids/default/patch new file mode 100644 index 0000000..d4c5edc --- /dev/null +++ b/hwids/default/patch @@ -0,0 +1,19 @@ +--- a/Makefile 2020-08-14 19:09:17.000000000 +0000 ++++ /bMakefile 2020-08-29 15:38:15.320000000 +0000 +@@ -84,13 +84,13 @@ + + install-base: $(DATA_FILES-yes) + mkdir -p $(DESTDIR)$(DOCDIR) +- install -p -m 644 README.md $(DESTDIR)$(DOCDIR) ++ install -m 644 README.md $(DESTDIR)$(DOCDIR) + ifneq ($(strip $(DATA_FILES-yes)),) + mkdir -p $(DESTDIR)$(MISCDIR) +- install -p -m 644 $(DATA_FILES-yes) $(DESTDIR)$(MISCDIR) ++ install -m 644 $(DATA_FILES-yes) $(DESTDIR)$(MISCDIR) + endif + + install-hwdb: + mkdir -p $(DESTDIR)$(HWDBDIR) +- install -p -m 644 udev/*.hwdb $(DESTDIR)$(HWDBDIR) ++ install -m 644 udev/*.hwdb $(DESTDIR)$(HWDBDIR) + udevadm hwdb --root $(DESTDIR) --update diff --git a/icu/default/conf.sh b/icu/default/conf.sh new file mode 100755 index 0000000..94b1685 --- /dev/null +++ b/icu/default/conf.sh @@ -0,0 +1,13 @@ +#!/bin/sh -e + +cd source +./configure \ + --disable-samples \ + --with-data-packaging=library \ + --sysconfdir=$PREFIX/etc \ + --mandir=$PREFIX/share/man \ + --enable-shared \ + --enable-static \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" diff --git a/icu/default/inst.sh b/icu/default/inst.sh new file mode 100755 index 0000000..aeb9d60 --- /dev/null +++ b/icu/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +cd source +make install diff --git a/icu/default/make.sh b/icu/default/make.sh new file mode 100755 index 0000000..95b3fc7 --- /dev/null +++ b/icu/default/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +cd source +make -j$(nproc) diff --git a/imlib2/default/conf.sh b/imlib2/default/conf.sh new file mode 100755 index 0000000..271e4ef --- /dev/null +++ b/imlib2/default/conf.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +#LIBX11_CFLAGS="$CFLAGS -I/include/X11" \ +#LIBX11_LDFLAGS="$LDFLAGS -lX11" \ +#CFLAGS="$CFLAGS -I/include/X11" \ +LIBS="-ljpeg -lz" \ +./configure \ + --disable-mmx \ + --disable-amd64 \ + --enable-visibility-hiding \ + --without-x \ + --with-bzip2 \ + --with-gif \ + --with-id3 \ + --with-jpeg \ + --with-png \ + --with-tiff \ + --with-webp \ + --with-zlib \ + --disable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + + #--with-x \ + #--x-includes="/include" \ + #--x-libraries="-lX11" \ +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/imlib2/default/deps b/imlib2/default/deps new file mode 100644 index 0000000..d9aea64 --- /dev/null +++ b/imlib2/default/deps @@ -0,0 +1,38 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +libtool +autoconf +automake +bzip2 +zlib +giflib +libjpeg-turbo +libpng +libtiff +libwebp +libid3tag +freetype +xorg-util-macros +libxml2 +xorgproto +libxslt +xcb-proto +libxau +libxcb +xtrans +libx11 +libxext +libsm +libice +pkgconf diff --git a/imlib2/default/deps.bak b/imlib2/default/deps.bak new file mode 100644 index 0000000..d9aea64 --- /dev/null +++ b/imlib2/default/deps.bak @@ -0,0 +1,38 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +libtool +autoconf +automake +bzip2 +zlib +giflib +libjpeg-turbo +libpng +libtiff +libwebp +libid3tag +freetype +xorg-util-macros +libxml2 +xorgproto +libxslt +xcb-proto +libxau +libxcb +xtrans +libx11 +libxext +libsm +libice +pkgconf diff --git a/imlib2/default/patch b/imlib2/default/patch new file mode 100644 index 0000000..59a6711 --- /dev/null +++ b/imlib2/default/patch @@ -0,0 +1,9 @@ +--- a/imlib2.pc.in 2016-04-14 17:13:33.000000000 +0000 ++++ b/imlib2.pc.in 2020-09-28 19:41:36.760000000 +0000 +@@ -7,5 +7,6 @@ + Description: Powerful image loading and rendering library + Version: @VERSION@ + Libs: -L${libdir} -lImlib2 ++Libs.private: -lX11 -lpthread -lxcb -lXau -lxshmfence -lfreetype -lz -lbz2 -lpng16 -lz + Cflags: -I${includedir} + diff --git a/infnoise/.gitignore b/infnoise/.gitignore new file mode 100644 index 0000000..e843e3e --- /dev/null +++ b/infnoise/.gitignore @@ -0,0 +1,9 @@ +infnoise +KeccakF-1600-reference.o +daemon.o +healthcheck.o +infnoise +infnoise.o +libinfnoise.a +libinfnoise.o +libinfnoise.so diff --git a/infnoise/default/conf.sh b/infnoise/default/conf.sh new file mode 100755 index 0000000..6cf6671 --- /dev/null +++ b/infnoise/default/conf.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +ln -sf Makefile.linux Makefile + +echo "soft-linked Makefile to Makefile.linux" diff --git a/infnoise/default/deps b/infnoise/default/deps new file mode 100644 index 0000000..f939e2f --- /dev/null +++ b/infnoise/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libftdi +git diff --git a/infnoise/default/inst.sh b/infnoise/default/inst.sh new file mode 100755 index 0000000..5f8c112 --- /dev/null +++ b/infnoise/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +cp -v infnoise /bin/ diff --git a/infnoise/default/patch b/infnoise/default/patch new file mode 100644 index 0000000..bce871f --- /dev/null +++ b/infnoise/default/patch @@ -0,0 +1,40 @@ +*** src/Makefile.linux Mon Feb 18 09:01:16 2019 +--- src-mod/Makefile.linux Tue May 5 00:52:28 2020 +*************** +*** 2,10 **** + GIT_COMMIT := $(shell git rev-parse --verify HEAD) + GIT_DATE := $(firstword $(shell git --no-pager show --date=iso-strict --format="%ad" --name-only)) + +! PREFIX = $(DESTDIR)/usr/local + +! CFLAGS = -Wall -Wextra -Werror -std=c99 -O3 -fPIC -I Keccak -I /usr/include/libftdi1 \ + -DGIT_VERSION=\"$(GIT_VERSION)\"\ + -DGIT_COMMIT=\"$(GIT_COMMIT)\"\ + -DGIT_DATE=\"$(GIT_DATE)\"\ +--- 2,10 ---- + GIT_COMMIT := $(shell git rev-parse --verify HEAD) + GIT_DATE := $(firstword $(shell git --no-pager show --date=iso-strict --format="%ad" --name-only)) + +! PREFIX = $(DESTDIR) + +! CFLAGS += -Wall -Wextra -std=c99 -O3 -fPIC -I Keccak -I /usr/include/libftdi1 \ + -DGIT_VERSION=\"$(GIT_VERSION)\"\ + -DGIT_COMMIT=\"$(GIT_COMMIT)\"\ + -DGIT_DATE=\"$(GIT_DATE)\"\ +*************** +*** 20,26 **** + all: libinfnoise.a libinfnoise.so infnoise + + infnoise: libinfnoise.a infnoise.o daemon.o +! $(CC) $(CFLAGS) -o infnoise infnoise.o daemon.o libinfnoise.a $(FTDI) -lm -lrt -L. + + %.o: %.c infnoise.h libinfnoise.h + $(CC) -c -o $@ $< $(CFLAGS) +--- 20,26 ---- + all: libinfnoise.a libinfnoise.so infnoise + + infnoise: libinfnoise.a infnoise.o daemon.o +! $(CC) $(CFLAGS) -o infnoise infnoise.o daemon.o libinfnoise.a $(FTDI) -lusb-1.0 -lm -lrt -L. + + %.o: %.c infnoise.h libinfnoise.h + $(CC) -c -o $@ $< $(CFLAGS) diff --git a/iproute2/default/deps b/iproute2/default/deps new file mode 100644 index 0000000..d347f1d --- /dev/null +++ b/iproute2/default/deps @@ -0,0 +1,16 @@ + +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +m4 +gnu-grep +gnu-sed +pkgconf +bison +flex diff --git a/iproute2/default/patch b/iproute2/default/patch new file mode 100644 index 0000000..304d583 --- /dev/null +++ b/iproute2/default/patch @@ -0,0 +1,11 @@ +--- a/Makefile 2020-08-03 17:02:47.000000000 +0000 ++++ a/Makefile 2020-08-25 01:59:51.280000000 +0000 +@@ -89,7 +89,7 @@ + install -m 0755 -d $(DESTDIR)$(ARPDDIR) + install -m 0755 -d $(DESTDIR)$(HDRDIR) + @for i in $(SUBDIRS); do $(MAKE) -C $$i install; done +- install -m 0644 $(shell find etc/iproute2 -maxdepth 1 -type f) $(DESTDIR)$(CONFDIR) ++ install -m 0644 $(shell find etc/iproute2 -type f) $(DESTDIR)$(CONFDIR) + install -m 0755 -d $(DESTDIR)$(BASH_COMPDIR) + install -m 0644 bash-completion/tc $(DESTDIR)$(BASH_COMPDIR) + install -m 0644 bash-completion/devlink $(DESTDIR)$(BASH_COMPDIR) diff --git a/itstool/default/conf.sh b/itstool/default/conf.sh new file mode 100755 index 0000000..005d8ac --- /dev/null +++ b/itstool/default/conf.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +autoreconf -vif + +./configure \ + --disable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/itstool/default/deps b/itstool/default/deps new file mode 100644 index 0000000..2f3e318 --- /dev/null +++ b/itstool/default/deps @@ -0,0 +1,20 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +autoconf +automake +diffutils +gettext +libxml2 +python3-dynamic +py3-libxml2 diff --git a/itstool/default/patches-available/fix-segfault.patch b/itstool/default/patches-available/fix-segfault.patch new file mode 100644 index 0000000..3de72e9 --- /dev/null +++ b/itstool/default/patches-available/fix-segfault.patch @@ -0,0 +1,25 @@ +From 1549b6d12eb2f35e5c7f1b1856c21768e92ba794 Mon Sep 17 00:00:00 2001 +From: Guido Trentalancia +Date: Wed, 1 Nov 2017 18:23:44 +0100 +Subject: [PATCH] Fix a segmentation fault bug introduced with version 2.0.4. + +https://github.com/itstool/itstool/issues/17 + +This fix seems a lot easier than the previous reverted commit. +--- + itstool.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/itstool.in b/itstool.in +index c1d0585..e492e95 100755 +--- a/itstool.in ++++ b/itstool.in +@@ -1053,7 +1053,7 @@ class Document (object): + else: + ctxt.replaceEntities(1) + ctxt.parseDocument() +- trnode = ctxt.doc().getRootElement() ++ trnode = ctxt.doc().getRootElement().copyNode(1) + try: + self._check_errors() + except libxml2.parserError: diff --git a/itstool/default/patches-enabled/fix-segfault.patch b/itstool/default/patches-enabled/fix-segfault.patch new file mode 120000 index 0000000..6c41e9d --- /dev/null +++ b/itstool/default/patches-enabled/fix-segfault.patch @@ -0,0 +1 @@ +../patches-available/fix-segfault.patch \ No newline at end of file diff --git a/json-c/0.14/deps b/json-c/0.14/deps new file mode 100644 index 0000000..6daaa69 --- /dev/null +++ b/json-c/0.14/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +rsync +cmake diff --git a/json-c/default/conf.sh b/json-c/default/conf.sh new file mode 100755 index 0000000..62954e7 --- /dev/null +++ b/json-c/default/conf.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +cd /mnt/build +cmake /mnt/src \ + -DCMAKE_INSTALL_PREFIX=$PREFIX \ + -DENABLE_THREADING=ON \ + -DBUILD_SHARED_LIBS=OFF \ + -DCMAKE_BUILD_TYPE=production \ + -DCMAKE_INSTALL_LIBDIR:PATH=/lib \ + -DINSTALL_PREFIX= + +## explanation +# +# -DENABLE_THREADING: enable threading! +# +# -DBUILD_SHARED_LIBS: only build the static libraries. +# +# -DCMAKE_BUILD_TYPE: build like this is going to be released! (optimisations.) +# +# -DCMAKE_INSTALL_LIBDIR: put the libraries in /lib +# +# -DINSTALL_PREFIX: +# don't put things in /local! (it does anyway. inst.sh handles it.) diff --git a/json-c/default/deps b/json-c/default/deps new file mode 100644 index 0000000..98896db --- /dev/null +++ b/json-c/default/deps @@ -0,0 +1,6 @@ +lix-os-filesystem +linux-kernel +patch +pkgconf +cmake +curl diff --git a/json-c/default/inst.sh b/json-c/default/inst.sh new file mode 100755 index 0000000..895b157 --- /dev/null +++ b/json-c/default/inst.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +cd /mnt/build +DESTDIR=/ make -j$(nproc) install + +# for some reason, json-c insists on installing itself to /local +# this isn't the cleanest solution, but it's simple and it'll work as long as +# lix's "no /usr/local" policy isn't violated. +echo "lix: moving /local contents to /" +[ ! -d /local/lib ] || rsync -a /local/lib/ /lib/ +[ ! -d /local/lib64 ] || rsync -a /local/lib64/ /lib/ +[ ! -d /local/include ] || rsync -a /local/include/ /include/ +[ ! -d /local ] || rm -fr /local diff --git a/json-c/default/make.sh b/json-c/default/make.sh new file mode 100755 index 0000000..9444130 --- /dev/null +++ b/json-c/default/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +cd /mnt/build +make -j$(nproc) diff --git a/json-glib/default/conf.sh b/json-glib/default/conf.sh new file mode 100755 index 0000000..6da3e2d --- /dev/null +++ b/json-glib/default/conf.sh @@ -0,0 +1,19 @@ +#!/bin/sh -e + +# json-glib is effectively dead (only translation work) so +# this makes my life a little easier.. + + # This mess of CFLAGS, etc is needed to point json-glib to + # the freshly built glib sources instead of the system's. +# export PKG_CONFIG_PATH="$1/usr/lib/pkgconfig:$PKG_CONFIG_PATH" +# export PATH="$1/usr/bin:$PATH" +# export CFLAGS="$CFLAGS -I$1/usr/include/glib-2.0" +# export CFLAGS="$CFLAGS -I$1/usr/lib/glib-2.0/include -pthread" +# export LDFLAGS="$LDFLAGS -L$1/usr/lib/" + +meson \ + -Ddocs=false \ + -Dintrospection=true \ + -Ddefault_library=both \ + --prefix=$PREFIX \ + . ../build diff --git a/json-glib/default/deps b/json-glib/default/deps new file mode 100644 index 0000000..dbae6aa --- /dev/null +++ b/json-glib/default/deps @@ -0,0 +1,24 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +zlib +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +pkgconf +libffi +glib diff --git a/json-glib/default/env.sh b/json-glib/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/json-glib/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/json-glib/default/inst.sh b/json-glib/default/inst.sh new file mode 100755 index 0000000..6953b06 --- /dev/null +++ b/json-glib/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -j$(nproc) -C ../build install diff --git a/json-glib/default/kiss.sh b/json-glib/default/kiss.sh new file mode 100755 index 0000000..d4ec56d --- /dev/null +++ b/json-glib/default/kiss.sh @@ -0,0 +1,53 @@ +#!/bin/sh -e + +export DESTDIR="$1" + +# Remove 'libelf' and 'util-linux' dependencies. +sed -i 's/HAVE_LIBELF/HAVE_KISS/' gio/meson.build +sed -i 's/libmount_dep.found()/false/' meson.build + +# Don't build tests/fuzzing stuff. +find . -type f -name meson.build -exec \ + sed -i "/subdir('tests')/d;/subdir('fuzzing')/d" {} + + +meson \ + --prefix=/usr \ + -Dlibmount=disabled \ + -Dinstalled_tests=false \ + -Ddefault_library=both \ + -Dman=false \ + -Dfam=false \ + -Dinternal_pcre=true \ + . build + +ninja -C build +ninja -C build install + +# json-glib is a separate package which we build alongside +# glib (as if they were one and the same). The upstream for +# json-glib is effectively dead (only translation work) so +# this makes my life a little easier.. +{ + cd json-glib + + # This mess of CFLAGS, etc is needed to point json-glib to + # the freshly built glib sources instead of the system's. + export PKG_CONFIG_PATH="$1/usr/lib/pkgconfig:$PKG_CONFIG_PATH" + export PATH="$1/usr/bin:$PATH" + export CFLAGS="$CFLAGS -I$1/usr/include/glib-2.0" + export CFLAGS="$CFLAGS -I$1/usr/lib/glib-2.0/include -pthread" + export LDFLAGS="$LDFLAGS -L$1/usr/lib/" + + meson \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + -Ddocs=false \ + -Dintrospection=false \ + . output + + ninja -C output + ninja -C output install +} + +kiss l dbus >/dev/null || rm -rf "$1/usr/bin/gdbus" diff --git a/json-glib/default/make.sh b/json-glib/default/make.sh new file mode 100755 index 0000000..11412b7 --- /dev/null +++ b/json-glib/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -j$(nproc) -C ../build diff --git a/kbd/default/conf.sh b/kbd/default/conf.sh new file mode 100755 index 0000000..6429c78 --- /dev/null +++ b/kbd/default/conf.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +#./autogen.sh +autoreconf -vif + +./configure \ + --disable-vlock \ + --disable-nls \ + --disable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-vlock: vlock introduces a dependency on libpam. +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/kbd/default/deps b/kbd/default/deps new file mode 100644 index 0000000..747c8be --- /dev/null +++ b/kbd/default/deps @@ -0,0 +1,23 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libarchive +gzip +perl +m4 +automake +autoconf +flex +bison +check +ckbcomp +libtool +gettext diff --git a/kmod/default/conf.sh b/kmod/default/conf.sh new file mode 100755 index 0000000..2b3bfb8 --- /dev/null +++ b/kmod/default/conf.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# generate configure script +PKG_CONFIG="/bin/pkg-config" \ +./autogen.sh + +./configure --disable-manpages --prefix= + +## explanation +# +# --disable-manpages: removes dependencies on libxslt and libxml2 +# +# --prefix: respect the "no /usr/local" policy. diff --git a/kmod/default/inst.sh b/kmod/default/inst.sh new file mode 100755 index 0000000..58f172b --- /dev/null +++ b/kmod/default/inst.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +make -j$(nproc) install + +# kmod is a multi-binary that can behave like the utility it's called as. +# fill in any missing module utilities with symlinks to kmod. +while read util; do + [ -e /bin/$util ] || ln -s kmod /bin/$util +done < + + + + + + + + + 404 Page not found + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ +
+
+ +
+ +
+ +

We are sorry – this page is not here anymore

+

Error 404: Page not found

+ +

Go to homepage +

+
+ + +
+ +
+ +
+ + +
+
+ + +
+

About us

+ +

My name is Marti Maria. As the author of LittleCMS, I would like to thank you very much for using this product. Sometimes people ask me about my motivation for making this engine freely available. I work as a color engineer for a large-format printer manufacturer, but on my spare time, I enjoy maintaining this library. This is my pet project and I do it just for fun. So, if you find this piece of code useful, have suggestions or even criticisms, please drop me a note! I appreciate all feedback.

+ + + +
+ + + +
+ + +

Recent posts

+ + + + + + +
+ + + +
+ +

Contact

+ + For general stuff info {at} littlecms {dot} com
For commencial inquires sales {at} littlecms {dot} com + + Go to contact page + + + +
+ + + +
+ +
+ + + + + + + + + + + + + +
+ + diff --git a/ldd/default/conf.sh b/ldd/default/conf.sh new file mode 100755 index 0000000..a7620e0 --- /dev/null +++ b/ldd/default/conf.sh @@ -0,0 +1,6 @@ +#!/bin/sh -e + +[ -e "/$(gcc -dumpmachine)/lib/libc.so" ] || { + echo "libc.so was not where it was expected! edit the scripts in $(pwd)." + exit 1 +} diff --git a/ldd/default/inst.sh b/ldd/default/inst.sh new file mode 100755 index 0000000..dcf2563 --- /dev/null +++ b/ldd/default/inst.sh @@ -0,0 +1,5 @@ +#!/bin/sh -e + +cp ../build/ldd /bin/ + +echo "installed ldd to /bin" diff --git a/ldd/default/make.sh b/ldd/default/make.sh new file mode 100755 index 0000000..a1a914e --- /dev/null +++ b/ldd/default/make.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +cat > ../build/ldd < +#include +#include +#include +#include + +static unsigned int error_message_count = 0; + +static inline void error(int status, int errnum, const char* format, ...) +{ + va_list ap; + fprintf(stderr, "%s: ", program_invocation_name); + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + if (errnum) + fprintf(stderr, ": %s", strerror(errnum)); + fprintf(stderr, "\n"); + error_message_count++; + if (status) + exit(status); +} + +#endif /* _ERROR_H_ */ diff --git a/libelf/default/conf.sh b/libelf/default/conf.sh new file mode 100755 index 0000000..f41c7dc --- /dev/null +++ b/libelf/default/conf.sh @@ -0,0 +1,23 @@ +#!/bin/sh -e + + +# pulled from kiss linux + +# Disable configure error for missing argp. +sed -i 's/as_fn_error.*libargp/: "/g' configure + +# Don't compile two unrelated C files which require argp. +sed -i 's/color.*printversion../#/g' lib/Makefile.in + +CFLAGS="$SHARED_CFLAGS -Wno-error" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --disable-symbol-versioning \ + --disable-debuginfod \ + --disable-nls \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix=/usr diff --git a/libelf/default/deps b/libelf/default/deps new file mode 100644 index 0000000..8311596 --- /dev/null +++ b/libelf/default/deps @@ -0,0 +1,21 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +perl +m4 +autoconf +automake +gnu-grep +gnu-sed +pkgconf +bzip2 +zlib +xz +curl +bsd-compat-headers diff --git a/libelf/default/env.sh b/libelf/default/env.sh new file mode 100755 index 0000000..7f3517a --- /dev/null +++ b/libelf/default/env.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +export CC="gcc" +export CFLAGS="$CFLAGS -Wno-error" + +if [ "$(which pkgconf 2> /dev/null)" ]; then + export PKG_CONFIG="$(which pkgconf)" +fi + +# TODO: remove the need for these lines by making musl-cross-make build a gcc +# with a header search path of /include only, with all headers contained there. +export CPATH="${CPATH:-/include}" +export C_INCLUDE_PATH="/powerpc64le-lix-linux-musl/include" +export CPLUS_INCLUDE_PATH="/include/c++/9.2.0/powerpc64le-lix-linux-musl:/include/c++/9.2.0" diff --git a/libelf/default/inst.sh b/libelf/default/inst.sh new file mode 100755 index 0000000..37cba1d --- /dev/null +++ b/libelf/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +make -C libelf install diff --git a/libelf/default/make.sh b/libelf/default/make.sh new file mode 100755 index 0000000..1f88ab7 --- /dev/null +++ b/libelf/default/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +make -C lib +make -C libelf diff --git a/libelf/default/patches-available/error-h.patch b/libelf/default/patches-available/error-h.patch new file mode 100644 index 0000000..fc88fa0 --- /dev/null +++ b/libelf/default/patches-available/error-h.patch @@ -0,0 +1,31 @@ +diff -u --new-file a/error.h b/error.h +--- a/error.h 1970-01-01 00:00:00.000000000 +0000 ++++ b/error.h 2020-10-06 03:58:01.500000000 +0000 +@@ -0,0 +1,27 @@ ++#ifndef _ERROR_H_ ++#define _ERROR_H_ ++ ++#include ++#include ++#include ++#include ++#include ++ ++static unsigned int error_message_count = 0; ++ ++static inline void error(int status, int errnum, const char* format, ...) ++{ ++ va_list ap; ++ fprintf(stderr, "%s: ", program_invocation_name); ++ va_start(ap, format); ++ vfprintf(stderr, format, ap); ++ va_end(ap); ++ if (errnum) ++ fprintf(stderr, ": %s", strerror(errnum)); ++ fprintf(stderr, "\n"); ++ error_message_count++; ++ if (status) ++ exit(status); ++} ++ ++#endif /* _ERROR_H_ */ diff --git a/libelf/default/patches-available/fix-aarch64_fregs.patch b/libelf/default/patches-available/fix-aarch64_fregs.patch new file mode 100644 index 0000000..4007416 --- /dev/null +++ b/libelf/default/patches-available/fix-aarch64_fregs.patch @@ -0,0 +1,14 @@ +It looks like fregs.vregs[] is an array of double? +Casting to Dwarf_Word instead of & 0xFFFFFFF should do. + +--- a/backends/aarch64_initreg.c 2015-11-27 14:36:29.000000000 +0100 ++++ b/backends/aarch64_initreg.c 2016-08-09 03:47:25.428560159 +0200 +@@ -82,7 +82,7 @@ + + Dwarf_Word dwarf_fregs[32]; + for (int r = 0; r < 32; r++) +- dwarf_fregs[r] = fregs.vregs[r] & 0xFFFFFFFF; ++ dwarf_fregs[r] = (Dwarf_Word)fregs.vregs[r]; + + if (! setfunc (64, 32, dwarf_fregs, arg)) + return false; diff --git a/libelf/default/patches-available/fix-uninitialized.patch b/libelf/default/patches-available/fix-uninitialized.patch new file mode 100644 index 0000000..31ecd9e --- /dev/null +++ b/libelf/default/patches-available/fix-uninitialized.patch @@ -0,0 +1,17 @@ + +--- a/libcpu/i386_disasm.c 2015-08-21 14:22:37.000000000 +0200 ++++ b/libcpu/i386_disasm.c 2015-11-20 06:30:59.250629957 +0100 +@@ -1,4 +1,4 @@ +-/* Disassembler for x86. ++/* Disassembler for x86. + Copyright (C) 2007, 2008, 2009, 2011 Red Hat, Inc. + This file is part of elfutils. + Written by Ulrich Drepper , 2007. +@@ -710,6 +710,7 @@ + + case 'm': + /* Mnemonic. */ ++ str = mnebuf; + + if (unlikely (instrtab[cnt].mnemonic == MNE_INVALID)) + { diff --git a/libelf/default/patches-available/musl-asm-ptrace-h.patch b/libelf/default/patches-available/musl-asm-ptrace-h.patch new file mode 100644 index 0000000..fc14686 --- /dev/null +++ b/libelf/default/patches-available/musl-asm-ptrace-h.patch @@ -0,0 +1,10 @@ +--- a/backends/ppc_initreg.c 2019-11-26 23:48:42.000000000 +0100 ++++ b/backends/ppc_initreg.c 2019-12-08 16:57:58.334872602 +0100 +@@ -32,6 +32,7 @@ + + #include + #if defined(__powerpc__) && defined(__linux__) ++# include + # include + # include + #endif diff --git a/libelf/default/patches-available/musl-cdefs.patch b/libelf/default/patches-available/musl-cdefs.patch new file mode 100644 index 0000000..8497188 --- /dev/null +++ b/libelf/default/patches-available/musl-cdefs.patch @@ -0,0 +1,20 @@ +--- a/libelf/elf.h 2015-08-21 14:22:37.000000000 +0200 ++++ b/libelf/elf.h 2015-11-20 04:54:33.948081321 +0100 +@@ -21,6 +21,17 @@ + + #include + ++#if !defined(__GLIBC__) ++/* C++ needs to know that types and declarations are C, not C++. */ ++#ifdef __cplusplus ++# define __BEGIN_DECLS extern "C" { ++# define __END_DECLS } ++#else ++# define __BEGIN_DECLS ++# define __END_DECLS ++#endif ++#endif ++ + __BEGIN_DECLS + + /* Standard ELF types. */ diff --git a/libelf/default/patches-available/musl-fts-obstack.patch b/libelf/default/patches-available/musl-fts-obstack.patch new file mode 100644 index 0000000..8d45854 --- /dev/null +++ b/libelf/default/patches-available/musl-fts-obstack.patch @@ -0,0 +1,87 @@ +--- a/configure.ac 2015-10-15 15:16:57.000000000 +0200 ++++ b/configure.ac 2015-11-20 05:32:57.723901582 +0100 +@@ -305,6 +305,62 @@ + fi + AC_SUBST([argp_LDADD]) + ++dnl Check if we have fts available from our libc ++AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM( ++ [#if !defined(__x86_64__) ++ #undef _FILE_OFFSET_BITS ++ #define _FILE_OFFSET_BITS 32 ++ #endif ++ #include ], ++ [FTS* fts = 0; return fts_close(fts); return 0;] ++ )], ++ [libc_has_fts="true"], ++ [libc_has_fts="false"] ++) ++ ++dnl If our libc doesn't provide fts, then test for libfts ++if test "$libc_has_fts" = "false" ; then ++ AC_MSG_WARN("libc does not have fts") ++ AC_CHECK_LIB([fts], [fts_close], [have_fts="true"], [have_fts="false"]) ++ ++ if test "$have_fts" = "false"; then ++ AC_MSG_ERROR("no libfts found") ++ else ++ fts_LDADD="-lfts" ++ fi ++else ++ fts_LDADD="" ++fi ++AC_SUBST([fts_LDADD]) ++ ++dnl Check if we have obstack available from our libc ++AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM( ++ [#include ], ++ [_obstack_begin(0, 0, 0, NULL, NULL); return 0;] ++ )], ++ [libc_has_obstack="true"], ++ [libc_has_obstack="false"] ++) ++ ++dnl If our libc doesn't provide obstack, then test for libobstack ++if test "$libc_has_obstack" = "false" ; then ++ AC_MSG_WARN("libc does not have obstack") ++ AC_CHECK_LIB([obstack], [_obstack_begin], [have_obstack="true"], [have_obstack="false"]) ++ ++ if test "$have_obstack" = "false"; then ++ AC_MSG_ERROR("no libobstack found") ++ else ++ obstack_LDADD="-lobstack" ++ fi ++else ++ obstack_LDADD="" ++fi ++AC_SUBST([obstack_LDADD]) ++ ++dnl The directories with content. ++ + dnl The directories with content. + + dnl Documentation. +--- a/src/Makefile.am.orig ++++ b/src/Makefile.am +@@ -46,7 +46,7 @@ + else + libasm = ../libasm/libasm.so + libdw = ../libdw/libdw.so +-libelf = ../libelf/libelf.so ++libelf = ../libelf/libelf.so $(fts_LDADD) $(obstack_LDADD) + endif + libebl = ../libebl/libebl.a + libeu = ../lib/libeu.a +--- a/libdw/Makefile.am.orig ++++ b/libdw/Makefile.am +@@ -109,7 +109,7 @@ + ../libcpu/libcpu_pic.a libdw_pic.a ../libdwelf/libdwelf_pic.a \ + ../libdwfl/libdwfl_pic.a + libdw_so_DEPS = ../lib/libeu.a ../libelf/libelf.so +-libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(zip_LIBS) -pthread ++libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(fts_LDADD) $(obstack_LDADD) $(zip_LIBS) -pthread + libdw_so_SOURCES = + libdw.so$(EXEEXT): $(srcdir)/libdw.map $(libdw_so_LIBS) $(libdw_so_DEPS) + $(AM_V_CCLD)$(LINK) $(dso_LDFLAGS) -o $@ \ diff --git a/libelf/default/patches-available/musl-macros.patch b/libelf/default/patches-available/musl-macros.patch new file mode 100644 index 0000000..0d7ec41 --- /dev/null +++ b/libelf/default/patches-available/musl-macros.patch @@ -0,0 +1,87 @@ +--- a/src/arlib.h 2015-08-21 14:22:37.000000000 +0200 ++++ b/src/arlib.h 2015-11-20 08:02:55.153199611 +0100 +@@ -29,6 +29,16 @@ + #include + #include + ++#if !defined(ACCESSPERMS) ++# define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */ ++#endif ++#if !defined(ALLPERMS) ++# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) /* 07777 */ ++#endif ++#if !defined(DEFFILEMODE) ++# define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)/* 0666*/ ++#endif ++ + + /* State of -D/-U flags. */ + extern bool arlib_deterministic_output; +--- a/src/elfcompress.c.orig 2016-04-02 12:51:26.903848894 +0200 ++++ b/src/elfcompress.c 2016-04-02 12:55:15.076996338 +0200 +@@ -35,6 +35,14 @@ + #include + #include "system.h" + ++#if !defined(FNM_EXTMATCH) ++# define FNM_EXTMATCH 0 ++#endif ++ ++#if !defined(ALLPERMS) ++# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) /* 07777 */ ++#endif ++ + /* Name and version of program. */ + static void print_version (FILE *stream, struct argp_state *state); + ARGP_PROGRAM_VERSION_HOOK_DEF = print_version; +diff --git a/lib/libeu.h b/lib/libeu.h +index 69fe3d7..e5c99b8 100644 +--- a/lib/libeu.h ++++ b/lib/libeu.h +@@ -31,6 +31,27 @@ + + #include + #include ++#include ++#include ++#include ++ ++#ifndef TEMP_FAILURE_RETRY ++#define TEMP_FAILURE_RETRY(expression) \ ++ (__extension__ \ ++ ({ long int __result; \ ++ do __result = (long int) (expression); \ ++ while (__result == -1L && errno == EINTR); \ ++ __result; })) ++#endif ++ ++#ifndef strndupa ++#define strndupa(s, n) \ ++ (__extension__ ({const char *__in = (s); \ ++ size_t __len = strnlen (__in, (n)) + 1; \ ++ char *__out = (char *) alloca (__len); \ ++ __out[__len-1] = '\0'; \ ++ (char *) memcpy (__out, __in, __len-1);})) ++#endif + + extern void *xmalloc (size_t) __attribute__ ((__malloc__)); + extern void *xcalloc (size_t, size_t) __attribute__ ((__malloc__)); +diff --git a/src/strip.c b/src/strip.c +index 48792a7..d2f0c60 100644 +--- a/src/strip.c ++++ b/src/strip.c +@@ -46,6 +46,14 @@ + #include + #include + ++#if !defined(FNM_EXTMATCH) ++# define FNM_EXTMATCH 0 ++#endif ++ ++#if !defined(ACCESSPERMS) ++#define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) ++#endif ++ + typedef uint8_t GElf_Byte; + + /* Name and version of program. */ diff --git a/libelf/default/patches-available/musl-qsort_r.patch b/libelf/default/patches-available/musl-qsort_r.patch new file mode 100644 index 0000000..0843aec --- /dev/null +++ b/libelf/default/patches-available/musl-qsort_r.patch @@ -0,0 +1,67 @@ +diff --git a/src/readelf.c b/src/readelf.c +index cbb519d..dea513b 100644 +--- a/src/readelf.c ++++ b/src/readelf.c +@@ -4829,10 +4829,11 @@ listptr_base (struct listptr *p) + return cudie_base (&cu); + } + ++static const char *listptr_name; ++ + static int +-compare_listptr (const void *a, const void *b, void *arg) ++compare_listptr (const void *a, const void *b) + { +- const char *name = arg; + struct listptr *p1 = (void *) a; + struct listptr *p2 = (void *) b; + +@@ -4848,21 +4849,21 @@ compare_listptr (const void *a, const void *b, void *arg) + p1->warned = p2->warned = true; + error (0, 0, + gettext ("%s %#" PRIx64 " used with different address sizes"), +- name, (uint64_t) p1->offset); ++ listptr_name, (uint64_t) p1->offset); + } + if (p1->dwarf64 != p2->dwarf64) + { + p1->warned = p2->warned = true; + error (0, 0, + gettext ("%s %#" PRIx64 " used with different offset sizes"), +- name, (uint64_t) p1->offset); ++ listptr_name, (uint64_t) p1->offset); + } + if (listptr_base (p1) != listptr_base (p2)) + { + p1->warned = p2->warned = true; + error (0, 0, + gettext ("%s %#" PRIx64 " used with different base addresses"), +- name, (uint64_t) p1->offset); ++ listptr_name, (uint64_t) p1->offset); + } + if (p1->attr != p2 ->attr) + { +@@ -4870,7 +4871,7 @@ compare_listptr (const void *a, const void *b, void *arg) + error (0, 0, + gettext ("%s %#" PRIx64 + " used with different attribute %s and %s"), +- name, (uint64_t) p1->offset, dwarf_attr_name (p2->attr), ++ listptr_name, (uint64_t) p1->offset, dwarf_attr_name (p2->attr), + dwarf_attr_name (p2->attr)); + } + } +@@ -4941,9 +4942,11 @@ notice_listptr (enum section_e section, struct listptr_table *table, + static void + sort_listptr (struct listptr_table *table, const char *name) + { +- if (table->n > 0) +- qsort_r (table->table, table->n, sizeof table->table[0], +- &compare_listptr, (void *) name); ++ if (table->n > 0) { ++ listptr_name = name; ++ qsort (table->table, table->n, sizeof table->table[0], ++ &compare_listptr); ++ } + } + + static bool diff --git a/libelf/default/patches-available/musl-strerror_r.patch b/libelf/default/patches-available/musl-strerror_r.patch new file mode 100644 index 0000000..7297795 --- /dev/null +++ b/libelf/default/patches-available/musl-strerror_r.patch @@ -0,0 +1,19 @@ +--- a/libdwfl/dwfl_error.c 2015-09-29 17:18:51.000000000 +0200 ++++ b/libdwfl/dwfl_error.c 2015-11-20 05:11:29.889002058 +0100 +@@ -154,7 +154,16 @@ + switch (error &~ 0xffff) + { + case OTHER_ERROR (ERRNO): ++#if defined(__GLIBC__) + return strerror_r (error & 0xffff, "bad", 0); ++#else ++ { ++ static __thread char buf[128] = ""; ++ if (0 == strerror_r(error & 0xffff, buf, sizeof(buf))) ++ return buf; ++ } ++ return "strerror_r() failed"; ++#endif + case OTHER_ERROR (LIBELF): + return elf_errmsg (error & 0xffff); + case OTHER_ERROR (LIBDW): diff --git a/libelf/default/patches-available/musl-strndupa.patch b/libelf/default/patches-available/musl-strndupa.patch new file mode 100644 index 0000000..a520688 --- /dev/null +++ b/libelf/default/patches-available/musl-strndupa.patch @@ -0,0 +1,18 @@ +--- a/src/unstrip.c.orig 2017-04-27 14:26:26.000000000 +0000 ++++ b/src/unstrip.c 2017-05-05 15:51:33.515154220 +0000 +@@ -56,6 +56,15 @@ + # define _(str) gettext (str) + #endif + ++#ifndef strndupa ++#define strndupa(s, n) \ ++ (__extension__ ({const char *__in = (s); \ ++ size_t __len = strnlen (__in, (n)) + 1; \ ++ char *__out = (char *) alloca (__len); \ ++ __out[__len-1] = '\0'; \ ++ (char *) memcpy (__out, __in, __len-1);})) ++#endif ++ + /* Name and version of program. */ + ARGP_PROGRAM_VERSION_HOOK_DEF = print_version; + diff --git a/libelf/default/patches-enabled/error-h.patch b/libelf/default/patches-enabled/error-h.patch new file mode 120000 index 0000000..38c9827 --- /dev/null +++ b/libelf/default/patches-enabled/error-h.patch @@ -0,0 +1 @@ +../patches-available/error-h.patch \ No newline at end of file diff --git a/libelf/default/patches-enabled/fix-aarch64_fregs.patch b/libelf/default/patches-enabled/fix-aarch64_fregs.patch new file mode 120000 index 0000000..a66bd89 --- /dev/null +++ b/libelf/default/patches-enabled/fix-aarch64_fregs.patch @@ -0,0 +1 @@ +../patches-available/fix-aarch64_fregs.patch \ No newline at end of file diff --git a/libelf/default/patches-enabled/fix-uninitialized.patch b/libelf/default/patches-enabled/fix-uninitialized.patch new file mode 120000 index 0000000..eb913f1 --- /dev/null +++ b/libelf/default/patches-enabled/fix-uninitialized.patch @@ -0,0 +1 @@ +../patches-available/fix-uninitialized.patch \ No newline at end of file diff --git a/libelf/default/patches-enabled/musl-asm-ptrace-h.patch b/libelf/default/patches-enabled/musl-asm-ptrace-h.patch new file mode 120000 index 0000000..1baf0a7 --- /dev/null +++ b/libelf/default/patches-enabled/musl-asm-ptrace-h.patch @@ -0,0 +1 @@ +../patches-available/musl-asm-ptrace-h.patch \ No newline at end of file diff --git a/libelf/default/patches-enabled/musl-cdefs.patch b/libelf/default/patches-enabled/musl-cdefs.patch new file mode 120000 index 0000000..ae00c3e --- /dev/null +++ b/libelf/default/patches-enabled/musl-cdefs.patch @@ -0,0 +1 @@ +../patches-available/musl-cdefs.patch \ No newline at end of file diff --git a/libelf/default/patches-enabled/musl-fts-obstack.patch b/libelf/default/patches-enabled/musl-fts-obstack.patch new file mode 120000 index 0000000..8ec7777 --- /dev/null +++ b/libelf/default/patches-enabled/musl-fts-obstack.patch @@ -0,0 +1 @@ +../patches-available/musl-fts-obstack.patch \ No newline at end of file diff --git a/libelf/default/patches-enabled/musl-macros.patch b/libelf/default/patches-enabled/musl-macros.patch new file mode 120000 index 0000000..b0021d4 --- /dev/null +++ b/libelf/default/patches-enabled/musl-macros.patch @@ -0,0 +1 @@ +../patches-available/musl-macros.patch \ No newline at end of file diff --git a/libelf/default/patches-enabled/musl-qsort_r.patch b/libelf/default/patches-enabled/musl-qsort_r.patch new file mode 120000 index 0000000..aa9f1c0 --- /dev/null +++ b/libelf/default/patches-enabled/musl-qsort_r.patch @@ -0,0 +1 @@ +../patches-available/musl-qsort_r.patch \ No newline at end of file diff --git a/libelf/default/patches-enabled/musl-strerror_r.patch b/libelf/default/patches-enabled/musl-strerror_r.patch new file mode 120000 index 0000000..1550a07 --- /dev/null +++ b/libelf/default/patches-enabled/musl-strerror_r.patch @@ -0,0 +1 @@ +../patches-available/musl-strerror_r.patch \ No newline at end of file diff --git a/libelf/default/patches-enabled/musl-strndupa.patch b/libelf/default/patches-enabled/musl-strndupa.patch new file mode 120000 index 0000000..8b185ed --- /dev/null +++ b/libelf/default/patches-enabled/musl-strndupa.patch @@ -0,0 +1 @@ +../patches-available/musl-strndupa.patch \ No newline at end of file diff --git a/libepoxy/default/conf.sh b/libepoxy/default/conf.sh new file mode 100755 index 0000000..40bf62a --- /dev/null +++ b/libepoxy/default/conf.sh @@ -0,0 +1,13 @@ +#!/bin/sh -e + +meson \ + -Degl=yes \ + -Dglx=no \ + -Dx11=false \ + -Dtests=false \ + -Dhas-dlvsym=false \ + -Ddefault_library=both \ + --mandir=/usr/share/man \ + --sysconfdir=/etc \ + --prefix="$PREFIX" \ + ../build diff --git a/libepoxy/default/deps b/libepoxy/default/deps new file mode 100644 index 0000000..b0bafcb --- /dev/null +++ b/libepoxy/default/deps @@ -0,0 +1,24 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +py3-mako +meson +libdrm +mesa-dynamic diff --git a/libepoxy/default/deps.way b/libepoxy/default/deps.way new file mode 100644 index 0000000..291d34e --- /dev/null +++ b/libepoxy/default/deps.way @@ -0,0 +1,23 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +py3-mako +meson +mesa-dynamic diff --git a/libepoxy/default/deps.x11 b/libepoxy/default/deps.x11 new file mode 100644 index 0000000..9a68713 --- /dev/null +++ b/libepoxy/default/deps.x11 @@ -0,0 +1,36 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +py3-mako +meson +xorgproto +libx11 +libxdamage +libxext +libxrandr +libxrender +libxxf86vm +libdrm +libelf +libxau +libxcb +libxshmfence +libxfixes +mesa diff --git a/libepoxy/default/env.sh b/libepoxy/default/env.sh new file mode 100644 index 0000000..05f68db --- /dev/null +++ b/libepoxy/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS -DEGL_NO_X11 -DENABLE_GLX=0" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/libepoxy/default/inst.sh b/libepoxy/default/inst.sh new file mode 100755 index 0000000..5013ba7 --- /dev/null +++ b/libepoxy/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build install diff --git a/libepoxy/default/make.sh b/libepoxy/default/make.sh new file mode 100755 index 0000000..43f1628 --- /dev/null +++ b/libepoxy/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build diff --git a/libevdev-dynamic/default/conf.sh b/libevdev-dynamic/default/conf.sh new file mode 100755 index 0000000..6d3c3fb --- /dev/null +++ b/libevdev-dynamic/default/conf.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +CFLAGS="$SHARED_CFLAGS -std=c99" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --enable-static: build the static library as well. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libevdev-dynamic/default/deps b/libevdev-dynamic/default/deps new file mode 100644 index 0000000..7ee270d --- /dev/null +++ b/libevdev-dynamic/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +python3 diff --git a/libevdev-dynamic/default/patches-available/0001-Revert-switch-to-VLAs-for-multitouch-state.patch b/libevdev-dynamic/default/patches-available/0001-Revert-switch-to-VLAs-for-multitouch-state.patch new file mode 100644 index 0000000..d121821 --- /dev/null +++ b/libevdev-dynamic/default/patches-available/0001-Revert-switch-to-VLAs-for-multitouch-state.patch @@ -0,0 +1,281 @@ +From 3bf2649a9874b5d63e178d2d61ea822901ff991f Mon Sep 17 00:00:00 2001 +From: Michael Forney +Date: Tue, 3 Mar 2020 14:17:37 -0800 +Subject: [PATCH libevdev] Revert switch to VLAs for multitouch state + +Signed-off-by: Michael Forney +--- + libevdev/libevdev-int.h | 28 +++++++++++++ + libevdev/libevdev.c | 88 +++++++++++++++++++---------------------- + 2 files changed, 68 insertions(+), 48 deletions(-) + +diff --git a/libevdev/libevdev-int.h b/libevdev/libevdev-int.h +index 7da5cf0..2743e50 100644 +--- a/libevdev/libevdev-int.h ++++ b/libevdev/libevdev-int.h +@@ -24,6 +24,7 @@ + #define LIBEVDEV_INT_H + + #include "config.h" ++#include + #include + #include + #include +@@ -55,6 +56,26 @@ enum SyncState { + SYNC_IN_PROGRESS, + }; + ++struct mt_sync_state { ++ uint32_t code; ++ int32_t val[]; ++}; ++ ++/* Keeps a record of touches during SYN_DROPPED */ ++enum touch_state { ++ TOUCH_OFF, ++ TOUCH_STARTED, /* Started during SYN_DROPPED */ ++ TOUCH_STOPPED, /* Stopped during SYN_DROPPED */ ++ TOUCH_ONGOING, /* Existed before, still have same tracking ID */ ++ TOUCH_CHANGED, /* Existed before but have new tracking ID now, so ++ stopped + started in that slot */ ++}; ++ ++struct slot_change_state { ++ enum touch_state state; ++ unsigned long axes[NLONGS(ABS_CNT)]; /* bitmask for updated axes */ ++}; ++ + /** + * Internal only: log data used to send messages to the respective log + * handler. We re-use the same struct for a global and inside +@@ -107,6 +128,13 @@ struct libevdev { + + struct timeval last_event_time; + ++ struct { ++ struct mt_sync_state *mt_state; ++ size_t mt_state_sz; /* in bytes */ ++ struct slot_change_state *changes; ++ size_t changes_sz; /* in bytes */ ++ } mt_sync; ++ + struct logdata log; + }; + +diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c +index c4729b5..ff967d0 100644 +--- a/libevdev/libevdev.c ++++ b/libevdev/libevdev.c +@@ -28,7 +28,6 @@ + #include + #include + #include +-#include + #include + + #include "libevdev.h" +@@ -44,23 +43,7 @@ enum event_filter_status { + EVENT_FILTER_DISCARD, /**< Discard current event */ + }; + +-/* Keeps a record of touches during SYN_DROPPED */ +-enum touch_state { +- TOUCH_OFF, +- TOUCH_STARTED, /* Started during SYN_DROPPED */ +- TOUCH_STOPPED, /* Stopped during SYN_DROPPED */ +- TOUCH_ONGOING, /* Existed before, still have same tracking ID */ +- TOUCH_CHANGED, /* Existed before but have new tracking ID now, so +- stopped + started in that slot */ +-}; +- +-struct slot_change_state { +- enum touch_state state; +- unsigned long axes[NLONGS(ABS_CNT)]; /* bitmask for updated axes */ +-}; +- +-static int sync_mt_state(struct libevdev *dev, +- struct slot_change_state *changes_out); ++static int sync_mt_state(struct libevdev *dev); + static int + update_key_state(struct libevdev *dev, const struct input_event *e); + +@@ -219,6 +202,8 @@ libevdev_reset(struct libevdev *dev) + free(dev->phys); + free(dev->uniq); + free(dev->mt_slot_vals); ++ free(dev->mt_sync.mt_state); ++ free(dev->mt_sync.changes); + memset(dev, 0, sizeof(*dev)); + dev->fd = -1; + dev->initialized = false; +@@ -348,7 +333,11 @@ free_slots(struct libevdev *dev) + { + dev->num_slots = -1; + free(dev->mt_slot_vals); ++ free(dev->mt_sync.changes); ++ free(dev->mt_sync.mt_state); + dev->mt_slot_vals = NULL; ++ dev->mt_sync.changes = NULL; ++ dev->mt_sync.mt_state = NULL; + } + + static int +@@ -358,7 +347,11 @@ init_slots(struct libevdev *dev) + int rc = 0; + + free(dev->mt_slot_vals); ++ free(dev->mt_sync.changes); ++ free(dev->mt_sync.mt_state); + dev->mt_slot_vals = NULL; ++ dev->mt_sync.changes = NULL; ++ dev->mt_sync.mt_state = NULL; + + /* devices with ABS_RESERVED aren't MT devices, + see the documentation for multitouch-related +@@ -382,6 +375,19 @@ init_slots(struct libevdev *dev) + } + dev->current_slot = abs_info->value; + ++ dev->mt_sync.mt_state_sz = sizeof(*dev->mt_sync.mt_state) + ++ dev->num_slots * sizeof(int32_t); ++ dev->mt_sync.mt_state = calloc(1, dev->mt_sync.mt_state_sz); ++ ++ dev->mt_sync.changes_sz = dev->num_slots * ++ sizeof(dev->mt_sync.changes[0]); ++ dev->mt_sync.changes = malloc(dev->mt_sync.changes_sz); ++ ++ if (!dev->mt_sync.changes || !dev->mt_sync.mt_state) { ++ rc = -ENOMEM; ++ goto out; ++ } ++ + reset_tracking_ids(dev); + out: + return rc; +@@ -538,10 +544,8 @@ libevdev_set_fd(struct libevdev* dev, int fd) + if (rc != 0) + goto out; + +- if (dev->num_slots != -1) { +- struct slot_change_state unused[dev->num_slots]; +- sync_mt_state(dev, unused); +- } ++ if (dev->num_slots != -1) ++ sync_mt_state(dev); + + rc = init_event_queue(dev); + if (rc < 0) { +@@ -676,33 +680,27 @@ out: + } + + static int +-sync_mt_state(struct libevdev *dev, +- struct slot_change_state changes_out[dev->num_slots]) ++sync_mt_state(struct libevdev *dev) + { +-#define MAX_SLOTS 256 + int rc = 0; +- struct slot_change_state changes[MAX_SLOTS] = {0}; +- unsigned int nslots = min(MAX_SLOTS, dev->num_slots); ++ struct mt_sync_state *mt_state = dev->mt_sync.mt_state; ++ struct slot_change_state *changes = dev->mt_sync.changes; + +- for (int axis = ABS_MT_MIN; axis <= ABS_MT_MAX; axis++) { +- /* EVIOCGMTSLOTS required format */ +- struct mt_sync_state { +- uint32_t code; +- int32_t val[MAX_SLOTS]; +- } mt_state; ++ memset(dev->mt_sync.changes, 0, dev->mt_sync.changes_sz); + ++ for (int axis = ABS_MT_MIN; axis <= ABS_MT_MAX; axis++) { + if (axis == ABS_MT_SLOT || + !libevdev_has_event_code(dev, EV_ABS, axis)) + continue; + +- mt_state.code = axis; +- rc = ioctl(dev->fd, EVIOCGMTSLOTS(sizeof(mt_state)), &mt_state); ++ mt_state->code = axis; ++ rc = ioctl(dev->fd, EVIOCGMTSLOTS(dev->mt_sync.mt_state_sz), mt_state); + if (rc < 0) + goto out; + +- for (unsigned int slot = 0; slot < nslots; slot++) { ++ for (int slot = 0; slot < dev->num_slots; slot++) { + int val_before = *slot_value(dev, slot, axis), +- val_after = mt_state.val[slot]; ++ val_after = mt_state->val[slot]; + + if (axis == ABS_MT_TRACKING_ID) { + if (val_before == -1 && val_after != -1) { +@@ -731,17 +729,12 @@ sync_mt_state(struct libevdev *dev, + } + } + +- if (dev->num_slots > MAX_SLOTS) +- memset(changes_out, 0, sizeof(*changes) * dev->num_slots); +- +- memcpy(changes_out, changes, sizeof(*changes) * nslots); + out: + return rc; + } + + static void + terminate_slots(struct libevdev *dev, +- const struct slot_change_state changes[dev->num_slots], + int *last_reported_slot) + { + const unsigned int map[] = {BTN_TOOL_FINGER, BTN_TOOL_DOUBLETAP, +@@ -749,6 +742,7 @@ terminate_slots(struct libevdev *dev, + BTN_TOOL_QUINTTAP}; + bool touches_stopped = false; + int ntouches_before = 0, ntouches_after = 0; ++ struct slot_change_state *changes = dev->mt_sync.changes; + + /* For BTN_TOOL_* emulation, we need to know how many touches we had + * before and how many we have left once we terminate all the ones +@@ -812,10 +806,10 @@ terminate_slots(struct libevdev *dev, + + static int + push_mt_sync_events(struct libevdev *dev, +- const struct slot_change_state changes[dev->num_slots], + int last_reported_slot) + { + struct input_absinfo abs_info; ++ struct slot_change_state *changes = dev->mt_sync.changes; + int rc; + + for (int slot = 0; slot < dev->num_slots; slot++) { +@@ -922,8 +916,6 @@ sync_state(struct libevdev *dev) + int rc = 0; + bool want_mt_sync = false; + int last_reported_slot = 0; +- struct slot_change_state changes[dev->num_slots > 0 ? dev->num_slots : 1]; +- memset(changes, 0, sizeof(changes)); + + /* see section "Discarding events before synchronizing" in + * libevdev/libevdev.h */ +@@ -941,9 +933,9 @@ sync_state(struct libevdev *dev) + if (dev->num_slots > -1 && + libevdev_has_event_code(dev, EV_ABS, ABS_MT_SLOT)) { + want_mt_sync = true; +- rc = sync_mt_state(dev, changes); ++ rc = sync_mt_state(dev); + if (rc == 0) +- terminate_slots(dev, changes, &last_reported_slot); ++ terminate_slots(dev, &last_reported_slot); + else + want_mt_sync = false; + } +@@ -957,7 +949,7 @@ sync_state(struct libevdev *dev) + if (rc == 0 && libevdev_has_event_type(dev, EV_ABS)) + rc = sync_abs_state(dev); + if (rc == 0 && want_mt_sync) +- push_mt_sync_events(dev, changes, last_reported_slot); ++ push_mt_sync_events(dev, last_reported_slot); + + dev->queue_nsync = queue_num_elements(dev); + +-- +2.27.0 + diff --git a/libevdev-dynamic/default/patches-enabled/0001-Revert-switch-to-VLAs-for-multitouch-state.patch b/libevdev-dynamic/default/patches-enabled/0001-Revert-switch-to-VLAs-for-multitouch-state.patch new file mode 120000 index 0000000..910033c --- /dev/null +++ b/libevdev-dynamic/default/patches-enabled/0001-Revert-switch-to-VLAs-for-multitouch-state.patch @@ -0,0 +1 @@ +../patches-available/0001-Revert-switch-to-VLAs-for-multitouch-state.patch \ No newline at end of file diff --git a/libevdev/default/conf.sh b/libevdev/default/conf.sh new file mode 100755 index 0000000..7b90d88 --- /dev/null +++ b/libevdev/default/conf.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +CFLAGS="$CFLAGS_SHARED -std=c99" \ +CXXFLAGS="$CXXFLAGS_SHARED" \ +LDFLAGS="$LDFLAGS_SHARED" \ +./configure \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --enable-static: build the static library as well. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libevdev/default/deps b/libevdev/default/deps new file mode 100644 index 0000000..7ee270d --- /dev/null +++ b/libevdev/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +python3 diff --git a/libevdev/default/patches-available/0001-Revert-switch-to-VLAs-for-multitouch-state.patch b/libevdev/default/patches-available/0001-Revert-switch-to-VLAs-for-multitouch-state.patch new file mode 100644 index 0000000..d121821 --- /dev/null +++ b/libevdev/default/patches-available/0001-Revert-switch-to-VLAs-for-multitouch-state.patch @@ -0,0 +1,281 @@ +From 3bf2649a9874b5d63e178d2d61ea822901ff991f Mon Sep 17 00:00:00 2001 +From: Michael Forney +Date: Tue, 3 Mar 2020 14:17:37 -0800 +Subject: [PATCH libevdev] Revert switch to VLAs for multitouch state + +Signed-off-by: Michael Forney +--- + libevdev/libevdev-int.h | 28 +++++++++++++ + libevdev/libevdev.c | 88 +++++++++++++++++++---------------------- + 2 files changed, 68 insertions(+), 48 deletions(-) + +diff --git a/libevdev/libevdev-int.h b/libevdev/libevdev-int.h +index 7da5cf0..2743e50 100644 +--- a/libevdev/libevdev-int.h ++++ b/libevdev/libevdev-int.h +@@ -24,6 +24,7 @@ + #define LIBEVDEV_INT_H + + #include "config.h" ++#include + #include + #include + #include +@@ -55,6 +56,26 @@ enum SyncState { + SYNC_IN_PROGRESS, + }; + ++struct mt_sync_state { ++ uint32_t code; ++ int32_t val[]; ++}; ++ ++/* Keeps a record of touches during SYN_DROPPED */ ++enum touch_state { ++ TOUCH_OFF, ++ TOUCH_STARTED, /* Started during SYN_DROPPED */ ++ TOUCH_STOPPED, /* Stopped during SYN_DROPPED */ ++ TOUCH_ONGOING, /* Existed before, still have same tracking ID */ ++ TOUCH_CHANGED, /* Existed before but have new tracking ID now, so ++ stopped + started in that slot */ ++}; ++ ++struct slot_change_state { ++ enum touch_state state; ++ unsigned long axes[NLONGS(ABS_CNT)]; /* bitmask for updated axes */ ++}; ++ + /** + * Internal only: log data used to send messages to the respective log + * handler. We re-use the same struct for a global and inside +@@ -107,6 +128,13 @@ struct libevdev { + + struct timeval last_event_time; + ++ struct { ++ struct mt_sync_state *mt_state; ++ size_t mt_state_sz; /* in bytes */ ++ struct slot_change_state *changes; ++ size_t changes_sz; /* in bytes */ ++ } mt_sync; ++ + struct logdata log; + }; + +diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c +index c4729b5..ff967d0 100644 +--- a/libevdev/libevdev.c ++++ b/libevdev/libevdev.c +@@ -28,7 +28,6 @@ + #include + #include + #include +-#include + #include + + #include "libevdev.h" +@@ -44,23 +43,7 @@ enum event_filter_status { + EVENT_FILTER_DISCARD, /**< Discard current event */ + }; + +-/* Keeps a record of touches during SYN_DROPPED */ +-enum touch_state { +- TOUCH_OFF, +- TOUCH_STARTED, /* Started during SYN_DROPPED */ +- TOUCH_STOPPED, /* Stopped during SYN_DROPPED */ +- TOUCH_ONGOING, /* Existed before, still have same tracking ID */ +- TOUCH_CHANGED, /* Existed before but have new tracking ID now, so +- stopped + started in that slot */ +-}; +- +-struct slot_change_state { +- enum touch_state state; +- unsigned long axes[NLONGS(ABS_CNT)]; /* bitmask for updated axes */ +-}; +- +-static int sync_mt_state(struct libevdev *dev, +- struct slot_change_state *changes_out); ++static int sync_mt_state(struct libevdev *dev); + static int + update_key_state(struct libevdev *dev, const struct input_event *e); + +@@ -219,6 +202,8 @@ libevdev_reset(struct libevdev *dev) + free(dev->phys); + free(dev->uniq); + free(dev->mt_slot_vals); ++ free(dev->mt_sync.mt_state); ++ free(dev->mt_sync.changes); + memset(dev, 0, sizeof(*dev)); + dev->fd = -1; + dev->initialized = false; +@@ -348,7 +333,11 @@ free_slots(struct libevdev *dev) + { + dev->num_slots = -1; + free(dev->mt_slot_vals); ++ free(dev->mt_sync.changes); ++ free(dev->mt_sync.mt_state); + dev->mt_slot_vals = NULL; ++ dev->mt_sync.changes = NULL; ++ dev->mt_sync.mt_state = NULL; + } + + static int +@@ -358,7 +347,11 @@ init_slots(struct libevdev *dev) + int rc = 0; + + free(dev->mt_slot_vals); ++ free(dev->mt_sync.changes); ++ free(dev->mt_sync.mt_state); + dev->mt_slot_vals = NULL; ++ dev->mt_sync.changes = NULL; ++ dev->mt_sync.mt_state = NULL; + + /* devices with ABS_RESERVED aren't MT devices, + see the documentation for multitouch-related +@@ -382,6 +375,19 @@ init_slots(struct libevdev *dev) + } + dev->current_slot = abs_info->value; + ++ dev->mt_sync.mt_state_sz = sizeof(*dev->mt_sync.mt_state) + ++ dev->num_slots * sizeof(int32_t); ++ dev->mt_sync.mt_state = calloc(1, dev->mt_sync.mt_state_sz); ++ ++ dev->mt_sync.changes_sz = dev->num_slots * ++ sizeof(dev->mt_sync.changes[0]); ++ dev->mt_sync.changes = malloc(dev->mt_sync.changes_sz); ++ ++ if (!dev->mt_sync.changes || !dev->mt_sync.mt_state) { ++ rc = -ENOMEM; ++ goto out; ++ } ++ + reset_tracking_ids(dev); + out: + return rc; +@@ -538,10 +544,8 @@ libevdev_set_fd(struct libevdev* dev, int fd) + if (rc != 0) + goto out; + +- if (dev->num_slots != -1) { +- struct slot_change_state unused[dev->num_slots]; +- sync_mt_state(dev, unused); +- } ++ if (dev->num_slots != -1) ++ sync_mt_state(dev); + + rc = init_event_queue(dev); + if (rc < 0) { +@@ -676,33 +680,27 @@ out: + } + + static int +-sync_mt_state(struct libevdev *dev, +- struct slot_change_state changes_out[dev->num_slots]) ++sync_mt_state(struct libevdev *dev) + { +-#define MAX_SLOTS 256 + int rc = 0; +- struct slot_change_state changes[MAX_SLOTS] = {0}; +- unsigned int nslots = min(MAX_SLOTS, dev->num_slots); ++ struct mt_sync_state *mt_state = dev->mt_sync.mt_state; ++ struct slot_change_state *changes = dev->mt_sync.changes; + +- for (int axis = ABS_MT_MIN; axis <= ABS_MT_MAX; axis++) { +- /* EVIOCGMTSLOTS required format */ +- struct mt_sync_state { +- uint32_t code; +- int32_t val[MAX_SLOTS]; +- } mt_state; ++ memset(dev->mt_sync.changes, 0, dev->mt_sync.changes_sz); + ++ for (int axis = ABS_MT_MIN; axis <= ABS_MT_MAX; axis++) { + if (axis == ABS_MT_SLOT || + !libevdev_has_event_code(dev, EV_ABS, axis)) + continue; + +- mt_state.code = axis; +- rc = ioctl(dev->fd, EVIOCGMTSLOTS(sizeof(mt_state)), &mt_state); ++ mt_state->code = axis; ++ rc = ioctl(dev->fd, EVIOCGMTSLOTS(dev->mt_sync.mt_state_sz), mt_state); + if (rc < 0) + goto out; + +- for (unsigned int slot = 0; slot < nslots; slot++) { ++ for (int slot = 0; slot < dev->num_slots; slot++) { + int val_before = *slot_value(dev, slot, axis), +- val_after = mt_state.val[slot]; ++ val_after = mt_state->val[slot]; + + if (axis == ABS_MT_TRACKING_ID) { + if (val_before == -1 && val_after != -1) { +@@ -731,17 +729,12 @@ sync_mt_state(struct libevdev *dev, + } + } + +- if (dev->num_slots > MAX_SLOTS) +- memset(changes_out, 0, sizeof(*changes) * dev->num_slots); +- +- memcpy(changes_out, changes, sizeof(*changes) * nslots); + out: + return rc; + } + + static void + terminate_slots(struct libevdev *dev, +- const struct slot_change_state changes[dev->num_slots], + int *last_reported_slot) + { + const unsigned int map[] = {BTN_TOOL_FINGER, BTN_TOOL_DOUBLETAP, +@@ -749,6 +742,7 @@ terminate_slots(struct libevdev *dev, + BTN_TOOL_QUINTTAP}; + bool touches_stopped = false; + int ntouches_before = 0, ntouches_after = 0; ++ struct slot_change_state *changes = dev->mt_sync.changes; + + /* For BTN_TOOL_* emulation, we need to know how many touches we had + * before and how many we have left once we terminate all the ones +@@ -812,10 +806,10 @@ terminate_slots(struct libevdev *dev, + + static int + push_mt_sync_events(struct libevdev *dev, +- const struct slot_change_state changes[dev->num_slots], + int last_reported_slot) + { + struct input_absinfo abs_info; ++ struct slot_change_state *changes = dev->mt_sync.changes; + int rc; + + for (int slot = 0; slot < dev->num_slots; slot++) { +@@ -922,8 +916,6 @@ sync_state(struct libevdev *dev) + int rc = 0; + bool want_mt_sync = false; + int last_reported_slot = 0; +- struct slot_change_state changes[dev->num_slots > 0 ? dev->num_slots : 1]; +- memset(changes, 0, sizeof(changes)); + + /* see section "Discarding events before synchronizing" in + * libevdev/libevdev.h */ +@@ -941,9 +933,9 @@ sync_state(struct libevdev *dev) + if (dev->num_slots > -1 && + libevdev_has_event_code(dev, EV_ABS, ABS_MT_SLOT)) { + want_mt_sync = true; +- rc = sync_mt_state(dev, changes); ++ rc = sync_mt_state(dev); + if (rc == 0) +- terminate_slots(dev, changes, &last_reported_slot); ++ terminate_slots(dev, &last_reported_slot); + else + want_mt_sync = false; + } +@@ -957,7 +949,7 @@ sync_state(struct libevdev *dev) + if (rc == 0 && libevdev_has_event_type(dev, EV_ABS)) + rc = sync_abs_state(dev); + if (rc == 0 && want_mt_sync) +- push_mt_sync_events(dev, changes, last_reported_slot); ++ push_mt_sync_events(dev, last_reported_slot); + + dev->queue_nsync = queue_num_elements(dev); + +-- +2.27.0 + diff --git a/libevdev/default/patches-enabled/0001-Revert-switch-to-VLAs-for-multitouch-state.patch b/libevdev/default/patches-enabled/0001-Revert-switch-to-VLAs-for-multitouch-state.patch new file mode 120000 index 0000000..910033c --- /dev/null +++ b/libevdev/default/patches-enabled/0001-Revert-switch-to-VLAs-for-multitouch-state.patch @@ -0,0 +1 @@ +../patches-available/0001-Revert-switch-to-VLAs-for-multitouch-state.patch \ No newline at end of file diff --git a/libevent/default/deps b/libevent/default/deps new file mode 100644 index 0000000..231d096 --- /dev/null +++ b/libevent/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libressl diff --git a/libffi/default/deps b/libffi/default/deps new file mode 100644 index 0000000..930a016 --- /dev/null +++ b/libffi/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf diff --git a/libfontenc/default/conf.sh b/libfontenc/default/conf.sh new file mode 100755 index 0000000..3d82dbe --- /dev/null +++ b/libfontenc/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +./configure --prefix= --with-fontrootdir=/share/fonts/X11 diff --git a/libfontenc/default/deps b/libfontenc/default/deps new file mode 100644 index 0000000..739f659 --- /dev/null +++ b/libfontenc/default/deps @@ -0,0 +1,14 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +xorgproto +zlib diff --git a/libftdi1/default/conf.sh b/libftdi1/default/conf.sh new file mode 100755 index 0000000..0ed9d11 --- /dev/null +++ b/libftdi1/default/conf.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +# cmake insists on build being a subdirectory of src, otherwise we'd just +# `cd ../build` and reap the additional organisation. +mkdir -p build +cd build + +cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/ -DEXAMPLES=OFF .. + +## explanation +# +# -DCMAKE_BUILD_TYPE: without this flag, cmake overwrites C{XX,PP}FLAGS +# +# -DCMAKE_INSTALL_PREFIX: respect the "no /usr/local" scheme +# +# -DEXAMPLES: don't bother building the examples. just build the library. diff --git a/libftdi1/default/deps b/libftdi1/default/deps new file mode 100644 index 0000000..d97da12 --- /dev/null +++ b/libftdi1/default/deps @@ -0,0 +1,15 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libconfuse +libusb +cmake +pkgconf diff --git a/libftdi1/default/inst.sh b/libftdi1/default/inst.sh new file mode 100755 index 0000000..96ea214 --- /dev/null +++ b/libftdi1/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +cd build +make -j$(nproc) install diff --git a/libftdi1/default/make.sh b/libftdi1/default/make.sh new file mode 100755 index 0000000..43124ab --- /dev/null +++ b/libftdi1/default/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +cd build +make -j$(nproc) diff --git a/libftdi1/default/patch b/libftdi1/default/patch new file mode 100644 index 0000000..840a1ed --- /dev/null +++ b/libftdi1/default/patch @@ -0,0 +1,19 @@ +*** src/CMakeLists.txt Mon Aug 7 14:52:39 2017 +--- src-mod/CMakeLists.txt Tue May 5 00:30:21 2020 +*************** +*** 55,61 **** + AND NOT EXISTS "/etc/debian_version" + AND NOT EXISTS "/etc/arch-release" ) + if ( "${CMAKE_SIZEOF_VOID_P}" EQUAL "8" ) +! set ( LIB_SUFFIX 64 ) + endif () + endif () + endif () +--- 55,61 ---- + AND NOT EXISTS "/etc/debian_version" + AND NOT EXISTS "/etc/arch-release" ) + if ( "${CMAKE_SIZEOF_VOID_P}" EQUAL "8" ) +! set ( LIB_SUFFIX "" ) # lix os has no /lib64 directory + endif () + endif () + endif () diff --git a/libgcrypt/default/conf.sh b/libgcrypt/default/conf.sh new file mode 100755 index 0000000..ea1e394 --- /dev/null +++ b/libgcrypt/default/conf.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +./configure \ + --enable-shared \ + --enable-static \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libgcrypt/default/deps b/libgcrypt/default/deps new file mode 100644 index 0000000..80ea7c0 --- /dev/null +++ b/libgcrypt/default/deps @@ -0,0 +1,15 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +musl-cross-make +make +automake +autoconf +dash +patch +awk +gnu-grep +gnu-sed +texinfo +libgpg-error diff --git a/libgcrypt/default/env.sh b/libgcrypt/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/libgcrypt/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/libgit2/default/conf.sh b/libgit2/default/conf.sh new file mode 100755 index 0000000..b514134 --- /dev/null +++ b/libgit2/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +sed -i 's|/usr/bin/env python|/usr/bin/env python3|' tests/generate.py diff --git a/libgit2/default/deps b/libgit2/default/deps new file mode 100644 index 0000000..454baa9 --- /dev/null +++ b/libgit2/default/deps @@ -0,0 +1,22 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +zlib +cmake +python3 +curl +tls-certs +bearssl +libressl +pcre +http-parser +libssh2 diff --git a/libgit2/default/inst.sh b/libgit2/default/inst.sh new file mode 100755 index 0000000..afd7de3 --- /dev/null +++ b/libgit2/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +make -C ../build/dynamic install +make -C ../build/static install diff --git a/libgit2/default/make.sh b/libgit2/default/make.sh new file mode 100755 index 0000000..4325c5a --- /dev/null +++ b/libgit2/default/make.sh @@ -0,0 +1,39 @@ +#!/bin/sh -e + +export LDFLAGS="$SHARED_LDFLAGS" +export CXXFLAGS="$SHARED_CXXFLAGS" + +cd ../build + +# dynamic libraries +mkdir dynamic +cd dynamic + +cmake ../../src \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_INSTALL_PREFIX=$PREFIX \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DUSE_HTTP_PARSER=system \ + -DUSE_HTTPS=OpenSSL \ + -DREGEX_BACKEND=pcre \ + -DUSE_BUNDLED_ZLIB=OFF \ + -DCMAKE_C_FLAGS="$SHARED_CFLAGS" + +make + +# static libraries +mkdir ../static +cd ../static + +cmake ../../src \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_INSTALL_PREFIX=$PREFIX \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DUSE_HTTP_PARSER=system \ + -DUSE_HTTPS=OpenSSL \ + -DREGEX_BACKEND=pcre \ + -DUSE_BUNDLED_ZLIB=OFF \ + -DCMAKE_C_FLAGS="$SHARED_CFLAGS" \ + -DBUILD_SHARED_LIBS=OFF + +make diff --git a/libglvnd/default/conf.sh b/libglvnd/default/conf.sh new file mode 100755 index 0000000..fcd5781 --- /dev/null +++ b/libglvnd/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson ../build diff --git a/libglvnd/default/deps b/libglvnd/default/deps new file mode 100644 index 0000000..17befb3 --- /dev/null +++ b/libglvnd/default/deps @@ -0,0 +1,22 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +mesa-dynamic diff --git a/libglvnd/default/env.sh b/libglvnd/default/env.sh new file mode 100755 index 0000000..a0a7e55 --- /dev/null +++ b/libglvnd/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/libglvnd/default/inst.sh b/libglvnd/default/inst.sh new file mode 100755 index 0000000..6953b06 --- /dev/null +++ b/libglvnd/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -j$(nproc) -C ../build install diff --git a/libglvnd/default/make.sh b/libglvnd/default/make.sh new file mode 100755 index 0000000..11412b7 --- /dev/null +++ b/libglvnd/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -j$(nproc) -C ../build diff --git a/libgpg-error/default/conf.sh b/libgpg-error/default/conf.sh new file mode 100755 index 0000000..ea1e394 --- /dev/null +++ b/libgpg-error/default/conf.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +./configure \ + --enable-shared \ + --enable-static \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libgpg-error/default/deps b/libgpg-error/default/deps new file mode 100644 index 0000000..8494467 --- /dev/null +++ b/libgpg-error/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +musl-cross-make +make +automake +autoconf +dash +patch +awk +gnu-grep +gnu-sed diff --git a/libgpg-error/default/env.sh b/libgpg-error/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/libgpg-error/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/libgudev/default/conf.sh b/libgudev/default/conf.sh new file mode 100755 index 0000000..59b7c3c --- /dev/null +++ b/libgudev/default/conf.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +./configure \ + --disable-umockdev \ + --enable-shared \ + --enable-static \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" diff --git a/libgudev/default/deps b/libgudev/default/deps new file mode 100644 index 0000000..ca7139e --- /dev/null +++ b/libgudev/default/deps @@ -0,0 +1,18 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +libffi +zlib +eudev +glib +gobject-introspection-dynamic +python3-dynamic diff --git a/libgudev/default/env.sh b/libgudev/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/libgudev/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/libice/default/deps b/libice/default/deps new file mode 100644 index 0000000..65778ba --- /dev/null +++ b/libice/default/deps @@ -0,0 +1,28 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +samurai +libxml2 +python3 +diffutils +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb +xtrans diff --git a/libid3tag/default/conf.sh b/libid3tag/default/conf.sh new file mode 100755 index 0000000..c3854ee --- /dev/null +++ b/libid3tag/default/conf.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +# update config.sub +rm config.sub +ln -s "$(find /share -name config.sub | head -n1)" config.sub + +./configure \ + --disable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libid3tag/default/deps b/libid3tag/default/deps new file mode 100644 index 0000000..7c3629d --- /dev/null +++ b/libid3tag/default/deps @@ -0,0 +1,14 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +zlib +automake +pkgconf diff --git a/libid3tag/default/inst.sh b/libid3tag/default/inst.sh new file mode 100755 index 0000000..8fea643 --- /dev/null +++ b/libid3tag/default/inst.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +make install + +cat > /lib/pkgconfig/id3tag.pc << EOF +prefix=/usr +exec_prefix=/bin +libdir=/lib +includedir=/include + +Name: id3tag +Description: ID3 tag manipulation library. +Requires: +Version: $version +Libs: -lid3tag +Cflags: +EOF diff --git a/libid3tag/default/patch b/libid3tag/default/patch new file mode 100644 index 0000000..a49e7c9 --- /dev/null +++ b/libid3tag/default/patch @@ -0,0 +1,15 @@ +addresses CVE-2008-2109. + +libid3tag does not seem to be actively maintained anymore. + +--- a/field.c.orig 2008-05-05 09:49:15.000000000 -0400 ++++ b/field.c 2008-05-05 09:49:25.000000000 -0400 +@@ -291,7 +291,7 @@ + + end = *ptr + length; + +- while (end - *ptr > 0) { ++ while (end - *ptr > 0 && **ptr != '\0') { + ucs4 = id3_parse_string(ptr, end - *ptr, *encoding, 0); + if (ucs4 == 0) + goto fail; diff --git a/libidn2/default/conf.sh b/libidn2/default/conf.sh new file mode 100755 index 0000000..737918f --- /dev/null +++ b/libidn2/default/conf.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +./configure \ + --disable-nls \ + --enable-shared \ + --enable-static \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" diff --git a/libidn2/default/deps b/libidn2/default/deps new file mode 100644 index 0000000..267cf74 --- /dev/null +++ b/libidn2/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +diffutils +libunistring diff --git a/libidn2/default/env.sh b/libidn2/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/libidn2/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/libinput-dynamic/default/conf.sh b/libinput-dynamic/default/conf.sh new file mode 100755 index 0000000..4a607c4 --- /dev/null +++ b/libinput-dynamic/default/conf.sh @@ -0,0 +1,12 @@ +#!/bin/sh -e + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson \ + -Dlibwacom=false \ + -Ddocumentation=false \ + -Ddebug-gui=false \ + -Dtests=false \ + --prefix=$PREFIX \ + ../build diff --git a/libinput-dynamic/default/deps b/libinput-dynamic/default/deps new file mode 100644 index 0000000..2054bea --- /dev/null +++ b/libinput-dynamic/default/deps @@ -0,0 +1,25 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +eudev +mtdev +libevdev +pkgconf +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +cmake diff --git a/libinput-dynamic/default/inst.sh b/libinput-dynamic/default/inst.sh new file mode 100755 index 0000000..1208b36 --- /dev/null +++ b/libinput-dynamic/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +samu -C ../build install diff --git a/libinput-dynamic/default/make.sh b/libinput-dynamic/default/make.sh new file mode 100755 index 0000000..e53d1e4 --- /dev/null +++ b/libinput-dynamic/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +samu -C ../build diff --git a/libinput-dynamic/default/meson.build b/libinput-dynamic/default/meson.build new file mode 100644 index 0000000..14fe34b --- /dev/null +++ b/libinput-dynamic/default/meson.build @@ -0,0 +1,1001 @@ +project('libinput', 'c', + version : '1.16.1', + license : 'MIT/Expat', + default_options : [ 'c_std=gnu99', 'warning_level=2' ], + meson_version : '>= 0.45.0') + +libinput_version = meson.project_version().split('.') + +dir_data = join_paths(get_option('prefix'), get_option('datadir'), 'libinput') +dir_sysconf = join_paths(get_option('prefix'), get_option('sysconfdir'), 'libinput') +dir_libexec = join_paths(get_option('prefix'), get_option('libexecdir'), 'libinput') +dir_lib = join_paths(get_option('prefix'), get_option('libdir')) +dir_man1 = join_paths(get_option('prefix'), get_option('mandir'), 'man1') +dir_system_udev = join_paths(get_option('prefix'), 'lib', 'udev') +dir_src_quirks = join_paths(meson.current_source_dir(), 'quirks') +dir_src_test = join_paths(meson.current_source_dir(), 'test') +dir_src = join_paths(meson.current_source_dir(), 'src') + +dir_udev = get_option('udev-dir') +if dir_udev == '' + dir_udev = dir_system_udev +endif +dir_udev_callouts = dir_udev +dir_udev_rules = join_paths(dir_udev, 'rules.d') +dir_udev_hwdb = join_paths(dir_udev, 'hwdb.d') + + +# We use libtool-version numbers because it's easier to understand. +# Before making a release, the libinput_so_* +# numbers should be modified. The components are of the form C:R:A. +# a) If binary compatibility has been broken (eg removed or changed interfaces) +# change to C+1:0:0. +# b) If interfaces have been changed or added, but binary compatibility has +# been preserved, change to C+1:0:A+1 +# c) If the interface is the same as the previous version, change to C:R+1:A +libinput_lt_c=23 +libinput_lt_r=0 +libinput_lt_a=13 + +# convert to soname +libinput_so_version = '@0@.@1@.@2@'.format((libinput_lt_c - libinput_lt_a), + libinput_lt_a, libinput_lt_r) + +# Compiler setup +cc = meson.get_compiler('c') +cppflags = ['-Wno-unused-parameter', '-fvisibility=hidden'] +cflags = cppflags + ['-Wmissing-prototypes', '-Wstrict-prototypes'] +add_project_arguments(cflags, language : 'c') +add_project_arguments(cppflags, language : 'cpp') + +# config.h +config_h = configuration_data() + +doc_url_base = 'https://wayland.freedesktop.org/libinput/doc' +if libinput_version[2].to_int() >= 90 + doc_url = '@0@/latest/'.format(doc_url_base) +else + doc_url = '@0@/@1@/'.format(doc_url_base, meson.project_version()) +endif +config_h.set_quoted('HTTP_DOC_LINK', doc_url) + +config_h.set('_GNU_SOURCE', '1') +if get_option('buildtype') == 'debug' or get_option('buildtype') == 'debugoptimized' + config_h.set_quoted('MESON_BUILD_ROOT', meson.current_build_dir()) +else + config_h.set_quoted('MESON_BUILD_ROOT', '') +endif + +prefix = '''#define _GNU_SOURCE 1 +#include +''' +if cc.get_define('static_assert', prefix : prefix) == '' + config_h.set('static_assert(...)', '/* */') +endif + +# Coverity breaks because it doesn't define _Float128 correctly, you'll end +# up with a bunch of messages in the form: +# "/usr/include/stdlib.h", line 133: error #20: identifier "_Float128" is +# undefined +# extern _Float128 strtof128 (const char *__restrict __nptr, +# ^ +# We don't use float128 ourselves, it gets pulled in from math.h or +# something, so let's just define it as uint128 and move on. +# Unfortunately we can't detect the coverity build at meson configure +# time, we only know it fails at runtime. So make this an option instead, to +# be removed when coverity fixes this again. +if get_option('coverity') + config_h.set('_Float128', '__uint128_t') + config_h.set('_Float32', 'int') + config_h.set('_Float32x', 'int') + config_h.set('_Float64', 'long') + config_h.set('_Float64x', 'long') +endif + +if cc.has_header_symbol('dirent.h', 'versionsort', prefix : prefix) + config_h.set('HAVE_VERSIONSORT', '1') +endif + +if not cc.has_header_symbol('errno.h', 'program_invocation_short_name', prefix : prefix) + if cc.has_header_symbol('stdlib.h', 'getprogname') + config_h.set('program_invocation_short_name', 'getprogname()') + endif +endif + +if cc.has_header('xlocale.h') + config_h.set('HAVE_XLOCALE_H', '1') +endif + +code = ''' +#include +void main(void) { newlocale(LC_NUMERIC_MASK, "C", (locale_t)0); } +''' +if cc.links(code, name : 'locale.h') + config_h.set('HAVE_LOCALE_H', '1') +endif + +if not cc.has_header_symbol('sys/ptrace.h', 'PTRACE_ATTACH', prefix : prefix) + config_h.set('PTRACE_ATTACH', 'PT_ATTACH') + config_h.set('PTRACE_CONT', 'PT_CONTINUE') + config_h.set('PTRACE_DETACH', 'PT_DETACH') +endif + +# Dependencies +pkgconfig = import('pkgconfig') +dep_udev = dependency('libudev') +dep_mtdev = dependency('mtdev', version : '>= 1.1.0') +dep_libevdev = dependency('libevdev') +dep_lm = cc.find_library('m', required : false) +dep_rt = cc.find_library('rt', required : false) + +# Include directories +includes_include = include_directories('include') +includes_src = include_directories('src') + +############ libwacom configuration ############ + +have_libwacom = get_option('libwacom') +config_h.set10('HAVE_LIBWACOM', have_libwacom) +if have_libwacom + dep_libwacom = dependency('libwacom', version : '>= 0.20') + + result = cc.has_function('libwacom_get_paired_device', + dependencies: dep_libwacom) + config_h.set10('HAVE_LIBWACOM_GET_PAIRED_DEVICE', result) + + result = cc.has_function('libwacom_get_button_evdev_code', + dependencies: dep_libwacom) + config_h.set10('HAVE_LIBWACOM_GET_BUTTON_EVDEV_CODE', result) +else + dep_libwacom = declare_dependency() +endif + +############ udev bits ############ + +executable('libinput-device-group', + 'udev/libinput-device-group.c', + dependencies : [dep_udev, dep_libwacom], + include_directories : [includes_src, includes_include], + install : true, + install_dir : dir_udev_callouts) +executable('libinput-fuzz-extract', + 'udev/libinput-fuzz-extract.c', + 'src/util-strings.c', + 'src/util-prop-parsers.c', + dependencies : [dep_udev, dep_libevdev, dep_lm], + include_directories : [includes_src, includes_include], + install : true, + install_dir : dir_udev_callouts) +executable('libinput-fuzz-to-zero', + 'udev/libinput-fuzz-to-zero.c', + dependencies : [dep_udev, dep_libevdev], + include_directories : [includes_src, includes_include], + install : true, + install_dir : dir_udev_callouts) + +udev_rules_config = configuration_data() +udev_rules_config.set('UDEV_TEST_PATH', '') +configure_file(input : 'udev/80-libinput-device-groups.rules.in', + output : '80-libinput-device-groups.rules', + install_dir : dir_udev_rules, + configuration : udev_rules_config) +configure_file(input : 'udev/90-libinput-fuzz-override.rules.in', + output : '90-libinput-fuzz-override.rules', + install_dir : dir_udev_rules, + configuration : udev_rules_config) + +litest_udev_rules_config = configuration_data() +litest_udev_rules_config.set('UDEV_TEST_PATH', meson.current_build_dir() + '/') +litest_groups_rules_file = configure_file(input : 'udev/80-libinput-device-groups.rules.in', + output : '80-libinput-device-groups-litest.rules', + configuration : litest_udev_rules_config) +litest_fuzz_override_file = configure_file(input : 'udev/90-libinput-fuzz-override.rules.in', + output : '90-libinput-fuzz-override-litest.rules', + configuration : litest_udev_rules_config) + +############ Check for leftover udev rules ######## + +# This test should be defined first so we don't waste time testing anything +# else if we're about to fail anyway. ninja test will execute tests in the +# order of them defined in meson.build + +if get_option('tests') + test('leftover-rules', + find_program('test/check-leftover-udev-rules.sh'), + is_parallel : false, + suite : ['all']) +endif + +############ libepoll-shim (BSD) ############ + +if cc.has_header_symbol('sys/epoll.h', 'epoll_create1', prefix : prefix) + # epoll is built-in (Linux, illumos) + dep_libepoll = declare_dependency() +else + # epoll is implemented in userspace by libepoll-shim (FreeBSD) + dir_libepoll = get_option('epoll-dir') + if dir_libepoll == '' + dir_libepoll = get_option('prefix') + endif + includes_epoll = include_directories(join_paths(dir_libepoll, 'include/libepoll-shim')) + dep_libepoll = cc.find_library('epoll-shim', dirs : join_paths(dir_libepoll, 'lib')) + code = ''' + #include + int main(void) { epoll_create1(0); } + ''' + if not cc.links(code, + name : 'libepoll-shim check', + dependencies : [dep_libepoll, dep_rt], + include_directories : includes_epoll) # note: wants an include_directories object + error('No built-in epoll or libepoll-shim found.') + endif + dep_libepoll = declare_dependency( + include_directories : includes_epoll, + dependencies : [dep_libepoll, dep_rt]) +endif + +############ libinput-util.a ############ + +# Basic compilation test to make sure the headers include and define all the +# necessary bits. +util_headers = [ + 'util-bits.h', + 'util-input-event.h', + 'util-list.h', + 'util-macros.h', + 'util-matrix.h', + 'util-prop-parsers.h', + 'util-ratelimit.h', + 'util-strings.h', + 'util-time.h', +] +foreach h: util_headers + c = configuration_data() + c.set_quoted('FILE', h) + testfile = configure_file(input : 'test/test-util-includes.c', + output : 'test-util-includes-@0@.c'.format(h), + configuration : c) + executable('test-build-@0@'.format(h), + testfile, join_paths(dir_src, h), + include_directories : [includes_src, includes_include], + install : false) +endforeach + +src_libinput_util = [ + 'src/util-bits.h', + 'src/util-list.c', + 'src/util-list.h', + 'src/util-macros.h', + 'src/util-matrix.h', + 'src/util-ratelimit.c', + 'src/util-ratelimit.h', + 'src/util-strings.h', + 'src/util-strings.c', + 'src/util-time.h', + 'src/util-prop-parsers.h', + 'src/util-prop-parsers.c', + 'src/libinput-util.h', +] +libinput_util = static_library('libinput-util', + src_libinput_util, + dependencies : [dep_udev, dep_libevdev, dep_libwacom], + include_directories : includes_include) +dep_libinput_util = declare_dependency(link_with : libinput_util) + +############ libfilter.a ############ +src_libfilter = [ + 'src/filter.c', + 'src/filter-flat.c', + 'src/filter-low-dpi.c', + 'src/filter-mouse.c', + 'src/filter-touchpad.c', + 'src/filter-touchpad-flat.c', + 'src/filter-touchpad-x230.c', + 'src/filter-tablet.c', + 'src/filter-trackpoint.c', + 'src/filter.h', + 'src/filter-private.h' +] +libfilter = static_library('filter', src_libfilter, + dependencies : [dep_udev, dep_libwacom], + include_directories : includes_include) +dep_libfilter = declare_dependency(link_with : libfilter) + +############ libquirks.a ############# +libinput_data_path = dir_data +libinput_data_override_path = join_paths(dir_sysconf, 'local-overrides.quirks') +config_h.set_quoted('LIBINPUT_QUIRKS_DIR', dir_data) +config_h.set_quoted('LIBINPUT_QUIRKS_OVERRIDE_FILE', libinput_data_override_path) + +config_h.set_quoted('LIBINPUT_QUIRKS_SRCDIR', dir_src_quirks) +install_subdir('quirks', + exclude_files: ['README.md'], + install_dir : dir_data, + strip_directory : true) + +src_libquirks = [ + 'src/quirks.c', + 'src/quirks.h', + 'src/builddir.h', +] + +deps_libquirks = [dep_udev, dep_libwacom, dep_libinput_util] +libquirks = static_library('quirks', src_libquirks, + dependencies : deps_libquirks, + include_directories : includes_include) +dep_libquirks = declare_dependency(link_with : libquirks) + +############ libinput.so ############ +install_headers('src/libinput.h') +src_libinput = src_libfilter + [ + 'src/libinput.c', + 'src/libinput.h', + 'src/libinput-private.h', + 'src/evdev.c', + 'src/evdev.h', + 'src/evdev-debounce.c', + 'src/evdev-fallback.c', + 'src/evdev-fallback.h', + 'src/evdev-totem.c', + 'src/evdev-middle-button.c', + 'src/evdev-mt-touchpad.c', + 'src/evdev-mt-touchpad.h', + 'src/evdev-mt-touchpad-tap.c', + 'src/evdev-mt-touchpad-thumb.c', + 'src/evdev-mt-touchpad-buttons.c', + 'src/evdev-mt-touchpad-edge-scroll.c', + 'src/evdev-mt-touchpad-gestures.c', + 'src/evdev-tablet.c', + 'src/evdev-tablet.h', + 'src/evdev-tablet-pad.c', + 'src/evdev-tablet-pad.h', + 'src/evdev-tablet-pad-leds.c', + 'src/path-seat.c', + 'src/udev-seat.c', + 'src/udev-seat.h', + 'src/timer.c', + 'src/timer.h', + 'include/linux/input.h' +] + +deps_libinput = [ + dep_mtdev, + dep_udev, + dep_libevdev, + dep_libepoll, + dep_lm, + dep_rt, + dep_libwacom, + dep_libinput_util, + dep_libquirks +] + +libinput_version_h_config = configuration_data() +libinput_version_h_config.set('LIBINPUT_VERSION_MAJOR', libinput_version[0]) +libinput_version_h_config.set('LIBINPUT_VERSION_MINOR', libinput_version[1]) +libinput_version_h_config.set('LIBINPUT_VERSION_MICRO', libinput_version[2]) +libinput_version_h_config.set('LIBINPUT_VERSION', meson.project_version()) + +libinput_version_h = configure_file( + input : 'src/libinput-version.h.in', + output : 'libinput-version.h', + configuration : libinput_version_h_config, +) + +mapfile = join_paths(dir_src, 'libinput.sym') +version_flag = '-Wl,--version-script,@0@'.format(mapfile) +lib_libinput = shared_library('input', + src_libinput, + include_directories : [include_directories('.'), includes_include], + dependencies : deps_libinput, + version : libinput_so_version, + link_args : version_flag, + link_depends : mapfile, + install : true + ) + +dep_libinput = declare_dependency( + link_with : lib_libinput, + dependencies : deps_libinput) + +pkgconfig.generate( + filebase : 'libinput', + name : 'Libinput', + description : 'Input device library', + version : meson.project_version(), + libraries : lib_libinput +) + +git_version_h = vcs_tag(command : ['git', 'describe'], + fallback : 'unknown', + input : 'src/libinput-git-version.h.in', + output :'libinput-git-version.h') + +if meson.version().version_compare('<0.43.0') + # Restore the SELinux context for the libinput.so.a.b.c on install + # meson bug https://github.com/mesonbuild/meson/issues/1967 + meson.add_install_script('src/libinput-restore-selinux-context.sh', + dir_lib, lib_libinput.full_path()) +endif + +lib_libinput_static = static_library('input', + src_libinput, + include_directories : [include_directories('.'), includes_include], + dependencies : deps_libinput, + version : libinput_so_version, + link_args : version_flag, + link_depends : mapfile, + install : true + ) + +############ documentation ############ + +if get_option('documentation') + subdir('doc/api') + subdir('doc/user') +endif + +############ shell completion ######### + +subdir('completion/zsh') + +############ tools ############ +libinput_tool_path = dir_libexec +config_h.set_quoted('LIBINPUT_TOOL_PATH', libinput_tool_path) +tools_shared_sources = [ 'tools/shared.c', + 'tools/shared.h', + 'src/builddir.h' ] +deps_tools_shared = [ dep_libinput, dep_libevdev ] +lib_tools_shared = static_library('tools_shared', + tools_shared_sources, + include_directories : [includes_src, includes_include], + dependencies : deps_tools_shared) +dep_tools_shared = declare_dependency(link_with : lib_tools_shared, + dependencies : deps_tools_shared) + +man_config = configuration_data() +man_config.set('LIBINPUT_VERSION', meson.project_version()) +man_config.set('LIBINPUT_DATA_DIR', dir_data) + +deps_tools = [ dep_tools_shared, dep_libinput ] +libinput_debug_events_sources = [ + 'tools/libinput-debug-events.c', + libinput_version_h, +] +executable('libinput-debug-events', + libinput_debug_events_sources, + dependencies : deps_tools, + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true + ) +configure_file(input : 'tools/libinput-debug-events.man', + output : 'libinput-debug-events.1', + configuration : man_config, + install_dir : dir_man1, + ) + +libinput_debug_tablet_sources = [ 'tools/libinput-debug-tablet.c' ] +executable('libinput-debug-tablet', + libinput_debug_tablet_sources, + dependencies : deps_tools, + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true) + +configure_file(input : 'tools/libinput-debug-tablet.man', + output : 'libinput-debug-tablet.1', + configuration : man_config, + install_dir : dir_man1, + ) + +libinput_quirks_sources = [ 'tools/libinput-quirks.c' ] +libinput_quirks = executable('libinput-quirks', + libinput_quirks_sources, + dependencies : [dep_libquirks, dep_tools_shared, dep_libinput], + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true + ) +test('validate-quirks', + libinput_quirks, + args: ['validate', '--data-dir=@0@'.format(dir_src_quirks)], + suite : ['all'] + ) + +configure_file(input : 'tools/libinput-quirks.man', + output : 'libinput-quirks.1', + configuration : man_config, + install_dir : dir_man1, + ) +# Same man page for the subtools to stay consistent with the other tools +configure_file(input : 'tools/libinput-quirks.man', + output : 'libinput-quirks-list.1', + configuration : man_config, + install_dir : dir_man1, + ) +configure_file(input : 'tools/libinput-quirks.man', + output : 'libinput-quirks-validate.1', + configuration : man_config, + install_dir : dir_man1, + ) + +libinput_list_devices_sources = [ 'tools/libinput-list-devices.c' ] +libinput_list_devices = executable('libinput-list-devices', + libinput_list_devices_sources, + dependencies : deps_tools, + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true, + ) +test('list-devices', + libinput_list_devices, + suite : ['all', 'root', 'hardware']) + +configure_file(input : 'tools/libinput-list-devices.man', + output : 'libinput-list-devices.1', + configuration : man_config, + install_dir : dir_man1, + ) + +libinput_measure_sources = [ 'tools/libinput-measure.c' ] +executable('libinput-measure', + libinput_measure_sources, + dependencies : deps_tools, + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true, + ) +configure_file(input : 'tools/libinput-measure.man', + output : 'libinput-measure.1', + configuration : man_config, + install_dir : dir_man1, + ) + +libinput_analyze_sources = [ 'tools/libinput-analyze.c' ] +executable('libinput-analyze', + libinput_analyze_sources, + dependencies : deps_tools, + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true, + ) +configure_file(input : 'tools/libinput-analyze.man', + output : 'libinput-analyze.1', + configuration : man_config, + install_dir : dir_man1, + ) + +src_python_tools = files( + 'tools/libinput-analyze-per-slot-delta.py', + 'tools/libinput-measure-fuzz.py', + 'tools/libinput-measure-touchpad-size.py', + 'tools/libinput-measure-touchpad-tap.py', + 'tools/libinput-measure-touchpad-pressure.py', + 'tools/libinput-measure-touch-size.py', +) + +config_noop = configuration_data() +# Set a dummy replacement to silence meson warnings: +# meson.build:487: WARNING: Got an empty configuration_data() object and +# found no substitutions in the input file 'foo'. If you +# want to copy a file to the build dir, use the 'copy:' +# keyword argument added in 0.47.0 +config_noop.set('dummy', 'dummy') +foreach t : src_python_tools + configure_file(input: t, + output: '@BASENAME@', + configuration : config_noop, + install_dir : libinput_tool_path + ) +endforeach + +src_man = files( + 'tools/libinput-measure-fuzz.man', + 'tools/libinput-measure-touchpad-size.man', + 'tools/libinput-measure-touchpad-tap.man', + 'tools/libinput-measure-touchpad-pressure.man', + 'tools/libinput-measure-touch-size.man', + 'tools/libinput-analyze-per-slot-delta.man', +) + +foreach m : src_man + configure_file(input : m, + output : '@BASENAME@.1', + configuration : man_config, + install_dir : dir_man1) +endforeach + +libinput_record_sources = [ 'tools/libinput-record.c', git_version_h ] +executable('libinput-record', + libinput_record_sources, + dependencies : deps_tools + [dep_udev], + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true, + ) +configure_file(input : 'tools/libinput-record.man', + output : 'libinput-record.1', + configuration : man_config, + install_dir : dir_man1, + ) + +install_data('tools/libinput-replay', + install_dir : libinput_tool_path) +configure_file(input : 'tools/libinput-replay.man', + output : 'libinput-replay.1', + configuration : man_config, + install_dir : dir_man1, + ) + +if get_option('debug-gui') + dep_gtk = dependency('gtk+-3.0', version : '>= 3.20') + dep_cairo = dependency('cairo') + dep_glib = dependency('glib-2.0') + + debug_gui_sources = [ 'tools/libinput-debug-gui.c' ] + deps_debug_gui = [ + dep_gtk, + dep_cairo, + dep_glib, + ] + deps_tools + executable('libinput-debug-gui', + debug_gui_sources, + dependencies : deps_debug_gui, + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true + ) + configure_file(input : 'tools/libinput-debug-gui.man', + output : 'libinput-debug-gui.1', + configuration : man_config, + install_dir : dir_man1, + ) +endif + +libinput_sources = [ 'tools/libinput-tool.c' ] + +libinput_tool = executable('libinput', + libinput_sources, + dependencies : deps_tools, + include_directories : [includes_src, includes_include], + install : true + ) +configure_file(input : 'tools/libinput.man', + output : 'libinput.1', + configuration : man_config, + install_dir : dir_man1, + ) + +ptraccel_debug_sources = [ 'tools/ptraccel-debug.c' ] +executable('ptraccel-debug', + ptraccel_debug_sources, + dependencies : [ dep_libfilter, dep_libinput ], + include_directories : [includes_src, includes_include], + install : false + ) + +# Don't run the test during a release build because we rely on the magic +# subtool lookup +if get_option('buildtype') == 'debug' or get_option('buildtype') == 'debugoptimized' + config_tool_option_test = configuration_data() + config_tool_option_test.set('DISABLE_WARNING', 'yes') + config_tool_option_test.set('MESON_ENABLED_DEBUG_GUI', get_option('debug-gui')) + config_tool_option_test.set('MESON_BUILD_ROOT', meson.current_build_dir()) + config_tool_option_test.set('TOOL_PATH', libinput_tool.full_path()) + tool_option_test = configure_file(input: 'tools/test_tool_option_parsing.py', + output: '@PLAINNAME@', + configuration : config_tool_option_test) + test('tool-option-parsing', + tool_option_test, + args : [tool_option_test, '-n', 'auto'], + suite : ['all', 'root'], + timeout : 240) +endif + +# the libinput tools check whether we execute from the builddir, this is +# the test to verify that lookup. We test twice, once as normal test +# run from the builddir, once after copying to /tmp +test_builddir_lookup = executable('test-builddir-lookup', + 'test/test-builddir-lookup.c', + dependencies : [ dep_tools_shared], + include_directories : [includes_src, includes_include], + install : false) +test('tools-builddir-lookup', + test_builddir_lookup, + args : ['--builddir-is-set'], + suite : ['all']) +test('tools-builddir-lookup-installed', + find_program('test/helper-copy-and-exec-from-tmp.sh'), + args : [test_builddir_lookup.full_path(), '--builddir-is-null'], + env : ['LD_LIBRARY_PATH=@0@'.format(meson.current_build_dir())], + suite : ['all'], + workdir : '/tmp') + +############ tests ############ + +test('symbols-leak-test', + find_program('test/symbols-leak-test'), + args : [ join_paths(dir_src, 'libinput.sym'), dir_src], + suite : ['all']) + +# build-test only +executable('test-build-pedantic', + 'test/build-pedantic.c', + dependencies : [dep_udev], + include_directories : [includes_src, includes_include], + c_args : ['-std=c99', '-pedantic', '-Werror'], + install : false) +# build-test only +executable('test-build-std-gnuc90', + 'test/build-pedantic.c', + dependencies : [dep_udev], + include_directories : [includes_src, includes_include], + c_args : ['-std=gnu89', '-Werror'], + install : false) +# test for linking with the minimal linker flags +executable('test-build-linker', + 'test/build-pedantic.c', + include_directories : [includes_src, includes_include], + dependencies : [ dep_libinput, dep_libinput_util ], + install : false) +# test including from C++ (in case CPP compiler is available) +if add_languages('cpp', required: false) + executable('test-build-cxx', + 'test/build-cxx.cc', + dependencies : [dep_udev], + include_directories : [includes_src, includes_include], + install : false) +endif + +# This is the test suite runner, we allow disabling that one because of +# dependencies +if get_option('tests') + dep_check = dependency('check', version : '>= 0.9.10') + + gstack = find_program('gstack', required : false) + config_h.set10('HAVE_GSTACK', gstack.found()) + + # for inhibit support during test run + dep_libsystemd = dependency('libsystemd', version : '>= 221', required : false) + config_h.set10('HAVE_LIBSYSTEMD', dep_libsystemd.found()) + + litest_sources = [ + 'test/litest.h', + 'test/litest-int.h', + 'test/litest-device-absinfo-override.c', + 'test/litest-device-acer-hawaii-keyboard.c', + 'test/litest-device-acer-hawaii-touchpad.c', + 'test/litest-device-aiptek-tablet.c', + 'test/litest-device-alps-3fg.c', + 'test/litest-device-alps-semi-mt.c', + 'test/litest-device-alps-dualpoint.c', + 'test/litest-device-anker-mouse-kbd.c', + 'test/litest-device-apple-appletouch.c', + 'test/litest-device-apple-internal-keyboard.c', + 'test/litest-device-apple-magicmouse.c', + 'test/litest-device-asus-rog-gladius.c', + 'test/litest-device-atmel-hover.c', + 'test/litest-device-bcm5974.c', + 'test/litest-device-calibrated-touchscreen.c', + 'test/litest-device-cyborg-rat-5.c', + 'test/litest-device-dell-canvas-totem.c', + 'test/litest-device-dell-canvas-totem-touch.c', + 'test/litest-device-elantech-touchpad.c', + 'test/litest-device-elan-tablet.c', + 'test/litest-device-generic-singletouch.c', + 'test/litest-device-gpio-keys.c', + 'test/litest-device-huion-pentablet.c', + 'test/litest-device-hp-wmi-hotkeys.c', + 'test/litest-device-ignored-mouse.c', + 'test/litest-device-keyboard.c', + 'test/litest-device-keyboard-all-codes.c', + 'test/litest-device-keyboard-razer-blackwidow.c', + 'test/litest-device-keyboard-razer-blade-stealth.c', + 'test/litest-device-keyboard-razer-blade-stealth-videoswitch.c', + 'test/litest-device-lid-switch.c', + 'test/litest-device-lid-switch-surface3.c', + 'test/litest-device-logitech-media-keyboard-elite.c', + 'test/litest-device-logitech-trackball.c', + 'test/litest-device-nexus4-touch-screen.c', + 'test/litest-device-magic-trackpad.c', + 'test/litest-device-mouse.c', + 'test/litest-device-mouse-wheel-tilt.c', + 'test/litest-device-mouse-roccat.c', + 'test/litest-device-mouse-low-dpi.c', + 'test/litest-device-mouse-wheel-click-angle.c', + 'test/litest-device-mouse-wheel-click-count.c', + 'test/litest-device-ms-nano-transceiver-mouse.c', + 'test/litest-device-ms-surface-cover.c', + 'test/litest-device-protocol-a-touch-screen.c', + 'test/litest-device-qemu-usb-tablet.c', + 'test/litest-device-sony-vaio-keys.c', + 'test/litest-device-synaptics-x220.c', + 'test/litest-device-synaptics-hover.c', + 'test/litest-device-synaptics-i2c.c', + 'test/litest-device-synaptics-rmi4.c', + 'test/litest-device-synaptics-st.c', + 'test/litest-device-synaptics-t440.c', + 'test/litest-device-synaptics-x1-carbon-3rd.c', + 'test/litest-device-tablet-mode-switch.c', + 'test/litest-device-thinkpad-extrabuttons.c', + 'test/litest-device-trackpoint.c', + 'test/litest-device-touch-screen.c', + 'test/litest-device-touchscreen-invalid-range.c', + 'test/litest-device-touchscreen-fuzz.c', + 'test/litest-device-touchscreen-mt-tool.c', + 'test/litest-device-uclogic-tablet.c', + 'test/litest-device-wacom-bamboo-2fg-finger.c', + 'test/litest-device-wacom-bamboo-2fg-pad.c', + 'test/litest-device-wacom-bamboo-2fg-pen.c', + 'test/litest-device-wacom-bamboo-16fg-pen.c', + 'test/litest-device-wacom-cintiq-12wx-pen.c', + 'test/litest-device-wacom-cintiq-13hdt-finger.c', + 'test/litest-device-wacom-cintiq-13hdt-pad.c', + 'test/litest-device-wacom-cintiq-13hdt-pen.c', + 'test/litest-device-wacom-cintiq-24hd-pen.c', + 'test/litest-device-wacom-cintiq-24hdt-pad.c', + 'test/litest-device-wacom-cintiq-pro-16-finger.c', + 'test/litest-device-wacom-cintiq-pro-16-pad.c', + 'test/litest-device-wacom-cintiq-pro-16-pen.c', + 'test/litest-device-wacom-ekr.c', + 'test/litest-device-wacom-hid4800-pen.c', + 'test/litest-device-wacom-intuos3-pad.c', + 'test/litest-device-wacom-intuos5-finger.c', + 'test/litest-device-wacom-intuos5-pad.c', + 'test/litest-device-wacom-intuos5-pen.c', + 'test/litest-device-wacom-isdv4-4200-pen.c', + 'test/litest-device-wacom-isdv4-e6-pen.c', + 'test/litest-device-wacom-isdv4-e6-finger.c', + 'test/litest-device-wacom-mobilestudio-pro-pad.c', + 'test/litest-device-waltop-tablet.c', + 'test/litest-device-wheel-only.c', + 'test/litest-device-xen-virtual-pointer.c', + 'test/litest-device-vmware-virtual-usb-mouse.c', + 'test/litest-device-yubikey.c', + 'test/litest.c', + 'include/valgrind/valgrind.h' + ] + + dep_dl = cc.find_library('dl') + deps_litest = [ + dep_libinput, + dep_check, + dep_udev, + dep_libevdev, + dep_dl, + dep_lm, + dep_libsystemd, + dep_libquirks, + ] + + litest_config_h = configuration_data() + litest_config_h.set_quoted('LIBINPUT_DEVICE_GROUPS_RULES_FILE', + join_paths(meson.current_build_dir(), + '80-libinput-device-groups-litest.rules')) + litest_config_h.set_quoted('LIBINPUT_FUZZ_OVERRIDE_UDEV_RULES_FILE', + join_paths(meson.current_build_dir(), + '90-libinput-fuzz-override-litest.rules')) + + def_no_main = '-DLITEST_NO_MAIN' + def_disable_backtrace = '-DLITEST_DISABLE_BACKTRACE_LOGGING' + defs_litest_selftest = [ + def_no_main, + def_disable_backtrace + ] + test_litest_selftest_sources = [ + 'test/litest-selftest.c', + 'test/litest.c', + 'test/litest.h' + ] + test_litest_selftest = executable('test-litest-selftest', + test_litest_selftest_sources, + include_directories : [includes_src, includes_include], + dependencies : deps_litest, + c_args : defs_litest_selftest, + install : false) + test('test-litest-selftest', + test_litest_selftest, + suite : ['all'], + timeout : 100) + + def_LT_VERSION = '-DLIBINPUT_LT_VERSION="@0@:@1@:@2@"'.format(libinput_lt_c, libinput_lt_r, libinput_lt_a) + test_library_version = executable('test-library-version', + ['test/test-library-version.c'], + c_args : [ def_LT_VERSION ], + install : false) + test('test-library-version', + test_library_version, + suite : ['all']) + + test_utils_sources = [ + 'src/libinput-util.h', + 'test/test-utils.c', + ] + test_utils = executable('test-utils', + test_utils_sources, + include_directories : [includes_src, includes_include], + dependencies : deps_litest, + install: false) + test('test-utils', + test_utils, + suite : ['all']) + + libinput_test_runner_sources = litest_sources + [ + 'src/libinput-util.h', + 'test/test-udev.c', + 'test/test-path.c', + 'test/test-pointer.c', + 'test/test-touch.c', + 'test/test-log.c', + 'test/test-tablet.c', + 'test/test-totem.c', + 'test/test-pad.c', + 'test/test-touchpad.c', + 'test/test-touchpad-tap.c', + 'test/test-touchpad-buttons.c', + 'test/test-trackpoint.c', + 'test/test-trackball.c', + 'test/test-misc.c', + 'test/test-keyboard.c', + 'test/test-device.c', + 'test/test-gestures.c', + 'test/test-switch.c', + 'test/test-quirks.c', + ] + libinput_test_runner = executable('libinput-test-suite', + libinput_test_runner_sources, + include_directories : [includes_src, includes_include], + dependencies : deps_litest, + install_dir : libinput_tool_path, + install : get_option('install-tests')) + configure_file(input : 'test/libinput-test-suite.man', + output : 'libinput-test-suite.1', + configuration : man_config, + install_dir : dir_man1, + ) + + # Update this list and the one in litest.c when new group names are + # required + groups = [ + 'config', 'context', 'device', 'events', 'gestures', 'keyboard', 'lid', + 'log', 'misc', 'pad', 'path', 'pointer', 'quirks', 'switch', 'tablet', + 'tablet-mode', 'tap', 'timer', 'totem', 'touch', 'touchpad', 'trackball', + 'trackpoint', 'udev', + ] + foreach group : groups + test('libinput-test-suite-@0@'.format(group), + libinput_test_runner, + suite : ['all', 'valgrind', 'root', 'hardware'], + args : ['--filter-group=@0@:*'.format(group), + '--xml-output=junit-@0@-XXXXXX.xml'.format(group)], + is_parallel : false, + timeout : 1200) + endforeach + + test('libinput-test-deviceless', + libinput_test_runner, + suite : ['all', 'valgrind'], + args: ['--filter-deviceless', + '--xml-output=junit-deviceless-XXXXXX.xml']) + + valgrind = find_program('valgrind', required : false) + if valgrind.found() + valgrind_env = environment() + valgrind_suppressions_file = join_paths(dir_src_test, 'valgrind.suppressions') + add_test_setup('valgrind', + exe_wrapper : [ valgrind, + '--leak-check=full', + '--gen-suppressions=all', + '--error-exitcode=3', + '--suppressions=' + valgrind_suppressions_file ], + env : valgrind_env, + timeout_multiplier : 100) + else + message('valgrind not found, disabling valgrind test suite') + endif + configure_file(output : 'litest-config.h', + configuration : litest_config_h) +endif +############ output files ############ +configure_file(output : 'config.h', configuration : config_h) diff --git a/libinput/default/conf.sh b/libinput/default/conf.sh new file mode 100755 index 0000000..4a607c4 --- /dev/null +++ b/libinput/default/conf.sh @@ -0,0 +1,12 @@ +#!/bin/sh -e + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson \ + -Dlibwacom=false \ + -Ddocumentation=false \ + -Ddebug-gui=false \ + -Dtests=false \ + --prefix=$PREFIX \ + ../build diff --git a/libinput/default/deps b/libinput/default/deps new file mode 100644 index 0000000..2054bea --- /dev/null +++ b/libinput/default/deps @@ -0,0 +1,25 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +eudev +mtdev +libevdev +pkgconf +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +cmake diff --git a/libinput/default/inst.sh b/libinput/default/inst.sh new file mode 100755 index 0000000..1208b36 --- /dev/null +++ b/libinput/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +samu -C ../build install diff --git a/libinput/default/make.sh b/libinput/default/make.sh new file mode 100755 index 0000000..e53d1e4 --- /dev/null +++ b/libinput/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +samu -C ../build diff --git a/libinput/default/meson.build b/libinput/default/meson.build new file mode 100644 index 0000000..14fe34b --- /dev/null +++ b/libinput/default/meson.build @@ -0,0 +1,1001 @@ +project('libinput', 'c', + version : '1.16.1', + license : 'MIT/Expat', + default_options : [ 'c_std=gnu99', 'warning_level=2' ], + meson_version : '>= 0.45.0') + +libinput_version = meson.project_version().split('.') + +dir_data = join_paths(get_option('prefix'), get_option('datadir'), 'libinput') +dir_sysconf = join_paths(get_option('prefix'), get_option('sysconfdir'), 'libinput') +dir_libexec = join_paths(get_option('prefix'), get_option('libexecdir'), 'libinput') +dir_lib = join_paths(get_option('prefix'), get_option('libdir')) +dir_man1 = join_paths(get_option('prefix'), get_option('mandir'), 'man1') +dir_system_udev = join_paths(get_option('prefix'), 'lib', 'udev') +dir_src_quirks = join_paths(meson.current_source_dir(), 'quirks') +dir_src_test = join_paths(meson.current_source_dir(), 'test') +dir_src = join_paths(meson.current_source_dir(), 'src') + +dir_udev = get_option('udev-dir') +if dir_udev == '' + dir_udev = dir_system_udev +endif +dir_udev_callouts = dir_udev +dir_udev_rules = join_paths(dir_udev, 'rules.d') +dir_udev_hwdb = join_paths(dir_udev, 'hwdb.d') + + +# We use libtool-version numbers because it's easier to understand. +# Before making a release, the libinput_so_* +# numbers should be modified. The components are of the form C:R:A. +# a) If binary compatibility has been broken (eg removed or changed interfaces) +# change to C+1:0:0. +# b) If interfaces have been changed or added, but binary compatibility has +# been preserved, change to C+1:0:A+1 +# c) If the interface is the same as the previous version, change to C:R+1:A +libinput_lt_c=23 +libinput_lt_r=0 +libinput_lt_a=13 + +# convert to soname +libinput_so_version = '@0@.@1@.@2@'.format((libinput_lt_c - libinput_lt_a), + libinput_lt_a, libinput_lt_r) + +# Compiler setup +cc = meson.get_compiler('c') +cppflags = ['-Wno-unused-parameter', '-fvisibility=hidden'] +cflags = cppflags + ['-Wmissing-prototypes', '-Wstrict-prototypes'] +add_project_arguments(cflags, language : 'c') +add_project_arguments(cppflags, language : 'cpp') + +# config.h +config_h = configuration_data() + +doc_url_base = 'https://wayland.freedesktop.org/libinput/doc' +if libinput_version[2].to_int() >= 90 + doc_url = '@0@/latest/'.format(doc_url_base) +else + doc_url = '@0@/@1@/'.format(doc_url_base, meson.project_version()) +endif +config_h.set_quoted('HTTP_DOC_LINK', doc_url) + +config_h.set('_GNU_SOURCE', '1') +if get_option('buildtype') == 'debug' or get_option('buildtype') == 'debugoptimized' + config_h.set_quoted('MESON_BUILD_ROOT', meson.current_build_dir()) +else + config_h.set_quoted('MESON_BUILD_ROOT', '') +endif + +prefix = '''#define _GNU_SOURCE 1 +#include +''' +if cc.get_define('static_assert', prefix : prefix) == '' + config_h.set('static_assert(...)', '/* */') +endif + +# Coverity breaks because it doesn't define _Float128 correctly, you'll end +# up with a bunch of messages in the form: +# "/usr/include/stdlib.h", line 133: error #20: identifier "_Float128" is +# undefined +# extern _Float128 strtof128 (const char *__restrict __nptr, +# ^ +# We don't use float128 ourselves, it gets pulled in from math.h or +# something, so let's just define it as uint128 and move on. +# Unfortunately we can't detect the coverity build at meson configure +# time, we only know it fails at runtime. So make this an option instead, to +# be removed when coverity fixes this again. +if get_option('coverity') + config_h.set('_Float128', '__uint128_t') + config_h.set('_Float32', 'int') + config_h.set('_Float32x', 'int') + config_h.set('_Float64', 'long') + config_h.set('_Float64x', 'long') +endif + +if cc.has_header_symbol('dirent.h', 'versionsort', prefix : prefix) + config_h.set('HAVE_VERSIONSORT', '1') +endif + +if not cc.has_header_symbol('errno.h', 'program_invocation_short_name', prefix : prefix) + if cc.has_header_symbol('stdlib.h', 'getprogname') + config_h.set('program_invocation_short_name', 'getprogname()') + endif +endif + +if cc.has_header('xlocale.h') + config_h.set('HAVE_XLOCALE_H', '1') +endif + +code = ''' +#include +void main(void) { newlocale(LC_NUMERIC_MASK, "C", (locale_t)0); } +''' +if cc.links(code, name : 'locale.h') + config_h.set('HAVE_LOCALE_H', '1') +endif + +if not cc.has_header_symbol('sys/ptrace.h', 'PTRACE_ATTACH', prefix : prefix) + config_h.set('PTRACE_ATTACH', 'PT_ATTACH') + config_h.set('PTRACE_CONT', 'PT_CONTINUE') + config_h.set('PTRACE_DETACH', 'PT_DETACH') +endif + +# Dependencies +pkgconfig = import('pkgconfig') +dep_udev = dependency('libudev') +dep_mtdev = dependency('mtdev', version : '>= 1.1.0') +dep_libevdev = dependency('libevdev') +dep_lm = cc.find_library('m', required : false) +dep_rt = cc.find_library('rt', required : false) + +# Include directories +includes_include = include_directories('include') +includes_src = include_directories('src') + +############ libwacom configuration ############ + +have_libwacom = get_option('libwacom') +config_h.set10('HAVE_LIBWACOM', have_libwacom) +if have_libwacom + dep_libwacom = dependency('libwacom', version : '>= 0.20') + + result = cc.has_function('libwacom_get_paired_device', + dependencies: dep_libwacom) + config_h.set10('HAVE_LIBWACOM_GET_PAIRED_DEVICE', result) + + result = cc.has_function('libwacom_get_button_evdev_code', + dependencies: dep_libwacom) + config_h.set10('HAVE_LIBWACOM_GET_BUTTON_EVDEV_CODE', result) +else + dep_libwacom = declare_dependency() +endif + +############ udev bits ############ + +executable('libinput-device-group', + 'udev/libinput-device-group.c', + dependencies : [dep_udev, dep_libwacom], + include_directories : [includes_src, includes_include], + install : true, + install_dir : dir_udev_callouts) +executable('libinput-fuzz-extract', + 'udev/libinput-fuzz-extract.c', + 'src/util-strings.c', + 'src/util-prop-parsers.c', + dependencies : [dep_udev, dep_libevdev, dep_lm], + include_directories : [includes_src, includes_include], + install : true, + install_dir : dir_udev_callouts) +executable('libinput-fuzz-to-zero', + 'udev/libinput-fuzz-to-zero.c', + dependencies : [dep_udev, dep_libevdev], + include_directories : [includes_src, includes_include], + install : true, + install_dir : dir_udev_callouts) + +udev_rules_config = configuration_data() +udev_rules_config.set('UDEV_TEST_PATH', '') +configure_file(input : 'udev/80-libinput-device-groups.rules.in', + output : '80-libinput-device-groups.rules', + install_dir : dir_udev_rules, + configuration : udev_rules_config) +configure_file(input : 'udev/90-libinput-fuzz-override.rules.in', + output : '90-libinput-fuzz-override.rules', + install_dir : dir_udev_rules, + configuration : udev_rules_config) + +litest_udev_rules_config = configuration_data() +litest_udev_rules_config.set('UDEV_TEST_PATH', meson.current_build_dir() + '/') +litest_groups_rules_file = configure_file(input : 'udev/80-libinput-device-groups.rules.in', + output : '80-libinput-device-groups-litest.rules', + configuration : litest_udev_rules_config) +litest_fuzz_override_file = configure_file(input : 'udev/90-libinput-fuzz-override.rules.in', + output : '90-libinput-fuzz-override-litest.rules', + configuration : litest_udev_rules_config) + +############ Check for leftover udev rules ######## + +# This test should be defined first so we don't waste time testing anything +# else if we're about to fail anyway. ninja test will execute tests in the +# order of them defined in meson.build + +if get_option('tests') + test('leftover-rules', + find_program('test/check-leftover-udev-rules.sh'), + is_parallel : false, + suite : ['all']) +endif + +############ libepoll-shim (BSD) ############ + +if cc.has_header_symbol('sys/epoll.h', 'epoll_create1', prefix : prefix) + # epoll is built-in (Linux, illumos) + dep_libepoll = declare_dependency() +else + # epoll is implemented in userspace by libepoll-shim (FreeBSD) + dir_libepoll = get_option('epoll-dir') + if dir_libepoll == '' + dir_libepoll = get_option('prefix') + endif + includes_epoll = include_directories(join_paths(dir_libepoll, 'include/libepoll-shim')) + dep_libepoll = cc.find_library('epoll-shim', dirs : join_paths(dir_libepoll, 'lib')) + code = ''' + #include + int main(void) { epoll_create1(0); } + ''' + if not cc.links(code, + name : 'libepoll-shim check', + dependencies : [dep_libepoll, dep_rt], + include_directories : includes_epoll) # note: wants an include_directories object + error('No built-in epoll or libepoll-shim found.') + endif + dep_libepoll = declare_dependency( + include_directories : includes_epoll, + dependencies : [dep_libepoll, dep_rt]) +endif + +############ libinput-util.a ############ + +# Basic compilation test to make sure the headers include and define all the +# necessary bits. +util_headers = [ + 'util-bits.h', + 'util-input-event.h', + 'util-list.h', + 'util-macros.h', + 'util-matrix.h', + 'util-prop-parsers.h', + 'util-ratelimit.h', + 'util-strings.h', + 'util-time.h', +] +foreach h: util_headers + c = configuration_data() + c.set_quoted('FILE', h) + testfile = configure_file(input : 'test/test-util-includes.c', + output : 'test-util-includes-@0@.c'.format(h), + configuration : c) + executable('test-build-@0@'.format(h), + testfile, join_paths(dir_src, h), + include_directories : [includes_src, includes_include], + install : false) +endforeach + +src_libinput_util = [ + 'src/util-bits.h', + 'src/util-list.c', + 'src/util-list.h', + 'src/util-macros.h', + 'src/util-matrix.h', + 'src/util-ratelimit.c', + 'src/util-ratelimit.h', + 'src/util-strings.h', + 'src/util-strings.c', + 'src/util-time.h', + 'src/util-prop-parsers.h', + 'src/util-prop-parsers.c', + 'src/libinput-util.h', +] +libinput_util = static_library('libinput-util', + src_libinput_util, + dependencies : [dep_udev, dep_libevdev, dep_libwacom], + include_directories : includes_include) +dep_libinput_util = declare_dependency(link_with : libinput_util) + +############ libfilter.a ############ +src_libfilter = [ + 'src/filter.c', + 'src/filter-flat.c', + 'src/filter-low-dpi.c', + 'src/filter-mouse.c', + 'src/filter-touchpad.c', + 'src/filter-touchpad-flat.c', + 'src/filter-touchpad-x230.c', + 'src/filter-tablet.c', + 'src/filter-trackpoint.c', + 'src/filter.h', + 'src/filter-private.h' +] +libfilter = static_library('filter', src_libfilter, + dependencies : [dep_udev, dep_libwacom], + include_directories : includes_include) +dep_libfilter = declare_dependency(link_with : libfilter) + +############ libquirks.a ############# +libinput_data_path = dir_data +libinput_data_override_path = join_paths(dir_sysconf, 'local-overrides.quirks') +config_h.set_quoted('LIBINPUT_QUIRKS_DIR', dir_data) +config_h.set_quoted('LIBINPUT_QUIRKS_OVERRIDE_FILE', libinput_data_override_path) + +config_h.set_quoted('LIBINPUT_QUIRKS_SRCDIR', dir_src_quirks) +install_subdir('quirks', + exclude_files: ['README.md'], + install_dir : dir_data, + strip_directory : true) + +src_libquirks = [ + 'src/quirks.c', + 'src/quirks.h', + 'src/builddir.h', +] + +deps_libquirks = [dep_udev, dep_libwacom, dep_libinput_util] +libquirks = static_library('quirks', src_libquirks, + dependencies : deps_libquirks, + include_directories : includes_include) +dep_libquirks = declare_dependency(link_with : libquirks) + +############ libinput.so ############ +install_headers('src/libinput.h') +src_libinput = src_libfilter + [ + 'src/libinput.c', + 'src/libinput.h', + 'src/libinput-private.h', + 'src/evdev.c', + 'src/evdev.h', + 'src/evdev-debounce.c', + 'src/evdev-fallback.c', + 'src/evdev-fallback.h', + 'src/evdev-totem.c', + 'src/evdev-middle-button.c', + 'src/evdev-mt-touchpad.c', + 'src/evdev-mt-touchpad.h', + 'src/evdev-mt-touchpad-tap.c', + 'src/evdev-mt-touchpad-thumb.c', + 'src/evdev-mt-touchpad-buttons.c', + 'src/evdev-mt-touchpad-edge-scroll.c', + 'src/evdev-mt-touchpad-gestures.c', + 'src/evdev-tablet.c', + 'src/evdev-tablet.h', + 'src/evdev-tablet-pad.c', + 'src/evdev-tablet-pad.h', + 'src/evdev-tablet-pad-leds.c', + 'src/path-seat.c', + 'src/udev-seat.c', + 'src/udev-seat.h', + 'src/timer.c', + 'src/timer.h', + 'include/linux/input.h' +] + +deps_libinput = [ + dep_mtdev, + dep_udev, + dep_libevdev, + dep_libepoll, + dep_lm, + dep_rt, + dep_libwacom, + dep_libinput_util, + dep_libquirks +] + +libinput_version_h_config = configuration_data() +libinput_version_h_config.set('LIBINPUT_VERSION_MAJOR', libinput_version[0]) +libinput_version_h_config.set('LIBINPUT_VERSION_MINOR', libinput_version[1]) +libinput_version_h_config.set('LIBINPUT_VERSION_MICRO', libinput_version[2]) +libinput_version_h_config.set('LIBINPUT_VERSION', meson.project_version()) + +libinput_version_h = configure_file( + input : 'src/libinput-version.h.in', + output : 'libinput-version.h', + configuration : libinput_version_h_config, +) + +mapfile = join_paths(dir_src, 'libinput.sym') +version_flag = '-Wl,--version-script,@0@'.format(mapfile) +lib_libinput = shared_library('input', + src_libinput, + include_directories : [include_directories('.'), includes_include], + dependencies : deps_libinput, + version : libinput_so_version, + link_args : version_flag, + link_depends : mapfile, + install : true + ) + +dep_libinput = declare_dependency( + link_with : lib_libinput, + dependencies : deps_libinput) + +pkgconfig.generate( + filebase : 'libinput', + name : 'Libinput', + description : 'Input device library', + version : meson.project_version(), + libraries : lib_libinput +) + +git_version_h = vcs_tag(command : ['git', 'describe'], + fallback : 'unknown', + input : 'src/libinput-git-version.h.in', + output :'libinput-git-version.h') + +if meson.version().version_compare('<0.43.0') + # Restore the SELinux context for the libinput.so.a.b.c on install + # meson bug https://github.com/mesonbuild/meson/issues/1967 + meson.add_install_script('src/libinput-restore-selinux-context.sh', + dir_lib, lib_libinput.full_path()) +endif + +lib_libinput_static = static_library('input', + src_libinput, + include_directories : [include_directories('.'), includes_include], + dependencies : deps_libinput, + version : libinput_so_version, + link_args : version_flag, + link_depends : mapfile, + install : true + ) + +############ documentation ############ + +if get_option('documentation') + subdir('doc/api') + subdir('doc/user') +endif + +############ shell completion ######### + +subdir('completion/zsh') + +############ tools ############ +libinput_tool_path = dir_libexec +config_h.set_quoted('LIBINPUT_TOOL_PATH', libinput_tool_path) +tools_shared_sources = [ 'tools/shared.c', + 'tools/shared.h', + 'src/builddir.h' ] +deps_tools_shared = [ dep_libinput, dep_libevdev ] +lib_tools_shared = static_library('tools_shared', + tools_shared_sources, + include_directories : [includes_src, includes_include], + dependencies : deps_tools_shared) +dep_tools_shared = declare_dependency(link_with : lib_tools_shared, + dependencies : deps_tools_shared) + +man_config = configuration_data() +man_config.set('LIBINPUT_VERSION', meson.project_version()) +man_config.set('LIBINPUT_DATA_DIR', dir_data) + +deps_tools = [ dep_tools_shared, dep_libinput ] +libinput_debug_events_sources = [ + 'tools/libinput-debug-events.c', + libinput_version_h, +] +executable('libinput-debug-events', + libinput_debug_events_sources, + dependencies : deps_tools, + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true + ) +configure_file(input : 'tools/libinput-debug-events.man', + output : 'libinput-debug-events.1', + configuration : man_config, + install_dir : dir_man1, + ) + +libinput_debug_tablet_sources = [ 'tools/libinput-debug-tablet.c' ] +executable('libinput-debug-tablet', + libinput_debug_tablet_sources, + dependencies : deps_tools, + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true) + +configure_file(input : 'tools/libinput-debug-tablet.man', + output : 'libinput-debug-tablet.1', + configuration : man_config, + install_dir : dir_man1, + ) + +libinput_quirks_sources = [ 'tools/libinput-quirks.c' ] +libinput_quirks = executable('libinput-quirks', + libinput_quirks_sources, + dependencies : [dep_libquirks, dep_tools_shared, dep_libinput], + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true + ) +test('validate-quirks', + libinput_quirks, + args: ['validate', '--data-dir=@0@'.format(dir_src_quirks)], + suite : ['all'] + ) + +configure_file(input : 'tools/libinput-quirks.man', + output : 'libinput-quirks.1', + configuration : man_config, + install_dir : dir_man1, + ) +# Same man page for the subtools to stay consistent with the other tools +configure_file(input : 'tools/libinput-quirks.man', + output : 'libinput-quirks-list.1', + configuration : man_config, + install_dir : dir_man1, + ) +configure_file(input : 'tools/libinput-quirks.man', + output : 'libinput-quirks-validate.1', + configuration : man_config, + install_dir : dir_man1, + ) + +libinput_list_devices_sources = [ 'tools/libinput-list-devices.c' ] +libinput_list_devices = executable('libinput-list-devices', + libinput_list_devices_sources, + dependencies : deps_tools, + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true, + ) +test('list-devices', + libinput_list_devices, + suite : ['all', 'root', 'hardware']) + +configure_file(input : 'tools/libinput-list-devices.man', + output : 'libinput-list-devices.1', + configuration : man_config, + install_dir : dir_man1, + ) + +libinput_measure_sources = [ 'tools/libinput-measure.c' ] +executable('libinput-measure', + libinput_measure_sources, + dependencies : deps_tools, + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true, + ) +configure_file(input : 'tools/libinput-measure.man', + output : 'libinput-measure.1', + configuration : man_config, + install_dir : dir_man1, + ) + +libinput_analyze_sources = [ 'tools/libinput-analyze.c' ] +executable('libinput-analyze', + libinput_analyze_sources, + dependencies : deps_tools, + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true, + ) +configure_file(input : 'tools/libinput-analyze.man', + output : 'libinput-analyze.1', + configuration : man_config, + install_dir : dir_man1, + ) + +src_python_tools = files( + 'tools/libinput-analyze-per-slot-delta.py', + 'tools/libinput-measure-fuzz.py', + 'tools/libinput-measure-touchpad-size.py', + 'tools/libinput-measure-touchpad-tap.py', + 'tools/libinput-measure-touchpad-pressure.py', + 'tools/libinput-measure-touch-size.py', +) + +config_noop = configuration_data() +# Set a dummy replacement to silence meson warnings: +# meson.build:487: WARNING: Got an empty configuration_data() object and +# found no substitutions in the input file 'foo'. If you +# want to copy a file to the build dir, use the 'copy:' +# keyword argument added in 0.47.0 +config_noop.set('dummy', 'dummy') +foreach t : src_python_tools + configure_file(input: t, + output: '@BASENAME@', + configuration : config_noop, + install_dir : libinput_tool_path + ) +endforeach + +src_man = files( + 'tools/libinput-measure-fuzz.man', + 'tools/libinput-measure-touchpad-size.man', + 'tools/libinput-measure-touchpad-tap.man', + 'tools/libinput-measure-touchpad-pressure.man', + 'tools/libinput-measure-touch-size.man', + 'tools/libinput-analyze-per-slot-delta.man', +) + +foreach m : src_man + configure_file(input : m, + output : '@BASENAME@.1', + configuration : man_config, + install_dir : dir_man1) +endforeach + +libinput_record_sources = [ 'tools/libinput-record.c', git_version_h ] +executable('libinput-record', + libinput_record_sources, + dependencies : deps_tools + [dep_udev], + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true, + ) +configure_file(input : 'tools/libinput-record.man', + output : 'libinput-record.1', + configuration : man_config, + install_dir : dir_man1, + ) + +install_data('tools/libinput-replay', + install_dir : libinput_tool_path) +configure_file(input : 'tools/libinput-replay.man', + output : 'libinput-replay.1', + configuration : man_config, + install_dir : dir_man1, + ) + +if get_option('debug-gui') + dep_gtk = dependency('gtk+-3.0', version : '>= 3.20') + dep_cairo = dependency('cairo') + dep_glib = dependency('glib-2.0') + + debug_gui_sources = [ 'tools/libinput-debug-gui.c' ] + deps_debug_gui = [ + dep_gtk, + dep_cairo, + dep_glib, + ] + deps_tools + executable('libinput-debug-gui', + debug_gui_sources, + dependencies : deps_debug_gui, + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true + ) + configure_file(input : 'tools/libinput-debug-gui.man', + output : 'libinput-debug-gui.1', + configuration : man_config, + install_dir : dir_man1, + ) +endif + +libinput_sources = [ 'tools/libinput-tool.c' ] + +libinput_tool = executable('libinput', + libinput_sources, + dependencies : deps_tools, + include_directories : [includes_src, includes_include], + install : true + ) +configure_file(input : 'tools/libinput.man', + output : 'libinput.1', + configuration : man_config, + install_dir : dir_man1, + ) + +ptraccel_debug_sources = [ 'tools/ptraccel-debug.c' ] +executable('ptraccel-debug', + ptraccel_debug_sources, + dependencies : [ dep_libfilter, dep_libinput ], + include_directories : [includes_src, includes_include], + install : false + ) + +# Don't run the test during a release build because we rely on the magic +# subtool lookup +if get_option('buildtype') == 'debug' or get_option('buildtype') == 'debugoptimized' + config_tool_option_test = configuration_data() + config_tool_option_test.set('DISABLE_WARNING', 'yes') + config_tool_option_test.set('MESON_ENABLED_DEBUG_GUI', get_option('debug-gui')) + config_tool_option_test.set('MESON_BUILD_ROOT', meson.current_build_dir()) + config_tool_option_test.set('TOOL_PATH', libinput_tool.full_path()) + tool_option_test = configure_file(input: 'tools/test_tool_option_parsing.py', + output: '@PLAINNAME@', + configuration : config_tool_option_test) + test('tool-option-parsing', + tool_option_test, + args : [tool_option_test, '-n', 'auto'], + suite : ['all', 'root'], + timeout : 240) +endif + +# the libinput tools check whether we execute from the builddir, this is +# the test to verify that lookup. We test twice, once as normal test +# run from the builddir, once after copying to /tmp +test_builddir_lookup = executable('test-builddir-lookup', + 'test/test-builddir-lookup.c', + dependencies : [ dep_tools_shared], + include_directories : [includes_src, includes_include], + install : false) +test('tools-builddir-lookup', + test_builddir_lookup, + args : ['--builddir-is-set'], + suite : ['all']) +test('tools-builddir-lookup-installed', + find_program('test/helper-copy-and-exec-from-tmp.sh'), + args : [test_builddir_lookup.full_path(), '--builddir-is-null'], + env : ['LD_LIBRARY_PATH=@0@'.format(meson.current_build_dir())], + suite : ['all'], + workdir : '/tmp') + +############ tests ############ + +test('symbols-leak-test', + find_program('test/symbols-leak-test'), + args : [ join_paths(dir_src, 'libinput.sym'), dir_src], + suite : ['all']) + +# build-test only +executable('test-build-pedantic', + 'test/build-pedantic.c', + dependencies : [dep_udev], + include_directories : [includes_src, includes_include], + c_args : ['-std=c99', '-pedantic', '-Werror'], + install : false) +# build-test only +executable('test-build-std-gnuc90', + 'test/build-pedantic.c', + dependencies : [dep_udev], + include_directories : [includes_src, includes_include], + c_args : ['-std=gnu89', '-Werror'], + install : false) +# test for linking with the minimal linker flags +executable('test-build-linker', + 'test/build-pedantic.c', + include_directories : [includes_src, includes_include], + dependencies : [ dep_libinput, dep_libinput_util ], + install : false) +# test including from C++ (in case CPP compiler is available) +if add_languages('cpp', required: false) + executable('test-build-cxx', + 'test/build-cxx.cc', + dependencies : [dep_udev], + include_directories : [includes_src, includes_include], + install : false) +endif + +# This is the test suite runner, we allow disabling that one because of +# dependencies +if get_option('tests') + dep_check = dependency('check', version : '>= 0.9.10') + + gstack = find_program('gstack', required : false) + config_h.set10('HAVE_GSTACK', gstack.found()) + + # for inhibit support during test run + dep_libsystemd = dependency('libsystemd', version : '>= 221', required : false) + config_h.set10('HAVE_LIBSYSTEMD', dep_libsystemd.found()) + + litest_sources = [ + 'test/litest.h', + 'test/litest-int.h', + 'test/litest-device-absinfo-override.c', + 'test/litest-device-acer-hawaii-keyboard.c', + 'test/litest-device-acer-hawaii-touchpad.c', + 'test/litest-device-aiptek-tablet.c', + 'test/litest-device-alps-3fg.c', + 'test/litest-device-alps-semi-mt.c', + 'test/litest-device-alps-dualpoint.c', + 'test/litest-device-anker-mouse-kbd.c', + 'test/litest-device-apple-appletouch.c', + 'test/litest-device-apple-internal-keyboard.c', + 'test/litest-device-apple-magicmouse.c', + 'test/litest-device-asus-rog-gladius.c', + 'test/litest-device-atmel-hover.c', + 'test/litest-device-bcm5974.c', + 'test/litest-device-calibrated-touchscreen.c', + 'test/litest-device-cyborg-rat-5.c', + 'test/litest-device-dell-canvas-totem.c', + 'test/litest-device-dell-canvas-totem-touch.c', + 'test/litest-device-elantech-touchpad.c', + 'test/litest-device-elan-tablet.c', + 'test/litest-device-generic-singletouch.c', + 'test/litest-device-gpio-keys.c', + 'test/litest-device-huion-pentablet.c', + 'test/litest-device-hp-wmi-hotkeys.c', + 'test/litest-device-ignored-mouse.c', + 'test/litest-device-keyboard.c', + 'test/litest-device-keyboard-all-codes.c', + 'test/litest-device-keyboard-razer-blackwidow.c', + 'test/litest-device-keyboard-razer-blade-stealth.c', + 'test/litest-device-keyboard-razer-blade-stealth-videoswitch.c', + 'test/litest-device-lid-switch.c', + 'test/litest-device-lid-switch-surface3.c', + 'test/litest-device-logitech-media-keyboard-elite.c', + 'test/litest-device-logitech-trackball.c', + 'test/litest-device-nexus4-touch-screen.c', + 'test/litest-device-magic-trackpad.c', + 'test/litest-device-mouse.c', + 'test/litest-device-mouse-wheel-tilt.c', + 'test/litest-device-mouse-roccat.c', + 'test/litest-device-mouse-low-dpi.c', + 'test/litest-device-mouse-wheel-click-angle.c', + 'test/litest-device-mouse-wheel-click-count.c', + 'test/litest-device-ms-nano-transceiver-mouse.c', + 'test/litest-device-ms-surface-cover.c', + 'test/litest-device-protocol-a-touch-screen.c', + 'test/litest-device-qemu-usb-tablet.c', + 'test/litest-device-sony-vaio-keys.c', + 'test/litest-device-synaptics-x220.c', + 'test/litest-device-synaptics-hover.c', + 'test/litest-device-synaptics-i2c.c', + 'test/litest-device-synaptics-rmi4.c', + 'test/litest-device-synaptics-st.c', + 'test/litest-device-synaptics-t440.c', + 'test/litest-device-synaptics-x1-carbon-3rd.c', + 'test/litest-device-tablet-mode-switch.c', + 'test/litest-device-thinkpad-extrabuttons.c', + 'test/litest-device-trackpoint.c', + 'test/litest-device-touch-screen.c', + 'test/litest-device-touchscreen-invalid-range.c', + 'test/litest-device-touchscreen-fuzz.c', + 'test/litest-device-touchscreen-mt-tool.c', + 'test/litest-device-uclogic-tablet.c', + 'test/litest-device-wacom-bamboo-2fg-finger.c', + 'test/litest-device-wacom-bamboo-2fg-pad.c', + 'test/litest-device-wacom-bamboo-2fg-pen.c', + 'test/litest-device-wacom-bamboo-16fg-pen.c', + 'test/litest-device-wacom-cintiq-12wx-pen.c', + 'test/litest-device-wacom-cintiq-13hdt-finger.c', + 'test/litest-device-wacom-cintiq-13hdt-pad.c', + 'test/litest-device-wacom-cintiq-13hdt-pen.c', + 'test/litest-device-wacom-cintiq-24hd-pen.c', + 'test/litest-device-wacom-cintiq-24hdt-pad.c', + 'test/litest-device-wacom-cintiq-pro-16-finger.c', + 'test/litest-device-wacom-cintiq-pro-16-pad.c', + 'test/litest-device-wacom-cintiq-pro-16-pen.c', + 'test/litest-device-wacom-ekr.c', + 'test/litest-device-wacom-hid4800-pen.c', + 'test/litest-device-wacom-intuos3-pad.c', + 'test/litest-device-wacom-intuos5-finger.c', + 'test/litest-device-wacom-intuos5-pad.c', + 'test/litest-device-wacom-intuos5-pen.c', + 'test/litest-device-wacom-isdv4-4200-pen.c', + 'test/litest-device-wacom-isdv4-e6-pen.c', + 'test/litest-device-wacom-isdv4-e6-finger.c', + 'test/litest-device-wacom-mobilestudio-pro-pad.c', + 'test/litest-device-waltop-tablet.c', + 'test/litest-device-wheel-only.c', + 'test/litest-device-xen-virtual-pointer.c', + 'test/litest-device-vmware-virtual-usb-mouse.c', + 'test/litest-device-yubikey.c', + 'test/litest.c', + 'include/valgrind/valgrind.h' + ] + + dep_dl = cc.find_library('dl') + deps_litest = [ + dep_libinput, + dep_check, + dep_udev, + dep_libevdev, + dep_dl, + dep_lm, + dep_libsystemd, + dep_libquirks, + ] + + litest_config_h = configuration_data() + litest_config_h.set_quoted('LIBINPUT_DEVICE_GROUPS_RULES_FILE', + join_paths(meson.current_build_dir(), + '80-libinput-device-groups-litest.rules')) + litest_config_h.set_quoted('LIBINPUT_FUZZ_OVERRIDE_UDEV_RULES_FILE', + join_paths(meson.current_build_dir(), + '90-libinput-fuzz-override-litest.rules')) + + def_no_main = '-DLITEST_NO_MAIN' + def_disable_backtrace = '-DLITEST_DISABLE_BACKTRACE_LOGGING' + defs_litest_selftest = [ + def_no_main, + def_disable_backtrace + ] + test_litest_selftest_sources = [ + 'test/litest-selftest.c', + 'test/litest.c', + 'test/litest.h' + ] + test_litest_selftest = executable('test-litest-selftest', + test_litest_selftest_sources, + include_directories : [includes_src, includes_include], + dependencies : deps_litest, + c_args : defs_litest_selftest, + install : false) + test('test-litest-selftest', + test_litest_selftest, + suite : ['all'], + timeout : 100) + + def_LT_VERSION = '-DLIBINPUT_LT_VERSION="@0@:@1@:@2@"'.format(libinput_lt_c, libinput_lt_r, libinput_lt_a) + test_library_version = executable('test-library-version', + ['test/test-library-version.c'], + c_args : [ def_LT_VERSION ], + install : false) + test('test-library-version', + test_library_version, + suite : ['all']) + + test_utils_sources = [ + 'src/libinput-util.h', + 'test/test-utils.c', + ] + test_utils = executable('test-utils', + test_utils_sources, + include_directories : [includes_src, includes_include], + dependencies : deps_litest, + install: false) + test('test-utils', + test_utils, + suite : ['all']) + + libinput_test_runner_sources = litest_sources + [ + 'src/libinput-util.h', + 'test/test-udev.c', + 'test/test-path.c', + 'test/test-pointer.c', + 'test/test-touch.c', + 'test/test-log.c', + 'test/test-tablet.c', + 'test/test-totem.c', + 'test/test-pad.c', + 'test/test-touchpad.c', + 'test/test-touchpad-tap.c', + 'test/test-touchpad-buttons.c', + 'test/test-trackpoint.c', + 'test/test-trackball.c', + 'test/test-misc.c', + 'test/test-keyboard.c', + 'test/test-device.c', + 'test/test-gestures.c', + 'test/test-switch.c', + 'test/test-quirks.c', + ] + libinput_test_runner = executable('libinput-test-suite', + libinput_test_runner_sources, + include_directories : [includes_src, includes_include], + dependencies : deps_litest, + install_dir : libinput_tool_path, + install : get_option('install-tests')) + configure_file(input : 'test/libinput-test-suite.man', + output : 'libinput-test-suite.1', + configuration : man_config, + install_dir : dir_man1, + ) + + # Update this list and the one in litest.c when new group names are + # required + groups = [ + 'config', 'context', 'device', 'events', 'gestures', 'keyboard', 'lid', + 'log', 'misc', 'pad', 'path', 'pointer', 'quirks', 'switch', 'tablet', + 'tablet-mode', 'tap', 'timer', 'totem', 'touch', 'touchpad', 'trackball', + 'trackpoint', 'udev', + ] + foreach group : groups + test('libinput-test-suite-@0@'.format(group), + libinput_test_runner, + suite : ['all', 'valgrind', 'root', 'hardware'], + args : ['--filter-group=@0@:*'.format(group), + '--xml-output=junit-@0@-XXXXXX.xml'.format(group)], + is_parallel : false, + timeout : 1200) + endforeach + + test('libinput-test-deviceless', + libinput_test_runner, + suite : ['all', 'valgrind'], + args: ['--filter-deviceless', + '--xml-output=junit-deviceless-XXXXXX.xml']) + + valgrind = find_program('valgrind', required : false) + if valgrind.found() + valgrind_env = environment() + valgrind_suppressions_file = join_paths(dir_src_test, 'valgrind.suppressions') + add_test_setup('valgrind', + exe_wrapper : [ valgrind, + '--leak-check=full', + '--gen-suppressions=all', + '--error-exitcode=3', + '--suppressions=' + valgrind_suppressions_file ], + env : valgrind_env, + timeout_multiplier : 100) + else + message('valgrind not found, disabling valgrind test suite') + endif + configure_file(output : 'litest-config.h', + configuration : litest_config_h) +endif +############ output files ############ +configure_file(output : 'config.h', configuration : config_h) diff --git a/libinput/default/patch b/libinput/default/patch new file mode 100644 index 0000000..2e4e509 --- /dev/null +++ b/libinput/default/patch @@ -0,0 +1,11 @@ +--- a/meson.build 2020-10-02 18:45:38.360000000 +0000 ++++ b/meson.build 2020-10-02 20:24:25.550000000 +0000 +@@ -393,7 +393,7 @@ + + mapfile = join_paths(dir_src, 'libinput.sym') + version_flag = '-Wl,--version-script,@0@'.format(mapfile) +-lib_libinput = shared_library('input', ++lib_libinput = static_library('input', + src_libinput, + include_directories : [include_directories('.'), includes_include], + dependencies : deps_libinput, diff --git a/libinput/default/patch.bak2 b/libinput/default/patch.bak2 new file mode 100644 index 0000000..e3d2b2e --- /dev/null +++ b/libinput/default/patch.bak2 @@ -0,0 +1,19 @@ +--- a/meson.build 2020-08-13 03:50:03.606642200 +0000 ++++ b/meson.build 2020-10-06 05:12:31.020000000 +0000 +@@ -418,6 +418,16 @@ + dir_lib, lib_libinput.full_path()) + endif + ++lib_libinput_static = static_library('input', ++ src_libinput, ++ include_directories : [include_directories('.'), includes_include], ++ dependencies : deps_libinput, ++ version : libinput_so_version, ++ link_args : version_flag, ++ link_depends : mapfile, ++ install : true ++ ) ++ + ############ documentation ############ + + if get_option('documentation') diff --git a/libjpeg-turbo/default/conf.sh b/libjpeg-turbo/default/conf.sh new file mode 100755 index 0000000..aea7bdc --- /dev/null +++ b/libjpeg-turbo/default/conf.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +cmake \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=/usr/lib \ + -DENABLE_SHARED=False \ + -DENABLE_STATIC=True \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_C_FLAGS="$CFLAGS" \ + -DWITH_JPEG8=1 diff --git a/libjpeg-turbo/default/deps b/libjpeg-turbo/default/deps new file mode 100644 index 0000000..defe75a --- /dev/null +++ b/libjpeg-turbo/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +cmake diff --git a/libksba/default/deps b/libksba/default/deps new file mode 100644 index 0000000..e4a7de2 --- /dev/null +++ b/libksba/default/deps @@ -0,0 +1,14 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +musl-cross-make +make +automake +autoconf +dash +patch +awk +gnu-grep +gnu-sed +libgpg-error diff --git a/libogg/default/conf.sh b/libogg/default/conf.sh new file mode 100755 index 0000000..ea1e394 --- /dev/null +++ b/libogg/default/conf.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +./configure \ + --enable-shared \ + --enable-static \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libogg/default/env.sh b/libogg/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/libogg/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/libpciaccess/default/deps b/libpciaccess/default/deps new file mode 100644 index 0000000..0b9c548 --- /dev/null +++ b/libpciaccess/default/deps @@ -0,0 +1,11 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed diff --git a/libpng/default/conf.sh b/libpng/default/conf.sh new file mode 100755 index 0000000..f909173 --- /dev/null +++ b/libpng/default/conf.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +autoreconf -vif + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libpng/default/deps b/libpng/default/deps new file mode 100644 index 0000000..ce51802 --- /dev/null +++ b/libpng/default/deps @@ -0,0 +1,17 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +automake +autoconf +pkgconf +libtool +zlib +xz diff --git a/libpopt/default/patch b/libpopt/default/patch new file mode 100644 index 0000000..0942bc1 --- /dev/null +++ b/libpopt/default/patch @@ -0,0 +1,1094 @@ + +this has a truly huge patch file. popt has an out of date config.sub script, so +a new version was pulled in and diffed with the out of date version. the diff +was saved as the patch. the patch just updates the config.sub script so it can +recognize architectures that weren't around in 2006. + +*** src/build-aux/config.sub Mon Apr 26 12:16:44 2010 +--- src-mod/build-aux/config.sub Sat May 9 03:57:58 2020 +*************** +*** 1,38 **** + #! /bin/sh + # Configuration validation subroutine script. +! # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +! # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +! # Free Software Foundation, Inc. +! +! timestamp='2009-11-20' +! +! # This file is (in principle) common to ALL GNU software. +! # The presence of a machine in this file suggests that SOME GNU software +! # can handle that machine. It does not imply ALL GNU software can. +! # +! # This file is free software; you can redistribute it and/or modify +! # it under the terms of the GNU General Public License as published by +! # the Free Software Foundation; either version 2 of the License, or + # (at your option) any later version. + # +! # This program is distributed in the hope that it will be useful, +! # but WITHOUT ANY WARRANTY; without even the implied warranty of +! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! # GNU General Public License for more details. + # + # You should have received a copy of the GNU General Public License +! # along with this program; if not, write to the Free Software +! # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +! # 02110-1301, USA. + # + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a + # configuration script generated by Autoconf, you may include it under +! # the same distribution terms that you use for the rest of that program. + + +! # Please send patches to . Submit a context +! # diff and a properly formatted GNU ChangeLog entry. + # + # Configuration subroutine to validate and canonicalize a configuration type. + # Supply the specified configuration type as an argument. +--- 1,31 ---- + #! /bin/sh + # Configuration validation subroutine script. +! # Copyright 1992-2016 Free Software Foundation, Inc. +! +! timestamp='2016-06-20' +! +! # This file is free software; you can redistribute it and/or modify it +! # under the terms of the GNU General Public License as published by +! # the Free Software Foundation; either version 3 of the License, or + # (at your option) any later version. + # +! # This program is distributed in the hope that it will be useful, but +! # WITHOUT ANY WARRANTY; without even the implied warranty of +! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +! # General Public License for more details. + # + # You should have received a copy of the GNU General Public License +! # along with this program; if not, see . + # + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a + # configuration script generated by Autoconf, you may include it under +! # the same distribution terms that you use for the rest of that +! # program. This Exception is an additional permission under section 7 +! # of the GNU General Public License, version 3 ("GPLv3"). + + +! # Please send patches to . + # + # Configuration subroutine to validate and canonicalize a configuration type. + # Supply the specified configuration type as an argument. +*************** +*** 40,46 **** + # Otherwise, we print the canonical config type on stdout and succeed. + + # You can get the latest version of this script from: +! # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + + # This file is supposed to be the same for all GNU packages + # and recognize all the CPU types, system types and aliases +--- 33,39 ---- + # Otherwise, we print the canonical config type on stdout and succeed. + + # You can get the latest version of this script from: +! # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + + # This file is supposed to be the same for all GNU packages + # and recognize all the CPU types, system types and aliases +*************** +*** 60,67 **** + me=`echo "$0" | sed -e 's,.*/,,'` + + usage="\ +! Usage: $0 [OPTION] CPU-MFR-OPSYS +! $0 [OPTION] ALIAS + + Canonicalize a configuration name. + +--- 53,59 ---- + me=`echo "$0" | sed -e 's,.*/,,'` + + usage="\ +! Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + + Canonicalize a configuration name. + +*************** +*** 75,82 **** + version="\ + GNU config.sub ($timestamp) + +! Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +! 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + + This is free software; see the source for copying conditions. There is NO + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." +--- 67,73 ---- + version="\ + GNU config.sub ($timestamp) + +! Copyright 1992-2016 Free Software Foundation, Inc. + + This is free software; see the source for copying conditions. There is NO + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." +*************** +*** 123,135 **** + # Here we must recognize all the valid KERNEL-OS combinations. + maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` + case $maybe_os in +! nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ +! uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] +--- 114,131 ---- + # Here we must recognize all the valid KERNEL-OS combinations. + maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` + case $maybe_os in +! nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ +! linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ +! knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; ++ android-linux) ++ os=-linux-android ++ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ++ ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] +*************** +*** 152,163 **** + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ +! -apple | -axis | -knuth | -cray | -microblaze) + os= + basic_machine=$1 + ;; +! -bluegene*) +! os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= +--- 148,159 ---- + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ +! -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; +! -bluegene*) +! os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= +*************** +*** 173,182 **** + os=-chorusos + basic_machine=$1 + ;; +! -chorusrdb) +! os=-chorusrdb + basic_machine=$1 +! ;; + -hiux*) + os=-hiuxwe2 + ;; +--- 169,178 ---- + os=-chorusos + basic_machine=$1 + ;; +! -chorusrdb) +! os=-chorusrdb + basic_machine=$1 +! ;; + -hiux*) + os=-hiuxwe2 + ;; +*************** +*** 221,226 **** +--- 217,228 ---- + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; ++ -lynx*178) ++ os=-lynxos178 ++ ;; ++ -lynx*5) ++ os=-lynxos5 ++ ;; + -lynx*) + os=-lynxos + ;; +*************** +*** 245,264 **** + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ +! | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ +! | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ +! | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ +! | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ +--- 247,275 ---- + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ ++ | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ +! | arc | arceb \ +! | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ +! | avr | avr32 \ +! | ba \ +! | be32 | be64 \ + | bfin \ +! | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ +! | e2k | epiphany \ +! | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ ++ | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ ++ | k1om \ ++ | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ +! | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ +*************** +*** 272,309 **** + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ +! | nios | nios2 \ + | ns16k | ns32k \ +! | or32 \ + | pdp10 | pdp11 | pj | pjl \ +! | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ +! | rx \ + | score \ +! | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ +! | spu | strongarm \ +! | tahoe | thumb | tic4x | tic80 | tron \ + | ubicom32 \ +! | v850 | v850e \ + | we32k \ +! | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; +! m6811 | m68hc11 | m6812 | m68hc12 | picochip) +! # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; +--- 283,337 ---- + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ ++ | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ ++ | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ ++ | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ +! | nds32 | nds32le | nds32be \ +! | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ +! | open8 | or1k | or1knd | or32 \ + | pdp10 | pdp11 | pj | pjl \ +! | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ +! | riscv32 | riscv64 \ +! | rl78 | rx \ + | score \ +! | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ +! | spu \ +! | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ +! | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ +! | visium \ + | we32k \ +! | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; +! c54x) +! basic_machine=tic54x-unknown +! ;; +! c55x) +! basic_machine=tic55x-unknown +! ;; +! c6x) +! basic_machine=tic6x-unknown +! ;; +! leon|leon[3-9]) +! basic_machine=sparc-$basic_machine +! ;; +! m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; +*************** +*** 313,318 **** +--- 341,361 ---- + basic_machine=mt-unknown + ;; + ++ strongarm | thumb | xscale) ++ basic_machine=arm-unknown ++ ;; ++ xgate) ++ basic_machine=$basic_machine-unknown ++ os=-none ++ ;; ++ xscaleeb) ++ basic_machine=armeb-unknown ++ ;; ++ ++ xscaleel) ++ basic_machine=armel-unknown ++ ;; ++ + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. +*************** +*** 327,351 **** + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ +! | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ +! | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ +! | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ +! | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ +! | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ +--- 370,401 ---- + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ ++ | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ +! | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ ++ | ba-* \ ++ | be32-* | be64-* \ + | bfin-* | bs2000-* \ +! | c[123]* | c30-* | [cjt]90-* | c4x-* \ +! | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ +! | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ ++ | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ ++ | k1om-* \ ++ | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ +! | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ +! | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ +*************** +*** 359,391 **** + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ +! | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ +! | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ +! | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ +! | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ +! | tahoe-* | thumb-* \ +! | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ + | tron-* \ + | ubicom32-* \ +! | v850-* | v850e-* | vax-* \ + | we32k-* \ +! | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) +--- 409,451 ---- + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ ++ | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ ++ | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ ++ | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ +! | nds32-* | nds32le-* | nds32be-* \ +! | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ ++ | open8-* \ ++ | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ +! | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ +! | riscv32-* | riscv64-* \ +! | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ +! | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ +! | tahoe-* \ +! | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ +! | tile*-* \ + | tron-* \ + | ubicom32-* \ +! | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ +! | vax-* \ +! | visium-* \ + | we32k-* \ +! | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) +*************** +*** 410,416 **** + basic_machine=a29k-amd + os=-udi + ;; +! abacus) + basic_machine=abacus-unknown + ;; + adobe68k) +--- 470,476 ---- + basic_machine=a29k-amd + os=-udi + ;; +! abacus) + basic_machine=abacus-unknown + ;; + adobe68k) +*************** +*** 460,465 **** +--- 520,528 ---- + basic_machine=i386-pc + os=-aros + ;; ++ asmjs) ++ basic_machine=asmjs-unknown ++ ;; + aux) + basic_machine=m68k-apple + os=-aux +*************** +*** 480,490 **** + basic_machine=powerpc-ibm + os=-cnk + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; +! cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; +--- 543,562 ---- + basic_machine=powerpc-ibm + os=-cnk + ;; ++ c54x-*) ++ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; ++ c55x-*) ++ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; ++ c6x-*) ++ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; +! cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; +*************** +*** 516,522 **** + basic_machine=craynv-cray + os=-unicosmp + ;; +! cr16) + basic_machine=cr16-unknown + os=-elf + ;; +--- 588,594 ---- + basic_machine=craynv-cray + os=-unicosmp + ;; +! cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; +*************** +*** 571,576 **** +--- 643,656 ---- + basic_machine=m68k-bull + os=-sysv3 + ;; ++ e500v[12]) ++ basic_machine=powerpc-unknown ++ os=$os"spe" ++ ;; ++ e500v[12]-*) ++ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ++ os=$os"spe" ++ ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon +*************** +*** 674,680 **** + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +- # I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 +--- 754,759 ---- +*************** +*** 713,718 **** +--- 792,800 ---- + basic_machine=m68k-isi + os=-sysv + ;; ++ leon-*|leon[3-9]-*) ++ basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ++ ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux +*************** +*** 732,742 **** + basic_machine=ns32k-utek + os=-sysv + ;; +! microblaze) + basic_machine=microblaze-xilinx + ;; + mingw32) +! basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) +--- 814,828 ---- + basic_machine=ns32k-utek + os=-sysv + ;; +! microblaze*) + basic_machine=microblaze-xilinx + ;; ++ mingw64) ++ basic_machine=x86_64-pc ++ os=-mingw64 ++ ;; + mingw32) +! basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) +*************** +*** 764,769 **** +--- 850,859 ---- + basic_machine=powerpc-unknown + os=-morphos + ;; ++ moxiebox) ++ basic_machine=moxie-unknown ++ os=-moxiebox ++ ;; + msdos) + basic_machine=i386-pc + os=-msdos +*************** +*** 771,780 **** +--- 861,878 ---- + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; ++ msys) ++ basic_machine=i686-pc ++ os=-msys ++ ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; ++ nacl) ++ basic_machine=le32-unknown ++ os=-nacl ++ ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 +*************** +*** 839,844 **** +--- 937,948 ---- + np1) + basic_machine=np1-gould + ;; ++ neo-tandem) ++ basic_machine=neo-tandem ++ ;; ++ nse-tandem) ++ basic_machine=nse-tandem ++ ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; +*************** +*** 921,929 **** + ;; + power) basic_machine=power-ibm + ;; +! ppc) basic_machine=powerpc-unknown + ;; +! ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown +--- 1025,1034 ---- + ;; + power) basic_machine=power-ibm + ;; +! ppc | ppcbe) basic_machine=powerpc-unknown + ;; +! ppc-* | ppcbe-*) +! basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown +*************** +*** 948,954 **** + basic_machine=i586-unknown + os=-pw32 + ;; +! rdos) + basic_machine=i386-pc + os=-rdos + ;; +--- 1053,1063 ---- + basic_machine=i586-unknown + os=-pw32 + ;; +! rdos | rdos64) +! basic_machine=x86_64-pc +! os=-rdos +! ;; +! rdos32) + basic_machine=i386-pc + os=-rdos + ;; +*************** +*** 1017,1022 **** +--- 1126,1134 ---- + basic_machine=i860-stratus + os=-sysv4 + ;; ++ strongarm-* | thumb-*) ++ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; + sun2) + basic_machine=m68000-sun + ;; +*************** +*** 1073,1092 **** + basic_machine=t90-cray + os=-unicos + ;; +- tic54x | c54x*) +- basic_machine=tic54x-unknown +- os=-coff +- ;; +- tic55x | c55x*) +- basic_machine=tic55x-unknown +- os=-coff +- ;; +- tic6x | c6x*) +- basic_machine=tic6x-unknown +- os=-coff +- ;; + tile*) +! basic_machine=tile-unknown + os=-linux-gnu + ;; + tx39) +--- 1185,1192 ---- + basic_machine=t90-cray + os=-unicos + ;; + tile*) +! basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) +*************** +*** 1156,1161 **** +--- 1256,1264 ---- + xps | xps100) + basic_machine=xps100-honeywell + ;; ++ xscale-* | xscalee[bl]-*) ++ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ++ ;; + ymp) + basic_machine=ymp-cray + os=-unicos +*************** +*** 1253,1263 **** + if [ x"$os" != x"" ] + then + case $os in +! # First match some system type aliases +! # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. +! -auroraux) +! os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` +--- 1356,1366 ---- + if [ x"$os" != x"" ] + then + case $os in +! # First match some system type aliases +! # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. +! -auroraux) +! os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` +*************** +*** 1281,1308 **** + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ +! | -sym* | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ +! | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ +! | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ +! | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ +! | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ +! | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ +! | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) +--- 1384,1413 ---- + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ +! | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ +! | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ +! | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ +! | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ +! | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ +! | -linux-newlib* | -linux-musl* | -linux-uclibc* \ +! | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ +! | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ +! | -onefs* | -tirtos* | -phoenix*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) +*************** +*** 1341,1347 **** + -opened*) + os=-openedition + ;; +! -os400*) + os=-os400 + ;; + -wince*) +--- 1446,1452 ---- + -opened*) + os=-openedition + ;; +! -os400*) + os=-os400 + ;; + -wince*) +*************** +*** 1390,1396 **** + -sinix*) + os=-sysv4 + ;; +! -tpf*) + os=-tpf + ;; + -triton*) +--- 1495,1501 ---- + -sinix*) + os=-sysv4 + ;; +! -tpf*) + os=-tpf + ;; + -triton*) +*************** +*** 1426,1440 **** + -aros*) + os=-aros + ;; +- -kaos*) +- os=-kaos +- ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -none) + ;; + *) +--- 1531,1546 ---- + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; ++ -nacl*) ++ ;; ++ -ios) ++ ;; + -none) + ;; + *) +*************** +*** 1457,1466 **** + # system, and we'll never get to this point. + + case $basic_machine in +! score-*) + os=-elf + ;; +! spu-*) + os=-elf + ;; + *-acorn) +--- 1563,1572 ---- + # system, and we'll never get to this point. + + case $basic_machine in +! score-*) + os=-elf + ;; +! spu-*) + os=-elf + ;; + *-acorn) +*************** +*** 1472,1479 **** + arm*-semi) + os=-aout + ;; +! c4x-* | tic4x-*) +! os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) +--- 1578,1600 ---- + arm*-semi) + os=-aout + ;; +! c4x-* | tic4x-*) +! os=-coff +! ;; +! c8051-*) +! os=-elf +! ;; +! hexagon-*) +! os=-elf +! ;; +! tic54x-*) +! os=-coff +! ;; +! tic55x-*) +! os=-coff +! ;; +! tic6x-*) +! os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) +*************** +*** 1493,1506 **** + ;; + m68000-sun) + os=-sunos3 +- # This also exists in the configure program, but was not the +- # default. +- # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; +! mep-*) + os=-elf + ;; + mips*-cisco) +--- 1614,1624 ---- + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; +! mep-*) + os=-elf + ;; + mips*-cisco) +*************** +*** 1527,1533 **** + *-ibm) + os=-aix + ;; +! *-knuth) + os=-mmixware + ;; + *-wec) +--- 1645,1651 ---- + *-ibm) + os=-aix + ;; +! *-knuth) + os=-mmixware + ;; + *-wec) diff --git a/libproxy/default/conf.sh b/libproxy/default/conf.sh new file mode 100755 index 0000000..32d2e0a --- /dev/null +++ b/libproxy/default/conf.sh @@ -0,0 +1,10 @@ +#!/bin/sh -e + +cmake -B ../build . \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_INSTALL_PREFIX=$PREFIX \ + -DLIBEXEC_INSTALL_DIR=lib \ + -DMODULE_INSTALL_DIR=$PREFIX/lib/libproxy/$version/modules \ + -DWITH_PERL=OFF \ + -DWITH_PYTHON3=ON \ + -DPYTHON3_EXECUTABLE=/bin/python3 diff --git a/libproxy/default/deps b/libproxy/default/deps new file mode 100644 index 0000000..5d50e19 --- /dev/null +++ b/libproxy/default/deps @@ -0,0 +1,16 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +zlib +cmake +python3-dynamic +libtool diff --git a/libproxy/default/env.sh b/libproxy/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/libproxy/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/libproxy/default/inst.sh b/libproxy/default/inst.sh new file mode 100755 index 0000000..6043a2b --- /dev/null +++ b/libproxy/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +make -C ../build install diff --git a/libproxy/default/make.sh b/libproxy/default/make.sh new file mode 100755 index 0000000..5f7b370 --- /dev/null +++ b/libproxy/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +make -j$(nproc) -C ../build diff --git a/libpsl/default/conf.sh b/libpsl/default/conf.sh new file mode 100755 index 0000000..f9635a9 --- /dev/null +++ b/libpsl/default/conf.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +sed -i 's|env python|env python3|g' src/psl-make-dafsa + +./configure \ + --enable-shared \ + --enable-static \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" diff --git a/libpsl/default/deps b/libpsl/default/deps new file mode 100644 index 0000000..d934549 --- /dev/null +++ b/libpsl/default/deps @@ -0,0 +1,14 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libunistring +libidn2 +python3-dynamic diff --git a/libressl/default/conf.sh b/libressl/default/conf.sh new file mode 100755 index 0000000..77b1c16 --- /dev/null +++ b/libressl/default/conf.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +./configure \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --with-pic \ + --prefix= + +## explanation +# +# --build: make sure the correct build string is set. +# +# --host: make sure the correct host string is set. +# +# --with-pic: use position-independent objects wherever possible. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libressl/default/deps b/libressl/default/deps new file mode 100644 index 0000000..50123c9 --- /dev/null +++ b/libressl/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libtool diff --git a/libseccomp/default/conf.sh b/libseccomp/default/conf.sh new file mode 100755 index 0000000..675eb7f --- /dev/null +++ b/libseccomp/default/conf.sh @@ -0,0 +1,8 @@ +#!/bin/sh -e + +./configure \ + --enable-static \ + --enable-shared \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" diff --git a/libseccomp/default/deps b/libseccomp/default/deps new file mode 100644 index 0000000..96cfddc --- /dev/null +++ b/libseccomp/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +gperf diff --git a/libseccomp/default/env.sh b/libseccomp/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/libseccomp/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/libseccomp/default/patches-available/remove-redefinition-prctl.patch b/libseccomp/default/patches-available/remove-redefinition-prctl.patch new file mode 100644 index 0000000..2ea88fe --- /dev/null +++ b/libseccomp/default/patches-available/remove-redefinition-prctl.patch @@ -0,0 +1,10 @@ +--- ./src/system.c.orig ++++ ./src/system.c +@@ -21,7 +21,6 @@ + + #include + #include +-#include + + #include + diff --git a/libseccomp/default/patches-enabled/remove-redefinition-prctl.patch b/libseccomp/default/patches-enabled/remove-redefinition-prctl.patch new file mode 120000 index 0000000..53a6c9a --- /dev/null +++ b/libseccomp/default/patches-enabled/remove-redefinition-prctl.patch @@ -0,0 +1 @@ +../patches-available/remove-redefinition-prctl.patch \ No newline at end of file diff --git a/libsecret/default/conf.sh b/libsecret/default/conf.sh new file mode 100755 index 0000000..3c090f6 --- /dev/null +++ b/libsecret/default/conf.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +meson \ + --default-library=both \ + -Dgtk_doc=false \ + --prefix="$PREFIX" \ + ../build diff --git a/libsecret/default/deps b/libsecret/default/deps new file mode 100644 index 0000000..69de931 --- /dev/null +++ b/libsecret/default/deps @@ -0,0 +1,31 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +ldd +zlib +libffi +glib +gobject-introspection-dynamic +libgcrypt +libgpg-error +libxslt +docbook-xsl +vala +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +samurai diff --git a/libsecret/default/env.sh b/libsecret/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/libsecret/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/libsecret/default/inst.sh b/libsecret/default/inst.sh new file mode 100755 index 0000000..bc595c4 --- /dev/null +++ b/libsecret/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson install --no-rebuild -C ../build diff --git a/libsecret/default/make.sh b/libsecret/default/make.sh new file mode 100755 index 0000000..0af5a37 --- /dev/null +++ b/libsecret/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson compile -j$(nproc) -C ../build diff --git a/libsm/default/deps b/libsm/default/deps new file mode 100644 index 0000000..b3ed842 --- /dev/null +++ b/libsm/default/deps @@ -0,0 +1,30 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +samurai +libxml2 +python3 +diffutils +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb +xtrans +libx11 +libice diff --git a/libsoup/default/conf.sh b/libsoup/default/conf.sh new file mode 100755 index 0000000..2eb1436 --- /dev/null +++ b/libsoup/default/conf.sh @@ -0,0 +1,8 @@ +#!/bin/sh -e + +meson \ + -Dtls_check=false \ + -Dintrospection=enabled \ + -Dvapi=enabled \ + --prefix="$PREFIX" \ + . ../build diff --git a/libsoup/default/deps b/libsoup/default/deps new file mode 100644 index 0000000..4815da5 --- /dev/null +++ b/libsoup/default/deps @@ -0,0 +1,51 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +ldd +perl +m4 +flex +bison +libffi +zlib +xz +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +samurai +tls-certs +glib +gobject-introspection-dynamic +libproxy +libgcrypt +libgpg-error +p11-kit +gsettings-desktop-schemas +libtasn1 +libunistring +libidn2 +nettle +gnutls +libxml2 +graphviz +libxslt +vala +libpsl +sqlite +brotli >= 1.0.9 +diffutils +file diff --git a/libsoup/default/env.sh b/libsoup/default/env.sh new file mode 100644 index 0000000..fe715e3 --- /dev/null +++ b/libsoup/default/env.sh @@ -0,0 +1,8 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +PKGCONF="pkgconf --static" +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS -llzma -lbrotlicommon -lidn2 -lunistring" diff --git a/libsoup/default/inst.sh b/libsoup/default/inst.sh new file mode 100755 index 0000000..bc595c4 --- /dev/null +++ b/libsoup/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson install --no-rebuild -C ../build diff --git a/libsoup/default/make.sh b/libsoup/default/make.sh new file mode 100755 index 0000000..0af5a37 --- /dev/null +++ b/libsoup/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson compile -j$(nproc) -C ../build diff --git a/libssh2/default/conf.sh b/libssh2/default/conf.sh new file mode 100755 index 0000000..29142fa --- /dev/null +++ b/libssh2/default/conf.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" + +./configure \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --enable-shared: build the dynamic libraries. +# +# --enable-static: build the static libraries. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libssh2/default/deps b/libssh2/default/deps new file mode 100644 index 0000000..7f8c687 --- /dev/null +++ b/libssh2/default/deps @@ -0,0 +1,16 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +zlib +pcre +bearssl +libressl diff --git a/libssh2/default/make.sh.bak b/libssh2/default/make.sh.bak new file mode 100755 index 0000000..1a80695 --- /dev/null +++ b/libssh2/default/make.sh.bak @@ -0,0 +1,7 @@ +#!/bin/sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" + +make -j$(nproc) diff --git a/libssh2/default/patches-available/CVE-2019-17498.patch b/libssh2/default/patches-available/CVE-2019-17498.patch new file mode 100644 index 0000000..e858cca --- /dev/null +++ b/libssh2/default/patches-available/CVE-2019-17498.patch @@ -0,0 +1,72 @@ +From 1c6fa92b77e34d089493fe6d3e2c6c8775858b94 Mon Sep 17 00:00:00 2001 +From: Will Cosgrove +Date: Thu, 29 Aug 2019 15:24:22 -0700 +Subject: [PATCH] fixed type issue, updated SSH_MSG_DISCONNECT + +SSH_MSG_DISCONNECT now also uses _libssh2_get API. +--- + src/packet.c | 40 +++++++++++++++------------------------- + 1 file changed, 15 insertions(+), 25 deletions(-) + +diff --git a/src/packet.c b/src/packet.c +index 8908b2c5..97f0cdd4 100644 +--- a/src/packet.c ++++ b/src/packet.c +@@ -419,8 +419,8 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data, + size_t datalen, int macstate) + { + int rc = 0; +- char *message = NULL; +- char *language = NULL; ++ unsigned char *message = NULL; ++ unsigned char *language = NULL; + size_t message_len = 0; + size_t language_len = 0; + LIBSSH2_CHANNEL *channelp = NULL; +@@ -472,33 +472,23 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data, + + case SSH_MSG_DISCONNECT: + if(datalen >= 5) { +- size_t reason = _libssh2_ntohu32(data + 1); ++ uint32_t reason = 0; ++ struct string_buf buf; ++ buf.data = (unsigned char *)data; ++ buf.dataptr = buf.data; ++ buf.len = datalen; ++ buf.dataptr++; /* advance past type */ + +- if(datalen >= 9) { +- message_len = _libssh2_ntohu32(data + 5); ++ _libssh2_get_u32(&buf, &reason); ++ _libssh2_get_string(&buf, &message, &message_len); ++ _libssh2_get_string(&buf, &language, &language_len); + +- if(message_len < datalen-13) { +- /* 9 = packet_type(1) + reason(4) + message_len(4) */ +- message = (char *) data + 9; +- +- language_len = +- _libssh2_ntohu32(data + 9 + message_len); +- language = (char *) data + 9 + message_len + 4; +- +- if(language_len > (datalen-13-message_len)) { +- /* bad input, clear info */ +- language = message = NULL; +- language_len = message_len = 0; +- } +- } +- else +- /* bad size, clear it */ +- message_len = 0; +- } + if(session->ssh_msg_disconnect) { +- LIBSSH2_DISCONNECT(session, reason, message, +- message_len, language, language_len); ++ LIBSSH2_DISCONNECT(session, reason, (const char *)message, ++ message_len, (const char *)language, ++ language_len); + } ++ + _libssh2_debug(session, LIBSSH2_TRACE_TRANS, + "Disconnect(%d): %s(%s)", reason, + message, language); diff --git a/libssh2/default/patches-enabled/CVE-2019-17498.patch b/libssh2/default/patches-enabled/CVE-2019-17498.patch new file mode 120000 index 0000000..23b8339 --- /dev/null +++ b/libssh2/default/patches-enabled/CVE-2019-17498.patch @@ -0,0 +1 @@ +../patches-available/CVE-2019-17498.patch \ No newline at end of file diff --git a/libtasn1/default/conf.sh b/libtasn1/default/conf.sh new file mode 100755 index 0000000..b9e13c3 --- /dev/null +++ b/libtasn1/default/conf.sh @@ -0,0 +1,10 @@ +#!/bin/sh -e + +CFLAGS="$SHARED_CFLAGS -Wno-error=inline" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" \ + --enable-shared \ + --enable-static diff --git a/libtasn1/default/deps b/libtasn1/default/deps new file mode 100644 index 0000000..d6d8a9c --- /dev/null +++ b/libtasn1/default/deps @@ -0,0 +1,15 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +perl +m4 +texinfo diff --git a/libtasn1/default/make.sh b/libtasn1/default/make.sh new file mode 100755 index 0000000..4071720 --- /dev/null +++ b/libtasn1/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +make -j1 diff --git a/libtheora/default/APKBUILD b/libtheora/default/APKBUILD new file mode 100644 index 0000000..f1c720d --- /dev/null +++ b/libtheora/default/APKBUILD @@ -0,0 +1,78 @@ +# Maintainer: Natanael Copa +pkgname=libtheora +pkgver=1.1.1 +pkgrel=14 +pkgdesc="An open video codec developed by the Xiph.org" +url="https://www.xiph.org" +arch="all" +license="BSD-3-Clause" +subpackages="$pkgname-static $pkgname-dev $pkgname-doc $pkgname-examples" +depends_dev="libogg-dev" +makedepends="libvorbis-dev libogg-dev sdl-dev autoconf automake libtool + linux-headers" +source="http://downloads.xiph.org/releases/theora/$pkgname-$pkgver.tar.bz2 + libtheora-flags.patch + enc.patch + fix-timeb.patch + fix-mmx.patch + automake.patch + " + +prepare() { + default_prepare + cd "$builddir" + + sed -i 's/png_\(sizeof\)/\1/g' examples/png2theora.c + + libtoolize --force + aclocal -I m4 + autoconf --force + automake --force --add-missing +} + +build() { + cd "$builddir" + + CFLAGS="${CFLAGS/-Os/-O3}" CPPFLAGS="${CPPFLAGS/-Os/-O3}" ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --enable-shared \ + --enable-static + make -C lib + make +} + +check() { + cd "$builddir" + make check +} + +package() { + cd "$builddir" + make -j1 DESTDIR="$pkgdir" install +} + +examples() { + pkgdesc="Example applications for libtheora" + + cd "$builddir"/examples/.libs + + install -d "$subpkgdir"/usr/bin + install -m755 dump_psnr player_example dump_video encoder_example \ + "$subpkgdir"/usr/bin/ +} + +static() { + depends="" + pkgdesc="$pkgdesc (static libraries)" + mkdir -p "$subpkgdir"/usr/lib + mv "$pkgdir"/usr/lib/*.a "$subpkgdir"/usr/lib +} + +sha512sums="9ab9b3af1c35d16a7d6d84f61f59ef3180132e30c27bdd7c0fa2683e0d00e2c791accbc7fd2c90718cc947d8bd10ee4a5940fb55f90f1fd7b0ed30583a47dbbd libtheora-1.1.1.tar.bz2 +72916c4ed0f9609b84af7c72b35b558ecfb2ed7533739e170ed088e06d0e82a585dcc1185f3c5a5d0644d30901459813b635df2ba951e2290bcd4303cfebc20b libtheora-flags.patch +569132fd0a576abb26b3c28fe84c4c2c66ff871129f00bfb23e593b8f985e47d61bc910d383aa3fc7477cc9de21e86f8df412901c609a62da972410733ec41f2 enc.patch +985dd5f5f3afcb36d71a636082c6e09ec18bb9e442b552babc4706299f502b90e79fb4aacb50a43c5e87a0b8429b311bcfeb21027f6cdca6fdb81e76b491dfff fix-timeb.patch +f86b15fe5b1029c1e82b8f3785cbd6c81dd5e17dc6c8e4052de3c55482be3948d53828930df864a4668078c5cbab38b1d06b5807563f5fa342da1d084ce924b2 fix-mmx.patch +d72648de058d42ed85d9870596d8c42148f9bcf5b08e2a333c279e1516f4bfa6535566cda807abb06ae58bfb1e373909148cb5c10aad6f56879d9c8452f2cc4f automake.patch" diff --git a/libtheora/default/conf.sh b/libtheora/default/conf.sh new file mode 100755 index 0000000..5ad450a --- /dev/null +++ b/libtheora/default/conf.sh @@ -0,0 +1,15 @@ +#!/bin/sh -e + +sed -i 's/png_\(sizeof\)/\1/g' examples/png2theora.c + +libtoolize --force +aclocal -I m4 +autoconf --force +automake --force --add-missing + +./configure \ + --enable-shared \ + --enable-static \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" diff --git a/libtheora/default/deps b/libtheora/default/deps new file mode 100644 index 0000000..fca7ee7 --- /dev/null +++ b/libtheora/default/deps @@ -0,0 +1,19 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +perl +m4 +autoconf +automake +libtool +libogg +libvorbis diff --git a/libtheora/default/env.sh b/libtheora/default/env.sh new file mode 100644 index 0000000..3323600 --- /dev/null +++ b/libtheora/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS -O3" +CXXFLAGS="$SHARED_CXXFLAGS -O3" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/libtheora/default/inst.sh b/libtheora/default/inst.sh new file mode 100755 index 0000000..efa4104 --- /dev/null +++ b/libtheora/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +make -j1 install diff --git a/libtheora/default/make.sh b/libtheora/default/make.sh new file mode 100755 index 0000000..1cbbd90 --- /dev/null +++ b/libtheora/default/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +make -C lib +make diff --git a/libtheora/default/patches-available/automake.patch b/libtheora/default/patches-available/automake.patch new file mode 100644 index 0000000..f004970 --- /dev/null +++ b/libtheora/default/patches-available/automake.patch @@ -0,0 +1,11 @@ +--- ./configure.ac.orig 2012-12-31 20:15:29.384600257 +0000 ++++ ./configure.ac 2012-12-31 20:15:38.461347599 +0000 +@@ -9,7 +9,7 @@ + AC_CANONICAL_HOST + AC_CANONICAL_TARGET + +-AM_CONFIG_HEADER([config.h]) ++AC_CONFIG_HEADER([config.h]) + AC_CONFIG_SRCDIR([lib/fdct.c]) + AM_INIT_AUTOMAKE + AM_MAINTAINER_MODE diff --git a/libtheora/default/patches-available/enc.patch b/libtheora/default/patches-available/enc.patch new file mode 100644 index 0000000..ea604d2 --- /dev/null +++ b/libtheora/default/patches-available/enc.patch @@ -0,0 +1,11 @@ +--- ./lib/Makefile.am.orig ++++ ./lib/Makefile.am +@@ -152,7 +154,7 @@ + Version_script-enc theoraenc.exp + libtheoraenc_la_LDFLAGS = \ + -version-info @THENC_LIB_CURRENT@:@THENC_LIB_REVISION@:@THENC_LIB_AGE@ \ +- @THEORAENC_LDFLAGS@ $(OGG_LIBS) ++ -ltheoradec @THEORAENC_LDFLAGS@ $(OGG_LIBS) + + libtheora_la_SOURCES = \ + $(decoder_sources) \ diff --git a/libtheora/default/patches-available/fix-mmx.patch b/libtheora/default/patches-available/fix-mmx.patch new file mode 100644 index 0000000..63fb9f7 --- /dev/null +++ b/libtheora/default/patches-available/fix-mmx.patch @@ -0,0 +1,31 @@ +http://bugs.alpinelinux.org/issues/6132 +https://trac.xiph.org/ticket/2287 + +patch rebased for libtheory 1.1.1 stable + +diff -ru libtheora-1.1.1.orig/lib/encode.c libtheora-1.1.1/lib/encode.c +--- libtheora-1.1.1.orig/lib/encode.c 2009-08-22 18:14:04.000000000 +0000 ++++ libtheora-1.1.1/lib/encode.c 2016-09-15 05:27:02.065785527 +0000 +@@ -864,6 +864,9 @@ + } + + static void oc_enc_frame_pack(oc_enc_ctx *_enc){ ++ /*musl libc malloc()/realloc() calls might use floating point, so make sure ++ we've cleared the MMX state for them.*/ ++ oc_restore_fpu(&_enc->state); + oggpackB_reset(&_enc->opb); + /*Only proceed if we have some coded blocks. + If there are no coded blocks, we can drop this frame simply by emitting a +diff -ru libtheora-1.1.1.orig/lib/decode.c libtheora-1.1.1/lib/decode.c +--- libtheora-1.1.1.orig/lib/decode.c 2009-09-26 20:55:21.000000000 +0000 ++++ libtheora-1.1.1/lib/decode.c 2016-09-15 05:29:45.912196850 +0000 +@@ -1181,6 +1181,9 @@ + + + static int oc_dec_postprocess_init(oc_dec_ctx *_dec){ ++ /*musl libc malloc()/realloc() calls might use floating point, so make sure ++ we've cleared the MMX state for them.*/ ++ oc_restore_fpu(&_dec->state); + /*pp_level 0: disabled; free any memory used and return*/ + if(_dec->pp_level<=OC_PP_LEVEL_DISABLED){ + if(_dec->dc_qis!=NULL){ diff --git a/libtheora/default/patches-available/fix-timeb.patch b/libtheora/default/patches-available/fix-timeb.patch new file mode 100644 index 0000000..5344c07 --- /dev/null +++ b/libtheora/default/patches-available/fix-timeb.patch @@ -0,0 +1,75 @@ +--- libtheora-1.1.1.orig/examples/dump_psnr.c ++++ libtheora-1.1.1/examples/dump_psnr.c +@@ -37,7 +37,6 @@ + #endif + #include + #include +-#include + #include + #include + /*Yes, yes, we're going to hell.*/ +--- libtheora-1.1.1.orig/examples/dump_video.c ++++ libtheora-1.1.1/examples/dump_video.c +@@ -37,7 +37,7 @@ + #include + #include + #include +-#include ++#include + #include + #include + /*Yes, yes, we're going to hell.*/ +@@ -205,9 +205,9 @@ + int long_option_index; + int c; + +- struct timeb start; +- struct timeb after; +- struct timeb last; ++ struct timeval start; ++ struct timeval after; ++ struct timeval last; + int fps_only=0; + int frames = 0; + +@@ -418,8 +418,8 @@ + } + + if(fps_only){ +- ftime(&start); +- ftime(&last); ++ gettimeofday(&start, NULL); ++ gettimeofday(&last, NULL); + } + + while(!got_sigint){ +@@ -433,7 +433,7 @@ + videobuf_ready=1; + frames++; + if(fps_only) +- ftime(&after); ++ gettimeofday(&after, NULL); + } + + }else +@@ -442,16 +442,16 @@ + + if(fps_only && (videobuf_ready || fps_only==2)){ + long ms = +- after.time*1000.+after.millitm- +- (last.time*1000.+last.millitm); ++ after.tv_sec*1000.+after.tv_usec/1000- ++ (last.tv_sec*1000.+last.tv_usec/1000); + + if(ms>500 || fps_only==1 || + (feof(infile) && !videobuf_ready)){ + float file_fps = (float)ti.fps_numerator/ti.fps_denominator; + fps_only=2; + +- ms = after.time*1000.+after.millitm- +- (start.time*1000.+start.millitm); ++ ms = after.tv_sec*1000.+after.tv_usec/1000- ++ (start.tv_sec*1000.+start.tv_usec/1000); + + fprintf(stderr,"\rframe:%d rate:%.2fx ", + frames, diff --git a/libtheora/default/patches-available/libtheora-flags.patch b/libtheora/default/patches-available/libtheora-flags.patch new file mode 100644 index 0000000..a47cc57 --- /dev/null +++ b/libtheora/default/patches-available/libtheora-flags.patch @@ -0,0 +1,14 @@ +diff -ur libtheora-1.0beta2.orig/configure.ac libtheora-1.0beta2/configure.ac +--- libtheora-1.0beta2.orig/configure.ac 2007-10-13 00:01:38.000000000 +0300 ++++ libtheora-1.0beta2/configure.ac 2007-11-25 22:44:49.000000000 +0200 +@@ -102,8 +102,8 @@ + case $host in + *) + DEBUG="-g -Wall -Wno-parentheses -DDEBUG -D__NO_MATH_INLINES" +- CFLAGS="-Wall -Wno-parentheses -O3 -fforce-addr -fomit-frame-pointer -finline-functions -funroll-loops" +- PROFILE="-Wall -Wno-parentheses -pg -g -O3 -fno-inline-functions -DDEBUG";; ++ CFLAGS="-Wall -Wno-parentheses" ++ PROFILE="-Wall -Wno-parentheses -pg -g -fno-inline-functions -DDEBUG";; + esac + fi + CFLAGS="$CFLAGS $cflags_save" diff --git a/libtheora/default/patches-enabled/automake.patch b/libtheora/default/patches-enabled/automake.patch new file mode 120000 index 0000000..4bdf060 --- /dev/null +++ b/libtheora/default/patches-enabled/automake.patch @@ -0,0 +1 @@ +../patches-available/automake.patch \ No newline at end of file diff --git a/libtheora/default/patches-enabled/enc.patch b/libtheora/default/patches-enabled/enc.patch new file mode 120000 index 0000000..3526fc9 --- /dev/null +++ b/libtheora/default/patches-enabled/enc.patch @@ -0,0 +1 @@ +../patches-available/enc.patch \ No newline at end of file diff --git a/libtheora/default/patches-enabled/fix-mmx.patch b/libtheora/default/patches-enabled/fix-mmx.patch new file mode 120000 index 0000000..e13ec48 --- /dev/null +++ b/libtheora/default/patches-enabled/fix-mmx.patch @@ -0,0 +1 @@ +../patches-available/fix-mmx.patch \ No newline at end of file diff --git a/libtheora/default/patches-enabled/fix-timeb.patch b/libtheora/default/patches-enabled/fix-timeb.patch new file mode 120000 index 0000000..c590681 --- /dev/null +++ b/libtheora/default/patches-enabled/fix-timeb.patch @@ -0,0 +1 @@ +../patches-available/fix-timeb.patch \ No newline at end of file diff --git a/libtheora/default/patches-enabled/libtheora-flags.patch b/libtheora/default/patches-enabled/libtheora-flags.patch new file mode 120000 index 0000000..e248477 --- /dev/null +++ b/libtheora/default/patches-enabled/libtheora-flags.patch @@ -0,0 +1 @@ +../patches-available/libtheora-flags.patch \ No newline at end of file diff --git a/libtiff/default/conf.sh b/libtiff/default/conf.sh new file mode 100755 index 0000000..72dc50a --- /dev/null +++ b/libtiff/default/conf.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --enable-cxx \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --enable-cxx: build c++ bindings +# +# --enable-shared: build the shared libraries. +# +# --enable-static: build the static libraries. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libtiff/default/deps b/libtiff/default/deps new file mode 100644 index 0000000..a5a4511 --- /dev/null +++ b/libtiff/default/deps @@ -0,0 +1,18 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +autoconf +automake +libtool +zlib +libjpeg-turbo diff --git a/libtool/default/inst.sh b/libtool/default/inst.sh new file mode 100755 index 0000000..5f93a77 --- /dev/null +++ b/libtool/default/inst.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +# doing it this way because otherwise the install script "rmdir"s /share +DESTDIR="${pkgdest:-/mnt/build}" make -j$(nproc) install +if [ ! "$pkgdest" ]; then + cp -r /mnt/build/* / + rsync -a /mnt/build/ / +fi diff --git a/libucontext/default/conf.sh b/libucontext/default/conf.sh new file mode 100755 index 0000000..bb3314d --- /dev/null +++ b/libucontext/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration to be done." diff --git a/libucontext/default/env.sh b/libucontext/default/env.sh new file mode 100644 index 0000000..0540b34 --- /dev/null +++ b/libucontext/default/env.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +. ../how/default-env.sh + +ARCH="$(uname -m)" +case "$ARCH" in + arm*) ARCH="arm" ;; + ppc64le) ARCH="ppc64" ;; +esac +export ARCH + +export CFLAGS="$SHARED_CFLAGS" +export CXXFLAGS="$SHARED_CXXFLAGS" +export LDFLAGS="$SHARED_LDFLAGS" diff --git a/libusb/default/conf.sh b/libusb/default/conf.sh new file mode 100755 index 0000000..48a1fc1 --- /dev/null +++ b/libusb/default/conf.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +set -e + +./bootstrap.sh +./configure \ + --disable-udev \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-udev: don't bother with udev support. +# +# --enable-static: +# env.sh removes the static flags so libusb will produce shared libraries. +# make sure it also produces static ones. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libusb/default/deps b/libusb/default/deps new file mode 100644 index 0000000..b2d9a20 --- /dev/null +++ b/libusb/default/deps @@ -0,0 +1,15 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +dash +musl-cross-make +m4 +make +perl +autoconf +automake +libtool +awk +gnu-sed +gnu-grep diff --git a/libusb/default/env.sh b/libusb/default/env.sh new file mode 100755 index 0000000..536e5de --- /dev/null +++ b/libusb/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +# TODO: remove the need for these lines by making musl-cross-make build a gcc +# with a header search path of /include only, with all headers contained there. +CPATH="$CPATH:/include:/powerpc64le-lix-linux-musl/include" +CPATH="$CPATH:/include/c++/9.2.0/powerpc64le-lix-linux-musl:/include/c++/9.2.0" +export CPATH diff --git a/libuuid/README b/libuuid/README new file mode 100644 index 0000000..3c0fe00 --- /dev/null +++ b/libuuid/README @@ -0,0 +1,2 @@ +libuuid is packaged inside linux-utils, which is redundant with sbase and ubase. +this means lix must pull in the whole linux-utils tarball for this one library. diff --git a/libuuid/default/conf.sh b/libuuid/default/conf.sh new file mode 100755 index 0000000..92e8f7e --- /dev/null +++ b/libuuid/default/conf.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +./configure \ + --disable-all-programs \ + --disable-shared \ + --enable-static \ + --enable-libuuid \ + --prefix= + +## explanation +# +# --disable-all-programs: +# disable everything. this package actually contains a bunch of libraries... +# +# --disable-shared --enable static: only build static libraries. +# +# --enable-libuuid: enable only libuuid. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libvorbis/default/conf.sh b/libvorbis/default/conf.sh new file mode 100755 index 0000000..ea1e394 --- /dev/null +++ b/libvorbis/default/conf.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +./configure \ + --enable-shared \ + --enable-static \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libvorbis/default/deps b/libvorbis/default/deps new file mode 100644 index 0000000..72adb1a --- /dev/null +++ b/libvorbis/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +libogg diff --git a/libvorbis/default/env.sh b/libvorbis/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/libvorbis/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/libwebp/default/conf.sh b/libwebp/default/conf.sh new file mode 100755 index 0000000..f41b7e1 --- /dev/null +++ b/libwebp/default/conf.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +./configure \ + --enable-libwebpmux \ + --enable-libwebpdemux \ + --enable-libwebpdecoder \ + --disable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libwebp/default/deps b/libwebp/default/deps new file mode 100644 index 0000000..075a9fe --- /dev/null +++ b/libwebp/default/deps @@ -0,0 +1,21 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +libtool +autoconf +automake +zlib +giflib +libjpeg-turbo +libpng +libtiff diff --git a/libwpe/default/conf.sh b/libwpe/default/conf.sh new file mode 100755 index 0000000..c0fdb7e --- /dev/null +++ b/libwpe/default/conf.sh @@ -0,0 +1,16 @@ +#!/bin/sh -e + +if [ "$BUILD" != "$HOST" ]; then + CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux" +fi + +cd ../build + +cmake \ + -DCMAKE_INSTALL_PREFIX="$PREFIX" \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DBUILD_SHARED_LIBS=True \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_CXX_FLAGS="$SHARED_CXXFLAGS" \ + -DCMAKE_C_FLAGS="$SHARED_CFLAGS" \ + ../src diff --git a/libwpe/default/deps b/libwpe/default/deps new file mode 100644 index 0000000..141c633 --- /dev/null +++ b/libwpe/default/deps @@ -0,0 +1,16 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +cmake +libdrm +libxkbcommon +mesa-dynamic diff --git a/libwpe/default/inst.sh b/libwpe/default/inst.sh new file mode 100755 index 0000000..42ba35a --- /dev/null +++ b/libwpe/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +cd ../build +make -j$(nproc) install diff --git a/libwpe/default/make.sh b/libwpe/default/make.sh new file mode 100755 index 0000000..3144d28 --- /dev/null +++ b/libwpe/default/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +cd ../build +make -j$(nproc) diff --git a/libwpebackend-fdo/default/conf.sh b/libwpebackend-fdo/default/conf.sh new file mode 100755 index 0000000..8401eb0 --- /dev/null +++ b/libwpebackend-fdo/default/conf.sh @@ -0,0 +1,16 @@ +#!/bin/sh -e + +if [ "$BUILD" != "$HOST" ]; then + CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux" +fi + +cd ../build +cmake \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DBUILD_SHARED_LIBS=True \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_CXX_FLAGS="$SHARED_CXXFLAGS -DEGL_NO_X11" \ + -DCMAKE_C_FLAGS="$SHARED_CFLAGS -DEGL_NO_X11" \ + $CMAKE_CROSSOPTS \ + ../src diff --git a/libwpebackend-fdo/default/deps b/libwpebackend-fdo/default/deps new file mode 100644 index 0000000..2c40d8d --- /dev/null +++ b/libwpebackend-fdo/default/deps @@ -0,0 +1,21 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +cmake +libdrm +libepoxy +libffi +glib +wayland +mesa-dynamic +libxkbcommon +libwpe diff --git a/libwpebackend-fdo/default/inst.sh b/libwpebackend-fdo/default/inst.sh new file mode 100755 index 0000000..42ba35a --- /dev/null +++ b/libwpebackend-fdo/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +cd ../build +make -j$(nproc) install diff --git a/libwpebackend-fdo/default/make.sh b/libwpebackend-fdo/default/make.sh new file mode 100755 index 0000000..3144d28 --- /dev/null +++ b/libwpebackend-fdo/default/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +cd ../build +make -j$(nproc) diff --git a/libx11/default/conf.sh b/libx11/default/conf.sh new file mode 100755 index 0000000..3151337 --- /dev/null +++ b/libx11/default/conf.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +CFLAGS="" \ +LDFLAGS="" \ +CXXFLAGS="" \ +CPPFLAGS="" \ +./configure \ + --with-xcb \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix=/usr + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libx11/default/deps b/libx11/default/deps new file mode 100644 index 0000000..65778ba --- /dev/null +++ b/libx11/default/deps @@ -0,0 +1,28 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +samurai +libxml2 +python3 +diffutils +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb +xtrans diff --git a/libxau/default/conf.sh b/libxau/default/conf.sh new file mode 100755 index 0000000..e9756ea --- /dev/null +++ b/libxau/default/conf.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +#autoreconf -vif + +XAU_CFLAGS="$CFLAGS" \ +XAU_LIBS="$LDFLAGS" \ +./configure \ + --disable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --sysconfdir=/etc \ + --prefix=/usr + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libxau/default/deps b/libxau/default/deps new file mode 100644 index 0000000..877839d --- /dev/null +++ b/libxau/default/deps @@ -0,0 +1,28 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +xorg-util-macros +xorgproto +libtool diff --git a/libxcb/default/conf.sh b/libxcb/default/conf.sh new file mode 100755 index 0000000..e3d7545 --- /dev/null +++ b/libxcb/default/conf.sh @@ -0,0 +1,39 @@ +#!/bin/sh + + +sed -i 's/pthread-stubs //' configure +#PYTHONPATH="$PYTHONPATH:/lib/python3.8/site-packages" \ +#XCBPROTO_CFLAGS="-I/include" \ +#XCBPROTO_LIBS="$LDFLAGS" \ +#NEEDED_CFLAGS="-I/include" \ +#NEEDED_LIBS="$LDFLAGS" \ +./configure \ + --enable-xkb \ + --enable-xinput \ + --disable-xprint \ + --disable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + + +#XCBPROTO_XCBINCLUDEDIR="/share/xcb" \ +#PYTHONPATH="$PYTHONPATH:/lib/python3.8/site-packages" \ +#XCBPROTO_CFLAGS="-I/include" \ +#XCBPROTO_LIBS="$LDFLAGS" \ +#NEEDED_CFLAGS="-I/include" \ +#NEEDED_LIBS="$LDFLAGS" \ +./configure --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libxcb/default/deps b/libxcb/default/deps new file mode 100644 index 0000000..768e219 --- /dev/null +++ b/libxcb/default/deps @@ -0,0 +1,26 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +samurai +libxml2 +python3 +diffutils +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau diff --git a/libxcb/default/deps.bak b/libxcb/default/deps.bak new file mode 100644 index 0000000..3e1d2f5 --- /dev/null +++ b/libxcb/default/deps.bak @@ -0,0 +1,32 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +samurai +libxml2 +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +xorg-util-macros +xorgproto +libtool +libxslt +pkgconf +xcb-proto diff --git a/libxcb/default/make.sh b/libxcb/default/make.sh new file mode 100755 index 0000000..3d9f1b7 --- /dev/null +++ b/libxcb/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +make #-j$(nproc) diff --git a/libxdamage/default/deps b/libxdamage/default/deps new file mode 100644 index 0000000..4bc6ba6 --- /dev/null +++ b/libxdamage/default/deps @@ -0,0 +1,20 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +perl +m4 +xorg-util-macros +xorgproto +libxau +libxcb +libx11 +libxfixes diff --git a/libxdmcp/default/deps b/libxdmcp/default/deps new file mode 100644 index 0000000..5eb1053 --- /dev/null +++ b/libxdmcp/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +xorg-util-macros diff --git a/libxext/default/deps b/libxext/default/deps new file mode 100644 index 0000000..00ad172 --- /dev/null +++ b/libxext/default/deps @@ -0,0 +1,29 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +samurai +libxml2 +python3 +diffutils +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb +xtrans +libx11 diff --git a/libxfixes/default/deps b/libxfixes/default/deps new file mode 100644 index 0000000..24e3604 --- /dev/null +++ b/libxfixes/default/deps @@ -0,0 +1,19 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +xorg-util-macros +libxau +libxcb +libx11 +xorgproto +pkgconf diff --git a/libxfont2/default/conf.sh b/libxfont2/default/conf.sh new file mode 100755 index 0000000..ccccbf6 --- /dev/null +++ b/libxfont2/default/conf.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +#LDFLAGS="$LDFLAGS -lharfbuzz -lfreetype" \ +#LIBS="--start-group -lfreetype -lharfbuzz --end-group" \ +#LIBS="-Wl,--start-group -lfreetype -lbz2 -lz -lpng16 -lz -L/usr/lib -lharfbuzz -lm -lglib-2.0 -pthread -Wl,--end-group" \ +#LDFLAGS="$LDFLAGS -lfreetype -lharfbuzz -lfreetype" \ +#LIBS="-lfreetype -lharfbuzz -lfreetype -lharfbuzz -lfreetype" \ +cat << EOF > ../build/pkgconfstatic +#!/bin/sh -e + +pkgconfbin="\$(which pkgconf)" +[ "\$1" = "--version" ] && \$pkgconfbin --version || \$pkgconfbin --static \$@ +EOF +chmod +x ../build/pkgconfstatic +export PKG_CONFIG="../build/pkgconfstatic" + +./configure \ + --disable-shared \ + --enable-static \ + --with-pic \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +rm ../build/pkgconfstatic + +# Point Harfbuzz to the Freetype files. +#export CFLAGS="$CFLAGS -I$1/usr/include/freetype2" +#export CXXFLAGS="$CXXFLAGS -I$1/usr/include/freetype2" +#export LDFLAGS="$LDFLAGS -L$1/usr/lib" + + +#-Dpkg_config_path="$1/usr/lib/pkgconfig" \ diff --git a/libxfont2/default/deps b/libxfont2/default/deps new file mode 100644 index 0000000..fc7e870 --- /dev/null +++ b/libxfont2/default/deps @@ -0,0 +1,32 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +zlib +bzip2 +libfontenc +pkgconf +xorgproto +xtrans +expat +glib +libx11 +libxau +libxdamage +libxext +libxfixes +libxrender +libxxf86vm +libdrm +libpng +libxcb +libxshmfence +pixman +freetype diff --git a/libxfont2/default/deps.bak b/libxfont2/default/deps.bak new file mode 100644 index 0000000..fba80bf --- /dev/null +++ b/libxfont2/default/deps.bak @@ -0,0 +1,34 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +zlib +bzip2 +libfontenc +pkgconf +xorgproto +xtrans +expat +glib +libx11 +libxau +libxdamage +libxext +libxfixes +libxrender +libxxf86vm +libdrm +libpng +libxcb +libxshmfence +mesa +pixman +harfbuzz +freetype diff --git a/libxft/default/deps b/libxft/default/deps new file mode 100644 index 0000000..931955b --- /dev/null +++ b/libxft/default/deps @@ -0,0 +1,30 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +zlib +expat +diffutils +libpng +libjpeg-turbo +libtiff +libxau +libxcb +xorgproto +xorg-util-macros +libx11 +libxrender +fontconfig +freetype diff --git a/libxinerama/default/deps b/libxinerama/default/deps new file mode 100644 index 0000000..e4d6b60 --- /dev/null +++ b/libxinerama/default/deps @@ -0,0 +1,30 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +samurai +libxml2 +python3 +diffutils +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb +xtrans +libx11 +libxext diff --git a/libxkbcommon-dynamic/default/conf.sh b/libxkbcommon-dynamic/default/conf.sh new file mode 100755 index 0000000..ca76182 --- /dev/null +++ b/libxkbcommon-dynamic/default/conf.sh @@ -0,0 +1,15 @@ +#!/bin/sh -e + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson \ + -Ddefault-library=both \ + -Dxkb-config-root=/share/xkb \ + -Dx-locale-root=/share/xlocale \ + -Denable-x11=false \ + -Denable-xkbregistry=false \ + -Denable-wayland=true \ + -Denable-docs=false \ + --prefix=$PREFIX \ + ../build diff --git a/libxkbcommon-dynamic/default/deps b/libxkbcommon-dynamic/default/deps new file mode 100644 index 0000000..38fd2ec --- /dev/null +++ b/libxkbcommon-dynamic/default/deps @@ -0,0 +1,30 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +bison +libxml2 +mtdev +libevdev +pkgconf +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +cmake +wayland +wayland-protocols diff --git a/libxkbcommon-dynamic/default/inst.sh b/libxkbcommon-dynamic/default/inst.sh new file mode 100755 index 0000000..1208b36 --- /dev/null +++ b/libxkbcommon-dynamic/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +samu -C ../build install diff --git a/libxkbcommon-dynamic/default/make.sh b/libxkbcommon-dynamic/default/make.sh new file mode 100755 index 0000000..e53d1e4 --- /dev/null +++ b/libxkbcommon-dynamic/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +samu -C ../build diff --git a/libxkbcommon-dynamic/default/patches-available/0001-Track-generated-xkbcomp-parser.patch b/libxkbcommon-dynamic/default/patches-available/0001-Track-generated-xkbcomp-parser.patch new file mode 100644 index 0000000..8f4dc28 --- /dev/null +++ b/libxkbcommon-dynamic/default/patches-available/0001-Track-generated-xkbcomp-parser.patch @@ -0,0 +1,3464 @@ +From 95342a67221944e99dd2adf2d5d75d62fd256afe Mon Sep 17 00:00:00 2001 +From: Michael Forney +Date: Sat, 26 Oct 2019 02:05:31 -0700 +Subject: [PATCH] Track generated xkbcomp parser + +--- + src/xkbcomp/.gitignore | 2 - + src/xkbcomp/parser.c | 3258 ++++++++++++++++++++++++++++++++++++++++ + src/xkbcomp/parser.h | 169 +++ + 3 files changed, 3427 insertions(+), 2 deletions(-) + delete mode 100644 src/xkbcomp/.gitignore + create mode 100644 src/xkbcomp/parser.c + create mode 100644 src/xkbcomp/parser.h + +diff --git a/src/xkbcomp/.gitignore b/src/xkbcomp/.gitignore +deleted file mode 100644 +index d7814e4..0000000 +--- a/src/xkbcomp/.gitignore ++++ /dev/null +@@ -1,2 +0,0 @@ +-parser.c +-parser.h +diff --git a/src/xkbcomp/parser.c b/src/xkbcomp/parser.c +new file mode 100644 +index 0000000..105d720 +--- /dev/null ++++ b/src/xkbcomp/parser.c +@@ -0,0 +1,3258 @@ ++/* A Bison parser, made by GNU Bison 3.7.1. */ ++ ++/* Bison implementation for Yacc-like parsers in C ++ ++ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, ++ Inc. ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++/* As a special exception, you may create a larger work that contains ++ part or all of the Bison parser skeleton and distribute that work ++ under terms of your choice, so long as that work isn't itself a ++ parser generator using the skeleton or a modified version thereof ++ as a parser skeleton. Alternatively, if you modify or redistribute ++ the parser skeleton itself, you may (at your option) remove this ++ special exception, which will cause the skeleton and the resulting ++ Bison output files to be licensed under the GNU General Public ++ License without this special exception. ++ ++ This special exception was added by the Free Software Foundation in ++ version 2.2 of Bison. */ ++ ++/* C LALR(1) parser skeleton written by Richard Stallman, by ++ simplifying the original so-called "semantic" parser. */ ++ ++/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, ++ especially those whose name start with YY_ or yy_. They are ++ private implementation details that can be changed or removed. */ ++ ++/* All symbols defined below should begin with yy or YY, to avoid ++ infringing on user name space. This should be done even for local ++ variables, as they might otherwise be expanded by user macros. ++ There are some unavoidable exceptions within include files to ++ define necessary library symbols; they are noted "INFRINGES ON ++ USER NAME SPACE" below. */ ++ ++/* Identify Bison output. */ ++#define YYBISON 1 ++ ++/* Bison version. */ ++#define YYBISON_VERSION "3.7.1" ++ ++/* Skeleton name. */ ++#define YYSKELETON_NAME "yacc.c" ++ ++/* Pure parsers. */ ++#define YYPURE 1 ++ ++/* Push parsers. */ ++#define YYPUSH 0 ++ ++/* Pull parsers. */ ++#define YYPULL 1 ++ ++ ++/* Substitute the variable and function names. */ ++#define yyparse _xkbcommon_parse ++#define yylex _xkbcommon_lex ++#define yyerror _xkbcommon_error ++#define yydebug _xkbcommon_debug ++#define yynerrs _xkbcommon_nerrs ++ ++/* First part of user prologue. */ ++#line 33 "parser.y" ++ ++#include "config.h" ++ ++#include "xkbcomp/xkbcomp-priv.h" ++#include "xkbcomp/ast-build.h" ++#include "xkbcomp/parser-priv.h" ++#include "scanner-utils.h" ++ ++struct parser_param { ++ struct xkb_context *ctx; ++ struct scanner *scanner; ++ XkbFile *rtrn; ++ bool more_maps; ++}; ++ ++#define parser_err(param, fmt, ...) \ ++ scanner_err((param)->scanner, fmt, ##__VA_ARGS__) ++ ++#define parser_warn(param, fmt, ...) \ ++ scanner_warn((param)->scanner, fmt, ##__VA_ARGS__) ++ ++static void ++_xkbcommon_error(struct parser_param *param, const char *msg) ++{ ++ parser_err(param, "%s", msg); ++} ++ ++static bool ++resolve_keysym(const char *name, xkb_keysym_t *sym_rtrn) ++{ ++ xkb_keysym_t sym; ++ ++ if (!name || istreq(name, "any") || istreq(name, "nosymbol")) { ++ *sym_rtrn = XKB_KEY_NoSymbol; ++ return true; ++ } ++ ++ if (istreq(name, "none") || istreq(name, "voidsymbol")) { ++ *sym_rtrn = XKB_KEY_VoidSymbol; ++ return true; ++ } ++ ++ sym = xkb_keysym_from_name(name, XKB_KEYSYM_NO_FLAGS); ++ if (sym != XKB_KEY_NoSymbol) { ++ *sym_rtrn = sym; ++ return true; ++ } ++ ++ return false; ++} ++ ++#define param_scanner param->scanner ++ ++#line 130 "parser.c" ++ ++# ifndef YY_CAST ++# ifdef __cplusplus ++# define YY_CAST(Type, Val) static_cast (Val) ++# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) ++# else ++# define YY_CAST(Type, Val) ((Type) (Val)) ++# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) ++# endif ++# endif ++# ifndef YY_NULLPTR ++# if defined __cplusplus ++# if 201103L <= __cplusplus ++# define YY_NULLPTR nullptr ++# else ++# define YY_NULLPTR 0 ++# endif ++# else ++# define YY_NULLPTR ((void*)0) ++# endif ++# endif ++ ++#include "parser.h" ++/* Symbol kind. */ ++enum yysymbol_kind_t ++{ ++ YYSYMBOL_YYEMPTY = -2, ++ YYSYMBOL_YYEOF = 0, /* END_OF_FILE */ ++ YYSYMBOL_YYerror = 1, /* error */ ++ YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ ++ YYSYMBOL_ERROR_TOK = 3, /* ERROR_TOK */ ++ YYSYMBOL_XKB_KEYMAP = 4, /* XKB_KEYMAP */ ++ YYSYMBOL_XKB_KEYCODES = 5, /* XKB_KEYCODES */ ++ YYSYMBOL_XKB_TYPES = 6, /* XKB_TYPES */ ++ YYSYMBOL_XKB_SYMBOLS = 7, /* XKB_SYMBOLS */ ++ YYSYMBOL_XKB_COMPATMAP = 8, /* XKB_COMPATMAP */ ++ YYSYMBOL_XKB_GEOMETRY = 9, /* XKB_GEOMETRY */ ++ YYSYMBOL_XKB_SEMANTICS = 10, /* XKB_SEMANTICS */ ++ YYSYMBOL_XKB_LAYOUT = 11, /* XKB_LAYOUT */ ++ YYSYMBOL_INCLUDE = 12, /* INCLUDE */ ++ YYSYMBOL_OVERRIDE = 13, /* OVERRIDE */ ++ YYSYMBOL_AUGMENT = 14, /* AUGMENT */ ++ YYSYMBOL_REPLACE = 15, /* REPLACE */ ++ YYSYMBOL_ALTERNATE = 16, /* ALTERNATE */ ++ YYSYMBOL_VIRTUAL_MODS = 17, /* VIRTUAL_MODS */ ++ YYSYMBOL_TYPE = 18, /* TYPE */ ++ YYSYMBOL_INTERPRET = 19, /* INTERPRET */ ++ YYSYMBOL_ACTION_TOK = 20, /* ACTION_TOK */ ++ YYSYMBOL_KEY = 21, /* KEY */ ++ YYSYMBOL_ALIAS = 22, /* ALIAS */ ++ YYSYMBOL_GROUP = 23, /* GROUP */ ++ YYSYMBOL_MODIFIER_MAP = 24, /* MODIFIER_MAP */ ++ YYSYMBOL_INDICATOR = 25, /* INDICATOR */ ++ YYSYMBOL_SHAPE = 26, /* SHAPE */ ++ YYSYMBOL_KEYS = 27, /* KEYS */ ++ YYSYMBOL_ROW = 28, /* ROW */ ++ YYSYMBOL_SECTION = 29, /* SECTION */ ++ YYSYMBOL_OVERLAY = 30, /* OVERLAY */ ++ YYSYMBOL_TEXT = 31, /* TEXT */ ++ YYSYMBOL_OUTLINE = 32, /* OUTLINE */ ++ YYSYMBOL_SOLID = 33, /* SOLID */ ++ YYSYMBOL_LOGO = 34, /* LOGO */ ++ YYSYMBOL_VIRTUAL = 35, /* VIRTUAL */ ++ YYSYMBOL_EQUALS = 36, /* EQUALS */ ++ YYSYMBOL_PLUS = 37, /* PLUS */ ++ YYSYMBOL_MINUS = 38, /* MINUS */ ++ YYSYMBOL_DIVIDE = 39, /* DIVIDE */ ++ YYSYMBOL_TIMES = 40, /* TIMES */ ++ YYSYMBOL_OBRACE = 41, /* OBRACE */ ++ YYSYMBOL_CBRACE = 42, /* CBRACE */ ++ YYSYMBOL_OPAREN = 43, /* OPAREN */ ++ YYSYMBOL_CPAREN = 44, /* CPAREN */ ++ YYSYMBOL_OBRACKET = 45, /* OBRACKET */ ++ YYSYMBOL_CBRACKET = 46, /* CBRACKET */ ++ YYSYMBOL_DOT = 47, /* DOT */ ++ YYSYMBOL_COMMA = 48, /* COMMA */ ++ YYSYMBOL_SEMI = 49, /* SEMI */ ++ YYSYMBOL_EXCLAM = 50, /* EXCLAM */ ++ YYSYMBOL_INVERT = 51, /* INVERT */ ++ YYSYMBOL_STRING = 52, /* STRING */ ++ YYSYMBOL_INTEGER = 53, /* INTEGER */ ++ YYSYMBOL_FLOAT = 54, /* FLOAT */ ++ YYSYMBOL_IDENT = 55, /* IDENT */ ++ YYSYMBOL_KEYNAME = 56, /* KEYNAME */ ++ YYSYMBOL_PARTIAL = 57, /* PARTIAL */ ++ YYSYMBOL_DEFAULT = 58, /* DEFAULT */ ++ YYSYMBOL_HIDDEN = 59, /* HIDDEN */ ++ YYSYMBOL_ALPHANUMERIC_KEYS = 60, /* ALPHANUMERIC_KEYS */ ++ YYSYMBOL_MODIFIER_KEYS = 61, /* MODIFIER_KEYS */ ++ YYSYMBOL_KEYPAD_KEYS = 62, /* KEYPAD_KEYS */ ++ YYSYMBOL_FUNCTION_KEYS = 63, /* FUNCTION_KEYS */ ++ YYSYMBOL_ALTERNATE_GROUP = 64, /* ALTERNATE_GROUP */ ++ YYSYMBOL_YYACCEPT = 65, /* $accept */ ++ YYSYMBOL_XkbFile = 66, /* XkbFile */ ++ YYSYMBOL_XkbCompositeMap = 67, /* XkbCompositeMap */ ++ YYSYMBOL_XkbCompositeType = 68, /* XkbCompositeType */ ++ YYSYMBOL_XkbMapConfigList = 69, /* XkbMapConfigList */ ++ YYSYMBOL_XkbMapConfig = 70, /* XkbMapConfig */ ++ YYSYMBOL_FileType = 71, /* FileType */ ++ YYSYMBOL_OptFlags = 72, /* OptFlags */ ++ YYSYMBOL_Flags = 73, /* Flags */ ++ YYSYMBOL_Flag = 74, /* Flag */ ++ YYSYMBOL_DeclList = 75, /* DeclList */ ++ YYSYMBOL_Decl = 76, /* Decl */ ++ YYSYMBOL_VarDecl = 77, /* VarDecl */ ++ YYSYMBOL_KeyNameDecl = 78, /* KeyNameDecl */ ++ YYSYMBOL_KeyAliasDecl = 79, /* KeyAliasDecl */ ++ YYSYMBOL_VModDecl = 80, /* VModDecl */ ++ YYSYMBOL_VModDefList = 81, /* VModDefList */ ++ YYSYMBOL_VModDef = 82, /* VModDef */ ++ YYSYMBOL_InterpretDecl = 83, /* InterpretDecl */ ++ YYSYMBOL_InterpretMatch = 84, /* InterpretMatch */ ++ YYSYMBOL_VarDeclList = 85, /* VarDeclList */ ++ YYSYMBOL_KeyTypeDecl = 86, /* KeyTypeDecl */ ++ YYSYMBOL_SymbolsDecl = 87, /* SymbolsDecl */ ++ YYSYMBOL_SymbolsBody = 88, /* SymbolsBody */ ++ YYSYMBOL_SymbolsVarDecl = 89, /* SymbolsVarDecl */ ++ YYSYMBOL_ArrayInit = 90, /* ArrayInit */ ++ YYSYMBOL_GroupCompatDecl = 91, /* GroupCompatDecl */ ++ YYSYMBOL_ModMapDecl = 92, /* ModMapDecl */ ++ YYSYMBOL_LedMapDecl = 93, /* LedMapDecl */ ++ YYSYMBOL_LedNameDecl = 94, /* LedNameDecl */ ++ YYSYMBOL_ShapeDecl = 95, /* ShapeDecl */ ++ YYSYMBOL_SectionDecl = 96, /* SectionDecl */ ++ YYSYMBOL_SectionBody = 97, /* SectionBody */ ++ YYSYMBOL_SectionBodyItem = 98, /* SectionBodyItem */ ++ YYSYMBOL_RowBody = 99, /* RowBody */ ++ YYSYMBOL_RowBodyItem = 100, /* RowBodyItem */ ++ YYSYMBOL_Keys = 101, /* Keys */ ++ YYSYMBOL_Key = 102, /* Key */ ++ YYSYMBOL_OverlayDecl = 103, /* OverlayDecl */ ++ YYSYMBOL_OverlayKeyList = 104, /* OverlayKeyList */ ++ YYSYMBOL_OverlayKey = 105, /* OverlayKey */ ++ YYSYMBOL_OutlineList = 106, /* OutlineList */ ++ YYSYMBOL_OutlineInList = 107, /* OutlineInList */ ++ YYSYMBOL_CoordList = 108, /* CoordList */ ++ YYSYMBOL_Coord = 109, /* Coord */ ++ YYSYMBOL_DoodadDecl = 110, /* DoodadDecl */ ++ YYSYMBOL_DoodadType = 111, /* DoodadType */ ++ YYSYMBOL_FieldSpec = 112, /* FieldSpec */ ++ YYSYMBOL_Element = 113, /* Element */ ++ YYSYMBOL_OptMergeMode = 114, /* OptMergeMode */ ++ YYSYMBOL_MergeMode = 115, /* MergeMode */ ++ YYSYMBOL_OptExprList = 116, /* OptExprList */ ++ YYSYMBOL_ExprList = 117, /* ExprList */ ++ YYSYMBOL_Expr = 118, /* Expr */ ++ YYSYMBOL_Term = 119, /* Term */ ++ YYSYMBOL_ActionList = 120, /* ActionList */ ++ YYSYMBOL_Action = 121, /* Action */ ++ YYSYMBOL_Lhs = 122, /* Lhs */ ++ YYSYMBOL_Terminal = 123, /* Terminal */ ++ YYSYMBOL_OptKeySymList = 124, /* OptKeySymList */ ++ YYSYMBOL_KeySymList = 125, /* KeySymList */ ++ YYSYMBOL_KeySyms = 126, /* KeySyms */ ++ YYSYMBOL_KeySym = 127, /* KeySym */ ++ YYSYMBOL_SignedNumber = 128, /* SignedNumber */ ++ YYSYMBOL_Number = 129, /* Number */ ++ YYSYMBOL_Float = 130, /* Float */ ++ YYSYMBOL_Integer = 131, /* Integer */ ++ YYSYMBOL_KeyCode = 132, /* KeyCode */ ++ YYSYMBOL_Ident = 133, /* Ident */ ++ YYSYMBOL_String = 134, /* String */ ++ YYSYMBOL_OptMapName = 135, /* OptMapName */ ++ YYSYMBOL_MapName = 136 /* MapName */ ++}; ++typedef enum yysymbol_kind_t yysymbol_kind_t; ++ ++ ++ ++ ++#ifdef short ++# undef short ++#endif ++ ++/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure ++ and (if available) are included ++ so that the code can choose integer types of a good width. */ ++ ++#ifndef __PTRDIFF_MAX__ ++# include /* INFRINGES ON USER NAME SPACE */ ++# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ ++# include /* INFRINGES ON USER NAME SPACE */ ++# define YY_STDINT_H ++# endif ++#endif ++ ++/* Narrow types that promote to a signed type and that can represent a ++ signed or unsigned integer of at least N bits. In tables they can ++ save space and decrease cache pressure. Promoting to a signed type ++ helps avoid bugs in integer arithmetic. */ ++ ++#ifdef __INT_LEAST8_MAX__ ++typedef __INT_LEAST8_TYPE__ yytype_int8; ++#elif defined YY_STDINT_H ++typedef int_least8_t yytype_int8; ++#else ++typedef signed char yytype_int8; ++#endif ++ ++#ifdef __INT_LEAST16_MAX__ ++typedef __INT_LEAST16_TYPE__ yytype_int16; ++#elif defined YY_STDINT_H ++typedef int_least16_t yytype_int16; ++#else ++typedef short yytype_int16; ++#endif ++ ++#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ ++typedef __UINT_LEAST8_TYPE__ yytype_uint8; ++#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ ++ && UINT_LEAST8_MAX <= INT_MAX) ++typedef uint_least8_t yytype_uint8; ++#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX ++typedef unsigned char yytype_uint8; ++#else ++typedef short yytype_uint8; ++#endif ++ ++#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ ++typedef __UINT_LEAST16_TYPE__ yytype_uint16; ++#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ ++ && UINT_LEAST16_MAX <= INT_MAX) ++typedef uint_least16_t yytype_uint16; ++#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX ++typedef unsigned short yytype_uint16; ++#else ++typedef int yytype_uint16; ++#endif ++ ++#ifndef YYPTRDIFF_T ++# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ ++# define YYPTRDIFF_T __PTRDIFF_TYPE__ ++# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ ++# elif defined PTRDIFF_MAX ++# ifndef ptrdiff_t ++# include /* INFRINGES ON USER NAME SPACE */ ++# endif ++# define YYPTRDIFF_T ptrdiff_t ++# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX ++# else ++# define YYPTRDIFF_T long ++# define YYPTRDIFF_MAXIMUM LONG_MAX ++# endif ++#endif ++ ++#ifndef YYSIZE_T ++# ifdef __SIZE_TYPE__ ++# define YYSIZE_T __SIZE_TYPE__ ++# elif defined size_t ++# define YYSIZE_T size_t ++# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ ++# include /* INFRINGES ON USER NAME SPACE */ ++# define YYSIZE_T size_t ++# else ++# define YYSIZE_T unsigned ++# endif ++#endif ++ ++#define YYSIZE_MAXIMUM \ ++ YY_CAST (YYPTRDIFF_T, \ ++ (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ ++ ? YYPTRDIFF_MAXIMUM \ ++ : YY_CAST (YYSIZE_T, -1))) ++ ++#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) ++ ++ ++/* Stored state numbers (used for stacks). */ ++typedef yytype_int16 yy_state_t; ++ ++/* State numbers in computations. */ ++typedef int yy_state_fast_t; ++ ++#ifndef YY_ ++# if defined YYENABLE_NLS && YYENABLE_NLS ++# if ENABLE_NLS ++# include /* INFRINGES ON USER NAME SPACE */ ++# define YY_(Msgid) dgettext ("bison-runtime", Msgid) ++# endif ++# endif ++# ifndef YY_ ++# define YY_(Msgid) Msgid ++# endif ++#endif ++ ++ ++#ifndef YY_ATTRIBUTE_PURE ++# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) ++# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++# else ++# define YY_ATTRIBUTE_PURE ++# endif ++#endif ++ ++#ifndef YY_ATTRIBUTE_UNUSED ++# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) ++# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) ++# else ++# define YY_ATTRIBUTE_UNUSED ++# endif ++#endif ++ ++/* Suppress unused-variable warnings by "using" E. */ ++#if ! defined lint || defined __GNUC__ ++# define YYUSE(E) ((void) (E)) ++#else ++# define YYUSE(E) /* empty */ ++#endif ++ ++#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ ++/* Suppress an incorrect diagnostic about yylval being uninitialized. */ ++# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ ++ _Pragma ("GCC diagnostic push") \ ++ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ ++ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") ++# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ ++ _Pragma ("GCC diagnostic pop") ++#else ++# define YY_INITIAL_VALUE(Value) Value ++#endif ++#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++# define YY_IGNORE_MAYBE_UNINITIALIZED_END ++#endif ++#ifndef YY_INITIAL_VALUE ++# define YY_INITIAL_VALUE(Value) /* Nothing. */ ++#endif ++ ++#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ ++# define YY_IGNORE_USELESS_CAST_BEGIN \ ++ _Pragma ("GCC diagnostic push") \ ++ _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") ++# define YY_IGNORE_USELESS_CAST_END \ ++ _Pragma ("GCC diagnostic pop") ++#endif ++#ifndef YY_IGNORE_USELESS_CAST_BEGIN ++# define YY_IGNORE_USELESS_CAST_BEGIN ++# define YY_IGNORE_USELESS_CAST_END ++#endif ++ ++ ++#define YY_ASSERT(E) ((void) (0 && (E))) ++ ++#if !defined yyoverflow ++ ++/* The parser invokes alloca or malloc; define the necessary symbols. */ ++ ++# ifdef YYSTACK_USE_ALLOCA ++# if YYSTACK_USE_ALLOCA ++# ifdef __GNUC__ ++# define YYSTACK_ALLOC __builtin_alloca ++# elif defined __BUILTIN_VA_ARG_INCR ++# include /* INFRINGES ON USER NAME SPACE */ ++# elif defined _AIX ++# define YYSTACK_ALLOC __alloca ++# elif defined _MSC_VER ++# include /* INFRINGES ON USER NAME SPACE */ ++# define alloca _alloca ++# else ++# define YYSTACK_ALLOC alloca ++# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS ++# include /* INFRINGES ON USER NAME SPACE */ ++ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ ++# ifndef EXIT_SUCCESS ++# define EXIT_SUCCESS 0 ++# endif ++# endif ++# endif ++# endif ++# endif ++ ++# ifdef YYSTACK_ALLOC ++ /* Pacify GCC's 'empty if-body' warning. */ ++# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) ++# ifndef YYSTACK_ALLOC_MAXIMUM ++ /* The OS might guarantee only one guard page at the bottom of the stack, ++ and a page size can be as small as 4096 bytes. So we cannot safely ++ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number ++ to allow for a few compiler-allocated temporary stack slots. */ ++# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ ++# endif ++# else ++# define YYSTACK_ALLOC YYMALLOC ++# define YYSTACK_FREE YYFREE ++# ifndef YYSTACK_ALLOC_MAXIMUM ++# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM ++# endif ++# if (defined __cplusplus && ! defined EXIT_SUCCESS \ ++ && ! ((defined YYMALLOC || defined malloc) \ ++ && (defined YYFREE || defined free))) ++# include /* INFRINGES ON USER NAME SPACE */ ++# ifndef EXIT_SUCCESS ++# define EXIT_SUCCESS 0 ++# endif ++# endif ++# ifndef YYMALLOC ++# define YYMALLOC malloc ++# if ! defined malloc && ! defined EXIT_SUCCESS ++void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ ++# endif ++# endif ++# ifndef YYFREE ++# define YYFREE free ++# if ! defined free && ! defined EXIT_SUCCESS ++void free (void *); /* INFRINGES ON USER NAME SPACE */ ++# endif ++# endif ++# endif ++#endif /* !defined yyoverflow */ ++ ++#if (! defined yyoverflow \ ++ && (! defined __cplusplus \ ++ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) ++ ++/* A type that is properly aligned for any stack member. */ ++union yyalloc ++{ ++ yy_state_t yyss_alloc; ++ YYSTYPE yyvs_alloc; ++}; ++ ++/* The size of the maximum gap between one aligned stack and the next. */ ++# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) ++ ++/* The size of an array large to enough to hold all stacks, each with ++ N elements. */ ++# define YYSTACK_BYTES(N) \ ++ ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ ++ + YYSTACK_GAP_MAXIMUM) ++ ++# define YYCOPY_NEEDED 1 ++ ++/* Relocate STACK from its old location to the new one. The ++ local variables YYSIZE and YYSTACKSIZE give the old and new number of ++ elements in the stack, and YYPTR gives the new location of the ++ stack. Advance YYPTR to a properly aligned location for the next ++ stack. */ ++# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ ++ do \ ++ { \ ++ YYPTRDIFF_T yynewbytes; \ ++ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ ++ Stack = &yyptr->Stack_alloc; \ ++ yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ ++ yyptr += yynewbytes / YYSIZEOF (*yyptr); \ ++ } \ ++ while (0) ++ ++#endif ++ ++#if defined YYCOPY_NEEDED && YYCOPY_NEEDED ++/* Copy COUNT objects from SRC to DST. The source and destination do ++ not overlap. */ ++# ifndef YYCOPY ++# if defined __GNUC__ && 1 < __GNUC__ ++# define YYCOPY(Dst, Src, Count) \ ++ __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) ++# else ++# define YYCOPY(Dst, Src, Count) \ ++ do \ ++ { \ ++ YYPTRDIFF_T yyi; \ ++ for (yyi = 0; yyi < (Count); yyi++) \ ++ (Dst)[yyi] = (Src)[yyi]; \ ++ } \ ++ while (0) ++# endif ++# endif ++#endif /* !YYCOPY_NEEDED */ ++ ++/* YYFINAL -- State number of the termination state. */ ++#define YYFINAL 16 ++/* YYLAST -- Last index in YYTABLE. */ ++#define YYLAST 735 ++ ++/* YYNTOKENS -- Number of terminals. */ ++#define YYNTOKENS 65 ++/* YYNNTS -- Number of nonterminals. */ ++#define YYNNTS 72 ++/* YYNRULES -- Number of rules. */ ++#define YYNRULES 184 ++/* YYNSTATES -- Number of states. */ ++#define YYNSTATES 334 ++ ++/* YYMAXUTOK -- Last valid token kind. */ ++#define YYMAXUTOK 257 ++ ++ ++/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM ++ as returned by yylex, with out-of-bounds checking. */ ++#define YYTRANSLATE(YYX) \ ++ (0 <= (YYX) && (YYX) <= YYMAXUTOK \ ++ ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ ++ : YYSYMBOL_YYUNDEF) ++ ++/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM ++ as returned by yylex. */ ++static const yytype_int8 yytranslate[] = ++{ ++ 0, 4, 5, 6, 7, 8, 9, 10, 11, 2, ++ 12, 13, 14, 15, 16, 2, 2, 2, 2, 2, ++ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, ++ 27, 28, 29, 30, 31, 32, 33, 34, 35, 2, ++ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, ++ 46, 47, 48, 49, 50, 51, 2, 2, 2, 2, ++ 52, 53, 54, 55, 56, 2, 2, 2, 2, 2, ++ 57, 58, 59, 60, 61, 62, 63, 64, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 3, 1, 2 ++}; ++ ++#if YYDEBUG ++ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ ++static const yytype_int16 yyrline[] = ++{ ++ 0, 254, 254, 256, 258, 262, 268, 269, 270, 273, ++ 275, 279, 287, 288, 289, 290, 291, 294, 295, 298, ++ 299, 302, 303, 304, 305, 306, 307, 308, 309, 312, ++ 327, 337, 340, 346, 351, 356, 361, 366, 371, 376, ++ 381, 386, 391, 392, 393, 394, 401, 403, 405, 409, ++ 413, 417, 421, 423, 427, 429, 433, 439, 441, 445, ++ 447, 451, 457, 463, 465, 467, 470, 471, 472, 473, ++ 474, 477, 479, 483, 487, 491, 495, 497, 501, 503, ++ 507, 511, 512, 515, 517, 519, 521, 523, 527, 528, ++ 531, 532, 536, 537, 540, 542, 546, 550, 551, 554, ++ 557, 559, 563, 565, 567, 571, 573, 577, 581, 585, ++ 586, 587, 588, 591, 592, 595, 597, 599, 601, 603, ++ 605, 607, 609, 611, 613, 615, 619, 620, 623, 624, ++ 625, 626, 627, 637, 638, 641, 643, 647, 649, 651, ++ 653, 655, 657, 661, 663, 665, 667, 669, 671, 673, ++ 675, 679, 681, 685, 689, 691, 693, 695, 699, 701, ++ 703, 705, 709, 710, 713, 715, 717, 719, 723, 727, ++ 733, 734, 754, 755, 758, 759, 762, 765, 768, 771, ++ 772, 775, 778, 779, 782 ++}; ++#endif ++ ++/** Accessing symbol of state STATE. */ ++#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) ++ ++#if YYDEBUG || 0 ++/* The user-facing name of the symbol whose (internal) number is ++ YYSYMBOL. No bounds checking. */ ++static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; ++ ++/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. ++ First, the terminals, then, starting at YYNTOKENS, nonterminals. */ ++static const char *const yytname[] = ++{ ++ "END_OF_FILE", "error", "\"invalid token\"", "ERROR_TOK", "XKB_KEYMAP", ++ "XKB_KEYCODES", "XKB_TYPES", "XKB_SYMBOLS", "XKB_COMPATMAP", ++ "XKB_GEOMETRY", "XKB_SEMANTICS", "XKB_LAYOUT", "INCLUDE", "OVERRIDE", ++ "AUGMENT", "REPLACE", "ALTERNATE", "VIRTUAL_MODS", "TYPE", "INTERPRET", ++ "ACTION_TOK", "KEY", "ALIAS", "GROUP", "MODIFIER_MAP", "INDICATOR", ++ "SHAPE", "KEYS", "ROW", "SECTION", "OVERLAY", "TEXT", "OUTLINE", "SOLID", ++ "LOGO", "VIRTUAL", "EQUALS", "PLUS", "MINUS", "DIVIDE", "TIMES", ++ "OBRACE", "CBRACE", "OPAREN", "CPAREN", "OBRACKET", "CBRACKET", "DOT", ++ "COMMA", "SEMI", "EXCLAM", "INVERT", "STRING", "INTEGER", "FLOAT", ++ "IDENT", "KEYNAME", "PARTIAL", "DEFAULT", "HIDDEN", "ALPHANUMERIC_KEYS", ++ "MODIFIER_KEYS", "KEYPAD_KEYS", "FUNCTION_KEYS", "ALTERNATE_GROUP", ++ "$accept", "XkbFile", "XkbCompositeMap", "XkbCompositeType", ++ "XkbMapConfigList", "XkbMapConfig", "FileType", "OptFlags", "Flags", ++ "Flag", "DeclList", "Decl", "VarDecl", "KeyNameDecl", "KeyAliasDecl", ++ "VModDecl", "VModDefList", "VModDef", "InterpretDecl", "InterpretMatch", ++ "VarDeclList", "KeyTypeDecl", "SymbolsDecl", "SymbolsBody", ++ "SymbolsVarDecl", "ArrayInit", "GroupCompatDecl", "ModMapDecl", ++ "LedMapDecl", "LedNameDecl", "ShapeDecl", "SectionDecl", "SectionBody", ++ "SectionBodyItem", "RowBody", "RowBodyItem", "Keys", "Key", ++ "OverlayDecl", "OverlayKeyList", "OverlayKey", "OutlineList", ++ "OutlineInList", "CoordList", "Coord", "DoodadDecl", "DoodadType", ++ "FieldSpec", "Element", "OptMergeMode", "MergeMode", "OptExprList", ++ "ExprList", "Expr", "Term", "ActionList", "Action", "Lhs", "Terminal", ++ "OptKeySymList", "KeySymList", "KeySyms", "KeySym", "SignedNumber", ++ "Number", "Float", "Integer", "KeyCode", "Ident", "String", "OptMapName", ++ "MapName", YY_NULLPTR ++}; ++ ++static const char * ++yysymbol_name (yysymbol_kind_t yysymbol) ++{ ++ return yytname[yysymbol]; ++} ++#endif ++ ++#ifdef YYPRINT ++/* YYTOKNUM[NUM] -- (External) token number corresponding to the ++ (internal) symbol number NUM (which must be that of a token). */ ++static const yytype_int16 yytoknum[] = ++{ ++ 0, 256, 257, 255, 1, 2, 3, 4, 5, 6, ++ 7, 8, 10, 11, 12, 13, 14, 20, 21, 22, ++ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, ++ 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, ++ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, ++ 54, 55, 60, 61, 62, 63, 64, 70, 71, 72, ++ 73, 74, 75, 76, 77 ++}; ++#endif ++ ++#define YYPACT_NINF (-182) ++ ++#define yypact_value_is_default(Yyn) \ ++ ((Yyn) == YYPACT_NINF) ++ ++#define YYTABLE_NINF (-180) ++ ++#define yytable_value_is_error(Yyn) \ ++ 0 ++ ++ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing ++ STATE-NUM. */ ++static const yytype_int16 yypact[] = ++{ ++ 176, -182, -182, -182, -182, -182, -182, -182, -182, -182, ++ 6, -182, -182, 271, 227, -182, -182, -182, -182, -182, ++ -182, -182, -182, -182, -182, -38, -38, -182, -182, -24, ++ -182, 33, 227, -182, 210, -182, 353, 44, 5, -182, ++ -182, -182, -182, -182, -182, 32, -182, 13, 41, -182, ++ -182, -48, 55, 11, -182, 79, 87, 58, -48, -2, ++ 55, -182, 55, 72, -182, -182, -182, 107, -48, -182, ++ 110, -182, -182, -182, -182, -182, -182, -182, -182, -182, ++ -182, -182, -182, -182, -182, -182, 55, -18, -182, 127, ++ 121, -182, 66, -182, 138, -182, 136, -182, -182, -182, ++ 144, 147, -182, 152, 180, 182, 178, 184, 187, 188, ++ 190, 58, 198, 201, 214, 367, 677, 367, -182, -48, ++ -182, 367, 663, 663, 367, 494, 200, 367, 367, 367, ++ 663, 68, 449, 223, -182, -182, 212, 663, -182, -182, ++ -182, -182, -182, -182, -182, -182, -182, 367, 367, 367, ++ 367, 367, -182, -182, 57, 157, -182, 224, -182, -182, ++ -182, -182, -182, 218, 91, -182, 333, -182, 509, 537, ++ 333, 552, -48, 1, -182, -182, 228, 40, 216, 143, ++ 70, 333, 150, 593, 247, -30, 97, -182, 105, -182, ++ 261, 55, 259, 55, -182, -182, 408, -182, -182, -182, ++ 367, -182, 608, -182, -182, -182, 287, -182, -182, 367, ++ 367, 367, 367, 367, -182, 367, 367, -182, 252, -182, ++ 253, 264, 24, 269, 272, 163, -182, 273, 270, -182, ++ -182, -182, 280, 494, 285, -182, -182, 283, 367, -182, ++ 284, 112, 8, -182, -182, 294, -182, 299, -36, 304, ++ 247, 326, 649, 279, 307, -182, 204, 316, -182, 322, ++ 320, 111, 111, -182, -182, 333, 211, -182, -182, 116, ++ 367, -182, 677, -182, 24, -182, -182, -182, 333, -182, ++ 333, -182, -182, -182, -30, -182, -182, -182, -182, 247, ++ 333, 334, -182, 466, -182, 318, -182, -182, -182, -182, ++ -182, -182, 339, -182, -182, -182, 343, 120, 14, 345, ++ -182, 361, 124, -182, -182, -182, -182, 367, -182, 131, ++ -182, -182, 344, 350, 318, 166, 352, 14, -182, -182, ++ -182, -182, -182, -182 ++}; ++ ++ /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. ++ Performed when YYTABLE does not specify something else to do. Zero ++ means the default is an error. */ ++static const yytype_uint8 yydefact[] = ++{ ++ 18, 4, 21, 22, 23, 24, 25, 26, 27, 28, ++ 0, 2, 3, 0, 17, 20, 1, 6, 12, 13, ++ 15, 14, 16, 7, 8, 183, 183, 19, 184, 0, ++ 182, 0, 18, 31, 18, 10, 0, 127, 0, 9, ++ 128, 130, 129, 131, 132, 0, 29, 0, 126, 5, ++ 11, 0, 117, 116, 115, 118, 0, 119, 120, 121, ++ 122, 123, 124, 125, 110, 111, 112, 0, 0, 179, ++ 0, 180, 32, 34, 35, 30, 33, 36, 37, 39, ++ 38, 40, 41, 42, 43, 44, 0, 154, 114, 0, ++ 113, 45, 0, 53, 54, 181, 0, 170, 177, 169, ++ 0, 58, 171, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, ++ 51, 0, 0, 0, 0, 65, 0, 0, 0, 0, ++ 0, 0, 0, 0, 48, 178, 0, 0, 117, 116, ++ 118, 119, 120, 121, 122, 124, 125, 0, 0, 0, ++ 0, 0, 176, 161, 154, 0, 142, 147, 149, 160, ++ 159, 113, 158, 155, 0, 52, 55, 60, 0, 0, ++ 57, 163, 0, 0, 64, 70, 0, 113, 0, 0, ++ 0, 136, 0, 0, 0, 0, 0, 101, 0, 106, ++ 0, 121, 123, 0, 84, 86, 0, 82, 87, 85, ++ 0, 49, 0, 144, 147, 143, 0, 145, 146, 134, ++ 0, 0, 0, 0, 156, 0, 0, 46, 0, 59, ++ 0, 170, 0, 169, 0, 0, 152, 0, 162, 167, ++ 166, 69, 0, 0, 0, 50, 73, 0, 0, 76, ++ 0, 0, 0, 175, 174, 0, 173, 0, 0, 0, ++ 0, 0, 0, 0, 0, 81, 0, 0, 150, 0, ++ 133, 138, 139, 137, 140, 141, 0, 61, 56, 0, ++ 134, 72, 0, 71, 0, 62, 63, 67, 66, 74, ++ 135, 75, 102, 172, 0, 78, 100, 79, 105, 0, ++ 104, 0, 91, 0, 89, 0, 80, 77, 108, 148, ++ 157, 168, 0, 151, 165, 164, 0, 0, 0, 0, ++ 88, 0, 0, 98, 153, 107, 103, 0, 94, 0, ++ 93, 83, 0, 0, 0, 0, 0, 0, 99, 96, ++ 97, 95, 90, 92 ++}; ++ ++ /* YYPGOTO[NTERM-NUM]. */ ++static const yytype_int16 yypgoto[] = ++{ ++ -182, -182, -182, -182, -182, 181, -182, 402, -182, 389, ++ -182, -182, -35, -182, -182, -182, -182, 288, -182, -182, ++ -50, -182, -182, -182, 173, 174, -182, -182, 362, -182, ++ -182, -182, -182, 215, -182, 119, -182, 86, -182, -182, ++ 90, -182, 167, -181, 185, 369, -182, -27, -182, -182, ++ -182, 154, -126, 83, 76, -182, 158, -31, -182, -182, ++ 221, 170, -52, 161, 205, -182, -44, -182, -47, -34, ++ 420, -182 ++}; ++ ++ /* YYDEFGOTO[NTERM-NUM]. */ ++static const yytype_int16 yydefgoto[] = ++{ ++ -1, 10, 11, 25, 34, 12, 26, 36, 14, 15, ++ 37, 46, 167, 73, 74, 75, 92, 93, 76, 100, ++ 168, 77, 78, 173, 174, 175, 79, 80, 195, 82, ++ 83, 84, 196, 197, 293, 294, 319, 320, 198, 312, ++ 313, 186, 187, 188, 189, 199, 86, 154, 88, 47, ++ 48, 259, 260, 181, 156, 225, 226, 157, 158, 227, ++ 228, 229, 230, 245, 246, 159, 160, 136, 161, 162, ++ 29, 30 ++}; ++ ++ /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If ++ positive, shift that token. If negative, reduce the rule whose ++ number is the opposite. If YYTABLE_NINF, syntax error. */ ++static const yytype_int16 yytable[] = ++{ ++ 90, 101, 180, 241, 94, 184, 16, 69, 242, 102, ++ 71, 106, 72, 105, 28, 107, 89, 32, 96, 69, ++ 87, 112, 71, 243, 244, 108, 109, 115, 110, 116, ++ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ++ 97, 61, 62, 232, 63, 64, 65, 66, 67, 233, ++ 95, 98, 114, 97, 49, 317, 40, 41, 42, 43, ++ 44, 243, 244, 68, 98, 222, 99, 133, 69, 70, ++ 318, 71, 94, 169, 33, 90, 90, 98, 177, 99, ++ 183, 50, -68, 90, 190, 90, 45, 202, -68, 163, ++ 90, 89, 89, 91, 176, 87, 87, 194, 87, 89, ++ 209, 89, 115, 87, 116, 87, 89, 95, 307, 184, ++ 87, 98, 237, 185, 119, 120, 204, 204, 238, 204, ++ 204, 90, 90, 69, -109, 231, 71, 102, 210, 211, ++ 212, 213, 111, 219, 219, 103, 90, 89, 89, 247, ++ 217, 87, 87, 104, 224, 248, 113, 249, 219, 90, ++ 212, 213, 89, 250, 282, 90, 87, 108, 301, 253, ++ 250, 194, 316, 117, 274, 89, 323, 219, 250, 87, ++ 118, 89, 324, 326, 121, 87, 1, 122, 102, 327, ++ 210, 211, 212, 213, 124, 123, 177, 210, 211, 212, ++ 213, 325, 236, 125, 210, 211, 212, 213, 155, 239, ++ 164, 190, 176, 214, 166, 90, 87, 170, 331, 271, ++ 179, 272, 182, 35, 238, 39, 126, 292, 127, 128, ++ 129, 89, 305, 203, 205, 87, 207, 208, 130, 131, ++ 102, 132, 206, 2, 3, 4, 5, 6, 7, 8, ++ 9, 210, 211, 212, 213, 224, 90, 134, 210, 211, ++ 212, 213, 38, 297, 135, 137, 178, 300, 292, 200, ++ 215, 201, 89, 216, 234, 235, 87, 2, 3, 4, ++ 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, ++ 22, 23, 24, 256, 2, 3, 4, 5, 6, 7, ++ 8, 9, 185, 261, 262, 263, 264, 251, 265, 266, ++ 252, 267, 268, 138, 139, 54, 140, -124, 141, 142, ++ 143, 144, -179, 61, 145, 270, 146, 278, 274, 273, ++ 295, 280, 147, 148, 210, 211, 212, 213, 149, 275, ++ 171, 258, 279, 281, 290, 150, 151, 95, 98, 152, ++ 69, 153, 284, 71, 138, 139, 54, 140, 285, 141, ++ 142, 143, 144, 287, 61, 145, 296, 146, 18, 19, ++ 20, 21, 22, 147, 148, 298, 299, 289, 238, 149, ++ 210, 211, 212, 213, 311, 308, 150, 151, 95, 98, ++ 152, 69, 153, 314, 71, 138, 139, 54, 140, 315, ++ 141, 142, 143, 144, 321, 61, 145, 322, 146, 329, ++ 328, 332, 13, 27, 147, 148, 276, 165, 277, 81, ++ 149, 255, 310, 333, 330, 286, 85, 150, 151, 95, ++ 98, 152, 69, 153, 302, 71, 138, 139, 54, 140, ++ 303, 141, 142, 191, 144, 288, 192, 145, 193, 63, ++ 64, 65, 66, 269, 304, 306, 31, 283, 0, 0, ++ 254, 0, 0, 0, 0, 0, 0, 0, 68, 0, ++ 0, 0, 0, 69, 0, 0, 71, 138, 139, 54, ++ 140, 0, 141, 142, 191, 144, 0, 192, 145, 193, ++ 63, 64, 65, 66, 138, 139, 54, 140, 0, 141, ++ 142, 143, 144, 291, 61, 145, 0, 146, 0, 68, ++ 0, 0, 0, 0, 69, 0, 0, 71, 309, 0, ++ 0, 0, 138, 139, 54, 140, 68, 141, 142, 143, ++ 144, 69, 61, 145, 71, 146, 0, 138, 139, 54, ++ 140, 0, 141, 142, 143, 144, 0, 61, 145, 171, ++ 146, 0, 0, 0, 172, 0, 0, 0, 0, 69, ++ 0, 218, 71, 0, 0, 138, 139, 54, 140, 68, ++ 141, 142, 143, 144, 69, 61, 145, 71, 146, 0, ++ 138, 139, 54, 140, 0, 141, 142, 143, 144, 220, ++ 61, 221, 0, 146, 0, 0, 0, 68, 0, 0, ++ 0, 0, 69, 222, 0, 71, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 98, 0, 223, 0, 0, ++ 71, 138, 139, 54, 140, 0, 141, 142, 143, 144, ++ 0, 61, 145, 0, 146, 0, 138, 139, 54, 140, ++ 0, 141, 142, 143, 144, 240, 61, 145, 0, 146, ++ 0, 0, 0, 68, 0, 0, 0, 0, 69, 0, ++ 257, 71, 0, 0, 0, 0, 0, 0, 68, 0, ++ 0, 0, 0, 69, 0, 0, 71, 138, 139, 54, ++ 140, 0, 141, 142, 143, 144, 291, 61, 145, 0, ++ 146, 138, 139, 54, 140, 0, 141, 142, 143, 144, ++ 0, 61, 145, 0, 146, 138, 139, 54, 140, 68, ++ 141, 142, 143, 144, 69, 61, 145, 71, 146, 0, ++ 0, 0, 0, 68, 0, 0, 0, 0, 69, 0, ++ 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 69, 0, 0, 71 ++}; ++ ++static const yytype_int16 yycheck[] = ++{ ++ 47, 53, 128, 184, 51, 41, 0, 55, 38, 53, ++ 58, 58, 47, 57, 52, 59, 47, 41, 52, 55, ++ 47, 68, 58, 53, 54, 59, 60, 45, 62, 47, ++ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, ++ 29, 28, 29, 42, 31, 32, 33, 34, 35, 48, ++ 52, 53, 86, 29, 49, 41, 12, 13, 14, 15, ++ 16, 53, 54, 50, 53, 41, 55, 111, 55, 56, ++ 56, 58, 119, 123, 41, 122, 123, 53, 125, 55, ++ 130, 49, 42, 130, 131, 132, 42, 137, 48, 116, ++ 137, 122, 123, 52, 125, 122, 123, 132, 125, 130, ++ 43, 132, 45, 130, 47, 132, 137, 52, 289, 41, ++ 137, 53, 42, 45, 48, 49, 147, 148, 48, 150, ++ 151, 168, 169, 55, 52, 172, 58, 171, 37, 38, ++ 39, 40, 25, 168, 169, 56, 183, 168, 169, 42, ++ 49, 168, 169, 56, 171, 48, 36, 42, 183, 196, ++ 39, 40, 183, 48, 42, 202, 183, 191, 42, 193, ++ 48, 196, 42, 36, 48, 196, 42, 202, 48, 196, ++ 49, 202, 48, 42, 36, 202, 0, 41, 222, 48, ++ 37, 38, 39, 40, 37, 41, 233, 37, 38, 39, ++ 40, 317, 49, 41, 37, 38, 39, 40, 115, 49, ++ 117, 248, 233, 46, 121, 252, 233, 124, 42, 46, ++ 127, 48, 129, 32, 48, 34, 36, 252, 36, 41, ++ 36, 252, 274, 147, 148, 252, 150, 151, 41, 41, ++ 274, 41, 149, 57, 58, 59, 60, 61, 62, 63, ++ 64, 37, 38, 39, 40, 272, 293, 49, 37, 38, ++ 39, 40, 42, 49, 53, 41, 56, 46, 293, 36, ++ 36, 49, 293, 45, 36, 49, 293, 57, 58, 59, ++ 60, 61, 62, 63, 64, 4, 5, 6, 7, 8, ++ 9, 10, 11, 200, 57, 58, 59, 60, 61, 62, ++ 63, 64, 45, 210, 211, 212, 213, 36, 215, 216, ++ 41, 49, 49, 18, 19, 20, 21, 43, 23, 24, ++ 25, 26, 43, 28, 29, 43, 31, 234, 48, 46, ++ 41, 238, 37, 38, 37, 38, 39, 40, 43, 49, ++ 45, 44, 49, 49, 251, 50, 51, 52, 53, 54, ++ 55, 56, 48, 58, 18, 19, 20, 21, 49, 23, ++ 24, 25, 26, 49, 28, 29, 49, 31, 5, 6, ++ 7, 8, 9, 37, 38, 49, 44, 41, 48, 43, ++ 37, 38, 39, 40, 56, 41, 50, 51, 52, 53, ++ 54, 55, 56, 44, 58, 18, 19, 20, 21, 46, ++ 23, 24, 25, 26, 49, 28, 29, 36, 31, 49, ++ 56, 49, 0, 14, 37, 38, 233, 119, 234, 47, ++ 43, 196, 293, 327, 324, 248, 47, 50, 51, 52, ++ 53, 54, 55, 56, 270, 58, 18, 19, 20, 21, ++ 272, 23, 24, 25, 26, 250, 28, 29, 30, 31, ++ 32, 33, 34, 222, 274, 284, 26, 242, -1, -1, ++ 42, -1, -1, -1, -1, -1, -1, -1, 50, -1, ++ -1, -1, -1, 55, -1, -1, 58, 18, 19, 20, ++ 21, -1, 23, 24, 25, 26, -1, 28, 29, 30, ++ 31, 32, 33, 34, 18, 19, 20, 21, -1, 23, ++ 24, 25, 26, 27, 28, 29, -1, 31, -1, 50, ++ -1, -1, -1, -1, 55, -1, -1, 58, 42, -1, ++ -1, -1, 18, 19, 20, 21, 50, 23, 24, 25, ++ 26, 55, 28, 29, 58, 31, -1, 18, 19, 20, ++ 21, -1, 23, 24, 25, 26, -1, 28, 29, 45, ++ 31, -1, -1, -1, 50, -1, -1, -1, -1, 55, ++ -1, 42, 58, -1, -1, 18, 19, 20, 21, 50, ++ 23, 24, 25, 26, 55, 28, 29, 58, 31, -1, ++ 18, 19, 20, 21, -1, 23, 24, 25, 26, 42, ++ 28, 29, -1, 31, -1, -1, -1, 50, -1, -1, ++ -1, -1, 55, 41, -1, 58, -1, -1, -1, -1, ++ -1, -1, -1, -1, -1, 53, -1, 55, -1, -1, ++ 58, 18, 19, 20, 21, -1, 23, 24, 25, 26, ++ -1, 28, 29, -1, 31, -1, 18, 19, 20, 21, ++ -1, 23, 24, 25, 26, 42, 28, 29, -1, 31, ++ -1, -1, -1, 50, -1, -1, -1, -1, 55, -1, ++ 42, 58, -1, -1, -1, -1, -1, -1, 50, -1, ++ -1, -1, -1, 55, -1, -1, 58, 18, 19, 20, ++ 21, -1, 23, 24, 25, 26, 27, 28, 29, -1, ++ 31, 18, 19, 20, 21, -1, 23, 24, 25, 26, ++ -1, 28, 29, -1, 31, 18, 19, 20, 21, 50, ++ 23, 24, 25, 26, 55, 28, 29, 58, 31, -1, ++ -1, -1, -1, 50, -1, -1, -1, -1, 55, -1, ++ -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, ++ -1, -1, 55, -1, -1, 58 ++}; ++ ++ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing ++ symbol of state STATE-NUM. */ ++static const yytype_uint8 yystos[] = ++{ ++ 0, 0, 57, 58, 59, 60, 61, 62, 63, 64, ++ 66, 67, 70, 72, 73, 74, 0, 4, 5, 6, ++ 7, 8, 9, 10, 11, 68, 71, 74, 52, 135, ++ 136, 135, 41, 41, 69, 70, 72, 75, 42, 70, ++ 12, 13, 14, 15, 16, 42, 76, 114, 115, 49, ++ 49, 17, 18, 19, 20, 21, 22, 23, 24, 25, ++ 26, 28, 29, 31, 32, 33, 34, 35, 50, 55, ++ 56, 58, 77, 78, 79, 80, 83, 86, 87, 91, ++ 92, 93, 94, 95, 96, 110, 111, 112, 113, 122, ++ 133, 52, 81, 82, 133, 52, 134, 29, 53, 55, ++ 84, 127, 131, 56, 56, 131, 133, 131, 134, 134, ++ 134, 25, 133, 36, 134, 45, 47, 36, 49, 48, ++ 49, 36, 41, 41, 37, 41, 36, 36, 41, 36, ++ 41, 41, 41, 131, 49, 53, 132, 41, 18, 19, ++ 21, 23, 24, 25, 26, 29, 31, 37, 38, 43, ++ 50, 51, 54, 56, 112, 118, 119, 122, 123, 130, ++ 131, 133, 134, 112, 118, 82, 118, 77, 85, 85, ++ 118, 45, 50, 88, 89, 90, 122, 133, 56, 118, ++ 117, 118, 118, 85, 41, 45, 106, 107, 108, 109, ++ 133, 25, 28, 30, 77, 93, 97, 98, 103, 110, ++ 36, 49, 85, 119, 122, 119, 118, 119, 119, 43, ++ 37, 38, 39, 40, 46, 36, 45, 49, 42, 77, ++ 42, 29, 41, 55, 112, 120, 121, 124, 125, 126, ++ 127, 133, 42, 48, 36, 49, 49, 42, 48, 49, ++ 42, 108, 38, 53, 54, 128, 129, 42, 48, 42, ++ 48, 36, 41, 134, 42, 98, 118, 42, 44, 116, ++ 117, 118, 118, 118, 118, 118, 118, 49, 49, 125, ++ 43, 46, 48, 46, 48, 49, 89, 90, 118, 49, ++ 118, 49, 42, 129, 48, 49, 107, 49, 109, 41, ++ 118, 27, 77, 99, 100, 41, 49, 49, 49, 44, ++ 46, 42, 116, 121, 126, 127, 128, 108, 41, 42, ++ 100, 56, 104, 105, 44, 46, 42, 41, 56, 101, ++ 102, 49, 36, 42, 48, 117, 42, 48, 56, 49, ++ 105, 42, 49, 102 ++}; ++ ++ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ ++static const yytype_uint8 yyr1[] = ++{ ++ 0, 65, 66, 66, 66, 67, 68, 68, 68, 69, ++ 69, 70, 71, 71, 71, 71, 71, 72, 72, 73, ++ 73, 74, 74, 74, 74, 74, 74, 74, 74, 75, ++ 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, ++ 76, 76, 76, 76, 76, 76, 77, 77, 77, 78, ++ 79, 80, 81, 81, 82, 82, 83, 84, 84, 85, ++ 85, 86, 87, 88, 88, 88, 89, 89, 89, 89, ++ 89, 90, 90, 91, 92, 93, 94, 94, 95, 95, ++ 96, 97, 97, 98, 98, 98, 98, 98, 99, 99, ++ 100, 100, 101, 101, 102, 102, 103, 104, 104, 105, ++ 106, 106, 107, 107, 107, 108, 108, 109, 110, 111, ++ 111, 111, 111, 112, 112, 113, 113, 113, 113, 113, ++ 113, 113, 113, 113, 113, 113, 114, 114, 115, 115, ++ 115, 115, 115, 116, 116, 117, 117, 118, 118, 118, ++ 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, ++ 119, 120, 120, 121, 122, 122, 122, 122, 123, 123, ++ 123, 123, 124, 124, 125, 125, 125, 125, 126, 127, ++ 127, 127, 128, 128, 129, 129, 130, 131, 132, 133, ++ 133, 134, 135, 135, 136 ++}; ++ ++ /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ ++static const yytype_int8 yyr2[] = ++{ ++ 0, 2, 1, 1, 1, 7, 1, 1, 1, 2, ++ 1, 7, 1, 1, 1, 1, 1, 1, 0, 2, ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, ++ 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 4, 2, 3, 4, ++ 5, 3, 3, 1, 1, 3, 6, 3, 1, 2, ++ 1, 6, 6, 3, 1, 0, 3, 3, 1, 2, ++ 1, 3, 3, 5, 6, 6, 5, 6, 6, 6, ++ 6, 2, 1, 5, 1, 1, 1, 1, 2, 1, ++ 5, 1, 3, 1, 1, 3, 6, 3, 1, 3, ++ 3, 1, 3, 5, 3, 3, 1, 5, 6, 1, ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, ++ 1, 1, 1, 1, 0, 3, 1, 3, 3, 3, ++ 3, 3, 1, 2, 2, 2, 2, 1, 4, 1, ++ 3, 3, 1, 4, 1, 3, 4, 6, 1, 1, ++ 1, 1, 1, 0, 3, 3, 1, 1, 3, 1, ++ 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 0, 1 ++}; ++ ++ ++enum { YYENOMEM = -2 }; ++ ++#define yyerrok (yyerrstatus = 0) ++#define yyclearin (yychar = YYEMPTY) ++ ++#define YYACCEPT goto yyacceptlab ++#define YYABORT goto yyabortlab ++#define YYERROR goto yyerrorlab ++ ++ ++#define YYRECOVERING() (!!yyerrstatus) ++ ++#define YYBACKUP(Token, Value) \ ++ do \ ++ if (yychar == YYEMPTY) \ ++ { \ ++ yychar = (Token); \ ++ yylval = (Value); \ ++ YYPOPSTACK (yylen); \ ++ yystate = *yyssp; \ ++ goto yybackup; \ ++ } \ ++ else \ ++ { \ ++ yyerror (param, YY_("syntax error: cannot back up")); \ ++ YYERROR; \ ++ } \ ++ while (0) ++ ++/* Backward compatibility with an undocumented macro. ++ Use YYerror or YYUNDEF. */ ++#define YYERRCODE YYUNDEF ++ ++ ++/* Enable debugging if requested. */ ++#if YYDEBUG ++ ++# ifndef YYFPRINTF ++# include /* INFRINGES ON USER NAME SPACE */ ++# define YYFPRINTF fprintf ++# endif ++ ++# define YYDPRINTF(Args) \ ++do { \ ++ if (yydebug) \ ++ YYFPRINTF Args; \ ++} while (0) ++ ++/* This macro is provided for backward compatibility. */ ++# ifndef YY_LOCATION_PRINT ++# define YY_LOCATION_PRINT(File, Loc) ((void) 0) ++# endif ++ ++ ++# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ ++do { \ ++ if (yydebug) \ ++ { \ ++ YYFPRINTF (stderr, "%s ", Title); \ ++ yy_symbol_print (stderr, \ ++ Kind, Value, param); \ ++ YYFPRINTF (stderr, "\n"); \ ++ } \ ++} while (0) ++ ++ ++/*-----------------------------------. ++| Print this symbol's value on YYO. | ++`-----------------------------------*/ ++ ++static void ++yy_symbol_value_print (FILE *yyo, ++ yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, struct parser_param *param) ++{ ++ FILE *yyoutput = yyo; ++ YYUSE (yyoutput); ++ YYUSE (param); ++ if (!yyvaluep) ++ return; ++# ifdef YYPRINT ++ if (yykind < YYNTOKENS) ++ YYPRINT (yyo, yytoknum[yykind], *yyvaluep); ++# endif ++ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++ YYUSE (yykind); ++ YY_IGNORE_MAYBE_UNINITIALIZED_END ++} ++ ++ ++/*---------------------------. ++| Print this symbol on YYO. | ++`---------------------------*/ ++ ++static void ++yy_symbol_print (FILE *yyo, ++ yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, struct parser_param *param) ++{ ++ YYFPRINTF (yyo, "%s %s (", ++ yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); ++ ++ yy_symbol_value_print (yyo, yykind, yyvaluep, param); ++ YYFPRINTF (yyo, ")"); ++} ++ ++/*------------------------------------------------------------------. ++| yy_stack_print -- Print the state stack from its BOTTOM up to its | ++| TOP (included). | ++`------------------------------------------------------------------*/ ++ ++static void ++yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) ++{ ++ YYFPRINTF (stderr, "Stack now"); ++ for (; yybottom <= yytop; yybottom++) ++ { ++ int yybot = *yybottom; ++ YYFPRINTF (stderr, " %d", yybot); ++ } ++ YYFPRINTF (stderr, "\n"); ++} ++ ++# define YY_STACK_PRINT(Bottom, Top) \ ++do { \ ++ if (yydebug) \ ++ yy_stack_print ((Bottom), (Top)); \ ++} while (0) ++ ++ ++/*------------------------------------------------. ++| Report that the YYRULE is going to be reduced. | ++`------------------------------------------------*/ ++ ++static void ++yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, ++ int yyrule, struct parser_param *param) ++{ ++ int yylno = yyrline[yyrule]; ++ int yynrhs = yyr2[yyrule]; ++ int yyi; ++ YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", ++ yyrule - 1, yylno); ++ /* The symbols being reduced. */ ++ for (yyi = 0; yyi < yynrhs; yyi++) ++ { ++ YYFPRINTF (stderr, " $%d = ", yyi + 1); ++ yy_symbol_print (stderr, ++ YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), ++ &yyvsp[(yyi + 1) - (yynrhs)], param); ++ YYFPRINTF (stderr, "\n"); ++ } ++} ++ ++# define YY_REDUCE_PRINT(Rule) \ ++do { \ ++ if (yydebug) \ ++ yy_reduce_print (yyssp, yyvsp, Rule, param); \ ++} while (0) ++ ++/* Nonzero means print parse trace. It is left uninitialized so that ++ multiple parsers can coexist. */ ++int yydebug; ++#else /* !YYDEBUG */ ++# define YYDPRINTF(Args) ((void) 0) ++# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) ++# define YY_STACK_PRINT(Bottom, Top) ++# define YY_REDUCE_PRINT(Rule) ++#endif /* !YYDEBUG */ ++ ++ ++/* YYINITDEPTH -- initial size of the parser's stacks. */ ++#ifndef YYINITDEPTH ++# define YYINITDEPTH 200 ++#endif ++ ++/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only ++ if the built-in stack extension method is used). ++ ++ Do not make this value too large; the results are undefined if ++ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) ++ evaluated with infinite-precision integer arithmetic. */ ++ ++#ifndef YYMAXDEPTH ++# define YYMAXDEPTH 10000 ++#endif ++ ++ ++ ++ ++ ++ ++/*-----------------------------------------------. ++| Release the memory associated to this symbol. | ++`-----------------------------------------------*/ ++ ++static void ++yydestruct (const char *yymsg, ++ yysymbol_kind_t yykind, YYSTYPE *yyvaluep, struct parser_param *param) ++{ ++ YYUSE (yyvaluep); ++ YYUSE (param); ++ if (!yymsg) ++ yymsg = "Deleting"; ++ YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); ++ ++ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++ switch (yykind) ++ { ++ case YYSYMBOL_STRING: /* STRING */ ++#line 238 "parser.y" ++ { free(((*yyvaluep).str)); } ++#line 1321 "parser.c" ++ break; ++ ++ case YYSYMBOL_IDENT: /* IDENT */ ++#line 238 "parser.y" ++ { free(((*yyvaluep).str)); } ++#line 1327 "parser.c" ++ break; ++ ++ case YYSYMBOL_XkbFile: /* XkbFile */ ++#line 236 "parser.y" ++ { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } ++#line 1333 "parser.c" ++ break; ++ ++ case YYSYMBOL_XkbCompositeMap: /* XkbCompositeMap */ ++#line 236 "parser.y" ++ { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } ++#line 1339 "parser.c" ++ break; ++ ++ case YYSYMBOL_XkbMapConfigList: /* XkbMapConfigList */ ++#line 237 "parser.y" ++ { FreeXkbFile(((*yyvaluep).fileList).head); } ++#line 1345 "parser.c" ++ break; ++ ++ case YYSYMBOL_XkbMapConfig: /* XkbMapConfig */ ++#line 236 "parser.y" ++ { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } ++#line 1351 "parser.c" ++ break; ++ ++ case YYSYMBOL_DeclList: /* DeclList */ ++#line 232 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).anyList).head); } ++#line 1357 "parser.c" ++ break; ++ ++ case YYSYMBOL_Decl: /* Decl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).any)); } ++#line 1363 "parser.c" ++ break; ++ ++ case YYSYMBOL_VarDecl: /* VarDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } ++#line 1369 "parser.c" ++ break; ++ ++ case YYSYMBOL_KeyNameDecl: /* KeyNameDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).keyCode)); } ++#line 1375 "parser.c" ++ break; ++ ++ case YYSYMBOL_KeyAliasDecl: /* KeyAliasDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).keyAlias)); } ++#line 1381 "parser.c" ++ break; ++ ++ case YYSYMBOL_VModDecl: /* VModDecl */ ++#line 232 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).vmodList).head); } ++#line 1387 "parser.c" ++ break; ++ ++ case YYSYMBOL_VModDefList: /* VModDefList */ ++#line 232 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).vmodList).head); } ++#line 1393 "parser.c" ++ break; ++ ++ case YYSYMBOL_VModDef: /* VModDef */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).vmod)); } ++#line 1399 "parser.c" ++ break; ++ ++ case YYSYMBOL_InterpretDecl: /* InterpretDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).interp)); } ++#line 1405 "parser.c" ++ break; ++ ++ case YYSYMBOL_InterpretMatch: /* InterpretMatch */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).interp)); } ++#line 1411 "parser.c" ++ break; ++ ++ case YYSYMBOL_VarDeclList: /* VarDeclList */ ++#line 232 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).varList).head); } ++#line 1417 "parser.c" ++ break; ++ ++ case YYSYMBOL_KeyTypeDecl: /* KeyTypeDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).keyType)); } ++#line 1423 "parser.c" ++ break; ++ ++ case YYSYMBOL_SymbolsDecl: /* SymbolsDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).syms)); } ++#line 1429 "parser.c" ++ break; ++ ++ case YYSYMBOL_SymbolsBody: /* SymbolsBody */ ++#line 232 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).varList).head); } ++#line 1435 "parser.c" ++ break; ++ ++ case YYSYMBOL_SymbolsVarDecl: /* SymbolsVarDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } ++#line 1441 "parser.c" ++ break; ++ ++ case YYSYMBOL_ArrayInit: /* ArrayInit */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1447 "parser.c" ++ break; ++ ++ case YYSYMBOL_GroupCompatDecl: /* GroupCompatDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).groupCompat)); } ++#line 1453 "parser.c" ++ break; ++ ++ case YYSYMBOL_ModMapDecl: /* ModMapDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).modMask)); } ++#line 1459 "parser.c" ++ break; ++ ++ case YYSYMBOL_LedMapDecl: /* LedMapDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).ledMap)); } ++#line 1465 "parser.c" ++ break; ++ ++ case YYSYMBOL_LedNameDecl: /* LedNameDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).ledName)); } ++#line 1471 "parser.c" ++ break; ++ ++ case YYSYMBOL_CoordList: /* CoordList */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1477 "parser.c" ++ break; ++ ++ case YYSYMBOL_Coord: /* Coord */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1483 "parser.c" ++ break; ++ ++ case YYSYMBOL_OptExprList: /* OptExprList */ ++#line 232 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).exprList).head); } ++#line 1489 "parser.c" ++ break; ++ ++ case YYSYMBOL_ExprList: /* ExprList */ ++#line 232 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).exprList).head); } ++#line 1495 "parser.c" ++ break; ++ ++ case YYSYMBOL_Expr: /* Expr */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1501 "parser.c" ++ break; ++ ++ case YYSYMBOL_Term: /* Term */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1507 "parser.c" ++ break; ++ ++ case YYSYMBOL_ActionList: /* ActionList */ ++#line 232 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).exprList).head); } ++#line 1513 "parser.c" ++ break; ++ ++ case YYSYMBOL_Action: /* Action */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1519 "parser.c" ++ break; ++ ++ case YYSYMBOL_Lhs: /* Lhs */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1525 "parser.c" ++ break; ++ ++ case YYSYMBOL_Terminal: /* Terminal */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1531 "parser.c" ++ break; ++ ++ case YYSYMBOL_OptKeySymList: /* OptKeySymList */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1537 "parser.c" ++ break; ++ ++ case YYSYMBOL_KeySymList: /* KeySymList */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1543 "parser.c" ++ break; ++ ++ case YYSYMBOL_KeySyms: /* KeySyms */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1549 "parser.c" ++ break; ++ ++ case YYSYMBOL_OptMapName: /* OptMapName */ ++#line 238 "parser.y" ++ { free(((*yyvaluep).str)); } ++#line 1555 "parser.c" ++ break; ++ ++ case YYSYMBOL_MapName: /* MapName */ ++#line 238 "parser.y" ++ { free(((*yyvaluep).str)); } ++#line 1561 "parser.c" ++ break; ++ ++ default: ++ break; ++ } ++ YY_IGNORE_MAYBE_UNINITIALIZED_END ++} ++ ++ ++ ++ ++ ++ ++/*----------. ++| yyparse. | ++`----------*/ ++ ++int ++yyparse (struct parser_param *param) ++{ ++/* Lookahead token kind. */ ++int yychar; ++ ++ ++/* The semantic value of the lookahead symbol. */ ++/* Default value used for initialization, for pacifying older GCCs ++ or non-GCC compilers. */ ++YY_INITIAL_VALUE (static YYSTYPE yyval_default;) ++YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++ ++ /* Number of syntax errors so far. */ ++ int yynerrs = 0; ++ ++ yy_state_fast_t yystate = 0; ++ /* Number of tokens to shift before error messages enabled. */ ++ int yyerrstatus = 0; ++ ++ /* Refer to the stacks through separate pointers, to allow yyoverflow ++ to reallocate them elsewhere. */ ++ ++ /* Their size. */ ++ YYPTRDIFF_T yystacksize = YYINITDEPTH; ++ ++ /* The state stack: array, bottom, top. */ ++ yy_state_t yyssa[YYINITDEPTH]; ++ yy_state_t *yyss = yyssa; ++ yy_state_t *yyssp = yyss; ++ ++ /* The semantic value stack: array, bottom, top. */ ++ YYSTYPE yyvsa[YYINITDEPTH]; ++ YYSTYPE *yyvs = yyvsa; ++ YYSTYPE *yyvsp = yyvs; ++ ++ int yyn; ++ /* The return value of yyparse. */ ++ int yyresult; ++ /* Lookahead symbol kind. */ ++ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; ++ /* The variables used to return semantic value and location from the ++ action routines. */ ++ YYSTYPE yyval; ++ ++ ++ ++#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) ++ ++ /* The number of symbols on the RHS of the reduced rule. ++ Keep to zero when no symbol should be popped. */ ++ int yylen = 0; ++ ++ YYDPRINTF ((stderr, "Starting parse\n")); ++ ++ yychar = YYEMPTY; /* Cause a token to be read. */ ++ goto yysetstate; ++ ++ ++/*------------------------------------------------------------. ++| yynewstate -- push a new state, which is found in yystate. | ++`------------------------------------------------------------*/ ++yynewstate: ++ /* In all cases, when you get here, the value and location stacks ++ have just been pushed. So pushing a state here evens the stacks. */ ++ yyssp++; ++ ++ ++/*--------------------------------------------------------------------. ++| yysetstate -- set current state (the top of the stack) to yystate. | ++`--------------------------------------------------------------------*/ ++yysetstate: ++ YYDPRINTF ((stderr, "Entering state %d\n", yystate)); ++ YY_ASSERT (0 <= yystate && yystate < YYNSTATES); ++ YY_IGNORE_USELESS_CAST_BEGIN ++ *yyssp = YY_CAST (yy_state_t, yystate); ++ YY_IGNORE_USELESS_CAST_END ++ YY_STACK_PRINT (yyss, yyssp); ++ ++ if (yyss + yystacksize - 1 <= yyssp) ++#if !defined yyoverflow && !defined YYSTACK_RELOCATE ++ goto yyexhaustedlab; ++#else ++ { ++ /* Get the current used size of the three stacks, in elements. */ ++ YYPTRDIFF_T yysize = yyssp - yyss + 1; ++ ++# if defined yyoverflow ++ { ++ /* Give user a chance to reallocate the stack. Use copies of ++ these so that the &'s don't force the real ones into ++ memory. */ ++ yy_state_t *yyss1 = yyss; ++ YYSTYPE *yyvs1 = yyvs; ++ ++ /* Each stack pointer address is followed by the size of the ++ data in use in that stack, in bytes. This used to be a ++ conditional around just the two extra args, but that might ++ be undefined if yyoverflow is a macro. */ ++ yyoverflow (YY_("memory exhausted"), ++ &yyss1, yysize * YYSIZEOF (*yyssp), ++ &yyvs1, yysize * YYSIZEOF (*yyvsp), ++ &yystacksize); ++ yyss = yyss1; ++ yyvs = yyvs1; ++ } ++# else /* defined YYSTACK_RELOCATE */ ++ /* Extend the stack our own way. */ ++ if (YYMAXDEPTH <= yystacksize) ++ goto yyexhaustedlab; ++ yystacksize *= 2; ++ if (YYMAXDEPTH < yystacksize) ++ yystacksize = YYMAXDEPTH; ++ ++ { ++ yy_state_t *yyss1 = yyss; ++ union yyalloc *yyptr = ++ YY_CAST (union yyalloc *, ++ YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); ++ if (! yyptr) ++ goto yyexhaustedlab; ++ YYSTACK_RELOCATE (yyss_alloc, yyss); ++ YYSTACK_RELOCATE (yyvs_alloc, yyvs); ++# undef YYSTACK_RELOCATE ++ if (yyss1 != yyssa) ++ YYSTACK_FREE (yyss1); ++ } ++# endif ++ ++ yyssp = yyss + yysize - 1; ++ yyvsp = yyvs + yysize - 1; ++ ++ YY_IGNORE_USELESS_CAST_BEGIN ++ YYDPRINTF ((stderr, "Stack size increased to %ld\n", ++ YY_CAST (long, yystacksize))); ++ YY_IGNORE_USELESS_CAST_END ++ ++ if (yyss + yystacksize - 1 <= yyssp) ++ YYABORT; ++ } ++#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ ++ ++ if (yystate == YYFINAL) ++ YYACCEPT; ++ ++ goto yybackup; ++ ++ ++/*-----------. ++| yybackup. | ++`-----------*/ ++yybackup: ++ /* Do appropriate processing given the current state. Read a ++ lookahead token if we need one and don't already have one. */ ++ ++ /* First try to decide what to do without reference to lookahead token. */ ++ yyn = yypact[yystate]; ++ if (yypact_value_is_default (yyn)) ++ goto yydefault; ++ ++ /* Not known => get a lookahead token if don't already have one. */ ++ ++ /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ ++ if (yychar == YYEMPTY) ++ { ++ YYDPRINTF ((stderr, "Reading a token\n")); ++ yychar = yylex (&yylval, param_scanner); ++ } ++ ++ if (yychar <= END_OF_FILE) ++ { ++ yychar = END_OF_FILE; ++ yytoken = YYSYMBOL_YYEOF; ++ YYDPRINTF ((stderr, "Now at end of input.\n")); ++ } ++ else if (yychar == YYerror) ++ { ++ /* The scanner already issued an error message, process directly ++ to error recovery. But do not keep the error token as ++ lookahead, it is too special and may lead us to an endless ++ loop in error recovery. */ ++ yychar = YYUNDEF; ++ yytoken = YYSYMBOL_YYerror; ++ goto yyerrlab1; ++ } ++ else ++ { ++ yytoken = YYTRANSLATE (yychar); ++ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); ++ } ++ ++ /* If the proper action on seeing token YYTOKEN is to reduce or to ++ detect an error, take that action. */ ++ yyn += yytoken; ++ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) ++ goto yydefault; ++ yyn = yytable[yyn]; ++ if (yyn <= 0) ++ { ++ if (yytable_value_is_error (yyn)) ++ goto yyerrlab; ++ yyn = -yyn; ++ goto yyreduce; ++ } ++ ++ /* Count tokens shifted since error; after three, turn off error ++ status. */ ++ if (yyerrstatus) ++ yyerrstatus--; ++ ++ /* Shift the lookahead token. */ ++ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); ++ yystate = yyn; ++ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++ *++yyvsp = yylval; ++ YY_IGNORE_MAYBE_UNINITIALIZED_END ++ ++ /* Discard the shifted token. */ ++ yychar = YYEMPTY; ++ goto yynewstate; ++ ++ ++/*-----------------------------------------------------------. ++| yydefault -- do the default action for the current state. | ++`-----------------------------------------------------------*/ ++yydefault: ++ yyn = yydefact[yystate]; ++ if (yyn == 0) ++ goto yyerrlab; ++ goto yyreduce; ++ ++ ++/*-----------------------------. ++| yyreduce -- do a reduction. | ++`-----------------------------*/ ++yyreduce: ++ /* yyn is the number of a rule to reduce with. */ ++ yylen = yyr2[yyn]; ++ ++ /* If YYLEN is nonzero, implement the default value of the action: ++ '$$ = $1'. ++ ++ Otherwise, the following line sets YYVAL to garbage. ++ This behavior is undocumented and Bison ++ users should not rely upon it. Assigning to YYVAL ++ unconditionally makes the parser a bit smaller, and it avoids a ++ GCC warning that YYVAL may be used uninitialized. */ ++ yyval = yyvsp[1-yylen]; ++ ++ ++ YY_REDUCE_PRINT (yyn); ++ switch (yyn) ++ { ++ case 2: /* XkbFile: XkbCompositeMap */ ++#line 255 "parser.y" ++ { (yyval.file) = param->rtrn = (yyvsp[0].file); param->more_maps = !!param->rtrn; } ++#line 1835 "parser.c" ++ break; ++ ++ case 3: /* XkbFile: XkbMapConfig */ ++#line 257 "parser.y" ++ { (yyval.file) = param->rtrn = (yyvsp[0].file); param->more_maps = !!param->rtrn; YYACCEPT; } ++#line 1841 "parser.c" ++ break; ++ ++ case 4: /* XkbFile: END_OF_FILE */ ++#line 259 "parser.y" ++ { (yyval.file) = param->rtrn = NULL; param->more_maps = false; } ++#line 1847 "parser.c" ++ break; ++ ++ case 5: /* XkbCompositeMap: OptFlags XkbCompositeType OptMapName OBRACE XkbMapConfigList CBRACE SEMI */ ++#line 265 "parser.y" ++ { (yyval.file) = XkbFileCreate((yyvsp[-5].file_type), (yyvsp[-4].str), (ParseCommon *) (yyvsp[-2].fileList).head, (yyvsp[-6].mapFlags)); } ++#line 1853 "parser.c" ++ break; ++ ++ case 6: /* XkbCompositeType: XKB_KEYMAP */ ++#line 268 "parser.y" ++ { (yyval.file_type) = FILE_TYPE_KEYMAP; } ++#line 1859 "parser.c" ++ break; ++ ++ case 7: /* XkbCompositeType: XKB_SEMANTICS */ ++#line 269 "parser.y" ++ { (yyval.file_type) = FILE_TYPE_KEYMAP; } ++#line 1865 "parser.c" ++ break; ++ ++ case 8: /* XkbCompositeType: XKB_LAYOUT */ ++#line 270 "parser.y" ++ { (yyval.file_type) = FILE_TYPE_KEYMAP; } ++#line 1871 "parser.c" ++ break; ++ ++ case 9: /* XkbMapConfigList: XkbMapConfigList XkbMapConfig */ ++#line 274 "parser.y" ++ { (yyval.fileList).head = (yyvsp[-1].fileList).head; (yyval.fileList).last->common.next = &(yyvsp[0].file)->common; (yyval.fileList).last = (yyvsp[0].file); } ++#line 1877 "parser.c" ++ break; ++ ++ case 10: /* XkbMapConfigList: XkbMapConfig */ ++#line 276 "parser.y" ++ { (yyval.fileList).head = (yyval.fileList).last = (yyvsp[0].file); } ++#line 1883 "parser.c" ++ break; ++ ++ case 11: /* XkbMapConfig: OptFlags FileType OptMapName OBRACE DeclList CBRACE SEMI */ ++#line 282 "parser.y" ++ { ++ (yyval.file) = XkbFileCreate((yyvsp[-5].file_type), (yyvsp[-4].str), (yyvsp[-2].anyList).head, (yyvsp[-6].mapFlags)); ++ } ++#line 1891 "parser.c" ++ break; ++ ++ case 12: /* FileType: XKB_KEYCODES */ ++#line 287 "parser.y" ++ { (yyval.file_type) = FILE_TYPE_KEYCODES; } ++#line 1897 "parser.c" ++ break; ++ ++ case 13: /* FileType: XKB_TYPES */ ++#line 288 "parser.y" ++ { (yyval.file_type) = FILE_TYPE_TYPES; } ++#line 1903 "parser.c" ++ break; ++ ++ case 14: /* FileType: XKB_COMPATMAP */ ++#line 289 "parser.y" ++ { (yyval.file_type) = FILE_TYPE_COMPAT; } ++#line 1909 "parser.c" ++ break; ++ ++ case 15: /* FileType: XKB_SYMBOLS */ ++#line 290 "parser.y" ++ { (yyval.file_type) = FILE_TYPE_SYMBOLS; } ++#line 1915 "parser.c" ++ break; ++ ++ case 16: /* FileType: XKB_GEOMETRY */ ++#line 291 "parser.y" ++ { (yyval.file_type) = FILE_TYPE_GEOMETRY; } ++#line 1921 "parser.c" ++ break; ++ ++ case 17: /* OptFlags: Flags */ ++#line 294 "parser.y" ++ { (yyval.mapFlags) = (yyvsp[0].mapFlags); } ++#line 1927 "parser.c" ++ break; ++ ++ case 18: /* OptFlags: %empty */ ++#line 295 "parser.y" ++ { (yyval.mapFlags) = 0; } ++#line 1933 "parser.c" ++ break; ++ ++ case 19: /* Flags: Flags Flag */ ++#line 298 "parser.y" ++ { (yyval.mapFlags) = ((yyvsp[-1].mapFlags) | (yyvsp[0].mapFlags)); } ++#line 1939 "parser.c" ++ break; ++ ++ case 20: /* Flags: Flag */ ++#line 299 "parser.y" ++ { (yyval.mapFlags) = (yyvsp[0].mapFlags); } ++#line 1945 "parser.c" ++ break; ++ ++ case 21: /* Flag: PARTIAL */ ++#line 302 "parser.y" ++ { (yyval.mapFlags) = MAP_IS_PARTIAL; } ++#line 1951 "parser.c" ++ break; ++ ++ case 22: /* Flag: DEFAULT */ ++#line 303 "parser.y" ++ { (yyval.mapFlags) = MAP_IS_DEFAULT; } ++#line 1957 "parser.c" ++ break; ++ ++ case 23: /* Flag: HIDDEN */ ++#line 304 "parser.y" ++ { (yyval.mapFlags) = MAP_IS_HIDDEN; } ++#line 1963 "parser.c" ++ break; ++ ++ case 24: /* Flag: ALPHANUMERIC_KEYS */ ++#line 305 "parser.y" ++ { (yyval.mapFlags) = MAP_HAS_ALPHANUMERIC; } ++#line 1969 "parser.c" ++ break; ++ ++ case 25: /* Flag: MODIFIER_KEYS */ ++#line 306 "parser.y" ++ { (yyval.mapFlags) = MAP_HAS_MODIFIER; } ++#line 1975 "parser.c" ++ break; ++ ++ case 26: /* Flag: KEYPAD_KEYS */ ++#line 307 "parser.y" ++ { (yyval.mapFlags) = MAP_HAS_KEYPAD; } ++#line 1981 "parser.c" ++ break; ++ ++ case 27: /* Flag: FUNCTION_KEYS */ ++#line 308 "parser.y" ++ { (yyval.mapFlags) = MAP_HAS_FN; } ++#line 1987 "parser.c" ++ break; ++ ++ case 28: /* Flag: ALTERNATE_GROUP */ ++#line 309 "parser.y" ++ { (yyval.mapFlags) = MAP_IS_ALTGR; } ++#line 1993 "parser.c" ++ break; ++ ++ case 29: /* DeclList: DeclList Decl */ ++#line 313 "parser.y" ++ { ++ if ((yyvsp[0].any)) { ++ if ((yyvsp[-1].anyList).head) { ++ (yyval.anyList).head = (yyvsp[-1].anyList).head; (yyvsp[-1].anyList).last->next = (yyvsp[0].any); (yyval.anyList).last = (yyvsp[0].any); ++ } else { ++ (yyval.anyList).head = (yyval.anyList).last = (yyvsp[0].any); ++ } ++ } ++ } ++#line 2007 "parser.c" ++ break; ++ ++ case 30: /* DeclList: DeclList OptMergeMode VModDecl */ ++#line 328 "parser.y" ++ { ++ for (VModDef *vmod = (yyvsp[0].vmodList).head; vmod; vmod = (VModDef *) vmod->common.next) ++ vmod->merge = (yyvsp[-1].merge); ++ if ((yyvsp[-2].anyList).head) { ++ (yyval.anyList).head = (yyvsp[-2].anyList).head; (yyvsp[-2].anyList).last->next = &(yyvsp[0].vmodList).head->common; (yyval.anyList).last = &(yyvsp[0].vmodList).last->common; ++ } else { ++ (yyval.anyList).head = &(yyvsp[0].vmodList).head->common; (yyval.anyList).last = &(yyvsp[0].vmodList).last->common; ++ } ++ } ++#line 2021 "parser.c" ++ break; ++ ++ case 31: /* DeclList: %empty */ ++#line 337 "parser.y" ++ { (yyval.anyList).head = (yyval.anyList).last = NULL; } ++#line 2027 "parser.c" ++ break; ++ ++ case 32: /* Decl: OptMergeMode VarDecl */ ++#line 341 "parser.y" ++ { ++ (yyvsp[0].var)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].var); ++ } ++#line 2036 "parser.c" ++ break; ++ ++ case 33: /* Decl: OptMergeMode InterpretDecl */ ++#line 347 "parser.y" ++ { ++ (yyvsp[0].interp)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].interp); ++ } ++#line 2045 "parser.c" ++ break; ++ ++ case 34: /* Decl: OptMergeMode KeyNameDecl */ ++#line 352 "parser.y" ++ { ++ (yyvsp[0].keyCode)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].keyCode); ++ } ++#line 2054 "parser.c" ++ break; ++ ++ case 35: /* Decl: OptMergeMode KeyAliasDecl */ ++#line 357 "parser.y" ++ { ++ (yyvsp[0].keyAlias)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].keyAlias); ++ } ++#line 2063 "parser.c" ++ break; ++ ++ case 36: /* Decl: OptMergeMode KeyTypeDecl */ ++#line 362 "parser.y" ++ { ++ (yyvsp[0].keyType)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].keyType); ++ } ++#line 2072 "parser.c" ++ break; ++ ++ case 37: /* Decl: OptMergeMode SymbolsDecl */ ++#line 367 "parser.y" ++ { ++ (yyvsp[0].syms)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].syms); ++ } ++#line 2081 "parser.c" ++ break; ++ ++ case 38: /* Decl: OptMergeMode ModMapDecl */ ++#line 372 "parser.y" ++ { ++ (yyvsp[0].modMask)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].modMask); ++ } ++#line 2090 "parser.c" ++ break; ++ ++ case 39: /* Decl: OptMergeMode GroupCompatDecl */ ++#line 377 "parser.y" ++ { ++ (yyvsp[0].groupCompat)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].groupCompat); ++ } ++#line 2099 "parser.c" ++ break; ++ ++ case 40: /* Decl: OptMergeMode LedMapDecl */ ++#line 382 "parser.y" ++ { ++ (yyvsp[0].ledMap)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].ledMap); ++ } ++#line 2108 "parser.c" ++ break; ++ ++ case 41: /* Decl: OptMergeMode LedNameDecl */ ++#line 387 "parser.y" ++ { ++ (yyvsp[0].ledName)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].ledName); ++ } ++#line 2117 "parser.c" ++ break; ++ ++ case 42: /* Decl: OptMergeMode ShapeDecl */ ++#line 391 "parser.y" ++ { (yyval.any) = NULL; } ++#line 2123 "parser.c" ++ break; ++ ++ case 43: /* Decl: OptMergeMode SectionDecl */ ++#line 392 "parser.y" ++ { (yyval.any) = NULL; } ++#line 2129 "parser.c" ++ break; ++ ++ case 44: /* Decl: OptMergeMode DoodadDecl */ ++#line 393 "parser.y" ++ { (yyval.any) = NULL; } ++#line 2135 "parser.c" ++ break; ++ ++ case 45: /* Decl: MergeMode STRING */ ++#line 395 "parser.y" ++ { ++ (yyval.any) = (ParseCommon *) IncludeCreate(param->ctx, (yyvsp[0].str), (yyvsp[-1].merge)); ++ free((yyvsp[0].str)); ++ } ++#line 2144 "parser.c" ++ break; ++ ++ case 46: /* VarDecl: Lhs EQUALS Expr SEMI */ ++#line 402 "parser.y" ++ { (yyval.var) = VarCreate((yyvsp[-3].expr), (yyvsp[-1].expr)); } ++#line 2150 "parser.c" ++ break; ++ ++ case 47: /* VarDecl: Ident SEMI */ ++#line 404 "parser.y" ++ { (yyval.var) = BoolVarCreate((yyvsp[-1].atom), true); } ++#line 2156 "parser.c" ++ break; ++ ++ case 48: /* VarDecl: EXCLAM Ident SEMI */ ++#line 406 "parser.y" ++ { (yyval.var) = BoolVarCreate((yyvsp[-1].atom), false); } ++#line 2162 "parser.c" ++ break; ++ ++ case 49: /* KeyNameDecl: KEYNAME EQUALS KeyCode SEMI */ ++#line 410 "parser.y" ++ { (yyval.keyCode) = KeycodeCreate((yyvsp[-3].atom), (yyvsp[-1].num)); } ++#line 2168 "parser.c" ++ break; ++ ++ case 50: /* KeyAliasDecl: ALIAS KEYNAME EQUALS KEYNAME SEMI */ ++#line 414 "parser.y" ++ { (yyval.keyAlias) = KeyAliasCreate((yyvsp[-3].atom), (yyvsp[-1].atom)); } ++#line 2174 "parser.c" ++ break; ++ ++ case 51: /* VModDecl: VIRTUAL_MODS VModDefList SEMI */ ++#line 418 "parser.y" ++ { (yyval.vmodList) = (yyvsp[-1].vmodList); } ++#line 2180 "parser.c" ++ break; ++ ++ case 52: /* VModDefList: VModDefList COMMA VModDef */ ++#line 422 "parser.y" ++ { (yyval.vmodList).head = (yyvsp[-2].vmodList).head; (yyval.vmodList).last->common.next = &(yyvsp[0].vmod)->common; (yyval.vmodList).last = (yyvsp[0].vmod); } ++#line 2186 "parser.c" ++ break; ++ ++ case 53: /* VModDefList: VModDef */ ++#line 424 "parser.y" ++ { (yyval.vmodList).head = (yyval.vmodList).last = (yyvsp[0].vmod); } ++#line 2192 "parser.c" ++ break; ++ ++ case 54: /* VModDef: Ident */ ++#line 428 "parser.y" ++ { (yyval.vmod) = VModCreate((yyvsp[0].atom), NULL); } ++#line 2198 "parser.c" ++ break; ++ ++ case 55: /* VModDef: Ident EQUALS Expr */ ++#line 430 "parser.y" ++ { (yyval.vmod) = VModCreate((yyvsp[-2].atom), (yyvsp[0].expr)); } ++#line 2204 "parser.c" ++ break; ++ ++ case 56: /* InterpretDecl: INTERPRET InterpretMatch OBRACE VarDeclList CBRACE SEMI */ ++#line 436 "parser.y" ++ { (yyvsp[-4].interp)->def = (yyvsp[-2].varList).head; (yyval.interp) = (yyvsp[-4].interp); } ++#line 2210 "parser.c" ++ break; ++ ++ case 57: /* InterpretMatch: KeySym PLUS Expr */ ++#line 440 "parser.y" ++ { (yyval.interp) = InterpCreate((yyvsp[-2].keysym), (yyvsp[0].expr)); } ++#line 2216 "parser.c" ++ break; ++ ++ case 58: /* InterpretMatch: KeySym */ ++#line 442 "parser.y" ++ { (yyval.interp) = InterpCreate((yyvsp[0].keysym), NULL); } ++#line 2222 "parser.c" ++ break; ++ ++ case 59: /* VarDeclList: VarDeclList VarDecl */ ++#line 446 "parser.y" ++ { (yyval.varList).head = (yyvsp[-1].varList).head; (yyval.varList).last->common.next = &(yyvsp[0].var)->common; (yyval.varList).last = (yyvsp[0].var); } ++#line 2228 "parser.c" ++ break; ++ ++ case 60: /* VarDeclList: VarDecl */ ++#line 448 "parser.y" ++ { (yyval.varList).head = (yyval.varList).last = (yyvsp[0].var); } ++#line 2234 "parser.c" ++ break; ++ ++ case 61: /* KeyTypeDecl: TYPE String OBRACE VarDeclList CBRACE SEMI */ ++#line 454 "parser.y" ++ { (yyval.keyType) = KeyTypeCreate((yyvsp[-4].atom), (yyvsp[-2].varList).head); } ++#line 2240 "parser.c" ++ break; ++ ++ case 62: /* SymbolsDecl: KEY KEYNAME OBRACE SymbolsBody CBRACE SEMI */ ++#line 460 "parser.y" ++ { (yyval.syms) = SymbolsCreate((yyvsp[-4].atom), (yyvsp[-2].varList).head); } ++#line 2246 "parser.c" ++ break; ++ ++ case 63: /* SymbolsBody: SymbolsBody COMMA SymbolsVarDecl */ ++#line 464 "parser.y" ++ { (yyval.varList).head = (yyvsp[-2].varList).head; (yyval.varList).last->common.next = &(yyvsp[0].var)->common; (yyval.varList).last = (yyvsp[0].var); } ++#line 2252 "parser.c" ++ break; ++ ++ case 64: /* SymbolsBody: SymbolsVarDecl */ ++#line 466 "parser.y" ++ { (yyval.varList).head = (yyval.varList).last = (yyvsp[0].var); } ++#line 2258 "parser.c" ++ break; ++ ++ case 65: /* SymbolsBody: %empty */ ++#line 467 "parser.y" ++ { (yyval.varList).head = (yyval.varList).last = NULL; } ++#line 2264 "parser.c" ++ break; ++ ++ case 66: /* SymbolsVarDecl: Lhs EQUALS Expr */ ++#line 470 "parser.y" ++ { (yyval.var) = VarCreate((yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2270 "parser.c" ++ break; ++ ++ case 67: /* SymbolsVarDecl: Lhs EQUALS ArrayInit */ ++#line 471 "parser.y" ++ { (yyval.var) = VarCreate((yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2276 "parser.c" ++ break; ++ ++ case 68: /* SymbolsVarDecl: Ident */ ++#line 472 "parser.y" ++ { (yyval.var) = BoolVarCreate((yyvsp[0].atom), true); } ++#line 2282 "parser.c" ++ break; ++ ++ case 69: /* SymbolsVarDecl: EXCLAM Ident */ ++#line 473 "parser.y" ++ { (yyval.var) = BoolVarCreate((yyvsp[0].atom), false); } ++#line 2288 "parser.c" ++ break; ++ ++ case 70: /* SymbolsVarDecl: ArrayInit */ ++#line 474 "parser.y" ++ { (yyval.var) = VarCreate(NULL, (yyvsp[0].expr)); } ++#line 2294 "parser.c" ++ break; ++ ++ case 71: /* ArrayInit: OBRACKET OptKeySymList CBRACKET */ ++#line 478 "parser.y" ++ { (yyval.expr) = (yyvsp[-1].expr); } ++#line 2300 "parser.c" ++ break; ++ ++ case 72: /* ArrayInit: OBRACKET ActionList CBRACKET */ ++#line 480 "parser.y" ++ { (yyval.expr) = ExprCreateActionList((yyvsp[-1].exprList).head); } ++#line 2306 "parser.c" ++ break; ++ ++ case 73: /* GroupCompatDecl: GROUP Integer EQUALS Expr SEMI */ ++#line 484 "parser.y" ++ { (yyval.groupCompat) = GroupCompatCreate((yyvsp[-3].num), (yyvsp[-1].expr)); } ++#line 2312 "parser.c" ++ break; ++ ++ case 74: /* ModMapDecl: MODIFIER_MAP Ident OBRACE ExprList CBRACE SEMI */ ++#line 488 "parser.y" ++ { (yyval.modMask) = ModMapCreate((yyvsp[-4].atom), (yyvsp[-2].exprList).head); } ++#line 2318 "parser.c" ++ break; ++ ++ case 75: /* LedMapDecl: INDICATOR String OBRACE VarDeclList CBRACE SEMI */ ++#line 492 "parser.y" ++ { (yyval.ledMap) = LedMapCreate((yyvsp[-4].atom), (yyvsp[-2].varList).head); } ++#line 2324 "parser.c" ++ break; ++ ++ case 76: /* LedNameDecl: INDICATOR Integer EQUALS Expr SEMI */ ++#line 496 "parser.y" ++ { (yyval.ledName) = LedNameCreate((yyvsp[-3].num), (yyvsp[-1].expr), false); } ++#line 2330 "parser.c" ++ break; ++ ++ case 77: /* LedNameDecl: VIRTUAL INDICATOR Integer EQUALS Expr SEMI */ ++#line 498 "parser.y" ++ { (yyval.ledName) = LedNameCreate((yyvsp[-3].num), (yyvsp[-1].expr), true); } ++#line 2336 "parser.c" ++ break; ++ ++ case 78: /* ShapeDecl: SHAPE String OBRACE OutlineList CBRACE SEMI */ ++#line 502 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2342 "parser.c" ++ break; ++ ++ case 79: /* ShapeDecl: SHAPE String OBRACE CoordList CBRACE SEMI */ ++#line 504 "parser.y" ++ { (void) (yyvsp[-2].expr); (yyval.geom) = NULL; } ++#line 2348 "parser.c" ++ break; ++ ++ case 80: /* SectionDecl: SECTION String OBRACE SectionBody CBRACE SEMI */ ++#line 508 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2354 "parser.c" ++ break; ++ ++ case 81: /* SectionBody: SectionBody SectionBodyItem */ ++#line 511 "parser.y" ++ { (yyval.geom) = NULL;} ++#line 2360 "parser.c" ++ break; ++ ++ case 82: /* SectionBody: SectionBodyItem */ ++#line 512 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2366 "parser.c" ++ break; ++ ++ case 83: /* SectionBodyItem: ROW OBRACE RowBody CBRACE SEMI */ ++#line 516 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2372 "parser.c" ++ break; ++ ++ case 84: /* SectionBodyItem: VarDecl */ ++#line 518 "parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[0].var)); (yyval.geom) = NULL; } ++#line 2378 "parser.c" ++ break; ++ ++ case 85: /* SectionBodyItem: DoodadDecl */ ++#line 520 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2384 "parser.c" ++ break; ++ ++ case 86: /* SectionBodyItem: LedMapDecl */ ++#line 522 "parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[0].ledMap)); (yyval.geom) = NULL; } ++#line 2390 "parser.c" ++ break; ++ ++ case 87: /* SectionBodyItem: OverlayDecl */ ++#line 524 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2396 "parser.c" ++ break; ++ ++ case 88: /* RowBody: RowBody RowBodyItem */ ++#line 527 "parser.y" ++ { (yyval.geom) = NULL;} ++#line 2402 "parser.c" ++ break; ++ ++ case 89: /* RowBody: RowBodyItem */ ++#line 528 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2408 "parser.c" ++ break; ++ ++ case 90: /* RowBodyItem: KEYS OBRACE Keys CBRACE SEMI */ ++#line 531 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2414 "parser.c" ++ break; ++ ++ case 91: /* RowBodyItem: VarDecl */ ++#line 533 "parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[0].var)); (yyval.geom) = NULL; } ++#line 2420 "parser.c" ++ break; ++ ++ case 92: /* Keys: Keys COMMA Key */ ++#line 536 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2426 "parser.c" ++ break; ++ ++ case 93: /* Keys: Key */ ++#line 537 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2432 "parser.c" ++ break; ++ ++ case 94: /* Key: KEYNAME */ ++#line 541 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2438 "parser.c" ++ break; ++ ++ case 95: /* Key: OBRACE ExprList CBRACE */ ++#line 543 "parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[-1].exprList).head); (yyval.geom) = NULL; } ++#line 2444 "parser.c" ++ break; ++ ++ case 96: /* OverlayDecl: OVERLAY String OBRACE OverlayKeyList CBRACE SEMI */ ++#line 547 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2450 "parser.c" ++ break; ++ ++ case 97: /* OverlayKeyList: OverlayKeyList COMMA OverlayKey */ ++#line 550 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2456 "parser.c" ++ break; ++ ++ case 98: /* OverlayKeyList: OverlayKey */ ++#line 551 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2462 "parser.c" ++ break; ++ ++ case 99: /* OverlayKey: KEYNAME EQUALS KEYNAME */ ++#line 554 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2468 "parser.c" ++ break; ++ ++ case 100: /* OutlineList: OutlineList COMMA OutlineInList */ ++#line 558 "parser.y" ++ { (yyval.geom) = NULL;} ++#line 2474 "parser.c" ++ break; ++ ++ case 101: /* OutlineList: OutlineInList */ ++#line 560 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2480 "parser.c" ++ break; ++ ++ case 102: /* OutlineInList: OBRACE CoordList CBRACE */ ++#line 564 "parser.y" ++ { (void) (yyvsp[-1].expr); (yyval.geom) = NULL; } ++#line 2486 "parser.c" ++ break; ++ ++ case 103: /* OutlineInList: Ident EQUALS OBRACE CoordList CBRACE */ ++#line 566 "parser.y" ++ { (void) (yyvsp[-1].expr); (yyval.geom) = NULL; } ++#line 2492 "parser.c" ++ break; ++ ++ case 104: /* OutlineInList: Ident EQUALS Expr */ ++#line 568 "parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[0].expr)); (yyval.geom) = NULL; } ++#line 2498 "parser.c" ++ break; ++ ++ case 105: /* CoordList: CoordList COMMA Coord */ ++#line 572 "parser.y" ++ { (void) (yyvsp[-2].expr); (void) (yyvsp[0].expr); (yyval.expr) = NULL; } ++#line 2504 "parser.c" ++ break; ++ ++ case 106: /* CoordList: Coord */ ++#line 574 "parser.y" ++ { (void) (yyvsp[0].expr); (yyval.expr) = NULL; } ++#line 2510 "parser.c" ++ break; ++ ++ case 107: /* Coord: OBRACKET SignedNumber COMMA SignedNumber CBRACKET */ ++#line 578 "parser.y" ++ { (yyval.expr) = NULL; } ++#line 2516 "parser.c" ++ break; ++ ++ case 108: /* DoodadDecl: DoodadType String OBRACE VarDeclList CBRACE SEMI */ ++#line 582 "parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[-2].varList).head); (yyval.geom) = NULL; } ++#line 2522 "parser.c" ++ break; ++ ++ case 109: /* DoodadType: TEXT */ ++#line 585 "parser.y" ++ { (yyval.num) = 0; } ++#line 2528 "parser.c" ++ break; ++ ++ case 110: /* DoodadType: OUTLINE */ ++#line 586 "parser.y" ++ { (yyval.num) = 0; } ++#line 2534 "parser.c" ++ break; ++ ++ case 111: /* DoodadType: SOLID */ ++#line 587 "parser.y" ++ { (yyval.num) = 0; } ++#line 2540 "parser.c" ++ break; ++ ++ case 112: /* DoodadType: LOGO */ ++#line 588 "parser.y" ++ { (yyval.num) = 0; } ++#line 2546 "parser.c" ++ break; ++ ++ case 113: /* FieldSpec: Ident */ ++#line 591 "parser.y" ++ { (yyval.atom) = (yyvsp[0].atom); } ++#line 2552 "parser.c" ++ break; ++ ++ case 114: /* FieldSpec: Element */ ++#line 592 "parser.y" ++ { (yyval.atom) = (yyvsp[0].atom); } ++#line 2558 "parser.c" ++ break; ++ ++ case 115: /* Element: ACTION_TOK */ ++#line 596 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "action"); } ++#line 2564 "parser.c" ++ break; ++ ++ case 116: /* Element: INTERPRET */ ++#line 598 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "interpret"); } ++#line 2570 "parser.c" ++ break; ++ ++ case 117: /* Element: TYPE */ ++#line 600 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "type"); } ++#line 2576 "parser.c" ++ break; ++ ++ case 118: /* Element: KEY */ ++#line 602 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "key"); } ++#line 2582 "parser.c" ++ break; ++ ++ case 119: /* Element: GROUP */ ++#line 604 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "group"); } ++#line 2588 "parser.c" ++ break; ++ ++ case 120: /* Element: MODIFIER_MAP */ ++#line 606 "parser.y" ++ {(yyval.atom) = xkb_atom_intern_literal(param->ctx, "modifier_map");} ++#line 2594 "parser.c" ++ break; ++ ++ case 121: /* Element: INDICATOR */ ++#line 608 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "indicator"); } ++#line 2600 "parser.c" ++ break; ++ ++ case 122: /* Element: SHAPE */ ++#line 610 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "shape"); } ++#line 2606 "parser.c" ++ break; ++ ++ case 123: /* Element: ROW */ ++#line 612 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "row"); } ++#line 2612 "parser.c" ++ break; ++ ++ case 124: /* Element: SECTION */ ++#line 614 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "section"); } ++#line 2618 "parser.c" ++ break; ++ ++ case 125: /* Element: TEXT */ ++#line 616 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "text"); } ++#line 2624 "parser.c" ++ break; ++ ++ case 126: /* OptMergeMode: MergeMode */ ++#line 619 "parser.y" ++ { (yyval.merge) = (yyvsp[0].merge); } ++#line 2630 "parser.c" ++ break; ++ ++ case 127: /* OptMergeMode: %empty */ ++#line 620 "parser.y" ++ { (yyval.merge) = MERGE_DEFAULT; } ++#line 2636 "parser.c" ++ break; ++ ++ case 128: /* MergeMode: INCLUDE */ ++#line 623 "parser.y" ++ { (yyval.merge) = MERGE_DEFAULT; } ++#line 2642 "parser.c" ++ break; ++ ++ case 129: /* MergeMode: AUGMENT */ ++#line 624 "parser.y" ++ { (yyval.merge) = MERGE_AUGMENT; } ++#line 2648 "parser.c" ++ break; ++ ++ case 130: /* MergeMode: OVERRIDE */ ++#line 625 "parser.y" ++ { (yyval.merge) = MERGE_OVERRIDE; } ++#line 2654 "parser.c" ++ break; ++ ++ case 131: /* MergeMode: REPLACE */ ++#line 626 "parser.y" ++ { (yyval.merge) = MERGE_REPLACE; } ++#line 2660 "parser.c" ++ break; ++ ++ case 132: /* MergeMode: ALTERNATE */ ++#line 628 "parser.y" ++ { ++ /* ++ * This used to be MERGE_ALT_FORM. This functionality was ++ * unused and has been removed. ++ */ ++ (yyval.merge) = MERGE_DEFAULT; ++ } ++#line 2672 "parser.c" ++ break; ++ ++ case 133: /* OptExprList: ExprList */ ++#line 637 "parser.y" ++ { (yyval.exprList) = (yyvsp[0].exprList); } ++#line 2678 "parser.c" ++ break; ++ ++ case 134: /* OptExprList: %empty */ ++#line 638 "parser.y" ++ { (yyval.exprList).head = (yyval.exprList).last = NULL; } ++#line 2684 "parser.c" ++ break; ++ ++ case 135: /* ExprList: ExprList COMMA Expr */ ++#line 642 "parser.y" ++ { (yyval.exprList).head = (yyvsp[-2].exprList).head; (yyval.exprList).last->common.next = &(yyvsp[0].expr)->common; (yyval.exprList).last = (yyvsp[0].expr); } ++#line 2690 "parser.c" ++ break; ++ ++ case 136: /* ExprList: Expr */ ++#line 644 "parser.y" ++ { (yyval.exprList).head = (yyval.exprList).last = (yyvsp[0].expr); } ++#line 2696 "parser.c" ++ break; ++ ++ case 137: /* Expr: Expr DIVIDE Expr */ ++#line 648 "parser.y" ++ { (yyval.expr) = ExprCreateBinary(EXPR_DIVIDE, (yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2702 "parser.c" ++ break; ++ ++ case 138: /* Expr: Expr PLUS Expr */ ++#line 650 "parser.y" ++ { (yyval.expr) = ExprCreateBinary(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2708 "parser.c" ++ break; ++ ++ case 139: /* Expr: Expr MINUS Expr */ ++#line 652 "parser.y" ++ { (yyval.expr) = ExprCreateBinary(EXPR_SUBTRACT, (yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2714 "parser.c" ++ break; ++ ++ case 140: /* Expr: Expr TIMES Expr */ ++#line 654 "parser.y" ++ { (yyval.expr) = ExprCreateBinary(EXPR_MULTIPLY, (yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2720 "parser.c" ++ break; ++ ++ case 141: /* Expr: Lhs EQUALS Expr */ ++#line 656 "parser.y" ++ { (yyval.expr) = ExprCreateBinary(EXPR_ASSIGN, (yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2726 "parser.c" ++ break; ++ ++ case 142: /* Expr: Term */ ++#line 658 "parser.y" ++ { (yyval.expr) = (yyvsp[0].expr); } ++#line 2732 "parser.c" ++ break; ++ ++ case 143: /* Term: MINUS Term */ ++#line 662 "parser.y" ++ { (yyval.expr) = ExprCreateUnary(EXPR_NEGATE, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } ++#line 2738 "parser.c" ++ break; ++ ++ case 144: /* Term: PLUS Term */ ++#line 664 "parser.y" ++ { (yyval.expr) = ExprCreateUnary(EXPR_UNARY_PLUS, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } ++#line 2744 "parser.c" ++ break; ++ ++ case 145: /* Term: EXCLAM Term */ ++#line 666 "parser.y" ++ { (yyval.expr) = ExprCreateUnary(EXPR_NOT, EXPR_TYPE_BOOLEAN, (yyvsp[0].expr)); } ++#line 2750 "parser.c" ++ break; ++ ++ case 146: /* Term: INVERT Term */ ++#line 668 "parser.y" ++ { (yyval.expr) = ExprCreateUnary(EXPR_INVERT, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } ++#line 2756 "parser.c" ++ break; ++ ++ case 147: /* Term: Lhs */ ++#line 670 "parser.y" ++ { (yyval.expr) = (yyvsp[0].expr); } ++#line 2762 "parser.c" ++ break; ++ ++ case 148: /* Term: FieldSpec OPAREN OptExprList CPAREN */ ++#line 672 "parser.y" ++ { (yyval.expr) = ExprCreateAction((yyvsp[-3].atom), (yyvsp[-1].exprList).head); } ++#line 2768 "parser.c" ++ break; ++ ++ case 149: /* Term: Terminal */ ++#line 674 "parser.y" ++ { (yyval.expr) = (yyvsp[0].expr); } ++#line 2774 "parser.c" ++ break; ++ ++ case 150: /* Term: OPAREN Expr CPAREN */ ++#line 676 "parser.y" ++ { (yyval.expr) = (yyvsp[-1].expr); } ++#line 2780 "parser.c" ++ break; ++ ++ case 151: /* ActionList: ActionList COMMA Action */ ++#line 680 "parser.y" ++ { (yyval.exprList).head = (yyvsp[-2].exprList).head; (yyval.exprList).last->common.next = &(yyvsp[0].expr)->common; (yyval.exprList).last = (yyvsp[0].expr); } ++#line 2786 "parser.c" ++ break; ++ ++ case 152: /* ActionList: Action */ ++#line 682 "parser.y" ++ { (yyval.exprList).head = (yyval.exprList).last = (yyvsp[0].expr); } ++#line 2792 "parser.c" ++ break; ++ ++ case 153: /* Action: FieldSpec OPAREN OptExprList CPAREN */ ++#line 686 "parser.y" ++ { (yyval.expr) = ExprCreateAction((yyvsp[-3].atom), (yyvsp[-1].exprList).head); } ++#line 2798 "parser.c" ++ break; ++ ++ case 154: /* Lhs: FieldSpec */ ++#line 690 "parser.y" ++ { (yyval.expr) = ExprCreateIdent((yyvsp[0].atom)); } ++#line 2804 "parser.c" ++ break; ++ ++ case 155: /* Lhs: FieldSpec DOT FieldSpec */ ++#line 692 "parser.y" ++ { (yyval.expr) = ExprCreateFieldRef((yyvsp[-2].atom), (yyvsp[0].atom)); } ++#line 2810 "parser.c" ++ break; ++ ++ case 156: /* Lhs: FieldSpec OBRACKET Expr CBRACKET */ ++#line 694 "parser.y" ++ { (yyval.expr) = ExprCreateArrayRef(XKB_ATOM_NONE, (yyvsp[-3].atom), (yyvsp[-1].expr)); } ++#line 2816 "parser.c" ++ break; ++ ++ case 157: /* Lhs: FieldSpec DOT FieldSpec OBRACKET Expr CBRACKET */ ++#line 696 "parser.y" ++ { (yyval.expr) = ExprCreateArrayRef((yyvsp[-5].atom), (yyvsp[-3].atom), (yyvsp[-1].expr)); } ++#line 2822 "parser.c" ++ break; ++ ++ case 158: /* Terminal: String */ ++#line 700 "parser.y" ++ { (yyval.expr) = ExprCreateString((yyvsp[0].atom)); } ++#line 2828 "parser.c" ++ break; ++ ++ case 159: /* Terminal: Integer */ ++#line 702 "parser.y" ++ { (yyval.expr) = ExprCreateInteger((yyvsp[0].num)); } ++#line 2834 "parser.c" ++ break; ++ ++ case 160: /* Terminal: Float */ ++#line 704 "parser.y" ++ { (yyval.expr) = ExprCreateFloat(/* Discard $1 */); } ++#line 2840 "parser.c" ++ break; ++ ++ case 161: /* Terminal: KEYNAME */ ++#line 706 "parser.y" ++ { (yyval.expr) = ExprCreateKeyName((yyvsp[0].atom)); } ++#line 2846 "parser.c" ++ break; ++ ++ case 162: /* OptKeySymList: KeySymList */ ++#line 709 "parser.y" ++ { (yyval.expr) = (yyvsp[0].expr); } ++#line 2852 "parser.c" ++ break; ++ ++ case 163: /* OptKeySymList: %empty */ ++#line 710 "parser.y" ++ { (yyval.expr) = NULL; } ++#line 2858 "parser.c" ++ break; ++ ++ case 164: /* KeySymList: KeySymList COMMA KeySym */ ++#line 714 "parser.y" ++ { (yyval.expr) = ExprAppendKeysymList((yyvsp[-2].expr), (yyvsp[0].keysym)); } ++#line 2864 "parser.c" ++ break; ++ ++ case 165: /* KeySymList: KeySymList COMMA KeySyms */ ++#line 716 "parser.y" ++ { (yyval.expr) = ExprAppendMultiKeysymList((yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2870 "parser.c" ++ break; ++ ++ case 166: /* KeySymList: KeySym */ ++#line 718 "parser.y" ++ { (yyval.expr) = ExprCreateKeysymList((yyvsp[0].keysym)); } ++#line 2876 "parser.c" ++ break; ++ ++ case 167: /* KeySymList: KeySyms */ ++#line 720 "parser.y" ++ { (yyval.expr) = ExprCreateMultiKeysymList((yyvsp[0].expr)); } ++#line 2882 "parser.c" ++ break; ++ ++ case 168: /* KeySyms: OBRACE KeySymList CBRACE */ ++#line 724 "parser.y" ++ { (yyval.expr) = (yyvsp[-1].expr); } ++#line 2888 "parser.c" ++ break; ++ ++ case 169: /* KeySym: IDENT */ ++#line 728 "parser.y" ++ { ++ if (!resolve_keysym((yyvsp[0].str), &(yyval.keysym))) ++ parser_warn(param, "unrecognized keysym \"%s\"", (yyvsp[0].str)); ++ free((yyvsp[0].str)); ++ } ++#line 2898 "parser.c" ++ break; ++ ++ case 170: /* KeySym: SECTION */ ++#line 733 "parser.y" ++ { (yyval.keysym) = XKB_KEY_section; } ++#line 2904 "parser.c" ++ break; ++ ++ case 171: /* KeySym: Integer */ ++#line 735 "parser.y" ++ { ++ if ((yyvsp[0].num) < 0) { ++ parser_warn(param, "unrecognized keysym \"%"PRId64"\"", (yyvsp[0].num)); ++ (yyval.keysym) = XKB_KEY_NoSymbol; ++ } ++ else if ((yyvsp[0].num) < 10) { /* XKB_KEY_0 .. XKB_KEY_9 */ ++ (yyval.keysym) = XKB_KEY_0 + (xkb_keysym_t) (yyvsp[0].num); ++ } ++ else { ++ char buf[32]; ++ snprintf(buf, sizeof(buf), "0x%"PRIx64, (yyvsp[0].num)); ++ if (!resolve_keysym(buf, &(yyval.keysym))) { ++ parser_warn(param, "unrecognized keysym \"%s\"", buf); ++ (yyval.keysym) = XKB_KEY_NoSymbol; ++ } ++ } ++ } ++#line 2926 "parser.c" ++ break; ++ ++ case 172: /* SignedNumber: MINUS Number */ ++#line 754 "parser.y" ++ { (yyval.num) = -(yyvsp[0].num); } ++#line 2932 "parser.c" ++ break; ++ ++ case 173: /* SignedNumber: Number */ ++#line 755 "parser.y" ++ { (yyval.num) = (yyvsp[0].num); } ++#line 2938 "parser.c" ++ break; ++ ++ case 174: /* Number: FLOAT */ ++#line 758 "parser.y" ++ { (yyval.num) = (yyvsp[0].num); } ++#line 2944 "parser.c" ++ break; ++ ++ case 175: /* Number: INTEGER */ ++#line 759 "parser.y" ++ { (yyval.num) = (yyvsp[0].num); } ++#line 2950 "parser.c" ++ break; ++ ++ case 176: /* Float: FLOAT */ ++#line 762 "parser.y" ++ { (yyval.num) = 0; } ++#line 2956 "parser.c" ++ break; ++ ++ case 177: /* Integer: INTEGER */ ++#line 765 "parser.y" ++ { (yyval.num) = (yyvsp[0].num); } ++#line 2962 "parser.c" ++ break; ++ ++ case 178: /* KeyCode: INTEGER */ ++#line 768 "parser.y" ++ { (yyval.num) = (yyvsp[0].num); } ++#line 2968 "parser.c" ++ break; ++ ++ case 179: /* Ident: IDENT */ ++#line 771 "parser.y" ++ { (yyval.atom) = xkb_atom_intern(param->ctx, (yyvsp[0].str), strlen((yyvsp[0].str))); free((yyvsp[0].str)); } ++#line 2974 "parser.c" ++ break; ++ ++ case 180: /* Ident: DEFAULT */ ++#line 772 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "default"); } ++#line 2980 "parser.c" ++ break; ++ ++ case 181: /* String: STRING */ ++#line 775 "parser.y" ++ { (yyval.atom) = xkb_atom_intern(param->ctx, (yyvsp[0].str), strlen((yyvsp[0].str))); free((yyvsp[0].str)); } ++#line 2986 "parser.c" ++ break; ++ ++ case 182: /* OptMapName: MapName */ ++#line 778 "parser.y" ++ { (yyval.str) = (yyvsp[0].str); } ++#line 2992 "parser.c" ++ break; ++ ++ case 183: /* OptMapName: %empty */ ++#line 779 "parser.y" ++ { (yyval.str) = NULL; } ++#line 2998 "parser.c" ++ break; ++ ++ case 184: /* MapName: STRING */ ++#line 782 "parser.y" ++ { (yyval.str) = (yyvsp[0].str); } ++#line 3004 "parser.c" ++ break; ++ ++ ++#line 3008 "parser.c" ++ ++ default: break; ++ } ++ /* User semantic actions sometimes alter yychar, and that requires ++ that yytoken be updated with the new translation. We take the ++ approach of translating immediately before every use of yytoken. ++ One alternative is translating here after every semantic action, ++ but that translation would be missed if the semantic action invokes ++ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or ++ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an ++ incorrect destructor might then be invoked immediately. In the ++ case of YYERROR or YYBACKUP, subsequent parser actions might lead ++ to an incorrect destructor call or verbose syntax error message ++ before the lookahead is translated. */ ++ YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); ++ ++ YYPOPSTACK (yylen); ++ yylen = 0; ++ ++ *++yyvsp = yyval; ++ ++ /* Now 'shift' the result of the reduction. Determine what state ++ that goes to, based on the state we popped back to and the rule ++ number reduced by. */ ++ { ++ const int yylhs = yyr1[yyn] - YYNTOKENS; ++ const int yyi = yypgoto[yylhs] + *yyssp; ++ yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp ++ ? yytable[yyi] ++ : yydefgoto[yylhs]); ++ } ++ ++ goto yynewstate; ++ ++ ++/*--------------------------------------. ++| yyerrlab -- here on detecting error. | ++`--------------------------------------*/ ++yyerrlab: ++ /* Make sure we have latest lookahead translation. See comments at ++ user semantic actions for why this is necessary. */ ++ yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); ++ /* If not already recovering from an error, report this error. */ ++ if (!yyerrstatus) ++ { ++ ++yynerrs; ++ yyerror (param, YY_("syntax error")); ++ } ++ ++ if (yyerrstatus == 3) ++ { ++ /* If just tried and failed to reuse lookahead token after an ++ error, discard it. */ ++ ++ if (yychar <= END_OF_FILE) ++ { ++ /* Return failure if at end of input. */ ++ if (yychar == END_OF_FILE) ++ YYABORT; ++ } ++ else ++ { ++ yydestruct ("Error: discarding", ++ yytoken, &yylval, param); ++ yychar = YYEMPTY; ++ } ++ } ++ ++ /* Else will try to reuse lookahead token after shifting the error ++ token. */ ++ goto yyerrlab1; ++ ++ ++/*---------------------------------------------------. ++| yyerrorlab -- error raised explicitly by YYERROR. | ++`---------------------------------------------------*/ ++yyerrorlab: ++ /* Pacify compilers when the user code never invokes YYERROR and the ++ label yyerrorlab therefore never appears in user code. */ ++ if (0) ++ YYERROR; ++ ++ /* Do not reclaim the symbols of the rule whose action triggered ++ this YYERROR. */ ++ YYPOPSTACK (yylen); ++ yylen = 0; ++ YY_STACK_PRINT (yyss, yyssp); ++ yystate = *yyssp; ++ goto yyerrlab1; ++ ++ ++/*-------------------------------------------------------------. ++| yyerrlab1 -- common code for both syntax error and YYERROR. | ++`-------------------------------------------------------------*/ ++yyerrlab1: ++ yyerrstatus = 3; /* Each real token shifted decrements this. */ ++ ++ /* Pop stack until we find a state that shifts the error token. */ ++ for (;;) ++ { ++ yyn = yypact[yystate]; ++ if (!yypact_value_is_default (yyn)) ++ { ++ yyn += YYSYMBOL_YYerror; ++ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) ++ { ++ yyn = yytable[yyn]; ++ if (0 < yyn) ++ break; ++ } ++ } ++ ++ /* Pop the current state because it cannot handle the error token. */ ++ if (yyssp == yyss) ++ YYABORT; ++ ++ ++ yydestruct ("Error: popping", ++ YY_ACCESSING_SYMBOL (yystate), yyvsp, param); ++ YYPOPSTACK (1); ++ yystate = *yyssp; ++ YY_STACK_PRINT (yyss, yyssp); ++ } ++ ++ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++ *++yyvsp = yylval; ++ YY_IGNORE_MAYBE_UNINITIALIZED_END ++ ++ ++ /* Shift the error token. */ ++ YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); ++ ++ yystate = yyn; ++ goto yynewstate; ++ ++ ++/*-------------------------------------. ++| yyacceptlab -- YYACCEPT comes here. | ++`-------------------------------------*/ ++yyacceptlab: ++ yyresult = 0; ++ goto yyreturn; ++ ++ ++/*-----------------------------------. ++| yyabortlab -- YYABORT comes here. | ++`-----------------------------------*/ ++yyabortlab: ++ yyresult = 1; ++ goto yyreturn; ++ ++ ++#if !defined yyoverflow ++/*-------------------------------------------------. ++| yyexhaustedlab -- memory exhaustion comes here. | ++`-------------------------------------------------*/ ++yyexhaustedlab: ++ yyerror (param, YY_("memory exhausted")); ++ yyresult = 2; ++ goto yyreturn; ++#endif ++ ++ ++/*-------------------------------------------------------. ++| yyreturn -- parsing is finished, clean up and return. | ++`-------------------------------------------------------*/ ++yyreturn: ++ if (yychar != YYEMPTY) ++ { ++ /* Make sure we have latest lookahead translation. See comments at ++ user semantic actions for why this is necessary. */ ++ yytoken = YYTRANSLATE (yychar); ++ yydestruct ("Cleanup: discarding lookahead", ++ yytoken, &yylval, param); ++ } ++ /* Do not reclaim the symbols of the rule whose action triggered ++ this YYABORT or YYACCEPT. */ ++ YYPOPSTACK (yylen); ++ YY_STACK_PRINT (yyss, yyssp); ++ while (yyssp != yyss) ++ { ++ yydestruct ("Cleanup: popping", ++ YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, param); ++ YYPOPSTACK (1); ++ } ++#ifndef yyoverflow ++ if (yyss != yyssa) ++ YYSTACK_FREE (yyss); ++#endif ++ ++ return yyresult; ++} ++ ++#line 785 "parser.y" ++ ++ ++XkbFile * ++parse(struct xkb_context *ctx, struct scanner *scanner, const char *map) ++{ ++ int ret; ++ XkbFile *first = NULL; ++ struct parser_param param = { ++ .scanner = scanner, ++ .ctx = ctx, ++ .rtrn = NULL, ++ .more_maps = false, ++ }; ++ ++ /* ++ * If we got a specific map, we look for it exclusively and return ++ * immediately upon finding it. Otherwise, we need to get the ++ * default map. If we find a map marked as default, we return it ++ * immediately. If there are no maps marked as default, we return ++ * the first map in the file. ++ */ ++ ++ while ((ret = yyparse(¶m)) == 0 && param.more_maps) { ++ if (map) { ++ if (streq_not_null(map, param.rtrn->name)) ++ return param.rtrn; ++ else ++ FreeXkbFile(param.rtrn); ++ } ++ else { ++ if (param.rtrn->flags & MAP_IS_DEFAULT) { ++ FreeXkbFile(first); ++ return param.rtrn; ++ } ++ else if (!first) { ++ first = param.rtrn; ++ } ++ else { ++ FreeXkbFile(param.rtrn); ++ } ++ } ++ param.rtrn = NULL; ++ } ++ ++ if (ret != 0) { ++ FreeXkbFile(first); ++ return NULL; ++ } ++ ++ if (first) ++ log_vrb(ctx, 5, ++ "No map in include statement, but \"%s\" contains several; " ++ "Using first defined map, \"%s\"\n", ++ scanner->file_name, first->name); ++ ++ return first; ++} +diff --git a/src/xkbcomp/parser.h b/src/xkbcomp/parser.h +new file mode 100644 +index 0000000..8f5bfe9 +--- /dev/null ++++ b/src/xkbcomp/parser.h +@@ -0,0 +1,169 @@ ++/* A Bison parser, made by GNU Bison 3.7.1. */ ++ ++/* Bison interface for Yacc-like parsers in C ++ ++ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, ++ Inc. ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++/* As a special exception, you may create a larger work that contains ++ part or all of the Bison parser skeleton and distribute that work ++ under terms of your choice, so long as that work isn't itself a ++ parser generator using the skeleton or a modified version thereof ++ as a parser skeleton. Alternatively, if you modify or redistribute ++ the parser skeleton itself, you may (at your option) remove this ++ special exception, which will cause the skeleton and the resulting ++ Bison output files to be licensed under the GNU General Public ++ License without this special exception. ++ ++ This special exception was added by the Free Software Foundation in ++ version 2.2 of Bison. */ ++ ++/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, ++ especially those whose name start with YY_ or yy_. They are ++ private implementation details that can be changed or removed. */ ++ ++#ifndef YY__XKBCOMMON_PARSER_H_INCLUDED ++# define YY__XKBCOMMON_PARSER_H_INCLUDED ++/* Debug traces. */ ++#ifndef YYDEBUG ++# define YYDEBUG 0 ++#endif ++#if YYDEBUG ++extern int _xkbcommon_debug; ++#endif ++ ++/* Token kinds. */ ++#ifndef YYTOKENTYPE ++# define YYTOKENTYPE ++ enum yytokentype ++ { ++ YYEMPTY = -2, ++ END_OF_FILE = 0, /* END_OF_FILE */ ++ YYerror = 256, /* error */ ++ YYUNDEF = 257, /* "invalid token" */ ++ ERROR_TOK = 255, /* ERROR_TOK */ ++ XKB_KEYMAP = 1, /* XKB_KEYMAP */ ++ XKB_KEYCODES = 2, /* XKB_KEYCODES */ ++ XKB_TYPES = 3, /* XKB_TYPES */ ++ XKB_SYMBOLS = 4, /* XKB_SYMBOLS */ ++ XKB_COMPATMAP = 5, /* XKB_COMPATMAP */ ++ XKB_GEOMETRY = 6, /* XKB_GEOMETRY */ ++ XKB_SEMANTICS = 7, /* XKB_SEMANTICS */ ++ XKB_LAYOUT = 8, /* XKB_LAYOUT */ ++ INCLUDE = 10, /* INCLUDE */ ++ OVERRIDE = 11, /* OVERRIDE */ ++ AUGMENT = 12, /* AUGMENT */ ++ REPLACE = 13, /* REPLACE */ ++ ALTERNATE = 14, /* ALTERNATE */ ++ VIRTUAL_MODS = 20, /* VIRTUAL_MODS */ ++ TYPE = 21, /* TYPE */ ++ INTERPRET = 22, /* INTERPRET */ ++ ACTION_TOK = 23, /* ACTION_TOK */ ++ KEY = 24, /* KEY */ ++ ALIAS = 25, /* ALIAS */ ++ GROUP = 26, /* GROUP */ ++ MODIFIER_MAP = 27, /* MODIFIER_MAP */ ++ INDICATOR = 28, /* INDICATOR */ ++ SHAPE = 29, /* SHAPE */ ++ KEYS = 30, /* KEYS */ ++ ROW = 31, /* ROW */ ++ SECTION = 32, /* SECTION */ ++ OVERLAY = 33, /* OVERLAY */ ++ TEXT = 34, /* TEXT */ ++ OUTLINE = 35, /* OUTLINE */ ++ SOLID = 36, /* SOLID */ ++ LOGO = 37, /* LOGO */ ++ VIRTUAL = 38, /* VIRTUAL */ ++ EQUALS = 40, /* EQUALS */ ++ PLUS = 41, /* PLUS */ ++ MINUS = 42, /* MINUS */ ++ DIVIDE = 43, /* DIVIDE */ ++ TIMES = 44, /* TIMES */ ++ OBRACE = 45, /* OBRACE */ ++ CBRACE = 46, /* CBRACE */ ++ OPAREN = 47, /* OPAREN */ ++ CPAREN = 48, /* CPAREN */ ++ OBRACKET = 49, /* OBRACKET */ ++ CBRACKET = 50, /* CBRACKET */ ++ DOT = 51, /* DOT */ ++ COMMA = 52, /* COMMA */ ++ SEMI = 53, /* SEMI */ ++ EXCLAM = 54, /* EXCLAM */ ++ INVERT = 55, /* INVERT */ ++ STRING = 60, /* STRING */ ++ INTEGER = 61, /* INTEGER */ ++ FLOAT = 62, /* FLOAT */ ++ IDENT = 63, /* IDENT */ ++ KEYNAME = 64, /* KEYNAME */ ++ PARTIAL = 70, /* PARTIAL */ ++ DEFAULT = 71, /* DEFAULT */ ++ HIDDEN = 72, /* HIDDEN */ ++ ALPHANUMERIC_KEYS = 73, /* ALPHANUMERIC_KEYS */ ++ MODIFIER_KEYS = 74, /* MODIFIER_KEYS */ ++ KEYPAD_KEYS = 75, /* KEYPAD_KEYS */ ++ FUNCTION_KEYS = 76, /* FUNCTION_KEYS */ ++ ALTERNATE_GROUP = 77 /* ALTERNATE_GROUP */ ++ }; ++ typedef enum yytokentype yytoken_kind_t; ++#endif ++ ++/* Value type. */ ++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED ++union YYSTYPE ++{ ++#line 164 "parser.y" ++ ++ int64_t num; ++ enum xkb_file_type file_type; ++ char *str; ++ xkb_atom_t atom; ++ enum merge_mode merge; ++ enum xkb_map_flags mapFlags; ++ xkb_keysym_t keysym; ++ ParseCommon *any; ++ struct { ParseCommon *head; ParseCommon *last; } anyList; ++ ExprDef *expr; ++ struct { ExprDef *head; ExprDef *last; } exprList; ++ VarDef *var; ++ struct { VarDef *head; VarDef *last; } varList; ++ VModDef *vmod; ++ struct { VModDef *head; VModDef *last; } vmodList; ++ InterpDef *interp; ++ KeyTypeDef *keyType; ++ SymbolsDef *syms; ++ ModMapDef *modMask; ++ GroupCompatDef *groupCompat; ++ LedMapDef *ledMap; ++ LedNameDef *ledName; ++ KeycodeDef *keyCode; ++ KeyAliasDef *keyAlias; ++ void *geom; ++ XkbFile *file; ++ struct { XkbFile *head; XkbFile *last; } fileList; ++ ++#line 158 "parser.h" ++ ++}; ++typedef union YYSTYPE YYSTYPE; ++# define YYSTYPE_IS_TRIVIAL 1 ++# define YYSTYPE_IS_DECLARED 1 ++#endif ++ ++ ++ ++int _xkbcommon_parse (struct parser_param *param); ++ ++#endif /* !YY__XKBCOMMON_PARSER_H_INCLUDED */ +-- +2.28.0 + diff --git a/libxkbcommon-dynamic/default/patches-available/0100-static-meson.patch b/libxkbcommon-dynamic/default/patches-available/0100-static-meson.patch new file mode 100644 index 0000000..e2f05d5 --- /dev/null +++ b/libxkbcommon-dynamic/default/patches-available/0100-static-meson.patch @@ -0,0 +1,29 @@ +--- a/meson.build 2020-09-11 12:10:23.220047200 +0000 ++++ b/meson.build 2020-10-01 06:25:01.340000000 +0000 +@@ -234,7 +234,7 @@ + if have_version_script + libxkbcommon_link_args += '-Wl,--version-script=' + meson.source_root()/'xkbcommon.map' + endif +-libxkbcommon = library( ++libxkbcommon = static_library( + 'xkbcommon', + 'xkbcommon/xkbcommon.h', + libxkbcommon_sources, +@@ -290,7 +290,7 @@ + if have_version_script + libxkbcommon_x11_link_args += '-Wl,--version-script=' + meson.source_root()/'xkbcommon-x11.map' + endif +- libxkbcommon_x11 = library( ++ libxkbcommon_x11 = static_library( + 'xkbcommon-x11', + 'xkbcommon/xkbcommon-x11.h', + libxkbcommon_x11_sources, +@@ -339,7 +339,7 @@ + if have_version_script + libxkbregistry_link_args += '-Wl,--version-script=' + meson.source_root()/'xkbregistry.map' + endif +- libxkbregistry = library( ++ libxkbregistry = static_library( + 'xkbregistry', + 'xkbcommon/xkbregistry.h', + libxkbregistry_sources, diff --git a/libxkbcommon-dynamic/default/patches-enabled/0001-Track-generated-xkbcomp-parser.patch b/libxkbcommon-dynamic/default/patches-enabled/0001-Track-generated-xkbcomp-parser.patch new file mode 120000 index 0000000..10a354d --- /dev/null +++ b/libxkbcommon-dynamic/default/patches-enabled/0001-Track-generated-xkbcomp-parser.patch @@ -0,0 +1 @@ +../patches-available/0001-Track-generated-xkbcomp-parser.patch \ No newline at end of file diff --git a/libxkbcommon/default/conf.sh b/libxkbcommon/default/conf.sh new file mode 100755 index 0000000..2f68877 --- /dev/null +++ b/libxkbcommon/default/conf.sh @@ -0,0 +1,15 @@ +#!/bin/sh -e + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson \ + -Ddefault-library=both \ + -Dxkb-config-root=/share/xkb \ + -Dx-locale-root=/share/xlocale \ + -Denable-x11=false \ + -Denable-xkbregistry=false \ + -Denable-wayland=false \ + -Denable-docs=false \ + --prefix=$PREFIX \ + ../build diff --git a/libxkbcommon/default/deps b/libxkbcommon/default/deps new file mode 100644 index 0000000..3ef9301 --- /dev/null +++ b/libxkbcommon/default/deps @@ -0,0 +1,28 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +bison +libxml2 +mtdev +libevdev +pkgconf +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +cmake diff --git a/libxkbcommon/default/inst.sh b/libxkbcommon/default/inst.sh new file mode 100755 index 0000000..1208b36 --- /dev/null +++ b/libxkbcommon/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +samu -C ../build install diff --git a/libxkbcommon/default/make.sh b/libxkbcommon/default/make.sh new file mode 100755 index 0000000..e53d1e4 --- /dev/null +++ b/libxkbcommon/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +samu -C ../build diff --git a/libxkbcommon/default/patches-available/0001-Track-generated-xkbcomp-parser.patch b/libxkbcommon/default/patches-available/0001-Track-generated-xkbcomp-parser.patch new file mode 100644 index 0000000..8f4dc28 --- /dev/null +++ b/libxkbcommon/default/patches-available/0001-Track-generated-xkbcomp-parser.patch @@ -0,0 +1,3464 @@ +From 95342a67221944e99dd2adf2d5d75d62fd256afe Mon Sep 17 00:00:00 2001 +From: Michael Forney +Date: Sat, 26 Oct 2019 02:05:31 -0700 +Subject: [PATCH] Track generated xkbcomp parser + +--- + src/xkbcomp/.gitignore | 2 - + src/xkbcomp/parser.c | 3258 ++++++++++++++++++++++++++++++++++++++++ + src/xkbcomp/parser.h | 169 +++ + 3 files changed, 3427 insertions(+), 2 deletions(-) + delete mode 100644 src/xkbcomp/.gitignore + create mode 100644 src/xkbcomp/parser.c + create mode 100644 src/xkbcomp/parser.h + +diff --git a/src/xkbcomp/.gitignore b/src/xkbcomp/.gitignore +deleted file mode 100644 +index d7814e4..0000000 +--- a/src/xkbcomp/.gitignore ++++ /dev/null +@@ -1,2 +0,0 @@ +-parser.c +-parser.h +diff --git a/src/xkbcomp/parser.c b/src/xkbcomp/parser.c +new file mode 100644 +index 0000000..105d720 +--- /dev/null ++++ b/src/xkbcomp/parser.c +@@ -0,0 +1,3258 @@ ++/* A Bison parser, made by GNU Bison 3.7.1. */ ++ ++/* Bison implementation for Yacc-like parsers in C ++ ++ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, ++ Inc. ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++/* As a special exception, you may create a larger work that contains ++ part or all of the Bison parser skeleton and distribute that work ++ under terms of your choice, so long as that work isn't itself a ++ parser generator using the skeleton or a modified version thereof ++ as a parser skeleton. Alternatively, if you modify or redistribute ++ the parser skeleton itself, you may (at your option) remove this ++ special exception, which will cause the skeleton and the resulting ++ Bison output files to be licensed under the GNU General Public ++ License without this special exception. ++ ++ This special exception was added by the Free Software Foundation in ++ version 2.2 of Bison. */ ++ ++/* C LALR(1) parser skeleton written by Richard Stallman, by ++ simplifying the original so-called "semantic" parser. */ ++ ++/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, ++ especially those whose name start with YY_ or yy_. They are ++ private implementation details that can be changed or removed. */ ++ ++/* All symbols defined below should begin with yy or YY, to avoid ++ infringing on user name space. This should be done even for local ++ variables, as they might otherwise be expanded by user macros. ++ There are some unavoidable exceptions within include files to ++ define necessary library symbols; they are noted "INFRINGES ON ++ USER NAME SPACE" below. */ ++ ++/* Identify Bison output. */ ++#define YYBISON 1 ++ ++/* Bison version. */ ++#define YYBISON_VERSION "3.7.1" ++ ++/* Skeleton name. */ ++#define YYSKELETON_NAME "yacc.c" ++ ++/* Pure parsers. */ ++#define YYPURE 1 ++ ++/* Push parsers. */ ++#define YYPUSH 0 ++ ++/* Pull parsers. */ ++#define YYPULL 1 ++ ++ ++/* Substitute the variable and function names. */ ++#define yyparse _xkbcommon_parse ++#define yylex _xkbcommon_lex ++#define yyerror _xkbcommon_error ++#define yydebug _xkbcommon_debug ++#define yynerrs _xkbcommon_nerrs ++ ++/* First part of user prologue. */ ++#line 33 "parser.y" ++ ++#include "config.h" ++ ++#include "xkbcomp/xkbcomp-priv.h" ++#include "xkbcomp/ast-build.h" ++#include "xkbcomp/parser-priv.h" ++#include "scanner-utils.h" ++ ++struct parser_param { ++ struct xkb_context *ctx; ++ struct scanner *scanner; ++ XkbFile *rtrn; ++ bool more_maps; ++}; ++ ++#define parser_err(param, fmt, ...) \ ++ scanner_err((param)->scanner, fmt, ##__VA_ARGS__) ++ ++#define parser_warn(param, fmt, ...) \ ++ scanner_warn((param)->scanner, fmt, ##__VA_ARGS__) ++ ++static void ++_xkbcommon_error(struct parser_param *param, const char *msg) ++{ ++ parser_err(param, "%s", msg); ++} ++ ++static bool ++resolve_keysym(const char *name, xkb_keysym_t *sym_rtrn) ++{ ++ xkb_keysym_t sym; ++ ++ if (!name || istreq(name, "any") || istreq(name, "nosymbol")) { ++ *sym_rtrn = XKB_KEY_NoSymbol; ++ return true; ++ } ++ ++ if (istreq(name, "none") || istreq(name, "voidsymbol")) { ++ *sym_rtrn = XKB_KEY_VoidSymbol; ++ return true; ++ } ++ ++ sym = xkb_keysym_from_name(name, XKB_KEYSYM_NO_FLAGS); ++ if (sym != XKB_KEY_NoSymbol) { ++ *sym_rtrn = sym; ++ return true; ++ } ++ ++ return false; ++} ++ ++#define param_scanner param->scanner ++ ++#line 130 "parser.c" ++ ++# ifndef YY_CAST ++# ifdef __cplusplus ++# define YY_CAST(Type, Val) static_cast (Val) ++# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) ++# else ++# define YY_CAST(Type, Val) ((Type) (Val)) ++# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) ++# endif ++# endif ++# ifndef YY_NULLPTR ++# if defined __cplusplus ++# if 201103L <= __cplusplus ++# define YY_NULLPTR nullptr ++# else ++# define YY_NULLPTR 0 ++# endif ++# else ++# define YY_NULLPTR ((void*)0) ++# endif ++# endif ++ ++#include "parser.h" ++/* Symbol kind. */ ++enum yysymbol_kind_t ++{ ++ YYSYMBOL_YYEMPTY = -2, ++ YYSYMBOL_YYEOF = 0, /* END_OF_FILE */ ++ YYSYMBOL_YYerror = 1, /* error */ ++ YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ ++ YYSYMBOL_ERROR_TOK = 3, /* ERROR_TOK */ ++ YYSYMBOL_XKB_KEYMAP = 4, /* XKB_KEYMAP */ ++ YYSYMBOL_XKB_KEYCODES = 5, /* XKB_KEYCODES */ ++ YYSYMBOL_XKB_TYPES = 6, /* XKB_TYPES */ ++ YYSYMBOL_XKB_SYMBOLS = 7, /* XKB_SYMBOLS */ ++ YYSYMBOL_XKB_COMPATMAP = 8, /* XKB_COMPATMAP */ ++ YYSYMBOL_XKB_GEOMETRY = 9, /* XKB_GEOMETRY */ ++ YYSYMBOL_XKB_SEMANTICS = 10, /* XKB_SEMANTICS */ ++ YYSYMBOL_XKB_LAYOUT = 11, /* XKB_LAYOUT */ ++ YYSYMBOL_INCLUDE = 12, /* INCLUDE */ ++ YYSYMBOL_OVERRIDE = 13, /* OVERRIDE */ ++ YYSYMBOL_AUGMENT = 14, /* AUGMENT */ ++ YYSYMBOL_REPLACE = 15, /* REPLACE */ ++ YYSYMBOL_ALTERNATE = 16, /* ALTERNATE */ ++ YYSYMBOL_VIRTUAL_MODS = 17, /* VIRTUAL_MODS */ ++ YYSYMBOL_TYPE = 18, /* TYPE */ ++ YYSYMBOL_INTERPRET = 19, /* INTERPRET */ ++ YYSYMBOL_ACTION_TOK = 20, /* ACTION_TOK */ ++ YYSYMBOL_KEY = 21, /* KEY */ ++ YYSYMBOL_ALIAS = 22, /* ALIAS */ ++ YYSYMBOL_GROUP = 23, /* GROUP */ ++ YYSYMBOL_MODIFIER_MAP = 24, /* MODIFIER_MAP */ ++ YYSYMBOL_INDICATOR = 25, /* INDICATOR */ ++ YYSYMBOL_SHAPE = 26, /* SHAPE */ ++ YYSYMBOL_KEYS = 27, /* KEYS */ ++ YYSYMBOL_ROW = 28, /* ROW */ ++ YYSYMBOL_SECTION = 29, /* SECTION */ ++ YYSYMBOL_OVERLAY = 30, /* OVERLAY */ ++ YYSYMBOL_TEXT = 31, /* TEXT */ ++ YYSYMBOL_OUTLINE = 32, /* OUTLINE */ ++ YYSYMBOL_SOLID = 33, /* SOLID */ ++ YYSYMBOL_LOGO = 34, /* LOGO */ ++ YYSYMBOL_VIRTUAL = 35, /* VIRTUAL */ ++ YYSYMBOL_EQUALS = 36, /* EQUALS */ ++ YYSYMBOL_PLUS = 37, /* PLUS */ ++ YYSYMBOL_MINUS = 38, /* MINUS */ ++ YYSYMBOL_DIVIDE = 39, /* DIVIDE */ ++ YYSYMBOL_TIMES = 40, /* TIMES */ ++ YYSYMBOL_OBRACE = 41, /* OBRACE */ ++ YYSYMBOL_CBRACE = 42, /* CBRACE */ ++ YYSYMBOL_OPAREN = 43, /* OPAREN */ ++ YYSYMBOL_CPAREN = 44, /* CPAREN */ ++ YYSYMBOL_OBRACKET = 45, /* OBRACKET */ ++ YYSYMBOL_CBRACKET = 46, /* CBRACKET */ ++ YYSYMBOL_DOT = 47, /* DOT */ ++ YYSYMBOL_COMMA = 48, /* COMMA */ ++ YYSYMBOL_SEMI = 49, /* SEMI */ ++ YYSYMBOL_EXCLAM = 50, /* EXCLAM */ ++ YYSYMBOL_INVERT = 51, /* INVERT */ ++ YYSYMBOL_STRING = 52, /* STRING */ ++ YYSYMBOL_INTEGER = 53, /* INTEGER */ ++ YYSYMBOL_FLOAT = 54, /* FLOAT */ ++ YYSYMBOL_IDENT = 55, /* IDENT */ ++ YYSYMBOL_KEYNAME = 56, /* KEYNAME */ ++ YYSYMBOL_PARTIAL = 57, /* PARTIAL */ ++ YYSYMBOL_DEFAULT = 58, /* DEFAULT */ ++ YYSYMBOL_HIDDEN = 59, /* HIDDEN */ ++ YYSYMBOL_ALPHANUMERIC_KEYS = 60, /* ALPHANUMERIC_KEYS */ ++ YYSYMBOL_MODIFIER_KEYS = 61, /* MODIFIER_KEYS */ ++ YYSYMBOL_KEYPAD_KEYS = 62, /* KEYPAD_KEYS */ ++ YYSYMBOL_FUNCTION_KEYS = 63, /* FUNCTION_KEYS */ ++ YYSYMBOL_ALTERNATE_GROUP = 64, /* ALTERNATE_GROUP */ ++ YYSYMBOL_YYACCEPT = 65, /* $accept */ ++ YYSYMBOL_XkbFile = 66, /* XkbFile */ ++ YYSYMBOL_XkbCompositeMap = 67, /* XkbCompositeMap */ ++ YYSYMBOL_XkbCompositeType = 68, /* XkbCompositeType */ ++ YYSYMBOL_XkbMapConfigList = 69, /* XkbMapConfigList */ ++ YYSYMBOL_XkbMapConfig = 70, /* XkbMapConfig */ ++ YYSYMBOL_FileType = 71, /* FileType */ ++ YYSYMBOL_OptFlags = 72, /* OptFlags */ ++ YYSYMBOL_Flags = 73, /* Flags */ ++ YYSYMBOL_Flag = 74, /* Flag */ ++ YYSYMBOL_DeclList = 75, /* DeclList */ ++ YYSYMBOL_Decl = 76, /* Decl */ ++ YYSYMBOL_VarDecl = 77, /* VarDecl */ ++ YYSYMBOL_KeyNameDecl = 78, /* KeyNameDecl */ ++ YYSYMBOL_KeyAliasDecl = 79, /* KeyAliasDecl */ ++ YYSYMBOL_VModDecl = 80, /* VModDecl */ ++ YYSYMBOL_VModDefList = 81, /* VModDefList */ ++ YYSYMBOL_VModDef = 82, /* VModDef */ ++ YYSYMBOL_InterpretDecl = 83, /* InterpretDecl */ ++ YYSYMBOL_InterpretMatch = 84, /* InterpretMatch */ ++ YYSYMBOL_VarDeclList = 85, /* VarDeclList */ ++ YYSYMBOL_KeyTypeDecl = 86, /* KeyTypeDecl */ ++ YYSYMBOL_SymbolsDecl = 87, /* SymbolsDecl */ ++ YYSYMBOL_SymbolsBody = 88, /* SymbolsBody */ ++ YYSYMBOL_SymbolsVarDecl = 89, /* SymbolsVarDecl */ ++ YYSYMBOL_ArrayInit = 90, /* ArrayInit */ ++ YYSYMBOL_GroupCompatDecl = 91, /* GroupCompatDecl */ ++ YYSYMBOL_ModMapDecl = 92, /* ModMapDecl */ ++ YYSYMBOL_LedMapDecl = 93, /* LedMapDecl */ ++ YYSYMBOL_LedNameDecl = 94, /* LedNameDecl */ ++ YYSYMBOL_ShapeDecl = 95, /* ShapeDecl */ ++ YYSYMBOL_SectionDecl = 96, /* SectionDecl */ ++ YYSYMBOL_SectionBody = 97, /* SectionBody */ ++ YYSYMBOL_SectionBodyItem = 98, /* SectionBodyItem */ ++ YYSYMBOL_RowBody = 99, /* RowBody */ ++ YYSYMBOL_RowBodyItem = 100, /* RowBodyItem */ ++ YYSYMBOL_Keys = 101, /* Keys */ ++ YYSYMBOL_Key = 102, /* Key */ ++ YYSYMBOL_OverlayDecl = 103, /* OverlayDecl */ ++ YYSYMBOL_OverlayKeyList = 104, /* OverlayKeyList */ ++ YYSYMBOL_OverlayKey = 105, /* OverlayKey */ ++ YYSYMBOL_OutlineList = 106, /* OutlineList */ ++ YYSYMBOL_OutlineInList = 107, /* OutlineInList */ ++ YYSYMBOL_CoordList = 108, /* CoordList */ ++ YYSYMBOL_Coord = 109, /* Coord */ ++ YYSYMBOL_DoodadDecl = 110, /* DoodadDecl */ ++ YYSYMBOL_DoodadType = 111, /* DoodadType */ ++ YYSYMBOL_FieldSpec = 112, /* FieldSpec */ ++ YYSYMBOL_Element = 113, /* Element */ ++ YYSYMBOL_OptMergeMode = 114, /* OptMergeMode */ ++ YYSYMBOL_MergeMode = 115, /* MergeMode */ ++ YYSYMBOL_OptExprList = 116, /* OptExprList */ ++ YYSYMBOL_ExprList = 117, /* ExprList */ ++ YYSYMBOL_Expr = 118, /* Expr */ ++ YYSYMBOL_Term = 119, /* Term */ ++ YYSYMBOL_ActionList = 120, /* ActionList */ ++ YYSYMBOL_Action = 121, /* Action */ ++ YYSYMBOL_Lhs = 122, /* Lhs */ ++ YYSYMBOL_Terminal = 123, /* Terminal */ ++ YYSYMBOL_OptKeySymList = 124, /* OptKeySymList */ ++ YYSYMBOL_KeySymList = 125, /* KeySymList */ ++ YYSYMBOL_KeySyms = 126, /* KeySyms */ ++ YYSYMBOL_KeySym = 127, /* KeySym */ ++ YYSYMBOL_SignedNumber = 128, /* SignedNumber */ ++ YYSYMBOL_Number = 129, /* Number */ ++ YYSYMBOL_Float = 130, /* Float */ ++ YYSYMBOL_Integer = 131, /* Integer */ ++ YYSYMBOL_KeyCode = 132, /* KeyCode */ ++ YYSYMBOL_Ident = 133, /* Ident */ ++ YYSYMBOL_String = 134, /* String */ ++ YYSYMBOL_OptMapName = 135, /* OptMapName */ ++ YYSYMBOL_MapName = 136 /* MapName */ ++}; ++typedef enum yysymbol_kind_t yysymbol_kind_t; ++ ++ ++ ++ ++#ifdef short ++# undef short ++#endif ++ ++/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure ++ and (if available) are included ++ so that the code can choose integer types of a good width. */ ++ ++#ifndef __PTRDIFF_MAX__ ++# include /* INFRINGES ON USER NAME SPACE */ ++# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ ++# include /* INFRINGES ON USER NAME SPACE */ ++# define YY_STDINT_H ++# endif ++#endif ++ ++/* Narrow types that promote to a signed type and that can represent a ++ signed or unsigned integer of at least N bits. In tables they can ++ save space and decrease cache pressure. Promoting to a signed type ++ helps avoid bugs in integer arithmetic. */ ++ ++#ifdef __INT_LEAST8_MAX__ ++typedef __INT_LEAST8_TYPE__ yytype_int8; ++#elif defined YY_STDINT_H ++typedef int_least8_t yytype_int8; ++#else ++typedef signed char yytype_int8; ++#endif ++ ++#ifdef __INT_LEAST16_MAX__ ++typedef __INT_LEAST16_TYPE__ yytype_int16; ++#elif defined YY_STDINT_H ++typedef int_least16_t yytype_int16; ++#else ++typedef short yytype_int16; ++#endif ++ ++#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ ++typedef __UINT_LEAST8_TYPE__ yytype_uint8; ++#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ ++ && UINT_LEAST8_MAX <= INT_MAX) ++typedef uint_least8_t yytype_uint8; ++#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX ++typedef unsigned char yytype_uint8; ++#else ++typedef short yytype_uint8; ++#endif ++ ++#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ ++typedef __UINT_LEAST16_TYPE__ yytype_uint16; ++#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ ++ && UINT_LEAST16_MAX <= INT_MAX) ++typedef uint_least16_t yytype_uint16; ++#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX ++typedef unsigned short yytype_uint16; ++#else ++typedef int yytype_uint16; ++#endif ++ ++#ifndef YYPTRDIFF_T ++# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ ++# define YYPTRDIFF_T __PTRDIFF_TYPE__ ++# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ ++# elif defined PTRDIFF_MAX ++# ifndef ptrdiff_t ++# include /* INFRINGES ON USER NAME SPACE */ ++# endif ++# define YYPTRDIFF_T ptrdiff_t ++# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX ++# else ++# define YYPTRDIFF_T long ++# define YYPTRDIFF_MAXIMUM LONG_MAX ++# endif ++#endif ++ ++#ifndef YYSIZE_T ++# ifdef __SIZE_TYPE__ ++# define YYSIZE_T __SIZE_TYPE__ ++# elif defined size_t ++# define YYSIZE_T size_t ++# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ ++# include /* INFRINGES ON USER NAME SPACE */ ++# define YYSIZE_T size_t ++# else ++# define YYSIZE_T unsigned ++# endif ++#endif ++ ++#define YYSIZE_MAXIMUM \ ++ YY_CAST (YYPTRDIFF_T, \ ++ (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ ++ ? YYPTRDIFF_MAXIMUM \ ++ : YY_CAST (YYSIZE_T, -1))) ++ ++#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) ++ ++ ++/* Stored state numbers (used for stacks). */ ++typedef yytype_int16 yy_state_t; ++ ++/* State numbers in computations. */ ++typedef int yy_state_fast_t; ++ ++#ifndef YY_ ++# if defined YYENABLE_NLS && YYENABLE_NLS ++# if ENABLE_NLS ++# include /* INFRINGES ON USER NAME SPACE */ ++# define YY_(Msgid) dgettext ("bison-runtime", Msgid) ++# endif ++# endif ++# ifndef YY_ ++# define YY_(Msgid) Msgid ++# endif ++#endif ++ ++ ++#ifndef YY_ATTRIBUTE_PURE ++# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) ++# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++# else ++# define YY_ATTRIBUTE_PURE ++# endif ++#endif ++ ++#ifndef YY_ATTRIBUTE_UNUSED ++# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) ++# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) ++# else ++# define YY_ATTRIBUTE_UNUSED ++# endif ++#endif ++ ++/* Suppress unused-variable warnings by "using" E. */ ++#if ! defined lint || defined __GNUC__ ++# define YYUSE(E) ((void) (E)) ++#else ++# define YYUSE(E) /* empty */ ++#endif ++ ++#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ ++/* Suppress an incorrect diagnostic about yylval being uninitialized. */ ++# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ ++ _Pragma ("GCC diagnostic push") \ ++ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ ++ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") ++# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ ++ _Pragma ("GCC diagnostic pop") ++#else ++# define YY_INITIAL_VALUE(Value) Value ++#endif ++#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++# define YY_IGNORE_MAYBE_UNINITIALIZED_END ++#endif ++#ifndef YY_INITIAL_VALUE ++# define YY_INITIAL_VALUE(Value) /* Nothing. */ ++#endif ++ ++#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ ++# define YY_IGNORE_USELESS_CAST_BEGIN \ ++ _Pragma ("GCC diagnostic push") \ ++ _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") ++# define YY_IGNORE_USELESS_CAST_END \ ++ _Pragma ("GCC diagnostic pop") ++#endif ++#ifndef YY_IGNORE_USELESS_CAST_BEGIN ++# define YY_IGNORE_USELESS_CAST_BEGIN ++# define YY_IGNORE_USELESS_CAST_END ++#endif ++ ++ ++#define YY_ASSERT(E) ((void) (0 && (E))) ++ ++#if !defined yyoverflow ++ ++/* The parser invokes alloca or malloc; define the necessary symbols. */ ++ ++# ifdef YYSTACK_USE_ALLOCA ++# if YYSTACK_USE_ALLOCA ++# ifdef __GNUC__ ++# define YYSTACK_ALLOC __builtin_alloca ++# elif defined __BUILTIN_VA_ARG_INCR ++# include /* INFRINGES ON USER NAME SPACE */ ++# elif defined _AIX ++# define YYSTACK_ALLOC __alloca ++# elif defined _MSC_VER ++# include /* INFRINGES ON USER NAME SPACE */ ++# define alloca _alloca ++# else ++# define YYSTACK_ALLOC alloca ++# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS ++# include /* INFRINGES ON USER NAME SPACE */ ++ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ ++# ifndef EXIT_SUCCESS ++# define EXIT_SUCCESS 0 ++# endif ++# endif ++# endif ++# endif ++# endif ++ ++# ifdef YYSTACK_ALLOC ++ /* Pacify GCC's 'empty if-body' warning. */ ++# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) ++# ifndef YYSTACK_ALLOC_MAXIMUM ++ /* The OS might guarantee only one guard page at the bottom of the stack, ++ and a page size can be as small as 4096 bytes. So we cannot safely ++ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number ++ to allow for a few compiler-allocated temporary stack slots. */ ++# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ ++# endif ++# else ++# define YYSTACK_ALLOC YYMALLOC ++# define YYSTACK_FREE YYFREE ++# ifndef YYSTACK_ALLOC_MAXIMUM ++# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM ++# endif ++# if (defined __cplusplus && ! defined EXIT_SUCCESS \ ++ && ! ((defined YYMALLOC || defined malloc) \ ++ && (defined YYFREE || defined free))) ++# include /* INFRINGES ON USER NAME SPACE */ ++# ifndef EXIT_SUCCESS ++# define EXIT_SUCCESS 0 ++# endif ++# endif ++# ifndef YYMALLOC ++# define YYMALLOC malloc ++# if ! defined malloc && ! defined EXIT_SUCCESS ++void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ ++# endif ++# endif ++# ifndef YYFREE ++# define YYFREE free ++# if ! defined free && ! defined EXIT_SUCCESS ++void free (void *); /* INFRINGES ON USER NAME SPACE */ ++# endif ++# endif ++# endif ++#endif /* !defined yyoverflow */ ++ ++#if (! defined yyoverflow \ ++ && (! defined __cplusplus \ ++ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) ++ ++/* A type that is properly aligned for any stack member. */ ++union yyalloc ++{ ++ yy_state_t yyss_alloc; ++ YYSTYPE yyvs_alloc; ++}; ++ ++/* The size of the maximum gap between one aligned stack and the next. */ ++# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) ++ ++/* The size of an array large to enough to hold all stacks, each with ++ N elements. */ ++# define YYSTACK_BYTES(N) \ ++ ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ ++ + YYSTACK_GAP_MAXIMUM) ++ ++# define YYCOPY_NEEDED 1 ++ ++/* Relocate STACK from its old location to the new one. The ++ local variables YYSIZE and YYSTACKSIZE give the old and new number of ++ elements in the stack, and YYPTR gives the new location of the ++ stack. Advance YYPTR to a properly aligned location for the next ++ stack. */ ++# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ ++ do \ ++ { \ ++ YYPTRDIFF_T yynewbytes; \ ++ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ ++ Stack = &yyptr->Stack_alloc; \ ++ yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ ++ yyptr += yynewbytes / YYSIZEOF (*yyptr); \ ++ } \ ++ while (0) ++ ++#endif ++ ++#if defined YYCOPY_NEEDED && YYCOPY_NEEDED ++/* Copy COUNT objects from SRC to DST. The source and destination do ++ not overlap. */ ++# ifndef YYCOPY ++# if defined __GNUC__ && 1 < __GNUC__ ++# define YYCOPY(Dst, Src, Count) \ ++ __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) ++# else ++# define YYCOPY(Dst, Src, Count) \ ++ do \ ++ { \ ++ YYPTRDIFF_T yyi; \ ++ for (yyi = 0; yyi < (Count); yyi++) \ ++ (Dst)[yyi] = (Src)[yyi]; \ ++ } \ ++ while (0) ++# endif ++# endif ++#endif /* !YYCOPY_NEEDED */ ++ ++/* YYFINAL -- State number of the termination state. */ ++#define YYFINAL 16 ++/* YYLAST -- Last index in YYTABLE. */ ++#define YYLAST 735 ++ ++/* YYNTOKENS -- Number of terminals. */ ++#define YYNTOKENS 65 ++/* YYNNTS -- Number of nonterminals. */ ++#define YYNNTS 72 ++/* YYNRULES -- Number of rules. */ ++#define YYNRULES 184 ++/* YYNSTATES -- Number of states. */ ++#define YYNSTATES 334 ++ ++/* YYMAXUTOK -- Last valid token kind. */ ++#define YYMAXUTOK 257 ++ ++ ++/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM ++ as returned by yylex, with out-of-bounds checking. */ ++#define YYTRANSLATE(YYX) \ ++ (0 <= (YYX) && (YYX) <= YYMAXUTOK \ ++ ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ ++ : YYSYMBOL_YYUNDEF) ++ ++/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM ++ as returned by yylex. */ ++static const yytype_int8 yytranslate[] = ++{ ++ 0, 4, 5, 6, 7, 8, 9, 10, 11, 2, ++ 12, 13, 14, 15, 16, 2, 2, 2, 2, 2, ++ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, ++ 27, 28, 29, 30, 31, 32, 33, 34, 35, 2, ++ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, ++ 46, 47, 48, 49, 50, 51, 2, 2, 2, 2, ++ 52, 53, 54, 55, 56, 2, 2, 2, 2, 2, ++ 57, 58, 59, 60, 61, 62, 63, 64, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 3, 1, 2 ++}; ++ ++#if YYDEBUG ++ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ ++static const yytype_int16 yyrline[] = ++{ ++ 0, 254, 254, 256, 258, 262, 268, 269, 270, 273, ++ 275, 279, 287, 288, 289, 290, 291, 294, 295, 298, ++ 299, 302, 303, 304, 305, 306, 307, 308, 309, 312, ++ 327, 337, 340, 346, 351, 356, 361, 366, 371, 376, ++ 381, 386, 391, 392, 393, 394, 401, 403, 405, 409, ++ 413, 417, 421, 423, 427, 429, 433, 439, 441, 445, ++ 447, 451, 457, 463, 465, 467, 470, 471, 472, 473, ++ 474, 477, 479, 483, 487, 491, 495, 497, 501, 503, ++ 507, 511, 512, 515, 517, 519, 521, 523, 527, 528, ++ 531, 532, 536, 537, 540, 542, 546, 550, 551, 554, ++ 557, 559, 563, 565, 567, 571, 573, 577, 581, 585, ++ 586, 587, 588, 591, 592, 595, 597, 599, 601, 603, ++ 605, 607, 609, 611, 613, 615, 619, 620, 623, 624, ++ 625, 626, 627, 637, 638, 641, 643, 647, 649, 651, ++ 653, 655, 657, 661, 663, 665, 667, 669, 671, 673, ++ 675, 679, 681, 685, 689, 691, 693, 695, 699, 701, ++ 703, 705, 709, 710, 713, 715, 717, 719, 723, 727, ++ 733, 734, 754, 755, 758, 759, 762, 765, 768, 771, ++ 772, 775, 778, 779, 782 ++}; ++#endif ++ ++/** Accessing symbol of state STATE. */ ++#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) ++ ++#if YYDEBUG || 0 ++/* The user-facing name of the symbol whose (internal) number is ++ YYSYMBOL. No bounds checking. */ ++static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; ++ ++/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. ++ First, the terminals, then, starting at YYNTOKENS, nonterminals. */ ++static const char *const yytname[] = ++{ ++ "END_OF_FILE", "error", "\"invalid token\"", "ERROR_TOK", "XKB_KEYMAP", ++ "XKB_KEYCODES", "XKB_TYPES", "XKB_SYMBOLS", "XKB_COMPATMAP", ++ "XKB_GEOMETRY", "XKB_SEMANTICS", "XKB_LAYOUT", "INCLUDE", "OVERRIDE", ++ "AUGMENT", "REPLACE", "ALTERNATE", "VIRTUAL_MODS", "TYPE", "INTERPRET", ++ "ACTION_TOK", "KEY", "ALIAS", "GROUP", "MODIFIER_MAP", "INDICATOR", ++ "SHAPE", "KEYS", "ROW", "SECTION", "OVERLAY", "TEXT", "OUTLINE", "SOLID", ++ "LOGO", "VIRTUAL", "EQUALS", "PLUS", "MINUS", "DIVIDE", "TIMES", ++ "OBRACE", "CBRACE", "OPAREN", "CPAREN", "OBRACKET", "CBRACKET", "DOT", ++ "COMMA", "SEMI", "EXCLAM", "INVERT", "STRING", "INTEGER", "FLOAT", ++ "IDENT", "KEYNAME", "PARTIAL", "DEFAULT", "HIDDEN", "ALPHANUMERIC_KEYS", ++ "MODIFIER_KEYS", "KEYPAD_KEYS", "FUNCTION_KEYS", "ALTERNATE_GROUP", ++ "$accept", "XkbFile", "XkbCompositeMap", "XkbCompositeType", ++ "XkbMapConfigList", "XkbMapConfig", "FileType", "OptFlags", "Flags", ++ "Flag", "DeclList", "Decl", "VarDecl", "KeyNameDecl", "KeyAliasDecl", ++ "VModDecl", "VModDefList", "VModDef", "InterpretDecl", "InterpretMatch", ++ "VarDeclList", "KeyTypeDecl", "SymbolsDecl", "SymbolsBody", ++ "SymbolsVarDecl", "ArrayInit", "GroupCompatDecl", "ModMapDecl", ++ "LedMapDecl", "LedNameDecl", "ShapeDecl", "SectionDecl", "SectionBody", ++ "SectionBodyItem", "RowBody", "RowBodyItem", "Keys", "Key", ++ "OverlayDecl", "OverlayKeyList", "OverlayKey", "OutlineList", ++ "OutlineInList", "CoordList", "Coord", "DoodadDecl", "DoodadType", ++ "FieldSpec", "Element", "OptMergeMode", "MergeMode", "OptExprList", ++ "ExprList", "Expr", "Term", "ActionList", "Action", "Lhs", "Terminal", ++ "OptKeySymList", "KeySymList", "KeySyms", "KeySym", "SignedNumber", ++ "Number", "Float", "Integer", "KeyCode", "Ident", "String", "OptMapName", ++ "MapName", YY_NULLPTR ++}; ++ ++static const char * ++yysymbol_name (yysymbol_kind_t yysymbol) ++{ ++ return yytname[yysymbol]; ++} ++#endif ++ ++#ifdef YYPRINT ++/* YYTOKNUM[NUM] -- (External) token number corresponding to the ++ (internal) symbol number NUM (which must be that of a token). */ ++static const yytype_int16 yytoknum[] = ++{ ++ 0, 256, 257, 255, 1, 2, 3, 4, 5, 6, ++ 7, 8, 10, 11, 12, 13, 14, 20, 21, 22, ++ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, ++ 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, ++ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, ++ 54, 55, 60, 61, 62, 63, 64, 70, 71, 72, ++ 73, 74, 75, 76, 77 ++}; ++#endif ++ ++#define YYPACT_NINF (-182) ++ ++#define yypact_value_is_default(Yyn) \ ++ ((Yyn) == YYPACT_NINF) ++ ++#define YYTABLE_NINF (-180) ++ ++#define yytable_value_is_error(Yyn) \ ++ 0 ++ ++ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing ++ STATE-NUM. */ ++static const yytype_int16 yypact[] = ++{ ++ 176, -182, -182, -182, -182, -182, -182, -182, -182, -182, ++ 6, -182, -182, 271, 227, -182, -182, -182, -182, -182, ++ -182, -182, -182, -182, -182, -38, -38, -182, -182, -24, ++ -182, 33, 227, -182, 210, -182, 353, 44, 5, -182, ++ -182, -182, -182, -182, -182, 32, -182, 13, 41, -182, ++ -182, -48, 55, 11, -182, 79, 87, 58, -48, -2, ++ 55, -182, 55, 72, -182, -182, -182, 107, -48, -182, ++ 110, -182, -182, -182, -182, -182, -182, -182, -182, -182, ++ -182, -182, -182, -182, -182, -182, 55, -18, -182, 127, ++ 121, -182, 66, -182, 138, -182, 136, -182, -182, -182, ++ 144, 147, -182, 152, 180, 182, 178, 184, 187, 188, ++ 190, 58, 198, 201, 214, 367, 677, 367, -182, -48, ++ -182, 367, 663, 663, 367, 494, 200, 367, 367, 367, ++ 663, 68, 449, 223, -182, -182, 212, 663, -182, -182, ++ -182, -182, -182, -182, -182, -182, -182, 367, 367, 367, ++ 367, 367, -182, -182, 57, 157, -182, 224, -182, -182, ++ -182, -182, -182, 218, 91, -182, 333, -182, 509, 537, ++ 333, 552, -48, 1, -182, -182, 228, 40, 216, 143, ++ 70, 333, 150, 593, 247, -30, 97, -182, 105, -182, ++ 261, 55, 259, 55, -182, -182, 408, -182, -182, -182, ++ 367, -182, 608, -182, -182, -182, 287, -182, -182, 367, ++ 367, 367, 367, 367, -182, 367, 367, -182, 252, -182, ++ 253, 264, 24, 269, 272, 163, -182, 273, 270, -182, ++ -182, -182, 280, 494, 285, -182, -182, 283, 367, -182, ++ 284, 112, 8, -182, -182, 294, -182, 299, -36, 304, ++ 247, 326, 649, 279, 307, -182, 204, 316, -182, 322, ++ 320, 111, 111, -182, -182, 333, 211, -182, -182, 116, ++ 367, -182, 677, -182, 24, -182, -182, -182, 333, -182, ++ 333, -182, -182, -182, -30, -182, -182, -182, -182, 247, ++ 333, 334, -182, 466, -182, 318, -182, -182, -182, -182, ++ -182, -182, 339, -182, -182, -182, 343, 120, 14, 345, ++ -182, 361, 124, -182, -182, -182, -182, 367, -182, 131, ++ -182, -182, 344, 350, 318, 166, 352, 14, -182, -182, ++ -182, -182, -182, -182 ++}; ++ ++ /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. ++ Performed when YYTABLE does not specify something else to do. Zero ++ means the default is an error. */ ++static const yytype_uint8 yydefact[] = ++{ ++ 18, 4, 21, 22, 23, 24, 25, 26, 27, 28, ++ 0, 2, 3, 0, 17, 20, 1, 6, 12, 13, ++ 15, 14, 16, 7, 8, 183, 183, 19, 184, 0, ++ 182, 0, 18, 31, 18, 10, 0, 127, 0, 9, ++ 128, 130, 129, 131, 132, 0, 29, 0, 126, 5, ++ 11, 0, 117, 116, 115, 118, 0, 119, 120, 121, ++ 122, 123, 124, 125, 110, 111, 112, 0, 0, 179, ++ 0, 180, 32, 34, 35, 30, 33, 36, 37, 39, ++ 38, 40, 41, 42, 43, 44, 0, 154, 114, 0, ++ 113, 45, 0, 53, 54, 181, 0, 170, 177, 169, ++ 0, 58, 171, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, ++ 51, 0, 0, 0, 0, 65, 0, 0, 0, 0, ++ 0, 0, 0, 0, 48, 178, 0, 0, 117, 116, ++ 118, 119, 120, 121, 122, 124, 125, 0, 0, 0, ++ 0, 0, 176, 161, 154, 0, 142, 147, 149, 160, ++ 159, 113, 158, 155, 0, 52, 55, 60, 0, 0, ++ 57, 163, 0, 0, 64, 70, 0, 113, 0, 0, ++ 0, 136, 0, 0, 0, 0, 0, 101, 0, 106, ++ 0, 121, 123, 0, 84, 86, 0, 82, 87, 85, ++ 0, 49, 0, 144, 147, 143, 0, 145, 146, 134, ++ 0, 0, 0, 0, 156, 0, 0, 46, 0, 59, ++ 0, 170, 0, 169, 0, 0, 152, 0, 162, 167, ++ 166, 69, 0, 0, 0, 50, 73, 0, 0, 76, ++ 0, 0, 0, 175, 174, 0, 173, 0, 0, 0, ++ 0, 0, 0, 0, 0, 81, 0, 0, 150, 0, ++ 133, 138, 139, 137, 140, 141, 0, 61, 56, 0, ++ 134, 72, 0, 71, 0, 62, 63, 67, 66, 74, ++ 135, 75, 102, 172, 0, 78, 100, 79, 105, 0, ++ 104, 0, 91, 0, 89, 0, 80, 77, 108, 148, ++ 157, 168, 0, 151, 165, 164, 0, 0, 0, 0, ++ 88, 0, 0, 98, 153, 107, 103, 0, 94, 0, ++ 93, 83, 0, 0, 0, 0, 0, 0, 99, 96, ++ 97, 95, 90, 92 ++}; ++ ++ /* YYPGOTO[NTERM-NUM]. */ ++static const yytype_int16 yypgoto[] = ++{ ++ -182, -182, -182, -182, -182, 181, -182, 402, -182, 389, ++ -182, -182, -35, -182, -182, -182, -182, 288, -182, -182, ++ -50, -182, -182, -182, 173, 174, -182, -182, 362, -182, ++ -182, -182, -182, 215, -182, 119, -182, 86, -182, -182, ++ 90, -182, 167, -181, 185, 369, -182, -27, -182, -182, ++ -182, 154, -126, 83, 76, -182, 158, -31, -182, -182, ++ 221, 170, -52, 161, 205, -182, -44, -182, -47, -34, ++ 420, -182 ++}; ++ ++ /* YYDEFGOTO[NTERM-NUM]. */ ++static const yytype_int16 yydefgoto[] = ++{ ++ -1, 10, 11, 25, 34, 12, 26, 36, 14, 15, ++ 37, 46, 167, 73, 74, 75, 92, 93, 76, 100, ++ 168, 77, 78, 173, 174, 175, 79, 80, 195, 82, ++ 83, 84, 196, 197, 293, 294, 319, 320, 198, 312, ++ 313, 186, 187, 188, 189, 199, 86, 154, 88, 47, ++ 48, 259, 260, 181, 156, 225, 226, 157, 158, 227, ++ 228, 229, 230, 245, 246, 159, 160, 136, 161, 162, ++ 29, 30 ++}; ++ ++ /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If ++ positive, shift that token. If negative, reduce the rule whose ++ number is the opposite. If YYTABLE_NINF, syntax error. */ ++static const yytype_int16 yytable[] = ++{ ++ 90, 101, 180, 241, 94, 184, 16, 69, 242, 102, ++ 71, 106, 72, 105, 28, 107, 89, 32, 96, 69, ++ 87, 112, 71, 243, 244, 108, 109, 115, 110, 116, ++ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ++ 97, 61, 62, 232, 63, 64, 65, 66, 67, 233, ++ 95, 98, 114, 97, 49, 317, 40, 41, 42, 43, ++ 44, 243, 244, 68, 98, 222, 99, 133, 69, 70, ++ 318, 71, 94, 169, 33, 90, 90, 98, 177, 99, ++ 183, 50, -68, 90, 190, 90, 45, 202, -68, 163, ++ 90, 89, 89, 91, 176, 87, 87, 194, 87, 89, ++ 209, 89, 115, 87, 116, 87, 89, 95, 307, 184, ++ 87, 98, 237, 185, 119, 120, 204, 204, 238, 204, ++ 204, 90, 90, 69, -109, 231, 71, 102, 210, 211, ++ 212, 213, 111, 219, 219, 103, 90, 89, 89, 247, ++ 217, 87, 87, 104, 224, 248, 113, 249, 219, 90, ++ 212, 213, 89, 250, 282, 90, 87, 108, 301, 253, ++ 250, 194, 316, 117, 274, 89, 323, 219, 250, 87, ++ 118, 89, 324, 326, 121, 87, 1, 122, 102, 327, ++ 210, 211, 212, 213, 124, 123, 177, 210, 211, 212, ++ 213, 325, 236, 125, 210, 211, 212, 213, 155, 239, ++ 164, 190, 176, 214, 166, 90, 87, 170, 331, 271, ++ 179, 272, 182, 35, 238, 39, 126, 292, 127, 128, ++ 129, 89, 305, 203, 205, 87, 207, 208, 130, 131, ++ 102, 132, 206, 2, 3, 4, 5, 6, 7, 8, ++ 9, 210, 211, 212, 213, 224, 90, 134, 210, 211, ++ 212, 213, 38, 297, 135, 137, 178, 300, 292, 200, ++ 215, 201, 89, 216, 234, 235, 87, 2, 3, 4, ++ 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, ++ 22, 23, 24, 256, 2, 3, 4, 5, 6, 7, ++ 8, 9, 185, 261, 262, 263, 264, 251, 265, 266, ++ 252, 267, 268, 138, 139, 54, 140, -124, 141, 142, ++ 143, 144, -179, 61, 145, 270, 146, 278, 274, 273, ++ 295, 280, 147, 148, 210, 211, 212, 213, 149, 275, ++ 171, 258, 279, 281, 290, 150, 151, 95, 98, 152, ++ 69, 153, 284, 71, 138, 139, 54, 140, 285, 141, ++ 142, 143, 144, 287, 61, 145, 296, 146, 18, 19, ++ 20, 21, 22, 147, 148, 298, 299, 289, 238, 149, ++ 210, 211, 212, 213, 311, 308, 150, 151, 95, 98, ++ 152, 69, 153, 314, 71, 138, 139, 54, 140, 315, ++ 141, 142, 143, 144, 321, 61, 145, 322, 146, 329, ++ 328, 332, 13, 27, 147, 148, 276, 165, 277, 81, ++ 149, 255, 310, 333, 330, 286, 85, 150, 151, 95, ++ 98, 152, 69, 153, 302, 71, 138, 139, 54, 140, ++ 303, 141, 142, 191, 144, 288, 192, 145, 193, 63, ++ 64, 65, 66, 269, 304, 306, 31, 283, 0, 0, ++ 254, 0, 0, 0, 0, 0, 0, 0, 68, 0, ++ 0, 0, 0, 69, 0, 0, 71, 138, 139, 54, ++ 140, 0, 141, 142, 191, 144, 0, 192, 145, 193, ++ 63, 64, 65, 66, 138, 139, 54, 140, 0, 141, ++ 142, 143, 144, 291, 61, 145, 0, 146, 0, 68, ++ 0, 0, 0, 0, 69, 0, 0, 71, 309, 0, ++ 0, 0, 138, 139, 54, 140, 68, 141, 142, 143, ++ 144, 69, 61, 145, 71, 146, 0, 138, 139, 54, ++ 140, 0, 141, 142, 143, 144, 0, 61, 145, 171, ++ 146, 0, 0, 0, 172, 0, 0, 0, 0, 69, ++ 0, 218, 71, 0, 0, 138, 139, 54, 140, 68, ++ 141, 142, 143, 144, 69, 61, 145, 71, 146, 0, ++ 138, 139, 54, 140, 0, 141, 142, 143, 144, 220, ++ 61, 221, 0, 146, 0, 0, 0, 68, 0, 0, ++ 0, 0, 69, 222, 0, 71, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 98, 0, 223, 0, 0, ++ 71, 138, 139, 54, 140, 0, 141, 142, 143, 144, ++ 0, 61, 145, 0, 146, 0, 138, 139, 54, 140, ++ 0, 141, 142, 143, 144, 240, 61, 145, 0, 146, ++ 0, 0, 0, 68, 0, 0, 0, 0, 69, 0, ++ 257, 71, 0, 0, 0, 0, 0, 0, 68, 0, ++ 0, 0, 0, 69, 0, 0, 71, 138, 139, 54, ++ 140, 0, 141, 142, 143, 144, 291, 61, 145, 0, ++ 146, 138, 139, 54, 140, 0, 141, 142, 143, 144, ++ 0, 61, 145, 0, 146, 138, 139, 54, 140, 68, ++ 141, 142, 143, 144, 69, 61, 145, 71, 146, 0, ++ 0, 0, 0, 68, 0, 0, 0, 0, 69, 0, ++ 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 69, 0, 0, 71 ++}; ++ ++static const yytype_int16 yycheck[] = ++{ ++ 47, 53, 128, 184, 51, 41, 0, 55, 38, 53, ++ 58, 58, 47, 57, 52, 59, 47, 41, 52, 55, ++ 47, 68, 58, 53, 54, 59, 60, 45, 62, 47, ++ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, ++ 29, 28, 29, 42, 31, 32, 33, 34, 35, 48, ++ 52, 53, 86, 29, 49, 41, 12, 13, 14, 15, ++ 16, 53, 54, 50, 53, 41, 55, 111, 55, 56, ++ 56, 58, 119, 123, 41, 122, 123, 53, 125, 55, ++ 130, 49, 42, 130, 131, 132, 42, 137, 48, 116, ++ 137, 122, 123, 52, 125, 122, 123, 132, 125, 130, ++ 43, 132, 45, 130, 47, 132, 137, 52, 289, 41, ++ 137, 53, 42, 45, 48, 49, 147, 148, 48, 150, ++ 151, 168, 169, 55, 52, 172, 58, 171, 37, 38, ++ 39, 40, 25, 168, 169, 56, 183, 168, 169, 42, ++ 49, 168, 169, 56, 171, 48, 36, 42, 183, 196, ++ 39, 40, 183, 48, 42, 202, 183, 191, 42, 193, ++ 48, 196, 42, 36, 48, 196, 42, 202, 48, 196, ++ 49, 202, 48, 42, 36, 202, 0, 41, 222, 48, ++ 37, 38, 39, 40, 37, 41, 233, 37, 38, 39, ++ 40, 317, 49, 41, 37, 38, 39, 40, 115, 49, ++ 117, 248, 233, 46, 121, 252, 233, 124, 42, 46, ++ 127, 48, 129, 32, 48, 34, 36, 252, 36, 41, ++ 36, 252, 274, 147, 148, 252, 150, 151, 41, 41, ++ 274, 41, 149, 57, 58, 59, 60, 61, 62, 63, ++ 64, 37, 38, 39, 40, 272, 293, 49, 37, 38, ++ 39, 40, 42, 49, 53, 41, 56, 46, 293, 36, ++ 36, 49, 293, 45, 36, 49, 293, 57, 58, 59, ++ 60, 61, 62, 63, 64, 4, 5, 6, 7, 8, ++ 9, 10, 11, 200, 57, 58, 59, 60, 61, 62, ++ 63, 64, 45, 210, 211, 212, 213, 36, 215, 216, ++ 41, 49, 49, 18, 19, 20, 21, 43, 23, 24, ++ 25, 26, 43, 28, 29, 43, 31, 234, 48, 46, ++ 41, 238, 37, 38, 37, 38, 39, 40, 43, 49, ++ 45, 44, 49, 49, 251, 50, 51, 52, 53, 54, ++ 55, 56, 48, 58, 18, 19, 20, 21, 49, 23, ++ 24, 25, 26, 49, 28, 29, 49, 31, 5, 6, ++ 7, 8, 9, 37, 38, 49, 44, 41, 48, 43, ++ 37, 38, 39, 40, 56, 41, 50, 51, 52, 53, ++ 54, 55, 56, 44, 58, 18, 19, 20, 21, 46, ++ 23, 24, 25, 26, 49, 28, 29, 36, 31, 49, ++ 56, 49, 0, 14, 37, 38, 233, 119, 234, 47, ++ 43, 196, 293, 327, 324, 248, 47, 50, 51, 52, ++ 53, 54, 55, 56, 270, 58, 18, 19, 20, 21, ++ 272, 23, 24, 25, 26, 250, 28, 29, 30, 31, ++ 32, 33, 34, 222, 274, 284, 26, 242, -1, -1, ++ 42, -1, -1, -1, -1, -1, -1, -1, 50, -1, ++ -1, -1, -1, 55, -1, -1, 58, 18, 19, 20, ++ 21, -1, 23, 24, 25, 26, -1, 28, 29, 30, ++ 31, 32, 33, 34, 18, 19, 20, 21, -1, 23, ++ 24, 25, 26, 27, 28, 29, -1, 31, -1, 50, ++ -1, -1, -1, -1, 55, -1, -1, 58, 42, -1, ++ -1, -1, 18, 19, 20, 21, 50, 23, 24, 25, ++ 26, 55, 28, 29, 58, 31, -1, 18, 19, 20, ++ 21, -1, 23, 24, 25, 26, -1, 28, 29, 45, ++ 31, -1, -1, -1, 50, -1, -1, -1, -1, 55, ++ -1, 42, 58, -1, -1, 18, 19, 20, 21, 50, ++ 23, 24, 25, 26, 55, 28, 29, 58, 31, -1, ++ 18, 19, 20, 21, -1, 23, 24, 25, 26, 42, ++ 28, 29, -1, 31, -1, -1, -1, 50, -1, -1, ++ -1, -1, 55, 41, -1, 58, -1, -1, -1, -1, ++ -1, -1, -1, -1, -1, 53, -1, 55, -1, -1, ++ 58, 18, 19, 20, 21, -1, 23, 24, 25, 26, ++ -1, 28, 29, -1, 31, -1, 18, 19, 20, 21, ++ -1, 23, 24, 25, 26, 42, 28, 29, -1, 31, ++ -1, -1, -1, 50, -1, -1, -1, -1, 55, -1, ++ 42, 58, -1, -1, -1, -1, -1, -1, 50, -1, ++ -1, -1, -1, 55, -1, -1, 58, 18, 19, 20, ++ 21, -1, 23, 24, 25, 26, 27, 28, 29, -1, ++ 31, 18, 19, 20, 21, -1, 23, 24, 25, 26, ++ -1, 28, 29, -1, 31, 18, 19, 20, 21, 50, ++ 23, 24, 25, 26, 55, 28, 29, 58, 31, -1, ++ -1, -1, -1, 50, -1, -1, -1, -1, 55, -1, ++ -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, ++ -1, -1, 55, -1, -1, 58 ++}; ++ ++ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing ++ symbol of state STATE-NUM. */ ++static const yytype_uint8 yystos[] = ++{ ++ 0, 0, 57, 58, 59, 60, 61, 62, 63, 64, ++ 66, 67, 70, 72, 73, 74, 0, 4, 5, 6, ++ 7, 8, 9, 10, 11, 68, 71, 74, 52, 135, ++ 136, 135, 41, 41, 69, 70, 72, 75, 42, 70, ++ 12, 13, 14, 15, 16, 42, 76, 114, 115, 49, ++ 49, 17, 18, 19, 20, 21, 22, 23, 24, 25, ++ 26, 28, 29, 31, 32, 33, 34, 35, 50, 55, ++ 56, 58, 77, 78, 79, 80, 83, 86, 87, 91, ++ 92, 93, 94, 95, 96, 110, 111, 112, 113, 122, ++ 133, 52, 81, 82, 133, 52, 134, 29, 53, 55, ++ 84, 127, 131, 56, 56, 131, 133, 131, 134, 134, ++ 134, 25, 133, 36, 134, 45, 47, 36, 49, 48, ++ 49, 36, 41, 41, 37, 41, 36, 36, 41, 36, ++ 41, 41, 41, 131, 49, 53, 132, 41, 18, 19, ++ 21, 23, 24, 25, 26, 29, 31, 37, 38, 43, ++ 50, 51, 54, 56, 112, 118, 119, 122, 123, 130, ++ 131, 133, 134, 112, 118, 82, 118, 77, 85, 85, ++ 118, 45, 50, 88, 89, 90, 122, 133, 56, 118, ++ 117, 118, 118, 85, 41, 45, 106, 107, 108, 109, ++ 133, 25, 28, 30, 77, 93, 97, 98, 103, 110, ++ 36, 49, 85, 119, 122, 119, 118, 119, 119, 43, ++ 37, 38, 39, 40, 46, 36, 45, 49, 42, 77, ++ 42, 29, 41, 55, 112, 120, 121, 124, 125, 126, ++ 127, 133, 42, 48, 36, 49, 49, 42, 48, 49, ++ 42, 108, 38, 53, 54, 128, 129, 42, 48, 42, ++ 48, 36, 41, 134, 42, 98, 118, 42, 44, 116, ++ 117, 118, 118, 118, 118, 118, 118, 49, 49, 125, ++ 43, 46, 48, 46, 48, 49, 89, 90, 118, 49, ++ 118, 49, 42, 129, 48, 49, 107, 49, 109, 41, ++ 118, 27, 77, 99, 100, 41, 49, 49, 49, 44, ++ 46, 42, 116, 121, 126, 127, 128, 108, 41, 42, ++ 100, 56, 104, 105, 44, 46, 42, 41, 56, 101, ++ 102, 49, 36, 42, 48, 117, 42, 48, 56, 49, ++ 105, 42, 49, 102 ++}; ++ ++ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ ++static const yytype_uint8 yyr1[] = ++{ ++ 0, 65, 66, 66, 66, 67, 68, 68, 68, 69, ++ 69, 70, 71, 71, 71, 71, 71, 72, 72, 73, ++ 73, 74, 74, 74, 74, 74, 74, 74, 74, 75, ++ 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, ++ 76, 76, 76, 76, 76, 76, 77, 77, 77, 78, ++ 79, 80, 81, 81, 82, 82, 83, 84, 84, 85, ++ 85, 86, 87, 88, 88, 88, 89, 89, 89, 89, ++ 89, 90, 90, 91, 92, 93, 94, 94, 95, 95, ++ 96, 97, 97, 98, 98, 98, 98, 98, 99, 99, ++ 100, 100, 101, 101, 102, 102, 103, 104, 104, 105, ++ 106, 106, 107, 107, 107, 108, 108, 109, 110, 111, ++ 111, 111, 111, 112, 112, 113, 113, 113, 113, 113, ++ 113, 113, 113, 113, 113, 113, 114, 114, 115, 115, ++ 115, 115, 115, 116, 116, 117, 117, 118, 118, 118, ++ 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, ++ 119, 120, 120, 121, 122, 122, 122, 122, 123, 123, ++ 123, 123, 124, 124, 125, 125, 125, 125, 126, 127, ++ 127, 127, 128, 128, 129, 129, 130, 131, 132, 133, ++ 133, 134, 135, 135, 136 ++}; ++ ++ /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ ++static const yytype_int8 yyr2[] = ++{ ++ 0, 2, 1, 1, 1, 7, 1, 1, 1, 2, ++ 1, 7, 1, 1, 1, 1, 1, 1, 0, 2, ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, ++ 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 4, 2, 3, 4, ++ 5, 3, 3, 1, 1, 3, 6, 3, 1, 2, ++ 1, 6, 6, 3, 1, 0, 3, 3, 1, 2, ++ 1, 3, 3, 5, 6, 6, 5, 6, 6, 6, ++ 6, 2, 1, 5, 1, 1, 1, 1, 2, 1, ++ 5, 1, 3, 1, 1, 3, 6, 3, 1, 3, ++ 3, 1, 3, 5, 3, 3, 1, 5, 6, 1, ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, ++ 1, 1, 1, 1, 0, 3, 1, 3, 3, 3, ++ 3, 3, 1, 2, 2, 2, 2, 1, 4, 1, ++ 3, 3, 1, 4, 1, 3, 4, 6, 1, 1, ++ 1, 1, 1, 0, 3, 3, 1, 1, 3, 1, ++ 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 0, 1 ++}; ++ ++ ++enum { YYENOMEM = -2 }; ++ ++#define yyerrok (yyerrstatus = 0) ++#define yyclearin (yychar = YYEMPTY) ++ ++#define YYACCEPT goto yyacceptlab ++#define YYABORT goto yyabortlab ++#define YYERROR goto yyerrorlab ++ ++ ++#define YYRECOVERING() (!!yyerrstatus) ++ ++#define YYBACKUP(Token, Value) \ ++ do \ ++ if (yychar == YYEMPTY) \ ++ { \ ++ yychar = (Token); \ ++ yylval = (Value); \ ++ YYPOPSTACK (yylen); \ ++ yystate = *yyssp; \ ++ goto yybackup; \ ++ } \ ++ else \ ++ { \ ++ yyerror (param, YY_("syntax error: cannot back up")); \ ++ YYERROR; \ ++ } \ ++ while (0) ++ ++/* Backward compatibility with an undocumented macro. ++ Use YYerror or YYUNDEF. */ ++#define YYERRCODE YYUNDEF ++ ++ ++/* Enable debugging if requested. */ ++#if YYDEBUG ++ ++# ifndef YYFPRINTF ++# include /* INFRINGES ON USER NAME SPACE */ ++# define YYFPRINTF fprintf ++# endif ++ ++# define YYDPRINTF(Args) \ ++do { \ ++ if (yydebug) \ ++ YYFPRINTF Args; \ ++} while (0) ++ ++/* This macro is provided for backward compatibility. */ ++# ifndef YY_LOCATION_PRINT ++# define YY_LOCATION_PRINT(File, Loc) ((void) 0) ++# endif ++ ++ ++# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ ++do { \ ++ if (yydebug) \ ++ { \ ++ YYFPRINTF (stderr, "%s ", Title); \ ++ yy_symbol_print (stderr, \ ++ Kind, Value, param); \ ++ YYFPRINTF (stderr, "\n"); \ ++ } \ ++} while (0) ++ ++ ++/*-----------------------------------. ++| Print this symbol's value on YYO. | ++`-----------------------------------*/ ++ ++static void ++yy_symbol_value_print (FILE *yyo, ++ yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, struct parser_param *param) ++{ ++ FILE *yyoutput = yyo; ++ YYUSE (yyoutput); ++ YYUSE (param); ++ if (!yyvaluep) ++ return; ++# ifdef YYPRINT ++ if (yykind < YYNTOKENS) ++ YYPRINT (yyo, yytoknum[yykind], *yyvaluep); ++# endif ++ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++ YYUSE (yykind); ++ YY_IGNORE_MAYBE_UNINITIALIZED_END ++} ++ ++ ++/*---------------------------. ++| Print this symbol on YYO. | ++`---------------------------*/ ++ ++static void ++yy_symbol_print (FILE *yyo, ++ yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, struct parser_param *param) ++{ ++ YYFPRINTF (yyo, "%s %s (", ++ yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); ++ ++ yy_symbol_value_print (yyo, yykind, yyvaluep, param); ++ YYFPRINTF (yyo, ")"); ++} ++ ++/*------------------------------------------------------------------. ++| yy_stack_print -- Print the state stack from its BOTTOM up to its | ++| TOP (included). | ++`------------------------------------------------------------------*/ ++ ++static void ++yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) ++{ ++ YYFPRINTF (stderr, "Stack now"); ++ for (; yybottom <= yytop; yybottom++) ++ { ++ int yybot = *yybottom; ++ YYFPRINTF (stderr, " %d", yybot); ++ } ++ YYFPRINTF (stderr, "\n"); ++} ++ ++# define YY_STACK_PRINT(Bottom, Top) \ ++do { \ ++ if (yydebug) \ ++ yy_stack_print ((Bottom), (Top)); \ ++} while (0) ++ ++ ++/*------------------------------------------------. ++| Report that the YYRULE is going to be reduced. | ++`------------------------------------------------*/ ++ ++static void ++yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, ++ int yyrule, struct parser_param *param) ++{ ++ int yylno = yyrline[yyrule]; ++ int yynrhs = yyr2[yyrule]; ++ int yyi; ++ YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", ++ yyrule - 1, yylno); ++ /* The symbols being reduced. */ ++ for (yyi = 0; yyi < yynrhs; yyi++) ++ { ++ YYFPRINTF (stderr, " $%d = ", yyi + 1); ++ yy_symbol_print (stderr, ++ YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), ++ &yyvsp[(yyi + 1) - (yynrhs)], param); ++ YYFPRINTF (stderr, "\n"); ++ } ++} ++ ++# define YY_REDUCE_PRINT(Rule) \ ++do { \ ++ if (yydebug) \ ++ yy_reduce_print (yyssp, yyvsp, Rule, param); \ ++} while (0) ++ ++/* Nonzero means print parse trace. It is left uninitialized so that ++ multiple parsers can coexist. */ ++int yydebug; ++#else /* !YYDEBUG */ ++# define YYDPRINTF(Args) ((void) 0) ++# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) ++# define YY_STACK_PRINT(Bottom, Top) ++# define YY_REDUCE_PRINT(Rule) ++#endif /* !YYDEBUG */ ++ ++ ++/* YYINITDEPTH -- initial size of the parser's stacks. */ ++#ifndef YYINITDEPTH ++# define YYINITDEPTH 200 ++#endif ++ ++/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only ++ if the built-in stack extension method is used). ++ ++ Do not make this value too large; the results are undefined if ++ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) ++ evaluated with infinite-precision integer arithmetic. */ ++ ++#ifndef YYMAXDEPTH ++# define YYMAXDEPTH 10000 ++#endif ++ ++ ++ ++ ++ ++ ++/*-----------------------------------------------. ++| Release the memory associated to this symbol. | ++`-----------------------------------------------*/ ++ ++static void ++yydestruct (const char *yymsg, ++ yysymbol_kind_t yykind, YYSTYPE *yyvaluep, struct parser_param *param) ++{ ++ YYUSE (yyvaluep); ++ YYUSE (param); ++ if (!yymsg) ++ yymsg = "Deleting"; ++ YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); ++ ++ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++ switch (yykind) ++ { ++ case YYSYMBOL_STRING: /* STRING */ ++#line 238 "parser.y" ++ { free(((*yyvaluep).str)); } ++#line 1321 "parser.c" ++ break; ++ ++ case YYSYMBOL_IDENT: /* IDENT */ ++#line 238 "parser.y" ++ { free(((*yyvaluep).str)); } ++#line 1327 "parser.c" ++ break; ++ ++ case YYSYMBOL_XkbFile: /* XkbFile */ ++#line 236 "parser.y" ++ { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } ++#line 1333 "parser.c" ++ break; ++ ++ case YYSYMBOL_XkbCompositeMap: /* XkbCompositeMap */ ++#line 236 "parser.y" ++ { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } ++#line 1339 "parser.c" ++ break; ++ ++ case YYSYMBOL_XkbMapConfigList: /* XkbMapConfigList */ ++#line 237 "parser.y" ++ { FreeXkbFile(((*yyvaluep).fileList).head); } ++#line 1345 "parser.c" ++ break; ++ ++ case YYSYMBOL_XkbMapConfig: /* XkbMapConfig */ ++#line 236 "parser.y" ++ { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); } ++#line 1351 "parser.c" ++ break; ++ ++ case YYSYMBOL_DeclList: /* DeclList */ ++#line 232 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).anyList).head); } ++#line 1357 "parser.c" ++ break; ++ ++ case YYSYMBOL_Decl: /* Decl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).any)); } ++#line 1363 "parser.c" ++ break; ++ ++ case YYSYMBOL_VarDecl: /* VarDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } ++#line 1369 "parser.c" ++ break; ++ ++ case YYSYMBOL_KeyNameDecl: /* KeyNameDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).keyCode)); } ++#line 1375 "parser.c" ++ break; ++ ++ case YYSYMBOL_KeyAliasDecl: /* KeyAliasDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).keyAlias)); } ++#line 1381 "parser.c" ++ break; ++ ++ case YYSYMBOL_VModDecl: /* VModDecl */ ++#line 232 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).vmodList).head); } ++#line 1387 "parser.c" ++ break; ++ ++ case YYSYMBOL_VModDefList: /* VModDefList */ ++#line 232 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).vmodList).head); } ++#line 1393 "parser.c" ++ break; ++ ++ case YYSYMBOL_VModDef: /* VModDef */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).vmod)); } ++#line 1399 "parser.c" ++ break; ++ ++ case YYSYMBOL_InterpretDecl: /* InterpretDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).interp)); } ++#line 1405 "parser.c" ++ break; ++ ++ case YYSYMBOL_InterpretMatch: /* InterpretMatch */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).interp)); } ++#line 1411 "parser.c" ++ break; ++ ++ case YYSYMBOL_VarDeclList: /* VarDeclList */ ++#line 232 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).varList).head); } ++#line 1417 "parser.c" ++ break; ++ ++ case YYSYMBOL_KeyTypeDecl: /* KeyTypeDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).keyType)); } ++#line 1423 "parser.c" ++ break; ++ ++ case YYSYMBOL_SymbolsDecl: /* SymbolsDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).syms)); } ++#line 1429 "parser.c" ++ break; ++ ++ case YYSYMBOL_SymbolsBody: /* SymbolsBody */ ++#line 232 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).varList).head); } ++#line 1435 "parser.c" ++ break; ++ ++ case YYSYMBOL_SymbolsVarDecl: /* SymbolsVarDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).var)); } ++#line 1441 "parser.c" ++ break; ++ ++ case YYSYMBOL_ArrayInit: /* ArrayInit */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1447 "parser.c" ++ break; ++ ++ case YYSYMBOL_GroupCompatDecl: /* GroupCompatDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).groupCompat)); } ++#line 1453 "parser.c" ++ break; ++ ++ case YYSYMBOL_ModMapDecl: /* ModMapDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).modMask)); } ++#line 1459 "parser.c" ++ break; ++ ++ case YYSYMBOL_LedMapDecl: /* LedMapDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).ledMap)); } ++#line 1465 "parser.c" ++ break; ++ ++ case YYSYMBOL_LedNameDecl: /* LedNameDecl */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).ledName)); } ++#line 1471 "parser.c" ++ break; ++ ++ case YYSYMBOL_CoordList: /* CoordList */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1477 "parser.c" ++ break; ++ ++ case YYSYMBOL_Coord: /* Coord */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1483 "parser.c" ++ break; ++ ++ case YYSYMBOL_OptExprList: /* OptExprList */ ++#line 232 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).exprList).head); } ++#line 1489 "parser.c" ++ break; ++ ++ case YYSYMBOL_ExprList: /* ExprList */ ++#line 232 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).exprList).head); } ++#line 1495 "parser.c" ++ break; ++ ++ case YYSYMBOL_Expr: /* Expr */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1501 "parser.c" ++ break; ++ ++ case YYSYMBOL_Term: /* Term */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1507 "parser.c" ++ break; ++ ++ case YYSYMBOL_ActionList: /* ActionList */ ++#line 232 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).exprList).head); } ++#line 1513 "parser.c" ++ break; ++ ++ case YYSYMBOL_Action: /* Action */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1519 "parser.c" ++ break; ++ ++ case YYSYMBOL_Lhs: /* Lhs */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1525 "parser.c" ++ break; ++ ++ case YYSYMBOL_Terminal: /* Terminal */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1531 "parser.c" ++ break; ++ ++ case YYSYMBOL_OptKeySymList: /* OptKeySymList */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1537 "parser.c" ++ break; ++ ++ case YYSYMBOL_KeySymList: /* KeySymList */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1543 "parser.c" ++ break; ++ ++ case YYSYMBOL_KeySyms: /* KeySyms */ ++#line 229 "parser.y" ++ { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); } ++#line 1549 "parser.c" ++ break; ++ ++ case YYSYMBOL_OptMapName: /* OptMapName */ ++#line 238 "parser.y" ++ { free(((*yyvaluep).str)); } ++#line 1555 "parser.c" ++ break; ++ ++ case YYSYMBOL_MapName: /* MapName */ ++#line 238 "parser.y" ++ { free(((*yyvaluep).str)); } ++#line 1561 "parser.c" ++ break; ++ ++ default: ++ break; ++ } ++ YY_IGNORE_MAYBE_UNINITIALIZED_END ++} ++ ++ ++ ++ ++ ++ ++/*----------. ++| yyparse. | ++`----------*/ ++ ++int ++yyparse (struct parser_param *param) ++{ ++/* Lookahead token kind. */ ++int yychar; ++ ++ ++/* The semantic value of the lookahead symbol. */ ++/* Default value used for initialization, for pacifying older GCCs ++ or non-GCC compilers. */ ++YY_INITIAL_VALUE (static YYSTYPE yyval_default;) ++YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++ ++ /* Number of syntax errors so far. */ ++ int yynerrs = 0; ++ ++ yy_state_fast_t yystate = 0; ++ /* Number of tokens to shift before error messages enabled. */ ++ int yyerrstatus = 0; ++ ++ /* Refer to the stacks through separate pointers, to allow yyoverflow ++ to reallocate them elsewhere. */ ++ ++ /* Their size. */ ++ YYPTRDIFF_T yystacksize = YYINITDEPTH; ++ ++ /* The state stack: array, bottom, top. */ ++ yy_state_t yyssa[YYINITDEPTH]; ++ yy_state_t *yyss = yyssa; ++ yy_state_t *yyssp = yyss; ++ ++ /* The semantic value stack: array, bottom, top. */ ++ YYSTYPE yyvsa[YYINITDEPTH]; ++ YYSTYPE *yyvs = yyvsa; ++ YYSTYPE *yyvsp = yyvs; ++ ++ int yyn; ++ /* The return value of yyparse. */ ++ int yyresult; ++ /* Lookahead symbol kind. */ ++ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; ++ /* The variables used to return semantic value and location from the ++ action routines. */ ++ YYSTYPE yyval; ++ ++ ++ ++#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) ++ ++ /* The number of symbols on the RHS of the reduced rule. ++ Keep to zero when no symbol should be popped. */ ++ int yylen = 0; ++ ++ YYDPRINTF ((stderr, "Starting parse\n")); ++ ++ yychar = YYEMPTY; /* Cause a token to be read. */ ++ goto yysetstate; ++ ++ ++/*------------------------------------------------------------. ++| yynewstate -- push a new state, which is found in yystate. | ++`------------------------------------------------------------*/ ++yynewstate: ++ /* In all cases, when you get here, the value and location stacks ++ have just been pushed. So pushing a state here evens the stacks. */ ++ yyssp++; ++ ++ ++/*--------------------------------------------------------------------. ++| yysetstate -- set current state (the top of the stack) to yystate. | ++`--------------------------------------------------------------------*/ ++yysetstate: ++ YYDPRINTF ((stderr, "Entering state %d\n", yystate)); ++ YY_ASSERT (0 <= yystate && yystate < YYNSTATES); ++ YY_IGNORE_USELESS_CAST_BEGIN ++ *yyssp = YY_CAST (yy_state_t, yystate); ++ YY_IGNORE_USELESS_CAST_END ++ YY_STACK_PRINT (yyss, yyssp); ++ ++ if (yyss + yystacksize - 1 <= yyssp) ++#if !defined yyoverflow && !defined YYSTACK_RELOCATE ++ goto yyexhaustedlab; ++#else ++ { ++ /* Get the current used size of the three stacks, in elements. */ ++ YYPTRDIFF_T yysize = yyssp - yyss + 1; ++ ++# if defined yyoverflow ++ { ++ /* Give user a chance to reallocate the stack. Use copies of ++ these so that the &'s don't force the real ones into ++ memory. */ ++ yy_state_t *yyss1 = yyss; ++ YYSTYPE *yyvs1 = yyvs; ++ ++ /* Each stack pointer address is followed by the size of the ++ data in use in that stack, in bytes. This used to be a ++ conditional around just the two extra args, but that might ++ be undefined if yyoverflow is a macro. */ ++ yyoverflow (YY_("memory exhausted"), ++ &yyss1, yysize * YYSIZEOF (*yyssp), ++ &yyvs1, yysize * YYSIZEOF (*yyvsp), ++ &yystacksize); ++ yyss = yyss1; ++ yyvs = yyvs1; ++ } ++# else /* defined YYSTACK_RELOCATE */ ++ /* Extend the stack our own way. */ ++ if (YYMAXDEPTH <= yystacksize) ++ goto yyexhaustedlab; ++ yystacksize *= 2; ++ if (YYMAXDEPTH < yystacksize) ++ yystacksize = YYMAXDEPTH; ++ ++ { ++ yy_state_t *yyss1 = yyss; ++ union yyalloc *yyptr = ++ YY_CAST (union yyalloc *, ++ YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); ++ if (! yyptr) ++ goto yyexhaustedlab; ++ YYSTACK_RELOCATE (yyss_alloc, yyss); ++ YYSTACK_RELOCATE (yyvs_alloc, yyvs); ++# undef YYSTACK_RELOCATE ++ if (yyss1 != yyssa) ++ YYSTACK_FREE (yyss1); ++ } ++# endif ++ ++ yyssp = yyss + yysize - 1; ++ yyvsp = yyvs + yysize - 1; ++ ++ YY_IGNORE_USELESS_CAST_BEGIN ++ YYDPRINTF ((stderr, "Stack size increased to %ld\n", ++ YY_CAST (long, yystacksize))); ++ YY_IGNORE_USELESS_CAST_END ++ ++ if (yyss + yystacksize - 1 <= yyssp) ++ YYABORT; ++ } ++#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ ++ ++ if (yystate == YYFINAL) ++ YYACCEPT; ++ ++ goto yybackup; ++ ++ ++/*-----------. ++| yybackup. | ++`-----------*/ ++yybackup: ++ /* Do appropriate processing given the current state. Read a ++ lookahead token if we need one and don't already have one. */ ++ ++ /* First try to decide what to do without reference to lookahead token. */ ++ yyn = yypact[yystate]; ++ if (yypact_value_is_default (yyn)) ++ goto yydefault; ++ ++ /* Not known => get a lookahead token if don't already have one. */ ++ ++ /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ ++ if (yychar == YYEMPTY) ++ { ++ YYDPRINTF ((stderr, "Reading a token\n")); ++ yychar = yylex (&yylval, param_scanner); ++ } ++ ++ if (yychar <= END_OF_FILE) ++ { ++ yychar = END_OF_FILE; ++ yytoken = YYSYMBOL_YYEOF; ++ YYDPRINTF ((stderr, "Now at end of input.\n")); ++ } ++ else if (yychar == YYerror) ++ { ++ /* The scanner already issued an error message, process directly ++ to error recovery. But do not keep the error token as ++ lookahead, it is too special and may lead us to an endless ++ loop in error recovery. */ ++ yychar = YYUNDEF; ++ yytoken = YYSYMBOL_YYerror; ++ goto yyerrlab1; ++ } ++ else ++ { ++ yytoken = YYTRANSLATE (yychar); ++ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); ++ } ++ ++ /* If the proper action on seeing token YYTOKEN is to reduce or to ++ detect an error, take that action. */ ++ yyn += yytoken; ++ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) ++ goto yydefault; ++ yyn = yytable[yyn]; ++ if (yyn <= 0) ++ { ++ if (yytable_value_is_error (yyn)) ++ goto yyerrlab; ++ yyn = -yyn; ++ goto yyreduce; ++ } ++ ++ /* Count tokens shifted since error; after three, turn off error ++ status. */ ++ if (yyerrstatus) ++ yyerrstatus--; ++ ++ /* Shift the lookahead token. */ ++ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); ++ yystate = yyn; ++ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++ *++yyvsp = yylval; ++ YY_IGNORE_MAYBE_UNINITIALIZED_END ++ ++ /* Discard the shifted token. */ ++ yychar = YYEMPTY; ++ goto yynewstate; ++ ++ ++/*-----------------------------------------------------------. ++| yydefault -- do the default action for the current state. | ++`-----------------------------------------------------------*/ ++yydefault: ++ yyn = yydefact[yystate]; ++ if (yyn == 0) ++ goto yyerrlab; ++ goto yyreduce; ++ ++ ++/*-----------------------------. ++| yyreduce -- do a reduction. | ++`-----------------------------*/ ++yyreduce: ++ /* yyn is the number of a rule to reduce with. */ ++ yylen = yyr2[yyn]; ++ ++ /* If YYLEN is nonzero, implement the default value of the action: ++ '$$ = $1'. ++ ++ Otherwise, the following line sets YYVAL to garbage. ++ This behavior is undocumented and Bison ++ users should not rely upon it. Assigning to YYVAL ++ unconditionally makes the parser a bit smaller, and it avoids a ++ GCC warning that YYVAL may be used uninitialized. */ ++ yyval = yyvsp[1-yylen]; ++ ++ ++ YY_REDUCE_PRINT (yyn); ++ switch (yyn) ++ { ++ case 2: /* XkbFile: XkbCompositeMap */ ++#line 255 "parser.y" ++ { (yyval.file) = param->rtrn = (yyvsp[0].file); param->more_maps = !!param->rtrn; } ++#line 1835 "parser.c" ++ break; ++ ++ case 3: /* XkbFile: XkbMapConfig */ ++#line 257 "parser.y" ++ { (yyval.file) = param->rtrn = (yyvsp[0].file); param->more_maps = !!param->rtrn; YYACCEPT; } ++#line 1841 "parser.c" ++ break; ++ ++ case 4: /* XkbFile: END_OF_FILE */ ++#line 259 "parser.y" ++ { (yyval.file) = param->rtrn = NULL; param->more_maps = false; } ++#line 1847 "parser.c" ++ break; ++ ++ case 5: /* XkbCompositeMap: OptFlags XkbCompositeType OptMapName OBRACE XkbMapConfigList CBRACE SEMI */ ++#line 265 "parser.y" ++ { (yyval.file) = XkbFileCreate((yyvsp[-5].file_type), (yyvsp[-4].str), (ParseCommon *) (yyvsp[-2].fileList).head, (yyvsp[-6].mapFlags)); } ++#line 1853 "parser.c" ++ break; ++ ++ case 6: /* XkbCompositeType: XKB_KEYMAP */ ++#line 268 "parser.y" ++ { (yyval.file_type) = FILE_TYPE_KEYMAP; } ++#line 1859 "parser.c" ++ break; ++ ++ case 7: /* XkbCompositeType: XKB_SEMANTICS */ ++#line 269 "parser.y" ++ { (yyval.file_type) = FILE_TYPE_KEYMAP; } ++#line 1865 "parser.c" ++ break; ++ ++ case 8: /* XkbCompositeType: XKB_LAYOUT */ ++#line 270 "parser.y" ++ { (yyval.file_type) = FILE_TYPE_KEYMAP; } ++#line 1871 "parser.c" ++ break; ++ ++ case 9: /* XkbMapConfigList: XkbMapConfigList XkbMapConfig */ ++#line 274 "parser.y" ++ { (yyval.fileList).head = (yyvsp[-1].fileList).head; (yyval.fileList).last->common.next = &(yyvsp[0].file)->common; (yyval.fileList).last = (yyvsp[0].file); } ++#line 1877 "parser.c" ++ break; ++ ++ case 10: /* XkbMapConfigList: XkbMapConfig */ ++#line 276 "parser.y" ++ { (yyval.fileList).head = (yyval.fileList).last = (yyvsp[0].file); } ++#line 1883 "parser.c" ++ break; ++ ++ case 11: /* XkbMapConfig: OptFlags FileType OptMapName OBRACE DeclList CBRACE SEMI */ ++#line 282 "parser.y" ++ { ++ (yyval.file) = XkbFileCreate((yyvsp[-5].file_type), (yyvsp[-4].str), (yyvsp[-2].anyList).head, (yyvsp[-6].mapFlags)); ++ } ++#line 1891 "parser.c" ++ break; ++ ++ case 12: /* FileType: XKB_KEYCODES */ ++#line 287 "parser.y" ++ { (yyval.file_type) = FILE_TYPE_KEYCODES; } ++#line 1897 "parser.c" ++ break; ++ ++ case 13: /* FileType: XKB_TYPES */ ++#line 288 "parser.y" ++ { (yyval.file_type) = FILE_TYPE_TYPES; } ++#line 1903 "parser.c" ++ break; ++ ++ case 14: /* FileType: XKB_COMPATMAP */ ++#line 289 "parser.y" ++ { (yyval.file_type) = FILE_TYPE_COMPAT; } ++#line 1909 "parser.c" ++ break; ++ ++ case 15: /* FileType: XKB_SYMBOLS */ ++#line 290 "parser.y" ++ { (yyval.file_type) = FILE_TYPE_SYMBOLS; } ++#line 1915 "parser.c" ++ break; ++ ++ case 16: /* FileType: XKB_GEOMETRY */ ++#line 291 "parser.y" ++ { (yyval.file_type) = FILE_TYPE_GEOMETRY; } ++#line 1921 "parser.c" ++ break; ++ ++ case 17: /* OptFlags: Flags */ ++#line 294 "parser.y" ++ { (yyval.mapFlags) = (yyvsp[0].mapFlags); } ++#line 1927 "parser.c" ++ break; ++ ++ case 18: /* OptFlags: %empty */ ++#line 295 "parser.y" ++ { (yyval.mapFlags) = 0; } ++#line 1933 "parser.c" ++ break; ++ ++ case 19: /* Flags: Flags Flag */ ++#line 298 "parser.y" ++ { (yyval.mapFlags) = ((yyvsp[-1].mapFlags) | (yyvsp[0].mapFlags)); } ++#line 1939 "parser.c" ++ break; ++ ++ case 20: /* Flags: Flag */ ++#line 299 "parser.y" ++ { (yyval.mapFlags) = (yyvsp[0].mapFlags); } ++#line 1945 "parser.c" ++ break; ++ ++ case 21: /* Flag: PARTIAL */ ++#line 302 "parser.y" ++ { (yyval.mapFlags) = MAP_IS_PARTIAL; } ++#line 1951 "parser.c" ++ break; ++ ++ case 22: /* Flag: DEFAULT */ ++#line 303 "parser.y" ++ { (yyval.mapFlags) = MAP_IS_DEFAULT; } ++#line 1957 "parser.c" ++ break; ++ ++ case 23: /* Flag: HIDDEN */ ++#line 304 "parser.y" ++ { (yyval.mapFlags) = MAP_IS_HIDDEN; } ++#line 1963 "parser.c" ++ break; ++ ++ case 24: /* Flag: ALPHANUMERIC_KEYS */ ++#line 305 "parser.y" ++ { (yyval.mapFlags) = MAP_HAS_ALPHANUMERIC; } ++#line 1969 "parser.c" ++ break; ++ ++ case 25: /* Flag: MODIFIER_KEYS */ ++#line 306 "parser.y" ++ { (yyval.mapFlags) = MAP_HAS_MODIFIER; } ++#line 1975 "parser.c" ++ break; ++ ++ case 26: /* Flag: KEYPAD_KEYS */ ++#line 307 "parser.y" ++ { (yyval.mapFlags) = MAP_HAS_KEYPAD; } ++#line 1981 "parser.c" ++ break; ++ ++ case 27: /* Flag: FUNCTION_KEYS */ ++#line 308 "parser.y" ++ { (yyval.mapFlags) = MAP_HAS_FN; } ++#line 1987 "parser.c" ++ break; ++ ++ case 28: /* Flag: ALTERNATE_GROUP */ ++#line 309 "parser.y" ++ { (yyval.mapFlags) = MAP_IS_ALTGR; } ++#line 1993 "parser.c" ++ break; ++ ++ case 29: /* DeclList: DeclList Decl */ ++#line 313 "parser.y" ++ { ++ if ((yyvsp[0].any)) { ++ if ((yyvsp[-1].anyList).head) { ++ (yyval.anyList).head = (yyvsp[-1].anyList).head; (yyvsp[-1].anyList).last->next = (yyvsp[0].any); (yyval.anyList).last = (yyvsp[0].any); ++ } else { ++ (yyval.anyList).head = (yyval.anyList).last = (yyvsp[0].any); ++ } ++ } ++ } ++#line 2007 "parser.c" ++ break; ++ ++ case 30: /* DeclList: DeclList OptMergeMode VModDecl */ ++#line 328 "parser.y" ++ { ++ for (VModDef *vmod = (yyvsp[0].vmodList).head; vmod; vmod = (VModDef *) vmod->common.next) ++ vmod->merge = (yyvsp[-1].merge); ++ if ((yyvsp[-2].anyList).head) { ++ (yyval.anyList).head = (yyvsp[-2].anyList).head; (yyvsp[-2].anyList).last->next = &(yyvsp[0].vmodList).head->common; (yyval.anyList).last = &(yyvsp[0].vmodList).last->common; ++ } else { ++ (yyval.anyList).head = &(yyvsp[0].vmodList).head->common; (yyval.anyList).last = &(yyvsp[0].vmodList).last->common; ++ } ++ } ++#line 2021 "parser.c" ++ break; ++ ++ case 31: /* DeclList: %empty */ ++#line 337 "parser.y" ++ { (yyval.anyList).head = (yyval.anyList).last = NULL; } ++#line 2027 "parser.c" ++ break; ++ ++ case 32: /* Decl: OptMergeMode VarDecl */ ++#line 341 "parser.y" ++ { ++ (yyvsp[0].var)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].var); ++ } ++#line 2036 "parser.c" ++ break; ++ ++ case 33: /* Decl: OptMergeMode InterpretDecl */ ++#line 347 "parser.y" ++ { ++ (yyvsp[0].interp)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].interp); ++ } ++#line 2045 "parser.c" ++ break; ++ ++ case 34: /* Decl: OptMergeMode KeyNameDecl */ ++#line 352 "parser.y" ++ { ++ (yyvsp[0].keyCode)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].keyCode); ++ } ++#line 2054 "parser.c" ++ break; ++ ++ case 35: /* Decl: OptMergeMode KeyAliasDecl */ ++#line 357 "parser.y" ++ { ++ (yyvsp[0].keyAlias)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].keyAlias); ++ } ++#line 2063 "parser.c" ++ break; ++ ++ case 36: /* Decl: OptMergeMode KeyTypeDecl */ ++#line 362 "parser.y" ++ { ++ (yyvsp[0].keyType)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].keyType); ++ } ++#line 2072 "parser.c" ++ break; ++ ++ case 37: /* Decl: OptMergeMode SymbolsDecl */ ++#line 367 "parser.y" ++ { ++ (yyvsp[0].syms)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].syms); ++ } ++#line 2081 "parser.c" ++ break; ++ ++ case 38: /* Decl: OptMergeMode ModMapDecl */ ++#line 372 "parser.y" ++ { ++ (yyvsp[0].modMask)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].modMask); ++ } ++#line 2090 "parser.c" ++ break; ++ ++ case 39: /* Decl: OptMergeMode GroupCompatDecl */ ++#line 377 "parser.y" ++ { ++ (yyvsp[0].groupCompat)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].groupCompat); ++ } ++#line 2099 "parser.c" ++ break; ++ ++ case 40: /* Decl: OptMergeMode LedMapDecl */ ++#line 382 "parser.y" ++ { ++ (yyvsp[0].ledMap)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].ledMap); ++ } ++#line 2108 "parser.c" ++ break; ++ ++ case 41: /* Decl: OptMergeMode LedNameDecl */ ++#line 387 "parser.y" ++ { ++ (yyvsp[0].ledName)->merge = (yyvsp[-1].merge); ++ (yyval.any) = (ParseCommon *) (yyvsp[0].ledName); ++ } ++#line 2117 "parser.c" ++ break; ++ ++ case 42: /* Decl: OptMergeMode ShapeDecl */ ++#line 391 "parser.y" ++ { (yyval.any) = NULL; } ++#line 2123 "parser.c" ++ break; ++ ++ case 43: /* Decl: OptMergeMode SectionDecl */ ++#line 392 "parser.y" ++ { (yyval.any) = NULL; } ++#line 2129 "parser.c" ++ break; ++ ++ case 44: /* Decl: OptMergeMode DoodadDecl */ ++#line 393 "parser.y" ++ { (yyval.any) = NULL; } ++#line 2135 "parser.c" ++ break; ++ ++ case 45: /* Decl: MergeMode STRING */ ++#line 395 "parser.y" ++ { ++ (yyval.any) = (ParseCommon *) IncludeCreate(param->ctx, (yyvsp[0].str), (yyvsp[-1].merge)); ++ free((yyvsp[0].str)); ++ } ++#line 2144 "parser.c" ++ break; ++ ++ case 46: /* VarDecl: Lhs EQUALS Expr SEMI */ ++#line 402 "parser.y" ++ { (yyval.var) = VarCreate((yyvsp[-3].expr), (yyvsp[-1].expr)); } ++#line 2150 "parser.c" ++ break; ++ ++ case 47: /* VarDecl: Ident SEMI */ ++#line 404 "parser.y" ++ { (yyval.var) = BoolVarCreate((yyvsp[-1].atom), true); } ++#line 2156 "parser.c" ++ break; ++ ++ case 48: /* VarDecl: EXCLAM Ident SEMI */ ++#line 406 "parser.y" ++ { (yyval.var) = BoolVarCreate((yyvsp[-1].atom), false); } ++#line 2162 "parser.c" ++ break; ++ ++ case 49: /* KeyNameDecl: KEYNAME EQUALS KeyCode SEMI */ ++#line 410 "parser.y" ++ { (yyval.keyCode) = KeycodeCreate((yyvsp[-3].atom), (yyvsp[-1].num)); } ++#line 2168 "parser.c" ++ break; ++ ++ case 50: /* KeyAliasDecl: ALIAS KEYNAME EQUALS KEYNAME SEMI */ ++#line 414 "parser.y" ++ { (yyval.keyAlias) = KeyAliasCreate((yyvsp[-3].atom), (yyvsp[-1].atom)); } ++#line 2174 "parser.c" ++ break; ++ ++ case 51: /* VModDecl: VIRTUAL_MODS VModDefList SEMI */ ++#line 418 "parser.y" ++ { (yyval.vmodList) = (yyvsp[-1].vmodList); } ++#line 2180 "parser.c" ++ break; ++ ++ case 52: /* VModDefList: VModDefList COMMA VModDef */ ++#line 422 "parser.y" ++ { (yyval.vmodList).head = (yyvsp[-2].vmodList).head; (yyval.vmodList).last->common.next = &(yyvsp[0].vmod)->common; (yyval.vmodList).last = (yyvsp[0].vmod); } ++#line 2186 "parser.c" ++ break; ++ ++ case 53: /* VModDefList: VModDef */ ++#line 424 "parser.y" ++ { (yyval.vmodList).head = (yyval.vmodList).last = (yyvsp[0].vmod); } ++#line 2192 "parser.c" ++ break; ++ ++ case 54: /* VModDef: Ident */ ++#line 428 "parser.y" ++ { (yyval.vmod) = VModCreate((yyvsp[0].atom), NULL); } ++#line 2198 "parser.c" ++ break; ++ ++ case 55: /* VModDef: Ident EQUALS Expr */ ++#line 430 "parser.y" ++ { (yyval.vmod) = VModCreate((yyvsp[-2].atom), (yyvsp[0].expr)); } ++#line 2204 "parser.c" ++ break; ++ ++ case 56: /* InterpretDecl: INTERPRET InterpretMatch OBRACE VarDeclList CBRACE SEMI */ ++#line 436 "parser.y" ++ { (yyvsp[-4].interp)->def = (yyvsp[-2].varList).head; (yyval.interp) = (yyvsp[-4].interp); } ++#line 2210 "parser.c" ++ break; ++ ++ case 57: /* InterpretMatch: KeySym PLUS Expr */ ++#line 440 "parser.y" ++ { (yyval.interp) = InterpCreate((yyvsp[-2].keysym), (yyvsp[0].expr)); } ++#line 2216 "parser.c" ++ break; ++ ++ case 58: /* InterpretMatch: KeySym */ ++#line 442 "parser.y" ++ { (yyval.interp) = InterpCreate((yyvsp[0].keysym), NULL); } ++#line 2222 "parser.c" ++ break; ++ ++ case 59: /* VarDeclList: VarDeclList VarDecl */ ++#line 446 "parser.y" ++ { (yyval.varList).head = (yyvsp[-1].varList).head; (yyval.varList).last->common.next = &(yyvsp[0].var)->common; (yyval.varList).last = (yyvsp[0].var); } ++#line 2228 "parser.c" ++ break; ++ ++ case 60: /* VarDeclList: VarDecl */ ++#line 448 "parser.y" ++ { (yyval.varList).head = (yyval.varList).last = (yyvsp[0].var); } ++#line 2234 "parser.c" ++ break; ++ ++ case 61: /* KeyTypeDecl: TYPE String OBRACE VarDeclList CBRACE SEMI */ ++#line 454 "parser.y" ++ { (yyval.keyType) = KeyTypeCreate((yyvsp[-4].atom), (yyvsp[-2].varList).head); } ++#line 2240 "parser.c" ++ break; ++ ++ case 62: /* SymbolsDecl: KEY KEYNAME OBRACE SymbolsBody CBRACE SEMI */ ++#line 460 "parser.y" ++ { (yyval.syms) = SymbolsCreate((yyvsp[-4].atom), (yyvsp[-2].varList).head); } ++#line 2246 "parser.c" ++ break; ++ ++ case 63: /* SymbolsBody: SymbolsBody COMMA SymbolsVarDecl */ ++#line 464 "parser.y" ++ { (yyval.varList).head = (yyvsp[-2].varList).head; (yyval.varList).last->common.next = &(yyvsp[0].var)->common; (yyval.varList).last = (yyvsp[0].var); } ++#line 2252 "parser.c" ++ break; ++ ++ case 64: /* SymbolsBody: SymbolsVarDecl */ ++#line 466 "parser.y" ++ { (yyval.varList).head = (yyval.varList).last = (yyvsp[0].var); } ++#line 2258 "parser.c" ++ break; ++ ++ case 65: /* SymbolsBody: %empty */ ++#line 467 "parser.y" ++ { (yyval.varList).head = (yyval.varList).last = NULL; } ++#line 2264 "parser.c" ++ break; ++ ++ case 66: /* SymbolsVarDecl: Lhs EQUALS Expr */ ++#line 470 "parser.y" ++ { (yyval.var) = VarCreate((yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2270 "parser.c" ++ break; ++ ++ case 67: /* SymbolsVarDecl: Lhs EQUALS ArrayInit */ ++#line 471 "parser.y" ++ { (yyval.var) = VarCreate((yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2276 "parser.c" ++ break; ++ ++ case 68: /* SymbolsVarDecl: Ident */ ++#line 472 "parser.y" ++ { (yyval.var) = BoolVarCreate((yyvsp[0].atom), true); } ++#line 2282 "parser.c" ++ break; ++ ++ case 69: /* SymbolsVarDecl: EXCLAM Ident */ ++#line 473 "parser.y" ++ { (yyval.var) = BoolVarCreate((yyvsp[0].atom), false); } ++#line 2288 "parser.c" ++ break; ++ ++ case 70: /* SymbolsVarDecl: ArrayInit */ ++#line 474 "parser.y" ++ { (yyval.var) = VarCreate(NULL, (yyvsp[0].expr)); } ++#line 2294 "parser.c" ++ break; ++ ++ case 71: /* ArrayInit: OBRACKET OptKeySymList CBRACKET */ ++#line 478 "parser.y" ++ { (yyval.expr) = (yyvsp[-1].expr); } ++#line 2300 "parser.c" ++ break; ++ ++ case 72: /* ArrayInit: OBRACKET ActionList CBRACKET */ ++#line 480 "parser.y" ++ { (yyval.expr) = ExprCreateActionList((yyvsp[-1].exprList).head); } ++#line 2306 "parser.c" ++ break; ++ ++ case 73: /* GroupCompatDecl: GROUP Integer EQUALS Expr SEMI */ ++#line 484 "parser.y" ++ { (yyval.groupCompat) = GroupCompatCreate((yyvsp[-3].num), (yyvsp[-1].expr)); } ++#line 2312 "parser.c" ++ break; ++ ++ case 74: /* ModMapDecl: MODIFIER_MAP Ident OBRACE ExprList CBRACE SEMI */ ++#line 488 "parser.y" ++ { (yyval.modMask) = ModMapCreate((yyvsp[-4].atom), (yyvsp[-2].exprList).head); } ++#line 2318 "parser.c" ++ break; ++ ++ case 75: /* LedMapDecl: INDICATOR String OBRACE VarDeclList CBRACE SEMI */ ++#line 492 "parser.y" ++ { (yyval.ledMap) = LedMapCreate((yyvsp[-4].atom), (yyvsp[-2].varList).head); } ++#line 2324 "parser.c" ++ break; ++ ++ case 76: /* LedNameDecl: INDICATOR Integer EQUALS Expr SEMI */ ++#line 496 "parser.y" ++ { (yyval.ledName) = LedNameCreate((yyvsp[-3].num), (yyvsp[-1].expr), false); } ++#line 2330 "parser.c" ++ break; ++ ++ case 77: /* LedNameDecl: VIRTUAL INDICATOR Integer EQUALS Expr SEMI */ ++#line 498 "parser.y" ++ { (yyval.ledName) = LedNameCreate((yyvsp[-3].num), (yyvsp[-1].expr), true); } ++#line 2336 "parser.c" ++ break; ++ ++ case 78: /* ShapeDecl: SHAPE String OBRACE OutlineList CBRACE SEMI */ ++#line 502 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2342 "parser.c" ++ break; ++ ++ case 79: /* ShapeDecl: SHAPE String OBRACE CoordList CBRACE SEMI */ ++#line 504 "parser.y" ++ { (void) (yyvsp[-2].expr); (yyval.geom) = NULL; } ++#line 2348 "parser.c" ++ break; ++ ++ case 80: /* SectionDecl: SECTION String OBRACE SectionBody CBRACE SEMI */ ++#line 508 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2354 "parser.c" ++ break; ++ ++ case 81: /* SectionBody: SectionBody SectionBodyItem */ ++#line 511 "parser.y" ++ { (yyval.geom) = NULL;} ++#line 2360 "parser.c" ++ break; ++ ++ case 82: /* SectionBody: SectionBodyItem */ ++#line 512 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2366 "parser.c" ++ break; ++ ++ case 83: /* SectionBodyItem: ROW OBRACE RowBody CBRACE SEMI */ ++#line 516 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2372 "parser.c" ++ break; ++ ++ case 84: /* SectionBodyItem: VarDecl */ ++#line 518 "parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[0].var)); (yyval.geom) = NULL; } ++#line 2378 "parser.c" ++ break; ++ ++ case 85: /* SectionBodyItem: DoodadDecl */ ++#line 520 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2384 "parser.c" ++ break; ++ ++ case 86: /* SectionBodyItem: LedMapDecl */ ++#line 522 "parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[0].ledMap)); (yyval.geom) = NULL; } ++#line 2390 "parser.c" ++ break; ++ ++ case 87: /* SectionBodyItem: OverlayDecl */ ++#line 524 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2396 "parser.c" ++ break; ++ ++ case 88: /* RowBody: RowBody RowBodyItem */ ++#line 527 "parser.y" ++ { (yyval.geom) = NULL;} ++#line 2402 "parser.c" ++ break; ++ ++ case 89: /* RowBody: RowBodyItem */ ++#line 528 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2408 "parser.c" ++ break; ++ ++ case 90: /* RowBodyItem: KEYS OBRACE Keys CBRACE SEMI */ ++#line 531 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2414 "parser.c" ++ break; ++ ++ case 91: /* RowBodyItem: VarDecl */ ++#line 533 "parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[0].var)); (yyval.geom) = NULL; } ++#line 2420 "parser.c" ++ break; ++ ++ case 92: /* Keys: Keys COMMA Key */ ++#line 536 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2426 "parser.c" ++ break; ++ ++ case 93: /* Keys: Key */ ++#line 537 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2432 "parser.c" ++ break; ++ ++ case 94: /* Key: KEYNAME */ ++#line 541 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2438 "parser.c" ++ break; ++ ++ case 95: /* Key: OBRACE ExprList CBRACE */ ++#line 543 "parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[-1].exprList).head); (yyval.geom) = NULL; } ++#line 2444 "parser.c" ++ break; ++ ++ case 96: /* OverlayDecl: OVERLAY String OBRACE OverlayKeyList CBRACE SEMI */ ++#line 547 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2450 "parser.c" ++ break; ++ ++ case 97: /* OverlayKeyList: OverlayKeyList COMMA OverlayKey */ ++#line 550 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2456 "parser.c" ++ break; ++ ++ case 98: /* OverlayKeyList: OverlayKey */ ++#line 551 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2462 "parser.c" ++ break; ++ ++ case 99: /* OverlayKey: KEYNAME EQUALS KEYNAME */ ++#line 554 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2468 "parser.c" ++ break; ++ ++ case 100: /* OutlineList: OutlineList COMMA OutlineInList */ ++#line 558 "parser.y" ++ { (yyval.geom) = NULL;} ++#line 2474 "parser.c" ++ break; ++ ++ case 101: /* OutlineList: OutlineInList */ ++#line 560 "parser.y" ++ { (yyval.geom) = NULL; } ++#line 2480 "parser.c" ++ break; ++ ++ case 102: /* OutlineInList: OBRACE CoordList CBRACE */ ++#line 564 "parser.y" ++ { (void) (yyvsp[-1].expr); (yyval.geom) = NULL; } ++#line 2486 "parser.c" ++ break; ++ ++ case 103: /* OutlineInList: Ident EQUALS OBRACE CoordList CBRACE */ ++#line 566 "parser.y" ++ { (void) (yyvsp[-1].expr); (yyval.geom) = NULL; } ++#line 2492 "parser.c" ++ break; ++ ++ case 104: /* OutlineInList: Ident EQUALS Expr */ ++#line 568 "parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[0].expr)); (yyval.geom) = NULL; } ++#line 2498 "parser.c" ++ break; ++ ++ case 105: /* CoordList: CoordList COMMA Coord */ ++#line 572 "parser.y" ++ { (void) (yyvsp[-2].expr); (void) (yyvsp[0].expr); (yyval.expr) = NULL; } ++#line 2504 "parser.c" ++ break; ++ ++ case 106: /* CoordList: Coord */ ++#line 574 "parser.y" ++ { (void) (yyvsp[0].expr); (yyval.expr) = NULL; } ++#line 2510 "parser.c" ++ break; ++ ++ case 107: /* Coord: OBRACKET SignedNumber COMMA SignedNumber CBRACKET */ ++#line 578 "parser.y" ++ { (yyval.expr) = NULL; } ++#line 2516 "parser.c" ++ break; ++ ++ case 108: /* DoodadDecl: DoodadType String OBRACE VarDeclList CBRACE SEMI */ ++#line 582 "parser.y" ++ { FreeStmt((ParseCommon *) (yyvsp[-2].varList).head); (yyval.geom) = NULL; } ++#line 2522 "parser.c" ++ break; ++ ++ case 109: /* DoodadType: TEXT */ ++#line 585 "parser.y" ++ { (yyval.num) = 0; } ++#line 2528 "parser.c" ++ break; ++ ++ case 110: /* DoodadType: OUTLINE */ ++#line 586 "parser.y" ++ { (yyval.num) = 0; } ++#line 2534 "parser.c" ++ break; ++ ++ case 111: /* DoodadType: SOLID */ ++#line 587 "parser.y" ++ { (yyval.num) = 0; } ++#line 2540 "parser.c" ++ break; ++ ++ case 112: /* DoodadType: LOGO */ ++#line 588 "parser.y" ++ { (yyval.num) = 0; } ++#line 2546 "parser.c" ++ break; ++ ++ case 113: /* FieldSpec: Ident */ ++#line 591 "parser.y" ++ { (yyval.atom) = (yyvsp[0].atom); } ++#line 2552 "parser.c" ++ break; ++ ++ case 114: /* FieldSpec: Element */ ++#line 592 "parser.y" ++ { (yyval.atom) = (yyvsp[0].atom); } ++#line 2558 "parser.c" ++ break; ++ ++ case 115: /* Element: ACTION_TOK */ ++#line 596 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "action"); } ++#line 2564 "parser.c" ++ break; ++ ++ case 116: /* Element: INTERPRET */ ++#line 598 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "interpret"); } ++#line 2570 "parser.c" ++ break; ++ ++ case 117: /* Element: TYPE */ ++#line 600 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "type"); } ++#line 2576 "parser.c" ++ break; ++ ++ case 118: /* Element: KEY */ ++#line 602 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "key"); } ++#line 2582 "parser.c" ++ break; ++ ++ case 119: /* Element: GROUP */ ++#line 604 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "group"); } ++#line 2588 "parser.c" ++ break; ++ ++ case 120: /* Element: MODIFIER_MAP */ ++#line 606 "parser.y" ++ {(yyval.atom) = xkb_atom_intern_literal(param->ctx, "modifier_map");} ++#line 2594 "parser.c" ++ break; ++ ++ case 121: /* Element: INDICATOR */ ++#line 608 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "indicator"); } ++#line 2600 "parser.c" ++ break; ++ ++ case 122: /* Element: SHAPE */ ++#line 610 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "shape"); } ++#line 2606 "parser.c" ++ break; ++ ++ case 123: /* Element: ROW */ ++#line 612 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "row"); } ++#line 2612 "parser.c" ++ break; ++ ++ case 124: /* Element: SECTION */ ++#line 614 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "section"); } ++#line 2618 "parser.c" ++ break; ++ ++ case 125: /* Element: TEXT */ ++#line 616 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "text"); } ++#line 2624 "parser.c" ++ break; ++ ++ case 126: /* OptMergeMode: MergeMode */ ++#line 619 "parser.y" ++ { (yyval.merge) = (yyvsp[0].merge); } ++#line 2630 "parser.c" ++ break; ++ ++ case 127: /* OptMergeMode: %empty */ ++#line 620 "parser.y" ++ { (yyval.merge) = MERGE_DEFAULT; } ++#line 2636 "parser.c" ++ break; ++ ++ case 128: /* MergeMode: INCLUDE */ ++#line 623 "parser.y" ++ { (yyval.merge) = MERGE_DEFAULT; } ++#line 2642 "parser.c" ++ break; ++ ++ case 129: /* MergeMode: AUGMENT */ ++#line 624 "parser.y" ++ { (yyval.merge) = MERGE_AUGMENT; } ++#line 2648 "parser.c" ++ break; ++ ++ case 130: /* MergeMode: OVERRIDE */ ++#line 625 "parser.y" ++ { (yyval.merge) = MERGE_OVERRIDE; } ++#line 2654 "parser.c" ++ break; ++ ++ case 131: /* MergeMode: REPLACE */ ++#line 626 "parser.y" ++ { (yyval.merge) = MERGE_REPLACE; } ++#line 2660 "parser.c" ++ break; ++ ++ case 132: /* MergeMode: ALTERNATE */ ++#line 628 "parser.y" ++ { ++ /* ++ * This used to be MERGE_ALT_FORM. This functionality was ++ * unused and has been removed. ++ */ ++ (yyval.merge) = MERGE_DEFAULT; ++ } ++#line 2672 "parser.c" ++ break; ++ ++ case 133: /* OptExprList: ExprList */ ++#line 637 "parser.y" ++ { (yyval.exprList) = (yyvsp[0].exprList); } ++#line 2678 "parser.c" ++ break; ++ ++ case 134: /* OptExprList: %empty */ ++#line 638 "parser.y" ++ { (yyval.exprList).head = (yyval.exprList).last = NULL; } ++#line 2684 "parser.c" ++ break; ++ ++ case 135: /* ExprList: ExprList COMMA Expr */ ++#line 642 "parser.y" ++ { (yyval.exprList).head = (yyvsp[-2].exprList).head; (yyval.exprList).last->common.next = &(yyvsp[0].expr)->common; (yyval.exprList).last = (yyvsp[0].expr); } ++#line 2690 "parser.c" ++ break; ++ ++ case 136: /* ExprList: Expr */ ++#line 644 "parser.y" ++ { (yyval.exprList).head = (yyval.exprList).last = (yyvsp[0].expr); } ++#line 2696 "parser.c" ++ break; ++ ++ case 137: /* Expr: Expr DIVIDE Expr */ ++#line 648 "parser.y" ++ { (yyval.expr) = ExprCreateBinary(EXPR_DIVIDE, (yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2702 "parser.c" ++ break; ++ ++ case 138: /* Expr: Expr PLUS Expr */ ++#line 650 "parser.y" ++ { (yyval.expr) = ExprCreateBinary(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2708 "parser.c" ++ break; ++ ++ case 139: /* Expr: Expr MINUS Expr */ ++#line 652 "parser.y" ++ { (yyval.expr) = ExprCreateBinary(EXPR_SUBTRACT, (yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2714 "parser.c" ++ break; ++ ++ case 140: /* Expr: Expr TIMES Expr */ ++#line 654 "parser.y" ++ { (yyval.expr) = ExprCreateBinary(EXPR_MULTIPLY, (yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2720 "parser.c" ++ break; ++ ++ case 141: /* Expr: Lhs EQUALS Expr */ ++#line 656 "parser.y" ++ { (yyval.expr) = ExprCreateBinary(EXPR_ASSIGN, (yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2726 "parser.c" ++ break; ++ ++ case 142: /* Expr: Term */ ++#line 658 "parser.y" ++ { (yyval.expr) = (yyvsp[0].expr); } ++#line 2732 "parser.c" ++ break; ++ ++ case 143: /* Term: MINUS Term */ ++#line 662 "parser.y" ++ { (yyval.expr) = ExprCreateUnary(EXPR_NEGATE, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } ++#line 2738 "parser.c" ++ break; ++ ++ case 144: /* Term: PLUS Term */ ++#line 664 "parser.y" ++ { (yyval.expr) = ExprCreateUnary(EXPR_UNARY_PLUS, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } ++#line 2744 "parser.c" ++ break; ++ ++ case 145: /* Term: EXCLAM Term */ ++#line 666 "parser.y" ++ { (yyval.expr) = ExprCreateUnary(EXPR_NOT, EXPR_TYPE_BOOLEAN, (yyvsp[0].expr)); } ++#line 2750 "parser.c" ++ break; ++ ++ case 146: /* Term: INVERT Term */ ++#line 668 "parser.y" ++ { (yyval.expr) = ExprCreateUnary(EXPR_INVERT, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); } ++#line 2756 "parser.c" ++ break; ++ ++ case 147: /* Term: Lhs */ ++#line 670 "parser.y" ++ { (yyval.expr) = (yyvsp[0].expr); } ++#line 2762 "parser.c" ++ break; ++ ++ case 148: /* Term: FieldSpec OPAREN OptExprList CPAREN */ ++#line 672 "parser.y" ++ { (yyval.expr) = ExprCreateAction((yyvsp[-3].atom), (yyvsp[-1].exprList).head); } ++#line 2768 "parser.c" ++ break; ++ ++ case 149: /* Term: Terminal */ ++#line 674 "parser.y" ++ { (yyval.expr) = (yyvsp[0].expr); } ++#line 2774 "parser.c" ++ break; ++ ++ case 150: /* Term: OPAREN Expr CPAREN */ ++#line 676 "parser.y" ++ { (yyval.expr) = (yyvsp[-1].expr); } ++#line 2780 "parser.c" ++ break; ++ ++ case 151: /* ActionList: ActionList COMMA Action */ ++#line 680 "parser.y" ++ { (yyval.exprList).head = (yyvsp[-2].exprList).head; (yyval.exprList).last->common.next = &(yyvsp[0].expr)->common; (yyval.exprList).last = (yyvsp[0].expr); } ++#line 2786 "parser.c" ++ break; ++ ++ case 152: /* ActionList: Action */ ++#line 682 "parser.y" ++ { (yyval.exprList).head = (yyval.exprList).last = (yyvsp[0].expr); } ++#line 2792 "parser.c" ++ break; ++ ++ case 153: /* Action: FieldSpec OPAREN OptExprList CPAREN */ ++#line 686 "parser.y" ++ { (yyval.expr) = ExprCreateAction((yyvsp[-3].atom), (yyvsp[-1].exprList).head); } ++#line 2798 "parser.c" ++ break; ++ ++ case 154: /* Lhs: FieldSpec */ ++#line 690 "parser.y" ++ { (yyval.expr) = ExprCreateIdent((yyvsp[0].atom)); } ++#line 2804 "parser.c" ++ break; ++ ++ case 155: /* Lhs: FieldSpec DOT FieldSpec */ ++#line 692 "parser.y" ++ { (yyval.expr) = ExprCreateFieldRef((yyvsp[-2].atom), (yyvsp[0].atom)); } ++#line 2810 "parser.c" ++ break; ++ ++ case 156: /* Lhs: FieldSpec OBRACKET Expr CBRACKET */ ++#line 694 "parser.y" ++ { (yyval.expr) = ExprCreateArrayRef(XKB_ATOM_NONE, (yyvsp[-3].atom), (yyvsp[-1].expr)); } ++#line 2816 "parser.c" ++ break; ++ ++ case 157: /* Lhs: FieldSpec DOT FieldSpec OBRACKET Expr CBRACKET */ ++#line 696 "parser.y" ++ { (yyval.expr) = ExprCreateArrayRef((yyvsp[-5].atom), (yyvsp[-3].atom), (yyvsp[-1].expr)); } ++#line 2822 "parser.c" ++ break; ++ ++ case 158: /* Terminal: String */ ++#line 700 "parser.y" ++ { (yyval.expr) = ExprCreateString((yyvsp[0].atom)); } ++#line 2828 "parser.c" ++ break; ++ ++ case 159: /* Terminal: Integer */ ++#line 702 "parser.y" ++ { (yyval.expr) = ExprCreateInteger((yyvsp[0].num)); } ++#line 2834 "parser.c" ++ break; ++ ++ case 160: /* Terminal: Float */ ++#line 704 "parser.y" ++ { (yyval.expr) = ExprCreateFloat(/* Discard $1 */); } ++#line 2840 "parser.c" ++ break; ++ ++ case 161: /* Terminal: KEYNAME */ ++#line 706 "parser.y" ++ { (yyval.expr) = ExprCreateKeyName((yyvsp[0].atom)); } ++#line 2846 "parser.c" ++ break; ++ ++ case 162: /* OptKeySymList: KeySymList */ ++#line 709 "parser.y" ++ { (yyval.expr) = (yyvsp[0].expr); } ++#line 2852 "parser.c" ++ break; ++ ++ case 163: /* OptKeySymList: %empty */ ++#line 710 "parser.y" ++ { (yyval.expr) = NULL; } ++#line 2858 "parser.c" ++ break; ++ ++ case 164: /* KeySymList: KeySymList COMMA KeySym */ ++#line 714 "parser.y" ++ { (yyval.expr) = ExprAppendKeysymList((yyvsp[-2].expr), (yyvsp[0].keysym)); } ++#line 2864 "parser.c" ++ break; ++ ++ case 165: /* KeySymList: KeySymList COMMA KeySyms */ ++#line 716 "parser.y" ++ { (yyval.expr) = ExprAppendMultiKeysymList((yyvsp[-2].expr), (yyvsp[0].expr)); } ++#line 2870 "parser.c" ++ break; ++ ++ case 166: /* KeySymList: KeySym */ ++#line 718 "parser.y" ++ { (yyval.expr) = ExprCreateKeysymList((yyvsp[0].keysym)); } ++#line 2876 "parser.c" ++ break; ++ ++ case 167: /* KeySymList: KeySyms */ ++#line 720 "parser.y" ++ { (yyval.expr) = ExprCreateMultiKeysymList((yyvsp[0].expr)); } ++#line 2882 "parser.c" ++ break; ++ ++ case 168: /* KeySyms: OBRACE KeySymList CBRACE */ ++#line 724 "parser.y" ++ { (yyval.expr) = (yyvsp[-1].expr); } ++#line 2888 "parser.c" ++ break; ++ ++ case 169: /* KeySym: IDENT */ ++#line 728 "parser.y" ++ { ++ if (!resolve_keysym((yyvsp[0].str), &(yyval.keysym))) ++ parser_warn(param, "unrecognized keysym \"%s\"", (yyvsp[0].str)); ++ free((yyvsp[0].str)); ++ } ++#line 2898 "parser.c" ++ break; ++ ++ case 170: /* KeySym: SECTION */ ++#line 733 "parser.y" ++ { (yyval.keysym) = XKB_KEY_section; } ++#line 2904 "parser.c" ++ break; ++ ++ case 171: /* KeySym: Integer */ ++#line 735 "parser.y" ++ { ++ if ((yyvsp[0].num) < 0) { ++ parser_warn(param, "unrecognized keysym \"%"PRId64"\"", (yyvsp[0].num)); ++ (yyval.keysym) = XKB_KEY_NoSymbol; ++ } ++ else if ((yyvsp[0].num) < 10) { /* XKB_KEY_0 .. XKB_KEY_9 */ ++ (yyval.keysym) = XKB_KEY_0 + (xkb_keysym_t) (yyvsp[0].num); ++ } ++ else { ++ char buf[32]; ++ snprintf(buf, sizeof(buf), "0x%"PRIx64, (yyvsp[0].num)); ++ if (!resolve_keysym(buf, &(yyval.keysym))) { ++ parser_warn(param, "unrecognized keysym \"%s\"", buf); ++ (yyval.keysym) = XKB_KEY_NoSymbol; ++ } ++ } ++ } ++#line 2926 "parser.c" ++ break; ++ ++ case 172: /* SignedNumber: MINUS Number */ ++#line 754 "parser.y" ++ { (yyval.num) = -(yyvsp[0].num); } ++#line 2932 "parser.c" ++ break; ++ ++ case 173: /* SignedNumber: Number */ ++#line 755 "parser.y" ++ { (yyval.num) = (yyvsp[0].num); } ++#line 2938 "parser.c" ++ break; ++ ++ case 174: /* Number: FLOAT */ ++#line 758 "parser.y" ++ { (yyval.num) = (yyvsp[0].num); } ++#line 2944 "parser.c" ++ break; ++ ++ case 175: /* Number: INTEGER */ ++#line 759 "parser.y" ++ { (yyval.num) = (yyvsp[0].num); } ++#line 2950 "parser.c" ++ break; ++ ++ case 176: /* Float: FLOAT */ ++#line 762 "parser.y" ++ { (yyval.num) = 0; } ++#line 2956 "parser.c" ++ break; ++ ++ case 177: /* Integer: INTEGER */ ++#line 765 "parser.y" ++ { (yyval.num) = (yyvsp[0].num); } ++#line 2962 "parser.c" ++ break; ++ ++ case 178: /* KeyCode: INTEGER */ ++#line 768 "parser.y" ++ { (yyval.num) = (yyvsp[0].num); } ++#line 2968 "parser.c" ++ break; ++ ++ case 179: /* Ident: IDENT */ ++#line 771 "parser.y" ++ { (yyval.atom) = xkb_atom_intern(param->ctx, (yyvsp[0].str), strlen((yyvsp[0].str))); free((yyvsp[0].str)); } ++#line 2974 "parser.c" ++ break; ++ ++ case 180: /* Ident: DEFAULT */ ++#line 772 "parser.y" ++ { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "default"); } ++#line 2980 "parser.c" ++ break; ++ ++ case 181: /* String: STRING */ ++#line 775 "parser.y" ++ { (yyval.atom) = xkb_atom_intern(param->ctx, (yyvsp[0].str), strlen((yyvsp[0].str))); free((yyvsp[0].str)); } ++#line 2986 "parser.c" ++ break; ++ ++ case 182: /* OptMapName: MapName */ ++#line 778 "parser.y" ++ { (yyval.str) = (yyvsp[0].str); } ++#line 2992 "parser.c" ++ break; ++ ++ case 183: /* OptMapName: %empty */ ++#line 779 "parser.y" ++ { (yyval.str) = NULL; } ++#line 2998 "parser.c" ++ break; ++ ++ case 184: /* MapName: STRING */ ++#line 782 "parser.y" ++ { (yyval.str) = (yyvsp[0].str); } ++#line 3004 "parser.c" ++ break; ++ ++ ++#line 3008 "parser.c" ++ ++ default: break; ++ } ++ /* User semantic actions sometimes alter yychar, and that requires ++ that yytoken be updated with the new translation. We take the ++ approach of translating immediately before every use of yytoken. ++ One alternative is translating here after every semantic action, ++ but that translation would be missed if the semantic action invokes ++ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or ++ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an ++ incorrect destructor might then be invoked immediately. In the ++ case of YYERROR or YYBACKUP, subsequent parser actions might lead ++ to an incorrect destructor call or verbose syntax error message ++ before the lookahead is translated. */ ++ YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); ++ ++ YYPOPSTACK (yylen); ++ yylen = 0; ++ ++ *++yyvsp = yyval; ++ ++ /* Now 'shift' the result of the reduction. Determine what state ++ that goes to, based on the state we popped back to and the rule ++ number reduced by. */ ++ { ++ const int yylhs = yyr1[yyn] - YYNTOKENS; ++ const int yyi = yypgoto[yylhs] + *yyssp; ++ yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp ++ ? yytable[yyi] ++ : yydefgoto[yylhs]); ++ } ++ ++ goto yynewstate; ++ ++ ++/*--------------------------------------. ++| yyerrlab -- here on detecting error. | ++`--------------------------------------*/ ++yyerrlab: ++ /* Make sure we have latest lookahead translation. See comments at ++ user semantic actions for why this is necessary. */ ++ yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); ++ /* If not already recovering from an error, report this error. */ ++ if (!yyerrstatus) ++ { ++ ++yynerrs; ++ yyerror (param, YY_("syntax error")); ++ } ++ ++ if (yyerrstatus == 3) ++ { ++ /* If just tried and failed to reuse lookahead token after an ++ error, discard it. */ ++ ++ if (yychar <= END_OF_FILE) ++ { ++ /* Return failure if at end of input. */ ++ if (yychar == END_OF_FILE) ++ YYABORT; ++ } ++ else ++ { ++ yydestruct ("Error: discarding", ++ yytoken, &yylval, param); ++ yychar = YYEMPTY; ++ } ++ } ++ ++ /* Else will try to reuse lookahead token after shifting the error ++ token. */ ++ goto yyerrlab1; ++ ++ ++/*---------------------------------------------------. ++| yyerrorlab -- error raised explicitly by YYERROR. | ++`---------------------------------------------------*/ ++yyerrorlab: ++ /* Pacify compilers when the user code never invokes YYERROR and the ++ label yyerrorlab therefore never appears in user code. */ ++ if (0) ++ YYERROR; ++ ++ /* Do not reclaim the symbols of the rule whose action triggered ++ this YYERROR. */ ++ YYPOPSTACK (yylen); ++ yylen = 0; ++ YY_STACK_PRINT (yyss, yyssp); ++ yystate = *yyssp; ++ goto yyerrlab1; ++ ++ ++/*-------------------------------------------------------------. ++| yyerrlab1 -- common code for both syntax error and YYERROR. | ++`-------------------------------------------------------------*/ ++yyerrlab1: ++ yyerrstatus = 3; /* Each real token shifted decrements this. */ ++ ++ /* Pop stack until we find a state that shifts the error token. */ ++ for (;;) ++ { ++ yyn = yypact[yystate]; ++ if (!yypact_value_is_default (yyn)) ++ { ++ yyn += YYSYMBOL_YYerror; ++ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) ++ { ++ yyn = yytable[yyn]; ++ if (0 < yyn) ++ break; ++ } ++ } ++ ++ /* Pop the current state because it cannot handle the error token. */ ++ if (yyssp == yyss) ++ YYABORT; ++ ++ ++ yydestruct ("Error: popping", ++ YY_ACCESSING_SYMBOL (yystate), yyvsp, param); ++ YYPOPSTACK (1); ++ yystate = *yyssp; ++ YY_STACK_PRINT (yyss, yyssp); ++ } ++ ++ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++ *++yyvsp = yylval; ++ YY_IGNORE_MAYBE_UNINITIALIZED_END ++ ++ ++ /* Shift the error token. */ ++ YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); ++ ++ yystate = yyn; ++ goto yynewstate; ++ ++ ++/*-------------------------------------. ++| yyacceptlab -- YYACCEPT comes here. | ++`-------------------------------------*/ ++yyacceptlab: ++ yyresult = 0; ++ goto yyreturn; ++ ++ ++/*-----------------------------------. ++| yyabortlab -- YYABORT comes here. | ++`-----------------------------------*/ ++yyabortlab: ++ yyresult = 1; ++ goto yyreturn; ++ ++ ++#if !defined yyoverflow ++/*-------------------------------------------------. ++| yyexhaustedlab -- memory exhaustion comes here. | ++`-------------------------------------------------*/ ++yyexhaustedlab: ++ yyerror (param, YY_("memory exhausted")); ++ yyresult = 2; ++ goto yyreturn; ++#endif ++ ++ ++/*-------------------------------------------------------. ++| yyreturn -- parsing is finished, clean up and return. | ++`-------------------------------------------------------*/ ++yyreturn: ++ if (yychar != YYEMPTY) ++ { ++ /* Make sure we have latest lookahead translation. See comments at ++ user semantic actions for why this is necessary. */ ++ yytoken = YYTRANSLATE (yychar); ++ yydestruct ("Cleanup: discarding lookahead", ++ yytoken, &yylval, param); ++ } ++ /* Do not reclaim the symbols of the rule whose action triggered ++ this YYABORT or YYACCEPT. */ ++ YYPOPSTACK (yylen); ++ YY_STACK_PRINT (yyss, yyssp); ++ while (yyssp != yyss) ++ { ++ yydestruct ("Cleanup: popping", ++ YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, param); ++ YYPOPSTACK (1); ++ } ++#ifndef yyoverflow ++ if (yyss != yyssa) ++ YYSTACK_FREE (yyss); ++#endif ++ ++ return yyresult; ++} ++ ++#line 785 "parser.y" ++ ++ ++XkbFile * ++parse(struct xkb_context *ctx, struct scanner *scanner, const char *map) ++{ ++ int ret; ++ XkbFile *first = NULL; ++ struct parser_param param = { ++ .scanner = scanner, ++ .ctx = ctx, ++ .rtrn = NULL, ++ .more_maps = false, ++ }; ++ ++ /* ++ * If we got a specific map, we look for it exclusively and return ++ * immediately upon finding it. Otherwise, we need to get the ++ * default map. If we find a map marked as default, we return it ++ * immediately. If there are no maps marked as default, we return ++ * the first map in the file. ++ */ ++ ++ while ((ret = yyparse(¶m)) == 0 && param.more_maps) { ++ if (map) { ++ if (streq_not_null(map, param.rtrn->name)) ++ return param.rtrn; ++ else ++ FreeXkbFile(param.rtrn); ++ } ++ else { ++ if (param.rtrn->flags & MAP_IS_DEFAULT) { ++ FreeXkbFile(first); ++ return param.rtrn; ++ } ++ else if (!first) { ++ first = param.rtrn; ++ } ++ else { ++ FreeXkbFile(param.rtrn); ++ } ++ } ++ param.rtrn = NULL; ++ } ++ ++ if (ret != 0) { ++ FreeXkbFile(first); ++ return NULL; ++ } ++ ++ if (first) ++ log_vrb(ctx, 5, ++ "No map in include statement, but \"%s\" contains several; " ++ "Using first defined map, \"%s\"\n", ++ scanner->file_name, first->name); ++ ++ return first; ++} +diff --git a/src/xkbcomp/parser.h b/src/xkbcomp/parser.h +new file mode 100644 +index 0000000..8f5bfe9 +--- /dev/null ++++ b/src/xkbcomp/parser.h +@@ -0,0 +1,169 @@ ++/* A Bison parser, made by GNU Bison 3.7.1. */ ++ ++/* Bison interface for Yacc-like parsers in C ++ ++ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, ++ Inc. ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++/* As a special exception, you may create a larger work that contains ++ part or all of the Bison parser skeleton and distribute that work ++ under terms of your choice, so long as that work isn't itself a ++ parser generator using the skeleton or a modified version thereof ++ as a parser skeleton. Alternatively, if you modify or redistribute ++ the parser skeleton itself, you may (at your option) remove this ++ special exception, which will cause the skeleton and the resulting ++ Bison output files to be licensed under the GNU General Public ++ License without this special exception. ++ ++ This special exception was added by the Free Software Foundation in ++ version 2.2 of Bison. */ ++ ++/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, ++ especially those whose name start with YY_ or yy_. They are ++ private implementation details that can be changed or removed. */ ++ ++#ifndef YY__XKBCOMMON_PARSER_H_INCLUDED ++# define YY__XKBCOMMON_PARSER_H_INCLUDED ++/* Debug traces. */ ++#ifndef YYDEBUG ++# define YYDEBUG 0 ++#endif ++#if YYDEBUG ++extern int _xkbcommon_debug; ++#endif ++ ++/* Token kinds. */ ++#ifndef YYTOKENTYPE ++# define YYTOKENTYPE ++ enum yytokentype ++ { ++ YYEMPTY = -2, ++ END_OF_FILE = 0, /* END_OF_FILE */ ++ YYerror = 256, /* error */ ++ YYUNDEF = 257, /* "invalid token" */ ++ ERROR_TOK = 255, /* ERROR_TOK */ ++ XKB_KEYMAP = 1, /* XKB_KEYMAP */ ++ XKB_KEYCODES = 2, /* XKB_KEYCODES */ ++ XKB_TYPES = 3, /* XKB_TYPES */ ++ XKB_SYMBOLS = 4, /* XKB_SYMBOLS */ ++ XKB_COMPATMAP = 5, /* XKB_COMPATMAP */ ++ XKB_GEOMETRY = 6, /* XKB_GEOMETRY */ ++ XKB_SEMANTICS = 7, /* XKB_SEMANTICS */ ++ XKB_LAYOUT = 8, /* XKB_LAYOUT */ ++ INCLUDE = 10, /* INCLUDE */ ++ OVERRIDE = 11, /* OVERRIDE */ ++ AUGMENT = 12, /* AUGMENT */ ++ REPLACE = 13, /* REPLACE */ ++ ALTERNATE = 14, /* ALTERNATE */ ++ VIRTUAL_MODS = 20, /* VIRTUAL_MODS */ ++ TYPE = 21, /* TYPE */ ++ INTERPRET = 22, /* INTERPRET */ ++ ACTION_TOK = 23, /* ACTION_TOK */ ++ KEY = 24, /* KEY */ ++ ALIAS = 25, /* ALIAS */ ++ GROUP = 26, /* GROUP */ ++ MODIFIER_MAP = 27, /* MODIFIER_MAP */ ++ INDICATOR = 28, /* INDICATOR */ ++ SHAPE = 29, /* SHAPE */ ++ KEYS = 30, /* KEYS */ ++ ROW = 31, /* ROW */ ++ SECTION = 32, /* SECTION */ ++ OVERLAY = 33, /* OVERLAY */ ++ TEXT = 34, /* TEXT */ ++ OUTLINE = 35, /* OUTLINE */ ++ SOLID = 36, /* SOLID */ ++ LOGO = 37, /* LOGO */ ++ VIRTUAL = 38, /* VIRTUAL */ ++ EQUALS = 40, /* EQUALS */ ++ PLUS = 41, /* PLUS */ ++ MINUS = 42, /* MINUS */ ++ DIVIDE = 43, /* DIVIDE */ ++ TIMES = 44, /* TIMES */ ++ OBRACE = 45, /* OBRACE */ ++ CBRACE = 46, /* CBRACE */ ++ OPAREN = 47, /* OPAREN */ ++ CPAREN = 48, /* CPAREN */ ++ OBRACKET = 49, /* OBRACKET */ ++ CBRACKET = 50, /* CBRACKET */ ++ DOT = 51, /* DOT */ ++ COMMA = 52, /* COMMA */ ++ SEMI = 53, /* SEMI */ ++ EXCLAM = 54, /* EXCLAM */ ++ INVERT = 55, /* INVERT */ ++ STRING = 60, /* STRING */ ++ INTEGER = 61, /* INTEGER */ ++ FLOAT = 62, /* FLOAT */ ++ IDENT = 63, /* IDENT */ ++ KEYNAME = 64, /* KEYNAME */ ++ PARTIAL = 70, /* PARTIAL */ ++ DEFAULT = 71, /* DEFAULT */ ++ HIDDEN = 72, /* HIDDEN */ ++ ALPHANUMERIC_KEYS = 73, /* ALPHANUMERIC_KEYS */ ++ MODIFIER_KEYS = 74, /* MODIFIER_KEYS */ ++ KEYPAD_KEYS = 75, /* KEYPAD_KEYS */ ++ FUNCTION_KEYS = 76, /* FUNCTION_KEYS */ ++ ALTERNATE_GROUP = 77 /* ALTERNATE_GROUP */ ++ }; ++ typedef enum yytokentype yytoken_kind_t; ++#endif ++ ++/* Value type. */ ++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED ++union YYSTYPE ++{ ++#line 164 "parser.y" ++ ++ int64_t num; ++ enum xkb_file_type file_type; ++ char *str; ++ xkb_atom_t atom; ++ enum merge_mode merge; ++ enum xkb_map_flags mapFlags; ++ xkb_keysym_t keysym; ++ ParseCommon *any; ++ struct { ParseCommon *head; ParseCommon *last; } anyList; ++ ExprDef *expr; ++ struct { ExprDef *head; ExprDef *last; } exprList; ++ VarDef *var; ++ struct { VarDef *head; VarDef *last; } varList; ++ VModDef *vmod; ++ struct { VModDef *head; VModDef *last; } vmodList; ++ InterpDef *interp; ++ KeyTypeDef *keyType; ++ SymbolsDef *syms; ++ ModMapDef *modMask; ++ GroupCompatDef *groupCompat; ++ LedMapDef *ledMap; ++ LedNameDef *ledName; ++ KeycodeDef *keyCode; ++ KeyAliasDef *keyAlias; ++ void *geom; ++ XkbFile *file; ++ struct { XkbFile *head; XkbFile *last; } fileList; ++ ++#line 158 "parser.h" ++ ++}; ++typedef union YYSTYPE YYSTYPE; ++# define YYSTYPE_IS_TRIVIAL 1 ++# define YYSTYPE_IS_DECLARED 1 ++#endif ++ ++ ++ ++int _xkbcommon_parse (struct parser_param *param); ++ ++#endif /* !YY__XKBCOMMON_PARSER_H_INCLUDED */ +-- +2.28.0 + diff --git a/libxkbcommon/default/patches-available/0100-static-meson.patch b/libxkbcommon/default/patches-available/0100-static-meson.patch new file mode 100644 index 0000000..e2f05d5 --- /dev/null +++ b/libxkbcommon/default/patches-available/0100-static-meson.patch @@ -0,0 +1,29 @@ +--- a/meson.build 2020-09-11 12:10:23.220047200 +0000 ++++ b/meson.build 2020-10-01 06:25:01.340000000 +0000 +@@ -234,7 +234,7 @@ + if have_version_script + libxkbcommon_link_args += '-Wl,--version-script=' + meson.source_root()/'xkbcommon.map' + endif +-libxkbcommon = library( ++libxkbcommon = static_library( + 'xkbcommon', + 'xkbcommon/xkbcommon.h', + libxkbcommon_sources, +@@ -290,7 +290,7 @@ + if have_version_script + libxkbcommon_x11_link_args += '-Wl,--version-script=' + meson.source_root()/'xkbcommon-x11.map' + endif +- libxkbcommon_x11 = library( ++ libxkbcommon_x11 = static_library( + 'xkbcommon-x11', + 'xkbcommon/xkbcommon-x11.h', + libxkbcommon_x11_sources, +@@ -339,7 +339,7 @@ + if have_version_script + libxkbregistry_link_args += '-Wl,--version-script=' + meson.source_root()/'xkbregistry.map' + endif +- libxkbregistry = library( ++ libxkbregistry = static_library( + 'xkbregistry', + 'xkbcommon/xkbregistry.h', + libxkbregistry_sources, diff --git a/libxkbcommon/default/patches-enabled/0001-Track-generated-xkbcomp-parser.patch b/libxkbcommon/default/patches-enabled/0001-Track-generated-xkbcomp-parser.patch new file mode 120000 index 0000000..10a354d --- /dev/null +++ b/libxkbcommon/default/patches-enabled/0001-Track-generated-xkbcomp-parser.patch @@ -0,0 +1 @@ +../patches-available/0001-Track-generated-xkbcomp-parser.patch \ No newline at end of file diff --git a/libxkbcommon/default/patches-enabled/0100-static-meson.patch b/libxkbcommon/default/patches-enabled/0100-static-meson.patch new file mode 120000 index 0000000..f5b06a2 --- /dev/null +++ b/libxkbcommon/default/patches-enabled/0100-static-meson.patch @@ -0,0 +1 @@ +../patches-available/0100-static-meson.patch \ No newline at end of file diff --git a/libxkbfile/default/deps b/libxkbfile/default/deps new file mode 100644 index 0000000..bc29695 --- /dev/null +++ b/libxkbfile/default/deps @@ -0,0 +1,31 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +samurai +libxml2 +python3 +diffutils +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb +xtrans +libx11 +pkgconf +xorgproto diff --git a/libxml2/default/conf.sh b/libxml2/default/conf.sh new file mode 100755 index 0000000..92d6a2f --- /dev/null +++ b/libxml2/default/conf.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +./autogen.sh \ + --with-lzma \ + --with-zlib \ + --enable-static \ + --enable-shared \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --enable-shared: build the shared libraries. +# +# --enable-static: build the static libraries. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libxml2/default/deps b/libxml2/default/deps new file mode 100644 index 0000000..3b6efa5 --- /dev/null +++ b/libxml2/default/deps @@ -0,0 +1,21 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +autoconf +automake +pkgconf +libtool +zlib +xz +diffutils +file diff --git a/libxml2/default/patches-available/0100-CVE-2019-20388.patch b/libxml2/default/patches-available/0100-CVE-2019-20388.patch new file mode 100644 index 0000000..164b54b --- /dev/null +++ b/libxml2/default/patches-available/0100-CVE-2019-20388.patch @@ -0,0 +1,12 @@ +diff --git a/xmlschemas.c b/xmlschemas.c +index 301c84499d4185ca3a760b512daeca8760edaf05..39d92182f51ff723413cb41a0101d97b6647cdee 100644 +--- a/xmlschemas.c ++++ b/xmlschemas.c +@@ -28090,7 +28090,6 @@ xmlSchemaPreRun(xmlSchemaValidCtxtPtr vctxt) { + vctxt->nberrors = 0; + vctxt->depth = -1; + vctxt->skipDepth = -1; +- vctxt->xsiAssemble = 0; + vctxt->hasKeyrefs = 0; + #ifdef ENABLE_IDC_NODE_TABLES_TEST + vctxt->createIDCNodeTables = 1; diff --git a/libxml2/default/patches-available/0200-libxml2-CVE-2020-7595.patch b/libxml2/default/patches-available/0200-libxml2-CVE-2020-7595.patch new file mode 100644 index 0000000..3dd6774 --- /dev/null +++ b/libxml2/default/patches-available/0200-libxml2-CVE-2020-7595.patch @@ -0,0 +1,32 @@ +From 0e1a49c8907645d2e155f0d89d4d9895ac5112b5 Mon Sep 17 00:00:00 2001 +From: Zhipeng Xie +Date: Thu, 12 Dec 2019 17:30:55 +0800 +Subject: [PATCH] Fix infinite loop in xmlStringLenDecodeEntities + +When ctxt->instate == XML_PARSER_EOF,xmlParseStringEntityRef +return NULL which cause a infinite loop in xmlStringLenDecodeEntities + +Found with libFuzzer. + +Signed-off-by: Zhipeng Xie +--- + parser.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/parser.c b/parser.c +index d1c31963..a34bb6cd 100644 +--- a/parser.c ++++ b/parser.c +@@ -2646,7 +2646,8 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len, + else + c = 0; + while ((c != 0) && (c != end) && /* non input consuming loop */ +- (c != end2) && (c != end3)) { ++ (c != end2) && (c != end3) && ++ (ctxt->instate != XML_PARSER_EOF)) { + + if (c == 0) break; + if ((c == '&') && (str[1] == '#')) { +-- +2.24.1 + diff --git a/libxml2/default/patches-available/0300-revert-Make-xmlFreeNodeList-non-recursive.patch b/libxml2/default/patches-available/0300-revert-Make-xmlFreeNodeList-non-recursive.patch new file mode 100644 index 0000000..102abdb --- /dev/null +++ b/libxml2/default/patches-available/0300-revert-Make-xmlFreeNodeList-non-recursive.patch @@ -0,0 +1,64 @@ +This is a revert of +https://github.com/GNOME/libxml2/commit/0762c9b69ba01628f72eada1c64ff3d361fb5716 + +This fixes perl-xml-libxslt test suite +https://bugzilla.suse.com/show_bug.cgi?id=1157450 + +diff --git a/tree.c b/tree.c +index 08b1a50..f2b1457 100644 +--- a/tree.c ++++ b/tree.c +@@ -3664,9 +3664,7 @@ xmlNextElementSibling(xmlNodePtr node) { + void + xmlFreeNodeList(xmlNodePtr cur) { + xmlNodePtr next; +- xmlNodePtr parent; + xmlDictPtr dict = NULL; +- size_t depth = 0; + + if (cur == NULL) return; + if (cur->type == XML_NAMESPACE_DECL) { +@@ -3682,21 +3680,16 @@ xmlFreeNodeList(xmlNodePtr cur) { + return; + } + if (cur->doc != NULL) dict = cur->doc->dict; +- while (1) { +- while ((cur->children != NULL) && +- (cur->type != XML_DTD_NODE) && +- (cur->type != XML_ENTITY_REF_NODE)) { +- cur = cur->children; +- depth += 1; +- } +- ++ while (cur != NULL) { + next = cur->next; +- parent = cur->parent; + if (cur->type != XML_DTD_NODE) { + + if ((__xmlRegisterCallbacks) && (xmlDeregisterNodeDefaultValue)) + xmlDeregisterNodeDefaultValue(cur); + ++ if ((cur->children != NULL) && ++ (cur->type != XML_ENTITY_REF_NODE)) ++ xmlFreeNodeList(cur->children); + if (((cur->type == XML_ELEMENT_NODE) || + (cur->type == XML_XINCLUDE_START) || + (cur->type == XML_XINCLUDE_END)) && +@@ -3727,16 +3720,7 @@ xmlFreeNodeList(xmlNodePtr cur) { + DICT_FREE(cur->name) + xmlFree(cur); + } +- +- if (next != NULL) { +- cur = next; +- } else { +- if ((depth == 0) || (parent == NULL)) +- break; +- depth -= 1; +- cur = parent; +- cur->children = NULL; +- } ++ cur = next; + } + } + diff --git a/libxml2/default/patches-available/0400-libxml2-2.9.8-python3-unicode-errors.patch b/libxml2/default/patches-available/0400-libxml2-2.9.8-python3-unicode-errors.patch new file mode 100644 index 0000000..e87dcde --- /dev/null +++ b/libxml2/default/patches-available/0400-libxml2-2.9.8-python3-unicode-errors.patch @@ -0,0 +1,34 @@ +Index: libxml2-2.9.5/python/libxml.c +=================================================================== +--- libxml2-2.9.5.orig/python/libxml.c ++++ libxml2-2.9.5/python/libxml.c +@@ -1620,6 +1620,7 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU + PyObject *message; + PyObject *result; + char str[1000]; ++ unsigned char *ptr = (unsigned char *)str; + + #ifdef DEBUG_ERROR + printf("libxml_xmlErrorFuncHandler(%p, %s, ...) called\n", ctx, msg); +@@ -1636,12 +1637,20 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU + str[999] = 0; + va_end(ap); + ++#if PY_MAJOR_VERSION >= 3 ++ /* Ensure the error string doesn't start at UTF8 continuation. */ ++ while (*ptr && (*ptr & 0xc0) == 0x80) ++ ptr++; ++#endif ++ + list = PyTuple_New(2); + PyTuple_SetItem(list, 0, libxml_xmlPythonErrorFuncCtxt); + Py_XINCREF(libxml_xmlPythonErrorFuncCtxt); +- message = libxml_charPtrConstWrap(str); ++ message = libxml_charPtrConstWrap(ptr); + PyTuple_SetItem(list, 1, message); + result = PyEval_CallObject(libxml_xmlPythonErrorFuncHandler, list); ++ /* Forget any errors caused in the error handler. */ ++ PyErr_Clear(); + Py_XDECREF(list); + Py_XDECREF(result); + } diff --git a/libxml2/default/patches-available/0500-CVE-2020-24977.patch b/libxml2/default/patches-available/0500-CVE-2020-24977.patch new file mode 100644 index 0000000..9633641 --- /dev/null +++ b/libxml2/default/patches-available/0500-CVE-2020-24977.patch @@ -0,0 +1,40 @@ +From 8e7c20a1af8776677d7890f30b7a180567701a49 Mon Sep 17 00:00:00 2001 +From: Nick Wellnhofer +Date: Mon, 3 Aug 2020 17:30:41 +0200 +Subject: [PATCH] Fix integer overflow when comparing schema dates + +Found by OSS-Fuzz. +--- + xmlschemastypes.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/xmlschemastypes.c b/xmlschemastypes.c +index 4249d7000..d6b9f924e 100644 +--- a/xmlschemastypes.c ++++ b/xmlschemastypes.c +@@ -3691,6 +3691,8 @@ xmlSchemaCompareDurations(xmlSchemaValPtr x, xmlSchemaValPtr y) + minday = 0; + maxday = 0; + } else { ++ if (myear > LONG_MAX / 366) ++ return -2; + /* FIXME: This doesn't take leap year exceptions every 100/400 years + into account. */ + maxday = 365 * myear + (myear + 3) / 4; +@@ -4079,6 +4081,14 @@ xmlSchemaCompareDates (xmlSchemaValPtr x, xmlSchemaValPtr y) + if ((x == NULL) || (y == NULL)) + return -2; + ++ if ((x->value.date.year > LONG_MAX / 366) || ++ (x->value.date.year < LONG_MIN / 366) || ++ (y->value.date.year > LONG_MAX / 366) || ++ (y->value.date.year < LONG_MIN / 366)) { ++ /* Possible overflow when converting to days. */ ++ return -2; ++ } ++ + if (x->value.date.tz_flag) { + + if (!y->value.date.tz_flag) { +-- +GitLab \ No newline at end of file diff --git a/libxml2/default/patches-enabled/0100-CVE-2019-20388.patch b/libxml2/default/patches-enabled/0100-CVE-2019-20388.patch new file mode 120000 index 0000000..18bdb04 --- /dev/null +++ b/libxml2/default/patches-enabled/0100-CVE-2019-20388.patch @@ -0,0 +1 @@ +../patches-available/0100-CVE-2019-20388.patch \ No newline at end of file diff --git a/libxml2/default/patches-enabled/0200-libxml2-CVE-2020-7595.patch b/libxml2/default/patches-enabled/0200-libxml2-CVE-2020-7595.patch new file mode 120000 index 0000000..f46ddca --- /dev/null +++ b/libxml2/default/patches-enabled/0200-libxml2-CVE-2020-7595.patch @@ -0,0 +1 @@ +../patches-available/0200-libxml2-CVE-2020-7595.patch \ No newline at end of file diff --git a/libxml2/default/patches-enabled/0300-revert-Make-xmlFreeNodeList-non-recursive.patch b/libxml2/default/patches-enabled/0300-revert-Make-xmlFreeNodeList-non-recursive.patch new file mode 120000 index 0000000..fa7aefc --- /dev/null +++ b/libxml2/default/patches-enabled/0300-revert-Make-xmlFreeNodeList-non-recursive.patch @@ -0,0 +1 @@ +../patches-available/0300-revert-Make-xmlFreeNodeList-non-recursive.patch \ No newline at end of file diff --git a/libxml2/default/patches-enabled/0400-libxml2-2.9.8-python3-unicode-errors.patch b/libxml2/default/patches-enabled/0400-libxml2-2.9.8-python3-unicode-errors.patch new file mode 120000 index 0000000..75ff876 --- /dev/null +++ b/libxml2/default/patches-enabled/0400-libxml2-2.9.8-python3-unicode-errors.patch @@ -0,0 +1 @@ +../patches-available/0400-libxml2-2.9.8-python3-unicode-errors.patch \ No newline at end of file diff --git a/libxml2/default/patches-enabled/0500-CVE-2020-24977.patch b/libxml2/default/patches-enabled/0500-CVE-2020-24977.patch new file mode 120000 index 0000000..b97a607 --- /dev/null +++ b/libxml2/default/patches-enabled/0500-CVE-2020-24977.patch @@ -0,0 +1 @@ +../patches-available/0500-CVE-2020-24977.patch \ No newline at end of file diff --git a/libxrandr/default/deps b/libxrandr/default/deps new file mode 100644 index 0000000..64b6ffd --- /dev/null +++ b/libxrandr/default/deps @@ -0,0 +1,31 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +samurai +libxml2 +python3 +diffutils +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb +xtrans +libxext +libxrender +libx11 diff --git a/libxrender/default/deps b/libxrender/default/deps new file mode 100644 index 0000000..b8f0378 --- /dev/null +++ b/libxrender/default/deps @@ -0,0 +1,22 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +diffutils +libxau +libxcb +xorgproto +xorg-util-macros +libx11 diff --git a/libxshmfence/default/conf.sh b/libxshmfence/default/conf.sh new file mode 100755 index 0000000..dc78dc2 --- /dev/null +++ b/libxshmfence/default/conf.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +./configure \ + --with-shared-memory-dir=/dev/shm \ + --disable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/libxshmfence/default/deps b/libxshmfence/default/deps new file mode 100644 index 0000000..e21f838 --- /dev/null +++ b/libxshmfence/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +xorgproto diff --git a/libxslt/default/deps b/libxslt/default/deps new file mode 100644 index 0000000..add3978 --- /dev/null +++ b/libxslt/default/deps @@ -0,0 +1,14 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libxml2 +libgcrypt +libgpg-error diff --git a/libxt/default/deps b/libxt/default/deps new file mode 100644 index 0000000..bc88edd --- /dev/null +++ b/libxt/default/deps @@ -0,0 +1,31 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +samurai +libxml2 +python3 +diffutils +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb +xtrans +libx11 +libice +libsm diff --git a/libxxf86vm/default/deps b/libxxf86vm/default/deps new file mode 100644 index 0000000..9f093eb --- /dev/null +++ b/libxxf86vm/default/deps @@ -0,0 +1,20 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +perl +m4 +xorg-util-macros +xorgproto +libxau +libxcb +libx11 +libxext diff --git a/linux-kernel/default/conf.sh b/linux-kernel/default/conf.sh new file mode 100755 index 0000000..c2a4104 --- /dev/null +++ b/linux-kernel/default/conf.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +HOSTCFLAGS="$CFLAGS" \ +HOSTLDFLAGS="$LDFLAGS" \ +make -j$(nproc) menuconfig + +## explanation +# +# HOSTCFLAGS HOSTLDFLAGS: +# the linux kernel build process uses these rather than CFLAGS and LDFLAGS. +# +# menuconfig: ncurses-based configuration. other modes are also available. diff --git a/linux-kernel/default/deps b/linux-kernel/default/deps new file mode 100644 index 0000000..2fe71d6 --- /dev/null +++ b/linux-kernel/default/deps @@ -0,0 +1,25 @@ +lix-os-filesystem +ubase +sbase +dash +musl-cross-make +ncurses +patch +pkgconf +make +xz +bzip2 +gzip +gnu-grep +gnu-sed +autoconf +automake +bc +perl +ncurses +texinfo +awk +m4 +bison +flex +rsync diff --git a/linux-kernel/default/env.sh b/linux-kernel/default/env.sh new file mode 100644 index 0000000..16c61a3 --- /dev/null +++ b/linux-kernel/default/env.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh +set -e + +. ../how/default-env.sh + +unset ARCH diff --git a/linux-kernel/default/inst.sh b/linux-kernel/default/inst.sh new file mode 100755 index 0000000..fdaffb1 --- /dev/null +++ b/linux-kernel/default/inst.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +[ -d /boot ] || mkdir -p /boot + +make INSTALL_PATH="/boot" KERNELRELEASE="$version" install +make INSTALL_HDR_PATH="/" headers_install + +if (grep -q "^CONFIG_MODULES=y" /mnt/src/.config); then + make INSTALL_MOD_PATH="/" modules_install + depmod -b / -F /boot/System.map $version +fi +cp -v .config /boot/config-$version diff --git a/linux-kernel/default/ppc64le-config b/linux-kernel/default/ppc64le-config new file mode 100644 index 0000000..8a8fb79 --- /dev/null +++ b/linux-kernel/default/ppc64le-config @@ -0,0 +1,3671 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/powerpc 5.6.3 Kernel Configuration +# + +# +# Compiler: gcc (GCC) 9.2.0 +# +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=90200 +CONFIG_CLANG_VERSION=0 +CONFIG_CC_CAN_LINK=y +CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_CC_HAS_ASM_INLINE=y +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_TABLE_SORT=y +CONFIG_THREAD_INFO_IN_TASK=y + +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_COMPILE_TEST is not set +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_BUILD_SALT="" +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_XZ is not set +CONFIG_DEFAULT_HOSTNAME="box" +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +CONFIG_CROSS_MEMORY_ATTACH=y +# CONFIG_USELIB is not set +CONFIG_AUDIT=y +CONFIG_HAVE_ARCH_AUDITSYSCALL=y +CONFIG_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y +CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_MSI_IRQ_DOMAIN=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +# CONFIG_GENERIC_IRQ_DEBUGFS is not set +# end of IRQ subsystem + +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_ARCH_HAS_TICK_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_GENERIC_CMOS_UPDATE=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_HZ_PERIODIC is not set +CONFIG_NO_HZ_IDLE=y +# CONFIG_NO_HZ_FULL is not set +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +# end of Timers subsystem + +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_VIRT_CPU_ACCOUNTING=y +# CONFIG_TICK_CPU_ACCOUNTING is not set +CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_PSI=y +CONFIG_PSI_DEFAULT_DISABLED=y +# end of CPU/Task time and stats accounting + +CONFIG_CPU_ISOLATION=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_SRCU=y +CONFIG_TREE_SRCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +# end of RCU Subsystem + +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +# CONFIG_IKHEADERS is not set +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 + +# +# Scheduler features +# +# CONFIG_UCLAMP_TASK is not set +# end of Scheduler features + +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_CC_HAS_INT128=y +CONFIG_NUMA_BALANCING=y +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y +CONFIG_CGROUPS=y +CONFIG_PAGE_COUNTER=y +CONFIG_MEMCG=y +CONFIG_MEMCG_SWAP=y +CONFIG_MEMCG_SWAP_ENABLED=y +CONFIG_MEMCG_KMEM=y +# CONFIG_BLK_CGROUP is not set +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +# CONFIG_CFS_BANDWIDTH is not set +# CONFIG_RT_GROUP_SCHED is not set +# CONFIG_CGROUP_PIDS is not set +# CONFIG_CGROUP_RDMA is not set +CONFIG_CGROUP_FREEZER=y +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_SOCK_CGROUP_DATA=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_RD_LZ4=y +# CONFIG_BOOT_CONFIG is not set +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_HAVE_LD_DEAD_CODE_DATA_ELIMINATION=y +CONFIG_SYSCTL=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_BPF=y +# CONFIG_EXPERT is not set +CONFIG_MULTIUSER=y +CONFIG_SGETMASK_SYSCALL=y +CONFIG_SYSFS_SYSCALL=y +CONFIG_FHANDLE=y +CONFIG_POSIX_TIMERS=y +CONFIG_PRINTK=y +CONFIG_PRINTK_NMI=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_PCSPKR_PLATFORM=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_IO_URING=y +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +CONFIG_KALLSYMS_BASE_RELATIVE=y +CONFIG_BPF_SYSCALL=y +# CONFIG_USERFAULTFD is not set +CONFIG_ARCH_HAS_MEMBARRIER_CALLBACKS=y +CONFIG_RSEQ=y +# CONFIG_EMBEDDED is not set +CONFIG_HAVE_PERF_EVENTS=y + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# end of Kernel Performance Events And Counters + +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLUB_DEBUG=y +# CONFIG_COMPAT_BRK is not set +# CONFIG_SLAB is not set +CONFIG_SLUB=y +CONFIG_SLAB_MERGE_DEFAULT=y +CONFIG_SLAB_FREELIST_RANDOM=y +# CONFIG_SLAB_FREELIST_HARDENED is not set +# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set +CONFIG_SLUB_CPU_PARTIAL=y +CONFIG_PROFILING=y +CONFIG_TRACEPOINTS=y +# end of General setup + +CONFIG_PPC64=y + +# +# Processor support +# +CONFIG_PPC_BOOK3S_64=y +# CONFIG_PPC_BOOK3E_64 is not set +# CONFIG_GENERIC_CPU is not set +# CONFIG_POWER7_CPU is not set +# CONFIG_POWER8_CPU is not set +CONFIG_POWER9_CPU=y +CONFIG_TARGET_CPU_BOOL=y +CONFIG_TARGET_CPU="power9" +CONFIG_PPC_BOOK3S=y +CONFIG_PPC_FPU=y +CONFIG_ALTIVEC=y +CONFIG_VSX=y +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +CONFIG_PPC_RADIX_MMU=y +CONFIG_PPC_RADIX_MMU_DEFAULT=y +CONFIG_PPC_HAVE_KUEP=y +CONFIG_PPC_KUEP=y +CONFIG_PPC_HAVE_KUAP=y +CONFIG_PPC_KUAP=y +# CONFIG_PPC_KUAP_DEBUG is not set +CONFIG_PPC_MM_SLICES=y +CONFIG_PPC_HAVE_PMU_SUPPORT=y +CONFIG_PPC_PERF_CTRS=y +CONFIG_FORCE_SMP=y +CONFIG_SMP=y +CONFIG_NR_CPUS=2048 +CONFIG_PPC_DOORBELL=y +# end of Processor support + +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_PPC64_BOOT_WRAPPER=y +CONFIG_64BIT=y +CONFIG_MMU=y +CONFIG_ARCH_MMAP_RND_BITS_MAX=29 +CONFIG_ARCH_MMAP_RND_BITS_MIN=14 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=13 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=7 +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NR_IRQS=512 +CONFIG_NMI_IPI=y +CONFIG_PPC_WATCHDOG=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_PPC=y +CONFIG_PPC_BARRIER_NOSPEC=y +CONFIG_EARLY_PRINTK=y +CONFIG_PANIC_TIMEOUT=180 +CONFIG_COMPAT=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_PPC_UDBG_16550=y +CONFIG_AUDIT_ARCH=y +CONFIG_GENERIC_BUG=y +CONFIG_EPAPR_BOOT=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_SUSPEND_NONZERO_CPU=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_PPC_DAWR=y +CONFIG_PGTABLE_LEVELS=4 +CONFIG_PPC_MSI_BITMAP=y +CONFIG_PPC_XICS=y +CONFIG_PPC_ICP_NATIVE=y +CONFIG_PPC_ICP_HV=y +CONFIG_PPC_ICS_RTAS=y +CONFIG_PPC_XIVE=y +CONFIG_PPC_XIVE_NATIVE=y +CONFIG_PPC_XIVE_SPAPR=y + +# +# Platform support +# +CONFIG_PPC_POWERNV=y +CONFIG_OPAL_PRD=y +# CONFIG_PPC_MEMTRACE is not set +CONFIG_PPC_VAS=y +# CONFIG_SCOM_DEBUGFS is not set +CONFIG_PPC_PSERIES=y +# CONFIG_PPC_SPLPAR is not set +CONFIG_PSERIES_ENERGY=y +# CONFIG_SCANLOG is not set +CONFIG_IO_EVENT_IRQ=y +# CONFIG_LPARCFG is not set +# CONFIG_PPC_SMLPAR is not set +CONFIG_HV_PERF_CTRS=y +CONFIG_IBMVIO=y +CONFIG_PPC_SVM=y +CONFIG_KVM_GUEST=y +CONFIG_EPAPR_PARAVIRT=y +CONFIG_PPC_NATIVE=y +CONFIG_PPC_OF_BOOT_TRAMPOLINE=y +CONFIG_PPC_DT_CPU_FTRS=y +# CONFIG_UDBG_RTAS_CONSOLE is not set +CONFIG_PPC_SMP_MUXED_IPI=y +CONFIG_MPIC=y +# CONFIG_MPIC_MSGR is not set +CONFIG_PPC_I8259=y +CONFIG_PPC_RTAS=y +CONFIG_RTAS_ERROR_LOGGING=y +CONFIG_PPC_RTAS_DAEMON=y +CONFIG_RTAS_PROC=y +# CONFIG_RTAS_FLASH is not set +CONFIG_EEH=y +CONFIG_PPC_P7_NAP=y +CONFIG_PPC_BOOK3S_IDLE=y +CONFIG_PPC_INDIRECT_PIO=y + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_ATTR_SET=y +CONFIG_CPU_FREQ_GOV_COMMON=y +# CONFIG_CPU_FREQ_STAT is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y + +# +# CPU frequency scaling drivers +# +CONFIG_POWERNV_CPUFREQ=y +# end of CPU Frequency scaling + +# +# CPUIdle driver +# + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +# CONFIG_CPU_IDLE_GOV_LADDER is not set +CONFIG_CPU_IDLE_GOV_MENU=y +# CONFIG_CPU_IDLE_GOV_TEO is not set +# CONFIG_CPU_IDLE_GOV_HALTPOLL is not set + +# +# POWERPC CPU Idle Drivers +# +CONFIG_PSERIES_CPUIDLE=y +CONFIG_POWERNV_CPUIDLE=y +# end of POWERPC CPU Idle Drivers +# end of CPU Idle +# end of CPUIdle driver + +# CONFIG_GEN_RTC is not set +# end of Platform support + +# +# Kernel options +# +CONFIG_HZ_100=y +# CONFIG_HZ_250 is not set +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=100 +CONFIG_SCHED_HRTICK=y +CONFIG_PPC_TRANSACTIONAL_MEM=y +CONFIG_MPROFILE_KERNEL=y +CONFIG_HOTPLUG_CPU=y +CONFIG_ARCH_CPU_PROBE_RELEASE=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +CONFIG_PPC64_SUPPORTS_MEMORY_FAILURE=y +CONFIG_KEXEC=y +# CONFIG_KEXEC_FILE is not set +# CONFIG_RELOCATABLE is not set +# CONFIG_CRASH_DUMP is not set +# CONFIG_FA_DUMP is not set +# CONFIG_PRESERVE_FA_DUMP is not set +# CONFIG_OPAL_CORE is not set +CONFIG_IRQ_ALL_CPUS=y +CONFIG_NUMA=y +CONFIG_NODES_SHIFT=8 +CONFIG_USE_PERCPU_NUMA_NODE_ID=y +CONFIG_HAVE_MEMORYLESS_NODES=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_SYS_SUPPORTS_HUGETLBFS=y +CONFIG_ILLEGAL_POINTER_VALUE=0x5deadbeef0000000 +CONFIG_ARCH_MEMORY_PROBE=y +CONFIG_NODES_SPAN_OTHER_NODES=y +# CONFIG_PPC_4K_PAGES is not set +CONFIG_PPC_64K_PAGES=y +CONFIG_PPC_PAGE_SHIFT=16 +CONFIG_THREAD_SHIFT=14 +CONFIG_ETEXT_SHIFT=16 +CONFIG_DATA_SHIFT=24 +CONFIG_FORCE_MAX_ZONEORDER=9 +CONFIG_PPC_SUBPAGE_PROT=y +CONFIG_SCHED_SMT=y +CONFIG_PPC_DENORMALISATION=y +# CONFIG_CMDLINE_BOOL is not set +CONFIG_CMDLINE="" +CONFIG_EXTRA_TARGETS="" +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +# CONFIG_HIBERNATION is not set +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_SLEEP_SMP_NONZERO_CPU=y +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +# CONFIG_ENERGY_MODEL is not set +CONFIG_SECCOMP=y +CONFIG_PPC_MEM_KEYS=y +# end of Kernel options + +CONFIG_ISA_DMA_API=y + +# +# Bus options +# +CONFIG_GENERIC_ISA_DMA=y +# CONFIG_FSL_LBC is not set +# end of Bus options + +CONFIG_PAGE_OFFSET=0xc000000000000000 +CONFIG_KERNEL_START=0xc000000000000000 +CONFIG_PHYSICAL_START=0x00000000 +CONFIG_ARCH_RANDOM=y +# CONFIG_VIRTUALIZATION is not set +CONFIG_HAVE_LIVEPATCH=y + +# +# General architecture-dependent options +# +CONFIG_CRASH_CORE=y +CONFIG_KEXEC_CORE=y +CONFIG_OPROFILE=y +CONFIG_HAVE_OPROFILE=y +CONFIG_JUMP_LABEL=y +# CONFIG_STATIC_KEYS_SELFTEST is not set +CONFIG_UPROBES=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_KPROBES_ON_FTRACE=y +CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y +CONFIG_HAVE_NMI=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_ARCH_HAS_FORTIFY_SOURCE=y +CONFIG_HAVE_ASM_MODVERSIONS=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_PERF_EVENTS_NMI=y +CONFIG_HAVE_NMI_WATCHDOG=y +CONFIG_HAVE_HARDLOCKUP_DETECTOR_ARCH=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_MMU_GATHER_TABLE_FREE=y +CONFIG_MMU_GATHER_RCU_TABLE_FREE=y +CONFIG_MMU_GATHER_PAGE_SIZE=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_ARCH_WEAK_RELEASE_ACQUIRE=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y +CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP_FILTER=y +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING=y +CONFIG_ARCH_HAS_SCALED_CPUTIME=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARCH_HUGE_VMAP=y +CONFIG_HAVE_ARCH_SOFT_DIRTY=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_ARCH_MMAP_RND_BITS=14 +CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=7 +CONFIG_HAVE_COPY_THREAD_TLS=y +CONFIG_HAVE_RELIABLE_STACKTRACE=y +CONFIG_HAVE_ARCH_NVRAM_OPS=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_OLD_SIGSUSPEND=y +CONFIG_COMPAT_OLD_SIGACTION=y +CONFIG_COMPAT_32BIT_TIME=y +CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_PHYS_TO_DMA=y +# CONFIG_LOCK_EVENT_COUNTS is not set +CONFIG_ARCH_HAS_MEM_ENCRYPT=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +# end of GCOV-based kernel profiling + +CONFIG_PLUGIN_HOSTCC="" +CONFIG_HAVE_GCC_PLUGINS=y +# end of General architecture-dependent options + +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +# CONFIG_MODULES is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_BLK_SCSI_REQUEST=y +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_BSGLIB=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLK_DEV_INTEGRITY_T10=y +# CONFIG_BLK_DEV_ZONED is not set +# CONFIG_BLK_CMDLINE_PARSER is not set +# CONFIG_BLK_WBT is not set +CONFIG_BLK_DEBUG_FS=y +# CONFIG_BLK_SED_OPAL is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_AIX_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +CONFIG_EFI_PARTITION=y +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_CMDLINE_PARTITION is not set +# end of Partition Types + +CONFIG_BLOCK_COMPAT=y +CONFIG_BLK_MQ_PCI=y +CONFIG_BLK_PM=y + +# +# IO Schedulers +# +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=y +# CONFIG_IOSCHED_BFQ is not set +# end of IO Schedulers + +CONFIG_PADATA=y +CONFIG_ASN1=y +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_LOCK_SPIN_ON_OWNER=y +CONFIG_ARCH_HAS_MMIOWB=y +CONFIG_MMIOWB=y +CONFIG_FREEZER=y + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_COMPAT_BINFMT_ELF=y +CONFIG_ELFCORE=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_BINFMT_SCRIPT=y +# CONFIG_BINFMT_MISC is not set +CONFIG_COREDUMP=y +# end of Executable file formats + +# +# Memory Management options +# +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPARSEMEM=y +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_HAVE_MEMORY_PRESENT=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_HAVE_MEMBLOCK_NODE_MAP=y +CONFIG_HAVE_FAST_GUP=y +CONFIG_ARCH_KEEP_MEMBLOCK=y +CONFIG_MEMORY_ISOLATION=y +CONFIG_HAVE_BOOTMEM_INFO_NODE=y +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTPLUG_SPARSE=y +# CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE is not set +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_COMPACTION=y +CONFIG_MIGRATION=y +CONFIG_ARCH_ENABLE_THP_MIGRATION=y +CONFIG_CONTIG_ALLOC=y +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_MMU_NOTIFIER=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_MEMORY_FAILURE is not set +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y +# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +CONFIG_TRANSPARENT_HUGE_PAGECACHE=y +# CONFIG_CLEANCACHE is not set +# CONFIG_FRONTSWAP is not set +CONFIG_CMA=y +# CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set +CONFIG_CMA_AREAS=7 +# CONFIG_ZPOOL is not set +# CONFIG_ZBUD is not set +# CONFIG_ZSMALLOC is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +# CONFIG_IDLE_PAGE_TRACKING is not set +CONFIG_ARCH_HAS_PTE_DEVMAP=y +# CONFIG_ZONE_DEVICE is not set +CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y +CONFIG_ARCH_HAS_PKEYS=y +# CONFIG_PERCPU_STATS is not set +# CONFIG_GUP_BENCHMARK is not set +# CONFIG_READ_ONLY_THP_FOR_FS is not set +CONFIG_ARCH_HAS_PTE_SPECIAL=y +# end of Memory Management options + +CONFIG_NET=y +CONFIG_SKB_EXTENSIONS=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=y +CONFIG_UNIX=y +CONFIG_UNIX_SCM=y +CONFIG_UNIX_DIAG=y +# CONFIG_TLS is not set +CONFIG_XFRM=y +CONFIG_XFRM_ALGO=y +CONFIG_XFRM_USER=y +# CONFIG_XFRM_INTERFACE is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_IPCOMP=y +CONFIG_NET_KEY=y +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_XDP_SOCKETS=y +CONFIG_XDP_SOCKETS_DIAG=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=y +CONFIG_NET_IPGRE_DEMUX=y +CONFIG_NET_IP_TUNNEL=y +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +CONFIG_SYN_COOKIES=y +CONFIG_NET_IPVTI=y +CONFIG_NET_UDP_TUNNEL=y +CONFIG_NET_FOU=y +CONFIG_NET_FOU_IP_TUNNELS=y +CONFIG_INET_AH=y +CONFIG_INET_ESP=y +# CONFIG_INET_ESP_OFFLOAD is not set +# CONFIG_INET_ESPINTCP is not set +CONFIG_INET_IPCOMP=y +CONFIG_INET_XFRM_TUNNEL=y +CONFIG_INET_TUNNEL=y +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_INET_UDP_DIAG is not set +# CONFIG_INET_RAW_DIAG is not set +CONFIG_INET_DIAG_DESTROY=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +CONFIG_INET6_AH=y +CONFIG_INET6_ESP=y +# CONFIG_INET6_ESP_OFFLOAD is not set +CONFIG_INET6_IPCOMP=y +# CONFIG_IPV6_MIP6 is not set +CONFIG_INET6_XFRM_TUNNEL=y +CONFIG_INET6_TUNNEL=y +CONFIG_IPV6_VTI=y +CONFIG_IPV6_SIT=y +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=y +# CONFIG_IPV6_GRE is not set +CONFIG_IPV6_FOU=y +CONFIG_IPV6_FOU_TUNNEL=y +CONFIG_IPV6_MULTIPLE_TABLES=y +# CONFIG_IPV6_SUBTREES is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_IPV6_SEG6_LWTUNNEL is not set +# CONFIG_IPV6_SEG6_HMAC is not set +# CONFIG_NETLABEL is not set +# CONFIG_MPTCP is not set +# CONFIG_NETWORK_SECMARK is not set +CONFIG_NET_PTP_CLASSIFY=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +# CONFIG_NETFILTER is not set +# CONFIG_BPFILTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +CONFIG_L2TP=y +# CONFIG_L2TP_DEBUGFS is not set +# CONFIG_L2TP_V3 is not set +# CONFIG_BRIDGE is not set +CONFIG_HAVE_NET_DSA=y +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_6LOWPAN is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# CONFIG_DCB is not set +CONFIG_DNS_RESOLVER=y +# CONFIG_BATMAN_ADV is not set +# CONFIG_OPENVSWITCH is not set +# CONFIG_VSOCKETS is not set +CONFIG_NETLINK_DIAG=y +# CONFIG_MPLS is not set +# CONFIG_NET_NSH is not set +# CONFIG_HSR is not set +# CONFIG_NET_SWITCHDEV is not set +CONFIG_NET_L3_MASTER_DEV=y +CONFIG_NET_NCSI=y +# CONFIG_NCSI_OEM_CMD_GET_MAC is not set +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_XPS=y +# CONFIG_CGROUP_NET_PRIO is not set +CONFIG_CGROUP_NET_CLASSID=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +# CONFIG_BPF_STREAM_PARSER is not set +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_NET_DROP_MONITOR is not set +# end of Network testing +# end of Networking options + +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_AF_KCM is not set +CONFIG_FIB_RULES=y +# CONFIG_WIRELESS is not set +# CONFIG_WIMAX is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set +# CONFIG_NFC is not set +# CONFIG_PSAMPLE is not set +# CONFIG_NET_IFE is not set +CONFIG_LWTUNNEL=y +CONFIG_LWTUNNEL_BPF=y +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +CONFIG_NET_DEVLINK=y +CONFIG_FAILOVER=y +CONFIG_ETHTOOL_NETLINK=y +CONFIG_HAVE_EBPF_JIT=y + +# +# Device Drivers +# +CONFIG_HAVE_PCI=y +CONFIG_FORCE_PCI=y +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_SYSCALL=y +CONFIG_PCIEPORTBUS=y +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_PCIEAER=y +# CONFIG_PCIEAER_INJECT is not set +# CONFIG_PCIE_ECRC is not set +CONFIG_PCIEASPM=y +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set +# CONFIG_PCIEASPM_PERFORMANCE is not set +CONFIG_PCIE_PME=y +# CONFIG_PCIE_DPC is not set +CONFIG_PCIE_PTM=y +# CONFIG_PCIE_BW is not set +CONFIG_PCI_MSI=y +CONFIG_PCI_MSI_IRQ_DOMAIN=y +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set +# CONFIG_PCI_STUB is not set +# CONFIG_PCI_PF_STUB is not set +CONFIG_PCI_ATS=y +CONFIG_PCI_IOV=y +CONFIG_PCI_PRI=y +CONFIG_PCI_PASID=y +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_SHPC=y +CONFIG_HOTPLUG_PCI_POWERNV=y +# CONFIG_HOTPLUG_PCI_RPA is not set + +# +# PCI controller drivers +# +# CONFIG_PCI_FTPCI100 is not set +# CONFIG_PCI_HOST_GENERIC is not set +# CONFIG_PCIE_XILINX is not set + +# +# DesignWare PCI Core Support +# +# CONFIG_PCIE_DW_PLAT_HOST is not set +# CONFIG_PCI_MESON is not set +# end of DesignWare PCI Core Support + +# +# Cadence PCIe controllers support +# +# CONFIG_PCIE_CADENCE_PLAT_HOST is not set +# end of Cadence PCIe controllers support +# end of PCI controller drivers + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set +# end of PCI Endpoint + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set +# end of PCI switch controller drivers + +# CONFIG_PCCARD is not set +# CONFIG_RAPIDIO is not set + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="/bin/smdev" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# Firmware loader +# +CONFIG_FW_LOADER=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_FW_LOADER_USER_HELPER is not set +# CONFIG_FW_LOADER_COMPRESS is not set +CONFIG_FW_CACHE=y +# end of Firmware loader + +CONFIG_ALLOW_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_DMA_SHARED_BUFFER=y +# CONFIG_DMA_FENCE_TRACE is not set +# end of Generic Driver Options + +# +# Bus devices +# +# CONFIG_SIMPLE_PM_BUS is not set +# end of Bus devices + +# CONFIG_CONNECTOR is not set +# CONFIG_GNSS is not set +CONFIG_MTD=y + +# +# Partition parsers +# +# CONFIG_MTD_AR7_PARTS is not set +# CONFIG_MTD_CMDLINE_PARTS is not set +CONFIG_MTD_OF_PARTS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# end of Partition parsers + +# +# User Modules And Translation Layers +# +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_SM_FTL is not set +# CONFIG_MTD_OOPS is not set +# CONFIG_MTD_SWAP is not set +# CONFIG_MTD_PARTITIONED_MASTER is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# end of RAM/ROM/Flash chip drivers + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_INTEL_VR_NOR is not set +# CONFIG_MTD_PLATRAM is not set +# end of Mapping drivers for chip access + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set +CONFIG_MTD_POWERNV_FLASH=y + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOCG3 is not set +# end of Self-contained MTD device drivers + +# CONFIG_MTD_ONENAND is not set +# CONFIG_MTD_RAW_NAND is not set + +# +# LPDDR & LPDDR2 PCM memory drivers +# +# CONFIG_MTD_LPDDR is not set +# end of LPDDR & LPDDR2 PCM memory drivers + +# CONFIG_MTD_UBI is not set +# CONFIG_MTD_HYPERBUS is not set +CONFIG_DTC=y +CONFIG_OF=y +# CONFIG_OF_UNITTEST is not set +CONFIG_OF_FLATTREE=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_KOBJ=y +CONFIG_OF_DYNAMIC=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_IRQ=y +CONFIG_OF_NET=y +CONFIG_OF_MDIO=y +CONFIG_OF_RESERVED_MEM=y +# CONFIG_OF_OVERLAY is not set +CONFIG_OF_DMA_DEFAULT_COHERENT=y +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_SKD is not set +# CONFIG_BLK_DEV_SX8 is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65536 +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_RBD is not set +# CONFIG_BLK_DEV_RSXX is not set + +# +# NVME Support +# +# CONFIG_BLK_DEV_NVME is not set +# CONFIG_NVME_FC is not set +# CONFIG_NVME_TARGET is not set +# end of NVME Support + +# +# Misc devices +# +# CONFIG_AD525X_DPOT is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_IBMVMC is not set +# CONFIG_PHANTOM is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_ICS932S401 is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_HP_ILO is not set +# CONFIG_APDS9802ALS is not set +# CONFIG_ISL29003 is not set +# CONFIG_ISL29020 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_SENSORS_BH1770 is not set +# CONFIG_SENSORS_APDS990X is not set +# CONFIG_HMC6352 is not set +# CONFIG_DS1682 is not set +# CONFIG_SRAM is not set +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_XILINX_SDFEC is not set +# CONFIG_PVPANIC is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +# CONFIG_EEPROM_AT24 is not set +# CONFIG_EEPROM_LEGACY is not set +# CONFIG_EEPROM_MAX6875 is not set +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_EEPROM_IDT_89HPESX is not set +# CONFIG_EEPROM_EE1004 is not set +# end of EEPROM support + +# CONFIG_CB710_CORE is not set + +# +# Texas Instruments shared transport line discipline +# +# end of Texas Instruments shared transport line discipline + +# CONFIG_SENSORS_LIS3_I2C is not set +# CONFIG_ALTERA_STAPL is not set + +# +# Intel MIC & related support +# +# CONFIG_VOP_BUS is not set +# end of Intel MIC & related support + +# CONFIG_GENWQE is not set +# CONFIG_ECHO is not set +# CONFIG_CXL is not set +# CONFIG_OCXL is not set +# CONFIG_MISC_ALCOR_PCI is not set +# CONFIG_MISC_RTSX_PCI is not set +# CONFIG_MISC_RTSX_USB is not set +# CONFIG_HABANA_AI is not set +# end of Misc devices + +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_PROC_FS is not set + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set +CONFIG_SCSI_CONSTANTS=y +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set + +# +# SCSI Transports +# +CONFIG_SCSI_SPI_ATTRS=y +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +CONFIG_SCSI_SRP_ATTRS=y +# end of SCSI Transports + +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_SCSI_CXGB3_ISCSI is not set +# CONFIG_SCSI_CXGB4_ISCSI is not set +# CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_BE2ISCSI is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_HPSA is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_3W_SAS is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_MVSAS is not set +# CONFIG_SCSI_MVUMI is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_ESAS2R is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_SCSI_MPT3SAS is not set +# CONFIG_SCSI_MPT2SAS is not set +# CONFIG_SCSI_SMARTPQI is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_MYRB is not set +# CONFIG_SCSI_MYRS is not set +# CONFIG_SCSI_SNIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_FDOMAIN_PCI is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_IBMVSCSI is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_STEX is not set +CONFIG_SCSI_SYM53C8XX_2=y +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_WD719X is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_PMCRAID is not set +# CONFIG_SCSI_PM8001 is not set +CONFIG_SCSI_DH=y +# CONFIG_SCSI_DH_RDAC is not set +# CONFIG_SCSI_DH_HP_SW is not set +# CONFIG_SCSI_DH_EMC is not set +# CONFIG_SCSI_DH_ALUA is not set +# end of SCSI device support + +CONFIG_ATA=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +CONFIG_SATA_MOBILE_LPM_POLICY=0 +# CONFIG_SATA_AHCI_PLATFORM is not set +# CONFIG_AHCI_CEVA is not set +# CONFIG_AHCI_QORIQ is not set +# CONFIG_SATA_INIC162X is not set +# CONFIG_SATA_ACARD_AHCI is not set +# CONFIG_SATA_SIL24 is not set +# CONFIG_ATA_SFF is not set +CONFIG_MD=y +# CONFIG_BLK_DEV_MD is not set +# CONFIG_BCACHE is not set +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DM=y +# CONFIG_DM_DEBUG is not set +CONFIG_DM_BUFIO=y +# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set +CONFIG_DM_BIO_PRISON=y +CONFIG_DM_PERSISTENT_DATA=y +# CONFIG_DM_UNSTRIPED is not set +CONFIG_DM_CRYPT=y +CONFIG_DM_SNAPSHOT=y +CONFIG_DM_THIN_PROVISIONING=y +# CONFIG_DM_CACHE is not set +CONFIG_DM_WRITECACHE=y +# CONFIG_DM_ERA is not set +# CONFIG_DM_CLONE is not set +CONFIG_DM_MIRROR=y +# CONFIG_DM_LOG_USERSPACE is not set +# CONFIG_DM_RAID is not set +CONFIG_DM_ZERO=y +CONFIG_DM_MULTIPATH=y +# CONFIG_DM_MULTIPATH_QL is not set +# CONFIG_DM_MULTIPATH_ST is not set +# CONFIG_DM_DELAY is not set +# CONFIG_DM_DUST is not set +# CONFIG_DM_INIT is not set +CONFIG_DM_UEVENT=y +# CONFIG_DM_FLAKEY is not set +# CONFIG_DM_VERITY is not set +# CONFIG_DM_SWITCH is not set +# CONFIG_DM_LOG_WRITES is not set +CONFIG_DM_INTEGRITY=y +# CONFIG_TARGET_CORE is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +# end of IEEE 1394 (FireWire) support + +# CONFIG_MACINTOSH_DRIVERS is not set +CONFIG_NETDEVICES=y +CONFIG_NET_CORE=y +# CONFIG_BONDING is not set +CONFIG_DUMMY=y +# CONFIG_WIREGUARD is not set +# CONFIG_EQUALIZER is not set +# CONFIG_NET_FC is not set +# CONFIG_NET_TEAM is not set +# CONFIG_MACVLAN is not set +# CONFIG_IPVLAN is not set +# CONFIG_VXLAN is not set +# CONFIG_GENEVE is not set +# CONFIG_GTP is not set +CONFIG_MACSEC=y +# CONFIG_NETCONSOLE is not set +CONFIG_TUN=y +# CONFIG_TUN_VNET_CROSS_LE is not set +# CONFIG_VETH is not set +# CONFIG_NLMON is not set +# CONFIG_ARCNET is not set + +# +# Distributed Switch Architecture drivers +# +# end of Distributed Switch Architecture drivers + +CONFIG_ETHERNET=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +# CONFIG_NET_VENDOR_ALACRITECH is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_ALTERA_TSE is not set +# CONFIG_NET_VENDOR_AMAZON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_AQUANTIA is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_AURORA is not set +CONFIG_NET_VENDOR_BROADCOM=y +# CONFIG_B44 is not set +# CONFIG_BCMGENET is not set +# CONFIG_BNX2 is not set +# CONFIG_CNIC is not set +CONFIG_TIGON3=y +CONFIG_TIGON3_HWMON=y +# CONFIG_BNX2X is not set +# CONFIG_SYSTEMPORT is not set +# CONFIG_BNXT is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_CADENCE is not set +# CONFIG_NET_VENDOR_CAVIUM is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_NET_VENDOR_CORTINA is not set +# CONFIG_DNET is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EZCHIP is not set +# CONFIG_NET_VENDOR_GOOGLE is not set +# CONFIG_NET_VENDOR_HUAWEI is not set +# CONFIG_NET_VENDOR_IBM is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_JME is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MICROSEMI is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_FEALNX is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NETERION is not set +CONFIG_NET_VENDOR_NETRONOME=y +CONFIG_NFP=y +# CONFIG_NFP_DEBUG is not set +# CONFIG_NET_VENDOR_NI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_ETHOC is not set +# CONFIG_NET_VENDOR_PACKET_ENGINES is not set +# CONFIG_NET_VENDOR_PENSANDO is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SOLARFLARE is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_SOCIONEXT is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_SYNOPSYS is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +# CONFIG_NET_VENDOR_XILINX is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_BUS=y +# CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BUS_MUX_MMIOREG is not set +# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set +# CONFIG_MDIO_HISI_FEMAC is not set +# CONFIG_MDIO_MSCC_MIIM is not set +# CONFIG_MDIO_OCTEON is not set +# CONFIG_MDIO_THUNDER is not set +CONFIG_PHYLIB=y +CONFIG_SWPHY=y + +# +# MII PHY device drivers +# +# CONFIG_ADIN_PHY is not set +# CONFIG_AMD_PHY is not set +# CONFIG_AQUANTIA_PHY is not set +# CONFIG_AX88796B_PHY is not set +# CONFIG_BCM7XXX_PHY is not set +# CONFIG_BCM87XX_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_BCM84881_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_CORTINA_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_DP83822_PHY is not set +# CONFIG_DP83TC811_PHY is not set +# CONFIG_DP83848_PHY is not set +# CONFIG_DP83867_PHY is not set +# CONFIG_DP83869_PHY is not set +CONFIG_FIXED_PHY=y +# CONFIG_ICPLUS_PHY is not set +# CONFIG_INTEL_XWAY_PHY is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_MARVELL_PHY is not set +# CONFIG_MARVELL_10G_PHY is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_MICROCHIP_PHY is not set +# CONFIG_MICROCHIP_T1_PHY is not set +# CONFIG_MICROSEMI_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_NXP_TJA11XX_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_RENESAS_PHY is not set +# CONFIG_ROCKCHIP_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_STE10XP is not set +# CONFIG_TERANETICS_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_XILINX_GMII2RGMII is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +# CONFIG_USB_NET_DRIVERS is not set +# CONFIG_WLAN is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# +# CONFIG_WAN is not set +# CONFIG_NETDEVSIM is not set +# CONFIG_NET_FAILOVER is not set +# CONFIG_ISDN is not set +# CONFIG_NVM is not set + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_LEDS=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_POLLDEV is not set +# CONFIG_INPUT_SPARSEKMAP is not set +# CONFIG_INPUT_MATRIXKMAP is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 is not set +# CONFIG_KEYBOARD_ATKBD is not set +# CONFIG_KEYBOARD_QT1050 is not set +# CONFIG_KEYBOARD_QT1070 is not set +# CONFIG_KEYBOARD_QT2160 is not set +# CONFIG_KEYBOARD_DLINK_DIR685 is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_TCA8418 is not set +# CONFIG_KEYBOARD_LM8323 is not set +# CONFIG_KEYBOARD_LM8333 is not set +# CONFIG_KEYBOARD_MAX7359 is not set +# CONFIG_KEYBOARD_MCS is not set +# CONFIG_KEYBOARD_MPR121 is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_OMAP4 is not set +# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_CAP11XX is not set +CONFIG_INPUT_MOUSE=y +# CONFIG_MOUSE_PS2 is not set +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_APPLETOUCH is not set +# CONFIG_MOUSE_BCM5974 is not set +# CONFIG_MOUSE_CYAPA is not set +# CONFIG_MOUSE_ELAN_I2C is not set +# CONFIG_MOUSE_VSXXXAA is not set +# CONFIG_MOUSE_SYNAPTICS_I2C is not set +# CONFIG_MOUSE_SYNAPTICS_USB is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +CONFIG_INPUT_MISC=y +# CONFIG_INPUT_AD714X is not set +# CONFIG_INPUT_ATMEL_CAPTOUCH is not set +# CONFIG_INPUT_BMA150 is not set +# CONFIG_INPUT_E3X0_BUTTON is not set +# CONFIG_INPUT_MSM_VIBRATOR is not set +CONFIG_INPUT_PCSPKR=y +# CONFIG_INPUT_MMA8450 is not set +# CONFIG_INPUT_ATI_REMOTE2 is not set +# CONFIG_INPUT_KEYSPAN_REMOTE is not set +# CONFIG_INPUT_KXTJ9 is not set +# CONFIG_INPUT_POWERMATE is not set +# CONFIG_INPUT_YEALINK is not set +# CONFIG_INPUT_CM109 is not set +# CONFIG_INPUT_UINPUT is not set +# CONFIG_INPUT_PCF8574 is not set +# CONFIG_INPUT_ADXL34X is not set +# CONFIG_INPUT_IMS_PCU is not set +# CONFIG_INPUT_CMA3000 is not set +# CONFIG_INPUT_DRV2665_HAPTICS is not set +# CONFIG_INPUT_DRV2667_HAPTICS is not set +# CONFIG_RMI4_CORE is not set + +# +# Hardware I/O ports +# +# CONFIG_SERIO is not set +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y +# CONFIG_GAMEPORT is not set +# end of Hardware I/O ports +# end of Input device support + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_NOZOMI is not set +# CONFIG_N_GSM is not set +# CONFIG_TRACE_SINK is not set +# CONFIG_PPC_EPAPR_HV_BYTECHAN is not set +# CONFIG_NULL_TTY is not set +# CONFIG_LDISC_AUTOLOAD is not set +CONFIG_DEVMEM=y +CONFIG_DEVKMEM=y + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +# CONFIG_SERIAL_8250_16550A_VARIANTS is not set +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_EXAR=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set +CONFIG_SERIAL_8250_FSL=y +# CONFIG_SERIAL_8250_DW is not set +# CONFIG_SERIAL_8250_RT288X is not set +# CONFIG_SERIAL_OF_PLATFORM is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_ICOM is not set +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_SIFIVE is not set +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_SC16IS7XX is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_XILINX_PS_UART is not set +# CONFIG_SERIAL_ARC is not set +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_FSL_LINFLEXUART is not set +# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set +# end of Serial drivers + +# CONFIG_SERIAL_DEV_BUS is not set +CONFIG_HVC_DRIVER=y +CONFIG_HVC_IRQ=y +CONFIG_HVC_CONSOLE=y +CONFIG_HVC_OLD_HVSI=y +CONFIG_HVC_OPAL=y +CONFIG_HVC_RTAS=y +# CONFIG_HVC_UDBG is not set +CONFIG_HVCS=y +CONFIG_IBM_BSR=y +# CONFIG_POWERNV_OP_PANEL is not set +CONFIG_IPMI_HANDLER=y +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_DEVICE_INTERFACE=y +# CONFIG_IPMI_SI is not set +# CONFIG_IPMI_SSIF is not set +CONFIG_IPMI_POWERNV=y +# CONFIG_IPMI_WATCHDOG is not set +# CONFIG_IPMI_POWEROFF is not set +CONFIG_HW_RANDOM=y +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +CONFIG_HW_RANDOM_PSERIES=y +CONFIG_HW_RANDOM_POWERNV=y +CONFIG_NVRAM=y +# CONFIG_APPLICOM is not set +CONFIG_RAW_DRIVER=y +CONFIG_MAX_RAW_DEVS=1024 +# CONFIG_HANGCHECK_TIMER is not set +# CONFIG_TCG_TPM is not set +CONFIG_DEVPORT=y +# CONFIG_XILLYBUS is not set +# end of Character devices + +CONFIG_RANDOM_TRUST_CPU=y +# CONFIG_RANDOM_TRUST_BOOTLOADER is not set + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +# CONFIG_I2C_CHARDEV is not set +# CONFIG_I2C_MUX is not set +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=y + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_ISCH is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_NVIDIA_GPU is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_DESIGNWARE_PLATFORM is not set +# CONFIG_I2C_DESIGNWARE_PCI is not set +# CONFIG_I2C_MPC is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_XILINX is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_DIOLAN_U2C is not set +# CONFIG_I2C_ROBOTFUZZ_OSIF is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +CONFIG_I2C_OPAL=y +# end of I2C Hardware Bus support + +# CONFIG_I2C_SLAVE is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# end of I2C support + +# CONFIG_I3C is not set +# CONFIG_SPI is not set +# CONFIG_SPMI is not set +# CONFIG_HSI is not set +CONFIG_PPS=y +# CONFIG_PPS_DEBUG is not set + +# +# PPS clients support +# +# CONFIG_PPS_CLIENT_KTIMER is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PPS_CLIENT_GPIO is not set + +# +# PPS generators support +# + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=y + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +# CONFIG_PTP_1588_CLOCK_IDTCM is not set +# end of PTP clock support + +# CONFIG_PINCTRL is not set +# CONFIG_GPIOLIB is not set +# CONFIG_W1 is not set +# CONFIG_POWER_AVS is not set +# CONFIG_POWER_RESET is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_POWER_SUPPLY_HWMON=y +# CONFIG_PDA_POWER is not set +# CONFIG_TEST_POWER is not set +# CONFIG_CHARGER_ADP5061 is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_SBS is not set +# CONFIG_CHARGER_SBS is not set +# CONFIG_BATTERY_BQ27XXX is not set +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +# CONFIG_CHARGER_DETECTOR_MAX14656 is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_SMB347 is not set +# CONFIG_BATTERY_GAUGE_LTC2941 is not set +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM1177 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7410 is not set +# CONFIG_SENSORS_ADT7411 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_AS370 is not set +# CONFIG_SENSORS_ASC7621 is not set +# CONFIG_SENSORS_ASPEED is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DRIVETEMP is not set +# CONFIG_SENSORS_DS620 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_G762 is not set +# CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_IBMAEM is not set +# CONFIG_SENSORS_IBMPEX is not set +CONFIG_SENSORS_IBMPOWERNV=y +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_POWR1220 is not set +# CONFIG_SENSORS_LINEAGE is not set +# CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC2947_I2C is not set +# CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC4151 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4222 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LTC4260 is not set +# CONFIG_SENSORS_LTC4261 is not set +# CONFIG_SENSORS_MAX16065 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX1668 is not set +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MAX31730 is not set +# CONFIG_SENSORS_MAX6621 is not set +# CONFIG_SENSORS_MAX6639 is not set +# CONFIG_SENSORS_MAX6642 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_MAX31790 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_TC654 is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM73 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LM95234 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_LM95245 is not set +# CONFIG_SENSORS_NTC_THERMISTOR is not set +# CONFIG_SENSORS_NCT7802 is not set +# CONFIG_SENSORS_NCT7904 is not set +# CONFIG_SENSORS_NPCM7XX is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_PMBUS is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x is not set +# CONFIG_SENSORS_SHTC1 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_EMC1403 is not set +# CONFIG_SENSORS_EMC2103 is not set +# CONFIG_SENSORS_EMC6W201 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_STTS751 is not set +# CONFIG_SENSORS_SMM665 is not set +# CONFIG_SENSORS_ADC128D818 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA3221 is not set +# CONFIG_SENSORS_TC74 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP102 is not set +# CONFIG_SENSORS_TMP103 is not set +# CONFIG_SENSORS_TMP108 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_TMP513 is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83773G is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83795 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_THERMAL is not set +# CONFIG_WATCHDOG is not set +CONFIG_SSB_POSSIBLE=y +CONFIG_SSB=y +CONFIG_SSB_SPROM=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_DRIVER_PCICORE=y +CONFIG_BCMA_POSSIBLE=y +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_ACT8945A is not set +# CONFIG_MFD_AS3711 is not set +# CONFIG_MFD_AS3722 is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_ATMEL_FLEXCOM is not set +# CONFIG_MFD_ATMEL_HLCDC is not set +# CONFIG_MFD_BCM590XX is not set +# CONFIG_MFD_BD9571MWV is not set +# CONFIG_MFD_AXP20X_I2C is not set +# CONFIG_MFD_MADERA is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_DA9052_I2C is not set +# CONFIG_MFD_DA9055 is not set +# CONFIG_MFD_DA9062 is not set +# CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_DA9150 is not set +# CONFIG_MFD_DLN2 is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_HI6421_PMIC is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_LPC_ICH is not set +# CONFIG_LPC_SCH is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77620 is not set +# CONFIG_MFD_MAX77650 is not set +# CONFIG_MFD_MAX77686 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX77843 is not set +# CONFIG_MFD_MAX8907 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_MENF21BMC is not set +# CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RT5033 is not set +# CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_RK808 is not set +# CONFIG_MFD_RN5T618 is not set +# CONFIG_MFD_SEC_CORE is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SKY81452 is not set +# CONFIG_MFD_SMSC is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_MFD_STMPE is not set +# CONFIG_MFD_SYSCON is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_LP3943 is not set +# CONFIG_MFD_LP8788 is not set +# CONFIG_MFD_TI_LMU is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS6507X is not set +# CONFIG_MFD_TPS65086 is not set +# CONFIG_MFD_TPS65090 is not set +# CONFIG_MFD_TPS65217 is not set +# CONFIG_MFD_TI_LP873X is not set +# CONFIG_MFD_TI_LP87565 is not set +# CONFIG_MFD_TPS65218 is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TPS80031 is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_MFD_LM3533 is not set +# CONFIG_MFD_TC3589X is not set +# CONFIG_MFD_TQMX86 is not set +# CONFIG_MFD_VX855 is not set +# CONFIG_MFD_LOCHNAGAR is not set +# CONFIG_MFD_ARIZONA_I2C is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8994 is not set +# CONFIG_MFD_ROHM_BD718XX is not set +# CONFIG_MFD_ROHM_BD70528 is not set +# CONFIG_MFD_ROHM_BD71828 is not set +# CONFIG_MFD_STPMIC1 is not set +# CONFIG_MFD_STMFX is not set +# end of Multifunction device drivers + +# CONFIG_REGULATOR is not set +CONFIG_CEC_CORE=y +# CONFIG_RC_CORE is not set +# CONFIG_MEDIA_SUPPORT is not set + +# +# Graphics support +# +# CONFIG_AGP is not set +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +CONFIG_DRM=y +# CONFIG_DRM_DP_AUX_CHARDEV is not set +# CONFIG_DRM_DEBUG_MM is not set +# CONFIG_DRM_DEBUG_SELFTEST is not set +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_KMS_FB_HELPER=y +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set +CONFIG_DRM_DP_CEC=y +CONFIG_DRM_TTM=y +CONFIG_DRM_TTM_DMA_PAGE_POOL=y +CONFIG_DRM_VRAM_HELPER=y +CONFIG_DRM_TTM_HELPER=y + +# +# I2C encoder or helper chips +# +# CONFIG_DRM_I2C_CH7006 is not set +# CONFIG_DRM_I2C_SIL164 is not set +# CONFIG_DRM_I2C_NXP_TDA998X is not set +# CONFIG_DRM_I2C_NXP_TDA9950 is not set +# end of I2C encoder or helper chips + +# +# ARM devices +# +# end of ARM devices + +CONFIG_DRM_RADEON=y +# CONFIG_DRM_RADEON_USERPTR is not set +# CONFIG_DRM_AMDGPU is not set + +# +# ACP (Audio CoProcessor) Configuration +# +# end of ACP (Audio CoProcessor) Configuration + +# CONFIG_DRM_NOUVEAU is not set +# CONFIG_DRM_VGEM is not set +# CONFIG_DRM_VKMS is not set +# CONFIG_DRM_UDL is not set +CONFIG_DRM_AST=y +# CONFIG_DRM_MGAG200 is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +# CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set +# CONFIG_DRM_QXL is not set +# CONFIG_DRM_BOCHS is not set +CONFIG_DRM_PANEL=y + +# +# Display Panels +# +# CONFIG_DRM_PANEL_LVDS is not set +# CONFIG_DRM_PANEL_SIMPLE is not set +# CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set +# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set +# end of Display Panels + +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_PANEL_BRIDGE=y + +# +# Display Interface Bridges +# +# CONFIG_DRM_CDNS_DSI is not set +# CONFIG_DRM_DUMB_VGA_DAC is not set +# CONFIG_DRM_LVDS_CODEC is not set +# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set +# CONFIG_DRM_NXP_PTN3460 is not set +# CONFIG_DRM_PARADE_PS8622 is not set +# CONFIG_DRM_SIL_SII8620 is not set +# CONFIG_DRM_SII902X is not set +# CONFIG_DRM_SII9234 is not set +# CONFIG_DRM_THINE_THC63LVD1024 is not set +# CONFIG_DRM_TOSHIBA_TC358764 is not set +# CONFIG_DRM_TOSHIBA_TC358767 is not set +# CONFIG_DRM_TI_TFP410 is not set +# CONFIG_DRM_TI_SN65DSI86 is not set +# CONFIG_DRM_ANALOGIX_ANX6345 is not set +# CONFIG_DRM_ANALOGIX_ANX78XX is not set +# CONFIG_DRM_I2C_ADV7511 is not set +# end of Display Interface Bridges + +# CONFIG_DRM_ETNAVIV is not set +# CONFIG_DRM_ARCPGU is not set +# CONFIG_DRM_GM12U320 is not set +# CONFIG_DRM_LEGACY is not set +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y + +# +# Frame buffer Devices +# +CONFIG_FB_CMDLINE=y +CONFIG_FB_NOTIFY=y +CONFIG_FB=y +CONFIG_FIRMWARE_EDID=y +CONFIG_FB_DDC=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_MACMODES=y +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_OF=y +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +# CONFIG_FB_VGA16 is not set +# CONFIG_FB_OPENCORES is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_NVIDIA is not set +# CONFIG_FB_RIVA is not set +# CONFIG_FB_I740 is not set +CONFIG_FB_MATROX=y +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MATROX_G=y +# CONFIG_FB_MATROX_I2C is not set +CONFIG_FB_RADEON=y +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_S3 is not set +# CONFIG_FB_SAVAGE is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_VT8623 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_ARK is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_CARMINE is not set +# CONFIG_FB_SMSCUFX is not set +# CONFIG_FB_UDL is not set +CONFIG_FB_IBM_GXT4500=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_SIMPLE is not set +# CONFIG_FB_SM712 is not set +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +# CONFIG_BACKLIGHT_GENERIC is not set +# CONFIG_BACKLIGHT_QCOM_WLED is not set +# CONFIG_BACKLIGHT_ADP8860 is not set +# CONFIG_BACKLIGHT_ADP8870 is not set +# CONFIG_BACKLIGHT_LM3639 is not set +# CONFIG_BACKLIGHT_LV5207LP is not set +# CONFIG_BACKLIGHT_BD6107 is not set +# CONFIG_BACKLIGHT_ARCXCNN is not set +# CONFIG_BACKLIGHT_LED is not set +# end of Backlight & LCD device support + +CONFIG_HDMI=y + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +# CONFIG_VGACON_SOFT_SCROLLBACK is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y +# end of Console display driver support + +# CONFIG_LOGO is not set +# end of Graphics support + +CONFIG_SOUND=y +CONFIG_SOUND_OSS_CORE=y +CONFIG_SOUND_OSS_CORE_PRECLAIM=y +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=y +CONFIG_SND_PCM_OSS=y +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_PCM_TIMER=y +# CONFIG_SND_HRTIMER is not set +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_MAX_CARDS=32 +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_PROC_FS=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set +# CONFIG_SND_SEQUENCER is not set +CONFIG_SND_DRIVERS=y +# CONFIG_SND_DUMMY is not set +CONFIG_SND_ALOOP=y +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set +# CONFIG_SND_PCI is not set + +# +# HD-Audio +# +# end of HD-Audio + +CONFIG_SND_HDA_PREALLOC_SIZE=64 +CONFIG_SND_PPC=y +# CONFIG_SND_USB is not set +# CONFIG_SND_SOC is not set + +# +# HID support +# +CONFIG_HID=y +# CONFIG_HID_BATTERY_STRENGTH is not set +# CONFIG_HIDRAW is not set +# CONFIG_UHID is not set +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +# CONFIG_HID_A4TECH is not set +# CONFIG_HID_ACCUTOUCH is not set +# CONFIG_HID_ACRUX is not set +# CONFIG_HID_APPLE is not set +# CONFIG_HID_APPLEIR is not set +# CONFIG_HID_ASUS is not set +# CONFIG_HID_AUREAL is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_BETOP_FF is not set +# CONFIG_HID_BIGBEN_FF is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_CHICONY is not set +# CONFIG_HID_CORSAIR is not set +# CONFIG_HID_COUGAR is not set +# CONFIG_HID_MACALLY is not set +# CONFIG_HID_PRODIKEYS is not set +# CONFIG_HID_CMEDIA is not set +# CONFIG_HID_CREATIVE_SB0540 is not set +# CONFIG_HID_CYPRESS is not set +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_ELAN is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_ELO is not set +# CONFIG_HID_EZKEY is not set +# CONFIG_HID_GEMBIRD is not set +# CONFIG_HID_GFRM is not set +# CONFIG_HID_HOLTEK is not set +# CONFIG_HID_GT683R is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_UCLOGIC is not set +# CONFIG_HID_WALTOP is not set +# CONFIG_HID_VIEWSONIC is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_ICADE is not set +# CONFIG_HID_ITE is not set +# CONFIG_HID_JABRA is not set +# CONFIG_HID_TWINHAN is not set +# CONFIG_HID_KENSINGTON is not set +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LED is not set +# CONFIG_HID_LENOVO is not set +# CONFIG_HID_LOGITECH is not set +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_MALTRON is not set +# CONFIG_HID_MAYFLASH is not set +# CONFIG_HID_REDRAGON is not set +# CONFIG_HID_MICROSOFT is not set +# CONFIG_HID_MONTEREY is not set +# CONFIG_HID_MULTITOUCH is not set +# CONFIG_HID_NTI is not set +# CONFIG_HID_NTRIG is not set +# CONFIG_HID_ORTEK is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PENMOUNT is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_PICOLCD is not set +# CONFIG_HID_PLANTRONICS is not set +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_RETRODE is not set +# CONFIG_HID_ROCCAT is not set +# CONFIG_HID_SAITEK is not set +# CONFIG_HID_SAMSUNG is not set +# CONFIG_HID_SONY is not set +# CONFIG_HID_SPEEDLINK is not set +# CONFIG_HID_STEAM is not set +# CONFIG_HID_STEELSERIES is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_RMI is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TIVO is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_THINGM is not set +# CONFIG_HID_THRUSTMASTER is not set +# CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_U2FZERO is not set +# CONFIG_HID_WACOM is not set +# CONFIG_HID_WIIMOTE is not set +# CONFIG_HID_XINMO is not set +# CONFIG_HID_ZEROPLUS is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set +# end of Special HID drivers + +# +# USB HID support +# +CONFIG_USB_HID=y +# CONFIG_HID_PID is not set +# CONFIG_USB_HIDDEV is not set +# end of USB HID support + +# +# I2C HID support +# +# CONFIG_I2C_HID is not set +# end of I2C HID support +# end of HID support + +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +CONFIG_USB_ULPI_BUS=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB=y +CONFIG_USB_PCI=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEFAULT_PERSIST=y +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_WHITELIST is not set +CONFIG_USB_AUTOSUSPEND_DELAY=2 +# CONFIG_USB_MON is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_DBGCAP is not set +CONFIG_USB_XHCI_PCI=y +CONFIG_USB_XHCI_PLATFORM=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EHCI_PCI=y +# CONFIG_USB_EHCI_FSL is not set +CONFIG_USB_EHCI_HCD_PPC_OF=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_FOTG210_HCD is not set +# CONFIG_USB_OHCI_HCD is not set +# CONFIG_USB_UHCI_HCD is not set +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HCD_SSB is not set +# CONFIG_USB_HCD_TEST_MODE is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_REALTEK is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_STORAGE_ENE_UB6250 is not set +# CONFIG_USB_UAS is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USBIP_CORE is not set +# CONFIG_USB_CDNS3 is not set +# CONFIG_USB_MUSB_HDRC is not set +# CONFIG_USB_DWC3 is not set +# CONFIG_USB_DWC2 is not set +# CONFIG_USB_CHIPIDEA is not set +# CONFIG_USB_ISP1760 is not set + +# +# USB port drivers +# +CONFIG_USB_SERIAL=y +# CONFIG_USB_SERIAL_CONSOLE is not set +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_SIMPLE=y +# CONFIG_USB_SERIAL_AIRCABLE is not set +# CONFIG_USB_SERIAL_ARK3116 is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_CH341 is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_CP210X is not set +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set +# CONFIG_USB_SERIAL_EMPEG is not set +CONFIG_USB_SERIAL_FTDI_SIO=y +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_F81232 is not set +# CONFIG_USB_SERIAL_F8153X is not set +# CONFIG_USB_SERIAL_GARMIN is not set +# CONFIG_USB_SERIAL_IPW is not set +# CONFIG_USB_SERIAL_IUU is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_METRO is not set +# CONFIG_USB_SERIAL_MOS7720 is not set +# CONFIG_USB_SERIAL_MOS7840 is not set +# CONFIG_USB_SERIAL_MXUPORT is not set +# CONFIG_USB_SERIAL_NAVMAN is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_OTI6858 is not set +# CONFIG_USB_SERIAL_QCAUX is not set +# CONFIG_USB_SERIAL_QUALCOMM is not set +# CONFIG_USB_SERIAL_SPCP8X5 is not set +CONFIG_USB_SERIAL_SAFE=y +CONFIG_USB_SERIAL_SAFE_PADDED=y +# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set +# CONFIG_USB_SERIAL_SYMBOL is not set +# CONFIG_USB_SERIAL_TI is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OPTION is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_SERIAL_OPTICON is not set +# CONFIG_USB_SERIAL_XSENS_MT is not set +# CONFIG_USB_SERIAL_WISHBONE is not set +# CONFIG_USB_SERIAL_SSU100 is not set +# CONFIG_USB_SERIAL_QT2 is not set +# CONFIG_USB_SERIAL_UPD78F0730 is not set +# CONFIG_USB_SERIAL_DEBUG is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_EHSET_TEST_FIXTURE is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_YUREX is not set +# CONFIG_USB_EZUSB_FX2 is not set +# CONFIG_USB_HUB_USB251XB is not set +# CONFIG_USB_HSIC_USB3503 is not set +# CONFIG_USB_HSIC_USB4604 is not set +# CONFIG_USB_LINK_LAYER_TEST is not set +# CONFIG_USB_CHAOSKEY is not set + +# +# USB Physical Layer drivers +# +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_USB_ISP1301 is not set +# end of USB Physical Layer drivers + +# CONFIG_USB_GADGET is not set +# CONFIG_TYPEC is not set +# CONFIG_USB_ROLE_SWITCH is not set +# CONFIG_MMC is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +# CONFIG_LEDS_CLASS_FLASH is not set +# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set + +# +# LED drivers +# +# CONFIG_LEDS_AN30259A is not set +# CONFIG_LEDS_BCM6328 is not set +# CONFIG_LEDS_BCM6358 is not set +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3532 is not set +# CONFIG_LEDS_LM3642 is not set +# CONFIG_LEDS_LM3692X is not set +# CONFIG_LEDS_PCA9532 is not set +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_LP5562 is not set +# CONFIG_LEDS_LP8501 is not set +# CONFIG_LEDS_LP8860 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_TCA6507 is not set +# CONFIG_LEDS_TLC591XX is not set +# CONFIG_LEDS_LM355x is not set +# CONFIG_LEDS_IS31FL319X is not set +# CONFIG_LEDS_IS31FL32XX is not set + +# +# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) +# +# CONFIG_LEDS_BLINKM is not set +CONFIG_LEDS_POWERNV=y +# CONFIG_LEDS_MLXREG is not set +# CONFIG_LEDS_USER is not set + +# +# LED Triggers +# +# CONFIG_LEDS_TRIGGERS is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_SUPPORT=y +# CONFIG_EDAC is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_NVMEM=y + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_ABB5ZES3 is not set +# CONFIG_RTC_DRV_ABEOZ9 is not set +# CONFIG_RTC_DRV_ABX80X is not set +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_HYM8563 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_ISL12026 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8523 is not set +# CONFIG_RTC_DRV_PCF85063 is not set +# CONFIG_RTC_DRV_PCF85363 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_BQ32K is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8010 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV3028 is not set +# CONFIG_RTC_DRV_RV8803 is not set +# CONFIG_RTC_DRV_SD3078 is not set + +# +# SPI RTC drivers +# +CONFIG_RTC_I2C_AND_SPI=y + +# +# SPI and I2C RTC drivers +# +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_PCF2127 is not set +# CONFIG_RTC_DRV_RV3029C2 is not set + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_CMOS is not set +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1685_FAMILY is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_DS2404 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +# CONFIG_RTC_DRV_RP5C01 is not set +# CONFIG_RTC_DRV_V3020 is not set +CONFIG_RTC_DRV_OPAL=y +# CONFIG_RTC_DRV_ZYNQMP is not set + +# +# on-CPU RTC drivers +# +CONFIG_RTC_DRV_GENERIC=y +# CONFIG_RTC_DRV_CADENCE is not set +# CONFIG_RTC_DRV_FTRTC010 is not set +# CONFIG_RTC_DRV_SNVS is not set +# CONFIG_RTC_DRV_R7301 is not set + +# +# HID Sensor RTC drivers +# +# CONFIG_DMADEVICES is not set + +# +# DMABUF options +# +CONFIG_SYNC_FILE=y +# CONFIG_SW_SYNC is not set +# CONFIG_UDMABUF is not set +# CONFIG_DMABUF_SELFTESTS is not set +# CONFIG_DMABUF_HEAPS is not set +# end of DMABUF options + +# CONFIG_AUXDISPLAY is not set +CONFIG_UIO=y +# CONFIG_UIO_CIF is not set +# CONFIG_UIO_PDRV_GENIRQ is not set +# CONFIG_UIO_DMEM_GENIRQ is not set +# CONFIG_UIO_AEC is not set +# CONFIG_UIO_SERCOS3 is not set +# CONFIG_UIO_PCI_GENERIC is not set +# CONFIG_UIO_NETX is not set +# CONFIG_UIO_PRUSS is not set +# CONFIG_UIO_MF624 is not set +# CONFIG_VFIO is not set +# CONFIG_VIRT_DRIVERS is not set +# CONFIG_VIRTIO_MENU is not set + +# +# Microsoft Hyper-V guest support +# +# end of Microsoft Hyper-V guest support + +# CONFIG_GREYBUS is not set +# CONFIG_STAGING is not set +# CONFIG_GOLDFISH is not set +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_I8253_LOCK=y +CONFIG_CLKBLD_I8253=y +# CONFIG_MICROCHIP_PIT64B is not set +# end of Clock Source drivers + +# CONFIG_MAILBOX is not set +CONFIG_IOMMU_API=y +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +# end of Generic IOMMU Pagetable Support + +# CONFIG_IOMMU_DEBUGFS is not set +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set +CONFIG_OF_IOMMU=y +CONFIG_SPAPR_TCE_IOMMU=y + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set +# end of Remoteproc drivers + +# +# Rpmsg drivers +# +# CONFIG_RPMSG_VIRTIO is not set +# end of Rpmsg drivers + +# CONFIG_SOUNDWIRE is not set + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# +# end of Amlogic SoC drivers + +# +# Aspeed SoC drivers +# +# end of Aspeed SoC drivers + +# +# Broadcom SoC drivers +# +# end of Broadcom SoC drivers + +# +# NXP/Freescale QorIQ SoC drivers +# +# CONFIG_QUICC_ENGINE is not set +# end of NXP/Freescale QorIQ SoC drivers + +# +# i.MX SoC drivers +# +# end of i.MX SoC drivers + +# +# Qualcomm SoC drivers +# +# end of Qualcomm SoC drivers + +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# CONFIG_XILINX_VCU is not set +# end of Xilinx SoC drivers +# end of SOC (System On Chip) specific Drivers + +# CONFIG_PM_DEVFREQ is not set +# CONFIG_EXTCON is not set +# CONFIG_MEMORY is not set +# CONFIG_IIO is not set +# CONFIG_NTB is not set +# CONFIG_VME_BUS is not set +# CONFIG_PWM is not set + +# +# IRQ chip support +# +CONFIG_IRQCHIP=y +# CONFIG_AL_FIC is not set +# end of IRQ chip support + +# CONFIG_IPACK_BUS is not set +# CONFIG_RESET_CONTROLLER is not set + +# +# PHY Subsystem +# +# CONFIG_GENERIC_PHY is not set +# CONFIG_BCM_KONA_USB2_PHY is not set +# CONFIG_PHY_CADENCE_DP is not set +# CONFIG_PHY_CADENCE_DPHY is not set +# CONFIG_PHY_FSL_IMX8MQ_USB is not set +# CONFIG_PHY_MIXEL_MIPI_DPHY is not set +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_QCOM_USB_HS is not set +# CONFIG_PHY_QCOM_USB_HSIC is not set +# CONFIG_PHY_TUSB1210 is not set +# CONFIG_PHY_INTEL_EMMC is not set +# end of PHY Subsystem + +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +# end of Performance monitor support + +CONFIG_RAS=y + +# +# Android +# +# CONFIG_ANDROID is not set +# end of Android + +# CONFIG_LIBNVDIMM is not set +CONFIG_DAX=y +# CONFIG_DEV_DAX is not set +CONFIG_NVMEM=y +CONFIG_NVMEM_SYSFS=y + +# +# HW tracing support +# +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# end of HW tracing support + +# CONFIG_FPGA is not set +# CONFIG_FSI is not set +# CONFIG_SIOX is not set +# CONFIG_SLIMBUS is not set +# CONFIG_INTERCONNECT is not set +# CONFIG_COUNTER is not set +# end of Device Drivers + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +# CONFIG_VALIDATE_FS_PARSER is not set +CONFIG_FS_IOMAP=y +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +# CONFIG_EXT3_FS is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +# CONFIG_FS_DAX is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +# CONFIG_MANDATORY_FILE_LOCKING is not set +CONFIG_FS_ENCRYPTION=y +CONFIG_FS_ENCRYPTION_ALGS=y +# CONFIG_FS_VERITY is not set +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_FUSE_FS is not set +CONFIG_OVERLAY_FS=y +# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set +# CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW is not set +# CONFIG_OVERLAY_FS_INDEX is not set +# CONFIG_OVERLAY_FS_XINO_AUTO is not set +# CONFIG_OVERLAY_FS_METACOPY is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set +# end of Caches + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set +# end of CD-ROM/DVD Filesystems + +# +# DOS/FAT/NT Filesystems +# +# CONFIG_MSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_NTFS_FS is not set +# end of DOS/FAT/NT Filesystems + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +# CONFIG_PROC_CHILDREN is not set +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +# CONFIG_HUGETLBFS is not set +CONFIG_MEMFD_CREATE=y +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y +CONFIG_CONFIGFS_FS=y +# end of Pseudo filesystems + +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ORANGEFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_ECRYPT_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_FILE_CACHE=y +# CONFIG_SQUASHFS_FILE_DIRECT is not set +# CONFIG_SQUASHFS_DECOMP_SINGLE is not set +# CONFIG_SQUASHFS_DECOMP_MULTI is not set +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_ZLIB=y +# CONFIG_SQUASHFS_LZ4 is not set +# CONFIG_SQUASHFS_LZO is not set +CONFIG_SQUASHFS_XZ=y +# CONFIG_SQUASHFS_ZSTD is not set +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_PSTORE=y +CONFIG_PSTORE_DEFLATE_COMPRESS=y +# CONFIG_PSTORE_LZO_COMPRESS is not set +# CONFIG_PSTORE_LZ4_COMPRESS is not set +# CONFIG_PSTORE_LZ4HC_COMPRESS is not set +# CONFIG_PSTORE_842_COMPRESS is not set +# CONFIG_PSTORE_ZSTD_COMPRESS is not set +CONFIG_PSTORE_COMPRESS=y +CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y +CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" +# CONFIG_PSTORE_CONSOLE is not set +# CONFIG_PSTORE_PMSG is not set +# CONFIG_PSTORE_RAM is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_EROFS_FS is not set +# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_2=y +CONFIG_NLS_ISO8859_3=y +CONFIG_NLS_ISO8859_4=y +CONFIG_NLS_ISO8859_5=y +CONFIG_NLS_ISO8859_6=y +CONFIG_NLS_ISO8859_7=y +CONFIG_NLS_ISO8859_9=y +CONFIG_NLS_ISO8859_13=y +CONFIG_NLS_ISO8859_14=y +CONFIG_NLS_ISO8859_15=y +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +CONFIG_NLS_UTF8=y +# CONFIG_DLM is not set +# CONFIG_UNICODE is not set +CONFIG_IO_WQ=y +# end of File systems + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_KEYS_REQUEST_CACHE is not set +# CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_BIG_KEYS is not set +CONFIG_ENCRYPTED_KEYS=y +CONFIG_KEY_DH_OPERATIONS=y +# CONFIG_SECURITY_DMESG_RESTRICT is not set +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_NETWORK=y +# CONFIG_SECURITY_NETWORK_XFRM is not set +CONFIG_SECURITY_PATH=y +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y +CONFIG_HARDENED_USERCOPY=y +CONFIG_HARDENED_USERCOPY_FALLBACK=y +CONFIG_FORTIFY_SOURCE=y +# CONFIG_STATIC_USERMODEHELPER is not set +# CONFIG_SECURITY_SELINUX is not set +# CONFIG_SECURITY_SMACK is not set +# CONFIG_SECURITY_TOMOYO is not set +CONFIG_SECURITY_APPARMOR=y +CONFIG_SECURITY_APPARMOR_HASH=y +CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y +# CONFIG_SECURITY_APPARMOR_DEBUG is not set +# CONFIG_SECURITY_LOADPIN is not set +CONFIG_SECURITY_YAMA=y +# CONFIG_SECURITY_SAFESETID is not set +# CONFIG_SECURITY_LOCKDOWN_LSM is not set +# CONFIG_INTEGRITY is not set +# CONFIG_DEFAULT_SECURITY_APPARMOR is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_INIT_STACK_NONE=y +CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y +CONFIG_INIT_ON_FREE_DEFAULT_ON=y +# end of Memory initialization +# end of Kernel hardening options +# end of Security options + +CONFIG_XOR_BLOCKS=y +CONFIG_ASYNC_CORE=y +CONFIG_ASYNC_XOR=y +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_SKCIPHER=y +CONFIG_CRYPTO_SKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=y +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_AKCIPHER=y +CONFIG_CRYPTO_KPP2=y +CONFIG_CRYPTO_KPP=y +CONFIG_CRYPTO_ACOMP2=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_USER is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +CONFIG_CRYPTO_GF128MUL=y +CONFIG_CRYPTO_NULL=y +CONFIG_CRYPTO_NULL2=y +CONFIG_CRYPTO_PCRYPT=y +# CONFIG_CRYPTO_CRYPTD is not set +CONFIG_CRYPTO_AUTHENC=y + +# +# Public-key cryptography +# +CONFIG_CRYPTO_RSA=y +CONFIG_CRYPTO_DH=y +CONFIG_CRYPTO_ECC=y +CONFIG_CRYPTO_ECDH=y +CONFIG_CRYPTO_ECRDSA=y +CONFIG_CRYPTO_CURVE25519=y + +# +# Authenticated Encryption with Associated Data +# +CONFIG_CRYPTO_CCM=y +CONFIG_CRYPTO_GCM=y +CONFIG_CRYPTO_CHACHA20POLY1305=y +# CONFIG_CRYPTO_AEGIS128 is not set +CONFIG_CRYPTO_SEQIV=y +CONFIG_CRYPTO_ECHAINIV=y + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +# CONFIG_CRYPTO_CFB is not set +CONFIG_CRYPTO_CTR=y +CONFIG_CRYPTO_CTS=y +CONFIG_CRYPTO_ECB=y +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_OFB is not set +# CONFIG_CRYPTO_PCBC is not set +CONFIG_CRYPTO_XTS=y +# CONFIG_CRYPTO_KEYWRAP is not set +# CONFIG_CRYPTO_ADIANTUM is not set +CONFIG_CRYPTO_ESSIV=y + +# +# Hash modes +# +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_HMAC=y +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_CRC32C_VPMSUM is not set +CONFIG_CRYPTO_CRC32=y +CONFIG_CRYPTO_XXHASH=y +CONFIG_CRYPTO_BLAKE2B=y +CONFIG_CRYPTO_BLAKE2S=y +CONFIG_CRYPTO_CRCT10DIF=y +# CONFIG_CRYPTO_CRCT10DIF_VPMSUM is not set +CONFIG_CRYPTO_GHASH=y +CONFIG_CRYPTO_POLY1305=y +# CONFIG_CRYPTO_MD4 is not set +CONFIG_CRYPTO_MD5=y +# CONFIG_CRYPTO_MD5_PPC is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_RMD128 is not set +CONFIG_CRYPTO_RMD160=y +CONFIG_CRYPTO_RMD256=y +CONFIG_CRYPTO_RMD320=y +CONFIG_CRYPTO_SHA1=y +# CONFIG_CRYPTO_SHA1_PPC is not set +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_SHA3=y +# CONFIG_CRYPTO_SM3 is not set +CONFIG_CRYPTO_STREEBOG=y +# CONFIG_CRYPTO_TGR192 is not set +CONFIG_CRYPTO_WP512=y + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_AES_TI is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARC4 is not set +CONFIG_CRYPTO_BLOWFISH=y +CONFIG_CRYPTO_BLOWFISH_COMMON=y +# CONFIG_CRYPTO_CAMELLIA is not set +CONFIG_CRYPTO_CAST_COMMON=y +# CONFIG_CRYPTO_CAST5 is not set +CONFIG_CRYPTO_CAST6=y +CONFIG_CRYPTO_DES=y +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +CONFIG_CRYPTO_SALSA20=y +CONFIG_CRYPTO_CHACHA20=y +# CONFIG_CRYPTO_SEED is not set +CONFIG_CRYPTO_SERPENT=y +# CONFIG_CRYPTO_SM4 is not set +# CONFIG_CRYPTO_TEA is not set +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_TWOFISH_COMMON=y + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_LZO=y +# CONFIG_CRYPTO_842 is not set +CONFIG_CRYPTO_LZ4=y +CONFIG_CRYPTO_LZ4HC=y +CONFIG_CRYPTO_ZSTD=y + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_DRBG_MENU=y +CONFIG_CRYPTO_DRBG_HMAC=y +# CONFIG_CRYPTO_DRBG_HASH is not set +# CONFIG_CRYPTO_DRBG_CTR is not set +CONFIG_CRYPTO_DRBG=y +CONFIG_CRYPTO_JITTERENTROPY=y +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +# CONFIG_CRYPTO_USER_API_RNG is not set +# CONFIG_CRYPTO_USER_API_AEAD is not set + +# +# Crypto library routines +# +CONFIG_CRYPTO_LIB_AES=y +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +# CONFIG_CRYPTO_LIB_BLAKE2S is not set +CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y +# CONFIG_CRYPTO_LIB_CHACHA is not set +CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=y +# CONFIG_CRYPTO_LIB_CURVE25519 is not set +CONFIG_CRYPTO_LIB_DES=y +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1 +CONFIG_CRYPTO_LIB_POLY1305_GENERIC=y +# CONFIG_CRYPTO_LIB_POLY1305 is not set +# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set +CONFIG_CRYPTO_LIB_SHA256=y +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_DEV_NX=y +CONFIG_CRYPTO_DEV_NX_COMPRESS=y +CONFIG_CRYPTO_DEV_NX_COMPRESS_PSERIES=y +CONFIG_CRYPTO_DEV_NX_COMPRESS_POWERNV=y +# CONFIG_CRYPTO_DEV_ATMEL_ECC is not set +# CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set +# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set +# CONFIG_CRYPTO_DEV_VMX is not set +# CONFIG_CRYPTO_DEV_SAFEXCEL is not set +# CONFIG_CRYPTO_DEV_CCREE is not set +# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set +# CONFIG_ASYMMETRIC_KEY_TYPE is not set + +# +# Certificates for signature checking +# +# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set +# end of Certificates for signature checking + +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +# CONFIG_PACKING is not set +CONFIG_BITREVERSE=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +# CONFIG_CORDIC is not set +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_IOMAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +# CONFIG_CRC_CCITT is not set +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +CONFIG_CRC64=y +# CONFIG_CRC4 is not set +# CONFIG_CRC7 is not set +CONFIG_LIBCRC32C=y +# CONFIG_CRC8 is not set +CONFIG_XXHASH=y +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_842_DECOMPRESS=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_COMPRESS=y +CONFIG_LZ4HC_COMPRESS=y +CONFIG_LZ4_DECOMPRESS=y +CONFIG_ZSTD_COMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_X86=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_LZ4=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_INTERVAL_TREE=y +CONFIG_XARRAY_MULTI=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_DMA_DECLARE_COHERENT=y +CONFIG_ARCH_HAS_FORCE_DMA_UNENCRYPTED=y +CONFIG_SWIOTLB=y +# CONFIG_DMA_API_DEBUG is not set +CONFIG_SGL_ALLOC=y +CONFIG_IOMMU_HELPER=y +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +CONFIG_CLZ_TAB=y +CONFIG_IRQ_POLL=y +CONFIG_MPILIB=y +CONFIG_LIBFDT=y +CONFIG_OID_REGISTRY=y +CONFIG_FONT_SUPPORT=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_SG_POOL=y +CONFIG_ARCH_HAS_PMEM_API=y +CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y +CONFIG_ARCH_HAS_UACCESS_MCSAFE=y +CONFIG_SBITMAP=y +# CONFIG_STRING_SELFTEST is not set +# end of Library routines + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +# CONFIG_PRINTK_TIME is not set +# CONFIG_PRINTK_CALLER is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_CONSOLE_LOGLEVEL_QUIET=3 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +# CONFIG_DYNAMIC_DEBUG is not set +CONFIG_SYMBOLIC_ERRNAME=y +CONFIG_DEBUG_BUGVERBOSE=y +# end of printk and dmesg options + +# +# Compile-time checks and compiler options +# +# CONFIG_DEBUG_INFO is not set +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=2048 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_READABLE_ASM is not set +# CONFIG_HEADERS_INSTALL is not set +CONFIG_OPTIMIZE_INLINING=y +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# end of Compile-time checks and compiler options + +# +# Generic Kernel Debugging Instruments +# +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAGIC_SYSRQ_SERIAL=y +CONFIG_DEBUG_FS=y +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y +# CONFIG_UBSAN is not set +CONFIG_UBSAN_ALIGNMENT=y +# end of Generic Kernel Debugging Instruments + +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_MISC=y + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_PAGE_OWNER is not set +# CONFIG_PAGE_POISONING is not set +# CONFIG_DEBUG_PAGE_REF is not set +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +CONFIG_DEBUG_STACK_USAGE=y +CONFIG_SCHED_STACK_END_CHECK=y +# CONFIG_DEBUG_VM is not set +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +# CONFIG_DEBUG_VIRTUAL is not set +CONFIG_DEBUG_MEMORY_INIT=y +# CONFIG_DEBUG_PER_CPU_MAPS is not set +CONFIG_HAVE_DEBUG_STACKOVERFLOW=y +CONFIG_DEBUG_STACKOVERFLOW=y +CONFIG_KASAN_STACK=1 +# end of Memory Debugging + +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Oops, Lockups and Hangs +# +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_LOCKUP_DETECTOR=y +# CONFIG_SOFTLOCKUP_DETECTOR is not set +CONFIG_HARDLOCKUP_DETECTOR=y +# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0 +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 +# CONFIG_WQ_WATCHDOG is not set +# end of Debug Oops, Lockups and Hangs + +# +# Scheduler Debugging +# +CONFIG_SCHED_DEBUG=y +CONFIG_SCHED_INFO=y +CONFIG_SCHEDSTATS=y +# end of Scheduler Debugging + +# CONFIG_DEBUG_TIMEKEEPING is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +CONFIG_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_RWSEMS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_WW_MUTEX_SELFTEST is not set +# end of Lock Debugging (spinlocks, mutexes, etc...) + +CONFIG_STACKTRACE=y +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +# CONFIG_DEBUG_KOBJECT is not set + +# +# Debug kernel data structures +# +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_PLIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# end of Debug kernel data structures + +# CONFIG_DEBUG_CREDENTIALS is not set + +# +# RCU Debugging +# +# CONFIG_RCU_PERF_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +# CONFIG_RCU_TRACE is not set +# CONFIG_RCU_EQS_DEBUG is not set +# end of RCU Debugging + +# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set +CONFIG_LATENCYTOP=y +CONFIG_NOP_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACER_MAX_TRACE=y +CONFIG_TRACE_CLOCK=y +CONFIG_RING_BUFFER=y +CONFIG_EVENT_TRACING=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_RING_BUFFER_ALLOW_SWAP=y +CONFIG_TRACING=y +CONFIG_GENERIC_TRACER=y +CONFIG_TRACING_SUPPORT=y +CONFIG_FTRACE=y +# CONFIG_BOOTTIME_TRACING is not set +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_STACK_TRACER is not set +# CONFIG_PREEMPTIRQ_EVENTS is not set +# CONFIG_IRQSOFF_TRACER is not set +CONFIG_SCHED_TRACER=y +# CONFIG_HWLAT_TRACER is not set +# CONFIG_FTRACE_SYSCALLS is not set +CONFIG_TRACER_SNAPSHOT=y +# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_UPROBE_EVENTS=y +CONFIG_BPF_EVENTS=y +CONFIG_DYNAMIC_EVENTS=y +CONFIG_PROBE_EVENTS=y +# CONFIG_HIST_TRIGGERS is not set +# CONFIG_TRACE_EVENT_INJECT is not set +# CONFIG_TRACEPOINT_BENCHMARK is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_TRACE_EVAL_MAP_FILE is not set +# CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_RING_BUFFER_STARTUP_TEST is not set +# CONFIG_SAMPLES is not set +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +CONFIG_STRICT_DEVMEM=y +CONFIG_IO_STRICT_DEVMEM=y + +# +# powerpc Debugging +# +# CONFIG_PPC_DISABLE_WERROR is not set +CONFIG_PPC_WERROR=y +CONFIG_PRINT_STACK_DEPTH=64 +# CONFIG_HCALL_STATS is not set +# CONFIG_PPC_EMULATED_STATS is not set +CONFIG_CODE_PATCHING_SELFTEST=y +CONFIG_JUMP_LABEL_FEATURE_CHECKS=y +# CONFIG_JUMP_LABEL_FEATURE_CHECK_DEBUG is not set +CONFIG_FTR_FIXUP_SELFTEST=y +CONFIG_MSI_BITMAP_SELFTEST=y +# CONFIG_PPC_IRQ_SOFT_MASK_DEBUG is not set +CONFIG_XMON=y +# CONFIG_XMON_DEFAULT is not set +CONFIG_XMON_DISASSEMBLY=y +CONFIG_XMON_DEFAULT_RO_MODE=y +CONFIG_DEBUGGER=y +# CONFIG_BOOTX_TEXT is not set +# CONFIG_PPC_EARLY_DEBUG is not set +# CONFIG_PPC_PTDUMP is not set +# CONFIG_PPC_FAST_ENDIAN_SWITCH is not set +# end of powerpc Debugging + +# +# Kernel Testing and Coverage +# +# CONFIG_KUNIT is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_FAULT_INJECTION is not set +CONFIG_ARCH_HAS_KCOV=y +# CONFIG_RUNTIME_TESTING_MENU is not set +# CONFIG_MEMTEST is not set +# end of Kernel Testing and Coverage +# end of Kernel hacking diff --git a/linux-libre b/linux-libre new file mode 120000 index 0000000..073d2a1 --- /dev/null +++ b/linux-libre @@ -0,0 +1 @@ +linux-kernel \ No newline at end of file diff --git a/lix-os-bootloader/default/conf.sh b/lix-os-bootloader/default/conf.sh new file mode 100755 index 0000000..be97cc8 --- /dev/null +++ b/lix-os-bootloader/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +${EDITOR:-vi} config.sh diff --git a/lix-os-bootloader/default/deps b/lix-os-bootloader/default/deps new file mode 100644 index 0000000..672f564 --- /dev/null +++ b/lix-os-bootloader/default/deps @@ -0,0 +1,2 @@ +lix-os-filesystem +linux-kernel diff --git a/lix-os-bootloader/default/inst.sh b/lix-os-bootloader/default/inst.sh new file mode 100755 index 0000000..5e610fd --- /dev/null +++ b/lix-os-bootloader/default/inst.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +. config.sh + +if [ "$INST_GRUB_CFG" == "1" ]; then + mkdir -p /boot + cp -av boot/. /boot/ +fi + +if [ "$INST_GRUB" == "1" ]; then + grub-install -v / +fi diff --git a/lix-os-bootloader/default/make.sh b/lix-os-bootloader/default/make.sh new file mode 100755 index 0000000..54254d0 --- /dev/null +++ b/lix-os-bootloader/default/make.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +set -e + +mkdir -pv boot/grub/ + +. config.sh + +[ "$BOOT" == "$ROOT" ] && pre="/boot" + +cat > boot/grub/grub.cfg <= 2.3.3 diff --git a/lix-os-initramfs/default/deps.bak b/lix-os-initramfs/default/deps.bak new file mode 100644 index 0000000..1016d5f --- /dev/null +++ b/lix-os-initramfs/default/deps.bak @@ -0,0 +1,14 @@ +lix-os-filesystem +lix-os-bootloader +linux-kernel +patch +sbase +ubase +smdev +sinit +dash +gzip +libarchive +lvm2 +e2fsprogs +cryptsetup >= 2.3.3 diff --git a/lix-os-initramfs/default/inst.sh b/lix-os-initramfs/default/inst.sh new file mode 100755 index 0000000..bbbc2be --- /dev/null +++ b/lix-os-initramfs/default/inst.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +cd ../build + +find . | cpio -H newc -o | gzip > /boot/initramfs.igz diff --git a/lix-os-initramfs/default/make.sh b/lix-os-initramfs/default/make.sh new file mode 100755 index 0000000..bbee491 --- /dev/null +++ b/lix-os-initramfs/default/make.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +set -e + +cd ../build +rm -fr * + +mkdirv() { mkdir -p $1 && echo "created /mnt/build/$1"; } + +mkdirv proc +mkdirv sys +mkdirv newroot +mkdirv var/run +cp -av /bin . +cp -av /etc . +cp -av /lib . +cp -av /sbin . +cp -av /usr . +cp ../src/init . diff --git a/lix-os-initramfs/default/pull.sh b/lix-os-initramfs/default/pull.sh new file mode 100755 index 0000000..a3114c0 --- /dev/null +++ b/lix-os-initramfs/default/pull.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +. $MUROOT/lib/log.sh + +mkdir -v src +cp -v init src/ + diff --git a/lix-os/default/deps b/lix-os/default/deps new file mode 100644 index 0000000..e0555f1 --- /dev/null +++ b/lix-os/default/deps @@ -0,0 +1,60 @@ +lix-os-filesystem +lix-os-bootloader +linux-kernel +patch +sinit +make +m4 +texinfo +help2man +autoconf +dash +sbase +zlib +gzip +bzip2 +xz +libtool +pkgconf +automake +gnu-sed +gnu-grep +bc +perl +ncurses +bison +flex +awk +samurai +diffutils +ubase +smdev +sdhcp +bearssl +curl +musl-cross-make +cmake +less +file +libxml2 +libarchive +nano +rsync +iproute2 +tls-certs +attr +expat +git +libaio +libuuid +libblkid +libpopt +libgpg-error +libgcrypt +argon2 +json-c +lvm2 +e2fsprogs +cryptsetup +mksh +lix-os-initramfs diff --git a/llvm/default/conf.sh b/llvm/default/conf.sh new file mode 100755 index 0000000..d25dc4b --- /dev/null +++ b/llvm/default/conf.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +set -e + +# llvm prefers an out-of-tree build. +cd ../build + +cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_FLAGS_RELEASE_INIT="$SHARED_CFLAGS" \ + -DCMAKE_CXX_FLAGS_RELEASE_INIT="$SHARED_CXXFLAGS" \ + -DCMAKE_EXE_LINKER_FLAGS_RELEASE_INIT="$SHARED_LDFLAGS" \ + -DCMAKE_INSTALL_PREFIX="$PREFIX" \ + -DLLVM_ENABLE_ASSERTIONS=OFF \ + -DLLVM_ENABLE_CXXY1=ON \ + -DLLVM_ENABLE_FFI=ON \ + -DLLVM_ENABLE_PIC=ON \ + -DLLVM_ENABLE_ZLIB=ON \ + -DLLVM_ENABLE_RTTI=ON \ + -DLLVM_ENABLE_LIBCXX=OFF \ + -DLLVM_ENABLE_TERMINFO=ON \ + -DLLVM_ENABLE_SPHINX=OFF \ + -DLLVM_BUILD_DOCS=OFF \ + -DLLVM_BUILD_LLVM_DYLIB=ON \ + -DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON \ + -DLLVM_BUILD_EXAMPLES=OFF \ + -DLLVM_INCLUDE_EXAMPLES=OFF \ + -DLLVM_APPEND_VC_REV=OFF \ + -DLLVM_PARALLEL_COMPILE_JOBS=$(nproc) \ + -DLLVM_PARALLEL_LINK_JOBS=$(nproc) \ + -DLLVM_TARGETS_TO_BUILD="host;AMDGPU;BPF" \ + -DLLVM_TARGET_TRIPLE="$BUILD" \ + -DLLVM_HOST_TRIPLE="$HOST" \ + -G "Unix Makefiles" \ + ../src + +## explanation +# +# -DCMAKE_BUILD_TYPE: use all the optimisations. +# +# -G: use a unix-style, make-driven build process. diff --git a/llvm/default/deps b/llvm/default/deps new file mode 100644 index 0000000..b04c99d --- /dev/null +++ b/llvm/default/deps @@ -0,0 +1,25 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +zlib +libelf +libffi +libxml2 +cmake +python3-dynamic +py3-parsing +py3-six +py3-ordered-set +py3-appdirs +py3-packaging +py3-setuptools +tls-certs +git diff --git a/llvm/default/env.sh b/llvm/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/llvm/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/llvm/default/inst.sh b/llvm/default/inst.sh new file mode 100755 index 0000000..42ba35a --- /dev/null +++ b/llvm/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +cd ../build +make -j$(nproc) install diff --git a/llvm/default/make.sh b/llvm/default/make.sh new file mode 100755 index 0000000..ceddcf9 --- /dev/null +++ b/llvm/default/make.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +cd ../build +make -j$(nproc) llvm-tblgen +make -j$(nproc) + +python3 ../src/utils/lit/setup.py build diff --git a/llvm/default/patches-available/0001-Disable-dynamic-lib-tests-for-musl-s-dlclose-is-noop.patch b/llvm/default/patches-available/0001-Disable-dynamic-lib-tests-for-musl-s-dlclose-is-noop.patch new file mode 100644 index 0000000..1bf2fbb --- /dev/null +++ b/llvm/default/patches-available/0001-Disable-dynamic-lib-tests-for-musl-s-dlclose-is-noop.patch @@ -0,0 +1,22 @@ +From f8e83c4c7866ae830abe9bec15cfe805dd825b6e Mon Sep 17 00:00:00 2001 +From: xentec +Date: Tue, 12 Sep 2017 07:18:38 +0200 +Subject: [PATCH] Disable dynamic lib tests for musl's dlclose() is noop + +--- + unittests/Support/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/unittests/Support/CMakeLists.txt b/unittests/Support/CMakeLists.txt +index 641163e..4f508d9 100644 +--- a/unittests/Support/CMakeLists.txt ++++ b/unittests/Support/CMakeLists.txt +@@ -75,4 +75,4 @@ set_source_files_properties(AlignOfTest.cpp PROPERTIES COMPILE_FLAGS -w) + # ManagedStatic.cpp uses . + target_link_libraries(SupportTests LLVMTestingSupport ${LLVM_PTHREAD_LIB}) + +-add_subdirectory(DynamicLibrary) ++# add_subdirectory(DynamicLibrary) +-- +2.14.1 + diff --git a/llvm/default/patches-available/fix-LLVMConfig-cmake-install-prefix.patch b/llvm/default/patches-available/fix-LLVMConfig-cmake-install-prefix.patch new file mode 100644 index 0000000..b7e3dbe --- /dev/null +++ b/llvm/default/patches-available/fix-LLVMConfig-cmake-install-prefix.patch @@ -0,0 +1,24 @@ +Fix LLVMConfig.cmake being generated to use correct LLVM_INSTALL_PREFIX +(e.g. /usr/lib/llvm5). + +This is needed e.g. for building lldb. + +--- a/cmake/modules/CMakeLists.txt ++++ b/cmake/modules/CMakeLists.txt +@@ -75,15 +75,7 @@ + + # Generate LLVMConfig.cmake for the install tree. + set(LLVM_CONFIG_CODE " +-# Compute the installation prefix from this LLVMConfig.cmake file location. +-get_filename_component(LLVM_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)") +-# Construct the proper number of get_filename_component(... PATH) +-# calls to compute the installation prefix. +-string(REGEX REPLACE "/" ";" _count "${LLVM_INSTALL_PACKAGE_DIR}") +-foreach(p ${_count}) +- set(LLVM_CONFIG_CODE "${LLVM_CONFIG_CODE} +-get_filename_component(LLVM_INSTALL_PREFIX \"\${LLVM_INSTALL_PREFIX}\" PATH)") +-endforeach(p) ++set(LLVM_INSTALL_PREFIX \"${CMAKE_INSTALL_PREFIX}\")") + set(LLVM_CONFIG_INCLUDE_DIRS "\${LLVM_INSTALL_PREFIX}/include") + set(LLVM_CONFIG_LIBRARY_DIRS "\${LLVM_INSTALL_PREFIX}/lib\${LLVM_LIBDIR_SUFFIX}") + set(LLVM_CONFIG_CMAKE_DIR "\${LLVM_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR}") diff --git a/llvm/default/patches-available/fix-memory-mf_exec-on-aarch64.patch b/llvm/default/patches-available/fix-memory-mf_exec-on-aarch64.patch new file mode 100644 index 0000000..a64a317 --- /dev/null +++ b/llvm/default/patches-available/fix-memory-mf_exec-on-aarch64.patch @@ -0,0 +1,25 @@ +Fix failures in AllocationTests/MappedMemoryTest.* on aarch64: + + Failing Tests (8): + LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.AllocAndRelease/3 + LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.DuplicateNear/3 + LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.EnabledWrite/3 + LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.MultipleAllocAndRelease/3 + LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.SuccessiveNear/3 + LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.UnalignedNear/3 + LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.ZeroNear/3 + LLVM-Unit :: Support/./SupportTests/AllocationTests/MappedMemoryTest.ZeroSizeNear/3 + +Upstream-Issue: https://bugs.llvm.org/show_bug.cgi?id=14278#c10 + +--- a/lib/Support/Unix/Memory.inc ++++ b/lib/Support/Unix/Memory.inc +@@ -59,7 +59,7 @@ + return PROT_READ | PROT_WRITE | PROT_EXEC; + case llvm::sys::Memory::MF_EXEC: + #if (defined(__FreeBSD__) || defined(__POWERPC__) || defined (__ppc__) || \ +- defined(_POWER) || defined(_ARCH_PPC)) ++ defined(_POWER) || defined(_ARCH_PPC) || (defined(__linux__) && defined(__aarch64__))) + // On PowerPC, having an executable page that has no read permission + // can have unintended consequences. The function InvalidateInstruction- + // Cache uses instructions dcbf and icbi, both of which are treated by diff --git a/llvm/default/patches-available/python3-test.patch b/llvm/default/patches-available/python3-test.patch new file mode 100644 index 0000000..7463133 --- /dev/null +++ b/llvm/default/patches-available/python3-test.patch @@ -0,0 +1,8 @@ +--- llvm-7.0.1.src/test/BugPoint/compile-custom.ll.py.old 2014-03-13 00:10:37.000000000 +0000 ++++ llvm-7.0.1.src/test/BugPoint/compile-custom.ll.py 2019-03-10 03:48:48.600000000 +0000 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + import sys + diff --git a/llvm/default/patches-enabled/0001-Disable-dynamic-lib-tests-for-musl-s-dlclose-is-noop.patch b/llvm/default/patches-enabled/0001-Disable-dynamic-lib-tests-for-musl-s-dlclose-is-noop.patch new file mode 120000 index 0000000..05b2fb7 --- /dev/null +++ b/llvm/default/patches-enabled/0001-Disable-dynamic-lib-tests-for-musl-s-dlclose-is-noop.patch @@ -0,0 +1 @@ +../patches-available/0001-Disable-dynamic-lib-tests-for-musl-s-dlclose-is-noop.patch \ No newline at end of file diff --git a/llvm/default/patches-enabled/fix-LLVMConfig-cmake-install-prefix.patch b/llvm/default/patches-enabled/fix-LLVMConfig-cmake-install-prefix.patch new file mode 120000 index 0000000..340f116 --- /dev/null +++ b/llvm/default/patches-enabled/fix-LLVMConfig-cmake-install-prefix.patch @@ -0,0 +1 @@ +../patches-available/fix-LLVMConfig-cmake-install-prefix.patch \ No newline at end of file diff --git a/llvm/default/patches-enabled/fix-memory-mf_exec-on-aarch64.patch b/llvm/default/patches-enabled/fix-memory-mf_exec-on-aarch64.patch new file mode 120000 index 0000000..6981b14 --- /dev/null +++ b/llvm/default/patches-enabled/fix-memory-mf_exec-on-aarch64.patch @@ -0,0 +1 @@ +../patches-available/fix-memory-mf_exec-on-aarch64.patch \ No newline at end of file diff --git a/llvm/default/patches-enabled/python3-test.patch b/llvm/default/patches-enabled/python3-test.patch new file mode 120000 index 0000000..c3823bb --- /dev/null +++ b/llvm/default/patches-enabled/python3-test.patch @@ -0,0 +1 @@ +../patches-available/python3-test.patch \ No newline at end of file diff --git a/lua/default/conf.sh b/lua/default/conf.sh new file mode 100755 index 0000000..df502b7 --- /dev/null +++ b/lua/default/conf.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +${EDITOR:-vi} src/Makefile diff --git a/lua/default/deps b/lua/default/deps new file mode 100644 index 0000000..e8f399b --- /dev/null +++ b/lua/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +$EDITORDEP diff --git a/lua/default/inst.sh b/lua/default/inst.sh new file mode 100755 index 0000000..0ec2239 --- /dev/null +++ b/lua/default/inst.sh @@ -0,0 +1,5 @@ +#!/bin/sh + + +INSTALL="install" \ +make -j$(nproc) install diff --git a/lua/default/make.sh b/lua/default/make.sh new file mode 100755 index 0000000..fba33e1 --- /dev/null +++ b/lua/default/make.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +MYCFLAGS="$STATIC_CFLAGS" \ +MYLDFLAGS="$STATIC_LDFLAGS" \ +make -j$(nproc) linux diff --git a/lua/default/patch b/lua/default/patch new file mode 100644 index 0000000..7491fd0 --- /dev/null +++ b/lua/default/patch @@ -0,0 +1,53 @@ +--- a/Makefile 2020-04-15 12:55:07.000000000 +0000 ++++ b/Makefile 2020-08-31 19:31:12.320000000 +0000 +@@ -10,7 +10,7 @@ + # so take care if INSTALL_TOP is not an absolute path. See the local target. + # You may want to make INSTALL_LMOD and INSTALL_CMOD consistent with + # LUA_ROOT, LUA_LDIR, and LUA_CDIR in luaconf.h. +-INSTALL_TOP= /usr/local ++INSTALL_TOP?= + INSTALL_BIN= $(INSTALL_TOP)/bin + INSTALL_INC= $(INSTALL_TOP)/include + INSTALL_LIB= $(INSTALL_TOP)/lib +@@ -20,7 +20,7 @@ + + # How to install. If your install program does not support "-p", then + # you may have to run ranlib on the installed liblua.a. +-INSTALL= install -p ++INSTALL?= install -p + INSTALL_EXEC= $(INSTALL) -m 0755 + INSTALL_DATA= $(INSTALL) -m 0644 + # +--- a/src/luaconf.h 2020-06-18 14:25:54.000000000 +0000 ++++ b/src/luaconf.h 2020-08-31 19:35:08.660000000 +0000 +@@ -227,7 +227,10 @@ + + #else /* }{ */ + +-#define LUA_ROOT "/usr/local/" ++#if !defined(LUA_ROOT) ++#define LUA_ROOT "/" ++#endif ++ + #define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/" + #define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/" + +--- a/src/Makefile 2020-04-15 13:00:29.000000000 +0000 ++++ b/src/Makefile 2020-10-23 18:41:54.130000000 +0000 +@@ -16,12 +16,12 @@ + RM= rm -f + UNAME= uname + +-SYSCFLAGS= +-SYSLDFLAGS= ++#SYSCFLAGS= ++#SYSLDFLAGS= + SYSLIBS= + +-MYCFLAGS= +-MYLDFLAGS= ++#MYCFLAGS= ++#MYLDFLAGS= + MYLIBS= + MYOBJS= + diff --git a/lvm2/default/NOTES b/lvm2/default/NOTES new file mode 100644 index 0000000..6c5e518 --- /dev/null +++ b/lvm2/default/NOTES @@ -0,0 +1,19 @@ +lvm2's patch file is pretty big. it contains changes which: + +1. make glibc optional. lvm2 as written assumes glibc's memory functions are +available. the patch makes a couple changes which check if glibc is available +before relying on these functions. it also makes some changes to the default +configuration to support this change. + +2. cleans up the std{out,err,in} stream redirection, replacing "fopen" with +"freopen" to first make sure the requested stream is closed before taking +ownership. + +3. replaces calls to "fmt" with "tr" in the makefiles. fmt is part of gnu's +coreutils and is not present in sbase. tr is present in both. lvm2's makefiles +use fmt to turn a "horizontal list" into a vertical list. it replaces runs of +whitespace in a stream with newlines, in other words. tr can do this too, and +it is more portable. + +4. removes the -p flag from the "install" invocations. sbase's install doesn't +support that flag, and it's not clear why it needs to be set anyway. diff --git a/lvm2/default/conf.sh b/lvm2/default/conf.sh new file mode 100755 index 0000000..595d67b --- /dev/null +++ b/lvm2/default/conf.sh @@ -0,0 +1,55 @@ +#!/bin/sh + +# building in-tree clobbers the "srcdir" value. +cd /mnt/build + +#export LDFLAGS="-L$MUFS/lib" # -L$pkg/output/libdm/ioctl" +#export CFLAGS="-I$MUFS/include -L$MUFS/lib" # -L$pkg/output/libdm/ioctl" +#export CXXFLAGS="$CFLAGS" +#export CPPFLAGS="$CFLAGS" + +# --disable-dmeventd \ +# --enable-pkgconfig \ +#CLDFLAGS="$LDFLAGS" \ +#ELDFLAGS="$LDFLAGS" \ +INSTALL="/bin/install" \ +/mnt/src/configure \ + --build=$(uname -m)-lix-linux-musl \ + --enable-cmdlib \ + --enable-static_link \ + --disable-udev_rules \ + --disable-udev-systemd-background-jobs \ + --disable-nls \ + --disable-readline \ + --disable-selinux \ + --with-lvm1=none \ + --srcdir=/mnt/src \ + --prefix= + +## explanation +# +# INSTALL: +# configure attaches the obsolete -c flag to all 'install' invocations unless +# this variable is set. configure does this for backwards-compatibility with +# old versions of install. gnu install ignores this flag, but sbase install +# doesn't recognize it and errors out. +# +# --build: configure can't identify musl platforms. +# +# --enable-cmdlib: dmeventd needs this library. (optional otherwise.) +# +# --enable-static_link: use static linking. +# +# --disable-udev_rules: lix os doesn't use udev. +# +# --disable-udev-systemd-background-jobs: lix os doesn't use udev or systemd. +# +# --disable-nls: no need for localisation. +# +# --disable-readline: no need for readline. +# +# --with-lvm1: don't bother supporting backwards compatibility with lvm1. +# +# --srcdir: make can't find autoconf/install-sh without an absolute path here. +# +# --prefix: respect lix os' "no usr/local" policy. diff --git a/lvm2/default/deps b/lvm2/default/deps new file mode 100644 index 0000000..2ee615b --- /dev/null +++ b/lvm2/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +bash +gnu-grep +gnu-sed +libaio diff --git a/lvm2/default/inst.sh b/lvm2/default/inst.sh new file mode 100755 index 0000000..c617c5a --- /dev/null +++ b/lvm2/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +cd /mnt/build +DESTDIR=/ make -j$(nproc) install diff --git a/lvm2/default/make.sh b/lvm2/default/make.sh new file mode 100755 index 0000000..fe157f9 --- /dev/null +++ b/lvm2/default/make.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +cd /mnt/build + +LDFLAGS="$LDFLAGS -L/mnt/build/libdm/ioctl" \ +interfacebuilddir="/mnt/build/libdm/ioctl" \ +make -j$(nproc) diff --git a/lvm2/default/patch b/lvm2/default/patch new file mode 100644 index 0000000..15d5d5c --- /dev/null +++ b/lvm2/default/patch @@ -0,0 +1,258 @@ +diff -cr src/conf/example.conf.in src-mod/conf/example.conf.in +*** src/conf/example.conf.in Fri May 8 04:31:44 2020 +--- src-mod/conf/example.conf.in Fri May 8 04:34:25 2020 +*************** +*** 937,942 **** +--- 937,943 ---- + # Configuration option global/library_dir. + # Search this directory first for shared libraries. + # This configuration option does not have a default value defined. ++ library_dir="/lib/device-mapper" + + # Configuration option global/abort_on_internal_errors. + # Abort a command that encounters an internal error. +*************** +*** 1618,1624 **** + # Use the old behavior of mlockall to pin all memory. + # Prior to version 2.02.62, LVM used mlockall() to pin the whole + # process's memory while activating devices. +! use_mlockall = 0 + + # Configuration option activation/monitoring. + # Monitor LVs that are activated. +--- 1619,1625 ---- + # Use the old behavior of mlockall to pin all memory. + # Prior to version 2.02.62, LVM used mlockall() to pin the whole + # process's memory while activating devices. +! use_mlockall = 1 + + # Configuration option activation/monitoring. + # Monitor LVs that are activated. +diff -cr src/lib/commands/toolcontext.c src-mod/lib/commands/toolcontext.c +*** src/lib/commands/toolcontext.c Fri May 8 04:32:31 2020 +--- src-mod/lib/commands/toolcontext.c Fri May 8 04:28:30 2020 +*************** +*** 1599,1605 **** + /* FIXME Make this configurable? */ + reset_lvm_errno(1); + +! #ifndef VALGRIND_POOL + /* Set in/out stream buffering before glibc */ + if (set_buffering + #ifdef SYS_gettid +--- 1599,1605 ---- + /* FIXME Make this configurable? */ + reset_lvm_errno(1); + +! #if !defined(VALGRIND_POOL) && defined(__GLIBC__) + /* Set in/out stream buffering before glibc */ + if (set_buffering + #ifdef SYS_gettid +*************** +*** 1980,1986 **** + + if (cmd->pending_delete_mem) + dm_pool_destroy(cmd->pending_delete_mem); +! #ifndef VALGRIND_POOL + if (cmd->linebuffer) { + /* Reset stream buffering to defaults */ + if (is_valid_fd(STDIN_FILENO) && +--- 1980,1986 ---- + + if (cmd->pending_delete_mem) + dm_pool_destroy(cmd->pending_delete_mem); +! #if !defined(VALGRIND_POOL) && defined(__GLIBC__) + if (cmd->linebuffer) { + /* Reset stream buffering to defaults */ + if (is_valid_fd(STDIN_FILENO) && +diff -cr src/lib/config/defaults.h src-mod/lib/config/defaults.h +*** src/lib/config/defaults.h Fri May 8 04:32:14 2020 +--- src-mod/lib/config/defaults.h Fri May 8 04:28:02 2020 +*************** +*** 66,72 **** + #define DEFAULT_LVMLOCKD_LOCK_RETRIES 3 + #define DEFAULT_LVMETAD_UPDATE_WAIT_TIME 10 + #define DEFAULT_PRIORITISE_WRITE_LOCKS 1 +! #define DEFAULT_USE_MLOCKALL 0 + #define DEFAULT_METADATA_READ_ONLY 0 + #define DEFAULT_LVDISPLAY_SHOWS_FULL_DEVICE_PATH 0 + #define DEFAULT_UNKNOWN_DEVICE_NAME "[unknown]" +--- 66,72 ---- + #define DEFAULT_LVMLOCKD_LOCK_RETRIES 3 + #define DEFAULT_LVMETAD_UPDATE_WAIT_TIME 10 + #define DEFAULT_PRIORITISE_WRITE_LOCKS 1 +! #define DEFAULT_USE_MLOCKALL 1 + #define DEFAULT_METADATA_READ_ONLY 0 + #define DEFAULT_LVDISPLAY_SHOWS_FULL_DEVICE_PATH 0 + #define DEFAULT_UNKNOWN_DEVICE_NAME "[unknown]" +diff -cr src/lib/mm/memlock.c src-mod/lib/mm/memlock.c +*** src/lib/mm/memlock.c Fri May 8 04:32:45 2020 +--- src-mod/lib/mm/memlock.c Fri May 8 04:25:32 2020 +*************** +*** 159,165 **** + + static void _allocate_memory(void) + { +! #ifndef VALGRIND_POOL + void *stack_mem; + struct rlimit limit; + int i, area = 0, missing = _size_malloc_tmp, max_areas = 32, hblks; +--- 159,165 ---- + + static void _allocate_memory(void) + { +! #if !defined(VALGRIND_POOL) && defined(__GLIBC__) + void *stack_mem; + struct rlimit limit; + int i, area = 0, missing = _size_malloc_tmp, max_areas = 32, hblks; +diff -cr src/tools/lvmcmdline.c src-mod/tools/lvmcmdline.c +*** src/tools/lvmcmdline.c Fri May 8 04:31:34 2020 +--- src-mod/tools/lvmcmdline.c Fri May 8 04:28:18 2020 +*************** +*** 3233,3239 **** + int err = is_valid_fd(STDERR_FILENO); + + if (!is_valid_fd(STDIN_FILENO) && +! !(stdin = fopen(_PATH_DEVNULL, "r"))) { + if (err) + perror("stdin stream open"); + else +--- 3233,3239 ---- + int err = is_valid_fd(STDERR_FILENO); + + if (!is_valid_fd(STDIN_FILENO) && +! !freopen(_PATH_DEVNULL, "r", stdin)) { + if (err) + perror("stdin stream open"); + else +*************** +*** 3243,3249 **** + } + + if (!is_valid_fd(STDOUT_FILENO) && +! !(stdout = fopen(_PATH_DEVNULL, "w"))) { + if (err) + perror("stdout stream open"); + /* else no stdout */ +--- 3243,3249 ---- + } + + if (!is_valid_fd(STDOUT_FILENO) && +! !freopen(_PATH_DEVNULL, "w", stdout)) { + if (err) + perror("stdout stream open"); + /* else no stdout */ +*************** +*** 3251,3257 **** + } + + if (!is_valid_fd(STDERR_FILENO) && +! !(stderr = fopen(_PATH_DEVNULL, "w"))) { + printf("stderr stream open: %s\n", + strerror(errno)); + return 0; +--- 3251,3257 ---- + } + + if (!is_valid_fd(STDERR_FILENO) && +! !freopen(_PATH_DEVNULL, "w", stderr)) { + printf("stderr stream open: %s\n", + strerror(errno)); + return 0; +diff -cr src/make.tmpl.in src-mod/make.tmpl.in +*** src/make.tmpl.in Sat May 9 03:00:59 2020 +--- src-mod/make.tmpl.in Sat May 9 03:00:49 2020 +*************** +*** 162,174 **** + M_INSTALL_DATA = -m 444 + endif + INSTALL_PROGRAM = $(INSTALL) $(M_INSTALL_PROGRAM) $(STRIP) +! INSTALL_DATA = $(INSTALL) -p $(M_INSTALL_DATA) +! INSTALL_WDATA = $(INSTALL) -p -m 644 + + INSTALL_DIR = $(INSTALL) -m 755 -d + INSTALL_ROOT_DIR = $(INSTALL) -m 700 -d + INSTALL_ROOT_DATA = $(INSTALL) -m 600 +! INSTALL_SCRIPT = $(INSTALL) -p $(M_INSTALL_PROGRAM) + + .SUFFIXES: + .SUFFIXES: .c .cpp .d .o .so .a .po .pot .mo .dylib +--- 162,174 ---- + M_INSTALL_DATA = -m 444 + endif + INSTALL_PROGRAM = $(INSTALL) $(M_INSTALL_PROGRAM) $(STRIP) +! INSTALL_DATA = $(INSTALL) $(M_INSTALL_DATA) +! INSTALL_WDATA = $(INSTALL) -m 644 + + INSTALL_DIR = $(INSTALL) -m 755 -d + INSTALL_ROOT_DIR = $(INSTALL) -m 700 -d + INSTALL_ROOT_DATA = $(INSTALL) -m 600 +! INSTALL_SCRIPT = $(INSTALL) $(M_INSTALL_PROGRAM) + + .SUFFIXES: + .SUFFIXES: .c .cpp .d .o .so .a .po .pot .mo .dylib +*************** +*** 508,514 **** + $(CC) -MM $(INCLUDES) $(VALGRIND_CFLAGS) $(PROGS_CFLAGS) $(DEFS) -o $@ $<; \ + sed -i "s/\(.*\)\.o[ :]*/$$FILE.o $$FILE.d $$FILE.pot: $$DEPS /g" $@; \ + DEPLIST=`sed 's/ \\\\//;s/.*://;' < $@`; \ +! echo $$DEPLIST | fmt -1 | sed 's/ //g;s/\(.*\)/\1:/' >> $@; \ + [ -s $@ ] || $(RM) $@ + + %.mo: %.po +--- 508,514 ---- + $(CC) -MM $(INCLUDES) $(VALGRIND_CFLAGS) $(PROGS_CFLAGS) $(DEFS) -o $@ $<; \ + sed -i "s/\(.*\)\.o[ :]*/$$FILE.o $$FILE.d $$FILE.pot: $$DEPS /g" $@; \ + DEPLIST=`sed 's/ \\\\//;s/.*://;' < $@`; \ +! echo $$DEPLIST | tr -s '[:blank:]' '\n' | sed 's/ //g;s/\(.*\)/\1:/' >> $@; \ + [ -s $@ ] || $(RM) $@ + + %.mo: %.po +*** src/libdm/make.tmpl.in Thu Mar 26 11:26:37 2020 +--- src-mod/libdm/make.tmpl.in Sat May 9 03:29:23 2020 +*************** +*** 156,168 **** + M_INSTALL_DATA = -m 444 + endif + INSTALL_PROGRAM = $(INSTALL) $(M_INSTALL_PROGRAM) $(STRIP) +! INSTALL_DATA = $(INSTALL) -p $(M_INSTALL_DATA) +! INSTALL_WDATA = $(INSTALL) -p -m 644 + + INSTALL_DIR = $(INSTALL) -m 755 -d + INSTALL_ROOT_DIR = $(INSTALL) -m 700 -d + INSTALL_ROOT_DATA = $(INSTALL) -m 600 +! INSTALL_SCRIPT = $(INSTALL) -p $(M_INSTALL_PROGRAM) + + .SUFFIXES: + .SUFFIXES: .c .cpp .d .o .so .a .po .pot .mo .dylib +--- 156,168 ---- + M_INSTALL_DATA = -m 444 + endif + INSTALL_PROGRAM = $(INSTALL) $(M_INSTALL_PROGRAM) $(STRIP) +! INSTALL_DATA = $(INSTALL) $(M_INSTALL_DATA) +! INSTALL_WDATA = $(INSTALL) -m 644 + + INSTALL_DIR = $(INSTALL) -m 755 -d + INSTALL_ROOT_DIR = $(INSTALL) -m 700 -d + INSTALL_ROOT_DATA = $(INSTALL) -m 600 +! INSTALL_SCRIPT = $(INSTALL) $(M_INSTALL_PROGRAM) + + .SUFFIXES: + .SUFFIXES: .c .cpp .d .o .so .a .po .pot .mo .dylib +*************** +*** 469,475 **** + $(CC) -MM $(INCLUDES) $(VALGRIND_CFLAGS) $(PROGS_CFLAGS) $(DEFS) -o $@ $<; \ + sed -i "s/\(.*\)\.o[ :]*/$$FILE.o $$FILE.d $$FILE.pot: $$DEPS /g" $@; \ + DEPLIST=`sed 's/ \\\\//;s/.*://;' < $@`; \ +! echo $$DEPLIST | fmt -1 | sed 's/ //g;s/\(.*\)/\1:/' >> $@; \ + [ -s $@ ] || $(RM) $@ + + %.mo: %.po +--- 469,475 ---- + $(CC) -MM $(INCLUDES) $(VALGRIND_CFLAGS) $(PROGS_CFLAGS) $(DEFS) -o $@ $<; \ + sed -i "s/\(.*\)\.o[ :]*/$$FILE.o $$FILE.d $$FILE.pot: $$DEPS /g" $@; \ + DEPLIST=`sed 's/ \\\\//;s/.*://;' < $@`; \ +! echo $$DEPLIST | tr -s '[:blank:]' '\n' | sed 's/ //g;s/\(.*\)/\1:/' >> $@; \ + [ -s $@ ] || $(RM) $@ + + %.mo: %.po diff --git a/lynx/2.8.9rel.1/patch b/lynx/2.8.9rel.1/patch new file mode 100644 index 0000000..fd774fd --- /dev/null +++ b/lynx/2.8.9rel.1/patch @@ -0,0 +1,311 @@ +patch retrieved from +https://lists.gnu.org/archive/html/lynx-dev/2019-09/txtdZJkhuP5_U.txt + +context: +https://lists.gnu.org/archive/html/lynx-dev/2019-09/msg00030.html + +summary: adds socks5 support to lynx through a "-socks5-proxy" flag. +this change has been upstreamed, but a stable release containing this change is +not yet available. without this, lynx cannot be used with tor under lix os. +(torsocks hooks into the dynamic library loading mechanism, which is not used at +all by statically-linked binaries.) + +diff --git a/WWW/Library/Implementation/HTTCP.c b/WWW/Library/Implementation/HTTCP.c +index 4669efd4..75f3a161 100644 +--- a/WWW/Library/Implementation/HTTCP.c ++++ b/WWW/Library/Implementation/HTTCP.c +@@ -1825,6 +1825,10 @@ int HTDoConnect(const char *url, + int default_port, + int *s) + { ++ /* On error goto jout */ ++ char *socks5_host; ++ int socks5_host_len, socks5_port; ++ const char *socks5_orig_url; + int status = 0; + char *line = NULL; + char *p1 = NULL; +@@ -1836,7 +1840,45 @@ int HTDoConnect(const char *url, + #else + struct sockaddr_in sock_A; + struct sockaddr_in *soc_in = &sock_A; ++#endif ++ ++ /* In case of a present SOCKS5 proxy, marshal */ ++ if((socks5_orig_url = socks5_proxy) != NULL){ ++ size_t i; ++ int xport; ++ ++ xport = default_port; ++ socks5_orig_url = url; ++ ++ /* Get node name and optional port number of wanted URL */ ++ p1 = HTParse(url, "", PARSE_HOST); ++ socks5_host = NULL; ++ StrAllocCopy(socks5_host, p1); ++ strip_userid(socks5_host, FALSE); ++ FREE(p1); ++ ++ if((i = strlen(socks5_host)) > 255){ ++ HTAlert(gettext("SOCKS5: hostname too long.")); ++ goto jout; ++ } ++ socks5_host_len = (int)i; ++ ++ if(HTParsePort((char*)url, &socks5_port) == NULL) ++ socks5_port = xport; ++ ++ /* And switch over to our SOCKS5 config; in order to embed that into ++ * lynx environment, prepend protocol prefix */ ++ default_port = 1080; /* RFC 1928 */ ++ HTSACat(&p1, "socks://"); ++ HTSACat(&p1, socks5_proxy); ++ url = p1; ++ p1 = NULL; ++ ++ protocol = HTSprintf0(NULL, gettext("(for %s at %s) SOCKS5"), ++ protocol, socks5_host); ++ } + ++#ifndef INET6 + /* + * Set up defaults. + */ +@@ -1859,11 +1901,10 @@ int HTDoConnect(const char *url, + /* HTParseInet() is useless! */ + res0 = HTGetAddrInfo(host, default_port); + if (res0 == NULL) { +- HTSprintf0(&line, gettext("Unable to locate remote host %s."), host); +- _HTProgress(line); +- FREE(host); +- FREE(line); +- return HT_NO_DATA; ++ HTSprintf0(&line, gettext("Unable to locate remote host %s."), host); ++ _HTProgress(line); ++ status = HT_NO_DATA; ++ goto jout; + } + #else + status = HTParseInet(soc_in, host); +@@ -1882,16 +1923,12 @@ int HTDoConnect(const char *url, + } + status = HT_NO_DATA; + } +- FREE(host); +- FREE(line); +- return status; ++ goto jout; + } + #endif /* INET6 */ + + HTSprintf0(&line, gettext("Making %s connection to %s"), protocol, host); + _HTProgress(line); +- FREE(host); +- FREE(line); + + /* + * Now, let's get a socket set up from the server for the data. +@@ -1900,7 +1937,8 @@ int HTDoConnect(const char *url, + *s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (*s == -1) { + HTAlert(gettext("socket failed.")); +- return HT_NO_DATA; ++ status = HT_NO_DATA; ++ goto jout; + } + #else + for (res = res0; res; res = res->ai_next) { +@@ -1916,7 +1954,6 @@ int HTDoConnect(const char *url, + gettext("socket failed: family %d addr %s port %s."), + res->ai_family, hostbuf, portbuf); + _HTProgress(line); +- FREE(line); + continue; + } + #endif /* INET6 */ +@@ -2005,13 +2042,13 @@ int HTDoConnect(const char *url, + if ((tries++ / TRIES_PER_SECOND) >= connect_timeout) { + HTAlert(gettext("Connection failed (too many retries).")); + #ifdef INET6 +- FREE(line); + #ifndef NSL_FORK + if (res0) + freeaddrinfo(res0); + #endif + #endif /* INET6 */ +- return HT_NO_DATA; ++ status = HT_NO_DATA; ++ goto jout; + } + set_timeout(&select_timeout); + FD_ZERO(&writefds); +@@ -2204,7 +2241,6 @@ int HTDoConnect(const char *url, + #endif /* !DOSPATH || __DJGPP__ */ + + #ifdef INET6 +- FREE(line); + #ifdef NSL_FORK + FREE_NSL_FORK(res0); + #else +@@ -2212,6 +2248,109 @@ int HTDoConnect(const char *url, + freeaddrinfo(res0); + #endif + #endif /* INET6 */ ++ ++ /* Now if this was a SOCKS5 proxy connection, go for the real one */ ++ if(status >= 0 && socks5_orig_url != NULL){ ++ unsigned char pbuf[4 + 1 + 255 + 2]; ++ size_t i; ++ char const *emsg; ++ ++ /* RFC 1928: version identifier/method selection message */ ++ pbuf[0] = 0x05; /* VER: protocol version: X'05' */ ++ pbuf[1] = 0x01; /* NMETHODS: 1 */ ++ pbuf[2] = 0x00; /* METHOD: X'00' NO AUTHENTICATION REQUIRED */ ++ if(write(*s, pbuf, 3) != 3){ ++jerrsocks: ++ HTAlert(LYStrerror(errno)); ++jesocks: ++ NETCLOSE(*s); ++ status = HT_NO_CONNECTION; ++ goto jout; ++ } ++ ++ /* Receive greeting */ ++ if(HTDoRead(*s, pbuf, 2) != 2) ++ goto jerrsocks; ++ if(pbuf[0] != 0x05 || pbuf[1] != 0x00){ ++jesocksreply: ++ emsg = N_("unexpected reply\n"); ++jesocksreplymsg: ++ HTAlert(gettext(emsg)); ++ goto jesocks; ++ } ++ ++ /* RFC 1928: CONNECT request */ ++ HTSprintf0(&line, gettext("SOCKS5: connecting to %s"), socks5_host); ++ _HTProgress(line); ++ pbuf[0] = 0x05; /* VER: protocol version: X'05' */ ++ pbuf[1] = 0x01; /* CMD: CONNECT X'01' */ ++ pbuf[2] = 0x00; /* RESERVED */ ++ pbuf[3] = 0x03; /* ATYP: domain name */ ++ pbuf[4] = (unsigned char)socks5_host_len; ++ memcpy(&pbuf[i = 5], socks5_host, socks5_host_len); ++ i += socks5_host_len; ++ /* C99 */{ ++ unsigned short x; /* XXX 16-bit? */ ++ ++ x = htons(socks5_port); ++ memcpy(&pbuf[i], (unsigned char*)&x, sizeof x); ++ i += sizeof x; ++ } ++ if((size_t)write(*s, pbuf, i) != i) ++ goto jerrsocks; ++ ++ /* Connect result */ ++ if((i = HTDoRead(*s, pbuf, 4)) != 4) ++ goto jerrsocks; ++ /* Version 5, reserved must be 0 */ ++ if(pbuf[0] != 0x05 || pbuf[2] != 0x00) ++ goto jesocksreply; ++ /* Result */ ++ switch(pbuf[1]){ ++ case 0x00: emsg = NULL; break; ++ case 0x01: emsg = N_("SOCKS server failure"); break; ++ case 0x02: emsg = N_("connection not allowed by ruleset"); break; ++ case 0x03: emsg = N_("network unreachable"); break; ++ case 0x04: emsg = N_("host unreachable"); break; ++ case 0x05: emsg = N_("connection refused"); break; ++ case 0x06: emsg = N_("TTL expired"); break; ++ case 0x07: emsg = N_("command not supported"); break; ++ case 0x08: emsg = N_("address type not supported"); break; ++ default: emsg = N_("unknown SOCKS error code"); break; ++ } ++ if(emsg != NULL) ++ goto jesocksreplymsg; ++ ++ /* Address type variable; read the BND.PORT with it. ++ * This is actually false since RFC 1928 says that the BND.ADDR reply ++ * to CONNECT contains the IP address, so only 0x01 and 0x04 are ++ * allowed */ ++ switch(pbuf[3]){ ++ case 0x01: i = 4; break; ++ case 0x03: i = 1; break; ++ case 0x04: i = 16; break; ++ default: goto jesocksreply; ++ } ++ i += sizeof(unsigned short); ++ if((size_t)HTDoRead(*s, pbuf, i) != i) ++ goto jerrsocks; ++ if(i == 1 + sizeof(unsigned short)){ ++ i = pbuf[0]; ++ if((size_t)HTDoRead(*s, pbuf, i) != i) ++ goto jerrsocks; ++ } ++ } ++ ++jout: ++ if(socks5_proxy != NULL){ ++ FREE(url); ++ FREE(protocol); ++ FREE(socks5_host); ++ } ++ if(host != NULL); ++ FREE(host); ++ if(line != NULL) ++ FREE(line); + return status; + } + +diff --git a/lynx.man b/lynx.man +index ff4eb1b8..5a43c71a 100644 +--- a/lynx.man ++++ b/lynx.man +@@ -804,6 +804,11 @@ If enabled the transfer rate is shown in bytes/second. + If disabled, no transfer rate is shown. + Use lynx.cfg or the options menu to select KB/second and/or ETA. + .TP ++.B \-socks5-proxy=URL ++(Via which) SOCKS5 proxy to connect. ++This controls the builtin SOCKS5 support, and is therefore unrelated to ++the option \fB\-nosocks\fP. ++.TP + .B \-soft_dquotes + toggles emulation of the old Netscape and Mosaic bug which + treated \*(``>\*('' as a co-terminator for double-quotes and tags. +diff --git a/src/LYGlobalDefs.h b/src/LYGlobalDefs.h +index e1203c02..577a5948 100644 +--- a/src/LYGlobalDefs.h ++++ b/src/LYGlobalDefs.h +@@ -441,6 +441,7 @@ extern "C" { + extern BOOLEAN debug_display_partial; /* show with MessageSecs delay */ + extern BOOLEAN display_partial_flag; /* permanent flag, not mutable */ + #endif ++ extern char *socks5_proxy; + extern char *form_post_data; /* User data for post form */ + extern char *form_get_data; /* User data for get form */ + extern char *http_error_file; /* Place HTTP status code in this file */ +diff --git a/src/LYMain.c b/src/LYMain.c +index 36c22ed5..46b8cee8 100644 +--- a/src/LYMain.c ++++ b/src/LYMain.c +@@ -635,6 +635,8 @@ BOOLEAN debug_display_partial = FALSE; /* Show with MessageSecs delay */ + int partial_threshold = -1; /* # of lines to be d/l'ed until we repaint */ + #endif + ++char *socks5_proxy = NULL; ++ + BOOLEAN LYNonRestartingSIGWINCH = FALSE; + BOOLEAN LYReuseTempfiles = FALSE; + BOOLEAN LYUseBuiltinSuffixes = TRUE; +@@ -3910,6 +3912,10 @@ saves session to that file on exit" + "toggles display of transfer rate" + ), + #endif ++ PARSE_STR( ++ "socks5-proxy", 2|NEED_LYSTRING_ARG, socks5_proxy, ++ "=URL\n(via which) SOCKS5 proxy to connect (unrelated to -nosocks!)" ++ ), + PARSE_SET( + "soft_dquotes", 4|TOGGLE_ARG, soft_dquotes, + "toggles emulation of the old Netscape and Mosaic\n\ diff --git a/lynx/default/conf.sh b/lynx/default/conf.sh new file mode 100755 index 0000000..1870098 --- /dev/null +++ b/lynx/default/conf.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +set -e + +# out-of-tree build because we can. +cd ../build + +../src/configure \ + --with-ssl \ + --with-screen=ncurses \ + --with-zlib \ + --with-bzlib \ + --prefix= + +## explanation +# +# --with-ssl: enable ssl. +# +# --with-screen: use ncurses for the tui. +# +# --with-zlib --with-bzlib: support zlib and bz2 compression. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/lynx/default/deps b/lynx/default/deps new file mode 100644 index 0000000..9ca3322 --- /dev/null +++ b/lynx/default/deps @@ -0,0 +1,18 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +ncurses +libressl +zlib +bzip2 +gzip +xz +perl diff --git a/lynx/default/inst.sh b/lynx/default/inst.sh new file mode 100755 index 0000000..bedbc06 --- /dev/null +++ b/lynx/default/inst.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +cd ../build + +make -j$(nproc) install diff --git a/lynx/default/make.sh b/lynx/default/make.sh new file mode 100755 index 0000000..0bcade5 --- /dev/null +++ b/lynx/default/make.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +cd ../build + +make -j$(nproc) diff --git a/mako/default/conf.sh b/mako/default/conf.sh new file mode 100644 index 0000000..d3c56dd --- /dev/null +++ b/mako/default/conf.sh @@ -0,0 +1,45 @@ +#!/bin/sh -e + +# Install python-mako which is solely needed for mesa +# and thus contained in this build. +{ + cd mako + + python3 setup.py build + python3 setup.py install \ + --prefix=/usr \ + --root="$PWD/dist" + + # Use a glob to avoid having to figure out the Python + # version for the path below. + cd dist/usr/lib/python*/site-packages + + # Set the PYTHONPATH so python knows where to find mako. + # The one liner simply appends the existing path and + # handles the case where an unset PYTHONPATH breaks + # python as it will only contain our new addition. + PYTHONPATH=$PWD:$(python -c "import sys; print(':'.join(sys.path))") + + cd -; cd .. +} + +export PYTHONPATH +export DESTDIR="$1" +export CFLAGS="$CFLAGS -DGLX_X86_READONLY_TEXT" + +# Fix issues with musl and firefox. +# https://bugs.freedesktop.org/show_bug.cgi?id=35268 +# https://github.com/mesa3d/mesa/commit/9f37c9903b87f86a533bfaffa72f0ecb285b02b2 +sed -i "/pre_args += '-DUSE_ELF_TLS'/d" meson.build + +meson \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --buildtype=release \ + -Dplatforms=x11,drm \ + . output + +ninja -C output +ninja -C output install diff --git a/mako/default/deps b/mako/default/deps new file mode 100644 index 0000000..6d7cbdb --- /dev/null +++ b/mako/default/deps @@ -0,0 +1,32 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +bison +expat +flex +libX11 +libXdamage +libXext +libXrandr +libXrender +libXxf86vm +libdrm +libelf +libxcb +libxshmfence +linux-headers +llvm +m4 +meson +pkgconf +python +xorgproto +zlib diff --git a/mako/default/inst.sh b/mako/default/inst.sh new file mode 100644 index 0000000..d3c56dd --- /dev/null +++ b/mako/default/inst.sh @@ -0,0 +1,45 @@ +#!/bin/sh -e + +# Install python-mako which is solely needed for mesa +# and thus contained in this build. +{ + cd mako + + python3 setup.py build + python3 setup.py install \ + --prefix=/usr \ + --root="$PWD/dist" + + # Use a glob to avoid having to figure out the Python + # version for the path below. + cd dist/usr/lib/python*/site-packages + + # Set the PYTHONPATH so python knows where to find mako. + # The one liner simply appends the existing path and + # handles the case where an unset PYTHONPATH breaks + # python as it will only contain our new addition. + PYTHONPATH=$PWD:$(python -c "import sys; print(':'.join(sys.path))") + + cd -; cd .. +} + +export PYTHONPATH +export DESTDIR="$1" +export CFLAGS="$CFLAGS -DGLX_X86_READONLY_TEXT" + +# Fix issues with musl and firefox. +# https://bugs.freedesktop.org/show_bug.cgi?id=35268 +# https://github.com/mesa3d/mesa/commit/9f37c9903b87f86a533bfaffa72f0ecb285b02b2 +sed -i "/pre_args += '-DUSE_ELF_TLS'/d" meson.build + +meson \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --buildtype=release \ + -Dplatforms=x11,drm \ + . output + +ninja -C output +ninja -C output install diff --git a/mako/default/kiss.sh b/mako/default/kiss.sh new file mode 100644 index 0000000..d3c56dd --- /dev/null +++ b/mako/default/kiss.sh @@ -0,0 +1,45 @@ +#!/bin/sh -e + +# Install python-mako which is solely needed for mesa +# and thus contained in this build. +{ + cd mako + + python3 setup.py build + python3 setup.py install \ + --prefix=/usr \ + --root="$PWD/dist" + + # Use a glob to avoid having to figure out the Python + # version for the path below. + cd dist/usr/lib/python*/site-packages + + # Set the PYTHONPATH so python knows where to find mako. + # The one liner simply appends the existing path and + # handles the case where an unset PYTHONPATH breaks + # python as it will only contain our new addition. + PYTHONPATH=$PWD:$(python -c "import sys; print(':'.join(sys.path))") + + cd -; cd .. +} + +export PYTHONPATH +export DESTDIR="$1" +export CFLAGS="$CFLAGS -DGLX_X86_READONLY_TEXT" + +# Fix issues with musl and firefox. +# https://bugs.freedesktop.org/show_bug.cgi?id=35268 +# https://github.com/mesa3d/mesa/commit/9f37c9903b87f86a533bfaffa72f0ecb285b02b2 +sed -i "/pre_args += '-DUSE_ELF_TLS'/d" meson.build + +meson \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --buildtype=release \ + -Dplatforms=x11,drm \ + . output + +ninja -C output +ninja -C output install diff --git a/mako/default/make.sh b/mako/default/make.sh new file mode 100644 index 0000000..d3c56dd --- /dev/null +++ b/mako/default/make.sh @@ -0,0 +1,45 @@ +#!/bin/sh -e + +# Install python-mako which is solely needed for mesa +# and thus contained in this build. +{ + cd mako + + python3 setup.py build + python3 setup.py install \ + --prefix=/usr \ + --root="$PWD/dist" + + # Use a glob to avoid having to figure out the Python + # version for the path below. + cd dist/usr/lib/python*/site-packages + + # Set the PYTHONPATH so python knows where to find mako. + # The one liner simply appends the existing path and + # handles the case where an unset PYTHONPATH breaks + # python as it will only contain our new addition. + PYTHONPATH=$PWD:$(python -c "import sys; print(':'.join(sys.path))") + + cd -; cd .. +} + +export PYTHONPATH +export DESTDIR="$1" +export CFLAGS="$CFLAGS -DGLX_X86_READONLY_TEXT" + +# Fix issues with musl and firefox. +# https://bugs.freedesktop.org/show_bug.cgi?id=35268 +# https://github.com/mesa3d/mesa/commit/9f37c9903b87f86a533bfaffa72f0ecb285b02b2 +sed -i "/pre_args += '-DUSE_ELF_TLS'/d" meson.build + +meson \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --buildtype=release \ + -Dplatforms=x11,drm \ + . output + +ninja -C output +ninja -C output install diff --git a/mesa-dynamic/default/conf.sh b/mesa-dynamic/default/conf.sh new file mode 100755 index 0000000..125632c --- /dev/null +++ b/mesa-dynamic/default/conf.sh @@ -0,0 +1,35 @@ +#!/bin/sh -e + +# Fix issues with musl and firefox. +# https://bugs.freedesktop.org/show_bug.cgi?id=35268 +# https://github.com/mesa3d/mesa/commit/9f37c9903b87f86a533bfaffa72f0ecb285b02b2 +sed -i "/pre_args += '-DUSE_ELF_TLS'/d" meson.build + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson \ + --prefix="$PREFIX" \ + --sysconfdir=/etc \ + --mandir="$PREFIX/share/man" \ + --localstatedir=/var \ + --buildtype=release \ + -Dplatforms=wayland,drm,surfaceless \ + -Dllvm=true \ + -Dshared-glapi=true \ + -Dshared-llvm=true \ + -Ddri-drivers= \ + -Dgallium-drivers=radeonsi,swrast \ + -Dvulkan-drivers=amd \ + -Degl=true \ + -Dgbm=true \ + -Dgles1=false \ + -Dgles2=true \ + -Dglx=disabled \ + -Dosmesa=gallium \ + -Dgallium-nine=false \ + ../build + #-Dgallium-xa=false \ + #-Dgallium-vdpau=false \ + #-Dgallium-va=false \ + #-Dgallium-xvmc=false \ diff --git a/mesa-dynamic/default/conf.sh.bak b/mesa-dynamic/default/conf.sh.bak new file mode 100755 index 0000000..df4b15e --- /dev/null +++ b/mesa-dynamic/default/conf.sh.bak @@ -0,0 +1,38 @@ +#!/bin/sh -e + +# Fix issues with musl and firefox. +# https://bugs.freedesktop.org/show_bug.cgi?id=35268 +# https://github.com/mesa3d/mesa/commit/9f37c9903b87f86a533bfaffa72f0ecb285b02b2 +sed -i "/pre_args += '-DUSE_ELF_TLS'/d" meson.build + +#CFLAGS="$SHARED_CFLAGS -DGLX_X86_READONLY_TEXT" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson \ + --prefix="$PREFIX" \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --buildtype=release \ + -Dplatforms=drm,wayland,surfaceless \ + -Dllvm=true \ + -Dshared-glapi=true \ + -Dshared-llvm=true \ + -Ddri-drivers= \ + -Dgallium-drivers=radeonsi,swrast \ + -Dvulkan-drivers=amd \ + -Degl=true \ + -Dgbm=true \ + -Dgles1=false \ + -Dgles2=true \ + -Dgles3=true \ + -Dglx=disabled \ + -Dosmesa=gallium \ + -Dgallium-nine=false \ + ../build + #-Dgallium-xa=false \ + #-Dgallium-vdpau=false \ + #-Dgallium-va=false \ + #-Dgallium-xvmc=false \ + #-Dopengl=true \ diff --git a/mesa-dynamic/default/conf.sh.bak2 b/mesa-dynamic/default/conf.sh.bak2 new file mode 100755 index 0000000..8ab9629 --- /dev/null +++ b/mesa-dynamic/default/conf.sh.bak2 @@ -0,0 +1,24 @@ +#!/bin/sh -e + +# Fix issues with musl and firefox. +# https://bugs.freedesktop.org/show_bug.cgi?id=35268 +# https://github.com/mesa3d/mesa/commit/9f37c9903b87f86a533bfaffa72f0ecb285b02b2 +sed -i "/pre_args += '-DUSE_ELF_TLS'/d" meson.build + +CFLAGS="$CFLAGS -DGLX_X86_READONLY_TEXT" \ +meson \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --buildtype=release \ + -Ddri-drivers= \ + -Dgallium-drivers=radeonsi \ + -Dvulkan-drivers=amd \ + -Dplatforms=drm,wayland \ + -Dglx=disabled \ + -Dgles1=false \ + -Dgles2=true \ + -Dgbm=true \ + -Degl=true \ + ../build diff --git a/mesa-dynamic/default/deps b/mesa-dynamic/default/deps new file mode 100644 index 0000000..24c0876 --- /dev/null +++ b/mesa-dynamic/default/deps @@ -0,0 +1,34 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +zlib +m4 +bison +expat +flex +cmake +samurai +pkgconf +libffi +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +py3-mako +meson +libdrm-dynamic +llvm +libelf +wayland +wayland-protocols diff --git a/mesa-dynamic/default/deps.bak b/mesa-dynamic/default/deps.bak new file mode 100644 index 0000000..2875324 --- /dev/null +++ b/mesa-dynamic/default/deps.bak @@ -0,0 +1,41 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +zlib +m4 +bison +expat +flex +cmake +samurai +pkgconf +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +py3-mako +meson +xorgproto +libx11 +libxdamage +libxext +libxrandr +libxrender +libxxf86vm +libdrm +libelf +libxau +libxcb +libxshmfence +libxfixes diff --git a/mesa-dynamic/default/env.sh b/mesa-dynamic/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/mesa-dynamic/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/mesa-dynamic/default/inst.sh b/mesa-dynamic/default/inst.sh new file mode 100755 index 0000000..5013ba7 --- /dev/null +++ b/mesa-dynamic/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build install diff --git a/mesa-dynamic/default/make.sh b/mesa-dynamic/default/make.sh new file mode 100755 index 0000000..43f1628 --- /dev/null +++ b/mesa-dynamic/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build diff --git a/mesa-dynamic/default/patches-available/0100-adjust-cache-deflate-buffer.patch b/mesa-dynamic/default/patches-available/0100-adjust-cache-deflate-buffer.patch new file mode 100644 index 0000000..3c116cb --- /dev/null +++ b/mesa-dynamic/default/patches-available/0100-adjust-cache-deflate-buffer.patch @@ -0,0 +1,16 @@ +diff -ru mesa-18.1.7.orig/src/util/disk_cache.c mesa-18.1.7/src/util/disk_cache.c +--- mesa-18.1.7.orig/src/util/disk_cache.c 2018-08-24 19:25:19.000000000 +0300 ++++ mesa-18.1.7/src/util/disk_cache.c 2018-12-14 13:59:15.433631846 +0200 +@@ -721,8 +721,11 @@ + /* From the zlib docs: + * "If the memory is available, buffers sizes on the order of 128K or 256K + * bytes should be used." ++ * ++ * But that is performance optimization for large files. To keep stack usage ++ * in sensible amount (wrt. musl default stack) we use smaller stack on Alpine. + */ +-#define BUFSIZE 256 * 1024 ++#define BUFSIZE 4 * 1024 + + /** + * Compresses cache entry in memory and writes it to disk. Returns the size diff --git a/mesa-dynamic/default/patches-available/0200-musl-fix-includes.patch b/mesa-dynamic/default/patches-available/0200-musl-fix-includes.patch new file mode 100644 index 0000000..8553d44 --- /dev/null +++ b/mesa-dynamic/default/patches-available/0200-musl-fix-includes.patch @@ -0,0 +1,13 @@ +diff --git a/src/util/rand_xor.c b/src/util/rand_xor.c +index 81b64f1ea71..14e6c9d27c3 100644 +--- a/src/util/rand_xor.c ++++ b/src/util/rand_xor.c +@@ -27,6 +27,8 @@ + #if !DETECT_OS_WINDOWS + #if defined(HAVE_GETRANDOM) + #include ++#include ++#include + #endif + #include + #include diff --git a/mesa-dynamic/default/patches-available/0300-add-use-elf-tls.patch b/mesa-dynamic/default/patches-available/0300-add-use-elf-tls.patch new file mode 100644 index 0000000..f54b0b0 --- /dev/null +++ b/mesa-dynamic/default/patches-available/0300-add-use-elf-tls.patch @@ -0,0 +1,28 @@ +diff --git a/meson.build b/meson.build +index 76f72a9df7c..2802467f70e 100644 +--- a/meson.build ++++ b/meson.build +@@ -437,7 +437,8 @@ endif + + # Android uses emutls for versions <= P/28. For USE_ELF_TLS we need ELF TLS. + use_elf_tls = false +-if not ['windows', 'freebsd', 'openbsd'].contains(host_machine.system()) and (not with_platform_android or get_option('platform-sdk-version') >= 29) ++with_use_elf_tls = get_option('use-elf-tls') ++if with_use_elf_tls and not ['windows', 'freebsd'].contains(host_machine.system()) and (not with_platform_android or get_option('platform-sdk-version') >= 29) + pre_args += '-DUSE_ELF_TLS' + use_elf_tls = true + endif +diff --git a/meson_options.txt b/meson_options.txt +index bf031eeb11f..46bd7c4d898 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -406,3 +406,9 @@ option( + value : 'auto', + description : 'Use ZSTD instead of ZLIB in some cases.' + ) ++option( ++ 'use-elf-tls', ++ type : 'boolean', ++ value : false, ++ description : 'Build support for initial-exec TLS model' ++) diff --git a/mesa-dynamic/default/patches-available/0400-disable-rgb10-by-default.patch b/mesa-dynamic/default/patches-available/0400-disable-rgb10-by-default.patch new file mode 100644 index 0000000..8612232 --- /dev/null +++ b/mesa-dynamic/default/patches-available/0400-disable-rgb10-by-default.patch @@ -0,0 +1,25 @@ +From b33c8b56abcc4837f96f7f106b108681858482e0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20=C3=85dahl?= +Date: Tue, 24 Apr 2018 09:46:41 +0200 +Subject: [PATCH] gallium: Disable rgb10 configs by default + +Applications tend to not handle rgb10 configs very well, so lets +disable it for now. + +https://bugzilla.redhat.com/show_bug.cgi?id=1560481 +--- + src/gallium/auxiliary/pipe-loader/driinfo_gallium.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h b/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h +index 21dc599dc2..23f9194149 100644 +--- a/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h ++++ b/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h +@@ -39,6 +39,6 @@ DRI_CONF_SECTION_MISCELLANEOUS + DRI_CONF_ALWAYS_HAVE_DEPTH_BUFFER("false") + DRI_CONF_GLSL_ZERO_INIT("false") + DRI_CONF_VS_POSITION_ALWAYS_INVARIANT("false") +- DRI_CONF_ALLOW_RGB10_CONFIGS("true") ++ DRI_CONF_ALLOW_RGB10_CONFIGS("false") + DRI_CONF_ALLOW_FP16_CONFIGS("false") + DRI_CONF_SECTION_END diff --git a/mesa-dynamic/default/patches-available/0500-radeonsi-On-Aarch64-force-persistent-buffers-to-GTT.patch b/mesa-dynamic/default/patches-available/0500-radeonsi-On-Aarch64-force-persistent-buffers-to-GTT.patch new file mode 100644 index 0000000..ea855f6 --- /dev/null +++ b/mesa-dynamic/default/patches-available/0500-radeonsi-On-Aarch64-force-persistent-buffers-to-GTT.patch @@ -0,0 +1,38 @@ +From d72aa8ae74ffb7329003f9f23ffa05833af951ab Mon Sep 17 00:00:00 2001 +From: Jon Nettleton +Date: Fri, 14 Aug 2020 13:36:08 +0200 +Subject: [PATCH] radeonsi: On Aarch64 force persistent buffers to GTT + +This fixes a glamore corruption issue on the HoneyComb and by +internet reports should also fix problems seen on Huaweii +Kunpeng hardware. + +The root cause of the corruption needs to be worked out, but +this patch also adds a noticable performance improvement. The +aquarium webgl demo under chromium increases from 39-49 FPS +when 5000 fish being rendered is selected. Glmark scores also +improve by ~200 with no specific tests showing any regression. + +Signed-off-by: Jon Nettleton +--- + src/gallium/drivers/radeonsi/si_buffer.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/gallium/drivers/radeonsi/si_buffer.c b/src/gallium/drivers/radeonsi/si_buffer.c +index 6b58aebee2d..c9e983367a0 100644 +--- a/src/gallium/drivers/radeonsi/si_buffer.c ++++ b/src/gallium/drivers/radeonsi/si_buffer.c +@@ -151,6 +151,11 @@ void si_init_resource_fields(struct si_screen *sscreen, struct si_resource *res, + */ + if (!sscreen->info.kernel_flushes_hdp_before_ib || !sscreen->info.is_amdgpu) + res->domains = RADEON_DOMAIN_GTT; ++ ++#if defined(PIPE_ARCH_AARCH64) ++ if (size <= 1024 * 512) ++ res->domains = RADEON_DOMAIN_GTT; ++#endif + } + + /* Tiled textures are unmappable. Always put them in VRAM. */ +-- +2.26.2 diff --git a/mesa-dynamic/default/patches-enabled/0100-adjust-cache-deflate-buffer.patch b/mesa-dynamic/default/patches-enabled/0100-adjust-cache-deflate-buffer.patch new file mode 120000 index 0000000..a2d615e --- /dev/null +++ b/mesa-dynamic/default/patches-enabled/0100-adjust-cache-deflate-buffer.patch @@ -0,0 +1 @@ +../patches-available/0100-adjust-cache-deflate-buffer.patch \ No newline at end of file diff --git a/mesa-dynamic/default/patches-enabled/0200-musl-fix-includes.patch b/mesa-dynamic/default/patches-enabled/0200-musl-fix-includes.patch new file mode 120000 index 0000000..f01f855 --- /dev/null +++ b/mesa-dynamic/default/patches-enabled/0200-musl-fix-includes.patch @@ -0,0 +1 @@ +../patches-available/0200-musl-fix-includes.patch \ No newline at end of file diff --git a/mesa-dynamic/default/patches-enabled/0300-add-use-elf-tls.patch b/mesa-dynamic/default/patches-enabled/0300-add-use-elf-tls.patch new file mode 120000 index 0000000..98018ef --- /dev/null +++ b/mesa-dynamic/default/patches-enabled/0300-add-use-elf-tls.patch @@ -0,0 +1 @@ +../patches-available/0300-add-use-elf-tls.patch \ No newline at end of file diff --git a/mesa-dynamic/default/patches-enabled/0400-disable-rgb10-by-default.patch b/mesa-dynamic/default/patches-enabled/0400-disable-rgb10-by-default.patch new file mode 120000 index 0000000..e4a64a8 --- /dev/null +++ b/mesa-dynamic/default/patches-enabled/0400-disable-rgb10-by-default.patch @@ -0,0 +1 @@ +../patches-available/0400-disable-rgb10-by-default.patch \ No newline at end of file diff --git a/mesa-dynamic/default/patches-enabled/0500-radeonsi-On-Aarch64-force-persistent-buffers-to-GTT.patch b/mesa-dynamic/default/patches-enabled/0500-radeonsi-On-Aarch64-force-persistent-buffers-to-GTT.patch new file mode 120000 index 0000000..ad425ca --- /dev/null +++ b/mesa-dynamic/default/patches-enabled/0500-radeonsi-On-Aarch64-force-persistent-buffers-to-GTT.patch @@ -0,0 +1 @@ +../patches-available/0500-radeonsi-On-Aarch64-force-persistent-buffers-to-GTT.patch \ No newline at end of file diff --git a/mesa/default/conf.sh b/mesa/default/conf.sh new file mode 100755 index 0000000..d3bed8c --- /dev/null +++ b/mesa/default/conf.sh @@ -0,0 +1,23 @@ +#!/bin/sh -e + +# Fix issues with musl and firefox. +# https://bugs.freedesktop.org/show_bug.cgi?id=35268 +# https://github.com/mesa3d/mesa/commit/9f37c9903b87f86a533bfaffa72f0ecb285b02b2 +sed -i "/pre_args += '-DUSE_ELF_TLS'/d" meson.build + +CFLAGS="$CFLAGS -DGLX_X86_READONLY_TEXT" \ +meson \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --buildtype=release \ + -Dplatforms=drm,wayland \ + -Ddri-drivers=radeonsi \ + -Dgallium-drivers=radeonsi \ + -Dvulkan-drivers=amd \ + -Degl=true \ + -Dgbm=true \ + -Dgles2=true \ + -Dglx=disabled \ + ../build diff --git a/mesa/default/deps b/mesa/default/deps new file mode 100644 index 0000000..0ea23c4 --- /dev/null +++ b/mesa/default/deps @@ -0,0 +1,31 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +zlib +m4 +bison +expat +flex +cmake +samurai +pkgconf +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +py3-mako +meson +libdrm +llvm +libelf diff --git a/mesa/default/deps.bak b/mesa/default/deps.bak new file mode 100644 index 0000000..2875324 --- /dev/null +++ b/mesa/default/deps.bak @@ -0,0 +1,41 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +zlib +m4 +bison +expat +flex +cmake +samurai +pkgconf +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +py3-mako +meson +xorgproto +libx11 +libxdamage +libxext +libxrandr +libxrender +libxxf86vm +libdrm +libelf +libxau +libxcb +libxshmfence +libxfixes diff --git a/mesa/default/inst.sh b/mesa/default/inst.sh new file mode 100755 index 0000000..5013ba7 --- /dev/null +++ b/mesa/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build install diff --git a/mesa/default/make.sh b/mesa/default/make.sh new file mode 100755 index 0000000..43f1628 --- /dev/null +++ b/mesa/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build diff --git a/mesa/default/patch b/mesa/default/patch new file mode 100644 index 0000000..6124313 --- /dev/null +++ b/mesa/default/patch @@ -0,0 +1,477 @@ +diff -ur 20.1.7/src/amd/vulkan/meson.build b/src/amd/vulkan/meson.build +--- 20.1.7/src/amd/vulkan/meson.build 2020-09-02 19:53:54.240416500 +0000 ++++ b/src/amd/vulkan/meson.build 2020-09-24 16:27:54.250000000 +0000 +@@ -167,7 +167,7 @@ + libvulkan_radeon_link_depends += files('vulkan.sym') + endif + +-libvulkan_radeon = shared_library( ++libvulkan_radeon = static_library( + 'vulkan_radeon', + [libradv_files, radv_entrypoints, radv_extensions_c, amd_vk_format_table_c, sha1_h, radv_gfx10_format_table_h], + include_directories : [ +diff -ur 20.1.7/src/broadcom/drm-shim/meson.build b/src/broadcom/drm-shim/meson.build +--- 20.1.7/src/broadcom/drm-shim/meson.build 2020-09-02 19:53:54.297416400 +0000 ++++ b/src/broadcom/drm-shim/meson.build 2020-09-24 16:27:54.250000000 +0000 +@@ -18,7 +18,7 @@ + # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + # SOFTWARE. + +-libv3d_noop_drm_shim = shared_library( ++libv3d_noop_drm_shim = static_library( + ['v3d_noop_drm_shim'], + 'v3d_noop.c', + include_directories: [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux], +@@ -47,7 +47,7 @@ + ) + endforeach + +- libv3d_drm_shim = shared_library( ++ libv3d_drm_shim = static_library( + ['v3d_drm_shim'], + [ + 'v3d.c', +diff -ur 20.1.7/src/egl/meson.build b/src/egl/meson.build +--- 20.1.7/src/egl/meson.build 2020-09-02 19:53:54.400416000 +0000 ++++ b/src/egl/meson.build 2020-09-24 16:27:54.280000000 +0000 +@@ -158,7 +158,7 @@ + ) + endif + +-libegl = shared_library( ++libegl = static_library( + egl_lib_name, + files_egl, + c_args : [ +diff -ur 20.1.7/src/etnaviv/drm-shim/meson.build b/src/etnaviv/drm-shim/meson.build +--- 20.1.7/src/etnaviv/drm-shim/meson.build 2020-09-02 19:53:54.401416000 +0000 ++++ b/src/etnaviv/drm-shim/meson.build 2020-09-24 16:27:54.280000000 +0000 +@@ -20,7 +20,7 @@ + # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + # IN THE SOFTWARE. + +-libetnaviv_noop_drm_shim = shared_library( ++libetnaviv_noop_drm_shim = static_library( + 'etnaviv_noop_drm_shim', + 'etnaviv_noop.c', + include_directories: [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux], +diff -ur 20.1.7/src/freedreno/drm-shim/meson.build b/src/freedreno/drm-shim/meson.build +--- 20.1.7/src/freedreno/drm-shim/meson.build 2020-09-02 19:53:54.497415500 +0000 ++++ b/src/freedreno/drm-shim/meson.build 2020-09-24 16:27:54.250000000 +0000 +@@ -19,7 +19,7 @@ + # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + # IN THE SOFTWARE. + +-libfreedreno_noop_drm_shim = shared_library( ++libfreedreno_noop_drm_shim = static_library( + ['freedreno_noop_drm_shim'], + 'freedreno_noop.c', + include_directories: [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux], +diff -ur 20.1.7/src/freedreno/vulkan/meson.build b/src/freedreno/vulkan/meson.build +--- 20.1.7/src/freedreno/vulkan/meson.build 2020-09-02 19:53:54.513415600 +0000 ++++ b/src/freedreno/vulkan/meson.build 2020-09-24 16:27:54.250000000 +0000 +@@ -97,7 +97,7 @@ + tu_flags += '-DVK_USE_PLATFORM_XLIB_XRANDR_EXT' + endif + +-libvulkan_freedreno = shared_library( ++libvulkan_freedreno = static_library( + 'vulkan_freedreno', + [libtu_files, tu_entrypoints, tu_extensions_c, freedreno_xml_header_files], + include_directories : [ +diff -ur 20.1.7/src/gallium/drivers/swr/meson.build b/src/gallium/drivers/swr/meson.build +--- 20.1.7/src/gallium/drivers/swr/meson.build 2020-09-02 19:53:54.878414200 +0000 ++++ b/src/gallium/drivers/swr/meson.build 2020-09-24 16:27:54.270000000 +0000 +@@ -225,7 +225,7 @@ + + swr_defines += '-DHAVE_SWR_SKX' + if shared_swr +- swr_arch_libs += shared_library( ++ swr_arch_libs += static_library( + 'swrSKX', + [files_swr_common, files_swr_arch], + cpp_args : [ +@@ -264,7 +264,7 @@ + + swr_defines += '-DHAVE_SWR_KNL' + if shared_swr +- swr_arch_libs += shared_library( ++ swr_arch_libs += static_library( + 'swrKNL', + [files_swr_common, files_swr_arch], + cpp_args : [ +@@ -308,7 +308,7 @@ + + swr_defines += '-DHAVE_SWR_AVX2' + if shared_swr +- swr_arch_libs += shared_library( ++ swr_arch_libs += static_library( + 'swrAVX2', + [files_swr_common, files_swr_arch], + cpp_args : [ +@@ -340,7 +340,7 @@ + if with_swr_arches.contains('avx') + swr_defines += '-DHAVE_SWR_AVX' + if shared_swr +- swr_arch_libs += shared_library( ++ swr_arch_libs += static_library( + 'swrAVX', + [files_swr_common, files_swr_arch], + cpp_args : [ +diff -ur 20.1.7/src/gallium/targets/d3dadapter9/meson.build b/src/gallium/targets/d3dadapter9/meson.build +--- 20.1.7/src/gallium/targets/d3dadapter9/meson.build 2020-09-02 19:53:55.421412000 +0000 ++++ b/src/gallium/targets/d3dadapter9/meson.build 2020-09-24 16:27:54.260000000 +0000 +@@ -46,7 +46,7 @@ + gallium_nine_link_with += libgalliumvl_stub + endif + +-libgallium_nine = shared_library( ++libgallium_nine = static_library( + 'd3dadapter9', + files('description.c', 'getproc.c', 'drm.c'), + include_directories : [ +diff -ur 20.1.7/src/gallium/targets/dri/meson.build b/src/gallium/targets/dri/meson.build +--- 20.1.7/src/gallium/targets/dri/meson.build 2020-09-02 19:53:55.422412000 +0000 ++++ b/src/gallium/targets/dri/meson.build 2020-09-24 16:27:54.260000000 +0000 +@@ -37,7 +37,7 @@ + gallium_dri_link_depends += files('../dri-vdpau.dyn') + endif + +-libgallium_dri = shared_library( ++libgallium_dri = static_library( + 'gallium_dri', + files('target.c'), + include_directories : [ +diff -ur 20.1.7/src/gallium/targets/graw-gdi/meson.build b/src/gallium/targets/graw-gdi/meson.build +--- 20.1.7/src/gallium/targets/graw-gdi/meson.build 2020-09-02 19:53:55.422412000 +0000 ++++ b/src/gallium/targets/graw-gdi/meson.build 2020-09-24 16:27:54.260000000 +0000 +@@ -18,7 +18,7 @@ + # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + # SOFTWARE. + +-libgraw_gdi = shared_library( ++libgraw_gdi = static_library( + 'graw', + 'graw_gdi.c', + c_args : [c_vis_args, c_msvc_compat_args], +diff -ur 20.1.7/src/gallium/targets/graw-null/meson.build b/src/gallium/targets/graw-null/meson.build +--- 20.1.7/src/gallium/targets/graw-null/meson.build 2020-09-02 19:53:55.422412000 +0000 ++++ b/src/gallium/targets/graw-null/meson.build 2020-09-24 16:27:54.250000000 +0000 +@@ -25,7 +25,7 @@ + include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux], + ) + +-libgraw_null = shared_library( ++libgraw_null = static_library( + 'graw_null', + ['graw_null.c'], + c_args : [c_vis_args, c_msvc_compat_args], +diff -ur 20.1.7/src/gallium/targets/graw-xlib/meson.build b/src/gallium/targets/graw-xlib/meson.build +--- 20.1.7/src/gallium/targets/graw-xlib/meson.build 2020-09-02 19:53:55.422412000 +0000 ++++ b/src/gallium/targets/graw-xlib/meson.build 2020-09-24 16:27:54.260000000 +0000 +@@ -18,7 +18,7 @@ + # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + # SOFTWARE. + +-libgraw_xlib = shared_library( ++libgraw_xlib = static_library( + 'graw_xlib', + ['graw_xlib.c'], + c_args : [c_vis_args], +diff -ur 20.1.7/src/gallium/targets/haiku-softpipe/meson.build b/src/gallium/targets/haiku-softpipe/meson.build +--- 20.1.7/src/gallium/targets/haiku-softpipe/meson.build 2020-09-02 19:53:55.499411600 +0000 ++++ b/src/gallium/targets/haiku-softpipe/meson.build 2020-09-24 16:27:54.260000000 +0000 +@@ -18,7 +18,7 @@ + # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + # SOFTWARE. + +-libswpipe = shared_library( ++libswpipe = static_library( + 'swpipe', + files('SoftwareRenderer.cpp', 'GalliumContext.cpp'), + include_directories : [ +diff -ur 20.1.7/src/gallium/targets/libgl-gdi/meson.build b/src/gallium/targets/libgl-gdi/meson.build +--- 20.1.7/src/gallium/targets/libgl-gdi/meson.build 2020-09-02 19:53:55.499411600 +0000 ++++ b/src/gallium/targets/libgl-gdi/meson.build 2020-09-24 16:27:54.260000000 +0000 +@@ -26,7 +26,7 @@ + ogldef = files('../../state_trackers/wgl/opengl32.def')[0] + endif + +-libopengl32 = shared_library( ++libopengl32 = static_library( + 'opengl32', + ['libgl_gdi.c'], + vs_module_defs : ogldef, +diff -ur 20.1.7/src/gallium/targets/libgl-xlib/meson.build b/src/gallium/targets/libgl-xlib/meson.build +--- 20.1.7/src/gallium/targets/libgl-xlib/meson.build 2020-09-02 19:53:55.510411700 +0000 ++++ b/src/gallium/targets/libgl-xlib/meson.build 2020-09-24 16:27:54.250000000 +0000 +@@ -37,7 +37,7 @@ + gallium_xlib_link_with += libglapi + endif + +-libgl = shared_library( ++libgl = static_library( + 'GL', + files('xlib.c'), + include_directories : [ +diff -ur 20.1.7/src/gallium/targets/omx/meson.build b/src/gallium/targets/omx/meson.build +--- 20.1.7/src/gallium/targets/omx/meson.build 2020-09-02 19:53:55.512411600 +0000 ++++ b/src/gallium/targets/omx/meson.build 2020-09-24 16:27:54.250000000 +0000 +@@ -30,7 +30,7 @@ + omx_link_depends += files('omx.sym') + endif + +-libomx_gallium = shared_library( ++libomx_gallium = static_library( + 'omx_mesa', + 'target.c', + c_args : c_vis_args, +diff -ur 20.1.7/src/gallium/targets/opencl/meson.build b/src/gallium/targets/opencl/meson.build +--- 20.1.7/src/gallium/targets/opencl/meson.build 2020-09-02 19:53:55.512411600 +0000 ++++ b/src/gallium/targets/opencl/meson.build 2020-09-24 16:27:54.260000000 +0000 +@@ -85,7 +85,7 @@ + endif + endif + +-libopencl = shared_library( ++libopencl = static_library( + opencl_libname, + [], + link_args : [ld_args_gc_sections, opencl_link_args], +diff -ur 20.1.7/src/gallium/targets/osmesa/meson.build b/src/gallium/targets/osmesa/meson.build +--- 20.1.7/src/gallium/targets/osmesa/meson.build 2020-09-02 19:53:55.512411600 +0000 ++++ b/src/gallium/targets/osmesa/meson.build 2020-09-24 16:27:54.260000000 +0000 +@@ -38,7 +38,7 @@ + osmesa_def = 'osmesa.def' + endif + +-libosmesa = shared_library( ++libosmesa = static_library( + osmesa_lib_name, + 'target.c', + c_args : [c_vis_args], +diff -ur 20.1.7/src/gallium/targets/pipe-loader/meson.build b/src/gallium/targets/pipe-loader/meson.build +--- 20.1.7/src/gallium/targets/pipe-loader/meson.build 2020-09-02 19:53:55.521411700 +0000 ++++ b/src/gallium/targets/pipe-loader/meson.build 2020-09-24 16:27:54.260000000 +0000 +@@ -70,7 +70,7 @@ + + foreach x : pipe_loaders + if x[0] +- shared_library( ++ static_library( + 'pipe_@0@'.format(x[1]), + 'pipe_@0@.c'.format(x[1]), + c_args : [pipe_loader_comp_args, c_vis_args], +diff -ur 20.1.7/src/gallium/targets/va/meson.build b/src/gallium/targets/va/meson.build +--- 20.1.7/src/gallium/targets/va/meson.build 2020-09-02 19:53:55.530411500 +0000 ++++ b/src/gallium/targets/va/meson.build 2020-09-24 16:27:54.250000000 +0000 +@@ -31,7 +31,7 @@ + va_link_depends += files('va.sym') + endif + +-libva_gallium = shared_library( ++libva_gallium = static_library( + 'gallium_drv_video', + 'target.c', + c_args : c_vis_args, +diff -ur 20.1.7/src/gallium/targets/vdpau/meson.build b/src/gallium/targets/vdpau/meson.build +--- 20.1.7/src/gallium/targets/vdpau/meson.build 2020-09-02 19:53:55.530411500 +0000 ++++ b/src/gallium/targets/vdpau/meson.build 2020-09-24 16:27:54.260000000 +0000 +@@ -36,7 +36,7 @@ + endif + + +-libvdpau_gallium = shared_library( ++libvdpau_gallium = static_library( + 'vdpau_gallium', + 'target.c', + c_args : c_vis_args, +diff -ur 20.1.7/src/gallium/targets/xa/meson.build b/src/gallium/targets/xa/meson.build +--- 20.1.7/src/gallium/targets/xa/meson.build 2020-09-02 19:53:55.541411400 +0000 ++++ b/src/gallium/targets/xa/meson.build 2020-09-24 16:27:54.260000000 +0000 +@@ -32,7 +32,7 @@ + + _xa_version = '.'.join(xa_version) + +-libxatracker = shared_library( ++libxatracker = static_library( + 'xatracker', + 'target.c', + c_args : c_vis_args, +diff -ur 20.1.7/src/gallium/targets/xvmc/meson.build b/src/gallium/targets/xvmc/meson.build +--- 20.1.7/src/gallium/targets/xvmc/meson.build 2020-09-02 19:53:55.541411400 +0000 ++++ b/src/gallium/targets/xvmc/meson.build 2020-09-24 16:27:54.260000000 +0000 +@@ -31,7 +31,7 @@ + xvmc_link_depends += files('xvmc.sym') + endif + +-libxvmc_gallium = shared_library( ++libxvmc_gallium = static_library( + 'XvMCgallium', + 'target.c', + c_args : c_vis_args, +diff -ur 20.1.7/src/gbm/meson.build b/src/gbm/meson.build +--- 20.1.7/src/gbm/meson.build 2020-09-02 19:53:56.183409000 +0000 ++++ b/src/gbm/meson.build 2020-09-24 16:27:54.280000000 +0000 +@@ -43,7 +43,7 @@ + incs_gbm += inc_wayland_drm + endif + +-libgbm = shared_library( ++libgbm = static_library( + 'gbm', + files_gbm, + include_directories : incs_gbm, +diff -ur 20.1.7/src/glx/meson.build b/src/glx/meson.build +--- 20.1.7/src/glx/meson.build 2020-09-02 19:53:56.209409000 +0000 ++++ b/src/glx/meson.build 2020-09-24 16:27:54.280000000 +0000 +@@ -149,7 +149,7 @@ + ], + ) + +-libgl = shared_library( ++libgl = static_library( + gl_lib_name, + [], + link_with : [libglapi_static, libglapi], +diff -ur 20.1.7/src/hgl/meson.build b/src/hgl/meson.build +--- 20.1.7/src/hgl/meson.build 2020-09-02 19:53:56.242408800 +0000 ++++ b/src/hgl/meson.build 2020-09-24 16:27:54.250000000 +0000 +@@ -18,7 +18,7 @@ + # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + # SOFTWARE. + +-libgl = shared_library( ++libgl = static_library( + 'GL', + files( + 'GLView.cpp', 'GLRenderer.cpp', 'GLRendererRoster.cpp', 'GLDispatcher.cpp', +diff -ur 20.1.7/src/intel/tools/meson.build b/src/intel/tools/meson.build +--- 20.1.7/src/intel/tools/meson.build 2020-09-02 19:53:56.406408000 +0000 ++++ b/src/intel/tools/meson.build 2020-09-24 16:27:54.270000000 +0000 +@@ -81,7 +81,7 @@ + configuration : sanitize_data + ) + +-libintel_sanitize_gpu = shared_library( ++libintel_sanitize_gpu = static_library( + 'intel_sanitize_gpu', + files('intel_sanitize_gpu.c'), + dependencies : [idep_mesautil, dep_dl, dep_thread], +@@ -100,7 +100,7 @@ + install : true + ) + +-libintel_dump_gpu = shared_library( ++libintel_dump_gpu = static_library( + 'intel_dump_gpu', + files( + 'gen_context.h', 'gen8_context.h', 'gen10_context.h', 'intel_aub.h', +diff -ur 20.1.7/src/intel/vulkan/meson.build b/src/intel/vulkan/meson.build +--- 20.1.7/src/intel/vulkan/meson.build 2020-09-02 19:53:56.496407700 +0000 ++++ b/src/intel/vulkan/meson.build 2020-09-24 16:27:54.270000000 +0000 +@@ -187,7 +187,7 @@ + dependencies : anv_deps, + ) + +-libvulkan_intel = shared_library( ++libvulkan_intel = static_library( + 'vulkan_intel', + [files('anv_gem.c'), anv_entrypoints[0], anv_extensions_h], + include_directories : [ +diff -ur 20.1.7/src/mapi/es1api/meson.build b/src/mapi/es1api/meson.build +--- 20.1.7/src/mapi/es1api/meson.build 2020-09-02 19:53:56.498407800 +0000 ++++ b/src/mapi/es1api/meson.build 2020-09-24 16:27:54.250000000 +0000 +@@ -32,7 +32,7 @@ + _es1_c_args += ['-D_GDI32_', '-DBUILD_GL32'] + endif + +-libglesv1_cm = shared_library( ++libglesv1_cm = static_library( + 'GLESv1_CM' + get_option('gles-lib-suffix'), + ['../entry.c', es1_glapi_mapi_tmp_h], + c_args : [ +diff -ur 20.1.7/src/mapi/es2api/meson.build b/src/mapi/es2api/meson.build +--- 20.1.7/src/mapi/es2api/meson.build 2020-09-02 19:53:56.498407800 +0000 ++++ b/src/mapi/es2api/meson.build 2020-09-24 16:27:54.250000000 +0000 +@@ -32,7 +32,7 @@ + _es2_c_args += ['-D_GDI32_', '-DBUILD_GL32'] + endif + +-libgles2 = shared_library( ++libgles2 = static_library( + 'GLESv2' + get_option('gles-lib-suffix'), + ['../entry.c', es2_glapi_mapi_tmp_h], + c_args : [ +diff -ur 20.1.7/src/mapi/shared-glapi/meson.build b/src/mapi/shared-glapi/meson.build +--- 20.1.7/src/mapi/shared-glapi/meson.build 2020-09-02 19:53:56.525407600 +0000 ++++ b/src/mapi/shared-glapi/meson.build 2020-09-24 16:27:54.250000000 +0000 +@@ -41,7 +41,7 @@ + _glapi_c_args += ['-D_GLAPI_DLL_EXPORTS'] + endif + +-libglapi = shared_library( ++libglapi = static_library( + 'glapi', + [files_mapi_glapi, files_mapi_util, shared_glapi_mapi_tmp_h], + c_args : [ +diff -ur 20.1.7/src/mesa/drivers/dri/meson.build b/src/mesa/drivers/dri/meson.build +--- 20.1.7/src/mesa/drivers/dri/meson.build 2020-09-02 19:53:56.675407200 +0000 ++++ b/src/mesa/drivers/dri/meson.build 2020-09-24 16:27:54.280000000 +0000 +@@ -54,7 +54,7 @@ + endif + + if _dri_drivers != [] +- libmesa_dri_drivers = shared_library( ++ libmesa_dri_drivers = static_library( + 'mesa_dri_drivers', + [], + link_whole : _dri_drivers, +diff -ur 20.1.7/src/mesa/drivers/osmesa/meson.build b/src/mesa/drivers/osmesa/meson.build +--- 20.1.7/src/mesa/drivers/osmesa/meson.build 2020-09-02 19:53:56.754406700 +0000 ++++ b/src/mesa/drivers/osmesa/meson.build 2020-09-24 16:27:54.280000000 +0000 +@@ -24,7 +24,7 @@ + osmesa_link_with += libglapi + endif + +-libosmesa = shared_library( ++libosmesa = static_library( + osmesa_lib_name, + ['osmesa.c', glapitable_h, glapitemp_h], + c_args : c_vis_args, +diff -ur 20.1.7/src/mesa/drivers/x11/meson.build b/src/mesa/drivers/x11/meson.build +--- 20.1.7/src/mesa/drivers/x11/meson.build 2020-09-02 19:53:56.758406900 +0000 ++++ b/src/mesa/drivers/x11/meson.build 2020-09-24 16:27:54.280000000 +0000 +@@ -23,7 +23,7 @@ + gl_link_with += libglapi + endif + +-libgl = shared_library( ++libgl = static_library( + 'GL', + files( + 'fakeglx.c', 'glxapi.c', 'xfonts.c', 'xm_api.c', 'xm_buffer.c', 'xm_dd.c', +diff -ur 20.1.7/src/vulkan/device-select-layer/meson.build b/src/vulkan/device-select-layer/meson.build +--- 20.1.7/src/vulkan/device-select-layer/meson.build 2020-09-02 19:53:57.249405000 +0000 ++++ b/src/vulkan/device-select-layer/meson.build 2020-09-24 16:27:54.240000000 +0000 +@@ -38,7 +38,7 @@ + vklayer_flags += '-DVK_USE_PLATFORM_WAYLAND_KHR' + endif + +-vklayer_mesa_device_select = shared_library( ++vklayer_mesa_device_select = static_library( + 'VkLayer_MESA_device_select', + vklayer_files, + c_args : [c_vis_args, no_override_init_args, vklayer_flags ], +diff -ur 20.1.7/src/vulkan/overlay-layer/meson.build b/src/vulkan/overlay-layer/meson.build +--- 20.1.7/src/vulkan/overlay-layer/meson.build 2020-09-02 19:53:57.252405000 +0000 ++++ b/src/vulkan/overlay-layer/meson.build 2020-09-24 16:27:54.240000000 +0000 +@@ -36,7 +36,7 @@ + 'overlay_params.c', + ) + +-vklayer_mesa_overlay = shared_library( ++vklayer_mesa_overlay = static_library( + 'VkLayer_MESA_overlay', + vklayer_files, overlay_spv, sha1_h, + c_args : [c_vis_args, no_override_init_args, vulkan_wsi_args], diff --git a/meson/default/conf.sh b/meson/default/conf.sh new file mode 100755 index 0000000..0506aac --- /dev/null +++ b/meson/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration to do." diff --git a/meson/default/deps b/meson/default/deps new file mode 100644 index 0000000..d918ca2 --- /dev/null +++ b/meson/default/deps @@ -0,0 +1,19 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools diff --git a/meson/default/inst.sh b/meson/default/inst.sh new file mode 100755 index 0000000..702af40 --- /dev/null +++ b/meson/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +python3 setup.py install --prefix=/usr +mv $PY3PKGS/easy-install.pth $PY3PKGS/$name.pth diff --git a/meson/default/make.sh b/meson/default/make.sh new file mode 100755 index 0000000..16ff8a1 --- /dev/null +++ b/meson/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +python3 setup.py build diff --git a/microwindows/default/conf.sh b/microwindows/default/conf.sh new file mode 100755 index 0000000..035e7fb --- /dev/null +++ b/microwindows/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +${EDITOR:-vi} src/config diff --git a/microwindows/default/deps b/microwindows/default/deps new file mode 100644 index 0000000..8f0abfd --- /dev/null +++ b/microwindows/default/deps @@ -0,0 +1,17 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libpng +libjpeg-turbo +zlib +bzip2 +freetype +$EDITORDEP diff --git a/microwindows/default/inst.sh b/microwindows/default/inst.sh new file mode 100755 index 0000000..1e30dc1 --- /dev/null +++ b/microwindows/default/inst.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +cd src +make -j$(nproc) install + +[ ! -d /include/NX11 ] || rm -fr /include/NX11 +cp -r nx11/X11-local/X11 /include/NX11 +ln -sf /include/NX11 /include/X11 +ln -sf /lib/libNX11.a /lib/libX11.a diff --git a/microwindows/default/lock.h b/microwindows/default/lock.h new file mode 100644 index 0000000..9712caf --- /dev/null +++ b/microwindows/default/lock.h @@ -0,0 +1,83 @@ +/* + * Critical section locking definitions for Microwindows + * Copyright (c) 2002, 2003 by Greg Haerr + * + * The current implementation uses pthreads included in libc + * + * It's currently required that any locking mechanism + * allow multiple locks on the same thread (ie. recursive calls) + * This is necessary since routines nest calls on + * LOCK(&nxGlobalLock). (nanox/client.c and nanox/nxproto.c) + */ +#if THREADSAFE +#define THREADSAFE_LINUX 1 /* use linux threadsafe routines*/ +#endif + +/* + * Linux critical section locking definitions + */ +#if THREADSAFE_LINUX +#define __USE_GNU /* define _NP routines*/ +#include +typedef pthread_mutex_t MWMUTEX; + +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +/* + * This definition doesn't require explicit initialization and -lpthread + * + * It uses a common (but non-standard) pthreads extension. + */ +#define LOCK_DECLARE(name) MWMUTEX name = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#define LOCK_INIT(m) +#else +/* + * This definition requires adding -lpthreads to link all Nano-X applications + * which isn't required if LOCK_DECLARE is used as above: The pthread entry + * points pthread_mutex_lock/unlock are included in the standard C library, but + * pthread_mutex_init is not. If this is not the case with your library, + * include these routines, and add -lpthreads to your applications link line. + */ +#define LOCK_DECLARE(name) MWMUTEX name +#if 1 +/* + * Use portable version. + * + * Note: Older libraries may not have these UNIX98 functions. You may need + * to use the old non-portable function name (see below). + */ +#define LOCK_INIT(m) \ + { \ + pthread_mutexattr_t attr; \ + pthread_mutexattr_init(&attr); \ + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); \ + pthread_mutex_init((m), &attr); \ + } +#else +/* Use old non-portable function name */ +#define LOCK_INIT(m) \ + { \ + pthread_mutexattr_t attr; \ + pthread_mutexattr_init(&attr); \ + pthread_mutexattr_setkind_np(&attr, PTHREAD_MUTEX_RECURSIVE_NP); \ + pthread_mutex_init((m), &attr); \ + } +#endif +#endif + +#define LOCK_EXTERN(name) extern MWMUTEX name +#define LOCK_FREE(m) pthread_mutex_destroy(m) +#define LOCK(m) pthread_mutex_lock(m) +#define UNLOCK(m) pthread_mutex_unlock(m) +#endif /* THREADSAFE_LINUX*/ + +/* no locking support - dummy macros*/ +#if !THREADSAFE +typedef int MWMUTEX; + +#define LOCK_DECLARE(name) MWMUTEX name +#define LOCK_EXTERN(name) extern MWMUTEX name +#define LOCK_INIT(m) +#define LOCK_FREE(m) +#define LOCK(m) +#define UNLOCK(m) +#endif /* !THREADSAFE*/ diff --git a/microwindows/default/make.sh b/microwindows/default/make.sh new file mode 100755 index 0000000..e4ba357 --- /dev/null +++ b/microwindows/default/make.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +cd src +LDFLAGS="$LDFLAGS -lbz2" \ +make -j$(nproc) diff --git a/microwindows/default/patch b/microwindows/default/patch new file mode 100644 index 0000000..aac9901 --- /dev/null +++ b/microwindows/default/patch @@ -0,0 +1,143 @@ +a couple changes to: +1) make sure CFLAGS and LDFLAGS are not overwritten link in bzip2. +2) load a modified src/Config/config.linux-fb file at src/config. +3) check explicitly for a PTHREAD macro instead of guessing around it. + +--- a/src/Makefile.rules 2020-09-03 18:49:18.380000000 +0000 ++++ b/src/Makefile.rules 2020-09-03 19:14:49.390000000 +0000 +@@ -15,12 +15,12 @@ + #$(info MAKELEVEL $(MAKELEVEL)) + + # Arch.rules will add platform-specific options to these flags +-CFLAGS= ++#CFLAGS= + WARNINGS= + # INCLUDEDIRS is += and EXTRAFLAGS= not here for their use in submakefiles before they include Makefile.rules + INCLUDEDIRS += -I$(MW_DIR_SRC)/include + #LDFLAGS = -L$(MW_DIR_LIB) +-LDFLAGS= ++LDFLAGS+= -lbz2 + DEFINES= + HOSTCFLAGS= + HOSTLDFLAGS= +--- a/src/include/lock.h 2020-09-03 21:09:41.110000000 +0000 ++++ b/src/include/lock.h 2020-09-03 21:10:41.780000000 +0000 +@@ -21,7 +21,7 @@ + #include + typedef pthread_mutex_t MWMUTEX; + +-#if ! (defined(__CYGWIN__) | RTEMS | MACOSX) ++#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) + /* + * This definition doesn't require explicit initialization and -lpthread + * +--- a/src/config 2020-09-03 18:49:18.380000000 +0000 ++++ b/src/config 2020-09-03 21:18:25.370000000 +0000 +@@ -2,6 +2,7 @@ + # config - Microwindows and Nano-X configuration file + # + # Set target architecture using ARCH= from options in Arch.rules ++# Set drawing method: X11 or FRAMEBUFFER/MOUSE/KEYBOARD options + # Set SCREEN/MOUSE/KEYBOARD drivers (typically X11 or FB) + # Set various libraries to build or include and their locations + # +@@ -14,9 +15,9 @@ + # Target platform and compilation options + # + #################################################################### +-ARCH = MACOSX +-SHAREDLIBS = Y +-SHAREDLINK = Y ++ARCH = LINUX-NATIVE ++SHAREDLIBS = N ++SHAREDLINK = N + #EXTRAFLAGS = -Wall -Wno-missing-prototypes + DEBUG = N + OPTIMIZE = Y +@@ -30,14 +31,13 @@ + # Set SCREEN=X11 for X11, SCREEN=FB for framebuffer drawing + # Screen size/depth for X11, FBE and non-dynamic framebuffer systems + #################################################################### +-SCREEN = X11 +-MOUSE = +-KEYBOARD = ++SCREEN = FB ++MOUSE = DEVMICEMOUSE ++KEYBOARD = SCANKBD + SCREEN_WIDTH = 1024 + SCREEN_HEIGHT = 768 +-X11LIBLOCATION = /usr/X11/lib +-X11HDRLOCATION = /usr/X11/include +-EXTENGINELIBS += ++#X11LIBLOCATION = /usr/X11/lib ++X11HDRLOCATION = ./X11-local + + #################################################################### + # +@@ -46,19 +46,19 @@ + #################################################################### + MICROWIN = Y + NANOX = Y +-NUKLEARUI = Y ++NUKLEARUI = N + NX11 = Y + ENGINE = N +-TINYWIDGETS = Y ++TINYWIDGETS = N + + #################################################################### + # + # Applications and demos to build + # + #################################################################### +-FBEMULATOR = Y ++FBEMULATOR = N + MICROWINDEMO = Y +-MICROWINMULTIAPP = Y ++MICROWINMULTIAPP = N + NANOXDEMO = Y + HAVE_VNCSERVER_SUPPORT = N + VNCSERVER_PTHREADED = N +@@ -97,7 +97,7 @@ + #################################################################### + # JPEG support through libjpeg, see README.txt in contrib/jpeg + #################################################################### +-HAVE_JPEG_SUPPORT = N ++HAVE_JPEG_SUPPORT = Y + INCJPEG = + LIBJPEG = -ljpeg + +@@ -129,8 +129,8 @@ + #################################################################### + HAVE_FREETYPE_2_SUPPORT = Y + HAVE_HARFBUZZ_SUPPORT = N +-INCFT2LIB = /usr/local/include +-LIBFT2LIB = -lfreetype -lbz2 ++INCFT2LIB = /usr/include ++LIBFT2LIB = -lfreetype + #LIBFT2LIB += -lharfbuzz + FREETYPE_FONT_DIR = "fonts/truetype" + +@@ -198,10 +198,10 @@ + # set GRAYPALETTE to link with Gray Palette (valid only for 4bpp modes) + # set HAVETEXTMODE=Y for systems that can switch between text & graphics. + USE_EXPOSURE = Y +-VTSWITCH = N ++VTSWITCH = Y + FBREVERSE = N + GRAYPALETTE = N +-HAVETEXTMODE = N ++HAVETEXTMODE = Y + + #################################################################### + # Screen pixel format +@@ -229,8 +229,7 @@ + SCREEN_PIXTYPE = MWPF_TRUECOLORARGB + #SCREEN_PIXTYPE = MWPF_TRUECOLORABGR + #SCREEN_PIXTYPE = MWPF_TRUECOLOR565 +-#SCREEN_PIXTYPE = MWPF_PALETTE +-SCREEN_DEPTH = 8 ++SCREEN_DEPTH = 32 + + #################################################################### + # Screen drivers diff --git a/mksh/default/conf.sh b/mksh/default/conf.sh new file mode 100755 index 0000000..3974755 --- /dev/null +++ b/mksh/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no conf for mksh yet" diff --git a/mksh/default/deps b/mksh/default/deps new file mode 100644 index 0000000..754c965 --- /dev/null +++ b/mksh/default/deps @@ -0,0 +1,8 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +sbase +ubase +patch +dash +make diff --git a/mksh/default/inst.sh b/mksh/default/inst.sh new file mode 100755 index 0000000..d49b1a4 --- /dev/null +++ b/mksh/default/inst.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +install -c -s -o root -g bin -m 555 mksh /bin/mksh +grep -x /bin/mksh /etc/shells >/dev/null || echo /bin/mksh >>/etc/shells + +[ -d /usr/share/doc/mksh/examples ] || mkdir -p /usr/share/doc/mksh/examples +install -c -o root -g bin -m 444 dot.mkshrc /usr/share/doc/mksh/examples/ + +[ -d /usr/share/man/man1/ ] || mkdir -p /usr/share/man/man1 +install -c -o root -g bin -m 444 lksh.1 mksh.1 /usr/share/man/man1/ diff --git a/mksh/default/make.sh b/mksh/default/make.sh new file mode 100755 index 0000000..24006ef --- /dev/null +++ b/mksh/default/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +chmod +x Build.sh +CC="gcc" LDSTATIC="-static" ./Build.sh diff --git a/mle/default/conf.sh b/mle/default/conf.sh new file mode 100755 index 0000000..bb3314d --- /dev/null +++ b/mle/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration to be done." diff --git a/mle/default/inst.sh b/mle/default/inst.sh new file mode 100755 index 0000000..0655d13 --- /dev/null +++ b/mle/default/inst.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +make install prefix= diff --git a/mle/default/make.sh b/mle/default/make.sh new file mode 100755 index 0000000..2e675b2 --- /dev/null +++ b/mle/default/make.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +make mle_vendor=1 mle_static=1 diff --git a/mount/default/conf.sh b/mount/default/conf.sh new file mode 100755 index 0000000..0a6f216 --- /dev/null +++ b/mount/default/conf.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +./configure \ + --disable-all-programs \ + --disable-shared \ + --enable-static \ + --enable-libblkid \ + --enable-libmount \ + --enable-mount \ + --prefix= + +## explanation +# +# --disable-all-programs: +# disable everything. this package actually contains a bunch of libraries... +# +# --disable-shared --enable static: only build static libraries. +# +# --enable-mount: enable only mount. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/mrustc/default/conf.sh b/mrustc/default/conf.sh new file mode 100755 index 0000000..1a14db0 --- /dev/null +++ b/mrustc/default/conf.sh @@ -0,0 +1,51 @@ +#!/bin/sh -e + +rustver="1.29.0" +rustsrc="$(pwd)/rustc-$rustver-src" + +if [ ! -e "$rustsrc/dl-version" ]; then + echo "bypassing the download step using a softlink to the rust source code..." + ln -sf "/src/rust-$rustver" "$rustsrc" + echo "$rustver" > "$rustsrc/dl-version" + + echo "applying the mrust patch to the rust source code..." + cd "$rustsrc" + patch -p0 < /mnt/src/rustc-$rustver-src.patch + cd - > /dev/null + + echo "removing bundled rust dependencies..." + rm -rf "$rustsrc/llvm-project/" + + echo "removing hardcoded LD_LIBRARY_PATH in rust's bootstrap.py..." + sed -i "/LD_LIBRARY_PATH/d" "$rustsrc/src/bootstrap/bootstrap.py" +else + echo "pre-configure setup seems to have been done already. skipping." +fi + +ln -sf /bin/python3 /mnt/build/python +export PATH="$PATH:/mnt/build" +export triple="powerpc64le-alpine-linux-musl" + +#cd "$rustsrc" +#./configure \ +# --build="$triple" \ +# --target="$triple" \ +# --release-channel="stable" \ +# --llvm-root="$PREFIX/lib" \ +# --disable-docs \ +# --enable-extended \ +# --tools="analysis,cargo,src" \ +# --enable-llvm-link-shared \ +# --enable-option-checking \ +# --enable-locked-deps \ +# --enable-vendor \ +# --python="python3" \ +# --set="target.${triple}.musl-root=$PREFIX" \ +# --set="target.${triple}.crt-static=false" +# #--set="rust.musl-root=$PREFIX" \ +# +#echo "making warnings non-fatal..." +#sed 's/#deny-warnings = .*/deny-warnings = false/' -i config.toml +#sed 's|deny(warnings,|deny(|' -i src/bootstrap/lib.rs + +rm /mnt/build/python diff --git a/mrustc/default/deps b/mrustc/default/deps new file mode 100644 index 0000000..40c3f08 --- /dev/null +++ b/mrustc/default/deps @@ -0,0 +1,34 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +patch +zlib +tls-certs +libarchive +file +pcre +curl +cmake +bash +python3 +bearssl +libressl >= 2.5.0 < 2.8.0 +git +libssh2 +http-parser +libgit2 +llvm +rust-src == 1.29.0 +mksh + +gdb +strace diff --git a/mrustc/default/inst.sh b/mrustc/default/inst.sh new file mode 100755 index 0000000..4e345ac --- /dev/null +++ b/mrustc/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "still working this one out." diff --git a/mrustc/default/make.sh b/mrustc/default/make.sh new file mode 100755 index 0000000..b03e147 --- /dev/null +++ b/mrustc/default/make.sh @@ -0,0 +1,18 @@ +#!/bin/sh -e + +#export CFLAGS="$SHARED_CFLAGS" +#export CXXFLAGS="$SHARED_CXXFLAGS" +#export LDFLAGS="$SHARED_LDFLAGS" +export RUSTC_TARGET="powerpc64le-alpine-linux-musl" +export LLVM_TARGETS="PowerPC" +export LIBGIT2_SYS_USE_PKG_CONFIG=1 +export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 +export PKG_CONFIG_ALL_STATIC=1 + +#trap "rm ../build/pkg-config" EXIT INT HUP +#ln -sf "$(which pkgconf)" ../build/pkg-config +#export PATH="$PATH:$(pwd)/../build" + +#make RUSTCSRC +make -j$(nproc) -f minicargo.mk +make -C run_rustc diff --git a/mrustc/default/patches-available/0100-ppc64-support.patch b/mrustc/default/patches-available/0100-ppc64-support.patch new file mode 100644 index 0000000..6c21256 --- /dev/null +++ b/mrustc/default/patches-available/0100-ppc64-support.patch @@ -0,0 +1,59 @@ +diff --git a/src/trans/target.cpp b/src/trans/target.cpp +index f36bbfc1..6688aa72 100644 +--- a/src/trans/target.cpp ++++ b/src/trans/target.cpp +@@ -44,6 +44,18 @@ const TargetArch ARCH_M68K = { + { /*atomic(u8)=*/true, false, true, false, true }, + TargetArch::Alignments(2, 2, 2, 2, 2, 2, 2) + }; ++const TargetArch ARCH_POWERPC64 = { ++ "powerpc64", ++ 64, true, ++ { /*atomic(u8)=*/true, true, true, true, true }, ++ TargetArch::Alignments(2, 4, 8, 16, 4, 8, 8) ++}; ++const TargetArch ARCH_POWERPC64LE = { ++ "powerpc64", ++ 64, false, ++ { /*atomic(u8)=*/true, true, true, true, true }, ++ TargetArch::Alignments(2, 4, 8, 16, 4, 8, 8) ++}; + TargetSpec g_target; + + +@@ -404,6 +416,20 @@ namespace + ARCH_M68K + }; + } ++ else if(target_name == "powerpc64-alpine-linux-musl") ++ { ++ return TargetSpec { ++ "unix", "linux", "musl", {CodegenMode::Gnu11, false, "powerpc64-alpine-linux-musl", BACKEND_C_OPTS_GNU}, ++ ARCH_POWERPC64 ++ }; ++ } ++ else if(target_name == "powerpc64le-alpine-linux-musl") ++ { ++ return TargetSpec { ++ "unix", "linux", "musl", {CodegenMode::Gnu11, false, "powerpc64le-alpine-linux-musl", BACKEND_C_OPTS_GNU}, ++ ARCH_POWERPC64LE ++ }; ++ } + else if(target_name == "i586-pc-windows-gnu") + { + return TargetSpec { +diff --git a/tools/common/target_detect.h b/tools/common/target_detect.h +index dda4bc31..5753ae95 100644 +--- a/tools/common/target_detect.h ++++ b/tools/common/target_detect.h +@@ -26,6 +26,10 @@ + # define DEFAULT_TARGET_NAME "i586-linux-gnu" + # elif defined(__m68k__) + # define DEFAULT_TARGET_NAME "m68k-linux-gnu" ++# elif defined (__powerpc64__) && defined(__LITTLE_ENDIAN__) ++# define DEFAULT_TARGET_NAME "powerpc64le-alpine-linux-musl" ++# elif defined (__powerpc64__) && defined(__BIG_ENDIAN__) ++# define DEFAULT_TARGET_NAME "powerpc64-alpine-linux-musl" + # else + # warning "Unable to detect a suitable default target (linux-gnu)" + # endif diff --git a/mrustc/default/patches-available/0200-run_rustc-ppc64le-and-musl.patch b/mrustc/default/patches-available/0200-run_rustc-ppc64le-and-musl.patch new file mode 100644 index 0000000..272e550 --- /dev/null +++ b/mrustc/default/patches-available/0200-run_rustc-ppc64le-and-musl.patch @@ -0,0 +1,29 @@ +--- a/run_rustc/Makefile 2020-10-18 19:18:55.370000000 +0000 ++++ b/run_rustc/Makefile 2020-10-18 19:19:21.850000000 +0000 +@@ -9,7 +9,7 @@ + OUTDIR_SUF ?= -$(RUSTC_VERSION) + endif + +-RUSTC_TARGET := x86_64-unknown-linux-gnu ++RUSTC_TARGET := powerpc64le-alpine-linux-musl + + OUTDIR := output$(OUTDIR_SUF)/ + PREFIX := $(OUTDIR)prefix/ +@@ -21,7 +21,7 @@ + BINDIR_S := $(PREFIX_S)bin/ + + LLVM_CONFIG := $(RUST_SRC)../build/bin/llvm-config +-LLVM_TARGETS ?= X86;ARM;AArch64#;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc;NVPTX ++LLVM_TARGETS ?= PowerPC;#X86;ARM;AArch64#;Mips;SystemZ;JSBackend;MSP430;Sparc;NVPTX + + RUSTC_ENV_VARS := CFG_COMPILER_HOST_TRIPLE=$(RUSTC_TARGET) + RUSTC_ENV_VARS += LLVM_CONFIG=$(abspath $(LLVM_CONFIG)) +@@ -43,7 +43,7 @@ + all: $(BINDIR)rustc $(LIBDIR)libstd.rlib $(BINDIR)hello_world + all: $(BINDIR)cargo + +-RUSTFLAGS_core := ++RUSTFLAGS_core := -C target-feature=-crt-static + RUSTFLAGS_libc := --cfg stdbuild + RUSTFLAGS_std := -l dl -l rt -l pthread + RUSTFLAGS_unwind := -l gcc_s diff --git a/mrustc/default/patches-available/0300-ppc64le-minicargo-manifest.patch b/mrustc/default/patches-available/0300-ppc64le-minicargo-manifest.patch new file mode 100644 index 0000000..9efdc21 --- /dev/null +++ b/mrustc/default/patches-available/0300-ppc64le-minicargo-manifest.patch @@ -0,0 +1,13 @@ +diff --git a/tools/minicargo/manifest.cpp b/tools/minicargo/manifest.cpp +index 569b6696..2329a362 100644 +--- a/tools/minicargo/manifest.cpp ++++ b/tools/minicargo/manifest.cpp +@@ -21,7 +21,7 @@ + #elif defined(__NetBSD__) + # define TARGET_NAME "x86_64-unknown-netbsd" + #else +-# define TARGET_NAME "x86_64-unknown-linux-gnu" ++# define TARGET_NAME "powerpc64le-unknown-linux-musl" + #endif + + static ::std::vector<::std::shared_ptr> g_loaded_manifests; diff --git a/mrustc/default/patches-available/0400-minicargo-disable-ssh.patch b/mrustc/default/patches-available/0400-minicargo-disable-ssh.patch new file mode 100644 index 0000000..3247633 --- /dev/null +++ b/mrustc/default/patches-available/0400-minicargo-disable-ssh.patch @@ -0,0 +1,13 @@ +diff --git a/minicargo.mk b/minicargo.mk +index 63869f29..438c2abb 100644 +--- a/minicargo.mk ++++ b/minicargo.mk +@@ -142,7 +142,7 @@ $(OUTDIR)rustc-build/librustdoc.rlib: $(MRUSTC) LIBS + #$(OUTDIR)cargo-build/libserde-1_0_6.rlib: $(MRUSTC) LIBS + # $(MINICARGO) $(RUSTCSRC)src/vendor/serde --vendor-dir $(RUSTCSRC)src/vendor --output-dir $(dir $@) -L $(OUTDIR) $(MINICARGO_FLAGS) + $(OUTDIR)cargo-build/libgit2-0_6_6.rlib: $(MRUSTC) LIBS +- $(MINICARGO) $(RUSTCSRC)src/vendor/git2 --vendor-dir $(RUSTCSRC)src/vendor --output-dir $(dir $@) -L $(OUTDIR) --features ssh,https,curl,openssl-sys,openssl-probe $(MINICARGO_FLAGS) ++ $(MINICARGO) $(RUSTCSRC)src/vendor/git2 --vendor-dir $(RUSTCSRC)src/vendor --output-dir $(dir $@) -L $(OUTDIR) --features https,curl,openssl-sys,openssl-probe $(MINICARGO_FLAGS) + $(OUTDIR)cargo-build/libserde_json-1_0_2.rlib: $(MRUSTC) LIBS + $(MINICARGO) $(RUSTCSRC)src/vendor/serde_json --vendor-dir $(RUSTCSRC)src/vendor --output-dir $(dir $@) -L $(OUTDIR) $(MINICARGO_FLAGS) + $(OUTDIR)cargo-build/libcurl-0_4_6.rlib: $(MRUSTC) LIBS diff --git a/mrustc/default/patches-enabled/0100-ppc64-support.patch b/mrustc/default/patches-enabled/0100-ppc64-support.patch new file mode 120000 index 0000000..a959b9e --- /dev/null +++ b/mrustc/default/patches-enabled/0100-ppc64-support.patch @@ -0,0 +1 @@ +../patches-available/0100-ppc64-support.patch \ No newline at end of file diff --git a/mrustc/default/patches-enabled/0200-run_rustc-ppc64le-and-musl.patch b/mrustc/default/patches-enabled/0200-run_rustc-ppc64le-and-musl.patch new file mode 100644 index 0000000..272e550 --- /dev/null +++ b/mrustc/default/patches-enabled/0200-run_rustc-ppc64le-and-musl.patch @@ -0,0 +1,29 @@ +--- a/run_rustc/Makefile 2020-10-18 19:18:55.370000000 +0000 ++++ b/run_rustc/Makefile 2020-10-18 19:19:21.850000000 +0000 +@@ -9,7 +9,7 @@ + OUTDIR_SUF ?= -$(RUSTC_VERSION) + endif + +-RUSTC_TARGET := x86_64-unknown-linux-gnu ++RUSTC_TARGET := powerpc64le-alpine-linux-musl + + OUTDIR := output$(OUTDIR_SUF)/ + PREFIX := $(OUTDIR)prefix/ +@@ -21,7 +21,7 @@ + BINDIR_S := $(PREFIX_S)bin/ + + LLVM_CONFIG := $(RUST_SRC)../build/bin/llvm-config +-LLVM_TARGETS ?= X86;ARM;AArch64#;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc;NVPTX ++LLVM_TARGETS ?= PowerPC;#X86;ARM;AArch64#;Mips;SystemZ;JSBackend;MSP430;Sparc;NVPTX + + RUSTC_ENV_VARS := CFG_COMPILER_HOST_TRIPLE=$(RUSTC_TARGET) + RUSTC_ENV_VARS += LLVM_CONFIG=$(abspath $(LLVM_CONFIG)) +@@ -43,7 +43,7 @@ + all: $(BINDIR)rustc $(LIBDIR)libstd.rlib $(BINDIR)hello_world + all: $(BINDIR)cargo + +-RUSTFLAGS_core := ++RUSTFLAGS_core := -C target-feature=-crt-static + RUSTFLAGS_libc := --cfg stdbuild + RUSTFLAGS_std := -l dl -l rt -l pthread + RUSTFLAGS_unwind := -l gcc_s diff --git a/mrustc/default/patches-enabled/0300-ppc64le-minicargo-manifest.patch b/mrustc/default/patches-enabled/0300-ppc64le-minicargo-manifest.patch new file mode 120000 index 0000000..01443eb --- /dev/null +++ b/mrustc/default/patches-enabled/0300-ppc64le-minicargo-manifest.patch @@ -0,0 +1 @@ +../patches-available/0300-ppc64le-minicargo-manifest.patch \ No newline at end of file diff --git a/mrustc/default/patches-enabled/0400-minicargo-disable-ssh.patch b/mrustc/default/patches-enabled/0400-minicargo-disable-ssh.patch new file mode 120000 index 0000000..8d38758 --- /dev/null +++ b/mrustc/default/patches-enabled/0400-minicargo-disable-ssh.patch @@ -0,0 +1 @@ +../patches-available/0400-minicargo-disable-ssh.patch \ No newline at end of file diff --git a/mtdev/default/conf.sh b/mtdev/default/conf.sh new file mode 100755 index 0000000..e321182 --- /dev/null +++ b/mtdev/default/conf.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +CFLAGS="$CFLAGS_SHARED" \ +CXXFLAGS="$CXXFLAGS_SHARED" \ +LDFLAGS="$LDFLAGS_SHARED" \ +./configure \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --enable-static: build the static libraries. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/mtdev/default/patches-available/0001-Avoid-__builtin_ffs.patch b/mtdev/default/patches-available/0001-Avoid-__builtin_ffs.patch new file mode 100644 index 0000000..749bda5 --- /dev/null +++ b/mtdev/default/patches-available/0001-Avoid-__builtin_ffs.patch @@ -0,0 +1,44 @@ +From 09e21bb5d6714687705dc8f2d00a09b3ff3b2436 Mon Sep 17 00:00:00 2001 +From: Michael Forney +Date: Fri, 7 Jun 2019 11:55:26 -0700 +Subject: [PATCH] Avoid __builtin_ffs + +--- + src/common.h | 5 +---- + src/core.c | 2 +- + 2 files changed, 2 insertions(+), 5 deletions(-) + +diff --git a/src/common.h b/src/common.h +index 80a3d6e..3c77f48 100644 +--- a/src/common.h ++++ b/src/common.h +@@ -77,12 +77,9 @@ static inline int bitcount(unsigned v) + return (((v + (v>>4)) & 0xF0F0F0F) * 0x1010101) >> 24; + } + +-/* Return index of first bit [0-31], -1 on zero */ +-#define firstbit(v) (__builtin_ffs(v) - 1) +- + /* boost-style foreach bit */ + #define foreach_bit(i, m) \ +- for (i = firstbit(m); i >= 0; i = firstbit((m) & (~0U << (i + 1)))) ++ for (i = -1; (m) & ~0U << (i + 1);) if ((m) & 1U << ++i) + + /* robust system ioctl calls */ + #define SYSCALL(call) while (((call) == -1) && (errno == EINTR)) +diff --git a/src/core.c b/src/core.c +index 0d91c0b..20ce0c6 100644 +--- a/src/core.c ++++ b/src/core.c +@@ -304,7 +304,7 @@ static void apply_typeA_changes(struct mtdev_state *state, + break; + } + if (id != MT_ID_NULL) { +- slot = firstbit(unused); ++ foreach_bit(slot, unused) break; + push_slot_changes(state, &data[i], prop[i], slot, syn); + SETBIT(used, slot); + CLEARBIT(unused, slot); +-- +2.25.0 + diff --git a/mtdev/default/patches-available/0100-config-sub.patch b/mtdev/default/patches-available/0100-config-sub.patch new file mode 100644 index 0000000..bb30220 --- /dev/null +++ b/mtdev/default/patches-available/0100-config-sub.patch @@ -0,0 +1,3039 @@ +--- a/config-aux/config.sub 2010-08-02 08:03:23.000000000 +0000 ++++ b/config-aux/config.sub 2020-07-17 20:25:52.000000000 +0000 +@@ -1,38 +1,31 @@ + #! /bin/sh + # Configuration validation subroutine script. +-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 +-# Free Software Foundation, Inc. +- +-timestamp='2010-01-22' +- +-# This file is (in principle) common to ALL GNU software. +-# The presence of a machine in this file suggests that SOME GNU software +-# can handle that machine. It does not imply ALL GNU software can. +-# +-# This file is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2 of the License, or ++# Copyright 1992-2020 Free Software Foundation, Inc. ++ ++timestamp='2020-07-10' ++ ++# This file is free software; you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or + # (at your option) any later version. + # +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. + # + # You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +-# 02110-1301, USA. ++# along with this program; if not, see . + # + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a + # configuration script generated by Autoconf, you may include it under +-# the same distribution terms that you use for the rest of that program. ++# the same distribution terms that you use for the rest of that ++# program. This Exception is an additional permission under section 7 ++# of the GNU General Public License, version 3 ("GPLv3"). + + +-# Please send patches to . Submit a context +-# diff and a properly formatted GNU ChangeLog entry. ++# Please send patches to . + # + # Configuration subroutine to validate and canonicalize a configuration type. + # Supply the specified configuration type as an argument. +@@ -40,7 +33,7 @@ + # Otherwise, we print the canonical config type on stdout and succeed. + + # You can get the latest version of this script from: +-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD ++# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + + # This file is supposed to be the same for all GNU packages + # and recognize all the CPU types, system types and aliases +@@ -60,12 +53,11 @@ + me=`echo "$0" | sed -e 's,.*/,,'` + + usage="\ +-Usage: $0 [OPTION] CPU-MFR-OPSYS +- $0 [OPTION] ALIAS ++Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + + Canonicalize a configuration name. + +-Operation modes: ++Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit +@@ -75,9 +67,7 @@ + version="\ + GNU config.sub ($timestamp) + +-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free +-Software Foundation, Inc. ++Copyright 1992-2020 Free Software Foundation, Inc. + + This is free software; see the source for copying conditions. There is NO + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." +@@ -99,12 +89,12 @@ + - ) # Use stdin as input. + break ;; + -* ) +- echo "$me: invalid option $1$help" ++ echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. +- echo $1 ++ echo "$1" + exit ;; + + * ) +@@ -120,1136 +110,1167 @@ + exit 1;; + esac + +-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +-# Here we must recognize all the valid KERNEL-OS combinations. +-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +-case $maybe_os in +- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ +- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ +- kopensolaris*-gnu* | \ +- storm-chaos* | os2-emx* | rtmk-nova*) +- os=-$maybe_os +- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` +- ;; +- *) +- basic_machine=`echo $1 | sed 's/-[^-]*$//'` +- if [ $basic_machine != $1 ] +- then os=`echo $1 | sed 's/.*-/-/'` +- else os=; fi +- ;; +-esac +- +-### Let's recognize common machines as not being operating systems so +-### that things like config.sub decstation-3100 work. We also +-### recognize some manufacturers as not being operating systems, so we +-### can provide default operating systems below. +-case $os in +- -sun*os*) +- # Prevent following clause from handling this invalid input. +- ;; +- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ +- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ +- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ +- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ +- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ +- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ +- -apple | -axis | -knuth | -cray | -microblaze) +- os= +- basic_machine=$1 +- ;; +- -bluegene*) +- os=-cnk +- ;; +- -sim | -cisco | -oki | -wec | -winbond) +- os= +- basic_machine=$1 +- ;; +- -scout) +- ;; +- -wrs) +- os=-vxworks +- basic_machine=$1 +- ;; +- -chorusos*) +- os=-chorusos +- basic_machine=$1 +- ;; +- -chorusrdb) +- os=-chorusrdb +- basic_machine=$1 +- ;; +- -hiux*) +- os=-hiuxwe2 +- ;; +- -sco6) +- os=-sco5v6 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco5) +- os=-sco3.2v5 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco4) +- os=-sco3.2v4 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco3.2.[4-9]*) +- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco3.2v[4-9]*) +- # Don't forget version if it is 3.2v4 or newer. +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco5v6*) +- # Don't forget version if it is 3.2v4 or newer. +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco*) +- os=-sco3.2v2 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -udk*) +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -isc) +- os=-isc2.2 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -clix*) +- basic_machine=clipper-intergraph +- ;; +- -isc*) +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -lynx*) +- os=-lynxos ++# Split fields of configuration type ++# shellcheck disable=SC2162 ++IFS="-" read field1 field2 field3 field4 <&2 ++ exit 1 + ;; +- -ptx*) +- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ++ *-*-*-*) ++ basic_machine=$field1-$field2 ++ basic_os=$field3-$field4 + ;; +- -windowsnt*) +- os=`echo $os | sed -e 's/windowsnt/winnt/'` ++ *-*-*) ++ # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two ++ # parts ++ maybe_os=$field2-$field3 ++ case $maybe_os in ++ nto-qnx* | linux-* | uclinux-uclibc* \ ++ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ ++ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ ++ | storm-chaos* | os2-emx* | rtmk-nova*) ++ basic_machine=$field1 ++ basic_os=$maybe_os ++ ;; ++ android-linux) ++ basic_machine=$field1-unknown ++ basic_os=linux-android ++ ;; ++ *) ++ basic_machine=$field1-$field2 ++ basic_os=$field3 ++ ;; ++ esac + ;; +- -psos*) +- os=-psos ++ *-*) ++ # A lone config we happen to match not fitting any pattern ++ case $field1-$field2 in ++ decstation-3100) ++ basic_machine=mips-dec ++ basic_os= ++ ;; ++ *-*) ++ # Second component is usually, but not always the OS ++ case $field2 in ++ # Prevent following clause from handling this valid os ++ sun*os*) ++ basic_machine=$field1 ++ basic_os=$field2 ++ ;; ++ # Manufacturers ++ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ ++ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ ++ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ ++ | convergent* | ncr* | news | 32* | 3600* | 3100* \ ++ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ ++ | ultra | tti* | harris | dolphin | highlevel | gould \ ++ | cbm | ns | masscomp | apple | axis | knuth | cray \ ++ | microblaze* | sim | cisco \ ++ | oki | wec | wrs | winbond) ++ basic_machine=$field1-$field2 ++ basic_os= ++ ;; ++ *) ++ basic_machine=$field1 ++ basic_os=$field2 ++ ;; ++ esac ++ ;; ++ esac + ;; +- -mint | -mint[0-9]*) +- basic_machine=m68k-atari +- os=-mint ++ *) ++ # Convert single-component short-hands not valid as part of ++ # multi-component configurations. ++ case $field1 in ++ 386bsd) ++ basic_machine=i386-pc ++ basic_os=bsd ++ ;; ++ a29khif) ++ basic_machine=a29k-amd ++ basic_os=udi ++ ;; ++ adobe68k) ++ basic_machine=m68010-adobe ++ basic_os=scout ++ ;; ++ alliant) ++ basic_machine=fx80-alliant ++ basic_os= ++ ;; ++ altos | altos3068) ++ basic_machine=m68k-altos ++ basic_os= ++ ;; ++ am29k) ++ basic_machine=a29k-none ++ basic_os=bsd ++ ;; ++ amdahl) ++ basic_machine=580-amdahl ++ basic_os=sysv ++ ;; ++ amiga) ++ basic_machine=m68k-unknown ++ basic_os= ++ ;; ++ amigaos | amigados) ++ basic_machine=m68k-unknown ++ basic_os=amigaos ++ ;; ++ amigaunix | amix) ++ basic_machine=m68k-unknown ++ basic_os=sysv4 ++ ;; ++ apollo68) ++ basic_machine=m68k-apollo ++ basic_os=sysv ++ ;; ++ apollo68bsd) ++ basic_machine=m68k-apollo ++ basic_os=bsd ++ ;; ++ aros) ++ basic_machine=i386-pc ++ basic_os=aros ++ ;; ++ aux) ++ basic_machine=m68k-apple ++ basic_os=aux ++ ;; ++ balance) ++ basic_machine=ns32k-sequent ++ basic_os=dynix ++ ;; ++ blackfin) ++ basic_machine=bfin-unknown ++ basic_os=linux ++ ;; ++ cegcc) ++ basic_machine=arm-unknown ++ basic_os=cegcc ++ ;; ++ convex-c1) ++ basic_machine=c1-convex ++ basic_os=bsd ++ ;; ++ convex-c2) ++ basic_machine=c2-convex ++ basic_os=bsd ++ ;; ++ convex-c32) ++ basic_machine=c32-convex ++ basic_os=bsd ++ ;; ++ convex-c34) ++ basic_machine=c34-convex ++ basic_os=bsd ++ ;; ++ convex-c38) ++ basic_machine=c38-convex ++ basic_os=bsd ++ ;; ++ cray) ++ basic_machine=j90-cray ++ basic_os=unicos ++ ;; ++ crds | unos) ++ basic_machine=m68k-crds ++ basic_os= ++ ;; ++ da30) ++ basic_machine=m68k-da30 ++ basic_os= ++ ;; ++ decstation | pmax | pmin | dec3100 | decstatn) ++ basic_machine=mips-dec ++ basic_os= ++ ;; ++ delta88) ++ basic_machine=m88k-motorola ++ basic_os=sysv3 ++ ;; ++ dicos) ++ basic_machine=i686-pc ++ basic_os=dicos ++ ;; ++ djgpp) ++ basic_machine=i586-pc ++ basic_os=msdosdjgpp ++ ;; ++ ebmon29k) ++ basic_machine=a29k-amd ++ basic_os=ebmon ++ ;; ++ es1800 | OSE68k | ose68k | ose | OSE) ++ basic_machine=m68k-ericsson ++ basic_os=ose ++ ;; ++ gmicro) ++ basic_machine=tron-gmicro ++ basic_os=sysv ++ ;; ++ go32) ++ basic_machine=i386-pc ++ basic_os=go32 ++ ;; ++ h8300hms) ++ basic_machine=h8300-hitachi ++ basic_os=hms ++ ;; ++ h8300xray) ++ basic_machine=h8300-hitachi ++ basic_os=xray ++ ;; ++ h8500hms) ++ basic_machine=h8500-hitachi ++ basic_os=hms ++ ;; ++ harris) ++ basic_machine=m88k-harris ++ basic_os=sysv3 ++ ;; ++ hp300 | hp300hpux) ++ basic_machine=m68k-hp ++ basic_os=hpux ++ ;; ++ hp300bsd) ++ basic_machine=m68k-hp ++ basic_os=bsd ++ ;; ++ hppaosf) ++ basic_machine=hppa1.1-hp ++ basic_os=osf ++ ;; ++ hppro) ++ basic_machine=hppa1.1-hp ++ basic_os=proelf ++ ;; ++ i386mach) ++ basic_machine=i386-mach ++ basic_os=mach ++ ;; ++ isi68 | isi) ++ basic_machine=m68k-isi ++ basic_os=sysv ++ ;; ++ m68knommu) ++ basic_machine=m68k-unknown ++ basic_os=linux ++ ;; ++ magnum | m3230) ++ basic_machine=mips-mips ++ basic_os=sysv ++ ;; ++ merlin) ++ basic_machine=ns32k-utek ++ basic_os=sysv ++ ;; ++ mingw64) ++ basic_machine=x86_64-pc ++ basic_os=mingw64 ++ ;; ++ mingw32) ++ basic_machine=i686-pc ++ basic_os=mingw32 ++ ;; ++ mingw32ce) ++ basic_machine=arm-unknown ++ basic_os=mingw32ce ++ ;; ++ monitor) ++ basic_machine=m68k-rom68k ++ basic_os=coff ++ ;; ++ morphos) ++ basic_machine=powerpc-unknown ++ basic_os=morphos ++ ;; ++ moxiebox) ++ basic_machine=moxie-unknown ++ basic_os=moxiebox ++ ;; ++ msdos) ++ basic_machine=i386-pc ++ basic_os=msdos ++ ;; ++ msys) ++ basic_machine=i686-pc ++ basic_os=msys ++ ;; ++ mvs) ++ basic_machine=i370-ibm ++ basic_os=mvs ++ ;; ++ nacl) ++ basic_machine=le32-unknown ++ basic_os=nacl ++ ;; ++ ncr3000) ++ basic_machine=i486-ncr ++ basic_os=sysv4 ++ ;; ++ netbsd386) ++ basic_machine=i386-pc ++ basic_os=netbsd ++ ;; ++ netwinder) ++ basic_machine=armv4l-rebel ++ basic_os=linux ++ ;; ++ news | news700 | news800 | news900) ++ basic_machine=m68k-sony ++ basic_os=newsos ++ ;; ++ news1000) ++ basic_machine=m68030-sony ++ basic_os=newsos ++ ;; ++ necv70) ++ basic_machine=v70-nec ++ basic_os=sysv ++ ;; ++ nh3000) ++ basic_machine=m68k-harris ++ basic_os=cxux ++ ;; ++ nh[45]000) ++ basic_machine=m88k-harris ++ basic_os=cxux ++ ;; ++ nindy960) ++ basic_machine=i960-intel ++ basic_os=nindy ++ ;; ++ mon960) ++ basic_machine=i960-intel ++ basic_os=mon960 ++ ;; ++ nonstopux) ++ basic_machine=mips-compaq ++ basic_os=nonstopux ++ ;; ++ os400) ++ basic_machine=powerpc-ibm ++ basic_os=os400 ++ ;; ++ OSE68000 | ose68000) ++ basic_machine=m68000-ericsson ++ basic_os=ose ++ ;; ++ os68k) ++ basic_machine=m68k-none ++ basic_os=os68k ++ ;; ++ paragon) ++ basic_machine=i860-intel ++ basic_os=osf ++ ;; ++ parisc) ++ basic_machine=hppa-unknown ++ basic_os=linux ++ ;; ++ psp) ++ basic_machine=mipsallegrexel-sony ++ basic_os=psp ++ ;; ++ pw32) ++ basic_machine=i586-unknown ++ basic_os=pw32 ++ ;; ++ rdos | rdos64) ++ basic_machine=x86_64-pc ++ basic_os=rdos ++ ;; ++ rdos32) ++ basic_machine=i386-pc ++ basic_os=rdos ++ ;; ++ rom68k) ++ basic_machine=m68k-rom68k ++ basic_os=coff ++ ;; ++ sa29200) ++ basic_machine=a29k-amd ++ basic_os=udi ++ ;; ++ sei) ++ basic_machine=mips-sei ++ basic_os=seiux ++ ;; ++ sequent) ++ basic_machine=i386-sequent ++ basic_os= ++ ;; ++ sps7) ++ basic_machine=m68k-bull ++ basic_os=sysv2 ++ ;; ++ st2000) ++ basic_machine=m68k-tandem ++ basic_os= ++ ;; ++ stratus) ++ basic_machine=i860-stratus ++ basic_os=sysv4 ++ ;; ++ sun2) ++ basic_machine=m68000-sun ++ basic_os= ++ ;; ++ sun2os3) ++ basic_machine=m68000-sun ++ basic_os=sunos3 ++ ;; ++ sun2os4) ++ basic_machine=m68000-sun ++ basic_os=sunos4 ++ ;; ++ sun3) ++ basic_machine=m68k-sun ++ basic_os= ++ ;; ++ sun3os3) ++ basic_machine=m68k-sun ++ basic_os=sunos3 ++ ;; ++ sun3os4) ++ basic_machine=m68k-sun ++ basic_os=sunos4 ++ ;; ++ sun4) ++ basic_machine=sparc-sun ++ basic_os= ++ ;; ++ sun4os3) ++ basic_machine=sparc-sun ++ basic_os=sunos3 ++ ;; ++ sun4os4) ++ basic_machine=sparc-sun ++ basic_os=sunos4 ++ ;; ++ sun4sol2) ++ basic_machine=sparc-sun ++ basic_os=solaris2 ++ ;; ++ sun386 | sun386i | roadrunner) ++ basic_machine=i386-sun ++ basic_os= ++ ;; ++ sv1) ++ basic_machine=sv1-cray ++ basic_os=unicos ++ ;; ++ symmetry) ++ basic_machine=i386-sequent ++ basic_os=dynix ++ ;; ++ t3e) ++ basic_machine=alphaev5-cray ++ basic_os=unicos ++ ;; ++ t90) ++ basic_machine=t90-cray ++ basic_os=unicos ++ ;; ++ toad1) ++ basic_machine=pdp10-xkl ++ basic_os=tops20 ++ ;; ++ tpf) ++ basic_machine=s390x-ibm ++ basic_os=tpf ++ ;; ++ udi29k) ++ basic_machine=a29k-amd ++ basic_os=udi ++ ;; ++ ultra3) ++ basic_machine=a29k-nyu ++ basic_os=sym1 ++ ;; ++ v810 | necv810) ++ basic_machine=v810-nec ++ basic_os=none ++ ;; ++ vaxv) ++ basic_machine=vax-dec ++ basic_os=sysv ++ ;; ++ vms) ++ basic_machine=vax-dec ++ basic_os=vms ++ ;; ++ vsta) ++ basic_machine=i386-pc ++ basic_os=vsta ++ ;; ++ vxworks960) ++ basic_machine=i960-wrs ++ basic_os=vxworks ++ ;; ++ vxworks68) ++ basic_machine=m68k-wrs ++ basic_os=vxworks ++ ;; ++ vxworks29k) ++ basic_machine=a29k-wrs ++ basic_os=vxworks ++ ;; ++ xbox) ++ basic_machine=i686-pc ++ basic_os=mingw32 ++ ;; ++ ymp) ++ basic_machine=ymp-cray ++ basic_os=unicos ++ ;; ++ *) ++ basic_machine=$1 ++ basic_os= ++ ;; ++ esac + ;; + esac + +-# Decode aliases for certain CPU-COMPANY combinations. ++# Decode 1-component or ad-hoc basic machines + case $basic_machine in +- # Recognize the basic CPU types without company name. +- # Some are omitted here because they have special meanings below. +- 1750a | 580 \ +- | a29k \ +- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ +- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ +- | am33_2.0 \ +- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ +- | bfin \ +- | c4x | clipper \ +- | d10v | d30v | dlx | dsp16xx \ +- | fido | fr30 | frv \ +- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ +- | i370 | i860 | i960 | ia64 \ +- | ip2k | iq2000 \ +- | lm32 \ +- | m32c | m32r | m32rle | m68000 | m68k | m88k \ +- | maxq | mb | microblaze | mcore | mep | metag \ +- | mips | mipsbe | mipseb | mipsel | mipsle \ +- | mips16 \ +- | mips64 | mips64el \ +- | mips64octeon | mips64octeonel \ +- | mips64orion | mips64orionel \ +- | mips64r5900 | mips64r5900el \ +- | mips64vr | mips64vrel \ +- | mips64vr4100 | mips64vr4100el \ +- | mips64vr4300 | mips64vr4300el \ +- | mips64vr5000 | mips64vr5000el \ +- | mips64vr5900 | mips64vr5900el \ +- | mipsisa32 | mipsisa32el \ +- | mipsisa32r2 | mipsisa32r2el \ +- | mipsisa64 | mipsisa64el \ +- | mipsisa64r2 | mipsisa64r2el \ +- | mipsisa64sb1 | mipsisa64sb1el \ +- | mipsisa64sr71k | mipsisa64sr71kel \ +- | mipstx39 | mipstx39el \ +- | mn10200 | mn10300 \ +- | moxie \ +- | mt \ +- | msp430 \ +- | nios | nios2 \ +- | ns16k | ns32k \ +- | or32 \ +- | pdp10 | pdp11 | pj | pjl \ +- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ +- | pyramid \ +- | rx \ +- | score \ +- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ +- | sh64 | sh64le \ +- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ +- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ +- | spu | strongarm \ +- | tahoe | thumb | tic4x | tic80 | tron \ +- | ubicom32 \ +- | v850 | v850e \ +- | we32k \ +- | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ +- | z8k | z80) +- basic_machine=$basic_machine-unknown +- ;; +- m6811 | m68hc11 | m6812 | m68hc12 | picochip) +- # Motorola 68HC11/12. +- basic_machine=$basic_machine-unknown +- os=-none ++ # Here we handle the default manufacturer of certain CPU types. It is in ++ # some cases the only manufacturer, in others, it is the most popular. ++ w89k) ++ cpu=hppa1.1 ++ vendor=winbond ++ ;; ++ op50n) ++ cpu=hppa1.1 ++ vendor=oki + ;; +- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ++ op60c) ++ cpu=hppa1.1 ++ vendor=oki + ;; +- ms1) +- basic_machine=mt-unknown ++ ibm*) ++ cpu=i370 ++ vendor=ibm + ;; +- +- # We use `pc' rather than `unknown' +- # because (1) that's what they normally are, and +- # (2) the word "unknown" tends to confuse beginning users. +- i*86 | x86_64) +- basic_machine=$basic_machine-pc +- ;; +- # Object if more than one company name word. +- *-*-*) +- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 +- exit 1 ++ orion105) ++ cpu=clipper ++ vendor=highlevel ++ ;; ++ mac | mpw | mac-mpw) ++ cpu=m68k ++ vendor=apple + ;; +- # Recognize the basic CPU types with company name. +- 580-* \ +- | a29k-* \ +- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ +- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ +- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ +- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ +- | avr-* | avr32-* \ +- | bfin-* | bs2000-* \ +- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ +- | clipper-* | craynv-* | cydra-* \ +- | d10v-* | d30v-* | dlx-* \ +- | elxsi-* \ +- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ +- | h8300-* | h8500-* \ +- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ +- | i*86-* | i860-* | i960-* | ia64-* \ +- | ip2k-* | iq2000-* \ +- | lm32-* \ +- | m32c-* | m32r-* | m32rle-* \ +- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ +- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ +- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ +- | mips16-* \ +- | mips64-* | mips64el-* \ +- | mips64octeon-* | mips64octeonel-* \ +- | mips64orion-* | mips64orionel-* \ +- | mips64r5900-* | mips64r5900el-* \ +- | mips64vr-* | mips64vrel-* \ +- | mips64vr4100-* | mips64vr4100el-* \ +- | mips64vr4300-* | mips64vr4300el-* \ +- | mips64vr5000-* | mips64vr5000el-* \ +- | mips64vr5900-* | mips64vr5900el-* \ +- | mipsisa32-* | mipsisa32el-* \ +- | mipsisa32r2-* | mipsisa32r2el-* \ +- | mipsisa64-* | mipsisa64el-* \ +- | mipsisa64r2-* | mipsisa64r2el-* \ +- | mipsisa64sb1-* | mipsisa64sb1el-* \ +- | mipsisa64sr71k-* | mipsisa64sr71kel-* \ +- | mipstx39-* | mipstx39el-* \ +- | mmix-* \ +- | mt-* \ +- | msp430-* \ +- | nios-* | nios2-* \ +- | none-* | np1-* | ns16k-* | ns32k-* \ +- | orion-* \ +- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ +- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ +- | pyramid-* \ +- | romp-* | rs6000-* | rx-* \ +- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ +- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ +- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ +- | sparclite-* \ +- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ +- | tahoe-* | thumb-* \ +- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ +- | tile-* | tilegx-* \ +- | tron-* \ +- | ubicom32-* \ +- | v850-* | v850e-* | vax-* \ +- | we32k-* \ +- | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ +- | xstormy16-* | xtensa*-* \ +- | ymp-* \ +- | z8k-* | z80-*) +- ;; +- # Recognize the basic CPU types without company name, with glob match. +- xtensa*) +- basic_machine=$basic_machine-unknown ++ pmac | pmac-mpw) ++ cpu=powerpc ++ vendor=apple + ;; ++ + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. +- 386bsd) +- basic_machine=i386-unknown +- os=-bsd +- ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) +- basic_machine=m68000-att ++ cpu=m68000 ++ vendor=att + ;; + 3b*) +- basic_machine=we32k-att +- ;; +- a29khif) +- basic_machine=a29k-amd +- os=-udi +- ;; +- abacus) +- basic_machine=abacus-unknown +- ;; +- adobe68k) +- basic_machine=m68010-adobe +- os=-scout +- ;; +- alliant | fx80) +- basic_machine=fx80-alliant +- ;; +- altos | altos3068) +- basic_machine=m68k-altos +- ;; +- am29k) +- basic_machine=a29k-none +- os=-bsd +- ;; +- amd64) +- basic_machine=x86_64-pc +- ;; +- amd64-*) +- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- amdahl) +- basic_machine=580-amdahl +- os=-sysv +- ;; +- amiga | amiga-*) +- basic_machine=m68k-unknown +- ;; +- amigaos | amigados) +- basic_machine=m68k-unknown +- os=-amigaos +- ;; +- amigaunix | amix) +- basic_machine=m68k-unknown +- os=-sysv4 +- ;; +- apollo68) +- basic_machine=m68k-apollo +- os=-sysv +- ;; +- apollo68bsd) +- basic_machine=m68k-apollo +- os=-bsd +- ;; +- aros) +- basic_machine=i386-pc +- os=-aros +- ;; +- aux) +- basic_machine=m68k-apple +- os=-aux +- ;; +- balance) +- basic_machine=ns32k-sequent +- os=-dynix +- ;; +- blackfin) +- basic_machine=bfin-unknown +- os=-linux +- ;; +- blackfin-*) +- basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` +- os=-linux ++ cpu=we32k ++ vendor=att + ;; + bluegene*) +- basic_machine=powerpc-ibm +- os=-cnk +- ;; +- c90) +- basic_machine=c90-cray +- os=-unicos +- ;; +- cegcc) +- basic_machine=arm-unknown +- os=-cegcc +- ;; +- convex-c1) +- basic_machine=c1-convex +- os=-bsd +- ;; +- convex-c2) +- basic_machine=c2-convex +- os=-bsd +- ;; +- convex-c32) +- basic_machine=c32-convex +- os=-bsd +- ;; +- convex-c34) +- basic_machine=c34-convex +- os=-bsd +- ;; +- convex-c38) +- basic_machine=c38-convex +- os=-bsd +- ;; +- cray | j90) +- basic_machine=j90-cray +- os=-unicos +- ;; +- craynv) +- basic_machine=craynv-cray +- os=-unicosmp +- ;; +- cr16) +- basic_machine=cr16-unknown +- os=-elf +- ;; +- crds | unos) +- basic_machine=m68k-crds +- ;; +- crisv32 | crisv32-* | etraxfs*) +- basic_machine=crisv32-axis +- ;; +- cris | cris-* | etrax*) +- basic_machine=cris-axis +- ;; +- crx) +- basic_machine=crx-unknown +- os=-elf +- ;; +- da30 | da30-*) +- basic_machine=m68k-da30 +- ;; +- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) +- basic_machine=mips-dec ++ cpu=powerpc ++ vendor=ibm ++ basic_os=cnk + ;; + decsystem10* | dec10*) +- basic_machine=pdp10-dec +- os=-tops10 ++ cpu=pdp10 ++ vendor=dec ++ basic_os=tops10 + ;; + decsystem20* | dec20*) +- basic_machine=pdp10-dec +- os=-tops20 ++ cpu=pdp10 ++ vendor=dec ++ basic_os=tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) +- basic_machine=m68k-motorola +- ;; +- delta88) +- basic_machine=m88k-motorola +- os=-sysv3 +- ;; +- dicos) +- basic_machine=i686-pc +- os=-dicos +- ;; +- djgpp) +- basic_machine=i586-pc +- os=-msdosdjgpp +- ;; +- dpx20 | dpx20-*) +- basic_machine=rs6000-bull +- os=-bosx +- ;; +- dpx2* | dpx2*-bull) +- basic_machine=m68k-bull +- os=-sysv3 +- ;; +- ebmon29k) +- basic_machine=a29k-amd +- os=-ebmon ++ cpu=m68k ++ vendor=motorola + ;; +- elxsi) +- basic_machine=elxsi-elxsi +- os=-bsd ++ dpx2*) ++ cpu=m68k ++ vendor=bull ++ basic_os=sysv3 + ;; + encore | umax | mmax) +- basic_machine=ns32k-encore ++ cpu=ns32k ++ vendor=encore + ;; +- es1800 | OSE68k | ose68k | ose | OSE) +- basic_machine=m68k-ericsson +- os=-ose ++ elxsi) ++ cpu=elxsi ++ vendor=elxsi ++ basic_os=${basic_os:-bsd} + ;; + fx2800) +- basic_machine=i860-alliant ++ cpu=i860 ++ vendor=alliant + ;; + genix) +- basic_machine=ns32k-ns +- ;; +- gmicro) +- basic_machine=tron-gmicro +- os=-sysv +- ;; +- go32) +- basic_machine=i386-pc +- os=-go32 ++ cpu=ns32k ++ vendor=ns + ;; + h3050r* | hiux*) +- basic_machine=hppa1.1-hitachi +- os=-hiuxwe2 +- ;; +- h8300hms) +- basic_machine=h8300-hitachi +- os=-hms +- ;; +- h8300xray) +- basic_machine=h8300-hitachi +- os=-xray +- ;; +- h8500hms) +- basic_machine=h8500-hitachi +- os=-hms +- ;; +- harris) +- basic_machine=m88k-harris +- os=-sysv3 +- ;; +- hp300-*) +- basic_machine=m68k-hp +- ;; +- hp300bsd) +- basic_machine=m68k-hp +- os=-bsd +- ;; +- hp300hpux) +- basic_machine=m68k-hp +- os=-hpux ++ cpu=hppa1.1 ++ vendor=hitachi ++ basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) +- basic_machine=hppa1.0-hp ++ cpu=hppa1.0 ++ vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) +- basic_machine=m68000-hp ++ cpu=m68000 ++ vendor=hp + ;; + hp9k3[2-9][0-9]) +- basic_machine=m68k-hp ++ cpu=m68k ++ vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) +- basic_machine=hppa1.0-hp ++ cpu=hppa1.0 ++ vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) +- basic_machine=hppa1.1-hp ++ cpu=hppa1.1 ++ vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp +- basic_machine=hppa1.1-hp ++ cpu=hppa1.1 ++ vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp +- basic_machine=hppa1.1-hp ++ cpu=hppa1.1 ++ vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) +- basic_machine=hppa1.1-hp ++ cpu=hppa1.1 ++ vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) +- basic_machine=hppa1.0-hp ++ cpu=hppa1.0 ++ vendor=hp + ;; +- hppa-next) +- os=-nextstep3 +- ;; +- hppaosf) +- basic_machine=hppa1.1-hp +- os=-osf +- ;; +- hppro) +- basic_machine=hppa1.1-hp +- os=-proelf +- ;; +- i370-ibm* | ibm*) +- basic_machine=i370-ibm +- ;; +-# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) +- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` +- os=-sysv32 ++ cpu=`echo "$1" | sed -e 's/86.*/86/'` ++ vendor=pc ++ basic_os=sysv32 + ;; + i*86v4*) +- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` +- os=-sysv4 ++ cpu=`echo "$1" | sed -e 's/86.*/86/'` ++ vendor=pc ++ basic_os=sysv4 + ;; + i*86v) +- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` +- os=-sysv ++ cpu=`echo "$1" | sed -e 's/86.*/86/'` ++ vendor=pc ++ basic_os=sysv + ;; + i*86sol2) +- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` +- os=-solaris2 +- ;; +- i386mach) +- basic_machine=i386-mach +- os=-mach +- ;; +- i386-vsta | vsta) +- basic_machine=i386-unknown +- os=-vsta ++ cpu=`echo "$1" | sed -e 's/86.*/86/'` ++ vendor=pc ++ basic_os=solaris2 ++ ;; ++ j90 | j90-cray) ++ cpu=j90 ++ vendor=cray ++ basic_os=${basic_os:-unicos} + ;; + iris | iris4d) +- basic_machine=mips-sgi +- case $os in +- -irix*) ++ cpu=mips ++ vendor=sgi ++ case $basic_os in ++ irix*) + ;; + *) +- os=-irix4 ++ basic_os=irix4 + ;; + esac + ;; +- isi68 | isi) +- basic_machine=m68k-isi +- os=-sysv +- ;; +- m68knommu) +- basic_machine=m68k-unknown +- os=-linux +- ;; +- m68knommu-*) +- basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` +- os=-linux +- ;; +- m88k-omron*) +- basic_machine=m88k-omron +- ;; +- magnum | m3230) +- basic_machine=mips-mips +- os=-sysv +- ;; +- merlin) +- basic_machine=ns32k-utek +- os=-sysv +- ;; +- microblaze) +- basic_machine=microblaze-xilinx +- ;; +- mingw32) +- basic_machine=i386-pc +- os=-mingw32 +- ;; +- mingw32ce) +- basic_machine=arm-unknown +- os=-mingw32ce +- ;; + miniframe) +- basic_machine=m68000-convergent +- ;; +- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) +- basic_machine=m68k-atari +- os=-mint +- ;; +- mips3*-*) +- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` +- ;; +- mips3*) +- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown +- ;; +- monitor) +- basic_machine=m68k-rom68k +- os=-coff +- ;; +- morphos) +- basic_machine=powerpc-unknown +- os=-morphos +- ;; +- msdos) +- basic_machine=i386-pc +- os=-msdos ++ cpu=m68000 ++ vendor=convergent + ;; +- ms1-*) +- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` +- ;; +- mvs) +- basic_machine=i370-ibm +- os=-mvs +- ;; +- ncr3000) +- basic_machine=i486-ncr +- os=-sysv4 +- ;; +- netbsd386) +- basic_machine=i386-unknown +- os=-netbsd +- ;; +- netwinder) +- basic_machine=armv4l-rebel +- os=-linux +- ;; +- news | news700 | news800 | news900) +- basic_machine=m68k-sony +- os=-newsos +- ;; +- news1000) +- basic_machine=m68030-sony +- os=-newsos ++ *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) ++ cpu=m68k ++ vendor=atari ++ basic_os=mint + ;; + news-3600 | risc-news) +- basic_machine=mips-sony +- os=-newsos +- ;; +- necv70) +- basic_machine=v70-nec +- os=-sysv +- ;; +- next | m*-next ) +- basic_machine=m68k-next +- case $os in +- -nextstep* ) ++ cpu=mips ++ vendor=sony ++ basic_os=newsos ++ ;; ++ next | m*-next) ++ cpu=m68k ++ vendor=next ++ case $basic_os in ++ openstep*) ++ ;; ++ nextstep*) + ;; +- -ns2*) +- os=-nextstep2 ++ ns2*) ++ basic_os=nextstep2 + ;; + *) +- os=-nextstep3 ++ basic_os=nextstep3 + ;; + esac + ;; +- nh3000) +- basic_machine=m68k-harris +- os=-cxux +- ;; +- nh[45]000) +- basic_machine=m88k-harris +- os=-cxux +- ;; +- nindy960) +- basic_machine=i960-intel +- os=-nindy +- ;; +- mon960) +- basic_machine=i960-intel +- os=-mon960 +- ;; +- nonstopux) +- basic_machine=mips-compaq +- os=-nonstopux +- ;; + np1) +- basic_machine=np1-gould +- ;; +- nsr-tandem) +- basic_machine=nsr-tandem ++ cpu=np1 ++ vendor=gould + ;; + op50n-* | op60c-*) +- basic_machine=hppa1.1-oki +- os=-proelf +- ;; +- openrisc | openrisc-*) +- basic_machine=or32-unknown +- ;; +- os400) +- basic_machine=powerpc-ibm +- os=-os400 +- ;; +- OSE68000 | ose68000) +- basic_machine=m68000-ericsson +- os=-ose +- ;; +- os68k) +- basic_machine=m68k-none +- os=-os68k ++ cpu=hppa1.1 ++ vendor=oki ++ basic_os=proelf + ;; + pa-hitachi) +- basic_machine=hppa1.1-hitachi +- os=-hiuxwe2 +- ;; +- paragon) +- basic_machine=i860-intel +- os=-osf +- ;; +- parisc) +- basic_machine=hppa-unknown +- os=-linux +- ;; +- parisc-*) +- basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` +- os=-linux ++ cpu=hppa1.1 ++ vendor=hitachi ++ basic_os=hiuxwe2 + ;; + pbd) +- basic_machine=sparc-tti ++ cpu=sparc ++ vendor=tti + ;; + pbb) +- basic_machine=m68k-tti +- ;; +- pc532 | pc532-*) +- basic_machine=ns32k-pc532 +- ;; +- pc98) +- basic_machine=i386-pc +- ;; +- pc98-*) +- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ++ cpu=m68k ++ vendor=tti + ;; +- pentium | p5 | k5 | k6 | nexgen | viac3) +- basic_machine=i586-pc +- ;; +- pentiumpro | p6 | 6x86 | athlon | athlon_*) +- basic_machine=i686-pc +- ;; +- pentiumii | pentium2 | pentiumiii | pentium3) +- basic_machine=i686-pc +- ;; +- pentium4) +- basic_machine=i786-pc +- ;; +- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) +- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- pentiumpro-* | p6-* | 6x86-* | athlon-*) +- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) +- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- pentium4-*) +- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ++ pc532) ++ cpu=ns32k ++ vendor=pc532 + ;; + pn) +- basic_machine=pn-gould +- ;; +- power) basic_machine=power-ibm +- ;; +- ppc) basic_machine=powerpc-unknown +- ;; +- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- ppcle | powerpclittle | ppc-le | powerpc-little) +- basic_machine=powerpcle-unknown +- ;; +- ppcle-* | powerpclittle-*) +- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ++ cpu=pn ++ vendor=gould + ;; +- ppc64) basic_machine=powerpc64-unknown +- ;; +- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- ppc64le | powerpc64little | ppc64-le | powerpc64-little) +- basic_machine=powerpc64le-unknown +- ;; +- ppc64le-* | powerpc64little-*) +- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ++ power) ++ cpu=power ++ vendor=ibm + ;; + ps2) +- basic_machine=i386-ibm +- ;; +- pw32) +- basic_machine=i586-unknown +- os=-pw32 +- ;; +- rdos) +- basic_machine=i386-pc +- os=-rdos +- ;; +- rom68k) +- basic_machine=m68k-rom68k +- os=-coff ++ cpu=i386 ++ vendor=ibm + ;; + rm[46]00) +- basic_machine=mips-siemens ++ cpu=mips ++ vendor=siemens + ;; + rtpc | rtpc-*) +- basic_machine=romp-ibm ++ cpu=romp ++ vendor=ibm ++ ;; ++ sde) ++ cpu=mipsisa32 ++ vendor=sde ++ basic_os=${basic_os:-elf} ++ ;; ++ simso-wrs) ++ cpu=sparclite ++ vendor=wrs ++ basic_os=vxworks + ;; +- s390 | s390-*) +- basic_machine=s390-ibm ++ tower | tower-32) ++ cpu=m68k ++ vendor=ncr + ;; +- s390x | s390x-*) +- basic_machine=s390x-ibm ++ vpp*|vx|vx-*) ++ cpu=f301 ++ vendor=fujitsu + ;; +- sa29200) +- basic_machine=a29k-amd +- os=-udi ++ w65) ++ cpu=w65 ++ vendor=wdc + ;; +- sb1) +- basic_machine=mipsisa64sb1-unknown ++ w89k-*) ++ cpu=hppa1.1 ++ vendor=winbond ++ basic_os=proelf + ;; +- sb1el) +- basic_machine=mipsisa64sb1el-unknown ++ none) ++ cpu=none ++ vendor=none + ;; +- sde) +- basic_machine=mipsisa32-sde +- os=-elf ++ leon|leon[3-9]) ++ cpu=sparc ++ vendor=$basic_machine ++ ;; ++ leon-*|leon[3-9]-*) ++ cpu=sparc ++ vendor=`echo "$basic_machine" | sed 's/-.*//'` ++ ;; ++ ++ *-*) ++ # shellcheck disable=SC2162 ++ IFS="-" read cpu vendor <&2 +- exit 1 ++ # Recognize the canonical CPU types that are allowed with any ++ # company name. ++ case $cpu in ++ 1750a | 580 \ ++ | a29k \ ++ | aarch64 | aarch64_be \ ++ | abacus \ ++ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ ++ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ ++ | alphapca5[67] | alpha64pca5[67] \ ++ | am33_2.0 \ ++ | amdgcn \ ++ | arc | arceb \ ++ | arm | arm[lb]e | arme[lb] | armv* \ ++ | avr | avr32 \ ++ | asmjs \ ++ | ba \ ++ | be32 | be64 \ ++ | bfin | bpf | bs2000 \ ++ | c[123]* | c30 | [cjt]90 | c4x \ ++ | c8051 | clipper | craynv | csky | cydra \ ++ | d10v | d30v | dlx | dsp16xx \ ++ | e2k | elxsi | epiphany \ ++ | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ ++ | h8300 | h8500 \ ++ | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ ++ | hexagon \ ++ | i370 | i*86 | i860 | i960 | ia16 | ia64 \ ++ | ip2k | iq2000 \ ++ | k1om \ ++ | le32 | le64 \ ++ | lm32 \ ++ | m32c | m32r | m32rle \ ++ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ ++ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ ++ | m88110 | m88k | maxq | mb | mcore | mep | metag \ ++ | microblaze | microblazeel \ ++ | mips | mipsbe | mipseb | mipsel | mipsle \ ++ | mips16 \ ++ | mips64 | mips64eb | mips64el \ ++ | mips64octeon | mips64octeonel \ ++ | mips64orion | mips64orionel \ ++ | mips64r5900 | mips64r5900el \ ++ | mips64vr | mips64vrel \ ++ | mips64vr4100 | mips64vr4100el \ ++ | mips64vr4300 | mips64vr4300el \ ++ | mips64vr5000 | mips64vr5000el \ ++ | mips64vr5900 | mips64vr5900el \ ++ | mipsisa32 | mipsisa32el \ ++ | mipsisa32r2 | mipsisa32r2el \ ++ | mipsisa32r6 | mipsisa32r6el \ ++ | mipsisa64 | mipsisa64el \ ++ | mipsisa64r2 | mipsisa64r2el \ ++ | mipsisa64r6 | mipsisa64r6el \ ++ | mipsisa64sb1 | mipsisa64sb1el \ ++ | mipsisa64sr71k | mipsisa64sr71kel \ ++ | mipsr5900 | mipsr5900el \ ++ | mipstx39 | mipstx39el \ ++ | mmix \ ++ | mn10200 | mn10300 \ ++ | moxie \ ++ | mt \ ++ | msp430 \ ++ | nds32 | nds32le | nds32be \ ++ | nfp \ ++ | nios | nios2 | nios2eb | nios2el \ ++ | none | np1 | ns16k | ns32k | nvptx \ ++ | open8 \ ++ | or1k* \ ++ | or32 \ ++ | orion \ ++ | picochip \ ++ | pdp10 | pdp11 | pj | pjl | pn | power \ ++ | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ ++ | pru \ ++ | pyramid \ ++ | riscv | riscv32 | riscv64 \ ++ | rl78 | romp | rs6000 | rx \ ++ | s390 | s390x \ ++ | score \ ++ | sh | shl \ ++ | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ ++ | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ ++ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ ++ | sparclite \ ++ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ ++ | spu \ ++ | tahoe \ ++ | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ ++ | tron \ ++ | ubicom32 \ ++ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ ++ | vax \ ++ | visium \ ++ | w65 \ ++ | wasm32 | wasm64 \ ++ | we32k \ ++ | x86 | x86_64 | xc16x | xgate | xps100 \ ++ | xstormy16 | xtensa* \ ++ | ymp \ ++ | z8k | z80) ++ ;; ++ ++ *) ++ echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 ++ exit 1 ++ ;; ++ esac + ;; + esac + + # Here we canonicalize certain aliases for manufacturers. +-case $basic_machine in +- *-digital*) +- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ++case $vendor in ++ digital*) ++ vendor=dec + ;; +- *-commodore*) +- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ++ commodore*) ++ vendor=cbm + ;; + *) + ;; +@@ -1257,202 +1278,215 @@ + + # Decode manufacturer-specific aliases for certain operating systems. + +-if [ x"$os" != x"" ] ++if [ x$basic_os != x ] + then ++ ++# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just ++# set os. ++case $basic_os in ++ gnu/linux*) ++ kernel=linux ++ os=`echo $basic_os | sed -e 's|gnu/linux|gnu|'` ++ ;; ++ nto-qnx*) ++ kernel=nto ++ os=`echo $basic_os | sed -e 's|nto-qnx|qnx|'` ++ ;; ++ *-*) ++ # shellcheck disable=SC2162 ++ IFS="-" read kernel os <&2 +- exit 1 ++ # No normalization, but not necessarily accepted, that comes below. + ;; + esac ++ + else + + # Here we handle the default operating systems that come with various machines. +@@ -1465,249 +1499,352 @@ + # will signal an error saying that MANUFACTURER isn't an operating + # system, and we'll never get to this point. + +-case $basic_machine in +- score-*) +- os=-elf ++kernel= ++case $cpu-$vendor in ++ score-*) ++ os=elf + ;; +- spu-*) +- os=-elf ++ spu-*) ++ os=elf + ;; + *-acorn) +- os=-riscix1.2 ++ os=riscix1.2 + ;; + arm*-rebel) +- os=-linux ++ kernel=linux ++ os=gnu + ;; + arm*-semi) +- os=-aout ++ os=aout ++ ;; ++ c4x-* | tic4x-*) ++ os=coff ++ ;; ++ c8051-*) ++ os=elf + ;; +- c4x-* | tic4x-*) +- os=-coff ++ clipper-intergraph) ++ os=clix ++ ;; ++ hexagon-*) ++ os=elf ++ ;; ++ tic54x-*) ++ os=coff ++ ;; ++ tic55x-*) ++ os=coff ++ ;; ++ tic6x-*) ++ os=coff + ;; + # This must come before the *-dec entry. + pdp10-*) +- os=-tops20 ++ os=tops20 + ;; + pdp11-*) +- os=-none ++ os=none + ;; + *-dec | vax-*) +- os=-ultrix4.2 ++ os=ultrix4.2 + ;; + m68*-apollo) +- os=-domain ++ os=domain + ;; + i386-sun) +- os=-sunos4.0.2 ++ os=sunos4.0.2 + ;; + m68000-sun) +- os=-sunos3 +- # This also exists in the configure program, but was not the +- # default. +- # os=-sunos4 ++ os=sunos3 + ;; + m68*-cisco) +- os=-aout ++ os=aout + ;; +- mep-*) +- os=-elf ++ mep-*) ++ os=elf + ;; + mips*-cisco) +- os=-elf ++ os=elf + ;; + mips*-*) +- os=-elf ++ os=elf + ;; + or32-*) +- os=-coff ++ os=coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. +- os=-sysv3 ++ os=sysv3 + ;; + sparc-* | *-sun) +- os=-sunos4.1.1 ++ os=sunos4.1.1 + ;; +- *-be) +- os=-beos ++ pru-*) ++ os=elf + ;; +- *-haiku) +- os=-haiku ++ *-be) ++ os=beos + ;; + *-ibm) +- os=-aix ++ os=aix + ;; +- *-knuth) +- os=-mmixware ++ *-knuth) ++ os=mmixware + ;; + *-wec) +- os=-proelf ++ os=proelf + ;; + *-winbond) +- os=-proelf ++ os=proelf + ;; + *-oki) +- os=-proelf ++ os=proelf + ;; + *-hp) +- os=-hpux ++ os=hpux + ;; + *-hitachi) +- os=-hiux ++ os=hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) +- os=-sysv ++ os=sysv + ;; + *-cbm) +- os=-amigaos ++ os=amigaos + ;; + *-dg) +- os=-dgux ++ os=dgux + ;; + *-dolphin) +- os=-sysv3 ++ os=sysv3 + ;; + m68k-ccur) +- os=-rtu ++ os=rtu + ;; + m88k-omron*) +- os=-luna ++ os=luna + ;; +- *-next ) +- os=-nextstep ++ *-next) ++ os=nextstep + ;; + *-sequent) +- os=-ptx ++ os=ptx + ;; + *-crds) +- os=-unos ++ os=unos + ;; + *-ns) +- os=-genix ++ os=genix + ;; + i370-*) +- os=-mvs +- ;; +- *-next) +- os=-nextstep3 ++ os=mvs + ;; + *-gould) +- os=-sysv ++ os=sysv + ;; + *-highlevel) +- os=-bsd ++ os=bsd + ;; + *-encore) +- os=-bsd ++ os=bsd + ;; + *-sgi) +- os=-irix ++ os=irix + ;; + *-siemens) +- os=-sysv4 ++ os=sysv4 + ;; + *-masscomp) +- os=-rtu ++ os=rtu + ;; + f30[01]-fujitsu | f700-fujitsu) +- os=-uxpv ++ os=uxpv + ;; + *-rom68k) +- os=-coff ++ os=coff + ;; + *-*bug) +- os=-coff ++ os=coff + ;; + *-apple) +- os=-macos ++ os=macos + ;; + *-atari*) +- os=-mint ++ os=mint ++ ;; ++ *-wrs) ++ os=vxworks + ;; + *) +- os=-none ++ os=none + ;; + esac ++ + fi + ++# Now, validate our (potentially fixed-up) OS. ++case $os in ++ # Sometimes we do "kernel-abi", so those need to count as OSes. ++ musl* | newlib* | uclibc*) ++ ;; ++ # Likewise for "kernel-libc" ++ eabi | eabihf | gnueabi | gnueabihf) ++ ;; ++ # Now accept the basic system types. ++ # The portable systems comes first. ++ # Each alternative MUST end in a * to match a version number. ++ gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ ++ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ ++ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ ++ | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ ++ | hiux* | abug | nacl* | netware* | windows* \ ++ | os9* | macos* | osx* | ios* \ ++ | mpw* | magic* | mmixware* | mon960* | lnews* \ ++ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ ++ | aos* | aros* | cloudabi* | sortix* | twizzler* \ ++ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ ++ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ ++ | mirbsd* | netbsd* | dicos* | openedition* | ose* \ ++ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \ ++ | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ ++ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ ++ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ ++ | udi* | lites* | ieee* | go32* | aux* | hcos* \ ++ | chorusrdb* | cegcc* | glidix* \ ++ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ ++ | midipix* | mingw32* | mingw64* | mint* \ ++ | uxpv* | beos* | mpeix* | udk* | moxiebox* \ ++ | interix* | uwin* | mks* | rhapsody* | darwin* \ ++ | openstep* | oskit* | conix* | pw32* | nonstopux* \ ++ | storm-chaos* | tops10* | tenex* | tops20* | its* \ ++ | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ ++ | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ ++ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ ++ | skyos* | haiku* | rdos* | toppers* | drops* | es* \ ++ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ ++ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ ++ | nsk* | powerunix* | genode* | zvmoe* ) ++ ;; ++ # This one is extra strict with allowed versions ++ sco3.2v2 | sco3.2v[4-9]* | sco5v6*) ++ # Don't forget version if it is 3.2v4 or newer. ++ ;; ++ none) ++ ;; ++ *) ++ echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 ++ exit 1 ++ ;; ++esac ++ ++# As a final step for OS-related things, validate the OS-kernel combination ++# (given a valid OS), if there is a kernel. ++case $kernel-$os in ++ linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* ) ++ ;; ++ -dietlibc* | -newlib* | -musl* | -uclibc* ) ++ # These are just libc implementations, not actual OSes, and thus ++ # require a kernel. ++ echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 ++ exit 1 ++ ;; ++ kfreebsd*-gnu* | kopensolaris*-gnu*) ++ ;; ++ nto-qnx*) ++ ;; ++ *-eabi* | *-gnueabi*) ++ ;; ++ -*) ++ # Blank kernel with real OS is always fine. ++ ;; ++ *-*) ++ echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 ++ exit 1 ++ ;; ++esac ++ + # Here we handle the case where we know the os, and the CPU type, but not the + # manufacturer. We pick the logical manufacturer. +-vendor=unknown +-case $basic_machine in +- *-unknown) +- case $os in +- -riscix*) ++case $vendor in ++ unknown) ++ case $cpu-$os in ++ *-riscix*) + vendor=acorn + ;; +- -sunos*) ++ *-sunos*) + vendor=sun + ;; +- -cnk*|-aix*) ++ *-cnk* | *-aix*) + vendor=ibm + ;; +- -beos*) ++ *-beos*) + vendor=be + ;; +- -hpux*) ++ *-hpux*) + vendor=hp + ;; +- -mpeix*) ++ *-mpeix*) + vendor=hp + ;; +- -hiux*) ++ *-hiux*) + vendor=hitachi + ;; +- -unos*) ++ *-unos*) + vendor=crds + ;; +- -dgux*) ++ *-dgux*) + vendor=dg + ;; +- -luna*) ++ *-luna*) + vendor=omron + ;; +- -genix*) ++ *-genix*) + vendor=ns + ;; +- -mvs* | -opened*) ++ *-clix*) ++ vendor=intergraph ++ ;; ++ *-mvs* | *-opened*) ++ vendor=ibm ++ ;; ++ *-os400*) + vendor=ibm + ;; +- -os400*) ++ s390-* | s390x-*) + vendor=ibm + ;; +- -ptx*) ++ *-ptx*) + vendor=sequent + ;; +- -tpf*) ++ *-tpf*) + vendor=ibm + ;; +- -vxsim* | -vxworks* | -windiss*) ++ *-vxsim* | *-vxworks* | *-windiss*) + vendor=wrs + ;; +- -aux*) ++ *-aux*) + vendor=apple + ;; +- -hms*) ++ *-hms*) + vendor=hitachi + ;; +- -mpw* | -macos*) ++ *-mpw* | *-macos*) + vendor=apple + ;; +- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) ++ *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) + vendor=atari + ;; +- -vos*) ++ *-vos*) + vendor=stratus + ;; + esac +- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; + esac + +-echo $basic_machine$os ++echo "$cpu-$vendor-${kernel:+$kernel-}$os" + exit + + # Local variables: +-# eval: (add-hook 'write-file-hooks 'time-stamp) ++# eval: (add-hook 'before-save-hook 'time-stamp) + # time-stamp-start: "timestamp='" + # time-stamp-format: "%:y-%02m-%02d" + # time-stamp-end: "'" diff --git a/mtdev/default/patches-enabled/0001-Avoid-__builtin_ffs.patch b/mtdev/default/patches-enabled/0001-Avoid-__builtin_ffs.patch new file mode 120000 index 0000000..dff1fff --- /dev/null +++ b/mtdev/default/patches-enabled/0001-Avoid-__builtin_ffs.patch @@ -0,0 +1 @@ +../patches-available/0001-Avoid-__builtin_ffs.patch \ No newline at end of file diff --git a/mtdev/default/patches-enabled/0100-config-sub.patch b/mtdev/default/patches-enabled/0100-config-sub.patch new file mode 120000 index 0000000..a81b02f --- /dev/null +++ b/mtdev/default/patches-enabled/0100-config-sub.patch @@ -0,0 +1 @@ +../patches-available/0100-config-sub.patch \ No newline at end of file diff --git a/musl-cross-make/default/conf.sh b/musl-cross-make/default/conf.sh new file mode 100755 index 0000000..a7059cd --- /dev/null +++ b/musl-cross-make/default/conf.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +[ -f config.mak ] || cp config.mak.dist config.mak + +${EDITOR:-vi} config.mak diff --git a/musl-cross-make/default/deps b/musl-cross-make/default/deps new file mode 100644 index 0000000..7d86847 --- /dev/null +++ b/musl-cross-make/default/deps @@ -0,0 +1,22 @@ +lix-os-filesystem +linux-kernel +ubase +sbase +dash +perl +gnu-tar +gnu-sed +gnu-grep +diffutils +awk +make +patch +bearssl +curl +tls-certs +ncurses +file +gzip +bzip2 +xz +$EDITORDEP diff --git a/musl-cross-make/default/env.sh b/musl-cross-make/default/env.sh new file mode 100755 index 0000000..4ffd2f1 --- /dev/null +++ b/musl-cross-make/default/env.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +export CC="gcc" +export CXX="g++" +#export LDFLAGS="${LDFLAGS:---static -static}" +#export CFLAGS="${CFLAGS:--fPIE -fPIC}" +#export CPPFLAGS="${CPPFLAGS:---static -static}" +#export CXXFLAGS="${CXXFLAGS:---static -static}" +export PREFIX="/usr" # some packages need a value. "" doesn't work for them. + +if [ -e /etc/ssl/ca-bundle.crt ]; then + export SSL_CERT_FILE=/etc/ssl/ca-bundle.crt +fi + +if [ "$(which python3 2> /dev/null)" ]; then + export PY3VER="$(python3 -V | sed -n 's/^Python \(\w\+\.\w\+\).*/\1/p')" + export PY3PKGS="/lib/python$PY3VER/site-packages" + export PYTHONHOME="/usr:/usr" + export PYTHONPATH="/lib/python/$PY3VER:$PY3PKGS" +fi + +if [ "$(which pkgconf 2> /dev/null)" ]; then + export PKG_CONFIG="$(which pkgconf) " +fi + +# TODO: remove the need for these lines by making musl-cross-make build a gcc +# with a header search path of /include only, with all headers contained there. +export CPATH="${CPATH:-/include}" +export C_INCLUDE_PATH="/powerpc64le-lix-linux-musl/include" +export CPLUS_INCLUDE_PATH="/include/c++/9.2.0/powerpc64le-lix-linux-musl:/include/c++/9.2.0" diff --git a/musl-cross-make/default/inst.sh b/musl-cross-make/default/inst.sh new file mode 100755 index 0000000..c9b0ff1 --- /dev/null +++ b/musl-cross-make/default/inst.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +set -e + +make install # -j$(nproc) install + +# some other packages want a c compiler at /bin/cc. creating a link here +# can save a lot of configuration elsewhere. +ln -sf gcc /bin/cc + +# support dynamically linked executables, even though static is preferred. +# without this libc "interpreter" library in the expected place, dynamically +# linked executables return a "file not found" error. (this accommodation +# was prompted by the gnupg-dynamic and pcsc-lite packages and may be rolled +# back if/when those packages start working properly when linked statically.) +musldir="$(ls -d /*-musl | head -n1)" +ldfile="$(basename $(ls $musldir/lib/ld-*.so.1 | head -n1))" +ln -sf "$musldir/lib/libc.so" "/lib/$ldfile" diff --git a/musl-cross-make/default/make.sh b/musl-cross-make/default/make.sh new file mode 100755 index 0000000..22f63a4 --- /dev/null +++ b/musl-cross-make/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +make -j$(nproc) diff --git a/musl-cross-make/default/patch b/musl-cross-make/default/patch new file mode 100644 index 0000000..1f35503 --- /dev/null +++ b/musl-cross-make/default/patch @@ -0,0 +1,58 @@ +--- a/config.mak.dist 2020-08-02 20:42:16.000000000 +0000 ++++ b/config.mak.dist 2020-10-04 22:00:17.690000000 +0000 +@@ -4,6 +4,36 @@ + # Copy to config.mak and edit as desired. + # + ++# ++ ++# fox has edited this file to suit their own machine. ++# these edits come from the 'patch' file in the package directory and have not ++# been committed upstream, so a 'git diff' should reveal the changes they made ++# and a 'git checkout config.mak.dist' should undo those changes. ++ ++# compile against the headers being used. need both lines for this to work. ++LINUX_VER= ++LINUX_SRCDIR=/include/linux ++ ++# fox's target ++TARGET=powerpc64le-lix-linux-musl ++BUILD=$(TARGET) # uncomment when rebuilding after reboot ++#NATIVE=yes # uncomment when rebuilding after reboot ++ ++# compilation on a static-only system will fail if the 'static' flags are not ++# set in the CC variable because some configure scripts don't use the ++# {LD,C,CXX}FLAGS when checking if the compiler works. ++COMMON_CONFIG += CC="gcc" CXX="g++" ++COMMON_CONFIG += CFLAGS="-g0 -Os -fPIC -Wno-error=parentheses" ++COMMON_CONFIG += CXXFLAGS="-g0 -Os -fPIC" ++#COMMON_CONFIG += LDFLAGS="-s -static --static" ++ ++# decimal-float compiles fine under the bootstrap distro (Alpine) but breaks on ++# recompilation in mu-os. haven't worked out why yet, so this is a workaround. ++GCC_CONFIG += --disable-libquadmath --disable-decimal-float --enable-default-ssp ++ ++# ++ + # There is no default TARGET; you must select one here or on the make + # command line. Some examples: + +@@ -22,6 +52,9 @@ + # OUTPUT = /opt/cross + # OUTPUT = /usr/local + ++# DON'T CHANGE THIS UNLESS YOU ALSO EDIT inst.sh ++OUTPUT=/ ++ + # By default, latest supported release versions of musl and the toolchain + # components are used. You can override those here, but the version selected + # must be supported (under hashes/ and patches/) to work. For musl, you +@@ -44,7 +77,7 @@ + # By default source archives are downloaded with wget. curl is also an option. + + # DL_CMD = wget -c -O +-# DL_CMD = curl -C - -L -o ++DL_CMD = curl -C - -L -o + + # Check sha-1 hashes of downloaded source archives. On gnu systems this is + # usually done with sha1sum. diff --git a/musl-cross-make/default/patch.bak b/musl-cross-make/default/patch.bak new file mode 100644 index 0000000..827e768 --- /dev/null +++ b/musl-cross-make/default/patch.bak @@ -0,0 +1,60 @@ +diff --git a/config.mak.dist b/config.mak.dist +index 181976c..06c3f9f 100644 +--- a/config.mak.dist ++++ b/config.mak.dist +@@ -4,6 +4,36 @@ + # Copy to config.mak and edit as desired. + # + ++# ++ ++# fox has edited this file to suit their own machine. ++# these edits come from the 'patch' file in the package directory and have not ++# been committed upstream, so a 'git diff' should reveal the changes they made ++# and a 'git checkout config.mak.dist' should undo those changes. ++ ++# compile against the headers being used. need both lines for this to work. ++LINUX_VER= ++LINUX_SRCDIR=/include/linux ++ ++# fox's target ++TARGET=powerpc64le-lix-linux-musl ++BUILD=$(TARGET) # uncomment when rebuilding after reboot ++#NATIVE=yes # uncomment when rebuilding after reboot ++ ++# compilation on a static-only system will fail if the 'static' flags are not ++# set in the CC variable because some configure scripts don't use the ++# {LD,C,CXX}FLAGS when checking if the compiler works. ++COMMON_CONFIG += CC="gcc -static --static" CXX="g++ -static --static" ++COMMON_CONFIG += CFLAGS="-g0 -Os -static --static -Wno-error=parentheses" ++COMMON_CONFIG += CXXFLAGS="-g0 -Os -static --static" ++COMMON_CONFIG += LDFLAGS="-s -static --static" ++ ++# decimal-float compiles fine under the bootstrap distro (Alpine) but breaks on ++# recompilation in lix os. haven't worked out why yet, so this is a workaround. ++GCC_CONFIG += --disable-libquadmath --disable-decimal-float ++ ++# ++ + # There is no default TARGET; you must select one here or on the make + # command line. Some examples: + +@@ -22,6 +52,9 @@ + # OUTPUT = /opt/cross + # OUTPUT = /usr/local + ++OUTPUT=/ ++ ++ + # By default, latest supported release versions of musl and the toolchain + # components are used. You can override those here, but the version selected + # must be supported (under hashes/ and patches/) to work. For musl, you +@@ -44,7 +77,7 @@ + # By default source archives are downloaded with wget. curl is also an option. + + # DL_CMD = wget -c -O +-# DL_CMD = curl -C - -L -o ++DL_CMD = curl -C - -L -o + + # Check sha-1 hashes of downloaded source archives. On gnu systems this is + # usually done with sha1sum. diff --git a/nano/default/conf.sh b/nano/default/conf.sh new file mode 100755 index 0000000..e64e71f --- /dev/null +++ b/nano/default/conf.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +CFLAGS="$CFLAGS -I/include/ncurses" \ + ./configure --prefix= + +## explanation +# +# CFLAGS: the configure script can't find the ncurses headers on its own. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/nano/default/deps b/nano/default/deps new file mode 100644 index 0000000..528044d --- /dev/null +++ b/nano/default/deps @@ -0,0 +1,14 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +dash +musl-cross-make +make +perl +patch +awk +gnu-grep +gnu-sed +texinfo +ncurses diff --git a/ncgol/default/conf.sh b/ncgol/default/conf.sh new file mode 100755 index 0000000..fc97c0a --- /dev/null +++ b/ncgol/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +${EDITOR:-vi} Makefile diff --git a/ncgol/default/deps b/ncgol/default/deps new file mode 100644 index 0000000..78855b8 --- /dev/null +++ b/ncgol/default/deps @@ -0,0 +1,10 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +dash +musl-cross-make +nano +patch +make +ncurses diff --git a/ncgol/default/inst.sh b/ncgol/default/inst.sh new file mode 100755 index 0000000..3924f26 --- /dev/null +++ b/ncgol/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +cp -av ncgol /bin/ diff --git a/ncgol/default/patch b/ncgol/default/patch new file mode 100644 index 0000000..9da228f --- /dev/null +++ b/ncgol/default/patch @@ -0,0 +1,10 @@ +--- /var/src/ncgol/d347813ccde96339de27751877f411e66453ae06/Makefile 2020-08-09 01:46:04.540000000 +0000 ++++ /var/lyr/upper/lix/ncgol/d347813ccde96339de27751877f411e66453ae06/src/Makefile 2020-08-09 01:48:32.510000000 +0000 +@@ -1,5 +1,5 @@ +-CFLAGS = -Wall -Wextra -Wshadow -pedantic -g +-LDFLAGS = -lncurses ++CFLAGS = -Wall -Wextra -Wshadow -pedantic -g -static --static -I/include/ncurses ++LDFLAGS = -lncurses -static --static + + SRC = ncgol.c + OBJ = ${SRC:.c=.o} diff --git a/ncurses/default/conf.sh b/ncurses/default/conf.sh new file mode 100755 index 0000000..560ef78 --- /dev/null +++ b/ncurses/default/conf.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +./configure \ + --without-tests \ + --without-shared \ + --without-ada \ + --without-cxx-binding \ + --enable-pc-files \ + --enable-widec \ + --prefix= + +## explanation +# +# --without-tests: we don't need to compile the tests. +# +# --without-shared: don't bother compiling shared libraries. +# +# --without-ada: don't bother compiling the "ncurses with ada" demo. +# +# --without-cxx-binding: don't bother compiling the "ncurses with c++" demo. +# +# --enable-pc-files: build pkgconfig configuration files. +# +# --enable-widec: build the 'ncursesw' library. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/ncurses/default/deps b/ncurses/default/deps new file mode 100644 index 0000000..be36b46 --- /dev/null +++ b/ncurses/default/deps @@ -0,0 +1,2 @@ +lix-os-filesystem +pkgconf diff --git a/ncurses/default/inst.sh b/ncurses/default/inst.sh new file mode 100755 index 0000000..aab88d1 --- /dev/null +++ b/ncurses/default/inst.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +DESTDIR=/ make -j$(nproc) install + +# compiling with wide character support creates ncursesw.a and ncursesw.h. +# these can be used just as ncurses.a and ncurses.h, but some packages don't +# look for them. creating these softlinks solves this problem. +for lib in ncurses ncurses++ form panel menu; do + [ ! -e "/lib/pkgconfig" ] \ + || ln -sf "${lib}w.pc" "/lib/pkgconfig/${lib}.pc" + + [ ! -e "/lib/lib${lib}w.a" ] \ + || ln -sf "lib${lib}w.a" "/lib/lib${lib}.a" + +done +ln -sf "/include/ncursesw" "/include/ncurses" diff --git a/netsurf-fb/default/conf.sh b/netsurf-fb/default/conf.sh new file mode 100755 index 0000000..0ebe596 --- /dev/null +++ b/netsurf-fb/default/conf.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +#autoreconf -vif +#./configure \ +# --disable-shared \ +# --enable-static \ +# --build="$(uname -m)-lix-linux-musl" \ +# --host="$(uname -m)-lix-linux-musl" \ +# --prefix= + +[ -e "netsurf/Makefile.config" ] || \ +cp netsurf/Makefile.config.example netsurf/Makefile.config + +$EDITOR netsurf/Makefile.config + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/netsurf-fb/default/deps b/netsurf-fb/default/deps new file mode 100644 index 0000000..8293602 --- /dev/null +++ b/netsurf-fb/default/deps @@ -0,0 +1,38 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +perl-dynamic +perl-html-entities +m4 +automake +autoconf +dash +gnu-grep +gnu-sed +xxd +zlib +pkgconf +expat +flex +bison +libwebp +libpng +libjpeg-turbo +gperf +bearssl +libressl +curl +libxml2 +diffutils +libtool +libxslt +libffi +mesa +wayland +wayland-protocols +$EDITORDEP diff --git a/netsurf-fb/default/inst.sh b/netsurf-fb/default/inst.sh new file mode 100755 index 0000000..4df1c34 --- /dev/null +++ b/netsurf-fb/default/inst.sh @@ -0,0 +1,16 @@ +#!/bin/sh -e + +#cat << EOF > /bin/pkg-config +#!/bin/sh -e + +#pkgconfbin="\$(which pkgconf)" +#[ "\$1" = "--version" ] && \$pkgconfbin --version || \$pkgconfbin --static \$@ +#EOF +#chmod +x /bin/pkg-config + +#ln -s /bin/pkgconf /bin/pkgconfig + +TARGET="framebuffer" \ +make -j$(nproc) install + +#rm /bin/pkg-config diff --git a/netsurf-fb/default/make.sh b/netsurf-fb/default/make.sh new file mode 100755 index 0000000..f16816e --- /dev/null +++ b/netsurf-fb/default/make.sh @@ -0,0 +1,35 @@ +#!/bin/sh -e + +#cat << EOF > /bin/pkg-config +#!/bin/sh -e + +#pkgconfbin="\$(which pkgconf)" +#[ "\$1" = "--version" ] && \$pkgconfbin --version || \$pkgconfbin --static \$@ +#EOF +#chmod +x /bin/pkg-config + +#cd netsurf/resources +#awk -f /mnt/how/messages.awk -v lang=en -v filter=fb FatMessages > en/Messages +#awk -f /mnt/how/messages.awk -v lang=it -v filter=fb FatMessages > it/Messages +#awk -f /mnt/how/messages.awk -v lang=fr -v filter=fb FatMessages > fr/Messages +#awk -f /mnt/how/messages.awk -v lang=de -v filter=fb FatMessages > de/Messages +#cd - + +#ln -s /bin/pkgconf /bin/pkg-config +#PKG_CONFIG="pkgconf --static" \ +#LIBS="-lpng -lz -lffi" \ +#CFLAGS="$SHARED_CFLAGS" \ +#LDFLAGS="$SHARED_LDFLAGS -lpng -lz -lffi" \ +#CXXFLAGS="$SHARED_CXXFLAGS" \ +#BUILD_LDFLAGS="$SHARED_LDFLAGS -lpng -lz -lffi" \ +#TARGET="framebuffer" \ +#make -j$(nproc) + +PKG_CONFIG="pkgconf --static" \ +LIBS="-lpng -lz -lffi" \ +CFLAGS="$CFLAGS" \ +LDFLAGS="$LDFLAGS -lpng -lz -lffi" \ +CXXFLAGS="$CXXFLAGS" \ +BUILD_LDFLAGS="$LDFLAGS -lpng -lz -lffi" \ +TARGET="framebuffer" \ +make -j$(nproc) diff --git a/netsurf-fb/default/messages.awk b/netsurf-fb/default/messages.awk new file mode 100644 index 0000000..3315c33 --- /dev/null +++ b/netsurf-fb/default/messages.awk @@ -0,0 +1,9 @@ +/^(#|$)/ {next} +{ + i = index($0, ":") + if (!i) + next + split(substr($0, 1, i - 1), key, ".") + if (lang == key[1] && (filter == "any" || key[2] == "all" || key[3] == filter)) + print key[3] substr($0, i) +} diff --git a/netsurf-gtk/default/conf.sh b/netsurf-gtk/default/conf.sh new file mode 100755 index 0000000..0ebe596 --- /dev/null +++ b/netsurf-gtk/default/conf.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +#autoreconf -vif +#./configure \ +# --disable-shared \ +# --enable-static \ +# --build="$(uname -m)-lix-linux-musl" \ +# --host="$(uname -m)-lix-linux-musl" \ +# --prefix= + +[ -e "netsurf/Makefile.config" ] || \ +cp netsurf/Makefile.config.example netsurf/Makefile.config + +$EDITOR netsurf/Makefile.config + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/netsurf-gtk/default/deps b/netsurf-gtk/default/deps new file mode 100644 index 0000000..836e1c4 --- /dev/null +++ b/netsurf-gtk/default/deps @@ -0,0 +1,55 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +perl-dynamic +perl-html-entities +m4 +automake +autoconf +dash +gnu-grep +gnu-sed +xxd +zlib +bzip2 +pkgconf +xz +expat +flex +bison +libwebp +libpng +libjpeg-turbo +pixman +gperf +bearssl +libressl +curl +libxml2 +diffutils +libtool +libxslt +mesa +wayland +wayland-protocols +expat +libffi +glib +atk +fribidi +cairo +harfbuzz +freetype-harfbuzz +fontconfig +gdk-pixbuf +libepoxy +libxkbcommon-dynamic +python3-dynamic +pango +gtk-dynamic >= 3.0.0 +$EDITORDEP diff --git a/netsurf-gtk/default/inst.sh b/netsurf-gtk/default/inst.sh new file mode 100755 index 0000000..95ca51c --- /dev/null +++ b/netsurf-gtk/default/inst.sh @@ -0,0 +1,16 @@ +#!/bin/sh -e + +#cat << EOF > /bin/pkg-config +#!/bin/sh -e + +#pkgconfbin="\$(which pkgconf)" +#[ "\$1" = "--version" ] && \$pkgconfbin --version || \$pkgconfbin --static \$@ +#EOF +#chmod +x /bin/pkg-config + +#ln -s /bin/pkgconf /bin/pkgconfig + +TARGET="gtk3" \ +make -j$(nproc) install + +#rm /bin/pkg-config diff --git a/netsurf-gtk/default/make.sh b/netsurf-gtk/default/make.sh new file mode 100755 index 0000000..91bc472 --- /dev/null +++ b/netsurf-gtk/default/make.sh @@ -0,0 +1,39 @@ +#!/bin/sh -e + +#cat << EOF > /bin/pkg-config +#!/bin/sh -e + +#pkgconfbin="\$(which pkgconf)" +#[ "\$1" = "--version" ] && \$pkgconfbin --version || \$pkgconfbin --static \$@ +#EOF +#chmod +x /bin/pkg-config + +#cd netsurf/resources +#awk -f /mnt/how/messages.awk -v lang=en -v filter=fb FatMessages > en/Messages +#awk -f /mnt/how/messages.awk -v lang=it -v filter=fb FatMessages > it/Messages +#awk -f /mnt/how/messages.awk -v lang=fr -v filter=fb FatMessages > fr/Messages +#awk -f /mnt/how/messages.awk -v lang=de -v filter=fb FatMessages > de/Messages +#cd - + +#ln -s /bin/pkgconf /bin/pkg-config +#PKG_CONFIG="pkgconf --static" \ +#LIBS="-lpng -lz -lffi" \ +#CFLAGS="$SHARED_CFLAGS" \ +#LDFLAGS="$SHARED_LDFLAGS -lpng -lz -lffi" \ +#CXXFLAGS="$SHARED_CXXFLAGS" \ +#BUILD_LDFLAGS="$SHARED_LDFLAGS -lpng -lz -lffi" \ +#TARGET="framebuffer" \ +#make -j$(nproc) + +#PKG_CONFIG="pkgconf --static" \ +#LIBS="-lpng -lz -lffi" \ +#CFLAGS="$CFLAGS" \ +#LDFLAGS="$LDFLAGS -lpng -lz -lffi" \ +#CXXFLAGS="$CXXFLAGS" \ +#BUILD_LDFLAGS="$LDFLAGS -lpng -lz -lffi" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +BUILD_LDFLAGS="$SHARED_LDFLAGS" \ +TARGET="gtk3" \ +make -j$(nproc) diff --git a/netsurf-gtk/default/messages.awk b/netsurf-gtk/default/messages.awk new file mode 100644 index 0000000..3315c33 --- /dev/null +++ b/netsurf-gtk/default/messages.awk @@ -0,0 +1,9 @@ +/^(#|$)/ {next} +{ + i = index($0, ":") + if (!i) + next + split(substr($0, 1, i - 1), key, ".") + if (lang == key[1] && (filter == "any" || key[2] == "all" || key[3] == filter)) + print key[3] substr($0, i) +} diff --git a/netsurf-qs/default/conf.sh b/netsurf-qs/default/conf.sh new file mode 100755 index 0000000..1f41d2a --- /dev/null +++ b/netsurf-qs/default/conf.sh @@ -0,0 +1,33 @@ +#!/bin/bash -e + +#autoreconf -vif +#./configure \ +# --disable-shared \ +# --enable-static \ +# --build="$(uname -m)-lix-linux-musl" \ +# --host="$(uname -m)-lix-linux-musl" \ +# --prefix= + +#[ -e "netsurf/Makefile.config" ] || \ +#cp netsurf/Makefile.config.example netsurf/Makefile.config + +#$EDITOR netsurf/Makefile.config + +ln -sf /bin/pkgconf /bin/pkg-config + +unset HOST +source "$name" || true +ns-package-install +ns-clone + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/netsurf-qs/default/deps b/netsurf-qs/default/deps new file mode 100644 index 0000000..aab2a8d --- /dev/null +++ b/netsurf-qs/default/deps @@ -0,0 +1,33 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +perl-dynamic +perl-html-entities +m4 +automake +autoconf +dash +gnu-grep +gnu-sed +xxd +zlib +pkgconf +expat +flex +bison +libwebp +libpng +libjpeg-turbo +gperf +bearssl +libressl +curl +bash +git +strace +$EDITORDEP diff --git a/netsurf-qs/default/inst.sh b/netsurf-qs/default/inst.sh new file mode 100755 index 0000000..e777330 --- /dev/null +++ b/netsurf-qs/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "nothing to install yet" diff --git a/netsurf-qs/default/make.sh b/netsurf-qs/default/make.sh new file mode 100755 index 0000000..a832cd0 --- /dev/null +++ b/netsurf-qs/default/make.sh @@ -0,0 +1,14 @@ +#!/bin/bash -e + +ln -sf /bin/pkgconf /bin/pkg-config +unset HOST +source "$name" || true +ns-pull-install + +cd ~/dev-netsurf/workspace +source env.sh || true + +cd netsurf +make TARGET=framebuffer BUILD_LDFLAGS="$LDFLAGS -lpng -lz" + +rm /bin/pkg-config diff --git a/netsurf-qs/default/messages.awk b/netsurf-qs/default/messages.awk new file mode 100644 index 0000000..3315c33 --- /dev/null +++ b/netsurf-qs/default/messages.awk @@ -0,0 +1,9 @@ +/^(#|$)/ {next} +{ + i = index($0, ":") + if (!i) + next + split(substr($0, 1, i - 1), key, ".") + if (lang == key[1] && (filter == "any" || key[2] == "all" || key[3] == filter)) + print key[3] substr($0, i) +} diff --git a/nettle/default/conf.sh b/nettle/default/conf.sh new file mode 100755 index 0000000..60bfa62 --- /dev/null +++ b/nettle/default/conf.sh @@ -0,0 +1,11 @@ +#!/bin/sh -e + +./configure \ + --enable-fat \ + --disable-openssl \ + --disable-documentation \ + --enable-static \ + --enable-shared \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" diff --git a/nettle/default/deps b/nettle/default/deps new file mode 100644 index 0000000..d88fc2c --- /dev/null +++ b/nettle/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +gmp diff --git a/nettle/default/inst.sh b/nettle/default/inst.sh new file mode 100755 index 0000000..2ea59e4 --- /dev/null +++ b/nettle/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +make install diff --git a/nettle/default/make.sh b/nettle/default/make.sh new file mode 100755 index 0000000..fd200f4 --- /dev/null +++ b/nettle/default/make.sh @@ -0,0 +1,6 @@ +#!/bin/sh -e + +make -j$(nproc) + +# strip comments in fields from .pc as it confuses pkgconf +sed -i -e 's/ \#.*//' *.pc diff --git a/nix/default/deps b/nix/default/deps new file mode 100644 index 0000000..18e6577 --- /dev/null +++ b/nix/default/deps @@ -0,0 +1,27 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +flex +bison +xz +bzip2 +perl +m4 +pkgconf +libressl +tls-certs +curl +sqlite +brotli +libgc +libboost +libseccomp +editline diff --git a/nldev/default/conf.sh b/nldev/default/conf.sh new file mode 100755 index 0000000..0243b55 --- /dev/null +++ b/nldev/default/conf.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +${EDITOR:-vi} config.mk diff --git a/nldev/default/patch b/nldev/default/patch new file mode 100644 index 0000000..326f2ad --- /dev/null +++ b/nldev/default/patch @@ -0,0 +1,20 @@ +diff --git a/config.mk b/config.mk +index 04b8215..df69901 100644 +--- a/config.mk ++++ b/config.mk +@@ -7,13 +7,14 @@ VERSION = 0.3 + # paths + PREFIX = /usr + MANPREFIX = ${PREFIX}/share/man ++DESTDIR = $(MUFS) + + # includes and libs + INCS = -I. -I/usr/include + LIBS = -L/usr/lib -lc + + # flags +-CPPFLAGS = -DVERSION=\"${VERSION}\" -D_DEFAULT_SOURCE -D_GNU_SOURCE ++CPPFLAGS = -DVERSION=\"${VERSION}\" -D_DEFAULT_SOURCE -D_GNU_SOURCE $(CXXFLAGS) + CFLAGS = -g -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS} + LDFLAGS = -static -g ${LIBS} + #LDFLAGS = -s ${LIBS} diff --git a/nlmon/default/conf.sh b/nlmon/default/conf.sh new file mode 100755 index 0000000..0243b55 --- /dev/null +++ b/nlmon/default/conf.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +${EDITOR:-vi} config.mk diff --git a/nlmon/default/patch b/nlmon/default/patch new file mode 100644 index 0000000..0db9c61 --- /dev/null +++ b/nlmon/default/patch @@ -0,0 +1,23 @@ +diff --git a/config.mk b/config.mk +index 3609719..da2b6b8 100644 +--- a/config.mk ++++ b/config.mk +@@ -5,15 +5,16 @@ VERSION = 0.3 + # Customize below to fit your system + + # paths +-PREFIX ?= /usr ++PREFIX ?= / + MANPREFIX = ${PREFIX}/share/man ++DESTDIR = $(MUFS) + + # includes and libs + INCS = -I. -I/usr/include + LIBS = -L/usr/lib -lc + + # flags +-CPPFLAGS = -DVERSION=\"${VERSION}\" ++CPPFLAGS = -DVERSION=\"${VERSION}\" $(CXXFLAGS) + CFLAGS = -g -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS} + LDFLAGS = -g -static ${LIBS} + #LDFLAGS = -s ${LIBS} diff --git a/npth/default/deps b/npth/default/deps new file mode 100644 index 0000000..8494467 --- /dev/null +++ b/npth/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +musl-cross-make +make +automake +autoconf +dash +patch +awk +gnu-grep +gnu-sed diff --git a/openjpeg/default/conf.sh b/openjpeg/default/conf.sh new file mode 100755 index 0000000..f31a60a --- /dev/null +++ b/openjpeg/default/conf.sh @@ -0,0 +1,9 @@ +#!/bin/sh -e + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +cmake \ + -DCMAKE_INSTALL_PREFIX=$PREFIX \ + -DCMAKE_BUILD_TYPE=None \ + -DOPENJPEG_INSTALL_LIB_DIR=lib diff --git a/openjpeg/default/deps b/openjpeg/default/deps new file mode 100644 index 0000000..7a18991 --- /dev/null +++ b/openjpeg/default/deps @@ -0,0 +1,15 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +cmake +libpng +libtiff +lcms2 diff --git a/openjpeg/default/patches-available/CVE-2019-12973.patch b/openjpeg/default/patches-available/CVE-2019-12973.patch new file mode 100644 index 0000000..0d330ae --- /dev/null +++ b/openjpeg/default/patches-available/CVE-2019-12973.patch @@ -0,0 +1,152 @@ +From 21399f6b7d318fcdf4406d5e88723c4922202aa3 Mon Sep 17 00:00:00 2001 +From: Young Xiao +Date: Sat, 16 Mar 2019 19:57:27 +0800 +Subject: [PATCH 1/2] convertbmp: detect invalid file dimensions early + +width/length dimensions read from bmp headers are not necessarily +valid. For instance they may have been maliciously set to very large +values with the intention to cause DoS (large memory allocation, stack +overflow). In these cases we want to detect the invalid size as early +as possible. + +This commit introduces a counter which verifies that the number of +written bytes corresponds to the advertized width/length. + +See commit 8ee335227bbc for details. + +Signed-off-by: Young Xiao +--- + src/bin/jp2/convertbmp.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/src/bin/jp2/convertbmp.c b/src/bin/jp2/convertbmp.c +index 0af52f816..ec34f535b 100644 +--- a/src/bin/jp2/convertbmp.c ++++ b/src/bin/jp2/convertbmp.c +@@ -622,13 +622,13 @@ static OPJ_BOOL bmp_read_rle8_data(FILE* IN, OPJ_UINT8* pData, + static OPJ_BOOL bmp_read_rle4_data(FILE* IN, OPJ_UINT8* pData, + OPJ_UINT32 stride, OPJ_UINT32 width, OPJ_UINT32 height) + { +- OPJ_UINT32 x, y; ++ OPJ_UINT32 x, y, written; + OPJ_UINT8 *pix; + const OPJ_UINT8 *beyond; + + beyond = pData + stride * height; + pix = pData; +- x = y = 0U; ++ x = y = written = 0U; + while (y < height) { + int c = getc(IN); + if (c == EOF) { +@@ -642,6 +642,7 @@ static OPJ_BOOL bmp_read_rle4_data(FILE* IN, OPJ_UINT8* pData, + for (j = 0; (j < c) && (x < width) && + ((OPJ_SIZE_T)pix < (OPJ_SIZE_T)beyond); j++, x++, pix++) { + *pix = (OPJ_UINT8)((j & 1) ? (c1 & 0x0fU) : ((c1 >> 4) & 0x0fU)); ++ written++; + } + } else { /* absolute mode */ + c = getc(IN); +@@ -671,6 +672,7 @@ static OPJ_BOOL bmp_read_rle4_data(FILE* IN, OPJ_UINT8* pData, + c1 = (OPJ_UINT8)getc(IN); + } + *pix = (OPJ_UINT8)((j & 1) ? (c1 & 0x0fU) : ((c1 >> 4) & 0x0fU)); ++ written++; + } + if (((c & 3) == 1) || ((c & 3) == 2)) { /* skip padding byte */ + getc(IN); +@@ -678,6 +680,10 @@ static OPJ_BOOL bmp_read_rle4_data(FILE* IN, OPJ_UINT8* pData, + } + } + } /* while(y < height) */ ++ if (written != width * height) { ++ fprintf(stderr, "warning, image's actual size does not match advertized one\n"); ++ return OPJ_FALSE; ++ } + return OPJ_TRUE; + } + + +From 3aef207f90e937d4931daf6d411e092f76d82e66 Mon Sep 17 00:00:00 2001 +From: Young Xiao +Date: Sat, 16 Mar 2019 20:09:59 +0800 +Subject: [PATCH 2/2] bmp_read_rle4_data(): avoid potential infinite loop + +--- + src/bin/jp2/convertbmp.c | 32 ++++++++++++++++++++++++++------ + 1 file changed, 26 insertions(+), 6 deletions(-) + +diff --git a/src/bin/jp2/convertbmp.c b/src/bin/jp2/convertbmp.c +index ec34f535b..2fc4e9bc4 100644 +--- a/src/bin/jp2/convertbmp.c ++++ b/src/bin/jp2/convertbmp.c +@@ -632,12 +632,18 @@ static OPJ_BOOL bmp_read_rle4_data(FILE* IN, OPJ_UINT8* pData, + while (y < height) { + int c = getc(IN); + if (c == EOF) { +- break; ++ return OPJ_FALSE; + } + + if (c) { /* encoded mode */ +- int j; +- OPJ_UINT8 c1 = (OPJ_UINT8)getc(IN); ++ int j, c1_int; ++ OPJ_UINT8 c1; ++ ++ c1_int = getc(IN); ++ if (c1_int == EOF) { ++ return OPJ_FALSE; ++ } ++ c1 = (OPJ_UINT8)c1_int; + + for (j = 0; (j < c) && (x < width) && + ((OPJ_SIZE_T)pix < (OPJ_SIZE_T)beyond); j++, x++, pix++) { +@@ -647,7 +653,7 @@ static OPJ_BOOL bmp_read_rle4_data(FILE* IN, OPJ_UINT8* pData, + } else { /* absolute mode */ + c = getc(IN); + if (c == EOF) { +- break; ++ return OPJ_FALSE; + } + + if (c == 0x00) { /* EOL */ +@@ -658,8 +664,14 @@ static OPJ_BOOL bmp_read_rle4_data(FILE* IN, OPJ_UINT8* pData, + break; + } else if (c == 0x02) { /* MOVE by dxdy */ + c = getc(IN); ++ if (c == EOF) { ++ return OPJ_FALSE; ++ } + x += (OPJ_UINT32)c; + c = getc(IN); ++ if (c == EOF) { ++ return OPJ_FALSE; ++ } + y += (OPJ_UINT32)c; + pix = pData + y * stride + x; + } else { /* 03 .. 255 : absolute mode */ +@@ -669,13 +681,21 @@ static OPJ_BOOL bmp_read_rle4_data(FILE* IN, OPJ_UINT8* pData, + for (j = 0; (j < c) && (x < width) && + ((OPJ_SIZE_T)pix < (OPJ_SIZE_T)beyond); j++, x++, pix++) { + if ((j & 1) == 0) { +- c1 = (OPJ_UINT8)getc(IN); ++ int c1_int; ++ c1_int = getc(IN); ++ if (c1_int == EOF) { ++ return OPJ_FALSE; ++ } ++ c1 = (OPJ_UINT8)c1_int; + } + *pix = (OPJ_UINT8)((j & 1) ? (c1 & 0x0fU) : ((c1 >> 4) & 0x0fU)); + written++; + } + if (((c & 3) == 1) || ((c & 3) == 2)) { /* skip padding byte */ +- getc(IN); ++ c = getc(IN); ++ if (c == EOF) { ++ return OPJ_FALSE; ++ } + } + } + } diff --git a/openjpeg/default/patches-available/CVE-2020-15389.patch b/openjpeg/default/patches-available/CVE-2020-15389.patch new file mode 100644 index 0000000..f5737a3 --- /dev/null +++ b/openjpeg/default/patches-available/CVE-2020-15389.patch @@ -0,0 +1,39 @@ +From e8e258ab049240c2dd1f1051b4e773b21e2d3dc0 Mon Sep 17 00:00:00 2001 +From: Even Rouault +Date: Sun, 28 Jun 2020 14:19:59 +0200 +Subject: [PATCH] opj_decompress: fix double-free on input directory with mix + of valid and invalid images (CVE-2020-15389) + +Fixes #1261 + +Credits to @Ruia-ruia for reporting and analysis. +--- + src/bin/jp2/opj_decompress.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/bin/jp2/opj_decompress.c b/src/bin/jp2/opj_decompress.c +index 7eeb0952f..2634907f0 100644 +--- a/src/bin/jp2/opj_decompress.c ++++ b/src/bin/jp2/opj_decompress.c +@@ -1316,10 +1316,6 @@ static opj_image_t* upsample_image_components(opj_image_t* original) + int main(int argc, char **argv) + { + opj_decompress_parameters parameters; /* decompression parameters */ +- opj_image_t* image = NULL; +- opj_stream_t *l_stream = NULL; /* Stream */ +- opj_codec_t* l_codec = NULL; /* Handle to a decompressor */ +- opj_codestream_index_t* cstr_index = NULL; + + OPJ_INT32 num_images, imageno; + img_fol_t img_fol; +@@ -1393,6 +1389,10 @@ int main(int argc, char **argv) + + /*Decoding image one by one*/ + for (imageno = 0; imageno < num_images ; imageno++) { ++ opj_image_t* image = NULL; ++ opj_stream_t *l_stream = NULL; /* Stream */ ++ opj_codec_t* l_codec = NULL; /* Handle to a decompressor */ ++ opj_codestream_index_t* cstr_index = NULL; + + if (!parameters.quiet) { + fprintf(stderr, "\n"); diff --git a/openjpeg/default/patches-available/CVE-2020-6851.patch b/openjpeg/default/patches-available/CVE-2020-6851.patch new file mode 100644 index 0000000..9a70291 --- /dev/null +++ b/openjpeg/default/patches-available/CVE-2020-6851.patch @@ -0,0 +1,29 @@ +From 024b8407392cb0b82b04b58ed256094ed5799e04 Mon Sep 17 00:00:00 2001 +From: Even Rouault +Date: Sat, 11 Jan 2020 01:51:19 +0100 +Subject: [PATCH] opj_j2k_update_image_dimensions(): reject images whose + coordinates are beyond INT_MAX (fixes #1228) + +--- + src/lib/openjp2/j2k.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/src/lib/openjp2/j2k.c b/src/lib/openjp2/j2k.c +index 14f6ff41a..922550eb1 100644 +--- a/src/lib/openjp2/j2k.c ++++ b/src/lib/openjp2/j2k.c +@@ -9221,6 +9221,14 @@ static OPJ_BOOL opj_j2k_update_image_dimensions(opj_image_t* p_image, + l_img_comp = p_image->comps; + for (it_comp = 0; it_comp < p_image->numcomps; ++it_comp) { + OPJ_INT32 l_h, l_w; ++ if (p_image->x0 > (OPJ_UINT32)INT_MAX || ++ p_image->y0 > (OPJ_UINT32)INT_MAX || ++ p_image->x1 > (OPJ_UINT32)INT_MAX || ++ p_image->y1 > (OPJ_UINT32)INT_MAX) { ++ opj_event_msg(p_manager, EVT_ERROR, ++ "Image coordinates above INT_MAX are not supported\n"); ++ return OPJ_FALSE; ++ } + + l_img_comp->x0 = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)p_image->x0, + (OPJ_INT32)l_img_comp->dx); diff --git a/openjpeg/default/patches-available/CVE-2020-8112.patch b/openjpeg/default/patches-available/CVE-2020-8112.patch new file mode 100644 index 0000000..95cb809 --- /dev/null +++ b/openjpeg/default/patches-available/CVE-2020-8112.patch @@ -0,0 +1,43 @@ +From 05f9b91e60debda0e83977e5e63b2e66486f7074 Mon Sep 17 00:00:00 2001 +From: Even Rouault +Date: Thu, 30 Jan 2020 00:59:57 +0100 +Subject: [PATCH] opj_tcd_init_tile(): avoid integer overflow + +That could lead to later assertion failures. + +Fixes #1231 / CVE-2020-8112 +--- + src/lib/openjp2/tcd.c | 20 ++++++++++++++++++-- + 1 file changed, 18 insertions(+), 2 deletions(-) + +diff --git a/src/lib/openjp2/tcd.c b/src/lib/openjp2/tcd.c +index deecc4dff..aa419030a 100644 +--- a/src/lib/openjp2/tcd.c ++++ b/src/lib/openjp2/tcd.c +@@ -905,8 +905,24 @@ static INLINE OPJ_BOOL opj_tcd_init_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, + /* p. 64, B.6, ISO/IEC FDIS15444-1 : 2000 (18 august 2000) */ + l_tl_prc_x_start = opj_int_floordivpow2(l_res->x0, (OPJ_INT32)l_pdx) << l_pdx; + l_tl_prc_y_start = opj_int_floordivpow2(l_res->y0, (OPJ_INT32)l_pdy) << l_pdy; +- l_br_prc_x_end = opj_int_ceildivpow2(l_res->x1, (OPJ_INT32)l_pdx) << l_pdx; +- l_br_prc_y_end = opj_int_ceildivpow2(l_res->y1, (OPJ_INT32)l_pdy) << l_pdy; ++ { ++ OPJ_UINT32 tmp = ((OPJ_UINT32)opj_int_ceildivpow2(l_res->x1, ++ (OPJ_INT32)l_pdx)) << l_pdx; ++ if (tmp > (OPJ_UINT32)INT_MAX) { ++ opj_event_msg(manager, EVT_ERROR, "Integer overflow\n"); ++ return OPJ_FALSE; ++ } ++ l_br_prc_x_end = (OPJ_INT32)tmp; ++ } ++ { ++ OPJ_UINT32 tmp = ((OPJ_UINT32)opj_int_ceildivpow2(l_res->y1, ++ (OPJ_INT32)l_pdy)) << l_pdy; ++ if (tmp > (OPJ_UINT32)INT_MAX) { ++ opj_event_msg(manager, EVT_ERROR, "Integer overflow\n"); ++ return OPJ_FALSE; ++ } ++ l_br_prc_y_end = (OPJ_INT32)tmp; ++ } + /*fprintf(stderr, "\t\t\tprc_x_start=%d, prc_y_start=%d, br_prc_x_end=%d, br_prc_y_end=%d \n", l_tl_prc_x_start, l_tl_prc_y_start, l_br_prc_x_end ,l_br_prc_y_end );*/ + + l_res->pw = (l_res->x0 == l_res->x1) ? 0U : (OPJ_UINT32)(( diff --git a/openjpeg/default/patches-available/fix-cmakelists.patch b/openjpeg/default/patches-available/fix-cmakelists.patch new file mode 100644 index 0000000..ee5fb01 --- /dev/null +++ b/openjpeg/default/patches-available/fix-cmakelists.patch @@ -0,0 +1,11 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -148,7 +148,7 @@ + # We could install *.cmake files in share/ however those files contains + # hardcoded path to libraries on a multi-arch system (fedora/debian) those + # path will be different (lib/i386-linux-gnu vs lib/x86_64-linux-gnu) +- set(OPENJPEG_INSTALL_PACKAGE_DIR "${OPENJPEG_INSTALL_LIB_DIR}/${OPENJPEG_INSTALL_SUBDIR}") ++ set(OPENJPEG_INSTALL_PACKAGE_DIR "${OPENJPEG_INSTALL_LIB_DIR}/cmake/${OPENJPEG_INSTALL_SUBDIR}") + endif() + + if (APPLE) diff --git a/openjpeg/default/patches-enabled/CVE-2019-12973.patch b/openjpeg/default/patches-enabled/CVE-2019-12973.patch new file mode 120000 index 0000000..70c52b3 --- /dev/null +++ b/openjpeg/default/patches-enabled/CVE-2019-12973.patch @@ -0,0 +1 @@ +../patches-available/CVE-2019-12973.patch \ No newline at end of file diff --git a/openjpeg/default/patches-enabled/CVE-2020-15389.patch b/openjpeg/default/patches-enabled/CVE-2020-15389.patch new file mode 120000 index 0000000..a8ce430 --- /dev/null +++ b/openjpeg/default/patches-enabled/CVE-2020-15389.patch @@ -0,0 +1 @@ +../patches-available/CVE-2020-15389.patch \ No newline at end of file diff --git a/openjpeg/default/patches-enabled/CVE-2020-6851.patch b/openjpeg/default/patches-enabled/CVE-2020-6851.patch new file mode 120000 index 0000000..e3c1d8d --- /dev/null +++ b/openjpeg/default/patches-enabled/CVE-2020-6851.patch @@ -0,0 +1 @@ +../patches-available/CVE-2020-6851.patch \ No newline at end of file diff --git a/openjpeg/default/patches-enabled/CVE-2020-8112.patch b/openjpeg/default/patches-enabled/CVE-2020-8112.patch new file mode 120000 index 0000000..8fc93c9 --- /dev/null +++ b/openjpeg/default/patches-enabled/CVE-2020-8112.patch @@ -0,0 +1 @@ +../patches-available/CVE-2020-8112.patch \ No newline at end of file diff --git a/openjpeg/default/patches-enabled/fix-cmakelists.patch b/openjpeg/default/patches-enabled/fix-cmakelists.patch new file mode 120000 index 0000000..6cc0853 --- /dev/null +++ b/openjpeg/default/patches-enabled/fix-cmakelists.patch @@ -0,0 +1 @@ +../patches-available/fix-cmakelists.patch \ No newline at end of file diff --git a/opus/default/conf.sh b/opus/default/conf.sh new file mode 100755 index 0000000..4d1fbef --- /dev/null +++ b/opus/default/conf.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +./configure \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" \ + --enable-custom-modes diff --git a/opus/default/env.sh b/opus/default/env.sh new file mode 100644 index 0000000..0a086e1 --- /dev/null +++ b/opus/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS -O2" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/orc/default/APKBUILD b/orc/default/APKBUILD new file mode 100644 index 0000000..5d30e7d --- /dev/null +++ b/orc/default/APKBUILD @@ -0,0 +1,42 @@ +# Contributor: Łukasz Jendrysik +# Contributor: Natanael Copa +# Maintainer: Natanael Copa +pkgname=orc +pkgver=0.4.32 +pkgrel=0 +pkgdesc="The Oil Run-time Compiler" +url="https://gstreamer.freedesktop.org/modules/orc.html" +arch="all" +license="BSD-2-Clause" +makedepends="linux-headers meson" +subpackages="$pkgname-dev $pkgname-compiler" +source="https://gstreamer.freedesktop.org/src/orc/orc-$pkgver.tar.xz" + +case "$CARCH" in + # FIXME: Test exec_opcodes_sys fails on armhf. + # FIXME: MIPS DSP Module Rev2 is required for tests on mips*. + arm*|mips*) options="!check";; +esac + +build() { + abuild-meson \ + -Dorc-test=disabled \ + . output + meson compile ${JOBS:+-j ${JOBS}} -C output +} + +check() { + meson test --no-rebuild -v -C output +} + +package() { + DESTDIR="$pkgdir" meson install --no-rebuild -C output +} + +compiler() { + pkgdesc="Orc compiler" + mkdir -p "$subpkgdir"/usr/ + mv "$pkgdir"/usr/bin "$subpkgdir"/usr/ +} + +sha512sums="63e2ab05bc23e07cd5c1ed3192515ec3b1f666abb4f9ea5de4bd72461f3a5d7066860e2ad38f35d0acd81fadfa06f2a18d61838eae89c74dec6a78099a343567 orc-0.4.32.tar.xz" diff --git a/orc/default/conf.sh b/orc/default/conf.sh new file mode 100755 index 0000000..7b05922 --- /dev/null +++ b/orc/default/conf.sh @@ -0,0 +1,6 @@ +#!/bin/sh -e + +meson \ + -Dorc-test=disabled \ + --prefix="$PREFIX" \ + . ../build diff --git a/orc/default/deps b/orc/default/deps new file mode 100644 index 0000000..4af7468 --- /dev/null +++ b/orc/default/deps @@ -0,0 +1,21 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +samurai diff --git a/orc/default/env.sh b/orc/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/orc/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/orc/default/inst.sh b/orc/default/inst.sh new file mode 100755 index 0000000..bc595c4 --- /dev/null +++ b/orc/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson install --no-rebuild -C ../build diff --git a/orc/default/make.sh b/orc/default/make.sh new file mode 100755 index 0000000..0af5a37 --- /dev/null +++ b/orc/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson compile -j$(nproc) -C ../build diff --git a/p11-kit/default/APKBUILD b/p11-kit/default/APKBUILD new file mode 100644 index 0000000..d72ab6b --- /dev/null +++ b/p11-kit/default/APKBUILD @@ -0,0 +1,54 @@ +# Contributor: Fabian Affolter +# Maintainer: Fabian Affolter +pkgname=p11-kit +pkgver=0.23.21 +pkgrel=0 +pkgdesc="Library for loading and sharing PKCS#11 modules" +url="https://p11-glue.freedesktop.org/" +arch="all" +license="BSD-3-Clause" +makedepends="meson libtasn1-dev libffi-dev" +subpackages="$pkgname-dev $pkgname-doc $pkgname-trust $pkgname-server" +source="https://github.com/p11-glue/p11-kit/releases/download/$pkgver/p11-kit-$pkgver.tar.xz" + +build() { + abuild-meson \ + -Dtrust_paths=/etc/ssl/certs/ca-certificates.crt \ + . output + meson compile ${JOBS:+-j ${JOBS}} -C output +} + +check() { + meson test --no-rebuild -v -C output +} + +package() { + DESTDIR="$pkgdir" meson install --no-rebuild -C output + install -Dm644 "$pkgdir"/etc/pkcs11/pkcs11.conf.example -t "$pkgdir"/usr/share/doc/$pkgname +} + +trust() { + pkgdesc="System trust module from $pkgname" + mkdir -p "$subpkgdir"/usr/share/p11-kit/modules \ + "$subpkgdir"/usr/lib/pkcs11 \ + "$subpkgdir"/usr/bin + + mv "$pkgdir"/usr/share/p11-kit/modules/p11-kit-trust.module \ + "$subpkgdir"/usr/share/p11-kit/modules/ + mv "$pkgdir"/usr/lib/pkcs11/p11-kit-trust.so \ + "$subpkgdir"/usr/lib/pkcs11/ + mv "$pkgdir"/usr/bin/trust "$subpkgdir"/usr/bin/ +} + +server() { + pkgdesc="Server and client commands for $pkgname" + mkdir -p "$subpkgdir"/usr/lib/pkcs11 \ + "$subpkgdir"/usr/libexec/p11-kit \ + "$subpkgdir"/etc/init.d + mv "$pkgdir"/usr/lib/pkcs11/p11-kit-client.so \ + "$subpkgdir"/usr/lib/pkcs11 + mv "$pkgdir"/usr/libexec/p11-kit/p11-kit-server \ + "$subpkgdir"/usr/libexec/p11-kit +} + +sha512sums="4c796ca2c72a650f105a7a70aa62e55edb12e1c151e91ef92bfeee6c5c68982b36023400b42c4efcb1d351b7848e8618c26607cdb0f77b48ae40e2ecfd713e3e p11-kit-0.23.21.tar.xz" diff --git a/p11-kit/default/conf.sh b/p11-kit/default/conf.sh new file mode 100755 index 0000000..006f6dc --- /dev/null +++ b/p11-kit/default/conf.sh @@ -0,0 +1,6 @@ +#!/bin/sh -e + +meson \ + -Dtrust_paths=$PREFIX/etc/ssl/certs/ca-certificates.crt \ + --prefix="$PREFIX" \ + ../build diff --git a/p11-kit/default/deps b/p11-kit/default/deps new file mode 100644 index 0000000..034a50f --- /dev/null +++ b/p11-kit/default/deps @@ -0,0 +1,23 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +libffi +libtasn1 +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +samurai diff --git a/p11-kit/default/env.sh b/p11-kit/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/p11-kit/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/p11-kit/default/inst.sh b/p11-kit/default/inst.sh new file mode 100755 index 0000000..cb73872 --- /dev/null +++ b/p11-kit/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e +meson install --no-rebuild -C ../build +mkdir -p /share/doc/p11-kit +install -Dm644 /etc/pkcs11/pkcs11.conf.example /share/doc/p11-kit diff --git a/p11-kit/default/make.sh b/p11-kit/default/make.sh new file mode 100755 index 0000000..0af5a37 --- /dev/null +++ b/p11-kit/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson compile -j$(nproc) -C ../build diff --git a/pango/default/conf.sh b/pango/default/conf.sh new file mode 100755 index 0000000..7cd395c --- /dev/null +++ b/pango/default/conf.sh @@ -0,0 +1,11 @@ +#!/bin/sh -e + +PKG_CONFIG="pkgconf" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson \ + -Ddefault_library=both \ + -Dintrospection=true \ + --prefix="$PREFIX" \ + ../build diff --git a/pango/default/deps b/pango/default/deps new file mode 100644 index 0000000..1d50f0e --- /dev/null +++ b/pango/default/deps @@ -0,0 +1,41 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +ldd +libffi +diffutils +pkgconf +bzip2 +zlib +libpng +expat +git +tls-certs +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +pixman +glib +harfbuzz +freetype-harfbuzz +cairo +fontconfig +fribidi +gobject-introspection-dynamic +samurai +libdrm-dynamic +mesa-dynamic +wayland diff --git a/pango/default/inst.sh b/pango/default/inst.sh new file mode 100755 index 0000000..6fa0ca3 --- /dev/null +++ b/pango/default/inst.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +PKG_CONFIG="pkgconf" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson install --no-rebuild -C ../build diff --git a/pango/default/make.sh b/pango/default/make.sh new file mode 100755 index 0000000..93bf3a1 --- /dev/null +++ b/pango/default/make.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +PKG_CONFIG="pkgconf" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson compile -j$(nproc) -C ../build diff --git a/patch/default/deps b/patch/default/deps new file mode 100644 index 0000000..930a016 --- /dev/null +++ b/patch/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf diff --git a/pciutils/default/conf.sh b/pciutils/default/conf.sh new file mode 100755 index 0000000..bb3314d --- /dev/null +++ b/pciutils/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration to be done." diff --git a/pciutils/default/deps b/pciutils/default/deps new file mode 100644 index 0000000..75d6103 --- /dev/null +++ b/pciutils/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +hwids diff --git a/pciutils/default/inst.sh b/pciutils/default/inst.sh new file mode 100755 index 0000000..2019166 --- /dev/null +++ b/pciutils/default/inst.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +# SHAREDIR is /dev/null here because we don't want pciutils to install its +# pci id archives. they are a subset of the ones in the hwids package. +make OPT="$CFLAGS" \ + PREFIX= \ + SHAREDIR=/dev/null \ + install + +printf "removing redundant pci ids... " +# hwids provides a superset of this data... +rm -fr /share/nonexistent +echo "done!" + +printf "removing unnecessary pci id update utility and manpage... " +# ...and these are not needed because of that. +rm /bin/update-pciids +rm /share/man/man8/update-pciids.8 +echo "done!" diff --git a/pciutils/default/make.sh b/pciutils/default/make.sh new file mode 100755 index 0000000..6dec2da --- /dev/null +++ b/pciutils/default/make.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +make OPT="$CFLAGS" \ + ZLIB=no \ + PREFIX= \ + SHAREDIR=/share/hwids \ + all diff --git a/pciutils/default/patch b/pciutils/default/patch new file mode 100644 index 0000000..ded462d --- /dev/null +++ b/pciutils/default/patch @@ -0,0 +1,39 @@ +patches adapted from https://git.alpinelinux.org/aports/tree/main/pciutils on +2020-08-29, except for the last one (which was an adaptation from the build +script to prevent a ctags dependency). + +--- a/Makefile ++++ b/Makefile +@@ -2,7 +2,7 @@ + # (c) 1998--2013 Martin Mares + + OPT=-O2 +-CFLAGS=$(OPT) -Wall -W -Wno-parentheses -Wstrict-prototypes -Wmissing-prototypes ++CFLAGS=$(OPT) -Wall -W -Wno-parentheses -Wstrict-prototypes -Wmissing-prototypes -fPIC + + VERSION=3.2.1 + DATE=2013-11-10 +--- a/lib/pread.h ++++ b/lib/pread.h +@@ -12,8 +12,8 @@ + * don't define it. + */ + +-#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ > 0 +-/* glibc 2.1 or newer -> pread/pwrite supported automatically */ ++#if (defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ > 0) || (_POSIX_VERSION >= 200809L) ++ /* glibc 2.1 or newer or posix 2008 -> pread/pwrite supported automatically */ + + #elif defined(i386) && defined(__GLIBC__) + /* glibc 2.0 on i386 -> call syscalls directly */ +--- a/Makefile 2020-05-30 22:17:26.000000000 +0000 ++++ b/Makefile 2020-08-29 16:45:39.020000000 +0000 +@@ -103,7 +103,7 @@ + + ctags: + rm -f tags +- find . -name '*.[hc]' -exec ctags --append {} + ++# find . -name '*.[hc]' -exec ctags --append {} + + + TAGS: + rm -f TAGS diff --git a/pcre/default/conf.sh b/pcre/default/conf.sh new file mode 100755 index 0000000..5de963c --- /dev/null +++ b/pcre/default/conf.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/pcre2/default/conf.sh b/pcre2/default/conf.sh new file mode 100755 index 0000000..5de963c --- /dev/null +++ b/pcre2/default/conf.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/pcsc-lite-first-pass/default/conf.sh b/pcsc-lite-first-pass/default/conf.sh new file mode 100755 index 0000000..639b538 --- /dev/null +++ b/pcsc-lite-first-pass/default/conf.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +set -e + +LIBUSB_CFLAGS="-I/include/libusb-1.0" \ +LIBUSB_LIBS="/lib/libusb-1.0.so" \ +LIBUDEV_CFLAGS="-I/include" \ +LIBUDEV_LIBS="/lib/libudev.so" \ +./configure \ + --enable-libudev \ + --disable-libusb \ + --disable-libsystemd \ + --without-systemdsystemunitdir \ + --disable-polkit \ + --enable-ipcdir=/var/run/pcscd \ + --enable-usbdropdir=/lib/pcsc/drivers \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# LIBUSB_CFLAGS LIBUSB_LIBS LIBUDEV_CFLAGS LIBUDEV_LIBS: +# helps 'configure' locate eudev's and libusb's headers and libraries. +# +# --enable-libudev: use eudev for detecting smdev hotplugging. +# +# --disable-libusb: don't use libusb-based polling. +# +# --disable-libsystemd: don't use libsystemd. +# +# --without-systemdsystemunitdir: don't build systemd service files. +# +# --disable-polkit: don't bother building support for policykit policies. +# +# --enable-ipcdir: put ipc sockets in /var/run/pcscd. +# +# --enable-usbdropdir: look for smartcard driver bundles in /lib/pcsc/drivers. +# +# --enable-static: build the static library as well. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/pcsc-lite-first-pass/default/deps b/pcsc-lite-first-pass/default/deps new file mode 100644 index 0000000..c7ae9e0 --- /dev/null +++ b/pcsc-lite-first-pass/default/deps @@ -0,0 +1,16 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +musl-cross-make +make +automake +autoconf +dash +awk +gnu-grep +gnu-sed +perl +libcap-ng +libusb +eudev diff --git a/pcsc-lite-first-pass/default/env.sh b/pcsc-lite-first-pass/default/env.sh new file mode 100755 index 0000000..a9eb7bd --- /dev/null +++ b/pcsc-lite-first-pass/default/env.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +export CC="gcc" + +# removed all "static" flags + +# TODO: remove the need for these lines by making musl-cross-make build a gcc +# with a header search path of /include only, with all headers contained there. +export CPATH="$CPATH:/include" +export C_INCLUDE_PATH="/powerpc64le-lix-linux-musl/include" +export CPLUS_INCLUDE_PATH="/include/c++/9.2.0/powerpc64le-lix-linux-musl:/include/c++/9.2.0" diff --git a/pcsc-lite/default/conf.sh b/pcsc-lite/default/conf.sh new file mode 100755 index 0000000..639b538 --- /dev/null +++ b/pcsc-lite/default/conf.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +set -e + +LIBUSB_CFLAGS="-I/include/libusb-1.0" \ +LIBUSB_LIBS="/lib/libusb-1.0.so" \ +LIBUDEV_CFLAGS="-I/include" \ +LIBUDEV_LIBS="/lib/libudev.so" \ +./configure \ + --enable-libudev \ + --disable-libusb \ + --disable-libsystemd \ + --without-systemdsystemunitdir \ + --disable-polkit \ + --enable-ipcdir=/var/run/pcscd \ + --enable-usbdropdir=/lib/pcsc/drivers \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# LIBUSB_CFLAGS LIBUSB_LIBS LIBUDEV_CFLAGS LIBUDEV_LIBS: +# helps 'configure' locate eudev's and libusb's headers and libraries. +# +# --enable-libudev: use eudev for detecting smdev hotplugging. +# +# --disable-libusb: don't use libusb-based polling. +# +# --disable-libsystemd: don't use libsystemd. +# +# --without-systemdsystemunitdir: don't build systemd service files. +# +# --disable-polkit: don't bother building support for policykit policies. +# +# --enable-ipcdir: put ipc sockets in /var/run/pcscd. +# +# --enable-usbdropdir: look for smartcard driver bundles in /lib/pcsc/drivers. +# +# --enable-static: build the static library as well. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/pcsc-lite/default/deps b/pcsc-lite/default/deps new file mode 100644 index 0000000..bcb2946 --- /dev/null +++ b/pcsc-lite/default/deps @@ -0,0 +1,22 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +musl-cross-make +make +automake +autoconf +m4 +pkgconf +libtool +flex +dash +patch +awk +gnu-grep +gnu-sed +perl +libcap-ng +libusb +eudev +ccid diff --git a/pcsc-lite/default/env.sh b/pcsc-lite/default/env.sh new file mode 100755 index 0000000..a9eb7bd --- /dev/null +++ b/pcsc-lite/default/env.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +export CC="gcc" + +# removed all "static" flags + +# TODO: remove the need for these lines by making musl-cross-make build a gcc +# with a header search path of /include only, with all headers contained there. +export CPATH="$CPATH:/include" +export C_INCLUDE_PATH="/powerpc64le-lix-linux-musl/include" +export CPLUS_INCLUDE_PATH="/include/c++/9.2.0/powerpc64le-lix-linux-musl:/include/c++/9.2.0" diff --git a/pcsc-lite/default/patch b/pcsc-lite/default/patch new file mode 100644 index 0000000..773c963 --- /dev/null +++ b/pcsc-lite/default/patch @@ -0,0 +1,11 @@ +--- a/src/pcscdaemon.c 2020-08-18 19:19:25.610000000 +0000 ++++ b/src/pcscdaemon.c 2020-08-20 21:09:24.290000000 +0000 +@@ -740,7 +740,7 @@ + (void)signal(SIGHUP, SIG_IGN); /* needed for Solaris. The signal is sent + * when the shell is existed */ + +-#if !defined(PCSCLITE_STATIC_DRIVER) && defined(USE_USB) ++#if defined(USE_USB) + /* + * Set up the search for USB/PCMCIA devices + */ diff --git a/perl b/perl new file mode 120000 index 0000000..80bd360 --- /dev/null +++ b/perl @@ -0,0 +1 @@ +perl-dynamic \ No newline at end of file diff --git a/perl-dynamic/default/conf.sh b/perl-dynamic/default/conf.sh new file mode 100755 index 0000000..72d8396 --- /dev/null +++ b/perl-dynamic/default/conf.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +set -e + +CFLAGS="$SHARED_CFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +CPPFLAGS="$SHARED_CPPFLAGS" \ +./Configure \ + -des \ + -Dprefix="/" \ + -Dusedl \ + -Dman1dir="/share/man/man1" \ + -Dman3dir="/share/man/man3" \ + -Accflags="$SHARED_CFLAGS" \ + -Acxxflags="$SHARED_CXXFLAGS" \ + -Acppflags="$SHARED_CPPFLAGS" \ + -Aldflags="$SHARED_LDFLAGS" + +## explanation +# +# perl is a beast with a unique configuration process. +# +# -des: use default answers for everything not set by a flag here. +# +# -Uusedl: don't use dynamic linking/loading. static linking only. +# +# -Dprefix: respect the "no /usr/local" policy. +# +# -Dman1dir -Dman3dir: install manual pages in these directories. +# +# -Accflags: set "ccflags," perl's equivalent of CFLAGS. +# +# -Acxxflags: set "cxxflags," perl's equivalent of CXXFLAGS. +# +# -Acppflags: set "cppflags," perl's equivalent of CPPFLAGS. +# +# -Aldflags: set "ldflags," perl's equivalent of LDFLAGS. diff --git a/perl-dynamic/default/deps b/perl-dynamic/default/deps new file mode 100644 index 0000000..afff1f8 --- /dev/null +++ b/perl-dynamic/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +gzip +libarchive diff --git a/perl-html-entities/default/conf.sh b/perl-html-entities/default/conf.sh new file mode 100755 index 0000000..aa92e98 --- /dev/null +++ b/perl-html-entities/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "no configuration to do." diff --git a/perl-html-entities/default/deps b/perl-html-entities/default/deps new file mode 100644 index 0000000..26500e4 --- /dev/null +++ b/perl-html-entities/default/deps @@ -0,0 +1,14 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +gzip +libarchive +perl-dynamic diff --git a/perl-html-entities/default/inst.sh b/perl-html-entities/default/inst.sh new file mode 100755 index 0000000..48bb0dc --- /dev/null +++ b/perl-html-entities/default/inst.sh @@ -0,0 +1,5 @@ +#!/bin/sh -e + +export PERL_MM_USE_DEFAULT=1 +cpan install HTML::Entities +cpan install HTML::Parser diff --git a/perl-html-entities/default/make.sh b/perl-html-entities/default/make.sh new file mode 100755 index 0000000..bc6a772 --- /dev/null +++ b/perl-html-entities/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "no making to do." diff --git a/perl-static/default/conf.sh b/perl-static/default/conf.sh new file mode 100755 index 0000000..195bd65 --- /dev/null +++ b/perl-static/default/conf.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +set -e + +./Configure \ + -des \ + -Uusedl \ + -Dprefix="/" \ + -Dman1dir="/share/man/man1" \ + -Dman3dir="/share/man/man3" \ + -Accflags="$CFLAGS" \ + -Acxxflags="$CXXFLAGS" \ + -Acppflags="$CPPFLAGS" \ + -Aldflags="$LDFLAGS" + +## explanation +# +# perl is a beast with a unique configuration process. +# +# -des: use default answers for everything not set by a flag here. +# +# -Uusedl: don't use dynamic linking/loading. static linking only. +# +# -Dprefix: respect the "no /usr/local" policy. +# +# -Dman1dir -Dman3dir: install manual pages in these directories. +# +# -Accflags: set "ccflags," perl's equivalent of CFLAGS. +# +# -Acxxflags: set "cxxflags," perl's equivalent of CXXFLAGS. +# +# -Acppflags: set "cppflags," perl's equivalent of CPPFLAGS. +# +# -Aldflags: set "ldflags," perl's equivalent of LDFLAGS. diff --git a/perl-static/default/deps b/perl-static/default/deps new file mode 100644 index 0000000..afff1f8 --- /dev/null +++ b/perl-static/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +gzip +libarchive diff --git a/perl-test-pod/default/conf.sh b/perl-test-pod/default/conf.sh new file mode 100755 index 0000000..3a46bd1 --- /dev/null +++ b/perl-test-pod/default/conf.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +CFLAGS=$(perl -MConfig -E 'say $Config{ccflags}') \ +PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor diff --git a/perl-test-pod/default/deps b/perl-test-pod/default/deps new file mode 100644 index 0000000..9a61099 --- /dev/null +++ b/perl-test-pod/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl diff --git a/perl-test-pod/default/inst.sh b/perl-test-pod/default/inst.sh new file mode 100755 index 0000000..d61e8c3 --- /dev/null +++ b/perl-test-pod/default/inst.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +dest="/lib/perl5/site_perl/$(perl -e 'print substr($^V,1)')/" +make DESTDIR="$dest" install +rm -fr "$dest/lib" diff --git a/perl-test-pod/default/make.sh b/perl-test-pod/default/make.sh new file mode 100755 index 0000000..fde12f3 --- /dev/null +++ b/perl-test-pod/default/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +CFLAGS=$(perl -MConfig -E 'say $Config{ccflags}') \ +make -j$(nproc) diff --git a/perl-test-pod/default/patch.bak b/perl-test-pod/default/patch.bak new file mode 100644 index 0000000..5687b50 --- /dev/null +++ b/perl-test-pod/default/patch.bak @@ -0,0 +1,21 @@ +dynamic loading is not preferred in lix os. this test will fail. + +--- a/Makefile.PL 2020-09-04 03:15:42.290000000 +0000 ++++ b/Makefile.PL 2020-09-04 03:15:32.600000000 +0000 +@@ -5,11 +5,11 @@ + + require "./inc/ExtUtils/HasCompiler.pm"; + +-my $can_xs = ExtUtils::HasCompiler::can_compile_loadable_object( quiet => 1 ) ? 1 : 0; +-if ( !$can_xs ) { +- print "Sorry! YAML::Syck requires a compiler in order to be built.\n"; +- exit 1; +-} ++#my $can_xs = ExtUtils::HasCompiler::can_compile_loadable_object( quiet => 1 ) ? 1 : 0; ++#if ( !$can_xs ) { ++# print "Sorry! YAML::Syck requires a compiler in order to be built.\n"; ++# exit 1; ++#} + + my $bad; + if ( eval { require YAML; $YAML::VERSION < 0.60 } ) { diff --git a/perl-yaml-syck/default/conf.sh b/perl-yaml-syck/default/conf.sh new file mode 100755 index 0000000..3a46bd1 --- /dev/null +++ b/perl-yaml-syck/default/conf.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +CFLAGS=$(perl -MConfig -E 'say $Config{ccflags}') \ +PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor diff --git a/perl-yaml-syck/default/deps b/perl-yaml-syck/default/deps new file mode 100644 index 0000000..9a61099 --- /dev/null +++ b/perl-yaml-syck/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl diff --git a/perl-yaml-syck/default/inst.sh b/perl-yaml-syck/default/inst.sh new file mode 100755 index 0000000..d61e8c3 --- /dev/null +++ b/perl-yaml-syck/default/inst.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +dest="/lib/perl5/site_perl/$(perl -e 'print substr($^V,1)')/" +make DESTDIR="$dest" install +rm -fr "$dest/lib" diff --git a/perl-yaml-syck/default/make.sh b/perl-yaml-syck/default/make.sh new file mode 100755 index 0000000..fde12f3 --- /dev/null +++ b/perl-yaml-syck/default/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +CFLAGS=$(perl -MConfig -E 'say $Config{ccflags}') \ +make -j$(nproc) diff --git a/perl-yaml-syck/default/patch b/perl-yaml-syck/default/patch new file mode 100644 index 0000000..5687b50 --- /dev/null +++ b/perl-yaml-syck/default/patch @@ -0,0 +1,21 @@ +dynamic loading is not preferred in lix os. this test will fail. + +--- a/Makefile.PL 2020-09-04 03:15:42.290000000 +0000 ++++ b/Makefile.PL 2020-09-04 03:15:32.600000000 +0000 +@@ -5,11 +5,11 @@ + + require "./inc/ExtUtils/HasCompiler.pm"; + +-my $can_xs = ExtUtils::HasCompiler::can_compile_loadable_object( quiet => 1 ) ? 1 : 0; +-if ( !$can_xs ) { +- print "Sorry! YAML::Syck requires a compiler in order to be built.\n"; +- exit 1; +-} ++#my $can_xs = ExtUtils::HasCompiler::can_compile_loadable_object( quiet => 1 ) ? 1 : 0; ++#if ( !$can_xs ) { ++# print "Sorry! YAML::Syck requires a compiler in order to be built.\n"; ++# exit 1; ++#} + + my $bad; + if ( eval { require YAML; $YAML::VERSION < 0.60 } ) { diff --git a/pinentry/default/conf.sh b/pinentry/default/conf.sh new file mode 100755 index 0000000..0918061 --- /dev/null +++ b/pinentry/default/conf.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +set -e + +CFLAGS="$CFLAGS -I/include/ncurses" \ +./configure \ + --enable-pinentry-curses \ + --disable-pinentry-gtk \ + --disable-pinentry-gtk2 \ + --disable-pinentry-gnome3 \ + --disable-pinentry-qt \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --enable-pinentry-curses: use the ncurses interface for pinentry. +# +# --disable-pinentry-gtk: don't build the gtk interface. +# +# --disable-pinentry-gtk2: don't build the gtk2 interface. +# +# --disable-pinentry-gnome3: don't build the gnome3 interface. +# +# --disable-pinentry-qt: don't build the qt interface. +# +# --build: make sure the correct build string is set. +# +# --host: make sure the correct host string is set. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/pinentry/default/deps b/pinentry/default/deps new file mode 100644 index 0000000..5622d3d --- /dev/null +++ b/pinentry/default/deps @@ -0,0 +1,17 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +musl-cross-make +make +automake +autoconf +dash +patch +awk +gnu-grep +gnu-sed +libcap +libgpg-error +libassuan +ncurses diff --git a/pixman/default/conf.sh b/pixman/default/conf.sh new file mode 100755 index 0000000..65137f7 --- /dev/null +++ b/pixman/default/conf.sh @@ -0,0 +1,24 @@ +#!/bin/sh -e + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --disable-gtk \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-gtk: don't build anything that depends on gtk. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/pixman/default/deps b/pixman/default/deps new file mode 100644 index 0000000..0b9c548 --- /dev/null +++ b/pixman/default/deps @@ -0,0 +1,11 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed diff --git a/pkgconf/default/conf.sh b/pkgconf/default/conf.sh new file mode 100755 index 0000000..762be0a --- /dev/null +++ b/pkgconf/default/conf.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +# generate the configure script +./autogen.sh + +./configure --with-pic --prefix= + +## explanation +# +# --with-pic: use position-independent objects when possible. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/pkgconf/default/deps b/pkgconf/default/deps new file mode 100644 index 0000000..fe4d650 --- /dev/null +++ b/pkgconf/default/deps @@ -0,0 +1,16 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +autoconf +automake +libtool diff --git a/pkgconf/default/inst.sh b/pkgconf/default/inst.sh new file mode 100755 index 0000000..4db55f2 --- /dev/null +++ b/pkgconf/default/inst.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +DESTDIR="${pkgdest:-/}" make -j$(nproc) install + +[ -e "$pkgdest/bin/pkg-config" ] || ln -fs pkgconf "$pkgdest/bin/pkg-config" diff --git a/py3-appdirs/default/conf.sh b/py3-appdirs/default/conf.sh new file mode 100755 index 0000000..bb3314d --- /dev/null +++ b/py3-appdirs/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration to be done." diff --git a/py3-appdirs/default/deps b/py3-appdirs/default/deps new file mode 100644 index 0000000..426823e --- /dev/null +++ b/py3-appdirs/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +$PY3DEP diff --git a/py3-appdirs/default/inst.sh b/py3-appdirs/default/inst.sh new file mode 100755 index 0000000..d4215c7 --- /dev/null +++ b/py3-appdirs/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +python3 setup.py install --prefix= diff --git a/py3-appdirs/default/make.sh b/py3-appdirs/default/make.sh new file mode 100755 index 0000000..16ff8a1 --- /dev/null +++ b/py3-appdirs/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +python3 setup.py build diff --git a/py3-libxml2/default/conf.sh b/py3-libxml2/default/conf.sh new file mode 100755 index 0000000..17c9665 --- /dev/null +++ b/py3-libxml2/default/conf.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./autogen.sh \ + --with-lzma \ + --with-zlib \ + --with-python=/bin/python3 \ + --disable-static \ + --enable-shared \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --enable-shared: build the shared libraries. +# +# --disable-static: don't build the static libraries. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/py3-libxml2/default/deps b/py3-libxml2/default/deps new file mode 100644 index 0000000..391c327 --- /dev/null +++ b/py3-libxml2/default/deps @@ -0,0 +1,28 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +autoconf +automake +pkgconf +libtool +zlib +xz +file +diffutils +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools diff --git a/py3-libxml2/default/inst.sh b/py3-libxml2/default/inst.sh new file mode 100755 index 0000000..18ae7e2 --- /dev/null +++ b/py3-libxml2/default/inst.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +make install + +# remove everything already provided by libxml2 +rm /bin/xml2-config +rm /bin/xmlcatalog +rm /bin/xmllint +rm /lib/libxml2.la +rm /lib/xml2Conf.sh +rm /lib/pkgconfig/libxml-2.0.pc +rm -fr /lib/cmake +rm -fr /include/libxml2 +rm -fr /share/aclocal/libxml.m4 +rm -fr /share/gtk-doc +rm -fr /share/doc/libxml2-$(echo $version | sed 's/^v//') # remove possible leading v +rm /share/man/man1/xml* +rm /share/man/man3/libxml.3 diff --git a/py3-libxml2/default/patches-available/0100-CVE-2019-20388.patch b/py3-libxml2/default/patches-available/0100-CVE-2019-20388.patch new file mode 100644 index 0000000..164b54b --- /dev/null +++ b/py3-libxml2/default/patches-available/0100-CVE-2019-20388.patch @@ -0,0 +1,12 @@ +diff --git a/xmlschemas.c b/xmlschemas.c +index 301c84499d4185ca3a760b512daeca8760edaf05..39d92182f51ff723413cb41a0101d97b6647cdee 100644 +--- a/xmlschemas.c ++++ b/xmlschemas.c +@@ -28090,7 +28090,6 @@ xmlSchemaPreRun(xmlSchemaValidCtxtPtr vctxt) { + vctxt->nberrors = 0; + vctxt->depth = -1; + vctxt->skipDepth = -1; +- vctxt->xsiAssemble = 0; + vctxt->hasKeyrefs = 0; + #ifdef ENABLE_IDC_NODE_TABLES_TEST + vctxt->createIDCNodeTables = 1; diff --git a/py3-libxml2/default/patches-available/0200-libxml2-CVE-2020-7595.patch b/py3-libxml2/default/patches-available/0200-libxml2-CVE-2020-7595.patch new file mode 100644 index 0000000..3dd6774 --- /dev/null +++ b/py3-libxml2/default/patches-available/0200-libxml2-CVE-2020-7595.patch @@ -0,0 +1,32 @@ +From 0e1a49c8907645d2e155f0d89d4d9895ac5112b5 Mon Sep 17 00:00:00 2001 +From: Zhipeng Xie +Date: Thu, 12 Dec 2019 17:30:55 +0800 +Subject: [PATCH] Fix infinite loop in xmlStringLenDecodeEntities + +When ctxt->instate == XML_PARSER_EOF,xmlParseStringEntityRef +return NULL which cause a infinite loop in xmlStringLenDecodeEntities + +Found with libFuzzer. + +Signed-off-by: Zhipeng Xie +--- + parser.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/parser.c b/parser.c +index d1c31963..a34bb6cd 100644 +--- a/parser.c ++++ b/parser.c +@@ -2646,7 +2646,8 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len, + else + c = 0; + while ((c != 0) && (c != end) && /* non input consuming loop */ +- (c != end2) && (c != end3)) { ++ (c != end2) && (c != end3) && ++ (ctxt->instate != XML_PARSER_EOF)) { + + if (c == 0) break; + if ((c == '&') && (str[1] == '#')) { +-- +2.24.1 + diff --git a/py3-libxml2/default/patches-available/0300-revert-Make-xmlFreeNodeList-non-recursive.patch b/py3-libxml2/default/patches-available/0300-revert-Make-xmlFreeNodeList-non-recursive.patch new file mode 100644 index 0000000..102abdb --- /dev/null +++ b/py3-libxml2/default/patches-available/0300-revert-Make-xmlFreeNodeList-non-recursive.patch @@ -0,0 +1,64 @@ +This is a revert of +https://github.com/GNOME/libxml2/commit/0762c9b69ba01628f72eada1c64ff3d361fb5716 + +This fixes perl-xml-libxslt test suite +https://bugzilla.suse.com/show_bug.cgi?id=1157450 + +diff --git a/tree.c b/tree.c +index 08b1a50..f2b1457 100644 +--- a/tree.c ++++ b/tree.c +@@ -3664,9 +3664,7 @@ xmlNextElementSibling(xmlNodePtr node) { + void + xmlFreeNodeList(xmlNodePtr cur) { + xmlNodePtr next; +- xmlNodePtr parent; + xmlDictPtr dict = NULL; +- size_t depth = 0; + + if (cur == NULL) return; + if (cur->type == XML_NAMESPACE_DECL) { +@@ -3682,21 +3680,16 @@ xmlFreeNodeList(xmlNodePtr cur) { + return; + } + if (cur->doc != NULL) dict = cur->doc->dict; +- while (1) { +- while ((cur->children != NULL) && +- (cur->type != XML_DTD_NODE) && +- (cur->type != XML_ENTITY_REF_NODE)) { +- cur = cur->children; +- depth += 1; +- } +- ++ while (cur != NULL) { + next = cur->next; +- parent = cur->parent; + if (cur->type != XML_DTD_NODE) { + + if ((__xmlRegisterCallbacks) && (xmlDeregisterNodeDefaultValue)) + xmlDeregisterNodeDefaultValue(cur); + ++ if ((cur->children != NULL) && ++ (cur->type != XML_ENTITY_REF_NODE)) ++ xmlFreeNodeList(cur->children); + if (((cur->type == XML_ELEMENT_NODE) || + (cur->type == XML_XINCLUDE_START) || + (cur->type == XML_XINCLUDE_END)) && +@@ -3727,16 +3720,7 @@ xmlFreeNodeList(xmlNodePtr cur) { + DICT_FREE(cur->name) + xmlFree(cur); + } +- +- if (next != NULL) { +- cur = next; +- } else { +- if ((depth == 0) || (parent == NULL)) +- break; +- depth -= 1; +- cur = parent; +- cur->children = NULL; +- } ++ cur = next; + } + } + diff --git a/py3-libxml2/default/patches-available/0400-libxml2-2.9.8-python3-unicode-errors.patch b/py3-libxml2/default/patches-available/0400-libxml2-2.9.8-python3-unicode-errors.patch new file mode 100644 index 0000000..e87dcde --- /dev/null +++ b/py3-libxml2/default/patches-available/0400-libxml2-2.9.8-python3-unicode-errors.patch @@ -0,0 +1,34 @@ +Index: libxml2-2.9.5/python/libxml.c +=================================================================== +--- libxml2-2.9.5.orig/python/libxml.c ++++ libxml2-2.9.5/python/libxml.c +@@ -1620,6 +1620,7 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU + PyObject *message; + PyObject *result; + char str[1000]; ++ unsigned char *ptr = (unsigned char *)str; + + #ifdef DEBUG_ERROR + printf("libxml_xmlErrorFuncHandler(%p, %s, ...) called\n", ctx, msg); +@@ -1636,12 +1637,20 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU + str[999] = 0; + va_end(ap); + ++#if PY_MAJOR_VERSION >= 3 ++ /* Ensure the error string doesn't start at UTF8 continuation. */ ++ while (*ptr && (*ptr & 0xc0) == 0x80) ++ ptr++; ++#endif ++ + list = PyTuple_New(2); + PyTuple_SetItem(list, 0, libxml_xmlPythonErrorFuncCtxt); + Py_XINCREF(libxml_xmlPythonErrorFuncCtxt); +- message = libxml_charPtrConstWrap(str); ++ message = libxml_charPtrConstWrap(ptr); + PyTuple_SetItem(list, 1, message); + result = PyEval_CallObject(libxml_xmlPythonErrorFuncHandler, list); ++ /* Forget any errors caused in the error handler. */ ++ PyErr_Clear(); + Py_XDECREF(list); + Py_XDECREF(result); + } diff --git a/py3-libxml2/default/patches-available/0500-CVE-2020-24977.patch b/py3-libxml2/default/patches-available/0500-CVE-2020-24977.patch new file mode 100644 index 0000000..9633641 --- /dev/null +++ b/py3-libxml2/default/patches-available/0500-CVE-2020-24977.patch @@ -0,0 +1,40 @@ +From 8e7c20a1af8776677d7890f30b7a180567701a49 Mon Sep 17 00:00:00 2001 +From: Nick Wellnhofer +Date: Mon, 3 Aug 2020 17:30:41 +0200 +Subject: [PATCH] Fix integer overflow when comparing schema dates + +Found by OSS-Fuzz. +--- + xmlschemastypes.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/xmlschemastypes.c b/xmlschemastypes.c +index 4249d7000..d6b9f924e 100644 +--- a/xmlschemastypes.c ++++ b/xmlschemastypes.c +@@ -3691,6 +3691,8 @@ xmlSchemaCompareDurations(xmlSchemaValPtr x, xmlSchemaValPtr y) + minday = 0; + maxday = 0; + } else { ++ if (myear > LONG_MAX / 366) ++ return -2; + /* FIXME: This doesn't take leap year exceptions every 100/400 years + into account. */ + maxday = 365 * myear + (myear + 3) / 4; +@@ -4079,6 +4081,14 @@ xmlSchemaCompareDates (xmlSchemaValPtr x, xmlSchemaValPtr y) + if ((x == NULL) || (y == NULL)) + return -2; + ++ if ((x->value.date.year > LONG_MAX / 366) || ++ (x->value.date.year < LONG_MIN / 366) || ++ (y->value.date.year > LONG_MAX / 366) || ++ (y->value.date.year < LONG_MIN / 366)) { ++ /* Possible overflow when converting to days. */ ++ return -2; ++ } ++ + if (x->value.date.tz_flag) { + + if (!y->value.date.tz_flag) { +-- +GitLab \ No newline at end of file diff --git a/py3-libxml2/default/patches-enabled/0100-CVE-2019-20388.patch b/py3-libxml2/default/patches-enabled/0100-CVE-2019-20388.patch new file mode 120000 index 0000000..18bdb04 --- /dev/null +++ b/py3-libxml2/default/patches-enabled/0100-CVE-2019-20388.patch @@ -0,0 +1 @@ +../patches-available/0100-CVE-2019-20388.patch \ No newline at end of file diff --git a/py3-libxml2/default/patches-enabled/0200-libxml2-CVE-2020-7595.patch b/py3-libxml2/default/patches-enabled/0200-libxml2-CVE-2020-7595.patch new file mode 120000 index 0000000..f46ddca --- /dev/null +++ b/py3-libxml2/default/patches-enabled/0200-libxml2-CVE-2020-7595.patch @@ -0,0 +1 @@ +../patches-available/0200-libxml2-CVE-2020-7595.patch \ No newline at end of file diff --git a/py3-libxml2/default/patches-enabled/0300-revert-Make-xmlFreeNodeList-non-recursive.patch b/py3-libxml2/default/patches-enabled/0300-revert-Make-xmlFreeNodeList-non-recursive.patch new file mode 120000 index 0000000..fa7aefc --- /dev/null +++ b/py3-libxml2/default/patches-enabled/0300-revert-Make-xmlFreeNodeList-non-recursive.patch @@ -0,0 +1 @@ +../patches-available/0300-revert-Make-xmlFreeNodeList-non-recursive.patch \ No newline at end of file diff --git a/py3-libxml2/default/patches-enabled/0400-libxml2-2.9.8-python3-unicode-errors.patch b/py3-libxml2/default/patches-enabled/0400-libxml2-2.9.8-python3-unicode-errors.patch new file mode 120000 index 0000000..75ff876 --- /dev/null +++ b/py3-libxml2/default/patches-enabled/0400-libxml2-2.9.8-python3-unicode-errors.patch @@ -0,0 +1 @@ +../patches-available/0400-libxml2-2.9.8-python3-unicode-errors.patch \ No newline at end of file diff --git a/py3-libxml2/default/patches-enabled/0500-CVE-2020-24977.patch b/py3-libxml2/default/patches-enabled/0500-CVE-2020-24977.patch new file mode 120000 index 0000000..b97a607 --- /dev/null +++ b/py3-libxml2/default/patches-enabled/0500-CVE-2020-24977.patch @@ -0,0 +1 @@ +../patches-available/0500-CVE-2020-24977.patch \ No newline at end of file diff --git a/py3-mako/default/conf.sh b/py3-mako/default/conf.sh new file mode 100755 index 0000000..c8db2fe --- /dev/null +++ b/py3-mako/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration" diff --git a/py3-mako/default/deps b/py3-mako/default/deps new file mode 100644 index 0000000..1331896 --- /dev/null +++ b/py3-mako/default/deps @@ -0,0 +1,26 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +bison +expat +flex +m4 +zlib +meson +pkgconf +tls-certs +python3-dynamic +py3-parsing +py3-six +py3-ordered-set +py3-appdirs +py3-packaging +py3-setuptools diff --git a/py3-mako/default/inst.sh b/py3-mako/default/inst.sh new file mode 100755 index 0000000..702af40 --- /dev/null +++ b/py3-mako/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +python3 setup.py install --prefix=/usr +mv $PY3PKGS/easy-install.pth $PY3PKGS/$name.pth diff --git a/py3-mako/default/make.sh b/py3-mako/default/make.sh new file mode 100755 index 0000000..42ba6a7 --- /dev/null +++ b/py3-mako/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +python3 setup.py build diff --git a/py3-mooltipy/default/conf.sh b/py3-mooltipy/default/conf.sh new file mode 100755 index 0000000..c8db2fe --- /dev/null +++ b/py3-mooltipy/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration" diff --git a/py3-mooltipy/default/deps b/py3-mooltipy/default/deps new file mode 100644 index 0000000..678016c --- /dev/null +++ b/py3-mooltipy/default/deps @@ -0,0 +1,29 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +bison +expat +flex +m4 +zlib +meson +pkgconf +tls-certs +python3-dynamic +py3-parsing +py3-six +py3-ordered-set +py3-appdirs +py3-packaging +py3-setuptools +py3-pyusb +libffi +bzip2 diff --git a/py3-mooltipy/default/inst.sh b/py3-mooltipy/default/inst.sh new file mode 100755 index 0000000..702af40 --- /dev/null +++ b/py3-mooltipy/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +python3 setup.py install --prefix=/usr +mv $PY3PKGS/easy-install.pth $PY3PKGS/$name.pth diff --git a/py3-mooltipy/default/make.sh b/py3-mooltipy/default/make.sh new file mode 100755 index 0000000..42ba6a7 --- /dev/null +++ b/py3-mooltipy/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +python3 setup.py build diff --git a/py3-ordered-set/default/conf.sh b/py3-ordered-set/default/conf.sh new file mode 100755 index 0000000..bb3314d --- /dev/null +++ b/py3-ordered-set/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration to be done." diff --git a/py3-ordered-set/default/deps b/py3-ordered-set/default/deps new file mode 100644 index 0000000..426823e --- /dev/null +++ b/py3-ordered-set/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +$PY3DEP diff --git a/py3-ordered-set/default/inst.sh b/py3-ordered-set/default/inst.sh new file mode 100755 index 0000000..aa9e742 --- /dev/null +++ b/py3-ordered-set/default/inst.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +cp -r ordered_set.egg-info $PY3PKGS/ordered_set-$version-py$PY3VER.egg-info +cp -r ordered_set.py $PY3PKGS/ +python3 -m compileall -f -q $PY3PKGS/ordered_set.py diff --git a/py3-ordered-set/default/make.sh b/py3-ordered-set/default/make.sh new file mode 100755 index 0000000..22b50e3 --- /dev/null +++ b/py3-ordered-set/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "building is part of the installation step for this package." diff --git a/py3-packaging/default/conf.sh b/py3-packaging/default/conf.sh new file mode 100755 index 0000000..bb3314d --- /dev/null +++ b/py3-packaging/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration to be done." diff --git a/py3-packaging/default/deps b/py3-packaging/default/deps new file mode 100644 index 0000000..f1404b0 --- /dev/null +++ b/py3-packaging/default/deps @@ -0,0 +1,14 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +$PY3DEP +py3-parsing +py3-six diff --git a/py3-packaging/default/inst.sh b/py3-packaging/default/inst.sh new file mode 100755 index 0000000..d4215c7 --- /dev/null +++ b/py3-packaging/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +python3 setup.py install --prefix= diff --git a/py3-packaging/default/make.sh b/py3-packaging/default/make.sh new file mode 100755 index 0000000..16ff8a1 --- /dev/null +++ b/py3-packaging/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +python3 setup.py build diff --git a/py3-parsing/default/conf.sh b/py3-parsing/default/conf.sh new file mode 100755 index 0000000..bb3314d --- /dev/null +++ b/py3-parsing/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration to be done." diff --git a/py3-parsing/default/deps b/py3-parsing/default/deps new file mode 100644 index 0000000..426823e --- /dev/null +++ b/py3-parsing/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +$PY3DEP diff --git a/py3-parsing/default/inst.sh b/py3-parsing/default/inst.sh new file mode 100755 index 0000000..8152fd6 --- /dev/null +++ b/py3-parsing/default/inst.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +cp -r pyparsing.egg-info $PY3PKGS/pyparsing-$version-py$PY3VER.egg-info +cp -r pyparsing.py $PY3PKGS/ +python3 -m compileall -f -q $PY3PKGS/pyparsing.py diff --git a/py3-parsing/default/make.sh b/py3-parsing/default/make.sh new file mode 100755 index 0000000..22b50e3 --- /dev/null +++ b/py3-parsing/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "building is part of the installation step for this package." diff --git a/py3-pip/default/conf.sh b/py3-pip/default/conf.sh new file mode 100755 index 0000000..c8db2fe --- /dev/null +++ b/py3-pip/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration" diff --git a/py3-pip/default/deps b/py3-pip/default/deps new file mode 100644 index 0000000..1331896 --- /dev/null +++ b/py3-pip/default/deps @@ -0,0 +1,26 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +bison +expat +flex +m4 +zlib +meson +pkgconf +tls-certs +python3-dynamic +py3-parsing +py3-six +py3-ordered-set +py3-appdirs +py3-packaging +py3-setuptools diff --git a/py3-pip/default/inst.sh b/py3-pip/default/inst.sh new file mode 100755 index 0000000..ae7abf3 --- /dev/null +++ b/py3-pip/default/inst.sh @@ -0,0 +1,5 @@ +#!/bin/sh -e + +#python3 setup.py install --prefix=/usr +#mv $PY3PKGS/easy-install.pth $PY3PKGS/$name.pth +python3 -m ensurepip --default-pip diff --git a/py3-pip/default/make.sh b/py3-pip/default/make.sh new file mode 100755 index 0000000..9ba6c02 --- /dev/null +++ b/py3-pip/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "no make step" diff --git a/py3-pyusb/default/conf.sh b/py3-pyusb/default/conf.sh new file mode 100755 index 0000000..c8db2fe --- /dev/null +++ b/py3-pyusb/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration" diff --git a/py3-pyusb/default/deps b/py3-pyusb/default/deps new file mode 100644 index 0000000..1331896 --- /dev/null +++ b/py3-pyusb/default/deps @@ -0,0 +1,26 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +bison +expat +flex +m4 +zlib +meson +pkgconf +tls-certs +python3-dynamic +py3-parsing +py3-six +py3-ordered-set +py3-appdirs +py3-packaging +py3-setuptools diff --git a/py3-pyusb/default/inst.sh b/py3-pyusb/default/inst.sh new file mode 100755 index 0000000..702af40 --- /dev/null +++ b/py3-pyusb/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +python3 setup.py install --prefix=/usr +mv $PY3PKGS/easy-install.pth $PY3PKGS/$name.pth diff --git a/py3-pyusb/default/make.sh b/py3-pyusb/default/make.sh new file mode 100755 index 0000000..42ba6a7 --- /dev/null +++ b/py3-pyusb/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +python3 setup.py build diff --git a/py3-setuptools/default/conf.sh b/py3-setuptools/default/conf.sh new file mode 100755 index 0000000..ea04038 --- /dev/null +++ b/py3-setuptools/default/conf.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +set -e + +# thanks to the alpine linux contributors for demonstrating how to "de-vendor" +# this package. + +rm -fr pkg_resources/extern setuptools/extern setuptools/_vendor + +echo " +setuptools +pkg_resources" | while read _module; do + find . -name \*.py -exec sed -i \ + -e 's/from '$_module.extern' import/import/' \ + -e 's/from '$_module.extern'./from /' \ + -e 's/import '$_module.extern'./import /' \ + -e "s/__import__('$_module.extern./__import__('/" \ + {} + +done + +sed -e '/tag_build = .post/d' -e '/tag_date = 1/d' -i setup.cfg + +sed -i -e "s|^#\!.*/usr/bin/env python|#!/bin/python3|" \ + setuptools/command/easy_install.py + +python3 bootstrap.py diff --git a/py3-setuptools/default/deps b/py3-setuptools/default/deps new file mode 100644 index 0000000..8215c5b --- /dev/null +++ b/py3-setuptools/default/deps @@ -0,0 +1,17 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +python3-dynamic +py3-parsing +py3-six +py3-ordered-set +py3-appdirs +py3-packaging diff --git a/py3-setuptools/default/inst.sh b/py3-setuptools/default/inst.sh new file mode 100755 index 0000000..d4215c7 --- /dev/null +++ b/py3-setuptools/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +python3 setup.py install --prefix= diff --git a/py3-setuptools/default/make.sh b/py3-setuptools/default/make.sh new file mode 100755 index 0000000..16ff8a1 --- /dev/null +++ b/py3-setuptools/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +python3 setup.py build diff --git a/py3-six/default/conf.sh b/py3-six/default/conf.sh new file mode 100755 index 0000000..bb3314d --- /dev/null +++ b/py3-six/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration to be done." diff --git a/py3-six/default/deps b/py3-six/default/deps new file mode 100644 index 0000000..426823e --- /dev/null +++ b/py3-six/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +$PY3DEP diff --git a/py3-six/default/inst.sh b/py3-six/default/inst.sh new file mode 100755 index 0000000..d4215c7 --- /dev/null +++ b/py3-six/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +python3 setup.py install --prefix= diff --git a/py3-six/default/make.sh b/py3-six/default/make.sh new file mode 100755 index 0000000..16ff8a1 --- /dev/null +++ b/py3-six/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +python3 setup.py build diff --git a/python2/default/conf.sh b/python2/default/conf.sh new file mode 100755 index 0000000..2dcdad0 --- /dev/null +++ b/python2/default/conf.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +#autoreconf -fi + +#LD_LIBRARY_PATH="/lib" \ +#CONFIG_LDFLAGS="-L/lib -lffi -lbz2 -lexpat" \ +#LDFLAGS="$LDFLAGS -L/lib -lffi -lbz2 -lexpat" \ +#CPPFLAGS="$CPPFLAGS -I/include" \ +#OPT="$CFLAGS -DTHREAD_STACK_SIZE=0x100000" \ +CFLAGS="$CFLAGS -lffi -I/include -I/include/ncurses -fno-semantic-interposition" \ +./configure \ + --enable-ipv6 \ + --enable-loadable-sqlite-extensions \ + --enable-optimizations \ + --with-computed-gotos \ + --with-system-ffi \ + --with-system-expat \ + --without-ensurepip \ + --disable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix=/usr + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: python3 breaks in weird ways if this is left empty. diff --git a/python2/default/deps b/python2/default/deps new file mode 100644 index 0000000..7ad9ae7 --- /dev/null +++ b/python2/default/deps @@ -0,0 +1,28 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +automake +autoconf +pkgconf +libtool +zlib +bzip2 +xz +libffi +libxml2 +expat +ncurses +libressl +sqlite +gdbm +gnu-readline diff --git a/python2/default/inst.sh b/python2/default/inst.sh new file mode 100755 index 0000000..2fed203 --- /dev/null +++ b/python2/default/inst.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +make -j$(nproc) install + +pyver="$(echo "$version" | sed -n 's/^\(\w\+\.\w\+\).*/\1/p')" +mkdir -p "/lib/python$pyver/site-packages" diff --git a/python2/default/make.sh b/python2/default/make.sh new file mode 100755 index 0000000..d53dece --- /dev/null +++ b/python2/default/make.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +#CONFIG_LDFLAGS="-L/lib -lffi -lbz2 -lexpat" \ +#LDFLAGS="$LDFLAGS -L/lib -lffi -lbz2 -lexpat" \ +#CPPFLAGS="$CPPFLAGS -I/include" \ +#CFLAGS="$CFLAGS -I/include -lexpat -lffi -L/lib -DTHREAD_STACK_SIZE=0x100000" \ +CFLAGS="$CFLAGS -DTHREAD_STACK_SIZE=0x100000" \ +make -j$(nproc) + +## explanation +# +# CFLAGS: +# increase thread stack size so that the recursion limit can be reached in +# a thread without running out of stack space first. diff --git a/python2/default/patches-available/musl-find_library.patch b/python2/default/patches-available/musl-find_library.patch new file mode 100644 index 0000000..7899abb --- /dev/null +++ b/python2/default/patches-available/musl-find_library.patch @@ -0,0 +1,45 @@ +diff -ru Python-2.7.12.orig/Lib/ctypes/util.py Python-2.7.12/Lib/ctypes/util.py +--- Python-2.7.12.orig/Lib/ctypes/util.py 2016-06-26 00:49:30.000000000 +0300 ++++ Python-2.7.12/Lib/ctypes/util.py 2016-11-03 16:05:46.954665040 +0200 +@@ -204,6 +204,41 @@ + def find_library(name, is64 = False): + return _get_soname(_findLib_crle(name, is64) or _findLib_gcc(name)) + ++ elif True: ++ ++ # Patched for Alpine Linux / musl - search manually system paths ++ def _is_elf(filepath): ++ try: ++ with open(filepath, 'rb') as fh: ++ return fh.read(4) == b'\x7fELF' ++ except: ++ return False ++ ++ def find_library(name): ++ from glob import glob ++ # absolute name? ++ if os.path.isabs(name): ++ return name ++ # special case for libm, libcrypt and libpthread and musl ++ if name in ['m', 'crypt', 'pthread']: ++ name = 'c' ++ elif name in ['libm.so', 'libcrypt.so', 'libpthread.so']: ++ name = 'libc.so' ++ # search in standard locations (musl order) ++ paths = ['/lib', '/usr/local/lib', '/usr/lib'] ++ if 'LD_LIBRARY_PATH' in os.environ: ++ paths = os.environ['LD_LIBRARY_PATH'].split(':') + paths ++ for d in paths: ++ f = os.path.join(d, name) ++ if _is_elf(f): ++ return os.path.basename(f) ++ ++ prefix = os.path.join(d, 'lib'+name) ++ for suffix in ['.so', '.so.*']: ++ for f in glob('{0}{1}'.format(prefix, suffix)): ++ if _is_elf(f): ++ return os.path.basename(f) ++ + else: + + def _findSoname_ldconfig(name): diff --git a/python2/default/patches-available/static-modules.patch b/python2/default/patches-available/static-modules.patch new file mode 100644 index 0000000..20c14ff --- /dev/null +++ b/python2/default/patches-available/static-modules.patch @@ -0,0 +1,180 @@ +--- 2.7.18/Modules/Setup.dist 2020-04-19 21:13:39.000000000 +0000 ++++ b/Modules/Setup.dist 2020-09-28 01:41:43.630000000 +0000 +@@ -168,71 +168,70 @@ + + # Modules that should always be present (non UNIX dependent): + +-#array arraymodule.c # array objects +-#cmath cmathmodule.c _math.c # -lm # complex math library functions +-#math mathmodule.c _math.c # -lm # math library functions, e.g. sin() +-#_struct _struct.c # binary structure packing/unpacking +-#time timemodule.c # -lm # time operations and variables +-#operator operator.c # operator.add() and similar goodies ++array arraymodule.c # array objects ++cmath cmathmodule.c _math.c # -lm # complex math library functions ++math mathmodule.c _math.c # -lm # math library functions, e.g. sin() ++_struct _struct.c # binary structure packing/unpacking ++time timemodule.c # -lm # time operations and variables ++operator operator.c # operator.add() and similar goodies + #_testcapi _testcapimodule.c # Python C API test module +-#_random _randommodule.c # Random number generator +-#_collections _collectionsmodule.c # Container types +-#_heapq _heapqmodule.c # Heapq type +-#itertools itertoolsmodule.c # Functions creating iterators for efficient looping +-#strop stropmodule.c # String manipulations +-#_functools _functoolsmodule.c # Tools for working with functions and callable objects +-#_elementtree -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI _elementtree.c # elementtree accelerator ++_random _randommodule.c # Random number generator ++_collections _collectionsmodule.c # Container types ++_heapq _heapqmodule.c # Heapq type ++itertools itertoolsmodule.c # Functions creating iterators for efficient looping ++strop stropmodule.c # String manipulations ++_functools _functoolsmodule.c # Tools for working with functions and callable objects ++_elementtree -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI _elementtree.c # elementtree accelerator + #_pickle _pickle.c # pickle accelerator +-#datetime datetimemodule.c # date/time type +-#_bisect _bisectmodule.c # Bisection algorithms ++datetime datetimemodule.c # date/time type ++_bisect _bisectmodule.c # Bisection algorithms + +-#unicodedata unicodedata.c # static Unicode character database ++unicodedata unicodedata.c # static Unicode character database + + # access to ISO C locale support + #_locale _localemodule.c # -lintl + + # Standard I/O baseline +-#_io -I$(srcdir)/Modules/_io _io/bufferedio.c _io/bytesio.c _io/fileio.c _io/iobase.c _io/_iomodule.c _io/stringio.c _io/textio.c ++_io -I$(srcdir)/Modules/_io _io/bufferedio.c _io/bytesio.c _io/fileio.c _io/iobase.c _io/_iomodule.c _io/stringio.c _io/textio.c + + + # Modules with some UNIX dependencies -- on by default: + # (If you have a really backward UNIX, select and socket may not be + # supported...) + +-#fcntl fcntlmodule.c # fcntl(2) and ioctl(2) +-#spwd spwdmodule.c # spwd(3) +-#grp grpmodule.c # grp(3) +-#select selectmodule.c # select(2); not on ancient System V ++fcntl fcntlmodule.c # fcntl(2) and ioctl(2) ++spwd spwdmodule.c # spwd(3) ++grp grpmodule.c # grp(3) ++select selectmodule.c # select(2); not on ancient System V + + # Memory-mapped files (also works on Win32). +-#mmap mmapmodule.c ++mmap mmapmodule.c + + # CSV file helper +-#_csv _csv.c ++_csv _csv.c + + # Socket module helper for socket(2) +-#_socket socketmodule.c timemodule.c ++_socket socketmodule.c timemodule.c + + # Socket module helper for SSL support; you must comment out the other + # socket line above, and possibly edit the SSL variable: +-#SSL=/usr/local/ssl +-#_ssl _ssl.c \ +-# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ +-# -L$(SSL)/lib -lssl -lcrypto ++_ssl _ssl.c \ ++ -DUSE_SSL -I/include -I/include/openssl \ ++ -L/lib -lssl -lcrypto + + # The crypt module is now disabled by default because it breaks builds + # on many systems (where -lcrypt is needed), e.g. Linux (I believe). + # + # First, look at Setup.config; configure may have set this for you. + +-#crypt cryptmodule.c # -lcrypt # crypt(3); needs -lcrypt on some systems ++crypt cryptmodule.c -lcrypt # crypt(3); needs -lcrypt on some systems + + + # Some more UNIX dependent modules -- off by default, since these + # are not supported by all UNIX systems: + + #nis nismodule.c -lnsl # Sun yellow pages -- not everywhere +-#termios termios.c # Steen Lumholt's termios module ++termios termios.c # Steen Lumholt's termios module + #resource resource.c # Jeremy Hylton's rlimit interface + + +@@ -252,14 +251,14 @@ + # Message-Digest Algorithm, described in RFC 1321. The necessary files + # md5.c and md5.h are included here. + +-#_md5 md5module.c md5.c ++_md5 md5module.c md5.c + + + # The _sha module implements the SHA checksum algorithms. + # (NIST's Secure Hash Algorithms.) +-#_sha shamodule.c +-#_sha256 sha256module.c +-#_sha512 sha512module.c ++_sha shamodule.c ++_sha256 sha256module.c ++_sha512 sha512module.c + + + # SGI IRIX specific modules -- off by default. +@@ -311,7 +310,7 @@ + + # George Neville-Neil's timing module: + +-#timing timingmodule.c ++timing timingmodule.c + + + # The _tkinter module. +@@ -367,9 +366,9 @@ + # + # First, look at Setup.config; configure may have set this for you. + +-#_curses _cursesmodule.c -lcurses -ltermcap ++_curses _cursesmodule.c -lncurses + # Wrapper for the panel library that's part of ncurses and SYSV curses. +-#_curses_panel _curses_panel.c -lpanel -lncurses ++_curses_panel _curses_panel.c -lpanel -lncurses + + + # Generic (SunOS / SVR4) dynamic loading module. +@@ -400,7 +399,7 @@ + # + # First, look at Setup.config; configure may have set this for you. + +-#gdbm gdbmmodule.c -I/usr/local/include -L/usr/local/lib -lgdbm ++gdbm gdbmmodule.c -I/usr/local/include -L/usr/local/lib -lgdbm + + + # Sleepycat Berkeley DB interface. +@@ -434,14 +433,14 @@ + + + # Helper module for various ascii-encoders +-#binascii binascii.c ++binascii binascii.c + + # Fred Drake's interface to the Python parser +-#parser parsermodule.c ++parser parsermodule.c + + # cStringIO and cPickle +-#cStringIO cStringIO.c +-#cPickle cPickle.c ++cStringIO cStringIO.c ++cPickle cPickle.c + + + # Lee Busby's SIGFPE modules. +@@ -464,7 +463,7 @@ + # Andrew Kuchling's zlib module. + # This require zlib 1.1.3 (or later). + # See http://www.gzip.org/zlib/ +-#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz ++zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz + + # Interface to the Expat XML parser + # More information on Expat can be found at www.libexpat.org. diff --git a/python2/default/patches-available/unchecked-ioctl.patch b/python2/default/patches-available/unchecked-ioctl.patch new file mode 100644 index 0000000..4d5564c --- /dev/null +++ b/python2/default/patches-available/unchecked-ioctl.patch @@ -0,0 +1,11 @@ +--- ./Modules/fcntlmodule.c.orig ++++ ./Modules/fcntlmodule.c +@@ -118,7 +118,7 @@ + int mutate_arg = 1; + char buf[IOCTL_BUFSZ+1]; /* argument plus NUL byte */ + +- if (PyArg_ParseTuple(args, "O&Iw#|i:ioctl", ++ if (PyArg_ParseTuple(args, "O&Iw#|n:ioctl", + conv_descriptor, &fd, &code, + &str, &len, &mutate_arg)) { + char *arg; diff --git a/python2/default/patches-enabled/musl-find_library.patch b/python2/default/patches-enabled/musl-find_library.patch new file mode 120000 index 0000000..93ca912 --- /dev/null +++ b/python2/default/patches-enabled/musl-find_library.patch @@ -0,0 +1 @@ +../patches-available/musl-find_library.patch \ No newline at end of file diff --git a/python2/default/patches-enabled/static-modules.patch b/python2/default/patches-enabled/static-modules.patch new file mode 120000 index 0000000..c4eda0f --- /dev/null +++ b/python2/default/patches-enabled/static-modules.patch @@ -0,0 +1 @@ +../patches-available/static-modules.patch \ No newline at end of file diff --git a/python2/default/patches-enabled/unchecked-ioctl.patch b/python2/default/patches-enabled/unchecked-ioctl.patch new file mode 120000 index 0000000..8e4de05 --- /dev/null +++ b/python2/default/patches-enabled/unchecked-ioctl.patch @@ -0,0 +1 @@ +../patches-available/unchecked-ioctl.patch \ No newline at end of file diff --git a/python2/default/test_threads.py b/python2/default/test_threads.py new file mode 100755 index 0000000..dd4193d --- /dev/null +++ b/python2/default/test_threads.py @@ -0,0 +1,15 @@ +#!/bin/python3 + +# make sure the recursion limit is reached before running out of stack space. + +import threading +import sys + +def fun(i): + try: + fun(i+1) + except: + sys.exit(0) + +t = threading.Thread(target=fun, args=[1]) +t.start() diff --git a/python3-dynamic/default/conf.sh b/python3-dynamic/default/conf.sh new file mode 100755 index 0000000..a9bd9f2 --- /dev/null +++ b/python3-dynamic/default/conf.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +# force system libs because "with-system-ffi" is apparently ignored(!) on linux. +#rm -fr Modules/_ctypes/darwin* Modules/_ctypes/libffi* +autoreconf -fi + +LD_LIBRARY_PATH="/lib" \ +CONFIG_LDFLAGS="-L/lib -lffi -lbz2 -lexpat" \ +LDFLAGS="$LDFLAGS -L/lib -lffi -lbz2 -lexpat" \ +CPPFLAGS="$CPPFLAGS -I/include" \ +CFLAGS="$CFLAGS -lffi -I/include -fno-semantic-interposition" \ +./configure \ + --enable-ipv6 \ + --enable-loadable-sqlite-extensions \ + --enable-optimizations \ + --with-computed-gotos \ + --with-system-ffi \ + --with-system-expat \ + --with-openssl="/etc/ssl/ca-bundle.crt" \ + --without-ensurepip \ + --disable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix=/usr + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: python3 breaks in weird ways if this is left empty. diff --git a/python3-dynamic/default/deps b/python3-dynamic/default/deps new file mode 100644 index 0000000..650d47e --- /dev/null +++ b/python3-dynamic/default/deps @@ -0,0 +1,29 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +automake +autoconf +pkgconf +libtool +zlib +bzip2 +xz +libffi +libxml2 +expat +ncurses +libressl +tls-certs +sqlite +gdbm +gnu-readline diff --git a/python3-dynamic/default/env.sh b/python3-dynamic/default/env.sh new file mode 100755 index 0000000..282e6dd --- /dev/null +++ b/python3-dynamic/default/env.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +export CC="gcc" + +if [ "$(which python3 2> /dev/null)" ]; then + export PY3VER="$(python3 -V | sed -n 's/^Python \(\w\+\.\w\+\).*/\1/p')" + export PY3PKGS="/lib/python$PY3VER/site-packages" + export PYTHONHOME="/usr:/usr" + export PYTHONPATH="/lib/python/$PY3VER:$PY3PKGS" +fi + +# TODO: remove the need for these lines by making musl-cross-make build a gcc +# with a header search path of /include only, with all headers contained there. +export CPATH="${CPATH:-/include}" +export C_INCLUDE_PATH="/powerpc64le-lix-linux-musl/include" +export CPLUS_INCLUDE_PATH="/include/c++/9.2.0/powerpc64le-lix-linux-musl:/include/c++/9.2.0" diff --git a/python3-dynamic/default/inst.sh b/python3-dynamic/default/inst.sh new file mode 100755 index 0000000..742e8bb --- /dev/null +++ b/python3-dynamic/default/inst.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +make -j$(nproc) install + +pyver="$(echo "$version" | sed -n 's/^(\w\+\.\w\+\).*/\1/p')" +mkdir -p "/lib/python$pyver/site-packages" diff --git a/python3-dynamic/default/make.sh b/python3-dynamic/default/make.sh new file mode 100755 index 0000000..49f1407 --- /dev/null +++ b/python3-dynamic/default/make.sh @@ -0,0 +1,14 @@ +#!/bin/sh + + +CONFIG_LDFLAGS="-L/lib -lffi -lbz2 -lexpat" \ +LDFLAGS="$LDFLAGS -L/lib -lffi -lbz2 -lexpat" \ +CPPFLAGS="$CPPFLAGS -I/include" \ +CFLAGS="$CFLAGS -I/include -lexpat -lffi -L/lib -DTHREAD_STACK_SIZE=0x100000" \ +make -j$(nproc) + +## explanation +# +# CFLAGS: +# increase thread stack size so that the recursion limit can be reached in +# a thread without running out of stack space first. diff --git a/python3-dynamic/default/patch b/python3-dynamic/default/patch new file mode 100644 index 0000000..70ec017 --- /dev/null +++ b/python3-dynamic/default/patch @@ -0,0 +1,60 @@ +diff -ru Python-2.7.12.orig/Lib/ctypes/util.py Python-2.7.12/Lib/ctypes/util.py +--- Python-2.7.12.orig/Lib/ctypes/util.py 2016-06-26 00:49:30.000000000 +0300 ++++ Python-2.7.12/Lib/ctypes/util.py 2016-11-03 16:05:46.954665040 +0200 +@@ -204,6 +204,41 @@ + def find_library(name, is64 = False): + return _get_soname(_findLib_crle(name, is64) or _findLib_gcc(name)) + ++ elif True: ++ ++ # Patched for Alpine Linux / musl - search manually system paths ++ def _is_elf(filepath): ++ try: ++ with open(filepath, 'rb') as fh: ++ return fh.read(4) == b'\x7fELF' ++ except: ++ return False ++ ++ def find_library(name): ++ from glob import glob ++ # absolute name? ++ if os.path.isabs(name): ++ return name ++ # special case for libm, libcrypt and libpthread and musl ++ if name in ['m', 'crypt', 'pthread']: ++ name = 'c' ++ elif name in ['libm.so', 'libcrypt.so', 'libpthread.so']: ++ name = 'libc.so' ++ # search in standard locations (musl order) ++ paths = ['/lib', '/usr/local/lib', '/usr/lib'] ++ if 'LD_LIBRARY_PATH' in os.environ: ++ paths = os.environ['LD_LIBRARY_PATH'].split(':') + paths ++ for d in paths: ++ f = os.path.join(d, name) ++ if _is_elf(f): ++ return os.path.basename(f) ++ ++ prefix = os.path.join(d, 'lib'+name) ++ for suffix in ['.so', '.so.*','.a']: ++ for f in glob('{0}{1}'.format(prefix, suffix)): ++ if _is_elf(f): ++ return os.path.basename(f) ++ + else: + + def _findSoname_ldconfig(name): +diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c +index 8f8ba25..72b92da 100644 +--- a/Modules/posixmodule.c ++++ b/Modules/posixmodule.c +@@ -103,8 +103,9 @@ corresponding Unix manual entries for more information on calls."); + #undef HAVE_SCHED_SETAFFINITY + #endif + +-#if defined(HAVE_SYS_XATTR_H) && defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__GNU__) ++#if defined(HAVE_SYS_XATTR_H) && defined(__linux__) && !defined(__FreeBSD_kernel__) && !defined(__GNU__) + #define USE_XATTRS ++#include + #endif + + #ifdef USE_XATTRS diff --git a/python3-dynamic/default/test_threads.py b/python3-dynamic/default/test_threads.py new file mode 100755 index 0000000..dd4193d --- /dev/null +++ b/python3-dynamic/default/test_threads.py @@ -0,0 +1,15 @@ +#!/bin/python3 + +# make sure the recursion limit is reached before running out of stack space. + +import threading +import sys + +def fun(i): + try: + fun(i+1) + except: + sys.exit(0) + +t = threading.Thread(target=fun, args=[1]) +t.start() diff --git a/python3/default/conf.sh b/python3/default/conf.sh new file mode 100755 index 0000000..ac730f6 --- /dev/null +++ b/python3/default/conf.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +#autoreconf -fi + +#LD_LIBRARY_PATH="/lib" \ +#CONFIG_LDFLAGS="-L/lib -lffi -lbz2 -lexpat" \ +#LDFLAGS="$LDFLAGS -L/lib -lffi -lbz2 -lexpat" \ +#CPPFLAGS="$CPPFLAGS -I/include" \ +CFLAGS="$CFLAGS -lffi -I/include -fno-semantic-interposition" \ +./configure \ + --enable-ipv6 \ + --enable-loadable-sqlite-extensions \ + --enable-optimizations \ + --with-computed-gotos \ + --with-system-ffi \ + --with-system-expat \ + --without-ensurepip \ + --disable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix=/usr + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: python3 breaks in weird ways if this is left empty. diff --git a/python3/default/deps b/python3/default/deps new file mode 100644 index 0000000..7ad9ae7 --- /dev/null +++ b/python3/default/deps @@ -0,0 +1,28 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +automake +autoconf +pkgconf +libtool +zlib +bzip2 +xz +libffi +libxml2 +expat +ncurses +libressl +sqlite +gdbm +gnu-readline diff --git a/python3/default/inst.sh b/python3/default/inst.sh new file mode 100755 index 0000000..2fed203 --- /dev/null +++ b/python3/default/inst.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +make -j$(nproc) install + +pyver="$(echo "$version" | sed -n 's/^\(\w\+\.\w\+\).*/\1/p')" +mkdir -p "/lib/python$pyver/site-packages" diff --git a/python3/default/make.sh b/python3/default/make.sh new file mode 100755 index 0000000..d53dece --- /dev/null +++ b/python3/default/make.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +#CONFIG_LDFLAGS="-L/lib -lffi -lbz2 -lexpat" \ +#LDFLAGS="$LDFLAGS -L/lib -lffi -lbz2 -lexpat" \ +#CPPFLAGS="$CPPFLAGS -I/include" \ +#CFLAGS="$CFLAGS -I/include -lexpat -lffi -L/lib -DTHREAD_STACK_SIZE=0x100000" \ +CFLAGS="$CFLAGS -DTHREAD_STACK_SIZE=0x100000" \ +make -j$(nproc) + +## explanation +# +# CFLAGS: +# increase thread stack size so that the recursion limit can be reached in +# a thread without running out of stack space first. diff --git a/python3/default/patch b/python3/default/patch new file mode 100644 index 0000000..3c36a56 --- /dev/null +++ b/python3/default/patch @@ -0,0 +1,232 @@ +diff -ru Python-2.7.12.orig/Lib/ctypes/util.py Python-2.7.12/Lib/ctypes/util.py +--- Python-2.7.12.orig/Lib/ctypes/util.py 2016-06-26 00:49:30.000000000 +0300 ++++ Python-2.7.12/Lib/ctypes/util.py 2016-11-03 16:05:46.954665040 +0200 +@@ -204,6 +204,41 @@ + def find_library(name, is64 = False): + return _get_soname(_findLib_crle(name, is64) or _findLib_gcc(name)) + ++ elif True: ++ ++ # Patched for Alpine Linux / musl - search manually system paths ++ def _is_elf(filepath): ++ try: ++ with open(filepath, 'rb') as fh: ++ return fh.read(4) == b'\x7fELF' ++ except: ++ return False ++ ++ def find_library(name): ++ from glob import glob ++ # absolute name? ++ if os.path.isabs(name): ++ return name ++ # special case for libm, libcrypt and libpthread and musl ++ if name in ['m', 'crypt', 'pthread']: ++ name = 'c' ++ elif name in ['libm.so', 'libcrypt.so', 'libpthread.so']: ++ name = 'libc.so' ++ # search in standard locations (musl order) ++ paths = ['/lib', '/usr/local/lib', '/usr/lib'] ++ if 'LD_LIBRARY_PATH' in os.environ: ++ paths = os.environ['LD_LIBRARY_PATH'].split(':') + paths ++ for d in paths: ++ f = os.path.join(d, name) ++ if _is_elf(f): ++ return os.path.basename(f) ++ ++ prefix = os.path.join(d, 'lib'+name) ++ for suffix in ['.so', '.so.*','.a']: ++ for f in glob('{0}{1}'.format(prefix, suffix)): ++ if _is_elf(f): ++ return os.path.basename(f) ++ + else: + + def _findSoname_ldconfig(name): +diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c +index 8f8ba25..72b92da 100644 +--- a/Modules/posixmodule.c ++++ b/Modules/posixmodule.c +@@ -103,8 +103,9 @@ corresponding Unix manual entries for more information on calls."); + #undef HAVE_SCHED_SETAFFINITY + #endif + +-#if defined(HAVE_SYS_XATTR_H) && defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__GNU__) ++#if defined(HAVE_SYS_XATTR_H) && defined(__linux__) && !defined(__FreeBSD_kernel__) && !defined(__GNU__) + #define USE_XATTRS ++#include + #endif + + #ifdef USE_XATTRS +--- a/Modules/Setup 2020-07-20 13:01:32.000000000 +0000 ++++ b/Modules/Setup 2020-09-01 06:01:22.610144384 +0000 +@@ -1,3 +1,4 @@ ++*static* + # -*- makefile -*- + # The file Setup is used by the makesetup script to construct the files + # Makefile and config.c, from Makefile.pre and config.c.in, +@@ -166,66 +167,65 @@ + + # Modules that should always be present (non UNIX dependent): + +-#array arraymodule.c # array objects +-#cmath cmathmodule.c _math.c # -lm # complex math library functions +-#math mathmodule.c _math.c # -lm # math library functions, e.g. sin() +-#_contextvars _contextvarsmodule.c # Context Variables +-#_struct _struct.c # binary structure packing/unpacking +-#_weakref _weakref.c # basic weak reference support ++array arraymodule.c # array objects ++cmath cmathmodule.c _math.c # -lm # complex math library functions ++math mathmodule.c _math.c # -lm # math library functions, e.g. sin() ++_contextvars _contextvarsmodule.c # Context Variables ++_struct _struct.c # binary structure packing/unpacking ++_weakref _weakref.c # basic weak reference support + #_testcapi _testcapimodule.c # Python C API test module + #_testinternalcapi _testinternalcapi.c -I$(srcdir)/Include/internal -DPy_BUILD_CORE_MODULE # Python internal C API test module +-#_random _randommodule.c # Random number generator +-#_elementtree -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI _elementtree.c # elementtree accelerator +-#_pickle _pickle.c # pickle accelerator +-#_datetime _datetimemodule.c # datetime accelerator +-#_bisect _bisectmodule.c # Bisection algorithms +-#_heapq _heapqmodule.c # Heap queue algorithm +-#_asyncio _asynciomodule.c # Fast asyncio Future +-#_json -I$(srcdir)/Include/internal -DPy_BUILD_CORE_BUILTIN _json.c # _json speedups +-#_statistics _statisticsmodule.c # statistics accelerator ++_random _randommodule.c # Random number generator ++_elementtree -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI _elementtree.c # elementtree accelerator ++_pickle _pickle.c # pickle accelerator ++_datetime _datetimemodule.c # datetime accelerator ++_bisect _bisectmodule.c # Bisection algorithms ++_heapq _heapqmodule.c # Heap queue algorithm ++_asyncio _asynciomodule.c # Fast asyncio Future ++_json -I$(srcdir)/Include/internal -DPy_BUILD_CORE_BUILTIN _json.c # _json speedups ++_statistics _statisticsmodule.c # statistics accelerator + +-#unicodedata unicodedata.c # static Unicode character database ++unicodedata unicodedata.c # static Unicode character database + + + # Modules with some UNIX dependencies -- on by default: + # (If you have a really backward UNIX, select and socket may not be + # supported...) + +-#fcntl fcntlmodule.c # fcntl(2) and ioctl(2) +-#spwd spwdmodule.c # spwd(3) +-#grp grpmodule.c # grp(3) +-#select selectmodule.c # select(2); not on ancient System V ++fcntl fcntlmodule.c # fcntl(2) and ioctl(2) ++spwd spwdmodule.c # spwd(3) ++grp grpmodule.c # grp(3) ++select selectmodule.c # select(2); not on ancient System V + + # Memory-mapped files (also works on Win32). +-#mmap mmapmodule.c ++mmap mmapmodule.c + + # CSV file helper +-#_csv _csv.c ++_csv _csv.c + + # Socket module helper for socket(2) +-#_socket socketmodule.c ++_socket socketmodule.c + + # Socket module helper for SSL support; you must comment out the other +-# socket line above, and possibly edit the SSL variable: +-#SSL=/usr/local/ssl +-#_ssl _ssl.c \ +-# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ +-# -L$(SSL)/lib -lssl -lcrypto ++# socket line above: ++_ssl _ssl.c \ ++ -DUSE_SSL -I/include -I/include/openssl \ ++ -L/lib -lssl -lcrypto + + # The crypt module is now disabled by default because it breaks builds + # on many systems (where -lcrypt is needed), e.g. Linux (I believe). + +-#_crypt _cryptmodule.c # -lcrypt # crypt(3); needs -lcrypt on some systems ++_crypt _cryptmodule.c -lcrypt # crypt(3); needs -lcrypt on some systems + + + # Some more UNIX dependent modules -- off by default, since these + # are not supported by all UNIX systems: + + #nis nismodule.c -lnsl # Sun yellow pages -- not everywhere +-#termios termios.c # Steen Lumholt's termios module ++termios termios.c # Steen Lumholt's termios module + #resource resource.c # Jeremy Hylton's rlimit interface + +-#_posixsubprocess _posixsubprocess.c # POSIX subprocess module helper ++_posixsubprocess _posixsubprocess.c # POSIX subprocess module helper + + # Multimedia modules -- off by default. + # These don't work for 64-bit platforms!!! +@@ -241,18 +241,18 @@ + # The _md5 module implements the RSA Data Security, Inc. MD5 + # Message-Digest Algorithm, described in RFC 1321. + +-#_md5 md5module.c ++_md5 md5module.c + + + # The _sha module implements the SHA checksum algorithms. + # (NIST's Secure Hash Algorithms.) +-#_sha1 sha1module.c +-#_sha256 sha256module.c +-#_sha512 sha512module.c +-#_sha3 _sha3/sha3module.c ++_sha1 sha1module.c ++_sha256 sha256module.c ++_sha512 sha512module.c ++_sha3 _sha3/sha3module.c + + # _blake module +-#_blake2 _blake2/blake2module.c _blake2/blake2b_impl.c _blake2/blake2s_impl.c ++_blake2 _blake2/blake2module.c _blake2/blake2b_impl.c _blake2/blake2s_impl.c + + # The _tkinter module. + # +@@ -305,9 +305,9 @@ + # provided by the ncurses library. e.g. on Linux, link with -lncurses + # instead of -lcurses). + +-#_curses _cursesmodule.c -lcurses -ltermcap ++_curses _cursesmodule.c -I/include/ncurses -lncurses + # Wrapper for the panel library that's part of ncurses and SYSV curses. +-#_curses_panel _curses_panel.c -lpanel -lncurses ++_curses_panel _curses_panel.c -I/include/ncurses -lpanel -lncurses + + + # Modules that provide persistent dictionary-like semantics. You will +@@ -321,25 +321,25 @@ + + # Anthony Baxter's gdbm module. GNU dbm(3) will require -lgdbm: + +-#_gdbm _gdbmmodule.c -I/usr/local/include -L/usr/local/lib -lgdbm ++_gdbm _gdbmmodule.c -I/usr/local/include -L/usr/local/lib -lgdbm + + + # Helper module for various ascii-encoders +-#binascii binascii.c ++binascii binascii.c + + # Fred Drake's interface to the Python parser +-#parser parsermodule.c ++parser parsermodule.c + + + # Andrew Kuchling's zlib module. + # This require zlib 1.1.3 (or later). + # See http://www.gzip.org/zlib/ +-#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz ++zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz + + # Interface to the Expat XML parser + # More information on Expat can be found at www.libexpat.org. + # +-#pyexpat expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DXML_POOR_ENTROPY -DUSE_PYEXPAT_CAPI ++pyexpat expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c -I$(srcdir)/Modules/expat -L/lib -lexpat -DHAVE_EXPAT_CONFIG_H -DXML_POOR_ENTROPY -DUSE_PYEXPAT_CAPI + + # Hye-Shik Chang's CJKCodecs + diff --git a/python3/default/test_threads.py b/python3/default/test_threads.py new file mode 100755 index 0000000..dd4193d --- /dev/null +++ b/python3/default/test_threads.py @@ -0,0 +1,15 @@ +#!/bin/python3 + +# make sure the recursion limit is reached before running out of stack space. + +import threading +import sys + +def fun(i): + try: + fun(i+1) + except: + sys.exit(0) + +t = threading.Thread(target=fun, args=[1]) +t.start() diff --git a/quintom-cursor-theme-ink/default/conf.sh b/quintom-cursor-theme-ink/default/conf.sh new file mode 100755 index 0000000..b671f5e --- /dev/null +++ b/quintom-cursor-theme-ink/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "nothing to configure." diff --git a/quintom-cursor-theme-ink/default/inst.sh b/quintom-cursor-theme-ink/default/inst.sh new file mode 100755 index 0000000..7aea80c --- /dev/null +++ b/quintom-cursor-theme-ink/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +mkdir -p $PREFIX/share/icons/quintom-ink +cp -r 'Quintom_Ink Cursors/Quintom_Ink/'* $PREFIX/share/icons/quintom-ink diff --git a/quintom-cursor-theme-ink/default/make.sh b/quintom-cursor-theme-ink/default/make.sh new file mode 100755 index 0000000..603bf8e --- /dev/null +++ b/quintom-cursor-theme-ink/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "nothing to make." diff --git a/quintom-cursor-theme-snow/default/conf.sh b/quintom-cursor-theme-snow/default/conf.sh new file mode 100755 index 0000000..b671f5e --- /dev/null +++ b/quintom-cursor-theme-snow/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "nothing to configure." diff --git a/quintom-cursor-theme-snow/default/inst.sh b/quintom-cursor-theme-snow/default/inst.sh new file mode 100755 index 0000000..7d7b0a4 --- /dev/null +++ b/quintom-cursor-theme-snow/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +mkdir -p $PREFIX/share/icons/quintom-snow +cp -r 'Quintom_Snow Cursors/Quintom_Snow/'* $PREFIX/share/icons/quintom-snow diff --git a/quintom-cursor-theme-snow/default/make.sh b/quintom-cursor-theme-snow/default/make.sh new file mode 100755 index 0000000..603bf8e --- /dev/null +++ b/quintom-cursor-theme-snow/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "nothing to make." diff --git a/rsync/default/conf.sh b/rsync/default/conf.sh new file mode 100755 index 0000000..36ef2fe --- /dev/null +++ b/rsync/default/conf.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +./configure \ + --build=$(uname -m)-lix-linux-musl \ + --disable-xxhash \ + --disable-zstd \ + --disable-lz4 \ + --prefix= + +## explanation +# +# --build: +# configure fails without this because it can't recognize +# ppc64le-*-linux-musl machines on its own. +# +# --disable-xxhash --disable-zstd --disable-lz4: +# these checksum and compression algorithms are optional and would create +# additional dependencies. will reconsider if including them would be +# beneficial to enough people. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/rsync/default/deps b/rsync/default/deps new file mode 100644 index 0000000..27958a2 --- /dev/null +++ b/rsync/default/deps @@ -0,0 +1,16 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +xz +zlib +gzip +bzip2 +libressl diff --git a/ruby/default/conf.sh b/ruby/default/conf.sh new file mode 100755 index 0000000..ee9756b --- /dev/null +++ b/ruby/default/conf.sh @@ -0,0 +1,21 @@ +#!/bin/sh -e + +#autoreconf -ivf + +# the configure script does not detect isnan/isinf as macros +#export ac_cv_func_isnan=yes +#export ac_cv_func_isinf=yes + +./configure \ + --sysconfdir=$PREFIX/etc \ + --mandir=$PREFIX/share/man \ + --infodir=$PREFIX/share/info \ + --with-sitedir=$PREFIX/lib/site_ruby \ + --with-search-path="$PREFIX/lib/site_ruby/\$(ruby_ver)/$ARCH-linux" \ + --enable-pthread \ + --disable-rpath \ + --enable-shared \ + --enable-static \ + --build=$BUILD \ + --host=$HOST \ + --prefix=$PREFIX diff --git a/ruby/default/deps b/ruby/default/deps new file mode 100644 index 0000000..5c4f1df --- /dev/null +++ b/ruby/default/deps @@ -0,0 +1,26 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +libtool +perl +m4 +autoconf +automake +zlib +gdbm +gnu-readline +libffi +libyaml +tls-certs +bearssl +libressl +libucontext diff --git a/ruby/default/env.sh b/ruby/default/env.sh new file mode 100755 index 0000000..a0b11c5 --- /dev/null +++ b/ruby/default/env.sh @@ -0,0 +1,19 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +[ "$ARCH" != 'x86' ] || ARCH='i386' + +# copied from alpine linux's APKBUILD: +# -fomit-frame-pointer makes ruby segfault, see gentoo bug #150413 +# In many places aliasing rules are broken; play it safe +# as it's risky with newer compilers to leave it as it is. +export CFLAGS="$SHARED_CFLAGS -fno-omit-frame-pointer -fno-strict-aliasing" +export CPPFLAGS="$SHARED_CPPFLAGS -fno-omit-frame-pointer -fno-strict-aliasing" +export LDFLAGS="$SHARED_LDFLAGS" + +# Needed for coroutine stuff +export LIBS="-lucontext" + +# ruby saves path to install. we want use $PATH +#export INSTALL=install diff --git a/ruby/default/patches-available/fix-get_main_stack.patch b/ruby/default/patches-available/fix-get_main_stack.patch new file mode 100644 index 0000000..b56bc11 --- /dev/null +++ b/ruby/default/patches-available/fix-get_main_stack.patch @@ -0,0 +1,70 @@ +diff --git a/thread_pthread.c b/thread_pthread.c +index 951885ffa0..cf90321d1d 100644 +--- a/thread_pthread.c ++++ b/thread_pthread.c +@@ -656,9 +656,6 @@ hpux_attr_getstackaddr(const pthread_attr_t *attr, void **addr) + # define MAINSTACKADDR_AVAILABLE 0 + # endif + #endif +-#if MAINSTACKADDR_AVAILABLE && !defined(get_main_stack) +-# define get_main_stack(addr, size) get_stack(addr, size) +-#endif + + #ifdef STACKADDR_AVAILABLE + /* +@@ -740,6 +737,55 @@ get_stack(void **addr, size_t *size) + return 0; + #undef CHECK_ERR + } ++ ++#if defined(__linux__) && !defined(__GLIBC__) && defined(HAVE_GETRLIMIT) ++ ++#ifndef PAGE_SIZE ++#include ++#define PAGE_SIZE sysconf(_SC_PAGE_SIZE) ++#endif ++ ++static int ++get_main_stack(void **addr, size_t *size) ++{ ++ size_t start, end, limit, prevend = 0; ++ struct rlimit r; ++ FILE *f; ++ char buf[PATH_MAX+80], s[8]; ++ int n; ++ STACK_GROW_DIR_DETECTION; ++ ++ f = fopen("/proc/self/maps", "re"); ++ if (!f) ++ return -1; ++ n = 0; ++ while (fgets(buf, sizeof buf, f)) { ++ n = sscanf(buf, "%zx-%zx %*s %*s %*s %*s %7s", &start, &end, s); ++ if (n >= 2) { ++ if (n == 3 && strcmp(s, "[stack]") == 0) ++ break; ++ prevend = end; ++ } ++ n = 0; ++ } ++ fclose(f); ++ if (n == 0) ++ return -1; ++ ++ limit = 100 << 20; /* 100MB stack limit */ ++ if (getrlimit(RLIMIT_STACK, &r)==0 && r.rlim_cur < limit) ++ limit = r.rlim_cur & -PAGE_SIZE; ++ if (limit > end) limit = end; ++ if (prevend < end - limit) prevend = end - limit; ++ if (start > prevend) start = prevend; ++ *addr = IS_STACK_DIR_UPPER() ? (void *)start : (void *)end; ++ *size = end - start; ++ return 0; ++} ++#else ++# define get_main_stack(addr, size) get_stack(addr, size) ++#endif ++ + #endif + + static struct { diff --git a/ruby/default/patches-available/rubygems-avoid-platform-specific-gems.patch b/ruby/default/patches-available/rubygems-avoid-platform-specific-gems.patch new file mode 100644 index 0000000..4eb26a6 --- /dev/null +++ b/ruby/default/patches-available/rubygems-avoid-platform-specific-gems.patch @@ -0,0 +1,31 @@ +From: Jakub Jirutka +Date: Fri, 19 May 2017 19:56:00 +0200 +Subject: [PATCH] Rubygems: don't install platform-specific gems + +Gems with native extensions typically contain just source code that is +built during installation on user's system. However, Rubygems allows to +publish even platform-specific gems with prebuilt binaries for specific +platform. The problem is that Rubygems uses only short platform +identification like x86_64-linux; it does not identify used libc. +And sadly platform-specific gems for linux are built against glibc, so +they may not work on musl libc. + +This patch is a workaround for the aforesaid problem. It removes local +platform from Rubygems' supported platforms to force it always pick +a platform-agnostic (source) gem. Users can override it using +`--platform` option. + +--- a/lib/rubygems.rb ++++ b/lib/rubygems.rb +@@ -759,7 +759,10 @@ + def self.platforms + @platforms ||= [] + if @platforms.empty? +- @platforms = [Gem::Platform::RUBY, Gem::Platform.local] ++ # XXX: Patched to avoid installing platform-specific gems with binaries ++ # linked against glibc. ++ @platforms = [Gem::Platform::RUBY] ++ #@platforms = [Gem::Platform::RUBY, Gem::Platform.local] + end + @platforms + end diff --git a/ruby/default/patches-available/test_insns-lower-recursion-depth.patch b/ruby/default/patches-available/test_insns-lower-recursion-depth.patch new file mode 100644 index 0000000..6ec9320 --- /dev/null +++ b/ruby/default/patches-available/test_insns-lower-recursion-depth.patch @@ -0,0 +1,47 @@ +The patched test is a recursion function. We have lower stack size, +so we hit SystemStackError sooner than on other platforms. + + #361 test_insns.rb:389:in `block in ': + # recursive once + def once n + return %r/#{ + if n == 0 + true + else + once(n-1) # here + end + }/ox + end + x = once(128); x = once(7); x = once(16); + x =~ "true" && $~ + #=> "" (expected "true") once + Stderr output is not empty + bootstraptest.tmp.rb:3:in `once': stack level too deep (SystemStackError) + from bootstraptest.tmp.rb:7:in `block in once' + from bootstraptest.tmp.rb:3:in `once' + from bootstraptest.tmp.rb:7:in `block in once' + from bootstraptest.tmp.rb:3:in `once' + from bootstraptest.tmp.rb:7:in `block in once' + from bootstraptest.tmp.rb:3:in `once' + from bootstraptest.tmp.rb:7:in `block in once' + from bootstraptest.tmp.rb:3:in `once' + ... 125 levels... + from bootstraptest.tmp.rb:3:in `once' + from bootstraptest.tmp.rb:7:in `block in once' + from bootstraptest.tmp.rb:3:in `once' + from bootstraptest.tmp.rb:11:in `
' + Test_insns.rb FAIL 1/187 + FAIL 1/1197 tests failed + Make: *** [uncommon.mk:666: yes-btest-ruby] Error 1 + +--- a/bootstraptest/test_insns.rb ++++ b/bootstraptest/test_insns.rb +@@ -276,7 +276,7 @@ + end + }/ox + end +- x = once(128); x = once(7); x = once(16); ++ x = once(32); x = once(7); x = once(16); + x =~ "true" && $~ + }, + [ 'once', <<-'},', ], # { diff --git a/ruby/default/patches-enabled/fix-get_main_stack.patch b/ruby/default/patches-enabled/fix-get_main_stack.patch new file mode 120000 index 0000000..4211fe4 --- /dev/null +++ b/ruby/default/patches-enabled/fix-get_main_stack.patch @@ -0,0 +1 @@ +../patches-available/fix-get_main_stack.patch \ No newline at end of file diff --git a/ruby/default/patches-enabled/rubygems-avoid-platform-specific-gems.patch b/ruby/default/patches-enabled/rubygems-avoid-platform-specific-gems.patch new file mode 120000 index 0000000..34aa1ac --- /dev/null +++ b/ruby/default/patches-enabled/rubygems-avoid-platform-specific-gems.patch @@ -0,0 +1 @@ +../patches-available/rubygems-avoid-platform-specific-gems.patch \ No newline at end of file diff --git a/ruby/default/patches-enabled/test_insns-lower-recursion-depth.patch b/ruby/default/patches-enabled/test_insns-lower-recursion-depth.patch new file mode 120000 index 0000000..bf67338 --- /dev/null +++ b/ruby/default/patches-enabled/test_insns-lower-recursion-depth.patch @@ -0,0 +1 @@ +../patches-available/test_insns-lower-recursion-depth.patch \ No newline at end of file diff --git a/rust-src/default/conf.sh b/rust-src/default/conf.sh new file mode 100755 index 0000000..063a5c4 --- /dev/null +++ b/rust-src/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "nothing to configure; this is a source package." diff --git a/rust-src/default/inst.sh b/rust-src/default/inst.sh new file mode 100755 index 0000000..bf80367 --- /dev/null +++ b/rust-src/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +mkdir -p /src/rust-$version +cp -a * /src/rust-$version diff --git a/rust-src/default/make.sh b/rust-src/default/make.sh new file mode 100755 index 0000000..93ace00 --- /dev/null +++ b/rust-src/default/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +echo "removing cargo checksums so our patches don't break things..." +sed -i 's/\("files":{\)[^}]*]/\1/' src/vendor/libc/.cargo-checksum.json diff --git a/rust-src/default/patches-available/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch b/rust-src/default/patches-available/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch new file mode 100644 index 0000000..3025cc3 --- /dev/null +++ b/rust-src/default/patches-available/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch @@ -0,0 +1,63 @@ +Additions for build.rs by q66, necessary for our musl setup. + +From 1eb558f246269606c6d8d73824ef6b44fa10764e Mon Sep 17 00:00:00 2001 +From: Samuel Holland +Date: Sat, 9 Sep 2017 00:14:16 -0500 +Subject: [PATCH 06/16] Prefer libgcc_eh over libunwind for musl + +--- + src/libunwind/lib.rs | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libunwind/lib.rs b/src/libunwind/lib.rs +index 9182e349b19..0377fbb58fc 100644 +--- a/src/libunwind/lib.rs ++++ b/src/libunwind/lib.rs +@@ -23,6 +23,6 @@ cfg_if::cfg_if! { + } + + #[cfg(target_env = "musl")] +-#[link(name = "unwind", kind = "static", cfg(target_feature = "crt-static"))] ++#[link(name = "gcc_eh", cfg(target_feature = "crt-static"))] + #[link(name = "gcc_s", cfg(not(target_feature = "crt-static")))] + extern {} +diff --git a/src/libunwind/build.rs b/src/libunwind/build.rs +index f24d957..28828e5 100644 +--- a/src/libunwind/build.rs ++++ b/src/libunwind/build.rs +@@ -5,17 +5,14 @@ + let target = env::var("TARGET").expect("TARGET was not set"); + + if cfg!(feature = "llvm-libunwind") +- && ((target.contains("linux") && !target.contains("musl")) || target.contains("fuchsia")) ++ && (target.contains("linux") || target.contains("fuchsia")) + { + // Build the unwinding from libunwind C/C++ source code. + llvm_libunwind::compile(); + } else if target.contains("x86_64-fortanix-unknown-sgx") { + llvm_libunwind::compile(); + } else if target.contains("linux") { +- if target.contains("musl") { +- // linking for musl is handled in lib.rs +- llvm_libunwind::compile(); +- } else if !target.contains("android") { ++ if !target.contains("android") { + println!("cargo:rustc-link-lib=gcc_s"); + } + } else if target.contains("freebsd") { +@@ -145,15 +142,6 @@ + cfg.file(root.join("src").join(src)); + } + +- if target_env == "musl" { +- // use the same C compiler command to compile C++ code so we do not need to setup the +- // C++ compiler env variables on the builders +- cfg.cpp(false); +- // linking for musl is handled in lib.rs +- cfg.cargo_metadata(false); +- println!("cargo:rustc-link-search=native={}", env::var("OUT_DIR").unwrap()); +- } +- + cfg.compile("unwind"); + } + } diff --git a/rust-src/default/patches-available/alpine-move-py-scripts-to-share.patch b/rust-src/default/patches-available/alpine-move-py-scripts-to-share.patch new file mode 100644 index 0000000..21be36f --- /dev/null +++ b/rust-src/default/patches-available/alpine-move-py-scripts-to-share.patch @@ -0,0 +1,23 @@ +--- a/src/etc/rust-gdb ++++ b/src/etc/rust-gdb +@@ -12,7 +12,7 @@ + + # Find out where the pretty printer Python module is + RUSTC_SYSROOT="$("$RUSTC" --print=sysroot)" +-GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/lib/rustlib/etc" ++GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/share/rust/etc" + + # Run GDB with the additional arguments that load the pretty printers + # Set the environment variable `RUST_GDB` to overwrite the call to a + # Set the environment variable `RUST_GDB` to overwrite the call to a +--- a/src/etc/rust-lldb ++++ b/src/etc/rust-lldb +@@ -8,7 +8,7 @@ + + # Find out where to look for the pretty printer Python module + RUSTC_SYSROOT=$(rustc --print sysroot) +-RUST_LLDB="$RUSTC_SYSROOT/lib/rustlib/$host/bin/lldb" ++RUST_LLDB="$RUSTC_SYSROOT/share/rust/etc" + + lldb=lldb + if [ -f "$RUST_LLDB" ]; then diff --git a/rust-src/default/patches-available/alpine-target.patch b/rust-src/default/patches-available/alpine-target.patch new file mode 100644 index 0000000..63fde26 --- /dev/null +++ b/rust-src/default/patches-available/alpine-target.patch @@ -0,0 +1,125 @@ +From: Shiz , updated by Rasmus Thomsen on 28th of July 2019 +Date: Thu, 20 Aug 2017 01:52:36 +0200 +Last-Updated: Sat, 28 Oct 2017 20:23:00 +0200 +Subject: [PATCH] Add Alpine targets + +This adds `$arch-alpine-linux-musl` targets to Rust to encode our toolchain +and distribution-specific quirks instead of polluting the main musl target of +`$arch-unknown-linux-musl`. + +-- + +fox modified 2020-10-17 to remove automatic static-pie building and rpath setting. + +--- a/src/librustc_target/spec/mod.rs.orig 2019-05-23 21:05:45.173347119 +0200 ++++ b/src/librustc_target/spec/mod.rs 2019-05-23 21:06:39.006681699 +0200 +@@ -328,6 +328,12 @@ macro_rules! supported_targets { + } + + supported_targets! { ++ ("i586-alpine-linux-musl", i586_alpine_linux_musl), ++ ("x86_64-alpine-linux-musl", x86_64_alpine_linux_musl), ++ ("aarch64-alpine-linux-musl", aarch64_alpine_linux_musl), ++ ("armv6-alpine-linux-musleabihf", armv6_alpine_linux_musleabihf), ++ ("armv7-alpine-linux-musleabihf", armv7_alpine_linux_musleabihf), ++ ("powerpc64le-alpine-linux-musl", powerpc64le_alpine_linux_musl), + ("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu), + ("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32), + ("i686-unknown-linux-gnu", i686_unknown_linux_gnu), +--- /dev/null ++++ b/src/librustc_target/spec/aarch64_alpine_linux_musl.rs +@@ -0,0 +1,13 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::aarch64_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "aarch64-alpine-linux-musl".to_string(); ++ base.target_vendor = "alpine".to_string(); ++ base.options.crt_static_default = false; ++ //base.options.static_position_independent_executables = true; ++ //base.options.need_rpath = true; ++ ++ Ok(base) ++} +--- /dev/null ++++ b/src/librustc_target/spec/armv6_alpine_linux_musleabihf.rs +@@ -0,0 +1,13 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::arm_unknown_linux_musleabihf::target()?; ++ ++ base.llvm_target = "armv6-alpine-linux-musleabihf".to_string(); ++ base.target_vendor = "alpine".to_string(); ++ base.options.crt_static_default = false; ++ //base.options.static_position_independent_executables = true; ++ //base.options.need_rpath = true; ++ ++ Ok(base) ++} +--- /dev/null ++++ b/src/librustc_target/spec/armv7_alpine_linux_musleabihf.rs +@@ -0,0 +1,13 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::armv7_unknown_linux_musleabihf::target()?; ++ ++ base.llvm_target = "armv7-alpine-linux-musleabihf".to_string(); ++ base.target_vendor = "alpine".to_string(); ++ base.options.crt_static_default = false; ++ //base.options.static_position_independent_executables = true; ++ //base.options.need_rpath = true; ++ ++ Ok(base) ++} +--- /dev/null ++++ b/src/librustc_target/spec/i586_alpine_linux_musl.rs +@@ -0,0 +1,14 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::i686_unknown_linux_musl::target()?; ++ ++ base.options.cpu = "pentium4".to_string(); ++ base.llvm_target = "i586-alpine-linux-musl".to_string(); ++ base.target_vendor = "alpine".to_string(); ++ base.options.crt_static_default = false; ++ //base.options.static_position_independent_executables = true; ++ //base.options.need_rpath = true; ++ ++ Ok(base) ++} +--- /dev/null ++++ b/src/librustc_target/spec/powerpc64le_alpine_linux_musl.rs +@@ -0,0 +1,13 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::powerpc64le_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "powerpc64le-alpine-linux-musl".to_string(); ++ base.target_vendor = "alpine".to_string(); ++ base.options.crt_static_default = false; ++ //base.options.static_position_independent_executables = true; ++ //base.options.need_rpath = true; ++ ++ Ok(base) ++} +--- /dev/null ++++ b/src/librustc_target/spec/x86_64_alpine_linux_musl.rs +@@ -0,0 +1,13 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::x86_64_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "x86_64-alpine-linux-musl".to_string(); ++ base.target_vendor = "alpine".to_string(); ++ base.options.crt_static_default = false; ++ //base.options.static_position_independent_executables = true; ++ //base.options.need_rpath = true; ++ ++ Ok(base) ++} diff --git a/rust-src/default/patches-available/install-template-shebang.patch b/rust-src/default/patches-available/install-template-shebang.patch new file mode 100644 index 0000000..e81b579 --- /dev/null +++ b/rust-src/default/patches-available/install-template-shebang.patch @@ -0,0 +1,10 @@ +The script seems to be POSIX-sh (+ local) compatible. + +--- a/src/tools/rust-installer/install-template.sh ++++ b/src/tools/rust-installer/install-template.sh +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + # Copyright 2014 The Rust Project Developers. See the COPYRIGHT + # file at the top-level directory of this distribution and at + # http://rust-lang.org/COPYRIGHT. diff --git a/rust-src/default/patches-available/link-musl-dynamically.patch b/rust-src/default/patches-available/link-musl-dynamically.patch new file mode 100644 index 0000000..92f53d2 --- /dev/null +++ b/rust-src/default/patches-available/link-musl-dynamically.patch @@ -0,0 +1,27 @@ +--- a/src/vendor/libc/src/lib.rs ++++ b/src/vendor/libc/src/lib.rs +@@ -27,6 +27,7 @@ + #![deny(missing_copy_implementations, safe_packed_borrows)] + #![no_std] + #![cfg_attr(feature = "rustc-dep-of-std", no_core)] ++#![cfg_attr(feature = "rustc-dep-of-std", feature(static_nobundle))] + #![cfg_attr(target_os = "redox", feature(static_nobundle))] + + #[macro_use] +--- a/src/vendor/libc/src/unix/mod.rs ++++ b/src/vendor/libc/src/unix/mod.rs +@@ -297,11 +297,11 @@ cfg_if! { + // cargo build, don't pull in anything extra as the libstd dep + // already pulls in all libs. + } else if #[cfg(target_env = "musl")] { ++ #[link(name = "c")] ++ extern {} + #[cfg_attr(feature = "rustc-dep-of-std", +- link(name = "c", kind = "static", ++ link(name = "gcc", kind = "static-nobundle", + cfg(target_feature = "crt-static")))] +- #[cfg_attr(feature = "rustc-dep-of-std", +- link(name = "c", cfg(not(target_feature = "crt-static"))))] + extern {} + } else if #[cfg(target_os = "emscripten")] { + #[link(name = "c")] diff --git a/rust-src/default/patches-available/musl-dont-use-crt-static.patch b/rust-src/default/patches-available/musl-dont-use-crt-static.patch new file mode 100644 index 0000000..7d7a2b3 --- /dev/null +++ b/rust-src/default/patches-available/musl-dont-use-crt-static.patch @@ -0,0 +1,13 @@ +We first have to build against upstream triplets, which by default use crt-static +linking. This won't build though, so let's just disable it, we disable it in our +triplets too. +--- a/src/librustc_target/spec/linux_musl_base.rs.orig 2018-10-08 21:02:21.588611506 +0200 ++++ b/src/librustc_target/spec/linux_musl_base.rs 2018-10-08 21:02:40.846454873 +0200 +@@ -61,7 +61,7 @@ + base.post_link_objects_crt.push("crtn.o".to_string()); + + // These targets statically link libc by default +- base.crt_static_default = true; ++ base.crt_static_default = false; + // These targets allow the user to choose between static and dynamic linking. + base.crt_static_respected = true; diff --git a/rust-src/default/patches-available/musl-fix-linux_musl_base.patch b/rust-src/default/patches-available/musl-fix-linux_musl_base.patch new file mode 100644 index 0000000..4b6ba1f --- /dev/null +++ b/rust-src/default/patches-available/musl-fix-linux_musl_base.patch @@ -0,0 +1,19 @@ +From: Jakub Jirutka +Date: Sat, 08 Aug 2016 15:06:00 +0200 +Subject: [PATCH] Fix linux_musl_base for native musl host + +See https://github.com/rust-lang/rust/pull/40113 + +--- a/src/librustc_target/spec/linux_musl_base.rs ++++ b/src/librustc_target/spec/linux_musl_base.rs +@@ -10,10 +10,6 @@ + // argument is *not* necessary for normal builds, but it can't hurt! + base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-Wl,--eh-frame-hdr".to_string()); + +- base.pre_link_objects_fallback = crt_objects::pre_musl_fallback(); +- base.post_link_objects_fallback = crt_objects::post_musl_fallback(); +- base.crt_objects_fallback = Some(CrtObjectsFallback::Musl); +- + // These targets statically link libc by default + base.crt_static_default = true; + // These targets allow the user to choose between static and dynamic linking. diff --git a/rust-src/default/patches-available/need-rpath.patch b/rust-src/default/patches-available/need-rpath.patch new file mode 100644 index 0000000..d10b127 --- /dev/null +++ b/rust-src/default/patches-available/need-rpath.patch @@ -0,0 +1,62 @@ +From: Shiz +Date: Thu, 20 Aug 2017 01:48:22 +0200 +Subject: [PATCH] Add need_rpath target option to force RPATH generation + +This adds a `need_rpath` option to the target options in order to implicitly +have the equivalent of `-C rpath` specified by default for final products +(executables and dynamic libraries), so that RPATHs are always added. + +We have to skip this step in the bootstrap phase as it does its own manual +RPATH additions, but unfortunately there's no clean way to detect this. +As such, we have to resort to checking the `RUSTC_BOOTSTRAP` variable. +Hacky hacky! + +--- a/src/librustc_target/spec/mod.rs ++++ b/src/librustc_target/spec/mod.rs +@@ -379,6 +379,8 @@ + pub allows_weak_linkage: bool, + /// Whether the linker support rpaths or not. Defaults to false. + pub has_rpath: bool, ++ /// Whether to force rpath support on by default. Defaults to false. ++ pub need_rpath: bool, + /// Whether to disable linking to the default libraries, typically corresponds + /// to `-nodefaultlibs`. Defaults to true. + pub no_default_libraries: bool, +@@ -519,6 +519,7 @@ + linker_is_gnu: false, + allows_weak_linkage: true, + has_rpath: false, ++ need_rpath: false, + no_default_libraries: true, + position_independent_executables: false, + static_position_independent_executables: false, +@@ -776,6 +776,7 @@ + key!(linker_is_gnu, bool); + key!(allows_weak_linkage, bool); + key!(has_rpath, bool); ++ key!(need_rpath, bool); + key!(no_default_libraries, bool); + key!(position_independent_executables, bool); + key!(static_position_independent_executables, bool); +@@ -980,6 +980,7 @@ + target_option_val!(linker_is_gnu); + target_option_val!(allows_weak_linkage); + target_option_val!(has_rpath); ++ target_option_val!(need_rpath); + target_option_val!(no_default_libraries); + target_option_val!(position_independent_executables); + target_option_val!(static_position_independent_executables); +--- a/src/librustc_codegen_ssa/back/link.rs.orig 2019-05-23 17:57:22.587173355 +0200 ++++ b/src/librustc_codegen_ssa/back/link.rs 2019-05-23 17:58:28.833841560 +0200 +@@ -1018,7 +1018,10 @@ + // FIXME (#2397): At some point we want to rpath our guesses as to + // where extern libraries might live, based on the + // addl_lib_search_paths +- if sess.opts.cg.rpath { ++ // XXX: hacky hacky ++ let bootstrap = env::var("RUSTC_BOOTSTRAP").is_ok(); ++ if !bootstrap && !sess.crt_static(None) && ++ (sess.opts.cg.rpath || sess.target.target.options.need_rpath) { + let target_triple = sess.opts.target_triple.triple(); + let mut get_install_prefix_lib_path = || { + let install_prefix = option_env!("CFG_PREFIX").expect("CFG_PREFIX"); diff --git a/rust-src/default/patches-available/need-ssp_nonshared.patch b/rust-src/default/patches-available/need-ssp_nonshared.patch new file mode 100644 index 0000000..c0de1c2 --- /dev/null +++ b/rust-src/default/patches-available/need-ssp_nonshared.patch @@ -0,0 +1,11 @@ +--- a/src/library/std/build.rs.orig 2020-02-08 17:05:40.390387794 +0200 ++++ b/src/library/std/build.rs 2020-02-08 17:09:46.844426452 +0200 +@@ -11,6 +11,8 @@ + println!("cargo:rustc-link-lib=dl"); + println!("cargo:rustc-link-lib=rt"); + println!("cargo:rustc-link-lib=pthread"); ++ } else { ++ println!("cargo:rustc-link-lib=ssp_nonshared"); + } + } else if target.contains("freebsd") { + println!("cargo:rustc-link-lib=execinfo"); diff --git a/rust-src/default/patches-enabled/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch b/rust-src/default/patches-enabled/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch new file mode 120000 index 0000000..370c07f --- /dev/null +++ b/rust-src/default/patches-enabled/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch @@ -0,0 +1 @@ +../patches-available/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch \ No newline at end of file diff --git a/rust-src/default/patches-enabled/alpine-target.patch b/rust-src/default/patches-enabled/alpine-target.patch new file mode 120000 index 0000000..929ad1c --- /dev/null +++ b/rust-src/default/patches-enabled/alpine-target.patch @@ -0,0 +1 @@ +../patches-available/alpine-target.patch \ No newline at end of file diff --git a/rust-src/default/patches-enabled/install-template-shebang.patch b/rust-src/default/patches-enabled/install-template-shebang.patch new file mode 120000 index 0000000..6ab843f --- /dev/null +++ b/rust-src/default/patches-enabled/install-template-shebang.patch @@ -0,0 +1 @@ +../patches-available/install-template-shebang.patch \ No newline at end of file diff --git a/rust-src/default/patches-enabled/link-musl-dynamically.patch b/rust-src/default/patches-enabled/link-musl-dynamically.patch new file mode 120000 index 0000000..557838c --- /dev/null +++ b/rust-src/default/patches-enabled/link-musl-dynamically.patch @@ -0,0 +1 @@ +../patches-available/link-musl-dynamically.patch \ No newline at end of file diff --git a/rust-src/default/patches-enabled/musl-dont-use-crt-static.patch b/rust-src/default/patches-enabled/musl-dont-use-crt-static.patch new file mode 120000 index 0000000..040f156 --- /dev/null +++ b/rust-src/default/patches-enabled/musl-dont-use-crt-static.patch @@ -0,0 +1 @@ +../patches-available/musl-dont-use-crt-static.patch \ No newline at end of file diff --git a/samurai/default/conf.sh b/samurai/default/conf.sh new file mode 100755 index 0000000..9540c2b --- /dev/null +++ b/samurai/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "samurai needs no configuration!" diff --git a/samurai/default/patch b/samurai/default/patch new file mode 100644 index 0000000..a32b119 --- /dev/null +++ b/samurai/default/patch @@ -0,0 +1,10 @@ +--- a/Makefile 2020-08-02 20:30:13.727618538 +0000 ++++ b/Makefile 2020-08-20 23:32:13.660000000 +0000 +@@ -1,6 +1,6 @@ + .POSIX: + +-PREFIX=/usr/local ++PREFIX= + MANDIR=$(PREFIX)/share/man + ALL_CFLAGS=$(CFLAGS) -std=c99 -Wall -Wextra -Wpedantic + OBJ=\ diff --git a/sbase/default/conf.sh b/sbase/default/conf.sh new file mode 100755 index 0000000..0243b55 --- /dev/null +++ b/sbase/default/conf.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +${EDITOR:-vi} config.mk diff --git a/sbase/default/deps b/sbase/default/deps new file mode 100644 index 0000000..9fa1048 --- /dev/null +++ b/sbase/default/deps @@ -0,0 +1,11 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase != $version +ubase +awk +make +dash +rsync +$EDITORDEP diff --git a/sbase/default/inst.sh b/sbase/default/inst.sh new file mode 100755 index 0000000..c998d68 --- /dev/null +++ b/sbase/default/inst.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +# the makefile uses cp to install to DESTDIR. because cp dereferences any +# symlinks given as the destination, this overwrites busybox on the recommended +# alpine linux bootstrap host. rsync does not have this problem. +DESTDIR="${pkgdest:-/mnt/build}" make -j$(nproc) install +[ "$pkgdest" ] || rsync -ai /mnt/build/ / diff --git a/sbase/default/patch b/sbase/default/patch new file mode 100644 index 0000000..f5ea02b --- /dev/null +++ b/sbase/default/patch @@ -0,0 +1,19 @@ +diff --git a/config.mk b/config.mk +index 9fb18da..c65ce6c 100644 +--- a/config.mk ++++ b/config.mk +@@ -2,7 +2,7 @@ + VERSION = 0.0 + + # paths +-PREFIX = /usr/local ++PREFIX = / + MANPREFIX = $(PREFIX)/share/man + + CC = cc +@@ -13,4 +13,4 @@ RANLIB = ranlib + # -lrt might be needed on some systems + CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700 -D_FILE_OFFSET_BITS=64 + CFLAGS = -std=c99 -Wall -pedantic +-LDFLAGS = -s ++LDFLAGS = -s -static diff --git a/scdoc/default/conf.sh b/scdoc/default/conf.sh new file mode 100755 index 0000000..b671f5e --- /dev/null +++ b/scdoc/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "nothing to configure." diff --git a/screen/default/conf.sh b/screen/default/conf.sh new file mode 100755 index 0000000..348f13d --- /dev/null +++ b/screen/default/conf.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +./configure \ + --with-sys-screenrc=/etc/screenrc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --enable-colors256 \ + --enable-rxvt_osc \ + --disable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/screen/default/deps b/screen/default/deps new file mode 100644 index 0000000..2395b46 --- /dev/null +++ b/screen/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +ncurses diff --git a/scron/default/conf.sh b/scron/default/conf.sh new file mode 100755 index 0000000..1c790d1 --- /dev/null +++ b/scron/default/conf.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +${EDITOR:-vi} Makefile diff --git a/scron/default/patch b/scron/default/patch new file mode 100644 index 0000000..c428f3c --- /dev/null +++ b/scron/default/patch @@ -0,0 +1,13 @@ +diff --git a/Makefile b/Makefile +index f45e657..f1915d9 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,6 +1,6 @@ + CFLAGS += -std=c99 -Wall -Wextra -pedantic -D_POSIX_C_SOURCE=200809L -D_BSD_SOURCE +-PREFIX = /usr/local +-MANPREFIX = $(PREFIX)/man ++PREFIX = ++MANPREFIX = /share/man + + BIN = crond + MAN = scron.1 diff --git a/sdhcp/default/conf.sh b/sdhcp/default/conf.sh new file mode 100755 index 0000000..0243b55 --- /dev/null +++ b/sdhcp/default/conf.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +${EDITOR:-vi} config.mk diff --git a/sdhcp/default/patch b/sdhcp/default/patch new file mode 100644 index 0000000..440b9ae --- /dev/null +++ b/sdhcp/default/patch @@ -0,0 +1,21 @@ +diff --git a/config.mk b/config.mk +index 8f32578..1268173 100644 +--- a/config.mk ++++ b/config.mk +@@ -1,12 +1,12 @@ + # sdhcp version + VERSION = 0.1 + +-PREFIX = /usr/local +-DESTDIR = ++PREFIX = ++DESTDIR = / + MANPREFIX = $(PREFIX)/share/man + + CC = cc + LD = $(CC) +-CPPFLAGS = -D_DEFAULT_SOURCE ++CPPFLAGS = -D_DEFAULT_SOURCE -static $(CXXFLAGS) + CFLAGS = -Wall -Wextra -pedantic -std=c99 $(CPPFLAGS) +-LDFLAGS = -s ++LDFLAGS = -s -static diff --git a/sdl/default/conf.sh b/sdl/default/conf.sh new file mode 100755 index 0000000..6296c94 --- /dev/null +++ b/sdl/default/conf.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +./configure \ + --enable-video-nanox \ + --enable-nanox-direct-fb \ + --enable-nanox-share-memory \ + --disable-nasm \ + --disable-esd \ + --disable-audio \ + --disable-alsa \ + --disable-pulseaudio \ + --disable-video-svga \ + --disable-video-ggi \ + --disable-video-aalib \ + --without-x \ + --disable-rpath \ + --disable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/sdl/default/deps b/sdl/default/deps new file mode 100644 index 0000000..344f516 --- /dev/null +++ b/sdl/default/deps @@ -0,0 +1,22 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +libpng +libjpeg-turbo +zlib +bzip2 +freetype +microwindows diff --git a/sdl/default/deps.bak b/sdl/default/deps.bak new file mode 100644 index 0000000..2a740a6 --- /dev/null +++ b/sdl/default/deps.bak @@ -0,0 +1,34 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +samurai +libxml2 +python3 +diffutils +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb +xtrans +libx11 +libice +libxrender +libxrandr +libxext +libsm diff --git a/sdl/default/patches-available/0000-SDL-1.2.10-GrabNotViewable.patch b/sdl/default/patches-available/0000-SDL-1.2.10-GrabNotViewable.patch new file mode 100644 index 0000000..128cf35 --- /dev/null +++ b/sdl/default/patches-available/0000-SDL-1.2.10-GrabNotViewable.patch @@ -0,0 +1,22 @@ +Makes SDL-1.2 SDL_WM_GrabInput() non-blocking in case of SDL window is not +viewable. Patch provided by . +See . + +--- ./src/video/x11/SDL_x11wm.c 2007-12-31 04:48:13.000000000 +0000 ++++ ./src/video/x11/SDL_x11wm.c 2009-01-15 10:27:14.000000000 +0000 +@@ -351,13 +351,14 @@ SDL_GrabMode X11_GrabInputNoLock(_THIS, + result = XGrabPointer(SDL_Display, SDL_Window, True, 0, + GrabModeAsync, GrabModeAsync, + SDL_Window, None, CurrentTime); +- if ( result == GrabSuccess ) { ++ if ( result == GrabSuccess || result == GrabNotViewable ) { + break; + } + SDL_Delay(100); + } + if ( result != GrabSuccess ) { + /* Uh, oh, what do we do here? */ ; ++ return(SDL_GRAB_OFF); + } + /* Now grab the keyboard */ + XGrabKeyboard(SDL_Display, WMwindow, True, diff --git a/sdl/default/patches-available/0100-SDL-1.2.15-const_XData32.patch b/sdl/default/patches-available/0100-SDL-1.2.15-const_XData32.patch new file mode 100644 index 0000000..0f1c07c --- /dev/null +++ b/sdl/default/patches-available/0100-SDL-1.2.15-const_XData32.patch @@ -0,0 +1,16 @@ +libX11-1.5.99.901 has changed prototype of _XData32 + + + +diff -r b6b2829cd7ef src/video/x11/SDL_x11sym.h +--- a/src/video/x11/SDL_x11sym.h Wed Feb 27 15:20:31 2013 -0800 ++++ b/src/video/x11/SDL_x11sym.h Wed Mar 27 16:07:23 2013 +0100 +@@ -165,7 +165,7 @@ + */ + #ifdef LONG64 + SDL_X11_MODULE(IO_32BIT) +-SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return) ++SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return) + SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),) + #endif + diff --git a/sdl/default/patches-available/0200-CVE-2019-7574.patch b/sdl/default/patches-available/0200-CVE-2019-7574.patch new file mode 100644 index 0000000..0bae80f --- /dev/null +++ b/sdl/default/patches-available/0200-CVE-2019-7574.patch @@ -0,0 +1,71 @@ +From 9b2eee24768889378032077423cb6a3221a8ad18 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Thu, 14 Feb 2019 15:41:47 +0100 +Subject: [PATCH] CVE-2019-7574: Fix a buffer overread in IMA_ADPCM_decode +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If data chunk was shorter than expected based on a WAV format +definition, IMA_ADPCM_decode() tried to read past the data chunk +buffer. This patch fixes it. + +CVE-2019-7574 +https://bugzilla.libsdl.org/show_bug.cgi?id=4496 + +Signed-off-by: Petr Písař +--- + src/audio/SDL_wave.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/src/audio/SDL_wave.c b/src/audio/SDL_wave.c +index b6c49de..2968b3d 100644 +--- a/src/audio/SDL_wave.c ++++ b/src/audio/SDL_wave.c +@@ -334,7 +334,7 @@ static void Fill_IMA_ADPCM_block(Uint8 *decoded, Uint8 *encoded, + static int IMA_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + { + struct IMA_ADPCM_decodestate *state; +- Uint8 *freeable, *encoded, *decoded; ++ Uint8 *freeable, *encoded, *encoded_end, *decoded; + Sint32 encoded_len, samplesleft; + unsigned int c, channels; + +@@ -350,6 +350,7 @@ static int IMA_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + /* Allocate the proper sized output buffer */ + encoded_len = *audio_len; + encoded = *audio_buf; ++ encoded_end = encoded + encoded_len; + freeable = *audio_buf; + *audio_len = (encoded_len/IMA_ADPCM_state.wavefmt.blockalign) * + IMA_ADPCM_state.wSamplesPerBlock* +@@ -365,6 +366,7 @@ static int IMA_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + while ( encoded_len >= IMA_ADPCM_state.wavefmt.blockalign ) { + /* Grab the initial information for this block */ + for ( c=0; c encoded_end) goto invalid_size; + /* Fill the state information for this block */ + state[c].sample = ((encoded[1]<<8)|encoded[0]); + encoded += 2; +@@ -387,6 +389,7 @@ static int IMA_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + samplesleft = (IMA_ADPCM_state.wSamplesPerBlock-1)*channels; + while ( samplesleft > 0 ) { + for ( c=0; c encoded_end) goto invalid_size; + Fill_IMA_ADPCM_block(decoded, encoded, + c, channels, &state[c]); + encoded += 4; +@@ -398,6 +401,10 @@ static int IMA_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + } + SDL_free(freeable); + return(0); ++invalid_size: ++ SDL_SetError("Unexpected chunk length for an IMA ADPCM decoder"); ++ SDL_free(freeable); ++ return(-1); + } + + SDL_AudioSpec * SDL_LoadWAV_RW (SDL_RWops *src, int freesrc, +-- +2.20.1 + diff --git a/sdl/default/patches-available/0300-CVE-2019-7572.patch b/sdl/default/patches-available/0300-CVE-2019-7572.patch new file mode 100644 index 0000000..2c17831 --- /dev/null +++ b/sdl/default/patches-available/0300-CVE-2019-7572.patch @@ -0,0 +1,64 @@ +From 6086741bda4d43cc227500bc7645a829380e6326 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Fri, 15 Feb 2019 09:21:45 +0100 +Subject: [PATCH] CVE-2019-7572: Fix a buffer overwrite in IMA_ADPCM_decode +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If data chunk was longer than expected based on a WAV format +definition, IMA_ADPCM_decode() tried to write past the output +buffer. This patch fixes it. + +Based on patch from +. + +CVE-2019-7572 +https://bugzilla.libsdl.org/show_bug.cgi?id=4495 + +Signed-off-by: Petr Písař +--- + src/audio/SDL_wave.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/audio/SDL_wave.c b/src/audio/SDL_wave.c +index 69d62dc..91e89e8 100644 +--- a/src/audio/SDL_wave.c ++++ b/src/audio/SDL_wave.c +@@ -336,7 +336,7 @@ static void Fill_IMA_ADPCM_block(Uint8 *decoded, Uint8 *encoded, + static int IMA_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + { + struct IMA_ADPCM_decodestate *state; +- Uint8 *freeable, *encoded, *encoded_end, *decoded; ++ Uint8 *freeable, *encoded, *encoded_end, *decoded, *decoded_end; + Sint32 encoded_len, samplesleft; + unsigned int c, channels; + +@@ -363,6 +363,7 @@ static int IMA_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + return(-1); + } + decoded = *audio_buf; ++ decoded_end = decoded + *audio_len; + + /* Get ready... Go! */ + while ( encoded_len >= IMA_ADPCM_state.wavefmt.blockalign ) { +@@ -382,6 +383,7 @@ static int IMA_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + } + + /* Store the initial sample we start with */ ++ if (decoded + 2 > decoded_end) goto invalid_size; + decoded[0] = (Uint8)(state[c].sample&0xFF); + decoded[1] = (Uint8)(state[c].sample>>8); + decoded += 2; +@@ -392,6 +394,8 @@ static int IMA_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + while ( samplesleft > 0 ) { + for ( c=0; c encoded_end) goto invalid_size; ++ if (decoded + 4 * 4 * channels > decoded_end) ++ goto invalid_size; + Fill_IMA_ADPCM_block(decoded, encoded, + c, channels, &state[c]); + encoded += 4; +-- +2.20.1 + diff --git a/sdl/default/patches-available/0400-CVE-2019-7572.patch b/sdl/default/patches-available/0400-CVE-2019-7572.patch new file mode 100644 index 0000000..0f242be --- /dev/null +++ b/sdl/default/patches-available/0400-CVE-2019-7572.patch @@ -0,0 +1,59 @@ +From bb11ffcff5ae2f25bead921c2a299e7e63d8a759 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Thu, 14 Feb 2019 16:51:54 +0100 +Subject: [PATCH] CVE-2019-7572: Fix a buffer overread in IMA_ADPCM_nibble +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If an IMA ADPCM block contained an initial index out of step table +range (loaded in IMA_ADPCM_decode()), IMA_ADPCM_nibble() blindly used +this bogus value and that lead to a buffer overread. + +This patch fixes it by moving clamping the index value at the +beginning of IMA_ADPCM_nibble() function instead of the end after +an update. + +CVE-2019-7572 +https://bugzilla.libsdl.org/show_bug.cgi?id=4495 + +Signed-off-by: Petr Písař +--- + src/audio/SDL_wave.c | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/src/audio/SDL_wave.c b/src/audio/SDL_wave.c +index 2968b3d..69d62dc 100644 +--- a/src/audio/SDL_wave.c ++++ b/src/audio/SDL_wave.c +@@ -275,6 +275,14 @@ static Sint32 IMA_ADPCM_nibble(struct IMA_ADPCM_decodestate *state,Uint8 nybble) + }; + Sint32 delta, step; + ++ /* Clamp index value. The inital value can be invalid. */ ++ if ( state->index > 88 ) { ++ state->index = 88; ++ } else ++ if ( state->index < 0 ) { ++ state->index = 0; ++ } ++ + /* Compute difference and new sample value */ + step = step_table[state->index]; + delta = step >> 3; +@@ -286,12 +294,6 @@ static Sint32 IMA_ADPCM_nibble(struct IMA_ADPCM_decodestate *state,Uint8 nybble) + + /* Update index value */ + state->index += index_table[nybble]; +- if ( state->index > 88 ) { +- state->index = 88; +- } else +- if ( state->index < 0 ) { +- state->index = 0; +- } + + /* Clamp output sample */ + if ( state->sample > max_audioval ) { +-- +2.20.1 + diff --git a/sdl/default/patches-available/0500-CVE-2019-7573.patch b/sdl/default/patches-available/0500-CVE-2019-7573.patch new file mode 100644 index 0000000..767a3b2 --- /dev/null +++ b/sdl/default/patches-available/0500-CVE-2019-7573.patch @@ -0,0 +1,83 @@ +From 3e2c89e516701f3586dfeadec13932f665371d2a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Fri, 15 Feb 2019 10:36:13 +0100 +Subject: [PATCH] CVE-2019-7573, CVE-2019-7576: Fix buffer overreads in + InitMS_ADPCM +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If MS ADPCM format chunk was too short, InitMS_ADPCM() parsing it +could read past the end of chunk data. This patch fixes it. + +CVE-2019-7573 +https://bugzilla.libsdl.org/show_bug.cgi?id=4491 +CVE-2019-7576 +https://bugzilla.libsdl.org/show_bug.cgi?id=4490 + +Signed-off-by: Petr Písař +--- + src/audio/SDL_wave.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +diff --git a/src/audio/SDL_wave.c b/src/audio/SDL_wave.c +index 91e89e8..1d446ed 100644 +--- a/src/audio/SDL_wave.c ++++ b/src/audio/SDL_wave.c +@@ -44,12 +44,13 @@ static struct MS_ADPCM_decoder { + struct MS_ADPCM_decodestate state[2]; + } MS_ADPCM_state; + +-static int InitMS_ADPCM(WaveFMT *format) ++static int InitMS_ADPCM(WaveFMT *format, int length) + { +- Uint8 *rogue_feel; ++ Uint8 *rogue_feel, *rogue_feel_end; + int i; + + /* Set the rogue pointer to the MS_ADPCM specific data */ ++ if (length < sizeof(*format)) goto too_short; + MS_ADPCM_state.wavefmt.encoding = SDL_SwapLE16(format->encoding); + MS_ADPCM_state.wavefmt.channels = SDL_SwapLE16(format->channels); + MS_ADPCM_state.wavefmt.frequency = SDL_SwapLE32(format->frequency); +@@ -58,9 +59,11 @@ static int InitMS_ADPCM(WaveFMT *format) + MS_ADPCM_state.wavefmt.bitspersample = + SDL_SwapLE16(format->bitspersample); + rogue_feel = (Uint8 *)format+sizeof(*format); ++ rogue_feel_end = (Uint8 *)format + length; + if ( sizeof(*format) == 16 ) { + rogue_feel += sizeof(Uint16); + } ++ if (rogue_feel + 4 > rogue_feel_end) goto too_short; + MS_ADPCM_state.wSamplesPerBlock = ((rogue_feel[1]<<8)|rogue_feel[0]); + rogue_feel += sizeof(Uint16); + MS_ADPCM_state.wNumCoef = ((rogue_feel[1]<<8)|rogue_feel[0]); +@@ -70,12 +73,16 @@ static int InitMS_ADPCM(WaveFMT *format) + return(-1); + } + for ( i=0; i rogue_feel_end) goto too_short; + MS_ADPCM_state.aCoeff[i][0] = ((rogue_feel[1]<<8)|rogue_feel[0]); + rogue_feel += sizeof(Uint16); + MS_ADPCM_state.aCoeff[i][1] = ((rogue_feel[1]<<8)|rogue_feel[0]); + rogue_feel += sizeof(Uint16); + } + return(0); ++too_short: ++ SDL_SetError("Unexpected length of a chunk with a MS ADPCM format"); ++ return(-1); + } + + static Sint32 MS_ADPCM_nibble(struct MS_ADPCM_decodestate *state, +@@ -485,7 +492,7 @@ SDL_AudioSpec * SDL_LoadWAV_RW (SDL_RWops *src, int freesrc, + break; + case MS_ADPCM_CODE: + /* Try to understand this */ +- if ( InitMS_ADPCM(format) < 0 ) { ++ if ( InitMS_ADPCM(format, lenread) < 0 ) { + was_error = 1; + goto done; + } +-- +2.20.1 + diff --git a/sdl/default/patches-available/0600-CVE-2019-7577.patch b/sdl/default/patches-available/0600-CVE-2019-7577.patch new file mode 100644 index 0000000..23cbf98 --- /dev/null +++ b/sdl/default/patches-available/0600-CVE-2019-7577.patch @@ -0,0 +1,75 @@ +From ac3d0d365b1f01a6782565feda0c7432a5795671 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Thu, 14 Feb 2019 14:12:22 +0100 +Subject: [PATCH] CVE-2019-7577: Fix a buffer overread in MS_ADPCM_decode +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If RIFF/WAV data chunk length is shorter then expected for an audio +format defined in preceeding RIFF/WAV format headers, a buffer +overread can happen. + +This patch fixes it by checking a MS ADPCM data to be decoded are not +past the initialized buffer. + +CVE-2019-7577 +Reproducer: https://bugzilla.libsdl.org/show_bug.cgi?id=4492 + +Signed-off-by: Petr Písař +--- + src/audio/SDL_wave.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/src/audio/SDL_wave.c b/src/audio/SDL_wave.c +index b4ad6c7..e42d01c 100644 +--- a/src/audio/SDL_wave.c ++++ b/src/audio/SDL_wave.c +@@ -115,7 +115,7 @@ static Sint32 MS_ADPCM_nibble(struct MS_ADPCM_decodestate *state, + static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + { + struct MS_ADPCM_decodestate *state[2]; +- Uint8 *freeable, *encoded, *decoded; ++ Uint8 *freeable, *encoded, *encoded_end, *decoded; + Sint32 encoded_len, samplesleft; + Sint8 nybble, stereo; + Sint16 *coeff[2]; +@@ -124,6 +124,7 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + /* Allocate the proper sized output buffer */ + encoded_len = *audio_len; + encoded = *audio_buf; ++ encoded_end = encoded + encoded_len; + freeable = *audio_buf; + *audio_len = (encoded_len/MS_ADPCM_state.wavefmt.blockalign) * + MS_ADPCM_state.wSamplesPerBlock* +@@ -141,6 +142,7 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + state[1] = &MS_ADPCM_state.state[stereo]; + while ( encoded_len >= MS_ADPCM_state.wavefmt.blockalign ) { + /* Grab the initial information for this block */ ++ if (encoded + 7 + (stereo ? 7 : 0) > encoded_end) goto too_short; + state[0]->hPredictor = *encoded++; + if ( stereo ) { + state[1]->hPredictor = *encoded++; +@@ -188,6 +190,8 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + samplesleft = (MS_ADPCM_state.wSamplesPerBlock-2)* + MS_ADPCM_state.wavefmt.channels; + while ( samplesleft > 0 ) { ++ if (encoded + 1 > encoded_end) goto too_short; ++ + nybble = (*encoded)>>4; + new_sample = MS_ADPCM_nibble(state[0],nybble,coeff[0]); + decoded[0] = new_sample&0xFF; +@@ -209,6 +213,10 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + } + SDL_free(freeable); + return(0); ++too_short: ++ SDL_SetError("Too short chunk for a MS ADPCM decoder"); ++ SDL_free(freeable); ++ return(-1); + } + + struct IMA_ADPCM_decodestate { +-- +2.20.1 + diff --git a/sdl/default/patches-available/0700-CVE-2019-7577.patch b/sdl/default/patches-available/0700-CVE-2019-7577.patch new file mode 100644 index 0000000..06b429c --- /dev/null +++ b/sdl/default/patches-available/0700-CVE-2019-7577.patch @@ -0,0 +1,57 @@ +From 69cd6157644cb0a5c9edd7b5920232c2ca31c151 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Tue, 12 Mar 2019 16:21:41 +0100 +Subject: [PATCH] CVE-2019-7577: Fix a buffer overread in MS_ADPCM_nibble and + MS_ADPCM_decode +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If a chunk of RIFF/WAV file with MS ADPCM encoding contains an invalid +predictor (a valid predictor's value is between 0 and 6 inclusive), +a buffer overread can happen when the predictor is used as an index +into an array of MS ADPCM coefficients. + +The overead happens when indexing MS_ADPCM_state.aCoeff[] array in +MS_ADPCM_decode() and later when dereferencing a coef pointer in +MS_ADPCM_nibble(). + +This patch fixes it by checking the MS ADPCM predictor values fit +into the valid range. + +CVE-2019-7577 +Reproducer: https://bugzilla.libsdl.org/show_bug.cgi?id=4492 + +Signed-off-by: Petr Písař +--- + src/audio/SDL_wave.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/audio/SDL_wave.c b/src/audio/SDL_wave.c +index 08f65cb..5f93651 100644 +--- a/src/audio/SDL_wave.c ++++ b/src/audio/SDL_wave.c +@@ -155,6 +155,9 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + if ( stereo ) { + state[1]->hPredictor = *encoded++; + } ++ if (state[0]->hPredictor >= 7 || state[1]->hPredictor >= 7) { ++ goto invalid_predictor; ++ } + state[0]->iDelta = ((encoded[1]<<8)|encoded[0]); + encoded += sizeof(Sint16); + if ( stereo ) { +@@ -227,6 +230,10 @@ invalid_size: + SDL_SetError("Unexpected chunk length for a MS ADPCM decoder"); + SDL_free(freeable); + return(-1); ++invalid_predictor: ++ SDL_SetError("Invalid predictor value for a MS ADPCM decoder"); ++ SDL_free(freeable); ++ return(-1); + } + + struct IMA_ADPCM_decodestate { +-- +2.20.1 + diff --git a/sdl/default/patches-available/0800-CVE-2019-7575.patch b/sdl/default/patches-available/0800-CVE-2019-7575.patch new file mode 100644 index 0000000..53965aa --- /dev/null +++ b/sdl/default/patches-available/0800-CVE-2019-7575.patch @@ -0,0 +1,84 @@ +From e1f80cadb079e35103e6eebf160a818815c823df Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Thu, 14 Feb 2019 14:51:52 +0100 +Subject: [PATCH] CVE-2019-7575: Fix a buffer overwrite in MS_ADPCM_decode +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If a WAV format defines shorter audio stream and decoded MS ADPCM data chunk +is longer, decoding continued past the output audio buffer. + +This fix is based on a patch from +. + +https://bugzilla.libsdl.org/show_bug.cgi?id=4493 +CVE-2019-7575 + +Signed-off-by: Petr Písař +--- + src/audio/SDL_wave.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +diff --git a/src/audio/SDL_wave.c b/src/audio/SDL_wave.c +index e42d01c..b6c49de 100644 +--- a/src/audio/SDL_wave.c ++++ b/src/audio/SDL_wave.c +@@ -115,7 +115,7 @@ static Sint32 MS_ADPCM_nibble(struct MS_ADPCM_decodestate *state, + static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + { + struct MS_ADPCM_decodestate *state[2]; +- Uint8 *freeable, *encoded, *encoded_end, *decoded; ++ Uint8 *freeable, *encoded, *encoded_end, *decoded, *decoded_end; + Sint32 encoded_len, samplesleft; + Sint8 nybble, stereo; + Sint16 *coeff[2]; +@@ -135,6 +135,7 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + return(-1); + } + decoded = *audio_buf; ++ decoded_end = decoded + *audio_len; + + /* Get ready... Go! */ + stereo = (MS_ADPCM_state.wavefmt.channels == 2); +@@ -142,7 +143,7 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + state[1] = &MS_ADPCM_state.state[stereo]; + while ( encoded_len >= MS_ADPCM_state.wavefmt.blockalign ) { + /* Grab the initial information for this block */ +- if (encoded + 7 + (stereo ? 7 : 0) > encoded_end) goto too_short; ++ if (encoded + 7 + (stereo ? 7 : 0) > encoded_end) goto invalid_size; + state[0]->hPredictor = *encoded++; + if ( stereo ) { + state[1]->hPredictor = *encoded++; +@@ -169,6 +170,7 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + coeff[1] = MS_ADPCM_state.aCoeff[state[1]->hPredictor]; + + /* Store the two initial samples we start with */ ++ if (decoded + 4 + (stereo ? 4 : 0) > decoded_end) goto invalid_size; + decoded[0] = state[0]->iSamp2&0xFF; + decoded[1] = state[0]->iSamp2>>8; + decoded += 2; +@@ -190,7 +192,8 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + samplesleft = (MS_ADPCM_state.wSamplesPerBlock-2)* + MS_ADPCM_state.wavefmt.channels; + while ( samplesleft > 0 ) { +- if (encoded + 1 > encoded_end) goto too_short; ++ if (encoded + 1 > encoded_end) goto invalid_size; ++ if (decoded + 4 > decoded_end) goto invalid_size; + + nybble = (*encoded)>>4; + new_sample = MS_ADPCM_nibble(state[0],nybble,coeff[0]); +@@ -213,8 +216,8 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) + } + SDL_free(freeable); + return(0); +-too_short: +- SDL_SetError("Too short chunk for a MS ADPCM decoder"); ++invalid_size: ++ SDL_SetError("Unexpected chunk length for a MS ADPCM decoder"); + SDL_free(freeable); + return(-1); + } +-- +2.20.1 + diff --git a/sdl/default/patches-available/0900-CVE-2019-7578.patch b/sdl/default/patches-available/0900-CVE-2019-7578.patch new file mode 100644 index 0000000..b0a89de --- /dev/null +++ b/sdl/default/patches-available/0900-CVE-2019-7578.patch @@ -0,0 +1,67 @@ +From 0eb76f6cabcffa2104e34c26e0f41e6de95356ff Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Fri, 15 Feb 2019 10:56:59 +0100 +Subject: [PATCH] CVE-2019-7578: Fix a buffer overread in InitIMA_ADPCM +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If IMA ADPCM format chunk was too short, InitIMA_ADPCM() parsing it +could read past the end of chunk data. This patch fixes it. + +CVE-2019-7578 +https://bugzilla.libsdl.org/show_bug.cgi?id=4494 + +Signed-off-by: Petr Písař +--- + src/audio/SDL_wave.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/src/audio/SDL_wave.c b/src/audio/SDL_wave.c +index 1d446ed..08f65cb 100644 +--- a/src/audio/SDL_wave.c ++++ b/src/audio/SDL_wave.c +@@ -240,11 +240,12 @@ static struct IMA_ADPCM_decoder { + struct IMA_ADPCM_decodestate state[2]; + } IMA_ADPCM_state; + +-static int InitIMA_ADPCM(WaveFMT *format) ++static int InitIMA_ADPCM(WaveFMT *format, int length) + { +- Uint8 *rogue_feel; ++ Uint8 *rogue_feel, *rogue_feel_end; + + /* Set the rogue pointer to the IMA_ADPCM specific data */ ++ if (length < sizeof(*format)) goto too_short; + IMA_ADPCM_state.wavefmt.encoding = SDL_SwapLE16(format->encoding); + IMA_ADPCM_state.wavefmt.channels = SDL_SwapLE16(format->channels); + IMA_ADPCM_state.wavefmt.frequency = SDL_SwapLE32(format->frequency); +@@ -253,11 +254,16 @@ static int InitIMA_ADPCM(WaveFMT *format) + IMA_ADPCM_state.wavefmt.bitspersample = + SDL_SwapLE16(format->bitspersample); + rogue_feel = (Uint8 *)format+sizeof(*format); ++ rogue_feel_end = (Uint8 *)format + length; + if ( sizeof(*format) == 16 ) { + rogue_feel += sizeof(Uint16); + } ++ if (rogue_feel + 2 > rogue_feel_end) goto too_short; + IMA_ADPCM_state.wSamplesPerBlock = ((rogue_feel[1]<<8)|rogue_feel[0]); + return(0); ++too_short: ++ SDL_SetError("Unexpected length of a chunk with an IMA ADPCM format"); ++ return(-1); + } + + static Sint32 IMA_ADPCM_nibble(struct IMA_ADPCM_decodestate *state,Uint8 nybble) +@@ -500,7 +506,7 @@ SDL_AudioSpec * SDL_LoadWAV_RW (SDL_RWops *src, int freesrc, + break; + case IMA_ADPCM_CODE: + /* Try to understand this */ +- if ( InitIMA_ADPCM(format) < 0 ) { ++ if ( InitIMA_ADPCM(format, lenread) < 0 ) { + was_error = 1; + goto done; + } +-- +2.20.1 + diff --git a/sdl/default/patches-available/1000-CVE-2019-7635.patch b/sdl/default/patches-available/1000-CVE-2019-7635.patch new file mode 100644 index 0000000..ebf8b91 --- /dev/null +++ b/sdl/default/patches-available/1000-CVE-2019-7635.patch @@ -0,0 +1,53 @@ +CVE-2019-7635: Reject BMP images with pixel colors out the palette +If a 1-, 4-, or 8-bit per pixel BMP image declares less used colors +than the palette offers an SDL_Surface with a palette of the indicated +number of used colors is created. If some of the image's pixel +refer to a color number higher then the maximal used colors, a subsequent +bliting operation on the surface will look up a color past a blit map +(that is based on the palette) memory. I.e. passing such SDL_Surface +to e.g. an SDL_DisplayFormat() function will result in a buffer overread in +a blit function. + +This patch fixes it by validing each pixel's color to be less than the +maximal color number in the palette. A validation failure raises an +error from a SDL_LoadBMP_RW() function. + +CVE-2019-7635 +https://bugzilla.libsdl.org/show_bug.cgi?id=4498 + +Signed-off-by: Petr Písař + +diff -r a936f9bd3e38 -r f1f5878be5db src/video/SDL_bmp.c +--- a/src/video/SDL_bmp.c Mon Jun 10 09:25:05 2019 -0700 ++++ b/src/video/SDL_bmp.c Tue Jun 11 06:28:12 2019 -0700 +@@ -308,6 +308,12 @@ + } + *(bits+i) = (pixel>>shift); + pixel <<= ExpandBMP; ++ if ( bits[i] >= biClrUsed ) { ++ SDL_SetError( ++ "A BMP image contains a pixel with a color out of the palette"); ++ was_error = SDL_TRUE; ++ goto done; ++ } + } } + break; + +@@ -318,6 +324,16 @@ + was_error = SDL_TRUE; + goto done; + } ++ if ( 8 == biBitCount && palette && biClrUsed < (1 << biBitCount ) ) { ++ for ( i=0; iw; ++i ) { ++ if ( bits[i] >= biClrUsed ) { ++ SDL_SetError( ++ "A BMP image contains a pixel with a color out of the palette"); ++ was_error = SDL_TRUE; ++ goto done; ++ } ++ } ++ } + #if SDL_BYTEORDER == SDL_BIG_ENDIAN + /* Byte-swap the pixels if needed. Note that the 24bpp + case has already been taken care of above. */ + diff --git a/sdl/default/patches-available/1100-CVE-2019-7635.patch b/sdl/default/patches-available/1100-CVE-2019-7635.patch new file mode 100644 index 0000000..01a111c --- /dev/null +++ b/sdl/default/patches-available/1100-CVE-2019-7635.patch @@ -0,0 +1,21 @@ +diff -r 19d8c3b9c251 -r 08f3b4992538 src/video/SDL_bmp.c +--- a/src/video/SDL_bmp.c Mon Feb 18 07:48:23 2019 -0800 ++++ b/src/video/SDL_bmp.c Sat Mar 16 18:35:11 2019 -0700 +@@ -163,6 +163,14 @@ + ExpandBMP = biBitCount; + biBitCount = 8; + break; ++ case 2: ++ case 3: ++ case 5: ++ case 6: ++ case 7: ++ SDL_SetError("%d-bpp BMP images are not supported", biBitCount); ++ was_error = SDL_TRUE; ++ goto done; + default: + ExpandBMP = 0; + break; + + + diff --git a/sdl/default/patches-available/1200-CVE-2019-7636.patch b/sdl/default/patches-available/1200-CVE-2019-7636.patch new file mode 100644 index 0000000..51e40ef --- /dev/null +++ b/sdl/default/patches-available/1200-CVE-2019-7636.patch @@ -0,0 +1,29 @@ +Fixed bug 4500 - Heap-Buffer Overflow in Map1toN pertaining to SDL_pixels.c + +Petr Pisar + +The reproducer has these data in BITMAPINFOHEADER: + +biSize = 40 +biBitCount = 8 +biClrUsed = 131075 + +SDL_LoadBMP_RW() function passes biBitCount as a color depth to SDL_CreateRGBSurface(), thus 256-color pallete is allocated. But then biClrUsed colors are read from a file and stored into the palette. SDL_LoadBMP_RW should report an error if biClrUsed is greater than 2^biBitCount. + +Also fixes CVE-2019-7638 + +diff -r 8586f153eede -r 19d8c3b9c251 src/video/SDL_bmp.c +--- a/src/video/SDL_bmp.c Sun Jan 13 15:27:50 2019 +0100 ++++ b/src/video/SDL_bmp.c Mon Feb 18 07:48:23 2019 -0800 +@@ -233,6 +233,10 @@ + if ( palette ) { + if ( biClrUsed == 0 ) { + biClrUsed = 1 << biBitCount; ++ } else if ( biClrUsed > (1 << biBitCount) ) { ++ SDL_SetError("BMP file has an invalid number of colors"); ++ was_error = SDL_TRUE; ++ goto done; + } + if ( biSize == 12 ) { + for ( i = 0; i < (int)biClrUsed; ++i ) { + diff --git a/sdl/default/patches-available/1300-CVE-2019-7637.patch b/sdl/default/patches-available/1300-CVE-2019-7637.patch new file mode 100644 index 0000000..90a734f --- /dev/null +++ b/sdl/default/patches-available/1300-CVE-2019-7637.patch @@ -0,0 +1,182 @@ +CVE-2019-7637: Fix in integer overflow in SDL_CalculatePitch +If a too large width is passed to SDL_SetVideoMode() the width travels +to SDL_CalculatePitch() where the width (e.g. 65535) is multiplied by +BytesPerPixel (e.g. 4) and the result is stored into Uint16 pitch +variable. During this arithmetics an integer overflow can happen (e.g. +the value is clamped as 65532). As a result SDL_Surface with a pitch +smaller than width * BytesPerPixel is created, too small pixel buffer +is allocated and when the SDL_Surface is processed in SDL_FillRect() +a buffer overflow occurs. + +This can be reproduced with "./graywin -width 21312312313123213213213" +command. + +This patch fixes is by using a very careful arithmetics in +SDL_CalculatePitch(). If an overflow is detected, an error is reported +back as a special 0 value. We assume that 0-width surfaces do not +occur in the wild. Since SDL_CalculatePitch() is a private function, +we can change the semantics. + +CVE-2019-7637 +https://bugzilla.libsdl.org/show_bug.cgi?id=4497 + +Signed-off-by: Petr Písař + +diff -r 4646533663ae -r 9b0e5c555c0f src/video/SDL_pixels.c +--- a/src/video/SDL_pixels.c Sat Mar 16 18:35:33 2019 -0700 ++++ b/src/video/SDL_pixels.c Sat Mar 16 19:16:24 2019 -0700 +@@ -286,26 +286,53 @@ + } + } + /* +- * Calculate the pad-aligned scanline width of a surface ++ * Calculate the pad-aligned scanline width of a surface. Return 0 in case of ++ * an error. + */ + Uint16 SDL_CalculatePitch(SDL_Surface *surface) + { +- Uint16 pitch; ++ unsigned int pitch = 0; + + /* Surface should be 4-byte aligned for speed */ +- pitch = surface->w*surface->format->BytesPerPixel; ++ /* The code tries to prevent from an Uint16 overflow. */; ++ for (Uint8 byte = surface->format->BytesPerPixel; byte; byte--) { ++ pitch += (unsigned int)surface->w; ++ if (pitch < surface->w) { ++ SDL_SetError("A scanline is too wide"); ++ return(0); ++ } ++ } + switch (surface->format->BitsPerPixel) { + case 1: +- pitch = (pitch+7)/8; ++ if (pitch % 8) { ++ pitch = pitch / 8 + 1; ++ } else { ++ pitch = pitch / 8; ++ } + break; + case 4: +- pitch = (pitch+1)/2; ++ if (pitch % 2) { ++ pitch = pitch / 2 + 1; ++ } else { ++ pitch = pitch / 2; ++ } + break; + default: + break; + } +- pitch = (pitch + 3) & ~3; /* 4-byte aligning */ +- return(pitch); ++ /* 4-byte aligning */ ++ if (pitch & 3) { ++ if (pitch + 3 < pitch) { ++ SDL_SetError("A scanline is too wide"); ++ return(0); ++ } ++ pitch = (pitch + 3) & ~3; ++ } ++ if (pitch > 0xFFFF) { ++ SDL_SetError("A scanline is too wide"); ++ return(0); ++ } ++ return((Uint16)pitch); + } + /* + * Match an RGB value to a particular palette index +diff -r 4646533663ae -r 9b0e5c555c0f src/video/gapi/SDL_gapivideo.c +--- a/src/video/gapi/SDL_gapivideo.c Sat Mar 16 18:35:33 2019 -0700 ++++ b/src/video/gapi/SDL_gapivideo.c Sat Mar 16 19:16:24 2019 -0700 +@@ -733,6 +733,9 @@ + video->w = gapi->w = width; + video->h = gapi->h = height; + video->pitch = SDL_CalculatePitch(video); ++ if (!current->pitch) { ++ return(NULL); ++ } + + /* Small fix for WinCE/Win32 - when activating window + SDL_VideoSurface is equal to zero, so activating code +diff -r 4646533663ae -r 9b0e5c555c0f src/video/nanox/SDL_nxvideo.c +--- a/src/video/nanox/SDL_nxvideo.c Sat Mar 16 18:35:33 2019 -0700 ++++ b/src/video/nanox/SDL_nxvideo.c Sat Mar 16 19:16:24 2019 -0700 +@@ -378,6 +378,10 @@ + current -> w = width ; + current -> h = height ; + current -> pitch = SDL_CalculatePitch (current) ; ++ if (!current->pitch) { ++ current = NULL; ++ goto done; ++ } + NX_ResizeImage (this, current, flags) ; + } + +diff -r 4646533663ae -r 9b0e5c555c0f src/video/ps2gs/SDL_gsvideo.c +--- a/src/video/ps2gs/SDL_gsvideo.c Sat Mar 16 18:35:33 2019 -0700 ++++ b/src/video/ps2gs/SDL_gsvideo.c Sat Mar 16 19:16:24 2019 -0700 +@@ -479,6 +479,9 @@ + current->w = width; + current->h = height; + current->pitch = SDL_CalculatePitch(current); ++ if (!current->pitch) { ++ return(NULL); ++ } + + /* Memory map the DMA area for block memory transfer */ + if ( ! mapped_mem ) { +diff -r 4646533663ae -r 9b0e5c555c0f src/video/ps3/SDL_ps3video.c +--- a/src/video/ps3/SDL_ps3video.c Sat Mar 16 18:35:33 2019 -0700 ++++ b/src/video/ps3/SDL_ps3video.c Sat Mar 16 19:16:24 2019 -0700 +@@ -339,6 +339,9 @@ + current->w = width; + current->h = height; + current->pitch = SDL_CalculatePitch(current); ++ if (!current->pitch) { ++ return(NULL); ++ } + + /* Alloc aligned mem for current->pixels */ + s_pixels = memalign(16, current->h * current->pitch); +diff -r 4646533663ae -r 9b0e5c555c0f src/video/windib/SDL_dibvideo.c +--- a/src/video/windib/SDL_dibvideo.c Sat Mar 16 18:35:33 2019 -0700 ++++ b/src/video/windib/SDL_dibvideo.c Sat Mar 16 19:16:24 2019 -0700 +@@ -675,6 +675,9 @@ + video->w = width; + video->h = height; + video->pitch = SDL_CalculatePitch(video); ++ if (!current->pitch) { ++ return(NULL); ++ } + + /* Small fix for WinCE/Win32 - when activating window + SDL_VideoSurface is equal to zero, so activating code +diff -r 4646533663ae -r 9b0e5c555c0f src/video/windx5/SDL_dx5video.c +--- a/src/video/windx5/SDL_dx5video.c Sat Mar 16 18:35:33 2019 -0700 ++++ b/src/video/windx5/SDL_dx5video.c Sat Mar 16 19:16:24 2019 -0700 +@@ -1127,6 +1127,9 @@ + video->w = width; + video->h = height; + video->pitch = SDL_CalculatePitch(video); ++ if (!current->pitch) { ++ return(NULL); ++ } + + #ifndef NO_CHANGEDISPLAYSETTINGS + /* Set fullscreen mode if appropriate. +diff -r 4646533663ae -r 9b0e5c555c0f src/video/x11/SDL_x11video.c +--- a/src/video/x11/SDL_x11video.c Sat Mar 16 18:35:33 2019 -0700 ++++ b/src/video/x11/SDL_x11video.c Sat Mar 16 19:16:24 2019 -0700 +@@ -1225,6 +1225,10 @@ + current->w = width; + current->h = height; + current->pitch = SDL_CalculatePitch(current); ++ if (!current->pitch) { ++ current = NULL; ++ goto done; ++ } + if (X11_ResizeImage(this, current, flags) < 0) { + current = NULL; + goto done; + diff --git a/sdl/default/patches-available/1400-CVE-2019-7637.patch b/sdl/default/patches-available/1400-CVE-2019-7637.patch new file mode 100644 index 0000000..bf28310 --- /dev/null +++ b/sdl/default/patches-available/1400-CVE-2019-7637.patch @@ -0,0 +1,42 @@ +fix copy+paste mistakes in commit 9b0e5c555c0f (CVE-2019-7637 fix): + +http://hg.libsdl.org/SDL/rev/9b0e5c555c0f made copy+paste mistakes which +resulted in windows versions failing to set video mode. + +diff -r 37d0eba8fa17 -r 32075e9e2135 src/video/gapi/SDL_gapivideo.c +--- a/src/video/gapi/SDL_gapivideo.c Wed Jul 31 23:50:10 2019 +0300 ++++ b/src/video/gapi/SDL_gapivideo.c Fri Aug 02 00:35:05 2019 +0300 +@@ -733,7 +733,7 @@ + video->w = gapi->w = width; + video->h = gapi->h = height; + video->pitch = SDL_CalculatePitch(video); +- if (!current->pitch) { ++ if (!video->pitch) { + return(NULL); + } + +diff -r 37d0eba8fa17 -r 32075e9e2135 src/video/windib/SDL_dibvideo.c +--- a/src/video/windib/SDL_dibvideo.c Wed Jul 31 23:50:10 2019 +0300 ++++ b/src/video/windib/SDL_dibvideo.c Fri Aug 02 00:35:05 2019 +0300 +@@ -675,7 +675,7 @@ + video->w = width; + video->h = height; + video->pitch = SDL_CalculatePitch(video); +- if (!current->pitch) { ++ if (!video->pitch) { + return(NULL); + } + +diff -r 37d0eba8fa17 -r 32075e9e2135 src/video/windx5/SDL_dx5video.c +--- a/src/video/windx5/SDL_dx5video.c Wed Jul 31 23:50:10 2019 +0300 ++++ b/src/video/windx5/SDL_dx5video.c Fri Aug 02 00:35:05 2019 +0300 +@@ -1127,7 +1127,7 @@ + video->w = width; + video->h = height; + video->pitch = SDL_CalculatePitch(video); +- if (!current->pitch) { ++ if (!video->pitch) { + return(NULL); + } + + diff --git a/sdl/default/patches-available/1500-CVE-2019-13616.patch b/sdl/default/patches-available/1500-CVE-2019-13616.patch new file mode 100644 index 0000000..c95529f --- /dev/null +++ b/sdl/default/patches-available/1500-CVE-2019-13616.patch @@ -0,0 +1,20 @@ + +diff -r 87d60cae0273 -r ad1bbfbca760 src/video/SDL_bmp.c +--- a/src/video/SDL_bmp.c Tue Jun 18 23:31:40 2019 +0100 ++++ b/src/video/SDL_bmp.c Tue Jul 30 21:30:24 2019 +0300 +@@ -143,6 +143,11 @@ + (void) biYPelsPerMeter; + (void) biClrImportant; + ++ if (biWidth <= 0 || biHeight == 0) { ++ SDL_SetError("BMP file with bad dimensions (%dx%d)", biWidth, biHeight); ++ was_error = SDL_TRUE; ++ goto done; ++ } + if (biHeight < 0) { + topDown = SDL_TRUE; + biHeight = -biHeight; + + + + diff --git a/sdl/default/patches-available/1600-config-sub.patch b/sdl/default/patches-available/1600-config-sub.patch new file mode 100644 index 0000000..67ecd8e --- /dev/null +++ b/sdl/default/patches-available/1600-config-sub.patch @@ -0,0 +1,2951 @@ +--- a/build-scripts/config.sub 2012-01-19 06:30:05.000000000 +0000 ++++ b/build-scripts/config.sub 2020-09-08 21:16:32.710000000 +0000 +@@ -1,38 +1,31 @@ + #! /bin/sh + # Configuration validation subroutine script. +-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +-# Free Software Foundation, Inc. +- +-timestamp='2009-10-07' +- +-# This file is (in principle) common to ALL GNU software. +-# The presence of a machine in this file suggests that SOME GNU software +-# can handle that machine. It does not imply ALL GNU software can. +-# +-# This file is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2 of the License, or ++# Copyright 1992-2020 Free Software Foundation, Inc. ++ ++timestamp='2020-01-01' ++ ++# This file is free software; you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or + # (at your option) any later version. + # +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. + # + # You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +-# 02110-1301, USA. ++# along with this program; if not, see . + # + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a + # configuration script generated by Autoconf, you may include it under +-# the same distribution terms that you use for the rest of that program. ++# the same distribution terms that you use for the rest of that ++# program. This Exception is an additional permission under section 7 ++# of the GNU General Public License, version 3 ("GPLv3"). + + +-# Please send patches to . Submit a context +-# diff and a properly formatted GNU ChangeLog entry. ++# Please send patches to . + # + # Configuration subroutine to validate and canonicalize a configuration type. + # Supply the specified configuration type as an argument. +@@ -40,7 +33,7 @@ + # Otherwise, we print the canonical config type on stdout and succeed. + + # You can get the latest version of this script from: +-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD ++# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + + # This file is supposed to be the same for all GNU packages + # and recognize all the CPU types, system types and aliases +@@ -60,12 +53,11 @@ + me=`echo "$0" | sed -e 's,.*/,,'` + + usage="\ +-Usage: $0 [OPTION] CPU-MFR-OPSYS +- $0 [OPTION] ALIAS ++Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + + Canonicalize a configuration name. + +-Operation modes: ++Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit +@@ -75,8 +67,7 @@ + version="\ + GNU config.sub ($timestamp) + +-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. ++Copyright 1992-2020 Free Software Foundation, Inc. + + This is free software; see the source for copying conditions. There is NO + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." +@@ -98,12 +89,12 @@ + - ) # Use stdin as input. + break ;; + -* ) +- echo "$me: invalid option $1$help" ++ echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. +- echo $1 ++ echo "$1" + exit ;; + + * ) +@@ -119,1128 +110,1164 @@ + exit 1;; + esac + +-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +-# Here we must recognize all the valid KERNEL-OS combinations. +-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +-case $maybe_os in +- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ +- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ +- kopensolaris*-gnu* | \ +- storm-chaos* | os2-emx* | rtmk-nova*) +- os=-$maybe_os +- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` +- ;; +- *) +- basic_machine=`echo $1 | sed 's/-[^-]*$//'` +- if [ $basic_machine != $1 ] +- then os=`echo $1 | sed 's/.*-/-/'` +- else os=; fi +- ;; +-esac +- +-### Let's recognize common machines as not being operating systems so +-### that things like config.sub decstation-3100 work. We also +-### recognize some manufacturers as not being operating systems, so we +-### can provide default operating systems below. +-case $os in +- -sun*os*) +- # Prevent following clause from handling this invalid input. +- ;; +- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ +- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ +- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ +- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ +- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ +- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ +- -apple | -axis | -knuth | -cray | -microblaze) +- os= +- basic_machine=$1 +- ;; +- -bluegene*) +- os=-cnk +- ;; +- -sim | -cisco | -oki | -wec | -winbond) +- os= +- basic_machine=$1 +- ;; +- -scout) +- ;; +- -wrs) +- os=-vxworks +- basic_machine=$1 +- ;; +- -chorusos*) +- os=-chorusos +- basic_machine=$1 +- ;; +- -chorusrdb) +- os=-chorusrdb +- basic_machine=$1 +- ;; +- -hiux*) +- os=-hiuxwe2 +- ;; +- -sco6) +- os=-sco5v6 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco5) +- os=-sco3.2v5 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco4) +- os=-sco3.2v4 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco3.2.[4-9]*) +- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco3.2v[4-9]*) +- # Don't forget version if it is 3.2v4 or newer. +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco5v6*) +- # Don't forget version if it is 3.2v4 or newer. +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -sco*) +- os=-sco3.2v2 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -udk*) +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -isc) +- os=-isc2.2 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -clix*) +- basic_machine=clipper-intergraph +- ;; +- -isc*) +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; +- -lynx*) +- os=-lynxos ++# Split fields of configuration type ++# shellcheck disable=SC2162 ++IFS="-" read field1 field2 field3 field4 <&2 ++ exit 1 + ;; +- -ptx*) +- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ++ *-*-*-*) ++ basic_machine=$field1-$field2 ++ os=$field3-$field4 + ;; +- -windowsnt*) +- os=`echo $os | sed -e 's/windowsnt/winnt/'` ++ *-*-*) ++ # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two ++ # parts ++ maybe_os=$field2-$field3 ++ case $maybe_os in ++ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \ ++ | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \ ++ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ ++ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ ++ | storm-chaos* | os2-emx* | rtmk-nova*) ++ basic_machine=$field1 ++ os=$maybe_os ++ ;; ++ android-linux) ++ basic_machine=$field1-unknown ++ os=linux-android ++ ;; ++ *) ++ basic_machine=$field1-$field2 ++ os=$field3 ++ ;; ++ esac + ;; +- -psos*) +- os=-psos ++ *-*) ++ # A lone config we happen to match not fitting any pattern ++ case $field1-$field2 in ++ decstation-3100) ++ basic_machine=mips-dec ++ os= ++ ;; ++ *-*) ++ # Second component is usually, but not always the OS ++ case $field2 in ++ # Prevent following clause from handling this valid os ++ sun*os*) ++ basic_machine=$field1 ++ os=$field2 ++ ;; ++ # Manufacturers ++ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ ++ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ ++ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ ++ | convergent* | ncr* | news | 32* | 3600* | 3100* \ ++ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ ++ | ultra | tti* | harris | dolphin | highlevel | gould \ ++ | cbm | ns | masscomp | apple | axis | knuth | cray \ ++ | microblaze* | sim | cisco \ ++ | oki | wec | wrs | winbond) ++ basic_machine=$field1-$field2 ++ os= ++ ;; ++ *) ++ basic_machine=$field1 ++ os=$field2 ++ ;; ++ esac ++ ;; ++ esac + ;; +- -mint | -mint[0-9]*) +- basic_machine=m68k-atari +- os=-mint ++ *) ++ # Convert single-component short-hands not valid as part of ++ # multi-component configurations. ++ case $field1 in ++ 386bsd) ++ basic_machine=i386-pc ++ os=bsd ++ ;; ++ a29khif) ++ basic_machine=a29k-amd ++ os=udi ++ ;; ++ adobe68k) ++ basic_machine=m68010-adobe ++ os=scout ++ ;; ++ alliant) ++ basic_machine=fx80-alliant ++ os= ++ ;; ++ altos | altos3068) ++ basic_machine=m68k-altos ++ os= ++ ;; ++ am29k) ++ basic_machine=a29k-none ++ os=bsd ++ ;; ++ amdahl) ++ basic_machine=580-amdahl ++ os=sysv ++ ;; ++ amiga) ++ basic_machine=m68k-unknown ++ os= ++ ;; ++ amigaos | amigados) ++ basic_machine=m68k-unknown ++ os=amigaos ++ ;; ++ amigaunix | amix) ++ basic_machine=m68k-unknown ++ os=sysv4 ++ ;; ++ apollo68) ++ basic_machine=m68k-apollo ++ os=sysv ++ ;; ++ apollo68bsd) ++ basic_machine=m68k-apollo ++ os=bsd ++ ;; ++ aros) ++ basic_machine=i386-pc ++ os=aros ++ ;; ++ aux) ++ basic_machine=m68k-apple ++ os=aux ++ ;; ++ balance) ++ basic_machine=ns32k-sequent ++ os=dynix ++ ;; ++ blackfin) ++ basic_machine=bfin-unknown ++ os=linux ++ ;; ++ cegcc) ++ basic_machine=arm-unknown ++ os=cegcc ++ ;; ++ convex-c1) ++ basic_machine=c1-convex ++ os=bsd ++ ;; ++ convex-c2) ++ basic_machine=c2-convex ++ os=bsd ++ ;; ++ convex-c32) ++ basic_machine=c32-convex ++ os=bsd ++ ;; ++ convex-c34) ++ basic_machine=c34-convex ++ os=bsd ++ ;; ++ convex-c38) ++ basic_machine=c38-convex ++ os=bsd ++ ;; ++ cray) ++ basic_machine=j90-cray ++ os=unicos ++ ;; ++ crds | unos) ++ basic_machine=m68k-crds ++ os= ++ ;; ++ da30) ++ basic_machine=m68k-da30 ++ os= ++ ;; ++ decstation | pmax | pmin | dec3100 | decstatn) ++ basic_machine=mips-dec ++ os= ++ ;; ++ delta88) ++ basic_machine=m88k-motorola ++ os=sysv3 ++ ;; ++ dicos) ++ basic_machine=i686-pc ++ os=dicos ++ ;; ++ djgpp) ++ basic_machine=i586-pc ++ os=msdosdjgpp ++ ;; ++ ebmon29k) ++ basic_machine=a29k-amd ++ os=ebmon ++ ;; ++ es1800 | OSE68k | ose68k | ose | OSE) ++ basic_machine=m68k-ericsson ++ os=ose ++ ;; ++ gmicro) ++ basic_machine=tron-gmicro ++ os=sysv ++ ;; ++ go32) ++ basic_machine=i386-pc ++ os=go32 ++ ;; ++ h8300hms) ++ basic_machine=h8300-hitachi ++ os=hms ++ ;; ++ h8300xray) ++ basic_machine=h8300-hitachi ++ os=xray ++ ;; ++ h8500hms) ++ basic_machine=h8500-hitachi ++ os=hms ++ ;; ++ harris) ++ basic_machine=m88k-harris ++ os=sysv3 ++ ;; ++ hp300 | hp300hpux) ++ basic_machine=m68k-hp ++ os=hpux ++ ;; ++ hp300bsd) ++ basic_machine=m68k-hp ++ os=bsd ++ ;; ++ hppaosf) ++ basic_machine=hppa1.1-hp ++ os=osf ++ ;; ++ hppro) ++ basic_machine=hppa1.1-hp ++ os=proelf ++ ;; ++ i386mach) ++ basic_machine=i386-mach ++ os=mach ++ ;; ++ isi68 | isi) ++ basic_machine=m68k-isi ++ os=sysv ++ ;; ++ m68knommu) ++ basic_machine=m68k-unknown ++ os=linux ++ ;; ++ magnum | m3230) ++ basic_machine=mips-mips ++ os=sysv ++ ;; ++ merlin) ++ basic_machine=ns32k-utek ++ os=sysv ++ ;; ++ mingw64) ++ basic_machine=x86_64-pc ++ os=mingw64 ++ ;; ++ mingw32) ++ basic_machine=i686-pc ++ os=mingw32 ++ ;; ++ mingw32ce) ++ basic_machine=arm-unknown ++ os=mingw32ce ++ ;; ++ monitor) ++ basic_machine=m68k-rom68k ++ os=coff ++ ;; ++ morphos) ++ basic_machine=powerpc-unknown ++ os=morphos ++ ;; ++ moxiebox) ++ basic_machine=moxie-unknown ++ os=moxiebox ++ ;; ++ msdos) ++ basic_machine=i386-pc ++ os=msdos ++ ;; ++ msys) ++ basic_machine=i686-pc ++ os=msys ++ ;; ++ mvs) ++ basic_machine=i370-ibm ++ os=mvs ++ ;; ++ nacl) ++ basic_machine=le32-unknown ++ os=nacl ++ ;; ++ ncr3000) ++ basic_machine=i486-ncr ++ os=sysv4 ++ ;; ++ netbsd386) ++ basic_machine=i386-pc ++ os=netbsd ++ ;; ++ netwinder) ++ basic_machine=armv4l-rebel ++ os=linux ++ ;; ++ news | news700 | news800 | news900) ++ basic_machine=m68k-sony ++ os=newsos ++ ;; ++ news1000) ++ basic_machine=m68030-sony ++ os=newsos ++ ;; ++ necv70) ++ basic_machine=v70-nec ++ os=sysv ++ ;; ++ nh3000) ++ basic_machine=m68k-harris ++ os=cxux ++ ;; ++ nh[45]000) ++ basic_machine=m88k-harris ++ os=cxux ++ ;; ++ nindy960) ++ basic_machine=i960-intel ++ os=nindy ++ ;; ++ mon960) ++ basic_machine=i960-intel ++ os=mon960 ++ ;; ++ nonstopux) ++ basic_machine=mips-compaq ++ os=nonstopux ++ ;; ++ os400) ++ basic_machine=powerpc-ibm ++ os=os400 ++ ;; ++ OSE68000 | ose68000) ++ basic_machine=m68000-ericsson ++ os=ose ++ ;; ++ os68k) ++ basic_machine=m68k-none ++ os=os68k ++ ;; ++ paragon) ++ basic_machine=i860-intel ++ os=osf ++ ;; ++ parisc) ++ basic_machine=hppa-unknown ++ os=linux ++ ;; ++ pw32) ++ basic_machine=i586-unknown ++ os=pw32 ++ ;; ++ rdos | rdos64) ++ basic_machine=x86_64-pc ++ os=rdos ++ ;; ++ rdos32) ++ basic_machine=i386-pc ++ os=rdos ++ ;; ++ rom68k) ++ basic_machine=m68k-rom68k ++ os=coff ++ ;; ++ sa29200) ++ basic_machine=a29k-amd ++ os=udi ++ ;; ++ sei) ++ basic_machine=mips-sei ++ os=seiux ++ ;; ++ sequent) ++ basic_machine=i386-sequent ++ os= ++ ;; ++ sps7) ++ basic_machine=m68k-bull ++ os=sysv2 ++ ;; ++ st2000) ++ basic_machine=m68k-tandem ++ os= ++ ;; ++ stratus) ++ basic_machine=i860-stratus ++ os=sysv4 ++ ;; ++ sun2) ++ basic_machine=m68000-sun ++ os= ++ ;; ++ sun2os3) ++ basic_machine=m68000-sun ++ os=sunos3 ++ ;; ++ sun2os4) ++ basic_machine=m68000-sun ++ os=sunos4 ++ ;; ++ sun3) ++ basic_machine=m68k-sun ++ os= ++ ;; ++ sun3os3) ++ basic_machine=m68k-sun ++ os=sunos3 ++ ;; ++ sun3os4) ++ basic_machine=m68k-sun ++ os=sunos4 ++ ;; ++ sun4) ++ basic_machine=sparc-sun ++ os= ++ ;; ++ sun4os3) ++ basic_machine=sparc-sun ++ os=sunos3 ++ ;; ++ sun4os4) ++ basic_machine=sparc-sun ++ os=sunos4 ++ ;; ++ sun4sol2) ++ basic_machine=sparc-sun ++ os=solaris2 ++ ;; ++ sun386 | sun386i | roadrunner) ++ basic_machine=i386-sun ++ os= ++ ;; ++ sv1) ++ basic_machine=sv1-cray ++ os=unicos ++ ;; ++ symmetry) ++ basic_machine=i386-sequent ++ os=dynix ++ ;; ++ t3e) ++ basic_machine=alphaev5-cray ++ os=unicos ++ ;; ++ t90) ++ basic_machine=t90-cray ++ os=unicos ++ ;; ++ toad1) ++ basic_machine=pdp10-xkl ++ os=tops20 ++ ;; ++ tpf) ++ basic_machine=s390x-ibm ++ os=tpf ++ ;; ++ udi29k) ++ basic_machine=a29k-amd ++ os=udi ++ ;; ++ ultra3) ++ basic_machine=a29k-nyu ++ os=sym1 ++ ;; ++ v810 | necv810) ++ basic_machine=v810-nec ++ os=none ++ ;; ++ vaxv) ++ basic_machine=vax-dec ++ os=sysv ++ ;; ++ vms) ++ basic_machine=vax-dec ++ os=vms ++ ;; ++ vsta) ++ basic_machine=i386-pc ++ os=vsta ++ ;; ++ vxworks960) ++ basic_machine=i960-wrs ++ os=vxworks ++ ;; ++ vxworks68) ++ basic_machine=m68k-wrs ++ os=vxworks ++ ;; ++ vxworks29k) ++ basic_machine=a29k-wrs ++ os=vxworks ++ ;; ++ xbox) ++ basic_machine=i686-pc ++ os=mingw32 ++ ;; ++ ymp) ++ basic_machine=ymp-cray ++ os=unicos ++ ;; ++ *) ++ basic_machine=$1 ++ os= ++ ;; ++ esac + ;; + esac + +-# Decode aliases for certain CPU-COMPANY combinations. ++# Decode 1-component or ad-hoc basic machines + case $basic_machine in +- # Recognize the basic CPU types without company name. +- # Some are omitted here because they have special meanings below. +- 1750a | 580 \ +- | a29k \ +- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ +- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ +- | am33_2.0 \ +- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ +- | bfin \ +- | c4x | clipper \ +- | d10v | d30v | dlx | dsp16xx \ +- | fido | fr30 | frv \ +- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ +- | i370 | i860 | i960 | ia64 \ +- | ip2k | iq2000 \ +- | lm32 \ +- | m32c | m32r | m32rle | m68000 | m68k | m88k \ +- | maxq | mb | microblaze | mcore | mep | metag \ +- | mips | mipsbe | mipseb | mipsel | mipsle \ +- | mips16 \ +- | mips64 | mips64el \ +- | mips64octeon | mips64octeonel \ +- | mips64orion | mips64orionel \ +- | mips64r5900 | mips64r5900el \ +- | mips64vr | mips64vrel \ +- | mips64vr4100 | mips64vr4100el \ +- | mips64vr4300 | mips64vr4300el \ +- | mips64vr5000 | mips64vr5000el \ +- | mips64vr5900 | mips64vr5900el \ +- | mipsisa32 | mipsisa32el \ +- | mipsisa32r2 | mipsisa32r2el \ +- | mipsisa64 | mipsisa64el \ +- | mipsisa64r2 | mipsisa64r2el \ +- | mipsisa64sb1 | mipsisa64sb1el \ +- | mipsisa64sr71k | mipsisa64sr71kel \ +- | mipstx39 | mipstx39el \ +- | mn10200 | mn10300 \ +- | moxie \ +- | mt \ +- | msp430 \ +- | nios | nios2 \ +- | ns16k | ns32k \ +- | or32 \ +- | pdp10 | pdp11 | pj | pjl \ +- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ +- | pyramid \ +- | rx \ +- | score \ +- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ +- | sh64 | sh64le \ +- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ +- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ +- | spu | strongarm \ +- | tahoe | thumb | tic4x | tic80 | tron \ +- | v850 | v850e \ +- | we32k \ +- | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ +- | z8k | z80) +- basic_machine=$basic_machine-unknown +- ;; +- m6811 | m68hc11 | m6812 | m68hc12 | picochip) +- # Motorola 68HC11/12. +- basic_machine=$basic_machine-unknown +- os=-none ++ # Here we handle the default manufacturer of certain CPU types. It is in ++ # some cases the only manufacturer, in others, it is the most popular. ++ w89k) ++ cpu=hppa1.1 ++ vendor=winbond + ;; +- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ++ op50n) ++ cpu=hppa1.1 ++ vendor=oki + ;; +- ms1) +- basic_machine=mt-unknown ++ op60c) ++ cpu=hppa1.1 ++ vendor=oki + ;; +- +- # We use `pc' rather than `unknown' +- # because (1) that's what they normally are, and +- # (2) the word "unknown" tends to confuse beginning users. +- i*86 | x86_64) +- basic_machine=$basic_machine-pc +- ;; +- # Object if more than one company name word. +- *-*-*) +- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 +- exit 1 ++ ibm*) ++ cpu=i370 ++ vendor=ibm ++ ;; ++ orion105) ++ cpu=clipper ++ vendor=highlevel ++ ;; ++ mac | mpw | mac-mpw) ++ cpu=m68k ++ vendor=apple + ;; +- # Recognize the basic CPU types with company name. +- 580-* \ +- | a29k-* \ +- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ +- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ +- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ +- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ +- | avr-* | avr32-* \ +- | bfin-* | bs2000-* \ +- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ +- | clipper-* | craynv-* | cydra-* \ +- | d10v-* | d30v-* | dlx-* \ +- | elxsi-* \ +- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ +- | h8300-* | h8500-* \ +- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ +- | i*86-* | i860-* | i960-* | ia64-* \ +- | ip2k-* | iq2000-* \ +- | lm32-* \ +- | m32c-* | m32r-* | m32rle-* \ +- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ +- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ +- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ +- | mips16-* \ +- | mips64-* | mips64el-* \ +- | mips64octeon-* | mips64octeonel-* \ +- | mips64orion-* | mips64orionel-* \ +- | mips64r5900-* | mips64r5900el-* \ +- | mips64vr-* | mips64vrel-* \ +- | mips64vr4100-* | mips64vr4100el-* \ +- | mips64vr4300-* | mips64vr4300el-* \ +- | mips64vr5000-* | mips64vr5000el-* \ +- | mips64vr5900-* | mips64vr5900el-* \ +- | mipsisa32-* | mipsisa32el-* \ +- | mipsisa32r2-* | mipsisa32r2el-* \ +- | mipsisa64-* | mipsisa64el-* \ +- | mipsisa64r2-* | mipsisa64r2el-* \ +- | mipsisa64sb1-* | mipsisa64sb1el-* \ +- | mipsisa64sr71k-* | mipsisa64sr71kel-* \ +- | mipstx39-* | mipstx39el-* \ +- | mmix-* \ +- | mt-* \ +- | msp430-* \ +- | nios-* | nios2-* \ +- | none-* | np1-* | ns16k-* | ns32k-* \ +- | orion-* \ +- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ +- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ +- | pyramid-* \ +- | romp-* | rs6000-* | rx-* \ +- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ +- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ +- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ +- | sparclite-* \ +- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ +- | tahoe-* | thumb-* \ +- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ +- | tron-* \ +- | v850-* | v850e-* | vax-* \ +- | we32k-* \ +- | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ +- | xstormy16-* | xtensa*-* \ +- | ymp-* \ +- | z8k-* | z80-*) +- ;; +- # Recognize the basic CPU types without company name, with glob match. +- xtensa*) +- basic_machine=$basic_machine-unknown ++ pmac | pmac-mpw) ++ cpu=powerpc ++ vendor=apple + ;; ++ + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. +- 386bsd) +- basic_machine=i386-unknown +- os=-bsd +- ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) +- basic_machine=m68000-att ++ cpu=m68000 ++ vendor=att + ;; + 3b*) +- basic_machine=we32k-att +- ;; +- a29khif) +- basic_machine=a29k-amd +- os=-udi +- ;; +- abacus) +- basic_machine=abacus-unknown +- ;; +- adobe68k) +- basic_machine=m68010-adobe +- os=-scout +- ;; +- alliant | fx80) +- basic_machine=fx80-alliant +- ;; +- altos | altos3068) +- basic_machine=m68k-altos +- ;; +- am29k) +- basic_machine=a29k-none +- os=-bsd +- ;; +- amd64) +- basic_machine=x86_64-pc +- ;; +- amd64-*) +- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- amdahl) +- basic_machine=580-amdahl +- os=-sysv +- ;; +- amiga | amiga-*) +- basic_machine=m68k-unknown +- ;; +- amigaos | amigados) +- basic_machine=m68k-unknown +- os=-amigaos +- ;; +- amigaunix | amix) +- basic_machine=m68k-unknown +- os=-sysv4 +- ;; +- apollo68) +- basic_machine=m68k-apollo +- os=-sysv +- ;; +- apollo68bsd) +- basic_machine=m68k-apollo +- os=-bsd +- ;; +- aros) +- basic_machine=i386-pc +- os=-aros +- ;; +- aux) +- basic_machine=m68k-apple +- os=-aux +- ;; +- balance) +- basic_machine=ns32k-sequent +- os=-dynix +- ;; +- blackfin) +- basic_machine=bfin-unknown +- os=-linux +- ;; +- blackfin-*) +- basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` +- os=-linux ++ cpu=we32k ++ vendor=att + ;; + bluegene*) +- basic_machine=powerpc-ibm +- os=-cnk +- ;; +- c90) +- basic_machine=c90-cray +- os=-unicos +- ;; +- cegcc) +- basic_machine=arm-unknown +- os=-cegcc +- ;; +- convex-c1) +- basic_machine=c1-convex +- os=-bsd +- ;; +- convex-c2) +- basic_machine=c2-convex +- os=-bsd +- ;; +- convex-c32) +- basic_machine=c32-convex +- os=-bsd +- ;; +- convex-c34) +- basic_machine=c34-convex +- os=-bsd +- ;; +- convex-c38) +- basic_machine=c38-convex +- os=-bsd +- ;; +- cray | j90) +- basic_machine=j90-cray +- os=-unicos +- ;; +- craynv) +- basic_machine=craynv-cray +- os=-unicosmp +- ;; +- cr16) +- basic_machine=cr16-unknown +- os=-elf +- ;; +- crds | unos) +- basic_machine=m68k-crds +- ;; +- crisv32 | crisv32-* | etraxfs*) +- basic_machine=crisv32-axis +- ;; +- cris | cris-* | etrax*) +- basic_machine=cris-axis +- ;; +- crx) +- basic_machine=crx-unknown +- os=-elf +- ;; +- da30 | da30-*) +- basic_machine=m68k-da30 +- ;; +- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) +- basic_machine=mips-dec ++ cpu=powerpc ++ vendor=ibm ++ os=cnk + ;; + decsystem10* | dec10*) +- basic_machine=pdp10-dec +- os=-tops10 ++ cpu=pdp10 ++ vendor=dec ++ os=tops10 + ;; + decsystem20* | dec20*) +- basic_machine=pdp10-dec +- os=-tops20 ++ cpu=pdp10 ++ vendor=dec ++ os=tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) +- basic_machine=m68k-motorola ++ cpu=m68k ++ vendor=motorola + ;; +- delta88) +- basic_machine=m88k-motorola +- os=-sysv3 +- ;; +- dicos) +- basic_machine=i686-pc +- os=-dicos +- ;; +- djgpp) +- basic_machine=i586-pc +- os=-msdosdjgpp +- ;; +- dpx20 | dpx20-*) +- basic_machine=rs6000-bull +- os=-bosx +- ;; +- dpx2* | dpx2*-bull) +- basic_machine=m68k-bull +- os=-sysv3 +- ;; +- ebmon29k) +- basic_machine=a29k-amd +- os=-ebmon +- ;; +- elxsi) +- basic_machine=elxsi-elxsi +- os=-bsd ++ dpx2*) ++ cpu=m68k ++ vendor=bull ++ os=sysv3 + ;; + encore | umax | mmax) +- basic_machine=ns32k-encore ++ cpu=ns32k ++ vendor=encore + ;; +- es1800 | OSE68k | ose68k | ose | OSE) +- basic_machine=m68k-ericsson +- os=-ose ++ elxsi) ++ cpu=elxsi ++ vendor=elxsi ++ os=${os:-bsd} + ;; + fx2800) +- basic_machine=i860-alliant ++ cpu=i860 ++ vendor=alliant + ;; + genix) +- basic_machine=ns32k-ns +- ;; +- gmicro) +- basic_machine=tron-gmicro +- os=-sysv +- ;; +- go32) +- basic_machine=i386-pc +- os=-go32 ++ cpu=ns32k ++ vendor=ns + ;; + h3050r* | hiux*) +- basic_machine=hppa1.1-hitachi +- os=-hiuxwe2 +- ;; +- h8300hms) +- basic_machine=h8300-hitachi +- os=-hms +- ;; +- h8300xray) +- basic_machine=h8300-hitachi +- os=-xray +- ;; +- h8500hms) +- basic_machine=h8500-hitachi +- os=-hms +- ;; +- harris) +- basic_machine=m88k-harris +- os=-sysv3 +- ;; +- hp300-*) +- basic_machine=m68k-hp +- ;; +- hp300bsd) +- basic_machine=m68k-hp +- os=-bsd +- ;; +- hp300hpux) +- basic_machine=m68k-hp +- os=-hpux ++ cpu=hppa1.1 ++ vendor=hitachi ++ os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) +- basic_machine=hppa1.0-hp ++ cpu=hppa1.0 ++ vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) +- basic_machine=m68000-hp ++ cpu=m68000 ++ vendor=hp + ;; + hp9k3[2-9][0-9]) +- basic_machine=m68k-hp ++ cpu=m68k ++ vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) +- basic_machine=hppa1.0-hp ++ cpu=hppa1.0 ++ vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) +- basic_machine=hppa1.1-hp ++ cpu=hppa1.1 ++ vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp +- basic_machine=hppa1.1-hp ++ cpu=hppa1.1 ++ vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp +- basic_machine=hppa1.1-hp ++ cpu=hppa1.1 ++ vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) +- basic_machine=hppa1.1-hp ++ cpu=hppa1.1 ++ vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) +- basic_machine=hppa1.0-hp +- ;; +- hppa-next) +- os=-nextstep3 +- ;; +- hppaosf) +- basic_machine=hppa1.1-hp +- os=-osf ++ cpu=hppa1.0 ++ vendor=hp + ;; +- hppro) +- basic_machine=hppa1.1-hp +- os=-proelf +- ;; +- i370-ibm* | ibm*) +- basic_machine=i370-ibm +- ;; +-# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) +- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` +- os=-sysv32 ++ cpu=`echo "$1" | sed -e 's/86.*/86/'` ++ vendor=pc ++ os=sysv32 + ;; + i*86v4*) +- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` +- os=-sysv4 ++ cpu=`echo "$1" | sed -e 's/86.*/86/'` ++ vendor=pc ++ os=sysv4 + ;; + i*86v) +- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` +- os=-sysv ++ cpu=`echo "$1" | sed -e 's/86.*/86/'` ++ vendor=pc ++ os=sysv + ;; + i*86sol2) +- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` +- os=-solaris2 +- ;; +- i386mach) +- basic_machine=i386-mach +- os=-mach +- ;; +- i386-vsta | vsta) +- basic_machine=i386-unknown +- os=-vsta ++ cpu=`echo "$1" | sed -e 's/86.*/86/'` ++ vendor=pc ++ os=solaris2 ++ ;; ++ j90 | j90-cray) ++ cpu=j90 ++ vendor=cray ++ os=${os:-unicos} + ;; + iris | iris4d) +- basic_machine=mips-sgi ++ cpu=mips ++ vendor=sgi + case $os in +- -irix*) ++ irix*) + ;; + *) +- os=-irix4 ++ os=irix4 + ;; + esac + ;; +- isi68 | isi) +- basic_machine=m68k-isi +- os=-sysv +- ;; +- m68knommu) +- basic_machine=m68k-unknown +- os=-linux +- ;; +- m68knommu-*) +- basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` +- os=-linux +- ;; +- m88k-omron*) +- basic_machine=m88k-omron +- ;; +- magnum | m3230) +- basic_machine=mips-mips +- os=-sysv +- ;; +- merlin) +- basic_machine=ns32k-utek +- os=-sysv +- ;; +- microblaze) +- basic_machine=microblaze-xilinx +- ;; +- mingw32) +- basic_machine=i386-pc +- os=-mingw32 +- ;; +- mingw32ce) +- basic_machine=arm-unknown +- os=-mingw32ce +- ;; + miniframe) +- basic_machine=m68000-convergent +- ;; +- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) +- basic_machine=m68k-atari +- os=-mint ++ cpu=m68000 ++ vendor=convergent + ;; +- mips3*-*) +- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` +- ;; +- mips3*) +- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown +- ;; +- monitor) +- basic_machine=m68k-rom68k +- os=-coff +- ;; +- morphos) +- basic_machine=powerpc-unknown +- os=-morphos +- ;; +- msdos) +- basic_machine=i386-pc +- os=-msdos +- ;; +- ms1-*) +- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` +- ;; +- mvs) +- basic_machine=i370-ibm +- os=-mvs +- ;; +- ncr3000) +- basic_machine=i486-ncr +- os=-sysv4 +- ;; +- netbsd386) +- basic_machine=i386-unknown +- os=-netbsd +- ;; +- netwinder) +- basic_machine=armv4l-rebel +- os=-linux +- ;; +- news | news700 | news800 | news900) +- basic_machine=m68k-sony +- os=-newsos +- ;; +- news1000) +- basic_machine=m68030-sony +- os=-newsos ++ *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) ++ cpu=m68k ++ vendor=atari ++ os=mint + ;; + news-3600 | risc-news) +- basic_machine=mips-sony +- os=-newsos +- ;; +- necv70) +- basic_machine=v70-nec +- os=-sysv +- ;; +- next | m*-next ) +- basic_machine=m68k-next ++ cpu=mips ++ vendor=sony ++ os=newsos ++ ;; ++ next | m*-next) ++ cpu=m68k ++ vendor=next + case $os in +- -nextstep* ) ++ openstep*) ++ ;; ++ nextstep*) + ;; +- -ns2*) +- os=-nextstep2 ++ ns2*) ++ os=nextstep2 + ;; + *) +- os=-nextstep3 ++ os=nextstep3 + ;; + esac + ;; +- nh3000) +- basic_machine=m68k-harris +- os=-cxux +- ;; +- nh[45]000) +- basic_machine=m88k-harris +- os=-cxux +- ;; +- nindy960) +- basic_machine=i960-intel +- os=-nindy +- ;; +- mon960) +- basic_machine=i960-intel +- os=-mon960 +- ;; +- nonstopux) +- basic_machine=mips-compaq +- os=-nonstopux +- ;; + np1) +- basic_machine=np1-gould +- ;; +- nsr-tandem) +- basic_machine=nsr-tandem ++ cpu=np1 ++ vendor=gould + ;; + op50n-* | op60c-*) +- basic_machine=hppa1.1-oki +- os=-proelf +- ;; +- openrisc | openrisc-*) +- basic_machine=or32-unknown +- ;; +- os400) +- basic_machine=powerpc-ibm +- os=-os400 +- ;; +- OSE68000 | ose68000) +- basic_machine=m68000-ericsson +- os=-ose +- ;; +- os68k) +- basic_machine=m68k-none +- os=-os68k ++ cpu=hppa1.1 ++ vendor=oki ++ os=proelf + ;; + pa-hitachi) +- basic_machine=hppa1.1-hitachi +- os=-hiuxwe2 +- ;; +- paragon) +- basic_machine=i860-intel +- os=-osf +- ;; +- parisc) +- basic_machine=hppa-unknown +- os=-linux +- ;; +- parisc-*) +- basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` +- os=-linux ++ cpu=hppa1.1 ++ vendor=hitachi ++ os=hiuxwe2 + ;; + pbd) +- basic_machine=sparc-tti ++ cpu=sparc ++ vendor=tti + ;; + pbb) +- basic_machine=m68k-tti +- ;; +- pc532 | pc532-*) +- basic_machine=ns32k-pc532 +- ;; +- pc98) +- basic_machine=i386-pc +- ;; +- pc98-*) +- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ++ cpu=m68k ++ vendor=tti + ;; +- pentium | p5 | k5 | k6 | nexgen | viac3) +- basic_machine=i586-pc +- ;; +- pentiumpro | p6 | 6x86 | athlon | athlon_*) +- basic_machine=i686-pc +- ;; +- pentiumii | pentium2 | pentiumiii | pentium3) +- basic_machine=i686-pc +- ;; +- pentium4) +- basic_machine=i786-pc +- ;; +- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) +- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- pentiumpro-* | p6-* | 6x86-* | athlon-*) +- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) +- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- pentium4-*) +- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ++ pc532) ++ cpu=ns32k ++ vendor=pc532 + ;; + pn) +- basic_machine=pn-gould +- ;; +- power) basic_machine=power-ibm +- ;; +- ppc) basic_machine=powerpc-unknown +- ;; +- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- ppcle | powerpclittle | ppc-le | powerpc-little) +- basic_machine=powerpcle-unknown ++ cpu=pn ++ vendor=gould + ;; +- ppcle-* | powerpclittle-*) +- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- ppc64) basic_machine=powerpc64-unknown +- ;; +- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; +- ppc64le | powerpc64little | ppc64-le | powerpc64-little) +- basic_machine=powerpc64le-unknown +- ;; +- ppc64le-* | powerpc64little-*) +- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ++ power) ++ cpu=power ++ vendor=ibm + ;; + ps2) +- basic_machine=i386-ibm +- ;; +- pw32) +- basic_machine=i586-unknown +- os=-pw32 +- ;; +- rdos) +- basic_machine=i386-pc +- os=-rdos +- ;; +- rom68k) +- basic_machine=m68k-rom68k +- os=-coff ++ cpu=i386 ++ vendor=ibm + ;; + rm[46]00) +- basic_machine=mips-siemens ++ cpu=mips ++ vendor=siemens + ;; + rtpc | rtpc-*) +- basic_machine=romp-ibm ++ cpu=romp ++ vendor=ibm + ;; +- s390 | s390-*) +- basic_machine=s390-ibm ++ sde) ++ cpu=mipsisa32 ++ vendor=sde ++ os=${os:-elf} ++ ;; ++ simso-wrs) ++ cpu=sparclite ++ vendor=wrs ++ os=vxworks + ;; +- s390x | s390x-*) +- basic_machine=s390x-ibm ++ tower | tower-32) ++ cpu=m68k ++ vendor=ncr + ;; +- sa29200) +- basic_machine=a29k-amd +- os=-udi ++ vpp*|vx|vx-*) ++ cpu=f301 ++ vendor=fujitsu + ;; +- sb1) +- basic_machine=mipsisa64sb1-unknown ++ w65) ++ cpu=w65 ++ vendor=wdc + ;; +- sb1el) +- basic_machine=mipsisa64sb1el-unknown ++ w89k-*) ++ cpu=hppa1.1 ++ vendor=winbond ++ os=proelf + ;; +- sde) +- basic_machine=mipsisa32-sde +- os=-elf ++ none) ++ cpu=none ++ vendor=none + ;; +- sei) +- basic_machine=mips-sei +- os=-seiux ++ leon|leon[3-9]) ++ cpu=sparc ++ vendor=$basic_machine ++ ;; ++ leon-*|leon[3-9]-*) ++ cpu=sparc ++ vendor=`echo "$basic_machine" | sed 's/-.*//'` ++ ;; ++ ++ *-*) ++ # shellcheck disable=SC2162 ++ IFS="-" read cpu vendor <&2 +- exit 1 ++ # Recognize the canonical CPU types that are allowed with any ++ # company name. ++ case $cpu in ++ 1750a | 580 \ ++ | a29k \ ++ | aarch64 | aarch64_be \ ++ | abacus \ ++ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ ++ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ ++ | alphapca5[67] | alpha64pca5[67] \ ++ | am33_2.0 \ ++ | amdgcn \ ++ | arc | arceb \ ++ | arm | arm[lb]e | arme[lb] | armv* \ ++ | avr | avr32 \ ++ | asmjs \ ++ | ba \ ++ | be32 | be64 \ ++ | bfin | bpf | bs2000 \ ++ | c[123]* | c30 | [cjt]90 | c4x \ ++ | c8051 | clipper | craynv | csky | cydra \ ++ | d10v | d30v | dlx | dsp16xx \ ++ | e2k | elxsi | epiphany \ ++ | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ ++ | h8300 | h8500 \ ++ | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ ++ | hexagon \ ++ | i370 | i*86 | i860 | i960 | ia16 | ia64 \ ++ | ip2k | iq2000 \ ++ | k1om \ ++ | le32 | le64 \ ++ | lm32 \ ++ | m32c | m32r | m32rle \ ++ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ ++ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ ++ | m88110 | m88k | maxq | mb | mcore | mep | metag \ ++ | microblaze | microblazeel \ ++ | mips | mipsbe | mipseb | mipsel | mipsle \ ++ | mips16 \ ++ | mips64 | mips64eb | mips64el \ ++ | mips64octeon | mips64octeonel \ ++ | mips64orion | mips64orionel \ ++ | mips64r5900 | mips64r5900el \ ++ | mips64vr | mips64vrel \ ++ | mips64vr4100 | mips64vr4100el \ ++ | mips64vr4300 | mips64vr4300el \ ++ | mips64vr5000 | mips64vr5000el \ ++ | mips64vr5900 | mips64vr5900el \ ++ | mipsisa32 | mipsisa32el \ ++ | mipsisa32r2 | mipsisa32r2el \ ++ | mipsisa32r6 | mipsisa32r6el \ ++ | mipsisa64 | mipsisa64el \ ++ | mipsisa64r2 | mipsisa64r2el \ ++ | mipsisa64r6 | mipsisa64r6el \ ++ | mipsisa64sb1 | mipsisa64sb1el \ ++ | mipsisa64sr71k | mipsisa64sr71kel \ ++ | mipsr5900 | mipsr5900el \ ++ | mipstx39 | mipstx39el \ ++ | mmix \ ++ | mn10200 | mn10300 \ ++ | moxie \ ++ | mt \ ++ | msp430 \ ++ | nds32 | nds32le | nds32be \ ++ | nfp \ ++ | nios | nios2 | nios2eb | nios2el \ ++ | none | np1 | ns16k | ns32k | nvptx \ ++ | open8 \ ++ | or1k* \ ++ | or32 \ ++ | orion \ ++ | picochip \ ++ | pdp10 | pdp11 | pj | pjl | pn | power \ ++ | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ ++ | pru \ ++ | pyramid \ ++ | riscv | riscv32 | riscv64 \ ++ | rl78 | romp | rs6000 | rx \ ++ | score \ ++ | sh | shl \ ++ | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ ++ | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ ++ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ ++ | sparclite \ ++ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ ++ | spu \ ++ | tahoe \ ++ | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ ++ | tron \ ++ | ubicom32 \ ++ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ ++ | vax \ ++ | visium \ ++ | w65 \ ++ | wasm32 | wasm64 \ ++ | we32k \ ++ | x86 | x86_64 | xc16x | xgate | xps100 \ ++ | xstormy16 | xtensa* \ ++ | ymp \ ++ | z8k | z80) ++ ;; ++ ++ *) ++ echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 ++ exit 1 ++ ;; ++ esac + ;; + esac + + # Here we canonicalize certain aliases for manufacturers. +-case $basic_machine in +- *-digital*) +- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ++case $vendor in ++ digital*) ++ vendor=dec + ;; +- *-commodore*) +- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ++ commodore*) ++ vendor=cbm + ;; + *) + ;; +@@ -1248,194 +1275,244 @@ + + # Decode manufacturer-specific aliases for certain operating systems. + +-if [ x"$os" != x"" ] ++if [ x$os != x ] + then + case $os in +- # First match some system type aliases +- # that might get confused with valid system types. +- # -solaris* is a basic system type, with this one exception. +- -solaris1 | -solaris1.*) +- os=`echo $os | sed -e 's|solaris1|sunos4|'` ++ # First match some system type aliases that might get confused ++ # with valid system types. ++ # solaris* is a basic system type, with this one exception. ++ auroraux) ++ os=auroraux + ;; +- -solaris) +- os=-solaris2 ++ bluegene*) ++ os=cnk + ;; +- -svr4*) +- os=-sysv4 ++ solaris1 | solaris1.*) ++ os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; +- -unixware*) +- os=-sysv4.2uw ++ solaris) ++ os=solaris2 + ;; +- -gnu/linux*) ++ unixware*) ++ os=sysv4.2uw ++ ;; ++ gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; +- # First accept the basic system types. ++ # es1800 is here to avoid being matched by es* (a different OS) ++ es1800*) ++ os=ose ++ ;; ++ # Some version numbers need modification ++ chorusos*) ++ os=chorusos ++ ;; ++ isc) ++ os=isc2.2 ++ ;; ++ sco6) ++ os=sco5v6 ++ ;; ++ sco5) ++ os=sco3.2v5 ++ ;; ++ sco4) ++ os=sco3.2v4 ++ ;; ++ sco3.2.[4-9]*) ++ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` ++ ;; ++ sco3.2v[4-9]* | sco5v6*) ++ # Don't forget version if it is 3.2v4 or newer. ++ ;; ++ scout) ++ # Don't match below ++ ;; ++ sco*) ++ os=sco3.2v2 ++ ;; ++ psos*) ++ os=psos ++ ;; ++ # Now accept the basic system types. + # The portable systems comes first. +- # Each alternative MUST END IN A *, to match a version number. +- # -sysv* is not here because it comes later, after sysvr4. +- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ +- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ +- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ +- | -kopensolaris* \ +- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ +- | -aos* | -aros* \ +- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ +- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ +- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ +- | -openbsd* | -solidbsd* \ +- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ +- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ +- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ +- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ +- | -chorusos* | -chorusrdb* | -cegcc* \ +- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ +- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ +- | -uxpv* | -beos* | -mpeix* | -udk* \ +- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ +- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ +- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ +- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ +- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ +- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ +- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) ++ # Each alternative MUST end in a * to match a version number. ++ # sysv* is not here because it comes later, after sysvr4. ++ gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ ++ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\ ++ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ ++ | sym* | kopensolaris* | plan9* \ ++ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ ++ | aos* | aros* | cloudabi* | sortix* | twizzler* \ ++ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ ++ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ ++ | knetbsd* | mirbsd* | netbsd* \ ++ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \ ++ | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \ ++ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ ++ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ ++ | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \ ++ | chorusrdb* | cegcc* | glidix* \ ++ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ ++ | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \ ++ | linux-newlib* | linux-musl* | linux-uclibc* \ ++ | uxpv* | beos* | mpeix* | udk* | moxiebox* \ ++ | interix* | uwin* | mks* | rhapsody* | darwin* \ ++ | openstep* | oskit* | conix* | pw32* | nonstopux* \ ++ | storm-chaos* | tops10* | tenex* | tops20* | its* \ ++ | os2* | vos* | palmos* | uclinux* | nucleus* \ ++ | morphos* | superux* | rtmk* | windiss* \ ++ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ ++ | skyos* | haiku* | rdos* | toppers* | drops* | es* \ ++ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ ++ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ ++ | nsk* | powerunix) + # Remember, each alternative MUST END IN *, to match a version number. + ;; +- -qnx*) +- case $basic_machine in +- x86-* | i*86-*) ++ qnx*) ++ case $cpu in ++ x86 | i*86) + ;; + *) +- os=-nto$os ++ os=nto-$os + ;; + esac + ;; +- -nto-qnx*) ++ hiux*) ++ os=hiuxwe2 + ;; +- -nto*) +- os=`echo $os | sed -e 's|nto|nto-qnx|'` ++ nto-qnx*) + ;; +- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ +- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ +- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ++ nto*) ++ os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; +- -mac*) +- os=`echo $os | sed -e 's|mac|macos|'` ++ sim | xray | os68k* | v88r* \ ++ | windows* | osx | abug | netware* | os9* \ ++ | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) + ;; +- -linux-dietlibc) +- os=-linux-dietlibc ++ linux-dietlibc) ++ os=linux-dietlibc + ;; +- -linux*) ++ linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; +- -sunos5*) +- os=`echo $os | sed -e 's|sunos5|solaris2|'` ++ lynx*178) ++ os=lynxos178 ++ ;; ++ lynx*5) ++ os=lynxos5 + ;; +- -sunos6*) +- os=`echo $os | sed -e 's|sunos6|solaris3|'` ++ lynx*) ++ os=lynxos + ;; +- -opened*) +- os=-openedition ++ mac*) ++ os=`echo "$os" | sed -e 's|mac|macos|'` + ;; +- -os400*) +- os=-os400 ++ opened*) ++ os=openedition + ;; +- -wince*) +- os=-wince ++ os400*) ++ os=os400 + ;; +- -osfrose*) +- os=-osfrose ++ sunos5*) ++ os=`echo "$os" | sed -e 's|sunos5|solaris2|'` + ;; +- -osf*) +- os=-osf ++ sunos6*) ++ os=`echo "$os" | sed -e 's|sunos6|solaris3|'` + ;; +- -utek*) +- os=-bsd ++ wince*) ++ os=wince + ;; +- -dynix*) +- os=-bsd ++ utek*) ++ os=bsd + ;; +- -acis*) +- os=-aos ++ dynix*) ++ os=bsd + ;; +- -atheos*) +- os=-atheos ++ acis*) ++ os=aos + ;; +- -syllable*) +- os=-syllable ++ atheos*) ++ os=atheos + ;; +- -386bsd) +- os=-bsd ++ syllable*) ++ os=syllable + ;; +- -ctix* | -uts*) +- os=-sysv ++ 386bsd) ++ os=bsd + ;; +- -nova*) +- os=-rtmk-nova ++ ctix* | uts*) ++ os=sysv + ;; +- -ns2 ) +- os=-nextstep2 ++ nova*) ++ os=rtmk-nova + ;; +- -nsk*) +- os=-nsk ++ ns2) ++ os=nextstep2 + ;; + # Preserve the version number of sinix5. +- -sinix5.*) ++ sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; +- -sinix*) +- os=-sysv4 ++ sinix*) ++ os=sysv4 + ;; +- -tpf*) +- os=-tpf ++ tpf*) ++ os=tpf + ;; +- -triton*) +- os=-sysv3 ++ triton*) ++ os=sysv3 + ;; +- -oss*) +- os=-sysv3 ++ oss*) ++ os=sysv3 + ;; +- -svr4) +- os=-sysv4 ++ svr4*) ++ os=sysv4 + ;; +- -svr3) +- os=-sysv3 ++ svr3) ++ os=sysv3 + ;; +- -sysvr4) +- os=-sysv4 ++ sysvr4) ++ os=sysv4 + ;; +- # This must come after -sysvr4. +- -sysv*) ++ # This must come after sysvr4. ++ sysv*) + ;; +- -ose*) +- os=-ose ++ ose*) ++ os=ose + ;; +- -es1800*) +- os=-ose ++ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) ++ os=mint + ;; +- -xenix) +- os=-xenix ++ zvmoe) ++ os=zvmoe + ;; +- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) +- os=-mint ++ dicos*) ++ os=dicos + ;; +- -aros*) +- os=-aros ++ pikeos*) ++ # Until real need of OS specific support for ++ # particular features comes up, bare metal ++ # configurations are quite functional. ++ case $cpu in ++ arm*) ++ os=eabi ++ ;; ++ *) ++ os=elf ++ ;; ++ esac + ;; +- -kaos*) +- os=-kaos ++ nacl*) + ;; +- -zvmoe) +- os=-zvmoe ++ ios) + ;; +- -dicos*) +- os=-dicos ++ none) + ;; +- -none) ++ *-eabi) + ;; + *) +- # Get rid of the `-' at the beginning of $os. +- os=`echo $os | sed 's/[^-]*-//'` +- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 ++ echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 + exit 1 + ;; + esac +@@ -1451,249 +1528,265 @@ + # will signal an error saying that MANUFACTURER isn't an operating + # system, and we'll never get to this point. + +-case $basic_machine in +- score-*) +- os=-elf ++case $cpu-$vendor in ++ score-*) ++ os=elf + ;; +- spu-*) +- os=-elf ++ spu-*) ++ os=elf + ;; + *-acorn) +- os=-riscix1.2 ++ os=riscix1.2 + ;; + arm*-rebel) +- os=-linux ++ os=linux + ;; + arm*-semi) +- os=-aout ++ os=aout + ;; +- c4x-* | tic4x-*) +- os=-coff ++ c4x-* | tic4x-*) ++ os=coff ++ ;; ++ c8051-*) ++ os=elf ++ ;; ++ clipper-intergraph) ++ os=clix ++ ;; ++ hexagon-*) ++ os=elf ++ ;; ++ tic54x-*) ++ os=coff ++ ;; ++ tic55x-*) ++ os=coff ++ ;; ++ tic6x-*) ++ os=coff + ;; + # This must come before the *-dec entry. + pdp10-*) +- os=-tops20 ++ os=tops20 + ;; + pdp11-*) +- os=-none ++ os=none + ;; + *-dec | vax-*) +- os=-ultrix4.2 ++ os=ultrix4.2 + ;; + m68*-apollo) +- os=-domain ++ os=domain + ;; + i386-sun) +- os=-sunos4.0.2 ++ os=sunos4.0.2 + ;; + m68000-sun) +- os=-sunos3 +- # This also exists in the configure program, but was not the +- # default. +- # os=-sunos4 ++ os=sunos3 + ;; + m68*-cisco) +- os=-aout ++ os=aout + ;; +- mep-*) +- os=-elf ++ mep-*) ++ os=elf + ;; + mips*-cisco) +- os=-elf ++ os=elf + ;; + mips*-*) +- os=-elf ++ os=elf + ;; + or32-*) +- os=-coff ++ os=coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. +- os=-sysv3 ++ os=sysv3 + ;; + sparc-* | *-sun) +- os=-sunos4.1.1 ++ os=sunos4.1.1 + ;; +- *-be) +- os=-beos ++ pru-*) ++ os=elf + ;; +- *-haiku) +- os=-haiku ++ *-be) ++ os=beos + ;; + *-ibm) +- os=-aix ++ os=aix + ;; +- *-knuth) +- os=-mmixware ++ *-knuth) ++ os=mmixware + ;; + *-wec) +- os=-proelf ++ os=proelf + ;; + *-winbond) +- os=-proelf ++ os=proelf + ;; + *-oki) +- os=-proelf ++ os=proelf + ;; + *-hp) +- os=-hpux ++ os=hpux + ;; + *-hitachi) +- os=-hiux ++ os=hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) +- os=-sysv ++ os=sysv + ;; + *-cbm) +- os=-amigaos ++ os=amigaos + ;; + *-dg) +- os=-dgux ++ os=dgux + ;; + *-dolphin) +- os=-sysv3 ++ os=sysv3 + ;; + m68k-ccur) +- os=-rtu ++ os=rtu + ;; + m88k-omron*) +- os=-luna ++ os=luna + ;; +- *-next ) +- os=-nextstep ++ *-next) ++ os=nextstep + ;; + *-sequent) +- os=-ptx ++ os=ptx + ;; + *-crds) +- os=-unos ++ os=unos + ;; + *-ns) +- os=-genix ++ os=genix + ;; + i370-*) +- os=-mvs +- ;; +- *-next) +- os=-nextstep3 ++ os=mvs + ;; + *-gould) +- os=-sysv ++ os=sysv + ;; + *-highlevel) +- os=-bsd ++ os=bsd + ;; + *-encore) +- os=-bsd ++ os=bsd + ;; + *-sgi) +- os=-irix ++ os=irix + ;; + *-siemens) +- os=-sysv4 ++ os=sysv4 + ;; + *-masscomp) +- os=-rtu ++ os=rtu + ;; + f30[01]-fujitsu | f700-fujitsu) +- os=-uxpv ++ os=uxpv + ;; + *-rom68k) +- os=-coff ++ os=coff + ;; + *-*bug) +- os=-coff ++ os=coff + ;; + *-apple) +- os=-macos ++ os=macos + ;; + *-atari*) +- os=-mint ++ os=mint ++ ;; ++ *-wrs) ++ os=vxworks + ;; + *) +- os=-none ++ os=none + ;; + esac + fi + + # Here we handle the case where we know the os, and the CPU type, but not the + # manufacturer. We pick the logical manufacturer. +-vendor=unknown +-case $basic_machine in +- *-unknown) ++case $vendor in ++ unknown) + case $os in +- -riscix*) ++ riscix*) + vendor=acorn + ;; +- -sunos*) ++ sunos*) + vendor=sun + ;; +- -cnk*|-aix*) ++ cnk*|-aix*) + vendor=ibm + ;; +- -beos*) ++ beos*) + vendor=be + ;; +- -hpux*) ++ hpux*) + vendor=hp + ;; +- -mpeix*) ++ mpeix*) + vendor=hp + ;; +- -hiux*) ++ hiux*) + vendor=hitachi + ;; +- -unos*) ++ unos*) + vendor=crds + ;; +- -dgux*) ++ dgux*) + vendor=dg + ;; +- -luna*) ++ luna*) + vendor=omron + ;; +- -genix*) ++ genix*) + vendor=ns + ;; +- -mvs* | -opened*) ++ clix*) ++ vendor=intergraph ++ ;; ++ mvs* | opened*) + vendor=ibm + ;; +- -os400*) ++ os400*) + vendor=ibm + ;; +- -ptx*) ++ ptx*) + vendor=sequent + ;; +- -tpf*) ++ tpf*) + vendor=ibm + ;; +- -vxsim* | -vxworks* | -windiss*) ++ vxsim* | vxworks* | windiss*) + vendor=wrs + ;; +- -aux*) ++ aux*) + vendor=apple + ;; +- -hms*) ++ hms*) + vendor=hitachi + ;; +- -mpw* | -macos*) ++ mpw* | macos*) + vendor=apple + ;; +- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) ++ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + vendor=atari + ;; +- -vos*) ++ vos*) + vendor=stratus + ;; + esac +- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; + esac + +-echo $basic_machine$os ++echo "$cpu-$vendor-$os" + exit + + # Local variables: +-# eval: (add-hook 'write-file-hooks 'time-stamp) ++# eval: (add-hook 'before-save-hook 'time-stamp) + # time-stamp-start: "timestamp='" + # time-stamp-format: "%:y-%02m-%02d" + # time-stamp-end: "'" diff --git a/sdl/default/patches-enabled/0000-SDL-1.2.10-GrabNotViewable.patch b/sdl/default/patches-enabled/0000-SDL-1.2.10-GrabNotViewable.patch new file mode 120000 index 0000000..22439c5 --- /dev/null +++ b/sdl/default/patches-enabled/0000-SDL-1.2.10-GrabNotViewable.patch @@ -0,0 +1 @@ +../patches-available/0000-SDL-1.2.10-GrabNotViewable.patch \ No newline at end of file diff --git a/sdl/default/patches-enabled/0100-SDL-1.2.15-const_XData32.patch b/sdl/default/patches-enabled/0100-SDL-1.2.15-const_XData32.patch new file mode 120000 index 0000000..ba20add --- /dev/null +++ b/sdl/default/patches-enabled/0100-SDL-1.2.15-const_XData32.patch @@ -0,0 +1 @@ +../patches-available/0100-SDL-1.2.15-const_XData32.patch \ No newline at end of file diff --git a/sdl/default/patches-enabled/0200-CVE-2019-7574.patch b/sdl/default/patches-enabled/0200-CVE-2019-7574.patch new file mode 120000 index 0000000..eedbf29 --- /dev/null +++ b/sdl/default/patches-enabled/0200-CVE-2019-7574.patch @@ -0,0 +1 @@ +../patches-available/0200-CVE-2019-7574.patch \ No newline at end of file diff --git a/sdl/default/patches-enabled/0300-CVE-2019-7572.patch b/sdl/default/patches-enabled/0300-CVE-2019-7572.patch new file mode 120000 index 0000000..9f7eaf8 --- /dev/null +++ b/sdl/default/patches-enabled/0300-CVE-2019-7572.patch @@ -0,0 +1 @@ +../patches-available/0300-CVE-2019-7572.patch \ No newline at end of file diff --git a/sdl/default/patches-enabled/0400-CVE-2019-7572.patch b/sdl/default/patches-enabled/0400-CVE-2019-7572.patch new file mode 120000 index 0000000..50f36dc --- /dev/null +++ b/sdl/default/patches-enabled/0400-CVE-2019-7572.patch @@ -0,0 +1 @@ +../patches-available/0400-CVE-2019-7572.patch \ No newline at end of file diff --git a/sdl/default/patches-enabled/0500-CVE-2019-7573.patch b/sdl/default/patches-enabled/0500-CVE-2019-7573.patch new file mode 120000 index 0000000..2308a5e --- /dev/null +++ b/sdl/default/patches-enabled/0500-CVE-2019-7573.patch @@ -0,0 +1 @@ +../patches-available/0500-CVE-2019-7573.patch \ No newline at end of file diff --git a/sdl/default/patches-enabled/0600-CVE-2019-7577.patch b/sdl/default/patches-enabled/0600-CVE-2019-7577.patch new file mode 120000 index 0000000..f142186 --- /dev/null +++ b/sdl/default/patches-enabled/0600-CVE-2019-7577.patch @@ -0,0 +1 @@ +../patches-available/0600-CVE-2019-7577.patch \ No newline at end of file diff --git a/sdl/default/patches-enabled/0700-CVE-2019-7577.patch b/sdl/default/patches-enabled/0700-CVE-2019-7577.patch new file mode 120000 index 0000000..bebc404 --- /dev/null +++ b/sdl/default/patches-enabled/0700-CVE-2019-7577.patch @@ -0,0 +1 @@ +../patches-available/0700-CVE-2019-7577.patch \ No newline at end of file diff --git a/sdl/default/patches-enabled/0800-CVE-2019-7575.patch b/sdl/default/patches-enabled/0800-CVE-2019-7575.patch new file mode 120000 index 0000000..9b1cc33 --- /dev/null +++ b/sdl/default/patches-enabled/0800-CVE-2019-7575.patch @@ -0,0 +1 @@ +../patches-available/0800-CVE-2019-7575.patch \ No newline at end of file diff --git a/sdl/default/patches-enabled/0900-CVE-2019-7578.patch b/sdl/default/patches-enabled/0900-CVE-2019-7578.patch new file mode 120000 index 0000000..706f24b --- /dev/null +++ b/sdl/default/patches-enabled/0900-CVE-2019-7578.patch @@ -0,0 +1 @@ +../patches-available/0900-CVE-2019-7578.patch \ No newline at end of file diff --git a/sdl/default/patches-enabled/1000-CVE-2019-7635.patch b/sdl/default/patches-enabled/1000-CVE-2019-7635.patch new file mode 120000 index 0000000..bd338e7 --- /dev/null +++ b/sdl/default/patches-enabled/1000-CVE-2019-7635.patch @@ -0,0 +1 @@ +../patches-available/1000-CVE-2019-7635.patch \ No newline at end of file diff --git a/sdl/default/patches-enabled/1100-CVE-2019-7635.patch b/sdl/default/patches-enabled/1100-CVE-2019-7635.patch new file mode 120000 index 0000000..7d2bedc --- /dev/null +++ b/sdl/default/patches-enabled/1100-CVE-2019-7635.patch @@ -0,0 +1 @@ +../patches-available/1100-CVE-2019-7635.patch \ No newline at end of file diff --git a/sdl/default/patches-enabled/1200-CVE-2019-7636.patch b/sdl/default/patches-enabled/1200-CVE-2019-7636.patch new file mode 120000 index 0000000..b706b05 --- /dev/null +++ b/sdl/default/patches-enabled/1200-CVE-2019-7636.patch @@ -0,0 +1 @@ +../patches-available/1200-CVE-2019-7636.patch \ No newline at end of file diff --git a/sdl/default/patches-enabled/1300-CVE-2019-7637.patch b/sdl/default/patches-enabled/1300-CVE-2019-7637.patch new file mode 120000 index 0000000..5e4c83d --- /dev/null +++ b/sdl/default/patches-enabled/1300-CVE-2019-7637.patch @@ -0,0 +1 @@ +../patches-available/1300-CVE-2019-7637.patch \ No newline at end of file diff --git a/sdl/default/patches-enabled/1400-CVE-2019-7637.patch b/sdl/default/patches-enabled/1400-CVE-2019-7637.patch new file mode 120000 index 0000000..92cc30e --- /dev/null +++ b/sdl/default/patches-enabled/1400-CVE-2019-7637.patch @@ -0,0 +1 @@ +../patches-available/1400-CVE-2019-7637.patch \ No newline at end of file diff --git a/sdl/default/patches-enabled/1500-CVE-2019-13616.patch b/sdl/default/patches-enabled/1500-CVE-2019-13616.patch new file mode 120000 index 0000000..bcbeecf --- /dev/null +++ b/sdl/default/patches-enabled/1500-CVE-2019-13616.patch @@ -0,0 +1 @@ +../patches-available/1500-CVE-2019-13616.patch \ No newline at end of file diff --git a/sdl/default/patches-enabled/1600-config-sub.patch b/sdl/default/patches-enabled/1600-config-sub.patch new file mode 120000 index 0000000..d95df0b --- /dev/null +++ b/sdl/default/patches-enabled/1600-config-sub.patch @@ -0,0 +1 @@ +../patches-available/1600-config-sub.patch \ No newline at end of file diff --git a/shared-mime-info/default/conf.sh b/shared-mime-info/default/conf.sh new file mode 100755 index 0000000..bb3314d --- /dev/null +++ b/shared-mime-info/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration to be done." diff --git a/shared-mime-info/default/deps b/shared-mime-info/default/deps new file mode 100644 index 0000000..605ecfb --- /dev/null +++ b/shared-mime-info/default/deps @@ -0,0 +1,38 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +zlib +xz +file +pkgconf +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +glib +gettext +itstool +libxml2 +libxslt +getopt +bash +curl +xmlto +perl-dynamic +perl-yaml-syck +perl-test-pod +docbook-xml +docbook-xsl diff --git a/shared-mime-info/default/inst.sh b/shared-mime-info/default/inst.sh new file mode 100755 index 0000000..5013ba7 --- /dev/null +++ b/shared-mime-info/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build install diff --git a/shared-mime-info/default/make.sh b/shared-mime-info/default/make.sh new file mode 100755 index 0000000..6ccba0e --- /dev/null +++ b/shared-mime-info/default/make.sh @@ -0,0 +1,6 @@ +#!/bin/sh -e + +#CFLAGS="$SHARED_CFLAGS" \ +#CXXFLAGS="$SHARED_CXXFLAGS" \ +#LDFLAGS="$SHARED_LDFLAGS" \ +meson -Dupdate_mimedb=false -Ddefault_library=static -Dprefix=$PREFIX ../build diff --git a/shared-mime-info/default/meson.build b/shared-mime-info/default/meson.build new file mode 100644 index 0000000..406cc9b --- /dev/null +++ b/shared-mime-info/default/meson.build @@ -0,0 +1,42 @@ + +install_man('update-mime-database.1') + +freedesktop_org_xml = custom_target('freedesktop.org.xml', + input : files( + 'freedesktop.org.xml.in', + 'its/shared-mime-info.its', + 'its/shared-mime-info.loc', + ), + output: 'freedesktop.org.xml', + command: [ + find_program('freedesktop_generate.sh'), + meson.source_root(), + meson.build_root() + ], + install: true, + install_dir: get_option('datadir') / 'mime' / 'packages', +) + +install_data( + [ 'its/shared-mime-info.loc', 'its/shared-mime-info.its', ], + install_dir : get_option('datadir') / 'gettext/its' +) + +custom_target('shared-mime-info-spec-html', + input : 'shared-mime-info-spec.xml', + output: 'shared-mime-info-spec-html', + command: [ + xmlto, + '--skip-validation', + '-o', '@OUTPUT@', + 'html-nochunks', + '@INPUT@', + ], + build_by_default: true, +) + +pkgconfig.generate( + name: 'shared-mime-info', + description: 'Freedesktop common MIME database', + version: meson.project_version(), +) diff --git a/shared-mime-info/default/patches-available/0100-use-samurai-instead-of-ninja.patch b/shared-mime-info/default/patches-available/0100-use-samurai-instead-of-ninja.patch new file mode 100644 index 0000000..e6ca4df --- /dev/null +++ b/shared-mime-info/default/patches-available/0100-use-samurai-instead-of-ninja.patch @@ -0,0 +1,11 @@ +--- a/data/freedesktop_generate.sh 2020-05-06 14:11:14.039909000 +0000 ++++ b/data/freedesktop_generate.sh 2020-10-11 03:33:07.860000000 +0000 +@@ -3,7 +3,7 @@ + src_root="$1" + build_root="$2" + +-ninja -C "${build_root}" shared-mime-info-gmo ++samu -C "${build_root}" shared-mime-info-gmo + + itstool \ + --its "${src_root}/data/its/shared-mime-info.its" \ diff --git a/shared-mime-info/default/patches-available/0200-xmlto-skip-validation.patch b/shared-mime-info/default/patches-available/0200-xmlto-skip-validation.patch new file mode 100644 index 0000000..be86912 --- /dev/null +++ b/shared-mime-info/default/patches-available/0200-xmlto-skip-validation.patch @@ -0,0 +1,10 @@ +--- a/data/meson.build 2020-10-11 19:09:20.990000000 +0000 ++++ b/data/meson.build 2020-10-11 19:09:13.540000000 +0000 +@@ -27,6 +27,7 @@ + output: 'shared-mime-info-spec-html', + command: [ + xmlto, ++ '--skip-validation', + '-o', '@OUTPUT@', + 'html-nochunks', + '@INPUT@', diff --git a/shared-mime-info/default/patches-enabled/0100-use-samurai-instead-of-ninja.patch b/shared-mime-info/default/patches-enabled/0100-use-samurai-instead-of-ninja.patch new file mode 120000 index 0000000..e6991ac --- /dev/null +++ b/shared-mime-info/default/patches-enabled/0100-use-samurai-instead-of-ninja.patch @@ -0,0 +1 @@ +../patches-available/0100-use-samurai-instead-of-ninja.patch \ No newline at end of file diff --git a/shared-mime-info/default/patches-enabled/0200-xmlto-skip-validation.patch b/shared-mime-info/default/patches-enabled/0200-xmlto-skip-validation.patch new file mode 120000 index 0000000..f5af76c --- /dev/null +++ b/shared-mime-info/default/patches-enabled/0200-xmlto-skip-validation.patch @@ -0,0 +1 @@ +../patches-available/0200-xmlto-skip-validation.patch \ No newline at end of file diff --git a/sinit/default/conf.sh b/sinit/default/conf.sh new file mode 100755 index 0000000..0243b55 --- /dev/null +++ b/sinit/default/conf.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +${EDITOR:-vi} config.mk diff --git a/sinit/default/patch b/sinit/default/patch new file mode 100644 index 0000000..b58165d --- /dev/null +++ b/sinit/default/patch @@ -0,0 +1,11 @@ +--- src-a/config.mk ++++ src-b/config.mk +@@ -2,7 +2,7 @@ + VERSION = 1.1 + + # paths +-PREFIX = /usr/local ++PREFIX = + MANPREFIX = $(PREFIX)/share/man + + CC = cc diff --git a/smdev/default/conf.sh b/smdev/default/conf.sh new file mode 100755 index 0000000..0243b55 --- /dev/null +++ b/smdev/default/conf.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +${EDITOR:-vi} config.mk diff --git a/smdev/default/deps b/smdev/default/deps new file mode 100644 index 0000000..2fb11b9 --- /dev/null +++ b/smdev/default/deps @@ -0,0 +1,10 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +sbase +ubase +make +dash +patch +ncurses +nano diff --git a/smdev/default/patch b/smdev/default/patch new file mode 100644 index 0000000..8abcdd3 --- /dev/null +++ b/smdev/default/patch @@ -0,0 +1,44 @@ +diff --git a/config.mk b/config.mk +index b1e7ae4..5028817 100644 +--- a/config.mk ++++ b/config.mk +@@ -2,10 +2,10 @@ + VERSION = 0.2.3 + + # paths +-PREFIX = /usr/local ++PREFIX = / + + CC = cc + LD = $(CC) +-CPPFLAGS = -D_BSD_SOURCE -D_GNU_SOURCE ++CPPFLAGS = -D_BSD_SOURCE -D_GNU_SOURCE -I/include -L/lib + CFLAGS = -std=c99 -Wall -pedantic $(CPPFLAGS) +-LDFLAGS = -s ++LDFLAGS = -s -static -L/lib +diff --git a/smdev.c b/smdev.c +index b774908..092ed31 100644 +--- a/smdev.c ++++ b/smdev.c +@@ -2,6 +2,7 @@ + #include + #include + #include ++#include + + #include + #include +diff -u src-a/config.def.h src-b/config.def.h +--- src-a/config.def.h 2020-07-02 05:19:12.016637932 +0000 ++++ src-b/config.def.h 2020-07-13 03:26:34.760000000 +0000 +@@ -22,6 +22,10 @@ + { "tty[0-9]", "root", "root", 0600, NULL, NULL }, + { "tty[0-9][0-9]","root", "tty", 0660, NULL, NULL }, + { "ttyS[0-9]*", "root", "tty", 0660, NULL, NULL, }, ++ { "bus/usb/001/.*", "root", "root", 0660, "=bus/usb/001/", NULL, }, ++ { "bus/usb/002/.*", "root", "root", 0660, "=bus/usb/002/", NULL, }, ++ { "bus/usb/003/.*", "root", "root", 0660, "=bus/usb/003/", NULL, }, ++ { "bus/usb/004/.*", "root", "root", 0660, "=bus/usb/004/", NULL, }, + { "pty.*", "root", "tty", 0660, NULL, NULL }, + { "vcs[0-9]*", "root", "tty", 0660, NULL, NULL }, + { "vcsa*[0-9]*", "root", "tty", 0660, NULL, NULL }, diff --git a/sqlite/default/conf.sh b/sqlite/default/conf.sh new file mode 100755 index 0000000..b21a813 --- /dev/null +++ b/sqlite/default/conf.sh @@ -0,0 +1,55 @@ +#!/bin/sh + +# settings below lifted from alpine linux's APKBUILD for sqlite. +CFLAGS="$CFLAGS \ +-DSQLITE_ENABLE_FTS4 \ +-DSQLITE_ENABLE_FTS3_PARENTHESIS \ +-DSQLITE_ENABLE_FTS3 \ +-DSQLITE_ENABLE_FTS5 \ +-DSQLITE_ENABLE_COLUMN_METADATA \ +-DSQLITE_SECURE_DELETE \ +-DSQLITE_ENABLE_UNLOCK_NOTIFY \ +-DSQLITE_ENABLE_RTREE \ +-DSQLITE_ENABLE_GEOPOLY \ +-DSQLITE_USE_URI \ +-DSQLITE_ENABLE_DBSTAT_VTAB \ +-DSQLITE_MAX_VARIABLE_NUMBER=250000 \ +-DSQLITE_ENABLE_JSON1" + +./configure --enable-threadsafe \ + --enable-dynamic-extensions \ + --enable-fts3 \ + --disable-shared \ + --enable-static \ + --build=$(uname -m)-lix-linux-musl \ + --host=$(uname -m)-lix-linux-musl \ + --prefix= + +## explanations +# +# CFLAGS: +# enables some full-text search options and support, as well as support for +# retrieving column metadata, overwriting deleted rows with zeroes before +# releasing them, callback notifications when write a table write lock has +# been released, support for r-tree indexes (good for range queries), the +# "geopoly" module which allows range queries via two-dimensional polygon, +# support for uri-format filenames, the dbstat virtual table (which stores +# information about how much disk space the database is taking up), bumps +# the maximum number of variables up to 250k, and enables functions for +# storing and querying json data. +# +# --enable-threadsafe: make the sqlite library threadsafe. +# +# --enable-dynamic-extensions: allow loading sqlite extensions dynamically. +# +# --enable-fts3: make sure full text search is supported! +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/sqlite/default/deps b/sqlite/default/deps new file mode 100644 index 0000000..8494467 --- /dev/null +++ b/sqlite/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +sbase +ubase +musl-cross-make +make +automake +autoconf +dash +patch +awk +gnu-grep +gnu-sed diff --git a/st/default/conf.sh b/st/default/conf.sh new file mode 100755 index 0000000..7b5a8e3 --- /dev/null +++ b/st/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +${EDITOR:-vi} config.mk diff --git a/st/default/deps b/st/default/deps new file mode 100644 index 0000000..9f551e1 --- /dev/null +++ b/st/default/deps @@ -0,0 +1,35 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +ncurses +perl +m4 +libpng +zlib +bzip2 +libtool +autoconf +automake +pkgconf +expat +xorgproto +libxml2 +libxinerama +libx11 +libxext +libxrender +libxft +libxcb +libxau +imlib2 +freetype +fontconfig +$EDITORDEP diff --git a/st/default/patch b/st/default/patch new file mode 100644 index 0000000..2014f0b --- /dev/null +++ b/st/default/patch @@ -0,0 +1,30 @@ +--- a/config.mk 2020-09-08 22:59:36.790000000 +0000 ++++ b/config.mk 2020-09-08 23:07:54.740000000 +0000 +@@ -4,22 +4,24 @@ + # Customize below to fit your system + + # paths +-PREFIX = /usr/local ++PREFIX = /usr + MANPREFIX = $(PREFIX)/share/man + + X11INC = /usr/X11R6/include + X11LIB = /usr/X11R6/lib + +-PKG_CONFIG = pkg-config ++PKG_CONFIG ?= pkgconf + + # includes and libs + INCS = -I$(X11INC) \ + `$(PKG_CONFIG) --cflags fontconfig` \ + `$(PKG_CONFIG) --cflags freetype2` +-LIBS = -L$(X11LIB) -lm -lrt -lX11 -lutil -lXft \ ++LIBS = -L$(X11LIB) -lm -lrt -lutil -lXft -lXrender -lX11 \ + `$(PKG_CONFIG) --libs fontconfig` \ + `$(PKG_CONFIG) --libs freetype2` + ++LIBS += -lX11-xcb -lXext -lxcb -lxcb-shm -lXau -lfreetype -lpng -lm -lz -lbz2 -lfontconfig -lexpat -lxml2 ++ + # flags + STCPPFLAGS = -DVERSION=\"$(VERSION)\" -D_XOPEN_SOURCE=600 + STCFLAGS = $(INCS) $(STCPPFLAGS) $(CPPFLAGS) $(CFLAGS) diff --git a/strace/default/conf.sh b/strace/default/conf.sh new file mode 100755 index 0000000..44be9ff --- /dev/null +++ b/strace/default/conf.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +CFLAGS="$CFLAGS -Dsigcontext_struct=sigcontext -Wno-error" \ +./configure \ + --enable-mpers=no \ + --disable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/strace/default/deps b/strace/default/deps new file mode 100644 index 0000000..28b3595 --- /dev/null +++ b/strace/default/deps @@ -0,0 +1,15 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +autoconf +automake diff --git a/strace/default/patches-available/disable-fortify.patch b/strace/default/patches-available/disable-fortify.patch new file mode 100644 index 0000000..26b2978 --- /dev/null +++ b/strace/default/patches-available/disable-fortify.patch @@ -0,0 +1,39 @@ +Subject: [PATCH] don't use fortify-headers on netlink test sources +From: A. Wilcox + +We can't use fortify-headers on netlink tests because it tests what happens +when a buffer overrun occurs. + +--- strace-4.18/tests/netlink_protocol.c.old 2017-07-05 07:08:09.000000000 +0000 ++++ strace-4.18/tests/netlink_protocol.c 2017-08-17 01:09:45.822502012 +0000 +@@ -28,6 +28,8 @@ + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + ++#define _FORTIFY_SOURCE 0 ++ + #include "tests.h" + + #ifdef HAVE_SYS_XATTR_H +--- strace-4.18/tests/netlink_sock_diag.c.old 2017-07-05 07:08:09.000000000 +0000 ++++ strace-4.18/tests/netlink_sock_diag.c 2017-08-17 01:10:00.935807300 +0000 +@@ -27,6 +27,8 @@ + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + ++#define _FORTIFY_SOURCE 0 ++ + #include "tests.h" + #include + #include +--- strace-4.18/tests/nlattr.c.old 2017-07-05 07:08:09.000000000 +0000 ++++ strace-4.18/tests/nlattr.c 2017-08-17 01:10:11.862453682 +0000 +@@ -28,6 +28,8 @@ + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + ++#define _FORTIFY_SOURCE 0 ++ + #include "tests.h" + + #include diff --git a/strace/default/patches-available/nlattr-fix.patch b/strace/default/patches-available/nlattr-fix.patch new file mode 100644 index 0000000..6d480fa --- /dev/null +++ b/strace/default/patches-available/nlattr-fix.patch @@ -0,0 +1,21 @@ +--- strace-4.18/tests/nlattr.c.old 2017-07-05 07:08:09.000000000 +0000 ++++ strace-4.18/tests/nlattr.c 2017-08-17 00:25:26.734218699 +0000 +@@ -61,7 +61,7 @@ + }; + struct msg *msg; + struct nlattr *nla; +- unsigned int msg_len; ++ uint32_t msg_len; + long rc; + + /* fetch fail: len < sizeof(struct nlattr) */ +@@ -259,7 +259,7 @@ + }; + struct msg *msg; + struct nlattr *nla; +- unsigned int msg_len; ++ uint32_t msg_len; + long rc; + + msg_len = NLMSG_SPACE(sizeof(msg->udm)) + sizeof(*nla); + diff --git a/strace/default/patches-enabled/disable-fortify.patch b/strace/default/patches-enabled/disable-fortify.patch new file mode 120000 index 0000000..87c2962 --- /dev/null +++ b/strace/default/patches-enabled/disable-fortify.patch @@ -0,0 +1 @@ +../patches-available/disable-fortify.patch \ No newline at end of file diff --git a/strace/default/patches-enabled/nlattr-fix.patch b/strace/default/patches-enabled/nlattr-fix.patch new file mode 120000 index 0000000..a93fe01 --- /dev/null +++ b/strace/default/patches-enabled/nlattr-fix.patch @@ -0,0 +1 @@ +../patches-available/nlattr-fix.patch \ No newline at end of file diff --git a/svc/default/conf.sh b/svc/default/conf.sh new file mode 100755 index 0000000..99b7ad4 --- /dev/null +++ b/svc/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration for svc." diff --git a/svc/default/inst.sh b/svc/default/inst.sh new file mode 100755 index 0000000..06d481e --- /dev/null +++ b/svc/default/inst.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +cp -v bin/svc /bin/ +chmod -v 755 /bin/svc + +cp -v bin/service /bin/ +chmod -v 755 /bin/service + +cp -frv svc.d /bin/svc.d diff --git a/svc/default/make.sh b/svc/default/make.sh new file mode 100755 index 0000000..b6c9585 --- /dev/null +++ b/svc/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no make for svc." diff --git a/sway/default/conf.sh b/sway/default/conf.sh new file mode 100755 index 0000000..ad9a270 --- /dev/null +++ b/sway/default/conf.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +PKG_CONFIG="pkgconf" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson --prefix=$PREFIX ../build diff --git a/sway/default/deps b/sway/default/deps new file mode 100644 index 0000000..906748d --- /dev/null +++ b/sway/default/deps @@ -0,0 +1,53 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +pcre +json-c +ldd +libffi +diffutils +pkgconf +bzip2 +zlib +libpng +expat +eudev +git +tls-certs +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +pixman +glib +harfbuzz +freetype-harfbuzz +fontconfig +pango +fribidi +cairo +gobject-introspection-dynamic +samurai +libxkbcommon-dynamic +libdrm-dynamic +libevdev +mtdev +libinput-dynamic +mesa-dynamic +wayland +wayland-protocols +wlroots +gdk-pixbuf >= 2.0 diff --git a/sway/default/inst.sh b/sway/default/inst.sh new file mode 100755 index 0000000..7900b4a --- /dev/null +++ b/sway/default/inst.sh @@ -0,0 +1,11 @@ +#!/bin/sh -e + +PKG_CONFIG="pkgconf" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +samu -C ../build install + +# no logind, so we need to setuid. +# sway drops root permissions shortly after startup. +chmod a+s /bin/sway diff --git a/sway/default/make.sh b/sway/default/make.sh new file mode 100755 index 0000000..097125e --- /dev/null +++ b/sway/default/make.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +PKG_CONFIG="pkgconf" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +samu -C ../build diff --git a/swaybg/default/conf.sh b/swaybg/default/conf.sh new file mode 100755 index 0000000..ad9a270 --- /dev/null +++ b/swaybg/default/conf.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +PKG_CONFIG="pkgconf" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson --prefix=$PREFIX ../build diff --git a/swaybg/default/deps b/swaybg/default/deps new file mode 100644 index 0000000..3e7306f --- /dev/null +++ b/swaybg/default/deps @@ -0,0 +1,54 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +pcre +json-c +ldd +libffi +diffutils +pkgconf +bzip2 +zlib +libpng +expat +eudev +git +tls-certs +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +pixman +glib +harfbuzz +freetype-harfbuzz +fontconfig +pango +fribidi +cairo +gobject-introspection-dynamic +samurai +libxkbcommon-dynamic +libdrm-dynamic +libevdev +mtdev +libinput-dynamic +mesa-dynamic +wayland +wayland-protocols +wlroots +gdk-pixbuf >= 2.0 +sway diff --git a/swaybg/default/inst.sh b/swaybg/default/inst.sh new file mode 100755 index 0000000..7900b4a --- /dev/null +++ b/swaybg/default/inst.sh @@ -0,0 +1,11 @@ +#!/bin/sh -e + +PKG_CONFIG="pkgconf" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +samu -C ../build install + +# no logind, so we need to setuid. +# sway drops root permissions shortly after startup. +chmod a+s /bin/sway diff --git a/swaybg/default/make.sh b/swaybg/default/make.sh new file mode 100755 index 0000000..097125e --- /dev/null +++ b/swaybg/default/make.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +PKG_CONFIG="pkgconf" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +samu -C ../build diff --git a/swc/default/conf.sh b/swc/default/conf.sh new file mode 100755 index 0000000..40dbe5f --- /dev/null +++ b/swc/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +$EDITOR config.mk diff --git a/swc/default/deps b/swc/default/deps new file mode 100644 index 0000000..465bf5a --- /dev/null +++ b/swc/default/deps @@ -0,0 +1,37 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +automake +autoconf +expat +bzip2 +zlib +libffi +eudev +libdrm +libpng +fontconfig +freetype +pkgconf +pixman +libxslt +libpciaccess +libxkbcommon +libxcb +wayland +wayland-protocols +wld +libevdev +mtdev +libinput +$EDITORDEP diff --git a/swc/default/inst.sh b/swc/default/inst.sh new file mode 100755 index 0000000..9183326 --- /dev/null +++ b/swc/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +PREFIX="$PREFIX" \ +make install diff --git a/swc/default/make.sh b/swc/default/make.sh new file mode 100755 index 0000000..9d38191 --- /dev/null +++ b/swc/default/make.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +PREFIX="/usr" \ +make -j$(nproc) + +#CFLAGS="$SHARED_CFLAGS" \ +#CXXFLAGS="$SHARED_CXXFLAGS" \ +#LDFLAGS="$SHARED_LDFLAGS" \ diff --git a/swc/default/patch b/swc/default/patch new file mode 100644 index 0000000..aa56439 --- /dev/null +++ b/swc/default/patch @@ -0,0 +1,14 @@ +diff --git a/config.mk b/config.mk +index 0a8fdf0..4b6cc99 100644 +--- a/config.mk ++++ b/config.mk +@@ -15,7 +15,7 @@ + + ENABLE_DEBUG = 1 + ENABLE_STATIC = 1 +-ENABLE_SHARED = 1 ++ENABLE_SHARED = 0 + ENABLE_LIBUDEV = 1 +-ENABLE_XWAYLAND = 1 ++ENABLE_XWAYLAND = 0 + diff --git a/swig/default/conf.sh b/swig/default/conf.sh new file mode 100755 index 0000000..64b7c25 --- /dev/null +++ b/swig/default/conf.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +./configure \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" #\ +# --with-python3=/usr/bin/python3 diff --git a/swig/default/deps b/swig/default/deps new file mode 100644 index 0000000..3ce945d --- /dev/null +++ b/swig/default/deps @@ -0,0 +1,16 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +zlib +pcre +bison +guile diff --git a/swig/default/patches-available/fix-test-sed-PATH.patch b/swig/default/patches-available/fix-test-sed-PATH.patch new file mode 100644 index 0000000..2eb9640 --- /dev/null +++ b/swig/default/patches-available/fix-test-sed-PATH.patch @@ -0,0 +1,18 @@ +Fix PATH that looks like: + +/usr/lib/ccache/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +diff --git a/CCache/test.sh b/CCache/test.sh +index 3c44e85..3634883 100755 +--- a/CCache/test.sh ++++ b/CCache/test.sh +@@ -17,8 +17,8 @@ fi + + # fix: Remove ccache from $PATH if it exists + # as it will influence the unit tests +-PATH="`echo $PATH | \ +- sed -e 's!:/usr\(/local\)*/lib\([0-9]\)*/ccache\(/\)*!!g'`" ++PATH="$(echo $PATH | \ ++ sed -E -e 's!(:|^)/usr(/local)*/lib([0-9])*/ccache(/[^:]*)*:?!!g')" + + if test -n "$CCACHE"; then + CCACHE="$CCACHE" diff --git a/swig/default/patches-enabled/fix-test-sed-PATH.patch b/swig/default/patches-enabled/fix-test-sed-PATH.patch new file mode 120000 index 0000000..9229804 --- /dev/null +++ b/swig/default/patches-enabled/fix-test-sed-PATH.patch @@ -0,0 +1 @@ +../patches-available/fix-test-sed-PATH.patch \ No newline at end of file diff --git a/tcl/default/conf.sh b/tcl/default/conf.sh new file mode 100755 index 0000000..2689a28 --- /dev/null +++ b/tcl/default/conf.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +opt64bit="--disable-64bit" +case "$ARCH" in + x86_64|ppc64*) opt64bit="--enable-64bit" +esac + +cd unix + +rm -fr pkgs/sqlite3* + +./configure \ + $opt64bit \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" diff --git a/tcl/default/deps b/tcl/default/deps new file mode 100644 index 0000000..bc6af26 --- /dev/null +++ b/tcl/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +zlib +sqlite diff --git a/tcl/default/env.sh b/tcl/default/env.sh new file mode 100644 index 0000000..1a5f2ba --- /dev/null +++ b/tcl/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +. ../how/default-env.sh + +export CFLAGS="$SHARED_CFLAGS" +export CXXFLAGS="$SHARED_CXXFLAGS" +export LDFLAGS="$SHARED_LDFLAGS" diff --git a/tcl/default/inst.sh b/tcl/default/inst.sh new file mode 100755 index 0000000..986d3ea --- /dev/null +++ b/tcl/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +cd unix +make install diff --git a/tcl/default/make.sh b/tcl/default/make.sh new file mode 100755 index 0000000..9618812 --- /dev/null +++ b/tcl/default/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +cd unix +make -j$(nproc) diff --git a/tcl/default/patches-available/tcl-stat64.patch b/tcl/default/patches-available/tcl-stat64.patch new file mode 100644 index 0000000..388d79a --- /dev/null +++ b/tcl/default/patches-available/tcl-stat64.patch @@ -0,0 +1,11 @@ +--- tcl8.6.0.org/generic/tcl.h ++++ tcl8.6.0/generic/tcl.h +@@ -17,6 +17,8 @@ + #ifndef _TCL + #define _TCL + ++#include ++ + /* + * For C++ compilers, use extern "C" + */ diff --git a/tcl/default/patches-enabled/tcl-stat64.patch b/tcl/default/patches-enabled/tcl-stat64.patch new file mode 120000 index 0000000..205c2c1 --- /dev/null +++ b/tcl/default/patches-enabled/tcl-stat64.patch @@ -0,0 +1 @@ +../patches-available/tcl-stat64.patch \ No newline at end of file diff --git a/texinfo/default/deps b/texinfo/default/deps new file mode 100644 index 0000000..2fd7576 --- /dev/null +++ b/texinfo/default/deps @@ -0,0 +1,2 @@ +lix-os-filesystem +perl diff --git a/tllist/default/conf.sh b/tllist/default/conf.sh new file mode 100755 index 0000000..f99dcbc --- /dev/null +++ b/tllist/default/conf.sh @@ -0,0 +1,6 @@ +#!/bin/sh -e + +meson \ + --buildtype=release \ + --prefix=$PREFIX \ + ../build diff --git a/tllist/default/deps b/tllist/default/deps new file mode 100644 index 0000000..610b949 --- /dev/null +++ b/tllist/default/deps @@ -0,0 +1,20 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson diff --git a/tllist/default/inst.sh b/tllist/default/inst.sh new file mode 100755 index 0000000..5013ba7 --- /dev/null +++ b/tllist/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build install diff --git a/tllist/default/make.sh b/tllist/default/make.sh new file mode 100755 index 0000000..43f1628 --- /dev/null +++ b/tllist/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build diff --git a/tls-certs-letsencrypt-authority-x3/default/conf.sh b/tls-certs-letsencrypt-authority-x3/default/conf.sh new file mode 100755 index 0000000..524d8b6 --- /dev/null +++ b/tls-certs-letsencrypt-authority-x3/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to configure." diff --git a/tls-certs-letsencrypt-authority-x3/default/inst.sh b/tls-certs-letsencrypt-authority-x3/default/inst.sh new file mode 100755 index 0000000..828c8a1 --- /dev/null +++ b/tls-certs-letsencrypt-authority-x3/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +mkdir -p /etc/ssl/certs +cp $name /etc/ssl/certs/$(echo $name | sed 's/tls-certs-//').pem diff --git a/tls-certs-letsencrypt-authority-x3/default/make.sh b/tls-certs-letsencrypt-authority-x3/default/make.sh new file mode 100755 index 0000000..50027f2 --- /dev/null +++ b/tls-certs-letsencrypt-authority-x3/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to make." diff --git a/tls-certs-letsencrypt-authority-x4/default/conf.sh b/tls-certs-letsencrypt-authority-x4/default/conf.sh new file mode 100755 index 0000000..524d8b6 --- /dev/null +++ b/tls-certs-letsencrypt-authority-x4/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to configure." diff --git a/tls-certs-letsencrypt-authority-x4/default/inst.sh b/tls-certs-letsencrypt-authority-x4/default/inst.sh new file mode 100755 index 0000000..828c8a1 --- /dev/null +++ b/tls-certs-letsencrypt-authority-x4/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +mkdir -p /etc/ssl/certs +cp $name /etc/ssl/certs/$(echo $name | sed 's/tls-certs-//').pem diff --git a/tls-certs-letsencrypt-authority-x4/default/make.sh b/tls-certs-letsencrypt-authority-x4/default/make.sh new file mode 100755 index 0000000..50027f2 --- /dev/null +++ b/tls-certs-letsencrypt-authority-x4/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to make." diff --git a/tls-certs-letsencrypt-e1/default/conf.sh b/tls-certs-letsencrypt-e1/default/conf.sh new file mode 100755 index 0000000..524d8b6 --- /dev/null +++ b/tls-certs-letsencrypt-e1/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to configure." diff --git a/tls-certs-letsencrypt-e1/default/inst.sh b/tls-certs-letsencrypt-e1/default/inst.sh new file mode 100755 index 0000000..828c8a1 --- /dev/null +++ b/tls-certs-letsencrypt-e1/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +mkdir -p /etc/ssl/certs +cp $name /etc/ssl/certs/$(echo $name | sed 's/tls-certs-//').pem diff --git a/tls-certs-letsencrypt-e1/default/make.sh b/tls-certs-letsencrypt-e1/default/make.sh new file mode 100755 index 0000000..50027f2 --- /dev/null +++ b/tls-certs-letsencrypt-e1/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to make." diff --git a/tls-certs-letsencrypt-e2/default/conf.sh b/tls-certs-letsencrypt-e2/default/conf.sh new file mode 100755 index 0000000..524d8b6 --- /dev/null +++ b/tls-certs-letsencrypt-e2/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to configure." diff --git a/tls-certs-letsencrypt-e2/default/inst.sh b/tls-certs-letsencrypt-e2/default/inst.sh new file mode 100755 index 0000000..828c8a1 --- /dev/null +++ b/tls-certs-letsencrypt-e2/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +mkdir -p /etc/ssl/certs +cp $name /etc/ssl/certs/$(echo $name | sed 's/tls-certs-//').pem diff --git a/tls-certs-letsencrypt-e2/default/make.sh b/tls-certs-letsencrypt-e2/default/make.sh new file mode 100755 index 0000000..50027f2 --- /dev/null +++ b/tls-certs-letsencrypt-e2/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to make." diff --git a/tls-certs-letsencrypt-r3/default/conf.sh b/tls-certs-letsencrypt-r3/default/conf.sh new file mode 100755 index 0000000..524d8b6 --- /dev/null +++ b/tls-certs-letsencrypt-r3/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to configure." diff --git a/tls-certs-letsencrypt-r3/default/inst.sh b/tls-certs-letsencrypt-r3/default/inst.sh new file mode 100755 index 0000000..828c8a1 --- /dev/null +++ b/tls-certs-letsencrypt-r3/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +mkdir -p /etc/ssl/certs +cp $name /etc/ssl/certs/$(echo $name | sed 's/tls-certs-//').pem diff --git a/tls-certs-letsencrypt-r3/default/make.sh b/tls-certs-letsencrypt-r3/default/make.sh new file mode 100755 index 0000000..50027f2 --- /dev/null +++ b/tls-certs-letsencrypt-r3/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to make." diff --git a/tls-certs-letsencrypt-r4/default/conf.sh b/tls-certs-letsencrypt-r4/default/conf.sh new file mode 100755 index 0000000..524d8b6 --- /dev/null +++ b/tls-certs-letsencrypt-r4/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to configure." diff --git a/tls-certs-letsencrypt-r4/default/inst.sh b/tls-certs-letsencrypt-r4/default/inst.sh new file mode 100755 index 0000000..828c8a1 --- /dev/null +++ b/tls-certs-letsencrypt-r4/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +mkdir -p /etc/ssl/certs +cp $name /etc/ssl/certs/$(echo $name | sed 's/tls-certs-//').pem diff --git a/tls-certs-letsencrypt-r4/default/make.sh b/tls-certs-letsencrypt-r4/default/make.sh new file mode 100755 index 0000000..50027f2 --- /dev/null +++ b/tls-certs-letsencrypt-r4/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to make." diff --git a/tls-certs-letsencrypt-root-x1/default/conf.sh b/tls-certs-letsencrypt-root-x1/default/conf.sh new file mode 100755 index 0000000..524d8b6 --- /dev/null +++ b/tls-certs-letsencrypt-root-x1/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to configure." diff --git a/tls-certs-letsencrypt-root-x1/default/inst.sh b/tls-certs-letsencrypt-root-x1/default/inst.sh new file mode 100755 index 0000000..828c8a1 --- /dev/null +++ b/tls-certs-letsencrypt-root-x1/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +mkdir -p /etc/ssl/certs +cp $name /etc/ssl/certs/$(echo $name | sed 's/tls-certs-//').pem diff --git a/tls-certs-letsencrypt-root-x1/default/make.sh b/tls-certs-letsencrypt-root-x1/default/make.sh new file mode 100755 index 0000000..50027f2 --- /dev/null +++ b/tls-certs-letsencrypt-root-x1/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to make." diff --git a/tls-certs-letsencrypt-root-x2/default/conf.sh b/tls-certs-letsencrypt-root-x2/default/conf.sh new file mode 100755 index 0000000..524d8b6 --- /dev/null +++ b/tls-certs-letsencrypt-root-x2/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to configure." diff --git a/tls-certs-letsencrypt-root-x2/default/inst.sh b/tls-certs-letsencrypt-root-x2/default/inst.sh new file mode 100755 index 0000000..828c8a1 --- /dev/null +++ b/tls-certs-letsencrypt-root-x2/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +mkdir -p /etc/ssl/certs +cp $name /etc/ssl/certs/$(echo $name | sed 's/tls-certs-//').pem diff --git a/tls-certs-letsencrypt-root-x2/default/make.sh b/tls-certs-letsencrypt-root-x2/default/make.sh new file mode 100755 index 0000000..50027f2 --- /dev/null +++ b/tls-certs-letsencrypt-root-x2/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to make." diff --git a/tls-certs-letsencrypt/default/conf.sh b/tls-certs-letsencrypt/default/conf.sh new file mode 100644 index 0000000..524d8b6 --- /dev/null +++ b/tls-certs-letsencrypt/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to configure." diff --git a/tls-certs-letsencrypt/default/inst.sh b/tls-certs-letsencrypt/default/inst.sh new file mode 100644 index 0000000..828c8a1 --- /dev/null +++ b/tls-certs-letsencrypt/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +mkdir -p /etc/ssl/certs +cp $name /etc/ssl/certs/$(echo $name | sed 's/tls-certs-//').pem diff --git a/tls-certs-letsencrypt/default/make.sh b/tls-certs-letsencrypt/default/make.sh new file mode 100644 index 0000000..50027f2 --- /dev/null +++ b/tls-certs-letsencrypt/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to make." diff --git a/tls-certs-mozilla/default/conf.sh b/tls-certs-mozilla/default/conf.sh new file mode 100755 index 0000000..524d8b6 --- /dev/null +++ b/tls-certs-mozilla/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to configure." diff --git a/tls-certs-mozilla/default/deps b/tls-certs-mozilla/default/deps new file mode 100644 index 0000000..4026813 --- /dev/null +++ b/tls-certs-mozilla/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +curl diff --git a/tls-certs-mozilla/default/inst.sh b/tls-certs-mozilla/default/inst.sh new file mode 100755 index 0000000..828c8a1 --- /dev/null +++ b/tls-certs-mozilla/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +mkdir -p /etc/ssl/certs +cp $name /etc/ssl/certs/$(echo $name | sed 's/tls-certs-//').pem diff --git a/tls-certs-mozilla/default/make.sh b/tls-certs-mozilla/default/make.sh new file mode 100755 index 0000000..50027f2 --- /dev/null +++ b/tls-certs-mozilla/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to make." diff --git a/tls-certs/default/conf.sh b/tls-certs/default/conf.sh new file mode 100755 index 0000000..524d8b6 --- /dev/null +++ b/tls-certs/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "nothing to configure." diff --git a/tls-certs/default/deps b/tls-certs/default/deps new file mode 100644 index 0000000..0ef011b --- /dev/null +++ b/tls-certs/default/deps @@ -0,0 +1,20 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +tls-certs-letsencrypt-authority-x3 +tls-certs-letsencrypt-authority-x4 +tls-certs-letsencrypt-e1 +tls-certs-letsencrypt-e2 +tls-certs-letsencrypt-r3 +tls-certs-letsencrypt-r4 +tls-certs-letsencrypt-root-x1 +tls-certs-letsencrypt-root-x2 +tls-certs-mozilla diff --git a/tls-certs/default/inst.sh b/tls-certs/default/inst.sh new file mode 100755 index 0000000..55652e3 --- /dev/null +++ b/tls-certs/default/inst.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +cp ca-bundle.crt /etc/ssl/ +mkdir -p /etc/ssl/certs +ln -sf ../ca-bundle.crt /etc/ssl/certs/ca-certificates.crt diff --git a/tls-certs/default/make.sh b/tls-certs/default/make.sh new file mode 100755 index 0000000..e0a04bd --- /dev/null +++ b/tls-certs/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +cat /etc/ssl/certs/*.pem > ca-bundle.crt diff --git a/tmux/default/conf.sh b/tmux/default/conf.sh new file mode 100755 index 0000000..6f651cd --- /dev/null +++ b/tmux/default/conf.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +LIBNCURSES_CFLAGS="-I/include/ncurses" \ +LIBNCURSES_LIBS="-lncurses" \ +./configure \ + --disable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/tmux/default/deps b/tmux/default/deps new file mode 100644 index 0000000..fc47e66 --- /dev/null +++ b/tmux/default/deps @@ -0,0 +1,17 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +autoconf +automake +libevent +ncurses diff --git a/tor/default/conf.sh b/tor/default/conf.sh new file mode 100755 index 0000000..e5a04d4 --- /dev/null +++ b/tor/default/conf.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +./configure \ + --disable-gcc-hardening \ + --enable-static-tor \ + --enable-lzma \ + --with-libevent-dir=/lib \ + --with-openssl-dir=/lib \ + --with-zlib-dir=/lib \ + --disable-systemd \ + --prefix= + +## explanation +# +# --enable-lzma: enable lzma2 compression via xz. +# +# --enable-static-tor: build static binaries, as is lix os' custom. +# +# --with-libevent-dir: tell configure where to find the static libevent library. +# +# --with-openssl-dir: tell configure where to find the static libressl library. +# +# --with-zlib-dir: tell configure where to find the static zlib library. +# +# --disable-systemd: lix os does not use systemd. +# +# --disable-gcc-hardening: +# this is not ideal, but presently ld complains about dynamic relocations in +# read-only segments without this. try removing once -static-pie is fixed. +# (thanks to https://github.com/cretz/tor-static for illuminating that one.) +# +# --prefix: respect lix os' directory structure. diff --git a/tor/default/deps b/tor/default/deps new file mode 100644 index 0000000..d3cdd37 --- /dev/null +++ b/tor/default/deps @@ -0,0 +1,16 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +zlib +xz +libressl +libevent +bash diff --git a/tor/default/env.sh b/tor/default/env.sh new file mode 100755 index 0000000..b415fdc --- /dev/null +++ b/tor/default/env.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +export CC="gcc" +#export LDFLAGS="${LDFLAGS:---static -static}" +#export CFLAGS="${CFLAGS:---static -static}" +#export CPPFLAGS="${CPPFLAGS:---static -static}" +#export CXXFLAGS="${CXXFLAGS:---static -static}" + +# TODO: remove the need for these lines by making musl-cross-make build a gcc +# with a header search path of /include only, with all headers contained there. +export CPATH="${CPATH:-/include}" +export C_INCLUDE_PATH="/powerpc64le-lix-linux-musl/include" +export CPLUS_INCLUDE_PATH="/include/c++/9.2.0/powerpc64le-lix-linux-musl:/include/c++/9.2.0" diff --git a/torsocks/default/conf.sh b/torsocks/default/conf.sh new file mode 100755 index 0000000..117e507 --- /dev/null +++ b/torsocks/default/conf.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/torsocks/default/deps b/torsocks/default/deps new file mode 100644 index 0000000..fcf83fd --- /dev/null +++ b/torsocks/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +ldd diff --git a/torsocks/default/inst.sh b/torsocks/default/inst.sh new file mode 100755 index 0000000..4141a29 --- /dev/null +++ b/torsocks/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +make install diff --git a/torsocks/default/make.sh b/torsocks/default/make.sh new file mode 100755 index 0000000..22f63a4 --- /dev/null +++ b/torsocks/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +make -j$(nproc) diff --git a/tree/default/conf.sh b/tree/default/conf.sh new file mode 100755 index 0000000..bb3314d --- /dev/null +++ b/tree/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration to be done." diff --git a/tree/default/patch b/tree/default/patch new file mode 100644 index 0000000..2e2f8b7 --- /dev/null +++ b/tree/default/patch @@ -0,0 +1,18 @@ +--- a/Makefile 2018-01-18 20:02:20.000000000 +0000 ++++ b/Makefile 2020-09-22 22:04:17.450000000 +0000 +@@ -24,13 +24,13 @@ + TREE_DEST=tree + BINDIR=${prefix}/bin + MAN=tree.1 +-MANDIR=${prefix}/man/man1 ++MANDIR=${prefix}/share/man/man1 + OBJS=tree.o unix.o html.o xml.o json.o hash.o color.o file.o + + # Uncomment options below for your particular OS: + + # Linux defaults: +-CFLAGS=-ggdb -pedantic -Wall -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 ++CFLAGS+=-ggdb -pedantic -Wall -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 + #CFLAGS=-O4 -Wall -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 + #LDFLAGS=-s + diff --git a/ttf-dejavu/default/conf.sh b/ttf-dejavu/default/conf.sh new file mode 100755 index 0000000..aa92e98 --- /dev/null +++ b/ttf-dejavu/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "no configuration to do." diff --git a/ttf-dejavu/default/inst.sh b/ttf-dejavu/default/inst.sh new file mode 100755 index 0000000..d3bf88c --- /dev/null +++ b/ttf-dejavu/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e + +mkdir -p /share/fonts/truetype/dejavu +install -m644 ttf/*.ttf /share/fonts/truetype/dejavu/ diff --git a/ttf-dejavu/default/make.sh b/ttf-dejavu/default/make.sh new file mode 100755 index 0000000..7af1811 --- /dev/null +++ b/ttf-dejavu/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +echo "no building to do." diff --git a/ubase/default/conf.sh b/ubase/default/conf.sh new file mode 100755 index 0000000..0243b55 --- /dev/null +++ b/ubase/default/conf.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +${EDITOR:-vi} config.mk diff --git a/ubase/default/deps b/ubase/default/deps new file mode 100644 index 0000000..79a4aba --- /dev/null +++ b/ubase/default/deps @@ -0,0 +1,4 @@ +lix-os-filesystem +linux-kernel +patch +sbase diff --git a/ubase/default/inst.sh b/ubase/default/inst.sh new file mode 100755 index 0000000..c998d68 --- /dev/null +++ b/ubase/default/inst.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +# the makefile uses cp to install to DESTDIR. because cp dereferences any +# symlinks given as the destination, this overwrites busybox on the recommended +# alpine linux bootstrap host. rsync does not have this problem. +DESTDIR="${pkgdest:-/mnt/build}" make -j$(nproc) install +[ "$pkgdest" ] || rsync -ai /mnt/build/ / diff --git a/ubase/default/patch b/ubase/default/patch new file mode 100644 index 0000000..51d2797 --- /dev/null +++ b/ubase/default/patch @@ -0,0 +1,99 @@ +diff --git a/config.mk b/config.mk +index 245a590..67b0334 100644 +--- a/config.mk ++++ b/config.mk +@@ -2,7 +2,7 @@ + VERSION = 0.1 + + # paths +-PREFIX = /usr/local ++PREFIX = / + MANPREFIX = $(PREFIX)/share/man + + CC = cc +@@ -12,4 +12,4 @@ RANLIB = ranlib + CPPFLAGS = -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=700 -D_GNU_SOURCE + CFLAGS = -std=c99 -Wall -Wextra + LDLIBS = -lcrypt +-LDFLAGS = -s ++LDFLAGS = -s -static +diff --git a/libutil/tty.c b/libutil/tty.c +index bceb01e..8a2cd73 100644 +--- a/libutil/tty.c ++++ b/libutil/tty.c +@@ -1,6 +1,7 @@ + /* See LICENSE file for copyright and license details. */ + #include + #include ++#include + + #include + #include +diff --git a/login.c b/login.c +index 25a59e4..3ee5a06 100644 +--- a/login.c ++++ b/login.c +@@ -107,7 +107,7 @@ main(int argc, char *argv[]) + /* Flush pending input */ + ioctl(0, TCFLSH, (void *)0); + +- pass = getpass("Password: "); ++ pass = getpass("password: "); + if (!pass) + eprintf("getpass:"); + if (pw_check(pw, pass) <= 0) +diff --git a/mknod.c b/mknod.c +index 8de35c7..27f91e0 100644 +--- a/mknod.c ++++ b/mknod.c +@@ -1,6 +1,7 @@ + /* See LICENSE file for copyright and license details. */ + #include + #include ++#include + + #include + #include +diff --git a/mountpoint.c b/mountpoint.c +index 8f205a2..fd3a133 100644 +--- a/mountpoint.c ++++ b/mountpoint.c +@@ -1,6 +1,7 @@ + /* See LICENSE file for copyright and license details. */ + #include + #include ++#include + + #include + #include +diff --git a/stat.c b/stat.c +index 220a659..3f91566 100644 +--- a/stat.c ++++ b/stat.c +@@ -1,6 +1,7 @@ + /* See LICENSE file for copyright and license details. */ + #include + #include ++#include + + #include + #include +@@ -86,4 +87,4 @@ main(int argc, char *argv[]) + } + + return ret; +-} +\ No newline at end of file ++} +diff -ru a/mount.c b/mount.c +--- a/mount.c 2020-07-06 04:33:28.700000000 +0000 ++++ b/mount.c 2020-07-06 04:34:25.210000000 +0000 +@@ -15,7 +15,7 @@ + #include "text.h" + #include "util.h" + +-#define FSOPTS_MAXLEN 512 ++#define FSOPTS_MAXLEN 8192 + + struct { + const char *opt; diff --git a/unshare/default/conf.sh b/unshare/default/conf.sh new file mode 100755 index 0000000..60d3098 --- /dev/null +++ b/unshare/default/conf.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +./configure \ + --disable-all-programs \ + --disable-shared \ + --enable-static \ + --enable-unshare \ + --prefix= + +## explanation +# +# --disable-all-programs: +# disable everything. this package actually contains a bunch of libraries... +# +# --disable-shared --enable static: only build static libraries. +# +# --enable-unshare: enable only unshare. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/vala/default/conf.sh b/vala/default/conf.sh new file mode 100755 index 0000000..4d45a82 --- /dev/null +++ b/vala/default/conf.sh @@ -0,0 +1,6 @@ +#!/bin/sh -e + +./configure \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" diff --git a/vala/default/deps b/vala/default/deps new file mode 100644 index 0000000..1b3d989 --- /dev/null +++ b/vala/default/deps @@ -0,0 +1,23 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +perl +m4 +flex +bison +libffi +glib +gobject-introspection-dynamic +graphviz +libxslt +diffutils +file diff --git a/vala/default/env.sh b/vala/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/vala/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/velox/default/conf.sh b/velox/default/conf.sh new file mode 100755 index 0000000..40dbe5f --- /dev/null +++ b/velox/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +$EDITOR config.mk diff --git a/velox/default/deps b/velox/default/deps new file mode 100644 index 0000000..30c99eb --- /dev/null +++ b/velox/default/deps @@ -0,0 +1,38 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +automake +autoconf +expat +bzip2 +zlib +libffi +eudev +libdrm +libpng +fontconfig +freetype +pkgconf +pixman +libxslt +libpciaccess +libxkbcommon +libxcb +wayland +wayland-protocols +wld +libevdev +mtdev +libinput +swc +$EDITORDEP diff --git a/velox/default/inst.sh b/velox/default/inst.sh new file mode 100755 index 0000000..55e24d9 --- /dev/null +++ b/velox/default/inst.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +PREFIX="$PREFIX" \ +make install +cp velox.conf.sample /etc/velox.conf diff --git a/velox/default/make.sh b/velox/default/make.sh new file mode 100755 index 0000000..9eb5a56 --- /dev/null +++ b/velox/default/make.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +LDFLAGS="$LDFLAGS -levdev" \ +PKG_CONFIG="$(which pkgconf) --static" \ +PREFIX="/usr" \ +make -j$(nproc) + +#CFLAGS="$SHARED_CFLAGS" \ +#CXXFLAGS="$SHARED_CXXFLAGS" \ +#LDFLAGS="$SHARED_LDFLAGS" \ diff --git a/w3m/default/conf.sh b/w3m/default/conf.sh new file mode 100755 index 0000000..5c74f21 --- /dev/null +++ b/w3m/default/conf.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +#LIBS="-lxshmfence -lxcb -lX11 -lImlib2" \ +#LDFLAGS="$LDFLAGS -lXext -lxcb -lxcb-shm" \ +#LDFLAGS="$LDFLAGS -lImlib2 -lX11 -lX11-xcb -lpthread -lxcb-shm -lxcb -lXau -lxshmfence -lXext -lfreetype -lz -lbz2 -lpng -lz" +PKG_CONFIG="pkgconf --static" \ +./configure \ + --enable-image=fb \ + --disable-nntp \ + --disable-dict \ + --disable-help-cgi \ + --with-termlib=ncurses \ + --with-imagelib=imlib2 \ + --with-ssl \ + --disable-w3mmailer \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + #--disable-mouse \ + + #--disable-shared \ + #--enable-static \ +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/w3m/default/deps b/w3m/default/deps new file mode 100644 index 0000000..1b68fc2 --- /dev/null +++ b/w3m/default/deps @@ -0,0 +1,38 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +pkgconf +bzip2 +zlib +giflib +libjpeg-turbo +libpng +libtiff +libwebp +libid3tag +freetype +xorg-util-macros +libxml2 +xorgproto +libxslt +xcb-proto +libxau +libxcb +libxshmfence +libxext +libx11 +libsm +libice +ncurses +imlib2 +libressl +gc diff --git a/w3m/default/deps.bak b/w3m/default/deps.bak new file mode 100644 index 0000000..5928196 --- /dev/null +++ b/w3m/default/deps.bak @@ -0,0 +1,38 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +bzip2 +zlib +giflib +libjpeg-turbo +libpng +libtiff +libwebp +libid3tag +freetype +xorg-util-macros +libxml2 +xorgproto +libxslt +xcb-proto +libxau +libxcb +libxshmfence +xtrans +libx11 +libxext +libsm +libice +ncurses +imlib2 +libressl +gc diff --git a/w3m/default/make.sh b/w3m/default/make.sh new file mode 100755 index 0000000..22f63a4 --- /dev/null +++ b/w3m/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +make -j$(nproc) diff --git a/w3m/default/patch b/w3m/default/patch new file mode 100644 index 0000000..31286a7 --- /dev/null +++ b/w3m/default/patch @@ -0,0 +1,19 @@ +Fedora patch; see https://bugzilla.redhat.com/show_bug.cgi?id=707994 + +--- old/url.c 2011-01-04 14:52:24.000000000 +0530 ++++ new/url.c 2011-09-02 18:25:43.305652690 +0530 +@@ -82,11 +82,11 @@ + {"ftp", SCM_FTP}, + {"local", SCM_LOCAL}, + {"file", SCM_LOCAL}, +- /* {"exec", SCM_EXEC}, */ ++ {"exec", SCM_EXEC}, + {"nntp", SCM_NNTP}, +- /* {"nntp", SCM_NNTP_GROUP}, */ ++ {"nntp", SCM_NNTP_GROUP}, + {"news", SCM_NEWS}, +- /* {"news", SCM_NEWS_GROUP}, */ ++ {"news", SCM_NEWS_GROUP}, + {"data", SCM_DATA}, + #ifndef USE_W3MMAILER + {"mailto", SCM_MAILTO}, diff --git a/wayland-protocols/default/conf.sh b/wayland-protocols/default/conf.sh new file mode 100755 index 0000000..117e507 --- /dev/null +++ b/wayland-protocols/default/conf.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/wayland-protocols/default/deps b/wayland-protocols/default/deps new file mode 100644 index 0000000..103995c --- /dev/null +++ b/wayland-protocols/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +wayland diff --git a/wayland/default/b/wayland-client.pc.in b/wayland/default/b/wayland-client.pc.in new file mode 100644 index 0000000..018729f --- /dev/null +++ b/wayland/default/b/wayland-client.pc.in @@ -0,0 +1,12 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +datarootdir=@datarootdir@ +pkgdatadir=@datadir@/@PACKAGE@ +libdir=@libdir@ +includedir=@includedir@ + +Name: Wayland Client +Description: Wayland client side library +Version: @WAYLAND_VERSION@ +Cflags: -I${includedir} +Libs: -L${libdir} -lwayland-client -lffi diff --git a/wayland/default/b/wayland-server.pc.in b/wayland/default/b/wayland-server.pc.in new file mode 100644 index 0000000..0c70ae7 --- /dev/null +++ b/wayland/default/b/wayland-server.pc.in @@ -0,0 +1,12 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +datarootdir=@datarootdir@ +pkgdatadir=@datadir@/@PACKAGE@ +libdir=@libdir@ +includedir=@includedir@ + +Name: Wayland Server +Description: Server side implementation of the Wayland protocol +Version: @WAYLAND_VERSION@ +Cflags: -I${includedir} +Libs: -L${libdir} -lwayland-server -lffi diff --git a/wayland/default/conf.sh b/wayland/default/conf.sh new file mode 100755 index 0000000..afbf610 --- /dev/null +++ b/wayland/default/conf.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +LDFLAGS="$SHARED_LDFLAGS" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +FFI_CFLAGS="-I/include" \ +FFI_LIBS="-lffi" \ +EXPAT_CFLAGS="-I/include" \ +EXPAT_LIBS="/lib/libexpat.a" \ +./configure \ + --disable-documentation \ + --disable-dtd-validation \ + --enable-shared \ + --enable-static \ + --with-pic \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/wayland/default/deps b/wayland/default/deps new file mode 100644 index 0000000..f0c53d8 --- /dev/null +++ b/wayland/default/deps @@ -0,0 +1,17 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +automake +autoconf +expat +libffi diff --git a/wayland/default/make.sh b/wayland/default/make.sh new file mode 100755 index 0000000..3d9f1b7 --- /dev/null +++ b/wayland/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +make #-j$(nproc) diff --git a/wayland/default/patches-available/0100-remove-test-for-static-linking.patch b/wayland/default/patches-available/0100-remove-test-for-static-linking.patch new file mode 100644 index 0000000..db38f0c --- /dev/null +++ b/wayland/default/patches-available/0100-remove-test-for-static-linking.patch @@ -0,0 +1,121 @@ +the 'os wrappers' test fails when compiling statically with musl due to the +creation of a duplicate symbol. + +--- a/Makefile.in 2020-02-11 23:46:12.000000000 +0000 ++++ b/Makefile.in 2020-09-04 00:13:35.070000000 +0000 +@@ -146,7 +146,6 @@ + @ENABLE_LIBRARIES_TRUE@ fixed-test$(EXEEXT) \ + @ENABLE_LIBRARIES_TRUE@ interface-test$(EXEEXT) \ + @ENABLE_LIBRARIES_TRUE@ list-test$(EXEEXT) map-test$(EXEEXT) \ +-@ENABLE_LIBRARIES_TRUE@ os-wrappers-test$(EXEEXT) \ + @ENABLE_LIBRARIES_TRUE@ sanity-test$(EXEEXT) \ + @ENABLE_LIBRARIES_TRUE@ socket-test$(EXEEXT) \ + @ENABLE_LIBRARIES_TRUE@ queue-test$(EXEEXT) proxy-test$(EXEEXT) \ +@@ -393,12 +392,6 @@ + newsignal_test_OBJECTS = $(am_newsignal_test_OBJECTS) + @ENABLE_LIBRARIES_TRUE@newsignal_test_DEPENDENCIES = \ + @ENABLE_LIBRARIES_TRUE@ libtest-runner.la +-am__os_wrappers_test_SOURCES_DIST = tests/os-wrappers-test.c +-@ENABLE_LIBRARIES_TRUE@am_os_wrappers_test_OBJECTS = \ +-@ENABLE_LIBRARIES_TRUE@ tests/os-wrappers-test.$(OBJEXT) +-os_wrappers_test_OBJECTS = $(am_os_wrappers_test_OBJECTS) +-@ENABLE_LIBRARIES_TRUE@os_wrappers_test_DEPENDENCIES = \ +-@ENABLE_LIBRARIES_TRUE@ libtest-runner.la + am__protocol_logger_test_SOURCES_DIST = tests/protocol-logger-test.c + @ENABLE_LIBRARIES_TRUE@am_protocol_logger_test_OBJECTS = \ + @ENABLE_LIBRARIES_TRUE@ tests/protocol-logger-test.$(OBJEXT) +@@ -502,7 +495,6 @@ + tests/$(DEPDIR)/interface-test.Po tests/$(DEPDIR)/list-test.Po \ + tests/$(DEPDIR)/map-test.Po tests/$(DEPDIR)/message-test.Po \ + tests/$(DEPDIR)/newsignal-test.Po \ +- tests/$(DEPDIR)/os-wrappers-test.Po \ + tests/$(DEPDIR)/protocol-logger-test.Po \ + tests/$(DEPDIR)/proxy-test.Po tests/$(DEPDIR)/queue-test.Po \ + tests/$(DEPDIR)/resources-test.Po \ +@@ -575,7 +567,7 @@ + $(headers_test_SOURCES) $(nodist_headers_test_SOURCES) \ + $(interface_test_SOURCES) $(list_test_SOURCES) \ + $(map_test_SOURCES) $(message_test_SOURCES) \ +- $(newsignal_test_SOURCES) $(os_wrappers_test_SOURCES) \ ++ $(newsignal_test_SOURCES) \ + $(protocol_logger_test_SOURCES) $(proxy_test_SOURCES) \ + $(queue_test_SOURCES) $(resources_test_SOURCES) \ + $(sanity_test_SOURCES) $(signal_test_SOURCES) \ +@@ -603,7 +595,6 @@ + $(am__list_test_SOURCES_DIST) $(am__map_test_SOURCES_DIST) \ + $(am__message_test_SOURCES_DIST) \ + $(am__newsignal_test_SOURCES_DIST) \ +- $(am__os_wrappers_test_SOURCES_DIST) \ + $(am__protocol_logger_test_SOURCES_DIST) \ + $(am__proxy_test_SOURCES_DIST) $(am__queue_test_SOURCES_DIST) \ + $(am__resources_test_SOURCES_DIST) \ +@@ -1182,7 +1173,6 @@ + @ENABLE_LIBRARIES_TRUE@ display-test connection-test \ + @ENABLE_LIBRARIES_TRUE@ event-loop-test fixed-test \ + @ENABLE_LIBRARIES_TRUE@ interface-test list-test map-test \ +-@ENABLE_LIBRARIES_TRUE@ os-wrappers-test sanity-test \ + @ENABLE_LIBRARIES_TRUE@ socket-test queue-test proxy-test \ + @ENABLE_LIBRARIES_TRUE@ signal-test newsignal-test \ + @ENABLE_LIBRARIES_TRUE@ resources-test message-test \ +@@ -1271,8 +1261,6 @@ + @ENABLE_CPP_TEST_TRUE@@ENABLE_LIBRARIES_TRUE@cpp_compile_test_SOURCES = tests/cpp-compile-test.cpp + @ENABLE_LIBRARIES_TRUE@fixed_benchmark_SOURCES = tests/fixed-benchmark.c + @ENABLE_LIBRARIES_TRUE@fixed_benchmark_LDADD = $(RT_LIBS) +-@ENABLE_LIBRARIES_TRUE@os_wrappers_test_SOURCES = tests/os-wrappers-test.c +-@ENABLE_LIBRARIES_TRUE@os_wrappers_test_LDADD = libtest-runner.la + @ENABLE_LIBRARIES_TRUE@exec_fd_leak_checker_SOURCES = tests/exec-fd-leak-checker.c + @ENABLE_LIBRARIES_TRUE@exec_fd_leak_checker_LDADD = libtest-helpers.la + all: $(BUILT_SOURCES) config.h +@@ -1652,14 +1640,6 @@ + newsignal-test$(EXEEXT): $(newsignal_test_OBJECTS) $(newsignal_test_DEPENDENCIES) $(EXTRA_newsignal_test_DEPENDENCIES) + @rm -f newsignal-test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(newsignal_test_OBJECTS) $(newsignal_test_LDADD) $(LIBS) +-tests/os-wrappers-test.$(OBJEXT): tests/$(am__dirstamp) \ +- tests/$(DEPDIR)/$(am__dirstamp) +- +-os-wrappers-test$(EXEEXT): $(os_wrappers_test_OBJECTS) $(os_wrappers_test_DEPENDENCIES) $(EXTRA_os_wrappers_test_DEPENDENCIES) +- @rm -f os-wrappers-test$(EXEEXT) +- $(AM_V_CCLD)$(LINK) $(os_wrappers_test_OBJECTS) $(os_wrappers_test_LDADD) $(LIBS) +-tests/protocol-logger-test.$(OBJEXT): tests/$(am__dirstamp) \ +- tests/$(DEPDIR)/$(am__dirstamp) + + protocol-logger-test$(EXEEXT): $(protocol_logger_test_OBJECTS) $(protocol_logger_test_DEPENDENCIES) $(EXTRA_protocol_logger_test_DEPENDENCIES) + @rm -f protocol-logger-test$(EXEEXT) +@@ -1767,7 +1747,6 @@ + @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/map-test.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/message-test.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/newsignal-test.Po@am__quote@ # am--include-marker +-@AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/os-wrappers-test.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/protocol-logger-test.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/proxy-test.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/queue-test.Po@am__quote@ # am--include-marker +@@ -2426,13 +2405,6 @@ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +-os-wrappers-test.log: os-wrappers-test$(EXEEXT) +- @p='os-wrappers-test$(EXEEXT)'; \ +- b='os-wrappers-test'; \ +- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ +- --log-file $$b.log --trs-file $$b.trs \ +- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ +- "$$tst" $(AM_TESTS_FD_REDIRECT) + sanity-test.log: sanity-test$(EXEEXT) + @p='sanity-test$(EXEEXT)'; \ + b='sanity-test'; \ +@@ -2849,7 +2821,6 @@ + -rm -f tests/$(DEPDIR)/map-test.Po + -rm -f tests/$(DEPDIR)/message-test.Po + -rm -f tests/$(DEPDIR)/newsignal-test.Po +- -rm -f tests/$(DEPDIR)/os-wrappers-test.Po + -rm -f tests/$(DEPDIR)/protocol-logger-test.Po + -rm -f tests/$(DEPDIR)/proxy-test.Po + -rm -f tests/$(DEPDIR)/queue-test.Po +@@ -2945,7 +2916,6 @@ + -rm -f tests/$(DEPDIR)/map-test.Po + -rm -f tests/$(DEPDIR)/message-test.Po + -rm -f tests/$(DEPDIR)/newsignal-test.Po +- -rm -f tests/$(DEPDIR)/os-wrappers-test.Po + -rm -f tests/$(DEPDIR)/protocol-logger-test.Po + -rm -f tests/$(DEPDIR)/proxy-test.Po + -rm -f tests/$(DEPDIR)/queue-test.Po diff --git a/wayland/default/patches-available/0200-lffi-pkgconf.patch b/wayland/default/patches-available/0200-lffi-pkgconf.patch new file mode 100644 index 0000000..fa21be3 --- /dev/null +++ b/wayland/default/patches-available/0200-lffi-pkgconf.patch @@ -0,0 +1,16 @@ +--- a/src/wayland-client.pc.in 2020-02-11 23:46:03.000000000 +0000 ++++ b/src/wayland-client.pc.in 2020-10-12 22:12:37.840000000 +0000 +@@ -9,4 +9,4 @@ + Description: Wayland client side library + Version: @WAYLAND_VERSION@ + Cflags: -I${includedir} +-Libs: -L${libdir} -lwayland-client ++Libs: -L${libdir} -lwayland-client -lffi +--- a/src/wayland-server.pc.in 2020-02-11 23:46:03.000000000 +0000 ++++ b/src/wayland-server.pc.in 2020-10-12 22:12:43.180000000 +0000 +@@ -9,4 +9,4 @@ + Description: Server side implementation of the Wayland protocol + Version: @WAYLAND_VERSION@ + Cflags: -I${includedir} +-Libs: -L${libdir} -lwayland-server ++Libs: -L${libdir} -lwayland-server -lffi diff --git a/wayland/default/patches-enabled/0100-remove-test-for-static-linking.patch b/wayland/default/patches-enabled/0100-remove-test-for-static-linking.patch new file mode 120000 index 0000000..c918650 --- /dev/null +++ b/wayland/default/patches-enabled/0100-remove-test-for-static-linking.patch @@ -0,0 +1 @@ +../patches-available/0100-remove-test-for-static-linking.patch \ No newline at end of file diff --git a/wayland/default/patches-enabled/0200-lffi-pkgconf.patch b/wayland/default/patches-enabled/0200-lffi-pkgconf.patch new file mode 120000 index 0000000..3d058ca --- /dev/null +++ b/wayland/default/patches-enabled/0200-lffi-pkgconf.patch @@ -0,0 +1 @@ +../patches-available/0200-lffi-pkgconf.patch \ No newline at end of file diff --git a/webkit2gtk/default/APKBUILD b/webkit2gtk/default/APKBUILD new file mode 100644 index 0000000..74a28e4 --- /dev/null +++ b/webkit2gtk/default/APKBUILD @@ -0,0 +1,243 @@ +# Contributor: Rasmus Thomsen +# Contributor: Sergei Lukin +# Contributor: Jiri Horner +# Maintainer: Rasmus Thomsen +pkgname=webkit2gtk +pkgver=2.30.2 +pkgrel=0 +pkgdesc="Portable web rendering engine WebKit for GTK+" +url="https://webkitgtk.org/" +arch="all !mips !mips64" +license="LGPL-2.0-or-later AND BSD-2-Clause" +depends="bubblewrap xdg-dbus-proxy dbus:org.freedesktop.Secrets" +makedepends=" + bison + cmake + enchant2-dev + flex + geoclue-dev + gnutls-dev + gobject-introspection-dev + gperf + gst-plugins-bad-dev + gst-plugins-base-dev + gstreamer-dev + gtk+3.0-dev + gtk-doc + hyphen-dev + icu-dev + libgcrypt-dev + libjpeg-turbo-dev + libnotify-dev + libpng-dev + libseccomp-dev + libsecret-dev + libsoup-dev + libwebp-dev + libxml2-dev + libxslt-dev + libxt-dev + mesa-dev + openjpeg-dev + openjpeg-tools + pango-dev + paxmark + python3 + ruby + samurai + sqlite-dev + woff2-dev + ruby-json + libwpe-dev + libwpebackend-fdo-dev + " +replaces="webkit" +options="!check" # upstream doesn't package them in release tarballs: Tools/Scripts/run-gtk-tests: Command not found +subpackages="$pkgname-dev $pkgname-lang $pkgname-dbg" +source="https://webkitgtk.org/releases/webkitgtk-$pkgver.tar.xz + fix-fast-memory-disabled.patch + musl-fixes.patch + fix-openjpeg.patch + lower-stack-usage.patch + use-versioned-libwpe.patch + " +builddir="$srcdir/webkitgtk-$pkgver" + +# secfixes: +# 2.28.4-r0: +# - CVE-2020-9862 +# - CVE-2020-9893 +# - CVE-2020-9894 +# - CVE-2020-9895 +# - CVE-2020-9915 +# - CVE-2020-9925 +# 2.28.3-r0: +# - CVE-2020-9802 +# - CVE-2020-9803 +# - CVE-2020-9805 +# - CVE-2020-9806 +# - CVE-2020-9807 +# - CVE-2020-9843 +# - CVE-2020-9850 +# - CVE-2020-13753 +# 2.28.1-r0: +# - CVE-2020-11793 +# 2.28.0-r0: +# - CVE-2020-10018 +# 2.26.3-r0: +# - CVE-2019-8835 +# - CVE-2019-8844 +# - CVE-2019-8846 +# 2.26.2-r0: +# - CVE-2019-8812 +# - CVE-2019-8814 +# 2.26.1-r0: +# - CVE-2019-8783 +# - CVE-2019-8811 +# - CVE-2019-8813 +# - CVE-2019-8816 +# - CVE-2019-8819 +# - CVE-2019-8820 +# - CVE-2019-8823 +# 2.26.0-r0: +# - CVE-2019-8625 +# - CVE-2019-8710 +# - CVE-2019-8720 +# - CVE-2019-8743 +# - CVE-2019-8764 +# - CVE-2019-8766 +# - CVE-2019-8769 +# - CVE-2019-8771 +# - CVE-2019-8782 +# - CVE-2019-8815 +# 2.24.4-r0: +# - CVE-2019-8674 +# - CVE-2019-8707 +# - CVE-2019-8719 +# - CVE-2019-8733 +# - CVE-2019-8763 +# - CVE-2019-8765 +# - CVE-2019-8768 +# - CVE-2019-8821 +# - CVE-2019-8822 +# 2.24.3-r0: +# - CVE-2019-8644 +# - CVE-2019-8649 +# - CVE-2019-8658 +# - CVE-2019-8666 +# - CVE-2019-8669 +# - CVE-2019-8671 +# - CVE-2019-8672 +# - CVE-2019-8673 +# - CVE-2019-8676 +# - CVE-2019-8677 +# - CVE-2019-8678 +# - CVE-2019-8679 +# - CVE-2019-8680 +# - CVE-2019-8681 +# - CVE-2019-8683 +# - CVE-2019-8684 +# - CVE-2019-8686 +# - CVE-2019-8687 +# - CVE-2019-8688 +# - CVE-2019-8689 +# - CVE-2019-8690 +# - CVE-2019-8726 +# 2.24.2-r0: +# - CVE-2019-8735 +# 2.24.1-r0: +# - CVE-2019-6251 +# - CVE-2019-8506 +# - CVE-2019-8524 +# - CVE-2019-8535 +# - CVE-2019-8536 +# - CVE-2019-8544 +# - CVE-2019-8551 +# - CVE-2019-8558 +# - CVE-2019-8559 +# - CVE-2019-8563 +# - CVE-2019-11070 +# 2.22.7-r0: +# - CVE-2018-4437 +# - CVE-2019-6212 +# - CVE-2019-6215 +# - CVE-2019-6216 +# - CVE-2019-6217 +# - CVE-2019-6227 +# - CVE-2019-6229 +# 2.22.4-r0: +# - CVE-2018-4372 +# 2.18.4-r0: +# - CVE-2017-7156 +# - CVE-2017-7157 +# - CVE-2017-13856 +# - CVE-2017-13866 +# - CVE-2017-13870 +# 2.14.5-r0: +# - CVE-2017-2350 +# - CVE-2017-2354 +# - CVE-2017-2355 +# - CVE-2017-2356 +# - CVE-2017-2362 +# - CVE-2017-2363 +# - CVE-2017-2364 +# - CVE-2017-2365 +# - CVE-2017-2366 +# - CVE-2017-2369 +# - CVE-2017-2371 +# - CVE-2017-2373 + +build() { + local _archopt= + case "$CARCH" in + # disable _FORTIFY_SOURCE to work around: + # cc1plus: out of memory allocating 65536 bytes after a total of 3131101184 bytes + x86) CXXFLAGS="$CXXFLAGS -U_FORTIFY_SOURCE";; + armhf|ppc64le|s390x) _archopt="-DENABLE_JIT=OFF";; + esac + + # reduce memory usage on 32 bit + # https://bugs.webkit.org/show_bug.cgi?id=199272 + export CXXFLAGS="$CXXFLAGS -g1" + + mkdir build + cd build + # disable gold usage since it can't find pthreads with it enabled + cmake -GNinja \ + -DPORT=GTK \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DCMAKE_SKIP_RPATH=ON \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DLIB_INSTALL_DIR=/usr/lib \ + -DENABLE_GTKDOC=OFF \ + -DENABLE_GEOLOCATION=ON \ + -DENABLE_SAMPLING_PROFILER=OFF \ + -DENABLE_MINIBROWSER=ON \ + -DUSE_WPE_RENDERER=ON \ + -DUSE_WOFF2=ON \ + -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ + -DUSE_LD_GOLD=OFF \ + -DUSE_SYSTEMD=OFF \ + $_archopt \ + .. + # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=923476 + ninja JavaScriptCore-4-gir + ninja +} + +check() { + ninja -C "$builddir"/build check +} + +package() { + DESTDIR="$pkgdir" ninja -C "$builddir"/build install + # needed for JIT + paxmark -m "$pkgdir"/usr/libexec/webkit2gtk-4.0/WebKitWebProcess +} + +sha512sums="caecd765ce92942fc07d0d18b834b8f1acb13e6dc1e504ed9f104862285a6032a8824ab98a7439e6f8664d83dacb4ece2011f4ec822308e5b40d1f82ca601243 webkitgtk-2.30.2.tar.xz +e1537b9937af1cb936669d405993a52204cb9968b8b3161cb12a3f3f1343c260088c9490fcd7a7deeab6dbabdb5f7ce7e6cb2f857b9f0a4205aba6db2b11fb20 fix-fast-memory-disabled.patch +4c0093e4a38c8ceb3ac92b94539ec1417241814a84abd157442f53f710ecbaf9c2345e258b8ad86d5e0908cacbfca6cad28dedd11c127756b65428f359ba9fcc musl-fixes.patch +c517c012f5630ef6be5be7d9592c5e042a070f849a141859edefa7984acb98dbd0d718fe6613cd35ba3b7d8530beebcc7408fd077cd914ed335c5e524e9e746a fix-openjpeg.patch +7d883fc35d0c6bfaa6bff8e9dbcaeaa9b7d7322852e874d8acc78d41a5aad5595650ec62444048e43aa349471cb16e5aed29e684207fc8d3421030e878ba1fa9 lower-stack-usage.patch +1e24108a6d4295febe0e12a1f8fc924a99b957883d77abae0813d704e9a07fb99cc980dff9e41a3f0ff70364a3ef4508355c138dca708b4362fa9978d2261a32 use-versioned-libwpe.patch" diff --git a/webkit2gtk/default/conf.sh b/webkit2gtk/default/conf.sh new file mode 100755 index 0000000..be78f32 --- /dev/null +++ b/webkit2gtk/default/conf.sh @@ -0,0 +1,49 @@ +#!/bin/sh -e + +case "$ARCH" in + # disable _FORTIFY_SOURCE to work around: + # cc1plus: out of memory allocating 65536 bytes after a total of 3131101184 bytes + x86) CXXFLAGS="$CXXFLAGS -U_FORTIFY_SOURCE";; + armhf|ppc64le|s390x) _archopt="-DENABLE_JIT=OFF";; +esac + +# reduce memory usage on 32 bit +# https://bugs.webkit.org/show_bug.cgi?id=199272 +export CXXFLAGS="$CXXFLAGS -g1" + +cd ../build + +# ld gold usage is disabled since cmake can't find pthreads with it enabled. +cmake -GNinja \ + -DPORT=GTK \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DCMAKE_SKIP_RPATH=ON \ + -DCMAKE_INSTALL_PREFIX="$PREFIX" \ + -DLIB_INSTALL_DIR=/lib \ + -DENABLE_BUBBLEWRAP_SANDBOX=ON \ + -DENABLE_EGL=ON \ + -DENABLE_GLES2=ON \ + -DENABLE_GLES2_DEFAULT=ON \ + -DUSE_OPENGL_ES=ON \ + -DUSE_OPENGL=OFF \ + -DENABLE_INTROSPECTION=OFF \ + -DENABLE_GTKDOC=OFF \ + -DENABLE_GEOLOCATION=OFF \ + -DENABLE_SPELLCHECK=OFF \ + -DENABLE_SAMPLING_PROFILER=OFF \ + -DENABLE_MINIBROWSER=ON \ + -DENABLE_WAYLAND_TARGET=ON \ + -DENABLE_X11_TARGET=OFF \ + -DUSE_LIBEPOXY=ON \ + -DUSE_LIBNOTIFY=OFF \ + -DUSE_LIBHYPHEN=OFF \ + -DUSE_WPE_RENDERER=ON \ + -DUSE_WOFF2=OFF \ + -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ + -DUSE_LD_GOLD=OFF \ + -DUSE_SYSTEMD=OFF \ + $_archopt \ + ../src + #-DENABLE_GLES2=ON \ + #-DENABLE_GLES2_DEFAULT=ON \ + #-DENABLE_ACCELERATED_2D_CANVAS=ON \ diff --git a/webkit2gtk/default/deps b/webkit2gtk/default/deps new file mode 100644 index 0000000..ed5df14 --- /dev/null +++ b/webkit2gtk/default/deps @@ -0,0 +1,97 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +ldd +perl-dynamic +m4 +flex +bison +libffi +bzip2 +zlib +xz +libpng +libwebp +libjpeg-turbo +openjpeg +pixman +cmake +tls-certs +glib +gobject-introspection-dynamic +libproxy +libgcrypt +libgpg-error +p11-kit +gsettings-desktop-schemas +libtasn1 +libunistring +libidn2 +bearssl +libressl +nettle +gnutls +libcap +libxml2 +expat +graphviz +libxslt +vala +libpsl +sqlite +brotli >= 1.0.9 +diffutils +file +libsoup +libsecret +libseccomp +eudev +libgudev +gperf +atk +gdk-pixbuf +libxkbcommon-dynamic +gtk-dynamic >= 3.0.0 +gnu-readline +libucontext +libyaml +ruby +python3-dynamic +libdrm-dynamic +mesa-dynamic +libepoxy +fribidi +icu +harfbuzz +freetype-harfbuzz +fontconfig +pango +cairo +wayland +wayland-protocols +bubblewrap +dbus +xdg-dbus-proxy +gstreamer +alsa-lib +cdparanoia +libogg +libvorbis +libtheora +opus +orc +gst-plugins-base +samurai +gettext +libwpe +libwpebackend-fdo +at-spi2-core diff --git a/webkit2gtk/default/env.sh b/webkit2gtk/default/env.sh new file mode 100644 index 0000000..738c9d4 --- /dev/null +++ b/webkit2gtk/default/env.sh @@ -0,0 +1,22 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS -D__WORDSIZE=64 -DLITTLE_ENDIAN" +CXXFLAGS="$SHARED_CXXFLAGS -D__WORDSIZE=64 -DLITTLE_ENDIAN" +LDFLAGS="$SHARED_LDFLAGS -lEGL -lGLESv2" # WHY? this just SUDDENLY became necessary. :/ + +# it's strange and less than ideal that all this is necessary. +# this likely indicates something in the stack is broken, and a cleaner +# solution should be possible. for the time-being, removing libepoxy from the +# build stack makes all these manual include flags necessary. libepoxy has been +# removed because it seems to result in webkit2gtk insisting on the OPENGL_API +# instead of the OPENGL_ES_API. (grep around for those in the source code for a +# clearer idea of what's going on. those macros are the same in libepoxy, mesa, +# and webkit2gtk.) +#CXXFLAGS="$CXXFLAGS -I/include/gtk-3.0/" +#CXXFLAGS="$CXXFLAGS -I/include/glib-2.0 -I/lib/glib-2.0/include" +#CXXFLAGS="$CXXFLAGS -I/include/pango-1.0" +#CXXFLAGS="$CXXFLAGS -I/include/harfbuzz" +#CXXFLAGS="$CXXFLAGS -I/include/cairo" +#CXXFLAGS="$CXXFLAGS -I/include/gdk-pixbuf-2.0" diff --git a/webkit2gtk/default/inst.sh b/webkit2gtk/default/inst.sh new file mode 100755 index 0000000..6df47c5 --- /dev/null +++ b/webkit2gtk/default/inst.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +LDFLAGS="$SHARED_LDFLAGS -lGLESv2" \ +samu -C ../build install + +## needed if the WebKit JIT and SE linux kernel extensions are both turned on. +#paxmark -m "$pkgdir"/usr/libexec/webkit2gtk-4.0/WebKitWebProcess diff --git a/webkit2gtk/default/make.sh b/webkit2gtk/default/make.sh new file mode 100755 index 0000000..11412b7 --- /dev/null +++ b/webkit2gtk/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -j$(nproc) -C ../build diff --git a/webkit2gtk/default/patches-available/0100-suckless-ln-compat.patch b/webkit2gtk/default/patches-available/0100-suckless-ln-compat.patch new file mode 100644 index 0000000..a5304d3 --- /dev/null +++ b/webkit2gtk/default/patches-available/0100-suckless-ln-compat.patch @@ -0,0 +1,42 @@ +diff -ur 2.30.2/Source/JavaScriptCore/GLib.cmake 2.30.2-b/Source/JavaScriptCore/GLib.cmake +--- a/Source/JavaScriptCore/GLib.cmake 2020-08-12 09:17:52.000000000 +0000 ++++ b/Source/JavaScriptCore/GLib.cmake 2020-10-25 17:07:11.010000000 +0000 +@@ -42,7 +42,7 @@ + add_custom_command( + OUTPUT ${FORWARDING_HEADERS_DIR}/JavaScriptCore/glib/jsc + DEPENDS ${JAVASCRIPTCORE_DIR}/API/glib +- COMMAND ln -n -s -f ${JAVASCRIPTCORE_DIR}/API/glib ${FORWARDING_HEADERS_DIR}/JavaScriptCore/glib/jsc ++ COMMAND ln -s -f ${JAVASCRIPTCORE_DIR}/API/glib ${FORWARDING_HEADERS_DIR}/JavaScriptCore/glib/jsc + VERBATIM + ) + add_custom_target(JSC-fake-api-headers +diff -ur 2.30.2/Source/WebKit/PlatformGTK.cmake 2.30.2-b/Source/WebKit/PlatformGTK.cmake +--- a/Source/WebKit/PlatformGTK.cmake 2020-09-11 08:11:29.000000000 +0000 ++++ b/Source/WebKit/PlatformGTK.cmake 2020-10-25 17:05:54.720000000 +0000 +@@ -846,22 +846,22 @@ + add_custom_command( + OUTPUT ${FORWARDING_HEADERS_WEBKIT2GTK_DIR}/webkit2 + DEPENDS ${WEBKIT_DIR}/UIProcess/API/gtk +- COMMAND ln -n -s -f ${WEBKIT_DIR}/UIProcess/API/gtk ${FORWARDING_HEADERS_WEBKIT2GTK_DIR}/webkit2 ++ COMMAND ln -s -f ${WEBKIT_DIR}/UIProcess/API/gtk ${FORWARDING_HEADERS_WEBKIT2GTK_DIR}/webkit2 + ) + add_custom_command( + OUTPUT ${FORWARDING_HEADERS_WEBKIT2GTK_VERSIONED_DIR}/webkit2 + DEPENDS ${WEBKIT_DIR}/UIProcess/API/gtk${GTK_API_VERSION} +- COMMAND ln -n -s -f ${WEBKIT_DIR}/UIProcess/API/gtk${GTK_API_VERSION} ${FORWARDING_HEADERS_WEBKIT2GTK_VERSIONED_DIR}/webkit2 ++ COMMAND ln -s -f ${WEBKIT_DIR}/UIProcess/API/gtk${GTK_API_VERSION} ${FORWARDING_HEADERS_WEBKIT2GTK_VERSIONED_DIR}/webkit2 + ) + add_custom_command( + OUTPUT ${FORWARDING_HEADERS_WEBKIT2GTK_EXTENSION_DIR}/webkit2 + DEPENDS ${WEBKIT_DIR}/WebProcess/InjectedBundle/API/gtk +- COMMAND ln -n -s -f ${WEBKIT_DIR}/WebProcess/InjectedBundle/API/gtk ${FORWARDING_HEADERS_WEBKIT2GTK_EXTENSION_DIR}/webkit2 ++ COMMAND ln -s -f ${WEBKIT_DIR}/WebProcess/InjectedBundle/API/gtk ${FORWARDING_HEADERS_WEBKIT2GTK_EXTENSION_DIR}/webkit2 + ) + add_custom_command( + OUTPUT ${FORWARDING_HEADERS_WEBKIT2GTK_EXTENSION_DIR}/webkitdom + DEPENDS ${WEBKIT_DIR}/WebProcess/InjectedBundle/API/gtk/DOM +- COMMAND ln -n -s -f ${WEBKIT_DIR}/WebProcess/InjectedBundle/API/gtk/DOM ${FORWARDING_HEADERS_WEBKIT2GTK_EXTENSION_DIR}/webkitdom ++ COMMAND ln -s -f ${WEBKIT_DIR}/WebProcess/InjectedBundle/API/gtk/DOM ${FORWARDING_HEADERS_WEBKIT2GTK_EXTENSION_DIR}/webkitdom + ) + add_custom_target(WebKit-fake-api-headers + DEPENDS ${FORWARDING_HEADERS_WEBKIT2GTK_DIR}/webkit2 diff --git a/webkit2gtk/default/patches-available/fix-fast-memory-disabled.patch b/webkit2gtk/default/patches-available/fix-fast-memory-disabled.patch new file mode 100644 index 0000000..9d2747c --- /dev/null +++ b/webkit2gtk/default/patches-available/fix-fast-memory-disabled.patch @@ -0,0 +1,14 @@ +--- a/Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp ++++ b/Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp +@@ -118,7 +118,11 @@ void unregisterCode(void* start, void* e + + bool fastMemoryEnabled() + { ++#if ENABLE(WEBASSEMBLY_FAST_MEMORY) + return fastHandlerInstalled; ++#else ++ return false; ++#endif // ENABLE(WEBASSEMBLY_FAST_MEMORY) + } + + void enableFastMemory() diff --git a/webkit2gtk/default/patches-available/fix-openjpeg.patch b/webkit2gtk/default/patches-available/fix-openjpeg.patch new file mode 100644 index 0000000..221f060 --- /dev/null +++ b/webkit2gtk/default/patches-available/fix-openjpeg.patch @@ -0,0 +1,11 @@ +--- a/Source/WebCore/platform/image-decoders/jpeg2000/JPEG2000ImageDecoder.cpp ++++ b/Source/WebCore/platform/image-decoders/jpeg2000/JPEG2000ImageDecoder.cpp +@@ -28,7 +28,7 @@ + + #if USE(OPENJPEG) + +-#include ++#include + + namespace WebCore { + diff --git a/webkit2gtk/default/patches-available/lower-stack-usage.patch b/webkit2gtk/default/patches-available/lower-stack-usage.patch new file mode 100644 index 0000000..71955f3 --- /dev/null +++ b/webkit2gtk/default/patches-available/lower-stack-usage.patch @@ -0,0 +1,17 @@ +diff --git a/Source/JavaScriptCore/runtime/OptionsList.h b/Source/JavaScriptCore/runtime/OptionsList.h +index 41cab118..2ac66c7a 100644 +--- a/Source/JavaScriptCore/runtime/OptionsList.h ++++ b/Source/JavaScriptCore/runtime/OptionsList.h +@@ -90,9 +90,9 @@ constexpr bool enableWebAssemblyStreamingApi = false; + \ + v(Bool, reportMustSucceedExecutableAllocations, false, Normal, nullptr) \ + \ +- v(Unsigned, maxPerThreadStackUsage, 5 * MB, Normal, "Max allowed stack usage by the VM") \ +- v(Unsigned, softReservedZoneSize, 128 * KB, Normal, "A buffer greater than reservedZoneSize that reserves space for stringifying exceptions.") \ +- v(Unsigned, reservedZoneSize, 64 * KB, Normal, "The amount of stack space we guarantee to our clients (and to interal VM code that does not call out to clients).") \ ++ v(Unsigned, maxPerThreadStackUsage, 80 * KB , Normal, "Max allowed stack usage by the VM") \ ++ v(Unsigned, softReservedZoneSize, 32 * KB, Normal, "A buffer greater than reservedZoneSize that reserves space for stringifying exceptions.") \ ++ v(Unsigned, reservedZoneSize, 16 * KB, Normal, "The amount of stack space we guarantee to our clients (and to interal VM code that does not call out to clients).") \ + \ + v(Bool, crashIfCantAllocateJITMemory, false, Normal, nullptr) \ + v(Unsigned, jitMemoryReservationSize, 0, Normal, "Set this number to change the executable allocation size in ExecutableAllocatorFixedVMPool. (In bytes.)") \ diff --git a/webkit2gtk/default/patches-available/musl-fixes.patch b/webkit2gtk/default/patches-available/musl-fixes.patch new file mode 100644 index 0000000..e28d9a5 --- /dev/null +++ b/webkit2gtk/default/patches-available/musl-fixes.patch @@ -0,0 +1,68 @@ +--- a/Source/JavaScriptCore/runtime/MachineContext.h ++++ b/Source/JavaScriptCore/runtime/MachineContext.h +@@ -188,7 +188,7 @@ static inline void*& stackPointerImpl(mcontext_t& machineContext) + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) ++#elif OS(FUCHSIA) || defined(__linux__) + + #if CPU(X86) + return reinterpret_cast((uintptr_t&) machineContext.gregs[REG_ESP]); +@@ -335,7 +335,7 @@ static inline void*& framePointerImpl(mcontext_t& machineContext) + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) ++#elif OS(FUCHSIA) || defined(__linux__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86) +@@ -482,7 +482,7 @@ static inline void*& instructionPointerImpl(mcontext_t& machineContext) + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) ++#elif OS(FUCHSIA) || defined(__linux__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86) +@@ -639,7 +639,7 @@ inline void*& argumentPointer<1>(mcontext_t& machineContext) + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) ++#elif OS(FUCHSIA) || defined(__linux__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86) +@@ -756,7 +756,7 @@ inline void*& llintInstructionPointer(mcontext_t& machineContext) + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) ++#elif OS(FUCHSIA) || defined(__linux__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86) + +--- a/Source/WebCore/xml/XPathGrammar.cpp ++++ b/Source/WebCore/xml/XPathGrammar.cpp +@@ -966,7 +966,7 @@ int yydebug; + #if YYERROR_VERBOSE + + # ifndef yystrlen +-# if defined __GLIBC__ && defined _STRING_H ++# if defined __linux__ && defined _STRING_H + # define yystrlen strlen + # else + /* Return the length of YYSTR. */ +@@ -989,7 +989,7 @@ yystrlen (yystr) + # endif + + # ifndef yystpcpy +-# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE ++# if defined __linux__ && defined _STRING_H && defined _GNU_SOURCE + # define yystpcpy stpcpy + # else + /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in diff --git a/webkit2gtk/default/patches-available/use-versioned-libwpe.patch b/webkit2gtk/default/patches-available/use-versioned-libwpe.patch new file mode 100644 index 0000000..66bc799 --- /dev/null +++ b/webkit2gtk/default/patches-available/use-versioned-libwpe.patch @@ -0,0 +1,13 @@ +diff --git a/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp b/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp +index 180f392a..85639a11 100644 +--- a/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp ++++ b/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp +@@ -115,7 +115,7 @@ + #if PLATFORM(WAYLAND) + if (WebCore::PlatformDisplay::sharedDisplay().type() == WebCore::PlatformDisplay::Type::Wayland) { + #if USE(WPE_RENDERER) +- wpe_loader_init("libWPEBackend-fdo-1.0.so"); ++ wpe_loader_init("libWPEBackend-fdo-1.0.so.1"); + if (AcceleratedBackingStoreWayland::checkRequirements()) { + parameters.hostClientFileDescriptor = wpe_renderer_host_create_client(); + parameters.implementationLibraryName = FileSystem::fileSystemRepresentation(wpe_loader_get_loaded_implementation_library_name()); diff --git a/webkit2gtk/default/patches-enabled/0100-suckless-ln-compat.patch b/webkit2gtk/default/patches-enabled/0100-suckless-ln-compat.patch new file mode 120000 index 0000000..58b45ac --- /dev/null +++ b/webkit2gtk/default/patches-enabled/0100-suckless-ln-compat.patch @@ -0,0 +1 @@ +../patches-available/0100-suckless-ln-compat.patch \ No newline at end of file diff --git a/webkit2gtk/default/patches-enabled/fix-fast-memory-disabled.patch b/webkit2gtk/default/patches-enabled/fix-fast-memory-disabled.patch new file mode 120000 index 0000000..6c2b06c --- /dev/null +++ b/webkit2gtk/default/patches-enabled/fix-fast-memory-disabled.patch @@ -0,0 +1 @@ +../patches-available/fix-fast-memory-disabled.patch \ No newline at end of file diff --git a/webkit2gtk/default/patches-enabled/fix-openjpeg.patch b/webkit2gtk/default/patches-enabled/fix-openjpeg.patch new file mode 120000 index 0000000..3fbfbd4 --- /dev/null +++ b/webkit2gtk/default/patches-enabled/fix-openjpeg.patch @@ -0,0 +1 @@ +../patches-available/fix-openjpeg.patch \ No newline at end of file diff --git a/webkit2gtk/default/patches-enabled/lower-stack-usage.patch b/webkit2gtk/default/patches-enabled/lower-stack-usage.patch new file mode 120000 index 0000000..2f97552 --- /dev/null +++ b/webkit2gtk/default/patches-enabled/lower-stack-usage.patch @@ -0,0 +1 @@ +../patches-available/lower-stack-usage.patch \ No newline at end of file diff --git a/webkit2gtk/default/patches-enabled/musl-fixes.patch b/webkit2gtk/default/patches-enabled/musl-fixes.patch new file mode 120000 index 0000000..915cc3a --- /dev/null +++ b/webkit2gtk/default/patches-enabled/musl-fixes.patch @@ -0,0 +1 @@ +../patches-available/musl-fixes.patch \ No newline at end of file diff --git a/webkit2gtk/default/patches-enabled/use-versioned-libwpe.patch b/webkit2gtk/default/patches-enabled/use-versioned-libwpe.patch new file mode 120000 index 0000000..46bf443 --- /dev/null +++ b/webkit2gtk/default/patches-enabled/use-versioned-libwpe.patch @@ -0,0 +1 @@ +../patches-available/use-versioned-libwpe.patch \ No newline at end of file diff --git a/weston/default/APKBUILD b/weston/default/APKBUILD new file mode 100644 index 0000000..18fbc62 --- /dev/null +++ b/weston/default/APKBUILD @@ -0,0 +1,129 @@ +# Contributor: Sören Tempel +# Maintainer: Valery Kartel +pkgname=weston +pkgver=9.0.0 +pkgrel=0 +_libname=lib$pkgname +_libdir=$_libname-${pkgver%%.*} +pkgdesc="The reference Wayland server" +url="https://wayland.freedesktop.org/" +arch="all !s390x !ppc64le" +license="MIT" +makedepends="wayland-protocols libxkbcommon-dev xkeyboard-config + libinput-dev libunwind-dev mtdev-dev libxcursor-dev glu-dev + pango-dev colord-dev libwebp-dev libva-dev dbus-dev + linux-pam-dev wayland-dev libevdev-dev libjpeg-turbo-dev + freerdp-dev lcms2-dev gstreamer-dev gst-plugins-base-dev meson + elogind-dev + " +_cms="cms-colord cms-static" +_shell="shell-desktop shell-fullscreen shell-ivi" +_client="info terminal wcap-decode" +_backend="backend-drm backend-fbdev backend-headless + backend-x11 backend-wayland backend-rdp + " +for _sub in $_cms $_shell $_client $_backend; do + subpackages="$subpackages $pkgname-$_sub:_sub" +done +subpackages="$pkgname-dev $pkgname-doc $subpackages + $pkgname-clients $_libname-desktop:_libd $_libname:libs + $pkgname-xwayland $pkgname-desktop-x11:_x11:noarch + " +source="https://wayland.freedesktop.org/releases/weston-$pkgver.tar.xz + timespec.patch + missing-fnctl_h.patch + " +# weston-launch requires suid +options="!check suid" +install="$pkgname.pre-install" + +build() { + abuild-meson \ + -Dlauncher-logind=true \ + -Dsystemd=false \ + -Dsimple-dmabuf-drm=auto \ + -Dpipewire=false \ + build + meson compile ${JOBS:+-j ${JOBS}} -C build +} + +# Does not run through, see also: +# https://github.com/alpinelinux/aports/pull/1689 +check() { + ninja -C "$builddir"/build test +} + +package() { + DESTDIR="$pkgdir" ninja -C "$builddir"/build install + + mkdir -p "$pkgdir"/usr/lib + mv "$pkgdir"/usr/share/pkgconfig/* "$pkgdir"/usr/lib/pkgconfig/ +} + +libs() { + depends="xkeyboard-config" + default_libs +} + +_libd() { + pkgdesc="Desktop shells abstraction library for libweston compositors" + mkdir -p "$subpkgdir"/usr/lib + mv "$pkgdir"/usr/lib/*desktop* "$subpkgdir"/usr/lib +} + +clients() { + pkgdesc="Weston example clients" + mkdir -p "$subpkgdir"/usr/bin + mv "$pkgdir"/usr/bin/$pkgname-* "$subpkgdir"/usr/bin +} + +xwayland() { + pkgdesc="Wayland module to run X Clients" + mkdir -p "$subpkgdir"/usr/lib/$_libdir + mv "$pkgdir"/usr/lib/$_libdir/xwayland.so \ + "$subpkgdir"/usr/lib/$_libdir +} + +_x11() { + pkgdesc="Weston desktop helper pack (x11 backend)" + depends="$pkgname $pkgname-shell-desktop $pkgname-xwayland + $pkgname-backend-x11 $pkgname-terminal" + mkdir -p "$subpkgdir" +} + +_sub() { + local name path + case $subpkgname in + *-cms-*) + name=${subpkgname#$pkgname-cms-} + path=/usr/lib/$pkgname + pkgdesc="Weston CMS module: $name" + name=cms-$name.so + ;; + *-shell-*) + name=${subpkgname#$pkgname-shell-} + path=/usr/lib/$pkgname + pkgdesc="Weston shell: $name" + name=*$name-shell* + ;; + *-backend-*) + name=${subpkgname#$pkgname-backend-} + path=/usr/lib/$_libdir + pkgdesc="Weston backend: $name" + name=$name-backend.so + grep -q cairo "$pkgdir"/$path/$name && depends="mesa-dri-swrast" + ;; + *) + name=$subpkgname + path=/usr/bin + [ -x "$pkgdir"/$path/$name ] || name=${subpkgname#$pkgname-} + pkgdesc="Weston client: $name" + ;; + esac + mkdir -p "$subpkgdir"/$path + mv "$pkgdir"/$path/$name "$subpkgdir"/$path +} + +sha512sums="ccc263f8279b7b23e5c593b4a8a023de2c3dc178b1b8d6593599171770bcfe97608de9fcb77aa1cab39255451d289d323e51c317dae190c7641282e085b84f90 weston-9.0.0.tar.xz +3e596af4bf0a6b06a5d28376043db111fe1c161ead04501fa6d2c667b5a21889cca3354d1bdc4ac794841bef68ed5e1a7a84e44e7d510e947e3673195706caed timespec.patch +57c1475a7a1593e26d4fae37a3cc391b43b8ec03ecf0a9da9024b0e5660565cab929bb38520bb51077f6a37a9547448b38655c1e3b9ed8237eefe81a650d5be3 missing-fnctl_h.patch" diff --git a/weston/default/conf.sh b/weston/default/conf.sh new file mode 100755 index 0000000..92dc8bd --- /dev/null +++ b/weston/default/conf.sh @@ -0,0 +1,8 @@ +#!/bin/sh -e + +meson \ + -Dlauncher-logind=false \ + -Dsystemd=false \ + -Dsimple-dmabuf-drm=auto \ + -Dpipewire=false \ + ../build diff --git a/weston/default/deps b/weston/default/deps new file mode 100644 index 0000000..f3bc4c4 --- /dev/null +++ b/weston/default/deps @@ -0,0 +1,48 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +wayland +wayland-protocols +glib +gobject-introspection-dynamic +libxkbcommon +mtdev +eudev +libevdev +libinput +pixman +zlib +libffi +libpng +libwebp +libdrm +libepoxy +mesa-dynamic +gstreamer +gst-plugins-base +pango +harfbuzz +freetype-harfbuzz +libxml2 +expat +fontconfig +cairo +libjpeg-turbo diff --git a/weston/default/env.sh b/weston/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/weston/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/weston/default/inst.sh b/weston/default/inst.sh new file mode 100755 index 0000000..5013ba7 --- /dev/null +++ b/weston/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build install diff --git a/weston/default/make.sh b/weston/default/make.sh new file mode 100755 index 0000000..0af5a37 --- /dev/null +++ b/weston/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +meson compile -j$(nproc) -C ../build diff --git a/weston/default/patches-available/missing-fnctl_h.patch b/weston/default/patches-available/missing-fnctl_h.patch new file mode 100644 index 0000000..bb6a7b2 --- /dev/null +++ b/weston/default/patches-available/missing-fnctl_h.patch @@ -0,0 +1,15 @@ +Upstream: Yes +Reason: Fixes compilation on musl + +diff --git a/tests/weston-test-fixture-compositor.c b/tests/weston-test-fixture-compositor.c +index 0c9855f..e0e32c9 100644 +--- a/tests/weston-test-fixture-compositor.c ++++ b/tests/weston-test-fixture-compositor.c +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + + #include "shared/helpers.h" + #include "weston-test-fixture-compositor.h" diff --git a/weston/default/patches-available/timespec.patch b/weston/default/patches-available/timespec.patch new file mode 100644 index 0000000..7c2c8f6 --- /dev/null +++ b/weston/default/patches-available/timespec.patch @@ -0,0 +1,10 @@ +--- a/tests/timespec-test.c ++++ b/tests/timespec-test.c +@@ -25,6 +25,7 @@ + + #include "config.h" + ++#include + #include + #include + #include diff --git a/weston/default/patches-enabled/missing-fnctl_h.patch b/weston/default/patches-enabled/missing-fnctl_h.patch new file mode 120000 index 0000000..ab6304a --- /dev/null +++ b/weston/default/patches-enabled/missing-fnctl_h.patch @@ -0,0 +1 @@ +../patches-available/missing-fnctl_h.patch \ No newline at end of file diff --git a/weston/default/patches-enabled/timespec.patch b/weston/default/patches-enabled/timespec.patch new file mode 120000 index 0000000..93a7fdf --- /dev/null +++ b/weston/default/patches-enabled/timespec.patch @@ -0,0 +1 @@ +../patches-available/timespec.patch \ No newline at end of file diff --git a/wld/default/conf.sh b/wld/default/conf.sh new file mode 100755 index 0000000..40dbe5f --- /dev/null +++ b/wld/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +$EDITOR config.mk diff --git a/wld/default/deps b/wld/default/deps new file mode 100644 index 0000000..a2449a6 --- /dev/null +++ b/wld/default/deps @@ -0,0 +1,30 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +automake +autoconf +expat +bzip2 +zlib +libffi +libdrm +libpng +fontconfig +freetype +pkgconf +pixman +libxslt +libpciaccess +wayland +wayland-protocols +$EDITORDEP diff --git a/wld/default/inst.sh b/wld/default/inst.sh new file mode 100755 index 0000000..9183326 --- /dev/null +++ b/wld/default/inst.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +PREFIX="$PREFIX" \ +make install diff --git a/wld/default/make.sh b/wld/default/make.sh new file mode 100755 index 0000000..283fd7b --- /dev/null +++ b/wld/default/make.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +PREFIX="$PREFIX" \ +make -j$(nproc) + +#CFLAGS="$SHARED_CFLAGS" \ +#CXXFLAGS="$SHARED_CXXFLAGS" \ +#LDFLAGS="$SHARED_LDFLAGS" \ diff --git a/wld/default/patch b/wld/default/patch new file mode 100644 index 0000000..79f4fa5 --- /dev/null +++ b/wld/default/patch @@ -0,0 +1,18 @@ +--- a/config.mk 2020-10-01 04:21:08.210000000 +0000 ++++ b/config.mk 2020-10-02 00:35:25.400000000 +0000 +@@ -5,13 +5,13 @@ + + ENABLE_DEBUG = 1 + ENABLE_STATIC = 1 +-ENABLE_SHARED = 1 ++ENABLE_SHARED = 0 + + ENABLE_PIXMAN = 1 + ENABLE_DRM = 1 + ENABLE_WAYLAND = 1 + +-DRM_DRIVERS = intel nouveau ++DRM_DRIVERS = # intel nouveau amdgpu radeon + WAYLAND_INTERFACES = shm + + ifeq ($(ENABLE_DRM),1) diff --git a/wlroots/default/conf.sh b/wlroots/default/conf.sh new file mode 100755 index 0000000..bff4ba8 --- /dev/null +++ b/wlroots/default/conf.sh @@ -0,0 +1,10 @@ +#!/bin/sh -e + +#CFLAGS="$SHARED_CFLAGS -DGLX_X86_READONLY_TEXT" \ +CFLAGS="$SHARED_CFLAGS" \ +CXXFLAGS="$SHARED_CXXFLAGS" \ +LDFLAGS="$SHARED_LDFLAGS" \ +meson \ + -Ddefault_library=both \ + --prefix="$PREFIX" \ + ../build diff --git a/wlroots/default/deps b/wlroots/default/deps new file mode 100644 index 0000000..622f5bf --- /dev/null +++ b/wlroots/default/deps @@ -0,0 +1,40 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +zlib +m4 +bison +expat +flex +cmake +samurai +pkgconf +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +py3-mako +libffi +meson +libdrm-dynamic +eudev +libevdev +mtdev +libinput-dynamic +wayland +wayland-protocols +mesa-dynamic +libxkbcommon-dynamic +pixman +libpng diff --git a/wlroots/default/inst.sh b/wlroots/default/inst.sh new file mode 100755 index 0000000..5013ba7 --- /dev/null +++ b/wlroots/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build install diff --git a/wlroots/default/make.sh b/wlroots/default/make.sh new file mode 100755 index 0000000..43f1628 --- /dev/null +++ b/wlroots/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -C ../build diff --git a/wpewebkit/default/APKBUILD b/wpewebkit/default/APKBUILD new file mode 100644 index 0000000..74a28e4 --- /dev/null +++ b/wpewebkit/default/APKBUILD @@ -0,0 +1,243 @@ +# Contributor: Rasmus Thomsen +# Contributor: Sergei Lukin +# Contributor: Jiri Horner +# Maintainer: Rasmus Thomsen +pkgname=webkit2gtk +pkgver=2.30.2 +pkgrel=0 +pkgdesc="Portable web rendering engine WebKit for GTK+" +url="https://webkitgtk.org/" +arch="all !mips !mips64" +license="LGPL-2.0-or-later AND BSD-2-Clause" +depends="bubblewrap xdg-dbus-proxy dbus:org.freedesktop.Secrets" +makedepends=" + bison + cmake + enchant2-dev + flex + geoclue-dev + gnutls-dev + gobject-introspection-dev + gperf + gst-plugins-bad-dev + gst-plugins-base-dev + gstreamer-dev + gtk+3.0-dev + gtk-doc + hyphen-dev + icu-dev + libgcrypt-dev + libjpeg-turbo-dev + libnotify-dev + libpng-dev + libseccomp-dev + libsecret-dev + libsoup-dev + libwebp-dev + libxml2-dev + libxslt-dev + libxt-dev + mesa-dev + openjpeg-dev + openjpeg-tools + pango-dev + paxmark + python3 + ruby + samurai + sqlite-dev + woff2-dev + ruby-json + libwpe-dev + libwpebackend-fdo-dev + " +replaces="webkit" +options="!check" # upstream doesn't package them in release tarballs: Tools/Scripts/run-gtk-tests: Command not found +subpackages="$pkgname-dev $pkgname-lang $pkgname-dbg" +source="https://webkitgtk.org/releases/webkitgtk-$pkgver.tar.xz + fix-fast-memory-disabled.patch + musl-fixes.patch + fix-openjpeg.patch + lower-stack-usage.patch + use-versioned-libwpe.patch + " +builddir="$srcdir/webkitgtk-$pkgver" + +# secfixes: +# 2.28.4-r0: +# - CVE-2020-9862 +# - CVE-2020-9893 +# - CVE-2020-9894 +# - CVE-2020-9895 +# - CVE-2020-9915 +# - CVE-2020-9925 +# 2.28.3-r0: +# - CVE-2020-9802 +# - CVE-2020-9803 +# - CVE-2020-9805 +# - CVE-2020-9806 +# - CVE-2020-9807 +# - CVE-2020-9843 +# - CVE-2020-9850 +# - CVE-2020-13753 +# 2.28.1-r0: +# - CVE-2020-11793 +# 2.28.0-r0: +# - CVE-2020-10018 +# 2.26.3-r0: +# - CVE-2019-8835 +# - CVE-2019-8844 +# - CVE-2019-8846 +# 2.26.2-r0: +# - CVE-2019-8812 +# - CVE-2019-8814 +# 2.26.1-r0: +# - CVE-2019-8783 +# - CVE-2019-8811 +# - CVE-2019-8813 +# - CVE-2019-8816 +# - CVE-2019-8819 +# - CVE-2019-8820 +# - CVE-2019-8823 +# 2.26.0-r0: +# - CVE-2019-8625 +# - CVE-2019-8710 +# - CVE-2019-8720 +# - CVE-2019-8743 +# - CVE-2019-8764 +# - CVE-2019-8766 +# - CVE-2019-8769 +# - CVE-2019-8771 +# - CVE-2019-8782 +# - CVE-2019-8815 +# 2.24.4-r0: +# - CVE-2019-8674 +# - CVE-2019-8707 +# - CVE-2019-8719 +# - CVE-2019-8733 +# - CVE-2019-8763 +# - CVE-2019-8765 +# - CVE-2019-8768 +# - CVE-2019-8821 +# - CVE-2019-8822 +# 2.24.3-r0: +# - CVE-2019-8644 +# - CVE-2019-8649 +# - CVE-2019-8658 +# - CVE-2019-8666 +# - CVE-2019-8669 +# - CVE-2019-8671 +# - CVE-2019-8672 +# - CVE-2019-8673 +# - CVE-2019-8676 +# - CVE-2019-8677 +# - CVE-2019-8678 +# - CVE-2019-8679 +# - CVE-2019-8680 +# - CVE-2019-8681 +# - CVE-2019-8683 +# - CVE-2019-8684 +# - CVE-2019-8686 +# - CVE-2019-8687 +# - CVE-2019-8688 +# - CVE-2019-8689 +# - CVE-2019-8690 +# - CVE-2019-8726 +# 2.24.2-r0: +# - CVE-2019-8735 +# 2.24.1-r0: +# - CVE-2019-6251 +# - CVE-2019-8506 +# - CVE-2019-8524 +# - CVE-2019-8535 +# - CVE-2019-8536 +# - CVE-2019-8544 +# - CVE-2019-8551 +# - CVE-2019-8558 +# - CVE-2019-8559 +# - CVE-2019-8563 +# - CVE-2019-11070 +# 2.22.7-r0: +# - CVE-2018-4437 +# - CVE-2019-6212 +# - CVE-2019-6215 +# - CVE-2019-6216 +# - CVE-2019-6217 +# - CVE-2019-6227 +# - CVE-2019-6229 +# 2.22.4-r0: +# - CVE-2018-4372 +# 2.18.4-r0: +# - CVE-2017-7156 +# - CVE-2017-7157 +# - CVE-2017-13856 +# - CVE-2017-13866 +# - CVE-2017-13870 +# 2.14.5-r0: +# - CVE-2017-2350 +# - CVE-2017-2354 +# - CVE-2017-2355 +# - CVE-2017-2356 +# - CVE-2017-2362 +# - CVE-2017-2363 +# - CVE-2017-2364 +# - CVE-2017-2365 +# - CVE-2017-2366 +# - CVE-2017-2369 +# - CVE-2017-2371 +# - CVE-2017-2373 + +build() { + local _archopt= + case "$CARCH" in + # disable _FORTIFY_SOURCE to work around: + # cc1plus: out of memory allocating 65536 bytes after a total of 3131101184 bytes + x86) CXXFLAGS="$CXXFLAGS -U_FORTIFY_SOURCE";; + armhf|ppc64le|s390x) _archopt="-DENABLE_JIT=OFF";; + esac + + # reduce memory usage on 32 bit + # https://bugs.webkit.org/show_bug.cgi?id=199272 + export CXXFLAGS="$CXXFLAGS -g1" + + mkdir build + cd build + # disable gold usage since it can't find pthreads with it enabled + cmake -GNinja \ + -DPORT=GTK \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DCMAKE_SKIP_RPATH=ON \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DLIB_INSTALL_DIR=/usr/lib \ + -DENABLE_GTKDOC=OFF \ + -DENABLE_GEOLOCATION=ON \ + -DENABLE_SAMPLING_PROFILER=OFF \ + -DENABLE_MINIBROWSER=ON \ + -DUSE_WPE_RENDERER=ON \ + -DUSE_WOFF2=ON \ + -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ + -DUSE_LD_GOLD=OFF \ + -DUSE_SYSTEMD=OFF \ + $_archopt \ + .. + # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=923476 + ninja JavaScriptCore-4-gir + ninja +} + +check() { + ninja -C "$builddir"/build check +} + +package() { + DESTDIR="$pkgdir" ninja -C "$builddir"/build install + # needed for JIT + paxmark -m "$pkgdir"/usr/libexec/webkit2gtk-4.0/WebKitWebProcess +} + +sha512sums="caecd765ce92942fc07d0d18b834b8f1acb13e6dc1e504ed9f104862285a6032a8824ab98a7439e6f8664d83dacb4ece2011f4ec822308e5b40d1f82ca601243 webkitgtk-2.30.2.tar.xz +e1537b9937af1cb936669d405993a52204cb9968b8b3161cb12a3f3f1343c260088c9490fcd7a7deeab6dbabdb5f7ce7e6cb2f857b9f0a4205aba6db2b11fb20 fix-fast-memory-disabled.patch +4c0093e4a38c8ceb3ac92b94539ec1417241814a84abd157442f53f710ecbaf9c2345e258b8ad86d5e0908cacbfca6cad28dedd11c127756b65428f359ba9fcc musl-fixes.patch +c517c012f5630ef6be5be7d9592c5e042a070f849a141859edefa7984acb98dbd0d718fe6613cd35ba3b7d8530beebcc7408fd077cd914ed335c5e524e9e746a fix-openjpeg.patch +7d883fc35d0c6bfaa6bff8e9dbcaeaa9b7d7322852e874d8acc78d41a5aad5595650ec62444048e43aa349471cb16e5aed29e684207fc8d3421030e878ba1fa9 lower-stack-usage.patch +1e24108a6d4295febe0e12a1f8fc924a99b957883d77abae0813d704e9a07fb99cc980dff9e41a3f0ff70364a3ef4508355c138dca708b4362fa9978d2261a32 use-versioned-libwpe.patch" diff --git a/wpewebkit/default/conf.sh b/wpewebkit/default/conf.sh new file mode 100755 index 0000000..08d279d --- /dev/null +++ b/wpewebkit/default/conf.sh @@ -0,0 +1,36 @@ +#!/bin/sh -e + +case "$ARCH" in + # disable _FORTIFY_SOURCE to work around: + # cc1plus: out of memory allocating 65536 bytes after a total of 3131101184 bytes + x86) CXXFLAGS="$CXXFLAGS -U_FORTIFY_SOURCE";; + armhf|ppc64le|s390x) _archopt="-DENABLE_JIT=OFF";; +esac + +# reduce memory usage on 32 bit +# https://bugs.webkit.org/show_bug.cgi?id=199272 +export CXXFLAGS="$CXXFLAGS -g1" + +cd ../build + +# ld gold usage is disabled since cmake can't find pthreads with it enabled. +cmake -GNinja \ + -DPORT=WPE \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DCMAKE_SKIP_RPATH=ON \ + -DCMAKE_INSTALL_PREFIX="$PREFIX" \ + -DLIB_INSTALL_DIR=/lib \ + -DENABLE_BUBBLEWRAP_SANDBOX=ON \ + -DENABLE_GTKDOC=OFF \ + -DENABLE_GEOLOCATION=OFF \ + -DENABLE_SPELLCHECK=OFF \ + -DENABLE_SAMPLING_PROFILER=OFF \ + -DENABLE_MINIBROWSER=ON \ + -DUSE_OPENGL_ES=ON \ + -DUSE_LIBEPOXY=ON \ + -DUSE_WOFF2=OFF \ + -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ + -DUSE_LD_GOLD=OFF \ + -DUSE_SYSTEMD=OFF \ + $_archopt \ + ../src diff --git a/wpewebkit/default/conf.sh.bak b/wpewebkit/default/conf.sh.bak new file mode 100755 index 0000000..5ed7679 --- /dev/null +++ b/wpewebkit/default/conf.sh.bak @@ -0,0 +1,42 @@ +#!/bin/sh -e + +case "$ARCH" in + # disable _FORTIFY_SOURCE to work around: + # cc1plus: out of memory allocating 65536 bytes after a total of 3131101184 bytes + x86) CXXFLAGS="$CXXFLAGS -U_FORTIFY_SOURCE";; +# armhf|ppc64le|s390x) _archopt="-DENABLE_JIT=OFF";; +esac + +# reduce memory usage on 32 bit +# https://bugs.webkit.org/show_bug.cgi?id=199272 +export CXXFLAGS="$CXXFLAGS -g1" + +cd ../build + +# ld gold usage is disabled since cmake can't find pthreads with it enabled. +cmake -GNinja \ + -DPORT=WPE \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DCMAKE_SKIP_RPATH=ON \ + -DCMAKE_INSTALL_PREFIX="$PREFIX" \ + -DLIB_INSTALL_DIR=/lib \ + -DENABLE_BUBBLEWRAP_SANDBOX=ON \ + -DENABLE_INTROSPECTION=OFF \ + -DENABLE_ACCELERATED_2D_CANVAS=OFF \ + -DENABLE_GLES2=ON \ + -DENABLE_GTKDOC=OFF \ + -DENABLE_GEOLOCATION=OFF \ + -DENABLE_SPELLCHECK=OFF \ + -DENABLE_SAMPLING_PROFILER=OFF \ + -DENABLE_MINIBROWSER=ON \ + -DENABLE_WAYLAND_TARGET=ON \ + -DUSE_LIBNOTIFY=OFF \ + -DUSE_LIBHYPHEN=OFF \ + -DUSE_WOFF2=OFF \ + -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ + -DUSE_LD_GOLD=OFF \ + -DUSE_SYSTEMD=OFF \ + $_archopt \ + ../src + #-DENABLE_GLES2_DEFAULT=OFF \ + #-DUSE_WPE_RENDERER=ON \ diff --git a/wpewebkit/default/deps b/wpewebkit/default/deps new file mode 100644 index 0000000..8812cf9 --- /dev/null +++ b/wpewebkit/default/deps @@ -0,0 +1,96 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +ldd +perl-dynamic +m4 +flex +bison +libffi +bzip2 +zlib +xz +libpng +libwebp +libjpeg-turbo +openjpeg +pixman +cmake +tls-certs +glib +gobject-introspection-dynamic +libproxy +libgcrypt +libgpg-error +p11-kit +gsettings-desktop-schemas +libtasn1 +libunistring +libidn2 +bearssl +libressl +nettle +gnutls +libcap +libxml2 +expat +graphviz +libxslt +libpsl +sqlite +brotli >= 1.0.9 +diffutils +file +libsoup +libsecret +libseccomp +eudev +libgudev +gperf +atk +gdk-pixbuf +libxkbcommon-dynamic +libepoxy +gnu-readline +libucontext +libyaml +ruby +python3-dynamic +libdrm-dynamic +mesa-dynamic +fribidi +icu +harfbuzz +freetype-harfbuzz +fontconfig +pango +cairo +wayland +wayland-protocols +bubblewrap +dbus +xdg-dbus-proxy +gstreamer +alsa-lib +cdparanoia +libogg +libvorbis +libtheora +opus +orc +gst-plugins-base +samurai +gettext +libwpe +libwpebackend-fdo +at-spi2-core +at-spi2-atk diff --git a/wpewebkit/default/env.sh b/wpewebkit/default/env.sh new file mode 100644 index 0000000..6894123 --- /dev/null +++ b/wpewebkit/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS -D__WORDSIZE=64 -DLITTLE_ENDIAN" +CXXFLAGS="$SHARED_CXXFLAGS -D__WORDSIZE=64 -DLITTLE_ENDIAN" +LDFLAGS="$SHARED_LDFLAGS -lgpg-error" diff --git a/wpewebkit/default/inst.sh b/wpewebkit/default/inst.sh new file mode 100755 index 0000000..d0f5910 --- /dev/null +++ b/wpewebkit/default/inst.sh @@ -0,0 +1,6 @@ +#!/bin/sh -e + +samu -C ../build install + +## needed if the WebKit JIT and SE linux kernel extensions are both turned on. +#paxmark -m "$pkgdir"/usr/libexec/webkit2gtk-4.0/WebKitWebProcess diff --git a/wpewebkit/default/make.sh b/wpewebkit/default/make.sh new file mode 100755 index 0000000..11412b7 --- /dev/null +++ b/wpewebkit/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +samu -j$(nproc) -C ../build diff --git a/wpewebkit/default/patches-available/0100-suckless-ln-compat.patch b/wpewebkit/default/patches-available/0100-suckless-ln-compat.patch new file mode 100644 index 0000000..bad9a7d --- /dev/null +++ b/wpewebkit/default/patches-available/0100-suckless-ln-compat.patch @@ -0,0 +1,38 @@ +diff -ur 2.30.2/Source/JavaScriptCore/GLib.cmake 2.30.2-b/Source/JavaScriptCore/GLib.cmake +--- a/Source/JavaScriptCore/GLib.cmake 2020-08-12 09:17:52.000000000 +0000 ++++ b/Source/JavaScriptCore/GLib.cmake 2020-10-25 17:07:11.010000000 +0000 +@@ -42,7 +42,7 @@ + add_custom_command( + OUTPUT ${FORWARDING_HEADERS_DIR}/JavaScriptCore/glib/jsc + DEPENDS ${JAVASCRIPTCORE_DIR}/API/glib +- COMMAND ln -n -s -f ${JAVASCRIPTCORE_DIR}/API/glib ${FORWARDING_HEADERS_DIR}/JavaScriptCore/glib/jsc ++ COMMAND ln -s -f ${JAVASCRIPTCORE_DIR}/API/glib ${FORWARDING_HEADERS_DIR}/JavaScriptCore/glib/jsc + VERBATIM + ) + add_custom_target(JSC-fake-api-headers +diff -ur 2.30.2/Source/WebKit/PlatformWPE.cmake 2.30.2-b/Source/WebKit/PlatformWPE.cmake +--- a/Source/WebKit/PlatformWPE.cmake 2020-09-11 08:11:29.000000000 +0000 ++++ b/Source/WebKit/PlatformWPE.cmake 2020-10-25 17:05:54.720000000 +0000 +@@ -37,19 +37,19 @@ + add_custom_command( + OUTPUT ${FORWARDING_HEADERS_WPE_DIR}/wpe + DEPENDS ${WEBKIT_DIR}/UIProcess/API/wpe +- COMMAND ln -n -s -f ${WEBKIT_DIR}/UIProcess/API/wpe ${FORWARDING_HEADERS_WPE_DIR}/wpe ++ COMMAND ln -s -f ${WEBKIT_DIR}/UIProcess/API/wpe ${FORWARDING_HEADERS_WPE_DIR}/wpe + ) + + add_custom_command( + OUTPUT ${FORWARDING_HEADERS_WPE_EXTENSION_DIR}/wpe + DEPENDS ${WEBKIT_DIR}/WebProcess/InjectedBundle/API/wpe +- COMMAND ln -n -s -f ${WEBKIT_DIR}/WebProcess/InjectedBundle/API/wpe ${FORWARDING_HEADERS_WPE_EXTENSION_DIR}/wpe ++ COMMAND ln -s -f ${WEBKIT_DIR}/WebProcess/InjectedBundle/API/wpe ${FORWARDING_HEADERS_WPE_EXTENSION_DIR}/wpe + ) + + add_custom_command( + OUTPUT ${FORWARDING_HEADERS_WPE_DOM_DIR}/wpe + DEPENDS ${WEBKIT_DIR}/WebProcess/InjectedBundle/API/wpe/DOM +- COMMAND ln -n -s -f ${WEBKIT_DIR}/WebProcess/InjectedBundle/API/wpe/DOM ${FORWARDING_HEADERS_WPE_DOM_DIR}/wpe ++ COMMAND ln -s -f ${WEBKIT_DIR}/WebProcess/InjectedBundle/API/wpe/DOM ${FORWARDING_HEADERS_WPE_DOM_DIR}/wpe + VERBATIM + ) + diff --git a/wpewebkit/default/patches-available/fix-fast-memory-disabled.patch b/wpewebkit/default/patches-available/fix-fast-memory-disabled.patch new file mode 100644 index 0000000..9d2747c --- /dev/null +++ b/wpewebkit/default/patches-available/fix-fast-memory-disabled.patch @@ -0,0 +1,14 @@ +--- a/Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp ++++ b/Source/JavaScriptCore/wasm/WasmFaultSignalHandler.cpp +@@ -118,7 +118,11 @@ void unregisterCode(void* start, void* e + + bool fastMemoryEnabled() + { ++#if ENABLE(WEBASSEMBLY_FAST_MEMORY) + return fastHandlerInstalled; ++#else ++ return false; ++#endif // ENABLE(WEBASSEMBLY_FAST_MEMORY) + } + + void enableFastMemory() diff --git a/wpewebkit/default/patches-available/fix-openjpeg.patch b/wpewebkit/default/patches-available/fix-openjpeg.patch new file mode 100644 index 0000000..221f060 --- /dev/null +++ b/wpewebkit/default/patches-available/fix-openjpeg.patch @@ -0,0 +1,11 @@ +--- a/Source/WebCore/platform/image-decoders/jpeg2000/JPEG2000ImageDecoder.cpp ++++ b/Source/WebCore/platform/image-decoders/jpeg2000/JPEG2000ImageDecoder.cpp +@@ -28,7 +28,7 @@ + + #if USE(OPENJPEG) + +-#include ++#include + + namespace WebCore { + diff --git a/wpewebkit/default/patches-available/lower-stack-usage.patch b/wpewebkit/default/patches-available/lower-stack-usage.patch new file mode 100644 index 0000000..71955f3 --- /dev/null +++ b/wpewebkit/default/patches-available/lower-stack-usage.patch @@ -0,0 +1,17 @@ +diff --git a/Source/JavaScriptCore/runtime/OptionsList.h b/Source/JavaScriptCore/runtime/OptionsList.h +index 41cab118..2ac66c7a 100644 +--- a/Source/JavaScriptCore/runtime/OptionsList.h ++++ b/Source/JavaScriptCore/runtime/OptionsList.h +@@ -90,9 +90,9 @@ constexpr bool enableWebAssemblyStreamingApi = false; + \ + v(Bool, reportMustSucceedExecutableAllocations, false, Normal, nullptr) \ + \ +- v(Unsigned, maxPerThreadStackUsage, 5 * MB, Normal, "Max allowed stack usage by the VM") \ +- v(Unsigned, softReservedZoneSize, 128 * KB, Normal, "A buffer greater than reservedZoneSize that reserves space for stringifying exceptions.") \ +- v(Unsigned, reservedZoneSize, 64 * KB, Normal, "The amount of stack space we guarantee to our clients (and to interal VM code that does not call out to clients).") \ ++ v(Unsigned, maxPerThreadStackUsage, 80 * KB , Normal, "Max allowed stack usage by the VM") \ ++ v(Unsigned, softReservedZoneSize, 32 * KB, Normal, "A buffer greater than reservedZoneSize that reserves space for stringifying exceptions.") \ ++ v(Unsigned, reservedZoneSize, 16 * KB, Normal, "The amount of stack space we guarantee to our clients (and to interal VM code that does not call out to clients).") \ + \ + v(Bool, crashIfCantAllocateJITMemory, false, Normal, nullptr) \ + v(Unsigned, jitMemoryReservationSize, 0, Normal, "Set this number to change the executable allocation size in ExecutableAllocatorFixedVMPool. (In bytes.)") \ diff --git a/wpewebkit/default/patches-available/musl-fixes.patch b/wpewebkit/default/patches-available/musl-fixes.patch new file mode 100644 index 0000000..e28d9a5 --- /dev/null +++ b/wpewebkit/default/patches-available/musl-fixes.patch @@ -0,0 +1,68 @@ +--- a/Source/JavaScriptCore/runtime/MachineContext.h ++++ b/Source/JavaScriptCore/runtime/MachineContext.h +@@ -188,7 +188,7 @@ static inline void*& stackPointerImpl(mcontext_t& machineContext) + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) ++#elif OS(FUCHSIA) || defined(__linux__) + + #if CPU(X86) + return reinterpret_cast((uintptr_t&) machineContext.gregs[REG_ESP]); +@@ -335,7 +335,7 @@ static inline void*& framePointerImpl(mcontext_t& machineContext) + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) ++#elif OS(FUCHSIA) || defined(__linux__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86) +@@ -482,7 +482,7 @@ static inline void*& instructionPointerImpl(mcontext_t& machineContext) + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) ++#elif OS(FUCHSIA) || defined(__linux__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86) +@@ -639,7 +639,7 @@ inline void*& argumentPointer<1>(mcontext_t& machineContext) + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) ++#elif OS(FUCHSIA) || defined(__linux__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86) +@@ -756,7 +756,7 @@ inline void*& llintInstructionPointer(mcontext_t& machineContext) + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) ++#elif OS(FUCHSIA) || defined(__linux__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86) + +--- a/Source/WebCore/xml/XPathGrammar.cpp ++++ b/Source/WebCore/xml/XPathGrammar.cpp +@@ -966,7 +966,7 @@ int yydebug; + #if YYERROR_VERBOSE + + # ifndef yystrlen +-# if defined __GLIBC__ && defined _STRING_H ++# if defined __linux__ && defined _STRING_H + # define yystrlen strlen + # else + /* Return the length of YYSTR. */ +@@ -989,7 +989,7 @@ yystrlen (yystr) + # endif + + # ifndef yystpcpy +-# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE ++# if defined __linux__ && defined _STRING_H && defined _GNU_SOURCE + # define yystpcpy stpcpy + # else + /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in diff --git a/wpewebkit/default/patches-available/use-versioned-libwpe.patch b/wpewebkit/default/patches-available/use-versioned-libwpe.patch new file mode 100644 index 0000000..66bc799 --- /dev/null +++ b/wpewebkit/default/patches-available/use-versioned-libwpe.patch @@ -0,0 +1,13 @@ +diff --git a/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp b/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp +index 180f392a..85639a11 100644 +--- a/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp ++++ b/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp +@@ -115,7 +115,7 @@ + #if PLATFORM(WAYLAND) + if (WebCore::PlatformDisplay::sharedDisplay().type() == WebCore::PlatformDisplay::Type::Wayland) { + #if USE(WPE_RENDERER) +- wpe_loader_init("libWPEBackend-fdo-1.0.so"); ++ wpe_loader_init("libWPEBackend-fdo-1.0.so.1"); + if (AcceleratedBackingStoreWayland::checkRequirements()) { + parameters.hostClientFileDescriptor = wpe_renderer_host_create_client(); + parameters.implementationLibraryName = FileSystem::fileSystemRepresentation(wpe_loader_get_loaded_implementation_library_name()); diff --git a/wpewebkit/default/patches-enabled/0100-suckless-ln-compat.patch b/wpewebkit/default/patches-enabled/0100-suckless-ln-compat.patch new file mode 120000 index 0000000..58b45ac --- /dev/null +++ b/wpewebkit/default/patches-enabled/0100-suckless-ln-compat.patch @@ -0,0 +1 @@ +../patches-available/0100-suckless-ln-compat.patch \ No newline at end of file diff --git a/wpewebkit/default/patches-enabled/fix-fast-memory-disabled.patch b/wpewebkit/default/patches-enabled/fix-fast-memory-disabled.patch new file mode 120000 index 0000000..6c2b06c --- /dev/null +++ b/wpewebkit/default/patches-enabled/fix-fast-memory-disabled.patch @@ -0,0 +1 @@ +../patches-available/fix-fast-memory-disabled.patch \ No newline at end of file diff --git a/wpewebkit/default/patches-enabled/fix-openjpeg.patch b/wpewebkit/default/patches-enabled/fix-openjpeg.patch new file mode 120000 index 0000000..3fbfbd4 --- /dev/null +++ b/wpewebkit/default/patches-enabled/fix-openjpeg.patch @@ -0,0 +1 @@ +../patches-available/fix-openjpeg.patch \ No newline at end of file diff --git a/wpewebkit/default/patches-enabled/lower-stack-usage.patch b/wpewebkit/default/patches-enabled/lower-stack-usage.patch new file mode 120000 index 0000000..2f97552 --- /dev/null +++ b/wpewebkit/default/patches-enabled/lower-stack-usage.patch @@ -0,0 +1 @@ +../patches-available/lower-stack-usage.patch \ No newline at end of file diff --git a/wpewebkit/default/patches-enabled/musl-fixes.patch b/wpewebkit/default/patches-enabled/musl-fixes.patch new file mode 120000 index 0000000..915cc3a --- /dev/null +++ b/wpewebkit/default/patches-enabled/musl-fixes.patch @@ -0,0 +1 @@ +../patches-available/musl-fixes.patch \ No newline at end of file diff --git a/wpewebkit/default/patches-enabled/use-versioned-libwpe.patch b/wpewebkit/default/patches-enabled/use-versioned-libwpe.patch new file mode 120000 index 0000000..46bf443 --- /dev/null +++ b/wpewebkit/default/patches-enabled/use-versioned-libwpe.patch @@ -0,0 +1 @@ +../patches-available/use-versioned-libwpe.patch \ No newline at end of file diff --git a/xcb-proto/default/deps b/xcb-proto/default/deps new file mode 100644 index 0000000..ddd4316 --- /dev/null +++ b/xcb-proto/default/deps @@ -0,0 +1,13 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +libxml2 +$PY3DEP diff --git a/xcb-util-image/default/deps b/xcb-util-image/default/deps new file mode 100644 index 0000000..c2113a3 --- /dev/null +++ b/xcb-util-image/default/deps @@ -0,0 +1,24 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +perl +m4 +gperf +libxml2 +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb +xcb-util diff --git a/xcb-util-keysyms/default/deps b/xcb-util-keysyms/default/deps new file mode 100644 index 0000000..c2113a3 --- /dev/null +++ b/xcb-util-keysyms/default/deps @@ -0,0 +1,24 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +perl +m4 +gperf +libxml2 +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb +xcb-util diff --git a/xcb-util-renderutil/default/deps b/xcb-util-renderutil/default/deps new file mode 100644 index 0000000..c2113a3 --- /dev/null +++ b/xcb-util-renderutil/default/deps @@ -0,0 +1,24 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +perl +m4 +gperf +libxml2 +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb +xcb-util diff --git a/xcb-util-wm/default/deps b/xcb-util-wm/default/deps new file mode 100644 index 0000000..c2113a3 --- /dev/null +++ b/xcb-util-wm/default/deps @@ -0,0 +1,24 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +perl +m4 +gperf +libxml2 +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb +xcb-util diff --git a/xcb-util/default/deps b/xcb-util/default/deps new file mode 100644 index 0000000..f8757f7 --- /dev/null +++ b/xcb-util/default/deps @@ -0,0 +1,23 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +perl +m4 +gperf +libxml2 +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb diff --git a/xdg-dbus-proxy/default/conf.sh b/xdg-dbus-proxy/default/conf.sh new file mode 100755 index 0000000..ecbd5f0 --- /dev/null +++ b/xdg-dbus-proxy/default/conf.sh @@ -0,0 +1,8 @@ +#!/bin/sh -e + +./configure \ + --enable-static \ + --enable-shared \ + --build="$BUILD" \ + --host="$HOST" \ + --prefix="$PREFIX" \ diff --git a/xdg-dbus-proxy/default/deps b/xdg-dbus-proxy/default/deps new file mode 100644 index 0000000..495f5c2 --- /dev/null +++ b/xdg-dbus-proxy/default/deps @@ -0,0 +1,18 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +zlib +libffi +glib +docbook-xsl +libxslt +dbus diff --git a/xdg-dbus-proxy/default/env.sh b/xdg-dbus-proxy/default/env.sh new file mode 100644 index 0000000..a0a7e55 --- /dev/null +++ b/xdg-dbus-proxy/default/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh -e + +. ../how/default-env.sh + +CFLAGS="$SHARED_CFLAGS" +CXXFLAGS="$SHARED_CXXFLAGS" +LDFLAGS="$SHARED_LDFLAGS" diff --git a/xdg-dbus-proxy/default/patches-available/musl-fix.patch b/xdg-dbus-proxy/default/patches-available/musl-fix.patch new file mode 100644 index 0000000..3e18d1b --- /dev/null +++ b/xdg-dbus-proxy/default/patches-available/musl-fix.patch @@ -0,0 +1,22 @@ +https://github.com/flatpak/flatpak/issues/618 +diff --git a/dbus-proxy.c b/dbus-proxy.c +index 163df21..99090e1 100644 +--- a/dbus-proxy.c ++++ b/dbus-proxy.c +@@ -31,6 +31,16 @@ + + #include "flatpak-proxy.h" + ++/* taken from glibc unistd.h and fixes musl */ ++#ifndef TEMP_FAILURE_RETRY ++#define TEMP_FAILURE_RETRY(expression) \ ++ (__extension__ \ ++ ({ long int __result; \ ++ do __result = (long int) (expression); \ ++ while (__result == -1L && errno == EINTR); \ ++ __result; })) ++#endif ++ + static const char *argv0; + static GList *proxies; + static int sync_fd = -1; diff --git a/xdg-dbus-proxy/default/patches-enabled/musl-fix.patch b/xdg-dbus-proxy/default/patches-enabled/musl-fix.patch new file mode 120000 index 0000000..71d54fc --- /dev/null +++ b/xdg-dbus-proxy/default/patches-enabled/musl-fix.patch @@ -0,0 +1 @@ +../patches-available/musl-fix.patch \ No newline at end of file diff --git a/xinit/default/conf.sh b/xinit/default/conf.sh new file mode 100755 index 0000000..4b418fd --- /dev/null +++ b/xinit/default/conf.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +LIBS="-lX11-xcb -lxcb -lXau" \ +./configure \ + --with-xinitdir=/etc/X11/xinit \ + --enable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix=/usr + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/xinit/default/deps b/xinit/default/deps new file mode 100644 index 0000000..00ad172 --- /dev/null +++ b/xinit/default/deps @@ -0,0 +1,29 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +samurai +libxml2 +python3 +diffutils +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb +xtrans +libx11 diff --git a/xkbcomp/default/conf.sh b/xkbcomp/default/conf.sh new file mode 100755 index 0000000..f710e8b --- /dev/null +++ b/xkbcomp/default/conf.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +LIBS="-lX11 -lxkbfile -lxcb -lXau" \ +./configure \ + --disable-shared \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/xkbcomp/default/deps b/xkbcomp/default/deps new file mode 100644 index 0000000..6bb007a --- /dev/null +++ b/xkbcomp/default/deps @@ -0,0 +1,31 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +pkgconf +gnu-grep +gnu-sed +m4 +perl +autoconf +automake +pkgconf +samurai +libxml2 +python3 +diffutils +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb +xtrans +libx11 +libxkbfile diff --git a/xkeyboard-config/default/conf.sh b/xkeyboard-config/default/conf.sh new file mode 100755 index 0000000..40a4c05 --- /dev/null +++ b/xkeyboard-config/default/conf.sh @@ -0,0 +1,9 @@ +#!/bin/sh -e + +./configure \ + --enable-compat-rules \ + --without-xsltproc \ + --disable-runtime-deps \ + --disable-nls \ + --prefix= + #--with-xkb-rules-symlink=xfree86,xorg \ diff --git a/xkeyboard-config/default/deps b/xkeyboard-config/default/deps new file mode 100644 index 0000000..c8dc2c6 --- /dev/null +++ b/xkeyboard-config/default/deps @@ -0,0 +1,14 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +libtool +python3 diff --git a/xkeyboard-config/default/deps.bak b/xkeyboard-config/default/deps.bak new file mode 100644 index 0000000..cf1a68b --- /dev/null +++ b/xkeyboard-config/default/deps.bak @@ -0,0 +1,32 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +m4 +perl +autoconf +automake +pkgconf +samurai +libxml2 +python3 +diffutils +xorg-util-macros +xorgproto +libtool +libxslt +xcb-proto +libxau +libxcb +xtrans +libx11 +python3-dynamic +xkbcomp diff --git a/xkeyboard-config/default/deps.bak2 b/xkeyboard-config/default/deps.bak2 new file mode 100644 index 0000000..c8dc2c6 --- /dev/null +++ b/xkeyboard-config/default/deps.bak2 @@ -0,0 +1,14 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl +libtool +python3 diff --git a/xkeyboard-config/default/kiss.sh b/xkeyboard-config/default/kiss.sh new file mode 100755 index 0000000..3f3367a --- /dev/null +++ b/xkeyboard-config/default/kiss.sh @@ -0,0 +1,15 @@ +#!/bin/sh -e + +# Swap to shell script instead of perl script +# for conversion of rules files. See files/xml2lst. +sed -i 's/perl //;s/xml2lst\.pl/xml2lst/' rules/Makefile.in + +./configure \ + --prefix=/usr \ + --with-xkb-rules-symlink=xfree86,xorg \ + --enable-compat-rules \ + --without-xsltproc \ + --disable-nls + +make +make DESTDIR="$1" install diff --git a/xmlto/default/deps b/xmlto/default/deps new file mode 100644 index 0000000..a2251bf --- /dev/null +++ b/xmlto/default/deps @@ -0,0 +1,17 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +perl-dynamic +getopt +libxslt +perl-yaml-syck +perl-test-pod +docbook-xsl diff --git a/xorg-server/default/alpine-patches/0001-compiler.h-ensure-IOPortBase-is-declared-extern-on-m.patch b/xorg-server/default/alpine-patches/0001-compiler.h-ensure-IOPortBase-is-declared-extern-on-m.patch new file mode 100644 index 0000000..42f04bb --- /dev/null +++ b/xorg-server/default/alpine-patches/0001-compiler.h-ensure-IOPortBase-is-declared-extern-on-m.patch @@ -0,0 +1,29 @@ +From 1efee15daaaf7c7c3ea7f9fd6d5c8ec8605a09c7 Mon Sep 17 00:00:00 2001 +From: Ariadne Conill +Date: Thu, 3 Sep 2020 17:50:26 -0600 +Subject: [PATCH] compiler.h: ensure IOPortBase is declared extern on mips + +This is needed to fix compilation with -fcommon on GCC, which +is the default in GCC 10. + +Signed-off-by: Ariadne Conill +--- + hw/xfree86/common/compiler.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/hw/xfree86/common/compiler.h b/hw/xfree86/common/compiler.h +index 2b2008b3f..c7d617eb1 100644 +--- a/hw/xfree86/common/compiler.h ++++ b/hw/xfree86/common/compiler.h +@@ -525,7 +525,7 @@ xf86WriteMmio32Le(__volatile__ void *base, const unsigned long offset, + #define PORT_SIZE short + #endif + +-_X_EXPORT unsigned int IOPortBase; /* Memory mapped I/O port area */ ++extern _X_EXPORT unsigned int IOPortBase; /* Memory mapped I/O port area */ + + static __inline__ void + outb(unsigned PORT_SIZE port, unsigned char val) +-- +2.28.0 + diff --git a/xorg-server/default/alpine-patches/e50c85f4ebf559a3bac4817b41074c43d4691779.patch b/xorg-server/default/alpine-patches/e50c85f4ebf559a3bac4817b41074c43d4691779.patch new file mode 100644 index 0000000..114076e --- /dev/null +++ b/xorg-server/default/alpine-patches/e50c85f4ebf559a3bac4817b41074c43d4691779.patch @@ -0,0 +1,31 @@ +From e50c85f4ebf559a3bac4817b41074c43d4691779 Mon Sep 17 00:00:00 2001 +From: Eric Anholt +Date: Fri, 26 Oct 2018 17:47:30 -0700 +Subject: [PATCH] Fix segfault on probing a non-PCI platform device on a system + with PCI. + +Some Broadcom set-top-box boards have PCI busses, but the GPU is still +probed through DT. We would dereference a null busid here in that +case. + +Signed-off-by: Eric Anholt +--- + hw/xfree86/common/xf86platformBus.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c +index cef47da03d..dadbac6c8f 100644 +--- a/hw/xfree86/common/xf86platformBus.c ++++ b/hw/xfree86/common/xf86platformBus.c +@@ -289,7 +289,7 @@ xf86platformProbe(void) + for (i = 0; i < xf86_num_platform_devices; i++) { + char *busid = xf86_platform_odev_attributes(i)->busid; + +- if (pci && (strncmp(busid, "pci:", 4) == 0)) { ++ if (pci && busid && (strncmp(busid, "pci:", 4) == 0)) { + platform_find_pci_info(&xf86_platform_devices[i], busid); + } + +-- +GitLab + diff --git a/xorg-server/default/alpine-patches/link-libshadow.patch b/xorg-server/default/alpine-patches/link-libshadow.patch new file mode 100644 index 0000000..48f8cd1 --- /dev/null +++ b/xorg-server/default/alpine-patches/link-libshadow.patch @@ -0,0 +1,31 @@ +From a530b6e8923f2b9153a773c8618a1e2f41619288 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Tue, 30 Apr 2019 18:01:27 -0400 +Subject: [PATCH] meson: Fix libshadow.so linkage + +Don't link against fb, it's the driver's responsibility to load that +first. Underlinking like this is unpleasant but this matches what +autotools does. + +Fixes: xorg/xserver#540 +--- + hw/xfree86/dixmods/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/hw/xfree86/dixmods/meson.build b/hw/xfree86/dixmods/meson.build +index 835d23215..0562b630f 100644 +--- a/hw/xfree86/dixmods/meson.build ++++ b/hw/xfree86/dixmods/meson.build +@@ -34,7 +34,7 @@ shared_module( + c_args: xorg_c_args, + dependencies: common_dep, + link_whole: libxserver_miext_shadow, +- link_with: [fb, e], ++ link_with: e, + + install: true, + install_dir: module_dir, +-- +2.22.0 + + diff --git a/xorg-server/default/alpine-patches/xwayland-glx.patch b/xorg-server/default/alpine-patches/xwayland-glx.patch new file mode 100644 index 0000000..c6a750a --- /dev/null +++ b/xorg-server/default/alpine-patches/xwayland-glx.patch @@ -0,0 +1,419 @@ +diff --git a/hw/xwayland/meson.build b/hw/xwayland/meson.build +index 36bf213..c8746e5 100644 +--- a/hw/xwayland/meson.build ++++ b/hw/xwayland/meson.build +@@ -54,6 +54,9 @@ xwayland_glamor = [] + eglstream_srcs = [] + if build_glamor + srcs += 'xwayland-glamor.c' ++ if build_glx ++ srcs += 'xwayland-glx.c' ++ endif + if gbm_dep.found() + srcs += 'xwayland-glamor-gbm.c' + endif +@@ -80,10 +83,15 @@ if build_glamor + xwayland_glamor += glamor + endif + ++wayland_inc = [ inc, ] ++if build_glx ++ wayland_inc += glx_inc ++endif ++ + executable( + 'Xwayland', + srcs, +- include_directories: inc, ++ include_directories: wayland_inc, + dependencies: [ + common_dep, + xwayland_dep, +diff --git a/hw/xwayland/xwayland-glamor.c b/hw/xwayland/xwayland-glamor.c +index 48e330a..dcfc7f1 100644 +--- a/hw/xwayland/xwayland-glamor.c ++++ b/hw/xwayland/xwayland-glamor.c +@@ -31,6 +31,9 @@ + + #include + #include ++#ifdef GLXEXT ++#include "glx_extinit.h" ++#endif + + static void + glamor_egl_make_current(struct glamor_context *glamor_ctx) +@@ -262,5 +265,9 @@ xwl_glamor_init(struct xwl_screen *xwl_screen) + ErrorF("Failed to initialize glamor Xv extension\n"); + #endif + ++#ifdef GLXEXT ++ GlxPushProvider(&glamor_provider); ++#endif ++ + return TRUE; + } +diff --git a/hw/xwayland/xwayland-glx.c b/hw/xwayland/xwayland-glx.c +new file mode 100644 +index 0000000..71c9aad +--- /dev/null ++++ b/hw/xwayland/xwayland-glx.c +@@ -0,0 +1,344 @@ ++/* ++ * Copyright © 2019 Red Hat, Inc. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice (including the next ++ * paragraph) shall be included in all copies or substantial portions of the ++ * Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ * DEALINGS IN THE SOFTWARE. ++ * ++ * Authors: ++ * Adam Jackson ++ */ ++ ++/* ++ * Sets up GLX capabilities based on the EGL capabilities of the glamor ++ * renderer for the screen. Without this you will get whatever swrast ++ * can do, which often does not include things like multisample visuals. ++ */ ++ ++#include ++#include "xwayland.h" ++#define MESA_EGL_NO_X11_HEADERS ++// #include ++#include ++#include "glxserver.h" ++#include "glxutil.h" ++#include "compint.h" ++#include ++#include "glamor_context.h" ++#include "glamor.h" ++ ++/* Can't get these from since it pulls in client headers */ ++#define GLX_RGBA_BIT 0x00000001 ++#define GLX_WINDOW_BIT 0x00000001 ++#define GLX_PIXMAP_BIT 0x00000002 ++#define GLX_PBUFFER_BIT 0x00000004 ++#define GLX_NONE 0x8000 ++#define GLX_SLOW_CONFIG 0x8001 ++#define GLX_TRUE_COLOR 0x8002 ++#define GLX_DIRECT_COLOR 0x8003 ++#define GLX_NON_CONFORMANT_CONFIG 0x800D ++#define GLX_DONT_CARE 0xFFFFFFFF ++#define GLX_RGBA_FLOAT_BIT_ARB 0x00000004 ++#define GLX_SWAP_UNDEFINED_OML 0x8063 ++ ++struct egl_config { ++ __GLXconfig base; ++ EGLConfig config; ++}; ++ ++struct egl_screen { ++ __GLXscreen base; ++ EGLDisplay display; ++ EGLConfig *configs; ++}; ++ ++static void ++egl_screen_destroy(__GLXscreen *_screen) ++{ ++ struct egl_screen *screen = (struct egl_screen *)_screen; ++ ++ /* XXX do we leak the fbconfig list? */ ++ ++ free(screen->configs); ++ __glXScreenDestroy(_screen); ++ free(_screen); ++} ++ ++static void ++egl_drawable_destroy(__GLXdrawable *draw) ++{ ++ free(draw); ++} ++ ++static GLboolean ++egl_drawable_swap_buffers(ClientPtr client, __GLXdrawable *draw) ++{ ++ return GL_FALSE; ++} ++ ++static void ++egl_drawable_copy_sub_buffer(__GLXdrawable *draw, int x, int y, int w, int h) ++{ ++} ++ ++static void ++egl_drawable_wait_x(__GLXdrawable *draw) ++{ ++ glamor_block_handler(draw->pDraw->pScreen); ++} ++ ++static void ++egl_drawable_wait_gl(__GLXdrawable *draw) ++{ ++} ++ ++static __GLXdrawable * ++egl_create_glx_drawable(ClientPtr client, __GLXscreen *screen, ++ DrawablePtr draw, XID drawid, int type, ++ XID glxdrawid, __GLXconfig *modes) ++{ ++ __GLXdrawable *ret; ++ ++ ret = calloc(1, sizeof *ret); ++ if (!ret) ++ return NULL; ++ ++ if (!__glXDrawableInit(ret, screen, draw, type, glxdrawid, modes)) { ++ free(ret); ++ return NULL; ++ } ++ ++ ret->destroy = egl_drawable_destroy; ++ ret->swapBuffers = egl_drawable_swap_buffers; ++ ret->copySubBuffer = egl_drawable_copy_sub_buffer; ++ ret->waitX = egl_drawable_wait_x; ++ ret->waitGL = egl_drawable_wait_gl; ++ ++ return ret; ++} ++ ++/* ++ * TODO: ++ * ++ * - figure out sRGB ++ * - bindToTextureTargets is suspicious ++ * - better channel mask setup ++ * - drawable type masks is suspicious ++ */ ++static struct egl_config * ++translate_eglconfig(struct egl_screen *screen, EGLConfig hc, ++ struct egl_config *chain, Bool direct_color, ++ Bool double_buffer) ++{ ++ EGLint value; ++ struct egl_config *c = calloc(1, sizeof *c); ++ ++ if (!c) ++ return chain; ++ ++ /* constants. changing these requires (at least) new EGL extensions */ ++ c->base.stereoMode = GL_FALSE; ++ c->base.numAuxBuffers = 0; ++ c->base.level = 0; ++ c->base.transparentAlpha = 0; ++ c->base.transparentIndex = 0; ++ c->base.transparentPixel = GLX_NONE; ++ c->base.visualSelectGroup = 0; ++ c->base.indexBits = 0; ++ c->base.optimalPbufferWidth = 0; ++ c->base.optimalPbufferHeight = 0; ++ c->base.bindToMipmapTexture = 0; ++ c->base.bindToTextureTargets = GLX_DONT_CARE; ++ c->base.sRGBCapable = 0; ++ c->base.swapMethod = GLX_SWAP_UNDEFINED_OML; ++ ++ /* this is... suspect */ ++ c->base.drawableType = GLX_WINDOW_BIT | GLX_PIXMAP_BIT | GLX_PBUFFER_BIT; ++ ++ /* hmm */ ++ c->base.bindToTextureRgb = GL_TRUE; ++ c->base.bindToTextureRgba = GL_TRUE; ++ ++ /* ++ * glx conformance failure: there's no such thing as accumulation ++ * buffers in EGL. they should be emulable with shaders and fbos, ++ * but i'm pretty sure nobody's using this feature since it's ++ * entirely software. note that glx conformance merely requires ++ * that an accum buffer _exist_, not a minimum bitness. ++ */ ++ c->base.accumRedBits = 0; ++ c->base.accumGreenBits = 0; ++ c->base.accumBlueBits = 0; ++ c->base.accumAlphaBits = 0; ++ ++ /* parametric state */ ++ if (direct_color) ++ c->base.visualType = GLX_DIRECT_COLOR; ++ else ++ c->base.visualType = GLX_TRUE_COLOR; ++ ++ if (double_buffer) ++ c->base.doubleBufferMode = GL_TRUE; ++ else ++ c->base.doubleBufferMode = GL_FALSE; ++ ++ /* direct-mapped state */ ++#define GET(attr, slot) \ ++ eglGetConfigAttrib(screen->display, hc, attr, &c->base.slot) ++ GET(EGL_RED_SIZE, redBits); ++ GET(EGL_GREEN_SIZE, greenBits); ++ GET(EGL_BLUE_SIZE, blueBits); ++ GET(EGL_ALPHA_SIZE, alphaBits); ++ GET(EGL_BUFFER_SIZE, rgbBits); ++ GET(EGL_DEPTH_SIZE, depthBits); ++ GET(EGL_STENCIL_SIZE, stencilBits); ++ GET(EGL_TRANSPARENT_RED_VALUE, transparentRed); ++ GET(EGL_TRANSPARENT_GREEN_VALUE, transparentGreen); ++ GET(EGL_TRANSPARENT_BLUE_VALUE, transparentBlue); ++ GET(EGL_SAMPLE_BUFFERS, sampleBuffers); ++ GET(EGL_SAMPLES, samples); ++ if (c->base.renderType & GLX_PBUFFER_BIT) { ++ GET(EGL_MAX_PBUFFER_WIDTH, maxPbufferWidth); ++ GET(EGL_MAX_PBUFFER_HEIGHT, maxPbufferHeight); ++ GET(EGL_MAX_PBUFFER_PIXELS, maxPbufferPixels); ++ } ++#undef GET ++ ++ /* derived state: config caveats */ ++ eglGetConfigAttrib(screen->display, hc, EGL_CONFIG_CAVEAT, &value); ++ if (value == EGL_NONE) ++ c->base.visualRating = GLX_NONE; ++ else if (value == EGL_SLOW_CONFIG) ++ c->base.visualRating = GLX_SLOW_CONFIG; ++ else if (value == EGL_NON_CONFORMANT_CONFIG) ++ c->base.visualRating = GLX_NON_CONFORMANT_CONFIG; ++ /* else panic */ ++ ++ /* derived state: float configs */ ++ c->base.renderType = GLX_RGBA_BIT; ++ if (eglGetConfigAttrib(screen->display, hc, EGL_COLOR_COMPONENT_TYPE_EXT, ++ &value) == EGL_TRUE) { ++ if (value == EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT) { ++ c->base.renderType = GLX_RGBA_FLOAT_BIT_ARB; ++ } ++ /* else panic */ ++ } ++ ++ /* map to the backend's config */ ++ c->config = hc; ++ ++ /* ++ * XXX do something less ugly ++ */ ++ if (c->base.renderType == GLX_RGBA_BIT) { ++ if (c->base.rgbBits == 24 || c->base.rgbBits == 32) { ++ c->base.redMask = 0xff0000; ++ c->base.greenMask = 0x00ff00; ++ c->base.blueMask = 0x0000ff; ++ if (c->base.alphaBits) ++ /* assume all remaining bits are alpha */ ++ c->base.alphaMask = 0xff000000; ++ } ++ } ++ ++ c->base.next = chain ? &chain->base : NULL; ++ return c; ++} ++ ++static __GLXconfig * ++egl_mirror_configs(ScreenPtr pScreen, struct egl_screen *screen) ++{ ++ int i, j, k, nconfigs; ++ struct egl_config *c = NULL; ++ EGLConfig *host_configs = NULL; ++ Bool offon[] = { FALSE, TRUE }; ++ ++ eglGetConfigs(screen->display, NULL, 0, &nconfigs); ++ if (!(host_configs = calloc(nconfigs, sizeof *host_configs))) ++ return NULL; ++ ++ eglGetConfigs(screen->display, host_configs, nconfigs, &nconfigs); ++ ++ /* We walk the EGL configs backwards to make building the ++ * ->next chain easier. ++ */ ++ for (i = nconfigs - 1; i > 0; i--) ++ for (j = 0; j < 2; j++) /* direct_color */ ++ for (k = 0; k < 2; k++) /* direct_color */ ++ c = translate_eglconfig(screen, host_configs[i], c, ++ /* direct_color */ offon[j], ++ /* double_buffer */ offon[k] ++ ); ++ ++ screen->configs = host_configs; ++ return c ? &c->base : NULL; ++} ++ ++static __GLXscreen * ++egl_screen_probe(ScreenPtr pScreen) ++{ ++ struct egl_screen *screen; ++ struct xwl_screen *xwl_screen = xwl_screen_get(pScreen); ++ __GLXscreen *base; ++ ++ if (enableIndirectGLX) ++ return NULL; /* not implemented */ ++ ++ if (!(screen = calloc(1, sizeof *screen))) ++ return NULL; ++ ++ base = &screen->base; ++ base->destroy = egl_screen_destroy; ++ base->createDrawable = egl_create_glx_drawable; ++ /* base.swapInterval = NULL; */ ++ ++ screen->display = xwl_screen->glamor_ctx->display; ++ ++ __glXInitExtensionEnableBits(screen->base.glx_enable_bits); ++ __glXEnableExtension(base->glx_enable_bits, "GLX_ARB_context_flush_control"); ++ __glXEnableExtension(base->glx_enable_bits, "GLX_ARB_create_context"); ++ __glXEnableExtension(base->glx_enable_bits, "GLX_ARB_create_context_no_error"); ++ __glXEnableExtension(base->glx_enable_bits, "GLX_ARB_create_context_profile"); ++ __glXEnableExtension(base->glx_enable_bits, "GLX_ARB_create_context_robustness"); ++ __glXEnableExtension(base->glx_enable_bits, "GLX_ARB_fbconfig_float"); ++ __glXEnableExtension(base->glx_enable_bits, "GLX_EXT_create_context_es2_profile"); ++ __glXEnableExtension(base->glx_enable_bits, "GLX_EXT_create_context_es_profile"); ++ __glXEnableExtension(base->glx_enable_bits, "GLX_EXT_fbconfig_packed_float"); ++ __glXEnableExtension(base->glx_enable_bits, "GLX_EXT_framebuffer_sRGB"); ++ __glXEnableExtension(base->glx_enable_bits, "GLX_EXT_no_config_context"); ++ __glXEnableExtension(base->glx_enable_bits, "GLX_EXT_texture_from_pixmap"); ++ __glXEnableExtension(base->glx_enable_bits, "GLX_MESA_copy_sub_buffer"); ++ // __glXEnableExtension(base->glx_enable_bits, "GLX_SGI_swap_control"); ++ ++ base->fbconfigs = egl_mirror_configs(pScreen, screen); ++ if (!base->fbconfigs) { ++ free(screen); ++ return NULL; ++ } ++ ++ __glXScreenInit(base, pScreen); ++ __glXsetGetProcAddress(eglGetProcAddress); ++ ++ return base; ++} ++ ++__GLXprovider glamor_provider = { ++ egl_screen_probe, ++ "glamor", ++ NULL ++}; +diff --git a/hw/xwayland/xwayland.h b/hw/xwayland/xwayland.h +index 0854df4..a4804fe 100644 +--- a/hw/xwayland/xwayland.h ++++ b/hw/xwayland/xwayland.h +@@ -488,4 +488,9 @@ static inline void xwl_glamor_init_eglstream(struct xwl_screen *xwl_screen) + } + #endif + ++#ifdef GLXEXT ++#include "glx_extinit.h" ++extern __GLXprovider glamor_provider; ++#endif ++ + #endif diff --git a/xorg-server/default/conf.sh b/xorg-server/default/conf.sh new file mode 100755 index 0000000..2ee02c6 --- /dev/null +++ b/xorg-server/default/conf.sh @@ -0,0 +1,31 @@ +#!/bin/sh -e + +#LIBS="-L/usr/lib -lGL -lpthread -lGLESv1_CM -pthread -lm -lglapi -lpthread -ldrm -lm -lpthread -lxcb -L/usr/lib -lXau -lxcb-glx -L/usr/lib -lXau -lxcb -L/usr/lib -lXau -lX11-xcb -lX11 -lpthread -L/usr/lib -lXau -lxcb -L/usr/lib -lXau -lxcb-dri2 -lxcb -L/usr/lib -lXau -L/usr/lib -lX11 -lpthread -lxcb -L/usr/lib -lXau -L/usr/lib -lX11 -lpthread -lxcb -L/usr/lib -lXau -lXdamage -L/usr/lib -lX11 -lpthread -lxcb -L/usr/lib -lXau -L/usr/lib -lX11 -lpthread -lxcb -L/usr/lib -lXau -lXfixes -L/usr/lib -lX11 -lpthread -lxcb -L/usr/lib -lXau -lXxf86vm -L/usr/lib -lX11 -lpthread -lxcb -L/usr/lib -lXau -lXext -lX11 -lpthread -lxcb -lXau -lxshmfence -lexpat" \ + +ln -s /bin/pkgconf /bin/pkg-config + +#LDFLAGS="-Wl,-rpath=/lib,--enable-new-dtags" \ +CFLAGS="-Wno-implicit -Wno-int-to-pointer-cast" \ +LIBS="-lcrypto" \ +./configure \ + --prefix=/usr \ + --localstatedir=/var \ + --disable-systemd-logind \ + --disable-xwayland \ + --disable-unit-tests \ + --enable-xorg \ + --enable-fbdev \ + --disable-dri \ + --disable-glx \ + --disable-glamor \ + --disable-static \ + --enable-shared \ + --with-sha1=libcrypto \ + --with-systemd-daemon=off +# --enable-glx \ +# --enable-glamor \ +# --enable-dri \ +# --enable-dri2 \ +# --enable-dri3 \ + +rm /bin/pkg-config diff --git a/xorg-server/default/deps b/xorg-server/default/deps new file mode 100644 index 0000000..a846d0c --- /dev/null +++ b/xorg-server/default/deps @@ -0,0 +1,45 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +diffutils +file +bzip2 +zlib +expat +glib +libpng +libxml2 +freetype +harfbuzz +xorgproto +libx11 +libxau +libxdamage +libxext +libxfixes +libxfont2 +libxrender +libxrandr +libxxf86vm +libpciaccess +libdrm +libfontenc +libpciaccess +libressl +libxcb +libxkbfile +libxshmfence +pixman +xkeyboard-config +xorg-util-macros +xtrans +zlib diff --git a/xorg-server/default/deps.bak b/xorg-server/default/deps.bak new file mode 100644 index 0000000..f1353a8 --- /dev/null +++ b/xorg-server/default/deps.bak @@ -0,0 +1,48 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +pkgconf +diffutils +file +bzip2 +zlib +expat +glib +libpng +libxml2 +freetype +harfbuzz +xorgproto +libx11 +libxau +libxdamage +libxext +libxfixes +libxfont2 +libxrender +libxrandr +libxxf86vm +libpciaccess +libdrm +libepoxy +libfontenc +libpciaccess +libressl +libxcb +libxkbfile +libxshmfence +mesa +pixman +xkeyboard-config +xorg-util-macros +xtrans +zlib +eudev diff --git a/xorg-server/default/env.sh b/xorg-server/default/env.sh new file mode 100755 index 0000000..f8aef8f --- /dev/null +++ b/xorg-server/default/env.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +export CC="gcc" +#export LDFLAGS="" +#export CFLAGS="" +#export CPPFLAGS="" +#export CXXFLAGS="" + +if [ -e /etc/ssl/ca-bundle.crt ]; then + export SSL_CERT_FILE=/etc/ssl/ca-bundle.crt +fi + +if [ "$(which python3 2> /dev/null)" ]; then + export PY3VER="$(python3 -V | sed -n 's/^Python \(\w\+\.\w\+\).*/\1/p')" + export PY3PKGS="/lib/python$PY3VER/site-packages" + export PYTHONHOME="/usr:/usr" + export PYTHONPATH="/lib/python/$PY3VER:$PY3PKGS" +fi + +if [ "$(which pkgconf 2> /dev/null)" ]; then + export PKG_CONFIG="$(which pkgconf) " +fi + +# TODO: remove the need for these lines by making musl-cross-make build a gcc +# with a header search path of /include only, with all headers contained there. +export CPATH="${CPATH:-/include}" +export C_INCLUDE_PATH="/powerpc64le-lix-linux-musl/include" +export CPLUS_INCLUDE_PATH="/include/c++/9.2.0/powerpc64le-lix-linux-musl:/include/c++/9.2.0" diff --git a/xorg-server/default/kiss.sh b/xorg-server/default/kiss.sh new file mode 100644 index 0000000..c4ca421 --- /dev/null +++ b/xorg-server/default/kiss.sh @@ -0,0 +1,22 @@ +#!/bin/sh -e + +patch -p1 < rootless_modesetting.patch +patch -p1 < fix-crash.patch + +./configure \ + --prefix=/usr \ + --localstatedir=/var \ + --disable-systemd-logind \ + --disable-xwayland \ + --disable-unit-tests \ + --enable-glx \ + --enable-dri \ + --enable-dri2 \ + --enable-dri3 \ + --enable-glamor \ + --enable-xorg \ + --with-sha1=libcrypto \ + --with-systemd-daemon=off + +make +make DESTDIR="$1" install diff --git a/xorg-server/default/make.sh b/xorg-server/default/make.sh new file mode 100755 index 0000000..95a8de6 --- /dev/null +++ b/xorg-server/default/make.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +ln -s /bin/pkgconf /bin/pkg-config + +make -j$(nproc) + +rm /bin/pkg-config diff --git a/xorg-server/default/modesetting.patch b/xorg-server/default/modesetting.patch new file mode 100644 index 0000000..d578208 --- /dev/null +++ b/xorg-server/default/modesetting.patch @@ -0,0 +1,14 @@ +--- xorg-server-1.20.3/hw/xfree86/drivers/modesetting/driver.c ++++ xorg-server-1.20.3/hw/xfree86/drivers/modesetting/driver.c +@@ -1528,6 +1528,10 @@ + if (ms->fd_passed) + return TRUE; + ++ ret = drmIsMaster(ms->fd); ++ if (ret) ++ return TRUE; ++ + ret = drmSetMaster(ms->fd); + if (ret) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "drmSetMaster failed: %s\n", + diff --git a/xorg-server/default/patches-available/fix-crash.patch b/xorg-server/default/patches-available/fix-crash.patch new file mode 100644 index 0000000..e15b0c5 --- /dev/null +++ b/xorg-server/default/patches-available/fix-crash.patch @@ -0,0 +1,31 @@ +From e50c85f4ebf559a3bac4817b41074c43d4691779 Mon Sep 17 00:00:00 2001 +From: Eric Anholt +Date: Fri, 26 Oct 2018 17:47:30 -0700 +Subject: [PATCH] Fix segfault on probing a non-PCI platform device on a system + with PCI. + +Some Broadcom set-top-box boards have PCI busses, but the GPU is still +probed through DT. We would dereference a null busid here in that +case. + +Signed-off-by: Eric Anholt +--- + hw/xfree86/common/xf86platformBus.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c +index cef47da03d..dadbac6c8f 100644 +--- a/hw/xfree86/common/xf86platformBus.c ++++ b/hw/xfree86/common/xf86platformBus.c +@@ -289,7 +289,7 @@ xf86platformProbe(void) + for (i = 0; i < xf86_num_platform_devices; i++) { + char *busid = xf86_platform_odev_attributes(i)->busid; + +- if (pci && (strncmp(busid, "pci:", 4) == 0)) { ++ if (pci && busid && (strncmp(busid, "pci:", 4) == 0)) { + platform_find_pci_info(&xf86_platform_devices[i], busid); + } + +-- +GitLab + diff --git a/xorg-server/default/patches-available/rootless_modesetting.patch b/xorg-server/default/patches-available/rootless_modesetting.patch new file mode 100644 index 0000000..d578208 --- /dev/null +++ b/xorg-server/default/patches-available/rootless_modesetting.patch @@ -0,0 +1,14 @@ +--- xorg-server-1.20.3/hw/xfree86/drivers/modesetting/driver.c ++++ xorg-server-1.20.3/hw/xfree86/drivers/modesetting/driver.c +@@ -1528,6 +1528,10 @@ + if (ms->fd_passed) + return TRUE; + ++ ret = drmIsMaster(ms->fd); ++ if (ret) ++ return TRUE; ++ + ret = drmSetMaster(ms->fd); + if (ret) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "drmSetMaster failed: %s\n", + diff --git a/xorg-server/default/patches-enabled/fix-crash.patch b/xorg-server/default/patches-enabled/fix-crash.patch new file mode 120000 index 0000000..68037f9 --- /dev/null +++ b/xorg-server/default/patches-enabled/fix-crash.patch @@ -0,0 +1 @@ +../patches-available/fix-crash.patch \ No newline at end of file diff --git a/xorg-server/default/patches-enabled/rootless_modesetting.patch b/xorg-server/default/patches-enabled/rootless_modesetting.patch new file mode 120000 index 0000000..8d0dd35 --- /dev/null +++ b/xorg-server/default/patches-enabled/rootless_modesetting.patch @@ -0,0 +1 @@ +../patches-available/rootless_modesetting.patch \ No newline at end of file diff --git a/xorgproto/default/conf.sh b/xorgproto/default/conf.sh new file mode 100755 index 0000000..f5ed4de --- /dev/null +++ b/xorgproto/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "no configuration needed." diff --git a/xorgproto/default/deps b/xorgproto/default/deps new file mode 100644 index 0000000..74fcfbe --- /dev/null +++ b/xorgproto/default/deps @@ -0,0 +1,21 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +samurai +python3-dynamic +py3-ordered-set +py3-appdirs +py3-parsing +py3-six +py3-packaging +py3-setuptools +meson +xorg-util-macros diff --git a/xorgproto/default/inst.sh b/xorgproto/default/inst.sh new file mode 100755 index 0000000..f351b05 --- /dev/null +++ b/xorgproto/default/inst.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +cd ../build +samu -C . install +rm -f /include/X11/extensions/apple +rm -f /include/X11/extensions/windows +rm -f /lib/pkgconfig/apple +rm -f /lib/pkgconfig/windows +rm -f /include/X11/extensions/vldXvMC.h # provided by libxvmc +rm -f /include/X11/extensions/XKBgeom.h # provided by libx11 diff --git a/xorgproto/default/make.sh b/xorgproto/default/make.sh new file mode 100755 index 0000000..e0f02fe --- /dev/null +++ b/xorgproto/default/make.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +cd ../build +meson -Dlegacy=true --prefix=/usr ../src . +samu -C . diff --git a/xxd/default/conf.sh b/xxd/default/conf.sh new file mode 100755 index 0000000..5ebc03d --- /dev/null +++ b/xxd/default/conf.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +mv xxd xxd.c || true diff --git a/xxd/default/inst.sh b/xxd/default/inst.sh new file mode 100755 index 0000000..57af0da --- /dev/null +++ b/xxd/default/inst.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +cp ../build/xxd /bin/xxd diff --git a/xxd/default/make.sh b/xxd/default/make.sh new file mode 100755 index 0000000..e96ff07 --- /dev/null +++ b/xxd/default/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +gcc $CFLAGS $LDFLAGS -DUNIX -o ../build/xxd xxd.c diff --git a/xz/default/conf.sh b/xz/default/conf.sh new file mode 100755 index 0000000..c75752d --- /dev/null +++ b/xz/default/conf.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +#CFLAGS="$SHARED_CFLAGS" \ +#CXXFLAGS="$SHARED_CXXFLAGS" \ +#LDFLAGS="$SHARED_LDFLAGS" \ +./configure \ + --enable-static \ + --build="$(uname -m)-lix-linux-musl" \ + --host="$(uname -m)-lix-linux-musl" \ + --prefix= + +# --enable-shared \ + +## explanation +# +# --disable-shared: don't build anything with dynamic linking. +# +# --enable-static: use static linking instead. +# +# --build: make sure the build string gets set correctly. +# +# --host: make sure the host string gets set correctly. +# +# --prefix: respect the "no /usr/local" policy. diff --git a/xz/default/deps b/xz/default/deps new file mode 100644 index 0000000..0b9c548 --- /dev/null +++ b/xz/default/deps @@ -0,0 +1,11 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed diff --git a/yaft/default/conf.sh b/yaft/default/conf.sh new file mode 100755 index 0000000..d31c275 --- /dev/null +++ b/yaft/default/conf.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +${EDITOR:-vi} conf.h +${EDITOR:-vi} makefile diff --git a/yaft/default/deps b/yaft/default/deps new file mode 100644 index 0000000..e8f399b --- /dev/null +++ b/yaft/default/deps @@ -0,0 +1,12 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed +$EDITORDEP diff --git a/zlib/default/conf.sh b/zlib/default/conf.sh new file mode 100755 index 0000000..a2a2659 --- /dev/null +++ b/zlib/default/conf.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +#CFLAGS="$SHARED_CFLAGS" \ +#CXXFLAGS="$SHARED_CXXFLAGS" \ +#LDFLAGS="$SHARED_LDFLAGS" \ +./configure --static --prefix= + +## explanation +# +# zlib's configure script won't run if it sees any flags it doesn't recognize. +# +# --static: compile a static zlib. +# +# --prefix: respect lix os' "no /usr/local" policy. diff --git a/zlib/default/deps b/zlib/default/deps new file mode 100644 index 0000000..0b9c548 --- /dev/null +++ b/zlib/default/deps @@ -0,0 +1,11 @@ +lix-os-filesystem +linux-kernel +musl-cross-make +patch +sbase +ubase +awk +make +dash +gnu-grep +gnu-sed