Skip to content

Instantly share code, notes, and snippets.

@truatpasteurdotfr
Created June 6, 2020 23:04
Show Gist options
  • Save truatpasteurdotfr/1638e84aaa020527b1d94c9a7b81d31e to your computer and use it in GitHub Desktop.
Save truatpasteurdotfr/1638e84aaa020527b1d94c9a7b81d31e to your computer and use it in GitHub Desktop.
ABUILD singularity 3.5.3 (build fines on 3.11/fails on 3.12)
# Contributor: "Tru Huynh <[email protected]>"
# Maintainer: "Tru Huynh <[email protected]>"
pkgname=singularity
pkgver=3.5.3
pkgrel=1
pkgdesc="Singularity: Application containers for Linux"
url="https://www.sylabs.io/singularity"
arch="x86_64"
# https://spdx.org/licenses/BSD-3-Clause-LBNL.html
license="BSD-3-Clause-LBNL"
depends="squashfs-tools cryptsetup"
makedepends="gawk go libc-dev linux-headers libressl-dev libuuid util-linux-dev libseccomp-dev"
install=""
subpackages="$pkgname-doc $pkgname-examples"
source="${pkgname}-${pkgver}.tar.gz::https://github.com/sylabs/singularity/releases/download/v${pkgver}/${pkgname}-${pkgver}.tar.gz
"
options="suid !check" # no testsuite
builddir="$srcdir/go/src/github.com/sylabs/${pkgname}"
prepare() {
mkdir -p "$srcdir/go/src/github.com/sylabs/${pkgname}"
mv "$srcdir/$pkgname" "$srcdir/go/src/github.com/sylabs"
cd "$builddir"
for i in $source; do
case $i in
*.patch)
msg "Applying $i"
patch -p1 -i "$srcdir"/$i || return 1
;;
esac
done
./mconfig \
-b $CBUILD \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--libexecdir=/usr/libexec \
--sysconfdir=/etc \
--sharedstatedir=/var/lib \
--mandir=/usr/share/man \
--localstatedir=/var \
--libdir=/usr/lib \
|| return 1
}
build() {
export GOPATH="$srcdir/go"
cd $CBUILD && \
make -j 1 || return 1
}
package() {
cd "$builddir" && \
cd $CBUILD && \
make -j 1 DESTDIR="$pkgdir" install || return 1
}
doc() {
arch="noarch"
cd "$builddir" && \
mkdir -p "$subpkgdir"/usr/share/doc/"$pkgname" || return 1
# Doc files
_docs="CONTRIBUTING.md CONTRIBUTORS.md COPYRIGHT.md INSTALL.md LICENSE-LBNL.md LICENSE.md README.md VERSION"
for _doc in $_docs; do
install -Dm644 $_doc \
"$subpkgdir"/usr/share/doc/$pkgname/$_doc || return 1
done
mkdir -p "$pkgdir"/usr/share/man/man1/
cd "$builddir" && \
cd $CBUILD && \
make -j 1 DESTDIR="$pkgdir" install man || return 1
gzip "$pkgdir"/usr/share/man/man1/*.1 || return 1
}
examples() {
arch="noarch"
# Put the examples into a seperate package
cd "$builddir"
mkdir -p "$subpkgdir"/usr/share/doc/"$pkgname"/examples || return 1
mv examples/* "$subpkgdir"/usr/share/doc/"$pkgname"/examples || return 1
}
sha512sums="b8bb44539e78eaf74c1b97e5bae8fae1f390412456d76b573fffe2a90240b182db1aec60aee80715547c3edfbaa0607506e2727a575bc951223f9a7c3be0a97e singularity-3.5.3.tar.gz"
@truatpasteurdotfr
Copy link
Author

singularity-go-buildmode.patch

--- singularity.orig/mlocal/frags/go_common_opts.mk
+++ singularity/mlocal/frags/go_common_opts.mk
@@ -3,7 +3,7 @@
 GO_TAGS := containers_image_openpgp sylog imgbuild_engine oci_engine singularity_engine fakeroot_engine
 GO_TAGS_SUID := containers_image_openpgp sylog singularity_engine fakeroot_engine
 GO_LDFLAGS :=
-GO_BUILDMODE := -buildmode=default
+GO_BUILDMODE := -buildmode=pie
 GO_GCFLAGS :=
 GO_ASMFLAGS :=
 GO_MODFLAGS := $(if $(wildcard $(SOURCEDIR)/vendor/modules.txt),-mod=vendor,-mod=readonly)

APKBUILD:

source="${pkgname}-${pkgver}.tar.gz::https://github.com/sylabs/singularity/releases/download/v${pkgver}/${pkgname}-${pkgver}.tar.gz
	singularity-go-buildmode.patch"
...
82c7fa0d695ad80395ae494abd3442e059581dae004e4f8eaecb31f777838e9f844a91c9a4c6ca4a0c4538c1ff4a6ddb5c926686387e89e07ce36b7f0522429c  singularity-go-buildmode.patch"

works for me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment