From 44b02ddebfe48bec16b2ca41e96e13e058c4485a Mon Sep 17 00:00:00 2001 From: Karchnu Date: Sat, 24 Apr 2021 00:00:41 +0200 Subject: [PATCH] Add WIP recipes, moved existing WIP recipes in wip/ --- {recipes => wip}/alsa-oss/FIXME | 0 {recipes => wip}/alsa-oss/Makefile | 0 {recipes => wip}/alsa-tools/FIXME | 0 {recipes => wip}/alsa-tools/Makefile | 0 wip/atop/APKBUILD | 52 ++++ wip/atop/atop-daily-bb.patch | 18 ++ wip/atop/atop-include-macros.patch | 10 + wip/atop/atop.initd | 21 ++ wip/atop/fix-limits-on-ppc64le.patch | 10 + wip/bash/APKBUILD | 98 +++++++ wip/bash/bash-noinfo.patch | 11 + wip/bash/bash.post-install | 3 + wip/bash/bash.post-upgrade | 1 + wip/bash/bash.pre-deinstall | 3 + wip/build.zsh/Makefile | 14 + wip/busybox/FIXME | 1 + wip/busybox/Makefile | 22 ++ wip/clang/FIXME | 1 + wip/clang/Makefile | 43 +++ wip/clang/clang | 52 ++++ wip/clang/labs.h | 7 + wip/clang/wrapper-clang++ | 8 + wip/clang/x86_64.cfg | 4 + {recipes => wip}/elfutils/FIXME | 0 {recipes => wip}/elfutils/Makefile | 0 wip/fakeroot/APKBUILD | 54 ++++ wip/fakeroot/Makefile | 30 ++ wip/fakeroot/fakeroot-no64.patch | 17 ++ .../fakeroot-skip-ipc-sanity-check.patch | 46 +++ wip/fakeroot/fakeroot-stdint.patch | 34 +++ wip/fakeroot/fix-shell-in-fakeroot.patch | 13 + wip/fakeroot/xstatjunk.patch | 11 + wip/gcc/Makefile | 43 +++ wip/libcxx/FIXME | 3 + wip/libcxx/Makefile | 15 + wip/libcxxabi/recipe.spec | 44 +++ wip/libgpg-error/Makefile | 6 + wip/libksba/Makefile | 6 + {recipes => wip}/libunwind/FIXME | 0 {recipes => wip}/libunwind/Makefile | 0 .../libunwind/fix-libunwind-pc-in.patch | 0 .../libunwind/fix-ppc64-libdir.patch | 0 .../libunwind/force-enable-man.patch | 0 .../libunwind/musl-mips-fix.patch | 0 {recipes => wip}/libunwind/ppc64-musl.patch | 0 wip/mdadm/APKBUILD | 75 +++++ wip/mdadm/fix-monitor-tv_sec.patch | 16 ++ wip/mdadm/fix-use-after-free.patch | 20 ++ wip/mdadm/mdadm-include-sysmacros.patch | 10 + wip/mdadm/mdadm-raid.initd | 48 ++++ wip/mdadm/mdadm.confd | 5 + wip/mdadm/mdadm.initd | 28 ++ wip/mdadm/no-werror.patch | 13 + wip/metasploit/Makefile | 26 ++ wip/mksh/APKBUILD | 42 +++ wip/mksh/Makefile | 34 +++ wip/mksh/mksh-59c-r2.apk | Bin 0 -> 135733 bytes wip/mksh/mksh.post-install | 3 + wip/mksh/mksh.post-upgrade | 1 + wip/mksh/mksh.pre-deinstall | 3 + wip/mtools/APKBUILD | 33 +++ wip/sed/APKBUILD | 44 +++ wip/sed/sed.post-deinstall | 6 + .../0018-prevent-pow-optimization.patch | 36 +++ wip/syslinux/APKBUILD | 53 ++++ wip/syslinux/FIXME | 1 + wip/syslinux/Makefile | 50 ++++ wip/syslinux/fix-sysmacros.patch | 12 + wip/syslinux/gcc-10.patch | 109 ++++++++ wip/syslinux/syslinux.post-upgrade | 61 ++++ wip/syslinux/syslinux.trigger | 3 + wip/syslinux/update-extlinux | 262 ++++++++++++++++++ wip/syslinux/update-extlinux.conf | 74 +++++ wip/syslog-ng/APKBUILD | 178 ++++++++++++ wip/syslog-ng/syslog-ng.conf | 120 ++++++++ wip/syslog-ng/syslog-ng.initd | 46 +++ wip/syslog-ng/syslog-ng.logrotate | 14 + wip/syslog-ng/syslog-ng.post-install | 6 + wip/syslog-ng/syslog-ng.post-upgrade | 21 ++ wip/which/APKBUILD | 37 +++ wip/zfs/APKBUILD | 80 ++++++ wip/zip/10-zip-3.0-build.patch | 36 +++ wip/zip/20-zip-3.0-exec-stack.patch | 22 ++ wip/zip/30-zip-3.0-pic.patch | 15 + wip/zip/40-fix-zipnote.patch | 15 + wip/zip/APKBUILD | 37 +++ 86 files changed, 2396 insertions(+) rename {recipes => wip}/alsa-oss/FIXME (100%) rename {recipes => wip}/alsa-oss/Makefile (100%) rename {recipes => wip}/alsa-tools/FIXME (100%) rename {recipes => wip}/alsa-tools/Makefile (100%) create mode 100644 wip/atop/APKBUILD create mode 100644 wip/atop/atop-daily-bb.patch create mode 100644 wip/atop/atop-include-macros.patch create mode 100644 wip/atop/atop.initd create mode 100644 wip/atop/fix-limits-on-ppc64le.patch create mode 100644 wip/bash/APKBUILD create mode 100644 wip/bash/bash-noinfo.patch create mode 100644 wip/bash/bash.post-install create mode 120000 wip/bash/bash.post-upgrade create mode 100644 wip/bash/bash.pre-deinstall create mode 100644 wip/build.zsh/Makefile create mode 100644 wip/busybox/FIXME create mode 100644 wip/busybox/Makefile create mode 100644 wip/clang/FIXME create mode 100644 wip/clang/Makefile create mode 100755 wip/clang/clang create mode 100644 wip/clang/labs.h create mode 100644 wip/clang/wrapper-clang++ create mode 100644 wip/clang/x86_64.cfg rename {recipes => wip}/elfutils/FIXME (100%) rename {recipes => wip}/elfutils/Makefile (100%) create mode 100644 wip/fakeroot/APKBUILD create mode 100644 wip/fakeroot/Makefile create mode 100644 wip/fakeroot/fakeroot-no64.patch create mode 100644 wip/fakeroot/fakeroot-skip-ipc-sanity-check.patch create mode 100644 wip/fakeroot/fakeroot-stdint.patch create mode 100644 wip/fakeroot/fix-shell-in-fakeroot.patch create mode 100644 wip/fakeroot/xstatjunk.patch create mode 100644 wip/gcc/Makefile create mode 100644 wip/libcxx/FIXME create mode 100644 wip/libcxx/Makefile create mode 100644 wip/libcxxabi/recipe.spec create mode 100644 wip/libgpg-error/Makefile create mode 100644 wip/libksba/Makefile rename {recipes => wip}/libunwind/FIXME (100%) rename {recipes => wip}/libunwind/Makefile (100%) rename {recipes => wip}/libunwind/fix-libunwind-pc-in.patch (100%) rename {recipes => wip}/libunwind/fix-ppc64-libdir.patch (100%) rename {recipes => wip}/libunwind/force-enable-man.patch (100%) rename {recipes => wip}/libunwind/musl-mips-fix.patch (100%) rename {recipes => wip}/libunwind/ppc64-musl.patch (100%) create mode 100644 wip/mdadm/APKBUILD create mode 100644 wip/mdadm/fix-monitor-tv_sec.patch create mode 100644 wip/mdadm/fix-use-after-free.patch create mode 100644 wip/mdadm/mdadm-include-sysmacros.patch create mode 100644 wip/mdadm/mdadm-raid.initd create mode 100644 wip/mdadm/mdadm.confd create mode 100644 wip/mdadm/mdadm.initd create mode 100644 wip/mdadm/no-werror.patch create mode 100644 wip/metasploit/Makefile create mode 100644 wip/mksh/APKBUILD create mode 100644 wip/mksh/Makefile create mode 100644 wip/mksh/mksh-59c-r2.apk create mode 100644 wip/mksh/mksh.post-install create mode 120000 wip/mksh/mksh.post-upgrade create mode 100644 wip/mksh/mksh.pre-deinstall create mode 100644 wip/mtools/APKBUILD create mode 100644 wip/sed/APKBUILD create mode 100644 wip/sed/sed.post-deinstall create mode 100644 wip/syslinux/0018-prevent-pow-optimization.patch create mode 100644 wip/syslinux/APKBUILD create mode 100644 wip/syslinux/FIXME create mode 100644 wip/syslinux/Makefile create mode 100644 wip/syslinux/fix-sysmacros.patch create mode 100644 wip/syslinux/gcc-10.patch create mode 100644 wip/syslinux/syslinux.post-upgrade create mode 100644 wip/syslinux/syslinux.trigger create mode 100755 wip/syslinux/update-extlinux create mode 100644 wip/syslinux/update-extlinux.conf create mode 100644 wip/syslog-ng/APKBUILD create mode 100644 wip/syslog-ng/syslog-ng.conf create mode 100644 wip/syslog-ng/syslog-ng.initd create mode 100644 wip/syslog-ng/syslog-ng.logrotate create mode 100644 wip/syslog-ng/syslog-ng.post-install create mode 100644 wip/syslog-ng/syslog-ng.post-upgrade create mode 100644 wip/which/APKBUILD create mode 100644 wip/zfs/APKBUILD create mode 100644 wip/zip/10-zip-3.0-build.patch create mode 100644 wip/zip/20-zip-3.0-exec-stack.patch create mode 100644 wip/zip/30-zip-3.0-pic.patch create mode 100644 wip/zip/40-fix-zipnote.patch create mode 100644 wip/zip/APKBUILD diff --git a/recipes/alsa-oss/FIXME b/wip/alsa-oss/FIXME similarity index 100% rename from recipes/alsa-oss/FIXME rename to wip/alsa-oss/FIXME diff --git a/recipes/alsa-oss/Makefile b/wip/alsa-oss/Makefile similarity index 100% rename from recipes/alsa-oss/Makefile rename to wip/alsa-oss/Makefile diff --git a/recipes/alsa-tools/FIXME b/wip/alsa-tools/FIXME similarity index 100% rename from recipes/alsa-tools/FIXME rename to wip/alsa-tools/FIXME diff --git a/recipes/alsa-tools/Makefile b/wip/alsa-tools/Makefile similarity index 100% rename from recipes/alsa-tools/Makefile rename to wip/alsa-tools/Makefile diff --git a/wip/atop/APKBUILD b/wip/atop/APKBUILD new file mode 100644 index 0000000..69e6231 --- /dev/null +++ b/wip/atop/APKBUILD @@ -0,0 +1,52 @@ +# Maintainer: Natanael Copa +pkgname=atop +pkgver=2.6.0 +pkgrel=0 +pkgdesc="Resource-specific view of processes" +url="https://www.atoptool.nl/" +arch="all" +license="GPL-2.0-or-later" +makedepends="zlib-dev ncurses-dev linux-headers" +subpackages="$pkgname-doc" +source="https://www.atoptool.nl/download/atop-$pkgver.tar.gz + atop-daily-bb.patch + atop-include-macros.patch + fix-limits-on-ppc64le.patch + atop.initd +" +options="suid" + +prepare() { + cd "$builddir" + default_prepare + + sed -i -e '/^CFLAGS/s: = -O : += :' \ + -e '/DEFPATH/d' \ + -e '/^LDFLAGS/s: = : += :' Makefile + + cp "$srcdir"/atop.initd atop.init + chmod a+rx atop.init +} + +build() { + cd "$builddir" +} + +package() { + cd "$builddir" + mkdir -p "$pkgdir"/var/log/atop "$pkgdir"/var/run "$pkgdir"/usr/sbin + make -j1 DESTDIR="$pkgdir" \ + INIPATH=/etc/init.d \ + SCRPATH=/etc/periodic/daily \ + sysvinstall + rm -fr "$pkgdir"/etc/cron.d + mv "$pkgdir"/etc/periodic/daily/atop.daily \ + "$pkgdir"/etc/periodic/daily/atop + +} + +sha512sums="8d4e2ae56a63738fc615f294d1f4e27cd9eab20acaf5d36c82d87390f96d38cf28cab0a00507459c3ce6e535294a442c4546e0cf732bad253cb518a14cdf5e88 atop-2.6.0.tar.gz +664225450074962aac0e13484c9b2feaf08620bbe1e0f9c5dc1b02f1ecd315224cd04df53134f2d107210fc9223a64d8885ae70d33d0663c2335fa6d46f6ddfd atop-daily-bb.patch +f30c9e6051332af8c8cafcd881f89a0e2d2a8e1d84eee8ac0c8c6b58f3ae3431fcf9c40dea6d03e271f8969802de449d33b4323c13045bdb38a539732c81a8b6 atop-include-macros.patch +87cc78832774299227d435643551d099c3d88babb13049fe71e170e1220204a26be9ab570a59eccc90c9cb4faabd371e1c031063c70cb20a0c4620566c906425 fix-limits-on-ppc64le.patch +172c9d367b936427ccbbbd1140c7808ec8ffe3194b3557ba024820dac8fa68c9919f7dc34d332e91283fde64d731db7bdbfee3c2d6caad3cd291e0f1c227cb03 atop.initd" diff --git a/wip/atop/atop-daily-bb.patch b/wip/atop/atop-daily-bb.patch new file mode 100644 index 0000000..d6a90ae --- /dev/null +++ b/wip/atop/atop-daily-bb.patch @@ -0,0 +1,18 @@ +--- a/atop.daily 2019-01-12 23:37:19.000000000 +0100 ++++ b/atop.daily 2019-09-21 14:30:57.905978235 +0200 +@@ -30,13 +30,13 @@ + + # verify if atop still runs for daily logging + # +-if [ -e "$PIDFILE" ] && ps -p `cat "$PIDFILE"` | grep 'atop$' > /dev/null ++if [ -e $PIDFILE ] && ps | grep `cat $PIDFILE` > /dev/null + then + kill -USR2 `cat "$PIDFILE"` # final sample and terminate + + CNT=0 + +- while ps -p `cat "$PIDFILE"` > /dev/null ++ while ps | grep `cat $PIDFILE` > /dev/null + do + let CNT+=1 + diff --git a/wip/atop/atop-include-macros.patch b/wip/atop/atop-include-macros.patch new file mode 100644 index 0000000..d535d10 --- /dev/null +++ b/wip/atop/atop-include-macros.patch @@ -0,0 +1,10 @@ +--- a/photosyst.c ++++ b/photosyst.c +@@ -152,6 +152,7 @@ + static const char rcsid[] = "$Id: photosyst.c,v 1.38 2010/11/19 07:40:40 gerlof Exp $"; + + #include ++#include + #include + #include + #include diff --git a/wip/atop/atop.initd b/wip/atop/atop.initd new file mode 100644 index 0000000..e86d79b --- /dev/null +++ b/wip/atop/atop.initd @@ -0,0 +1,21 @@ +#!/sbin/openrc-run +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-process/atop/files/atop.rc,v 1.1 2005/06/14 23:01:10 vapier Exp $ + +_daily=/etc/periodic/daily/atop +start(){ + ebegin "Starting atop" + if [ -f "$_daily" ] ; then + start-stop-daemon --start --quiet --exec "$_daily" + eend $? + else + eend 1 "/etc/cron.d/atop doesnt exist!" + fi +} + +stop(){ + ebegin "Stopping atop" + start-stop-daemon --stop --pidfile /var/run/atop.pid + eend $? +} diff --git a/wip/atop/fix-limits-on-ppc64le.patch b/wip/atop/fix-limits-on-ppc64le.patch new file mode 100644 index 0000000..82e3547 --- /dev/null +++ b/wip/atop/fix-limits-on-ppc64le.patch @@ -0,0 +1,10 @@ +--- a/photosyst.c 2020-12-25 13:13:46.569591017 +0000 ++++ b/photosyst.c 2020-12-25 13:13:52.399619155 +0000 +@@ -165,6 +165,7 @@ + #include + #include + #include ++#include + + #define SCALINGMAXCPU 8 // threshold for scaling info per CPU + diff --git a/wip/bash/APKBUILD b/wip/bash/APKBUILD new file mode 100644 index 0000000..131eed3 --- /dev/null +++ b/wip/bash/APKBUILD @@ -0,0 +1,98 @@ +# Contributor: Łukasz Jendrysik +# Contributor: TBK +# Maintainer: Natanael Copa +pkgname=bash +pkgver=5.1.4 +_patchlevel=${pkgver##*.} +_myver=${pkgver%.*} +_patchbase=${_myver/./} +pkgrel=0 +pkgdesc="The GNU Bourne Again shell" +url="https://www.gnu.org/software/bash/bash.html" +arch="all" +license="GPL-3.0-or-later" +makedepends_build="bison flex" +makedepends_host="readline-dev>8 ncurses-dev" +install="$pkgname.post-install $pkgname.post-upgrade $pkgname.pre-deinstall" +subpackages="$pkgname-dbg $pkgname-dev $pkgname-doc" +source="https://ftp.gnu.org/gnu/bash/bash-$_myver.tar.gz + bash-noinfo.patch + " +# generate url's to patches. note: no forks allowed! +_i=1 +_pad=00 +while [ $_i -le $_patchlevel ]; do + [ $_i -ge 10 ] && _pad="0" + [ $_i -ge 100 ] && _pad= + source="$source https://ftp.gnu.org/gnu/bash/bash-$_myver-patches/bash$_patchbase-$_pad$_i" + _i=$(( $_i + 1)) +done + +# secfixes: +# 4.4.12-r1: +# - CVE-2016-0634 + +builddir="$srcdir/$pkgname-$_myver" + +prepare() { + # NOTE: This section is for applying the vendor patches, which are required to fix + # security holes. `default_prepare` does *not* apply vendor patches in the format + # shipped with bash. We also need to make sure vendor patches are applied before + # our own. + # If you disagree, please request an experimental rebuild with bash as /bin/sh, + # before removing this section. + for p in $source; do + case $p in + */bash[0-9][0-9]-[0-9]*) + msg "$p (vendor)" + patch -p0 -i "$srcdir"/${p##*/} + ;; + esac + done + + default_prepare + + # preventively set Version to please 'apk version --check' + sed -i "s/@PACKAGE_VERSION@/$pkgver/" "$builddir"/support/bash.pc.in +} + +build() { + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --bindir=/bin \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --with-curses \ + --disable-nls \ + --enable-readline \ + --without-bash-malloc \ + --with-installed-readline + # parallel build workarounds + make y.tab.c && make builtins/libbuiltins.a && make +} + +check() { + make test +} + +package() { + make DESTDIR="$pkgdir" install + + rm -rf "$pkgdir"/usr/share/locale +} + +dev() { + default_dev + mkdir -p "$subpkgdir"/bin "$subpkgdir"/usr/lib/$pkgname + mv "$pkgdir"/bin/${pkgname}bug "$subpkgdir"/bin + mv "$pkgdir"/usr/lib/$pkgname/Makefile* "$subpkgdir"/usr/lib/$pkgname +} + +sha512sums="c44a0ce381469219548a3a27589af3fea4f22eda1ca4e9434b59fc16da81b471c29ce18e31590e0860a6a251a664b68c2b45e3a17d22cfc02799ffd9a208390c bash-5.1.tar.gz +9d8845491d0fe335bdd8e9a2bd98bda54bfed2ae3c35b2196c6d5a38bdf96c4d97572ba7d6b19ab605ef4e8f001f64cf3312f87dedebb9e37a95ad2c44e33cdb bash-noinfo.patch +1cd86805a2639614372aec29a710bc456e330abcbbaa0867820c94f714a1fa5fb5c1b18aa2c10263ae0bce9dad7579c7af2f732282315c1c34bfd6a90777bfd2 bash51-001 +923e7822a9629645347d3aea0058fb5e2d52223507159a62369309f264612df44a84931c19e0ccb3852e98ce672dfbd454477090b4041b5a0de477c94eb61088 bash51-002 +01e952dcfdae58624723d64912ea3444eed2fdcd266ba1a929b95ec3abd70f914bf400607c3f7bb7a94ac2925f794f91f37c1929d5bb987de2ba7f60a19cb8bd bash51-003 +10ff24cd91a2cd88818bfa7218050843af6b409e43fcca89f5ec70d8266020c6c2a55132426271f165cd0f154f49eb0f8ec2761b80fc066c921b83120bb543ce bash51-004" diff --git a/wip/bash/bash-noinfo.patch b/wip/bash/bash-noinfo.patch new file mode 100644 index 0000000..bf4f095 --- /dev/null +++ b/wip/bash/bash-noinfo.patch @@ -0,0 +1,11 @@ +--- a/doc/Makefile.in ++++ b/doc/Makefile.in +@@ -247,7 +247,7 @@ + $(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(htmldir) ; \ + fi + +-install: info installdirs ++install: installdirs + -$(INSTALL_DATA) $(srcdir)/bash.1 $(DESTDIR)$(man1dir)/bash${man1ext} + -$(INSTALL_DATA) $(srcdir)/bashbug.1 $(DESTDIR)$(man1dir)/bashbug${man1ext} + -$(INSTALL_DATA) $(OTHER_DOCS) $(DESTDIR)$(docdir) diff --git a/wip/bash/bash.post-install b/wip/bash/bash.post-install new file mode 100644 index 0000000..92ea8d9 --- /dev/null +++ b/wip/bash/bash.post-install @@ -0,0 +1,3 @@ +#!/bin/sh +add-shell '/bin/bash' +exit 0 diff --git a/wip/bash/bash.post-upgrade b/wip/bash/bash.post-upgrade new file mode 120000 index 0000000..85d6a8a --- /dev/null +++ b/wip/bash/bash.post-upgrade @@ -0,0 +1 @@ +bash.post-install \ No newline at end of file diff --git a/wip/bash/bash.pre-deinstall b/wip/bash/bash.pre-deinstall new file mode 100644 index 0000000..d110afe --- /dev/null +++ b/wip/bash/bash.pre-deinstall @@ -0,0 +1,3 @@ +#!/bin/sh +remove-shell '/bin/bash' +exit 0 diff --git a/wip/build.zsh/Makefile b/wip/build.zsh/Makefile new file mode 100644 index 0000000..03cdf80 --- /dev/null +++ b/wip/build.zsh/Makefile @@ -0,0 +1,14 @@ +name = build.zsh +version = 0.4.1 +release = 0 +URL = https://git.baguette.netlib.re/Baguette/build.zsh/archive/$(version).tar.gz + +dependencies = make zsh + +MAKE_INSTALL_OPTIONS_USER = PREFIX=$(PREFIX) + +pkg_build_par_dir = $(pkg_working_dir)/build/ +pkg_build_dir = $(pkg_build_par_dir)/$(name) + +SYSCONF ?= ../../ +include $(SYSCONF)/package.mk diff --git a/wip/busybox/FIXME b/wip/busybox/FIXME new file mode 100644 index 0000000..83c8bcd --- /dev/null +++ b/wip/busybox/FIXME @@ -0,0 +1 @@ +To finish, currently limited by the chroot. \ No newline at end of file diff --git a/wip/busybox/Makefile b/wip/busybox/Makefile new file mode 100644 index 0000000..31e6321 --- /dev/null +++ b/wip/busybox/Makefile @@ -0,0 +1,22 @@ +name = busybox +version = 1.33.0 +release = 0 +URL = https://busybox.net/downloads/busybox-$(version).tar.bz2 + +SYSCONF ?= ../../ +include $(SYSCONF)/package.mk + +configure: + cd $(bdir) ; \ + make defconfig ; \ + sed -e 's/.*CONFIG_STATIC.*/CONFIG_STATIC=y/' .config > config-new ; \ + mv config-new .config + +fake_root_install: + mkdir -p '$(pkg_fake_root_dir)/bin' + mkdir -p '$(pkg_fake_root_dir)/sbin' + mkdir -p '$(pkg_fake_root_dir)/usr/bin' + mkdir -p '$(pkg_fake_root_dir)/usr/sbin' + cp $(bdir)/busybox '$(pkg_fake_root_dir)/bin/busybox' + chroot '$(pkg_fake_root_dir)' /bin/busybox --install -s + mv '$(pkg_fake_root_dir)/usr/sbin/killall5' '$(pkg_fake_root_dir)/sbin/' diff --git a/wip/clang/FIXME b/wip/clang/FIXME new file mode 100644 index 0000000..392e625 --- /dev/null +++ b/wip/clang/FIXME @@ -0,0 +1 @@ +Did not even really tried. diff --git a/wip/clang/Makefile b/wip/clang/Makefile new file mode 100644 index 0000000..0916ea4 --- /dev/null +++ b/wip/clang/Makefile @@ -0,0 +1,43 @@ +name = clang +version = 11.1.0 +release = 0 +#URL = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/cfe-$(version).src.tar.gz +URL = https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-$(version).tar.gz + +# labs.h clang + +dirname = build +pkg_build_dir = $(pkg_working_dir)/build/llvm-project-llvmorg-$(version) + +# Minimalist version +CMAKE_OPTIONS_USER = -DCMAKE_PREFIX_PATH=$(PREFIX) \ + -DCMAKE_INSTALL_PREFIX=$(PREFIX) \ + -DCMAKE_BUILD_TYPE=Release + +#CMAKE_OPTIONS_USER = -DCMAKE_PREFIX_PATH=$(PREFIX) \ +# -DCMAKE_INSTALL_PREFIX=$(PREFIX) \ +# -DCLANG_CONFIG_FILE_SYSTEM_DIR=$(PREFIX)/etc/clang \ +# -DCLANG_DEFAULT_CXX_STDLIB=libc++ \ +# -DCMAKE_CXX_COMPILER="clang++" \ +# -DCMAKE_CXX_FLAGS="$CXXFLAGS -stdlib=libc++ -include /usr/baguette/include/c++/v1/math.h -include $(pwd)/../labs.h -D__DEFINED_max_align_t" \ +# -DCMAKE_C_COMPILER="clang" \ +# -DCMAKE_C_FLAGS="$CFLAGS" \ +# -DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS -lc++" \ +# -DCMAKE_SHARED_LINKER_FLAGS="$LDFLAGS -lc++" \ +# -DCMAKE_BUILD_TYPE=Release + +SYSCONF ?= ../../ +include $(SYSCONF)/package.mk + +#configure: +# @#sed -i '/^ return ToolChain::CST_Libstdcxx/s@stdcxx@cxx@' cfe-$(version).src/tools/lib/Driver/ToolChain.cpp +# mkdir -p $(bdir)/$(dirname) +# $(Q)cd $(bdir)/$(dirname) ; \ +# cmake ../cfe-$(version).src \ + + +post_fake_root_install: + rm $(pkg_fake_root_dir)/$(PREFIX)/bin/clang + rm $(pkg_fake_root_dir)/$(PREFIX)/bin/clang++ + cp clang $(pkg_fake_root_dir)/$(PREFIX)/bin/ + ln -s $(pkg_fake_root_dir)/$(PREFIX)/bin/clang $(pkg_fake_root_dir)/$(PREFIX)/bin/clang++ diff --git a/wip/clang/clang b/wip/clang/clang new file mode 100755 index 0000000..0bd85b8 --- /dev/null +++ b/wip/clang/clang @@ -0,0 +1,52 @@ +#!/bin/sh + +requires_linking="true" +is_cpp=false + +if [ "$(basename $0)" = "clang++" ]; then + is_cpp=true +fi + +for i; do + case "$i" in + -c) + requires_linking="false" + ;; + -std=*) + std="$(printf "%s" "$i" | sed 's:-std=::')" + + if echo "$std" | grep -E -q '(c\+\+|gnu\+\+)'; then + is_cpp=true + else + is_cpp=false + fi + ;; + esac +done + +cpp_flags= +if $is_cpp; then + cpp_flags=" + -cxx-isystem /usr/weirdos/lib/c++/v1 + " +fi + +linker_flags= +if $requires_linking; then + linker_flags=" + -L /usr/weirdos/lib + -L /usr/weirdos/lib/gcc/x86_64-weird-linux-musl/9.1.0/ + -B /usr/weirdos/lib/gcc/x86_64-weird-linux-musl/9.1.0/ + -Wl,--dynamic-linker /lib/ld-musl-x86_64.so.1 + " + + if $is_cpp; then + cpp_flags="$cpp_flags -lc++ -lc++abi" + fi +fi + +clang-8 \ + -isystem /usr/weirdos/include/ \ + $linker_flags \ + $cpp_flags \ + "$@" diff --git a/wip/clang/labs.h b/wip/clang/labs.h new file mode 100644 index 0000000..3dbde5c --- /dev/null +++ b/wip/clang/labs.h @@ -0,0 +1,7 @@ +#include + +namespace std { + static inline long abs(long a) { return std::labs(a); } + static inline long long abs(long long a) { return std::labs(a); } +} + diff --git a/wip/clang/wrapper-clang++ b/wip/clang/wrapper-clang++ new file mode 100644 index 0000000..dd6c100 --- /dev/null +++ b/wip/clang/wrapper-clang++ @@ -0,0 +1,8 @@ +#!/bin/sh + +clang-8 -L %{prefix}/lib \ + -L %{prefix}/lib/gcc/x86_64-weird-linux-musl/9.1.0/ \ + -B %{prefix}/lib/gcc/x86_64-weird-linux-musl/9.1.0/ \ + -Wl,--dynamic-linker /lib/ld-musl-x86_64.so.1 \ + -isystem %{prefix}/include/ \ + "$@" diff --git a/wip/clang/x86_64.cfg b/wip/clang/x86_64.cfg new file mode 100644 index 0000000..0fde10c --- /dev/null +++ b/wip/clang/x86_64.cfg @@ -0,0 +1,4 @@ +-L /usr/weirdos/lib/gcc/x86_64-weird-linux-musl/9.1.0/ +-B /usr/weirdos/lib/gcc/x86_64-weird-linux-musl/9.1.0/ +-Wl,--dynamic-linker /lib/ld-musl-x86_64.so.1 +-I /usr/weirdos/include/ diff --git a/recipes/elfutils/FIXME b/wip/elfutils/FIXME similarity index 100% rename from recipes/elfutils/FIXME rename to wip/elfutils/FIXME diff --git a/recipes/elfutils/Makefile b/wip/elfutils/Makefile similarity index 100% rename from recipes/elfutils/Makefile rename to wip/elfutils/Makefile diff --git a/wip/fakeroot/APKBUILD b/wip/fakeroot/APKBUILD new file mode 100644 index 0000000..8a9b049 --- /dev/null +++ b/wip/fakeroot/APKBUILD @@ -0,0 +1,54 @@ +# Maintainer: Natanael Copa +pkgname=fakeroot +pkgver=1.25.3 +pkgrel=3 +pkgdesc="Gives a fake root environment, useful for building packages as a non-privileged user" +arch="all" +license="GPL-3.0-or-later" +url="https://packages.debian.org/fakeroot" +checkdepends="bash" +makedepends_build="libtool autoconf automake po4a" +makedepends_host="libcap-dev acl-dev linux-headers" +makedepends="$makedepends_build $makedepends_host" +subpackages="$pkgname-dbg $pkgname-doc" +source="http://ftp.debian.org/debian/pool/main/f/fakeroot/fakeroot_$pkgver.orig.tar.gz + fakeroot-no64.patch + fakeroot-stdint.patch + xstatjunk.patch + fix-shell-in-fakeroot.patch + fakeroot-skip-ipc-sanity-check.patch + " + +check() { + make check +} + +build() { + if [ "$CLIBC" = "musl" ]; then + # musl does not have _STAT_VER, it's really not used for + # anything, so define it as zero (just like uclibc does) + export CFLAGS="-D_STAT_VER=0 $CFLAGS" + fi + + CONFIG_SHELL=/bin/sh ./bootstrap + CONFIG_SHELL=/bin/sh ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --disable-static + + make + cd doc + po4a -k 0 --rm-backups --variable "srcdir=../doc/" po4a/po4a.cfg +} + +package() { + make DESTDIR="$pkgdir" install +} + +sha512sums="b54366ef82b49af414d7214d069a4bc7dd188dfa4f8e3121f6bd65fd67268b02346ff72e857087243ab0efe9fa82faaa9f9c3309cac4b5af0ea00908c2e5eb6e fakeroot_1.25.3.orig.tar.gz +7a832e6bed3838c7c488e0e12ba84b8d256e84bbb06d6020247452a991de505fa5c6bd7bcb84dce8753eb242e0fcab863b5461301cd56695f2b003fe8d6ff209 fakeroot-no64.patch +ed7a58b0d201139545420f9e5429f503c00e00f36dea84473e77ea99b23bb8d421da1a8a8ce98ff90e72e378dff4cb9ea3c1a863a969899a5f50dfac3b9c5fac fakeroot-stdint.patch +5efd33fd778bd94a529ed7e439fb8fea25ff865dda3f6f9e431264e942b37f3b5d7a0ad14107b55c5fa81b86efd5a82aedb3803cfab08ec57f27f5b229d2fe88 xstatjunk.patch +47593b3d86a66bab832c50a1d967cdc70e42bbd9ef4436f18140067ccefdd6418516e5157102c67e604f3623ed1b9f4fe1423fc5dad4dfe5356fc250c12818a7 fix-shell-in-fakeroot.patch +f1dcd9c34e74eb225c6a96262847e70f86f437c6bcf41c5d554ced2e3d08798296a66310296cc0ab177a7ea5a0271151326a3e79f72e4ed640b3bd20dbaabec1 fakeroot-skip-ipc-sanity-check.patch" diff --git a/wip/fakeroot/Makefile b/wip/fakeroot/Makefile new file mode 100644 index 0000000..645dd4d --- /dev/null +++ b/wip/fakeroot/Makefile @@ -0,0 +1,30 @@ +name = fakeroot +version = 1.25.3 +URL = http://ftp.debian.org/debian/pool/main/f/fakeroot/fakeroot_$(version).orig.tar.gz +url = "https://packages.debian.org/fakeroot" + +patches != ls *.patch + +makedepends_build = libtool autoconf automake po4a +makedepends_host = libcap-dev acl-dev linux-headers +build-dependencies = $(makedepends_build) $(makedepends_host) + +CONFIG_SHELL = /bin/sh +export CONFIG_SHELL + +CONFIGURE_OPTIONS_USER = --build=$(CBUILD) --host=$(CHOST) + +SYSCONF ?= ../../ +include $(SYSCONF)/package.mk + +ifeq ($(CLIBC), musl) +# musl does not have _STAT_VER, it's really not used for +# anything, so define it as zero (just like uclibc does) +CFLAGS = "-D_STAT_VER=0 $(CFLAGS)" +endif + +pre_configure: + $(Q)cd $(bdir) && ./bootstrap + +pre_fake_root_install: + $(Q)cd $(bdir)/doc && po4a -k 0 --rm-backups --variable "srcdir=../doc/" po4a/po4a.cfg diff --git a/wip/fakeroot/fakeroot-no64.patch b/wip/fakeroot/fakeroot-no64.patch new file mode 100644 index 0000000..ff95f96 --- /dev/null +++ b/wip/fakeroot/fakeroot-no64.patch @@ -0,0 +1,17 @@ +--- a/libfakeroot.c ++++ b/libfakeroot.c +@@ -81,12 +81,14 @@ + #define SEND_STAT64(a,b,c) send_stat64(a,b,c) + #define SEND_GET_STAT(a,b) send_get_stat(a,b) + #define SEND_GET_STAT64(a,b) send_get_stat64(a,b) ++#define SEND_GET_XATTR(a,b,c) send_get_xattr(a,b,c) + #define SEND_GET_XATTR64(a,b,c) send_get_xattr64(a,b,c) + #else + #define SEND_STAT(a,b,c) send_stat(a,b) + #define SEND_STAT64(a,b,c) send_stat64(a,b) + #define SEND_GET_STAT(a,b) send_get_stat(a) + #define SEND_GET_STAT64(a,b) send_get_stat64(a) ++#define SEND_GET_XATTR(a,b,c) send_get_xattr(a,b) + #define SEND_GET_XATTR64(a,b,c) send_get_xattr64(a,b) + #endif + diff --git a/wip/fakeroot/fakeroot-skip-ipc-sanity-check.patch b/wip/fakeroot/fakeroot-skip-ipc-sanity-check.patch new file mode 100644 index 0000000..fc96c29 --- /dev/null +++ b/wip/fakeroot/fakeroot-skip-ipc-sanity-check.patch @@ -0,0 +1,46 @@ +diff -urN fakeroot-1.25.3.orig/configure.ac fakeroot-1.25.3/configure.ac +--- fakeroot-1.25.3.orig/configure.ac 2020-12-15 02:33:22.866626448 -0700 ++++ fakeroot-1.25.3/configure.ac 2020-12-15 02:33:40.563359415 -0700 +@@ -25,42 +25,6 @@ + [ac_cv_use_ipc], + [ac_cv_use_ipc=sysv]) + +-if test $ac_cv_use_ipc = "sysv"; then +- AC_MSG_CHECKING([whether SysV IPC message queues are actually working on the host]) +- +- AC_LANG_PUSH(C) +- AC_TRY_RUN([ +-#include +-#include +-#include +-#include +-#include +-#include +- +-int main() { +- +- srandom(time(NULL)+getpid()*33151); +- key_t msg_key = random(); +- int msg_get = msgget(msg_key, IPC_CREAT|0600); +- +- if (msg_get==-1) { +- return 1; +- } else { +- msgctl(msg_get, IPC_RMID, NULL); +- return 0; +- } +- +-}], [ac_cv_use_ipc=sysv], [ac_cv_use_ipc=tcp]) +- +- if test $ac_cv_use_ipc = "tcp"; then +- AC_MSG_RESULT([No, using TCP]) +- else +- AC_MSG_RESULT([Yes]) +- fi +- +- AC_LANG_POP(C) +-fi +- + AC_ARG_WITH([dbformat], + AS_HELP_STRING([--with-dbformat@<:@=DBFORMAT@:>@], + [database format to use: either inode (default) or path]), diff --git a/wip/fakeroot/fakeroot-stdint.patch b/wip/fakeroot/fakeroot-stdint.patch new file mode 100644 index 0000000..bb4f67f --- /dev/null +++ b/wip/fakeroot/fakeroot-stdint.patch @@ -0,0 +1,34 @@ +--- fakeroot-1.18.2.orig/faked.c ++++ fakeroot-1.18.2/faked.c +@@ -514,11 +514,11 @@ + + #ifdef FAKEROOT_DB_PATH + if (find_path(i->buf.dev, i->buf.ino, roots, path)) +- fprintf(f,"mode=%llo,uid=%llu,gid=%llu,nlink=%llu,rdev=%llu %s\n", ++ fprintf(f,"mode=%"PRIo64",uid=%"PRIu64",gid=%"PRIu64",nlink=%"PRIu64",rdev=%"PRIu64" %s\n", + (uint64_t) i->buf.mode,(uint64_t) i->buf.uid,(uint64_t) i->buf.gid, + (uint64_t) i->buf.nlink,(uint64_t) i->buf.rdev,path); + #else +- fprintf(f,"dev=%llx,ino=%llu,mode=%llo,uid=%llu,gid=%llu,nlink=%llu,rdev=%llu\n", ++ fprintf(f,"dev=%"PRIx64",ino=%"PRIu64",mode=%"PRIo64",uid=%"PRIu64",gid=%"PRIu64",nlink=%"PRIu64",rdev=%"PRIu64"\n", + (uint64_t) i->buf.dev,(uint64_t) i->buf.ino,(uint64_t) i->buf.mode, + (uint64_t) i->buf.uid,(uint64_t) i->buf.gid,(uint64_t) i->buf.nlink, + (uint64_t) i->buf.rdev); +@@ -544,7 +544,7 @@ + + while(1){ + #ifdef FAKEROOT_DB_PATH +- r=scanf("mode=%llo,uid=%llu,gid=%llu,nlink=%llu,rdev=%llu "DB_PATH_SCAN"\n", ++ r=scanf("mode=%"PRIo64",uid=%"PRIu64",gid=%"PRIu64",nlink=%"PRIu64",rdev=%"PRIu64" "DB_PATH_SCAN"\n", + &stmode, &stuid, &stgid, &stnlink, &strdev, &path); + if (r != 6) + break; +@@ -559,7 +559,7 @@ + stdev = path_st.st_dev; + stino = path_st.st_ino; + #else +- r=scanf("dev=%llx,ino=%llu,mode=%llo,uid=%llu,gid=%llu,nlink=%llu,rdev=%llu\n", ++ r=scanf("dev=%"PRIx64",ino=%"PRIu64",mode=%"PRIo64",uid=%"PRIu64",gid=%"PRIu64",nlink=%"PRIu64",rdev=%"PRIu64"\n", + &stdev, &stino, &stmode, &stuid, &stgid, &stnlink, &strdev); + if (r != 7) + break; diff --git a/wip/fakeroot/fix-shell-in-fakeroot.patch b/wip/fakeroot/fix-shell-in-fakeroot.patch new file mode 100644 index 0000000..ce5d23f --- /dev/null +++ b/wip/fakeroot/fix-shell-in-fakeroot.patch @@ -0,0 +1,13 @@ +Description: Fix shell in fakeroot.in + Use /bin/sh instead of @SHELL@ in fakeroot.in +Author: Juan Picca +Last-Update: 2016-06-27 +--- +--- a/scripts/fakeroot.in ++++ b/scripts/fakeroot.in +@@ -1,4 +1,4 @@ +-#!@SHELL@ ++#!/bin/sh + + # This script first starts faked (the daemon), and then it will run + # the requested program with fake root privileges. diff --git a/wip/fakeroot/xstatjunk.patch b/wip/fakeroot/xstatjunk.patch new file mode 100644 index 0000000..12f2759 --- /dev/null +++ b/wip/fakeroot/xstatjunk.patch @@ -0,0 +1,11 @@ +--- fakeroot-1.18.4.orig/configure.ac 2012-06-02 18:23:41.000000000 +0000 ++++ fakeroot-1.18.4configure.ac 2015-09-24 23:15:56.917470073 +0000 +@@ -301,7 +301,7 @@ + FUNC=`echo $SEARCH|sed -e 's/.*%//'` + PRE=`echo $SEARCH|sed -e 's/%.*//'` + FOUND= +- for WRAPPED in __${PRE}x${FUNC} _${PRE}x${FUNC} __${PRE}${FUNC}13 ${PRE}${FUNC}; do ++ for WRAPPED in ${PRE}${FUNC}; do + AC_CHECK_FUNCS($WRAPPED,FOUND=$WRAPPED) + dnl + dnl to unconditionally define only the _* functions, comment out the 2 lines above, diff --git a/wip/gcc/Makefile b/wip/gcc/Makefile new file mode 100644 index 0000000..1434000 --- /dev/null +++ b/wip/gcc/Makefile @@ -0,0 +1,43 @@ +name = gcc +version = 10.3.0 +release = 0 +URL = - https://ftp.gnu.org/gnu/gcc/gcc-$(version)/gcc-$(version).tar.xz + +build-dependencies = gmp-dev mpfr-dev mpc-dev + +dependencies = gmp mpfr mpc binutils + +pkg_build_dir = $(pkg_build_par_dir)/build + +configure: + mkdir $(dirname) + cd $(dirname) + + if [ "$(uname -m)" = x86_64 ]; then + sed -e '/m64=/s/lib64/lib/' ../gcc-$(version)/gcc/config/i386/t-linux64 > tmp + mv tmp ../gcc-$(version)/gcc/config/i386/t-linux64 + fi + + export CC=gcc + export CXX=g++ + + ../gcc-$(version)/configure \ + CFLAGS="$CFLAGS -isystem $(prefix)/include" \ + CXXFLAGS="$CXXFLAGS -isystem $(prefix)/include" \ + --with-tune=generic \ + \ + --prefix=$(prefix) \ + --libdir=$(prefix)/lib \ + --disable-multilib \ + --disable-libssp \ + --disable-libmpx \ + --disable-libmudflap \ + --disable-libsanitizer \ + --disable-bootstrap \ + --disable-nls \ + --disable-werror \ + --enable-languages=c,c++ \ + --build=x86_64-weird-linux-musl + +SYSCONF ?= ../../ +include $(SYSCONF)/package.mk diff --git a/wip/libcxx/FIXME b/wip/libcxx/FIXME new file mode 100644 index 0000000..9e96110 --- /dev/null +++ b/wip/libcxx/FIXME @@ -0,0 +1,3 @@ +Make Error at CMakeLists.txt:5 (message): + libc++ now requires being built in a monorepo layout with libcxxabi + available \ No newline at end of file diff --git a/wip/libcxx/Makefile b/wip/libcxx/Makefile new file mode 100644 index 0000000..96317c8 --- /dev/null +++ b/wip/libcxx/Makefile @@ -0,0 +1,15 @@ +name = libcxx +version = 11.1.0 +URL = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(version)/$(name)-$(version).src.tar.xz + +CMAKE_OPTIONS_USER = -DCMAKE_INSTALL_PREFIX=$(PREFIX) \ + -DCMAKE_BUILD_TYPE=Release \ + -DLIBCXX_HAS_MUSL_LIBC=ON \ + -DCMAKE_CXX_FLAGS="$(CXXFLAGS)" \ + -DLIBCXX_CXX_ABI=libcxxabi \ + -DCMAKE_C_FLAGS="$(CFLAGS)" + +pkg_build_dir = $(pkg_build_par_dir)/$(name)-$(version).src + +SYSCONF ?= ../../ +include $(SYSCONF)/package.mk diff --git a/wip/libcxxabi/recipe.spec b/wip/libcxxabi/recipe.spec new file mode 100644 index 0000000..f94b786 --- /dev/null +++ b/wip/libcxxabi/recipe.spec @@ -0,0 +1,44 @@ +name: libcxxabi +version: 8.0.1 +# for version 9.X and later +# sources: http://releases.llvm.org/%{version}/libcxxabi-%{version}.src.tar.xz +sources: + - https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/libcxxabi-%{version}.src.tar.xz + - https://gist.github.com/jhuntwork/5805976/raw/110325d22d689a87727a03ebe8c5fee4bf45cede/libcxxabi.patch + +dirname: %{name}-%{version}.src/lib + +@configure + mkdir build + cd build + #sed -i -e "/-nostdinc++/d" CMakeLists.txt + cmake ../%{name}-%{version}.src \ + -DLIBCXXABI_LIBCXX_INCLUDES=%{prefix}/include/c++/v1 \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_COMPILER="clang" \ + -DCMAKE_CXX_FLAGS="$CXXFLAGS -D__DEFINED_max_align_t" \ + -DCMAKE_C_COMPILER="clang" \ + -DCMAKE_C_FLAGS="$CFLAGS" \ + -DLIBCXXABI_INCLUDE_TESTS=OFF \ + -DLLVM_ENABLE_LIBCXX=ON \ + -DCMAKE_INSTALL_PREFIX=%{prefix} + +@build + cd build + make + +@install + cd build + make DESTDIR="%{pkg}" install + mkdir -p %{pkg}%{prefix}/include + cp ../%{name}-%{version}.src/include/* %{pkg}%{prefix}/include + +#@build +# cd libcxxabi-%{version}.src/lib +# export CXX="clang++ $CXXFLAGS -I%{prefix}/include/c++/v1/ -I%{prefix}/include" +# ./buildit + +#@install +# cd libcxxabi-%{version}.src/lib +# mkdir -p %{pkg}%{prefix}/lib +# cp -a libc++abi.* %{pkg}%{prefix}/lib diff --git a/wip/libgpg-error/Makefile b/wip/libgpg-error/Makefile new file mode 100644 index 0000000..63ce952 --- /dev/null +++ b/wip/libgpg-error/Makefile @@ -0,0 +1,6 @@ +name = libgpg-error +version = 1.42 +URL = https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-$(version).tar.bz2 + +SYSCONF ?= ../../ +include $(SYSCONF)/package.mk diff --git a/wip/libksba/Makefile b/wip/libksba/Makefile new file mode 100644 index 0000000..7cf8e5b --- /dev/null +++ b/wip/libksba/Makefile @@ -0,0 +1,6 @@ +name = libksba +version = 1.5.0 +URL = https://gnupg.org/ftp/gcrypt/libksba/libksba-$(version).tar.bz2 + +SYSCONF ?= ../../ +include $(SYSCONF)/package.mk diff --git a/recipes/libunwind/FIXME b/wip/libunwind/FIXME similarity index 100% rename from recipes/libunwind/FIXME rename to wip/libunwind/FIXME diff --git a/recipes/libunwind/Makefile b/wip/libunwind/Makefile similarity index 100% rename from recipes/libunwind/Makefile rename to wip/libunwind/Makefile diff --git a/recipes/libunwind/fix-libunwind-pc-in.patch b/wip/libunwind/fix-libunwind-pc-in.patch similarity index 100% rename from recipes/libunwind/fix-libunwind-pc-in.patch rename to wip/libunwind/fix-libunwind-pc-in.patch diff --git a/recipes/libunwind/fix-ppc64-libdir.patch b/wip/libunwind/fix-ppc64-libdir.patch similarity index 100% rename from recipes/libunwind/fix-ppc64-libdir.patch rename to wip/libunwind/fix-ppc64-libdir.patch diff --git a/recipes/libunwind/force-enable-man.patch b/wip/libunwind/force-enable-man.patch similarity index 100% rename from recipes/libunwind/force-enable-man.patch rename to wip/libunwind/force-enable-man.patch diff --git a/recipes/libunwind/musl-mips-fix.patch b/wip/libunwind/musl-mips-fix.patch similarity index 100% rename from recipes/libunwind/musl-mips-fix.patch rename to wip/libunwind/musl-mips-fix.patch diff --git a/recipes/libunwind/ppc64-musl.patch b/wip/libunwind/ppc64-musl.patch similarity index 100% rename from recipes/libunwind/ppc64-musl.patch rename to wip/libunwind/ppc64-musl.patch diff --git a/wip/mdadm/APKBUILD b/wip/mdadm/APKBUILD new file mode 100644 index 0000000..218569e --- /dev/null +++ b/wip/mdadm/APKBUILD @@ -0,0 +1,75 @@ +# Contributor: Valery Kartel +# Contributor: Carlo Landmeter +# Maintainer: Natanael Copa +pkgname=mdadm +pkgver=4.1 +pkgrel=4 +pkgdesc="a tool for managing Linux Software RAID arrays" +url="https://neil.brown.name/blog/mdadm" +arch="all" +license="GPL-2.0-only" +depends="lsblk" +makedepends="groff linux-headers" +checkdepends="bash eudev e2fsprogs" +subpackages="$pkgname-doc $pkgname-udev::noarch $pkgname-misc::noarch" +source="https://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-$pkgver.tar.gz + $pkgname.initd + $pkgname.confd + $pkgname-raid.initd + no-werror.patch + mdadm-include-sysmacros.patch + fix-use-after-free.patch + fix-monitor-tv_sec.patch + " +options="!check" + +build() { + make + make raid6check +} + +# This doesn't build in Alpine CI. But it should work on bare-metal as root. +check() { + export PATH="$PWD:$PATH" # Test needs built binaries + make test + ./test +} + +package() { + make DESTDIR="$pkgdir" install + + install -Dm755 raid6check "$pkgdir"/sbin/raid6check + install -Dm644 raid6check.8 "$pkgdir"/usr/share/man/man8/raid6check.8 + + install -Dm644 $pkgname.conf-example "$pkgdir"/etc/$pkgname.conf + install -Dm644 "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname + install -Dm755 "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname + install -Dm755 "$srcdir"/$pkgname-raid.initd "$pkgdir"/etc/init.d/$pkgname-raid +} + +udev() { + pkgdesc="$pkgdesc (udev rules)" + install_if="udev $pkgname=$pkgver-r$pkgrel" + + mkdir -p "$subpkgdir" + mv "$pkgdir"/lib "$subpkgdir"/ +} + +misc() { + pkgdesc="$pkgdesc (misc scripts)" + depends="$pkgname bash" + + cd "$builddir" + + install -Dm755 misc/mdcheck "$subpkgdir"/usr/sbin/mdcheck + install -Dm755 misc/syslog-events "$subpkgdir"/usr/sbin/handle-mdadm-events +} + +sha512sums="f9bff760795ba7361f19fd1cbc02efedcdaa4b0125b99cf1369e78f30e5c128126751915fde41407d46c544514d864bf82b508419bc08f1db7aa447557e2ca9e mdadm-4.1.tar.gz +ca5f4e3ff5b284102b44e818d11622e1889066e3d18edce2d62c1a44ee8f4cfdc0979121c0462a916c638423c5ebc706c46aa996a7c4f68e030589adc62803f4 mdadm.initd +7d45bf489ef93a4f217ffcf72311eb661b8de7fbf63a5344697252c0d3a684b0123ff60efa5f218da4eb4cda7c88d91c2ef3625d5e44a588e3e1210cb60b0ab9 mdadm.confd +10d2456ca82c353c9b8540ca996de48575a60b83ede5b0bb7e960b4dd28aac2aa73eaeff4bdb99d03ce9630f986c2023b38fe332c5be74e0234985af6273a934 mdadm-raid.initd +794d6c31fbc0a9ef2f56d7b0afdb94490f0b677414d4f2b1b5104a51c4f39948491fc21aaa30ca75c90c9f056369317f48ea2f78e04ee740327114bee5d959b4 no-werror.patch +e711c15fada5fc98984f43f90a8ab3b6a2a20e9b91c56b5672fdb0ea127b61934b2f0c6ca986bd91c96c56b66f46326cb616101a62e4bfebe3a2b0d33ed2465c mdadm-include-sysmacros.patch +5f3544af7a6e16d78581ed468766203991118a43f131538b39c52f5d38d4458e2e57f2ec32d3558b5fdec4952cad3d969955d0efc1392b785e8345d352ab5b7b fix-use-after-free.patch +d7aeac1ce8e1b17bfdc6178551aaee364b731003e03b1d0c713ee879ac3f82164dff70999ad56c0e91c4bf90c5bca7708bdbb5d2a57e032fd0291828a917b054 fix-monitor-tv_sec.patch" diff --git a/wip/mdadm/fix-monitor-tv_sec.patch b/wip/mdadm/fix-monitor-tv_sec.patch new file mode 100644 index 0000000..f40d940 --- /dev/null +++ b/wip/mdadm/fix-monitor-tv_sec.patch @@ -0,0 +1,16 @@ +diff --git monitor.c monitor.c +index 81537ed..08027ac 100644 +--- a/monitor.c ++++ b/monitor.c +@@ -447,9 +447,9 @@ static int read_and_act(struct active_array *a, fd_set *fds) + } + + gettimeofday(&tv, NULL); +- dprintf("(%d): %ld.%06ld state:%s prev:%s action:%s prev: %s start:%llu\n", ++ dprintf("(%d): %lld.%06ld state:%s prev:%s action:%s prev: %s start:%llu\n", + a->info.container_member, +- tv.tv_sec, tv.tv_usec, ++ (long long)tv.tv_sec, (long)tv.tv_usec, + array_states[a->curr_state], + array_states[a->prev_state], + sync_actions[a->curr_action], diff --git a/wip/mdadm/fix-use-after-free.patch b/wip/mdadm/fix-use-after-free.patch new file mode 100644 index 0000000..464a3ee --- /dev/null +++ b/wip/mdadm/fix-use-after-free.patch @@ -0,0 +1,20 @@ +From Rich Felker. + +Fixed upstream in: +https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/policy.c?id=cd72f9d114da206baa01fd56ff2d8ffcc08f3239 + +diff --git a/policy.c b/policy.c +index c0d18a7e..78ad34cd 100644 +--- a/policy.c ++++ b/policy.c +@@ -214,8 +214,9 @@ static char *disk_path(struct mdinfo *disk) + continue; + if (stb.st_rdev != makedev(disk->disk.major, disk->disk.minor)) + continue; ++ char *result = xstrdup(ent->d_name); + closedir(by_path); +- return xstrdup(ent->d_name); ++ return result; + } + closedir(by_path); + } diff --git a/wip/mdadm/mdadm-include-sysmacros.patch b/wip/mdadm/mdadm-include-sysmacros.patch new file mode 100644 index 0000000..09d755e --- /dev/null +++ b/wip/mdadm/mdadm-include-sysmacros.patch @@ -0,0 +1,10 @@ +--- a/mdadm.h ++++ b/mdadm.h +@@ -34,6 +34,7 @@ + #endif + + #include ++#include + #include + #include + #include diff --git a/wip/mdadm/mdadm-raid.initd b/wip/mdadm/mdadm-raid.initd new file mode 100644 index 0000000..77f8795 --- /dev/null +++ b/wip/mdadm/mdadm-raid.initd @@ -0,0 +1,48 @@ +#!/sbin/openrc-run + +# script to start raid devices described in /etc/mdadm.conf. +depend() { + before checkfs fsck swap + after modules +} + +array_devices() { + awk '/^ARRAY/ {print $2}' /etc/mdadm.conf +} + +start() { + [ -f /etc/mdadm.conf ] || return 0 + # start all devices that are not already started + [ -f /proc/mdstat ] || modprobe md > /dev/null 2>&1 + local tostart= + for i in $(array_devices); do + [ -b "$i" ] && continue + tostart="$tostart $i" + done + [ -z "$tostart" ] && return 0 + + ebegin "Starting RAID devices" + mdadm --assemble --scan --quiet $tostart + eend $? +} + +is_mounted_as() { + local mnt + for mnt in $(lsblk -o MOUNTPOINT $1); do + [ "$mnt" = "$2" ] && return 0 + done + return 1 +} + +stop() { + # stop all raid devices except anything mounted as / + [ -f /etc/mdadm.conf ] || return 0 + ebegin "Stopping RAID devices" + local tostop= + for i in $(array_devices); do + is_mounted_as $i / && continue + tostop="$tostop $i" + done + mdadm --stop --quiet $tostop + eend $? +} diff --git a/wip/mdadm/mdadm.confd b/wip/mdadm/mdadm.confd new file mode 100644 index 0000000..f1ed9c4 --- /dev/null +++ b/wip/mdadm/mdadm.confd @@ -0,0 +1,5 @@ +# Misc options to pass to mdadm in monitor mode. +# For more info, run `mdadm --monitor --help` or see +# the mdadm(8) manpage. + +OPTS="--syslog" diff --git a/wip/mdadm/mdadm.initd b/wip/mdadm/mdadm.initd new file mode 100644 index 0000000..f799dd4 --- /dev/null +++ b/wip/mdadm/mdadm.initd @@ -0,0 +1,28 @@ +#!/sbin/openrc-run + +# Sample init.d file for alpine linux. + +NAME=mdadm +DAEMON=/sbin/$NAME + +depend() { + use logger dns net + after firewall +} + +start() { + ebegin "Starting ${NAME}" + start-stop-daemon --start --quiet --background \ + --exec ${DAEMON} -- \ + --monitor --scan \ + --daemonise ${OPTS} + eend $? +} + +stop() { + ebegin "Stopping ${NAME}" + start-stop-daemon --stop --quiet \ + --exec ${DAEMON} + eend $? +} + diff --git a/wip/mdadm/no-werror.patch b/wip/mdadm/no-werror.patch new file mode 100644 index 0000000..f4164c5 --- /dev/null +++ b/wip/mdadm/no-werror.patch @@ -0,0 +1,13 @@ +diff --git a/Makefile b/Makefile +index 5fd7f16..5095a42 100644 +--- a/Makefile ++++ b/Makefile +@@ -43,7 +43,7 @@ KLIBC_GCC = gcc -nostdinc -iwithprefix include -I$(KLIBC)/klibc/include -I$(KLIB + + CC ?= $(CROSS_COMPILE)gcc + CXFLAGS ?= -ggdb +-CWFLAGS = -Wall -Werror -Wstrict-prototypes -Wextra -Wno-unused-parameter ++CWFLAGS = -Wall -Wstrict-prototypes -Wextra -Wno-unused-parameter + ifdef WARN_UNUSED + CWFLAGS += -Wp,-D_FORTIFY_SOURCE=2 -O3 + endif diff --git a/wip/metasploit/Makefile b/wip/metasploit/Makefile new file mode 100644 index 0000000..b63f640 --- /dev/null +++ b/wip/metasploit/Makefile @@ -0,0 +1,26 @@ +name = metasploit-omnibus +version = 6.0.40 +release = 0 +URL = https://github.com/rapid7/metasploit-omnibus/archive/refs/tags/$(version).tar.gz + +dependencies = ruby rubygems libpcap-devel postgresql-dev +build-dependencies = git ruby-bundler bison flex autoconf automake + +#MAKE_INSTALL_OPTIONS_USER = prefix=$(PREFIX) + +configure_backend = configure_custom +build_backend = + +SYSCONF ?= ../../ +include $(SYSCONF)/package.mk + +## TODO: remove this somehow, metasploit installer sucks. +#pre_configure: +# sudo mkdir -p /var/cache/omnibus +# sudo mkdir -p /opt/metasploit-framework +# sudo chown `whoami` /var/cache/omnibus +# sudo chown `whoami` /opt/metasploit-framework + +configure_custom: + cd $(bdir) && bundle binstubs --all + diff --git a/wip/mksh/APKBUILD b/wip/mksh/APKBUILD new file mode 100644 index 0000000..3464b52 --- /dev/null +++ b/wip/mksh/APKBUILD @@ -0,0 +1,42 @@ +# Contributor: Eivind Uggedal +# Maintainer: Sören Tempel +pkgname=mksh +pkgver=59c +_pkgver=R$pkgver +pkgrel=2 +pkgdesc="MirBSD KSH Shell" +url="https://www.mirbsd.org/mksh" +arch="all" +license="MirOS AND Unicode-DFS-2016" +checkdepends="perl" +install="$pkgname.post-install $pkgname.post-upgrade $pkgname.pre-deinstall" +subpackages="$pkgname-doc" +source="https://www.mirbsd.org/MirOS/dist/mir/mksh/mksh-$_pkgver.tgz" +builddir="$srcdir/$pkgname" + +prepare() { + default_prepare + + # This test case checks if a controlling tty is not present when + # '-C regress:no-ctty' has been passed. However, a controlling + # tty might be present when building this APKBUILD locally but + # isn't present on the builder. To make sure the tests pass both + # locally and on the builders we remove this test case. + sed -i "$builddir"/check.t -e '/^name: selftest-tty-absent$/,/^---$/d' +} + +build() { + sh Build.sh -r +} + +check() { + ./test.sh -v -f -C regress:no-ctty +} + +package() { + install -Dm755 mksh "$pkgdir"/bin/mksh + install -Dm644 dot.mkshrc "$pkgdir"/etc/skel/.mkshrc + install -Dm644 mksh.1 "$pkgdir"/usr/share/man/man1/mksh.1 +} + +sha512sums="f56b6956f9e1dd88ddce2294301a5eb698050d9d4f49286fdcd8f9df8554eabbcc71d37e2bf3eb7234e3968a17231cc6de8aa7efbf17768834a90b14e8cdf340 mksh-R59c.tgz" diff --git a/wip/mksh/Makefile b/wip/mksh/Makefile new file mode 100644 index 0000000..70996c2 --- /dev/null +++ b/wip/mksh/Makefile @@ -0,0 +1,34 @@ +name = mksh +version = 59c +URL = https://www.mirbsd.org/MirOS/dist/mir/mksh/mksh-R$(version).tgz + +dependencies = +build-dependencies = + +pkg_build_dir = $(pkg_build_par_dir)/mksh + +# This test case checks if a controlling tty is not present when +# '-C regress:no-ctty' has been passed. However, a controlling +# tty might be present when building this APKBUILD locally but +# isn't present on the builder. To make sure the tests pass both +# locally and on the builders we remove this test case. +pre_build: + $(Q)sed -i $(bdir)/check.t -e '/^name: selftest-tty-absent$/,/^---$/d' + +# Static build. +LDSTATIC=-static +export LDSTATIC + +build_backend = build_custom +build_custom: + @echo "$(bdir) $$ sh Build.sh -r" + $(Q)cd $(bdir); sh Build.sh -r $(log_it) + +fake_root_install_backend = fake_root_install_custom +fake_root_install_custom: + $(Q)cd $(bdir); install -Dm755 mksh "$(pkg_fake_root_dir)"/$(PREFIX)/mksh + $(Q)cd $(bdir); install -Dm644 dot.mkshrc "$(pkg_fake_root_dir)"/etc/skel/.mkshrc + $(Q)cd $(bdir); install -Dm644 mksh.1 "$(pkg_fake_root_dir)"/$(MANDIR)/man1/mksh.1 + +SYSCONF ?= ../../ +include $(SYSCONF)/package.mk diff --git a/wip/mksh/mksh-59c-r2.apk b/wip/mksh/mksh-59c-r2.apk new file mode 100644 index 0000000000000000000000000000000000000000..b899554f490da44ef6d23e00028f591ec4152730 GIT binary patch literal 135733 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 literal 0 HcmV?d00001 diff --git a/wip/mksh/mksh.post-install b/wip/mksh/mksh.post-install new file mode 100644 index 0000000..5ba1f2f --- /dev/null +++ b/wip/mksh/mksh.post-install @@ -0,0 +1,3 @@ +#!/bin/sh +add-shell '/bin/mksh' +exit 0 diff --git a/wip/mksh/mksh.post-upgrade b/wip/mksh/mksh.post-upgrade new file mode 120000 index 0000000..29bbd42 --- /dev/null +++ b/wip/mksh/mksh.post-upgrade @@ -0,0 +1 @@ +mksh.post-install \ No newline at end of file diff --git a/wip/mksh/mksh.pre-deinstall b/wip/mksh/mksh.pre-deinstall new file mode 100644 index 0000000..82e6d3b --- /dev/null +++ b/wip/mksh/mksh.pre-deinstall @@ -0,0 +1,3 @@ +#!/bin/sh +remove-shell '/bin/mksh' +exit 0 diff --git a/wip/mtools/APKBUILD b/wip/mtools/APKBUILD new file mode 100644 index 0000000..c6453fd --- /dev/null +++ b/wip/mtools/APKBUILD @@ -0,0 +1,33 @@ +# Maintainer: Natanael Copa +pkgname=mtools +pkgver=4.0.26 +pkgrel=0 +pkgdesc="collection of utilities to access MS-DOS disks from Unix without mounting them" +url="https://www.gnu.org/software/mtools/" +arch="all" +license="GPL-3.0-or-later" +makedepends="texinfo linux-headers" +source="https://ftp.gnu.org/gnu/mtools/mtools-$pkgver.tar.bz2" +subpackages="$pkgname-doc" + +build() { + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --sysconfdir=/etc/mtools \ + --without-x + make +} + +check() { + make check +} + +package() { + make -j1 install DESTDIR="$pkgdir" +} + +sha512sums="32303ea16314ca00f33aee103451958f13c71ab1f3975e9a1dd9236c8e775286985ee776c38c64a1f8f5f8d0a66cbf84643182913e4e2c2dcaff384a9acd8633 mtools-4.0.26.tar.bz2" diff --git a/wip/sed/APKBUILD b/wip/sed/APKBUILD new file mode 100644 index 0000000..a4f9f5c --- /dev/null +++ b/wip/sed/APKBUILD @@ -0,0 +1,44 @@ +# Maintainer: Natanael Copa +pkgname=sed +pkgver=4.8 +pkgrel=0 +subpackages="$pkgname-doc" +pkgdesc="GNU stream editor" +url="https://www.gnu.org/software/sed" +arch="all" +license="GPL-3.0-or-later" +makedepends="perl" +checkdepends="diffutils" +install="$pkgname.post-deinstall" +# GNU's master site seems to be down. use a mirror for now +#source="https://ftp.gnu.org/pub/gnu/$pkgname/$pkgname-$pkgver.tar.xz +source="https://ftp.heanet.ie/mirrors/ftp.gnu.org/gnu/sed/sed-$pkgver.tar.xz + " +# testsuite fails because busybox provides a /usr/bin/timeout +options="!check" + +build() { + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --bindir=/bin \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --disable-i18n \ + --disable-nls + make +} + +check() { + make check +} + +package() { + make DESTDIR="$pkgdir" install + + rm -rf "$pkgdir"/usr/lib/charset.alias || true + rmdir -p "$pkgdir"/usr/lib 2>/dev/null || true +} + +sha512sums="7de25d9bc2981c63321c2223f3fbcab61d7b0df4fcf7d4394b72400b91993e1288d8bf53948ed5fffcf5a98c75265726a68ad4fb98e1d571bf768603a108c1c8 sed-4.8.tar.xz" diff --git a/wip/sed/sed.post-deinstall b/wip/sed/sed.post-deinstall new file mode 100644 index 0000000..5ec0031 --- /dev/null +++ b/wip/sed/sed.post-deinstall @@ -0,0 +1,6 @@ +#!/bin/sh + +# we cannot rely on the busybox trigger since sed might be used from install +# scripts + +[ -x /bin/busybox ] && exec /bin/busybox --install -s diff --git a/wip/syslinux/0018-prevent-pow-optimization.patch b/wip/syslinux/0018-prevent-pow-optimization.patch new file mode 100644 index 0000000..0c42c7b --- /dev/null +++ b/wip/syslinux/0018-prevent-pow-optimization.patch @@ -0,0 +1,36 @@ +From: Lukas Schwaighofer +Date: Tue, 26 Feb 2019 23:13:58 +0100 +Subject: Prevent optimizing the pow() function + +With the current GCC 8.2.0 from Debian, a section of code calling pow() in +zzjson_parse.c is turned into a sequence calling exp(). Since no exp() +implementation is available in syslinux those optimizations need to be +disabled. +--- + com32/gpllib/zzjson/zzjson_parse.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/com32/gpllib/zzjson/zzjson_parse.c b/com32/gpllib/zzjson/zzjson_parse.c +index ecb6f61..e66a9d8 100644 +--- a/com32/gpllib/zzjson/zzjson_parse.c ++++ b/com32/gpllib/zzjson/zzjson_parse.c +@@ -138,6 +138,10 @@ static ZZJSON *parse_string2(ZZJSON_CONFIG *config) { + return zzjson; + } + ++static double __attribute__((optimize("O0"))) pow_noopt(double x, double y) { ++ return pow(x, y); ++} ++ + static ZZJSON *parse_number(ZZJSON_CONFIG *config) { + ZZJSON *zzjson; + unsigned long long ival = 0, expo = 0; +@@ -213,7 +217,7 @@ skipexpo: + if (dbl) { + dval = sign * (long long) ival; + dval += sign * frac; +- dval *= pow(10.0, (double) signexpo * expo); ++ dval *= pow_noopt(10.0, (double) signexpo * expo); + } + + zzjson = config->calloc(1, sizeof(ZZJSON)); diff --git a/wip/syslinux/APKBUILD b/wip/syslinux/APKBUILD new file mode 100644 index 0000000..e02aa5d --- /dev/null +++ b/wip/syslinux/APKBUILD @@ -0,0 +1,53 @@ +# Maintainer: Natanael Copa +pkgname=syslinux +pkgver=6.04_pre1 +pkgrel=8 +_ver=${pkgver/_/-} +pkgdesc="Boot loader for the Linux operating system" +url="https://syslinux.org" +arch="x86 x86_64" +license="GPL-2.0-or-later" +makedepends="linux-headers nasm perl util-linux-dev gnu-efi-dev" +depends="mtools blkid mkinitfs" +triggers="syslinux.trigger=/boot" +install="syslinux.post-upgrade" +options="textrels" +ldpath="/usr/share/syslinux" +subpackages="$pkgname-doc $pkgname-dev" +source="https://www.kernel.org/pub/linux/utils/boot/syslinux/Testing/${pkgver%_pre*}/syslinux-$_ver.tar.xz + update-extlinux.conf + update-extlinux + 0018-prevent-pow-optimization.patch + fix-sysmacros.patch + gcc-10.patch + " + +case "$CARCH" in +x86) _loaderarch=efi32;; +x86_64) _loaderarch=efi64;; +esac + +builddir="$srcdir"/$pkgname-$_ver + +build() { + unset LDFLAGS + make $_loaderarch installer +} + +package() { + make -j1 INSTALLROOT="$pkgdir" MANDIR=/usr/share/man \ + bios $_loaderarch install + + mkdir -p "$pkgdir"/etc/update-extlinux.d + cp "$srcdir"/update-extlinux.conf "$pkgdir"/etc/ + sed "/^version=/s/=.*/=$pkgver-r$pkgrel/" "$srcdir"/update-extlinux \ + > "$pkgdir"/sbin/update-extlinux + chmod 755 "$pkgdir"/sbin/update-extlinux +} + +sha512sums="7927dd39be8e2dcf4138a6fea33def67d19d938379d694f15b48fdd2f5924c028b7a9e7bd71d0c7c6630c203e9e2a54296628e530632ad5e6f55b1ebefe8fc98 syslinux-6.04-pre1.tar.xz +9d2b82c91525de584daad6b0c0e2df5d13092c47e91a812e26405f5ff78d4587a8ae7f7a8590124687307f83efb15f686e4090193adc7b4e3601a4200f9283cd update-extlinux.conf +8a46d4c601bd6a1e1308138af73792ef6eda9a1eac1cbcd13af27cf31ecf2960a130b22ad3439c4d5df3c5fd9dc934900b29e449ea958d1496b331885a7f5af6 update-extlinux +92fa48133ef702092d7acafae0e0e20f9355cd2b5fe199b96fcccba5a1e688c360de4d069391815255f5493228ad03998d20b99748323396d20d12a1f27c60cd 0018-prevent-pow-optimization.patch +6fb63b50a6c746445a58badc81cbf8525f38e2a7868b97ac21aa9d20c162f2318fab6c25505614700033a840aa5c06c3cef3065f11b5b5f4e514474194ff4b54 fix-sysmacros.patch +62a45f94107300b05a93be18a228c15ae9ce90addeee39a1ef35845077b493e72ebed35791bf8db21c406c379a83220cc4db4e1919c01fcd387ae10b2cfc8861 gcc-10.patch" diff --git a/wip/syslinux/FIXME b/wip/syslinux/FIXME new file mode 100644 index 0000000..017b3df --- /dev/null +++ b/wip/syslinux/FIXME @@ -0,0 +1 @@ +For now, some applications are installed in /usr/bin. \ No newline at end of file diff --git a/wip/syslinux/Makefile b/wip/syslinux/Makefile new file mode 100644 index 0000000..60f4b22 --- /dev/null +++ b/wip/syslinux/Makefile @@ -0,0 +1,50 @@ +name = syslinux +#version = 6.03 +#URL = https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/$(name)-$(version).tar.gz +version_abbr = 6.04 +version = $(version_abbr)-pre1 +URL = https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/Testing/$(version_abbr)/syslinux-$(version).tar.xz + +patches != ls *.patch + +dependencies = util-linux +build-dependencies = nasm linux-dev util-linux-dev + +loaderarch_ = efi64 +ifeq ($(ARCH),x86) +loaderarch_ = efi32 +endif +loaderarch ?= $(loaderarch_) + +build_backend = build_custom +build_custom: + $(Q)cd $(bdir); LDFLAGS= make $(loaderarch) installer + +MAKE_INSTALL_OPTIONS_USER = -j1 \ + INSTALLROOT="$(pkg_fake_root_dir)" \ + DATADIR=$(PREFIX) \ + BINDIR=$(BINDIR) \ + SBINDIR=$(SBINDIR) \ + LIBDIR=$(LIBDIR) \ + INCDIR=$(INCLUDEDIR) \ + MANDIR=$(MANDIR) \ + TFTPBOOT=$(PREFIX)/tftpboot \ + bios $(loaderarch) + +post_fake_root_install: + mkdir -p "$(pkg_fake_root_dir)"/etc/update-extlinux.d + cp update-extlinux.conf "$(pkg_fake_root_dir)"/etc/ + sed "/^version=/s/=.*/=$(version)-r$(release)/" update-extlinux \ + > "$(pkg_fake_root_dir)"/sbin/update-extlinux + chmod 755 "$(pkg_fake_root_dir)"/sbin/update-extlinux + +#build_custom: +# cd $(bdir) ; \ +# (echo '#include '; cat extlinux/main.c) > main.c.new && \ +# mv main.c.new extlinux/main.c ; \ +# make efi32 efi64 bios installer + +#MAKE_INSTALL_OPTIONS_USER = INSTALLROOT="$(pkg_fake_root_dir)" EXTLINUXDIR=/boot/extlinux + +SYSCONF ?= ../../ +include $(SYSCONF)/package.mk diff --git a/wip/syslinux/fix-sysmacros.patch b/wip/syslinux/fix-sysmacros.patch new file mode 100644 index 0000000..dd622e8 --- /dev/null +++ b/wip/syslinux/fix-sysmacros.patch @@ -0,0 +1,12 @@ +diff --git a/extlinux/main.c b/extlinux/main.c +index a7ebd49..69bb164 100644 +--- a/extlinux/main.c ++++ b/extlinux/main.c +@@ -41,6 +41,7 @@ + #include + #include + #include ++#include + + #include "linuxioctl.h" + diff --git a/wip/syslinux/gcc-10.patch b/wip/syslinux/gcc-10.patch new file mode 100644 index 0000000..b5bbad0 --- /dev/null +++ b/wip/syslinux/gcc-10.patch @@ -0,0 +1,109 @@ +From 951928f2cad5682c2844e6bd0f7201236c5d9b66 Mon Sep 17 00:00:00 2001 +From: Merlin Mathesius +Date: Wed, 13 May 2020 08:02:27 -0500 +Subject: [PATCH] Workaround multiple definition of symbol errors + +--- + com32/cmenu/Makefile | 2 +- + com32/elflink/ldlinux/Makefile | 2 +- + com32/gpllib/Makefile | 2 +- + com32/hdt/Makefile | 2 +- + core/Makefile | 2 +- + dos/Makefile | 2 +- + efi/Makefile | 2 +- + 7 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/com32/cmenu/Makefile b/com32/cmenu/Makefile +index b81b68ed..2ae989c4 100644 +--- a/com32/cmenu/Makefile ++++ b/com32/cmenu/Makefile +@@ -49,7 +49,7 @@ makeoutputdirs: + @mkdir -p $(OBJ)/libmenu + + libmenu/libmenu.elf: $(LIBMENU) +- $(LD) -shared $(LDFLAGS) -soname $(patsubst %.elf,%.c32,$(@F)) \ ++ $(LD) -shared $(LDFLAGS) -z muldefs -soname $(patsubst %.elf,%.c32,$(@F)) \ + -o $@ $^ + + tidy dist: +diff --git a/com32/elflink/ldlinux/Makefile b/com32/elflink/ldlinux/Makefile +index 87c0d362..2be2a01a 100644 +--- a/com32/elflink/ldlinux/Makefile ++++ b/com32/elflink/ldlinux/Makefile +@@ -33,7 +33,7 @@ endif + all: $(BTARGET) ldlinux_lnx.a + + ldlinux.elf : $(OBJS) +- $(LD) $(LDFLAGS) -soname $(SONAME) -o $@ $^ $(LIBS) ++ $(LD) $(LDFLAGS) -z muldefs -soname $(SONAME) -o $@ $^ $(LIBS) + + LNXCFLAGS += -D__export='__attribute__((visibility("default")))' + LNXLIBOBJS = get_key.lo +diff --git a/com32/gpllib/Makefile b/com32/gpllib/Makefile +index 1fec9145..2d764d0b 100644 +--- a/com32/gpllib/Makefile ++++ b/com32/gpllib/Makefile +@@ -24,7 +24,7 @@ makeoutputdirs: + $(addprefix $(OBJ),$(sort $(dir $(LIBOBJS)))),$(b)) + + libgpl.elf : $(LIBOBJS) +- $(LD) -shared $(LDFLAGS) -soname $(patsubst %.elf,%.c32,$(@F)) -o $@ $^ ++ $(LD) -shared $(LDFLAGS) -z muldefs -soname $(patsubst %.elf,%.c32,$(@F)) -o $@ $^ + + tidy dist clean: + find . \( -name \*.o -o -name .\*.d -o -name \*.tmp \) -print0 | \ +diff --git a/com32/hdt/Makefile b/com32/hdt/Makefile +index 61736d05..1d947857 100644 +--- a/com32/hdt/Makefile ++++ b/com32/hdt/Makefile +@@ -52,7 +52,7 @@ QEMU ?= qemu-kvm + all: $(MODULES) $(TESTFILES) + + hdt.elf : $(OBJS) $(LIBS) $(C_LIBS) +- $(LD) $(LDFLAGS) -o $@ $^ ++ $(LD) $(LDFLAGS) -z muldefs -o $@ $^ + + memtest: + -[ ! -f $(FLOPPY_DIR)/$(MEMTEST) ] && $(WGET) $(MEMTEST_URL) -O $(FLOPPY_DIR)/$(MEMTEST) +diff --git a/core/Makefile b/core/Makefile +index 46cb037c..f0cfcbe9 100644 +--- a/core/Makefile ++++ b/core/Makefile +@@ -156,7 +156,7 @@ LDSCRIPT = $(SRC)/$(ARCH)/syslinux.ld + NASM_ELF = elf + + %.elf: %.o $(LIBDEP) $(LDSCRIPT) $(AUXLIBS) +- $(LD) $(LDFLAGS) -pie -Bsymbolic \ ++ $(LD) $(LDFLAGS) -z muldefs -pie -Bsymbolic \ + -T $(LDSCRIPT) \ + --unresolved-symbols=report-all \ + -E --hash-style=gnu -M -o $@ $< \ +diff --git a/dos/Makefile b/dos/Makefile +index 4c930d19..5d1c72ca 100644 +--- a/dos/Makefile ++++ b/dos/Makefile +@@ -19,7 +19,7 @@ include $(MAKEDIR)/embedded.mk + CFLAGS += -D__MSDOS__ -mregparm=3 -DREGPARM=3 + # CFLAGS += -DDEBUG + +-LDFLAGS = -T $(SRC)/dosexe.ld ++LDFLAGS = -T $(SRC)/dosexe.ld -z muldefs + OPTFLAGS = -g + INCLUDES = -include code16.h -nostdinc -iwithprefix include \ + -I$(SRC) -I$(SRC)/.. -I$(SRC)/../libfat \ +diff --git a/efi/Makefile b/efi/Makefile +index bbf23f24..3dd922d5 100644 +--- a/efi/Makefile ++++ b/efi/Makefile +@@ -69,7 +69,7 @@ $(OBJS): | $(OBJ)/$(ARCH) + BTARGET = syslinux.efi + + syslinux.so: $(OBJS) $(CORE_OBJS) $(LIB_OBJS) +- $(LD) $(LDFLAGS) --strip-debug -o $@ $^ -lgnuefi -lefi ++ $(LD) $(LDFLAGS) -z muldefs --strip-debug -o $@ $^ -lgnuefi -lefi + + # We need to rename the .hash section because the EFI firmware + # linker really doesn't like it. +-- +2.25.1 + diff --git a/wip/syslinux/syslinux.post-upgrade b/wip/syslinux/syslinux.post-upgrade new file mode 100644 index 0000000..9038866 --- /dev/null +++ b/wip/syslinux/syslinux.post-upgrade @@ -0,0 +1,61 @@ +#!/bin/sh + +# find given append opt +get_append_opt() { + awk -v search="$1" ' + $1 == "append" || $1 == "APPEND" { + split($0, a); + for (i in a) { + if (index(a[i], search) == 1) { + print a[i]; + } + } + }' /boot/extlinux.conf | sort | uniq +} + +# print default kernel options +get_default_opts() { + awk ' + $1 == "append" || $1 == "APPEND" { + opts=""; + space=""; + split($0, a); + for (i in a) { + if (i != 1 \ + && (index(a[i], "root=") != 1) \ + && (index(a[i], "initrd=") != 1) \ + && (index(a[i], "modules=") != 1)) { + opts = opts space a[i]; + space = " "; + } + } + print opts; + } + ' /boot/extlinux.conf | sort | uniq +} + +if ! [ -f /boot/extlinux.conf ]; then + exit 0 +fi + +# check if we already have a generated extlinux.conf +if grep -q '^# Generated by update-extlinux' /boot/extlinux.conf; then + exit 0 +fi + +# try fish out the kernel opts from extlinuix.conf's append line +root=$(get_append_opt 'root=' | head -n 1) +modules=$(get_append_opt 'modules=' | head -n 1) +opts=$(get_default_opts | head -n 1) + +# populate update-extlinux.conf with the info we know +if [ -n "$root" ]; then + sed -i -e "/^root=/s|.*|$root|g" /etc/update-extlinux.conf +fi +if [ -n "$modules" ]; then + sed -i -e "/^modules=/s|.*|$modules|g" /etc/update-extlinux.conf +fi +if [ -n "$opts" ]; then + sed -i -e "/^default_kernel_opts=/s|.*|default_kernel_opts=\"$opts\"|g" /etc/update-extlinux.conf +fi + diff --git a/wip/syslinux/syslinux.trigger b/wip/syslinux/syslinux.trigger new file mode 100644 index 0000000..fe91f43 --- /dev/null +++ b/wip/syslinux/syslinux.trigger @@ -0,0 +1,3 @@ +#!/bin/sh + +update-extlinux --warn-only diff --git a/wip/syslinux/update-extlinux b/wip/syslinux/update-extlinux new file mode 100755 index 0000000..0ea1ae4 --- /dev/null +++ b/wip/syslinux/update-extlinux @@ -0,0 +1,262 @@ +#!/bin/sh + +version= +default=0 +timeout=5 +verbose=0 + +conf=/boot/extlinux.conf +myconf=/etc/update-extlinux.conf + +# read in extlinux settings +if [ -f "$myconf" ]; then + . $myconf +fi + +everbose() { + if [ "$verbose" = "0" ]; then + return + fi + + echo $* +} + +ewarn() { + echo "WARNING:" $@ >&2 +} + +eerror() { + echo "ERROR:" $@ >&2 + return 1 +} + +usage() { + echo "usage: $0 [-v|--verbose] [--warn-only]" +} + +while [ $# -gt 0 ]; do + opt="$1" + shift + case "$opt" in + -v|--verbose) + verbose=1 + ;; + --warn-only) + warn_only=1 + ;; + --) + break + ;; + -*) + usage + exit 1 + ;; + esac +done + +everbose "Updating extlinux configuration." + +if [ "x$root" = "x" ]; then + ewarn "Root device is not specified in $myconf." + blkid_export=$(blkid -o export /dev/root) + if [ -n "$blkid_export" ]; then + export $blkid_export + fi + if [ -z "$UUID" ]; then + # try parse /proc/mount for mounted / + dev=$(awk '$2 == "/" {dev=$1} END {print dev}' /proc/mounts) + if [ -n "$dev" ]; then + blkid_export=$(blkid -o export $dev) + if [ -n "$blkid_export" ]; then + export "$blkid_export" + fi + fi + fi + if [ -z "$UUID" ]; then + if [ -z "$dev" ]; then + if [ -n "$warn_only" ]; then + ewarn "Failed to detect root device. extlinux.conf is not updated" + exit 0 + else + eerror "Failed to detect root device" + exit 1 + fi + else + root=$dev + fi + else + root=UUID=$UUID + fi + everbose "Root device is: $root" +fi + +rtimeout=$(( ${timeout} * 10 )) +syslinux_menu=menu.c32 +menu_hidden= + +# vesa menu has been requested? +if [ "$vesa_menu" = "1" ]; then + syslinux_menu=vesamenu.c32 +fi + +umask 0022 +rm -f $conf.new +echo "# Generated by update-extlinux $version" > $conf.new +if [ -n "$serial_port" ]; then + echo "SERIAL $serial_port ${serial_baud:-115200}" >> $conf.new +fi +echo "DEFAULT $syslinux_menu" >> $conf.new +echo "PROMPT 0" >> $conf.new +echo "MENU TITLE Alpine/$(uname -s) Boot Menu" >> $conf.new +if [ "$hidden" = "1" ]; then + echo "MENU HIDDEN" >> $conf.new +fi +echo "MENU AUTOBOOT Alpine will be booted automatically in # seconds." >> $conf.new +echo "TIMEOUT $rtimeout" >> $conf.new + +lst=0 +if [ -f "/boot/xen.gz" ]; then + for kernel in $(find /boot -name "vmlinuz-*" -type f); do + tag=$(basename $kernel | cut -b9-) + everbose "Found Xen hypervisor: /boot/xen.gz, kernel: $kernel" + + if [ -f "/boot/initramfs-$tag" ]; then + everbose "Found initramfs: /boot/initramfs-$tag" + initramfs="initramfs-$tag" + else + initramfs= + fi + label=xen-$(grep -w -l $tag /usr/share/kernel/*/kernel.release \ + | cut -d/ -f5) + if [ "$label" = "xen-" ]; then + label=xen-$lst + fi + + echo "LABEL $label" >> $conf.new + if [ "$label" = "$default" ]; then + echo " MENU DEFAULT" >> $conf.new + fi + echo " MENU LABEL Xen + Linux $tag" >> $conf.new + echo " COM32 mboot.c32" >> $conf.new + echo " APPEND xen.gz $xen_opts --- $(basename $kernel) root=$root modules=${modules}${TYPE:+,$TYPE} $default_kernel_opts --- $initramfs" >> $conf.new + echo "" >> $conf.new + lst=$(($lst + 1)) + done +fi + +for kernel in $(find /boot -name "vmlinuz*" -type f); do + case $kernel in + *vmlinuz) tag=vanilla;; + *vmlinuz-*) tag=$(basename $kernel | cut -b9-);; + *) continue;; + esac + everbose "Found kernel: $kernel" + label=$(grep -w -l $tag /usr/share/kernel/*/kernel.release | cut -d/ -f5) + if [ -z "$label" ]; then + if [ "$tag" = vanilla ]; then + label="vanilla" + else + label=$lst + fi + fi + echo "LABEL $label" >> $conf.new + if [ "$label" = "$default" ]; then + echo " MENU DEFAULT" >> $conf.new + fi + echo " MENU LABEL Linux $tag" >> $conf.new + echo " LINUX $(basename $kernel)" >> $conf.new + initrd= + if [ -f "/boot/initramfs-$tag" ]; then + everbose "Found initramfs: /boot/initramfs-$tag" + initrd="initramfs-$tag" + fi + if [ -f "/boot/amd-ucode.img" ]; then + everbose "Found microcode for AMD CPUs: /boot/amd-ucode.img" + initrd="amd-ucode.img${initrd:+,}${initrd}" + fi + if [ -f "/boot/intel-ucode.img" ]; then + everbose "Found microcode for Intel CPUs: /boot/intel-ucode.img" + initrd="intel-ucode.img${initrd:+,}${initrd}" + fi + echo " INITRD ${initrd}" >> $conf.new + echo " APPEND root=$root modules=${modules}${TYPE:+,$TYPE} $default_kernel_opts" >> $conf.new + echo "" >> $conf.new + lst=$(($lst + 1)) +done + +if [ -n "$password" ]; then + echo "NOESCAPE 1" >> $conf.new + echo "MENU MASTER PASSWD $password" >> $conf.new + echo "" >> $conf.new + chmod o-r $conf.new +fi + +everbose "$lst entries found." + +for entry in /etc/update-extlinux.d/*; do + [ -f "$entry" ] && { cat $entry; echo ""; } >> $conf.new +done + +echo "MENU SEPARATOR" >> $conf.new +echo "" >> $conf.new + +if [ -f "/boot/hdt.c32" ]; then + everbose "Found Hardware Detection Tool: /boot/hdt.c32" + echo "LABEL hdt" >> $conf.new + echo " MENU LABEL Hardware info" >> $conf.new + if [ -n "$password" ]; then + echo " MENU PASSWD" >> $conf.new + fi + echo " COM32 hdt.c32" >> $conf.new + if [ -f "/boot/memtest" ]; then + everbose "Found memtest86+: /boot/memtest" + echo " APPEND memtest=memtest" >> $conf.new + fi + echo "" >> $conf.new +elif [ -f "/boot/memtest" ]; then + everbose "Found memtest86+: /boot/memtest" + echo "LABEL memtest" >> $conf.new + echo " MENU LABEL Memtest86+" >> $conf.new + echo " KERNEL memtest" >> $conf.new + echo "" >> $conf.new +fi + +for i in reboot poweroff; do + [ -f "/boot/$i.c32" ] || continue + everbose "Found $i" + # make first char capital + cap=$( echo $i | awk '{sub(".", substr(toupper($0),1,1), $0); print}' ) + echo "LABEL $i" >> $conf.new + echo " MENU LABEL $cap" >> $conf.new + echo " COM32 $i.c32" >> $conf.new + echo "" >> $conf.new +done + +if cmp -s $conf.new $conf; then + everbose "Configuration unchanged." + rm $conf.new +fi + +if [ "$overwrite" != "1" ]; then + exit 0 +elif [ -f "$conf.new" ]; then + # keep a backup just in case + if [ -f "$conf" ]; then + mv $conf $conf.old + fi + + mv $conf.new $conf +fi + +everbose "Installing libutil.c32 libcom32.c32 mboot.c32 menu.c32 vesamenu.c32 to /boot." +cp /usr/share/syslinux/libutil.c32 \ + /usr/share/syslinux/libcom32.c32 \ + /usr/share/syslinux/mboot.c32 \ + /usr/share/syslinux/menu.c32 \ + /usr/share/syslinux/vesamenu.c32 \ + /boot + +case "$(stat -f -c '%T' /boot)" in +ext*) extlinux --update /boot || [ -n "$warn_only" ];; +esac + diff --git a/wip/syslinux/update-extlinux.conf b/wip/syslinux/update-extlinux.conf new file mode 100644 index 0000000..1dddff2 --- /dev/null +++ b/wip/syslinux/update-extlinux.conf @@ -0,0 +1,74 @@ +# configuration for extlinux config builder + +# overwrite +# Overwrite current /boot/extlinux.conf. If this is not '1' we will only +# write to /boot/extlinux.conf.new +overwrite=1 + +# vesa_menu +# use fancy vesa menu (vesamenu.c32) menus, won't work with serial +vesa_menu=0 + +# default_kernel_opts +# default kernel options +default_kernel_opts=quiet + +# modules +# modules which should be loaded before pivot_root +modules=sd-mod,usb-storage,ext4 + +# root +# root device - if not specified, will be guessed using +# blkid -o export /dev/root +root= + +# verbose +# if set to non-zero, update-extlinux will be a lot more verbose. +verbose=0 + +# hidden +# if set to non-zero, the boot menu will be hidden by default. +hidden=1 + +# timeout +# number of seconds to wait before booting default +timeout=3 + +# default +# default kernel to boot +default=lts + +# serial_port +# serial port number - if not specified, serial console will be disabled +serial_port= + +# serial_baud +# the baudrate for the serial port. Will use 115200 if unset +serial_baud=115200 + +# xen_opts +# options to hand to xen hypervisor, useful ones are: +# dom0_mem=384M (give domain-0 environment 384M ram) +xen_opts=dom0_mem=384M + +# if you copy /usr/share/syslinux/reboot.c32 to /boot/, a menu entry +# will be auto-generated for it + +# if you copy hdt.c32, libgpl.c32, and libmenu.c32 from /usr/share/syslinux/ +# to /boot/, a menu entry will be auto-generated for HDT + +# if you download and install /boot/memtest, then if HDT is present it +# will use it, else a separate menu entry will be auto-generated for +# memtest + +# optional password +# you can generate a SHA512 password using: mkpasswd +# +# if you assign a password, you should make this file world-unreadable +# +# if a password is assigned, the menu entries can't be edited at boot +# time, and HDT if present is password-protected +# +# you can also include "MENU PASSWD" in any custom entries you have in +# /etc/update-extlinux.d/ +password='' diff --git a/wip/syslog-ng/APKBUILD b/wip/syslog-ng/APKBUILD new file mode 100644 index 0000000..a1ecc82 --- /dev/null +++ b/wip/syslog-ng/APKBUILD @@ -0,0 +1,178 @@ +# Contributor: Michael Pirogov +# Contributor: jv +# Contributor: Adrian Guenter +# Contributor: Jakub Jirutka +# Maintainer: jv +pkgname=syslog-ng +pkgver=3.30.1 +pkgrel=0 +pkgdesc="Next generation logging daemon" +url="https://www.syslog-ng.com/products/open-source-log-management/" +arch="all" +license="GPL-2.0-or-later" +options="!check" # unit tests require https://github.com/Snaipe/Criterion with deps +makedepends=" + curl-dev + eventlog-dev + file + bison + flex + autoconf + automake + libtool + glib-dev + hiredis-dev + ivykis-dev>=0.42.4 + libdbi-dev + json-c-dev + openssl-dev + pcre-dev + python3-dev + rabbitmq-c-dev + " +install="$pkgname.post-install $pkgname.post-upgrade" +subpackages=" + $pkgname-scl::noarch + $pkgname-dev + $pkgname-doc + $pkgname-openrc + py3-$pkgname:_python3 + " +source="https://github.com/balabit/syslog-ng/releases/download/syslog-ng-$pkgver/syslog-ng-$pkgver.tar.gz + $pkgname.conf + $pkgname.logrotate + $pkgname.initd + " + +_modules=" + add-contextual-data + amqp:afamqp + examples + graphite + http + json:json-plugin + map-value-pairs + redis + sql:afsql + stardate + stomp:afstomp + tags-parser + xml + " +for _i in $_modules; do + subpackages="$subpackages $pkgname-${_i%%:*}:_module" +done + +prepare() { + default_prepare + + # Remove bundled libraries + rm -rf lib/ivykis + rm -rf modules/afamqp/rabbitmq-c + rm -rf modules/afmongodb/mongo-c-driver + autoreconf -if +} + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc/syslog-ng \ + --localstatedir=/run \ + --enable-extra-warnings \ + --enable-ipv6 \ + --enable-manpages \ + \ + --enable-sql \ + --disable-linux-caps \ + --disable-mongodb \ + --enable-json \ + --enable-amqp \ + --enable-stomp \ + --disable-smtp \ + --enable-http \ + --enable-redis \ + --enable-geoip \ + --disable-geoip2 \ + --disable-riemann \ + --disable-systemd \ + --enable-python \ + --disable-java \ + --disable-java-modules \ + --enable-native \ + --enable-rdrand \ + --with-ivykis=system \ + --with-jsonc=system \ + --with-librabbitmq-client=system + make +} + +package() { + make -j1 DESTDIR="$pkgdir" install + + cd "$pkgdir" + + rm -rf run usr/lib/$pkgname/libtest + + # getent module doesn't build properly as musl doesn't support reentrant + # getprotoby[number|name] funcs. The provided compat lib only patches + # solaris, which does provide reentrant versions under a different sig + rm -f usr/lib/$pkgname/libtfgetent.so + + # Remove static file + rm -f usr/lib/libsyslog-ng-native-connector.a + + install -m 644 "$srcdir"/$pkgname.conf etc/$pkgname/$pkgname.conf + install -D -m 755 "$srcdir"/$pkgname.initd etc/init.d/$pkgname + install -D -m 644 "$srcdir"/$pkgname.logrotate etc/logrotate.d/$pkgname + + install -d -m 755 etc/$pkgname/conf.d + install -d -m 700 "$pkgdir"/var/lib/syslog-ng +} + +scl() { + pkgdesc="$pkgdesc (configuration library)" + depends="$pkgname=$pkgver-r$pkgrel" + + _submv usr/share/syslog-ng/include/scl +} + +dev() { + default_dev + + _submv usr/share/syslog-ng/tools \ + usr/share/syslog-ng/xsd +} + +_python3() { + pkgdesc="$pkgdesc (python3 module)" + + _submv usr/lib/syslog-ng/libmod-python.so + + local site_pkgs="$(python3 -c 'import site; print(site.getsitepackages()[0])')" + + mkdir -p "$subpkgdir"/"$site_pkgs" + mv "$pkgdir"/usr/lib/syslog-ng/python/* \ + "$subpkgdir"/"$site_pkgs" +} + +_module() { + local name="${subpkgname#$pkgname-}" + pkgdesc="$pkgdesc (${name//-/ } module)" + + local libname=$(printf '%s\n' $_modules | grep "^$name:" | cut -d: -f2) + local soname="lib${libname:-$name}.so" + + _submv usr/lib/syslog-ng/$soname +} + +_submv() { + local path; for path in "$@"; do + mkdir -p "$subpkgdir/${path%/*}" + mv "$pkgdir"/$path "$subpkgdir"/${path%/*}/ + done +} + +sha512sums="ac7ed4978c6db9464add30aa7aeb71a646f841593b02884c8d4ad34c0508c8d3243bcbe6ee98e81c04698895305334eadd9e624ba71e510c14d79155723efb52 syslog-ng-3.30.1.tar.gz +3fcdf42da3bd6ac4352925c686d07958b37780cd58de8c3c73835a442ffec51a0488390611bac011239b4e94f42c216ca178ba4b1b498bc0105c06cbaf8252f4 syslog-ng.conf +1825b85fb584c5cecf0ad370e81a7473b5c973ce10adce386d1ba5f68432abe4e2f54c937d7d94edb22dbd9031eff483bd113bc3244ce0d0072cf4bf4ab5c2cc syslog-ng.logrotate +873fef8815131f0acc618fa4911cd1eda59e260adc1eaae6eb91034900ce789f05ee48fa8afa4a87763026c18c87aef351e7ea76e0cbb46bcd5297f9ca14d527 syslog-ng.initd" diff --git a/wip/syslog-ng/syslog-ng.conf b/wip/syslog-ng/syslog-ng.conf new file mode 100644 index 0000000..831bc6e --- /dev/null +++ b/wip/syslog-ng/syslog-ng.conf @@ -0,0 +1,120 @@ +@version:3.30 +@include "scl.conf" + +# syslog-ng configuration file. +# +# See syslog-ng(8) and syslog-ng.conf(5) for more information. +# +# Note: It also sources additional configuration files (*.conf) +# located in /etc/syslog-ng/conf.d/. + +# +# Options +# +options { + # Create destination directories if missing. + create_dirs(yes); + + # The default action of syslog-ng is to log a MARK line to the file every + # 20 minutes. That's seems high for most people so turn it down to once an + # hour. Set it to zero if you don't want the functionality at all. + mark_freq(3600); + + # The default action of syslog-ng is to log a STATS line to the file every + # 10 minutes. That's pretty ugly after a while. Change it to every 12 hours + # so you get a nice daily update of how many messages syslog-ng missed (0). + stats_freq(43200); + + # Time to wait before a died connection is re-established (default is 60). + time_reopen(5); + + # Disable DNS usage. + # syslog-ng blocks on DNS queries, so enabling DNS may lead to a DoS attack. + use_dns(no); + dns-cache(no); + + # Default owner, group, and permissions for log files. + owner(root); + group(adm); + perm(0640); + + # Default permissions for created directories. + dir_perm(0755); +}; + + +# +# Templates +# + +template t_file { + template("${YEAR}-${MONTH}-${DAY} ${HOUR}:${MIN}:${SEC} ${LEVEL} ${MSGHDR}${MSG}\n"); +}; + + +# +# Sources +# + +source s_sys { + # Standard system log source. + system(); + + # Messages generated by syslog-ng. + internal(); +}; + + +# +# Destinations +# + +destination d_auth { file("/var/log/auth.log" template(t_file)); }; +destination d_boot { file("/var/log/boot.log" template(t_file)); }; +destination d_cron { file("/var/log/cron.log" template(t_file)); }; +destination d_kern { file("/var/log/kern.log" template(t_file)); }; +destination d_mail { file("/var/log/mail.log" template(t_file) flush_lines(10)); }; +destination d_mesg { file("/var/log/messages" template(t_file)); }; + +# Send messages to console of everyone logged in. +destination d_cons_all { usertty("*"); }; + +# Send message to the root's console. +destination d_cons_root { usertty("root"); }; + + +# +# Filters +# + +filter f_auth { facility(auth, authpriv); }; +filter f_boot { facility(local7); }; +filter f_cron { facility(cron); }; +filter f_emerg { level(emerg); }; +filter f_kern { facility(kern); }; +filter f_mail { facility(mail); }; + +filter f_default { + level(info..emerg) + and not (facility(auth) + or facility(authpriv) + or facility(cron) + or facility(kern) + or facility(mail)); +}; + + +# +# Logs +# + +log { source(s_sys); filter(f_auth); destination(d_auth); }; +log { source(s_sys); filter(f_boot); destination(d_boot); }; +log { source(s_sys); filter(f_cron); destination(d_cron); }; +log { source(s_sys); filter(f_emerg); destination(d_cons_root); }; +log { source(s_sys); filter(f_kern); destination(d_kern); }; +log { source(s_sys); filter(f_mail); destination(d_mail); }; +log { source(s_sys); filter(f_default); destination(d_mesg); }; + +# Source additional configuration files (.conf extension only) +@include "/etc/syslog-ng/conf.d/*.conf" diff --git a/wip/syslog-ng/syslog-ng.initd b/wip/syslog-ng/syslog-ng.initd new file mode 100644 index 0000000..9a3dc47 --- /dev/null +++ b/wip/syslog-ng/syslog-ng.initd @@ -0,0 +1,46 @@ +#!/sbin/openrc-run + +extra_commands="checkconfig" +extra_started_commands="reload" + +description_checkconfig="Check the configuration file" +description_reload="Reload the configuration without exiting" + +: ${cfgfile:="/etc/syslog-ng/$RC_SVCNAME.conf"} +: ${statedir:="/var/lib/syslog-ng"} +: ${control_file:="$statedir/$RC_SVCNAME.ctl"} +: ${persist_file:="$statedir/$RC_SVCNAME.persist"} + +pidfile="/run/$RC_SVCNAME.pid" +command="/usr/sbin/syslog-ng" +command_args=" + --cfgfile $cfgfile + --control $control_file + --persist-file $persist_file + --pidfile $pidfile + $command_args" + +required_files="$cfgfile" +required_dirs="$statedir" + +depend() { + use clock + need hostname localmount + before net + after bootmisc + provide logger +} + +checkconfig() { + ebegin "Checking $RC_SVCNAME configuration" + syslog-ng -s -f "$cfgfile" + eend $? "Configuration error. Please fix your configfile ($cfgfile)" +} + +reload() { + checkconfig || return 1 + + ebegin "Reloading configuration and re-opening log files" + start-stop-daemon --signal HUP --pidfile "$pidfile" + eend $? +} diff --git a/wip/syslog-ng/syslog-ng.logrotate b/wip/syslog-ng/syslog-ng.logrotate new file mode 100644 index 0000000..4b9ad18 --- /dev/null +++ b/wip/syslog-ng/syslog-ng.logrotate @@ -0,0 +1,14 @@ +/var/log/auth.log +/var/log/boot.log +/var/log/cron.log +/var/log/kern.log +/var/log/mail.log +/var/log/messages +{ + notifempty + compress + sharedscripts + postrotate + /etc/init.d/syslog-ng --ifstarted reload >/dev/null + endscript +} diff --git a/wip/syslog-ng/syslog-ng.post-install b/wip/syslog-ng/syslog-ng.post-install new file mode 100644 index 0000000..230a5ba --- /dev/null +++ b/wip/syslog-ng/syslog-ng.post-install @@ -0,0 +1,6 @@ +#!/bin/sh + +[ -f /var/log/auth.log ] || touch /var/log/auth.log +[ -f /var/log/error.log ] || touch /var/log/error.log +[ -f /var/log/mail.log ] || touch /var/log/mail.log +[ -f /var/log/kern.log ] || touch /var/log/kern.log diff --git a/wip/syslog-ng/syslog-ng.post-upgrade b/wip/syslog-ng/syslog-ng.post-upgrade new file mode 100644 index 0000000..931c09a --- /dev/null +++ b/wip/syslog-ng/syslog-ng.post-upgrade @@ -0,0 +1,21 @@ +#!/bin/sh + +ver_new="$1" +ver_old="$2" + +if [ "$(apk version -t "$ver_old" "3.18.1-r2")" = "<" ]; then + cat >&2 <<-EOF + * + * The following modules has been moved to separate packages: + * add-contextual-data, examples, graphite, map-value-pairs, + * python2, redis, stardate, stomp, tags-parser, xml, geoip, + * http. + * If you use one of these, install the relevant package(s), e.g.: + * apk add syslog-ng-redis + * + * Custom modularized configuration has been replaced with single + * syslog-ng.conf file that loads fragments from /etc/syslog-ng/conf.d + * using syslog-ng's include directive. + * + EOF +fi diff --git a/wip/which/APKBUILD b/wip/which/APKBUILD new file mode 100644 index 0000000..29f04ad --- /dev/null +++ b/wip/which/APKBUILD @@ -0,0 +1,37 @@ +# Contributor: Stuart Cardall +# Maintainer: Stuart Cardall +pkgname=which +pkgver=2.21 +pkgrel=1 +pkgdesc="A utility to show the full path of commands" +url="http://savannah.gnu.org/projects/which" +arch="all" +license="GPL-3.0" +depends="" +depends_dev="" +makedepends="$depends_dev" +install="" +subpackages="$pkgname-doc" +source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz" + +builddir="$srcdir"/$pkgname-$pkgver +build() { + cd "$builddir" + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr + make +} + +check() { + cd "$builddir" + make check +} + +package() { + cd "$builddir" + make DESTDIR="$pkgdir" install +} + +sha512sums="d2f04a5c5291f2d7d1226982da7cf999d36cfe24d3f7bda145508efcfb359511251d3c68b860c0ddcedd66b15a0587b648a35ab6d1f173707565305c506dfc61 which-2.21.tar.gz" diff --git a/wip/zfs/APKBUILD b/wip/zfs/APKBUILD new file mode 100644 index 0000000..ee41e1a --- /dev/null +++ b/wip/zfs/APKBUILD @@ -0,0 +1,80 @@ +# Contributor: Carlo Landmeter +# Maintainer: Natanael Copa +pkgname=zfs +pkgver=2.0.3 +pkgrel=0 +pkgdesc="ZFS for Linux" +url="https://zfsonlinux.org" +arch="all !armhf !armv7" +license="CDDL-1.0" +provides="spl" # Mitigate upgrade conflicts +depends_dev="attr-dev e2fsprogs-dev glib-dev libtirpc-dev openssl-dev util-linux-dev" +makedepends="$depends_dev automake autoconf libtool linux-headers python3-dev py3-cffi py3-setuptools" +options="!check" # need to be run on live system w/ ZFS loaded. +subpackages="$pkgname-dev $pkgname-doc $pkgname-openrc $pkgname-libs $pkgname-dracut::noarch + $pkgname-udev $pkgname-scripts $pkgname-utils-py:utils_py:noarch py3-pyzfs:pyzfs:noarch" +source="https://github.com/zfsonlinux/zfs/releases/download/zfs-$pkgver/zfs-$pkgver.tar.gz" + +prepare() { + default_prepare + autoreconf -vif +} + +build() { + export LIBS="$LIBS -lintl" + ./configure --prefix=/usr \ + --with-tirpc \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var \ + --with-config=user \ + --with-udevdir=/lib/udev \ + --disable-systemd \ + --disable-static \ + --with-python=3 \ + --enable-pyzfs + make +} + +package() { + make DESTDIR="$pkgdir" install + rm -rf "$pkgdir"/usr/share/initramfs-tools +} + +dracut() { + pkgdesc="$pkgdesc (dracut)" + mkdir -p "$subpkgdir"/usr/lib + mv "$pkgdir"/usr/lib/dracut "$subpkgdir"/usr/lib +} + +udev() { + pkgdesc="$pkgdesc (udev)" + mkdir -p "$subpkgdir"/lib + mv "$pkgdir"/lib/udev "$subpkgdir"/lib +} + +scripts() { + pkgdesc="$pkgdesc (scripts)" + mkdir -p "$subpkgdir"/usr/share + mv "$pkgdir"/usr/share/zfs "$subpkgdir"/usr/share +} + +utils_py() { + pkgdesc="$pkgdesc (python utils)" + depends="python3" + mkdir -p "$subpkgdir"/usr/bin + local file + for file in arc_summary arcstat dbufstat; do + mv "$pkgdir"/usr/bin/$file "$subpkgdir"/usr/bin + done +} + +pyzfs() { + pkgdesc="$pkgdesc (Python lib to interact with ZFS)" + depends="python3 $pkgname" + mkdir -p "$subpkgdir"/usr/lib + mv "$pkgdir"/usr/lib/python* "$subpkgdir"/usr/lib +} + +sha512sums="8b2a6e0edfb3c85441076b2c6163ad3d7d239e11db128ab74d60bf8dc802d67b7f5b8d1cc7227316a7dc3917f14e9ac072ebf1583957f2a45c1b8438e4068200 zfs-2.0.3.tar.gz" diff --git a/wip/zip/10-zip-3.0-build.patch b/wip/zip/10-zip-3.0-build.patch new file mode 100644 index 0000000..1deab6a --- /dev/null +++ b/wip/zip/10-zip-3.0-build.patch @@ -0,0 +1,36 @@ +respect build environment settings + +--- a/unix/configure Wed Jan 28 22:22:13 2009 ++++ b/unix/configure Wed Jan 28 22:23:54 2009 +@@ -18,7 +18,7 @@ + + CC=${1-cc} + CFLAGS=${2-"-I. -DUNIX"} +-LFLAGS1='' ++LFLAGS1="${LDFLAGS}" + LFLAGS2='' + LN="ln -s" + +@@ -118,7 +118,7 @@ + fi + + # optimization flags +-if test -n "${CFLAGS_OPT}"; then ++if false; then + CFLAGS="${CFLAGS} ${CFLAGS_OPT}" + CFLAGS_BZ="${CFLAGS_BZ} ${CFLAGS_OPT}" + fi +@@ -220,13 +220,6 @@ + echo Check for the C preprocessor + # on SVR4, cc -E does not produce correct assembler files. Need /lib/cpp. + CPP="${CC} -E" +-# solaris as(1) needs -P, maybe others as well ? +-[ -f /usr/ccs/lib/cpp ] && CPP="/usr/ccs/lib/cpp -P" +-[ -f /usr/lib/cpp ] && CPP=/usr/lib/cpp +-[ -f /lib/cpp ] && CPP=/lib/cpp +-[ -f /usr/bin/cpp ] && CPP=/usr/bin/cpp +-[ -f /xenix ] && CPP="${CC} -E" +-[ -f /lynx.os ] && CPP="${CC} -E" + + echo "#include " > conftest.c + $CPP conftest.c >/dev/null 2>/dev/null || CPP="${CC} -E" diff --git a/wip/zip/20-zip-3.0-exec-stack.patch b/wip/zip/20-zip-3.0-exec-stack.patch new file mode 100644 index 0000000..5bf78d7 --- /dev/null +++ b/wip/zip/20-zip-3.0-exec-stack.patch @@ -0,0 +1,22 @@ +add proper GNU stack markings so we dont get the default: executable + +--- a/crc_i386.S Wed Jan 28 22:22:13 2009 ++++ b/crc_i386.S Wed Jan 28 22:27:04 2009 +@@ -302,3 +302,7 @@ + #endif /* i386 || _i386 || _I386 || __i386 */ + + #endif /* !USE_ZLIB && !CRC_TABLE_ONLY */ ++ ++#if defined __ELF__ && defined __linux__ ++.section .note.GNU-stack,"",@progbits ++#endif +--- a/match.S Wed Jan 28 22:22:13 2009 ++++ b/match.S Wed Jan 28 22:27:04 2009 +@@ -405,3 +405,7 @@ + #endif /* i386 || _I386 || _i386 || __i386 */ + + #endif /* !USE_ZLIB */ ++ ++#if defined __ELF__ && defined __linux__ ++.section .note.GNU-stack,"",@progbits ++#endif diff --git a/wip/zip/30-zip-3.0-pic.patch b/wip/zip/30-zip-3.0-pic.patch new file mode 100644 index 0000000..23707f3 --- /dev/null +++ b/wip/zip/30-zip-3.0-pic.patch @@ -0,0 +1,15 @@ +if our toolchain generates PIC by default, then do not use the hand written +assembly files as none of it is PIC friendly. + +--- a/unix/configure Wed Jan 28 22:23:54 2009 ++++ b/unix/configure Wed Jan 28 22:29:51 2009 +@@ -228,6 +228,9 @@ + echo Check if we can use asm code + OBJA="" + OCRCU8="" ++piclib="$(echo | $CPP -dM $CFLAGS - | grep -i __pic__)" ++echo "Checking if compiler wants to create pic code" ++[ "$piclib" == "" ] && \ + if eval "$CPP match.S > _match.s 2>/dev/null"; then + if test ! -s _match.s || grep error < _match.s > /dev/null; then + : diff --git a/wip/zip/40-fix-zipnote.patch b/wip/zip/40-fix-zipnote.patch new file mode 100644 index 0000000..1ffef14 --- /dev/null +++ b/wip/zip/40-fix-zipnote.patch @@ -0,0 +1,15 @@ +Fixes zipnote, see https://gitlab.alpinelinux.org/alpine/aports/issues/8602 + +diff --git a/zipnote.c b/zipnote.c +index 5e02cb6..996f012 100644 +--- a/zipnote.c ++++ b/zipnote.c +@@ -661,7 +661,7 @@ char **argv; /* command line tokens */ + if ((r = zipcopy(z)) != ZE_OK) + ziperr(r, "was copying an entry"); + } +- fclose(x); ++ fclose(in_file); + + /* Write central directory and end of central directory with new comments */ + if ((c = zftello(y)) == (zoff_t)-1) /* get start of central */ diff --git a/wip/zip/APKBUILD b/wip/zip/APKBUILD new file mode 100644 index 0000000..85413b7 --- /dev/null +++ b/wip/zip/APKBUILD @@ -0,0 +1,37 @@ +# Maintainer: Carlo Landmeter +pkgname=zip +pkgver=3.0 +_pkgver=${pkgver%.*}${pkgver##*.} +pkgrel=9 +pkgdesc="Creates PKZIP-compatible .zip files" +url="http://www.info-zip.org/pub/infozip/Zip.html" +arch="all" +options="!check" # No test suite. +license="Info-ZIP" +depends="unzip" #unzip is needed for `zip -T` +makedepends="" +subpackages="$pkgname-doc" +source="https://downloads.sourceforge.net/infozip/${pkgname}${_pkgver}.tar.gz + 10-zip-3.0-build.patch + 20-zip-3.0-exec-stack.patch + 30-zip-3.0-pic.patch + 40-fix-zipnote.patch" + +builddir="$srcdir"/${pkgname}${_pkgver} + +build() { + cd "$builddir" + make -f unix/Makefile LOCAL_ZIP="${CFLAGS} ${CPPFLAGS}" prefix=/usr generic +} + +package() { + cd "$builddir" + make -f unix/Makefile prefix=${pkgdir}/usr MANDIR=${pkgdir}/usr/share/man/man1 install + install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE +} + +sha512sums="c1c3d62bf1426476c0f9919b568013d6d7b03514912035f09ee283226d94c978791ad2af5310021e96c4c2bf320bfc9d0b8f4045c48e4667e034d98197e1a9b3 zip30.tar.gz +e71f7c6f6dd6f8f576018581b155f324eaf6810a2f7c5c402843bdfc3ce6772f09be166b33ff34dcb703774694b18584c8de1763f29895c1d563661679f43d71 10-zip-3.0-build.patch +2a6824066543684e02731bd36930e0ffa6ab48162c61d5e7af08e8ea0795401271ef28bdd0f6ace865d91fdb1a05b643813cdd458a9fdf554f1ca298ea7f50e3 20-zip-3.0-exec-stack.patch +fcb2d728d79160128064af90eb17a9c03e980d9619c4d930c4dbf79cb13842c7bb694036dcbf5cd9b412efc6fc0b86bb94a88b3f110b6b63bf6bda2b97fe0568 30-zip-3.0-pic.patch +f22649d1cbe94ffcacf622493400489393d6fac80067211e6ba12b85d7b062f76b041f318068731b267167e715b7749589bfe9205670a61c6e56e1ffdfaea29b 40-fix-zipnote.patch"