diff --git a/build/jam/ImageRules b/build/jam/ImageRules index 67d468242b..9589468d71 100644 --- a/build/jam/ImageRules +++ b/build/jam/ImageRules @@ -820,6 +820,62 @@ actions AddExtractFileToContainerExtractFilesScript } +rule AddPackagesAndRepositoryVariablesToContainerScript script : container +{ + AddVariableToScript $(script) : downloadDir : $(HAIKU_DOWNLOAD_DIR) ; + AddTargetVariableToScript $(script) : package ; + AddTargetVariableToScript $(script) : get_package_dependencies + : getPackageDependencies ; + + # Add a variable to indicate whether packages dependencies shall be + # resolved. We always want to do that in non-update mode, but also in update + # mode when all packages are updated. + local updateOnly + = [ on $(container) return $(HAIKU_CONTAINER_UPDATE_ONLY) ] ; + local resolvePackageDependencies ; + if ( ! $(updateOnly) || $(HAIKU_UPDATE_ALL_PACKAGES) ) + && ! $(HAIKU_BOOTSTRAP_BUILD) { + resolvePackageDependencies = 1 ; + } + AddVariableToScript $(script) : resolvePackageDependencies + : $(resolvePackageDependencies) ; + + # Add variables "systemPackages" and "commonPackages" with the packages + # copied/updated. + local allPackages = [ on $(container) return $(HAIKU_PACKAGES_IN_IMAGE) ] ; + if $(updateOnly) && ! [ IncludeAllTargetsInContainer $(container) ] { + allPackages = [ FilterContainerUpdateTargets $(allPackages) + : [ on $(container) return $(HAIKU_INCLUDE_IN_CONTAINER_VAR) ] ] ; + } + + local systemPackages ; + local commonPackages ; + local package ; + for package in $(allPackages) { + if [ on $(package) return $(HAIKU_PACKAGE_INSTALLATION_LOCATION) ] + = system { + systemPackages += $(package) ; + } else { + commonPackages += $(package) ; + } + } + + AddTargetVariableToScript $(script) : $(systemPackages) : systemPackages ; + AddTargetVariableToScript $(script) : $(commonPackages) : commonPackages ; + + # Generate the repository package lists and add variables for the + # repositories. + local repository ; + local repositoryFiles ; + for repository in $(HAIKU_REPOSITORIES) { + repositoryFiles + += [ on $(repository) return $(HAIKU_REPOSITORY_CACHE_FILE) ] ; + } + + AddTargetVariableToScript $(script) : $(repositoryFiles) : repositories ; +} + + #pragma mark - Haiku Image rules rule SetUpdateHaikuImageOnly flag diff --git a/build/jam/images/HaikuImageCommon b/build/jam/images/HaikuImageCommon index 130e9b6cd2..9de87917f8 100644 --- a/build/jam/images/HaikuImageCommon +++ b/build/jam/images/HaikuImageCommon @@ -61,7 +61,6 @@ Always $(script) ; AddVariableToScript $(script) : sourceDir : $(HAIKU_TOP) ; AddVariableToScript $(script) : outputDir : $(HAIKU_OUTPUT_DIR) ; AddVariableToScript $(script) : tmpDir : $(HAIKU_TMP_DIR) ; -AddVariableToScript $(script) : downloadDir : $(HAIKU_DOWNLOAD_DIR) ; AddVariableToScript $(script) : installDir : $(HAIKU_INSTALL_DIR) ; #AddVariableToScript $(script) : isImage : 1 ; AddVariableToScript $(script) : imageSize : $(HAIKU_IMAGE_SIZE) ; @@ -76,11 +75,8 @@ AddTargetVariableToScript $(script) : fs_shell_command : fsShellCommand ; AddTargetVariableToScript $(script) : copyattr ; AddTargetVariableToScript $(script) : create_image : createImage ; AddTargetVariableToScript $(script) : makebootable ; -AddTargetVariableToScript $(script) : package ; AddTargetVariableToScript $(script) : rc ; AddTargetVariableToScript $(script) : resattr ; -AddTargetVariableToScript $(script) : get_package_dependencies - : getPackageDependencies ; AddTargetVariableToScript $(script) : unzip ; AddTargetVariableToScript $(script) : vmdkimage ; if $(HOST_RM_ATTRS_TARGET) { @@ -89,51 +85,8 @@ if $(HOST_RM_ATTRS_TARGET) { AddVariableToScript $(script) : rmAttrs : rm ; } -# Add a variable to indicate whether packages dependencies shall be resolved. We -# always want to do that in non-update mode, but also in update mode when all -# packages are updated. -local resolvePackageDependencies ; -if ( ! [ IsUpdateHaikuImageOnly ] || $(HAIKU_UPDATE_ALL_PACKAGES) ) - && ! $(HAIKU_BOOTSTRAP_BUILD) { - resolvePackageDependencies = 1 ; -} -AddVariableToScript $(script) : resolvePackageDependencies - : $(resolvePackageDependencies) ; - -# Add variables "systemPackages" and "commonPackages" with the packages -# copied/updated. -local container = $(HAIKU_IMAGE_CONTAINER_NAME) ; -local allPackages = [ on $(container) return $(HAIKU_PACKAGES_IN_IMAGE) ] ; -if [ on $(container) return $(HAIKU_CONTAINER_UPDATE_ONLY) ] - && ! [ IncludeAllTargetsInContainer $(container) ] { - allPackages = [ FilterContainerUpdateTargets $(allPackages) - : HAIKU_INCLUDE_IN_IMAGE ] ; -} - -local systemPackages ; -local commonPackages ; -local package ; -for package in $(allPackages) { - if [ on $(package) return $(HAIKU_PACKAGE_INSTALLATION_LOCATION) ] - = system { - systemPackages += $(package) ; - } else { - commonPackages += $(package) ; - } -} - -AddTargetVariableToScript $(script) : $(systemPackages) : systemPackages ; -AddTargetVariableToScript $(script) : $(commonPackages) : commonPackages ; - -# Generate the repository package lists and add variables for the repositories. -local repository ; -local repositoryFiles ; -for repository in $(HAIKU_REPOSITORIES) { - repositoryFiles - += [ on $(repository) return $(HAIKU_REPOSITORY_CACHE_FILE) ] ; -} - -AddTargetVariableToScript $(script) : $(repositoryFiles) : repositories ; +AddPackagesAndRepositoryVariablesToContainerScript $(script) + : $(HAIKU_IMAGE_CONTAINER_NAME) ; # create the other scripts HAIKU_IMAGE_MAKE_DIRS_SCRIPT = haiku.image-make-dirs ;