Fix image rules wrt system/ relative entries

* Introduce on-container jam variable HAIKU_CONTAINER_SYSTEM_DIR_TOKENS
  containing the directory tokens relative to the container root to
  refer to system.
* Use the variable in *ToContainer rules that need to put something in
  system.
* AddFilesToContainer: Fix overlooked reference to AddFilesToHaikuImage.
* AddBootModuleSymlinksToContainer: Use relative symlinks. This avoids
  special-casing in the boot loader for packagefs.
This commit is contained in:
Ingo Weinhold
2011-07-17 16:54:17 +02:00
parent 6d7953ef0a
commit ba65f94667
3 changed files with 40 additions and 12 deletions
+11 -1
View File
@@ -20,6 +20,7 @@ HAIKU_INCLUDE_IN_CONTAINER_VAR on $(HAIKU_IMAGE_CONTAINER_NAME)
= HAIKU_INCLUDE_IN_IMAGE ; = HAIKU_INCLUDE_IN_IMAGE ;
HAIKU_INSTALL_TARGETS_VAR on $(HAIKU_IMAGE_CONTAINER_NAME) HAIKU_INSTALL_TARGETS_VAR on $(HAIKU_IMAGE_CONTAINER_NAME)
= HAIKU_IMAGE_INSTALL_TARGETS ; = HAIKU_IMAGE_INSTALL_TARGETS ;
HAIKU_CONTAINER_SYSTEM_DIR_TOKENS on $(HAIKU_IMAGE_CONTAINER_NAME) = system ;
# network boot archive # network boot archive
HAIKU_NET_BOOT_ARCHIVE_CONTAINER_NAME = haiku-netboot-archive-container ; HAIKU_NET_BOOT_ARCHIVE_CONTAINER_NAME = haiku-netboot-archive-container ;
@@ -28,6 +29,8 @@ HAIKU_CONTAINER_GRIST on $(HAIKU_NET_BOOT_ARCHIVE_CONTAINER_NAME)
# HAIKU_INCLUDE_IN_CONTAINER_VAR -- update only mode not supported # HAIKU_INCLUDE_IN_CONTAINER_VAR -- update only mode not supported
HAIKU_INSTALL_TARGETS_VAR on $(HAIKU_NET_BOOT_ARCHIVE_CONTAINER_NAME) HAIKU_INSTALL_TARGETS_VAR on $(HAIKU_NET_BOOT_ARCHIVE_CONTAINER_NAME)
= HAIKU_NET_BOOT_ARCHIVE_INSTALL_TARGETS ; = HAIKU_NET_BOOT_ARCHIVE_INSTALL_TARGETS ;
HAIKU_CONTAINER_SYSTEM_DIR_TOKENS on $(HAIKU_NET_BOOT_ARCHIVE_CONTAINER_NAME)
= system ;
# boot floppy # boot floppy
HAIKU_FLOPPY_BOOT_IMAGE_CONTAINER_NAME = haiku-boot-floppy-container ; HAIKU_FLOPPY_BOOT_IMAGE_CONTAINER_NAME = haiku-boot-floppy-container ;
@@ -36,6 +39,8 @@ HAIKU_CONTAINER_GRIST on $(HAIKU_FLOPPY_BOOT_IMAGE_CONTAINER_NAME)
# HAIKU_INCLUDE_IN_CONTAINER_VAR -- update only mode not supported # HAIKU_INCLUDE_IN_CONTAINER_VAR -- update only mode not supported
HAIKU_INSTALL_TARGETS_VAR on $(HAIKU_FLOPPY_BOOT_IMAGE_CONTAINER_NAME) HAIKU_INSTALL_TARGETS_VAR on $(HAIKU_FLOPPY_BOOT_IMAGE_CONTAINER_NAME)
= HAIKU_FLOPPY_BOOT_IMAGE_INSTALL_TARGETS ; = HAIKU_FLOPPY_BOOT_IMAGE_INSTALL_TARGETS ;
HAIKU_CONTAINER_SYSTEM_DIR_TOKENS on $(HAIKU_FLOPPY_BOOT_IMAGE_CONTAINER_NAME)
= system ;
# boot CD image # boot CD image
HAIKU_CD_BOOT_IMAGE_CONTAINER_NAME = haiku-boot-cd-container ; HAIKU_CD_BOOT_IMAGE_CONTAINER_NAME = haiku-boot-cd-container ;
@@ -43,13 +48,18 @@ HAIKU_CONTAINER_GRIST on $(HAIKU_CD_BOOT_IMAGE_CONTAINER_NAME) = CDBootImage ;
# HAIKU_INCLUDE_IN_CONTAINER_VAR -- update only mode not supported # HAIKU_INCLUDE_IN_CONTAINER_VAR -- update only mode not supported
HAIKU_INSTALL_TARGETS_VAR on $(HAIKU_CD_BOOT_IMAGE_CONTAINER_NAME) HAIKU_INSTALL_TARGETS_VAR on $(HAIKU_CD_BOOT_IMAGE_CONTAINER_NAME)
= HAIKU_CD_BOOT_IMAGE_INSTALL_TARGETS ; = HAIKU_CD_BOOT_IMAGE_INSTALL_TARGETS ;
HAIKU_CONTAINER_SYSTEM_DIR_TOKENS on $(HAIKU_CD_BOOT_IMAGE_CONTAINER_NAME)
= system ;
# boot CD for PPC image # boot CD for PPC image
HAIKU_CD_BOOT_PPC_IMAGE_CONTAINER_NAME = haiku-boot-cd-ppc-container ; HAIKU_CD_BOOT_PPC_IMAGE_CONTAINER_NAME = haiku-boot-cd-ppc-container ;
HAIKU_CONTAINER_GRIST on $(HAIKU_CD_BOOT_PPC_IMAGE_CONTAINER_NAME) = CDBootPPCImage ; HAIKU_CONTAINER_GRIST on $(HAIKU_CD_BOOT_PPC_IMAGE_CONTAINER_NAME)
= CDBootPPCImage ;
# HAIKU_INCLUDE_IN_CONTAINER_VAR -- update only mode not supported # HAIKU_INCLUDE_IN_CONTAINER_VAR -- update only mode not supported
HAIKU_INSTALL_TARGETS_VAR on $(HAIKU_CD_BOOT_PPC_IMAGE_CONTAINER_NAME) HAIKU_INSTALL_TARGETS_VAR on $(HAIKU_CD_BOOT_PPC_IMAGE_CONTAINER_NAME)
= HAIKU_CD_BOOT_PPC_IMAGE_INSTALL_TARGETS ; = HAIKU_CD_BOOT_PPC_IMAGE_INSTALL_TARGETS ;
HAIKU_CONTAINER_SYSTEM_DIR_TOKENS on $(HAIKU_CD_BOOT_PPC_IMAGE_CONTAINER_NAME)
= system ;
# Haiku image/install defaults # Haiku image/install defaults
HAIKU_DEFAULT_IMAGE_NAME = haiku.image ; HAIKU_DEFAULT_IMAGE_NAME = haiku.image ;
+28 -11
View File
@@ -165,6 +165,8 @@ rule AddFilesToContainer container : directoryTokens : targets : destName
local directory = [ AddDirectoryToContainer $(container) local directory = [ AddDirectoryToContainer $(container)
: $(directoryTokens) ] ; : $(directoryTokens) ] ;
local containerGrist = [ on $(container) return $(HAIKU_CONTAINER_GRIST) ] ; local containerGrist = [ on $(container) return $(HAIKU_CONTAINER_GRIST) ] ;
local systemDirTokens
= [ on $(container) return $(HAIKU_CONTAINER_SYSTEM_DIR_TOKENS) ] ;
# If the image shall only be updated, we filter out all targets not marked # If the image shall only be updated, we filter out all targets not marked
# accordingly. # accordingly.
@@ -201,8 +203,8 @@ rule AddFilesToContainer container : directoryTokens : targets : destName
if $(catalogs) { if $(catalogs) {
local signature local signature
= [ on $(target) return $(HAIKU_CATALOG_SIGNATURE) ] ; = [ on $(target) return $(HAIKU_CATALOG_SIGNATURE) ] ;
AddFilesToHaikuImage AddFilesToContainer $(container)
system data locale catalogs $(signature) : $(systemDirTokens) data locale catalogs $(signature)
: $(catalogs) ; : $(catalogs) ;
} }
} }
@@ -296,7 +298,10 @@ rule AddHeaderDirectoryToContainer container : dirTokens : dirName
# AddHeaderDirectoryToContainer <container> : <dirTokens> : [ <dirName> ] # AddHeaderDirectoryToContainer <container> : <dirTokens> : [ <dirName> ]
# : <alwaysUpdate> ; # : <alwaysUpdate> ;
CopyDirectoryToContainer $(container) : system develop headers local systemDirTokens
= [ on $(container) return $(HAIKU_CONTAINER_SYSTEM_DIR_TOKENS) ] ;
CopyDirectoryToContainer $(container) : $(systemDirTokens) develop headers
: [ FDirName $(HAIKU_TOP) headers $(dirTokens) ] : [ FDirName $(HAIKU_TOP) headers $(dirTokens) ]
: $(dirName) : -x .svn : $(alwaysUpdate) ; : $(dirName) : -x .svn : $(alwaysUpdate) ;
} }
@@ -311,7 +316,10 @@ rule AddWifiFirmwareToContainer container : driver : package : archive : extract
local firmwareArchive = [ FDirName local firmwareArchive = [ FDirName
$(HAIKU_TOP) data system data firmware $(driver) $(archive) ] ; $(HAIKU_TOP) data system data firmware $(driver) $(archive) ] ;
local dirTokens = system data firmware $(driver) ; local systemDirTokens
= [ on $(container) return $(HAIKU_CONTAINER_SYSTEM_DIR_TOKENS) ] ;
local dirTokens = $(systemDirTokens) data firmware $(driver) ;
if $(extract) = true || $(extract) = 1 { if $(extract) = true || $(extract) = 1 {
ExtractArchiveToContainer $(container) : $(dirTokens) ExtractArchiveToContainer $(container) : $(dirTokens)
: $(firmwareArchive) : $(package) ; : $(firmwareArchive) : $(package) ;
@@ -338,11 +346,13 @@ rule AddDriversToContainer container : relativeDirectoryTokens : targets
{ {
# AddDriversToContainer <container> : <relative directory> : <targets> ; # AddDriversToContainer <container> : <relative directory> : <targets> ;
# #
local directoryTokens = system add-ons kernel drivers dev local systemDirTokens
= [ on $(container) return $(HAIKU_CONTAINER_SYSTEM_DIR_TOKENS) ] ;
local directoryTokens = $(systemDirTokens) add-ons kernel drivers dev
$(relativeDirectoryTokens) ; $(relativeDirectoryTokens) ;
AddFilesToContainer $(container) AddFilesToContainer $(container)
: system add-ons kernel drivers bin : $(systemDirTokens) add-ons kernel drivers bin
: $(targets) ; : $(targets) ;
# If the image shall only be updated, we don't add any symlinks. # If the image shall only be updated, we don't add any symlinks.
@@ -371,7 +381,9 @@ rule AddNewDriversToContainer container : relativeDirectoryTokens
{ {
# AddNewDriversToContainer <container> : <directory> : <targets> ; # AddNewDriversToContainer <container> : <directory> : <targets> ;
# #
local directoryTokens = system add-ons kernel drivers local systemDirTokens
= [ on $(container) return $(HAIKU_CONTAINER_SYSTEM_DIR_TOKENS) ] ;
local directoryTokens = $(systemDirTokens) add-ons kernel drivers
$(relativeDirectoryTokens) ; $(relativeDirectoryTokens) ;
AddFilesToContainer $(container) : $(directoryTokens) AddFilesToContainer $(container) : $(directoryTokens)
@@ -390,6 +402,9 @@ rule AddBootModuleSymlinksToContainer container : targets
return ; return ;
} }
local systemDirTokens
= [ on $(container) return $(HAIKU_CONTAINER_SYSTEM_DIR_TOKENS) ] ;
# add the symlinks # add the symlinks
local installTargetsVar local installTargetsVar
= [ on $(container) return $(HAIKU_INSTALL_TARGETS_VAR) ] ; = [ on $(container) return $(HAIKU_INSTALL_TARGETS_VAR) ] ;
@@ -406,10 +421,10 @@ rule AddBootModuleSymlinksToContainer container : targets
} }
local name = $(target:BS) ; local name = $(target:BS) ;
local linkTarget = [ FDirName /boot $(installDir:G=) $(name) ] ; local linkTarget = [ FDirName ../../.. $(installDir:G=) $(name) ] ;
AddSymlinkToContainer $(container) AddSymlinkToContainer $(container)
: system add-ons kernel boot : $(systemDirTokens) add-ons kernel boot
: $(linkTarget) : $(name) ; : $(linkTarget) : $(name) ;
} }
} }
@@ -1017,8 +1032,10 @@ rule AddLicenseToHaikuImage file : name : searchPath
name = ; name = ;
} }
AddFilesToHaikuImage system data licenses : $(file) local systemDirTokens
: $(name) ; = [ on $(container) return $(HAIKU_CONTAINER_SYSTEM_DIR_TOKENS) ] ;
AddFilesToHaikuImage $(systemDirTokens) data licenses : $(file) : $(name) ;
} }
+1
View File
@@ -272,6 +272,7 @@ rule HaikuPackage package
= $(grist)_HAIKU_INCLUDE_IN_PACKAGE ; = $(grist)_HAIKU_INCLUDE_IN_PACKAGE ;
HAIKU_INSTALL_TARGETS_VAR on $(package) HAIKU_INSTALL_TARGETS_VAR on $(package)
= $(grist)_HAIKU_PACKAGE_INSTALL_TARGETS ; = $(grist)_HAIKU_PACKAGE_INSTALL_TARGETS ;
HAIKU_CONTAINER_SYSTEM_DIR_TOKENS on $(package) = ;
HAIKU_CURRENTLY_BUILT_HAIKU_PACKAGE = $(package) ; HAIKU_CURRENTLY_BUILT_HAIKU_PACKAGE = $(package) ;
} }