From 72e677911f70c9b191fa5ea2f1c0e76cb00ea2b7 Mon Sep 17 00:00:00 2001 From: Oliver Tappe Date: Sun, 16 Mar 2014 01:00:28 +0100 Subject: [PATCH] Make set of source packages for bootstrap-image configurable. * Add new build profile 'minimum', which defines a minimum set of packages. * Introduce HAIKU_BOOTSTRAP_SOURCES_PROFILE and let it default to '@minimum-raw'. This can be overruled in UserBuildConfig, setting it to '@release-raw' will cause all source packages required for a full release to be put onto the bootstrap-image. * Add new image HaikuImageMinimum, which is meant to define the minimum useful Haiku image (yeah, I know that's vague). * Add HAIKU_MINIMUM_BUILD, which indicates that HaikuImageMinimum should be used (it would be better to merge this with HAIKU_BOOTSTRAP_BUILD into something like HAIKU_BUILD_TYPE) * Cleanup duplicate references to basic packages - those are now added by the topmost Jamfile (no longer referenced by the build profiles). --- Jamfile | 29 +++- build/jam/DefaultBuildProfiles | 28 +++- build/jam/RepositoryRules | 7 +- build/jam/images/HaikuImageMinimum | 227 +++++++++++++++++++++++++++++ 4 files changed, 277 insertions(+), 14 deletions(-) create mode 100644 build/jam/images/HaikuImageMinimum diff --git a/Jamfile b/Jamfile index 7aa6d8ffaa..086d82b4df 100644 --- a/Jamfile +++ b/Jamfile @@ -11,13 +11,28 @@ for architectureObject in [ MultiArchSubDirSetup ] { } } -# Include packages that are required by all images. -if ! $(HAIKU_BOOTSTRAP_BUILD) { +# Include packages that are required by all images: +# primary architecture +AddHaikuImagePackages + curl freetype icu libsolv zlib + ; +# secondary architectures +local architectureObject ; +for architectureObject + in [ MultiArchSubDirSetup $(HAIKU_PACKAGING_ARCHS[2-]) ] { + on $(architectureObject) { + AddHaikuImagePackages + curl freetype icu libsolv zlib + ; + } +} + +# Include packages that are required by non-basic images: +if ! ( $(HAIKU_BOOTSTRAP_BUILD) || $(HAIKU_MINIMUM_BUILD) ) { # primary architecture AddHaikuImagePackages - bzip2 ctags curl findutils gawk grep sed tar which zlib - ffmpeg freetype icu jpeg libpng libsolv - mesa mesa_devel mesa_swrast glu + bzip2 ctags ffmpeg findutils gawk glu grep jpeg libpng + mesa mesa_devel mesa_swrast sed tar which ; # secondary architectures @@ -26,7 +41,7 @@ if ! $(HAIKU_BOOTSTRAP_BUILD) { in [ MultiArchSubDirSetup $(HAIKU_PACKAGING_ARCHS[2-]) ] { on $(architectureObject) { AddHaikuImagePackages - curl ffmpeg freetype glu icu jpeg libpng libsolv mesa zlib + ffmpeg glu jpeg libpng mesa ; } } @@ -68,6 +83,8 @@ include [ FDirName $(HAIKU_BUILD_RULES_DIR) repositories Haiku ] ; # specify the Haiku image and network boot archive contents if $(HAIKU_BOOTSTRAP_BUILD) { include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImageBootstrap ] ; +} else if $(HAIKU_MINIMUM_BUILD) { + include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImageMinimum ] ; } else { include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImage ] ; } diff --git a/build/jam/DefaultBuildProfiles b/build/jam/DefaultBuildProfiles index a77ca989cd..d221b79e0d 100644 --- a/build/jam/DefaultBuildProfiles +++ b/build/jam/DefaultBuildProfiles @@ -1,9 +1,14 @@ # set HAIKU_BOOTSTRAP_BUILD early, if building a bootstrap Haiku image switch $(HAIKU_BUILD_PROFILE) { - case "bootstrap-*" : + case "bootstrap-*" : { HAIKU_BOOTSTRAP_BUILD = 1 ; HAIKU_DEFINES += HAIKU_BOOTSTRAP_BUILD ; TARGET_DEFINES += HAIKU_BOOTSTRAP_BUILD ; + } + + case "minimum-*" : { + HAIKU_MINIMUM_BUILD = 1 ; + } } @@ -28,6 +33,13 @@ rule DefineDefaultBuildProfiles DefineBuildProfile bootstrap-vmware : vmware-image : "haiku-bootstrap.vmdk" ; + # minimum profiles + DefineBuildProfile minimum-raw : image : "haiku-minimum.image" ; + DefineBuildProfile minimum-vmware : vmware-image : "haiku-minimum.vmdk" ; + DefineBuildProfile minimum-anyboot : anyboot-image + : "haiku-minimum-anyboot.image" ; + + switch $(HAIKU_BUILD_PROFILE) { case "release-*" : { Echo Building Haiku R1/development preview ; @@ -41,6 +53,7 @@ rule DefineDefaultBuildProfiles bepdf cvs keymapswitcher + llvm man mercurial nano @@ -123,18 +136,14 @@ rule DefineDefaultBuildProfiles automake binutils bison - curl curl_devel findutils flex - freetype freetype_devel gawk gcc grep haikuporter - icu - libsolv libtool libtool_libltdl m4 @@ -144,7 +153,6 @@ rule DefineDefaultBuildProfiles python sed texinfo - zlib zlib_devel ; @@ -172,6 +180,14 @@ rule DefineDefaultBuildProfiles AddOptionalHaikuImagePackages DevelopmentMin ; } + + case "minimum-*" : { + Echo Building Haiku Minimum Target ; + HAIKU_IMAGE_HOST_NAME ?= shredder ; + + AddHaikuImagePackages + ; + } } diff --git a/build/jam/RepositoryRules b/build/jam/RepositoryRules index 1242c62fb3..43089f3b76 100644 --- a/build/jam/RepositoryRules +++ b/build/jam/RepositoryRules @@ -1,5 +1,8 @@ #pragma mark - Private +# default value for the build profile that defines the set of source packages +# that will be put onto the bootstrap image +HAIKU_BOOTSTRAP_SOURCES_PROFILE ?= @minimum-raw ; rule PackageFamily packageBaseName { @@ -555,8 +558,8 @@ rule BuildHaikuPortsSourcePackageDirectory actions BuildHaikuPortsPackageList { - HAIKU_BOOTSTRAP_BUILD= $(JAM:E=jam) @release-raw build-package-list $(1) \ - $(HAIKU_REPOSITORY_BUILD_ADDITIONAL_PACKAGES) + HAIKU_BOOTSTRAP_BUILD= $(JAM:E=jam) $(HAIKU_BOOTSTRAP_SOURCES_PROFILE) \ + build-package-list $(1) $(HAIKU_REPOSITORY_BUILD_ADDITIONAL_PACKAGES) } diff --git a/build/jam/images/HaikuImageMinimum b/build/jam/images/HaikuImageMinimum new file mode 100644 index 0000000000..d81d4832c9 --- /dev/null +++ b/build/jam/images/HaikuImageMinimum @@ -0,0 +1,227 @@ +# This file defines what ends up on the Haiku minimum image (respectively in +# the Haiku installation directory) and it executes the rules building the image +# (respectively installing the files in the installation directory). + + +SYSTEM_BIN = [ FFilterByBuildFeatures + "[" + addattr alert arp + base64 basename bash bc beep bfsinfo + cal cat catattr checkfs checkitout chgrp chmod chop chown chroot cksum clear + clockconfig cmp collectcatkeys comm compress copyattr cp + csplit cut date dc dd desklink df diff diff3 dircolors dirname + diskimage draggers driveinfo dstcheck du dumpcatalog + echo eject env error expand expr + factor false fdinfo ffm filepanel finddir findpaths fmt fold + fortune ftp ftpd funzip + getarch getlimits groupadd groupdel groupmod groups gzip gzexe + hd head hey hostname + id ident ifconfig install isvolume + ideinfo@ide idestatus@ide + join kernel_debugger keymap keystore kill + less lessecho lesskey link linkcatkeys listarea listattr listimage listdev + listport listres listsem listusb ln locale logger login logname ls + lsindex + makebootable md5sum merge message mimeset mkdir + mkfifo mkfs mkindex mktemp modifiers mount mountvolume mv + netcat netstat nl nohup notify nproc + od open + package package_repo passwd paste patch pathchk pc ping ping6 pkgman + pr prio printenv printf profile ps ptx pwd + query quit + rc readlink reindex release renice rlog rm rmattr rmindex rmdir roster + route + safemode screen_blanker screenmode sdiff setarch setmime settype + setversion setvolume seq sha1sum sha256sum shar shred shuf shutdown sleep + sort split stat strace stty su sum sync sysinfo + tac tail tcpdump tcptester tee telnet telnetd test timeout top touch + tr traceroute trash true truncate tsort tty + uname unchop unexpand unmount uniq unlink unshar unzip unzipsfx + uptime urlwrapper useradd userdel uudecode uuencode + vdir version vmstat + waitfor watch wc wget whoami writembr@x86 xres + yes + zdiff zforce zgrep zip zipcloak zipgrep zipnote zipsplit zmore znew +] ; + +SYSTEM_APPS = [ FFilterByBuildFeatures + AboutSystem ActivityMonitor BootManager@x86,x86_64 CharacterMap + DeskCalc Debugger Devices DiskProbe DiskUsage DriveSetup + Expander Installer + NetworkStatus + PowerStatus ProcessController ShowImage + StyledEdit Terminal TextSearch Workspaces +] ; +SYSTEM_PREFERENCES = [ FFilterByBuildFeatures + Appearance Backgrounds + Deskbar FileTypes Keyboard Keymap Locale + Mouse Network Notifications Screen ScreenSaver + Shortcuts Time Touchpad Tracker VirtualMemory +] ; +SYSTEM_DEMOS = ; + + +rule HaikuImageGetSystemLibs +{ + return + # libs with special grist + [ MultiArchDefaultGristFiles libroot.so : revisioned ] + $(HAIKU_SHARED_LIBSTDC++_$(TARGET_PACKAGING_ARCH)) + $(HAIKU_SHARED_LIBSUPC++_$(TARGET_PACKAGING_ARCH)) + # libs with standard grist + [ MultiArchDefaultGristFiles [ FFilterByBuildFeatures + libbe.so libbsd.so libbnetapi.so + libdebug.so libdevice.so + libgame.so + libgnu.so libmail.so libmedia.so libmidi.so libmidi2.so + libnetwork.so + libpackage.so + libscreensaver.so + libtextencoding.so libtracker.so libtranslation.so + ] ] + ; +} + + +rule HaikuImageGetPrivateSystemLibs +{ + return [ MultiArchDefaultGristFiles [ FFilterByBuildFeatures + libalm.so + libfluidsynth.so +# libilmimf.so + libpackage-add-on-libsolv.so + libroot-addon-icu.so + ] ] ; +} + + +SYSTEM_SERVERS = [ FFilterByBuildFeatures + app_server debug_server dns_resolver_server input_server + keystore_server media_addon_server + mount_server net_server notification_server + package_daemon power_daemon registrar + syslog_daemon +] ; + +SYSTEM_NETWORK_DEVICES = ethernet loopback ; +SYSTEM_NETWORK_DATALINK_PROTOCOLS = ethernet_frame arp loopback_frame + ipv6_datagram ; +#SYSTEM_NETWORK_PPP = ipcp modem pap pppoe ; +SYSTEM_NETWORK_PROTOCOLS = ipv4 tcp udp icmp unix icmp6 ipv6 ; + +SYSTEM_ADD_ONS_ACCELERANTS = [ FFilterByBuildFeatures + x86,x86_64 @{ + vesa.accelerant + }@ # x86,x86_64 + x86 @{ + 3dfx.accelerant ati.accelerant matrox.accelerant neomagic.accelerant + nvidia.accelerant intel_810.accelerant intel_extreme.accelerant + radeon.accelerant radeon_hd.accelerant s3.accelerant + #via.accelerant vmware.accelerant + }@ # x86 +] ; +SYSTEM_ADD_ONS_TRANSLATORS = STXTTranslator ; +SYSTEM_ADD_ONS_LOCALE_CATALOGS = plaintext ; +SYSTEM_ADD_ONS_MEDIA = ; +SYSTEM_ADD_ONS_MEDIA_PLUGINS = ; +SYSTEM_ADD_ONS_PRINT = ; +SYSTEM_ADD_ONS_PRINT_TRANSPORT = ; +SYSTEM_ADD_ONS_SCREENSAVERS = ; +SYSTEM_ADD_ONS_DRIVERS_AUDIO = ; +SYSTEM_ADD_ONS_DRIVERS_AUDIO_OLD = ; +SYSTEM_ADD_ONS_DRIVERS_GRAPHICS = [ FFilterByBuildFeatures + x86,x86_64 @{ + vesa + }@ # x86,x86_64 + x86 @{ + ati 3dfx intel_810 intel_extreme matrox neomagic nvidia radeon radeon_hd + s3 #via vmware + }@ # x86 +] ; +SYSTEM_ADD_ONS_DRIVERS_MIDI = ; +SYSTEM_ADD_ONS_DRIVERS_NET = [ FFilterByBuildFeatures + x86,x86_64 @{ + 3com atheros813x ar81xx attansic_l1 attansic_l2 broadcom440x + broadcom570x dec21xxx ipro100 ipro1000 jmicron2x0 marvell_yukon nforce + pcnet rtl8139 rtl81xx sis19x syskonnect via_rhine vt612x + }@ # x86_64 + + etherpci pegasus sis900 usb_davicom usb_asix usb_ecm wb840 + + # WLAN drivers + x86 @{ + aironetwifi atheroswifi broadcom43xx + iprowifi2100 iprowifi2200 iprowifi3945 + iprowifi4965 marvell88w8363 marvell88w8335 + ralinkwifi wavelanwifi + }@ # x86 + + # WWAN drivers + #usb_beceemwmx@gpl +] ; +SYSTEM_ADD_ONS_DRIVERS_POWER = [ FFilterByBuildFeatures acpi_button@x86 ] ; +SYSTEM_ADD_ONS_BUS_MANAGERS = [ FFilterByBuildFeatures + ata@ata pci ps2@x86,x86_64 isa@x86,x86_64 + ide@ide scsi config_manager agp_gart@x86 usb firewire@x86 acpi@x86,x86_64 + virtio +] ; +SYSTEM_ADD_ONS_FILE_SYSTEMS = bfs bindfs btrfs exfat ext2 fat iso9660 + attribute_overlay write_overlay ntfs packagefs reiserfs@x86 udf ; + + +# build the haiku system packages and add them +include [ FDirName $(HAIKU_BUILD_RULES_DIR) HaikuPackages ] ; + +AddPackageFilesToHaikuImage system : + haiku_loader.hpkg + haiku.hpkg + haiku_$(TARGET_PACKAGING_ARCHS[2-]).hpkg + : + nameFromMetaInfo + ; + + +AddSymlinkToHaikuImage home Desktop : /boot/home : Home ; + +# global settings when a package is installed in ~/config +AddDirectoryToHaikuImage home config settings global ; + + +# scripts and data files +local userBootScripts = UserBootscript UserSetupEnvironment.sample ; +SEARCH on $(userBootScripts) = [ FDirName $(HAIKU_TOP) data config boot ] ; +AddFilesToHaikuImage home config settings boot : $(userBootScripts) ; + +# Add boot launch directory +AddDirectoryToHaikuImage home config settings boot launch ; + +local etcDir = [ FDirName $(HAIKU_TOP) data etc ] ; +local etcFiles = inputrc profile ; +etcFiles = $(etcFiles:G=etc) ; +SEARCH on $(etcFiles) = $(etcDir) ; +etcFiles += termcap sysless sysless.in ; +AddFilesToHaikuImage system settings etc : $(etcFiles) ; + +local profileFiles = [ Glob $(etcDir)/profile.d : *.sh ] ; +profileFiles = $(profileFiles:G=profile-d) ; +AddDirectoryToHaikuImage system settings etc profile.d ; +AddFilesToHaikuImage system settings etc profile.d : $(profileFiles) ; + +local driverSettingsFiles = kernel ; +SEARCH on $(driverSettingsFiles) + = [ FDirName $(HAIKU_TOP) data settings kernel drivers ] ; +AddFilesToHaikuImage home config settings kernel drivers + : $(driverSettingsFiles) ; + +local networkSettingsFiles = services ; +SEARCH on $(networkSettingsFiles) + = [ FDirName $(HAIKU_TOP) data settings network ] ; +AddFilesToHaikuImage system settings network : $(networkSettingsFiles) ; + +# fresh install indicator file for the post install scripts +SEARCH on fresh_install + = [ FDirName $(HAIKU_TOP) data system settings ] ; +AddFilesToHaikuImage system settings : fresh_install ; + + +include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImageCommon ] ;