xref: /haiku/build/jam/images/HaikuImage (revision 225b6382637a7346d5378ee45a6581b4e2616055)
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 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 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 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	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
119	}@ # x86,x86_64
120	x86 @{
121		3dfx.accelerant ati.accelerant matrox.accelerant neomagic.accelerant
122		nvidia.accelerant intel_810.accelerant intel_extreme.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
177	}@ # x86,x86_64
178	x86 @{
179		ati 3dfx intel_810 intel_extreme 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 usb firewire@x86 acpi@x86
208	virtio
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 : haiku.hpkg ;
219AddPackageFilesToHaikuImage system : haiku_loader.hpkg ;
220
221
222AddSymlinkToHaikuImage home Desktop : /boot/home : Home ;
223
224# Mailbox folders and symlink
225AddDirectoryToHaikuImage home mail draft ;
226AddDirectoryToHaikuImage home mail in ;
227AddDirectoryToHaikuImage home mail out ;
228
229# global settings when a package is installed in ~/config
230AddDirectoryToHaikuImage home config settings global ;
231
232
233# scripts and data files
234local userBootScripts = UserBootscript UserSetupEnvironment.sample ;
235SEARCH on $(userBootScripts) = [ FDirName $(HAIKU_TOP) data config boot ] ;
236AddFilesToHaikuImage home config settings boot : $(userBootScripts) ;
237
238# Add boot launch directory
239AddDirectoryToHaikuImage home config settings boot launch ;
240
241# Add mail provider infos.
242AddFilesToHaikuImage home config settings Mail ProviderInfo :
243	$(HAIKU_PROVIDER_INFOS) ;
244
245# Add Tracker New Templates
246AddFilesToHaikuImage home config settings Tracker "Tracker New Templates"
247	:
248	"<tracker-new-templates>C++ header"
249	"<tracker-new-templates>C++ source"
250	"<tracker-new-templates>makefile"
251	"<tracker-new-templates>text file"
252;
253
254local etcDir = [ FDirName $(HAIKU_TOP) data etc ] ;
255local etcFiles = inputrc profile ;
256etcFiles = $(etcFiles:G=etc) ;
257SEARCH on $(etcFiles) = $(etcDir) ;
258etcFiles += <etc>termcap <etc>sysless <etc>sysless.in ;
259AddFilesToHaikuImage common settings etc : $(etcFiles) ;
260
261local profileFiles = [ Glob $(etcDir)/profile.d : *.sh ] ;
262profileFiles = $(profileFiles:G=profile-d) ;
263AddDirectoryToHaikuImage common settings etc profile.d ;
264AddFilesToHaikuImage common settings etc profile.d : $(profileFiles) ;
265
266#local bashCompletionFiles = [ Glob $(etcDir)/bash_completion.d : * ] ;
267#local bashCompletionHelperFiles
268#    = [ Glob $(etcDir)/bash_completion.d/helpers : * ] ;
269#bashCompletionFiles = $(bashCompletionFiles:G=bash-completion) ;
270#bashCompletionHelperFiles = $(bashCompletionHelperFiles:G=bash-completion-hlp) ;
271#AddDirectoryToHaikuImage common etc bash_completion.d ;
272#AddDirectoryToHaikuImage common etc bash_completion.d helpers ;
273#AddFilesToHaikuImage common etc bash_completion.d : $(bashCompletionFiles) ;
274#AddFilesToHaikuImage common etc bash_completion.d helpers
275#    : $(bashCompletionHelperFiles) ;
276
277local driverSettingsFiles = <driver-settings>kernel ;
278SEARCH on $(driverSettingsFiles)
279	= [ FDirName $(HAIKU_TOP) data settings kernel drivers ] ;
280AddFilesToHaikuImage home config settings kernel drivers
281	: $(driverSettingsFiles) ;
282
283local networkSettingsFiles = <network-settings>services ;
284SEARCH on $(networkSettingsFiles)
285	= [ FDirName $(HAIKU_TOP) data settings network ] ;
286AddFilesToHaikuImage common settings network : $(networkSettingsFiles) ;
287
288# fresh install indicator file for the post install scripts
289SEARCH on <post-install>fresh_install
290	= [ FDirName $(HAIKU_TOP) data common settings ] ;
291AddFilesToHaikuImage common settings : <post-install>fresh_install ;
292
293# decorators
294AddDirectoryToHaikuImage home config non-packaged add-ons decorators ;
295#AddFilesToHaikuImage home config add-ons decorators : ;
296
297# create directories that will remain empty
298AddDirectoryToHaikuImage common cache tmp ;
299AddDirectoryToHaikuImage common non-packaged ;
300AddDirectoryToHaikuImage common var empty ;
301AddDirectoryToHaikuImage common var log ;
302AddDirectoryToHaikuImage home Desktop ;
303AddDirectoryToHaikuImage home mail ;
304
305AddDirectoryToHaikuImage home config non-packaged bin ;
306AddDirectoryToHaikuImage home config non-packaged lib ;
307AddDirectoryToHaikuImage home config non-packaged add-ons kernel drivers bin ;
308AddDirectoryToHaikuImage home config non-packaged add-ons kernel drivers dev ;
309AddDirectoryToHaikuImage home config non-packaged add-ons input_server devices ;
310AddDirectoryToHaikuImage home config non-packaged add-ons input_server filters ;
311AddDirectoryToHaikuImage home config non-packaged add-ons input_server methods ;
312AddDirectoryToHaikuImage home config non-packaged add-ons media plugins ;
313AddDirectoryToHaikuImage home config non-packaged add-ons Tracker ;
314AddDirectoryToHaikuImage home config non-packaged add-ons Print ;
315AddDirectoryToHaikuImage home config non-packaged add-ons Screen\ Savers ;
316AddDirectoryToHaikuImage home config non-packaged add-ons Translators ;
317
318# printers
319AddDirectoryToHaikuImage home config settings printers Preview
320	: home-config-settings-printers-preview.rdef ;
321AddDirectoryToHaikuImage home config settings printers "Save as PDF"
322	: home-config-settings-printers-save-as-pdf.rdef ;
323
324# dvb channel settings
325CopyDirectoryToHaikuImage home config settings Media
326	: [ FDirName $(HAIKU_TOP) data settings media dvb ]
327	: dvb : -x Jamfile ;
328
329# repository config files
330local repository ;
331for repository in $(HAIKU_REPOSITORIES) {
332	AddFilesToHaikuImage common settings package-repositories
333		: [ on $(repository) return $(HAIKU_REPOSITORY_CONFIG_FILE) ]
334		: $(repository:G=) ;
335}
336
337
338include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImageCommon ] ;
339