xref: /haiku/build/jam/images/HaikuImage (revision 37343ca1f6786a7e392de7485c82d967e0911be6)
1# This file defines what ends up on the Haiku image (respectively in the Haiku
2# installation directory) and it executes the rules building the image
3# (respectively installing the files in the installation directory).
4
5
6SYSTEM_BIN = [ FFilterByBuildFeatures
7	"["
8	addattr alert arp
9	base64 basename bash bc beep bfsinfo
10	cal cat catattr checkfs checkitout chgrp chmod chop chown chroot cksum clear
11	clockconfig cmp collectcatkeys comm compress copyattr CortexAddOnHost cp
12	csplit cut date dc dd desklink df diff diff3 dircolors dirname
13	diskimage draggers driveinfo dstcheck du dumpcatalog
14	echo eject env error expand expr
15	factor false fdinfo ffm filepanel find finddir FirstBootPrompt fmt fold
16	fortune frcode ftp ftpd funzip fwcontrol
17	gawk gdb@x86 getlimits groupadd groupdel groupmod groups gzip gzexe
18	hd head hey hostname
19	id ident ifconfig <bin>install installsound iroster isvolume
20	ideinfo@ide idestatus@ide
21	join kernel_debugger keymap keystore kill
22	less lessecho lesskey link linkcatkeys listarea listattr listimage listdev
23	listport listres listsem listusb ln locale locate logger login logname ls
24	lsindex
25	mail2mbox makebootable mbox2mail md5sum merge message mimeset mkdos mkdir
26	mkfifo mkfs mkindex mktemp modifiers mount mount_nfs mountvolume mv
27	netcat netstat nl nohup notify nproc
28	od open
29	package package_repo passwd paste patch pathchk pc ping ping6 pkgman play
30	playfile playsound playwav pr prio printenv printf profile ps ptx pwd
31	query quit
32	rc readlink reindex release renice rlog rm rmattr rmindex rmdir roster
33	route
34	safemode screen_blanker screenmode screenshot sdiff setdecor setmime settype
35	setversion setvolume seq sha1sum sha256sum shar shred shuf shutdown sleep
36	sort spamdbm split stat strace stty su sum sync sysinfo
37	tac tail tcpdump tcptester tee telnet telnetd test timeout top touch
38	tr traceroute translate trash true truncate tsort tty
39	uname unchop unexpand unmount uniq unlink unshar unzip unzipsfx
40	<bin>updatedb uptime urlwrapper useradd userdel uudecode uuencode
41	vdir version vmstat
42	waitfor watch wc wget whoami writembr@x86 xargs xres
43	yes
44	zdiff zforce zgrep zip zipcloak <bin>zipgrep zipnote zipsplit zmore znew
45] ;
46
47SYSTEM_APPS = [ FFilterByBuildFeatures
48	AboutSystem ActivityMonitor BootManager@x86 CDPlayer CharacterMap
49	CodyCam Debugger DeskCalc Devices DiskProbe DiskUsage DriveSetup
50	Expander GLInfo@x86 HaikuDepot Icon-O-Matic Installer LaunchBox Magnify Mail
51	MediaConverter MediaPlayer MidiPlayer NetworkStatus PackageInstaller People
52	PoorMan PowerStatus ProcessController Screenshot ShowImage SoundRecorder
53	StyledEdit Terminal TextSearch TV WebWatch Workspaces
54] ;
55SYSTEM_PREFERENCES = [ FFilterByBuildFeatures
56	Appearance Backgrounds CPUFrequency DataTranslations
57	<preference>Deskbar E-mail FileTypes Keyboard Keymap Locale Media
58	Mouse Network Notifications Printers Screen ScreenSaver
59	Shortcuts Sounds Time Touchpad <preference>Tracker VirtualMemory
60] ;
61SYSTEM_DEMOS = [ FFilterByBuildFeatures
62	BSnow Chart Clock Cortex FontDemo GLTeapot@x86
63	$(HAIKU_INCLUDE_TRADEMARKS)Haiku3d@x86 Mandelbrot OverlayImage Pairs
64	PatchBay Playground Pulse Sudoku
65] ;
66
67
68rule HaikuImageGetSystemLibs
69{
70	return
71		# libs with special grist
72		[ MultiArchDefaultGristFiles libroot.so : revisioned ]
73		$(HAIKU_SHARED_LIBSTDC++_$(TARGET_PACKAGING_ARCH))
74		$(HAIKU_SHARED_LIBSUPC++_$(TARGET_PACKAGING_ARCH))
75		# libs with standard grist
76		[ MultiArchDefaultGristFiles [ FFilterByBuildFeatures
77			libbe.so libbsd.so libbnetapi.so
78			libdebug.so libdevice.so
79			libgame.so libGL.so@x86 libglut.so@x86
80			libgnu.so libmail.so libmedia.so libmidi.so libmidi2.so
81			libnetwork.so
82			libpackage.so
83			libscreensaver.so
84			libtextencoding.so libtiff.so libtracker.so libtranslation.so
85		] ]
86		;
87}
88
89
90rule HaikuImageGetPrivateSystemLibs
91{
92	return [ MultiArchDefaultGristFiles [ FFilterByBuildFeatures
93		libalm.so
94		libfluidsynth.so
95		libilmimf.so
96		libpackage-add-on-libsolv.so
97		libroot-addon-icu.so
98	] ] ;
99}
100
101
102SYSTEM_SERVERS = [ FFilterByBuildFeatures
103	app_server cddb_daemon debug_server dns_resolver_server input_server
104	keystore_server mail_daemon media_addon_server media_server midi_server
105	mount_server net_server nfs4_idmapper_server notification_server
106	package_daemon power_daemon print_server print_addon_server registrar
107	syslog_daemon
108] ;
109
110SYSTEM_NETWORK_DEVICES = ethernet loopback ;
111SYSTEM_NETWORK_DATALINK_PROTOCOLS = ethernet_frame <module>arp loopback_frame
112	ipv6_datagram ;
113#SYSTEM_NETWORK_PPP = ipcp modem pap pppoe ;
114SYSTEM_NETWORK_PROTOCOLS = ipv4 tcp udp icmp unix icmp6 ipv6 ;
115
116SYSTEM_ADD_ONS_ACCELERANTS = [ FFilterByBuildFeatures
117	x86,x86_64 @{
118		vesa.accelerant intel_extreme.accelerant
119	}@ # x86,x86_64
120	x86 @{
121		3dfx.accelerant ati.accelerant matrox.accelerant neomagic.accelerant
122		nvidia.accelerant intel_810.accelerant
123		radeon.accelerant radeon_hd.accelerant s3.accelerant
124		#via.accelerant vmware.accelerant
125	}@ # x86
126] ;
127SYSTEM_ADD_ONS_TRANSLATORS = BMPTranslator EXRTranslator GIFTranslator
128	HVIFTranslator ICOTranslator JPEGTranslator JPEG2000Translator
129	PCXTranslator PNGTranslator PPMTranslator
130	RAWTranslator RTFTranslator SGITranslator STXTTranslator TGATranslator
131	TIFFTranslator WebPTranslator WonderBrushTranslator ICNSTranslator
132;
133SYSTEM_ADD_ONS_LOCALE_CATALOGS = <catalog-addon>plaintext ;
134SYSTEM_ADD_ONS_MEDIA = [ FFilterByBuildFeatures
135	cortex_audioadapter.media_addon
136	cortex_flanger.media_addon
137	dvb.media_addon@x86
138	hmulti_audio.media_addon
139	mixer.media_addon
140	opensound.media_addon
141	tone_producer_demo.media_addon
142	usb_webcam.media_addon
143	video_producer_demo.media_addon
144	video_window_demo.media_addon
145	firewire_dv.media_addon@x86
146	#legacy.media_addon
147	equalizer.media_addon
148	vst_host.media_addon
149] ;
150SYSTEM_ADD_ONS_MEDIA_PLUGINS = [ FFilterByBuildFeatures
151	ffmpeg@ffmpeg raw_decoder
152] ;
153SYSTEM_ADD_ONS_PRINT =
154	Canon\ LIPS3\ Compatible
155	Canon\ LIPS4\ Compatible
156	Gutenprint
157	PCL5\ Compatible
158	PCL6\ Compatible
159	PDF\ Writer
160	PS\ Compatible
161	Preview
162;
163SYSTEM_ADD_ONS_PRINT_TRANSPORT = HP\ JetDirect IPP LPR
164	# Parallel\ Port
165	Print\ To\ File Serial\ Port USB\ Port
166;
167SYSTEM_ADD_ONS_SCREENSAVERS = [ FFilterByBuildFeatures
168	Butterfly DebugNow Flurry@x86
169	GLife@x86 $(HAIKU_INCLUDE_TRADEMARKS)Haiku Icons IFS Leaves
170	Message Spider Gravity@x86
171] ;
172SYSTEM_ADD_ONS_DRIVERS_AUDIO = auich auvia echo3g emuxki hda ice1712 sis7018 ;
173SYSTEM_ADD_ONS_DRIVERS_AUDIO_OLD = ; #cmedia usb_audio ;
174SYSTEM_ADD_ONS_DRIVERS_GRAPHICS = [ FFilterByBuildFeatures
175	x86,x86_64 @{
176		vesa intel_extreme
177	}@ # x86,x86_64
178	x86 @{
179		ati 3dfx intel_810 matrox neomagic nvidia radeon radeon_hd
180		s3 #via vmware
181	}@ # x86
182] ;
183SYSTEM_ADD_ONS_DRIVERS_MIDI = emuxki ice1712 usb_midi ;
184SYSTEM_ADD_ONS_DRIVERS_NET = [ FFilterByBuildFeatures
185	x86,x86_64 @{
186		3com atheros813x ar81xx attansic_l1 attansic_l2 broadcom440x
187		broadcom570x dec21xxx ipro100 ipro1000 jmicron2x0 marvell_yukon nforce
188		pcnet rtl8139 rtl81xx sis19x syskonnect via_rhine vt612x
189	}@ # x86_64
190
191	etherpci pegasus sis900 usb_davicom usb_asix usb_ecm wb840
192
193	# WLAN drivers
194	x86 @{
195		aironetwifi atheroswifi broadcom43xx
196		iprowifi2100 iprowifi2200 iprowifi3945
197		iprowifi4965 marvell88w8363 marvell88w8335
198		ralinkwifi wavelanwifi
199	}@ # x86
200
201	# WWAN drivers
202	#usb_beceemwmx@gpl
203] ;
204SYSTEM_ADD_ONS_DRIVERS_POWER = [ FFilterByBuildFeatures acpi_button@x86 ] ;
205SYSTEM_ADD_ONS_BUS_MANAGERS = [ FFilterByBuildFeatures
206	ata@ata pci ps2@x86,x86_64 isa@x86,x86_64
207	ide@ide scsi config_manager agp_gart@x86,x86_64 usb firewire@x86 acpi@x86
208	virtio random
209] ;
210SYSTEM_ADD_ONS_FILE_SYSTEMS = bfs bindfs btrfs cdda exfat ext2 fat iso9660 nfs
211	nfs4 attribute_overlay write_overlay ntfs packagefs reiserfs@x86 udf
212	googlefs ;
213
214
215# build the haiku system packages and add them
216include [ FDirName $(HAIKU_BUILD_RULES_DIR) HaikuPackages ] ;
217
218AddPackageFilesToHaikuImage system :
219	haiku.hpkg
220	haiku_$(TARGET_PACKAGING_ARCHS[2-]).hpkg
221	;
222AddPackageFilesToHaikuImage system : haiku_loader.hpkg ;
223
224
225AddSymlinkToHaikuImage home Desktop : /boot/home : Home ;
226
227# Mailbox folders and symlink
228AddDirectoryToHaikuImage home mail draft ;
229AddDirectoryToHaikuImage home mail in ;
230AddDirectoryToHaikuImage home mail out ;
231
232# global settings when a package is installed in ~/config
233AddDirectoryToHaikuImage home config settings global ;
234
235
236# scripts and data files
237local userBootScripts = UserBootscript UserSetupEnvironment.sample ;
238SEARCH on $(userBootScripts) = [ FDirName $(HAIKU_TOP) data config boot ] ;
239AddFilesToHaikuImage home config settings boot : $(userBootScripts) ;
240
241# Add boot launch directory
242AddDirectoryToHaikuImage home config settings boot launch ;
243
244# Add mail provider infos.
245AddFilesToHaikuImage home config settings Mail ProviderInfo :
246	$(HAIKU_PROVIDER_INFOS) ;
247
248# Add Tracker New Templates
249AddFilesToHaikuImage home config settings Tracker "Tracker New Templates"
250	:
251	"<tracker-new-templates>C++ header"
252	"<tracker-new-templates>C++ source"
253	"<tracker-new-templates>makefile"
254	"<tracker-new-templates>text file"
255;
256
257local etcDir = [ FDirName $(HAIKU_TOP) data etc ] ;
258local etcFiles = inputrc profile ;
259etcFiles = $(etcFiles:G=etc) ;
260SEARCH on $(etcFiles) = $(etcDir) ;
261etcFiles += <etc>termcap <etc>sysless <etc>sysless.in ;
262AddFilesToHaikuImage common settings etc : $(etcFiles) ;
263
264local profileFiles = [ Glob $(etcDir)/profile.d : *.sh ] ;
265profileFiles = $(profileFiles:G=profile-d) ;
266AddDirectoryToHaikuImage common settings etc profile.d ;
267AddFilesToHaikuImage common settings etc profile.d : $(profileFiles) ;
268
269#local bashCompletionFiles = [ Glob $(etcDir)/bash_completion.d : * ] ;
270#local bashCompletionHelperFiles
271#    = [ Glob $(etcDir)/bash_completion.d/helpers : * ] ;
272#bashCompletionFiles = $(bashCompletionFiles:G=bash-completion) ;
273#bashCompletionHelperFiles = $(bashCompletionHelperFiles:G=bash-completion-hlp) ;
274#AddDirectoryToHaikuImage common etc bash_completion.d ;
275#AddDirectoryToHaikuImage common etc bash_completion.d helpers ;
276#AddFilesToHaikuImage common etc bash_completion.d : $(bashCompletionFiles) ;
277#AddFilesToHaikuImage common etc bash_completion.d helpers
278#    : $(bashCompletionHelperFiles) ;
279
280local driverSettingsFiles = <driver-settings>kernel ;
281SEARCH on $(driverSettingsFiles)
282	= [ FDirName $(HAIKU_TOP) data settings kernel drivers ] ;
283AddFilesToHaikuImage home config settings kernel drivers
284	: $(driverSettingsFiles) ;
285
286local networkSettingsFiles = <network-settings>services ;
287SEARCH on $(networkSettingsFiles)
288	= [ FDirName $(HAIKU_TOP) data settings network ] ;
289AddFilesToHaikuImage common settings network : $(networkSettingsFiles) ;
290
291# fresh install indicator file for the post install scripts
292SEARCH on <post-install>fresh_install
293	= [ FDirName $(HAIKU_TOP) data common settings ] ;
294AddFilesToHaikuImage common settings : <post-install>fresh_install ;
295
296# decorators
297AddDirectoryToHaikuImage home config non-packaged add-ons decorators ;
298#AddFilesToHaikuImage home config add-ons decorators : ;
299
300# create directories that will remain empty
301AddDirectoryToHaikuImage common cache tmp ;
302AddDirectoryToHaikuImage common non-packaged ;
303AddDirectoryToHaikuImage common var empty ;
304AddDirectoryToHaikuImage common var log ;
305AddDirectoryToHaikuImage home Desktop ;
306AddDirectoryToHaikuImage home mail ;
307AddDirectoryToHaikuImage home config packages ;
308AddDirectoryToHaikuImage home config non-packaged bin ;
309AddDirectoryToHaikuImage home config non-packaged lib ;
310AddDirectoryToHaikuImage home config non-packaged add-ons kernel drivers bin ;
311AddDirectoryToHaikuImage home config non-packaged add-ons kernel drivers dev ;
312AddDirectoryToHaikuImage home config non-packaged add-ons input_server devices ;
313AddDirectoryToHaikuImage home config non-packaged add-ons input_server filters ;
314AddDirectoryToHaikuImage home config non-packaged add-ons input_server methods ;
315AddDirectoryToHaikuImage home config non-packaged add-ons media plugins ;
316AddDirectoryToHaikuImage home config non-packaged add-ons Tracker ;
317AddDirectoryToHaikuImage home config non-packaged add-ons Print ;
318AddDirectoryToHaikuImage home config non-packaged add-ons Screen\ Savers ;
319AddDirectoryToHaikuImage home config non-packaged add-ons Translators ;
320
321# printers
322AddDirectoryToHaikuImage home config settings printers Preview
323	: home-config-settings-printers-preview.rdef ;
324AddDirectoryToHaikuImage home config settings printers "Save as PDF"
325	: home-config-settings-printers-save-as-pdf.rdef ;
326
327# dvb channel settings
328CopyDirectoryToHaikuImage home config settings Media
329	: [ FDirName $(HAIKU_TOP) data settings media dvb ]
330	: dvb : -x Jamfile ;
331
332# repository config files
333local repository ;
334for repository in $(HAIKU_REPOSITORIES) {
335	AddFilesToHaikuImage common settings package-repositories
336		: [ on $(repository) return $(HAIKU_REPOSITORY_CONFIG_FILE) ]
337		: $(repository:G=) ;
338}
339
340
341include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImageCommon ] ;
342