summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorzhs2022-05-14 03:35:01 +0000
committerzhs2022-05-14 03:35:01 +0000
commitd7f676da36a389f5e0d43b52e29314e8044863c5 (patch)
tree3d5b7bf0c933adec31c88fa7e2c94cb0a2cdf654
parent43b2c1b530ea42df900026ea098489612461a4fc (diff)
downloadaur-ignite-git.tar.gz
convert the build process to official docker-based build
-rw-r--r--.SRCINFO1
-rw-r--r--PKGBUILD52
2 files changed, 40 insertions, 13 deletions
diff --git a/.SRCINFO b/.SRCINFO
index a81f606c81ae..335ef6fa7518 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -7,6 +7,7 @@ pkgbase = ignite-git
license = apache
makedepends = go
makedepends = git
+ makedepends = docker
depends = containerd
depends = cni-plugins
provides = ignite-git
diff --git a/PKGBUILD b/PKGBUILD
index 4c5f1e4f2e18..936f3ba8d9d8 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,13 +1,15 @@
# Maintainer: zhs <zhao4she4@tuta.io>
-# largely based on the release version one by techknowlogick
+# systemd unit taken from the release version one by techknowlogick
+
pkgname=ignite-git
_pkgname=ignite
pkgver=r1819.c4162ac6
pkgrel=1
-pkgdesc="Weaveworks Ignite, combines Firecracker MicroVMs with Docker/OCI images to unify containers and VMs, GIT version."
+pkgdesc="Weaveworks Ignite, combines Firecracker MicroVMs with Docker/OCI \
+images to unify containers and VMs, GIT version."
arch=('x86_64')
url="https://github.com/weaveworks/ignite"
-makedepends=('go' 'git')
+makedepends=('go' 'git' 'docker')
depends=('containerd' 'cni-plugins')
license=('apache')
provides=('ignite-git')
@@ -25,19 +27,43 @@ pkgver() {
}
build() {
+ # this uses the official docker way to build this package because quite often
+ # the golang version installed on an arch linux system does not match what it
+ # expects. for example, as of this writing, arch linux ships 1.18 while this
+ # only correctly builds with the latest golang 1.17
+
cd "${srcdir}/${_pkgname}"
- # build assumes git repo, but we're building from tarball, so we need to set state to clean
- # sed -i hack/ldflags.sh -e "s/IGNITE_GIT_TREE_STATE..dirty/IGNITE_GIT_TREE_STATE\=\"clean/i"
- # no need for above when building from git
- go build -mod=vendor -ldflags "$(./hack/ldflags.sh)" -o ignite ./cmd/ignite
- go build -mod=vendor -ldflags "$(./hack/ldflags.sh)" -o ignited ./cmd/ignited
- go build -mod=vendor -ldflags "$(./hack/ldflags.sh)" -o ignite-spawn ./cmd/ignite-spawn
+
+ # the user building this package should either be a member of 'docker' group
+ # or have sudo rights to run docker
+ if id -nG "${USER}" | grep -qw "docker"; then
+ echo "info: user \'${USER}\' is in 'docker' group. proceeding..."
+ export DOCKER="docker"
+ elif sudo -l | grep -qw "ALL\|/usr/bin/docker"; then
+ echo "info: user '${USER}' is allowed to run 'sudo docker'. proceeding..."
+ export DOCKER="sudo docker"
+ else
+ echo "error: '${USER}' neither is in 'docker' group nor can run 'sudo \
+docker'. aborting..."
+ exit 1
+ fi
+
+ # docker daemon/engine has to be running
+ while (! ${DOCKER} stats --no-stream 1>/dev/null 2>&1); do
+ echo "waiting for docker daemon to start up..."
+ sleep 1
+ done
+
+ # we need to do this because we are running docker from a script
+ sed -i 's/$(DOCKER) run -i/$(DOCKER) run/' Makefile
+ make DOCKER="${DOCKER}"
}
package() {
- install -D -m644 "$srcdir/ignited.service" "$pkgdir/usr/lib/systemd/system/ignited.service"
- install -D -m755 "${_pkgname}/ignite" "${pkgdir}/usr/bin/ignite"
- install -D -m755 "${_pkgname}/ignited" "${pkgdir}/usr/bin/ignited"
- install -D -m755 "${_pkgname}/ignite-spawn" "${pkgdir}/usr/bin/ignite-spawn"
+ cd "${srcdir}"
+ install -D -m644 "ignited.service" "${pkgdir}/usr/lib/systemd/system/ignited.service"
+ install -D -m755 "${_pkgname}/bin/amd64/ignite" "${pkgdir}/usr/bin/ignite"
+ install -D -m755 "${_pkgname}/bin/amd64/ignited" "${pkgdir}/usr/bin/ignited"
+ install -D -m755 "${_pkgname}/bin/amd64/ignite-spawn" "${pkgdir}/usr/bin/ignite-spawn"
}