From 4f44282c3bbe2fb1885f632371aee1b3c9be16db Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sat, 25 Jan 2020 22:27:48 +0100 Subject: [PATCH] Move source and development packages out of /system/packages on release images Activating all these packages on live boot (especially live DVD where we also have the write overlay eating up RAM) significantly increases memory requirements for running Haiku, to the point that Installer may fail to run. Move them outside the packages/ directory so they are not activated. Installer already skips the _sources_ directory when installing, and lists the contents of _packages_ with checkbox to decide what to include in the install (they are put in system/packages on the target disk). Fix from previous version: the Haiku package was installed to /system instead of /system/packages. Fixes #15621. --- Jamfile | 12 ++--- build/jam/DefaultBuildProfiles | 42 +++++++++--------- build/jam/ImageRules | 33 ++++++++++---- build/jam/OptionalPackages | 76 +++++++++++++------------------- build/jam/UserBuildConfig.ReadMe | 8 ++-- build/jam/images/HaikuCD | 2 +- build/jam/images/HaikuImage | 2 +- 7 files changed, 88 insertions(+), 87 deletions(-) diff --git a/Jamfile b/Jamfile index d2a09f47ed..de9e087b2b 100644 --- a/Jamfile +++ b/Jamfile @@ -19,7 +19,7 @@ for architectureObject in [ MultiArchSubDirSetup ] { # Include required packages: # primary architecture -AddHaikuImagePackages [ FFilterByBuildFeatures +AddHaikuImageSystemPackages [ FFilterByBuildFeatures bash bc coreutils curl freetype icu libsolv zlib zstd regular_image @{ @@ -44,7 +44,7 @@ AddHaikuImageSourcePackages [ FFilterByBuildFeatures }@ ] ; if $(HAIKU_PACKAGING_ARCHS[1]) != x86_gcc2 { - AddHaikuImagePackages [ FFilterByBuildFeatures gcc_syslibs ] ; + AddHaikuImageSystemPackages [ FFilterByBuildFeatures gcc_syslibs ] ; } if $(HAIKU_PACKAGING_ARCHS[2]) { @@ -53,7 +53,7 @@ if $(HAIKU_PACKAGING_ARCHS[2]) { for architectureObject in [ MultiArchSubDirSetup $(HAIKU_PACKAGING_ARCHS[2-]) ] { on $(architectureObject) { - AddHaikuImagePackages [ FFilterByBuildFeatures + AddHaikuImageSystemPackages [ FFilterByBuildFeatures curl freetype icu libsolv zlib regular_image @{ @@ -61,7 +61,7 @@ if $(HAIKU_PACKAGING_ARCHS[2]) { }@ ] ; if $(TARGET_PACKAGING_ARCH) != x86_gcc2 { - AddHaikuImagePackages [ FFilterByBuildFeatures gcc_syslibs + AddHaikuImageSystemPackages [ FFilterByBuildFeatures gcc_syslibs mesa_swpipe ] ; } } @@ -70,11 +70,11 @@ if $(HAIKU_PACKAGING_ARCHS[2]) { # If enabled, make sure that OpenSSL is added to the image. if [ FIsBuildFeatureEnabled openssl ] { - AddHaikuImagePackages openssl ; + AddHaikuImageSystemPackages openssl ; } # add additionally requested packages -AddHaikuImagePackages $(HAIKU_IMAGE_ADDITIONAL_PACKAGES) ; +AddHaikuImageSystemPackages $(HAIKU_IMAGE_ADDITIONAL_PACKAGES) ; # Optionally we allow not to include the "src" subdirectory. if $(HAIKU_DONT_INCLUDE_SRC) { diff --git a/build/jam/DefaultBuildProfiles b/build/jam/DefaultBuildProfiles index 4f322beffd..dc5088d2f0 100644 --- a/build/jam/DefaultBuildProfiles +++ b/build/jam/DefaultBuildProfiles @@ -79,7 +79,7 @@ rule DefineDefaultBuildProfiles HAIKU_IMAGE_SIZE ?= 690 ; } - AddHaikuImagePackages + AddHaikuImageSystemPackages bepdf keymapswitcher llvm @@ -112,7 +112,7 @@ rule DefineDefaultBuildProfiles local architectureObject ; for architectureObject in [ MultiArchSubDirSetup ] { on $(architectureObject) { - AddHaikuImagePackages openssl wonderbrush@gcc2 ; + AddHaikuImageSystemPackages openssl wonderbrush@gcc2 ; } } @@ -126,11 +126,6 @@ rule DefineDefaultBuildProfiles } } - case "alpha-*" : { - Echo The alpha-* build profiles have been renamed to release-* ; - Exit ; - } - case "nightly-*" : { Echo Building Haiku Nightly ; HAIKU_ROOT_USER_NAME ?= user ; @@ -143,7 +138,7 @@ rule DefineDefaultBuildProfiles HAIKU_IMAGE_SIZE ?= 600 ; HAIKU_NIGHTLY_BUILD = 1 ; - AddHaikuImagePackages + AddHaikuImageSystemPackages man nano noto @@ -182,7 +177,7 @@ rule DefineDefaultBuildProfiles HAIKU_IMAGE_SIZE ?= 450 ; } - AddHaikuImagePackages + AddHaikuImageSystemPackages openssl ; } @@ -192,53 +187,58 @@ rule DefineDefaultBuildProfiles HAIKU_IMAGE_HOST_NAME ?= shredder ; HAIKU_IMAGE_SIZE ?= 20000 ; - AddHaikuImagePackages + AddHaikuImageSystemPackages binutils bison - curl_devel expat flex - freetype_devel gawk gcc grep haikuporter less libedit - libedit_devel m4 make ncurses6 - ncurses6_devel noto python sed texinfo - zlib_devel ; + AddHaikuImageDisabledPackages + curl_devel + freetype_devel + libedit_devel + ncurses6_devel + zlib_devel + ; + # secondary architecture packages local architectureObject ; for architectureObject in [ MultiArchSubDirSetup $(TARGET_PACKAGING_ARCHS[2-]) ] { on $(architectureObject) { - AddHaikuImagePackages + AddHaikuImageSystemPackages binutils curl - curl_devel expat freetype - freetype_devel gcc icu libsolv libedit - libedit_devel ncurses6 - ncurses6_devel zlib - zlib_devel ; + AddHaikuImageDisabledPackages + curl_devel + freetype_devel + libedit_devel + ncurses6_devel + zlib_devel + ; } } diff --git a/build/jam/ImageRules b/build/jam/ImageRules index be9dfa2f0f..5c11609dc9 100644 --- a/build/jam/ImageRules +++ b/build/jam/ImageRules @@ -1039,13 +1039,12 @@ rule AddPackageFilesToHaikuImage location : packages : flags HAIKU_PACKAGES_IN_IMAGE on $(HAIKU_IMAGE_CONTAINER_NAME) = [ on $(HAIKU_IMAGE_CONTAINER_NAME) return $(HAIKU_PACKAGES_IN_IMAGE) ] $(packages) ; - HAIKU_PACKAGE_INSTALLATION_LOCATION on $(packages) = $(location) ; if nameFromMetaInfo in $(flags) { - AddFilesToHaikuImage $(location) packages : $(packages) + AddFilesToHaikuImage $(location) : $(packages) : packageFileName : computeName ; } else { - AddFilesToHaikuImage $(location) packages : $(packages) ; + AddFilesToHaikuImage $(location) : $(packages) ; } } @@ -1097,10 +1096,10 @@ rule OptionalPackageDependencies package : dependencies } -rule AddHaikuImagePackages packages +rule AddHaikuImagePackages packages : directory { - # AddHaikuImagePackages ; - # Adds the given packages to the image. + # AddHaikuImagePackages : ; + # Adds the given packages to the image in the given directory. packages = [ FFilterByBuildFeatures $(packages) ] ; @@ -1124,7 +1123,7 @@ rule AddHaikuImagePackages packages HAIKU_INCLUDE_IN_IMAGE on $(file) = 1 ; } - AddPackageFilesToHaikuImage system : $(file) ; + AddPackageFilesToHaikuImage $(directory) : $(file) ; } } } @@ -1135,10 +1134,28 @@ rule AddHaikuImageSourcePackages packages # Adds the given source packages for to the image. if $(HAIKU_INCLUDE_SOURCES) = 1 { - AddHaikuImagePackages $(packages)_source ; + AddHaikuImagePackages $(packages)_source : _sources_ ; } } +rule AddHaikuImageSystemPackages packages +{ + # AddHaikuImageSystemPackages ; + # Adds the given packages for to the image, in the system + # directory, so they will be activated on first boot. + + AddHaikuImagePackages $(packages) : system packages ; +} + +rule AddHaikuImageDisabledPackages packages +{ + # AddHaikuImageDisabledPackages ; + # Adds the given packages for to the image, in the _packages_ + # directory, so they can be later enabled in Installer. + + AddHaikuImagePackages $(packages) : _packages_ ; +} + rule IsHaikuImagePackageAdded package { local resolvedPackage = [ IsPackageAvailable $(package) ] ; diff --git a/build/jam/OptionalPackages b/build/jam/OptionalPackages index 1853e0c49b..2022cc5a97 100644 --- a/build/jam/OptionalPackages +++ b/build/jam/OptionalPackages @@ -21,7 +21,7 @@ OptionalPackageDependencies NetFS : UserlandFS ; # Haiku sources if $(HAIKU_INCLUDE_SOURCES) = 1 { - AddPackageFilesToHaikuImage system + AddPackageFilesToHaikuImage _sources_ : haiku_source.hpkg : @@ -32,7 +32,7 @@ if $(HAIKU_INCLUDE_SOURCES) = 1 { # BeBook if [ IsOptionalHaikuImagePackageAdded BeBook ] { - AddHaikuImagePackages be_book ; + AddHaikuImageSystemPackages be_book ; AddSymlinkToHaikuImage home Desktop : /boot/system/documentation/BeBook/index.html : BeBook ; @@ -66,18 +66,18 @@ if [ IsOptionalHaikuImagePackageAdded BeOSCompatibility ] { # Development if [ IsOptionalHaikuImagePackageAdded Development ] { # autotools and perl - AddHaikuImagePackages autoconf automake perl texinfo ; + AddHaikuImageDisabledPackages autoconf automake perl texinfo ; AddHaikuImageSourcePackages autoconf automake texinfo ; # some other build tools - AddHaikuImagePackages pkgconfig scons ; + AddHaikuImageDisabledPackages pkgconfig scons ; AddHaikuImageSourcePackages pkgconfig ; # devel packages for some of the base set local architectureObject ; for architectureObject in [ MultiArchSubDirSetup ] { on $(architectureObject) { - AddHaikuImagePackages curl_devel glu_devel jpeg_devel + AddHaikuImageDisabledPackages curl_devel glu_devel jpeg_devel libpng16_devel zlib_devel ; } } @@ -90,13 +90,13 @@ if [ IsOptionalHaikuImagePackageAdded DevelopmentBase ] { local architectureObject ; for architectureObject in [ MultiArchSubDirSetup ] { on $(architectureObject) { - AddHaikuImagePackages binutils gcc ; + AddHaikuImageDisabledPackages binutils gcc ; AddHaikuImageSourcePackages binutils gcc ; } } # other commonly used tools - AddHaikuImagePackages bison cdrtools flex jam m4 make mkdepend nasm patch ; + AddHaikuImageDisabledPackages bison cdrtools flex jam m4 make mkdepend nasm patch ; AddHaikuImageSourcePackages bison cdrtools m4 make patch ; } @@ -104,7 +104,7 @@ if [ IsOptionalHaikuImagePackageAdded DevelopmentBase ] { # DevelopmentMin if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ] && ( $(TARGET_ARCH) = x86 || $(TARGET_ARCH) = x86_64 ) { - AddPackageFilesToHaikuImage system + AddPackageFilesToHaikuImage _packages_ : haiku_devel.hpkg haiku_$(TARGET_PACKAGING_ARCHS[2-])_devel.hpkg @@ -113,7 +113,7 @@ if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ] ; if $(HAIKU_IS_BOOTSTRAP) != 1 { - AddPackageFilesToHaikuImage system + AddPackageFilesToHaikuImage _packages_ : makefile_engine.hpkg : @@ -125,7 +125,7 @@ if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ] # Git if [ IsOptionalHaikuImagePackageAdded Git ] { - AddHaikuImagePackages git git_daemon ; + AddHaikuImageSystemPackages git git_daemon ; AddHaikuImageSourcePackages git ; } @@ -136,7 +136,7 @@ if [ IsOptionalHaikuImagePackageAdded WebPositive ] { for architectureObject in [ MultiArchSubDirSetup ] { on $(architectureObject) { if [ FIsBuildFeatureEnabled webpositive ] { - AddPackageFilesToHaikuImage system : webpositive.hpkg + AddPackageFilesToHaikuImage system packages : webpositive.hpkg : nameFromMetaInfo ; break ; } @@ -147,42 +147,26 @@ if [ IsOptionalHaikuImagePackageAdded WebPositive ] { # Welcome if [ IsOptionalHaikuImagePackageAdded Welcome ] { - AddPackageFilesToHaikuImage system : haiku_userguide_ca.hpkg + AddPackageFilesToHaikuImage system packages : + haiku_userguide_ca.hpkg + haiku_userguide_de.hpkg + haiku_userguide_en.hpkg + haiku_userguide_es.hpkg + haiku_userguide_fi.hpkg + haiku_userguide_fr.hpkg + haiku_userguide_hu.hpkg + haiku_userguide_it.hpkg + haiku_userguide_jp.hpkg + haiku_userguide_pl.hpkg + haiku_userguide_pt_BR.hpkg + haiku_userguide_pt_PT.hpkg + haiku_userguide_ru.hpkg + haiku_userguide_sk.hpkg + haiku_userguide_sv_SE.hpkg + haiku_userguide_uk.hpkg + haiku_userguide_zh_CN.hpkg + haiku_welcome.hpkg : nameFromMetaInfo ; - AddPackageFilesToHaikuImage system : haiku_userguide_de.hpkg - : nameFromMetaInfo ; - AddPackageFilesToHaikuImage system : haiku_userguide_en.hpkg - : nameFromMetaInfo ; - AddPackageFilesToHaikuImage system : haiku_userguide_es.hpkg - : nameFromMetaInfo ; - AddPackageFilesToHaikuImage system : haiku_userguide_fi.hpkg - : nameFromMetaInfo ; - AddPackageFilesToHaikuImage system : haiku_userguide_fr.hpkg - : nameFromMetaInfo ; - AddPackageFilesToHaikuImage system : haiku_userguide_hu.hpkg - : nameFromMetaInfo ; - AddPackageFilesToHaikuImage system : haiku_userguide_it.hpkg - : nameFromMetaInfo ; - AddPackageFilesToHaikuImage system : haiku_userguide_jp.hpkg - : nameFromMetaInfo ; - AddPackageFilesToHaikuImage system : haiku_userguide_pl.hpkg - : nameFromMetaInfo ; - AddPackageFilesToHaikuImage system : haiku_userguide_pt_BR.hpkg - : nameFromMetaInfo ; - AddPackageFilesToHaikuImage system : haiku_userguide_pt_PT.hpkg - : nameFromMetaInfo ; - AddPackageFilesToHaikuImage system : haiku_userguide_ru.hpkg - : nameFromMetaInfo ; - AddPackageFilesToHaikuImage system : haiku_userguide_sk.hpkg - : nameFromMetaInfo ; - AddPackageFilesToHaikuImage system : haiku_userguide_sv_SE.hpkg - : nameFromMetaInfo ; - AddPackageFilesToHaikuImage system : haiku_userguide_uk.hpkg - : nameFromMetaInfo ; - AddPackageFilesToHaikuImage system : haiku_userguide_zh_CN.hpkg - : nameFromMetaInfo ; - - AddPackageFilesToHaikuImage system : haiku_welcome.hpkg : nameFromMetaInfo ; AddSymlinkToHaikuImage home Desktop : /boot/system/bin/quicktour : Quick\ Tour ; diff --git a/build/jam/UserBuildConfig.ReadMe b/build/jam/UserBuildConfig.ReadMe index de9a80932c..c0c1320f26 100644 --- a/build/jam/UserBuildConfig.ReadMe +++ b/build/jam/UserBuildConfig.ReadMe @@ -142,7 +142,7 @@ ExtractArchiveToHaikuImage develop tools # Add the optional package WonderBrush to the image. The package is downloaded # via wget (i.e. wget must be installed). -AddHaikuImagePackages WonderBrush ; +AddHaikuImageSystemPackages WonderBrush ; # Add the optional package WebPositive to the image but don't add its # dependent SQLite optional package to the image. WebPositive still needs @@ -212,7 +212,7 @@ switch $(HAIKU_BUILD_PROFILE) { case "disk" : { AddOptionalHaikuImagePackages BeBook BeHappy Bluetooth Development OpenSSH OpenSSL Welcome ; - AddHaikuImagePackages bepdf cvs p7zip pe subversion vision wonderbrush ; + AddHaikuImageSystemPackages bepdf cvs p7zip pe subversion vision wonderbrush ; } case "qemu" : { @@ -223,7 +223,7 @@ switch $(HAIKU_BUILD_PROFILE) { HAIKU_IMAGE_SIZE = 400 ; HAIKU_DONT_CLEAR_IMAGE = 1 ; AddOptionalHaikuImagePackages Development ; - AddHaikuImagePackages pe ; + AddHaikuImageSystemPackages pe ; } case "anyboot" : { @@ -234,7 +234,7 @@ switch $(HAIKU_BUILD_PROFILE) { HAIKU_IMAGE_SIZE = 1024 ; HAIKU_DONT_CLEAR_IMAGE = 1 ; AddOptionalHaikuImagePackages Development ; - AddHaikuImagePackages pe ; + AddHaikuImageSystemPackages pe ; CopyDirectoryToHaikuImage home Desktop : $(HAIKU_TOP)/../crash-tests ; } } diff --git a/build/jam/images/HaikuCD b/build/jam/images/HaikuCD index 3057181e99..a09dcc1d16 100644 --- a/build/jam/images/HaikuCD +++ b/build/jam/images/HaikuCD @@ -1,5 +1,5 @@ # Execute pre-image user config rules. -UserBuildConfigRulePreImage ; +UserBuildConfigRulePreImage ; # Set cd file name and directory defaults and locate the cd file. HAIKU_CD_NAME ?= $(HAIKU_DEFAULT_CD_NAME) ; diff --git a/build/jam/images/HaikuImage b/build/jam/images/HaikuImage index a37f91105d..6e93dc8a8d 100644 --- a/build/jam/images/HaikuImage +++ b/build/jam/images/HaikuImage @@ -14,7 +14,7 @@ if $(HAIKU_BUILD_TYPE) = bootstrap { # build the haiku system packages and add them include [ FDirName $(HAIKU_BUILD_RULES_DIR) HaikuPackages ] ; -AddPackageFilesToHaikuImage system : +AddPackageFilesToHaikuImage system packages : haiku_loader.hpkg haiku.hpkg haiku_$(TARGET_PACKAGING_ARCHS[2-]).hpkg