From f04e6a532d45816a533db6e31d99ea3662e9c648 Mon Sep 17 00:00:00 2001 From: Alex Denes Date: Fri, 16 Oct 2020 16:40:36 +0200 Subject: [PATCH] Initial commit --- browsers/qt5-qtwebengine/APKBUILD | 134 ++++++++++++ browsers/qt5-qtwebengine/musl-hacks.patch | 13 ++ browsers/qt5-qtwebengine/musl-sandbox.patch | 162 +++++++++++++++ browsers/qt5-qtwebengine/nasm.patch | 13 ++ .../qt5-qtwebengine/qt-musl-crashpad.patch | 13 ++ .../qt-musl-dispatch_to_musl.patch | 103 ++++++++++ .../qt5-qtwebengine/qt-musl-elf-arm.patch | 13 ++ .../qt5-qtwebengine/qt-musl-execinfo.patch | 108 ++++++++++ .../qt5-qtwebengine/qt-musl-fpstate.patch | 48 +++++ .../qt5-qtwebengine/qt-musl-mallinfo.patch | 43 ++++ browsers/qt5-qtwebengine/qt-musl-off_t.patch | 10 + .../qt-musl-pread-pwrite.patch | 20 ++ .../qt5-qtwebengine/qt-musl-pvalloc.patch | 14 ++ .../qt5-qtwebengine/qt-musl-resolve.patch | 61 ++++++ .../qt5-qtwebengine/qt-musl-siginfo_t.patch | 18 ++ .../qt5-qtwebengine/qt-musl-stackstart.patch | 22 ++ .../qt-musl-sysreg-for__WORDSIZE.patch | 14 ++ .../qt-musl-thread-stacksize.patch | 26 +++ .../qt5-qtwebengine/remove-glibc-check.patch | 18 ++ .../sandbox-sched_getparam.patch | 24 +++ browsers/qt5-qtwebengine/yasm-nls.patch | 13 ++ communication/mumble/APKBUILD | 108 ++++++++++ communication/mumble/murmur.initd | 18 ++ communication/mumble/murmur.pre-install | 6 + communication/neomutt/APKBUILD | 43 ++++ communication/telegram-desktop/APKBUILD | 81 ++++++++ .../telegram-desktop/remove-glibc.patch | 51 +++++ .../telegram-desktop/small-sizes.patch | 48 +++++ downloaders/youtube-dlc/APKBUILD | 41 ++++ games/multimc/01-patch-jar-path.patch | 11 + games/multimc/APKBUILD | 57 +++++ ...util-clean-up-unused-FF_SYMVER-macro.patch | 55 +++++ ...8cca6e51db0f19928c12d0348deaa17137b3.patch | 83 ++++++++ media/ffmpeg/APKBUILD | 194 ++++++++++++++++++ media/gst-plugins-good/APKBUILD | 83 ++++++++ media/qt5-qtmultimedia/APKBUILD | 41 ++++ ...initfs-add-optional-support-for-pigz.patch | 46 +++++ misc-tools/mkinitfs/0002-file-embed.patch | 28 +++ misc-tools/mkinitfs/0003-include-libs.patch | 7 + misc-tools/mkinitfs/APKBUILD | 34 +++ misc-tools/mkinitfs/mkinitfs.post-install | 8 + misc-tools/mkinitfs/mkinitfs.post-upgrade | 1 + misc-tools/mkinitfs/mkinitfs.pre-upgrade | 13 ++ misc-tools/mkinitfs/mkinitfs.trigger | 33 +++ suckless/dmenu/APKBUILD | 34 +++ suckless/dwm/APKBUILD | 37 ++++ suckless/slock/APKBUILD | 32 +++ suckless/slstatus/APKBUILD | 33 +++ suckless/st/APKBUILD | 42 ++++ suckless/svkbd/APKBUILD | 25 +++ 50 files changed, 2183 insertions(+) create mode 100644 browsers/qt5-qtwebengine/APKBUILD create mode 100644 browsers/qt5-qtwebengine/musl-hacks.patch create mode 100644 browsers/qt5-qtwebengine/musl-sandbox.patch create mode 100644 browsers/qt5-qtwebengine/nasm.patch create mode 100644 browsers/qt5-qtwebengine/qt-musl-crashpad.patch create mode 100644 browsers/qt5-qtwebengine/qt-musl-dispatch_to_musl.patch create mode 100644 browsers/qt5-qtwebengine/qt-musl-elf-arm.patch create mode 100644 browsers/qt5-qtwebengine/qt-musl-execinfo.patch create mode 100644 browsers/qt5-qtwebengine/qt-musl-fpstate.patch create mode 100644 browsers/qt5-qtwebengine/qt-musl-mallinfo.patch create mode 100644 browsers/qt5-qtwebengine/qt-musl-off_t.patch create mode 100644 browsers/qt5-qtwebengine/qt-musl-pread-pwrite.patch create mode 100644 browsers/qt5-qtwebengine/qt-musl-pvalloc.patch create mode 100644 browsers/qt5-qtwebengine/qt-musl-resolve.patch create mode 100644 browsers/qt5-qtwebengine/qt-musl-siginfo_t.patch create mode 100644 browsers/qt5-qtwebengine/qt-musl-stackstart.patch create mode 100644 browsers/qt5-qtwebengine/qt-musl-sysreg-for__WORDSIZE.patch create mode 100644 browsers/qt5-qtwebengine/qt-musl-thread-stacksize.patch create mode 100644 browsers/qt5-qtwebengine/remove-glibc-check.patch create mode 100644 browsers/qt5-qtwebengine/sandbox-sched_getparam.patch create mode 100644 browsers/qt5-qtwebengine/yasm-nls.patch create mode 100644 communication/mumble/APKBUILD create mode 100644 communication/mumble/murmur.initd create mode 100755 communication/mumble/murmur.pre-install create mode 100644 communication/neomutt/APKBUILD create mode 100644 communication/telegram-desktop/APKBUILD create mode 100644 communication/telegram-desktop/remove-glibc.patch create mode 100644 communication/telegram-desktop/small-sizes.patch create mode 100644 downloaders/youtube-dlc/APKBUILD create mode 100644 games/multimc/01-patch-jar-path.patch create mode 100644 games/multimc/APKBUILD create mode 100644 media/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch create mode 100644 media/ffmpeg/3e098cca6e51db0f19928c12d0348deaa17137b3.patch create mode 100644 media/ffmpeg/APKBUILD create mode 100644 media/gst-plugins-good/APKBUILD create mode 100644 media/qt5-qtmultimedia/APKBUILD create mode 100644 misc-tools/mkinitfs/0001-mkinitfs-add-optional-support-for-pigz.patch create mode 100644 misc-tools/mkinitfs/0002-file-embed.patch create mode 100644 misc-tools/mkinitfs/0003-include-libs.patch create mode 100644 misc-tools/mkinitfs/APKBUILD create mode 100644 misc-tools/mkinitfs/mkinitfs.post-install create mode 120000 misc-tools/mkinitfs/mkinitfs.post-upgrade create mode 100644 misc-tools/mkinitfs/mkinitfs.pre-upgrade create mode 100644 misc-tools/mkinitfs/mkinitfs.trigger create mode 100644 suckless/dmenu/APKBUILD create mode 100644 suckless/dwm/APKBUILD create mode 100644 suckless/slock/APKBUILD create mode 100644 suckless/slstatus/APKBUILD create mode 100644 suckless/st/APKBUILD create mode 100644 suckless/svkbd/APKBUILD diff --git a/browsers/qt5-qtwebengine/APKBUILD b/browsers/qt5-qtwebengine/APKBUILD new file mode 100644 index 0000000..1ffd586 --- /dev/null +++ b/browsers/qt5-qtwebengine/APKBUILD @@ -0,0 +1,134 @@ +# Contributor: Alex Denes +# Maintainer: Bart Ribbers +pkgname=qt5-qtwebengine +pkgver=5.15.1 +pkgrel=1 +pkgdesc="Qt5 - QtWebEngine components" +url="https://www.qt.io/developers/" +# ppc64le and s390x are not supported +# mips is also not supported +# armhf blocked by qt5-qtdeclarative +arch="aarch64 armv7 x86 x86_64" +license="LGPL-2.1-only AND LGPL-3.0-only AND GPL-3.0-only AND Qt-GPL-exception-1.0" +depends_dev=" + ffmpeg-dev + glib-dev + gst-plugins-base-dev + gstreamer-dev + icu-dev + libxcomposite-dev + libxext-dev + libxkbcommon-dev + libxrender-dev + libxslt-dev + mesa-dev + ninja + " +makedepends="$depends_dev + alsa-lib-dev + pulseaudio-dev + bison + bsd-compat-headers + flex + fontconfig-dev + gperf + gzip + harfbuzz-dev + jsoncpp-dev + libevent-dev + libjpeg-turbo-dev + libpng-dev + libsrtp-dev + libvpx-dev + libwebp-dev + libxcursor-dev + libxi-dev + libxml2 + libxrandr-dev + libxslt + libxtst-dev + linux-headers + nss-dev + opus-dev + pcre-dev + protobuf-dev + qt5-qtbase-dev + qt5-qtdeclarative-dev + qt5-qtwebchannel-dev + re2-dev + ruby + snappy-dev + sqlite-dev + yasm-dev + zlib-dev + python2 + " +subpackages="$pkgname-dev $pkgname-dbg" + +case $pkgver in + *_beta*|*_rc*) _rel=development_releases;; + *) _rel=official_releases;; +esac + +source="https://download.qt.io/$_rel/qt/${pkgver%.*}/$pkgver/submodules/qtwebengine-everywhere-src-$pkgver.tar.xz + qt-musl-dispatch_to_musl.patch + qt-musl-execinfo.patch + qt-musl-mallinfo.patch + qt-musl-off_t.patch + qt-musl-pvalloc.patch + qt-musl-resolve.patch + qt-musl-siginfo_t.patch + qt-musl-fpstate.patch + qt-musl-pread-pwrite.patch + qt-musl-sysreg-for__WORDSIZE.patch + qt-musl-stackstart.patch + qt-musl-thread-stacksize.patch + qt-musl-elf-arm.patch + qt-musl-crashpad.patch + musl-sandbox.patch + yasm-nls.patch + nasm.patch + musl-hacks.patch + sandbox-sched_getparam.patch + remove-glibc-check.patch + " +builddir="$srcdir/qtwebengine-everywhere-src-$pkgver" + +build() { + qmake-qt5 QMAKE_EXTRA_ARGS+="-system-ffmpeg -system-opus -system-webp" + make -j$JOBS +} + +package() { + make install INSTALL_ROOT="$pkgdir" + sed -i -e 's:-L/home[^ ]\+::g' "$pkgdir"/usr/lib/pkgconfig/*.pc + + # Drop QMAKE_PRL_BUILD_DIR because reference the build dir + find "$pkgdir/usr/lib" -type f -name '*.prl' \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \; + + install -d "$pkgdir"/usr/share/licenses + ln -s /usr/share/licenses/qt5-base "$pkgdir"/usr/share/licenses/$pkgname +} + +sha512sums="651520fcf89681b06c57f1992223f06ecbe3750a88ffae7a94a339503957e09d327ee1ae7e4bce88bfb09131b3b9c9abfc44f7bccb9c50d286181eaf306991a4 qtwebengine-everywhere-src-5.15.1.tar.xz +5ecbf435062b8565322dd1cbd0cbdb44f3daef264ab677fe22fe8cb400d4bb22281cc607ea419c7362c483312482632ed41bd67130413188425ef6e0ae184f07 qt-musl-dispatch_to_musl.patch +7084a07386fb9f66fbfeadac53869c0f386cea98dbb29787f030635bc8cd116b7459acafbe06540f1aef79d8a69817520ad18bcb9ac24954dd70773ef083537e qt-musl-execinfo.patch +7f580b37907aeba8327c4eb1e46fd261ad78d93f1dd32991dfb373a7f75fb4dceb3d9302e3781c62f447e72c4edab0f7a7f4223d12dd98ec5e87e49f3f38a38a qt-musl-mallinfo.patch +7eba28eb015f1a7e5cf70e9354fcd647b69f4e7c061b889a8c0d55f4a94a033f95d0252f9baebf13c3d501438074a05d547eef2c8cf898dc2c87cec3b60e76e0 qt-musl-off_t.patch +ac563e0c444a6d3214ff7465cad2c701692cfa90408c57243d3ae9459937c36e88acd57335bb90da85157e03865faaf17d61a767483b00ed8f3580ebf8a2fbb5 qt-musl-pvalloc.patch +8d95e4fcb463b5d2053c9538e66150ec9a3acddd7815cc34c8cd6fa115e49f1d602c4f1fc73f5e507a932c918e36c9c3d1386476dca91c5fc422906d0d88f610 qt-musl-resolve.patch +2fead16e7d7379b622da0e3172905444d9d72d1a53ff080327a3d59f60541c5c076d9b58f110b039da8c9ebc3b5efec53af118e1172efd01886ff9ac2b730d5f qt-musl-siginfo_t.patch +059f22a594a046d552a33b17d811c50b645c4be11a49ed3b29a32ce38d501fd07c1e15a4e1075c46f984c850bf88aecb357e4310a62b30494ea25297055f05c8 qt-musl-fpstate.patch +b1f7823d0bdd14dbcb4dbd72ab2d16460d343722d2601921a50f8912ce580a632e0d7b01d7fea6f27ff5014a1f21595c6d8d4500b995bcc6db38cbd10ac4aa96 qt-musl-pread-pwrite.patch +987b9b35d04317e22ae2cce382e776f3309fc7fd4588e408cd6bed846f47620d01e2b9958cb60c84b8f6f496de6544a21ba399ba8b8f107b73df179794740092 qt-musl-sysreg-for__WORDSIZE.patch +7dc3e9995596adef65cd96f650eb7ee13d52cabfe6353f04eeb5b8a5776e7e0585ffc2a0a31deea6924352ee9a5a8e03ac37432b558c6a46f3dc457b4283392a qt-musl-stackstart.patch +b37fbc4df03c82123f94982039defa12d9bb8c885c9dcf8fff556b5f9cc58182fa471f970cc3a5e2d5dbe964855f591b474366b6a8926d94ae6a78e883811c1a qt-musl-thread-stacksize.patch +d38e73a0424a104682c8cd94de32e506abf38f0ace34935eb33d66c732af30e6b22c0faec8cf698424a4391d965338ed6646325c9b9862a0c0be2faeaa169071 qt-musl-elf-arm.patch +173c401e1a0daa7a1471880807e4fb0a74fc338a0f306dc067147878c29e7bb94cae43c37fe2bf21dd7a7ffd2d739697fd21d10c059ce647df01d8236612cc68 qt-musl-crashpad.patch +dec69ea8dd9cfa2973264ec405092d364513bbd47303a94c128d873a3de7294760340f3ad31753e6bddd42e98c547312e070b49a062f693b2e19aa01d772063a musl-sandbox.patch +f6b1941e40f44b675ab554166e3cd8d3272b23f48571b4949b3af7b8e1c642ee84fe0ee26dd2457fc3bf20e9924cddb411e293b7a8a103029ee196587371a1e2 yasm-nls.patch +9add958caa0d6acb2866d3927aadfa6b378c92d62463f1b3d65ae1e5400915d89388ac54beb30c4d4d42d2901ee28f404d8574b771854556f6a75698301870eb nasm.patch +b99eaa4a0b06ab1cb461fc4bfc7416c779ba1e847614b96f08de97a137a09577ea642813e5e3235167ccc5180c6ffcc06ebf2a61e3b4c210de9dee765e0e7404 musl-hacks.patch +dbe606be93377f094c6a1ab0358ae042f3e7aff95c635b07ebc04aa3173f7221a478fd544e8347152a4ca125a837d6da774929423868d5c9d5bd6165bdd1ba6d sandbox-sched_getparam.patch +7153ce7372fed73dccb676079bc5af37f56be113f42ee64ed48cd7997dc2a4aa287523f36f0b8d3c717f1c4ad7f796843850b86a2dce50de5f0ade6a47785bee remove-glibc-check.patch" diff --git a/browsers/qt5-qtwebengine/musl-hacks.patch b/browsers/qt5-qtwebengine/musl-hacks.patch new file mode 100644 index 0000000..ee82b48 --- /dev/null +++ b/browsers/qt5-qtwebengine/musl-hacks.patch @@ -0,0 +1,13 @@ +diff --git a/src/3rdparty/chromium/net/socket/udp_socket_posix.cc b/src/3rdparty/chromium/net/socket/udp_socket_posix.cc +index dbc8c5aaf..077bbde33 100644 +--- a/src/3rdparty/chromium/net/socket/udp_socket_posix.cc ++++ b/src/3rdparty/chromium/net/socket/udp_socket_posix.cc +@@ -1191,7 +1191,7 @@ SendResult UDPSocketPosixSender::InternalSendmmsgBuffers( + msg_iov->push_back({const_cast(buffer->data()), buffer->length()}); + msgvec->reserve(buffers.size()); + for (size_t j = 0; j < buffers.size(); j++) +- msgvec->push_back({{nullptr, 0, &msg_iov[j], 1, nullptr, 0, 0}, 0}); ++ msgvec->push_back({{nullptr, 0, &msg_iov[j], 1, 0, 0, 0}, 0}); + int result = HANDLE_EINTR(Sendmmsg(fd, &msgvec[0], buffers.size(), 0)); + SendResult send_result(0, 0, std::move(buffers)); + if (result < 0) { diff --git a/browsers/qt5-qtwebengine/musl-sandbox.patch b/browsers/qt5-qtwebengine/musl-sandbox.patch new file mode 100644 index 0000000..d28b0f1 --- /dev/null +++ b/browsers/qt5-qtwebengine/musl-sandbox.patch @@ -0,0 +1,162 @@ +diff --git a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc b/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc +index 348ab6e8c..2eac6ef82 100644 +--- a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc ++++ b/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc +@@ -139,21 +139,11 @@ namespace sandbox { + // present (as in newer versions of posix_spawn). + ResultExpr RestrictCloneToThreadsAndEPERMFork() { + const Arg flags(0); +- +- // TODO(mdempsky): Extend DSL to support (flags & ~mask1) == mask2. +- const uint64_t kAndroidCloneMask = CLONE_VM | CLONE_FS | CLONE_FILES | +- CLONE_SIGHAND | CLONE_THREAD | +- CLONE_SYSVSEM; +- const uint64_t kObsoleteAndroidCloneMask = kAndroidCloneMask | CLONE_DETACHED; +- +- const uint64_t kGlibcPthreadFlags = +- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD | +- CLONE_SYSVSEM | CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID; +- const BoolExpr glibc_test = flags == kGlibcPthreadFlags; +- +- const BoolExpr android_test = +- AnyOf(flags == kAndroidCloneMask, flags == kObsoleteAndroidCloneMask, +- flags == kGlibcPthreadFlags); ++ const int required = CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | ++ CLONE_THREAD | CLONE_SYSVSEM; ++ const int safe = CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID | ++ CLONE_DETACHED; ++ const BoolExpr thread_clone_ok = (flags&~safe)==required; + + // The following two flags are the two important flags in any vfork-emulating + // clone call. EPERM any clone call that contains both of them. +@@ -163,7 +153,7 @@ ResultExpr RestrictCloneToThreadsAndEPERMFork() { + AnyOf((flags & (CLONE_VM | CLONE_THREAD)) == 0, + (flags & kImportantCloneVforkFlags) == kImportantCloneVforkFlags); + +- return If(IsAndroid() ? android_test : glibc_test, Allow()) ++ return If(thread_clone_ok, Allow()) + .ElseIf(is_fork_or_clone_vfork, Error(EPERM)) + .Else(CrashSIGSYSClone()); + } +diff --git a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc b/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +index 6e2bd4fee..9f9e4ad8a 100644 +--- a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc ++++ b/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +@@ -392,6 +392,7 @@ bool SyscallSets::IsAllowedProcessStartOrDeath(int sysno) { + #if defined(__i386__) + case __NR_waitpid: + #endif ++ case __NR_set_tid_address: + return true; + case __NR_clone: // Should be parameter-restricted. + case __NR_setns: // Privileged. +@@ -404,7 +405,6 @@ bool SyscallSets::IsAllowedProcessStartOrDeath(int sysno) { + #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) + case __NR_set_thread_area: + #endif +- case __NR_set_tid_address: + case __NR_unshare: + #if !defined(__mips__) && !defined(__aarch64__) + case __NR_vfork: +@@ -514,6 +514,8 @@ bool SyscallSets::IsAllowedAddressSpaceAccess(int sysno) { + case __NR_mlock: + case __NR_munlock: + case __NR_munmap: ++ case __NR_mremap: ++ case __NR_membarrier: + return true; + case __NR_madvise: + case __NR_mincore: +@@ -531,7 +533,6 @@ bool SyscallSets::IsAllowedAddressSpaceAccess(int sysno) { + case __NR_modify_ldt: + #endif + case __NR_mprotect: +- case __NR_mremap: + case __NR_msync: + case __NR_munlockall: + case __NR_readahead: +diff --git a/src/3rdparty/chromium/sandbox/linux/system_headers/arm64_linux_syscalls.h b/src/3rdparty/chromium/sandbox/linux/system_headers/arm64_linux_syscalls.h +index 59d0eab8e..7ae700213 100644 +--- a/src/3rdparty/chromium/sandbox/linux/system_headers/arm64_linux_syscalls.h ++++ b/src/3rdparty/chromium/sandbox/linux/system_headers/arm64_linux_syscalls.h +@@ -1063,4 +1063,8 @@ + #define __NR_memfd_create 279 + #endif + ++#if !defined(__NR_membarrier) ++#define __NR_membarrier 283 ++#endif ++ + #endif // SANDBOX_LINUX_SYSTEM_HEADERS_ARM64_LINUX_SYSCALLS_H_ +diff --git a/src/3rdparty/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h b/src/3rdparty/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h +index 1addd5384..d8811ce87 100644 +--- a/src/3rdparty/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h ++++ b/src/3rdparty/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h +@@ -1385,6 +1385,11 @@ + #define __NR_memfd_create (__NR_SYSCALL_BASE+385) + #endif + ++#if !defined(__NR_membarrier) ++#define __NR_membarrier (__NR_SYSCALL_BASE+389) ++#endif ++ ++ + // ARM private syscalls. + #if !defined(__ARM_NR_BASE) + #define __ARM_NR_BASE (__NR_SYSCALL_BASE + 0xF0000) +diff --git a/src/3rdparty/chromium/sandbox/linux/system_headers/mips64_linux_syscalls.h b/src/3rdparty/chromium/sandbox/linux/system_headers/mips64_linux_syscalls.h +index ec75815a8..612fcfaa9 100644 +--- a/src/3rdparty/chromium/sandbox/linux/system_headers/mips64_linux_syscalls.h ++++ b/src/3rdparty/chromium/sandbox/linux/system_headers/mips64_linux_syscalls.h +@@ -1271,4 +1271,8 @@ + #define __NR_memfd_create (__NR_Linux + 314) + #endif + ++#if !defined(__NR_membarrier) ++#define __NR_membarrier (__NR_Linux + 318) ++#endif ++ + #endif // SANDBOX_LINUX_SYSTEM_HEADERS_MIPS64_LINUX_SYSCALLS_H_ +diff --git a/src/3rdparty/chromium/sandbox/linux/system_headers/mips_linux_syscalls.h b/src/3rdparty/chromium/sandbox/linux/system_headers/mips_linux_syscalls.h +index ddbf97f3d..1742acd4c 100644 +--- a/src/3rdparty/chromium/sandbox/linux/system_headers/mips_linux_syscalls.h ++++ b/src/3rdparty/chromium/sandbox/linux/system_headers/mips_linux_syscalls.h +@@ -1433,4 +1433,8 @@ + #define __NR_memfd_create (__NR_Linux + 354) + #endif + ++#if !defined(__NR_membarrier) ++#define __NR_membarrier (__NR_Linux + 358) ++#endif ++ + #endif // SANDBOX_LINUX_SYSTEM_HEADERS_MIPS_LINUX_SYSCALLS_H_ +diff --git a/src/3rdparty/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h b/src/3rdparty/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h +index a6afc62d9..6ab7740de 100644 +--- a/src/3rdparty/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h ++++ b/src/3rdparty/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h +@@ -1422,5 +1422,10 @@ + #define __NR_memfd_create 356 + #endif + ++#if !defined(__NR_membarrier) ++#define __NR_membarrier 375 ++#endif ++ ++ + #endif // SANDBOX_LINUX_SYSTEM_HEADERS_X86_32_LINUX_SYSCALLS_H_ + +diff --git a/src/3rdparty/chromium/sandbox/linux/system_headers/x86_64_linux_syscalls.h b/src/3rdparty/chromium/sandbox/linux/system_headers/x86_64_linux_syscalls.h +index 349504aee..6a6d4756f 100644 +--- a/src/3rdparty/chromium/sandbox/linux/system_headers/x86_64_linux_syscalls.h ++++ b/src/3rdparty/chromium/sandbox/linux/system_headers/x86_64_linux_syscalls.h +@@ -1290,5 +1290,10 @@ + #define __NR_memfd_create 319 + #endif + ++#if !defined(__NR_membarrier) ++#define __NR_membarrier 324 ++#endif ++ ++ + #endif // SANDBOX_LINUX_SYSTEM_HEADERS_X86_64_LINUX_SYSCALLS_H_ + diff --git a/browsers/qt5-qtwebengine/nasm.patch b/browsers/qt5-qtwebengine/nasm.patch new file mode 100644 index 0000000..05e7307 --- /dev/null +++ b/browsers/qt5-qtwebengine/nasm.patch @@ -0,0 +1,13 @@ +diff --git a/src/3rdparty/chromium/third_party/nasm/config/config-linux.h b/src/3rdparty/chromium/third_party/nasm/config/config-linux.h +index 7eb7c20ff..3bdc2eb39 100644 +--- a/src/3rdparty/chromium/third_party/nasm/config/config-linux.h ++++ b/src/3rdparty/chromium/third_party/nasm/config/config-linux.h +@@ -117,7 +117,7 @@ + #define HAVE_ACCESS 1 + + /* Define to 1 if you have the `canonicalize_file_name' function. */ +-#define HAVE_CANONICALIZE_FILE_NAME 1 ++// #define HAVE_CANONICALIZE_FILE_NAME 1 + + /* Define to 1 if you have the `cpu_to_le16' intrinsic function. */ + /* #undef HAVE_CPU_TO_LE16 */ diff --git a/browsers/qt5-qtwebengine/qt-musl-crashpad.patch b/browsers/qt5-qtwebengine/qt-musl-crashpad.patch new file mode 100644 index 0000000..0dd9789 --- /dev/null +++ b/browsers/qt5-qtwebengine/qt-musl-crashpad.patch @@ -0,0 +1,13 @@ +diff --git a/src/3rdparty/chromium/third_party/crashpad/crashpad/util/linux/thread_info.h b/src/3rdparty/chromium/third_party/crashpad/crashpad/util/linux/thread_info.h +index 5b55c24..08cec52 100644 +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/util/linux/thread_info.h ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/util/linux/thread_info.h +@@ -273,7 +273,7 @@ union FloatContext { + "Size mismatch"); + #elif defined(ARCH_CPU_ARMEL) + static_assert(sizeof(f32_t::fpregs) == sizeof(user_fpregs), "Size mismatch"); +-#if !defined(__GLIBC__) ++#if defined(OS_ANDROID) + static_assert(sizeof(f32_t::vfp) == sizeof(user_vfp), "Size mismatch"); + #endif + #elif defined(ARCH_CPU_ARM64) diff --git a/browsers/qt5-qtwebengine/qt-musl-dispatch_to_musl.patch b/browsers/qt5-qtwebengine/qt-musl-dispatch_to_musl.patch new file mode 100644 index 0000000..1258d4f --- /dev/null +++ b/browsers/qt5-qtwebengine/qt-musl-dispatch_to_musl.patch @@ -0,0 +1,103 @@ +--- qtwebengine/src/3rdparty/chromium/base/allocator/allocator_shim_default_dispatch_to_glibc.cc ++++ qtwebengine/src/3rdparty/chromium/base/allocator/allocator_shim_default_dispatch_to_glibc.cc +@@ -6,6 +6,7 @@ + + #include + ++#if defined(__GLIBC__) + // This translation unit defines a default dispatch for the allocator shim which + // routes allocations to libc functions. + // The code here is strongly inspired from tcmalloc's libc_override_glibc.h. +@@ -73,3 +74,92 @@ const AllocatorDispatch AllocatorDispatch::default_dispatch = { + nullptr, /* free_definite_size_function */ + nullptr, /* next */ + }; ++ ++#else // defined(__GLIBC__) ++ ++#include ++ ++extern "C" { ++// Declare function pointers to the memory functions ++typedef void* (*t_libc_malloc)(size_t size); ++typedef void* (*t_libc_calloc)(size_t n, size_t size); ++typedef void* (*t_libc_realloc)(void* address, size_t size); ++typedef void* (*t_libc_memalign)(size_t alignment, size_t size); ++typedef void (*t_libc_free)(void* ptr); ++typedef size_t (*t_libc_malloc_usable_size)(void* ptr); ++ ++// Static instances of pointers to libc.so dl symbols ++static t_libc_malloc libc_malloc = NULL; ++static t_libc_calloc libc_calloc = NULL; ++static t_libc_realloc libc_realloc = NULL; ++static t_libc_memalign libc_memalign = NULL; ++static t_libc_free libc_free = NULL; ++static t_libc_malloc_usable_size libc_malloc_usable_size = NULL; ++ ++// resolve the symbols in libc.so ++void musl_libc_memory_init(void) ++{ ++ libc_malloc = (t_libc_malloc) dlsym(RTLD_NEXT, "malloc"); ++ libc_calloc = (t_libc_calloc) dlsym(RTLD_NEXT, "calloc"); ++ libc_realloc = (t_libc_realloc) dlsym(RTLD_NEXT, "realloc"); ++ libc_memalign = (t_libc_memalign) dlsym(RTLD_NEXT, "memalign"); ++ libc_free = (t_libc_free) dlsym(RTLD_NEXT, "free"); ++ libc_malloc_usable_size = (t_libc_malloc_usable_size) dlsym(RTLD_NEXT, "malloc_usable_size"); ++} ++} // extern "C" ++ ++namespace { ++ ++using base::allocator::AllocatorDispatch; ++ ++void* MuslMalloc(const AllocatorDispatch*, size_t size, void* context) { ++ if (!libc_malloc) ++ musl_libc_memory_init(); ++ return (*libc_malloc)(size); ++} ++ ++void* MuslCalloc(const AllocatorDispatch*, size_t n, size_t size, void* context) { ++ if (!libc_calloc) ++ musl_libc_memory_init(); ++ return (*libc_calloc)(n, size); ++} ++ ++void* MuslRealloc(const AllocatorDispatch*, void* address, size_t size, void* context) { ++ if (!libc_realloc) ++ musl_libc_memory_init(); ++ return (*libc_realloc)(address, size); ++} ++ ++void* MuslMemalign(const AllocatorDispatch*, size_t alignment, size_t size, void* context) { ++ if (!libc_memalign) ++ musl_libc_memory_init(); ++ return (*libc_memalign)(alignment, size); ++} ++ ++void MuslFree(const AllocatorDispatch*, void* address, void* context) { ++ if (!libc_free) ++ musl_libc_memory_init(); ++ (*libc_free)(address); ++} ++ ++size_t MuslGetSizeEstimate(const AllocatorDispatch*, void* address, void* context) { ++ // TODO(siggi, primiano): malloc_usable_size may need redirection in the ++ // presence of interposing shims that divert allocations. ++ if (!libc_malloc_usable_size) ++ musl_libc_memory_init(); ++ return (*libc_malloc_usable_size)(address); ++} ++ ++} // namespace ++ ++const AllocatorDispatch AllocatorDispatch::default_dispatch = { ++ &MuslMalloc, /* alloc_function */ ++ &MuslCalloc, /* alloc_zero_initialized_function */ ++ &MuslMemalign, /* alloc_aligned_function */ ++ &MuslRealloc, /* realloc_function */ ++ &MuslFree, /* free_function */ ++ &MuslGetSizeEstimate, /* get_size_estimate_function */ ++ nullptr, /* next */ ++}; ++ ++#endif diff --git a/browsers/qt5-qtwebengine/qt-musl-elf-arm.patch b/browsers/qt5-qtwebengine/qt-musl-elf-arm.patch new file mode 100644 index 0000000..314f1c8 --- /dev/null +++ b/browsers/qt5-qtwebengine/qt-musl-elf-arm.patch @@ -0,0 +1,13 @@ +diff --git a/src/3rdparty/chromium/v8/src/base/cpu.cc b/src/3rdparty/chromium/v8/src/base/cpu.cc +index 4f4ac2b..c32239b 100644 +--- a/src/3rdparty/chromium/v8/src/base/cpu.cc ++++ b/src/3rdparty/chromium/v8/src/base/cpu.cc +@@ -17,7 +17,7 @@ extern "C" char** environ; + #if V8_OS_QNX + #include // cpuinfo + #endif +-#if (V8_OS_LINUX && V8_HOST_ARCH_PPC) || V8_OS_ANDROID ++#if (V8_OS_LINUX && (V8_HOST_ARCH_PPC || V8_HOST_ARCH_ARM)) || V8_OS_ANDROID + #include + #endif + #if V8_OS_AIX diff --git a/browsers/qt5-qtwebengine/qt-musl-execinfo.patch b/browsers/qt5-qtwebengine/qt-musl-execinfo.patch new file mode 100644 index 0000000..7082f51 --- /dev/null +++ b/browsers/qt5-qtwebengine/qt-musl-execinfo.patch @@ -0,0 +1,108 @@ +diff --git a/src/3rdparty/chromium/base/debug/stack_trace.cc b/src/3rdparty/chromium/base/debug/stack_trace.cc +index d8ca822d9..f6f3d9c69 100644 +--- a/src/3rdparty/chromium/base/debug/stack_trace.cc ++++ b/src/3rdparty/chromium/base/debug/stack_trace.cc +@@ -233,14 +233,14 @@ std::string StackTrace::ToString() const { + } + std::string StackTrace::ToStringWithPrefix(const char* prefix_string) const { + std::stringstream stream; +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + OutputToStreamWithPrefix(&stream, prefix_string); + #endif + return stream.str(); + } + + std::ostream& operator<<(std::ostream& os, const StackTrace& s) { +-#if !defined(__UCLIBC__) & !defined(_AIX) ++#if defined(__GLIBC__) & !defined(_AIX) + s.OutputToStream(&os); + #else + os << "StackTrace::OutputToStream not implemented."; +diff --git a/src/3rdparty/chromium/base/debug/stack_trace_posix.cc b/src/3rdparty/chromium/base/debug/stack_trace_posix.cc +index f4ddf9c1e..aef993613 100644 +--- a/src/3rdparty/chromium/base/debug/stack_trace_posix.cc ++++ b/src/3rdparty/chromium/base/debug/stack_trace_posix.cc +@@ -27,7 +27,7 @@ + #if !defined(USE_SYMBOLIZE) + #include + #endif +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + #include + #endif + +@@ -88,7 +88,7 @@ void DemangleSymbols(std::string* text) { + // Note: code in this function is NOT async-signal safe (std::string uses + // malloc internally). + +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + std::string::size_type search_from = 0; + while (search_from < text->size()) { + // Look for the start of a mangled symbol, from search_from. +@@ -123,7 +123,7 @@ void DemangleSymbols(std::string* text) { + search_from = mangled_start + 2; + } + } +-#endif // !defined(__UCLIBC__) && !defined(_AIX) ++#endif // defined(__GLIBC__) && !defined(_AIX) + } + #endif // !defined(USE_SYMBOLIZE) + +@@ -135,7 +135,7 @@ class BacktraceOutputHandler { + virtual ~BacktraceOutputHandler() = default; + }; + +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + void OutputPointer(void* pointer, BacktraceOutputHandler* handler) { + // This should be more than enough to store a 64-bit number in hex: + // 16 hex digits + 1 for null-terminator. +@@ -218,7 +218,7 @@ void ProcessBacktrace(void* const* trace, + } + #endif // defined(USE_SYMBOLIZE) + } +-#endif // !defined(__UCLIBC__) && !defined(_AIX) ++#endif // defined(__GLIBC__) && !defined(_AIX) + + void PrintToStderr(const char* output) { + // NOTE: This code MUST be async-signal safe (it's used by in-process +@@ -834,7 +834,7 @@ size_t CollectStackTrace(void** trace, size_t count) { + // NOTE: This code MUST be async-signal safe (it's used by in-process + // stack dumping signal handler). NO malloc or stdio is allowed here. + +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + // Though the backtrace API man page does not list any possible negative + // return values, we take no chance. + return base::saturated_cast(backtrace(trace, count)); +@@ -847,13 +847,13 @@ void StackTrace::PrintWithPrefix(const char* prefix_string) const { + // NOTE: This code MUST be async-signal safe (it's used by in-process + // stack dumping signal handler). NO malloc or stdio is allowed here. + +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + PrintBacktraceOutputHandler handler; + ProcessBacktrace(trace_, count_, prefix_string, &handler); + #endif + } + +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + void StackTrace::OutputToStreamWithPrefix(std::ostream* os, + const char* prefix_string) const { + StreamBacktraceOutputHandler handler(os); +diff --git a/src/3rdparty/chromium/base/logging.cc b/src/3rdparty/chromium/base/logging.cc +index 4c4bfa6af..0ca5c2159 100644 +--- a/src/3rdparty/chromium/base/logging.cc ++++ b/src/3rdparty/chromium/base/logging.cc +@@ -618,7 +618,7 @@ LogMessage::LogMessage(const char* file, int line, LogSeverity severity, + + LogMessage::~LogMessage() { + size_t stack_start = stream_.tellp(); +-#if !defined(OFFICIAL_BUILD) && !defined(OS_NACL) && !defined(__UCLIBC__) && \ ++#if !defined(OFFICIAL_BUILD) && !defined(OS_NACL) && defined(__GLIBC__) && \ + !defined(OS_AIX) + if (severity_ == LOG_FATAL && !base::debug::BeingDebugged()) { + // Include a stack trace on a fatal, unless a debugger is attached. diff --git a/browsers/qt5-qtwebengine/qt-musl-fpstate.patch b/browsers/qt5-qtwebengine/qt-musl-fpstate.patch new file mode 100644 index 0000000..42fe157 --- /dev/null +++ b/browsers/qt5-qtwebengine/qt-musl-fpstate.patch @@ -0,0 +1,48 @@ +diff --git a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc +index 052ce37..95b0fb4 100644 +--- a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc ++++ b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc +@@ -49,7 +49,7 @@ uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + } + + void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc, +- const struct _libc_fpstate* fp) { ++ const struct _fpstate* fp) { + const greg_t* regs = uc->uc_mcontext.gregs; + + out->context_flags = MD_CONTEXT_X86_FULL | +@@ -97,7 +97,7 @@ uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + } + + void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc, +- const struct _libc_fpstate* fpregs) { ++ const struct _fpstate* fpregs) { + const greg_t* regs = uc->uc_mcontext.gregs; + + out->context_flags = MD_CONTEXT_AMD64_FULL; +diff --git a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h +index f830618..f3dde1f 100644 +--- a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h ++++ b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h +@@ -50,7 +50,7 @@ struct UContextReader { + // info: the collection of register structures. + #if defined(__i386__) || defined(__x86_64) + static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc, +- const struct _libc_fpstate* fp); ++ const struct _fpstate* fp); + #elif defined(__aarch64__) + static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct fpsimd_context* fpregs); +diff --git a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h +index d1dc331..d1cc562 100644 +--- a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h ++++ b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h +@@ -48,7 +48,7 @@ class ExceptionHandler; + #if defined(__aarch64__) + typedef struct fpsimd_context fpstate_t; + #elif !defined(__ARM_EABI__) && !defined(__mips__) +-typedef struct _libc_fpstate fpstate_t; ++typedef struct _fpstate fpstate_t; + #endif + + // These entries store a list of memory regions that the client wants included diff --git a/browsers/qt5-qtwebengine/qt-musl-mallinfo.patch b/browsers/qt5-qtwebengine/qt-musl-mallinfo.patch new file mode 100644 index 0000000..1518370 --- /dev/null +++ b/browsers/qt5-qtwebengine/qt-musl-mallinfo.patch @@ -0,0 +1,43 @@ +diff --git a/src/3rdparty/chromium/base/process/process_metrics_posix.cc b/src/3rdparty/chromium/base/process/process_metrics_posix.cc +index 044bd8d24..0f2526a3d 100644 +--- a/src/3rdparty/chromium/base/process/process_metrics_posix.cc ++++ b/src/3rdparty/chromium/base/process/process_metrics_posix.cc +@@ -110,14 +110,14 @@ size_t ProcessMetrics::GetMallocUsage() { + malloc_statistics_t stats = {0}; + malloc_zone_statistics(nullptr, &stats); + return stats.size_in_use; +-#elif defined(OS_LINUX) || defined(OS_ANDROID) ++#elif (defined(OS_LINUX) && defined(__GLIBC__)) || defined(OS_ANDROID) + struct mallinfo minfo = mallinfo(); + #if BUILDFLAG(USE_TCMALLOC) + return minfo.uordblks; + #else + return minfo.hblkhd + minfo.arena; + #endif +-#elif defined(OS_FUCHSIA) ++#else //if defined(OS_FUCHSIA) // also musl doesn't do this. + // TODO(fuchsia): Not currently exposed. https://crbug.com/735087. + return 0; + #endif +diff --git a/src/3rdparty/chromium/base/trace_event/malloc_dump_provider.cc b/src/3rdparty/chromium/base/trace_event/malloc_dump_provider.cc +index 7e42cfc20..5086b5c8a 100644 +--- a/src/3rdparty/chromium/base/trace_event/malloc_dump_provider.cc ++++ b/src/3rdparty/chromium/base/trace_event/malloc_dump_provider.cc +@@ -132,7 +132,7 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDumpArgs& args, + } + #elif defined(OS_FUCHSIA) + // TODO(fuchsia): Port, see https://crbug.com/706592. +-#else ++#elif defined(__GLIBC__) + struct mallinfo info = mallinfo(); + #if !defined(ADDRESS_SANITIZER) && !defined(THREAD_SANITIZER) + // Sanitizers override mallinfo. +@@ -147,6 +147,8 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDumpArgs& args, + + // Total allocated space is given by |uordblks|. + allocated_objects_size = info.uordblks; ++#else ++ // musl libc does not support mallinfo() + #endif + + MemoryAllocatorDump* outer_dump = pmd->CreateAllocatorDump("malloc"); diff --git a/browsers/qt5-qtwebengine/qt-musl-off_t.patch b/browsers/qt5-qtwebengine/qt-musl-off_t.patch new file mode 100644 index 0000000..52db3b9 --- /dev/null +++ b/browsers/qt5-qtwebengine/qt-musl-off_t.patch @@ -0,0 +1,10 @@ +--- qtwebengine/src/3rdparty/chromium/third_party/ots/include/opentype-sanitiser.h 2016-05-26 14:58:54.000000000 +0200 ++++ qtwebengine/src/3rdparty/chromium/third_party/ots/include/opentype-sanitiser.h 2016-10-01 14:31:30.885000000 +0200 +@@ -21,6 +21,7 @@ + #define htons(x) _byteswap_ushort (x) + #else + #include ++#include + #include + #endif + diff --git a/browsers/qt5-qtwebengine/qt-musl-pread-pwrite.patch b/browsers/qt5-qtwebengine/qt-musl-pread-pwrite.patch new file mode 100644 index 0000000..c5dcfd8 --- /dev/null +++ b/browsers/qt5-qtwebengine/qt-musl-pread-pwrite.patch @@ -0,0 +1,20 @@ +diff --git a/src/3rdparty/chromium/third_party/lss/linux_syscall_support.h b/src/3rdparty/chromium/third_party/lss/linux_syscall_support.h +index 5d9c2e8..e81e7b4 100644 +--- a/src/3rdparty/chromium/third_party/lss/linux_syscall_support.h ++++ b/src/3rdparty/chromium/third_party/lss/linux_syscall_support.h +@@ -1794,6 +1794,15 @@ struct kernel_statfs { + /* End of s390/s390x definitions */ + #endif + ++#ifndef __GLIBC__ ++ /* For Musl libc pread/pread is the same as pread64/pwrite64 */ ++#ifndef __NR_pread ++#define __NR_pread __NR_pread64 ++#endif ++#ifndef __NR_pwrite ++#define __NR_pwrite __NR_pwrite64 ++#endif ++#endif /* ifndef __GLIBC__ */ + + /* After forking, we must make sure to only call system calls. */ + #if defined(__BOUNDED_POINTERS__) diff --git a/browsers/qt5-qtwebengine/qt-musl-pvalloc.patch b/browsers/qt5-qtwebengine/qt-musl-pvalloc.patch new file mode 100644 index 0000000..d5caf38 --- /dev/null +++ b/browsers/qt5-qtwebengine/qt-musl-pvalloc.patch @@ -0,0 +1,14 @@ +--- qtwebengine/src/core/api/qtbug-61521.cpp 2017-11-29 09:42:29.000000000 +0100 ++++ qtwebengine/src/core/api/qtbug-61521.cpp 2018-01-28 06:49:29.454175725 +0100 +@@ -111,7 +111,11 @@ + } + + SHIM_HIDDEN void* ShimPvalloc(size_t size) { ++#if defined(__GLIBC__) + return pvalloc(size); ++#else ++ return valloc((size+4095)&~4095); ++#endif + } + + SHIM_HIDDEN int ShimPosixMemalign(void** r, size_t a, size_t s) { diff --git a/browsers/qt5-qtwebengine/qt-musl-resolve.patch b/browsers/qt5-qtwebengine/qt-musl-resolve.patch new file mode 100644 index 0000000..a481e50 --- /dev/null +++ b/browsers/qt5-qtwebengine/qt-musl-resolve.patch @@ -0,0 +1,61 @@ +--- qtwebengine/src/3rdparty/chromium/net/dns/dns_reloader.cc 2016-11-07 15:46:18.000000000 +0100 ++++ qtwebengine/src/3rdparty/chromium/net/dns/dns_reloader.cc 2016-12-20 03:33:11.749059656 +0100 +@@ -9,6 +9,10 @@ + + #include + ++#if !defined(__GLIBC__) ++#include "resolv_compat.h" ++#endif ++ + #include "base/lazy_instance.h" + #include "base/logging.h" + #include "base/macros.h" +--- qtwebengine/src/3rdparty/chromium/net/dns/dns_config_service_posix.cc 2016-11-07 15:46:18.000000000 +0100 ++++ qtwebengine/src/3rdparty/chromium/net/dns/dns_config_service_posix.cc 2016-12-20 03:40:07.671953098 +0100 +@@ -6,6 +6,10 @@ + + #include + ++#if !defined(__GLIBC__) ++#include "resolv_compat.h" ++#endif ++ + #include "base/bind.h" + #include "base/files/file.h" + #include "base/files/file_path.h" +diff --git a/src/3rdparty/chromium/net/dns/resolv_compat.h b/src/3rdparty/chromium/net/dns/resolv_compat.h +new file mode 100644 +index 0000000..4f0e852 +--- /dev/null ++++ b/src/3rdparty/chromium/net/dns/resolv_compat.h +@@ -0,0 +1,29 @@ ++#if !defined(__GLIBC__) ++/*************************************************************************** ++ * resolv_compat.h ++ * ++ * Mimick GLIBC's res_ninit() and res_nclose() for musl libc ++ * Note: res_init() is actually deprecated according to ++ * http://docs.oracle.com/cd/E36784_01/html/E36875/res-nclose-3resolv.html ++ **************************************************************************/ ++#include ++ ++static inline int res_ninit(res_state statp) ++{ ++ int rc = res_init(); ++ if (statp != &_res) { ++ memcpy(statp, &_res, sizeof(*statp)); ++ } ++ return rc; ++} ++ ++static inline int res_nclose(res_state statp) ++{ ++ if (!statp) ++ return -1; ++ if (statp != &_res) { ++ memset(statp, 0, sizeof(*statp)); ++ } ++ return 0; ++} ++#endif diff --git a/browsers/qt5-qtwebengine/qt-musl-siginfo_t.patch b/browsers/qt5-qtwebengine/qt-musl-siginfo_t.patch new file mode 100644 index 0000000..fe760be --- /dev/null +++ b/browsers/qt5-qtwebengine/qt-musl-siginfo_t.patch @@ -0,0 +1,18 @@ +There's a subtle difference in the internal name of siginfo_t fields +between glibc and musl. The structure itself is equivalent, so it +should suffice to add a macro to rename the field. + +--- qtwebengine/src/3rdparty/chromium/sandbox/linux/seccomp-bpf/trap.cc 2015-02-17 05:57:43.000000000 +0100 ++++ qtwebengine/src/3rdparty/chromium/sandbox/linux/seccomp-bpf/trap.cc 2015-06-03 08:20:25.032716427 +0200 +@@ -22,6 +22,11 @@ + #include "sandbox/linux/services/android_ucontext.h" + #endif + ++// musl libc defines siginfo_t __si_fields instead of _sifields ++#if !defined(__GLIBC__) ++#define _sifields __si_fields ++#endif ++ + namespace { + + const int kCapacityIncrement = 20; diff --git a/browsers/qt5-qtwebengine/qt-musl-stackstart.patch b/browsers/qt5-qtwebengine/qt-musl-stackstart.patch new file mode 100644 index 0000000..1286c74 --- /dev/null +++ b/browsers/qt5-qtwebengine/qt-musl-stackstart.patch @@ -0,0 +1,22 @@ +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc +index 10f1c0d..8e86a2e 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc +@@ -28,7 +28,7 @@ size_t GetUnderestimatedStackSize() { + // FIXME: On Mac OSX and Linux, this method cannot estimate stack size + // correctly for the main thread. + +-#if defined(__GLIBC__) || defined(OS_ANDROID) || defined(OS_FREEBSD) || \ ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FREEBSD) || \ + defined(OS_FUCHSIA) + // pthread_getattr_np() can fail if the thread is not invoked by + // pthread_create() (e.g., the main thread of webkit_unit_tests). +@@ -96,7 +96,7 @@ size_t GetUnderestimatedStackSize() { + } + + void* GetStackStart() { +-#if defined(__GLIBC__) || defined(OS_ANDROID) || defined(OS_FREEBSD) || \ ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FREEBSD) || \ + defined(OS_FUCHSIA) + pthread_attr_t attr; + int error; diff --git a/browsers/qt5-qtwebengine/qt-musl-sysreg-for__WORDSIZE.patch b/browsers/qt5-qtwebengine/qt-musl-sysreg-for__WORDSIZE.patch new file mode 100644 index 0000000..a8b74e4 --- /dev/null +++ b/browsers/qt5-qtwebengine/qt-musl-sysreg-for__WORDSIZE.patch @@ -0,0 +1,14 @@ +diff --git a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/common/linux/elf_core_dump.h b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/common/linux/elf_core_dump.h +index d03c7a8..d43fda0 100644 +--- a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/common/linux/elf_core_dump.h ++++ b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/common/linux/elf_core_dump.h +@@ -36,6 +36,9 @@ + #include + #include + #include ++#ifndef __GLIBC__ ++#include ++#endif + + #include "common/memory_range.h" + diff --git a/browsers/qt5-qtwebengine/qt-musl-thread-stacksize.patch b/browsers/qt5-qtwebengine/qt-musl-thread-stacksize.patch new file mode 100644 index 0000000..a5c59fe --- /dev/null +++ b/browsers/qt5-qtwebengine/qt-musl-thread-stacksize.patch @@ -0,0 +1,26 @@ +diff --git a/src/3rdparty/chromium/ppapi/utility/threading/simple_thread.cc b/src/3rdparty/chromium/ppapi/utility/threading/simple_thread.cc +index 02bf49b..05ee182 100644 +--- a/src/3rdparty/chromium/ppapi/utility/threading/simple_thread.cc ++++ b/src/3rdparty/chromium/ppapi/utility/threading/simple_thread.cc +@@ -13,7 +13,7 @@ namespace pp { + namespace { + + // Use 2MB default stack size for Native Client, otherwise use system default. +-#if defined(__native_client__) ++#if defined(__native_client__) || !defined(__GLIBC__) + const size_t kDefaultStackSize = 2 * 1024 * 1024; + #else + const size_t kDefaultStackSize = 0; +diff --git a/src/3rdparty/chromium/v8/src/base/platform/platform-posix.cc b/src/3rdparty/chromium/v8/src/base/platform/platform-posix.cc +index cf7f3ec..e06a5ce 100644 +--- a/src/3rdparty/chromium/v8/src/base/platform/platform-posix.cc ++++ b/src/3rdparty/chromium/v8/src/base/platform/platform-posix.cc +@@ -761,7 +761,7 @@ void Thread::Start() { + #if V8_OS_MACOSX + // Default on Mac OS X is 512kB -- bump up to 1MB + stack_size = 1 * 1024 * 1024; +-#elif V8_OS_AIX ++#elif V8_OS_AIX || !defined(__GLIBC__) + // Default on AIX is 96kB -- bump up to 2MB + stack_size = 2 * 1024 * 1024; + #endif diff --git a/browsers/qt5-qtwebengine/remove-glibc-check.patch b/browsers/qt5-qtwebengine/remove-glibc-check.patch new file mode 100644 index 0000000..ba10c3b --- /dev/null +++ b/browsers/qt5-qtwebengine/remove-glibc-check.patch @@ -0,0 +1,18 @@ +Qt checks if glibc is available and if not disables large part of Qt5WebEngine and thus cripples functionality. +However these parts work fine with Musl so there is no need to disable them. +Just remove the check so it builds again. Since 5.15.1 is the last version of Qt to be released with this build system it'll be obsolete with Qt6 and there is no real point in fixing this upstream. + +diff --git a/src/buildtools/configure.json b/src/buildtools/configure.json +index 1ca6214a..3783c223 100644 +--- a/src/buildtools/configure.json ++++ b/src/buildtools/configure.json +@@ -375,8 +375,7 @@ + && features.webengine-python2 + && (!config.sanitizer || features.webengine-sanitizer) + && (!config.linux || features.pkg-config) +- && (!config.linux || features.webengine-host-pkg-config) +- && (!config.linux || features.webengine-system-glibc) ++ && (!config.linux || features.webengine-host-pkg-config) + && (!config.linux || features.webengine-system-khr) + && (!config.linux || features.webengine-system-nss) + && (!config.linux || features.webengine-system-dbus) diff --git a/browsers/qt5-qtwebengine/sandbox-sched_getparam.patch b/browsers/qt5-qtwebengine/sandbox-sched_getparam.patch new file mode 100644 index 0000000..15c33a5 --- /dev/null +++ b/browsers/qt5-qtwebengine/sandbox-sched_getparam.patch @@ -0,0 +1,24 @@ +Allow SYS_sched_getparam and SYS_sched_getscheduler +musl uses them for pthread_getschedparam() + +source: https://git.alpinelinux.org/aports/commit/community/chromium?id=54af9f8ac24f52d382c5758e2445bf0206eff40e + +--- qtwebengine/src/3rdparty/chromium/services/service_manager/sandbox/linux/bpf_renderer_policy_linux.cc 2019-11-12 20:48:20.013724661 +0100 ++++ qtwebengine/src/3rdparty/chromium/services/service_manager/sandbox/linux/bpf_renderer_policy_linux.cc.patched 2019-11-12 20:58:57.330695676 +0100 +@@ -93,10 +93,16 @@ + case __NR_sysinfo: + case __NR_times: + case __NR_uname: ++#if !defined(__GLIBC__) ++ case __NR_sched_getparam: ++ case __NR_sched_getscheduler: ++#endif + return Allow(); + case __NR_sched_getaffinity: ++#if defined(__GLIBC__) + case __NR_sched_getparam: + case __NR_sched_getscheduler: ++#endif + case __NR_sched_setscheduler: + return sandbox::RestrictSchedTarget(GetPolicyPid(), sysno); + case __NR_prlimit64: diff --git a/browsers/qt5-qtwebengine/yasm-nls.patch b/browsers/qt5-qtwebengine/yasm-nls.patch new file mode 100644 index 0000000..6b412ab --- /dev/null +++ b/browsers/qt5-qtwebengine/yasm-nls.patch @@ -0,0 +1,13 @@ +diff --git a/src/3rdparty/chromium/third_party/yasm/source/config/linux/config.h b/src/3rdparty/chromium/third_party/yasm/source/config/linux/config.h +index 9e36539..f588083 100644 +--- a/src/3rdparty/chromium/third_party/yasm/source/config/linux/config.h ++++ b/src/3rdparty/chromium/third_party/yasm/source/config/linux/config.h +@@ -5,7 +5,7 @@ + #define CPP_PROG "gcc -E" + + /* */ +-#define ENABLE_NLS 1 ++/* #undef ENABLE_NLS 1 */ + + /* Define to 1 if you have the `abort' function. */ + #define HAVE_ABORT 1 diff --git a/communication/mumble/APKBUILD b/communication/mumble/APKBUILD new file mode 100644 index 0000000..fe64e9f --- /dev/null +++ b/communication/mumble/APKBUILD @@ -0,0 +1,108 @@ +# Contributor: Sören Tempel +# Contributor: Johannes Matheis +# Contributor: Alex Denes +# Maintainer: Johannes Matheis +pkgname=mumble +pkgver=1.3.2 +pkgrel=1 +pkgdesc="Low-latency, high quality voice chat software" +url="https://wiki.mumble.info/" +arch="all" +license="BSD-3-Clause" +options="!check" +depends="qt5-qtbase-sqlite" +makedepends="qt5-qtbase-dev libsndfile-dev boost-dev protobuf-dev + libxi-dev speex-dev speexdsp-dev libcap-dev alsa-lib-dev qt5-qtsvg-dev + qt5-qttools-dev opus-dev pulseaudio-dev + " +install="murmur.pre-install" +pkgusers="murmur" +pkggroups="murmur" +subpackages="$pkgname-doc murmur murmur-doc:murmur_doc:noarch" +source="https://github.com/mumble-voip/mumble/releases/download/$pkgver/mumble-$pkgver.tar.gz + murmur.initd" + +# secfixes: +# 1.2.19-r9: +# - CVE-2018-20743 + +build() { + qmake-qt5 -recursive main.pro \ + CONFIG+="no-speechd no-g15 no-update optimize no-ice bundled-celt no-embed-qt-translations no-bundled-speex no-bundled-opus no-plugins no-oss no-bonjour" \ + DEFINES+="PLUGIN_PATH=/usr/lib/mumble" + + make release +} + +package() { + # Binaries. + local _ver=${pkgver%_rc*} + local _maj=$( echo "$_ver" | cut -d. -f1) + local _min=$( echo "$_ver" | cut -d. -f2) + install -Dm755 ./release/mumble \ + "$pkgdir"/usr/bin/mumble + install -Dm755 ./scripts/mumble-overlay \ + "$pkgdir"/usr/bin/mumble-overlay + + # Libraries. + install -Dm755 ./release/libmumble.so.$_ver \ + "$pkgdir"/usr/lib/mumble/libmumble.so.$_ver + for lib in libmumble.so libmumble.so.$_maj libmumble.so.$_maj.$_min; do + ln -s libmumble.so.$_ver \ + "$pkgdir"/usr/lib/mumble/$lib + done + install -Dm755 ./release/libcelt* \ + "$pkgdir"/usr/lib/mumble/ + + # Misc. + install -Dm644 ./LICENSE \ + "$pkgdir"/usr/share/licenses/$pkgname/LICENSE + install -Dm644 ./scripts/mumble.desktop \ + "$pkgdir"/usr/share/applications/mumble.desktop + install -Dm644 ./icons/mumble.svg \ + "$pkgdir"/usr/share/icons/hicolor/scalable/apps/mumble.svg + + # Man pages. + mkdir -p "$pkgdir"/usr/share/man/man1/ + install -m644 ./man/mum* "$pkgdir"/usr/share/man/man1/ +} + +murmur() { + pkgdesc="Murmur is the server component of Mumble" + cd "$builddir" + + install -o murmur -g murmur -dm755 \ + "$subpkgdir"/var/lib/murmur + install -Dm755 ./release/murmurd \ + "$subpkgdir"/usr/bin/murmurd + install -Dm644 ./scripts/murmur.ini \ + "$subpkgdir"/etc/murmur.ini + + sed 's/^database=$/database=\/var\/lib\/murmur\/murmur.sqlite/;\ + s/^;uname=$/uname=murmur/;\ + s/^;logfile=murmur.log$/logfile=\/var\/log\/murmur.log/;\ + s/^;pidfile=$/pidfile=\/var\/run\/murmur\/murmur.pid/'\ + -i "$subpkgdir"/etc/murmur.ini + + install -Dm644 ./scripts/murmur.conf \ + "$subpkgdir"/etc/dbus-1/system.d/murmurd.conf + sed "s/mumble-server/murmur/" \ + -i "$subpkgdir"/etc/dbus-1/system.d/murmurd.conf + + install -Dm755 "$srcdir"/murmur.initd \ + "$subpkgdir"/etc/init.d/murmur +} + +murmur_doc() { + pkgdesc="Murmur is the server component of Mumble" + + cd "$builddir" + install -Dm644 ./man/murmurd.1 \ + "$subpkgdir"/usr/share/man/man1/murmurd.1 + install -Dm644 ./LICENSE \ + "$subpkgdir"/usr/share/licenses/murmur/LICENSE + default_doc +} + +sha512sums="3f5e3b586efbe9b49c7f14119072f4842bbd885f9c5145cdaa129a87c7fc85107d0735a3107f5a2789cec9fdadda1200ab4a6d76c3caee409d3e38406a8ba27f mumble-1.3.2.tar.gz +c74ade232146a180448cb0027503f59642000bee50613a1fb99162cdc4bc81089ab4e84e51b0bbdac5c176eb52b76e6bd2b3ec790a9148135a1fc050569921c3 murmur.initd" diff --git a/communication/mumble/murmur.initd b/communication/mumble/murmur.initd new file mode 100644 index 0000000..3eb0fcf --- /dev/null +++ b/communication/mumble/murmur.initd @@ -0,0 +1,18 @@ +#!/sbin/openrc-run + +depends() { + needs localmount +} + +description="Mumble VoIP Server" +command="/usr/bin/murmurd" +command_args="-ini /etc/murmur.ini" +pidfile="/var/run/murmur/murmur.pid" + +start_pre() { + checkpath --owner murmur:murmur --directory ${pidfile%/*} +} + +# uses the openrc templates for start()/stop() + + diff --git a/communication/mumble/murmur.pre-install b/communication/mumble/murmur.pre-install new file mode 100755 index 0000000..d8be4a5 --- /dev/null +++ b/communication/mumble/murmur.pre-install @@ -0,0 +1,6 @@ +#!/bin/sh + +addgroup -S murmur 2>/dev/null +adduser -S -D -H -h /var/lib/murmur -s /sbin/nologin -G murmur -g "Mumble daemon" murmur 2>/dev/null + +exit 0 diff --git a/communication/neomutt/APKBUILD b/communication/neomutt/APKBUILD new file mode 100644 index 0000000..9e3f005 --- /dev/null +++ b/communication/neomutt/APKBUILD @@ -0,0 +1,43 @@ +# Contributor: Sören Tempel +# Contributor: Alex Denes +# Maintainer: Alex Denes +pkgname=neomutt +pkgver=20200925 +pkgrel=0 +pkgdesc="Mutt with miscellaneous fixes and feature patches" +url="https://neomutt.org/" +arch="all" +options="!check" # Readline randomly fails and permissions test might not be cleaned up +license="GPL-2.0-or-later" +makedepends="cyrus-sasl-dev gdbm-dev gettext-dev gpgme-dev libidn-dev + ncurses-dev openssl-dev notmuch-dev bsd-compat-headers libxslt tcl + docbook-xsl perl w3m" +subpackages="$pkgname-doc $pkgname-lang" +source="neomutt-$pkgver.tar.gz::https://github.com/neomutt/neomutt/archive/$pkgver.tar.gz + neomutt-test-files-master.zip::https://github.com/neomutt/neomutt-test-files/archive/master.zip" + +build() { + ./configure \ + --notmuch \ + --gpgme \ + --gdbm \ + --ssl \ + --sasl + make +} + +check() { + export NEOMUTT_TEST_DIR="$srcdir/neomutt-test-files-master" + (cd $NEOMUTT_TEST_DIR && ./setup.sh) + make test + (cd $NEOMUTT_TEST_DIR && ./restore.sh) +} + +package() { + make DESTDIR="$pkgdir" install + install -Dm644 contrib/gpg.rc \ + "$pkgdir"/usr/share/doc/$pkgname/examples/Muttrc.gpg +} + +sha512sums="1ee89ee1b3581fe2b7dafd091e315fcf4d6f7b0644c15b08af8eb2720e83f07ae526b5659abb44430309821f48013fc85af0dd6f140729b2e52e5f874cf3bc50 neomutt-20200925.tar.gz +8f6d06c89665e6a9ecdffe34583b771340df330f38762ce7b408ec9a818f7210263656c63dced200784b4dcb55f7f17fc43fa706ae2944349fcb2e45eb0ace1d neomutt-test-files-master.zip" diff --git a/communication/telegram-desktop/APKBUILD b/communication/telegram-desktop/APKBUILD new file mode 100644 index 0000000..285087a --- /dev/null +++ b/communication/telegram-desktop/APKBUILD @@ -0,0 +1,81 @@ +# Contributor: Leo +# Contributor: Alex Denes +# Maintainer: +pkgname=telegram-desktop +pkgver=2.4.3 +pkgrel=0 +pkgdesc="Telegram Desktop messaging app" +options="!check" # Requires Catch2 to be packaged. +url="https://desktop.telegram.org/" +arch="all !s390x !mips !mips64" # Need support on lib_base +license="GPL-3.0-or-later WITH OpenSSL" +depends="qt5-qtimageformats ttf-opensans" +makedepends=" + cmake + samurai + zlib-dev + opus-dev + libva-dev + libvdpau-dev + ffmpeg-dev + portaudio-dev + openal-soft-dev + openssl-dev + libxkbcommon-dev + qt5-qtbase-dev + qt5-qtwayland-dev + libexif-dev + xz-dev + minizip-dev + alsa-lib-dev + libexecinfo-dev + lz4-dev + qtchooser + pulseaudio-dev + libdbusmenu-glib-dev + xxhash-dev + enchant2-dev + range-v3-dev + python3 + libdbusmenu-qt-dev + tl-expected + hunspell-dev + gtk+3.0-dev + " +source=" + https://github.com/telegramdesktop/tdesktop/releases/download/v$pkgver/tdesktop-$pkgver-full.tar.gz + small-sizes.patch + remove-glibc.patch + " +builddir="$srcdir/tdesktop-$pkgver-full" + +build() { + if [ "$CBUILD" != "$CHOST" ]; then + CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux" + fi + cmake -B build -G Ninja \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DBUILD_SHARED_LIBS=True \ + -DCMAKE_BUILD_TYPE=None \ + -DDESKTOP_APP_DISABLE_CRASH_REPORTS=ON \ + -DDESKTOP_APP_DISABLE_SPELLCHECK=OFF \ + -DDESKTOP_APP_DISABLE_AUTOUPDATE=ON \ + -DDESKTOP_APP_DISABLE_WEBRTC_INTEGRATION=ON \ + -DDESKTOP_APP_LOTTIE_USE_CACHE=ON \ + -DDESKTOP_APP_USE_GLIBC_WRAPS=OFF \ + -DDESKTOP_APP_USE_PACKAGED=ON \ + -DTDESKTOP_API_ID=17349 \ + -DTDESKTOP_API_HASH=344583e45741c457fe1862106095a5eb \ + -DTDESKTOP_LAUNCHER_BASENAME=telegram-desktop \ + -DDESKTOP_APP_USE_PACKAGED_FONTS=ON \ + $CMAKE_CROSSOPTS . + ninja -C build +} + +package() { + DESTDIR="$pkgdir" ninja -C build install +} + +sha512sums="066a04ee4ba0c28ea8c6f7b4badcbc814cfc131508ca08a34b6365a8c79106a579efffb4e9dd1a7856cad39505dc864cc8e8e417b8a4e06e8fd0d15752d44ac2 tdesktop-2.4.3-full.tar.gz +3d1b8e6f870fc780f9ae8bc6a67eb676a5c5f686dc79e84cd6d64cb3cfafb1be626d0cc3960ffc67cecca21568764a0137c7303a89045fa59f91ba4eb5d8caed small-sizes.patch +b6e16c02f7dafa5e00c9b2ce16df18ccd57d380877d009596261f2e1f631cb0f38088a0d8c48d8e321559cacea64ff9e79fe2d7719382d45e27a339888dc2823 remove-glibc.patch" diff --git a/communication/telegram-desktop/remove-glibc.patch b/communication/telegram-desktop/remove-glibc.patch new file mode 100644 index 0000000..505e61a --- /dev/null +++ b/communication/telegram-desktop/remove-glibc.patch @@ -0,0 +1,51 @@ +Upstream: Unsuitable (requires re-work into something that doesn't break libc) +Reason: This is Glibc specific and treating Linux == glibc is harmful + +diff --git a/Telegram/lib_base/base/platform/linux/base_info_linux.cpp b/Telegram/lib_base/base/platform/linux/base_info_linux.cpp +index ea9ab61..bbef601 100644 +--- a/Telegram/lib_base/base/platform/linux/base_info_linux.cpp ++++ b/Telegram/lib_base/base/platform/linux/base_info_linux.cpp +@@ -13,7 +13,6 @@ + #include + #include + #include +-#include + + namespace Platform { + namespace { +@@ -84,8 +74,7 @@ QString SystemVersionPretty() { + return "Linux " + + (list.isEmpty() ? QString() : list[0] + ' ') + + (IsWayland() ? "Wayland " : "X11 ") +- + "glibc " +- + GetGlibCVersion(); ++ + "musl"; + } + + QString SystemCountry() { +@@ -103,10 +92,6 @@ QString SystemLanguage() { + QDate WhenSystemBecomesOutdated() { + if (IsLinux32Bit()) { + return QDate(2020, 9, 1); +- } else if (const auto version = GetGlibCVersion(); !version.isEmpty()) { +- if (QVersionNumber::fromString(version) < QVersionNumber(2, 23)) { +- return QDate(2020, 9, 1); // Older than Ubuntu 16.04. +- } + } + return QDate(); + } +@@ -129,14 +114,6 @@ QString AutoUpdateKey() { + } + } + +-QString GetGlibCVersion() { +- static const auto result = [&] { +- const auto version = QString::fromLatin1(gnu_get_libc_version()); +- return QVersionNumber::fromString(version).isNull() ? QString() : version; +- }(); +- return result; +-} +- + bool IsWayland() { + return QGuiApplication::platformName().startsWith("wayland", Qt::CaseInsensitive); + } diff --git a/communication/telegram-desktop/small-sizes.patch b/communication/telegram-desktop/small-sizes.patch new file mode 100644 index 0000000..4847399 --- /dev/null +++ b/communication/telegram-desktop/small-sizes.patch @@ -0,0 +1,48 @@ +From 675b5d645221bae9d9ad2cc7dd62d30a3b0f95c3 Mon Sep 17 00:00:00 2001 +From: Julian Sparber +Date: Thu, 14 Nov 2019 17:36:33 +0100 +Subject: [PATCH] Make it work on small sizes + +--- + Telegram/SourceFiles/settings/settings_main.cpp | 2 +- + Telegram/SourceFiles/window/window.style | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Telegram/SourceFiles/settings/settings_main.cpp b/Telegram/SourceFiles/settings/settings_main.cpp +index 18552902b..c2d8e7a4d 100644 +--- a/Telegram/SourceFiles/settings/settings_main.cpp ++++ b/Telegram/SourceFiles/settings/settings_main.cpp +@@ -100,7 +100,7 @@ void SetupSections( + } + + bool HasInterfaceScale() { +- return true; ++ return false; + } + + void SetupInterfaceScale( +diff --git a/Telegram/SourceFiles/window/window.style b/Telegram/SourceFiles/window/window.style +index b3cd3ae83..29bf8bc3c 100644 +--- a/Telegram/SourceFiles/window/window.style ++++ b/Telegram/SourceFiles/window/window.style +@@ -10,7 +10,7 @@ using "basic.style"; + using "ui/widgets/widgets.style"; + using "history/history.style"; + +-windowMinWidth: 380px; ++windowMinWidth: 360px; + windowMinHeight: 480px; + windowDefaultWidth: 800px; + windowDefaultHeight: 600px; +@@ -19,7 +19,7 @@ windowShadowShift: 1px; + + columnMinimalWidthLeft: 260px; + columnMaximalWidthLeft: 540px; +-columnMinimalWidthMain: 380px; ++columnMinimalWidthMain: 360px; + columnDesiredWidthMain: 512px; + columnMinimalWidthThird: 292px; + columnMaximalWidthThird: 392px; +-- +2.24.1 + diff --git a/downloaders/youtube-dlc/APKBUILD b/downloaders/youtube-dlc/APKBUILD new file mode 100644 index 0000000..f7d5240 --- /dev/null +++ b/downloaders/youtube-dlc/APKBUILD @@ -0,0 +1,41 @@ +# Contributor: Peter Bui +# Contributor: Sören Tempel +# Contributor: Timo Teräs +# Contributor: Alex Denes +# Maintainer: Alex Denes +pkgname=youtube-dlc +pkgver=2020.10.09 +pkgrel=0 +pkgdesc="Command-line program to download videos from YouTube" +url="https://youtube-dl.org/" +arch="noarch" +license="Unlicense" +depends="python3 py3-setuptools" +checkdepends="py3-flake8 py3-nose" +subpackages="$pkgname-doc + $pkgname-bash-completion + $pkgname-fish-completion" +source="$pkgname-$pkgver.tar.gz::https://github.com/blackjack4494/youtube-dlc/archive/$pkgver.tar.gz" +builddir="$srcdir/$pkgname-$pkgver" + +prepare() { + default_prepare + sed -i \ + -e 's|etc/bash_completion.d|share/bash-completion/completions|' \ + -e 's|etc/fish/completions|share/fish/completions|' \ + "$builddir"/setup.py +} + +build() { + python3 setup.py build +} + +check() { + PYTHON=/usr/bin/python3 make offlinetest +} + +package() { + python3 setup.py install --prefix=/usr --root="$pkgdir" +} + +sha512sums="5d8df9e8b95bec63351c998dcd3ac61562b02a570d0b2aa03f7244354c8db1c9d0ab1c089df4cc621908d213f2bdd8933879b76a822bcdb5396c6db65c25c71e youtube-dlc-2020.10.09.tar.gz" diff --git a/games/multimc/01-patch-jar-path.patch b/games/multimc/01-patch-jar-path.patch new file mode 100644 index 0000000..ff22f2d --- /dev/null +++ b/games/multimc/01-patch-jar-path.patch @@ -0,0 +1,11 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -216,7 +216,7 @@ + set(LIBRARY_DEST_DIR ${MultiMC_LIBRARY_DEST_DIR}) + + MESSAGE(STATUS "Compiling for linux system with ${MultiMC_SHARE_DEST_DIR} and MULTIMC_LINUX_DATADIR") ++ SET(MultiMC_APP_BINARY_DEFS "-DMULTIMC_JARS_LOCATION=/usr/${JARS_DEST_DIR}" "-DMULTIMC_LINUX_DATADIR") +- SET(MultiMC_APP_BINARY_DEFS "-DMULTIMC_JARS_LOCATION=${CMAKE_INSTALL_PREFIX}/${JARS_DEST_DIR}" "-DMULTIMC_LINUX_DATADIR") + + # install as bundle with no dependencies included + set(INSTALL_BUNDLE "nodeps") diff --git a/games/multimc/APKBUILD b/games/multimc/APKBUILD new file mode 100644 index 0000000..e7e1bf3 --- /dev/null +++ b/games/multimc/APKBUILD @@ -0,0 +1,57 @@ +# Contributor: Alex Denes +# Maintainer: Alex Denes +pkgname=multimc +pkgver=0.6.11 +pkgrel=0 +pkgdesc="A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once." +url="https://github.com/MultiMC/MultiMC5" +arch="x86 x86_64" # Officially supported +license="MIT AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-or-later AND BSD-3-Clause-Clear AND OFL-1.0-RFN AND GPL-2.0 WITH Classpath-exception-2.0 AND Apache-2.0" +depends="qt5-qtbase qt5-qtx11extras qt5-qtsvg openjdk8-jre" +makedepends=" + cmake + qt5-qtbase-dev + qt5-qtx11extras-dev + zlib-dev + openjdk8 +" +_libnbtpluscommit="dc72a20b7efd304d12af2025223fad07b4b78464" +_quazipcommit="3691d57d3af13f49b2be2b62accddefee3c26b9c" +source=" + $pkgname-$pkgver.zip::https://github.com/MultiMC/MultiMC5/archive/$pkgver.zip + libnbtplus-$_libnbtpluscommit.zip::https://github.com/MultiMC/libnbtplusplus/archive/$_libnbtpluscommit.zip + quazip-$_quazipcommit.zip::https://github.com/MultiMC/quazip/archive/$_quazipcommit.zip + 01-patch-jar-path.patch +" +builddir="$srcdir/MultiMC5-$pkgver" + +build() { + export JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk + mv ../libnbtplusplus-"$_libnbtpluscommit"/* libraries/libnbtplusplus + mv ../quazip-"$_quazipcommit"/* libraries/quazip + if [ "$CBUILD" != "$CHOST" ]; then + CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux" + fi + cmake -B build \ + -DCMAKE_INSTALL_PREFIX="$pkgdir"/usr \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DBUILD_SHARED_LIBS=True \ + -DCMAKE_BUILD_TYPE=None \ + -DMultiMC_LAYOUT=lin-system \ + ${CMAKE_CROSSOPTS} . + make -C build +} + +check() { + make test -C build +} + +package() { + install -D application/resources/multimc/scalable/multimc.svg "$pkgdir"/usr/share/pixmaps/multimc.svg + install -D application/package/linux/multimc.desktop "$pkgdir"/usr/share/applications/multimc.desktop + make install -C build +} +sha512sums="4f9d54233dd6559f6ff786d35a0cb409761d50ec5bbb239b058f103b8a540c0cd5095d1324e8f42a7f011faecd6d658aff28faecb959201f73d9183fa69303b0 multimc-0.6.11.zip +225f18b7cd7b56fbc9914b3e7db652ff98d8af44879cc82ad3ad511ee95d0d05b2b9efd572dea33bcbd8638d0dd80c8bf80c965a3580bc2de2b08cb6db783fd1 libnbtplus-dc72a20b7efd304d12af2025223fad07b4b78464.zip +a00c120fd0e8ad5d72ab261170bc84dc6f2a0eb656af1645ba5aa9087d13d45e623c08cc578afc6f30e6d701524653da0ab619a095e0414949fb2e1fcbcd1413 quazip-3691d57d3af13f49b2be2b62accddefee3c26b9c.zip +50fd5ad070d332e046aed9fbbd61ce3727b473a73ea66238befa9c0faf481a737fb969391f93375a6e9f5a35c9165e54e20db72e298a15277996df9d2950200e 01-patch-jar-path.patch" diff --git a/media/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch b/media/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch new file mode 100644 index 0000000..9cc6fdf --- /dev/null +++ b/media/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch @@ -0,0 +1,55 @@ +From ab11be0becb90542f10d5713659b559842c53af2 Mon Sep 17 00:00:00 2001 +From: Natanael Copa +Date: Tue, 29 Mar 2016 15:15:17 +0200 +Subject: [PATCH] libavutil: clean up unused FF_SYMVER macro + +There is nothing using it since commit d63443b9 (lavc: drop the +av_fast_{re,m}alloc compatibility wrappers). + +Signed-off-by: Natanael Copa +--- + libavutil/internal.h | 28 ---------------------------- + 1 file changed, 28 deletions(-) + +diff --git a/libavutil/internal.h b/libavutil/internal.h +index 61784b5..69d63d5 100644 +--- a/libavutil/internal.h ++++ b/libavutil/internal.h +@@ -187,34 +187,6 @@ + #endif + + /** +- * Define a function with only the non-default version specified. +- * +- * On systems with ELF shared libraries, all symbols exported from +- * FFmpeg libraries are tagged with the name and major version of the +- * library to which they belong. If a function is moved from one +- * library to another, a wrapper must be retained in the original +- * location to preserve binary compatibility. +- * +- * Functions defined with this macro will never be used to resolve +- * symbols by the build-time linker. +- * +- * @param type return type of function +- * @param name name of function +- * @param args argument list of function +- * @param ver version tag to assign function +- */ +-#if HAVE_SYMVER_ASM_LABEL +-# define FF_SYMVER(type, name, args, ver) \ +- type ff_##name args __asm__ (EXTERN_PREFIX #name "@" ver); \ +- type ff_##name args +-#elif HAVE_SYMVER_GNU_ASM +-# define FF_SYMVER(type, name, args, ver) \ +- __asm__ (".symver ff_" #name "," EXTERN_PREFIX #name "@" ver); \ +- type ff_##name args; \ +- type ff_##name args +-#endif +- +-/** + * Return NULL if a threading library has not been enabled. + * Used to disable threading functions in AVCodec definitions + * when not needed. +-- +2.7.4 + diff --git a/media/ffmpeg/3e098cca6e51db0f19928c12d0348deaa17137b3.patch b/media/ffmpeg/3e098cca6e51db0f19928c12d0348deaa17137b3.patch new file mode 100644 index 0000000..86f5588 --- /dev/null +++ b/media/ffmpeg/3e098cca6e51db0f19928c12d0348deaa17137b3.patch @@ -0,0 +1,83 @@ +Upstream: Yes, https://github.com/FFmpeg/FFmpeg/commit/3e098cca6e51db0f19928c12d0348deaa17137b3 +From 3e098cca6e51db0f19928c12d0348deaa17137b3 Mon Sep 17 00:00:00 2001 +From: Lynne +Date: Tue, 7 Jul 2020 16:01:58 +0100 +Subject: [PATCH] aarch64/yuv2rgb_neon: fix return value + +We return 0 for this particular architecture but should instead be +returning the number of lines. +Fixes users who check the return value matches what they expect. +--- + libswscale/aarch64/swscale_unscaled.c | 31 ++++++++++++--------------- + libswscale/aarch64/yuv2rgb_neon.S | 2 ++ + 2 files changed, 16 insertions(+), 17 deletions(-) + +diff --git a/libswscale/aarch64/swscale_unscaled.c b/libswscale/aarch64/swscale_unscaled.c +index 551daad9e353..c7a2a1037df8 100644 +--- a/libswscale/aarch64/swscale_unscaled.c ++++ b/libswscale/aarch64/swscale_unscaled.c +@@ -42,15 +42,14 @@ static int ifmt##_to_##ofmt##_neon_wrapper(SwsContext *c, const uint8_t *src[], + uint8_t *dst[], int dstStride[]) { \ + const int16_t yuv2rgb_table[] = { YUV_TO_RGB_TABLE }; \ + \ +- ff_##ifmt##_to_##ofmt##_neon(c->srcW, srcSliceH, \ +- dst[0] + srcSliceY * dstStride[0], dstStride[0], \ +- src[0], srcStride[0], \ +- src[1], srcStride[1], \ +- src[2], srcStride[2], \ +- yuv2rgb_table, \ +- c->yuv2rgb_y_offset >> 6, \ +- c->yuv2rgb_y_coeff); \ +- return 0; \ ++ return ff_##ifmt##_to_##ofmt##_neon(c->srcW, srcSliceH, \ ++ dst[0] + srcSliceY * dstStride[0], dstStride[0], \ ++ src[0], srcStride[0], \ ++ src[1], srcStride[1], \ ++ src[2], srcStride[2], \ ++ yuv2rgb_table, \ ++ c->yuv2rgb_y_offset >> 6, \ ++ c->yuv2rgb_y_coeff); \ + } \ + + #define DECLARE_FF_YUVX_TO_ALL_RGBX_FUNCS(yuvx) \ +@@ -76,14 +75,12 @@ static int ifmt##_to_##ofmt##_neon_wrapper(SwsContext *c, const uint8_t *src[], + uint8_t *dst[], int dstStride[]) { \ + const int16_t yuv2rgb_table[] = { YUV_TO_RGB_TABLE }; \ + \ +- ff_##ifmt##_to_##ofmt##_neon(c->srcW, srcSliceH, \ +- dst[0] + srcSliceY * dstStride[0], dstStride[0], \ +- src[0], srcStride[0], src[1], srcStride[1], \ +- yuv2rgb_table, \ +- c->yuv2rgb_y_offset >> 6, \ +- c->yuv2rgb_y_coeff); \ +- \ +- return 0; \ ++ return ff_##ifmt##_to_##ofmt##_neon(c->srcW, srcSliceH, \ ++ dst[0] + srcSliceY * dstStride[0], dstStride[0], \ ++ src[0], srcStride[0], src[1], srcStride[1], \ ++ yuv2rgb_table, \ ++ c->yuv2rgb_y_offset >> 6, \ ++ c->yuv2rgb_y_coeff); \ + } \ + + #define DECLARE_FF_NVX_TO_ALL_RGBX_FUNCS(nvx) \ +diff --git a/libswscale/aarch64/yuv2rgb_neon.S b/libswscale/aarch64/yuv2rgb_neon.S +index b7446aa10511..f4b220fb608e 100644 +--- a/libswscale/aarch64/yuv2rgb_neon.S ++++ b/libswscale/aarch64/yuv2rgb_neon.S +@@ -142,6 +142,7 @@ + .macro declare_func ifmt ofmt + function ff_\ifmt\()_to_\ofmt\()_neon, export=1 + load_args_\ifmt ++ mov w9, w1 + 1: + mov w8, w0 // w8 = width + 2: +@@ -193,6 +194,7 @@ function ff_\ifmt\()_to_\ofmt\()_neon, export=1 + increment_\ifmt + subs w1, w1, #1 // height -= 1 + b.gt 1b ++ mov w0, w9 + ret + endfunc + .endm diff --git a/media/ffmpeg/APKBUILD b/media/ffmpeg/APKBUILD new file mode 100644 index 0000000..ba137cb --- /dev/null +++ b/media/ffmpeg/APKBUILD @@ -0,0 +1,194 @@ +# Contributor: Sergei Lukin +# Contributor: Łukasz Jendrysik +# Contributor: Jakub Skrzypnik +# Contributor: Alex Denes +# Maintainer: Natanael Copa +pkgname=ffmpeg +pkgver=4.3.1 +pkgrel=0 +pkgdesc="Complete and free Internet live audio and video broadcasting solution for Linux/Unix" +url="https://ffmpeg.org/" +arch="all" +license="GPL-2.0-or-later AND LGPL-2.1-or-later" +options="!check" # tests/data/hls-lists.append.m3u8 fails +subpackages="$pkgname-dev $pkgname-doc $pkgname-libs" +makedepends=" + alsa-lib-dev + coreutils + bzip2-dev + gnutls-dev + imlib2-dev + lame-dev + libass-dev + libssh-dev + libtheora-dev + libva-dev + libvdpau-dev + libvorbis-dev + libvpx-dev + libxfixes-dev + opus-dev + perl-dev + pulseaudio-dev + sdl2-dev + v4l-utils-dev + x264-dev + x265-dev + xvidcore-dev + yasm + zlib-dev + dav1d-dev + vidstab-dev + vulkan-loader-dev + " +checkdepends="rsync" +source="https://ffmpeg.org/releases/ffmpeg-$pkgver.tar.xz + 0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch + 3e098cca6e51db0f19928c12d0348deaa17137b3.patch + " + +# secfixes: +# 4.3.1-r0: +# - CVE-2020-14212 +# 4.3-r0: +# - CVE-2020-13904 +# - CVE-2020-12284 +# 4.2.1-r0: +# - CVE-2019-15942 +# 4.2-r0: +# - CVE-2019-17539 +# - CVE-2019-17542 +# 4.1.4-r0: +# - CVE-2019-12730 +# 4.1.3-r0: +# - CVE-2019-9718 +# - CVE-2019-9721 +# - CVE-2019-11338 +# - CVE-2019-11339 +# 4.1.1-r0: +# - CVE-2019-1000016 +# 4.1-r0: +# - CVE-2018-13305 +# - CVE-2018-15822 +# 4.0.2-r0: +# - CVE-2018-13301 +# - CVE-2018-13303 +# - CVE-2018-13304 +# - CVE-2018-1999010 +# - CVE-2018-1999011 +# - CVE-2018-1999012 +# - CVE-2018-1999013 +# - CVE-2018-1999014 +# - CVE-2018-1999015 +# 4.0.1-r0: +# - CVE-2018-12459 +# - CVE-2018-12460 +# 4.0.0-r0: +# - CVE-2018-6912 +# - CVE-2018-7757 +# - CVE-2018-9841 +# 3.4.4-r0: +# - CVE-2018-14395 +# 3.4.3-r0: +# - CVE-2018-7557 +# - CVE-2018-7751 +# - CVE-2018-10001 +# - CVE-2018-12458 +# - CVE-2018-13300 +# - CVE-2018-13302 +# - CVE-2018-14394 +# 3.3.4-r0: +# - CVE-2017-14054 +# - CVE-2017-14055 +# - CVE-2017-14056 +# - CVE-2017-14057 +# - CVE-2017-14058 +# - CVE-2017-14059 +# - CVE-2017-14169 +# - CVE-2017-14170 +# - CVE-2017-14171 +# - CVE-2017-14222 +# - CVE-2017-14223 +# - CVE-2017-14225 + +# add support for AV1 codec for all archies except armhf and armv7 +# as aom is not available on them +_aom=""; + +case "$CARCH" in + x86|x86_64|aarch64|ppc64le|s390x ) + _aom="--enable-libaom"; makedepends="$makedepends aom-dev" ;; +esac + +build() { + local _dbg="--disable-debug" + local _asm="" + [ -n "$DEBUG" ] && _dbg="--enable-debug" + + case "$CARCH" in + x86) _asm="--disable-asm" ;; + mips*) _asm="--disable-asm --disable-inline-asm --disable-mipsdsp --disable-mipsdspr2 --disable-msa --disable-msa2 --disable-mipsfpu --disable-mips64r6 --disable-mips64r2" ;; + esac + + ./configure \ + --prefix=/usr \ + --enable-avresample \ + --enable-avfilter \ + --enable-gnutls \ + --enable-gpl \ + --enable-libass \ + --enable-libmp3lame \ + --enable-libvorbis \ + --enable-libvpx \ + --enable-libxvid \ + --enable-libx264 \ + --enable-libx265 \ + --enable-libtheora \ + --enable-libv4l2 \ + --enable-libdav1d \ + --enable-postproc \ + --enable-pic \ + --enable-pthreads \ + --enable-shared \ + --enable-libxcb \ + --enable-libssh \ + --enable-libpulse \ + --enable-libvidstab \ + --disable-stripping \ + --disable-static \ + --disable-librtmp \ + --enable-vaapi \ + --enable-vdpau \ + --enable-libopus \ + --enable-vulkan \ + $_asm $_aom $_dbg + make + ${CC:-gcc} -o tools/qt-faststart $CFLAGS tools/qt-faststart.c + make doc/ffmpeg.1 doc/ffplay.1 +} + +# https://ffmpeg.org/fate.html +check() { + ./configure \ + --samples=fate-suite/ + make fate-rsync + make fate-list + make fate +} + +package() { + make DESTDIR="$pkgdir" install install-man + install -D -m755 tools/qt-faststart "$pkgdir/usr/bin/qt-faststart" +# strip --strip-debug "$pkgdir"/usr/lib/*.a +} + +libs() { + pkgdesc="Libraries for ffmpeg" + replaces="ffmpeg" + mkdir -p "$subpkgdir"/usr + mv "$pkgdir"/usr/lib "$subpkgdir"/usr +} + +sha512sums="64e1052c45145e27726e43d4fe49c9a92058e55562d34fd3b3adf54d3506e6bd680f016b748828215e1bfc8ce19aa85b6f7e4eb05fafe21479118a4ad528a81f ffmpeg-4.3.1.tar.xz +1047a23eda51b576ac200d5106a1cd318d1d5291643b3a69e025c0a7b6f3dbc9f6eb0e1e6faa231b7e38c8dd4e49a54f7431f87a93664da35825cc2e9e8aedf4 0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch +7151e98829c215619b82e27fdff98b9a0d6a778f499170f3688e111a8bf7b2cc8895f09aa49bcb812ba5b5f06dd0243ebc79c31af246420f7d0869859b4a0241 3e098cca6e51db0f19928c12d0348deaa17137b3.patch" diff --git a/media/gst-plugins-good/APKBUILD b/media/gst-plugins-good/APKBUILD new file mode 100644 index 0000000..59625da --- /dev/null +++ b/media/gst-plugins-good/APKBUILD @@ -0,0 +1,83 @@ +# Contributor: Alex Denes +# Maintainer: Natanael Copa +pkgname=gst-plugins-good +pkgver=1.16.2 +pkgrel=5 +pkgdesc="GStreamer streaming media framework good plug-ins" +url="https://gstreamer.freedesktop.org" +arch="all" +license="GPL-2.0-or-later LGPL-2.0-or-later" +subpackages="$pkgname-lang $pkgname-gtk" +replaces="gst-plugins-good1" +makedepends="cairo-dev flac-dev gdk-pixbuf-dev glib-dev gst-plugins-base-dev + gstreamer-dev gtk+3.0-dev jack-dev lame-dev libavc1394-dev libcaca-dev + libdv-dev libgudev-dev libice-dev libiec61883-dev libjpeg-turbo-dev + libogg-dev libpng-dev libshout-dev libsm-dev libsoup-dev libvpx-dev + libxdamage-dev libxext-dev libxv-dev linux-headers meson mpg123-dev + orc-compiler orc-dev taglib-dev v4l-utils-dev wavpack-dev zlib-dev + pulseaudio-dev" +ldpath="/usr/lib/gstreamer-1.0" +source="https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-$pkgver.tar.xz" +options="!check" # elements/souphttpsrc fails + +case "$CARCH" in + armhf) ;; + *) + makedepends="$makedepends qt5-qtdeclarative-dev qt5-qtx11extras-dev" + subpackages="$subpackages $pkgname-qt" + ;; +esac + +# secfixes: +# 1.10.4-r0: +# - CVE-2017-5840 +# - CVE-2017-5841 +# - CVE-2017-5845 +# - CVE-2016-9634 +# - CVE-2016-9635 +# - CVE-2016-9636 +# - CVE-2016-9808 +# - CVE-2016-10198 +# - CVE-2016-10199 + +build() { + abuild-meson \ + -Dpackage-origin="https://alpinelinux.org" \ + -Dpackage-name="GStreamer good plug-ins (Alpine Linux)" \ + . output + meson compile ${JOBS:+-j ${JOBS}} -C output +} + +check() { + make check +} + +package() { + export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 + DESTDIR="$pkgdir" meson install --no-rebuild -C output +} + +_mv() { + mkdir -p "$subpkgdir"/"$ldpath" + mv "$1" "$subpkgdir"/"$ldpath" +} + +qt() { + pkgdesc="Gstreamer Qt plug-in" + find "$pkgdir" -type f | while read -r i; do + if ldd $i 2>/dev/null | grep -q "libQt"; then + _mv "$i" + fi + done +} + +gtk() { + pkgdesc="Gstreamer gtk-3 plug-in" + find "$pkgdir" -type f | while read -r i; do + if ldd $i 2>/dev/null | grep -q "libgtk-3"; then + _mv "$i" + fi + done +} + +sha512sums="ab0dfd51af3ea345db466618547c35c78b5f08e725096b66074a5a7e0a83ca25ac51d2d915b7a8c07b70f8e4c9fc65d51c1851f147a5a5a71fbca58e1eb5ffd4 gst-plugins-good-1.16.2.tar.xz" diff --git a/media/qt5-qtmultimedia/APKBUILD b/media/qt5-qtmultimedia/APKBUILD new file mode 100644 index 0000000..eff3a5d --- /dev/null +++ b/media/qt5-qtmultimedia/APKBUILD @@ -0,0 +1,41 @@ +# Contributor: Alex Denes +# Maintainer: Bart Ribbers +pkgname=qt5-qtmultimedia +pkgver=5.15.1 +pkgrel=0 +pkgdesc="Qt5 - Multimedia support" +url="https://www.qt.io/developers/" +arch="all !armhf" # armhf blocked by qt5-qtdeclarative +license="LGPL-2.1-only AND LGPL-3.0-only AND GPL-3.0-only AND Qt-GPL-exception-1.0" +makedepends="qt5-qtbase-dev qt5-qtdeclarative-dev libxv-dev pulseaudio-dev + gstreamer-dev gst-plugins-base-dev gst-plugins-bad-dev" +subpackages="$pkgname-dev" +builddir="$srcdir/qtmultimedia-everywhere-src-$pkgver" + +case $pkgver in + *_beta*|*_rc*) _rel=development_releases;; + *) _rel=official_releases;; +esac + +source="https://download.qt.io/$_rel/qt/${pkgver%.*}/$pkgver/submodules/qtmultimedia-everywhere-src-$pkgver.tar.xz" + +build() { + qmake-qt5 + make +} + +check() { + make check +} +package() { + make INSTALL_ROOT="$pkgdir" install + + # Drop QMAKE_PRL_BUILD_DIR because reference the build dir + find "$pkgdir/usr/lib" -type f -name '*.prl' \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \; + + install -d "$pkgdir"/usr/share/licenses + ln -s /usr/share/licenses/qt5-base "$pkgdir"/usr/share/licenses/$pkgname +} + +sha512sums="9c063dc481c91a94ba151fa96166d04a83e1cdcdb66c5fa80c038bd973c87b928c3d90d1c8add7c3ec29c4dc7dceff9e8cf288ce980f95d199f37e90593104d9 qtmultimedia-everywhere-src-5.15.1.tar.xz" diff --git a/misc-tools/mkinitfs/0001-mkinitfs-add-optional-support-for-pigz.patch b/misc-tools/mkinitfs/0001-mkinitfs-add-optional-support-for-pigz.patch new file mode 100644 index 0000000..9f73cf7 --- /dev/null +++ b/misc-tools/mkinitfs/0001-mkinitfs-add-optional-support-for-pigz.patch @@ -0,0 +1,46 @@ +From 59204d36985de5ba2444d5f3e0d50a119287ec51 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?S=C3=B6ren=20Tempel?= +Date: Sat, 25 Jan 2020 12:04:32 +0100 +Subject: [PATCH] mkinitfs: add optional support for pigz + +pigz(1) is a parallel gzip implementation. As such, it significantly +faster than gzip(1). This patch uses pigz(1) instead of gzip(1), +if it is installed, otherwise it just falls back to gzip(1). This is +similar to the current pigz support in abuild. + +Without this patch: + + $ time mkinitfs + ==> initramfs: creating /boot/initramfs-lts + real 0m 38.19s + user 0m 35.47s + sys 0m 0.49s + +With this patch applied and pigz installed: + + ==> initramfs: creating /boot/initramfs-lts + real 0m 13.24s + user 0m 38.30s + sys 0m 0.56s + +This change was discussed on IRC with _ikke_ and mps. +--- + mkinitfs.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mkinitfs.in b/mkinitfs.in +index 9bd95f9..9676fce 100755 +--- a/mkinitfs.in ++++ b/mkinitfs.in +@@ -278,7 +278,7 @@ if [ -z "$list_sources" ] && [ -z "$quiet" ]; then + fi + + case "$initfscomp" in +- gzip) comp="gzip -9" ;; ++ gzip) comp="$(command -v pigz 2>/dev/null || echo gzip) -9" ;; + xz) cmd_exists xz; comp="xz -C crc32 -T 0" ;; + *) echo "Initramfs compression \"$initfscomp\" not supported!"; exit 1 ;; + esac +-- +2.26.2 + diff --git a/misc-tools/mkinitfs/0002-file-embed.patch b/misc-tools/mkinitfs/0002-file-embed.patch new file mode 100644 index 0000000..92f2da7 --- /dev/null +++ b/misc-tools/mkinitfs/0002-file-embed.patch @@ -0,0 +1,28 @@ +diff --git a/mkinitfs.in b/mkinitfs.in +index 9676fce..318c2f9 100755 +--- a/mkinitfs.in ++++ b/mkinitfs.in +@@ -147,6 +147,15 @@ initfs_apk_keys() { + cp "${basedir}etc/apk/keys/"* "$tmpdir"/etc/apk/keys/ + } + ++initfs_custom_files() { ++ for file in "$custom_files"; do ++ if [ -f "$basedir"/$file ]; then ++ mkdir -p "$tmpdir"/${file%/*} ++ cp "$basedir"/$file "$tmpdir"/$file ++ fi ++ done ++} ++ + initfs_cpio() { + if [ -n "$list_sources" ]; then + (cd "$tmpdir" && find . | sort) +@@ -287,6 +296,7 @@ initfs_base \ + && initfs_kmods \ + && initfs_firmware \ + && initfs_apk_keys \ ++ && initfs_custom_files \ + && initfs_cpio + rc=$? + diff --git a/misc-tools/mkinitfs/0003-include-libs.patch b/misc-tools/mkinitfs/0003-include-libs.patch new file mode 100644 index 0000000..7b00141 --- /dev/null +++ b/misc-tools/mkinitfs/0003-include-libs.patch @@ -0,0 +1,7 @@ +diff --git a/features.d/cryptsetup.files b/features.d/cryptsetup.files +index 902ce33..6ab9c19 100644 +--- a/features.d/cryptsetup.files ++++ b/features.d/cryptsetup.files +@@ -1 +1,2 @@ + /sbin/cryptsetup ++/usr/lib/libgcc_s.so.1 diff --git a/misc-tools/mkinitfs/APKBUILD b/misc-tools/mkinitfs/APKBUILD new file mode 100644 index 0000000..02c8110 --- /dev/null +++ b/misc-tools/mkinitfs/APKBUILD @@ -0,0 +1,34 @@ +# Contributor: Alex Denes +# Maintainer: Natanael Copa +pkgname=mkinitfs +pkgver=3.4.5 +_ver=${pkgver%_git*} +pkgrel=3 +pkgdesc="Tool to generate initramfs images for Alpine" +url="https://git.alpinelinux.org/cgit/mkinitfs" +arch="all" +license="GPL-2.0-only" +# currently we do not ship any testsuite +options="!check" +makedepends_host="busybox kmod-dev util-linux-dev cryptsetup-dev linux-headers" +makedepends="$makedepends_host" +depends="busybox>=1.28.2-r1 apk-tools>=2.9.1 lddtree>=1.25 kmod" +subpackages="$pkgname-doc" +install="$pkgname.pre-upgrade $pkgname.post-install $pkgname.post-upgrade" +triggers="$pkgname.trigger=/usr/share/kernel/*" +source="https://dev.alpinelinux.org/archive/mkinitfs/mkinitfs-$_ver.tar.xz + 0001-mkinitfs-add-optional-support-for-pigz.patch + 0002-file-embed.patch + " + +build() { + make VERSION=$pkgver-r$pkgrel +} + +package() { + make install DESTDIR="$pkgdir" +} + +sha512sums="e12f603dd9a51c0afbafeca7b4a061733514c4cf509b1dd61cc37c94e6102e5b3439d7a0379e1e4179aeaff13a382dab985c9737812e52803f038c1b2bb97cf8 mkinitfs-3.4.5.tar.xz +50411c3cddbfc49837d750620c57393dc8dfa7beb91f02816345fd66c8068b12d9aef266e50fd7cdc2b3b5fa81f477cbfaed00a2b264055cfd34b61ceb03e63a 0001-mkinitfs-add-optional-support-for-pigz.patch +83f6b283866da668b407d22e6fb7cceffec265e44daf5099e6cf83258176a9458265376d4dcc5d83f6f00992eceacd0284a8ad10f7651835749a603553d00810 0002-file-embed.patch" diff --git a/misc-tools/mkinitfs/mkinitfs.post-install b/misc-tools/mkinitfs/mkinitfs.post-install new file mode 100644 index 0000000..a2a404b --- /dev/null +++ b/misc-tools/mkinitfs/mkinitfs.post-install @@ -0,0 +1,8 @@ +#!/bin/sh + +# safety. if nlplug-findfs is missing in the initramfs image we may end up +# with an unbootable system. + +if ! grep -q -w /sbin/nlplug-findfs /etc/mkinitfs/features.d/base.files; then + echo "/sbin/nlplug-findfs" >> /etc/mkinitfs/features.d/base.files +fi diff --git a/misc-tools/mkinitfs/mkinitfs.post-upgrade b/misc-tools/mkinitfs/mkinitfs.post-upgrade new file mode 120000 index 0000000..78caf2e --- /dev/null +++ b/misc-tools/mkinitfs/mkinitfs.post-upgrade @@ -0,0 +1 @@ +mkinitfs.post-install \ No newline at end of file diff --git a/misc-tools/mkinitfs/mkinitfs.pre-upgrade b/misc-tools/mkinitfs/mkinitfs.pre-upgrade new file mode 100644 index 0000000..0ece527 --- /dev/null +++ b/misc-tools/mkinitfs/mkinitfs.pre-upgrade @@ -0,0 +1,13 @@ +#!/bin/sh + +mkdir -p /etc/mkinitfs/features.d +for i in files modules; do + for j in /etc/mkinitfs/$i.d/*; do + [ -e "$j" ] || continue + case "$j" in + *.apk-new) continue;; + esac + mv $j /etc/mkinitfs/features.d/${j##*/}.$i + done +done +exit 0 diff --git a/misc-tools/mkinitfs/mkinitfs.trigger b/misc-tools/mkinitfs/mkinitfs.trigger new file mode 100644 index 0000000..a31c28e --- /dev/null +++ b/misc-tools/mkinitfs/mkinitfs.trigger @@ -0,0 +1,33 @@ +#!/bin/sh + +for i in "$@"; do + # get last element in path + flavor=${i##*/} + if ! [ -f "$i"/kernel.release ]; then + # kernel was uninstalled + rm -f $( readlink -f /boot/initramfs-$flavor ) \ + /boot/initramfs-$flavor /boot/vmlinuz-$flavor \ + /boot/$flavor /boot/$flavor.gz /$flavor /$flavor.gz + continue + fi + abi_release=$(cat "$i"/kernel.release) + initfs=initramfs-$flavor + mkinitfs -o /boot/$initfs $abi_release +done + +# extlinux will use path relative partition, so if /boot is on a +# separate partition we want /boot/ resolve to / +if ! [ -e /boot/boot ]; then + ln -sf . /boot/boot 2>/dev/null # silence error in case of FAT +fi + +# cleanup unused initramfs +for i in /boot/initramfs-[0-9]*; do + [ -f $i ] || continue + if ! [ -f /boot/vmlinuz-${i#/boot/initramfs-} ]; then + rm "$i" + fi +done + +sync +exit 0 diff --git a/suckless/dmenu/APKBUILD b/suckless/dmenu/APKBUILD new file mode 100644 index 0000000..12b0f5f --- /dev/null +++ b/suckless/dmenu/APKBUILD @@ -0,0 +1,34 @@ +# Contributor: Eivind Uggedal +# Contributor: Alex Denes +# Maintainer: Alex Denes +pkgname=dmenu +pkgver=5.0 +pkgrel=0 +pkgdesc="Dynamic menu for X" +url="https://tools.suckless.org/dmenu/" +arch="all" +license="MIT" +makedepends="libx11-dev libxinerama-dev libxft-dev" +options="!check" +subpackages="$pkgname-doc" +source="$pkgname-$pkgver.tar.gz::https://git.redxen.eu/caskd/$pkgname/archive/master.tar.gz" +builddir="$srcdir/$pkgname" + +prepare() { + default_prepare + sed -i -e '/CFLAGS/{s/-Os//;s/=/+=/}' \ + -e '/LDFLAGS/{s/=/+=/}' \ + config.mk +} + +build() { + make X11INC=/usr/include/X11 \ + X11LIB=/usr/lib/X11 \ + FREETYPEINC=/usr/include/freetype2 +} + +package() { + make DESTDIR=$pkgdir PREFIX=/usr install +} + +sha512sums="c673147668ca6580dfd4cdf817d67480b32c7b1cbc47340f8d931fd439ac47e94b9c30cd40354b5092fe8c72ca2a3bf9a19988a3436e2d9ae1d764ab302ad208 dmenu-5.0.tar.gz" diff --git a/suckless/dwm/APKBUILD b/suckless/dwm/APKBUILD new file mode 100644 index 0000000..a672a6a --- /dev/null +++ b/suckless/dwm/APKBUILD @@ -0,0 +1,37 @@ +# Contributor: Gaber Ayoubi +# Contributor: Alex Denes +# Maintainer: Alex Denes +pkgname=dwm +pkgver=6.2 +pkgrel=0 +pkgdesc="dwm - dynamic window manager" +url="https://dwm.suckless.org" +arch="all" +options="!check" +license="MIT/X" +depends="dmenu st" +makedepends="libxft-dev libx11-dev libxinerama-dev" +subpackages="$pkgname-doc" +source="$pkgname-$pkgver.tar.gz::https://git.redxen.eu/caskd/$pkgname/archive/desktop.tar.gz" +builddir="$srcdir/$pkgname" + +prepare() { + default_prepare + sed -i -e '/CFLAGS/{s/-Os//;s/=/+=/}' \ + -e '/LDFLAGS/{s/=/+=/}' \ + "$builddir"/config.mk +} + +build() { + make X11INC=/usr/include/X11 \ + X11LIB=/usr/lib/X11 \ + FREETYPEINC=/usr/include/freetype2 \ + -C "$builddir" +} + +package() { + make PREFIX=/usr DESTDIR="$pkgdir" \ + -C "$builddir" install +} + +sha512sums="aa2ae91b894dc0d4242a1fbe2ed385db93acf5c3509019f5b1ddf373484c56907d1d902377cec2fd49326becb7f525de4b89823b8a56fdbca6288122b5c3e54c dwm-6.2.tar.gz" diff --git a/suckless/slock/APKBUILD b/suckless/slock/APKBUILD new file mode 100644 index 0000000..6495e4a --- /dev/null +++ b/suckless/slock/APKBUILD @@ -0,0 +1,32 @@ +# Contributor: Eivind Uggedal +# Contributor: Alex Denes +# Maintainer: Alex Denes +pkgname=slock +pkgver=1.4 +pkgrel=0 +pkgdesc="simple screen locker utility for X" +url="https://tools.suckless.org/slock/" +arch="all" +license="MIT" +makedepends="libx11-dev libxrandr-dev libxext-dev" +options="!check suid" +subpackages="$pkgname-doc" +source="$pkgname-$pkgver.tar.gz::https://git.redxen.eu/caskd/$pkgname/archive/master.tar.gz" +builddir="$srcdir/$pkgname" + +prepare() { + default_prepare + sed -i -e '/CFLAGS/{s/-Os//;s/=/+=/}' \ + -e '/LDFLAGS/{s/=/+=/}' \ + config.mk +} + +build() { + make X11INC=/usr/include/X11 \ + X11LIB=/usr/lib/X11 +} + +package() { + make DESTDIR=$pkgdir PREFIX=/usr install +} +sha512sums="5722b27ba045f5f99309a1efafaa0e475538a0a5a6554e3da89407218faff8b3ad90a7cd5fbf9ded2670fb20ce8770ae2460e81a93df258ab96bad3fb5ed602b slock-1.4.tar.gz" diff --git a/suckless/slstatus/APKBUILD b/suckless/slstatus/APKBUILD new file mode 100644 index 0000000..a20a458 --- /dev/null +++ b/suckless/slstatus/APKBUILD @@ -0,0 +1,33 @@ +# Contributor: Eivind Uggedal +# Contributor: Alex Denes +# Maintainer: Alex Denes +pkgname=slstatus +pkgver=0 +pkgrel=0 +pkgdesc="slstatus is a suckless status monitor for window managers that use WM_NAME (e.g. dwm) or stdin to fill the status bar" +url="https://tools.suckless.org/slstatus/" +arch="all" +license="MIT" +makedepends="libx11-dev" +options="!check" +subpackages="$pkgname-doc" +source="$pkgname-$pkgver.tar.gz::https://git.redxen.eu/caskd/$pkgname/archive/master.tar.gz" +builddir="$srcdir/$pkgname" + +prepare() { + default_prepare + sed -i -e '/CFLAGS/{s/-Os//;s/=/+=/}' \ + -e '/LDFLAGS/{s/=/+=/}' \ + config.mk +} + +build() { + make X11INC=/usr/include/X11 \ + X11LIB=/usr/lib/X11 +} + +package() { + make DESTDIR=$pkgdir PREFIX=/usr install +} + +sha512sums="5f08b98c2ef4ffaf2b0733f88a9e11628d0d1a08ac42915365d196e753640ea85bad76caacd563190ab22385b51440122dd9ddf529b88ac0e735cc83595a9011 slstatus-0.tar.gz" diff --git a/suckless/st/APKBUILD b/suckless/st/APKBUILD new file mode 100644 index 0000000..b25e52e --- /dev/null +++ b/suckless/st/APKBUILD @@ -0,0 +1,42 @@ +# Contributor: Sören Tempel +# Contributor: Alex Denes +# Maintainer: Alex Denes +pkgname=st +pkgver=0.8.4 +pkgrel=0 +pkgdesc="Simple terminal emulator for X" +url="https://st.suckless.org" +arch="all" +license="MIT" +depends="ncurses-terminfo-base" +makedepends="fontconfig-dev freetype-dev libx11-dev libxext-dev libxft-dev libxrender-dev" +subpackages="$pkgname-doc $pkgname-dbg" +source="$pkgname-$pkgver.tar.gz::https://git.redxen.eu/caskd/$pkgname/archive/master.tar.gz" +builddir="$srcdir/$pkgname" + +prepare() { + default_prepare + sed -i '/tic/d' Makefile +} + +build() { + make +} + +package() { + make install PREFIX=/usr DESTDIR="$pkgdir" + mkdir -p "$pkgdir"/usr/share/applications + + cat > "$pkgdir"/usr/share/applications/st.desktop <<-EOF + [Desktop Entry] + Name=st + Comment=st is a simple virtual terminal emulator for X which sucks less + Exec=st + Terminal=false + Type=Application + Icon=gnome-xterm + Categories=System;TerminalEmulator; + EOF +} + +sha512sums="9aa4cbd39e1f25e73aad08f75c6ec1cee31e5e97266436fc42b9bd36a86f350c70843846feb76e49bb11fb1100c348cce7cdb534123f8e728ce330d1fb0bc429 st-0.8.4.tar.gz" diff --git a/suckless/svkbd/APKBUILD b/suckless/svkbd/APKBUILD new file mode 100644 index 0000000..6be9e97 --- /dev/null +++ b/suckless/svkbd/APKBUILD @@ -0,0 +1,25 @@ +# Contributor: Alex Denes +# Maintainer: Alex Denes +pkgname=svkbd +pkgver=0.2.1 +pkgrel=0 +_branch=master +pkgdesc="Simple virtual keyboard for X, ships with an international mobile-optimised layout" +url="https://tools.suckless.org/x/svkbd/" +arch="all" +license="MIT" +subpackages="$pkgname-doc" +options="!check" # has no tests +makedepends="fontconfig-dev freetype-dev libx11-dev libxtst-dev libxft-dev libxinerama-dev" +source="$pkgname.tar.gz::https://git.redxen.eu/pinephone-mods/$pkgname/archive/$_branch.tar.gz" +builddir="$srcdir/$pkgname" + +build() { + make +} + +package() { + make PREFIX=/usr DESTDIR="$pkgdir" install +} + +sha512sums="176dac99974a368d729916d26a2bd607c166fcee1304e18aab51d34d00cb9eb177111d80255bed362037fff0286cd3624d6fd5e95b306cb020c3907be84121d3 svkbd.tar.gz"