diff options
Diffstat (limited to 'user')
33 files changed, 1918 insertions, 34 deletions
diff --git a/user/dmenu/APKBUILD b/user/dmenu/APKBUILD new file mode 100644 index 000000000..39a27bc5a --- /dev/null +++ b/user/dmenu/APKBUILD @@ -0,0 +1,36 @@ +# Contributor: Eivind Uggedal <eivind@uggedal.com> +# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net> +# Maintainer: Dan Theisen <djt@hxx.in> +pkgname=dmenu +pkgver=4.8 +pkgrel=0 +pkgdesc="Dynamic menu for X" +url="https://tools.suckless.org/dmenu/" +arch="all" +license="MIT OR X11" +depends="" +makedepends="libx11-dev libxinerama-dev libxft-dev" +options="!check" # This package has no testsuite +subpackages="$pkgname-doc" +source="https://dl.suckless.org/tools/$pkgname-$pkgver.tar.gz" + +prepare() { + default_prepare + sed -i -e '/CFLAGS/{s/-Os//;s/=/+=/}' \ + -e '/LDFLAGS/{s/-s//;s/=/+=/}' \ + "$builddir"/config.mk +} + +build() { + make X11INC=/usr/include/X11 \ + X11LIB=/usr/lib/X11 \ + FREETYPEINC=/usr/include/freetype2 \ + -C "$builddir" +} + +package() { + make DESTDIR=$pkgdir PREFIX=/usr \ + -C "$builddir" install +} + +sha512sums="fa2700018cfb912a21f867ef3ca771a58a25c2cb8e1fb37acef046bb15d8d8b92dcc5bfce486befae0f143495d0283910988e181a9eb143be3bb1b5be9738d77 dmenu-4.8.tar.gz" diff --git a/user/fuse3/APKBUILD b/user/fuse3/APKBUILD index dd03d34e2..dc049071d 100644 --- a/user/fuse3/APKBUILD +++ b/user/fuse3/APKBUILD @@ -12,7 +12,7 @@ license="GPL-2.0-only AND LGPL-2.1-only AND BSD-2-Clause" depends="fuse-common" makedepends="linux-headers meson eudev-dev python3 py3-six py3-pluggy py3-attrs py3-py" -#checkdepends="py3-pytest debianutils-which" +#checkdepends="py3-pytest cmd:which" subpackages="$pkgname-dev $pkgname-doc $_pkgname-common:common:noarch $_pkgname-openrc:openrc:noarch" source="https://github.com/libfuse/libfuse/releases/download/fuse-$pkgver/fuse-$pkgver.tar.xz diff --git a/user/keepassxc/APKBUILD b/user/keepassxc/APKBUILD new file mode 100644 index 000000000..14d9235fc --- /dev/null +++ b/user/keepassxc/APKBUILD @@ -0,0 +1,40 @@ +# Contributor: Max Rees <maxcrees@me.com> +# Maintainer: Max Rees <maxcrees@me.com> +pkgname=keepassxc +pkgver=2.3.4 +pkgrel=0 +pkgdesc="A community revival of the KeePassX password manager" +url="https://keepassxc.org" +arch="all" +license="(GPL-2.0-only OR GPL-3.0-only) AND MIT AND BSD-4-Clause AND ISC AND (LGPL-2.1-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) AND CC0-1.0 AND Public-Domain AND LGPL-2.1+ AND LGPL-3.0+" +depends="hicolor-icon-theme" +makedepends="cmake xz qt5-qtbase-dev qt5-qttools-dev libgcrypt-dev + zlib-dev libxi-dev libxtst-dev qt5-qtx11extras-dev argon2-dev" +subpackages="$pkgname-doc" +source="https://github.com/keepassxreboot/$pkgname/releases/download/$pkgver/$pkgname-$pkgver-src.tar.xz" + +prepare() { + cd "$builddir" + mkdir build + default_prepare +} + +build() { + cd "$builddir/build" + cmake -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=/usr/lib \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo .. + make +} + +check() { + cd "$builddir/build" + make test +} + +package() { + cd "$builddir/build" + make DESTDIR="$pkgdir" install +} + +sha512sums="edca22ef9d7c553d21d8ea6115a5635265176acc56fdf055f1961a3e65046de49ed5b67eb68ecf4f925226fb5bca140d5d473a5082301168f6a8bb7979f562a8 keepassxc-2.3.4-src.tar.xz" diff --git a/user/libsoup/APKBUILD b/user/libsoup/APKBUILD index 3abfaec66..bc3c76754 100644 --- a/user/libsoup/APKBUILD +++ b/user/libsoup/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com> # Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com> pkgname=libsoup -pkgver=2.64.0 +pkgver=2.64.1 pkgrel=0 pkgdesc="GObject-based HTTP library" url="https://wiki.gnome.org/Projects/libsoup" @@ -12,7 +12,6 @@ makedepends="glib-dev libxml2-dev sqlite-dev libpsl-dev intltool vala-dev gobject-introspection-dev glib-networking" subpackages="$pkgname-dev $pkgname-doc" source="https://download.gnome.org/sources/libsoup/2.64/libsoup-$pkgver.tar.xz" -sha512sums="4ff3d16898bad5481d6abc4a7d2cdccc559e3d2a675128ccb61fba09a39c5c1736aeb7bda77dfd73f97a8660d11e25e88901fb6b957ab47b1e9e8a0fd6740424 libsoup-2.64.0.tar.xz" build() { cd "$builddir" @@ -36,3 +35,4 @@ package() { make DESTDIR="$pkgdir" install } +sha512sums="13d16457a443294020621df34205c570d25a6ff048ab68633cc504d70a8a1281a38dddb54110fd35a059bd69aebc3fd49b5ab0fc42abf4f4a19746a25050119d libsoup-2.64.1.tar.xz" diff --git a/user/llvm6/APKBUILD b/user/llvm6/APKBUILD index f3bc9acc7..5f7b04fad 100644 --- a/user/llvm6/APKBUILD +++ b/user/llvm6/APKBUILD @@ -12,7 +12,7 @@ arch="all" options="!checkroot !dbg" url="https://llvm.org/" license="NCSA" -depends_dev="$pkgname=$pkgver-r$pkgrel" +depends_dev="$pkgname=$pkgver-r$pkgrel libexecinfo-dev libxml2-dev" makedepends="binutils-dev chrpath cmake file libexecinfo-dev libffi-dev libxml2-dev python3 zlib-dev" subpackages="$pkgname-static $pkgname-libs $pkgname-dev @@ -24,6 +24,9 @@ source="http://llvm.org/releases/$pkgver/llvm-$pkgver.src.tar.xz disable-dlclose-test.patch musl-ppc64-elfv2.patch secure-plt.patch + more-secure-plt.patch + even-more-secure-plt.patch + ppc32-calling-convention.patch " builddir="$srcdir/$_pkgname-$pkgver.src" @@ -245,5 +248,8 @@ f84cd65d7042e89826ba6e8d48c4c302bf4980da369d7f19a55f217e51c00ca8ed178d453df3a3ce 6d1a716e5aa24e6b9a3acf4cc11e2504b1b01abf574074e9e5617b991de87d5e4e687eb18e85e73d5e632568afe2fc357771c4c96f9e136502071991496fb78c cmake-fix-libLLVM-name.patch 49c47f125014b60d0ea7870f981a2c1708ad705793f89287ed846ee881a837a4dc0170bf467e03f2ef56177473128945287749ac80dc2d13cfabcf8b929ba58a disable-FileSystemTest.CreateDir-perms-assert.patch caeec8e4dbd92f5f74940780b69075f3879a267a8623822cbdc193fd14706eb089071e3a5a20d60cc2eca59e4c5b2a61d29827a2f3362ee7c5f74f11d9ace200 disable-dlclose-test.patch -bde743960003a2a39868af9f665d86fadb0a7b1e7eb51c16ebbd74ce4c5220bbc400b1d5211c02fc2643863f49ee961e9a18dffa0eb813a0e1723613396512ab musl-ppc64-elfv2.patch -35d289641fa4d200b5a3f62f1d51da600a734641356b0dc6c54a3080dd89aec3b031e36af8b53be49c35346c1cbcce00268de7ec9b4f552bfd7bf84d3504d1c4 secure-plt.patch" +e5ddbc4b6c4928e79846dc3c022eb7928aaa8fed40515c78f5f03b8ab8264f34f1eb8aa8bfc0f436450932f4917e54ad261603032092ea271d9590f11a37cf1e musl-ppc64-elfv2.patch +35d289641fa4d200b5a3f62f1d51da600a734641356b0dc6c54a3080dd89aec3b031e36af8b53be49c35346c1cbcce00268de7ec9b4f552bfd7bf84d3504d1c4 secure-plt.patch +3d4a0a478bf800ea262c577451e22a1dbd5a4258226e49c66a697559263c8aa4fc0fff642a3c80ac3dfbb3efd6d9c0dbeb41dae1250fc7946de821cfef1ce1f0 more-secure-plt.patch +deb71762721ebc73bfdf23143b582f40c70eddcef3e337ed14499e8e336bee2906292d38d64fe98fa633430c1bcb66cf6a2e067258c8fbe6e931f99f6d10a6f7 even-more-secure-plt.patch +c3f596a1578a07ce0ee40c4e2576fe05ca6ca0c1b4f94b1f74c55cb09603afe7c846db9294fe28d83ca48633086bad422218e6d06e0d92173143fb298e06fb38 ppc32-calling-convention.patch" diff --git a/user/llvm6/even-more-secure-plt.patch b/user/llvm6/even-more-secure-plt.patch new file mode 100644 index 000000000..112e111b8 --- /dev/null +++ b/user/llvm6/even-more-secure-plt.patch @@ -0,0 +1,101 @@ +Index: lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp +=================================================================== +--- a/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp ++++ b/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp +@@ -442,13 +442,22 @@ + // On PPC64, VariantKind is VK_None, but on PPC32, it's VK_PLT, and it must + // come at the _end_ of the expression. + const MCOperand &Op = MI->getOperand(OpNo); +- const MCSymbolRefExpr &refExp = cast<MCSymbolRefExpr>(*Op.getExpr()); +- O << refExp.getSymbol().getName(); ++ const MCSymbolRefExpr *RefExp = nullptr; ++ const MCConstantExpr *ConstExp = nullptr; ++ if (const MCBinaryExpr *BinExpr = dyn_cast<MCBinaryExpr>(Op.getExpr())) { ++ RefExp = cast<MCSymbolRefExpr>(BinExpr->getLHS()); ++ ConstExp = cast<MCConstantExpr>(BinExpr->getRHS()); ++ } else ++ RefExp = cast<MCSymbolRefExpr>(Op.getExpr()); ++ ++ O << RefExp->getSymbol().getName(); + O << '('; + printOperand(MI, OpNo+1, O); + O << ')'; +- if (refExp.getKind() != MCSymbolRefExpr::VK_None) +- O << '@' << MCSymbolRefExpr::getVariantKindName(refExp.getKind()); ++ if (RefExp->getKind() != MCSymbolRefExpr::VK_None) ++ O << '@' << MCSymbolRefExpr::getVariantKindName(RefExp->getKind()); ++ if (ConstExp != nullptr) ++ O << '+' << ConstExp->getValue(); + } + + /// showRegistersWithPercentPrefix - Check if this register name should be +Index: lib/Target/PowerPC/PPCAsmPrinter.cpp +=================================================================== +--- a/lib/Target/PowerPC/PPCAsmPrinter.cpp ++++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp +@@ -487,8 +487,14 @@ + if (!Subtarget->isPPC64() && !Subtarget->isDarwin() && + isPositionIndependent()) + Kind = MCSymbolRefExpr::VK_PLT; +- const MCSymbolRefExpr *TlsRef = ++ const MCExpr *TlsRef = + MCSymbolRefExpr::create(TlsGetAddr, Kind, OutContext); ++ ++ // Add 32768 offset to the symbol so we follow up the latest GOT/PLT ABI. ++ if (Kind == MCSymbolRefExpr::VK_PLT && Subtarget->isSecurePlt()) ++ TlsRef = MCBinaryExpr::createAdd(TlsRef, ++ MCConstantExpr::create(32768, OutContext), ++ OutContext); + const MachineOperand &MO = MI->getOperand(2); + const GlobalValue *GValue = MO.getGlobal(); + MCSymbol *MOSymbol = getSymbol(GValue); +Index: lib/Target/PowerPC/PPCISelDAGToDAG.cpp +=================================================================== +--- a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp ++++ b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp +@@ -4054,7 +4054,20 @@ + if (trySETCC(N)) + return; + break; +- ++ // These nodes will be transformed into GETtlsADDR32 node, which ++ // later becomes BL_TLS __tls_get_addr(sym at tlsgd)@PLT ++ case PPCISD::ADDI_TLSLD_L_ADDR: ++ case PPCISD::ADDI_TLSGD_L_ADDR: { ++ const Module *Mod = MF->getFunction().getParent(); ++ if (PPCLowering->getPointerTy(CurDAG->getDataLayout()) != MVT::i32 || ++ !PPCSubTarget->isSecurePlt() || !PPCSubTarget->isTargetELF() || ++ Mod->getPICLevel() == PICLevel::SmallPIC) ++ break; ++ // Attach global base pointer on GETtlsADDR32 node in order to ++ // generate secure plt code for TLS symbols. ++ getGlobalBaseReg(); ++ } ++ break; + case PPCISD::CALL: { + const Module *M = MF->getFunction().getParent(); + +Index: test/CodeGen/PowerPC/ppc32-secure-plt-tls.ll +=================================================================== +--- a/test/CodeGen/PowerPC/ppc32-secure-plt-tls.ll ++++ b/test/CodeGen/PowerPC/ppc32-secure-plt-tls.ll +@@ -0,0 +1,18 @@ ++; RUN: llc < %s -mtriple=powerpc-unknown-linux-gnu -mattr=+secure-plt -relocation-model=pic | FileCheck -check-prefix=SECURE-PLT-TLS %s ++ ++@a = thread_local local_unnamed_addr global i32 6, align 4 ++define i32 @main() local_unnamed_addr #0 { ++entry: ++ %0 = load i32, i32* @a, align 4 ++ ret i32 %0 ++} ++ ++ ++!llvm.module.flags = !{!0} ++!0 = !{i32 7, !"PIC Level", i32 2} ++ ++; SECURE-PLT-TLS: mflr 30 ++; SECURE-PLT-TLS-NEXT: addis 30, 30, .LTOC-.L0$pb@ha ++; SECURE-PLT-TLS-NEXT: addi 30, 30, .LTOC-.L0$pb@l ++; SECURE-PLT-TLS-NEXT: bl .L{{.*}} ++; SECURE-PLT-TLS: bl __tls_get_addr(a@tlsgd)@PLT+32768 +\ No newline at end of file diff --git a/user/llvm6/more-secure-plt.patch b/user/llvm6/more-secure-plt.patch new file mode 100644 index 000000000..1cc08a9a8 --- /dev/null +++ b/user/llvm6/more-secure-plt.patch @@ -0,0 +1,38 @@ +diff --git a/lib/Target/PowerPC/PPCSubtarget.cpp b/lib/Target/PowerPC/PPCSubtarget.cpp +index c0cbfd779cb..5d7a021c3e2 100644 +--- a/lib/Target/PowerPC/PPCSubtarget.cpp ++++ b/lib/Target/PowerPC/PPCSubtarget.cpp +@@ -106,6 +106,7 @@ + HasFloat128 = false; + IsISA3_0 = false; + UseLongCalls = false; ++ SecurePlt = false; + + HasPOPCNTD = POPCNTD_Unavailable; + } +@@ -136,6 +137,10 @@ + if (isDarwin()) + HasLazyResolverStubs = true; + ++ // Set up musl-specific properties. ++ if (TargetTriple.getEnvironment() == Triple::Musl) ++ SecurePlt = true; ++ + // QPX requires a 32-byte aligned stack. Note that we need to do this if + // we're compiling for a BG/Q system regardless of whether or not QPX + // is enabled because external functions will assume this alignment. +diff --git a/lib/Target/PowerPC/PPCTargetMachine.cpp b/lib/Target/PowerPC/PPCTargetMachine.cpp +index c583fba8cab..6a9eedf89c5 100644 +--- a/lib/Target/PowerPC/PPCTargetMachine.cpp ++++ b/lib/Target/PowerPC/PPCTargetMachine.cpp +@@ -222,6 +222,10 @@ static Reloc::Model getEffectiveRelocModel(const Triple &TT, + if (TT.getArch() == Triple::ppc64 || TT.getArch() == Triple::ppc64le) + return Reloc::PIC_; + ++ // musl needs SecurePlt, which depends on PIC. ++ if (TT.getEnvironment() == Triple::Musl) ++ return Reloc::PIC_; ++ + // 32-bit is static by default. + return Reloc::Static; + } diff --git a/user/llvm6/musl-ppc64-elfv2.patch b/user/llvm6/musl-ppc64-elfv2.patch index 6fa65526b..016be5dad 100644 --- a/user/llvm6/musl-ppc64-elfv2.patch +++ b/user/llvm6/musl-ppc64-elfv2.patch @@ -1,13 +1,43 @@ ---- llvm-6.0.1.src/lib/Target/PowerPC/PPCTargetMachine.cpp.orig 2018-09-13 03:51:11.900000000 +0000 -+++ llvm-6.0.1.src/lib/Target/PowerPC/PPCTargetMachine.cpp 2018-09-13 03:56:10.740000000 +0000 -@@ -191,6 +191,10 @@ - if (TT.isMacOSX()) - return PPCTargetMachine::PPC_ABI_UNKNOWN; - -+ // musl uses ELFv2 ABI on both endians. -+ if (TT.getEnvironment() == Triple::Musl) -+ return PPCTargetMachine::PPC_ABI_ELFv2; -+ - switch (TT.getArch()) { +From 750d323a6060ad92c3d247f85d6555041f55b4a5 Mon Sep 17 00:00:00 2001 +From: "A. Wilcox" <AWilcox@Wilcox-Tech.com> +Date: Thu, 4 Oct 2018 15:26:59 -0500 +Subject: [PATCH] Add support for powerpc64-*-linux-musl targets + +This patch ensures that 64-bit PowerPC musl targets use ELFv2 ABI on both +endians. It additionally adds a test that big endian PPC64 uses ELFv2 on +musl. +--- + lib/Target/PowerPC/PPCTargetMachine.cpp | 4 ++++ + test/CodeGen/PowerPC/ppc64-elf-abi.ll | 1 + + 2 files changed, 5 insertions(+) + +diff --git a/lib/Target/PowerPC/PPCTargetMachine.cpp b/lib/Target/PowerPC/PPCTargetMachine.cpp +index 34410393ef6..c583fba8cab 100644 +--- a/lib/Target/PowerPC/PPCTargetMachine.cpp ++++ b/lib/Target/PowerPC/PPCTargetMachine.cpp +@@ -199,6 +199,10 @@ static PPCTargetMachine::PPCABI computeTargetABI(const Triple &TT, case Triple::ppc64le: return PPCTargetMachine::PPC_ABI_ELFv2; + case Triple::ppc64: ++ // musl uses ELFv2 ABI on both endians. ++ if (TT.getEnvironment() == Triple::Musl) ++ return PPCTargetMachine::PPC_ABI_ELFv2; ++ + return PPCTargetMachine::PPC_ABI_ELFv1; + default: + return PPCTargetMachine::PPC_ABI_UNKNOWN; +diff --git a/test/CodeGen/PowerPC/ppc64-elf-abi.ll b/test/CodeGen/PowerPC/ppc64-elf-abi.ll +index 1e17930304b..aa594b37b47 100644 +--- a/test/CodeGen/PowerPC/ppc64-elf-abi.ll ++++ b/test/CodeGen/PowerPC/ppc64-elf-abi.ll +@@ -1,6 +1,7 @@ + ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-ELFv1 + ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -target-abi elfv1 < %s | FileCheck %s -check-prefix=CHECK-ELFv1 + ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -target-abi elfv2 < %s | FileCheck %s -check-prefix=CHECK-ELFv2 ++; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-musl < %s | FileCheck %s -check-prefix=CHECK-ELFv2 + ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-ELFv2 + ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -target-abi elfv1 < %s | FileCheck %s -check-prefix=CHECK-ELFv1 + ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -target-abi elfv2 < %s | FileCheck %s -check-prefix=CHECK-ELFv2 +-- +2.18.0 + diff --git a/user/llvm6/ppc32-calling-convention.patch b/user/llvm6/ppc32-calling-convention.patch new file mode 100644 index 000000000..2e6d66427 --- /dev/null +++ b/user/llvm6/ppc32-calling-convention.patch @@ -0,0 +1,69 @@ +Index: trunk/lib/Target/PowerPC/PPCISelLowering.cpp +=================================================================== +--- trunk/lib/Target/PowerPC/PPCISelLowering.cpp ++++ trunk/lib/Target/PowerPC/PPCISelLowering.cpp +@@ -3511,9 +3511,14 @@ + // Argument stored in memory. + assert(VA.isMemLoc()); + ++ // Get the extended size of the argument type in stack + unsigned ArgSize = VA.getLocVT().getStoreSize(); +- int FI = MFI.CreateFixedObject(ArgSize, VA.getLocMemOffset(), +- isImmutable); ++ // Get the actual size of the argument type ++ unsigned ObjSize = VA.getValVT().getStoreSize(); ++ unsigned ArgOffset = VA.getLocMemOffset(); ++ // Stack objects in PPC32 are right justified. ++ ArgOffset += ArgSize - ObjSize; ++ int FI = MFI.CreateFixedObject(ArgSize, ArgOffset, isImmutable); + + // Create load nodes to retrieve arguments from the stack. + SDValue FIN = DAG.getFrameIndex(FI, PtrVT); +@@ -5468,10 +5473,15 @@ + Arg = PtrOff; + } + +- if (VA.isRegLoc()) { +- if (Arg.getValueType() == MVT::i1) +- Arg = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i32, Arg); ++ // When useCRBits() is true, there can be i1 arguments. ++ // It is because getRegisterType(MVT::i1) => MVT::i1, ++ // and for other integer types getRegisterType() => MVT::i32. ++ // Extend i1 and ensure callee will get i32. ++ if (Arg.getValueType() == MVT::i1) ++ Arg = DAG.getNode(Flags.isSExt() ? ISD::SIGN_EXTEND : ISD::ZERO_EXTEND, ++ dl, MVT::i32, Arg); + ++ if (VA.isRegLoc()) { + seenFloatArg |= VA.getLocVT().isFloatingPoint(); + // Put argument in a physical register. + RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg)); +Index: trunk/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll +=================================================================== +--- trunk/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll ++++ trunk/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll +@@ -0,0 +1,24 @@ ++; RUN: llc -verify-machineinstrs < %s -mcpu=ppc32 -mattr=+crbits | FileCheck %s ++target triple = "powerpc-unknown-linux-gnu" ++ ++define void @check_callee( ++ i32, i32, i32, i32, ++ i32, i32, i32, i32, ++ i1 zeroext %s1 ++) { ++ call void @check_caller( ++ i32 9, i32 9, i32 9, i32 9, ++ i32 9, i32 9, i32 9, i32 9, ++ i1 zeroext %s1) ++ ret void ++} ++ ++; CHECK-LABEL: @check_callee ++; CHECK: lbz {{[0-9]+}}, 27(1) ++; CHECK: stw {{[0-9]+}}, 8(1) ++ ++declare void @check_caller( ++ i32, i32, i32, i32, ++ i32, i32, i32, i32, ++ i1 zeroext ++) diff --git a/user/lsof/APKBUILD b/user/lsof/APKBUILD index 32fff3e16..a7e0c4768 100644 --- a/user/lsof/APKBUILD +++ b/user/lsof/APKBUILD @@ -8,7 +8,7 @@ url="https://people.freebsd.org/~abe" arch="all" license="zlib-acknowledgement" subpackages="$pkgname-doc" -makedepends="linux-headers debianutils-which utmps-dev" +makedepends="linux-headers cmd:which utmps-dev" source="ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/${pkgname}_${pkgver}.tar.gz utmps.patch test-enable-suite.patch diff --git a/user/mosh/APKBUILD b/user/mosh/APKBUILD new file mode 100644 index 000000000..323891e69 --- /dev/null +++ b/user/mosh/APKBUILD @@ -0,0 +1,78 @@ +# Contributor: Francesco Colista <fcolista@alpinelinux.org> +# Maintainer: Dan Theisen <djt@hxx.in> +pkgname=mosh +pkgver=1.3.2 +pkgrel=0 +pkgdesc="Mobile shell surviving disconnects with local echo and line editing" +url="https://mosh.org" +arch="all" +license="GPL-3.0+" +depends="$pkgname-client $pkgname-server" +checkdepends="tmux perl" +makedepends="ncurses-dev zlib-dev openssl-dev perl-dev perl-io-tty + protobuf-dev automake autoconf libtool gzip" +subpackages="$pkgname-doc $pkgname-client $pkgname-server + $pkgname-bash-completion:bashcomp:noarch" +source="https://mosh.org/$pkgname-$pkgver.tar.gz + fix-ppc64le-build-with-musl.patch" + +prepare() { + default_prepare + # Test unicode-later-combining is failing. Ideally we want to fix it. + sed -i '/unicode-later-combining.test/d' "$builddir"/src/tests/Makefile.am + cd "$builddir" + ./autogen.sh +} + +build() { + cd "$builddir" + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --enable-examples + make +} + +check() { + cd "$builddir" + make check VERBOSE=1 V=1 +} + +package() { + cd "$builddir" + make DESTDIR="$pkgdir" install +} + +bashcomp() { + depends="" + pkgdesc="Bash completions for $pkgname" + install_if="$pkgname=$pkgver-r$pkgrel bash-completion" + + install -Dm644 "$builddir"/conf/bash-completion/completions/mosh \ + "$subpkgdir"/usr/share/bash-completion/completions/$pkgname +} + +server() { + replaces="mosh" + pkgdesc="Mosh server" + depends="" + mkdir -p "$subpkgdir"/usr/bin + mv "$pkgdir"/usr/bin/mosh-server \ + "$subpkgdir"/usr/bin/ +} + +client() { + replaces="mosh" + pkgdesc="Mosh client" + depends="openssh-client perl-io-tty" + mkdir -p "$subpkgdir"/usr/bin + mv "$pkgdir"/usr/bin/mosh-client \ + "$subpkgdir"/usr/bin/ +} + +sha512sums="f400e8fe7ba2ab7362311fc12a00ec69587505f901988aeee500fc68d38a388218500a3f602111c883ff23a9d43572114fcf0a8bf505df203691e5b597615769 mosh-1.3.2.tar.gz +a276dde98a2dab63ad9c9c05468c55983a95f482878c5694713810b561eae1ea5618efc72431a17ee5b5014b12ee9709c6a8cbf582620294e7888cc837cd073c fix-ppc64le-build-with-musl.patch" diff --git a/user/mosh/fix-ppc64le-build-with-musl.patch b/user/mosh/fix-ppc64le-build-with-musl.patch new file mode 100644 index 000000000..8d918a963 --- /dev/null +++ b/user/mosh/fix-ppc64le-build-with-musl.patch @@ -0,0 +1,53 @@ +From: Roberto Oliveira <robertoguimaraes8@gmail.com> +Date: Tue, 4 Apr 2017 16:46:50 +0000 +Subject: [PATCH] Fix build with musl on ppc64le + +mosh was breaking when building in ppc64le using musl, because ioctl() is defined +as ioctl(int, int) in musl and mosh is using TIOCSWINSZ macro as parameter. This was +triggering a gcc warning and make the build fail. + +This patch does an explicit integer conversion in TIOCSWINSZ, as no bits get +lost. + +--- a/src/frontend/mosh-server.cc ++++ b/src/frontend/mosh-server.cc +@@ -714,7 +714,12 @@ + } + window_size.ws_col = res->width; + window_size.ws_row = res->height; +- if ( ioctl( host_fd, TIOCSWINSZ, &window_size ) < 0 ) { ++ ++ #if defined(__powerpc64__) && (!defined(__GLIBC__) && !defined(__UCLIBC__)) ++ if ( ioctl( host_fd, (int) TIOCSWINSZ, &window_size ) < 0 ) { ++ #else ++ if ( ioctl( host_fd, TIOCSWINSZ, &window_size ) < 0 ) { ++ #endif + perror( "ioctl TIOCSWINSZ" ); + network.start_shutdown(); + } +--- a/src/examples/termemu.cc ++++ a/src/examples/termemu.cc +@@ -226,7 +226,11 @@ + } + + /* tell child process */ ++ #if defined(__powerpc64__) && (!defined(__GLIBC__) && !defined(__UCLIBC__)) ++ if ( ioctl( fd, (int) TIOCSWINSZ, &window_size ) < 0 ) { ++ #else + if ( ioctl( fd, TIOCSWINSZ, &window_size ) < 0 ) { ++ #endif + perror( "ioctl TIOCSWINSZ" ); + return; + } +@@ -306,7 +310,11 @@ + complete.act( &r ); + + /* tell child process */ ++ #if defined(__powerpc64__) && (!defined(__GLIBC__) && !defined(__UCLIBC__)) ++ if ( ioctl( fd, (int) TIOCSWINSZ, &window_size ) < 0 ) { ++ #else + if ( ioctl( fd, TIOCSWINSZ, &window_size ) < 0 ) { ++ #endif + perror( "ioctl TIOCSWINSZ" ); + return; + } diff --git a/user/mpv/APKBUILD b/user/mpv/APKBUILD index d0a4e37b1..a579ecc5a 100644 --- a/user/mpv/APKBUILD +++ b/user/mpv/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com> # Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com> pkgname=mpv -pkgver=0.29.0 +pkgver=0.29.1 pkgrel=0 pkgdesc="An improved fork of mplayer" url="https://mpv.io" @@ -21,7 +21,6 @@ makedepends="python3 " subpackages="$pkgname-doc" source="mpv-$pkgver.tar.gz::https://github.com/mpv-player/mpv/archive/v$pkgver.tar.gz" -sha512sums="77204218bd217ae1da4812b09e0509965a3ef102d3de5cd4360f007ccf3779e4cbde5cfd6adae9629ea39062bd365e847429bdf7f9a1ddebd0a67d267492b221 mpv-0.29.0.tar.gz" build() { cd "$builddir" @@ -46,3 +45,4 @@ package() { python3 ./waf install --destdir="$pkgdir" } +sha512sums="ec57c9ceaaf2915ee237dd5a1c5ea5d22725d8611e28a9b998e5bb0d8ab5bdf3631d0267fc7b54da31cb1eaa145ef35841e68846bd41c3b9e1024902e92fd086 mpv-0.29.1.tar.gz" diff --git a/user/nextcloud-client/APKBUILD b/user/nextcloud-client/APKBUILD new file mode 100644 index 000000000..c842eaa18 --- /dev/null +++ b/user/nextcloud-client/APKBUILD @@ -0,0 +1,45 @@ +# Contributor: Leonardo Arena <rnalrd@alpinelinux.org> +# Maintainer: Max Rees <maxcrees@me.com> +pkgname=nextcloud-client +pkgver=2.5.0_beta2 +_ver="${pkgver%_beta2}-beta2" +pkgrel=0 +pkgdesc="Nextcloud desktop client" +url="https://github.com/nextcloud/desktop" +arch="all" +license="GPL-2.0+ AND LGPL-2.1+ AND Public-Domain AND MIT AND (Custom:Digia-Qt OR LGPL-2.1-only WITH Qt-LGPL-exception-1.1) AND (Custom:Digia-Qt OR LGPL-2.1-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only)" +depends="" +makedepends="cmake qt5-qttools-dev qtkeychain-dev zlib-dev + openssl-dev sqlite-dev qt5-qtsvg-dev" +subpackages="$pkgname-dev" +source="$pkgname-$pkgver.tar.gz::https://github.com/nextcloud/desktop/archive/v$_ver.tar.gz + no-webengine.patch + openssl.patch" +builddir="$srcdir/desktop-$_ver" + +build() { + cd "$builddir" + cmake \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_SYSCONFDIR="/etc/$pkgname" \ + -DNO_SHIBBOLETH=1 \ + -DWITH_CRASHREPORTER=bool:OFF \ + -DUNIT_TESTING=bool:ON + make +} + +check() { + cd "$builddir" + make test +} + +package() { + cd "$builddir" + make DESTDIR="$pkgdir" install +} + +sha512sums="ed5ec8c0fd79d3f7f843ef1aefb9b94088b85dacca442388bc9a42e1ddbf1ee90482595135ffaffc85e40d223406964c903949ca1c2161fa0f6a2d6770a77cea nextcloud-client-2.5.0_beta2.tar.gz +6bd83fdee02eabe7ae29fb1a677f62d4a416ec553a0f8c66b7544cafb9201dd7d8b04dc6fb21f447f6c1ece13b06f5d3cba57ac71b211e166607ef15350b3e57 no-webengine.patch +e323a1074f8ac96667a420f076fdfc988e2fd97cdacd05d83ac54b467b567f5adbf635e7c4fb0414af0012b4016cc4c13441cb35ed3976bc970e514e81b65fd4 openssl.patch" diff --git a/user/nextcloud-client/no-webengine.patch b/user/nextcloud-client/no-webengine.patch new file mode 100644 index 000000000..d5beed35c --- /dev/null +++ b/user/nextcloud-client/no-webengine.patch @@ -0,0 +1,1017 @@ +--- desktop-2.5.0-beta1/src/libsync/networkjobs.cpp 2018-08-02 16:32:56.000000000 -0400 ++++ desktop-2.5.0-beta1/src/libsync/networkjobs.cpp 2018-08-15 19:10:43.340595365 -0400 +@@ -922,7 +922,7 @@ + + // WebViewFlow > OAuth > Shib > Basic + if (_account->serverVersionInt() >= Account::makeServerVersion(12, 0, 0)) { +- result = WebViewFlow; ++ result = Basic; + } + + qCInfo(lcDetermineAuthTypeJob) << "Auth type for" << _account->davUrl() << "is" << result; +--- desktop-2.5.0-beta1/src/gui/creds/webflowcredentialsdialog.cpp 2018-08-02 16:32:56.000000000 -0400 ++++ /dev/null 2018-08-15 19:12:03.420596798 -0400 +@@ -1,49 +0,0 @@ +-#include "webflowcredentialsdialog.h" +- +-#include <QVBoxLayout> +-#include <QLabel> +- +-#include "wizard/webview.h" +- +-namespace OCC { +- +-WebFlowCredentialsDialog::WebFlowCredentialsDialog(QWidget *parent) +- : QDialog(parent) +-{ +- _layout = new QVBoxLayout(this); +- +- //QString msg = tr("You have been logged out of %1 as user %2, please login again") +- // .arg(_account->displayName(), _user); +- _infoLabel = new QLabel(); +- _layout->addWidget(_infoLabel); +- +- _webView = new WebView(); +- _layout->addWidget(_webView); +- +- _errorLabel = new QLabel(); +- _errorLabel->hide(); +- _layout->addWidget(_errorLabel); +- +- setLayout(_layout); +- +- connect(_webView, &WebView::urlCatched, this, &WebFlowCredentialsDialog::urlCatched); +-} +- +-void WebFlowCredentialsDialog::setUrl(const QUrl &url) { +- _webView->setUrl(url); +-} +- +-void WebFlowCredentialsDialog::setInfo(const QString &msg) { +- _infoLabel->setText(msg); +-} +- +-void WebFlowCredentialsDialog::setError(const QString &error) { +- if (error.isEmpty()) { +- _errorLabel->hide(); +- } else { +- _errorLabel->setText(error); +- _errorLabel->show(); +- } +-} +- +-} +--- desktop-2.5.0-beta1/src/gui/creds/webflowcredentials.cpp 2018-08-02 16:32:56.000000000 -0400 ++++ /dev/null 2018-08-15 19:12:03.420596798 -0400 +@@ -1,258 +0,0 @@ +-#include "webflowcredentials.h" +- +-#include "creds/httpcredentials.h" +- +-#include <QAuthenticator> +-#include <QNetworkAccessManager> +-#include <QNetworkReply> +-#include <QPointer> +-#include <QTimer> +-#include <keychain.h> +-#include <QDialog> +-#include <QVBoxLayout> +-#include <QLabel> +- +-#include "accessmanager.h" +-#include "account.h" +-#include "theme.h" +-#include "wizard/webview.h" +-#include "webflowcredentialsdialog.h" +- +-using namespace QKeychain; +- +-namespace OCC { +- +-Q_LOGGING_CATEGORY(lcWebFlowCredentials, "sync.credentials.webflow", QtInfoMsg) +- +-WebFlowCredentials::WebFlowCredentials() +- : _ready(false), +- _credentialsValid(false) +-{ +- +-} +- +-WebFlowCredentials::WebFlowCredentials(const QString &user, const QString &password, const QSslCertificate &certificate, const QSslKey &key) +- : _user(user) +- , _password(password) +- , _clientSslKey(key) +- , _clientSslCertificate(certificate) +- , _ready(true) +- , _credentialsValid(true) +-{ +- +-} +- +-QString WebFlowCredentials::authType() const { +- return QString::fromLatin1("webflow"); +-} +- +-QString WebFlowCredentials::user() const { +- return _user; +-} +- +-QString WebFlowCredentials::password() const { +- return _password; +-} +- +-QNetworkAccessManager *WebFlowCredentials::createQNAM() const { +- qCInfo(lcWebFlowCredentials()) << "Get QNAM"; +- AccessManager *qnam = new AccessManager(); +- +- connect(qnam, &AccessManager::authenticationRequired, this, &WebFlowCredentials::slotAuthentication); +- connect(qnam, &AccessManager::finished, this, &WebFlowCredentials::slotFinished); +- +- return qnam; +-} +- +-bool WebFlowCredentials::ready() const { +- return _ready; +-} +- +-void WebFlowCredentials::fetchFromKeychain() { +- _wasFetched = true; +- +- // Make sure we get the user fromt he config file +- fetchUser(); +- +- if (ready()) { +- emit fetched(); +- } else { +- qCInfo(lcWebFlowCredentials()) << "Fetch from keyhchain!"; +- fetchFromKeychainHelper(); +- } +-} +- +-void WebFlowCredentials::askFromUser() { +- _askDialog = new WebFlowCredentialsDialog(); +- +- QUrl url = _account->url(); +- QString path = url.path() + "/index.php/login/flow"; +- url.setPath(path); +- _askDialog->setUrl(url); +- +- QString msg = tr("You have been logged out of %1 as user %2. Please login again") +- .arg(_account->displayName(), _user); +- _askDialog->setInfo(msg); +- +- _askDialog->show(); +- +- connect(_askDialog, &WebFlowCredentialsDialog::urlCatched, this, &WebFlowCredentials::slotAskFromUserCredentialsProvided); +- +- qCWarning(lcWebFlowCredentials()) << "User needs to reauth!"; +-} +- +-void WebFlowCredentials::slotAskFromUserCredentialsProvided(const QString &user, const QString &pass, const QString &host) { +- Q_UNUSED(host); +- +- if (_user != user) { +- qCInfo(lcWebFlowCredentials()) << "Authed with the wrong user!"; +- +- QString msg = tr("Please login with the user: %1") +- .arg(_user); +- _askDialog->setError(msg); +- +- QUrl url = _account->url(); +- QString path = url.path() + "/index.php/login/flow"; +- url.setPath(path); +- _askDialog->setUrl(url); +- +- return; +- } +- +- qCInfo(lcWebFlowCredentials()) << "Obtained a new password"; +- +- _password = pass; +- _ready = true; +- _credentialsValid = true; +- persist(); +- emit asked(); +- +- _askDialog->close(); +- delete _askDialog; +- _askDialog = NULL; +-} +- +- +-bool WebFlowCredentials::stillValid(QNetworkReply *reply) { +- qCWarning(lcWebFlowCredentials()) << "Still valid?"; +- qCWarning(lcWebFlowCredentials()) << reply->error(); +- qCWarning(lcWebFlowCredentials()) << reply->errorString(); +- return (reply->error() != QNetworkReply::AuthenticationRequiredError); +-} +- +-void WebFlowCredentials::persist() { +- if (_user.isEmpty()) { +- // We don't even have a user nothing to see here move along +- return; +- } +- +- _account->setCredentialSetting("user", _user); +- _account->wantsAccountSaved(_account); +- +- //TODO: Add ssl cert and key storing +- WritePasswordJob *job = new WritePasswordJob(Theme::instance()->appName()); +- job->setInsecureFallback(false); +- job->setKey(keychainKey(_account->url().toString(), _user, _account->id())); +- job->setTextData(_password); +- job->start(); +-} +- +-void WebFlowCredentials::invalidateToken() { +- // clear the session cookie. +- _account->clearCookieJar(); +- +- // let QNAM forget about the password +- // This needs to be done later in the event loop because we might be called (directly or +- // indirectly) from QNetworkAccessManagerPrivate::authenticationRequired, which itself +- // is a called from a BlockingQueuedConnection from the Qt HTTP thread. And clearing the +- // cache needs to synchronize again with the HTTP thread. +- QTimer::singleShot(0, _account, &Account::clearQNAMCache); +-} +- +-void WebFlowCredentials::forgetSensitiveData(){ +- _password = QString(); +- _ready = false; +- +- fetchUser(); +- +- const QString kck = keychainKey(_account->url().toString(), _user, _account->id()); +- if (kck.isEmpty()) { +- qCWarning(lcWebFlowCredentials()) << "InvalidateToken: User is empty, bailing out!"; +- return; +- } +- +- DeletePasswordJob *job = new DeletePasswordJob(Theme::instance()->appName()); +- job->setInsecureFallback(false); +- job->setKey(kck); +- job->start(); +- +- invalidateToken(); +-} +- +-void WebFlowCredentials::setAccount(Account *account) { +- AbstractCredentials::setAccount(account); +- if (_user.isEmpty()) { +- fetchUser(); +- } +-} +- +-QString WebFlowCredentials::fetchUser() { +- _user = _account->credentialSetting("user").toString(); +- return _user; +-} +- +-void WebFlowCredentials::slotAuthentication(QNetworkReply *reply, QAuthenticator *authenticator) { +- Q_UNUSED(reply); +- +- if (!_ready) { +- return; +- } +- +- if (_credentialsValid == false) { +- return; +- } +- +- qCWarning(lcWebFlowCredentials()) << "Requires authentication"; +- +- authenticator->setUser(_user); +- authenticator->setPassword(_password); +- _credentialsValid = false; +-} +- +-void WebFlowCredentials::slotFinished(QNetworkReply *reply) { +- qCInfo(lcWebFlowCredentials()) << "request finished"; +- +- if (reply->error() == QNetworkReply::NoError) { +- _credentialsValid = true; +- } +-} +- +-void WebFlowCredentials::fetchFromKeychainHelper() { +- const QString kck = keychainKey( +- _account->url().toString(), +- _user, +- _account->id()); +- +- ReadPasswordJob *job = new ReadPasswordJob(Theme::instance()->appName()); +- job->setInsecureFallback(false); +- job->setKey(kck); +- connect(job, &Job::finished, this, &WebFlowCredentials::slotReadPasswordJobDone); +- job->start(); +-} +- +-void WebFlowCredentials::slotReadPasswordJobDone(Job *incomingJob) { +- QKeychain::ReadPasswordJob *job = static_cast<ReadPasswordJob *>(incomingJob); +- QKeychain::Error error = job->error(); +- +- if (error == QKeychain::NoError) { +- _password = job->textData(); +- _ready = true; +- _credentialsValid = true; +- } else { +- _ready = false; +- } +- +- emit fetched(); +-} +- +-} +--- desktop-2.5.0-beta1/src/gui/creds/webflowcredentialsdialog.h 2018-08-02 16:32:56.000000000 -0400 ++++ /dev/null 2018-08-15 19:12:03.420596798 -0400 +@@ -1,36 +0,0 @@ +-#ifndef WEBFLOWCREDENTIALSDIALOG_H +-#define WEBFLOWCREDENTIALSDIALOG_H +- +-#include <QDialog> +-#include <QUrl> +- +-class QLabel; +-class QVBoxLayout; +- +-namespace OCC { +- +-class WebView; +- +-class WebFlowCredentialsDialog : public QDialog +-{ +- Q_OBJECT +-public: +- WebFlowCredentialsDialog(QWidget *parent = 0); +- +- void setUrl(const QUrl &url); +- void setInfo(const QString &msg); +- void setError(const QString &error); +- +-signals: +- void urlCatched(const QString user, const QString pass, const QString host); +- +-private: +- WebView *_webView; +- QLabel *_errorLabel; +- QLabel *_infoLabel; +- QVBoxLayout *_layout; +-}; +- +-} +- +-#endif // WEBFLOWCREDENTIALSDIALOG_H +--- desktop-2.5.0-beta1/src/gui/creds/credentialsfactory.cpp 2018-08-02 16:32:56.000000000 -0400 ++++ desktop-2.5.0-beta1/src/gui/creds/credentialsfactory.cpp 2018-08-15 19:29:27.240615471 -0400 +@@ -21,7 +21,6 @@ + #ifndef NO_SHIBBOLETH + #include "creds/shibbolethcredentials.h" + #endif +-#include "creds/webflowcredentials.h" + + namespace OCC { + +@@ -40,8 +39,6 @@ + } else if (type == "shibboleth") { + return new ShibbolethCredentials; + #endif +- } else if (type == "webflow") { +- return new WebFlowCredentials; + } else { + qCWarning(lcGuiCredentials, "Unknown credentials type: %s", qPrintable(type)); + return new DummyCredentials; +--- desktop-2.5.0-beta1/src/gui/creds/webflowcredentials.h 2018-08-02 16:32:56.000000000 -0400 ++++ /dev/null 2018-08-15 19:12:03.420596798 -0400 +@@ -1,79 +0,0 @@ +-#ifndef WEBFLOWCREDENTIALS_H +-#define WEBFLOWCREDENTIALS_H +- +-#include <QSslCertificate> +-#include <QSslKey> +- +-#include "creds/abstractcredentials.h" +- +-class QDialog; +-class QLabel; +-class QNetworkReply; +-class QAuthenticator; +- +-namespace QKeychain { +- class Job; +-} +- +-namespace OCC { +- +-class WebFlowCredentialsDialog; +- +-class WebFlowCredentials : public AbstractCredentials +-{ +- Q_OBJECT +-public: +- explicit WebFlowCredentials(); +- WebFlowCredentials(const QString &user, const QString &password, const QSslCertificate &certificate = QSslCertificate(), const QSslKey &key = QSslKey()); +- +- QString authType() const override; +- QString user() const override; +- QString password() const; +- QNetworkAccessManager *createQNAM() const override; +- +- bool ready() const override; +- +- void fetchFromKeychain() override; +- void askFromUser() override; +- +- bool stillValid(QNetworkReply *reply) override; +- void persist() override; +- void invalidateToken() override; +- void forgetSensitiveData() override; +- +- // To fetch the user name as early as possible +- void setAccount(Account *account) override; +- +-private slots: +- void slotAuthentication(QNetworkReply *reply, QAuthenticator *authenticator); +- void slotFinished(QNetworkReply *reply); +- +- void slotReadPasswordJobDone(QKeychain::Job *incomingJob); +- void slotAskFromUserCredentialsProvided(const QString &user, const QString &pass, const QString &host); +- +-private: +- /** Reads data from keychain locations +- * +- * Goes through +- * slotReadClientCertPEMJobDone to +- * slotReadClientCertPEMJobDone to +- * slotReadJobDone +- */ +- void fetchFromKeychainHelper(); +- +- QString fetchUser(); +- +- QString _user; +- QString _password; +- QSslKey _clientSslKey; +- QSslCertificate _clientSslCertificate; +- +- bool _ready; +- bool _credentialsValid; +- +- WebFlowCredentialsDialog *_askDialog; +-}; +- +-} +- +-#endif // WEBFLOWCREDENTIALS_H +--- desktop-2.5.0-beta1/src/gui/CMakeLists.txt 2018-08-02 16:32:56.000000000 -0400 ++++ desktop-2.5.0-beta1/src/gui/CMakeLists.txt 2018-08-15 19:28:53.640614870 -0400 +@@ -41,7 +41,6 @@ + wizard/owncloudoauthcredspage.ui + wizard/owncloudsetupnocredspage.ui + wizard/owncloudwizardresultpage.ui +- wizard/webview.ui + ) + + set(client_SRCS +@@ -104,8 +103,6 @@ + creds/credentialsfactory.cpp + creds/httpcredentialsgui.cpp + creds/oauth.cpp +- creds/webflowcredentials.cpp +- creds/webflowcredentialsdialog.cpp + wizard/postfixlineedit.cpp + wizard/abstractcredswizardpage.cpp + wizard/owncloudadvancedsetuppage.cpp +@@ -116,8 +113,6 @@ + wizard/owncloudwizardcommon.cpp + wizard/owncloudwizard.cpp + wizard/owncloudwizardresultpage.cpp +- wizard/webviewpage.cpp +- wizard/webview.cpp + ) + + IF(NOT NO_SHIBBOLETH) +@@ -290,7 +290,7 @@ + endif() + + add_library(updater STATIC ${updater_SRCS}) +-target_link_libraries(updater ${synclib_NAME} Qt5::Widgets Qt5::Network Qt5::Xml Qt5::WebEngineWidgets) ++target_link_libraries(updater ${synclib_NAME} Qt5::Widgets Qt5::Network Qt5::Xml) + target_include_directories(updater PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) + + set_target_properties( ${APPLICATION_EXECUTABLE} PROPERTIES +--- desktop-2.5.0-beta2/src/gui/wizard/webview.cpp 2018-08-24 12:54:42.000000000 +0000 ++++ /dev/null 2018-10-03 06:10:44.230254545 +0000 +@@ -1,162 +0,0 @@ +-#include "webview.h" +- +-#include <QWebEnginePage> +-#include <QWebEngineProfile> +-#include <QWebEngineUrlRequestInterceptor> +-#include <QWebEngineUrlRequestJob> +-#include <QWebEngineUrlSchemeHandler> +-#include <QWebEngineView> +-#include <QDesktopServices> +-#include <QProgressBar> +-#include <QLoggingCategory> +-#include <QLocale> +- +-#include "common/utility.h" +- +-namespace OCC { +- +-Q_LOGGING_CATEGORY(lcWizardWebiew, "gui.wizard.webview", QtInfoMsg) +- +- +-class WebViewPageUrlRequestInterceptor : public QWebEngineUrlRequestInterceptor +-{ +- Q_OBJECT +-public: +- WebViewPageUrlRequestInterceptor(QObject *parent = 0); +- void interceptRequest(QWebEngineUrlRequestInfo &info); +-}; +- +-class WebViewPageUrlSchemeHandler : public QWebEngineUrlSchemeHandler +-{ +- Q_OBJECT +-public: +- WebViewPageUrlSchemeHandler(QObject *parent = 0); +- void requestStarted(QWebEngineUrlRequestJob *request); +- +-Q_SIGNALS: +- void urlCatched(QString user, QString pass, QString host); +-}; +- +-class WebEnginePage : public QWebEnginePage { +-public: +- WebEnginePage(QWebEngineProfile *profile, QObject* parent = nullptr); +- QWebEnginePage * createWindow(QWebEnginePage::WebWindowType type) override; +-}; +- +-// We need a separate class here, since we cannot simply return the same WebEnginePage object +-// this leads to a strage segfault somewhere deep inside of the QWebEngine code +-class ExternalWebEnginePage : public QWebEnginePage { +-public: +- ExternalWebEnginePage(QWebEngineProfile *profile, QObject* parent = nullptr); +- bool acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame) override; +-}; +- +-WebView::WebView(QWidget *parent) +- : QWidget(parent), +- _ui() +-{ +- _ui.setupUi(this); +- +- _webview = new QWebEngineView(this); +- _profile = new QWebEngineProfile(this); +- _page = new WebEnginePage(_profile); +- _interceptor = new WebViewPageUrlRequestInterceptor(this); +- _schemeHandler = new WebViewPageUrlSchemeHandler(this); +- +- const QString userAgent(Utility::userAgentString()); +- _profile->setHttpUserAgent(userAgent); +- QWebEngineProfile::defaultProfile()->setHttpUserAgent(userAgent); +- _profile->setRequestInterceptor(_interceptor); +- _profile->installUrlSchemeHandler("nc", _schemeHandler); +- +- /* +- * Set a proper accept langauge to the language of the client +- * code from: http://code.qt.io/cgit/qt/qtbase.git/tree/src/network/access/qhttpnetworkconnection.cpp +- */ +- { +- QString systemLocale = QLocale::system().name().replace(QChar::fromLatin1('_'),QChar::fromLatin1('-')); +- QString acceptLanguage; +- if (systemLocale == QLatin1String("C")) { +- acceptLanguage = QString::fromLatin1("en,*"); +- } else if (systemLocale.startsWith(QLatin1String("en-"))) { +- acceptLanguage = systemLocale + QLatin1String(",*"); +- } else { +- acceptLanguage = systemLocale + QLatin1String(",en,*"); +- } +- _profile->setHttpAcceptLanguage(acceptLanguage); +- } +- +- _webview->setPage(_page); +- _ui.verticalLayout->addWidget(_webview); +- +- connect(_webview, &QWebEngineView::loadProgress, _ui.progressBar, &QProgressBar::setValue); +- connect(_schemeHandler, &WebViewPageUrlSchemeHandler::urlCatched, this, &WebView::urlCatched); +-} +- +-void WebView::setUrl(const QUrl &url) { +- _page->setUrl(url); +-} +- +-WebViewPageUrlRequestInterceptor::WebViewPageUrlRequestInterceptor(QObject *parent) +- : QWebEngineUrlRequestInterceptor(parent) { +- +-} +- +-void WebViewPageUrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo &info) { +- info.setHttpHeader("OCS-APIREQUEST", "true"); +-} +- +-WebViewPageUrlSchemeHandler::WebViewPageUrlSchemeHandler(QObject *parent) +- : QWebEngineUrlSchemeHandler(parent) { +- +-} +- +-void WebViewPageUrlSchemeHandler::requestStarted(QWebEngineUrlRequestJob *request) { +- QUrl url = request->requestUrl(); +- +- QString path = url.path().mid(1); +- QStringList parts = path.split("&"); +- +- QString server; +- QString user; +- QString password; +- +- for (QString part : parts) { +- if (part.startsWith("server:")) { +- server = part.mid(7); +- } else if (part.startsWith("user:")) { +- user = part.mid(5); +- } else if (part.startsWith("password:")) { +- password = part.mid(9); +- } +- } +- +- qCInfo(lcWizardWebiew()) << "Got user: " << user << ", server: " << server; +- +- emit urlCatched(user, password, server); +-} +- +- +-WebEnginePage::WebEnginePage(QWebEngineProfile *profile, QObject* parent) : QWebEnginePage(profile, parent) { +- +-} +- +-QWebEnginePage * WebEnginePage::createWindow(QWebEnginePage::WebWindowType type) { +- ExternalWebEnginePage *view = new ExternalWebEnginePage(this->profile()); +- return view; +-} +- +-ExternalWebEnginePage::ExternalWebEnginePage(QWebEngineProfile *profile, QObject* parent) : QWebEnginePage(profile, parent) { +- +-} +- +- +-bool ExternalWebEnginePage::acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame) +-{ +- QDesktopServices::openUrl(url); +- return false; +-} +- +-} +- +-#include "webview.moc" +--- desktop-2.5.0-beta1/src/gui/wizard/webviewpage.cpp 2018-08-02 16:32:56.000000000 -0400 ++++ /dev/null 2018-08-15 19:06:30.250590838 -0400 +@@ -1,73 +0,0 @@ +-#include "webviewpage.h" +- +-#include <QWebEngineUrlRequestJob> +-#include <QProgressBar> +-#include <QVBoxLayout> +- +-#include "owncloudwizard.h" +-#include "creds/webflowcredentials.h" +-#include "webview.h" +-#include "account.h" +- +-namespace OCC { +- +-Q_LOGGING_CATEGORY(lcWizardWebiewPage, "gui.wizard.webviewpage", QtInfoMsg) +- +- +-WebViewPage::WebViewPage(QWidget *parent) +- : AbstractCredentialsWizardPage() +-{ +- _ocWizard = qobject_cast<OwncloudWizard *>(parent); +- +- qCInfo(lcWizardWebiewPage()) << "Time for a webview!"; +- _webView = new WebView(this); +- +- QVBoxLayout *layout = new QVBoxLayout(this); +- layout->addWidget(_webView); +- setLayout(layout); +- +- connect(_webView, &WebView::urlCatched, this, &WebViewPage::urlCatched); +-} +- +-void WebViewPage::initializePage() { +- QString url; +- if (_ocWizard->registration()) { +- url = "https://nextcloud.com/register"; +- } else { +- url = _ocWizard->ocUrl(); +- url += "/index.php/login/flow"; +- } +- qCInfo(lcWizardWebiewPage()) << "Url to auth at: " << url; +- _webView->setUrl(QUrl(url)); +-} +- +-int WebViewPage::nextId() const { +- return WizardCommon::Page_AdvancedSetup; +-} +- +-bool WebViewPage::isComplete() const { +- return false; +-} +- +-AbstractCredentials* WebViewPage::getCredentials() const { +- return new WebFlowCredentials(_user, _pass, _ocWizard->_clientSslCertificate, _ocWizard->_clientSslKey); +-} +- +-void WebViewPage::setConnected() { +- qCInfo(lcWizardWebiewPage()) << "YAY! we are connected!"; +-} +- +-void WebViewPage::urlCatched(QString user, QString pass, QString host) { +- qCInfo(lcWizardWebiewPage()) << "Got user: " << user << ", server: " << host; +- +- _user = user; +- _pass = pass; +- +- AccountPtr account = _ocWizard->account(); +- account->setUrl(host); +- +- qCInfo(lcWizardWebiewPage()) << "URL: " << field("OCUrl").toString(); +- emit connectToOCUrl(host); +-} +- +-} +--- desktop-2.5.0-beta2/src/gui/wizard/webview.h 2018-08-24 12:54:42.000000000 +0000 ++++ /dev/null 2018-10-03 06:11:27.640255322 +0000 +@@ -1,42 +0,0 @@ +-#ifndef WEBVIEW_H +-#define WEBVIEW_H +- +-#include <QUrl> +-#include <QWidget> +- +-#include "ui_webview.h" +- +-class QWebEngineView; +-class QWebEngineProfile; +-class QWebEnginePage; +- +-namespace OCC { +- +-class WebViewPageUrlRequestInterceptor; +-class WebViewPageUrlSchemeHandler; +-class WebEnginePage; +- +-class WebView : public QWidget +-{ +- Q_OBJECT +-public: +- WebView(QWidget *parent = 0); +- void setUrl(const QUrl &url); +- +-signals: +- void urlCatched(const QString user, const QString pass, const QString host); +- +-private: +- Ui_WebView _ui; +- +- QWebEngineView *_webview; +- QWebEngineProfile *_profile; +- WebEnginePage *_page; +- +- WebViewPageUrlRequestInterceptor *_interceptor; +- WebViewPageUrlSchemeHandler *_schemeHandler; +-}; +- +-} +- +-#endif // WEBVIEW_H +--- desktop-2.5.0-beta1/src/gui/wizard/webviewpage.h 2018-08-02 16:32:56.000000000 -0400 ++++ /dev/null 2018-08-15 19:25:56.010611692 -0400 +@@ -1,41 +0,0 @@ +-#ifndef WEBVIEWPAGE_H +-#define WEBVIEWPAGE_H +- +-#include "wizard/abstractcredswizardpage.h" +- +-namespace OCC { +- +-class AbstractCredentials; +-class OwncloudWizard; +-class WebView; +- +-class WebViewPage : public AbstractCredentialsWizardPage +-{ +- Q_OBJECT +-public: +- WebViewPage(QWidget *parent = 0); +- +- void initializePage() Q_DECL_OVERRIDE; +- int nextId() const Q_DECL_OVERRIDE; +- bool isComplete() const; +- +- AbstractCredentials* getCredentials() const; +- void setConnected(); +- +-signals: +- void connectToOCUrl(const QString&); +- +-private slots: +- void urlCatched(QString user, QString pass, QString host); +- +-private: +- OwncloudWizard *_ocWizard; +- WebView *_webView; +- +- QString _user; +- QString _pass; +-}; +- +-} +- +-#endif // WEBVIEWPAGE_H +--- desktop-2.5.0-beta1/src/gui/wizard/owncloudsetuppage.cpp 2018-08-02 16:32:56.000000000 -0400 ++++ desktop-2.5.0-beta1/src/gui/wizard/owncloudsetuppage.cpp 2018-08-15 19:23:33.100609136 -0400 +@@ -161,7 +161,7 @@ + void OwncloudSetupPage::slotGotoProviderList() + { + _ocWizard->setRegistration(true); +- _ocWizard->setAuthType(DetermineAuthTypeJob::AuthType::WebViewFlow); ++ _ocWizard->setAuthType(DetermineAuthTypeJob::AuthType::Basic); + _authTypeKnown = true; + _checking = false; + emit completeChanged(); +@@ -278,8 +278,6 @@ + return WizardCommon::Page_OAuthCreds; + case DetermineAuthTypeJob::Shibboleth: + return WizardCommon::Page_ShibbolethCreds; +- case DetermineAuthTypeJob::WebViewFlow: +- return WizardCommon::Page_WebView; + } + return WizardCommon::Page_HttpCreds; + } +--- desktop-2.5.0-beta1/src/gui/wizard/webview.ui 2018-08-02 16:32:56.000000000 -0400 ++++ /dev/null 2018-08-15 19:24:43.320610392 -0400 +@@ -1,80 +0,0 @@ +-<?xml version="1.0" encoding="UTF-8"?> +-<ui version="4.0"> +- <class>WebView</class> +- <widget class="QWidget" name="WebView"> +- <property name="geometry"> +- <rect> +- <x>0</x> +- <y>0</y> +- <width>800</width> +- <height>700</height> +- </rect> +- </property> +- <property name="sizePolicy"> +- <sizepolicy hsizetype="Minimum" vsizetype="Maximum"> +- <horstretch>0</horstretch> +- <verstretch>0</verstretch> +- </sizepolicy> +- </property> +- <property name="minimumSize"> +- <size> +- <width>800</width> +- <height>650</height> +- </size> +- </property> +- <property name="windowTitle"> +- <string>Form</string> +- </property> +- <layout class="QGridLayout" name="gridLayout"> +- <property name="leftMargin"> +- <number>0</number> +- </property> +- <property name="topMargin"> +- <number>0</number> +- </property> +- <property name="rightMargin"> +- <number>0</number> +- </property> +- <property name="bottomMargin"> +- <number>0</number> +- </property> +- <item row="1" column="0"> +- <layout class="QVBoxLayout" name="verticalLayout"> +- <property name="spacing"> +- <number>0</number> +- </property> +- <item> +- <widget class="QProgressBar" name="progressBar"> +- <property name="maximumSize"> +- <size> +- <width>16777215</width> +- <height>5</height> +- </size> +- </property> +- <property name="styleSheet"> +- <string notr="true">QProgressBar::chunk { +- background-color: rgba(0, 130, 201, 255); +-}</string> +- </property> +- <property name="value"> +- <number>0</number> +- </property> +- <property name="textVisible"> +- <bool>false</bool> +- </property> +- </widget> +- </item> +- <item> +- <layout class="QHBoxLayout" name="resultLayout"> +- <property name="spacing"> +- <number>0</number> +- </property> +- </layout> +- </item> +- </layout> +- </item> +- </layout> +- </widget> +- <resources/> +- <connections/> +-</ui> +--- desktop-2.5.0-beta1/src/gui/wizard/owncloudwizard.h 2018-08-02 16:32:56.000000000 -0400 ++++ desktop-2.5.0-beta1/src/gui/wizard/owncloudwizard.h 2018-08-15 19:22:00.430607478 -0400 +@@ -39,7 +39,6 @@ + class OwncloudWizardResultPage; + class AbstractCredentials; + class AbstractCredentialsWizardPage; +-class WebViewPage; + + /** + * @brief The OwncloudWizard class +@@ -106,7 +105,6 @@ + OwncloudAdvancedSetupPage *_advancedSetupPage; + OwncloudWizardResultPage *_resultPage; + AbstractCredentialsWizardPage *_credentialsPage; +- WebViewPage *_webViewPage; + + QStringList _setupLog; + +--- desktop-2.5.0-beta1/src/gui/wizard/owncloudwizard.cpp 2018-08-02 16:32:56.000000000 -0400 ++++ desktop-2.5.0-beta1/src/gui/wizard/owncloudwizard.cpp 2018-08-15 19:04:35.670588788 -0400 +@@ -26,7 +26,6 @@ + #endif + #include "wizard/owncloudadvancedsetuppage.h" + #include "wizard/owncloudwizardresultpage.h" +-#include "wizard/webviewpage.h" + + #include "QProgressIndicator.h" + +@@ -51,7 +50,6 @@ + , _advancedSetupPage(new OwncloudAdvancedSetupPage) + , _resultPage(new OwncloudWizardResultPage) + , _credentialsPage(0) +- , _webViewPage(new WebViewPage(this)) + , _setupLog() + , _registration(false) + { +@@ -64,7 +62,6 @@ + #endif + setPage(WizardCommon::Page_AdvancedSetup, _advancedSetupPage); + setPage(WizardCommon::Page_Result, _resultPage); +- setPage(WizardCommon::Page_WebView, _webViewPage); + + connect(this, &QDialog::finished, this, &OwncloudWizard::basicSetupFinished); + +@@ -79,7 +76,6 @@ + #ifndef NO_SHIBBOLETH + connect(_shibbolethCredsPage, &OwncloudShibbolethCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl); + #endif +- connect(_webViewPage, &WebViewPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl); + connect(_advancedSetupPage, &OwncloudAdvancedSetupPage::createLocalAndRemoteFolders, + this, &OwncloudWizard::createLocalAndRemoteFolders); + connect(this, &QWizard::customButtonClicked, this, &OwncloudWizard::skipFolderConfiguration); +@@ -168,10 +164,6 @@ + break; + #endif + +- case WizardCommon::Page_WebView: +- _webViewPage->setConnected(); +- break; +- + case WizardCommon::Page_AdvancedSetup: + _advancedSetupPage->directoriesCreated(); + break; +@@ -195,8 +187,6 @@ + #endif + if (type == DetermineAuthTypeJob::OAuth) { + _credentialsPage = _browserCredsPage; +- } else if (type == DetermineAuthTypeJob::WebViewFlow) { +- _credentialsPage = _webViewPage; + } else { // try Basic auth even for "Unknown" + _credentialsPage = _httpCredsPage; + } +--- desktop-2.5.0-beta1/src/CMakeLists.txt 2018-08-02 16:32:56.000000000 -0400 ++++ desktop-2.5.0-beta1/src/CMakeLists.txt 2018-08-15 20:59:59.390712646 -0400 +@@ -4,7 +4,7 @@ + + set(synclib_NAME ${APPLICATION_EXECUTABLE}sync) + +-find_package(Qt5 5.6 COMPONENTS Core Network Xml Concurrent WebEngineWidgets WebEngine REQUIRED) ++find_package(Qt5 5.6 COMPONENTS Core Network Xml Concurrent REQUIRED) + if (Qt5Core_VERSION VERSION_LESS 5.9.0) + message(STATUS "For HTTP/2 support, compile with Qt 5.9 or higher.") + endif() diff --git a/user/nextcloud-client/openssl.patch b/user/nextcloud-client/openssl.patch new file mode 100644 index 000000000..426fa0cfb --- /dev/null +++ b/user/nextcloud-client/openssl.patch @@ -0,0 +1,11 @@ +--- desktop-2.5.0-beta2/CMakeLists.txt 2018-08-24 12:54:42.000000000 +0000 ++++ desktop-2.5.0-beta2/CMakeLists.txt 2018-10-03 06:19:15.840263697 +0000 +@@ -183,7 +183,7 @@ if(BUILD_CLIENT) + endif() + find_package(Sphinx) + find_package(PdfLatex) +- find_package(OpenSSL 1.1 REQUIRED ) ++ find_package(OpenSSL 1.0 REQUIRED ) + + find_package(ZLIB REQUIRED) + find_package(GLib2) diff --git a/user/perl-file-finder/APKBUILD b/user/perl-file-finder/APKBUILD index a28247770..83f2ada97 100644 --- a/user/perl-file-finder/APKBUILD +++ b/user/perl-file-finder/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org> pkgname=perl-file-finder pkgver=0.53 -pkgrel=0 +pkgrel=1 pkgdesc="Wrap Perl File::Find" url="https://metacpan.org/release/File-Finder" arch="noarch" @@ -10,7 +10,9 @@ license="Artistic-1.0-Perl" depends="perl-text-glob" makedepends="perl-dev" subpackages="$pkgname-doc" -source="https://cpan.metacpan.org/authors/id/M/ME/MERLYN/File-Finder-$pkgver.tar.gz" +source="https://cpan.metacpan.org/authors/id/M/ME/MERLYN/File-Finder-$pkgver.tar.gz + fix-test.patch + " builddir="$srcdir/File-Finder-$pkgver" build() { @@ -30,4 +32,5 @@ package() { find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete } -sha512sums="abcbc5b5c7ae09eb13e62ab1656e79a25becafb91eeef241fc0803ba0b35ae902c93db2240dfff6342952df7f0ff589350f63fdb1ccead64816f51bf52e366f0 File-Finder-0.53.tar.gz" +sha512sums="abcbc5b5c7ae09eb13e62ab1656e79a25becafb91eeef241fc0803ba0b35ae902c93db2240dfff6342952df7f0ff589350f63fdb1ccead64816f51bf52e366f0 File-Finder-0.53.tar.gz +8b96e6adb28e0a26843a3551d5939b9c9f65fbef155e46c155b82263923e1275a6be8c6184bbc831dfff7cc899d7b48df0f21e7005f273c389eff830190be166 fix-test.patch" diff --git a/user/perl-file-finder/fix-test.patch b/user/perl-file-finder/fix-test.patch new file mode 100644 index 000000000..6c371f6fc --- /dev/null +++ b/user/perl-file-finder/fix-test.patch @@ -0,0 +1,16 @@ +Thanks @smaeul + +--- File-Finder-0.53/t/05-steps.t.old 2004-10-07 01:04:12.000000000 -0500 ++++ File-Finder-0.53/t/05-steps.t 2018-10-02 22:27:29.867015209 -0500 +@@ -51,9 +51,9 @@ + 'mode 755'); + + { +- my $dirperm = (stat ".")[2] & 07777; ++ my $dirperm = (stat ".")[2] & 0777; + is_deeply([File::Finder->perm($dirperm)->in(qw(.))], +- [fin(sub { ((stat($_))[2] & 07777) == $dirperm }, '.')], ++ [fin(sub { ((stat($_))[2] & 0777) == $dirperm }, '.')], + 'mode same as current directory'); + } + diff --git a/user/perl-io-tty/APKBUILD b/user/perl-io-tty/APKBUILD new file mode 100644 index 000000000..d42b831a2 --- /dev/null +++ b/user/perl-io-tty/APKBUILD @@ -0,0 +1,33 @@ +# Contributor: Dan Theisen <djt@hxx.in> +# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org> +pkgname=perl-io-tty +pkgver=1.12 +pkgrel=0 +pkgdesc="Low-level allocate a pseudo-tty" +url="https://metacpan.org/pod/IO::Tty" +arch="all" +license="Artistic-1.0-Perl" +depends="" +makedepends="perl-dev" +subpackages="$pkgname-doc" +source="https://cpan.metacpan.org/authors/id/T/TO/TODDR/IO-Tty-$pkgver.tar.gz" +builddir="$srcdir/IO-Tty-$pkgver" + +build() { + cd "$builddir" + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor + make +} + +check() { + cd "$builddir" + make test +} + +package() { + cd "$builddir" + make DESTDIR="$pkgdir" install + find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete +} + +sha512sums="23733e7832a0de370952420df8a781f85d28ff60eb4cd55be22147337bf5587f4e1ec7fcfc190ae3ad1fd9df0f9697f2d647e00739f4a2927b1ac9c81435454d IO-Tty-1.12.tar.gz" diff --git a/user/protobuf/APKBUILD b/user/protobuf/APKBUILD new file mode 100644 index 000000000..5f00430bf --- /dev/null +++ b/user/protobuf/APKBUILD @@ -0,0 +1,108 @@ +# Contributor: Kiyoshi Aman <kiyoshi.aman@gmail.com> +# Contributor: Natanael Copa <ncopa@alpinelinux.org> +# Maintainer: Dan Theisen <djt@hxx.in> +# TODO: Build Python module, and clean up Ruby build process +pkgname=protobuf +_gemname=google-protobuf +pkgver=3.6.1 +_tstver=1.8.0 +pkgrel=0 +pkgdesc="Library for extensible, efficient structure packing" +url="https://github.com/google/protobuf" +arch="all" +license="BSD-3-Clause" +depends_dev="zlib-dev" +makedepends="$depends_dev autoconf automake libtool ruby ruby-dev ruby-rake" +subpackages="ruby-$_gemname:_ruby $pkgname-dev $pkgname-vim::noarch" +source="$pkgname-$pkgver.tar.gz::https://github.com/google/$pkgname/archive/v$pkgver.tar.gz + googletest-$_tstver.tar.gz::https://github.com/google/googletest/archive/release-$_tstver.tar.gz + musl-fix.patch + trim-rakefile.patch" +builddir="$srcdir/$pkgname-$pkgver" + +prepare() { + default_prepare + + cd "$builddir" + ./autogen.sh + + # symlink tests to the test directory + rm -rf third_party/* + ln -sf "$srcdir"/googletest-release-$_tstver \ + "$builddir"/third_party/googletest +} + +build() { + cd "$builddir" + + CXXFLAGS="$CXXFLAGS -fno-delete-null-pointer-checks" \ + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + make + + cd "$builddir"/ruby + + # Generate proto files for built-in protocols. + rake genproto + + gem build $_gemname.gemspec + gem install --local \ + --install-dir dist \ + --ignore-dependencies \ + --no-document \ + --verbose \ + $_gemname + + # build test-suite + local test; for test in googletest googlemock; do + cd "$builddir/third_party/googletest/$test" + autoreconf -vfi + ./configure + make + done +} + +# TODO: Run tests for ruby gem. +check() { + cd "$builddir" + make check +} + +package() { + cd "$builddir" + make DESTDIR="$pkgdir" install +} + +_ruby() { + pkgdesc="Ruby bindings to Google's data interchange format" + + local gemdir="$subpkgdir/$(ruby -e 'puts Gem.default_dir')" + cd "$builddir"/ruby/dist + + mkdir -p "$gemdir" + cp -r extensions gems specifications "$gemdir"/ + + # Remove duplicated .so libs (should be only in extensions directory). + find "$gemdir"/gems/ -name "*.so" -delete + + # Remove unnecessary files. + cd "$gemdir"/gems/$_gemname-$pkgver + rm -r ext/ tests/ +} + +vim() { + pkgdesc="Vim syntax for $pkgname" + depends="" + install_if="$pkgname=$pkgver-r$pkgrel vim" + + install -Dm644 "$builddir"/editors/proto.vim \ + "$subpkgdir"/usr/share/vim/vimfiles/syntax/proto.vim +} + +sha512sums="1bc175d24b49de1b1e41eaf39598194e583afffb924c86c8d2e569d935af21874be76b2cbd4d9655a1d38bac3d4cd811de88bc2c72d81bad79115e69e5b0d839 protobuf-3.6.1.tar.gz +1dbece324473e53a83a60601b02c92c089f5d314761351974e097b2cf4d24af4296f9eb8653b6b03b1e363d9c5f793897acae1f0c7ac40149216035c4d395d9d googletest-1.8.0.tar.gz +875592bc5dc5efe9087ea1b340673f54c984ecd5aa3b110a2da136bdc28009af7ce1a9c57f4747ff809fc02eb6c39a0209c277177172af467a54172d9700188a musl-fix.patch +d1d11fe76d2a1ae92f47f9eb1e0d94c67b7192a9dc4a382b6c0835f4fe4dbc2f98ca1b3c5095ad5b4e368581072330f943209c0decea02ebb47938588543fdb1 trim-rakefile.patch" diff --git a/user/protobuf/musl-fix.patch b/user/protobuf/musl-fix.patch new file mode 100644 index 000000000..442ca20ed --- /dev/null +++ b/user/protobuf/musl-fix.patch @@ -0,0 +1,22 @@ +seems like both musl libc and android has byteswap.h + +--- a/src/google/protobuf/stubs/port.h ++++ b/src/google/protobuf/stubs/port.h +@@ -94,7 +94,7 @@ + #include <intrin.h> + #elif defined(__APPLE__) + #include <libkern/OSByteOrder.h> +-#elif defined(__GLIBC__) || defined(__BIONIC__) || defined(__CYGWIN__) ++#elif defined(__linux__) || defined(__BIONIC__) || defined(__CYGWIN__) + #include <byteswap.h> // IWYU pragma: export + #endif + +@@ -380,7 +380,7 @@ inline void GOOGLE_UNALIGNED_STORE64(voi + #define bswap_32(x) OSSwapInt32(x) + #define bswap_64(x) OSSwapInt64(x) + +-#elif !defined(__GLIBC__) && !defined(__BIONIC__) && !defined(__CYGWIN__) ++#elif !defined(__linux__) && !defined(__BIONIC__) && !defined(__CYGWIN__) + + static inline uint16 bswap_16(uint16 x) { + return static_cast<uint16>(((x & 0xFF) << 8) | ((x & 0xFF00) >> 8)); diff --git a/user/protobuf/trim-rakefile.patch b/user/protobuf/trim-rakefile.patch new file mode 100644 index 000000000..7f53d7099 --- /dev/null +++ b/user/protobuf/trim-rakefile.patch @@ -0,0 +1,72 @@ +Remove code that we don't use to avoid installing additional dependencies. +--- a/ruby/Rakefile ++++ b/ruby/Rakefile +@@ -1,6 +1,4 @@ + require "rubygems" +-require "rubygems/package_task" +-require "rake/extensiontask" unless RUBY_PLATFORM == "java" + require "rake/testtask" + + spec = Gem::Specification.load("google-protobuf.gemspec") +@@ -39,51 +37,6 @@ + end + end + +-if RUBY_PLATFORM == "java" +- if `which mvn` == '' +- raise ArgumentError, "maven needs to be installed" +- end +- task :clean do +- system("mvn --batch-mode clean") +- end +- +- task :compile do +- system("mvn --batch-mode package") +- end +-else +- Rake::ExtensionTask.new("protobuf_c", spec) do |ext| +- unless RUBY_PLATFORM =~ /darwin/ +- # TODO: also set "no_native to true" for mac if possible. As is, +- # "no_native" can only be set if the RUBY_PLATFORM doing +- # cross-compilation is contained in the "ext.cross_platform" array. +- ext.no_native = true +- end +- ext.ext_dir = "ext/google/protobuf_c" +- ext.lib_dir = "lib/google" +- ext.cross_compile = true +- ext.cross_platform = [ +- 'x86-mingw32', 'x64-mingw32', +- 'x86_64-linux', 'x86-linux', +- 'universal-darwin' +- ] +- end +- +- task 'gem:windows' do +- require 'rake_compiler_dock' +- RakeCompilerDock.sh "bundle && IN_DOCKER=true rake cross native gem RUBY_CC_VERSION=2.5.0:2.4.0:2.3.0:2.2.2:2.1.6:2.0.0" +- end +- +- if RUBY_PLATFORM =~ /darwin/ +- task 'gem:native' do +- system "rake genproto" +- system "rake cross native gem RUBY_CC_VERSION=2.5.0:2.4.0:2.3.0:2.2.2:2.1.6:2.0.0" +- end +- else +- task 'gem:native' => [:genproto, 'gem:windows'] +- end +-end +- +- + # Proto for tests. + genproto_output << "tests/generated_code.rb" + genproto_output << "tests/test_import.rb" +@@ -104,9 +57,6 @@ + + task :clean do + sh "rm -f #{genproto_output.join(' ')}" +-end +- +-Gem::PackageTask.new(spec) do |pkg| + end + + Rake::TestTask.new(:test => :build) do |t| diff --git a/user/shunit2/APKBUILD b/user/shunit2/APKBUILD index 8a110ff6d..baa658cf8 100644 --- a/user/shunit2/APKBUILD +++ b/user/shunit2/APKBUILD @@ -9,7 +9,7 @@ arch="noarch" license="Apache-2.0" depends="/bin/sh" makedepends="" -checkdepends="debianutils-which bash dash zsh" +checkdepends="cmd:which bash dash zsh" subpackages="$pkgname-doc" source="$pkgname-$pkgver.tar.gz::https://github.com/kward/shunit2/archive/v$pkgver.tar.gz dash-negative-lineno.patch" diff --git a/user/sshfs/APKBUILD b/user/sshfs/APKBUILD index 404c077be..32fcfbd7c 100644 --- a/user/sshfs/APKBUILD +++ b/user/sshfs/APKBUILD @@ -10,7 +10,7 @@ options="!check" # Requires fuse kernel module to be loaded and local ssh serve license="GPL-2.0-only AND GPL-2.0+ AND LGPL-2.1-only" depends="openssh-client" makedepends="fuse3-dev glib-dev meson coreutils py3-docutils" -#checkdepends="py3-pytest debianutils-which" +#checkdepends="py3-pytest cmd:which" subpackages="$pkgname-doc" source="https://github.com/libfuse/$pkgname/releases/download/$pkgname-$pkgver/$pkgname-$pkgver.tar.xz" diff --git a/user/strongswan/APKBUILD b/user/strongswan/APKBUILD index a89a10a6c..29390b652 100644 --- a/user/strongswan/APKBUILD +++ b/user/strongswan/APKBUILD @@ -2,7 +2,7 @@ # Contributor: Natanael Copa <ncopa@alpinelinux.org> # Maintainer: Lee Starnes <lee@canned-death.us> pkgname=strongswan -pkgver=5.7.0 +pkgver=5.7.1 _pkgver=${pkgver//_rc/rc} pkgrel=0 pkgdesc="IPsec-based VPN solution focused on security and ease of use, supporting IKEv1/IKEv2 and MOBIKE" @@ -28,6 +28,10 @@ source="https://download.strongswan.org/$pkgname-$_pkgver.tar.bz2 " builddir="$srcdir/$pkgname-$_pkgver" +# secfixes: +# 5.7.1-r0: +# - CVE-2018-17540 + build() { cd "$builddir" @@ -95,7 +99,7 @@ package() { install -m755 -D "$srcdir/charon.initd" "$pkgdir/etc/init.d/charon" } -sha512sums="811bfa79aa2b17fcf298c45a2b4109cf4235286e90c4def3e09022ed94c7fa481fc25b8d5054529e4ff4e33011ce6f6ba9874595d16c1a8fe13ef924c4ec6395 strongswan-5.7.0.tar.bz2 +sha512sums="43102814434bee7c27a5956be59099cc4ffb9bb5b0d6382ce4c6a80d1d82ed6639f698f5f5544b9ca563554a344638c953525b0e2d39bc6b71b19055c80e07fc strongswan-5.7.1.tar.bz2 193d845e2751c23d98cdf84134c7803f2e412197669c6d6c1c9974041608d154b85594ed3d9ffb923ca22a4d5926c7f2373787ddc7da47b52019e284a1d13211 0205-ike-Adhere-to-IKE_SA-limit-when-checking-out-by-conf.patch 21db8f153f535ef13cc7c9c011f9b90b8c794e0072bd93fda6a0a56dc00d32d04e186b1a72a87a85613b7e511eed5cb96623abf0721c67dd5c96446db969a185 1001-charon-add-optional-source-and-remote-overrides-for-.patch f7d98fb99b4855e8bfbb7369292c170536b1987e717feeda71f64ab71b35538e7d462609a773c6a6ed08c8e6ee7a186df12e1ea7d64b9dac0b17d4c7af17dab3 1002-vici-send-certificates-for-ike-sa-events.patch diff --git a/user/thunar/APKBUILD b/user/thunar/APKBUILD index 5f1360cf9..b11ee1106 100644 --- a/user/thunar/APKBUILD +++ b/user/thunar/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com> # Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com> pkgname=thunar -pkgver=1.8.1 +pkgver=1.8.2 pkgrel=0 pkgdesc="File manager for the XFCE desktop environment" url="https://xfce.org" @@ -13,7 +13,6 @@ makedepends="intltool gtk+3.0-dev exo-dev libxfce4ui-dev vala-dev subpackages="$pkgname-dev $pkgname-doc $pkgname-lang" langdir="/usr/lib/locale" source="http://archive.xfce.org/src/xfce/thunar/1.8/Thunar-$pkgver.tar.bz2" -sha512sums="89aa29af5e272d58c7de02ba1c96d7f0c32eed49cda9621ef863dd679712cc653f58e729e49b9dc3d1626c9b8ebe2b18a2307e00c7ea1d1d2b42fa71272aced7 Thunar-1.8.1.tar.bz2" builddir="$srcdir/Thunar-$pkgver" build() { @@ -38,3 +37,4 @@ package() { make DESTDIR="$pkgdir" install } +sha512sums="c770fae8b6e5e0e42148ed2b9777afba5159783e5fc716eba1e0499b5390684f386eb575f1a608814bc118bbf05ede34c6737e28c06470c4d01717b579308ec9 Thunar-1.8.2.tar.bz2" diff --git a/user/unrar/APKBUILD b/user/unrar/APKBUILD index 5364d74f6..f50447699 100644 --- a/user/unrar/APKBUILD +++ b/user/unrar/APKBUILD @@ -2,7 +2,7 @@ # Contributor: Carlo Landmeter <clandmeter@gmail.com> # Maintainer: Dan Theisen <djt@hxx.in> pkgname=unrar -pkgver=5.6.6 +pkgver=5.6.8 pkgrel=0 pkgdesc="The RAR uncompression program" url="https://www.rarlab.com" @@ -29,5 +29,5 @@ package() { "$pkgdir/usr/share/licenses/$pkgname/license.txt" } -sha512sums="1e1e9dc2ed104ab7819d11ad2249780a4320cb30f3c427ea1669c3769fa3a8369841711a2d46d918049659bc67b2cd7dc7560a12127d810a57614293c24fe25a unrarsrc-5.6.6.tar.gz +sha512sums="5410308d7f462824bc10087cdc4515c58aaad776cc09eb6491864a338ae00ff35e3b54d1e7250c0a9576554ea382383155be718a0b95d7af00f27d5df04f4f56 unrarsrc-5.6.8.tar.gz 7da30d8454a67999e7052ed2c0ee8d29627b1d47bfdf36e8cf1e24f3c36ee58b17f7e7a6505a4b38e0ca3162067368a1bf554829fd824f7c17a3a2a5b35ca29c makefile.patch" diff --git a/user/which/APKBUILD b/user/which/APKBUILD index 42e7e3b10..cea55c32a 100644 --- a/user/which/APKBUILD +++ b/user/which/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com> pkgname=which pkgver=2.21 -pkgrel=1 +pkgrel=2 pkgdesc="A utility to show the full path of commands" url="http://savannah.gnu.org/projects/which" arch="all" @@ -10,6 +10,7 @@ license="GPL-2.0+ AND LGPL-2.0+ AND GPL-3.0+" makedepends="" subpackages="$pkgname-doc" source="http://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz" +provider_priority=1 build() { cd "$builddir" diff --git a/user/xautolock/APKBUILD b/user/xautolock/APKBUILD new file mode 100644 index 000000000..71fd17994 --- /dev/null +++ b/user/xautolock/APKBUILD @@ -0,0 +1,30 @@ +# Contributor: Johannes Matheis <jomat+alpinebuild@jmt.gr> +# Maintainer: Dan Theisen <djt@hxx.in> +pkgname=xautolock +pkgver=2.2 +pkgrel=4 +pkgdesc="An automatic X screen-locker/screen-saver" +url="http://ibiblio.org/pub/Linux/X11/screensavers/" +arch="all" # this might not build on aarch64? removed from alpine commit +license="GPL-2.0" +options="!check" # This package has no testsuite +depends="" +makedepends="$depends_dev imake xorg-server-dev libxscrnsaver-dev xorg-cf-files" +subpackages="$pkgname-doc" +source="https://www.ibiblio.org/pub/linux/X11/screensavers/xautolock-$pkgver.tgz + processwait.patch" + +build() { + cd "$builddir" + xmkmf + make +} + +package() { + cd "$builddir" + make DESTDIR="$pkgdir" install + make MANPATH=/usr/share/man DESTDIR="$pkgdir" install.man +} + +sha512sums="5f9dcc25cda706610e77a74235c4b421ca3a833d154b1a269057f0774579e1c6ec36fe0e5be5fadd6942ce8c1640a760f891397586b162e6024b524635153d04 xautolock-2.2.tgz +3242d01e394f8b84946d7d7fca9a87f2e17783352e180e43470737d3a2e4a7eb15f1a514dcd98118b6491895ab56d3cef29d4abb32b5a341c73efaa2a7ff323a processwait.patch" diff --git a/user/xautolock/processwait.patch b/user/xautolock/processwait.patch new file mode 100644 index 000000000..cb49f8d88 --- /dev/null +++ b/user/xautolock/processwait.patch @@ -0,0 +1,33 @@ +--- xautolock/src/engine.c.orig 2014-08-28 12:50:56.086307943 +0000 ++++ xautolock/src/engine.c 2014-08-28 12:50:59.496333650 +0000 +@@ -209,24 +209,24 @@ evaluateTriggers (Display* d) + { + #else /* VMS */ + if (lockerPid) + { +-#if !defined (UTEKV) && !defined (SYSV) && !defined (SVR4) ++#if (!defined (UTEKV) && !defined (SYSV) && !defined (SVR4)) && defined (__GLIBC__) + union wait status; /* childs process status */ +-#else /* !UTEKV && !SYSV && !SVR4 */ ++#else /* (!UTEKV && !SYSV && !SVR4) && __GLIBC__ */ + int status = 0; /* childs process status */ +-#endif /* !UTEKV && !SYSV && !SVR4 */ ++#endif /* (!UTEKV && !SYSV && !SVR4) && __GLIBC__ */ + + if (unlockNow && !disabled) + { + (void) kill (lockerPid, SIGTERM); + } + +-#if !defined (UTEKV) && !defined (SYSV) && !defined (SVR4) ++#if (!defined (UTEKV) && !defined (SYSV) && !defined (SVR4)) && defined (__GLIBC__) + if (wait3 (&status, WNOHANG, 0)) +-#else /* !UTEKV && !SYSV && !SVR4 */ ++#else /* (!UTEKV && !SYSV && !SVR4) && __GLIBC__ */ + if (waitpid (-1, &status, WNOHANG)) +-#endif /* !UTEKV && !SYSV && !SVR4 */ ++#endif /* (!UTEKV && !SYSV && !SVR4) && __GLIBC__ */ + { + /* + * If the locker exited normally, we disable any pending kill + * trigger. Otherwise, we assume that it either has crashed or diff --git a/user/xdotool/APKBUILD b/user/xdotool/APKBUILD index 35d7984cc..3aae63783 100644 --- a/user/xdotool/APKBUILD +++ b/user/xdotool/APKBUILD @@ -12,7 +12,7 @@ license="BSD-3-Clause" depends="" depends_dev="libx11-dev libxtst-dev libxinerama-dev libxkbcommon-dev" makedepends="$depends_dev perl" -#checkdepends="xvfb ruby-minitest debianutils-which lsof xdpyinfo xterm xwininfo" +#checkdepends="xvfb ruby-minitest cmd:which lsof xdpyinfo xterm xwininfo" subpackages="$pkgname-dev $pkgname-doc" source="https://github.com/jordansissel/xdotool/releases/download/v$pkgver/xdotool-$pkgver.tar.gz" diff --git a/user/xfce4-panel-profiles/APKBUILD b/user/xfce4-panel-profiles/APKBUILD index 8719fc556..f30ebb39a 100644 --- a/user/xfce4-panel-profiles/APKBUILD +++ b/user/xfce4-panel-profiles/APKBUILD @@ -9,7 +9,7 @@ arch="noarch" options="!check" # no tests license="GPL-3.0+" depends="python3" -makedepends="intltool which" +makedepends="intltool cmd:which" subpackages="$pkgname-doc $pkgname-lang" source="http://archive.xfce.org/src/apps/xfce4-panel-profiles/1.0/xfce4-panel-profiles-$pkgver.tar.bz2" sha512sums="2d7980a79250414cc4611ccf573c2a3ee5eb510cf3ef6c32035ba23197eee1fded2e158cb50714dd935070916b07b3f33db02570f3d46a598144b4a2d3979ff4 xfce4-panel-profiles-1.0.8.tar.bz2" diff --git a/user/xorg-cf-files/APKBUILD b/user/xorg-cf-files/APKBUILD new file mode 100644 index 000000000..5a438d2bf --- /dev/null +++ b/user/xorg-cf-files/APKBUILD @@ -0,0 +1,38 @@ +# Contributor: Johannes Matheis <jomat+alpinebuild@jmt.gr> +# Maintainer: Dan Theisen <djt@hxx.in> +pkgname=xorg-cf-files +pkgver=1.0.6 +pkgrel=0 +pkgdesc="Data files for the imake utility" +url="http://xorg.freedesktop.org/" +arch="noarch" +license="X11" +options="!check" # This package has no testsuite +depends="" +makedepends="" +subpackages="$pkgname-doc" +source="http://xorg.freedesktop.org/releases/individual/util/${pkgname}-${pkgver}.tar.bz2" + +build() { + cd "$builddir" + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + make +} + +package() { + cd "$builddir" + make DESTDIR="$pkgdir" install + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" +} + +md5sums="28649f34fa23143f1945aa2750e1472a xorg-cf-files-1.0.6.tar.bz2" +sha256sums="4dcf5a9dbe3c6ecb9d2dd05e629b3d373eae9ba12d13942df87107fdc1b3934d xorg-cf-files-1.0.6.tar.bz2" +sha512sums="1749a5fbcda2c15c300028abce79a3304cfb10f215bf98cf30558144eb64f9fa06a69203159f44405224ed567ac5bc0ff1222e3656367f69acc99f44871424fa xorg-cf-files-1.0.6.tar.bz2" |