Skip to content

Commit 5aa24fe

Browse files
authored
Fix local build of packages (#241)
1 parent d7c89aa commit 5aa24fe

19 files changed

+124
-47
lines changed

apk/templates/APKBUILD.github-binary

+3-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ pkgdesc="${PACKAGE_DESCRIPTION}"
88
builddir="$srcdir"
99
exe=$PACKAGE_EXE
1010
repo=vendor
11+
installdir=${INSTALL_DIR:-/usr/bin/}
1112

1213
# https://wiki.alpinelinux.org/wiki/APKBUILD_examples
1314

@@ -133,9 +134,9 @@ check() {
133134
# The built application and support files should be installed into $pkgdir.
134135
package() {
135136
echo "Installing packges to ${pkgdir}"
136-
mkdir -p "${pkgdir}/usr/bin"
137+
mkdir -p "${pkgdir}/${installdir}"
137138
for cmd in ${exe}; do
138-
install -m 755 "$(realpath "${srcdir}/${cmd}")" "${pkgdir}/usr/bin/${cmd}"
139+
install -m 755 "$(realpath "${srcdir}/${cmd}")" "${pkgdir}/${installdir}/${cmd}"
139140
done
140141
echo "Binaries staged for installation in ${pkgdir}"
141142
find "${pkgdir}"

codefresh/Makefile

+1
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,4 @@ mtime:
1818
touchtime=$$(date -d @$$unixtime +'%Y%m%d%H%M.%S'); \
1919
touch -t $$touchtime $$filename; \
2020
done
21+

tasks/Makefile.apk

+33-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,27 @@
11
# APK
2-
export PACKAGER_PRIVKEY ?= $(CURDIR)/../../key.rsa
2+
3+
4+
ifeq ($(CI),)
5+
export PACKAGER_PRIVKEY_DIR ?= /packages/apk
6+
export PACKAGER ?= [email protected]
7+
export PACKAGER_PRIVKEY ?= $(PACKAGER_PRIVKEY_DIR)/$(PACKAGER).rsa
8+
export PACKAGER_PUBKEY ?= $(APK_PACKAGES_PATH)/$(PACKAGER).rsa.pub
9+
export PACKAGER_PUBKEY_INSTALLED ?= /etc/apk/keys/$(PACKAGER).rsa.pub
10+
11+
$(PACKAGER_PRIVKEY) localkey:
12+
openssl genrsa -out $(PACKAGER_PRIVKEY) 2048
13+
14+
$(PACKAGER_PUBKEY): $(PACKAGER_PRIVKEY)
15+
mkdir -p $(APK_PACKAGES_PATH)
16+
chmod 777 $(APK_PACKAGES_PATH)
17+
openssl rsa -in $(PACKAGER_PRIVKEY) -pubout > $(PACKAGER_PUBKEY)
18+
19+
$(PACKAGER_PUBKEY_INSTALLED): $(PACKAGER_PUBKEY)
20+
chmod 666 $(PACKAGER_PRIVKEY) $(PACKAGER_PUBKEY)
21+
cp $(PACKAGER_PUBKEY) $(PACKAGER_PUBKEY_INSTALLED)
22+
23+
endif
24+
325
export APK_TEMPLATE_PATH ?= ../../apk/templates/
426
export APK_BUILD_TEMPLATE ?= APKBUILD.github-binary
527
export APK_PACKAGES_PATH ?= /tmp/packages
@@ -26,23 +48,31 @@ apk/build:
2648
cd $(APK_TMP_DIR) && \
2749
sudo -E -H -u nobody abuild -c -r -P $(APK_PACKAGES_PATH)
2850

51+
apk/testinstall:
52+
@echo '* Verify package can be installed:'
53+
apk add --virtual buildtest $(APK_PACKAGE)
54+
@echo '* Verify package can be uninstalled:'
55+
apk del buildtest
56+
2957
apk/clean:
3058
@find $(APK_PACKAGES_PATH) -type f -name APKINDEX.tar.gz -delete
59+
apk del buildtest || true
3160
rm -rf $(APK_TMP_DIR)
3261
mkdir -p $(APK_TMP_DIR)
3362

3463
apk/reset:
64+
apk del buildtest || true
3565
rm -rf $(APK_PACKAGE)
3666

3767
.PHONY : apk
38-
apk: $(APK_PACKAGE)
68+
apk: $(PACKAGER_PRIVKEY) $(PACKAGER_PUBKEY_INSTALLED) $(APK_PACKAGE)
3969
@exit 0
4070

4171
# Rebuild the `.apk` when it's older than the Makefile, VERSION, or RELEASE files
4272
$(APK_PACKAGE): Makefile VERSION RELEASE
4373
@echo "Building $@"
4474
ls -l $@ Makefile VERSION RELEASE || true
45-
$(MAKE) info apk/prepare apk/checksum apk/build apk/clean
75+
$(MAKE) info apk/prepare apk/checksum apk/build apk/testinstall apk/clean
4676

4777
package/prepare::
4878
@exit 0

vendor/Makefile

-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ APK_PACKAGE_REPOS ?= $(addprefix $(APK_PACKAGES_PATH)/,$(REPOS))
55
APK_PACKAGE_INDEX ?= $(addsuffix /APKINDEX.tar.gz,$(APK_PACKAGE_REPOS))
66
APK_PACKAGES ?= $(wildcard $(addsuffix /*.apk,$(APK_PACKAGE_REPOS)))
77

8-
export PACKAGER_PRIVKEY ?= $(CURDIR)/../key.rsa
9-
108
default: build
119

1210
## Install alpine build deps

vendor/kops-1.12/Makefile

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
export PACKAGE_NAME = kops-1.12
1+
export MASTER_PACKAGE_NAME = kops
2+
export MAJOR_VERSION = 1.12
3+
export PACKAGE_NAME = $(MASTER_PACKAGE_NAME)-$(MAJOR_VERSION)
24
export DOWNLOAD_URL = https://github.com/kubernetes/kops/releases/download/$(PACKAGE_VERSION)/kops-$(OS)-$(ARCH)
35

46
include ../../tasks/Makefile.package
@@ -9,7 +11,8 @@ include ../../tasks/Makefile.apk
911
export VENDOR = kubernetes
1012
export APK_BUILD_TEMPLATE = APKBUILD.github-binary
1113
export APKBUILD_DEPENDS += dpkg
12-
export APKBUILD_INSTALL_SCRIPTS += $(PACKAGE_NAME).post-install $(PACKAGE_NAME).post-deinstall
14+
export APKBUILD_INSTALL_SCRIPTS = $(PACKAGE_NAME).post-install $(PACKAGE_NAME).post-deinstall
15+
export INSTALL_DIR = /usr/share/${MASTER_PACKAGE_NAME}/${MAJOR_VERSION}/bin
1316

1417
install:
1518
$(call download_binary)
+4-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
#!/bin/sh
22
# This is an Alpine `deinstall` hook that removes the alternative
3-
PACKAGE_NAME=kops
3+
MASTER_PACKAGE_NAME=kops
44
MAJOR_VERSION=1.12
5-
INSTALL_DIR=/usr/local/${PACKAGE_NAME}/${MAJOR_VERSION}/bin
6-
update-alternatives --remove ${PACKAGE_NAME}-${MAJOR_VERSION} ${INSTALL_DIR}/${PACKAGE_NAME} --quiet
5+
PACKAGE_NAME=${MASTER_PACKAGE_NAME}-${MAJOR_VERSION}
6+
INSTALL_DIR=/usr/share/${MASTER_PACKAGE_NAME}/${MAJOR_VERSION}/bin
7+
update-alternatives --remove ${MASTER_PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} --quiet
78
exit 0
+6-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
#!/bin/sh
2-
# This is an Alpine Package `post-install` hook that installs an alternative into `/usr/local/${PACKAGE_NAME}/$version/bin`
3-
PACKAGE_NAME=kops
2+
# This is an Alpine Package `post-install` hook that links
3+
# an alternative from `/usr/share/${PACKAGE_NAME}/$version/bin` into `/usr/bin/`
4+
MASTER_PACKAGE_NAME=kops
45
MAJOR_VERSION=1.12
5-
INSTALL_DIR=/usr/local/${PACKAGE_NAME}/${MAJOR_VERSION}/bin
6+
PACKAGE_NAME=${MASTER_PACKAGE_NAME}-${MAJOR_VERSION}
7+
INSTALL_DIR=/usr/share/${MASTER_PACKAGE_NAME}/${MAJOR_VERSION}/bin
68
mkdir -p ${INSTALL_DIR}
7-
update-alternatives --install /usr/bin/${PACKAGE_NAME}-${MAJOR_VERSION} ${PACKAGE_NAME}-${MAJOR_VERSION} ${INSTALL_DIR}/${PACKAGE_NAME} 1
9+
update-alternatives --install /usr/bin/${MASTER_PACKAGE_NAME} ${MASTER_PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} 12
810
exit 0

vendor/kops/Makefile

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ include ../../tasks/Makefile.apk
66
export VENDOR ?= kubernetes
77
export DOWNLOAD_URL ?= $(PACKAGE_REPO_URL)/releases/download/$(PACKAGE_VERSION)/$(PACKAGE_NAME)-$(OS)-$(ARCH)
88
export APK_BUILD_TEMPLATE ?= APKBUILD.github-binary
9+
export APKBUILD_DEPENDS += dpkg
10+
export APKBUILD_INSTALL_SCRIPTS = $(PACKAGE_NAME).post-install $(PACKAGE_NAME).post-deinstall
11+
export MAJOR_VERSION = latest
12+
export INSTALL_DIR = /usr/share/${PACKAGE_NAME}/${MAJOR_VERSION}/bin
913

1014
install:
1115
$(call download_binary)

vendor/kops/kops.post-deinstall

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/sh
2+
# This is an Alpine `deinstall` hook that removes the alternative
3+
MASTER_PACKAGE_NAME=kops
4+
MAJOR_VERSION=latest
5+
PACKAGE_NAME=${MASTER_PACKAGE_NAME}
6+
INSTALL_DIR=/usr/share/${PACKAGE_NAME}/${MAJOR_VERSION}/bin
7+
update-alternatives --remove ${MASTER_PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} --quiet
8+
exit 0

vendor/kops/kops.post-install

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/bin/sh
2+
# This is an Alpine Package `post-install` hook that links
3+
# an alternative from `/usr/share/${PACKAGE_NAME}/$version/bin` into `/usr/bin/`
4+
MASTER_PACKAGE_NAME=kops
5+
MAJOR_VERSION=latest
6+
PACKAGE_NAME=${MASTER_PACKAGE_NAME}
7+
INSTALL_DIR=/usr/share/${MASTER_PACKAGE_NAME}/${MAJOR_VERSION}/bin
8+
mkdir -p ${INSTALL_DIR}
9+
update-alternatives --install /usr/bin/${MASTER_PACKAGE_NAME} ${MASTER_PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} 1
10+
exit 0

vendor/kubectl-1.13/Makefile

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
export PACKAGE_NAME = kubectl-1.13
1+
export MASTER_PACKAGE_NAME = kubectl
2+
export MAJOR_VERSION = 1.13
3+
export PACKAGE_NAME = $(MASTER_PACKAGE_NAME)-$(MAJOR_VERSION)
24
export PACKAGE_REPO_NAME = kubernetes
35

46
include ../../tasks/Makefile.package
@@ -9,7 +11,8 @@ export VENDOR = kubernetes
911
export DOWNLOAD_URL = https://storage.googleapis.com/kubernetes-release/release/v$(PACKAGE_VERSION)/bin/$(OS)/$(ARCH)/kubectl
1012
export APK_BUILD_TEMPLATE = APKBUILD.github-binary
1113
export APKBUILD_DEPENDS += dpkg
12-
export APKBUILD_INSTALL_SCRIPTS += $(PACKAGE_NAME).post-install $(PACKAGE_NAME).post-deinstall
14+
export APKBUILD_INSTALL_SCRIPTS = $(PACKAGE_NAME).post-install $(PACKAGE_NAME).post-deinstall
15+
export INSTALL_DIR = /usr/share/${MASTER_PACKAGE_NAME}/${MAJOR_VERSION}/bin
1316

1417
install:
1518
$(call download_binary)
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
#!/bin/sh
22
# This is an Alpine `deinstall` hook that removes the alternative
3-
PACKAGE_NAME=kubectl
3+
MASTER_PACKAGE_NAME=kubectl
44
MAJOR_VERSION=1.13
5-
INSTALL_DIR=/usr/local/${PACKAGE_NAME}/${MAJOR_VERSION}/bin
6-
update-alternatives --remove ${PACKAGE_NAME}-${MAJOR_VERSION} ${INSTALL_DIR}/${PACKAGE_NAME} --quiet
5+
PACKAGE_NAME=${MASTER_PACKAGE_NAME}-${MAJOR_VERSION}
6+
INSTALL_DIR=/usr/share/${MASTER_PACKAGE_NAME}/${MAJOR_VERSION}/bin
77
update-alternatives --remove ${PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} --quiet
8+
update-alternatives --remove ${MASTER_PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} --quiet
89
exit 0
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
#!/bin/sh
2-
# This is an Alpine Package `post-install` hook that installs an alternative into `/usr/local/${PACKAGE_NAME}/$version/bin`
3-
PACKAGE_NAME=kubectl
2+
# This is an Alpine Package `post-install` hook that links
3+
# an alternative from `/usr/share/${PACKAGE_NAME}/$version/bin` into `/usr/bin/`
4+
MASTER_PACKAGE_NAME=kubectl
45
MAJOR_VERSION=1.13
5-
INSTALL_DIR=/usr/local/${PACKAGE_NAME}/${MAJOR_VERSION}/bin
6+
PACKAGE_NAME=${MASTER_PACKAGE_NAME}-${MAJOR_VERSION}
7+
INSTALL_DIR=/usr/share/${MASTER_PACKAGE_NAME}/${MAJOR_VERSION}/bin
8+
69
mkdir -p ${INSTALL_DIR}
7-
update-alternatives --install /usr/bin/${PACKAGE_NAME}-${MAJOR_VERSION} ${PACKAGE_NAME}-${MAJOR_VERSION} ${INSTALL_DIR}/${PACKAGE_NAME} 1
8-
update-alternatives --install /usr/bin/${PACKAGE_NAME} ${PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} 13
10+
update-alternatives --install /usr/bin/${PACKAGE_NAME} ${PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} 1
11+
update-alternatives --install /usr/bin/${MASTER_PACKAGE_NAME} ${MASTER_PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} 13
912
exit 0

vendor/kubectl-1.14/Makefile

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
export PACKAGE_NAME = kubectl-1.14
1+
export MASTER_PACKAGE_NAME = kubectl
2+
export MAJOR_VERSION = 1.14
3+
export PACKAGE_NAME = $(MASTER_PACKAGE_NAME)-$(MAJOR_VERSION)
24
export PACKAGE_REPO_NAME = kubernetes
35

46
include ../../tasks/Makefile.package
@@ -9,7 +11,8 @@ export VENDOR = kubernetes
911
export DOWNLOAD_URL = https://storage.googleapis.com/kubernetes-release/release/v$(PACKAGE_VERSION)/bin/$(OS)/$(ARCH)/kubectl
1012
export APK_BUILD_TEMPLATE = APKBUILD.github-binary
1113
export APKBUILD_DEPENDS += dpkg
12-
export APKBUILD_INSTALL_SCRIPTS += $(PACKAGE_NAME).post-install $(PACKAGE_NAME).post-deinstall
14+
export APKBUILD_INSTALL_SCRIPTS = $(PACKAGE_NAME).post-install $(PACKAGE_NAME).post-deinstall
15+
export INSTALL_DIR = /usr/share/${MASTER_PACKAGE_NAME}/${MAJOR_VERSION}/bin
1316

1417
install:
1518
$(call download_binary)
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
#!/bin/sh
22
# This is an Alpine `deinstall` hook that removes the alternative
3-
PACKAGE_NAME=kubectl
4-
MAJOR_VERSION=1.14
5-
INSTALL_DIR=/usr/local/${PACKAGE_NAME}/${MAJOR_VERSION}/bin
6-
update-alternatives --remove ${PACKAGE_NAME}-${MAJOR_VERSION} ${INSTALL_DIR}/${PACKAGE_NAME} --quiet
3+
MASTER_PACKAGE_NAME=kubectl
4+
MAJOR_VERSION=1.13
5+
PACKAGE_NAME=${MASTER_PACKAGE_NAME}-${MAJOR_VERSION}
6+
INSTALL_DIR=/usr/share/${MASTER_PACKAGE_NAME}/${MAJOR_VERSION}/bin
77
update-alternatives --remove ${PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} --quiet
8+
update-alternatives --remove ${MASTER_PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} --quiet
89
exit 0
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
#!/bin/sh
2-
# This is an Alpine Package `post-install` hook that installs an alternative into `/usr/local/${PACKAGE_NAME}/$version/bin`
3-
PACKAGE_NAME=kubectl
2+
# This is an Alpine Package `post-install` hook that links
3+
# an alternative from `/usr/share/${PACKAGE_NAME}/$version/bin` into `/usr/bin/`
4+
MASTER_PACKAGE_NAME=kubectl
45
MAJOR_VERSION=1.14
5-
INSTALL_DIR=/usr/local/${PACKAGE_NAME}/${MAJOR_VERSION}/bin
6+
PACKAGE_NAME=${MASTER_PACKAGE_NAME}-${MAJOR_VERSION}
7+
INSTALL_DIR=/usr/share/${MASTER_PACKAGE_NAME}/${MAJOR_VERSION}/bin
8+
69
mkdir -p ${INSTALL_DIR}
7-
update-alternatives --install /usr/bin/${PACKAGE_NAME}-${MAJOR_VERSION} ${PACKAGE_NAME}-${MAJOR_VERSION} ${INSTALL_DIR}/${PACKAGE_NAME} 1
8-
update-alternatives --install /usr/bin/${PACKAGE_NAME} ${PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} 14
10+
update-alternatives --install /usr/bin/${PACKAGE_NAME} ${PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} 1
11+
update-alternatives --install /usr/bin/${MASTER_PACKAGE_NAME} ${MASTER_PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} 14
912
exit 0

vendor/kubectl/Makefile

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ export VENDOR = kubernetes
88
export DOWNLOAD_URL = https://storage.googleapis.com/kubernetes-release/release/v$(PACKAGE_VERSION)/bin/$(OS)/$(ARCH)/$(PACKAGE_NAME)
99
export APK_BUILD_TEMPLATE = APKBUILD.github-binary
1010
export APKBUILD_DEPENDS += dpkg
11-
export APKBUILD_INSTALL_SCRIPTS += $(PACKAGE_NAME).post-install $(PACKAGE_NAME).post-deinstall
11+
export APKBUILD_INSTALL_SCRIPTS = $(PACKAGE_NAME).post-install $(PACKAGE_NAME).post-deinstall
12+
export MAJOR_VERSION = latest
13+
export INSTALL_DIR = /usr/share/${PACKAGE_NAME}/${MAJOR_VERSION}/bin
1214

1315
install:
1416
$(call download_binary)

vendor/kubectl/kubectl.post-deinstall

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
#!/bin/sh
22
# This is an Alpine `deinstall` hook that removes the alternative
3-
PACKAGE_NAME=kubectl
4-
MAJOR_VERSION=default
5-
INSTALL_DIR=/usr/local/${PACKAGE_NAME}/${MAJOR_VERSION}/bin
6-
update-alternatives --remove ${PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} --quiet
3+
MASTER_PACKAGE_NAME=kubectl
4+
MAJOR_VERSION=latest
5+
PACKAGE_NAME=${MASTER_PACKAGE_NAME}
6+
INSTALL_DIR=/usr/share/${PACKAGE_NAME}/${MAJOR_VERSION}/bin
7+
update-alternatives --remove ${MASTER_PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} --quiet
78
exit 0

vendor/kubectl/kubectl.post-install

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
#!/bin/sh
2-
# This is an Alpine Package `post-install` hook that installs an alternative into `/usr/local/${PACKAGE_NAME}/$version/bin`
3-
PACKAGE_NAME=kubectl
4-
MAJOR_VERSION=default
5-
INSTALL_DIR=/usr/local/${PACKAGE_NAME}/${MAJOR_VERSION}/bin
2+
# This is an Alpine Package `post-install` hook that links
3+
# an alternative from `/usr/share/${PACKAGE_NAME}/$version/bin` into `/usr/bin/`
4+
MASTER_PACKAGE_NAME=kubectl
5+
MAJOR_VERSION=latest
6+
PACKAGE_NAME=${MASTER_PACKAGE_NAME}
7+
INSTALL_DIR=/usr/share/${MASTER_PACKAGE_NAME}/${MAJOR_VERSION}/bin
68
mkdir -p ${INSTALL_DIR}
7-
update-alternatives --install /usr/bin/${PACKAGE_NAME} ${PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} 1
9+
update-alternatives --install /usr/bin/${MASTER_PACKAGE_NAME} ${MASTER_PACKAGE_NAME} ${INSTALL_DIR}/${PACKAGE_NAME} 1
810
exit 0

0 commit comments

Comments
 (0)