summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2009-02-11 16:02:19 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2009-02-11 16:02:19 +0000
commit73fe3d0a6e701560d50e4d75071c4569d84df69d (patch)
treeb401093ca3e4ed9a9329d19d491414a0791d2566
parent4ed11bd492f63eee11861affbf6e7905a57477a1 (diff)
downloadabuild-73fe3d0a6e701560d50e4d75071c4569d84df69d.tar.bz2
abuild-73fe3d0a6e701560d50e4d75071c4569d84df69d.tar.xz
alpine.mk: build repositories before building iso
Use the built repositories as source for the iso components rather than just pick whats in a given dir.
-rwxr-xr-xalpine.mk51
-rwxr-xr-xinitramfs-init12
2 files changed, 42 insertions, 21 deletions
diff --git a/alpine.mk b/alpine.mk
index 7fb6d55..3395257 100755
--- a/alpine.mk
+++ b/alpine.mk
@@ -7,19 +7,27 @@ ALPINE_RELEASE ?= $(BUILD_DATE)
ALPINE_NAME ?= alpine-test
DESTDIR ?= $(shell pwd)/isotmp
APORTS_DIR ?= $(HOME)/aports
-APKDIRS ?= ../aports/core/*/
+REPOS ?= core extra
+
+# this might need to change...
+APKDIRS ?= $(REPOS_DIR)/*/
ISO ?= $(ALPINE_NAME)-$(ALPINE_RELEASE).iso
ISO_LINK ?= $(ALPINE_NAME).iso
ISO_DIR := $(DESTDIR)/isofs
+REPOS_DIR := $(ISO_DIR)/packages
-find_apk = $(firstword $(wildcard $(addprefix $(APKDIRS),$(1)-[0-9]*.apk)))
+#find_apk = $(firstword $(wildcard $(addprefix $(APKDIRS),$(1)-[0-9]*.apk)))
+# limitations for find_apk:
+# must be in core repository
+# can not be a subpackage
+find_apk = $(shell . $(APORTS_DIR)/core/$(1)/APKBUILD && echo $(REPOS_DIR)/core/$(1)-$$pkgver-r$$pkgrel.apk)
KERNEL_FLAVOR ?= grsec
KERNEL_PKGNAME ?= linux-$(KERNEL_FLAVOR)
-KERNEL_NAME := $(subst linux-,,$(KERNEL_PKGNAME))
+KERNEL_NAME := $(KERNEL_FLAVOR)
KERNEL_APK := $(call find_apk,$(KERNEL_PKGNAME))
-MODULE_APK := $(wildcard $(subst /$(KERNEL_PKGNAME)-,/$(KERNEL_PKGNAME)-mod-,$(KERNEL_APK)))
+MODULE_APK := $(subst /$(KERNEL_PKGNAME)-,/$(KERNEL_PKGNAME)-mod-,$(KERNEL_APK))
KERNEL := $(word 3,$(subst -, ,$(notdir $(KERNEL_APK))))-$(word 2,$(subst -, ,$(notdir $(KERNEL_APK))))
ALPINEBASELAYOUT_APK := $(call find_apk,alpine-baselayout)
@@ -27,12 +35,13 @@ UCLIBC_APK := $(call find_apk,uclibc)
BUSYBOX_APK := $(call find_apk,busybox)
APK_TOOLS_APK := $(call find_apk,apk-tools)
-SOURCE_APKS := $(wildcard $(APKDIRS)/*apk)
-APK_BIN := $(shell which apk)
+SOURCE_APKBUILDS := $(wildcard $(addprefix $(APORTS_DIR)/,$(REPOS))/*/APKBUILD)
+SOURCE_APKS = $(wildcard $(APKDIRS)/*apk)
+#APK_BIN := $(shell which apk)
-ifneq ($(words $(KERNEL_APK) $(MODULE_APK) $(ALPINEBASELAYOUT_APK) $(UCLIBC_APK) $(BUSYBOX_APK) $(APK_TOOLS_APK)),6)
-$(error I did not find all APKs which I need.)
-endif
+#ifneq ($(words $(KERNEL_APK) $(MODULE_APK) $(ALPINEBASELAYOUT_APK) $(UCLIBC_APK) $(BUSYBOX_APK) $(APK_TOOLS_APK)),6)
+#$(error I did not find all APKs which I need.)
+#endif
all: $(ISO)
@@ -57,6 +66,7 @@ endif
@echo "ALPINE_RELEASE: $(ALPINE_RELEASE)"
@echo "KERNEL_FLAVOR: $(KERNEL_FLAVOR)"
@echo "APORTS_DIR: $(APORTS_DIR)"
+ @echo "KERNEL: $(KERNEL)"
@echo
clean:
@@ -67,18 +77,24 @@ clean:
#
# Repos
#
-REPOS_DIR := $(ISO_DIR)/packages
+repos: $(REPOS_DIRSTAMP)
+
REPOS_DIRSTAMP := $(DESTDIR)/stamp.repos
+$(REPOS_DIRSTAMP): $(SOURCE_APKBUILDS)
+ @echo "==> repositories: $(REPOS)"
+ @buildrepo -p -a $(APORTS_DIR) -d $(REPOS_DIR) $(REPOS)
#
# Modloop
#
+modloop: $(MODLOOP)
+
MODLOOP := $(ISO_DIR)/boot/modloop.cmg
MODLOOP_DIR := $(DESTDIR)/modloop
MODLOOP_DIRSTAMP := $(DESTDIR)/stamp.modloop
-$(MODLOOP_DIRSTAMP): $(MODULE_APK)
- @echo "==> modloop: prepare modules $(notdir $(MODULE_APK))"
+$(MODLOOP_DIRSTAMP): $(REPOS_DIRSTAMP) $(MODULE_APK)
+ @echo "==> modloop: prepare $(KERNEL) modules $(notdir $(MODULE_APK))"
@rm -rf $(MODLOOP_DIR)
@mkdir -p $(MODLOOP_DIR)/lib/modules/
@tar -C $(MODLOOP_DIR) -xzf $(MODULE_APK)
@@ -91,12 +107,12 @@ $(MODLOOP): $(MODLOOP_DIRSTAMP)
@mkdir -p $(dir $(MODLOOP))
@mkcramfs $(MODLOOP_DIR)/lib $(MODLOOP)
-modloop: $(MODLOOP)
#
# Initramfs rules
#
+initfs: $(INITFS)
-INITFS := $(ISO_DIR)/boot/initramfs.gz
+INITFS := $(ISO_DIR)/boot/$(KERNEL_NAME).gz
INITFS_DIRSTAMP := $(DESTDIR)/stamp.initfs
INITFS_DIR := $(DESTDIR)/initfs
@@ -117,7 +133,7 @@ $(INITFS_DIRSTAMP): $(INITFS_APKS)
tar -C $(INITFS_DIR) -xzf $$apk ; \
done
@rm -f "$(INITFS_DIR)/.PKGINFO"
- @mknod $(INITFS_DIR)/dev/null c 1 3
+# @mknod $(INITFS_DIR)/dev/null c 1 3
@mkdir -p "$(INITFS_DIR)/etc"
@echo floppy >> "$(INITFS_DIR)/etc/modules"
@touch $(INITFS_DIRSTAMP)
@@ -162,7 +178,6 @@ $(INITFS): $(INITFS_DIRSTAMP) $(INITFS_DIR)/init $(INITFS_DIR)/sbin/apk $(INITFS
@echo "==> initramfs: creating $(notdir $(INITFS))"
@(cd $(INITFS_DIR) && find . | cpio -o -H newc | gzip -9) > $(INITFS)
-initfs: $(INITFS)
#
# ISO rules
#
@@ -183,8 +198,8 @@ $(ISOLINUX_CFG):
@echo "prompt 1" >>$(ISOLINUX_CFG)
@echo "default $(KERNEL_NAME)" >>$(ISOLINUX_CFG)
@echo "label $(KERNEL_NAME)" >>$(ISOLINUX_CFG)
- @echo " kernel /boot/$(KERNAL_NAME)" >>$(ISOLINUX_CFG)
- @echo " append initrd=/boot/initramfs.gz alpine_dev=cdrom modules=floppy quiet" >>$(ISOLINUX_CFG)
+ @echo " kernel /boot/$(KERNEL_NAME)" >>$(ISOLINUX_CFG)
+ @echo " append initrd=/boot/$(KERNEL_NAME).gz alpine_dev=cdrom modules=floppy quiet" >>$(ISOLINUX_CFG)
ISO_KERNEL := $(ISO_DIR)/boot/$(KERNEL_NAME)
ISO_APKS := $(ISO_DIR)/apks
diff --git a/initramfs-init b/initramfs-init
index e3fd2ca..b14477d 100755
--- a/initramfs-init
+++ b/initramfs-init
@@ -8,6 +8,9 @@ SINGLEMODE=no
# basic environment
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
+# needed devs
+mknod /dev/null c 1 3
+
# basic mounts
mount -t proc -o noexec,nosuid,nodev proc /proc
mount -t sysfs -o noexec,nosuid,nodev sysfs /sys
@@ -153,8 +156,11 @@ fi
# install new root
ebegin "Installing packages to root filesystem"
-apk add --root /newroot --repository /media/$ALPINE_DEV/apks \
- --initdb --quiet --progress $pkgs
+mkdir -p /etc/apk
+for i in /media/$ALPINE_DEV/packages/*; do
+ echo $i >> /etc/apk/repositories
+done
+apk add --root /newroot --initdb --quiet --progress $pkgs
eend $?
# copy alpine release info
@@ -163,7 +169,7 @@ ln -sf /.alpine-release $NEWROOT/etc/alpine-release
# if there is no repositories file, then use the default
if ! [ -f $NEWROOT/etc/apk/repositories ]; then
- echo /media/$ALPINE_DEV/apks > $NEWROOT/etc/apk/repositories
+ cp /etc/apk/repositories $NEWROOT/etc/apk/repositories
fi
# switch over to new root