1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
|
#@TYPE: Distribution
#@NAME: SlugOS
#@DESCRIPTION: SlugOS Linux Distribution for the NSLU2
# WARNING: this file should not be used directly, use one of
# the supported slugos-derived distributions instead.
#===============================================================================#
#===============================================================================#
#===============================================================================#
# NOTE NOTE NOTE
#
# This *forces* the preferred kernel version; making it unable to be overridden
# in the local.conf file. This is a Very Bad Thing. This is temporary, and
# is intended to facilitate some SlugOS-specific testing without disturbing
# other distros that use the ixp4xx machine type (which is currently where the
# preferred kernel version is set).
#
# This *must* be removed after initial testing is completed. MJW 08-Dec-2008
#
PREFERRED_VERSION_linux-ixp4xx = "2.6.27.8+svnr${SRCREV}"
#
#===============================================================================#
#===============================================================================#
#===============================================================================#
#===============================================================================#
#===============================================================================#
#===============================================================================#
# NOTE NOTE NOTE
#
# Override the sane-srcrev file with regard to the opkg versions - this should
# be removed as soon as opkg starts to work correctly again as newer opkg
# versions fix a number of bugs and add some desireable features.
#
SRCREV_pn-opkg = "160"
SRCREV_pn-opkg-native = "160"
SRCREV_pn-opkg-sdk = "160"
#
#===============================================================================#
#===============================================================================#
#===============================================================================#
#----------------------------------------------------------------------------------
# STANDARD SLUGOS DEFINITIONS
#----------------------------------------------------------------------------------
# The following must be set in the top level distro file:
#
#DISTRO_NAME
#DISTRO_TYPE
#ARM_INSTRUCTION_SET "arm" or "thumb"
#TARGET_OS "linux" or "linux-uclibc"
# The following may be overridden to make sub-versions
SLUGOS_VERSION = "5.2"
DISTRO_REVISION ?= ""
DISTRO_VERSION ?= "${SLUGOS_VERSION}${DISTRO_REVISION}-${DISTRO_TYPE}"
# For release (only):
# DISTRO_FEED ?= "${SLUGOS_VERSION}-${DISTRO_TYPE}"
DISTRO_FEED ?= "unstable"
# We want images supporting the following features (for task-base)
DISTRO_FEATURES = "nfs smbfs wifi ppp alsa bluetooth ext2 vfat irda pcmcia usbgadget usbhost pci"
IMAGE_BASENAME = "${@['slugos${SITEINFO_ENDIANESS}', 'ucslugc'][bb.data.getVar('TARGET_OS', d, 1) == 'linux-uclibc']}"
# The following need not be set, the defaults should be adequate
#USE_NLS = "no" or "yes"
USE_NLS ?= "no"
# To make errors easier to identify:
DISTRO_NAME ?= "INVALID-${SITEINFO_ENDIANESS}-${ARM_INSTRUCTION_SET}-${TARGET_OS}"
DISTRO_TYPE ?= "INVALID"
# The following must not be changed.
TARGET_FPU = "soft"
# glib-2.0 builds require USE_NLS to be overridden
USE_NLS_glib-2.0 = "yes"
USE_NLS_glib-2.0-native = "yes"
USE_NLS_gcc-cross = "no"
INHERIT += "package_ipk debian testlab packaged-staging"
# FULL_OPTIMIZATION
# Optimization settings. Os works fine and is significantly better than O2.
FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os"
# We need to keep OABI compat for things like madwifi-ng.
ARM_KEEP_OABI = "1"
# We may wish to experiment with this as a further performance improvement, but
# small steps at a time are the best strategy.
#TARGET_LINK_HASH_STYLE = "-Wl,--hash-style=gnu"
CXXFLAGS += "-fvisibility-inlines-hidden"
# There is a problem of sorts with Perl. This needs a better home eventually,
# but for now put it in this file.
FULL_OPTIMIZATION_pn-perl = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O1"
BUILD_OPTIMIZATION_pn-perl = "-O1"
#----------------------------------------------------------------------------------
# FEEDS
# The FEED_URIS lines define where on the internet SlugOS looks for packages
# when downloading new packages or updating existing packages. Additional feeds
# (such as a local feed) can be defined in local.conf
#----------------------------------------------------------------------------------
#
FEED_URIS_append += "cross##http://ipkg.nslu2-linux.org/feeds/${IMAGE_BASENAME}/cross/${DISTRO_FEED}"
FEED_URIS_append += "native##http://ipkg.nslu2-linux.org/feeds/${IMAGE_BASENAME}/native/${DISTRO_FEED}"
#----------------------------------------------------------------------------------
# FIRMWARE CONFIGURATION
#----------------------------------------------------------------------------------
# IMAGE BUILD OPTIONS
# -------------------
# CMDLINE* macros define the kernel command line. CMDLINE_DEBUG is provided
# to enable/disable debugging in the distro. Here noirqdebug is used to
# remove the messages about unhandled interrupts - people debugging interrupt
# issues in the kernel need to cancel this (set CMDLINE_DEBUG empty in local.conf)
CMDLINE_ROOT = "root=/dev/mtdblock4 rootfstype=jffs2 rw init=/linuxrc"
CMDLINE_DEBUG = "noirqdebug"
# EXTRA PACKAGES
# --------------
# SlugOS builds an image with no extra packages - to add packages to the
# firmware include this file in a new 'distro' configuration file) and set
# the definition below to include the requirements.
# NOTE: as built this system will *not* be able to boot off anything other than
# the flash file system ('turnup' will not work). You need to add the filesystem
# modules for your chosen root file system (and any others which will be used).
# See openslug.conf for a more full-featured system!
#
# Everything in this list gets added to the flash image, along with any RDEPENDS
# it has itself!
DISTRO_EXTRA_DEPENDS ?= ""
DISTRO_EXTRA_RDEPENDS ?= ""
DISTRO_EXTRA_RRECOMMENDS ?= ""
#----------------------------------------------------------------------------------
# PACKAGE VERSION CONTROL
#----------------------------------------------------------------------------------
# Define how to bootstrap the system - we need cross compilers. It is also
# necessary to define which gets generated first, glibc or the kernel, and
# this is done by selecting the provider of libc (in this case it needs the
# kernel, so there has to be a non-libc gcc to build the kernel!)
# Virtuals:
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = "gcc-cross-initial"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-intermediate = "gcc-cross-intermediate"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "gcc-cross"
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "gcc-cross"
#Set preferred provider for the C library that is used to build the crosscompiler (NPTL voodoo)
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "glibc"
PREFERRED_PROVIDER_virtual/arm-linux-libc-for-gcc = "glibc"
PREFERRED_PROVIDER_virtual/armeb-linux-libc-for-gcc = "glibc"
PREFERRED_PROVIDER_virtual/arm-linux-gnueabi-libc-for-gcc = "glibc"
PREFERRED_PROVIDER_virtual/armeb-linux-gnueabi-libc-for-gcc = "glibc"
# Set the preferred provider for a few toolchain-related items, otherwise
# these may be selected from the external-toolchain instead.
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "binutils-cross"
PREFERRED_PROVIDER_virtual/arm-linux-binutils = "binutils-cross"
PREFERRED_PROVIDER_virtual/armeb-linux-binutils = "binutils-cross"
PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers"
# compiler/binary/library versions
PREFERRED_VERSION_binutils ?= "2.18.50.0.7"
PREFERRED_VERSION_binutils-cross ?= "2.18.50.0.7"
PREFERRED_VERSION_binutils-cross-sdk ?= "2.18.50.0.7"
PREFERRED_VERSION_gcc ?= "4.2.4"
PREFERRED_VERSION_gcc-cross ?= "4.2.4"
PREFERRED_VERSION_gcc-cross-sdk ?= "4.2.4"
PREFERRED_VERSION_gcc-cross-initial ?= "4.2.4"
PREFERRED_VERSION_gcc-cross-intermediate ?= "4.2.4"
PREFERRED_VERSION_glibc ?= "2.6.1"
PREFERRED_VERSION_glibc-initial ?= "2.6.1"
# Select the smallest provider of x11 libraries
PREFERRED_PROVIDER_virtual/libx11 ?= "diet-x11"
SRCDATE_diet-x11 ?= "20060106"
# Ensure consistency across all SlugOS builds for the provider of a
# relational database - use the latest version of the SleepyCat
# Berkeley database
PREFERRED_PROVIDER_virtual/db = "db"
PREFERRED_PROVIDER_virtual/db-native = "db-native"
SRCDATE_ipkg-utils ?= "20060106"
SRCDATE_ipkg-utils-native ?= "20060106"
SRCDATE_ipkg-link ?= "20060106"
SRCDATE_irssi ?= "20050930"
CVS_TARBALL_STASH = "http://sources.nslu2-linux.org/sources/"
INHERIT += "nslu2-mirrors"
PREFERRED_VERSION_nslu2-linksys-firmware ?= "2.3r63"
PREFERRED_VERSION_ipkg ?= "0.99.163"
PREFERRED_VERSION_ipkg-native ?= "0.99.163"
#FIXME: HACK: REMOVE THIS
IGNORE_STRIP_ERRORS = ""
PREFERRED_VERSION_linux-libc-headers ?= "2.6.23"
# New pango and older glib-2.0 versions don't mix,
# so specify exactly what we would like to build.
#PREFERRED_VERSION_pango ?= "1.20.5"
#PREFERRED_VERSION_glib-2.0 ?= "2.16.1"
#PREFERRED_VERSION_cairo ?= "1.4.8"
PREFERRED_VERSION_udev ?= "118"
# Stick with an older gettext and e2fsprogs stuff
# and gnutls... (our autotools is too old at the moment)
#PREFERRED_VERSION_gnutls ?= "1.6.3"
#PREFERRED_VERSION_gettext ?= "0.14.1"
#PREFERRED_VERSION_gettext-native ?= "0.14.1"
#PREFERRED_VERSION_e2fsprogs-libs ?= "1.39"
#PREFERRED_VERSION_e2fsprogs ?= "1.38"
#PREFERRED_VERSION_e2fsprogs-native ?= "1.38"
# we don't ship gtk-directfb by default
PREFERRED_PROVIDER_gtk+ ?= "gtk+"
PREFERRED_PROVIDER_gdk-pixbuf-loader-ani ?= "gtk+"
PREFERRED_PROVIDER_gdk-pixbuf-loader-bmpg ?= "gtk+"
PREFERRED_PROVIDER_gdk-pixbuf-loader-gif ?= "gtk+"
PREFERRED_PROVIDER_gdk-pixbuf-loader-ico ?= "gtk+"
PREFERRED_PROVIDER_gdk-pixbuf-loader-jpeg ?= "gtk+"
PREFERRED_PROVIDER_gdk-pixbuf-loader-pcx ?= "gtk+"
PREFERRED_PROVIDER_gdk-pixbuf-loader-png ?= "gtk+"
PREFERRED_PROVIDER_gdk-pixbuf-loader-pnm ?= "gtk+"
PREFERRED_PROVIDER_gdk-pixbuf-loader-ras ?= "gtk+"
PREFERRED_PROVIDER_gdk-pixbuf-loader-tga ?= "gtk+"
PREFERRED_PROVIDER_gdk-pixbuf-loader-wbmp ?= "gtk+"
PREFERRED_PROVIDER_gdk-pixbuf-loader-xbm ?= "gtk+"
PREFERRED_PROVIDER_gdk-pixbuf-loader-xpm ?= "gtk+"
PREFERRED_PROVIDER_avahi ?= "avahi"
PREFERRED_PROVIDER_gconf ?= "gconf"
# These shouldn't be here either -- these versions should
# be pulled from a separate include file. But they can
# go here for now.
PREFERRED_VERSION_automake-native ?= "1.10"
PREFERRED_VERSION_busybox ?= "1.13.2"
PREFERRED_VERSION_dbus ?= "1.2.1"
PREFERRED_VERSION_glib-2.0 ?= "2.18.3"
PREFERRED_VERSION_glib-2.0-native ?= "2.18.0"
PREFERRED_VERSION_libtool ?= "1.5.10"
PREFERRED_VERSION_libtool-native ?= "1.5.10"
PREFERRED_VERSION_libtool-cross ?= "1.5.10"
PREFERRED_VERSION_libtool-sdk ?= "1.5.10"
PREFERRED_VERSION_m4 ?= "1.4.8"
PREFERRED_VERSION_m4-native ?= "1.4.8"
PREFERRED_VERSION_pkgconfig ?= "0.23"
PREFERRED_VERSION_pkgconfig-native ?= "0.23"
# Hack alert - selecting this version of libusb effectively selects
# the use of libusb1 and libusb-compat in the case that something
# still depends on libusb. This is required because otherwise
# libusb will overwrite libusb-compat in staging.
PREFERRED_VERSION_libusb ?= "0.0.0"
# mtd-utils 1.2.0+git cannot be fetched, so SlugOS will stick
# with 1.1.0 for now:
PREFERRED_VERSION_mtd-utils ?= "1.1.0"
require conf/distro/include/sane-srcdates.inc
require conf/distro/include/sane-srcrevs.inc
|