HaikuImage revision b41ab65b
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 findpaths FirstBootPrompt fmt
16	fold fortune frcode fstrim ftp ftpd funzip fwcontrol@x86
17	gawk gdb@x86 getarch 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 setarch setdecor setmime
35	settype setversion setvolume seq sha1sum sha256sum shar shred shuf shutdown
36	sleep 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,x86_64 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,x86_64 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 SerialConnect ShowImage
53	SoundRecorder StyledEdit Terminal TextSearch TV WebWatch Workspaces
54] ;
55SYSTEM_PREFERENCES = [ FFilterByBuildFeatures
56	Appearance Backgrounds 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 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		intel_810.accelerant intel_extreme.accelerant matrox.accelerant
119		nvidia.accelerant radeon.accelerant
120		radeon_hd.accelerant vesa.accelerant
121		#via.accelerant vmware.accelerant
122	}@ # x86,x86_64
123	x86 @{
124		3dfx.accelerant ati.accelerant neomagic.accelerant s3.accelerant
125	}@ # x86
126] ;
127SYSTEM_ADD_ONS_TRANSLATORS = BMPTranslator EXRTranslator GIFTranslator
128	HVIFTranslator ICOTranslator ICNSTranslator JPEGTranslator
129	JPEG2000Translator PCXTranslator PNGTranslator PPMTranslator PSDTranslator
130	RAWTranslator RTFTranslator SGITranslator STXTTranslator TGATranslator
131	TIFFTranslator WebPTranslator WonderBrushTranslator
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		intel_810 intel_extreme matrox nvidia radeon radeon_hd vesa
177		#via vmware
178	}@ # x86,x86_64
179	x86 @{
180		3dfx ati neomagic s3
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,x86_64
190
191	etherpci pegasus sis900 usb_davicom usb_asix usb_ecm wb840
192
193	# WLAN drivers
194	x86,x86_64 @{
195		aironetwifi atheroswifi broadcom43xx
196		iprowifi2100 iprowifi2200 iprowifi3945
197		iprowifi4965 marvell88w8363 marvell88w8335
198		ralinkwifi wavelanwifi
199	}@ # x86,x86_64
200
201	# WWAN drivers
202	#usb_beceemwmx@gpl
203] ;
204SYSTEM_ADD_ONS_DRIVERS_POWER = [ FFilterByBuildFeatures
205	acpi_battery@x86,x86_64 acpi_button@x86,x86_64
206] ;
207SYSTEM_ADD_ONS_BUS_MANAGERS = [ FFilterByBuildFeatures
208	ata@ata pci ps2@x86,x86_64 isa@x86,x86_64
209	ide@ide scsi config_manager agp_gart@x86,x86_64 usb firewire@x86
210	acpi@x86,x86_64	virtio random
211] ;
212SYSTEM_ADD_ONS_FILE_SYSTEMS = bfs bindfs btrfs cdda exfat ext2 fat iso9660 nfs
213	nfs4 attribute_overlay write_overlay ntfs packagefs reiserfs@x86 udf
214	googlefs ;
215
216
217# build the haiku system packages and add them
218include [ FDirName $(HAIKU_BUILD_RULES_DIR) HaikuPackages ] ;
219
220AddPackageFilesToHaikuImage system :
221	haiku_loader.hpkg
222	haiku.hpkg
223	haiku_$(TARGET_PACKAGING_ARCHS[2-]).hpkg
224	:
225	nameFromMetaInfo
226	;
227
228
229AddSymlinkToHaikuImage home Desktop : /boot/home : Home ;
230
231# Mailbox folders and symlink
232AddDirectoryToHaikuImage home mail draft ;
233AddDirectoryToHaikuImage home mail in ;
234AddDirectoryToHaikuImage home mail out ;
235
236# global settings when a package is installed in ~/config
237AddDirectoryToHaikuImage home config settings global ;
238
239
240# scripts and data files
241local userBootScripts = UserBootscript UserSetupEnvironment.sample ;
242SEARCH on $(userBootScripts) = [ FDirName $(HAIKU_TOP) data config boot ] ;
243AddFilesToHaikuImage home config settings boot : $(userBootScripts) ;
244
245# Add boot launch directory
246AddDirectoryToHaikuImage home config settings boot launch ;
247
248# Add mail provider infos.
249AddFilesToHaikuImage home config settings Mail ProviderInfo :
250	$(HAIKU_PROVIDER_INFOS) ;
251
252# Add Tracker New Templates
253AddFilesToHaikuImage home config settings Tracker "Tracker New Templates"
254	:
255	"<tracker-new-templates>C++ header"
256	"<tracker-new-templates>C++ source"
257	"<tracker-new-templates>makefile"
258	"<tracker-new-templates>text file"
259;
260
261local etcDir = [ FDirName $(HAIKU_TOP) data etc ] ;
262local etcFiles = inputrc profile ;
263etcFiles = $(etcFiles:G=etc) ;
264SEARCH on $(etcFiles) = $(etcDir) ;
265etcFiles += <etc>termcap <etc>sysless <etc>sysless.in ;
266AddFilesToHaikuImage system settings etc : $(etcFiles) ;
267
268local profileFiles = [ Glob $(etcDir)/profile.d : *.sh ] ;
269profileFiles = $(profileFiles:G=profile-d) ;
270AddDirectoryToHaikuImage system settings etc profile.d ;
271AddFilesToHaikuImage system settings etc profile.d : $(profileFiles) ;
272
273#local bashCompletionFiles = [ Glob $(etcDir)/bash_completion.d : * ] ;
274#local bashCompletionHelperFiles
275#    = [ Glob $(etcDir)/bash_completion.d/helpers : * ] ;
276#bashCompletionFiles = $(bashCompletionFiles:G=bash-completion) ;
277#bashCompletionHelperFiles = $(bashCompletionHelperFiles:G=bash-completion-hlp) ;
278#AddDirectoryToHaikuImage system etc bash_completion.d ;
279#AddDirectoryToHaikuImage system etc bash_completion.d helpers ;
280#AddFilesToHaikuImage system etc bash_completion.d : $(bashCompletionFiles) ;
281#AddFilesToHaikuImage system etc bash_completion.d helpers
282#    : $(bashCompletionHelperFiles) ;
283
284local driverSettingsFiles = <driver-settings>kernel ;
285SEARCH on $(driverSettingsFiles)
286	= [ FDirName $(HAIKU_TOP) data settings kernel drivers ] ;
287AddFilesToHaikuImage home config settings kernel drivers
288	: $(driverSettingsFiles) ;
289
290local networkSettingsFiles = <network-settings>services ;
291SEARCH on $(networkSettingsFiles)
292	= [ FDirName $(HAIKU_TOP) data settings network ] ;
293AddFilesToHaikuImage system settings network : $(networkSettingsFiles) ;
294
295# fresh install indicator file for the post install scripts
296SEARCH on <post-install>fresh_install
297	= [ FDirName $(HAIKU_TOP) data system settings ] ;
298AddFilesToHaikuImage system settings : <post-install>fresh_install ;
299
300# decorators
301AddDirectoryToHaikuImage home config non-packaged add-ons decorators ;
302#AddFilesToHaikuImage home config add-ons decorators : ;
303
304# printers
305AddDirectoryToHaikuImage home config settings printers Preview
306	: home-config-settings-printers-preview.rdef ;
307AddDirectoryToHaikuImage home config settings printers "Save as PDF"
308	: home-config-settings-printers-save-as-pdf.rdef ;
309
310# dvb channel settings
311CopyDirectoryToHaikuImage home config settings Media
312	: [ FDirName $(HAIKU_TOP) data settings media dvb ]
313	: dvb : -x Jamfile ;
314
315# repository config and cache files
316local repositories = $(HAIKU_REPOSITORIES) ;
317if $(HAIKU_ADD_HAIKU_REPOSITORY_CONFIG) {
318	repositories += <repository>haiku ;
319}
320local repository ;
321for repository in $(repositories) {
322	local config = [ on $(repository) return $(HAIKU_REPOSITORY_CONFIG_FILE) ] ;
323	local cache = [ on $(repository) return $(HAIKU_REPOSITORY_CACHE_FILE) ] ;
324	if $(HAIKU_UPDATE_ALL_PACKAGES) {
325		HAIKU_INCLUDE_IN_IMAGE on $(config) $(cache) = 1 ;
326	}
327	AddFilesToHaikuImage system settings package-repositories
328		: $(config) : $(repository:G=) ;
329	AddFilesToHaikuImage system cache package-repositories
330		: $(cache) : $(repository:G=) ;
331}
332
333
334include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImageCommon ] ;
335