From 59e2e2f3a7a7deb5f68a552c5327e54949ed0e80 Mon Sep 17 00:00:00 2001 From: Oliver Tappe Date: Tue, 4 Jun 2013 00:24:37 +0200 Subject: [PATCH] Adjust handling of package infos. * add HAIKU_PACKAGING_ARCH, which is set to the target packaging architecture * introduce support for generic package infos, which are package infos that are the same for all architectures, except for the declaration of the package architecture itself * move package info files underneath architecture-specific or generic folder --- build/jam/BuildSetup | 10 ++++++++++ build/jam/PackageRules | 8 +++++++- build/scripts/build_haiku_package | 12 ++++++++++++ src/data/package_infos/{ => any}/haiku_userguide | 0 src/data/package_infos/{ => any}/haiku_welcome | 0 src/data/package_infos/{ => any}/makefile_engine | 0 .../package_infos/{ => generic}/haiku_cross_devel | 2 +- src/data/package_infos/{ => generic}/haiku_devel | 2 +- src/data/package_infos/{ => generic}/haiku_loader | 2 +- src/data/package_infos/{ => x86_gcc2}/haiku | 0 10 files changed, 32 insertions(+), 4 deletions(-) rename src/data/package_infos/{ => any}/haiku_userguide (100%) rename src/data/package_infos/{ => any}/haiku_welcome (100%) rename src/data/package_infos/{ => any}/makefile_engine (100%) rename src/data/package_infos/{ => generic}/haiku_cross_devel (93%) rename src/data/package_infos/{ => generic}/haiku_devel (93%) rename src/data/package_infos/{ => generic}/haiku_loader (89%) rename src/data/package_infos/{ => x86_gcc2}/haiku (100%) diff --git a/build/jam/BuildSetup b/build/jam/BuildSetup index f99193474c..55ee28af00 100644 --- a/build/jam/BuildSetup +++ b/build/jam/BuildSetup @@ -232,6 +232,7 @@ switch $(HAIKU_CPU) { HAIKU_BOOT_FLOPPY_IMAGE_SIZE = 1440 ; # in kB # offset in floppy image (>= sizeof(haiku_loader)) HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 192 ; # in kB - unused yet + HAIKU_PACKAGING_ARCH = ppc ; } case arm : { @@ -244,6 +245,7 @@ switch $(HAIKU_CPU) { HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 192 ; # in kB - unused yet HAIKU_NO_WERROR = 1 ; # we use #warning as placeholders for things to write... + HAIKU_PACKAGING_ARCH = arm ; } case x86 : { @@ -252,6 +254,11 @@ switch $(HAIKU_CPU) { HAIKU_BOOT_FLOPPY_IMAGE_SIZE = 2880 ; # in kB # offset in floppy image (>= sizeof(haiku_loader)) HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 300 ; # in kB + if $(HAIKU_GCC_VERSION[1]) = 2 { + HAIKU_PACKAGING_ARCH = x86_gcc2 ; + } else { + HAIKU_PACKAGING_ARCH = x86 ; + } # yasm is required for target arch x86 if ! $(HAIKU_YASM) { @@ -265,6 +272,7 @@ switch $(HAIKU_CPU) { HAIKU_BOOT_FLOPPY_IMAGE_SIZE = 2880 ; # in kB # offset in floppy image (>= sizeof(haiku_loader)) HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 300 ; # in kB + HAIKU_PACKAGING_ARCH = x86_64 ; # x86_64 kernel source is under arch/x86. HAIKU_KERNEL_ARCH = x86 ; @@ -293,6 +301,7 @@ switch $(HAIKU_CPU) { HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 260 ; # in kB HAIKU_NO_WERROR = 1 ; # we use #warning as placeholders for things to write... + HAIKU_PACKAGING_ARCH = m68k ; } case mipsel : { @@ -303,6 +312,7 @@ switch $(HAIKU_CPU) { HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 192 ; # in kB HAIKU_NO_WERROR = 1 ; # we use #warning as placeholders for things to write... + HAIKU_PACKAGING_ARCH = mipsel ; } case * : Exit "Currently unsupported target CPU:" $(HAIKU_CPU) ; diff --git a/build/jam/PackageRules b/build/jam/PackageRules index 8a8015aec1..a1cabfdec1 100644 --- a/build/jam/PackageRules +++ b/build/jam/PackageRules @@ -298,7 +298,11 @@ rule BuildHaikuPackage package : packageInfo # locate the package and package info MakeLocate $(package) : $(HAIKU_PACKAGES_DIR) ; - SEARCH on $(packageInfo) += $(HAIKU_PACKAGE_INFOS_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) ; # prepare the script that initializes the shell variables @@ -316,6 +320,8 @@ rule BuildHaikuPackage package : packageInfo : [ on $(package) return $(HAIKU_PACKAGE_COMPRESSION_LEVEL) ] ; 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 58aa396d06..9a242b1372 100755 --- a/build/scripts/build_haiku_package +++ b/build/scripts/build_haiku_package @@ -9,6 +9,8 @@ set -o errexit # tmpDir # compressionLevel # updateOnly +# cc +# packagingArch # # addattr # copyattr @@ -113,6 +115,16 @@ 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 ..." diff --git a/src/data/package_infos/haiku_userguide b/src/data/package_infos/any/haiku_userguide similarity index 100% rename from src/data/package_infos/haiku_userguide rename to src/data/package_infos/any/haiku_userguide diff --git a/src/data/package_infos/haiku_welcome b/src/data/package_infos/any/haiku_welcome similarity index 100% rename from src/data/package_infos/haiku_welcome rename to src/data/package_infos/any/haiku_welcome diff --git a/src/data/package_infos/makefile_engine b/src/data/package_infos/any/makefile_engine similarity index 100% rename from src/data/package_infos/makefile_engine rename to src/data/package_infos/any/makefile_engine diff --git a/src/data/package_infos/haiku_cross_devel b/src/data/package_infos/generic/haiku_cross_devel similarity index 93% rename from src/data/package_infos/haiku_cross_devel rename to src/data/package_infos/generic/haiku_cross_devel index 099ea122fa..4ee25448a3 100644 --- a/src/data/package_infos/haiku_cross_devel +++ b/src/data/package_infos/generic/haiku_cross_devel @@ -1,6 +1,6 @@ name haiku_cross_devel version R1~alpha4_pm-1 -architecture x86_gcc2 +architecture HAIKU_PACKAGING_ARCH summary "The Haiku base system files for cross development" description "The package contains all files associated with the base system diff --git a/src/data/package_infos/haiku_devel b/src/data/package_infos/generic/haiku_devel similarity index 93% rename from src/data/package_infos/haiku_devel rename to src/data/package_infos/generic/haiku_devel index f9d78ad25d..36ffcb0f3d 100644 --- a/src/data/package_infos/haiku_devel +++ b/src/data/package_infos/generic/haiku_devel @@ -1,6 +1,6 @@ name haiku_devel version R1~alpha4_pm-1 -architecture x86_gcc2 +architecture HAIKU_PACKAGING_ARCH summary "The Haiku base system development files" description "The package contains all files associated with the base system diff --git a/src/data/package_infos/haiku_loader b/src/data/package_infos/generic/haiku_loader similarity index 89% rename from src/data/package_infos/haiku_loader rename to src/data/package_infos/generic/haiku_loader index b9bb561c9d..a0600c25d9 100644 --- a/src/data/package_infos/haiku_loader +++ b/src/data/package_infos/generic/haiku_loader @@ -1,6 +1,6 @@ name haiku_loader version R1~alpha4_pm-1 -architecture x86_gcc2 +architecture HAIKU_PACKAGING_ARCH summary "The Haiku boot loader" description "The Haiku boot loader." diff --git a/src/data/package_infos/haiku b/src/data/package_infos/x86_gcc2/haiku similarity index 100% rename from src/data/package_infos/haiku rename to src/data/package_infos/x86_gcc2/haiku