# # \brief Download, unpack and patch OKLinux source code # \author Stefan Kalkowski # \date 2010-01-06 DOWNLOAD_DIR = download CONTRIB_DIR = contrib PATCH_FILE = patches/oklx_genode.patch PATCH_UNIONFS = patches/unionfs.patch VERBOSE ?= @ ECHO = @echo OKLX_URL = http://wiki.ok-labs.com/downloads/release-2.1.1-patch.9 OKLX_VERSION = oklinux_2.6.23.24 OKLX_ARCHIVE = $(OKLX_VERSION).tar.gz OKLX_CONTRIB = kernel-2.6.23-v2 # # Utility to check if a tool is installed # check_tool = $(if $(shell which $(1)),,$(error Need to have '$(1)' installed.)) $(call check_tool,wget) $(call check_tool,patch) $(call check_tool,sed) # # Print help information by default # help: $(ECHO) $(ECHO) "Prepare the OKLinux repository" $(ECHO) $(ECHO) "--- available commands ---" $(ECHO) "prepare - download and extract the OKLinux source code" $(ECHO) "clean - clean everything except downloaded archives" $(ECHO) "cleanall - clean everything including downloaded archives" $(ECHO) "update-patch - updates patch to the original OKLinux code" $(ECHO) prepare: $(CONTRIB_DIR) message $(CONTRIB_DIR): $(DOWNLOAD_DIR)/$(OKLX_ARCHIVE) $(ECHO) "unpacking source code to '$(CONTRIB_DIR)/'" $(VERBOSE)tar xzf $< $(VERBOSE)mv $(OKLX_VERSION)/$(OKLX_CONTRIB) $@ $(VERBOSE)rm -rf $(OKLX_VERSION) $(ECHO) "applying patches to '$(CONTRIB_DIR)/'" $(VERBOSE)patch -p0 < $(PATCH_FILE) $(VERBOSE)cd $(CONTRIB_DIR); patch --no-backup-if-mismatch -p1 < ../$(PATCH_UNIONFS) $(DOWNLOAD_DIR)/$(OKLX_ARCHIVE): $(ECHO) "downloading source code to '$(DOWNLOAD_DIR)/'" $(VERBOSE)mkdir -p $(DOWNLOAD_DIR) $(VERBOSE)wget -c $(OKLX_URL)/$(OKLX_ARCHIVE) -O $@ message: $(ECHO) $(ECHO) "Preparation completed!" $(ECHO) "Now, go to your Genode build directory and type 'make oklinux'." $(ECHO) "Hint: don't forget to put '$(shell pwd)' " $(ECHO) " as a repository into your build.conf" $(ECHO) update-patch: $(ECHO) "producing a new diff and save it to '$(PATCH_FILE)'" $(VERBOSE)cd $(CONTRIB_DIR); patch --no-backup-if-mismatch -R -p1 < ../$(PATCH_UNIONFS) $(VERBOSE)tar xzf $(DOWNLOAD_DIR)/$(OKLX_ARCHIVE) $(VERBOSE)mv $(OKLX_VERSION)/$(OKLX_CONTRIB) . $(VERBOSE)find $(CONTRIB_DIR) -name "*~" -delete $(VERBOSE)LC_COLLATE=C diff -urNpB $(OKLX_CONTRIB) $(CONTRIB_DIR) \ | sed "s/\(^--- [^\t]*\).*/\\1/" \ | sed "s/\(^+++ [^\t]*\).*/\\1/" \ > $(PATCH_FILE) || true $(VERBOSE)rm -rf $(OKLX_CONTRIB) $(OKLX_VERSION) $(VERBOSE)cd $(CONTRIB_DIR); patch --no-backup-if-mismatch -p1 < ../$(PATCH_UNIONFS) clean: $(VERBOSE)rm -rf $(CONTRIB_DIR) cleanall: clean $(VERBOSE)rm -rf $(DOWNLOAD_DIR)