From c7b1040cde1cce2c73fafb2751fc20882080e195 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Sat, 27 Feb 2010 18:15:47 +0000 Subject: [PATCH] From: Matt Madia * Added "extractedSubDir" parameter to ExtractArchiveTo{Container,HaikuImage}. If given it specified the path of the subdirectory in the archive that shall be extracted. * Added AddWifiFirmwareToHaikuImage rule for extracting Wifi firmware archives onto the image. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35635 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- build/jam/ImageRules | 34 +++++++++++++++++++++++++-------- build/scripts/build_haiku_cd | 3 ++- build/scripts/build_haiku_image | 3 ++- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/build/jam/ImageRules b/build/jam/ImageRules index 8e61abf470..008c3d76d9 100644 --- a/build/jam/ImageRules +++ b/build/jam/ImageRules @@ -273,15 +273,16 @@ rule CopyDirectoryToContainer container : directoryTokens : sourceDirectory DIRECTORIES_TO_INSTALL on $(directory) += $(targetDir) ; } -rule ExtractArchiveToContainer container : directoryTokens : archiveFile +rule ExtractArchiveToContainer container : directoryTokens : archiveFile : extractedSubDir { - # ExtractArchiveToContainer : : ] ; + # ExtractArchiveToContainer : : : ; # local directory = [ AddDirectoryToContainer $(container) : $(directoryTokens) ] ; ARCHIVE_FILES_TO_INSTALL on $(directory) += $(archiveFile) ; + ARCHIVE_SUBDIR_TO_INSTALL_FROM on $(archiveFile) = $(extractedSubDir) ; } rule AddDriversToContainer container : relativeDirectoryTokens : targets @@ -590,13 +591,17 @@ rule CreateContainerExtractFilesScript container : script NotFile $(dummyTarget) ; TARGET_DIR on $(dummyTarget) = $(dir:G=) ; + local extractedSubDir = [ on $(archiveFile) + return $(ARCHIVE_SUBDIR_TO_INSTALL_FROM) ] ; + NotFile $(extractedSubDir) ; + Depends $(dummyTarget) : $(initScript) $(archiveFile) $(serializationDependency) ; Depends $(script) : $(dummyTarget) ; serializationDependency = $(dummyTarget) ; - AddExtractFileToContainerExtractFilesScript $(dummyTarget) - : $(initScript) $(archiveFile) ; + AddExtractFileToContainerExtractFilesScript $(dummyTarget) + : $(initScript) $(archiveFile) $(extractedSubDir) ; } } } @@ -604,7 +609,7 @@ rule CreateContainerExtractFilesScript container : script actions AddExtractFileToContainerExtractFilesScript { - echo extractFile "\"$(2[2])\"" "\"$(TARGET_DIR)\"" >> $(2[1]) + echo extractFile "\"$(2[2])\"" "\"$(TARGET_DIR)\"" "\"$(2[3])\"" >> $(2[1]) } @@ -691,15 +696,28 @@ rule AddHeaderDirectoryToHaikuImage dirTokens : dirName : alwaysUpdate : $(dirName) : -x .svn : $(alwaysUpdate) ; } -rule ExtractArchiveToHaikuImage dirTokens : archiveFile : alwaysUpdate +rule AddWifiFirmwareToHaikuImage driver : package : archive { - # ExtractArchiveToHaikuImage : : ; + #AddWifiFirmwareToHaikuImage : : + + # complete location to wifi firmware archive + local firmwareArchive = [ FDirName + $(HAIKU_TOP) data system data firmware $(driver) $(archive) ] ; + + local dirTokens = system data firmware $(driver) ; + + ExtractArchiveToHaikuImage $(dirTokens) : $(firmwareArchive) : : $(package) ; +} + +rule ExtractArchiveToHaikuImage dirTokens : archiveFile : alwaysUpdate : extractedSubDir +{ + # ExtractArchiveToHaikuImage : : : ; # If the image shall only be updated, we extract only, if explicitely # requested. if ! [ IsUpdateHaikuImageOnly ] || $(alwaysUpdate) { ExtractArchiveToContainer $(HAIKU_IMAGE_CONTAINER_NAME) : $(dirTokens) - : $(archiveFile) ; + : $(archiveFile) : $(extractedSubDir) ; } } diff --git a/build/scripts/build_haiku_cd b/build/scripts/build_haiku_cd index 796b847448..79b8506543 100755 --- a/build/scripts/build_haiku_cd +++ b/build/scripts/build_haiku_cd @@ -40,6 +40,7 @@ extractFile() # extractFile archiveFile=$1 targetExtractDir=$2 + extractedSubDir=$3 echo "Extracting $archiveFile ..." @@ -66,7 +67,7 @@ extractFile() rm $extractDir/.OptionalPackageDescription fi - $cp -r "$extractDir/." "${tPrefix}$targetExtractDir" + $cp -r "$extractDir/$extractedSubDir/." "${tPrefix}$targetExtractDir" $rmAttrs -rf "$extractDir" } diff --git a/build/scripts/build_haiku_image b/build/scripts/build_haiku_image index 7c327304fb..d4bb686bb1 100755 --- a/build/scripts/build_haiku_image +++ b/build/scripts/build_haiku_image @@ -79,6 +79,7 @@ extractFile() # extractFile archiveFile=$1 targetExtractedDir=$2 + extractedSubDir=$3 echo "Extracting $archiveFile ..." @@ -105,7 +106,7 @@ extractFile() rm $extractDir/.OptionalPackageDescription fi - $cp -r "${sPrefix}$extractDir/." "${tPrefix}$targetExtractedDir" + $cp -r "${sPrefix}$extractDir/$extractedSubDir/." "${tPrefix}$targetExtractedDir" $rmAttrs -rf "$extractDir" }