From 261787abcdc52be356fa96597c30500133c899ef Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Tue, 2 Jun 2009 11:13:35 +0000 Subject: alpine.mk: build iso from binary packages in system repository This is so you can build the iso image without having the aports tree. --- alpine.mk | 82 ++++++++++++++++++--------------------------------------------- 1 file changed, 23 insertions(+), 59 deletions(-) diff --git a/alpine.mk b/alpine.mk index 4f45660..bdcfa38 100755 --- a/alpine.mk +++ b/alpine.mk @@ -7,25 +7,19 @@ ALPINE_RELEASE ?= $(BUILD_DATE) ALPINE_NAME ?= alpine-test ALPINE_ARCH := i386 DESTDIR ?= $(shell pwd)/isotmp -APORTS_DIR ?= $(HOME)/aports + REPOS ?= core extra SUDO = sudo -# this might need to change... -APKDIRS ?= $(REPOS_DIR)/*/ - ISO ?= $(ALPINE_NAME)-$(ALPINE_RELEASE)-$(ALPINE_ARCH).iso ISO_LINK ?= $(ALPINE_NAME).iso ISO_DIR := $(DESTDIR)/isofs -REPOS_DIR ?= $(HOME)/packages +ISO_PKGDIR := $(ISO_DIR)/apks -# limitations for find_apk: -# can not be a subpackage -find_aport = $(firstword $(wildcard $(APORTS_DIR)/*/$(1))) -find_repo = $(subst $(APORTS_DIR),$(REPOS_DIR),$(dir $(call find_aport,$(1)))) -find_apk = $(shell . $(call find_aport,$(1))/APKBUILD ;\ - echo $(call find_repo,$(1))/$(1)-$$pkgver-r$$pkgrel.apk) +find_apk_ver = $(shell apk search $(1) | sort | uniq) +find_apk_file = $(addsuffix .apk,$(call find_apk_ver,$(1))) +find_apk = $(addprefix $(ISO_PKGDIR)/,$(call find_apk_file,$(1))) KERNEL_FLAVOR ?= grsec KERNEL_PKGNAME ?= linux-$(KERNEL_FLAVOR) @@ -49,19 +43,11 @@ SYSLINUX_APK := $(call find_apk,syslinux) STRACE_APK := $(call find_apk,strace) ACCT_APK := $(call find_apk,acct) -APORTS_DIR ?= $(HOME)/aports -REPOS ?= core extra -APKS_FILTER := | grep -v -- '-dev$$' | grep -v 'sources' -APKBUILDS := $(addsuffix /*/APKBUILD,$(addprefix $(APORTS_DIR)/,$(REPOS))) -APKS := $(shell for i in $(APKBUILDS); do cd $${i%/*}; \ - . $$i; \ - for j in $$pkgname $$subpackages; do \ - echo $${j%:*}; \ - done; \ - done $(APKS_FILTER) | sort | uniq) - -#test: -# echo $(APKS) +APKS_FILTER ?= | grep -v -- '-dev$$' | grep -v 'sources' + +APKS ?= '*' +APK_FILES := $(call find_apk,$(APKS)) +APK_REPO ?= --repo /var/cache/abuild/apks all: isofs @@ -85,7 +71,6 @@ endif @echo "ALPINE_NAME: $(ALPINE_NAME)" @echo "ALPINE_RELEASE: $(ALPINE_RELEASE)" @echo "KERNEL_FLAVOR: $(KERNEL_FLAVOR)" - @echo "APORTS_DIR: $(APORTS_DIR)" @echo "KERNEL: $(KERNEL)" @echo @@ -94,18 +79,12 @@ clean: $(INITFS) $(INITFS_DIRSTAMP) $(INITFS_DIR) \ $(ISO_DIR) $(REPOS_DIRSTAMP) $(ISO_REPOS_DIRSTAMP) -# -# Repos -# -repos: $(REPOS_DIRSTAMP) -REPOS_DIRSTAMP := $(DESTDIR)/stamp.repos -$(REPOS_DIRSTAMP): $(SOURCE_APKBUILDS) - @echo "==> repositories: $(REPOS)" - @buildrepo -p -a $(APORTS_DIR) -d $(REPOS_DIR) $(REPOS) - @mkdir -p $(dir $@) && touch $@ - -%.apk: $(REPOS_DIRSTAMP) +$(APK_FILES): + @mkdir -p "$(dir $@)";\ + p="$(notdir $(basename $@))";\ + apk fetch $(APK_REPO) -R -v -o "$(dir $@)" $${p%-[0-9]*} +# apk fetch --repo /var/cache/abuild/apks -v -R -o $(ISO_PKGDIR) \ # # Modloop @@ -138,7 +117,6 @@ $(MODLOOP): $(MODLOOP_DIRSTAMP) INITFS := $(ISO_DIR)/boot/$(KERNEL_NAME).gz -#INITFS_DIRSTAMP := $(DESTDIR)/stamp.initfs INITFS_DIR := $(DESTDIR)/initfs INITFS_FEATURES := ata base bootchart cdrom cramfs ext3 ide floppy raid scsi usb @@ -159,7 +137,7 @@ vstemplate: $(VSTEMPLATE) $(VSTEMPLATE): @$(SUDO) rm -rf "$(VSTEMPLATE_DIR)" @$(SUDO) mkdir -p "$(VSTEMPLATE_DIR)" - @$(SUDO) apk add --initdb --root $(VSTEMPLATE_DIR) alpine-baselayout + @$(SUDO) apk add --initdb --root $(VSTEMPLATE_DIR) alpine-baselayout openrc busybox @cd $(VSTEMPLATE_DIR) && $(SUDO) tar -jcf $@ * # @@ -174,8 +152,10 @@ SYSLINUX_CFG := $(ISO_DIR)/syslinux.cfg $(ISOLINUX_BIN): $(SYSLINUX_APK) @echo "==> iso: install isolinux" @mkdir -p $(dir $(ISOLINUX_BIN)) - @tar -O -zxf $(SYSLINUX_APK) usr/share/syslinux/isolinux.bin > $@ -# @cp /usr/share/syslinux/isolinux.bin $(ISOLINUX_BIN) + @for i in $(SYSLINUX_APK); do \ + [ -f "$$i" ] || continue ;\ + tar -O -zxf "$$i" usr/share/syslinux/isolinux.bin > $@ && exit 0;\ + done ; exit 1 $(ISOLINUX_CFG): @echo "==> iso: configure isolinux" @@ -197,33 +177,17 @@ $(SYSLINUX_CFG): @echo " append initrd=/boot/$(KERNEL_NAME).gz alpine_dev=sda1:vfat modules=sd-mod,usb-storage quiet" >>$@ ISO_KERNEL := $(ISO_DIR)/boot/$(KERNEL_NAME) -ISO_PKGDIR := $(ISO_DIR)/apks ISO_REPOS := $(addprefix $(ISO_PKGDIR)/,$(REPOS)) ISO_APKINDEX := $(addsuffix /APK_INDEX.gz,$(ISO_REPOS)) ISO_REPOS_DIRSTAMP := $(DESTDIR)/stamp.isorepos ISOFS_DIRSTAMP := $(DESTDIR)/stamp.isofs -#$(ISO_REPOS_DIRSTAMP): $(addsuffix /APK_INDEX.gz,$(addprefix $(REPOS_DIR)/,$(REPOS))) $(ISO_REPOS_DIRSTAMP): $(ISO_PKGDIR)/APK_INDEX.gz @touch $@ -$(ISO_PKGDIR)/APK_INDEX.gz: - @echo "==> iso: prepare repositories $(REPOS)" -# @rm -rf $(ISO_PKGDIR) -# @mkdir -p $(ISO_REPOS) -# @for r in $(REPOS); do \ -# for a in $(REPOS_DIR)/$$r/*; do \ -# ln -f "$$a" $(ISO_PKGDIR)/$$r/$${a##*/} 2>/dev/null \ -# || cp -r "$$a" $(ISO_PKGDIR)/$$r/$${a##*/} ;\ -# done;\ -# done - mkdir -p $(ISO_PKGDIR) - apk fetch --repo /var/cache/abuild/apks -v -R -o $(ISO_PKGDIR) \ - $(APKS) - apk index $(ISO_PKGDIR)/* | gzip > $@ - -#$(ISO_APKINDEX): $(ISO_REPOS) -# @apk index $(dir $@)/*.apk | gzip -9 > $@ +$(ISO_PKGDIR)/APK_INDEX.gz: $(APK_FILES) + @echo "==> iso: generating repository index" + @apk index $(APK_FILES) | gzip > $@ $(ISO_KERNEL): $(KERNEL_APK) @echo "==> iso: install kernel $(KERNEL)" -- cgit v1.2.3-60-g2f50