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).
This commit is contained in:
Oliver Tappe 2014-03-16 01:00:28 +01:00
parent bef384b058
commit 72e677911f
4 changed files with 277 additions and 14 deletions

29
Jamfile
View File

@ -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 ] ;
}

View File

@ -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
;
}
}

View File

@ -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)
}

View File

@ -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 <bin>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 <bin>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
<preference>Deskbar FileTypes Keyboard Keymap Locale
Mouse Network Notifications Screen ScreenSaver
Shortcuts Time Touchpad <preference>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 <module>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 = <catalog-addon>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 += <etc>termcap <etc>sysless <etc>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 = <driver-settings>kernel ;
SEARCH on $(driverSettingsFiles)
= [ FDirName $(HAIKU_TOP) data settings kernel drivers ] ;
AddFilesToHaikuImage home config settings kernel drivers
: $(driverSettingsFiles) ;
local networkSettingsFiles = <network-settings>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 <post-install>fresh_install
= [ FDirName $(HAIKU_TOP) data system settings ] ;
AddFilesToHaikuImage system settings : <post-install>fresh_install ;
include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImageCommon ] ;