# Contributor: "Tru Huynh <tru@pasteur.fr>"
# Maintainer: "Tru Huynh <tru@pasteur.fr>"
pkgname=singularity
pkgver=3.0.1
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"
#depends_dev="gawk go libc-dev linux-headers libressl-dev libuuid util-linux-dev libseccomp-dev"
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/v3.0.1/singularity-3.0.1.tar.gz
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() {
	mkdir -p "$pkgdir"/usr/share/man/man1/ 
        cd "$builddir" && \
        cd $CBUILD && \
#        make -j 1 DESTDIR="$pkgdir" install || return 1
        make -j 1 DESTDIR="$pkgdir" install man || return 1
# this fails with:
#../src/docs/makeDocs/makeDocs.go:11:2: cannot find package "github.com/spf13/cobra/doc" in any of:
#	/usr/lib/go/src/github.com/spf13/cobra/doc (from $GOROOT)
#	/home/tru/go/src/github.com/spf13/cobra/doc (from $GOPATH)
#../src/docs/makeDocs/makeDocs.go:14:2: cannot find package "golang.org/x/sys/unix" in any of:
#	/usr/lib/go/src/golang.org/x/sys/unix (from $GOROOT)
#	/home/tru/go/src/golang.org/x/sys/unix (from $GOPATH)

# gzip man page
	gzip "$pkgdir"/usr/share/man/man1/*.1 || 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
}

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="af6af1ff57cda548cd05f81af3b0e272cd863d23510c2eb95f8ec2873ef71efe746040b8d10c98beefce224b90b42a881f322301628c84c4a3328e6ed59bdd99  singularity-3.0.1.tar.gz"
