Ticket #5479: 5479-ExtractArchiveToHaikuImage.patch
File 5479-ExtractArchiveToHaikuImage.patch, 13.5 KB (added by , 14 years ago) |
---|
-
build/jam/FileRules
400 401 401 402 rule DownloadOptionalPackage package : url 402 403 { 403 return [ DownloadFile $(package).zip : $(url) ] ; 404 405 local extension = $(url:S) ; 406 return [ DownloadFile $(package)$(extension) : $(url) ] ; 404 407 } -
build/jam/ImageRules
273 273 DIRECTORIES_TO_INSTALL on $(directory) += $(targetDir) ; 274 274 } 275 275 276 rule UnzipArchiveToContainer container : directoryTokens : zipFile276 rule ExtractArchiveToContainer container : directoryTokens : archiveFile 277 277 { 278 # UnzipArchiveToContainer <container> : <directory> : <zipFile> ] ;278 # ExtractArchiveToContainer <container> : <directory> : <archiveFile> ] ; 279 279 # 280 280 281 281 local directory = [ AddDirectoryToContainer $(container) 282 282 : $(directoryTokens) ] ; 283 283 284 ZIP_FILES_TO_INSTALL on $(directory) += $(zipFile) ;284 ARCHIVE_FILES_TO_INSTALL on $(directory) += $(archiveFile) ; 285 285 } 286 286 287 287 rule AddDriversToContainer container : relativeDirectoryTokens : targets … … 560 560 } 561 561 562 562 563 rule CreateContainer UnzipFilesScript container : script563 rule CreateContainerExtractFilesScript container : script 564 564 { 565 565 MakeLocate $(script) : $(HAIKU_OUTPUT_DIR) ; 566 566 Always $(script) ; … … 581 581 582 582 local dir ; 583 583 for dir in [ on $(container) return $(HAIKU_INSTALL_DIRECTORIES) ] { 584 local zipFiles = [ on $(dir) return $(ZIP_FILES_TO_INSTALL) ] ;585 local zipFile ;586 for zipFile in $(zipFiles) {584 local archiveFiles = [ on $(dir) return $(ARCHIVE_FILES_TO_INSTALL) ] ; 585 local archiveFile ; 586 for archiveFile in $(archiveFiles) { 587 587 # use a unique dummy target for this file, on which we 588 588 # can define the TARGET_DIR variable 589 local dummyTarget = $(script)-dummy-$(dir:G=)-$( zipFile) ;589 local dummyTarget = $(script)-dummy-$(dir:G=)-$(archiveFile) ; 590 590 NotFile $(dummyTarget) ; 591 591 TARGET_DIR on $(dummyTarget) = $(dir:G=) ; 592 592 593 Depends $(dummyTarget) : $(initScript) $( zipFile)593 Depends $(dummyTarget) : $(initScript) $(archiveFile) 594 594 $(serializationDependency) ; 595 595 Depends $(script) : $(dummyTarget) ; 596 596 serializationDependency = $(dummyTarget) ; 597 597 598 AddUnzipFileToContainerUnzipFilesScript $(dummyTarget) 599 : $(initScript) $(zipFile) ; 598 # Note: this would require separate & redundant functions in the 599 # build/scripts/(build_haiku_image, build_haiku_cd) 600 # on one hand, the script should be able to parse the file 601 # extension inside unzipFile() renamed as extractFile(). 602 # on the other hand, i'd need to make sure it's a pure sh 603 # implementation and not bash. 604 # 605 #switch $(archiveFile:S) 606 #{ 607 # case .zip : AddUnzipFileToContainerExtractFilesScript 608 # $(dummyTarget) : $(initScript) $(archiveFile) ; 609 # case .tgz : AddUntarFileToContainerExtractFilesScript 610 # $(dummyTarget) : $(initScript) $(archiveFile) ; 611 # case * : Exit "CreateContainerExtractFilesScript: 612 # Unhandled archive extension: $(archiveFile:S)" ; 613 #} 614 # 615 AddExtractFileToContainerExtractFilesScript $(dummyTarget) 616 : $(initScript) $(archiveFile) ; 600 617 } 601 618 } 602 619 } 603 620 604 actions AddUnzipFileToContainerUnzipFilesScript 621 622 actions AddExtractFileToContainerExtractFilesScript 605 623 { 606 echo unzipFile "\"$(2[2])\"" "\"$(TARGET_DIR)\"" >> $(2[1])624 echo extractFile "\"$(2[2])\"" "\"$(TARGET_DIR)\"" >> $(2[1]) 607 625 } 608 626 609 627 … … 690 708 : $(dirName) : -x .svn : $(alwaysUpdate) ; 691 709 } 692 710 693 rule UnzipArchiveToHaikuImage dirTokens : zipFile : alwaysUpdate711 rule ExtractArchiveToHaikuImage dirTokens : archiveFile : alwaysUpdate 694 712 { 695 # UnzipArchiveToHaikuImage <dirTokens> : <zipFile> : <alwaysUpdate> ;713 # ExtractArchiveToHaikuImage <dirTokens> : <archiveFile> : <alwaysUpdate> ; 696 714 697 # If the image shall only be updated, we unziponly, if explicitely715 # If the image shall only be updated, we extract only, if explicitely 698 716 # requested. 699 717 if ! [ IsUpdateHaikuImageOnly ] || $(alwaysUpdate) { 700 UnzipArchiveToContainer $(HAIKU_IMAGE_CONTAINER_NAME) : $(dirTokens)701 : $( zipFile) ;718 ExtractArchiveToContainer $(HAIKU_IMAGE_CONTAINER_NAME) : $(dirTokens) 719 : $(archiveFile) ; 702 720 } 703 721 } 704 722 … … 771 789 772 790 rule InstallOptionalHaikuImagePackage package : url : dirTokens : isCDPackage 773 791 { 774 # download zipfile775 local zipFile = [ DownloadOptionalPackage $(package) : $(url) ] ;792 # download archive file 793 local archiveFile = [ DownloadOptionalPackage $(package) : $(url) ] ; 776 794 777 795 if ( $(isCDPackage) = true || $(isCDPackage) = 1 ) && $(HAIKU_CD_NAME) { 778 796 # TODO: If HAIKU_CD_NAME is set, that doesn't mean we're building a CD 779 797 # image! 780 798 # copy onto image 781 AddFilesToHaikuImage _packages_ : $( zipFile) ;799 AddFilesToHaikuImage _packages_ : $(archiveFile) ; 782 800 } else { 783 # unziponto image784 UnzipArchiveToHaikuImage $(dirTokens) : $(zipFile) ;801 # extract onto image 802 ExtractArchiveToHaikuImage $(dirTokens) : $(archiveFile) ; 785 803 } 786 804 } 787 805 … … 866 884 CreateContainerCopyFilesScript $(HAIKU_IMAGE_CONTAINER_NAME) : $(script) ; 867 885 } 868 886 869 rule CreateHaikuImage UnzipFilesScript script887 rule CreateHaikuImageExtractFilesScript script 870 888 { 871 CreateContainer UnzipFilesScript $(HAIKU_IMAGE_CONTAINER_NAME) : $(script) ;889 CreateContainerExtractFilesScript $(HAIKU_IMAGE_CONTAINER_NAME) : $(script) ; 872 890 } 873 891 874 892 rule BuildHaikuImage haikuImage : scripts : isImage : isVMwareImage -
build/jam/OptionalBuildFeatures
28 28 HAIKU_OPENSSL_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 29 29 $(HAIKU_OPENSSL_PACKAGE) ] ; 30 30 31 # unzipheaders and libraries31 # extract headers and libraries 32 32 HAIKU_OPENSSL_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_OPENSSL_DIR) 33 33 : common/include/ : $(zipFile) 34 34 ] ; -
build/jam/HaikuImage
657 657 : "haiku-alternative-gcc-archive" ; 658 658 659 659 # install the alternative libs in the right directory 660 UnzipArchiveToHaikuImage : $(otherAlternativeSystemLibsZip) ;660 ExtractArchiveToHaikuImage : $(otherAlternativeSystemLibsZip) ; 661 661 } 662 662 663 663 … … 734 734 AddTargetVariableToScript $(script) : <build>rc ; 735 735 AddTargetVariableToScript $(script) : <build>resattr ; 736 736 AddTargetVariableToScript $(script) : <build>unzip ; 737 # TODO: Need to add tar to haiku/src/tools 738 # AddTargetVariableToScript $(script) : <build>tar ; 739 AddTargetVariableToScript $(script) : tar ; 737 740 AddTargetVariableToScript $(script) : <build>vmdkimage ; 738 741 if $(HOST_RM_ATTRS_TARGET) { 739 742 AddTargetVariableToScript $(script) : $(HOST_RM_ATTRS_TARGET) : rmAttrs ; … … 749 752 # create the other scripts 750 753 HAIKU_IMAGE_MAKE_DIRS_SCRIPT = <HaikuImage>haiku.image-make-dirs ; 751 754 HAIKU_IMAGE_COPY_FILES_SCRIPT = <HaikuImage>haiku.image-copy-files ; 752 HAIKU_IMAGE_ UNZIP_FILES_SCRIPT = <HaikuImage>haiku.image-unzip-files ;755 HAIKU_IMAGE_EXTRACT_FILES_SCRIPT = <HaikuImage>haiku.image-extract-files ; 753 756 MakeLocate $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) $(HAIKU_IMAGE_COPY_FILES_SCRIPT) 754 $(HAIKU_IMAGE_ UNZIP_FILES_SCRIPT) : $(HAIKU_OUTPUT_DIR) ;757 $(HAIKU_IMAGE_EXTRACT_FILES_SCRIPT) : $(HAIKU_OUTPUT_DIR) ; 755 758 756 759 CreateHaikuImageMakeDirectoriesScript $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) ; 757 760 CreateHaikuImageCopyFilesScript $(HAIKU_IMAGE_COPY_FILES_SCRIPT) ; 758 CreateHaikuImage UnzipFilesScript $(HAIKU_IMAGE_UNZIP_FILES_SCRIPT) ;761 CreateHaikuImageExtractFilesScript $(HAIKU_IMAGE_EXTRACT_FILES_SCRIPT) ; 759 762 760 763 # Convenience wrapper rule around BuildHaikuImage. 761 764 rule _BuildHaikuImage image : isImage : isVMwareImage … … 771 774 $(HAIKU_IMAGE_EARLY_USER_SCRIPTS) 772 775 $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) 773 776 $(HAIKU_IMAGE_COPY_FILES_SCRIPT) 774 $(HAIKU_IMAGE_ UNZIP_FILES_SCRIPT)777 $(HAIKU_IMAGE_EXTRACT_FILES_SCRIPT) 775 778 $(HAIKU_IMAGE_LATE_USER_SCRIPTS) 776 779 : $(isImage) 777 780 : $(isVMwareImage) … … 782 785 $(HAIKU_IMAGE_INIT_VARIABLES_SCRIPT) 783 786 $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) 784 787 $(HAIKU_IMAGE_COPY_FILES_SCRIPT) 785 $(HAIKU_IMAGE_ UNZIP_FILES_SCRIPT)788 $(HAIKU_IMAGE_EXTRACT_FILES_SCRIPT) 786 789 ; 787 790 } 788 791 -
build/jam/HaikuCD
25 25 AddTargetVariableToScript $(script) : <build>rc ; 26 26 AddTargetVariableToScript $(script) : <build>resattr ; 27 27 AddTargetVariableToScript $(script) : <build>unzip ; 28 # TODO: Need to add tar to haiku/src/tools 29 # AddTargetVariableToScript $(script) : <build>tar ; 30 AddTargetVariableToScript $(script) : tar ; 28 31 AddTargetVariableToScript $(script) : <build>generate_attribute_stores ; 29 32 if $(HOST_RM_ATTRS_TARGET) { 30 33 AddTargetVariableToScript $(script) : $(HOST_RM_ATTRS_TARGET) : rmAttrs ; … … 50 53 $(HAIKU_IMAGE_EARLY_USER_SCRIPTS) 51 54 $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) 52 55 $(HAIKU_IMAGE_COPY_FILES_SCRIPT) 53 $(HAIKU_IMAGE_ UNZIP_FILES_SCRIPT)56 $(HAIKU_IMAGE_EXTRACT_FILES_SCRIPT) 54 57 $(HAIKU_IMAGE_LATE_USER_SCRIPTS) 55 58 ; 56 59 … … 59 62 $(HAIKU_CD_INIT_VARIABLES_SCRIPT) 60 63 $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) 61 64 $(HAIKU_IMAGE_COPY_FILES_SCRIPT) 62 $(HAIKU_IMAGE_ UNZIP_FILES_SCRIPT)65 $(HAIKU_IMAGE_EXTRACT_FILES_SCRIPT) 63 66 ; 64 67 } 65 68 -
build/jam/UserBuildConfig.ReadMe
122 122 : $(HAIKU_TOP)/../buildtools/jam 123 123 : "jam-src" : -x .svn -X \\*/jam/./bin.\\* ; 124 124 125 # Unzips the given ziparchive onto the image under /boot/develop/tools.126 UnzipArchiveToHaikuImage develop tools125 # Extracts the given archive onto the image under /boot/develop/tools. 126 ExtractArchiveToHaikuImage develop tools 127 127 : /home/bonefish/develop/haiku/misc/gcc-2.95.3-beos-070218/gcc-2.95.3_binutils-2.17_rel-070218.zip ; 128 128 129 129 # Add the optional package WonderBrush to the image. The package is downloaded -
build/jam/OptionalPackages
771 771 : 772 772 ; 773 773 } 774 # UnzipArchiveToHaikuImage home : data/vv.mp3.zip : 0 ;774 #ExtractArchiveToHaikuImage home : data/vv.mp3.zip : 0 ; 775 775 } 776 776 777 777 -
build/scripts/build_haiku_image
25 25 # rc 26 26 # rmAttrs 27 27 # unzip 28 # tar 28 29 # vmdkimage 29 30 # 30 31 if [ $# -gt 0 ]; then … … 74 75 fi 75 76 76 77 77 unzipFile()78 extractFile() 78 79 { 79 # unzipFile <archive> <directory>80 zipFile=$181 target UnzipDir=$280 # extractFile <archive> <directory> 81 archiveFile=$1 82 targetExtractedDir=$2 82 83 83 echo " Unzipping $zipFile ..."84 echo "Extracting $archiveFile ..." 84 85 85 unzipDir=$tmpDir/unzip 86 $rmAttrs -rf "$unzipDir" 87 mkdir -p "$unzipDir" 88 89 $unzip -q -d "$unzipDir" "$zipFile" 90 91 if [ -f $unzipDir/.OptionalPackageDescription ]; then 92 cat $unzipDir/.OptionalPackageDescription >> $copyrightsFile 86 extractDir=$tmpDir/extract 87 $rmAttrs -rf "$extractDir" 88 mkdir -p "$extractDir" 89 90 case "$archiveFile" in 91 *.zip) 92 $unzip -q -d "$extractDir" "$archiveFile" 93 ;; 94 *.tgz) 95 $tar -C "$extractDir" -xf "$archiveFile" 96 ;; 97 *) 98 echo "Unhandled archive extension in build_haiku_image extractFile()" 99 exit 1 100 ;; 101 esac 102 103 if [ -f $extractDir/.OptionalPackageDescription ]; then 104 cat $extractDir/.OptionalPackageDescription >> $copyrightsFile 93 105 echo >> $copyrightsFile 94 rm $ unzipDir/.OptionalPackageDescription106 rm $extractDir/.OptionalPackageDescription 95 107 fi 96 108 97 $cp -r "${sPrefix}$ unzipDir/." "${tPrefix}$targetUnzipDir"109 $cp -r "${sPrefix}$extractDir/." "${tPrefix}$targetExtractedDir" 98 110 99 $rmAttrs -rf "$ unzipDir"111 $rmAttrs -rf "$extractDir" 100 112 } 101 113 102 114 -
build/scripts/build_haiku_cd
12 12 # rc 13 13 # rmAttrs 14 14 # unzip 15 # tar 15 16 # generate_attribute_stores 16 17 # 17 18 if [ $# -gt 0 ]; then … … 35 36 rm=rm 36 37 37 38 38 unzipFile()39 extractFile() 39 40 { 40 # unzipFile <archive> <directory>41 zipFile=$142 target UnzipDir=$241 # extractFile <archive> <directory> 42 archiveFile=$1 43 targetExtractDir=$2 43 44 44 echo " Unzipping $zipFile ..."45 echo "Extracting $archiveFile ..." 45 46 46 unzipDir=$tmpDir/unzip 47 $rmAttrs -rf "$unzipDir" 48 mkdir -p "$unzipDir" 47 extractDir=$tmpDir/extract 48 $rmAttrs -rf "$extractDir" 49 mkdir -p "$extractDir" 50 51 case "$archiveFile" in 52 *.zip) 53 $unzip -q -d "$extractDir" "$archiveFile" 54 ;; 55 *.tgz) 56 $tar -C "$extractDir" -xf "$archiveFile" 57 ;; 58 *) 59 echo "Unhandled archive extension in build_haiku_image extractFile()" 60 exit 1 61 ;; 62 esac 49 63 50 $unzip -q -d "$unzipDir" "$zipFile" 51 52 if [ -f $unzipDir/.OptionalPackageDescription ]; then 53 cat $unzipDir/.OptionalPackageDescription >> $copyrightsFile 64 if [ -f $extractDir/.OptionalPackageDescription ]; then 65 cat $extractDir/.OptionalPackageDescription >> $copyrightsFile 54 66 echo >> $copyrightsFile 55 rm $ unzipDir/.OptionalPackageDescription67 rm $extractDir/.OptionalPackageDescription 56 68 fi 57 69 58 $cp -r "$ unzipDir/." "${tPrefix}$targetUnzipDir"70 $cp -r "$extractDir/." "${tPrefix}$targetExtractDir" 59 71 60 $rmAttrs -rf "$ unzipDir"72 $rmAttrs -rf "$extractDir" 61 73 } 62 74 63 75