forked from synit/synit
Build packages on my own, separate from pmbootstrap
This commit is contained in:
parent
93d02e040a
commit
a7dd8fc0bd
|
@ -0,0 +1,5 @@
|
||||||
|
.build-image.*
|
||||||
|
distfiles/
|
||||||
|
target/
|
||||||
|
synit-apk-key
|
||||||
|
synit-apk-key.pub
|
|
@ -0,0 +1,19 @@
|
||||||
|
ARG DOCKER_ARCH
|
||||||
|
FROM --platform=linux/${DOCKER_ARCH} alpine:latest
|
||||||
|
|
||||||
|
RUN sed -i -e s:https:http:g /etc/apk/repositories
|
||||||
|
ARG http_proxy
|
||||||
|
RUN http_proxy=${http_proxy} apk add bash sudo alpine-sdk linux-headers
|
||||||
|
|
||||||
|
ARG UID
|
||||||
|
ARG BUILD_USER
|
||||||
|
RUN adduser -D -u ${UID} ${BUILD_USER} && addgroup ${BUILD_USER} abuild
|
||||||
|
RUN echo "${BUILD_USER} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||||
|
|
||||||
|
ARG KEYFILE
|
||||||
|
COPY ${KEYFILE}.pub /etc/apk/keys/.
|
||||||
|
RUN mkdir -p /home/${BUILD_USER}/.abuild/
|
||||||
|
RUN echo "PACKAGER_PRIVKEY=/home/${BUILD_USER}/.abuild/signing-key.rsa" >> /home/${BUILD_USER}/.abuild/abuild.conf
|
||||||
|
|
||||||
|
USER ${BUILD_USER}
|
||||||
|
WORKDIR /data
|
|
@ -0,0 +1,68 @@
|
||||||
|
.PHONY: build-image build sign clean veryclean keyfile
|
||||||
|
|
||||||
|
# If you run:
|
||||||
|
# docker run --rm --name squid adricu/alpine-squid
|
||||||
|
# and set DOCKER_SQUID_CONTAINER=squid
|
||||||
|
# then you can avoid repeated downloads of a lot of alpine packages.
|
||||||
|
#
|
||||||
|
DOCKER_SQUID_CONTAINER?=squid
|
||||||
|
ifeq ($(DOCKER_SQUID_CONTAINER),)
|
||||||
|
DOCKER_SQUID_OPTS=
|
||||||
|
else
|
||||||
|
DOCKER_SQUID_OPTS=--link $(DOCKER_SQUID_CONTAINER):squid -e http_proxy=http://squid:3128/
|
||||||
|
HTTP_PROXY=http://$(shell docker inspect squid | preserves-tool convert -o unquoted --select '/ . "NetworkSettings" . "IPAddress"'):3128/
|
||||||
|
endif
|
||||||
|
|
||||||
|
ARCH?=aarch64
|
||||||
|
DOCKER_ARCH=$(shell ./map_docker_arch.sh $(ARCH))
|
||||||
|
KEYFILE?=$(CURDIR)/synit-apk-key
|
||||||
|
UID:=$(shell id -u)
|
||||||
|
GID:=$(shell id -g)
|
||||||
|
BUILD_USER?=build
|
||||||
|
|
||||||
|
DOCKER_CMD=\
|
||||||
|
mkdir -p $(CURDIR)/distfiles && \
|
||||||
|
docker run --platform linux/$(DOCKER_ARCH) -it --rm \
|
||||||
|
$(DOCKER_SQUID_OPTS) \
|
||||||
|
-v `pwd`:/data \
|
||||||
|
-v $(KEYFILE):/home/$(BUILD_USER)/.abuild/signing-key.rsa \
|
||||||
|
-v $(CURDIR)/distfiles:/var/cache/distfiles \
|
||||||
|
synit-build:$(ARCH)
|
||||||
|
|
||||||
|
build: build-image
|
||||||
|
$(DOCKER_CMD) make -f Makefile.internal build
|
||||||
|
|
||||||
|
sign: build-image
|
||||||
|
$(DOCKER_CMD) make -f Makefile.internalsign
|
||||||
|
|
||||||
|
%.apk:
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f .build-image.*
|
||||||
|
-docker rmi synit-build:aarch64
|
||||||
|
-docker rmi synit-build:x86_64
|
||||||
|
-docker rmi synit-build:armv7
|
||||||
|
|
||||||
|
veryclean: clean
|
||||||
|
rm -rf target
|
||||||
|
|
||||||
|
build-image: .build-image.$(ARCH)
|
||||||
|
|
||||||
|
.build-image.$(ARCH): $(KEYFILE)
|
||||||
|
docker buildx build \
|
||||||
|
--platform=linux/$(DOCKER_ARCH) \
|
||||||
|
--build-arg http_proxy=$(HTTP_PROXY) \
|
||||||
|
--build-arg DOCKER_ARCH=$(DOCKER_ARCH) \
|
||||||
|
--build-arg KEYFILE=$(KEYFILE:$(abspath $(dir $(KEYFILE)))/%=%) \
|
||||||
|
--build-arg UID=$(UID) \
|
||||||
|
--build-arg BUILD_USER=$(BUILD_USER) \
|
||||||
|
-t synit-build:$(ARCH) .
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
keyfile: $(KEYFILE)
|
||||||
|
|
||||||
|
$(KEYFILE):
|
||||||
|
docker run -it --rm \
|
||||||
|
-v $(abspath $(dir $(KEYFILE))):/data \
|
||||||
|
alpine \
|
||||||
|
sh -c "apk add abuild && echo /data/$(notdir $(KEYFILE)) | abuild-keygen && chown $(UID):$(GID) /data/$(notdir $(KEYFILE))*"
|
|
@ -0,0 +1,35 @@
|
||||||
|
# Expects to run from *within* alpine. -*- Makefile-gmake -*-
|
||||||
|
|
||||||
|
.PHONY: build sign
|
||||||
|
|
||||||
|
TARGET = $(CURDIR)/target
|
||||||
|
ARCH = $(shell apk --print-arch)
|
||||||
|
ARCH_TARGET = $(TARGET)/packages/$(ARCH)
|
||||||
|
SIGNING_KEY = $(HOME)/.abuild/signing-key.rsa
|
||||||
|
|
||||||
|
PACKAGES = \
|
||||||
|
squeak-vm.apk \
|
||||||
|
|
||||||
|
build: $(PACKAGES) sign
|
||||||
|
|
||||||
|
%.apk: $(ARCH_TARGET)
|
||||||
|
@echo proxy $$http_proxy
|
||||||
|
@cat ~/.abuild/abuild.conf
|
||||||
|
@echo "Building $*..."
|
||||||
|
@cd packages/$* && (unset MAKEFLAGS; abuild -F -P $(TARGET) deps && abuild -P $(TARGET))
|
||||||
|
|
||||||
|
$(ARCH_TARGET):
|
||||||
|
mkdir -p $@
|
||||||
|
|
||||||
|
%.checksum:
|
||||||
|
cd packages/$* && abuild checksum
|
||||||
|
|
||||||
|
sign: $(ARCH_TARGET)
|
||||||
|
rm -f $(ARCH_TARGET)/APKINDEX.tar.gz
|
||||||
|
cd $(ARCH_TARGET) && apk index -o APKINDEX.tar.gz --rewrite-arch $(ARCH) *.apk
|
||||||
|
abuild-sign -q -k $(HOME)/.abuild/signing-key.rsa $(ARCH_TARGET)/APKINDEX.tar.gz
|
||||||
|
|
||||||
|
clean:
|
||||||
|
|
||||||
|
veryclean: clean
|
||||||
|
rm -rf $(ARCH_TARGET)
|
|
@ -0,0 +1 @@
|
||||||
|
# Packaging scripts for PostmarketOS
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
case $1 in
|
||||||
|
aarch64) echo arm64;;
|
||||||
|
x86_64) echo x86_64;;
|
||||||
|
armv7) echo armhf;;
|
||||||
|
*)
|
||||||
|
echo 'ERROR: Unknown Alpine ARCH '"$1" >&2
|
||||||
|
exit 1
|
||||||
|
esac
|
|
@ -0,0 +1,49 @@
|
||||||
|
# Contributor: Tony Garnock-Jones <tonyg@leastfixedpoint.com>
|
||||||
|
# Maintainer: Tony Garnock-Jones <tonyg@leastfixedpoint.com>
|
||||||
|
pkgname=squeak-vm
|
||||||
|
pkgver=202107301330
|
||||||
|
pkgrel=0
|
||||||
|
pkgdesc="Squeak Spur stack (non-JIT) Virtual Machine"
|
||||||
|
url="https://opensmalltalk.org/"
|
||||||
|
arch="all"
|
||||||
|
license="MIT"
|
||||||
|
depends=""
|
||||||
|
makedepends="git bash linux-headers alsa-lib-dev openssl-dev libevdev-dev mesa-dev"
|
||||||
|
source="$pkgname-$pkgver.tar.gz::https://github.com/OpenSmalltalk/opensmalltalk-vm/archive/refs/tags/$pkgver.tar.gz"
|
||||||
|
builddir="$srcdir/opensmalltalk-vm-$pkgver"
|
||||||
|
options="!check"
|
||||||
|
|
||||||
|
build() {
|
||||||
|
PATH=$(echo "$PATH" | tr ':' '\n' | grep -v crossdirect | tr '\n' ':')
|
||||||
|
echo 'false' > ./scripts/checkSCCSversion
|
||||||
|
case "$CARCH" in
|
||||||
|
aarch64*)
|
||||||
|
cd build.linux64ARMv8
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Architecture $CARCH not yet supported"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
cd squeak.stack.spur/build
|
||||||
|
echo y | ./mvm
|
||||||
|
echo n | ./mvm
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
case "$CARCH" in
|
||||||
|
aarch64*)
|
||||||
|
cd products/sqstkspur64ARMv8linuxht
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Architecture $CARCH not yet supported"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
mkdir -p "$pkgdir/usr/lib/squeak"
|
||||||
|
cp -rp lib/squeak/*/. "$pkgdir/usr/lib/squeak/."
|
||||||
|
}
|
||||||
|
|
||||||
|
sha512sums="
|
||||||
|
3ea16d90bc64b53b1e865b7e7e84457d564b60de2b8a2179c52528c1c1a574177a4aa933b634de5dd8d82557ea1bd7e453a119dfabdad133dc47eca7c8ca6aa8 squeak-vm-202107301330.tar.gz
|
||||||
|
"
|
Loading…
Reference in New Issue