summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rules/other/Definitions.make14
-rw-r--r--rules/other/Toplevel.make419
-rw-r--r--rules/post/dump.make43
-rw-r--r--rules/post/export.make3
-rw-r--r--rules/post/get.make10
-rw-r--r--rules/post/images.make242
-rw-r--r--rules/post/mk-devnodes.make44
-rw-r--r--rules/post/plugins.make20
-rw-r--r--rules/post/simulation.make32
-rw-r--r--rules/post/world.make35
10 files changed, 440 insertions, 422 deletions
diff --git a/rules/other/Definitions.make b/rules/other/Definitions.make
index 7af55f115..8626ed019 100644
--- a/rules/other/Definitions.make
+++ b/rules/other/Definitions.make
@@ -16,12 +16,13 @@ M2B=$(STATEDIR)/environment
#
# Select make variables for export to shell (by full name)
#
-M2B_DUMP_VARIABLES := PTXCONF_CONFIGFILE_VERSION
-M2B_DUMP_VARIABLES += PTXCONFIG PTXCONF_SYSROOT_TARGET PTXCONF_PROJECT PTXCONF_PROJECT_VERSION
-M2B_DUMP_VARIABLES += PTXDIST_WORKSPACE PTXDIST_TOPDIR
-M2B_DUMP_VARIABLES += PTXDIST PTXDIST_FULLVERSION
-M2B_DUMP_VARIABLES += RULESDIR SCRIPTSDIR STATEDIR SYSROOT WORKDIR
-M2B_DUMP_VARIABLES += PACKAGES- PACKAGES-y PACKAGES-m
+M2B_DUMP_VARIABLES := \
+ PTXCONF_CONFIGFILE_VERSION \
+ PTXCONFIG PTXCONF_SYSROOT_TARGET PTXCONF_PROJECT PTXCONF_PROJECT_VERSION \
+ PTXDIST_WORKSPACE PTXDIST_TOPDIR \
+ PTXDIST PTXDIST_FULLVERSION \
+ RULESDIR SCRIPTSDIR STATEDIR SYSROOT WORKDIR \
+ PACKAGES- PACKAGES-y PACKAGES-m
#
# Select make variables for export to shell (by suffix)
@@ -39,3 +40,4 @@ add_quote = $(subst $(quote),\$(quote),$(1))
tr_sh = $(strip $(shell echo $(1) | sed 'y%*+%pp%;s%[^_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]%_%g'))
uppercase = $(shell echo $(strip $(1)) | tr "a-z.-" "A-Z__")
+
diff --git a/rules/other/Toplevel.make b/rules/other/Toplevel.make
index 6cd369b04..180a7dede 100644
--- a/rules/other/Toplevel.make
+++ b/rules/other/Toplevel.make
@@ -23,23 +23,6 @@ include $(RULESDIR)/other/Definitions.make
-include $(PLATFORMCONFIG)
# ----------------------------------------------------------------------------
-# Packets for host, cross and target
-# ----------------------------------------------------------------------------
-
-PACKAGES :=
-PACKAGES- :=
-PACKAGES-y :=
-PACKAGES-m :=
-CROSS_PACKAGES :=
-CROSS_PACKAGES- :=
-CROSS_PACKAGES-y :=
-HOST_PACKAGES :=
-HOST_PACKAGES- :=
-HOST_PACKAGES-y :=
-VIRTUAL :=
-
-
-# ----------------------------------------------------------------------------
# Include all rule files
# ----------------------------------------------------------------------------
@@ -58,17 +41,17 @@ include $(PACKAGE_DEP_PRE)
include $(RULESFILES_ALL_MAKE)
include $(PACKAGE_DEP_POST)
-PACKAGES := $(PACKAGES-y) $(PACKAGES-m)
+PACKAGES := $(PACKAGES-y) $(PACKAGES-m)
CROSS_PACKAGES := $(CROSS_PACKAGES-y)
HOST_PACKAGES := $(HOST_PACKAGES-y)
ALL_PACKAGES := \
- $(PACKAGES-) $(PACKAGES-y) $(PACKAGES-m) \
- $(CROSS_PACKAGES-) $(CROSS_PACKAGES-y) \
- $(HOST_PACKAGES-) $(HOST_PACKAGES)
+ $(PACKAGES-) $(PACKAGES-y) $(PACKAGES-m) \
+ $(CROSS_PACKAGES-) $(CROSS_PACKAGES-y) \
+ $(HOST_PACKAGES-) $(HOST_PACKAGES)
SELECTED_PACKAGES := \
- $(PACKAGES-y) $(PACKAGES-m) \
+ $(PACKAGES-y) $(PACKAGES-m) \
$(CROSS_PACKAGES-y) \
$(HOST_PACKAGES-y)
@@ -76,339 +59,6 @@ ifneq ($(wildcard $(POSTRULESDIR)/*.make),)
include $(wildcard $(POSTRULESDIR)/*.make)
endif
-# ----------------------------------------------------------------------------
-# Install targets
-# ----------------------------------------------------------------------------
-
-PACKAGES_GET := $(addsuffix _get,$(PACKAGES))
-PACKAGES_EXTRACT := $(addsuffix _extract,$(PACKAGES))
-PACKAGES_PREPARE := $(addsuffix _prepare,$(PACKAGES))
-PACKAGES_COMPILE := $(addsuffix _compile,$(PACKAGES))
-PACKAGES_TARGETINSTALL := $(addsuffix _targetinstall,$(PACKAGES))
-
-HOST_PACKAGES_GET := $(addsuffix _get,$(HOST_PACKAGES))
-HOST_PACKAGES_EXTRACT := $(addsuffix _extract,$(HOST_PACKAGES))
-HOST_PACKAGES_PREPARE := $(addsuffix _prepare,$(HOST_PACKAGES))
-HOST_PACKAGES_COMPILE := $(addsuffix _compile,$(HOST_PACKAGES))
-HOST_PACKAGES_INSTALL := $(addsuffix _install,$(HOST_PACKAGES))
-
-CROSS_PACKAGES_GET := $(addsuffix _get,$(CROSS_PACKAGES))
-CROSS_PACKAGES_EXTRACT := $(addsuffix _extract,$(CROSS_PACKAGES))
-CROSS_PACKAGES_PREPARE := $(addsuffix _prepare,$(CROSS_PACKAGES))
-CROSS_PACKAGES_COMPILE := $(addsuffix _compile,$(CROSS_PACKAGES))
-CROSS_PACKAGES_INSTALL := $(addsuffix _install,$(CROSS_PACKAGES))
-
-# FIXME: should probably go somewhere else (separate images.make?)
-ifdef PTXCONF_MKNBI_NBI
-MKNBI_EXT = nbi
-else
-MKNBI_EXT = elf
-endif
-
-MKNBI_KERNEL = $(KERNEL_TARGET_PATH)
-
-MKNBI_ROOTFS = $(IMAGEDIR)/root.ext2
-ifdef PTXCONF_IMAGE_EXT2_GZIP
-MKNBI_ROOTFS = $(IMAGEDIR)/root.ext2.gz
-endif
-
-# ----------------------------------------------------------------------------
-# Targets
-# ----------------------------------------------------------------------------
-
-get: $(PACKAGES_GET) $(HOST_PACKAGES_GET) $(CROSS_PACKAGES_GET)
-
-dep_output_clean:
- touch $(DEP_OUTPUT)
-
-dep_tree: $(STATEDIR)/dep_tree
-
-$(STATEDIR)/dep_tree:
- @if dot -V 2> /dev/null; then \
- echo "creating dependency graph..."; \
- sort $(DEP_OUTPUT) | uniq | $(PTXDIST_TOPDIR)/scripts/makedeptree | $(DOT) -Tps > $(DEP_TREE_PS); \
- if [ -x "`which poster`" ]; then \
- echo "creating A4 version..."; \
- poster -v -c0\% -mA4 -o$(DEP_TREE_A4_PS) $(DEP_TREE_PS); \
- fi;\
- else \
- echo "Install 'dot' from graphviz packet if you want to have a nice dependency tree"; \
- fi
- @$(call touch, $@)
-
-dep_world: $(HOST_PACKAGES_INSTALL) \
- $(CROSS_PACKAGES_INSTALL) \
- $(PACKAGES_TARGETINSTALL)
- @echo $@ : $^ | sed -e 's/\([^ ]*\)_\([^_]*\)/\1.\2/g' >> $(DEP_OUTPUT)
-
-world: dep_output_clean dep_world dep_tree
-
-host-tools: dep_output_clean $(HOST_PACKAGES_INSTALL) dep_tree
-host-get: getclean $(HOST_PACKAGES_GET)
-host-extract: $(HOST_PACKAGES_EXTRACT)
-host-prepare: $(HOST_PACKAGES_PREPARE)
-host-compile: $(HOST_PACKAGES_COMPILE)
-host-install: $(HOST_PACKAGES_INSTALL)
-
-cross-tools: dep_output_clean $(CROSS_PACKAGES_INSTALL) dep_tree
-cross-get: getclean $(CROSS_PACKAGES_GET)
-cross-extract: $(CROSS_PACKAGES_EXTRACT)
-cross-prepare: $(CROSS_PACKAGES_PREPARE)
-cross-compile: $(CROSS_PACKAGES_COMPILE)
-cross-install: $(CROSS_PACKAGES_INSTALL)
-
-# ----------------------------------------------------------------------------
-# Images
-# ----------------------------------------------------------------------------
-
-DOPERMISSIONS = '{ \
- if ($$1 == "f") \
- printf("chmod %s .%s; chown %s.%s .%s;\n", $$5, $$2, $$3, $$4, $$2); \
- if ($$1 == "n") \
- printf("mkdir -p .`dirname %s`; mknod -m %s .%s %s %s %s; chown %s.%s .%s;\n", $$2, $$5, $$2, $$6, $$7, $$8, $$3, $$4, $$2);}'
-
-
-images: $(STATEDIR)/images
-
-ipkg-push: $(STATEDIR)/ipkg-push
-
-$(STATEDIR)/ipkg-push: $(STATEDIR)/host-ipkg-utils.install
- @$(call targetinfo, $@)
- ( \
- PATH=$(PTXCONF_SYSROOT_CROSS)/bin:$(PTXCONF_SYSROOT_CROSS)/usr/bin:$$PATH; \
- PATH=$(PTXCONF_SYSROOT_HOST)/bin:$(PTXCONF_SYSROOT_HOST)/usr/bin:$$PATH; \
- export $$PATH; \
- $(PTXDIST_TOPDIR)/scripts/ipkg-push \
- --ipkgdir $(call remove_quotes,$(IMAGEDIR)) \
- --repodir $(call remove_quotes,$(PTXCONF_SETUP_IPKG_REPOSITORY)) \
- --revision $(call remove_quotes,$(FULLVERSION)) \
- --project $(call remove_quotes,$(PTXCONF_PROJECT)) \
- --dist $(call remove_quotes,$(PTXCONF_PROJECT)$(PTXCONF_PROJECT_VERSION)); \
- echo; \
- )
- $(call touch, $@)
-
-images_deps = world
-ifdef PTXCONF_IMAGE_IPKG_IMAGE_FROM_REPOSITORY
-images_deps += $(STATEDIR)/ipkg-push
-endif
-
-ifdef PTXCONF_IMAGE_HD_PART1
- GENHDIMARGS = -p $(PTXCONF_IMAGE_HD_PART1_START):$(PTXCONF_IMAGE_HD_PART1_END):$(PTXCONF_IMAGE_HD_PART1_TYPE):$(IMAGEDIR)/root.ext2
-endif
-ifdef PTXCONF_IMAGE_HD_PART2
- GENHDIMARGS += -p $(PTXCONF_IMAGE_HD_PART2_START):$(PTXCONF_IMAGE_HD_PART2_END):$(PTXCONF_IMAGE_HD_PART2_TYPE):
-endif
-ifdef PTXCONF_IMAGE_HD_PART3
- GENHDIMARGS += -p $(PTXCONF_IMAGE_HD_PART3_START):$(PTXCONF_IMAGE_HD_PART3_END):$(PTXCONF_IMAGE_HD_PART3_TYPE):
-endif
-ifdef PTXCONF_IMAGE_HD_PART4
- GENHDIMARGS += -p $(PTXCONF_IMAGE_HD_PART4_START):$(PTXCONF_IMAGE_HD_PART4_END):$(PTXCONF_IMAGE_HD_PART4_TYPE):
-endif
-ifdef PTXCONF_GRUB
- GENHDIMARGS += -m $(GRUB_DIR)/stage1/stage1
- GENHDIMARGS += -n $(GRUB_DIR)/stage2/stage2
-endif
-
-#
-# generate the list of source permission files
-#
-PERMISSION_FILES := $(foreach pkg, $(PACKAGES-y), $(wildcard $(STATEDIR)/$(pkg)*.perms))
-
-#
-# list of all ipkgs being selected for the root image
-#
-IPKG_FILES := $(foreach pkg, $(PACKAGES-y), $(wildcard $(PKGDIR)/$(pkg)*.ipk))
-
-#
-# create one file with all permissions from all permission source files
-#
-$(IMAGEDIR)/permissions: $(PERMISSION_FILES) $(PTXDIST_WORKSPACE)/ptxconfig
- @cat $^ > $@
-
-#
-# to extract the ipkgs we need a dummy config file
-#
-$(IMAGEDIR)/ipkg.conf:
- @echo -e "dest root /\narch $(PTXCONF_ARCH_STRING) 10\narch all 1\narch noarch 1\n" > $@
-
-#
-# Working directory to create any kind of image
-#
-WORKDIR := $(IMAGEDIR)/work_dir
-
-#
-# Create architecture type for mkimge
-# Most architectures are working with label $(PTXCONF_ARCH_STRING)
-# but the i386 family needs "x86" instead!
-#
-ifeq ($(PTXCONF_ARCH_STRING),"i386")
-MKIMAGE_ARCH := x86
-else
-MKIMAGE_ARCH := $(PTXCONF_ARCH_STRING)
-endif
-
-#
-# Define what images should be build
-#
-SEL_ROOTFS-y :=
-SEL_ROOTFS-$(PTXCONF_IMAGE_TGZ) += $(IMAGEDIR)/root.tgz
-SEL_ROOTFS-$(PTXCONF_IMAGE_JFFS2) += $(IMAGEDIR)/root.jffs2
-SEL_ROOTFS-$(PTXCONF_IMAGE_EXT2) += $(IMAGEDIR)/root.ext2
-SEL_ROOTFS-$(PTXCONF_IMAGE_HD) += $(IMAGEDIR)/hd.img
-SEL_ROOTFS-$(PTXCONF_IMAGE_EXT2_GZIP) += $(IMAGEDIR)/root.ext2.gz
-SEL_ROOTFS-$(PTXCONF_IMAGE_UIMAGE) += $(IMAGEDIR)/uRamdisk
-SEL_ROOTFS-$(PTXCONF_IMAGE_CPIO) += $(IMAGEDIR)/initrd.gz
-
-#
-# extract all current ipkgs into the working directory
-#
-$(STATEDIR)/image_working_dir: $(IPKG_FILES) $(IMAGEDIR)/permissions $(IMAGEDIR)/ipkg.conf
- @rm -rf $(WORKDIR)
- @mkdir $(WORKDIR)
- @echo -n "Extracting ipkg packages into working directory..."
- @DESTDIR=$(WORKDIR) $(FAKEROOT) -- $(PTXCONF_SYSROOT_HOST)/bin/ipkg-cl -f $(IMAGEDIR)/ipkg.conf -o $(WORKDIR) install $(IPKG_FILES) 2>&1 >/dev/null
- @$(call touch, $@)
-
-#
-# create the root.tgz image
-#
-$(IMAGEDIR)/root.tgz: $(STATEDIR)/image_working_dir
- @echo -n "Creating root.tgz from working dir..."
- @cd $(WORKDIR); \
- ($(AWK) -F: $(DOPERMISSIONS) $(IMAGEDIR)/permissions && \
- ( echo -n "tar -zcf "; \
- echo -n "$@ ." ) \
- ) | $(FAKEROOT) --
- @echo "done."
-
-#
-# create the JFFS2 image
-#
-$(IMAGEDIR)/root.jffs2: $(STATEDIR)/image_working_dir
- @echo -n "Creating root.jffs2 from working dir..."
- @cd $(WORKDIR); \
- ($(AWK) -F: $(DOPERMISSIONS) $(IMAGEDIR)/permissions && \
- ( \
- echo -n "$(PTXCONF_SYSROOT_HOST)/sbin/mkfs.jffs2 "; \
- echo -n "-d $(WORKDIR) "; \
- echo -n "--eraseblock=$(PTXCONF_IMAGE_JFFS2_BLOCKSIZE) "; \
- echo -n "$(PTXCONF_IMAGE_JFFS2_EXTRA_ARGS) "; \
- echo -n "-o $@" ) \
- ) | $(FAKEROOT) --
- @echo "done."
-
-#
-# create the ext2 image
-#
-$(IMAGEDIR)/root.ext2: $(STATEDIR)/image_working_dir
- @echo -n "Creating root.ext2 from working dir..."
- @cd $(WORKDIR); \
- ($(AWK) -F: $(DOPERMISSIONS) $(IMAGEDIR)/permissions && \
- ( \
- echo -n "$(PTXCONF_SYSROOT_HOST)/bin/genext2fs "; \
- echo -n "-b $(PTXCONF_IMAGE_EXT2_SIZE) "; \
- echo -n "$(PTXCONF_IMAGE_EXT2_EXTRA_ARGS) "; \
- echo -n "-d $(WORKDIR) "; \
- echo "$@" ) \
- ) | $(FAKEROOT) --
- @echo "done."
-
-#
-# TODO
-#
-$(IMAGEDIR)/hd.img: $(IMAGEDIR)/root.ext2
- @echo -n "Creating hdimg from root.ext2"; \
- PATH=$(PTXCONF_SYSROOT_HOST)/bin:$$PATH $(PTXDIST_TOPDIR)/scripts/genhdimg \
- -o $@ $(GENHDIMARGS)
- @echo "done."
-
-#
-# TODO
-#
-$(IMAGEDIR)/root.ext2.gz: $(IMAGEDIR)/root.ext2
- @echo -n "Creating root.ext2.gz from root.ext2...";
- @rm -f $@
- @cat $< | gzip -v9 > $@
- @echo "done."
-
-#
-# TODO
-#
-$(IMAGEDIR)/uRamdisk: $(IMAGEDIR)/root.ext2.gz
- @echo -n "Creating U-Boot ramdisk from root.ext2.gz...";
- @$(PTXCONF_SYSROOT_HOST)/bin/mkimage \
- -A $(MKIMAGE_ARCH) \
- -O Linux \
- -T ramdisk \
- -C gzip \
- -n $(PTXCONF_IMAGE_UIMAGE_NAME) \
- -d $< \
- $@
- @echo "done."
-
-#
-# create traditional initrd.gz, to be used
-# as initramfs (-> "-H newc")
-#
-$(IMAGEDIR)/initrd.gz: $(STATEDIR)/image_working_dir
- @echo -n "Creating initrd.gz from working dir..."
- @cd $(WORKDIR); \
- ($(AWK) -F: $(DOPERMISSIONS) $(IMAGEDIR)/permissions && \
- ( \
- echo "find . | "; \
- echo "cpio --quiet -H newc -o | "; \
- echo "gzip -9 -n > $@" ) \
- ) | $(FAKEROOT) --
- @echo "done."
-
-#
-# TODO: Find a way to always find the correct zipped kernel image on every
-# architecture.
-#
-#$(IMAGEDIR)/muimage: $(IMAGEDIR)/initrd.gz $(KERNEL_DIR)/???????
-# @echo -n "Creating multi content uimage..."
-# @$(PTXCONF_SYSROOT_HOST)/bin/mkimage -A $(PTXCONF_ARCH_STRING) \
-# -O Linux -T multi -C gzip -a 0 -e 0 \
-# -n 'Multi-File Image' \
-# -d $(KERNEL_DIR)/vmlinux.bin.gz:$(IMAGEDIR)/initrd.img \
-# $(IMAGEDIR)/muimage
-# @echo "done."
-
-#
-# create all requested images and clean up when done
-#
-$(STATEDIR)/images: $(SEL_ROOTFS-y) $(images_deps)
- @echo "Clean up temp working directory"
- @rm -rf $(WORKDIR) $(STATEDIR)/image_working_dir
- @$(call touch, $@)
-
-# ----------------------------------------------------------------------------
-# Simulation
-# ----------------------------------------------------------------------------
-
-uml_cmdline=
-ifdef PTXCONF_KERNEL_HOST_ROOT_HOSTFS
-uml_cmdline += root=/dev/root rootflags=$(ROOTDIR) rootfstype=hostfs
-endif
-ifdef PTXCONF_KERNEL_HOST_CONSOLE_STDSERIAL
-uml_cmdline += ssl0=fd:0,fd:1
-endif
-#uml_cmdline += eth0=slirp
-uml_cmdline += $(PTXCONF_KERNEL_HOST_CMDLINE)
-
-run: world
- @$(call targetinfo, "Run Simulation")
-ifdef NATIVE
- @echo "starting Linux..."
- @echo
- @$(ROOTDIR)/boot/linux $(call remove_quotes,$(uml_cmdline))
-else
- @echo
- @echo "cannot run simulation if not in NATIVE=1 mode"
- @echo
- @exit 1
-endif
# ----------------------------------------------------------------------------
# Misc other targets
@@ -417,64 +67,5 @@ endif
print-%:
@echo "$* is \"$($*)\""
-plugins:
- @echo "Installed Plugins:"
- @echo $(wildcard $(PTXDIST_TOPDIR)/plugins/*)
-
-plugin-%: dump
- @echo "trying plugin $(*)"
- @if [ -x "$(PTXDIST_WORKSPACE)/plugins/$(*)/main" ]; then \
- echo "local plugin found."; \
- $(PTXDIST_WORKSPACE)/plugins/$(*)/main; \
- elif [ -x "$(PTXDIST_TOPDIR)/plugins/$(*)/main" ]; then \
- echo "generic plugin found."; \
- $(PTXDIST_TOPDIR)/plugins/$(*)/main; \
- else \
- echo "sorry, plugin not found"; \
- fi
-
-# ----------------------------------------------------------------------------
-# environment export to plugins and shell scripts
-# ----------------------------------------------------------------------------
-# If you run 'ptxdist make dump', you will get two files:
-# $(STATEDIR)/environment.symbols <- A list of all internal Variable
-# Symbols in the main PTXdist Makefile
-# $(STATEDIR)/environment.bash <- A selection of Variables in bash
-# syntax. Please adjust M2B_DUMP_VARIABLES
-# and M2B_DUMP_SUFFIXES to your needs.
-# See rules/other/Definitions.make
-# ----------------------------------------------------------------------------
-#
-# dump all internal make symbols
-#
-$(M2B).symbols:
- @echo "$(.VARIABLES)" \
- | sed s/\ /\\n/g \
- | egrep -v "[^A-Z0-9_-]|^_$$" \
- | sort -u > $@
-
-dump-symbols: $(M2B).symbols ;
-#
-# dump selected symbols with value
-#
-packages := $(PACKAGES-) $(PACKAGES-y) $(PACKAGES-m)
-prefixes := $(shell echo $(packages) | tr "a-z-" "A-Z_")
-symbols := $(foreach prefix,$(prefixes),$(foreach suffix,$(M2B_DUMP_SUFFIXES),$(prefix)$(suffix)))
-allsymbols := $(prefixes) $(shell echo $(symbols) | tr "a-z-" "A-Z_") $(M2B_DUMP_VARIABLES)
-sources := $(addsuffix _SOURCE,$(shell echo $(SELECTED_PACKAGES) | tr "a-z-" "A-Z_"))
-
-dump-%: $(M2B).symbols
- @echo 'M2B_$(call remove_quotes,$(*))="$(call remove_quotes,$($(*)))"' >> $(M2B).bash.tmp
- @echo '$(call remove_quotes,$(*)) $(call remove_quotes,$($(*)))' >> $(M2B).tmp
-
-dump: $(addprefix dump-,$(allsymbols))
- @mv $(M2B).bash.tmp $(M2B).bash
- @mv $(M2B).tmp $(M2B)
-
-#
-# ----------------------------------------------------------------------------
-
-.PHONY: dep_output_clean dep_tree dep_world before_config
-
# vim600:set foldmethod=marker:
# vim600:set syntax=make:
diff --git a/rules/post/dump.make b/rules/post/dump.make
new file mode 100644
index 000000000..266913d59
--- /dev/null
+++ b/rules/post/dump.make
@@ -0,0 +1,43 @@
+# -*-makefile-*-
+
+# ----------------------------------------------------------------------------
+# environment export to plugins and shell scripts
+# ----------------------------------------------------------------------------
+# If you run 'ptxdist make dump', you will get two files:
+# $(STATEDIR)/environment.symbols <- A list of all internal Variable
+# Symbols in the main PTXdist Makefile
+# $(STATEDIR)/environment.bash <- A selection of Variables in bash
+# syntax. Please adjust M2B_DUMP_VARIABLES
+# and M2B_DUMP_SUFFIXES to your needs.
+# See rules/other/Definitions.make
+# ----------------------------------------------------------------------------
+#
+# dump all internal make symbols
+#
+$(M2B).symbols:
+ @echo "$(.VARIABLES)" \
+ | sed s/\ /\\n/g \
+ | egrep -v "[^A-Z0-9_-]|^_$$" \
+ | sort -u > $@
+
+dump-symbols: $(M2B).symbols
+
+#
+# dump selected symbols with value
+#
+packages := $(PACKAGES-) $(PACKAGES-y) $(PACKAGES-m)
+prefixes := $(shell echo $(packages) | tr "a-z-" "A-Z_")
+symbols := $(foreach prefix,$(prefixes),$(foreach suffix,$(M2B_DUMP_SUFFIXES),$(prefix)$(suffix)))
+allsymbols := $(prefixes) $(shell echo $(symbols) | tr "a-z-" "A-Z_") $(M2B_DUMP_VARIABLES)
+sources := $(addsuffix _SOURCE,$(shell echo $(SELECTED_PACKAGES) | tr "a-z-" "A-Z_"))
+
+dump-%: $(M2B).symbols
+ @echo 'M2B_$(call remove_quotes,$(*))="$(call remove_quotes,$($(*)))"' >> $(M2B).bash.tmp
+ @echo '$(call remove_quotes,$(*)) $(call remove_quotes,$($(*)))' >> $(M2B).tmp
+
+dump: $(addprefix dump-,$(allsymbols))
+ @mv $(M2B).bash.tmp $(M2B).bash
+ @mv $(M2B).tmp $(M2B)
+
+# vim600:set foldmethod=marker:
+# vim600:set syntax=make:
diff --git a/rules/post/export.make b/rules/post/export.make
index 217aefba7..e9e9052f8 100644
--- a/rules/post/export.make
+++ b/rules/post/export.make
@@ -7,9 +7,8 @@ get_source = $(if $($(source)), $($(source)), $($(subst CROSS_,,$(subst HOST_,,$
#FIXME? now copies files twice if selected for host _and_ target.
export:
@for i in $(foreach source,$(sources),$(get_source)); do \
- cp $$i $(EXPORTDIR); \
+ cp -v "$${i}" "$(EXPORTDIR)"; \
done
-
# vim600:set foldmethod=marker:
# vim600:set syntax=make:
diff --git a/rules/post/get.make b/rules/post/get.make
new file mode 100644
index 000000000..78dd3a7e7
--- /dev/null
+++ b/rules/post/get.make
@@ -0,0 +1,10 @@
+# -*-makefile-*-
+
+GET_PACKAGES := $(addsuffix _get,$(PACKAGES))
+GET_HOST_PACKAGES := $(addsuffix _get,$(HOST_PACKAGES))
+GET_CROSS_PACKAGES := $(addsuffix _get,$(CROSS_PACKAGES))
+
+get: $(GET_PACKAGES) $(GET_HOST_PACKAGES) $(GET_CROSS_PACKAGES)
+
+# vim600:set foldmethod=marker:
+# vim600:set syntax=make:
diff --git a/rules/post/images.make b/rules/post/images.make
new file mode 100644
index 000000000..95480ec19
--- /dev/null
+++ b/rules/post/images.make
@@ -0,0 +1,242 @@
+# -*-makefile-*-
+
+# ----------------------------------------------------------------------------
+# Images
+# ----------------------------------------------------------------------------
+
+DOPERMISSIONS := '{ \
+ if ($$1 == "f") \
+ printf("chmod %s .%s; chown %s.%s .%s;\n", $$5, $$2, $$3, $$4, $$2); \
+ if ($$1 == "n") \
+ printf("mkdir -p .`dirname %s`; mknod -m %s .%s %s %s %s; chown %s.%s .%s;\n", $$2, $$5, $$2, $$6, $$7, $$8, $$3, $$4, $$2);}'
+
+ifdef PTXCONF_MKNBI_NBI
+MKNBI_EXT = nbi
+else
+MKNBI_EXT = elf
+endif
+
+MKNBI_KERNEL = $(KERNEL_TARGET_PATH)
+
+MKNBI_ROOTFS = $(IMAGEDIR)/root.ext2
+ifdef PTXCONF_IMAGE_EXT2_GZIP
+MKNBI_ROOTFS = $(IMAGEDIR)/root.ext2.gz
+endif
+
+images: $(STATEDIR)/images
+
+ipkg-push: $(STATEDIR)/ipkg-push
+
+$(STATEDIR)/ipkg-push: $(STATEDIR)/host-ipkg-utils.install
+ @$(call targetinfo, $@)
+ ( \
+ PATH=$(PTXCONF_SYSROOT_CROSS)/bin:$(PTXCONF_SYSROOT_CROSS)/usr/bin:$$PATH; \
+ PATH=$(PTXCONF_SYSROOT_HOST)/bin:$(PTXCONF_SYSROOT_HOST)/usr/bin:$$PATH; \
+ export $$PATH; \
+ $(PTXDIST_TOPDIR)/scripts/ipkg-push \
+ --ipkgdir $(call remove_quotes,$(IMAGEDIR)) \
+ --repodir $(call remove_quotes,$(PTXCONF_SETUP_IPKG_REPOSITORY)) \
+ --revision $(call remove_quotes,$(FULLVERSION)) \
+ --project $(call remove_quotes,$(PTXCONF_PROJECT)) \
+ --dist $(call remove_quotes,$(PTXCONF_PROJECT)$(PTXCONF_PROJECT_VERSION)); \
+ echo; \
+ )
+ $(call touch, $@)
+
+images_deps = world
+ifdef PTXCONF_IMAGE_IPKG_IMAGE_FROM_REPOSITORY
+images_deps += $(STATEDIR)/ipkg-push
+endif
+
+ifdef PTXCONF_IMAGE_HD_PART1
+ GENHDIMARGS = -p $(PTXCONF_IMAGE_HD_PART1_START):$(PTXCONF_IMAGE_HD_PART1_END):$(PTXCONF_IMAGE_HD_PART1_TYPE):$(IMAGEDIR)/root.ext2
+endif
+ifdef PTXCONF_IMAGE_HD_PART2
+ GENHDIMARGS += -p $(PTXCONF_IMAGE_HD_PART2_START):$(PTXCONF_IMAGE_HD_PART2_END):$(PTXCONF_IMAGE_HD_PART2_TYPE):
+endif
+ifdef PTXCONF_IMAGE_HD_PART3
+ GENHDIMARGS += -p $(PTXCONF_IMAGE_HD_PART3_START):$(PTXCONF_IMAGE_HD_PART3_END):$(PTXCONF_IMAGE_HD_PART3_TYPE):
+endif
+ifdef PTXCONF_IMAGE_HD_PART4
+ GENHDIMARGS += -p $(PTXCONF_IMAGE_HD_PART4_START):$(PTXCONF_IMAGE_HD_PART4_END):$(PTXCONF_IMAGE_HD_PART4_TYPE):
+endif
+ifdef PTXCONF_GRUB
+ GENHDIMARGS += -m $(GRUB_DIR)/stage1/stage1
+ GENHDIMARGS += -n $(GRUB_DIR)/stage2/stage2
+endif
+
+#
+# generate the list of source permission files
+#
+PERMISSION_FILES := $(foreach pkg, $(PACKAGES-y), $(wildcard $(STATEDIR)/$(pkg)*.perms))
+
+#
+# list of all ipkgs being selected for the root image
+#
+IPKG_FILES := $(foreach pkg, $(PACKAGES-y), $(wildcard $(PKGDIR)/$(pkg)*.ipk))
+
+#
+# create one file with all permissions from all permission source files
+#
+$(IMAGEDIR)/permissions: $(PERMISSION_FILES) $(PTXCONFIG)
+ @cat $^ > $@
+
+#
+# to extract the ipkgs we need a dummy config file
+#
+$(IMAGEDIR)/ipkg.conf:
+ @echo -e "dest root /\narch $(PTXCONF_ARCH_STRING) 10\narch all 1\narch noarch 1\n" > $@
+
+#
+# Working directory to create any kind of image
+#
+WORKDIR := $(IMAGEDIR)/work_dir
+
+#
+# Create architecture type for mkimge
+# Most architectures are working with label $(PTXCONF_ARCH_STRING)
+# but the i386 family needs "x86" instead!
+#
+ifeq ($(PTXCONF_ARCH_STRING),"i386")
+MKIMAGE_ARCH := x86
+else
+MKIMAGE_ARCH := $(PTXCONF_ARCH_STRING)
+endif
+
+#
+# Define what images should be build
+#
+SEL_ROOTFS-y :=
+SEL_ROOTFS-$(PTXCONF_IMAGE_TGZ) += $(IMAGEDIR)/root.tgz
+SEL_ROOTFS-$(PTXCONF_IMAGE_JFFS2) += $(IMAGEDIR)/root.jffs2
+SEL_ROOTFS-$(PTXCONF_IMAGE_EXT2) += $(IMAGEDIR)/root.ext2
+SEL_ROOTFS-$(PTXCONF_IMAGE_HD) += $(IMAGEDIR)/hd.img
+SEL_ROOTFS-$(PTXCONF_IMAGE_EXT2_GZIP) += $(IMAGEDIR)/root.ext2.gz
+SEL_ROOTFS-$(PTXCONF_IMAGE_UIMAGE) += $(IMAGEDIR)/uRamdisk
+SEL_ROOTFS-$(PTXCONF_IMAGE_CPIO) += $(IMAGEDIR)/initrd.gz
+
+#
+# extract all current ipkgs into the working directory
+#
+$(STATEDIR)/image_working_dir: $(IPKG_FILES) $(IMAGEDIR)/permissions $(IMAGEDIR)/ipkg.conf
+ @rm -rf $(WORKDIR)
+ @mkdir $(WORKDIR)
+ @echo -n "Extracting ipkg packages into working directory..."
+ @DESTDIR=$(WORKDIR) $(FAKEROOT) -- $(PTXCONF_SYSROOT_HOST)/bin/ipkg-cl -f $(IMAGEDIR)/ipkg.conf -o $(WORKDIR) install $(IPKG_FILES) 2>&1 >/dev/null
+ @$(call touch, $@)
+
+#
+# create the root.tgz image
+#
+$(IMAGEDIR)/root.tgz: $(STATEDIR)/image_working_dir
+ @echo -n "Creating root.tgz from working dir..."
+ @cd $(WORKDIR); \
+ (awk -F: $(DOPERMISSIONS) $(IMAGEDIR)/permissions && \
+ ( echo -n "tar -zcf "; \
+ echo -n "$@ ." ) \
+ ) | $(FAKEROOT) --
+ @echo "done."
+
+#
+# create the JFFS2 image
+#
+$(IMAGEDIR)/root.jffs2: $(STATEDIR)/image_working_dir
+ @echo -n "Creating root.jffs2 from working dir..."
+ @cd $(WORKDIR); \
+ (awk -F: $(DOPERMISSIONS) $(IMAGEDIR)/permissions && \
+ ( \
+ echo -n "$(PTXCONF_SYSROOT_HOST)/sbin/mkfs.jffs2 "; \
+ echo -n "-d $(WORKDIR) "; \
+ echo -n "--eraseblock=$(PTXCONF_IMAGE_JFFS2_BLOCKSIZE) "; \
+ echo -n "$(PTXCONF_IMAGE_JFFS2_EXTRA_ARGS) "; \
+ echo -n "-o $@" ) \
+ ) | $(FAKEROOT) --
+ @echo "done."
+
+#
+# create the ext2 image
+#
+$(IMAGEDIR)/root.ext2: $(STATEDIR)/image_working_dir
+ @echo -n "Creating root.ext2 from working dir..."
+ @cd $(WORKDIR); \
+ (awk -F: $(DOPERMISSIONS) $(IMAGEDIR)/permissions && \
+ ( \
+ echo -n "$(PTXCONF_SYSROOT_HOST)/bin/genext2fs "; \
+ echo -n "-b $(PTXCONF_IMAGE_EXT2_SIZE) "; \
+ echo -n "$(PTXCONF_IMAGE_EXT2_EXTRA_ARGS) "; \
+ echo -n "-d $(WORKDIR) "; \
+ echo "$@" ) \
+ ) | $(FAKEROOT) --
+ @echo "done."
+
+#
+# TODO
+#
+$(IMAGEDIR)/hd.img: $(IMAGEDIR)/root.ext2
+ @echo -n "Creating hdimg from root.ext2"; \
+ PATH=$(PTXCONF_SYSROOT_HOST)/bin:$$PATH $(PTXDIST_TOPDIR)/scripts/genhdimg \
+ -o $@ $(GENHDIMARGS)
+ @echo "done."
+
+#
+# TODO
+#
+$(IMAGEDIR)/root.ext2.gz: $(IMAGEDIR)/root.ext2
+ @echo -n "Creating root.ext2.gz from root.ext2...";
+ @rm -f $@
+ @cat $< | gzip -v9 > $@
+ @echo "done."
+
+#
+# TODO
+#
+$(IMAGEDIR)/uRamdisk: $(IMAGEDIR)/root.ext2.gz
+ @echo -n "Creating U-Boot ramdisk from root.ext2.gz...";
+ @$(PTXCONF_SYSROOT_HOST)/bin/mkimage \
+ -A $(MKIMAGE_ARCH) \
+ -O Linux \
+ -T ramdisk \
+ -C gzip \
+ -n $(PTXCONF_IMAGE_UIMAGE_NAME) \
+ -d $< \
+ $@
+ @echo "done."
+
+#
+# create traditional initrd.gz, to be used
+# as initramfs (-> "-H newc")
+#
+$(IMAGEDIR)/initrd.gz: $(STATEDIR)/image_working_dir
+ @echo -n "Creating initrd.gz from working dir..."
+ @cd $(WORKDIR); \
+ (awk -F: $(DOPERMISSIONS) $(IMAGEDIR)/permissions && \
+ ( \
+ echo "find . | "; \
+ echo "cpio --quiet -H newc -o | "; \
+ echo "gzip -9 -n > $@" ) \
+ ) | $(FAKEROOT) --
+ @echo "done."
+
+#
+# TODO: Find a way to always find the correct zipped kernel image on every
+# architecture.
+#
+#$(IMAGEDIR)/muimage: $(IMAGEDIR)/initrd.gz $(KERNEL_DIR)/???????
+# @echo -n "Creating multi content uimage..."
+# @$(PTXCONF_SYSROOT_HOST)/bin/mkimage -A $(PTXCONF_ARCH_STRING) \
+# -O Linux -T multi -C gzip -a 0 -e 0 \
+# -n 'Multi-File Image' \
+# -d $(KERNEL_DIR)/vmlinux.bin.gz:$(IMAGEDIR)/initrd.img \
+# $(IMAGEDIR)/muimage
+# @echo "done."
+
+#
+# create all requested images and clean up when done
+#
+$(STATEDIR)/images: $(SEL_ROOTFS-y) $(images_deps)
+ @echo "Clean up temp working directory"
+ @rm -rf $(WORKDIR) $(STATEDIR)/image_working_dir
+ @$(call touch, $@)
+
+# vim600:set foldmethod=marker:
+# vim600:set syntax=make:
diff --git a/rules/post/mk-devnodes.make b/rules/post/mk-devnodes.make
new file mode 100644
index 000000000..a6b7c5108
--- /dev/null
+++ b/rules/post/mk-devnodes.make
@@ -0,0 +1,44 @@
+# -*-makefile-*-
+
+PTX_FIXPERM_SCRIPT := $(STATEDIR)/ptxdist-fixperm.sh
+PTX_FIXPERM_RUN := $(STATEDIR)/ptxdist-fixperm.done
+
+ifdef PTXCONF_MKDEVNODES
+world: $(PTX_FIXPERM_RUN)
+endif
+
+$(PTX_FIXPERM_RUN): $(PTX_FIXPERM_SCRIPT)
+ @echo; \
+ echo "creating devnodes, for the smooth nfsroot feeling"; \
+ echo; \
+ read -t 5 -p "(press enter to let sudo to that job)"; \
+ if test $$? -eq 0; then \
+ for dir in "$(ROOTDIR)" "$(ROOTDIR_DEBUG)"; do \
+ pushd "$$dir" > /dev/null; \
+ sudo /bin/bash -x "$<"; \
+ popd > /dev/null; \
+ done; \
+ else \
+ echo; \
+ echo "watch out for missing initial consoles..."; \
+ echo; \
+ fi
+
+
+$(PTX_FIXPERM_SCRIPT): world_packages
+ @echo "#/bin/bash" > "$@"
+ @chmod +x "$@"
+
+ @IFS=":"; \
+ ( \
+ egrep "^n:" -h $(STATEDIR)/*.perms | \
+ while read n node uid gid perm type major minor; do \
+ node="$${node#/}"; \
+ echo "if test -e $$node; then rm -rf $$node; fi"; \
+ echo "mknod $$node $$type $$major $$minor"; \
+ echo "chown $$uid:$$gid $$node"; \
+ echo "chmod $$perm $$node"; \
+ done; \
+ ) >> "$@"
+
+# vim: syntax=make
diff --git a/rules/post/plugins.make b/rules/post/plugins.make
new file mode 100644
index 000000000..b84d21e52
--- /dev/null
+++ b/rules/post/plugins.make
@@ -0,0 +1,20 @@
+# -*-makefile-*-
+
+plugins:
+ @echo "Installed Plugins:"
+ @echo $(wildcard $(PTXDIST_TOPDIR)/plugins/*)
+
+plugin-%: dump
+ @echo "trying plugin $(*)"
+ @if [ -x "$(PTXDIST_WORKSPACE)/plugins/$(*)/main" ]; then \
+ echo "local plugin found."; \
+ $(PTXDIST_WORKSPACE)/plugins/$(*)/main; \
+ elif [ -x "$(PTXDIST_TOPDIR)/plugins/$(*)/main" ]; then \
+ echo "generic plugin found."; \
+ $(PTXDIST_TOPDIR)/plugins/$(*)/main; \
+ else \
+ echo "sorry, plugin not found"; \
+ fi
+
+# vim600:set foldmethod=marker:
+# vim600:set syntax=make:
diff --git a/rules/post/simulation.make b/rules/post/simulation.make
new file mode 100644
index 000000000..169b1fc1a
--- /dev/null
+++ b/rules/post/simulation.make
@@ -0,0 +1,32 @@
+# -*-makefile-*-
+
+# ----------------------------------------------------------------------------
+# Simulation
+# ----------------------------------------------------------------------------
+
+uml_cmdline=
+ifdef PTXCONF_KERNEL_HOST_ROOT_HOSTFS
+uml_cmdline += root=/dev/root rootflags=$(ROOTDIR) rootfstype=hostfs
+endif
+ifdef PTXCONF_KERNEL_HOST_CONSOLE_STDSERIAL
+uml_cmdline += ssl0=fd:0,fd:1
+endif
+#uml_cmdline += eth0=slirp
+uml_cmdline += $(PTXCONF_KERNEL_HOST_CMDLINE)
+
+run: world
+ @$(call targetinfo, "Run Simulation")
+ifdef NATIVE
+ @echo "starting Linux..."
+ @echo
+ @$(ROOTDIR)/boot/linux $(call remove_quotes,$(uml_cmdline))
+else
+ @echo
+ @echo "cannot run simulation if not in NATIVE=1 mode"
+ @echo
+ @exit 1
+endif
+
+
+# vim600:set foldmethod=marker:
+# vim600:set syntax=make:
diff --git a/rules/post/world.make b/rules/post/world.make
new file mode 100644
index 000000000..00afc0d07
--- /dev/null
+++ b/rules/post/world.make
@@ -0,0 +1,35 @@
+# -*-makefile-*-
+
+DEP_OUTPUT := $(PTXDIST_PLATFORMDIR)/depend.out
+DEP_TREE_PS := $(PTXDIST_PLATFORMDIR)/deptree.ps
+DEP_TREE_A4_PS := $(PTXDIST_PLATFORMDIR)/deptree-a4.ps
+
+WORLD_PACKAGES_TARGETINSTALL := $(addsuffix _targetinstall,$(PACKAGES))
+WORLD_HOST_PACKAGES_INSTALL := $(addsuffix _install,$(HOST_PACKAGES))
+WORLD_CROSS_PACKAGES_INSTALL := $(addsuffix _install,$(CROSS_PACKAGES))
+
+ifneq ($(shell which dot),)
+world: $(DEP_TREE_PS)
+ ifneq ($(shell which poster),)
+world: $(DEP_TREE_A4_PS)
+ endif #ifneq ($(shell which poster),)
+endif #ifneq ($(shell which dot),)
+
+$(DEP_TREE_A4_PS): $(DEP_TREE_PS)
+ @echo "creating A4 version..."
+ @poster -v -c 0\% -m A4 -o $@ $<
+
+$(DEP_TREE_PS): $(DEP_OUTPUT)
+ @echo "creating dependency graph..."
+ @sort $< | uniq | \
+ $(PTXDIST_TOPDIR)/scripts/makedeptree | dot -Tps > $@
+
+world_packages: $(WORLD_PACKAGES_TARGETINSTALL) \
+ $(WORLD_HOST_PACKAGES_INSTALL) \
+ $(WORLD_CROSS_PACKAGES_INSTALL)
+ @echo $@ : $^ | sed -e 's/\([^ ]*\)_\([^_]*\)/\1.\2/g' >> $(DEP_OUTPUT)
+
+world: world_packages
+
+# vim600:set foldmethod=marker:
+# vim600:set syntax=make: