From c01380b1b7e3c6ac4d27c73dd1b2dee290cb8b5e Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Sun, 7 Jul 2013 15:02:29 +0200 Subject: [PATCH] Move package info pre-processing to jam build system Also, pre-process all package infos (not only the generic ones) and define the macro HAIKU_BOOTSTRAP_BUILD, if building a package for a bootstrap image. --- build/jam/PackageRules | 46 ++++++++++++++++++++++++------- build/scripts/build_haiku_package | 11 -------- 2 files changed, 36 insertions(+), 21 deletions(-) diff --git a/build/jam/PackageRules b/build/jam/PackageRules index 46c9d70cfc..563ae3e0d5 100644 --- a/build/jam/PackageRules +++ b/build/jam/PackageRules @@ -29,23 +29,50 @@ rule HaikuPackage package } +rule PreprocessPackageInfo source : directory +{ + source = $(source:G=package-info-source) ; + SEARCH on $(source) += + [ FDirName $(HAIKU_PACKAGE_INFOS_DIR) $(HAIKU_PACKAGING_ARCH) ] + [ FDirName $(HAIKU_PACKAGE_INFOS_DIR) any ] + [ FDirName $(HAIKU_PACKAGE_INFOS_DIR) generic ] + ; + + local target = $(source:BSG=package-info)-package-info ; + local defines = HAIKU_PACKAGING_ARCH=$(HAIKU_PACKAGING_ARCH) ; + if $(HAIKU_BOOTSTRAP_BUILD) { + defines += HAIKU_BOOTSTRAP_BUILD ; + target = $(target)-bootstrap ; + } + + MakeLocate $(target) : $(directory) ; + Depends $(target) : $(source) ; + + CCDEFS on $(target) = [ FDefines $(defines) ] ; + + PreprocessPackageInfo1 $(target) : $(source) ; + + return $(target) ; +} + + +actions PreprocessPackageInfo1 +{ + $(HOST_CC) -E -w $(CCDEFS) - -o $(1) < $(2) +} + + rule BuildHaikuPackage package : packageInfo { - packageInfo = $(packageInfo:G=package-info) ; - local grist = [ FHaikuPackageGrist $(package) ] ; local tempDir = [ FDirName $(HAIKU_PACKAGES_BUILD_DIR) $(grist) ] ; local scriptDir = [ FDirName $(tempDir) scripts ] ; - # locate the package and package info + # build the package info and locate the package + packageInfo = [ PreprocessPackageInfo $(packageInfo) : $(tempDir) ] ; MakeLocate $(package) : $(HAIKU_PACKAGES_DIR) ; - SEARCH on $(packageInfo) += - [ FDirName $(HAIKU_PACKAGE_INFOS_DIR) $(HAIKU_PACKAGING_ARCH) ] - [ FDirName $(HAIKU_PACKAGE_INFOS_DIR) any ] - [ FDirName $(HAIKU_PACKAGE_INFOS_DIR) generic ] - ; - LocalDepends $(package) : $(packageInfo) ; + Depends $(package) : $(packageInfo) ; # prepare the script that initializes the shell variables local initVariablesScript = <$(grist)>haiku.package-init-vars ; @@ -63,7 +90,6 @@ rule BuildHaikuPackage package : packageInfo AddVariableToScript $(script) : updateOnly : [ on $(package) return $(HAIKU_CONTAINER_UPDATE_ONLY) ] ; AddVariableToScript $(script) : cc : $(TARGET_CC) ; - AddVariableToScript $(script) : packagingArch : $(HAIKU_PACKAGING_ARCH) ; AddTargetVariableToScript $(script) : addattr ; AddTargetVariableToScript $(script) : copyattr ; AddTargetVariableToScript $(script) : mime_db : mimeDB ; diff --git a/build/scripts/build_haiku_package b/build/scripts/build_haiku_package index 9a242b1372..d0d65093a2 100755 --- a/build/scripts/build_haiku_package +++ b/build/scripts/build_haiku_package @@ -10,7 +10,6 @@ set -o errexit # compressionLevel # updateOnly # cc -# packagingArch # # addattr # copyattr @@ -115,16 +114,6 @@ echo "$packageName: mimeset'ing package contents ..." $mimeset --mimedb "$mimeDB" "$contentsDir" -# create the package-info from a generic package-info if needed -if [ $(basename $(dirname $packageInfoPath)) = 'generic' ]; then - echo "$packageName: Creating real package info from generic one ..." - genericPackageInfoPath=$packageInfoPath - packageInfoPath=$tmpDir/.PackageInfo - cat "$genericPackageInfoPath" \ - | $cc -E -DHAIKU_PACKAGING_ARCH=$packagingArch - > "$packageInfoPath" -fi - - # create the package if [ ! $updateOnly ]; then echo "$packageName: Creating the package ..."