summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/cache_extra.py3
-rw-r--r--bitbake/lib/bb/cooker.py2
-rw-r--r--bitbake/lib/bb/tests/fetch.py14
-rw-r--r--bitbake/lib/bb/ui/crumbs/hig/propertydialog.py94
-rw-r--r--bitbake/lib/bb/ui/crumbs/hoblistmodel.py8
-rw-r--r--bitbake/lib/bb/ui/crumbs/hobwidget.py14
-rwxr-xr-xbitbake/lib/bb/ui/crumbs/packageselectionpage.py17
-rwxr-xr-xbitbake/lib/bb/ui/crumbs/recipeselectionpage.py14
-rw-r--r--meta-yocto-bsp/conf/machine/atom-pc.conf2
-rw-r--r--meta-yocto-bsp/conf/machine/routerstationpro.conf4
-rw-r--r--meta-yocto/conf/conf-notes.txt9
-rw-r--r--meta-yocto/conf/distro/include/package_regex.inc1
-rw-r--r--meta-yocto/conf/distro/poky.conf5
-rw-r--r--meta-yocto/conf/local.conf.sample.extended4
-rw-r--r--meta/classes/archive-configured-source.bbclass25
-rw-r--r--meta/classes/archive-original-source.bbclass25
-rw-r--r--meta/classes/archive-patched-source.bbclass25
-rw-r--r--meta/classes/archiver.bbclass4
-rw-r--r--meta/classes/base.bbclass26
-rw-r--r--meta/classes/buildhistory.bbclass63
-rw-r--r--meta/classes/gtk-icon-cache.bbclass2
-rw-r--r--meta/classes/image_types.bbclass6
-rw-r--r--meta/classes/kernel-yocto.bbclass11
-rw-r--r--meta/classes/package_deb.bbclass8
-rw-r--r--meta/classes/packageinfo.bbclass21
-rw-r--r--meta/classes/rootfs_rpm.bbclass4
-rw-r--r--meta/classes/sstate.bbclass9
-rw-r--r--meta/classes/systemd.bbclass38
-rw-r--r--meta/classes/update-rc.d.bbclass22
-rw-r--r--meta/conf/bitbake.conf2
-rw-r--r--meta/conf/conf-notes.txt9
-rw-r--r--meta/conf/distro/include/default-distrovars.inc3
-rw-r--r--meta/conf/distro/include/default-providers.inc3
-rw-r--r--meta/conf/distro/include/default-versions.inc3
-rw-r--r--meta/conf/distro/include/seperatebuilddir.inc1
-rw-r--r--meta/conf/machine/qemux86-64.conf2
-rw-r--r--meta/conf/machine/qemux86.conf2
-rw-r--r--meta/lib/oe/lsb.py6
-rw-r--r--meta/recipes-bsp/pcmciautils/pcmciautils.inc2
-rw-r--r--meta/recipes-connectivity/connman/connman.inc7
-rw-r--r--meta/recipes-connectivity/openssh/openssh_6.1p1.bb3
-rw-r--r--meta/recipes-core/base-files/base-files/fstab.systemd9
-rw-r--r--meta/recipes-core/base-files/base-files_3.0.14.bb7
-rw-r--r--meta/recipes-core/busybox/busybox-1.20.2/strict-atime.patch49
-rw-r--r--meta/recipes-core/busybox/busybox.inc22
-rw-r--r--meta/recipes-core/busybox/busybox_1.20.2.bb5
-rw-r--r--meta/recipes-core/busybox/files/busybox-klogd.service.in8
-rw-r--r--meta/recipes-core/busybox/files/busybox-syslog.service.in13
-rw-r--r--meta/recipes-core/coreutils/coreutils-8.14/remove-gets.patch23
-rw-r--r--meta/recipes-core/coreutils/coreutils-8.21/coreutils-build-with-acl.patch (renamed from meta/recipes-core/coreutils/coreutils-8.14/coreutils-build-with-acl.patch)0
-rw-r--r--meta/recipes-core/coreutils/coreutils-8.21/dummy_help2man.patch22
-rw-r--r--meta/recipes-core/coreutils/coreutils-8.21/remove-usr-local-lib-from-m4.patch (renamed from meta/recipes-core/coreutils/coreutils-8.14/remove-usr-local-lib-from-m4.patch)0
-rw-r--r--meta/recipes-core/coreutils/coreutils_8.21.bb (renamed from meta/recipes-core/coreutils/coreutils_8.14.bb)16
-rw-r--r--meta/recipes-core/dbus/dbus.inc6
-rw-r--r--meta/recipes-core/glib-networking/glib-networking_2.28.7.bb2
-rw-r--r--meta/recipes-core/images/core-image-minimal-initramfs.bb2
-rw-r--r--meta/recipes-core/initrdscripts/files/init-install.sh1
-rw-r--r--meta/recipes-core/initscripts/initscripts-1.0/volatiles1
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-boot.bb5
-rw-r--r--meta/recipes-core/psplash/psplash_git.bb3
-rw-r--r--meta/recipes-core/systemd/systemd-compat-units.bb1
-rw-r--r--meta/recipes-core/systemd/systemd/0001-systemd-analyze-rewrite-in-C.patch1087
-rw-r--r--meta/recipes-core/systemd/systemd/0002-readahead-chunk-on-spinning-media.patch142
-rw-r--r--meta/recipes-core/systemd/systemd/0003-readahead-cleanups.patch86
-rw-r--r--meta/recipes-core/systemd/systemd/0013-systemd-sysctl-Handle-missing-etc-sysctl.conf-proper.patch33
-rw-r--r--meta/recipes-core/systemd/systemd/init101
-rw-r--r--meta/recipes-core/systemd/systemd/systemd-pam-fix-msformat.patch140
-rw-r--r--meta/recipes-core/systemd/systemd/udev-linkage.patch62
-rw-r--r--meta/recipes-core/systemd/systemd_199.bb (renamed from meta/recipes-core/systemd/systemd_197.bb)72
-rwxr-xr-xmeta/recipes-core/sysvinit/sysvinit/rc2
-rw-r--r--meta/recipes-core/uclibc/uclibc-git.inc5
-rw-r--r--meta/recipes-core/uclibc/uclibc-git/0001-i386-sysdep.h-Remove-STABS_-macros.patch71
-rw-r--r--meta/recipes-core/uclibc/uclibc-git/0001-nptl-arm-Move-aeabi_read_tp-to-uclibc_nonshared.a.patch8
-rw-r--r--meta/recipes-core/uclibc/uclibc-git/posix_fallocate.patch408
-rw-r--r--meta/recipes-core/uclibc/uclibc-git/uclibc-execvpe.patch163
-rw-r--r--meta/recipes-core/udev/udev.inc6
-rw-r--r--meta/recipes-core/udev/udev/volatiles1
-rw-r--r--meta/recipes-core/util-linux/util-linux.inc17
-rw-r--r--meta/recipes-core/util-linux/util-linux_2.22.2.bb2
-rw-r--r--meta/recipes-devtools/dosfstools/dosfstools_2.11.bb7
-rw-r--r--meta/recipes-devtools/elfutils/elfutils_0.148.bb2
-rw-r--r--meta/recipes-devtools/qemu/qemu.inc2
-rw-r--r--meta/recipes-devtools/remake/remake_git.bb6
-rw-r--r--meta/recipes-devtools/rpm/rpm_5.4.9.bb10
-rw-r--r--meta/recipes-devtools/tcf-agent/tcf-agent_git.bb7
-rw-r--r--meta/recipes-extended/lsb/lsb_4.1.bb5
-rw-r--r--meta/recipes-gnome/gtk+/gtk+.inc8
-rw-r--r--meta/recipes-gnome/gtk+/gtk+_2.24.15.bb10
-rw-r--r--meta/recipes-gnome/gtk+/gtk-update-icon-cache-native_3.4.4.bb2
-rw-r--r--meta/recipes-gnome/packagegroups/packagegroup-toolset-native.bb2
-rw-r--r--meta/recipes-graphics/builder/files/builder_hob_start.sh2
-rw-r--r--meta/recipes-graphics/wayland/wayland_1.0.6.bb (renamed from meta/recipes-graphics/wayland/wayland_1.0.3.bb)4
-rw-r--r--meta/recipes-graphics/wayland/weston_1.0.6.bb (renamed from meta/recipes-graphics/wayland/weston_1.0.3.bb)4
-rwxr-xr-xmeta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm2
-rw-r--r--meta/recipes-kernel/linux-firmware/linux-firmware_git.bb65
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-rt_3.8.bb4
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_3.8.bb12
-rw-r--r--meta/recipes-lsb4/libpng/libpng_1.2.50.bb21
-rw-r--r--meta/recipes-multimedia/alsa/alsa-tools/makefile_no_gtk.patch21
-rw-r--r--meta/recipes-multimedia/alsa/alsa-tools_1.0.26.1.bb8
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-plugins-bad_0.10.23.bb7
-rw-r--r--meta/recipes-qt/qt4/qt-mobility_1.2.0.inc6
-rw-r--r--meta/recipes-support/boost/bjam-native_1.53.0.bb15
-rw-r--r--meta/recipes-support/boost/boost-1.53.0.inc19
-rw-r--r--meta/recipes-support/boost/boost.inc49
-rw-r--r--meta/recipes-support/boost/boost_1.53.0.bb6
-rw-r--r--meta/recipes-support/nspr/files/nspr.pc.in2
-rwxr-xr-xscripts/buildhistory-collect-srcrevs104
-rwxr-xr-xscripts/contrib/build-perf-test.sh348
-rwxr-xr-xscripts/oe-setup-builddir16
-rwxr-xr-xscripts/qemuimage-testlib11
-rwxr-xr-xscripts/qemuimage-testlib-pythonhelper2
-rwxr-xr-xscripts/runqemu-internal6
113 files changed, 1754 insertions, 2165 deletions
diff --git a/bitbake/lib/bb/cache_extra.py b/bitbake/lib/bb/cache_extra.py
index bf02bb74dd..9e38a439e8 100644
--- a/bitbake/lib/bb/cache_extra.py
+++ b/bitbake/lib/bb/cache_extra.py
@@ -44,6 +44,7 @@ class HobRecipeInfo(RecipeInfoCommon):
44 self.homepage = self.getvar('HOMEPAGE', metadata) 44 self.homepage = self.getvar('HOMEPAGE', metadata)
45 self.bugtracker = self.getvar('BUGTRACKER', metadata) 45 self.bugtracker = self.getvar('BUGTRACKER', metadata)
46 self.prevision = self.getvar('PR', metadata) 46 self.prevision = self.getvar('PR', metadata)
47 self.files_info = self.getvar('FILES_INFO', metadata)
47 48
48 @classmethod 49 @classmethod
49 def init_cacheData(cls, cachedata): 50 def init_cacheData(cls, cachedata):
@@ -55,6 +56,7 @@ class HobRecipeInfo(RecipeInfoCommon):
55 cachedata.homepage = {} 56 cachedata.homepage = {}
56 cachedata.bugtracker = {} 57 cachedata.bugtracker = {}
57 cachedata.prevision = {} 58 cachedata.prevision = {}
59 cachedata.files_info = {}
58 60
59 def add_cacheData(self, cachedata, fn): 61 def add_cacheData(self, cachedata, fn):
60 cachedata.summary[fn] = self.summary 62 cachedata.summary[fn] = self.summary
@@ -64,3 +66,4 @@ class HobRecipeInfo(RecipeInfoCommon):
64 cachedata.homepage[fn] = self.homepage 66 cachedata.homepage[fn] = self.homepage
65 cachedata.bugtracker[fn] = self.bugtracker 67 cachedata.bugtracker[fn] = self.bugtracker
66 cachedata.prevision[fn] = self.prevision 68 cachedata.prevision[fn] = self.prevision
69 cachedata.files_info[fn] = self.files_info
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 4650d7c551..c7c2ca6483 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -576,6 +576,7 @@ class BBCooker:
576 description = self.status.description[fn] 576 description = self.status.description[fn]
577 homepage = self.status.homepage[fn] 577 homepage = self.status.homepage[fn]
578 bugtracker = self.status.bugtracker[fn] 578 bugtracker = self.status.bugtracker[fn]
579 files_info = self.status.files_info[fn]
579 rdepends = self.status.rundeps[fn] 580 rdepends = self.status.rundeps[fn]
580 rrecs = self.status.runrecs[fn] 581 rrecs = self.status.runrecs[fn]
581 prevision = self.status.prevision[fn] 582 prevision = self.status.prevision[fn]
@@ -591,6 +592,7 @@ class BBCooker:
591 depend_tree["pn"][pn]["inherits"] = inherits 592 depend_tree["pn"][pn]["inherits"] = inherits
592 depend_tree["pn"][pn]["homepage"] = homepage 593 depend_tree["pn"][pn]["homepage"] = homepage
593 depend_tree["pn"][pn]["bugtracker"] = bugtracker 594 depend_tree["pn"][pn]["bugtracker"] = bugtracker
595 depend_tree["pn"][pn]["files_info"] = files_info
594 depend_tree["pn"][pn]["revision"] = prevision 596 depend_tree["pn"][pn]["revision"] = prevision
595 597
596 if fnid not in seen_fnids: 598 if fnid not in seen_fnids:
diff --git a/bitbake/lib/bb/tests/fetch.py b/bitbake/lib/bb/tests/fetch.py
index 778d94f872..46db7e5c60 100644
--- a/bitbake/lib/bb/tests/fetch.py
+++ b/bitbake/lib/bb/tests/fetch.py
@@ -308,6 +308,8 @@ class FetcherTest(unittest.TestCase):
308 def tearDown(self): 308 def tearDown(self):
309 bb.utils.prunedir(self.tempdir) 309 bb.utils.prunedir(self.tempdir)
310 310
311 @unittest.skipIf(os.environ.get("BB_SKIP_NETTESTS") == "yes",
312 "Unset BB_SKIP_NETTESTS to run network tests")
311 def test_fetch(self): 313 def test_fetch(self):
312 fetcher = bb.fetch.Fetch(["http://downloads.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz", "http://downloads.yoctoproject.org/releases/bitbake/bitbake-1.1.tar.gz"], self.d) 314 fetcher = bb.fetch.Fetch(["http://downloads.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz", "http://downloads.yoctoproject.org/releases/bitbake/bitbake-1.1.tar.gz"], self.d)
313 fetcher.download() 315 fetcher.download()
@@ -320,12 +322,16 @@ class FetcherTest(unittest.TestCase):
320 self.assertEqual(len(os.listdir(self.unpackdir + "/bitbake-1.0/")), 9) 322 self.assertEqual(len(os.listdir(self.unpackdir + "/bitbake-1.0/")), 9)
321 self.assertEqual(len(os.listdir(self.unpackdir + "/bitbake-1.1/")), 9) 323 self.assertEqual(len(os.listdir(self.unpackdir + "/bitbake-1.1/")), 9)
322 324
325 @unittest.skipIf(os.environ.get("BB_SKIP_NETTESTS") == "yes",
326 "Unset BB_SKIP_NETTESTS to run network tests")
323 def test_fetch_mirror(self): 327 def test_fetch_mirror(self):
324 self.d.setVar("MIRRORS", "http://.*/.* http://downloads.yoctoproject.org/releases/bitbake") 328 self.d.setVar("MIRRORS", "http://.*/.* http://downloads.yoctoproject.org/releases/bitbake")
325 fetcher = bb.fetch.Fetch(["http://invalid.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz"], self.d) 329 fetcher = bb.fetch.Fetch(["http://invalid.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz"], self.d)
326 fetcher.download() 330 fetcher.download()
327 self.assertEqual(os.path.getsize(self.dldir + "/bitbake-1.0.tar.gz"), 57749) 331 self.assertEqual(os.path.getsize(self.dldir + "/bitbake-1.0.tar.gz"), 57749)
328 332
333 @unittest.skipIf(os.environ.get("BB_SKIP_NETTESTS") == "yes",
334 "Unset BB_SKIP_NETTESTS to run network tests")
329 def test_fetch_premirror(self): 335 def test_fetch_premirror(self):
330 self.d.setVar("PREMIRRORS", "http://.*/.* http://downloads.yoctoproject.org/releases/bitbake") 336 self.d.setVar("PREMIRRORS", "http://.*/.* http://downloads.yoctoproject.org/releases/bitbake")
331 fetcher = bb.fetch.Fetch(["http://invalid.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz"], self.d) 337 fetcher = bb.fetch.Fetch(["http://invalid.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz"], self.d)
@@ -351,21 +357,29 @@ class FetcherTest(unittest.TestCase):
351 fetcher.download() 357 fetcher.download()
352 checkrevision(self, fetcher) 358 checkrevision(self, fetcher)
353 359
360 @unittest.skipIf(os.environ.get("BB_SKIP_NETTESTS") == "yes",
361 "Unset BB_SKIP_NETTESTS to run network tests")
354 def test_gitfetch(self): 362 def test_gitfetch(self):
355 url1 = url2 = "git://git.openembedded.org/bitbake" 363 url1 = url2 = "git://git.openembedded.org/bitbake"
356 self.gitfetcher(url1, url2) 364 self.gitfetcher(url1, url2)
357 365
366 @unittest.skipIf(os.environ.get("BB_SKIP_NETTESTS") == "yes",
367 "Unset BB_SKIP_NETTESTS to run network tests")
358 def test_gitfetch_premirror(self): 368 def test_gitfetch_premirror(self):
359 url1 = "git://git.openembedded.org/bitbake" 369 url1 = "git://git.openembedded.org/bitbake"
360 url2 = "git://someserver.org/bitbake" 370 url2 = "git://someserver.org/bitbake"
361 self.d.setVar("PREMIRRORS", "git://someserver.org/bitbake git://git.openembedded.org/bitbake \n") 371 self.d.setVar("PREMIRRORS", "git://someserver.org/bitbake git://git.openembedded.org/bitbake \n")
362 self.gitfetcher(url1, url2) 372 self.gitfetcher(url1, url2)
363 373
374 @unittest.skipIf(os.environ.get("BB_SKIP_NETTESTS") == "yes",
375 "Unset BB_SKIP_NETTESTS to run network tests")
364 def test_gitfetch_premirror2(self): 376 def test_gitfetch_premirror2(self):
365 url1 = url2 = "git://someserver.org/bitbake" 377 url1 = url2 = "git://someserver.org/bitbake"
366 self.d.setVar("PREMIRRORS", "git://someserver.org/bitbake git://git.openembedded.org/bitbake \n") 378 self.d.setVar("PREMIRRORS", "git://someserver.org/bitbake git://git.openembedded.org/bitbake \n")
367 self.gitfetcher(url1, url2) 379 self.gitfetcher(url1, url2)
368 380
381 @unittest.skipIf(os.environ.get("BB_SKIP_NETTESTS") == "yes",
382 "Unset BB_SKIP_NETTESTS to run network tests")
369 def test_gitfetch_premirror3(self): 383 def test_gitfetch_premirror3(self):
370 realurl = "git://git.openembedded.org/bitbake" 384 realurl = "git://git.openembedded.org/bitbake"
371 dummyurl = "git://someserver.org/bitbake" 385 dummyurl = "git://someserver.org/bitbake"
diff --git a/bitbake/lib/bb/ui/crumbs/hig/propertydialog.py b/bitbake/lib/bb/ui/crumbs/hig/propertydialog.py
index 4420f97665..f4cf9a67d0 100644
--- a/bitbake/lib/bb/ui/crumbs/hig/propertydialog.py
+++ b/bitbake/lib/bb/ui/crumbs/hig/propertydialog.py
@@ -41,11 +41,11 @@ class PropertyDialog(CrumbsDialog):
41 41
42 super(PropertyDialog, self).__init__(title, parent, flags, buttons) 42 super(PropertyDialog, self).__init__(title, parent, flags, buttons)
43 43
44 self.properties = information 44 self.properties = information
45 45
46 if len(self.properties) == 10: 46 if len(self.properties) == 10:
47 self.create_recipe_visual_elements() 47 self.create_recipe_visual_elements()
48 elif len(self.properties) == 4: 48 elif len(self.properties) == 5:
49 self.create_package_visual_elements() 49 self.create_package_visual_elements()
50 else: 50 else:
51 self.create_information_visual_elements() 51 self.create_information_visual_elements()
@@ -56,6 +56,8 @@ class PropertyDialog(CrumbsDialog):
56 HOB_ICON_BASE_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), ("icons/")) 56 HOB_ICON_BASE_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), ("icons/"))
57 ICON_PACKAGES_DISPLAY_FILE = os.path.join(HOB_ICON_BASE_DIR, ('info/info_display.png')) 57 ICON_PACKAGES_DISPLAY_FILE = os.path.join(HOB_ICON_BASE_DIR, ('info/info_display.png'))
58 58
59 self.set_resizable(False)
60
59 self.table = gtk.Table(1,1,False) 61 self.table = gtk.Table(1,1,False)
60 self.table.set_row_spacings(0) 62 self.table.set_row_spacings(0)
61 self.table.set_col_spacings(0) 63 self.table.set_col_spacings(0)
@@ -86,6 +88,19 @@ class PropertyDialog(CrumbsDialog):
86 88
87 self.vbox.add(self.table) 89 self.vbox.add(self.table)
88 90
91 def treeViewTooltip( self, widget, e, tooltips, cell, emptyText="" ):
92 try:
93 (path,col,x,y) = widget.get_path_at_pos( int(e.x), int(e.y) )
94 it = widget.get_model().get_iter(path)
95 value = widget.get_model().get_value(it,cell)
96 if value in self.tooltip_items:
97 tooltips.set_tip(widget, self.tooltip_items[value])
98 tooltips.enable()
99 else:
100 tooltips.set_tip(widget, emptyText)
101 except:
102 tooltips.set_tip(widget, emptyText)
103
89 104
90 def create_package_visual_elements(self): 105 def create_package_visual_elements(self):
91 106
@@ -93,7 +108,18 @@ class PropertyDialog(CrumbsDialog):
93 binb = self.properties['binb'] 108 binb = self.properties['binb']
94 size = self.properties['size'] 109 size = self.properties['size']
95 recipe = self.properties['recipe'] 110 recipe = self.properties['recipe']
111 file_list = self.properties['files_list']
112
113 file_list = file_list.strip("{}'")
114 files_temp = ''
115 paths_temp = ''
116 files_binb = []
117 paths_binb = []
96 118
119 self.tooltip_items = {}
120
121 self.set_resizable(False)
122
97 #cleaning out the recipe variable 123 #cleaning out the recipe variable
98 recipe = recipe.split("+")[0] 124 recipe = recipe.split("+")[0]
99 125
@@ -151,9 +177,71 @@ class PropertyDialog(CrumbsDialog):
151 self.vbox.add(self.label_short) 177 self.vbox.add(self.label_short)
152 self.vbox.add(self.label_info) 178 self.vbox.add(self.label_info)
153 179
180 #################################### FILES BROUGHT BY PACKAGES ###################################
181
182 if file_list != '':
183
184 self.textWindow = gtk.ScrolledWindow()
185 self.textWindow.set_shadow_type(gtk.SHADOW_IN)
186 self.textWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
187 self.textWindow.set_size_request(100, 170)
188
189 sstatemirrors_store = gtk.ListStore(str)
190
191 self.sstatemirrors_tv = gtk.TreeView()
192 self.sstatemirrors_tv.set_rules_hint(True)
193 self.sstatemirrors_tv.set_headers_visible(True)
194 self.textWindow.add(self.sstatemirrors_tv)
195
196 self.cell1 = gtk.CellRendererText()
197 col1 = gtk.TreeViewColumn('Package files', self.cell1)
198 col1.set_cell_data_func(self.cell1, self.regex_field)
199 self.sstatemirrors_tv.append_column(col1)
200
201 for items in file_list.split(']]'):
202 if len(items) > 1:
203 paths_temp = items.split(":")[0]
204 paths_binb.append(paths_temp.strip(" ,'"))
205 files_temp = items.split(":")[1]
206 files_binb.append(files_temp.strip(" ['"))
207
208 unsorted_list = []
209
210 for items in range(len(paths_binb)):
211 if len(files_binb[items]) > 1:
212 for aduse in (files_binb[items].split(",")):
213 unsorted_list.append(paths_binb[items].split(name)[len(paths_binb[items].split(name))-1] + '/' + aduse.strip(" '"))
214
215
216 unsorted_list.sort()
217 for items in unsorted_list:
218 temp = items
219 while len(items) > 35:
220 items = items[:len(items)/2] + "" + items[len(items)/2+1:]
221 if len(items) == 35:
222 items = items[:len(items)/2] + "..." + items[len(items)/2+3:]
223 self.tooltip_items[items] = temp
224
225 sstatemirrors_store.append([str(items)])
226
227
228 self.sstatemirrors_tv.set_model(sstatemirrors_store)
229
230 tips = gtk.Tooltips()
231 tips.set_tip(self.sstatemirrors_tv, "")
232 self.sstatemirrors_tv.connect("motion-notify-event", self.treeViewTooltip, tips, 0)
233 self.sstatemirrors_tv.set_events(gtk.gdk.POINTER_MOTION_MASK)
234
235 self.vbox.add(self.textWindow)
236
154 self.vbox.show_all() 237 self.vbox.show_all()
155 238
156 239
240 def regex_field(self, column, cell, model, iter):
241 cell.set_property('text', model.get_value(iter, 0))
242 return
243
244
157 def create_recipe_visual_elements(self): 245 def create_recipe_visual_elements(self):
158 246
159 summary = self.properties['summary'] 247 summary = self.properties['summary']
@@ -166,6 +254,8 @@ class PropertyDialog(CrumbsDialog):
166 homepage = self.properties['homepage'] 254 homepage = self.properties['homepage']
167 bugtracker = self.properties['bugtracker'] 255 bugtracker = self.properties['bugtracker']
168 description = self.properties['description'] 256 description = self.properties['description']
257
258 self.set_resizable(False)
169 259
170 #cleaning out the version variable and also the summary 260 #cleaning out the version variable and also the summary
171 version = version.split(":")[1] 261 version = version.split(":")[1]
diff --git a/bitbake/lib/bb/ui/crumbs/hoblistmodel.py b/bitbake/lib/bb/ui/crumbs/hoblistmodel.py
index 9b8db23c79..0bd9734f48 100644
--- a/bitbake/lib/bb/ui/crumbs/hoblistmodel.py
+++ b/bitbake/lib/bb/ui/crumbs/hoblistmodel.py
@@ -35,7 +35,7 @@ class PackageListModel(gtk.ListStore):
35 provide filtered views of the data. 35 provide filtered views of the data.
36 """ 36 """
37 37
38 (COL_NAME, COL_VER, COL_REV, COL_RNM, COL_SEC, COL_SUM, COL_RDEP, COL_RPROV, COL_SIZE, COL_RCP, COL_BINB, COL_INC, COL_FADE_INC, COL_FONT) = range(14) 38 (COL_NAME, COL_VER, COL_REV, COL_RNM, COL_SEC, COL_SUM, COL_RDEP, COL_RPROV, COL_SIZE, COL_RCP, COL_BINB, COL_INC, COL_FADE_INC, COL_FONT, COL_FLIST) = range(15)
39 39
40 __gsignals__ = { 40 __gsignals__ = {
41 "package-selection-changed" : (gobject.SIGNAL_RUN_LAST, 41 "package-selection-changed" : (gobject.SIGNAL_RUN_LAST,
@@ -61,6 +61,7 @@ class PackageListModel(gtk.ListStore):
61 gobject.TYPE_STRING, 61 gobject.TYPE_STRING,
62 gobject.TYPE_BOOLEAN, 62 gobject.TYPE_BOOLEAN,
63 gobject.TYPE_BOOLEAN, 63 gobject.TYPE_BOOLEAN,
64 gobject.TYPE_STRING,
64 gobject.TYPE_STRING) 65 gobject.TYPE_STRING)
65 66
66 """ 67 """
@@ -90,7 +91,7 @@ class PackageListModel(gtk.ListStore):
90 for key in filter.keys(): 91 for key in filter.keys():
91 if key == self.COL_NAME: 92 if key == self.COL_NAME:
92 if filter[key] != 'Search packages by name': 93 if filter[key] != 'Search packages by name':
93 if filter[key] not in name: 94 if name and filter[key] not in name:
94 return False 95 return False
95 else: 96 else:
96 if model.get_value(it, key) not in filter[key]: 97 if model.get_value(it, key) not in filter[key]:
@@ -199,6 +200,7 @@ class PackageListModel(gtk.ListStore):
199 rdep = getpkgvalue(pkginfo, 'RDEPENDS', pkg, "") 200 rdep = getpkgvalue(pkginfo, 'RDEPENDS', pkg, "")
200 rrec = getpkgvalue(pkginfo, 'RRECOMMENDS', pkg, "") 201 rrec = getpkgvalue(pkginfo, 'RRECOMMENDS', pkg, "")
201 rprov = getpkgvalue(pkginfo, 'RPROVIDES', pkg, "") 202 rprov = getpkgvalue(pkginfo, 'RPROVIDES', pkg, "")
203 files_list = getpkgvalue(pkginfo, 'FILES_INFO', pkg, "")
202 for i in rprov.split(): 204 for i in rprov.split():
203 self.rprov_pkg[i] = pkg 205 self.rprov_pkg[i] = pkg
204 206
@@ -218,7 +220,7 @@ class PackageListModel(gtk.ListStore):
218 self.COL_RDEP, rdep + ' ' + rrec, 220 self.COL_RDEP, rdep + ' ' + rrec,
219 self.COL_RPROV, rprov, self.COL_SIZE, size, 221 self.COL_RPROV, rprov, self.COL_SIZE, size,
220 self.COL_RCP, recipe, self.COL_BINB, "", 222 self.COL_RCP, recipe, self.COL_BINB, "",
221 self.COL_INC, False, self.COL_FONT, '10') 223 self.COL_INC, False, self.COL_FONT, '10', self.COL_FLIST, files_list)
222 224
223 self.pn_path = {} 225 self.pn_path = {}
224 it = self.get_iter_first() 226 it = self.get_iter_first()
diff --git a/bitbake/lib/bb/ui/crumbs/hobwidget.py b/bitbake/lib/bb/ui/crumbs/hobwidget.py
index 17d9cee138..1d1ae1a349 100644
--- a/bitbake/lib/bb/ui/crumbs/hobwidget.py
+++ b/bitbake/lib/bb/ui/crumbs/hobwidget.py
@@ -165,6 +165,7 @@ class HobViewTable (gtk.VBox):
165 no_result_tab.attach(label, 1, 14, 1, 4) 165 no_result_tab.attach(label, 1, 14, 1, 4)
166 166
167 clear_button = HobButton("Clear search") 167 clear_button = HobButton("Clear search")
168 clear_button.set_tooltip_text("Clear search query")
168 clear_button.connect('clicked', self.set_search_entry_clear_cb, entry) 169 clear_button.connect('clicked', self.set_search_entry_clear_cb, entry)
169 no_result_tab.attach(clear_button, 16, 19, 1, 4) 170 no_result_tab.attach(clear_button, 16, 19, 1, 4)
170 171
@@ -480,6 +481,8 @@ class HobNotebook(gtk.Notebook):
480 self.pages = [] 481 self.pages = []
481 482
482 self.search = None 483 self.search = None
484 self.search_focus = False
485 self.page_changed = False
483 486
484 self.connect("switch-page", self.page_changed_cb) 487 self.connect("switch-page", self.page_changed_cb)
485 488
@@ -493,6 +496,7 @@ class HobNotebook(gtk.Notebook):
493 lbl.set_active(False) 496 lbl.set_active(False)
494 497
495 if self.search: 498 if self.search:
499 self.page_changed = True
496 self.reset_entry(self.search, page_num) 500 self.reset_entry(self.search, page_num)
497 501
498 def append_page(self, child, tab_label, tab_tooltip=None): 502 def append_page(self, child, tab_label, tab_tooltip=None):
@@ -536,15 +540,20 @@ class HobNotebook(gtk.Notebook):
536 child.set_count(0) 540 child.set_count(0)
537 541
538 def set_search_entry_editable_cb(self, search, event): 542 def set_search_entry_editable_cb(self, search, event):
543 self.search_focus = True
539 search.set_editable(True) 544 search.set_editable(True)
540 search.set_text("") 545 text = search.get_text()
546 if text in self.search_names:
547 search.set_text("")
541 style = self.search.get_style() 548 style = self.search.get_style()
542 style.text[gtk.STATE_NORMAL] = self.get_colormap().alloc_color(HobColors.BLACK, False, False) 549 style.text[gtk.STATE_NORMAL] = self.get_colormap().alloc_color(HobColors.BLACK, False, False)
543 search.set_style(style) 550 search.set_style(style)
544 551
545 def set_search_entry_reset_cb(self, search, event): 552 def set_search_entry_reset_cb(self, search, event):
546 page_num = self.get_current_page() 553 page_num = self.get_current_page()
547 self.reset_entry(search, page_num) 554 text = search.get_text()
555 if not text:
556 self.reset_entry(search, page_num)
548 557
549 def reset_entry(self, entry, page_num): 558 def reset_entry(self, entry, page_num):
550 style = entry.get_style() 559 style = entry.get_style()
@@ -559,6 +568,7 @@ class HobNotebook(gtk.Notebook):
559 if search.get_editable() == True: 568 if search.get_editable() == True:
560 search.set_text("") 569 search.set_text("")
561 search.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, False) 570 search.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, False)
571 search.grab_focus()
562 572
563 def set_page(self, title): 573 def set_page(self, title):
564 for child in self.pages: 574 for child in self.pages:
diff --git a/bitbake/lib/bb/ui/crumbs/packageselectionpage.py b/bitbake/lib/bb/ui/crumbs/packageselectionpage.py
index ce2deabb89..fb9afcb3cf 100755
--- a/bitbake/lib/bb/ui/crumbs/packageselectionpage.py
+++ b/bitbake/lib/bb/ui/crumbs/packageselectionpage.py
@@ -180,9 +180,19 @@ class PackageSelectionPage (HobPage):
180 self.button_box.pack_end(self.back_button, expand=False, fill=False) 180 self.button_box.pack_end(self.back_button, expand=False, fill=False)
181 181
182 def search_entry_changed(self, entry): 182 def search_entry_changed(self, entry):
183 text = entry.get_text()
184 if self.ins.search_focus:
185 self.ins.search_focus = False
186 elif self.ins.page_changed:
187 self.ins.page_change = False
188 self.filter_search(entry)
189 elif text not in self.ins.search_names:
190 self.filter_search(entry)
191
192 def filter_search(self, entry):
193 text = entry.get_text()
183 current_tab = self.ins.get_current_page() 194 current_tab = self.ins.get_current_page()
184 filter = self.pages[current_tab]['filter'] 195 filter = self.pages[current_tab]['filter']
185 text = entry.get_text()
186 filter[PackageListModel.COL_NAME] = text 196 filter[PackageListModel.COL_NAME] = text
187 self.tables[current_tab].set_model(self.package_model.tree_model(filter, search_data=text)) 197 self.tables[current_tab].set_model(self.package_model.tree_model(filter, search_data=text))
188 if self.package_model.filtered_nb == 0: 198 if self.package_model.filtered_nb == 0:
@@ -202,12 +212,13 @@ class PackageSelectionPage (HobPage):
202 def button_click_cb(self, widget, event): 212 def button_click_cb(self, widget, event):
203 path, col = widget.table_tree.get_cursor() 213 path, col = widget.table_tree.get_cursor()
204 tree_model = widget.table_tree.get_model() 214 tree_model = widget.table_tree.get_model()
205 if path: # else activation is likely a removal 215 if path and col.get_title() != 'Included': # else activation is likely a removal
206 properties = {'binb': '' , 'name': '', 'size':'', 'recipe':''} 216 properties = {'binb': '' , 'name': '', 'size':'', 'recipe':'', 'files_list':''}
207 properties['binb'] = tree_model.get_value(tree_model.get_iter(path), PackageListModel.COL_BINB) 217 properties['binb'] = tree_model.get_value(tree_model.get_iter(path), PackageListModel.COL_BINB)
208 properties['name'] = tree_model.get_value(tree_model.get_iter(path), PackageListModel.COL_NAME) 218 properties['name'] = tree_model.get_value(tree_model.get_iter(path), PackageListModel.COL_NAME)
209 properties['size'] = tree_model.get_value(tree_model.get_iter(path), PackageListModel.COL_SIZE) 219 properties['size'] = tree_model.get_value(tree_model.get_iter(path), PackageListModel.COL_SIZE)
210 properties['recipe'] = tree_model.get_value(tree_model.get_iter(path), PackageListModel.COL_RCP) 220 properties['recipe'] = tree_model.get_value(tree_model.get_iter(path), PackageListModel.COL_RCP)
221 properties['files_list'] = tree_model.get_value(tree_model.get_iter(path), PackageListModel.COL_FLIST)
211 222
212 self.builder.show_recipe_property_dialog(properties) 223 self.builder.show_recipe_property_dialog(properties)
213 224
diff --git a/bitbake/lib/bb/ui/crumbs/recipeselectionpage.py b/bitbake/lib/bb/ui/crumbs/recipeselectionpage.py
index aa0cd60c3f..d1e5b69401 100755
--- a/bitbake/lib/bb/ui/crumbs/recipeselectionpage.py
+++ b/bitbake/lib/bb/ui/crumbs/recipeselectionpage.py
@@ -195,9 +195,19 @@ class RecipeSelectionPage (HobPage):
195 button_box.pack_end(self.back_button, expand=False, fill=False) 195 button_box.pack_end(self.back_button, expand=False, fill=False)
196 196
197 def search_entry_changed(self, entry): 197 def search_entry_changed(self, entry):
198 text = entry.get_text()
199 if self.ins.search_focus:
200 self.ins.search_focus = False
201 elif self.ins.page_changed:
202 self.ins.page_change = False
203 self.filter_search(entry)
204 elif text not in self.ins.search_names:
205 self.filter_search(entry)
206
207 def filter_search(self, entry):
208 text = entry.get_text()
198 current_tab = self.ins.get_current_page() 209 current_tab = self.ins.get_current_page()
199 filter = self.pages[current_tab]['filter'] 210 filter = self.pages[current_tab]['filter']
200 text = entry.get_text()
201 filter[RecipeListModel.COL_NAME] = text 211 filter[RecipeListModel.COL_NAME] = text
202 self.tables[current_tab].set_model(self.recipe_model.tree_model(filter, search_data=text)) 212 self.tables[current_tab].set_model(self.recipe_model.tree_model(filter, search_data=text))
203 if self.recipe_model.filtered_nb == 0: 213 if self.recipe_model.filtered_nb == 0:
@@ -217,7 +227,7 @@ class RecipeSelectionPage (HobPage):
217 def button_click_cb(self, widget, event): 227 def button_click_cb(self, widget, event):
218 path, col = widget.table_tree.get_cursor() 228 path, col = widget.table_tree.get_cursor()
219 tree_model = widget.table_tree.get_model() 229 tree_model = widget.table_tree.get_model()
220 if path: # else activation is likely a removal 230 if path and col.get_title() != 'Included': # else activation is likely a removal
221 properties = {'summary': '', 'name': '', 'version': '', 'revision': '', 'binb': '', 'group': '', 'license': '', 'homepage': '', 'bugtracker': '', 'description': ''} 231 properties = {'summary': '', 'name': '', 'version': '', 'revision': '', 'binb': '', 'group': '', 'license': '', 'homepage': '', 'bugtracker': '', 'description': ''}
222 properties['summary'] = tree_model.get_value(tree_model.get_iter(path), RecipeListModel.COL_SUMMARY) 232 properties['summary'] = tree_model.get_value(tree_model.get_iter(path), RecipeListModel.COL_SUMMARY)
223 properties['name'] = tree_model.get_value(tree_model.get_iter(path), RecipeListModel.COL_NAME) 233 properties['name'] = tree_model.get_value(tree_model.get_iter(path), RecipeListModel.COL_NAME)
diff --git a/meta-yocto-bsp/conf/machine/atom-pc.conf b/meta-yocto-bsp/conf/machine/atom-pc.conf
index b1c2ae194e..e8f377fd5d 100644
--- a/meta-yocto-bsp/conf/machine/atom-pc.conf
+++ b/meta-yocto-bsp/conf/machine/atom-pc.conf
@@ -10,7 +10,7 @@ MACHINE_FEATURES = "screen keyboard pci usbhost ext2 ext3 x86 wifi acpi alsa"
10KERNEL_IMAGETYPE = "bzImage" 10KERNEL_IMAGETYPE = "bzImage"
11 11
12PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" 12PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
13PREFERRED_VERSION_linux-yocto ?= "3.4%" 13PREFERRED_VERSION_linux-yocto ?= "3.8%"
14PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg" 14PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
15XSERVER ?= "xserver-xorg \ 15XSERVER ?= "xserver-xorg \
16 xserver-xorg-extension-glx \ 16 xserver-xorg-extension-glx \
diff --git a/meta-yocto-bsp/conf/machine/routerstationpro.conf b/meta-yocto-bsp/conf/machine/routerstationpro.conf
index e5e4d1a338..a727e2a0a2 100644
--- a/meta-yocto-bsp/conf/machine/routerstationpro.conf
+++ b/meta-yocto-bsp/conf/machine/routerstationpro.conf
@@ -6,8 +6,8 @@ require conf/machine/include/tune-mips32.inc
6 6
7MACHINE_FEATURES = "screen keyboard pci usbhost ext2 ext3 serial" 7MACHINE_FEATURES = "screen keyboard pci usbhost ext2 ext3 serial"
8 8
9KERNEL_IMAGETYPE = "vmlinux" 9KERNEL_ALT_IMAGETYPE = "vmlinux"
10KERNEL_ALT_IMAGETYPE = "vmlinux.bin" 10KERNEL_IMAGETYPE = "vmlinux.bin"
11 11
12PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" 12PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
13PREFERRED_VERSION_linux-yocto ?= "3.4%" 13PREFERRED_VERSION_linux-yocto ?= "3.4%"
diff --git a/meta-yocto/conf/conf-notes.txt b/meta-yocto/conf/conf-notes.txt
new file mode 100644
index 0000000000..503cffa44e
--- /dev/null
+++ b/meta-yocto/conf/conf-notes.txt
@@ -0,0 +1,9 @@
1Common targets are:
2 core-image-minimal
3 core-image-sato
4 meta-toolchain
5 meta-toolchain-sdk
6 adt-installer
7 meta-ide-support
8
9You can also run generated qemu images with a command like 'runqemu qemux86'
diff --git a/meta-yocto/conf/distro/include/package_regex.inc b/meta-yocto/conf/distro/include/package_regex.inc
index 882c13cf53..aff4bdd4e0 100644
--- a/meta-yocto/conf/distro/include/package_regex.inc
+++ b/meta-yocto/conf/distro/include/package_regex.inc
@@ -48,6 +48,7 @@ REGEX_URI_pn-nativesdk-db = "http://www.oracle.com/technetwork/products/berkeley
48REGEX_pn-nativesdk-db = "[hH][rR][eE][fF]=\"http://download.oracle.com/otn/berkeley-db/db-(?P<pver>((\d+[\.\-_]*)+))\.tar\.gz\"" 48REGEX_pn-nativesdk-db = "[hH][rR][eE][fF]=\"http://download.oracle.com/otn/berkeley-db/db-(?P<pver>((\d+[\.\-_]*)+))\.tar\.gz\""
49REGEX_URI_pn-e2fsprogs = "http://sourceforge.net/projects/e2fsprogs/files/e2fsprogs/" 49REGEX_URI_pn-e2fsprogs = "http://sourceforge.net/projects/e2fsprogs/files/e2fsprogs/"
50REGEX_pn-e2fsprogs = "[hH][rR][eE][fF]=\"/projects/e2fsprogs/files/e2fsprogs/v(?P<pver>((\d+[\.\-_]*)+))/\"" 50REGEX_pn-e2fsprogs = "[hH][rR][eE][fF]=\"/projects/e2fsprogs/files/e2fsprogs/v(?P<pver>((\d+[\.\-_]*)+))/\""
51REGEX_pn-elfutils = "[hH][rR][eE][fF]=\"(elfutils\-)?(?P<pver>((\d+[\.\-_]*)+))(/|\.tar\.bz2)\""
51REGEX_URI_pn-expat = "http://sourceforge.net/projects/expat/files/expat/" 52REGEX_URI_pn-expat = "http://sourceforge.net/projects/expat/files/expat/"
52REGEX_pn-expat-native = "[hH][rR][eE][fF]=\"/projects/expat/files/expat/(?P<pver>((\d+[\.\-_]*)+))/\"" 53REGEX_pn-expat-native = "[hH][rR][eE][fF]=\"/projects/expat/files/expat/(?P<pver>((\d+[\.\-_]*)+))/\""
53REGEX_URI_pn-expat-native = "http://sourceforge.net/projects/expat/files/expat/" 54REGEX_URI_pn-expat-native = "http://sourceforge.net/projects/expat/files/expat/"
diff --git a/meta-yocto/conf/distro/poky.conf b/meta-yocto/conf/distro/poky.conf
index f146f5f439..538f3434b5 100644
--- a/meta-yocto/conf/distro/poky.conf
+++ b/meta-yocto/conf/distro/poky.conf
@@ -1,6 +1,7 @@
1DISTRO = "poky" 1DISTRO = "poky"
2DISTRO_NAME = "Poky 8.0 (Yocto Project 1.3 Reference Distro)" 2DISTRO_NAME = "Poky 8.0 (Yocto Project 1.3 Reference Distro)"
3DISTRO_VERSION = "1.3+snapshot-${DATE}" 3DISTRO_VERSION = "1.3+snapshot-${DATE}"
4DISTRO_CODENAME = "dylan"
4SDK_VENDOR = "-pokysdk" 5SDK_VENDOR = "-pokysdk"
5SDK_VERSION := "${@'${DISTRO_VERSION}'.replace('snapshot-${DATE}','snapshot')}" 6SDK_VERSION := "${@'${DISTRO_VERSION}'.replace('snapshot-${DATE}','snapshot')}"
6 7
@@ -11,7 +12,7 @@ TARGET_VENDOR = "-poky"
11LOCALCONF_VERSION = "1" 12LOCALCONF_VERSION = "1"
12LAYER_CONF_VERSION ?= "6" 13LAYER_CONF_VERSION ?= "6"
13 14
14DISTRO_FEATURES_append = " largefile opengl multiarch" 15DISTRO_FEATURES_append = " largefile opengl multiarch wayland"
15 16
16PREFERRED_VERSION_linux-yocto ?= "3.4%" 17PREFERRED_VERSION_linux-yocto ?= "3.4%"
17PREFERRED_VERSION_linux-yocto_qemux86 ?= "3.8%" 18PREFERRED_VERSION_linux-yocto_qemux86 ?= "3.8%"
@@ -44,7 +45,7 @@ TCLIBCAPPEND = ""
44QEMU_TARGETS ?= "arm i386 mips mipsel ppc x86_64" 45QEMU_TARGETS ?= "arm i386 mips mipsel ppc x86_64"
45# Other QEMU_TARGETS "mips64 mips64el sh4" 46# Other QEMU_TARGETS "mips64 mips64el sh4"
46 47
47PREMIRRORS ?= "\ 48PREMIRRORS ??= "\
48bzr://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \ 49bzr://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \
49cvs://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \ 50cvs://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \
50git://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \ 51git://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \
diff --git a/meta-yocto/conf/local.conf.sample.extended b/meta-yocto/conf/local.conf.sample.extended
index 4d9ce562dc..d0dff80385 100644
--- a/meta-yocto/conf/local.conf.sample.extended
+++ b/meta-yocto/conf/local.conf.sample.extended
@@ -211,7 +211,3 @@
211# Put the following two lines in the conf file with intact. 211# Put the following two lines in the conf file with intact.
212#ARCHIVER_CLASS = "${@'archive-${ARCHIVER_MODE}-source' if ARCHIVER_MODE != 'none' else ''}" 212#ARCHIVER_CLASS = "${@'archive-${ARCHIVER_MODE}-source' if ARCHIVER_MODE != 'none' else ''}"
213#INHERIT += "${ARCHIVER_CLASS}" 213#INHERIT += "${ARCHIVER_CLASS}"
214#
215# set init manager: sysvinit or systemd
216# sysvinit is the default choice
217#DISTRO_FEATURES_INITMAN ?= "sysvinit"
diff --git a/meta/classes/archive-configured-source.bbclass b/meta/classes/archive-configured-source.bbclass
index 0f2c9ee329..d346f69e29 100644
--- a/meta/classes/archive-configured-source.bbclass
+++ b/meta/classes/archive-configured-source.bbclass
@@ -24,24 +24,17 @@ python () {
24 return 24 return
25 25
26 d.appendVarFlag('do_dumpdata_create_diff_gz', 'depends', ' %s:do_package_write_' %pn + packaging) 26 d.appendVarFlag('do_dumpdata_create_diff_gz', 'depends', ' %s:do_package_write_' %pn + packaging)
27 build_deps = ' %s:do_dumpdata_create_diff_gz' %pn
27 28
28 if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) != 'srpm': 29 if d.getVar('SOURCE_ARCHIVE_LOG_WITH_SCRIPTS', True) == 'logs_with_scripts':
29 """ 30 d.appendVarFlag('do_archive_scripts_logs', 'depends', ' %s:do_package_write_' %pn + packaging)
30 If package type is not 'srpm' then add tasks to move archive packages of 31 build_deps += ' %s:do_archive_scripts_logs' %pn
31 configured sources and scripts/logs in ${DEPLOY_DIR}/sources. 32
32 """ 33 if not not_tarball(d):
33 d.appendVarFlag('do_compile', 'depends', ' %s:do_archive_configured_sources' %pn) 34 d.appendVarFlag('do_compile', 'depends', ' %s:do_archive_configured_sources' %pn)
34 build_deps = ' %s:do_dumpdata_create_diff_gz' %pn 35 build_deps += ' %s:do_archive_configured_sources' %pn
35 if not not_tarball(d): 36
36 build_deps += ' %s:do_archive_configured_sources' %pn 37 d.appendVarFlag('do_build', 'depends', build_deps)
37 if d.getVar('SOURCE_ARCHIVE_LOG_WITH_SCRIPTS', True) == 'logs_with_scripts':
38 build_deps += ' %s:do_archive_scripts_logs' %pn
39 d.appendVarFlag('do_archive_scripts_logs', 'depends', ' %s:do_package_write_' %pn + packaging)
40 d.appendVarFlag('do_build', 'depends', build_deps)
41
42 else:
43 d.prependVarFlag('do_configure', 'postfuncs', "do_archive_configured_sources")
44 d.prependVarFlag('do_package_write_rpm', 'prefuncs', "do_archive_scripts_logs")
45} 38}
46 39
47ARCHIVE_SSTATE_OUTDIR = "${DEPLOY_DIR}/sources/" 40ARCHIVE_SSTATE_OUTDIR = "${DEPLOY_DIR}/sources/"
diff --git a/meta/classes/archive-original-source.bbclass b/meta/classes/archive-original-source.bbclass
index 1e138ce2fa..7258293c93 100644
--- a/meta/classes/archive-original-source.bbclass
+++ b/meta/classes/archive-original-source.bbclass
@@ -24,24 +24,17 @@ python () {
24 return 24 return
25 25
26 d.appendVarFlag('do_dumpdata_create_diff_gz', 'depends', ' %s:do_package_write_' %pn + packaging) 26 d.appendVarFlag('do_dumpdata_create_diff_gz', 'depends', ' %s:do_package_write_' %pn + packaging)
27 build_deps = ' %s:do_dumpdata_create_diff_gz' %pn
27 28
28 if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) != 'srpm': 29 if d.getVar('SOURCE_ARCHIVE_LOG_WITH_SCRIPTS', True) == 'logs_with_scripts':
29 """ 30 d.appendVarFlag('do_archive_scripts_logs', 'depends', ' %s:do_package_write_' %pn + packaging)
30 If package type is not 'srpm' then add tasks to move archive packages of 31 build_deps += ' %s:do_archive_scripts_logs' %pn
31 original sources and scripts/logs in ${DEPLOY_DIR}/sources. 32
32 """ 33 if not not_tarball(d):
33 d.appendVarFlag('do_patch', 'depends', ' %s:do_archive_original_sources_patches' %pn) 34 d.appendVarFlag('do_patch', 'depends', ' %s:do_archive_original_sources_patches' %pn)
34 build_deps = ' %s:do_dumpdata_create_diff_gz' %pn 35 build_deps += ' %s:do_archive_original_sources_patches' %pn
35 if not not_tarball(d): 36
36 build_deps += ' %s:do_archive_original_sources_patches' %pn 37 d.appendVarFlag('do_build', 'depends', build_deps)
37 if d.getVar('SOURCE_ARCHIVE_LOG_WITH_SCRIPTS', True) == 'logs_with_scripts':
38 build_deps += ' %s:do_archive_scripts_logs' %pn
39 d.appendVarFlag('do_archive_scripts_logs', 'depends', ' %s:do_package_write_' %pn + packaging)
40 d.appendVarFlag('do_build', 'depends', build_deps)
41
42 else:
43 d.prependVarFlag('do_unpack', 'postfuncs', "do_archive_original_sources_patches")
44 d.prependVarFlag('do_package_write_rpm', 'prefuncs', "do_archive_scripts_logs")
45} 38}
46 39
47ARCHIVE_SSTATE_OUTDIR = "${DEPLOY_DIR}/sources/" 40ARCHIVE_SSTATE_OUTDIR = "${DEPLOY_DIR}/sources/"
diff --git a/meta/classes/archive-patched-source.bbclass b/meta/classes/archive-patched-source.bbclass
index ac6d2c39f1..9e5ec74f45 100644
--- a/meta/classes/archive-patched-source.bbclass
+++ b/meta/classes/archive-patched-source.bbclass
@@ -24,24 +24,17 @@ python () {
24 return 24 return
25 25
26 d.appendVarFlag('do_dumpdata_create_diff_gz', 'depends', ' %s:do_package_write_' %pn + packaging) 26 d.appendVarFlag('do_dumpdata_create_diff_gz', 'depends', ' %s:do_package_write_' %pn + packaging)
27 build_deps = ' %s:do_dumpdata_create_diff_gz' %pn
27 28
28 if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) != 'srpm': 29 if d.getVar('SOURCE_ARCHIVE_LOG_WITH_SCRIPTS', True) == 'logs_with_scripts':
29 """ 30 d.appendVarFlag('do_archive_scripts_logs', 'depends', ' %s:do_package_write_' %pn + packaging)
30 If package type is not 'srpm' then add tasks to move archive packages of 31 build_deps += ' %s:do_archive_scripts_logs' %pn
31 patched sources and scripts/logs in ${DEPLOY_DIR}/sources. 32
32 """ 33 if not not_tarball(d):
33 d.appendVarFlag('do_configure', 'depends', ' %s:do_archive_patched_sources' %pn) 34 d.appendVarFlag('do_configure', 'depends', ' %s:do_archive_patched_sources' %pn)
34 build_deps = ' %s:do_dumpdata_create_diff_gz' %pn 35 build_deps += ' %s:do_archive_patched_sources' %pn
35 if not not_tarball(d): 36
36 build_deps += ' %s:do_archive_patched_sources' %pn 37 d.appendVarFlag('do_build', 'depends', build_deps)
37 if d.getVar('SOURCE_ARCHIVE_LOG_WITH_SCRIPTS', True) == 'logs_with_scripts':
38 build_deps += ' %s:do_archive_scripts_logs' %pn
39 d.appendVarFlag('do_archive_scripts_logs', 'depends', ' %s:do_package_write_' %pn + packaging)
40 d.appendVarFlag('do_build', 'depends', build_deps)
41
42 else:
43 d.prependVarFlag('do_patch', 'postfuncs', "do_archive_patched_sources")
44 d.prependVarFlag('do_package_write_rpm', 'prefuncs', "do_archive_scripts_logs")
45} 38}
46 39
47ARCHIVE_SSTATE_OUTDIR = "${DEPLOY_DIR}/sources/" 40ARCHIVE_SSTATE_OUTDIR = "${DEPLOY_DIR}/sources/"
diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass
index ed07b2edb8..6749d61678 100644
--- a/meta/classes/archiver.bbclass
+++ b/meta/classes/archiver.bbclass
@@ -440,10 +440,6 @@ def archive_scripts_logs(d):
440 tarlog = archive_logs(d, logdir, True) 440 tarlog = archive_logs(d, logdir, True)
441 441
442 if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) == 'srpm': 442 if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) == 'srpm':
443 if os.path.exists(work_dir+ '/' + tarlog):
444 os.remove(work_dir+ '/' + tarlog)
445 shutil.move(os.path.join(logdir, '..', tarlog), work_dir)
446 shutil.rmtree(os.path.join(work_dir,'script-logs'))
447 store_package(d, tarlog) 443 store_package(d, tarlog)
448 444
449def dumpdata(d): 445def dumpdata(d):
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index 5fe9a84efe..abd6a526c3 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -162,7 +162,7 @@ def preferred_ml_updates(d):
162 providers.append(v) 162 providers.append(v)
163 163
164 for pkg, reason in blacklists.items(): 164 for pkg, reason in blacklists.items():
165 if pkg.endswith(("-native", "-crosssdk")) or pkg.startswith("nativesdk-") or 'cross-canadian' in pkg: 165 if pkg.endswith(("-native", "-crosssdk")) or pkg.startswith(("nativesdk-", "virtual/nativesdk-")) or 'cross-canadian' in pkg:
166 continue 166 continue
167 for p in prefixes: 167 for p in prefixes:
168 newpkg = p + "-" + pkg 168 newpkg = p + "-" + pkg
@@ -172,7 +172,7 @@ def preferred_ml_updates(d):
172 for v in versions: 172 for v in versions:
173 val = d.getVar(v, False) 173 val = d.getVar(v, False)
174 pkg = v.replace("PREFERRED_VERSION_", "") 174 pkg = v.replace("PREFERRED_VERSION_", "")
175 if pkg.endswith(("-native", "-crosssdk")) or pkg.startswith("nativesdk-"): 175 if pkg.endswith(("-native", "-crosssdk")) or pkg.startswith(("nativesdk-", "virtual/nativesdk-")):
176 continue 176 continue
177 if 'cross-canadian' in pkg: 177 if 'cross-canadian' in pkg:
178 for p in prefixes: 178 for p in prefixes:
@@ -182,8 +182,12 @@ def preferred_ml_updates(d):
182 bb.data.update_data(localdata) 182 bb.data.update_data(localdata)
183 newname = localdata.expand(v) 183 newname = localdata.expand(v)
184 if newname != v: 184 if newname != v:
185 newval = localdata.getVar(v, True) 185 newval = localdata.expand(val)
186 d.setVar(newname, newval) 186 d.setVar(newname, newval)
187 # Avoid future variable key expansion
188 vexp = d.expand(v)
189 if v != vexp and d.getVar(v, False):
190 d.renameVar(v, vexp)
187 continue 191 continue
188 for p in prefixes: 192 for p in prefixes:
189 newname = "PREFERRED_VERSION_" + p + "-" + pkg 193 newname = "PREFERRED_VERSION_" + p + "-" + pkg
@@ -193,7 +197,7 @@ def preferred_ml_updates(d):
193 for prov in providers: 197 for prov in providers:
194 val = d.getVar(prov, False) 198 val = d.getVar(prov, False)
195 pkg = prov.replace("PREFERRED_PROVIDER_", "") 199 pkg = prov.replace("PREFERRED_PROVIDER_", "")
196 if pkg.endswith(("-native", "-crosssdk")) or pkg.startswith("nativesdk-"): 200 if pkg.endswith(("-native", "-crosssdk")) or pkg.startswith(("nativesdk-", "virtual/nativesdk-")):
197 continue 201 continue
198 if 'cross-canadian' in pkg: 202 if 'cross-canadian' in pkg:
199 for p in prefixes: 203 for p in prefixes:
@@ -205,6 +209,10 @@ def preferred_ml_updates(d):
205 if newname != prov: 209 if newname != prov:
206 newval = localdata.expand(val) 210 newval = localdata.expand(val)
207 d.setVar(newname, newval) 211 d.setVar(newname, newval)
212 # Avoid future variable key expansion
213 provexp = d.expand(prov)
214 if prov != provexp and d.getVar(prov, False):
215 d.renameVar(prov, provexp)
208 continue 216 continue
209 virt = "" 217 virt = ""
210 if pkg.startswith("virtual/"): 218 if pkg.startswith("virtual/"):
@@ -220,19 +228,23 @@ def preferred_ml_updates(d):
220 localdata.setVar("OVERRIDES", localdata.getVar("OVERRIDES", False) + override) 228 localdata.setVar("OVERRIDES", localdata.getVar("OVERRIDES", False) + override)
221 bb.data.update_data(localdata) 229 bb.data.update_data(localdata)
222 newname = localdata.expand(prov) 230 newname = localdata.expand(prov)
223 if newname != prov: 231 if newname != prov and not d.getVar(newname, False):
224 d.setVar(newname, localdata.expand(val)) 232 d.setVar(newname, localdata.expand(val))
225 233
226 # implement alternative multilib name 234 # implement alternative multilib name
227 newname = localdata.expand("PREFERRED_PROVIDER_" + virt + p + "-" + pkg) 235 newname = localdata.expand("PREFERRED_PROVIDER_" + virt + p + "-" + pkg)
228 if not d.getVar(newname, False): 236 if not d.getVar(newname, False):
229 d.setVar(newname, val) 237 d.setVar(newname, val)
238 # Avoid future variable key expansion
239 provexp = d.expand(prov)
240 if prov != provexp and d.getVar(prov, False):
241 d.renameVar(prov, provexp)
230 242
231 243
232 mp = (d.getVar("MULTI_PROVIDER_WHITELIST", True) or "").split() 244 mp = (d.getVar("MULTI_PROVIDER_WHITELIST", True) or "").split()
233 extramp = [] 245 extramp = []
234 for p in mp: 246 for p in mp:
235 if p.endswith(("-native", "-crosssdk")) or p.startswith("nativesdk-") or 'cross-canadian' in p: 247 if p.endswith(("-native", "-crosssdk")) or p.startswith(("nativesdk-", "virtual/nativesdk-")) or 'cross-canadian' in p:
236 continue 248 continue
237 virt = "" 249 virt = ""
238 if p.startswith("virtual/"): 250 if p.startswith("virtual/"):
@@ -489,6 +501,8 @@ python () {
489 d.setVarFlag('do_package', 'fakeroot', 1) 501 d.setVarFlag('do_package', 'fakeroot', 1)
490 d.setVarFlag('do_package', 'umask', 022) 502 d.setVarFlag('do_package', 'umask', 022)
491 d.setVarFlag('do_package_setscene', 'fakeroot', 1) 503 d.setVarFlag('do_package_setscene', 'fakeroot', 1)
504 d.setVarFlag('do_devshell', 'fakeroot', 1)
505 d.appendVarFlag('do_devshell', 'depends', ' virtual/fakeroot-native:do_populate_sysroot')
492 source_mirror_fetch = d.getVar('SOURCE_MIRROR_FETCH', 0) 506 source_mirror_fetch = d.getVar('SOURCE_MIRROR_FETCH', 0)
493 if not source_mirror_fetch: 507 if not source_mirror_fetch:
494 need_host = d.getVar('COMPATIBLE_HOST', True) 508 need_host = d.getVar('COMPATIBLE_HOST', True)
diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass
index 38923261d3..82d0bf8070 100644
--- a/meta/classes/buildhistory.bbclass
+++ b/meta/classes/buildhistory.bbclass
@@ -259,12 +259,6 @@ def write_recipehistory(rcpinfo, d):
259 f.write("DEPENDS = %s\n" % rcpinfo.depends) 259 f.write("DEPENDS = %s\n" % rcpinfo.depends)
260 f.write("PACKAGES = %s\n" % rcpinfo.packages) 260 f.write("PACKAGES = %s\n" % rcpinfo.packages)
261 261
262 if rcpinfo.srcrev:
263 srcrevfile = os.path.join(pkghistdir, "latest_srcrev")
264 with open(srcrevfile, "w") as f:
265 f.write(','.join([rcpinfo.bbfile, rcpinfo.src_uri, rcpinfo.srcrev,
266 rcpinfo.srcrev_autorev]))
267
268 262
269def write_pkghistory(pkginfo, d): 263def write_pkghistory(pkginfo, d):
270 bb.debug(2, "Writing package history for package %s" % pkginfo.name) 264 bb.debug(2, "Writing package history for package %s" % pkginfo.name)
@@ -439,8 +433,9 @@ ROOTFS_POSTPROCESS_COMMAND =+ "buildhistory_get_image_installed ; "
439 433
440IMAGE_POSTPROCESS_COMMAND += " buildhistory_get_imageinfo ; " 434IMAGE_POSTPROCESS_COMMAND += " buildhistory_get_imageinfo ; "
441 435
442POPULATE_SDK_POST_TARGET_COMMAND += "buildhistory_get_sdk_installed target ; " 436# We want these to be the last run so that we get called after complementary package installation
443POPULATE_SDK_POST_HOST_COMMAND += "buildhistory_get_sdk_installed host ; " 437POPULATE_SDK_POST_TARGET_COMMAND_append = "buildhistory_get_sdk_installed target ; "
438POPULATE_SDK_POST_HOST_COMMAND_append = "buildhistory_get_sdk_installed host ; "
444 439
445SDK_POSTPROCESS_COMMAND += "buildhistory_get_sdkinfo ; " 440SDK_POSTPROCESS_COMMAND += "buildhistory_get_sdkinfo ; "
446 441
@@ -527,3 +522,55 @@ python buildhistory_eventhandler() {
527} 522}
528 523
529addhandler buildhistory_eventhandler 524addhandler buildhistory_eventhandler
525
526
527# FIXME this ought to be moved into the fetcher
528def _get_srcrev_values(d):
529 """
530 Return the version strings for the current recipe
531 """
532
533 scms = []
534 fetcher = bb.fetch.Fetch(d.getVar('SRC_URI', True).split(), d)
535 urldata = fetcher.ud
536 for u in urldata:
537 if urldata[u].method.supports_srcrev():
538 scms.append(u)
539
540 autoinc_templ = 'AUTOINC+'
541 dict = {}
542 for scm in scms:
543 ud = urldata[scm]
544 for name in ud.names:
545 rev = ud.method.sortable_revision(scm, ud, d, name)
546 if rev.startswith(autoinc_templ):
547 rev = rev[len(autoinc_templ):]
548 dict[name] = rev
549 return dict
550
551python do_write_srcrev() {
552 pkghistdir = d.getVar('BUILDHISTORY_DIR_PACKAGE', True)
553 srcrevfile = os.path.join(pkghistdir, 'latest_srcrev')
554
555 srcrevs = _get_srcrev_values(d)
556 if srcrevs:
557 if not os.path.exists(pkghistdir):
558 os.makedirs(pkghistdir)
559 with open(srcrevfile, 'w') as f:
560 orig_srcrev = d.getVar('SRCREV', False) or 'INVALID'
561 if orig_srcrev != 'INVALID':
562 f.write('# SRCREV = "%s"\n' % orig_srcrev)
563 if len(srcrevs) > 1:
564 for name, srcrev in srcrevs.items():
565 orig_srcrev = d.getVar('SRCREV_%s' % name, False)
566 if orig_srcrev:
567 f.write('# SRCREV_%s = "%s"\n' % (name, orig_srcrev))
568 f.write('SRCREV_%s = "%s"\n' % (name, srcrev))
569 else:
570 f.write('SRCREV = "%s"\n' % srcrevs.itervalues().next())
571 else:
572 if os.path.exists(srcrevfile):
573 os.remove(srcrevfile)
574}
575
576addtask write_srcrev after do_fetch before do_build
diff --git a/meta/classes/gtk-icon-cache.bbclass b/meta/classes/gtk-icon-cache.bbclass
index a5d642c954..6d205a1473 100644
--- a/meta/classes/gtk-icon-cache.bbclass
+++ b/meta/classes/gtk-icon-cache.bbclass
@@ -1,6 +1,6 @@
1FILES_${PN} += "${datadir}/icons/hicolor" 1FILES_${PN} += "${datadir}/icons/hicolor"
2 2
3DEPENDS += "${@['hicolor-icon-theme', '']['${BPN}' == 'hicolor-icon-theme']} virtual/gtk-update-icon-cache-native" 3DEPENDS += "${@['hicolor-icon-theme', '']['${BPN}' == 'hicolor-icon-theme']} gtk-update-icon-cache-native"
4 4
5# 5#
6# On host, the postinstall MUST return 1 because we do not know if the intercept 6# On host, the postinstall MUST return 1 because we do not know if the intercept
diff --git a/meta/classes/image_types.bbclass b/meta/classes/image_types.bbclass
index f7b8314784..98d31f5bfb 100644
--- a/meta/classes/image_types.bbclass
+++ b/meta/classes/image_types.bbclass
@@ -171,7 +171,7 @@ IMAGE_CMD_btrfs () {
171} 171}
172 172
173IMAGE_CMD_squashfs = "mksquashfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs ${EXTRA_IMAGECMD} -noappend" 173IMAGE_CMD_squashfs = "mksquashfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs ${EXTRA_IMAGECMD} -noappend"
174IMAGE_CMD_squashfs-lzma = "mksquashfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs-lzma ${EXTRA_IMAGECMD} -noappend -comp lzma" 174IMAGE_CMD_squashfs-xz = "mksquashfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs-xz ${EXTRA_IMAGECMD} -noappend -comp xz"
175IMAGE_CMD_tar = "cd ${IMAGE_ROOTFS} && tar -cvf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.tar ." 175IMAGE_CMD_tar = "cd ${IMAGE_ROOTFS} && tar -cvf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.tar ."
176 176
177CPIO_TOUCH_INIT () { 177CPIO_TOUCH_INIT () {
@@ -230,13 +230,13 @@ IMAGE_DEPENDS_ext3 = "genext2fs-native e2fsprogs-native"
230IMAGE_DEPENDS_ext4 = "genext2fs-native e2fsprogs-native" 230IMAGE_DEPENDS_ext4 = "genext2fs-native e2fsprogs-native"
231IMAGE_DEPENDS_btrfs = "btrfs-tools-native" 231IMAGE_DEPENDS_btrfs = "btrfs-tools-native"
232IMAGE_DEPENDS_squashfs = "squashfs-tools-native" 232IMAGE_DEPENDS_squashfs = "squashfs-tools-native"
233IMAGE_DEPENDS_squashfs-lzma = "squashfs-tools-native" 233IMAGE_DEPENDS_squashfs-xz = "squashfs-tools-native"
234IMAGE_DEPENDS_elf = "virtual/kernel mkelfimage-native" 234IMAGE_DEPENDS_elf = "virtual/kernel mkelfimage-native"
235IMAGE_DEPENDS_ubi = "mtd-utils-native" 235IMAGE_DEPENDS_ubi = "mtd-utils-native"
236IMAGE_DEPENDS_ubifs = "mtd-utils-native" 236IMAGE_DEPENDS_ubifs = "mtd-utils-native"
237 237
238# This variable is available to request which values are suitable for IMAGE_FSTYPES 238# This variable is available to request which values are suitable for IMAGE_FSTYPES
239IMAGE_TYPES = "jffs2 sum.jffs2 cramfs ext2 ext2.gz ext2.bz2 ext3 ext3.gz ext2.lzma btrfs live squashfs squashfs-lzma ubi tar tar.gz tar.bz2 tar.xz cpio cpio.gz cpio.xz cpio.lzma vmdk elf" 239IMAGE_TYPES = "jffs2 sum.jffs2 cramfs ext2 ext2.gz ext2.bz2 ext3 ext3.gz ext2.lzma btrfs live squashfs squashfs-xz ubi tar tar.gz tar.bz2 tar.xz cpio cpio.gz cpio.xz cpio.lzma vmdk elf"
240 240
241COMPRESSIONTYPES = "gz bz2 lzma xz" 241COMPRESSIONTYPES = "gz bz2 lzma xz"
242COMPRESS_CMD_lzma = "lzma -k -f -7 ${IMAGE_NAME}.rootfs.${type}" 242COMPRESS_CMD_lzma = "lzma -k -f -7 ${IMAGE_NAME}.rootfs.${type}"
diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass
index 7b8e6075f2..d1b4f10254 100644
--- a/meta/classes/kernel-yocto.bbclass
+++ b/meta/classes/kernel-yocto.bbclass
@@ -46,7 +46,7 @@ def find_kernel_feature_dirs(d):
46 46
47# find the master/machine source branch. In the same way that the fetcher proceses 47# find the master/machine source branch. In the same way that the fetcher proceses
48# git repositories in the SRC_URI we take the first repo found, first branch. 48# git repositories in the SRC_URI we take the first repo found, first branch.
49def get_machine_branch(d): 49def get_machine_branch(d, default):
50 fetch = bb.fetch2.Fetch([], d) 50 fetch = bb.fetch2.Fetch([], d)
51 for url in fetch.urls: 51 for url in fetch.urls:
52 urldata = fetch.ud[url] 52 urldata = fetch.ud[url]
@@ -55,7 +55,7 @@ def get_machine_branch(d):
55 branches = urldata.parm.get("branch").split(',') 55 branches = urldata.parm.get("branch").split(',')
56 return branches[0] 56 return branches[0]
57 57
58 return "master" 58 return default
59 59
60do_patch() { 60do_patch() {
61 cd ${S} 61 cd ${S}
@@ -70,7 +70,7 @@ do_patch() {
70 fi 70 fi
71 fi 71 fi
72 72
73 machine_branch="${@ get_machine_branch(d)}" 73 machine_branch="${@ get_machine_branch(d, "${KBRANCH}" )}"
74 74
75 # if we have a defined/set meta branch we should not be generating 75 # if we have a defined/set meta branch we should not be generating
76 # any meta data. The passed branch has what we need. 76 # any meta data. The passed branch has what we need.
@@ -195,7 +195,8 @@ do_kernel_checkout() {
195 fi 195 fi
196 fi 196 fi
197 197
198 machine_branch="${@ get_machine_branch(d)}" 198 machine_branch="${@ get_machine_branch(d, "${KBRANCH}" )}"
199
199 if [ "${KBRANCH}" != "${machine_branch}" ]; then 200 if [ "${KBRANCH}" != "${machine_branch}" ]; then
200 echo "WARNING: The SRC_URI machine branch and KBRANCH are not the same." 201 echo "WARNING: The SRC_URI machine branch and KBRANCH are not the same."
201 echo " KBRANCH will be adjusted to match, but this typically is a" 202 echo " KBRANCH will be adjusted to match, but this typically is a"
@@ -280,7 +281,7 @@ do_validate_branches() {
280 cd ${S} 281 cd ${S}
281 export KMETA=${KMETA} 282 export KMETA=${KMETA}
282 283
283 machine_branch="${@ get_machine_branch(d)}" 284 machine_branch="${@ get_machine_branch(d, "${KBRANCH}" )}"
284 285
285 set +e 286 set +e
286 # if SRCREV is AUTOREV it shows up as AUTOINC there's nothing to 287 # if SRCREV is AUTOREV it shows up as AUTOINC there's nothing to
diff --git a/meta/classes/package_deb.bbclass b/meta/classes/package_deb.bbclass
index 455919913b..853b5ea8a3 100644
--- a/meta/classes/package_deb.bbclass
+++ b/meta/classes/package_deb.bbclass
@@ -7,7 +7,6 @@ inherit package
7IMAGE_PKGTYPE ?= "deb" 7IMAGE_PKGTYPE ?= "deb"
8 8
9DPKG_ARCH ?= "${TARGET_ARCH}" 9DPKG_ARCH ?= "${TARGET_ARCH}"
10DPKG_ARCH_arm ?= "armel"
11 10
12PKGWRITEDIRDEB = "${WORKDIR}/deploy-debs" 11PKGWRITEDIRDEB = "${WORKDIR}/deploy-debs"
13 12
@@ -406,8 +405,11 @@ python () {
406 d.setVarFlag('do_package_write_deb_setscene', 'fakeroot', "1") 405 d.setVarFlag('do_package_write_deb_setscene', 'fakeroot', "1")
407 406
408 # Map TARGET_ARCH to Debian's ideas about architectures 407 # Map TARGET_ARCH to Debian's ideas about architectures
409 if d.getVar('DPKG_ARCH', True) in ["x86", "i486", "i586", "i686", "pentium"]: 408 darch = d.getVar('DPKG_ARCH', True)
410 d.setVar('DPKG_ARCH', 'i386') 409 if darch in ["x86", "i486", "i586", "i686", "pentium"]:
410 d.setVar('DPKG_ARCH', 'i386')
411 elif darch == "arm":
412 d.setVar('DPKG_ARCH', 'armel')
411} 413}
412 414
413python do_package_write_deb () { 415python do_package_write_deb () {
diff --git a/meta/classes/packageinfo.bbclass b/meta/classes/packageinfo.bbclass
index bd7b249bb4..5e6f5901e0 100644
--- a/meta/classes/packageinfo.bbclass
+++ b/meta/classes/packageinfo.bbclass
@@ -8,6 +8,25 @@ python packageinfo_handler () {
8 package_archs = e.data.getVar('PACKAGE_ARCHS', True) 8 package_archs = e.data.getVar('PACKAGE_ARCHS', True)
9 packaging = e.data.getVar('PACKAGE_CLASSES', True).split()[0].split('_')[1] 9 packaging = e.data.getVar('PACKAGE_CLASSES', True).split()[0].split('_')[1]
10 deploy_dir = e.data.getVar('DEPLOY_DIR', True) + '/' + packaging 10 deploy_dir = e.data.getVar('DEPLOY_DIR', True) + '/' + packaging
11 dirs = os.listdir(tmpdir + '/work/')
12 pkgsplit_dir = tmpdir + '/work/'
13 items = {}
14 passing = ''
15 for directories in dirs:
16 temp_dirs = os.listdir(pkgsplit_dir + directories)
17 for temps1 in temp_dirs:
18 if os.path.exists(pkgsplit_dir + directories + '/' + temps1 + '/' + os.listdir(pkgsplit_dir + directories + '/' + temps1)[0] + '/packages-split'):
19 subs = pkgsplit_dir + directories + '/' + temps1 + '/' + os.listdir(pkgsplit_dir + directories + '/' + temps1)[0] + '/packages-split'
20 for temps in os.listdir(subs):
21 items[temps] = {}
22 for path, dirs, files in os.walk(pkgsplit_dir + directories + '/' + temps1 + '/' + os.listdir(pkgsplit_dir + directories + '/' + temps1)[0] + '/packages-split' + '/' + temps):
23 file_list = []
24 if os.listdir(path) != []:
25 items[temps][path] = []
26 for f in files:
27 file_list.append(f)
28 items[temps][path].append(file_list)
29
11 for arch in package_archs.split(): 30 for arch in package_archs.split():
12 pkgdata_dir = tmpdir + '/pkgdata/' + arch + target_vendor + '-' + target_os + '/runtime/' 31 pkgdata_dir = tmpdir + '/pkgdata/' + arch + target_vendor + '-' + target_os + '/runtime/'
13 if os.path.exists(pkgdata_dir): 32 if os.path.exists(pkgdata_dir):
@@ -19,6 +38,8 @@ python packageinfo_handler () {
19 try: 38 try:
20 sdata = oe.packagedata.read_pkgdatafile(pkgdatafile) 39 sdata = oe.packagedata.read_pkgdatafile(pkgdatafile)
21 sdata['PKG'] = pkgname 40 sdata['PKG'] = pkgname
41 if pkgname in items:
42 sdata['FILES_INFO'] = items[pkgname]
22 pkginfolist.append(sdata) 43 pkginfolist.append(sdata)
23 except Exception as e: 44 except Exception as e:
24 bb.warn("Failed to read pkgdata file %s: %s: %s" % (pkgdatafile, e.__class__, str(e))) 45 bb.warn("Failed to read pkgdata file %s: %s: %s" % (pkgdatafile, e.__class__, str(e)))
diff --git a/meta/classes/rootfs_rpm.bbclass b/meta/classes/rootfs_rpm.bbclass
index 1d3ea641f0..d373dab408 100644
--- a/meta/classes/rootfs_rpm.bbclass
+++ b/meta/classes/rootfs_rpm.bbclass
@@ -3,6 +3,7 @@
3# 3#
4 4
5ROOTFS_PKGMANAGE = "rpm smartpm" 5ROOTFS_PKGMANAGE = "rpm smartpm"
6ROOTFS_PKGMANAGE_BOOTSTRAP = "rpm-postinsts"
6 7
7# Add 50Meg of extra space for Smart 8# Add 50Meg of extra space for Smart
8IMAGE_ROOTFS_EXTRA_SPACE_append = "${@base_contains("PACKAGE_INSTALL", "smartpm", " + 51200", "" ,d)}" 9IMAGE_ROOTFS_EXTRA_SPACE_append = "${@base_contains("PACKAGE_INSTALL", "smartpm", " + 51200", "" ,d)}"
@@ -10,9 +11,6 @@ IMAGE_ROOTFS_EXTRA_SPACE_append = "${@base_contains("PACKAGE_INSTALL", "smartpm"
10# Smart is python based, so be sure python-native is available to us. 11# Smart is python based, so be sure python-native is available to us.
11EXTRANATIVEPATH += "python-native" 12EXTRANATIVEPATH += "python-native"
12 13
13# Postinstalls on device are handled within this class at present
14ROOTFS_PKGMANAGE_BOOTSTRAP = ""
15
16do_rootfs[depends] += "rpm-native:do_populate_sysroot" 14do_rootfs[depends] += "rpm-native:do_populate_sysroot"
17do_rootfs[depends] += "rpmresolve-native:do_populate_sysroot" 15do_rootfs[depends] += "rpmresolve-native:do_populate_sysroot"
18do_rootfs[depends] += "python-smartpm-native:do_populate_sysroot" 16do_rootfs[depends] += "python-smartpm-native:do_populate_sysroot"
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index ce9f243445..67ddc466ce 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -197,7 +197,8 @@ def sstate_install(ss, d):
197 197
198 # Run the actual file install 198 # Run the actual file install
199 for state in ss['dirs']: 199 for state in ss['dirs']:
200 oe.path.copytree(state[1], state[2]) 200 if os.path.exists(state[1]):
201 oe.path.copytree(state[1], state[2])
201 202
202 for postinst in (d.getVar('SSTATEPOSTINSTFUNCS', True) or '').split(): 203 for postinst in (d.getVar('SSTATEPOSTINSTFUNCS', True) or '').split():
203 bb.build.exec_func(postinst, d) 204 bb.build.exec_func(postinst, d)
@@ -448,6 +449,8 @@ def sstate_package(ss, d):
448 bb.mkdirhier(sstatebuild) 449 bb.mkdirhier(sstatebuild)
449 bb.mkdirhier(os.path.dirname(sstatepkg)) 450 bb.mkdirhier(os.path.dirname(sstatepkg))
450 for state in ss['dirs']: 451 for state in ss['dirs']:
452 if not os.path.exists(state[1]):
453 continue
451 srcbase = state[0].rstrip("/").rsplit('/', 1)[0] 454 srcbase = state[0].rstrip("/").rsplit('/', 1)[0]
452 for walkroot, dirs, files in os.walk(state[1]): 455 for walkroot, dirs, files in os.walk(state[1]):
453 for file in files: 456 for file in files:
@@ -547,7 +550,7 @@ sstate_create_package () {
547 tar -cz --file=$TFILE --files-from=/dev/null 550 tar -cz --file=$TFILE --files-from=/dev/null
548 fi 551 fi
549 chmod 0664 $TFILE 552 chmod 0664 $TFILE
550 mv $TFILE ${SSTATE_PKG} 553 mv -f $TFILE ${SSTATE_PKG}
551 554
552 cd ${WORKDIR} 555 cd ${WORKDIR}
553 rm -rf ${SSTATE_BUILDDIR} 556 rm -rf ${SSTATE_BUILDDIR}
@@ -641,7 +644,7 @@ def setscene_depvalid(task, taskdependees, notneeded, d):
641 return True 644 return True
642 return False 645 return False
643 def isPostInstDep(x): 646 def isPostInstDep(x):
644 if x in ["qemu-native", "gdk-pixbuf-native", "gtk+-native", "qemuwrapper-cross", "depmodwrapper-cross", "systemd-systemctl-native", "gtk-update-icon-cache-native"]: 647 if x in ["qemu-native", "gdk-pixbuf-native", "qemuwrapper-cross", "depmodwrapper-cross", "systemd-systemctl-native", "gtk-update-icon-cache-native"]:
645 return True 648 return True
646 return False 649 return False
647 650
diff --git a/meta/classes/systemd.bbclass b/meta/classes/systemd.bbclass
index 564cd727df..69eeb9ef16 100644
--- a/meta/classes/systemd.bbclass
+++ b/meta/classes/systemd.bbclass
@@ -10,11 +10,14 @@ SYSTEMD_AUTO_ENABLE ??= "enable"
10# even if the systemd DISTRO_FEATURE isn't enabled. As such don't make any 10# even if the systemd DISTRO_FEATURE isn't enabled. As such don't make any
11# changes directly but check the DISTRO_FEATURES first. 11# changes directly but check the DISTRO_FEATURES first.
12python __anonymous() { 12python __anonymous() {
13 if "systemd" in d.getVar("DISTRO_FEATURES", True).split(): 13 features = d.getVar("DISTRO_FEATURES", True).split()
14 # If the distro features have systemd but not sysvinit, inhibit update-rcd
15 # from doing any work so that pure-systemd images don't have redundant init
16 # files.
17 if "systemd" in features:
14 d.appendVar("DEPENDS", " systemd-systemctl-native") 18 d.appendVar("DEPENDS", " systemd-systemctl-native")
15 # Set a variable so that update-rcd.bbclass knows we're active and can 19 if "sysvinit" not in features:
16 # disable itself. 20 d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
17 d.setVar("SYSTEMD_BBCLASS_ENABLED", "1")
18} 21}
19 22
20systemd_postinst() { 23systemd_postinst() {
@@ -24,19 +27,23 @@ if [ -n "$D" ]; then
24 OPTS="--root=$D" 27 OPTS="--root=$D"
25fi 28fi
26 29
27systemctl $OPTS ${SYSTEMD_AUTO_ENABLE} ${SYSTEMD_SERVICE} 30if type systemctl >/dev/null 2>/dev/null; then
31 systemctl $OPTS ${SYSTEMD_AUTO_ENABLE} ${SYSTEMD_SERVICE}
28 32
29if [ -z "$D" -a "${SYSTEMD_AUTO_ENABLE}" = "enable" ]; then 33 if [ -z "$D" -a "${SYSTEMD_AUTO_ENABLE}" = "enable" ]; then
30 systemctl start ${SYSTEMD_SERVICE} 34 systemctl start ${SYSTEMD_SERVICE}
35 fi
31fi 36fi
32} 37}
33 38
34systemd_prerm() { 39systemd_prerm() {
35if [ -z "$D" ]; then 40if type systemctl >/dev/null 2>/dev/null; then
36 systemctl stop ${SYSTEMD_SERVICE} 41 if [ -z "$D" ]; then
37fi 42 systemctl stop ${SYSTEMD_SERVICE}
43 fi
38 44
39systemctl disable ${SYSTEMD_SERVICE} 45 systemctl disable ${SYSTEMD_SERVICE}
46fi
40} 47}
41 48
42python systemd_populate_packages() { 49python systemd_populate_packages() {
@@ -56,14 +63,6 @@ python systemd_populate_packages() {
56 bb.error('%s does not appear in package list, please add it' % pkg_systemd) 63 bb.error('%s does not appear in package list, please add it' % pkg_systemd)
57 64
58 65
59 # Add a runtime dependency on systemd to pkg
60 def systemd_add_rdepends(pkg):
61 rdepends = d.getVar('RDEPENDS_' + pkg, True) or ""
62 if not 'systemd' in rdepends.split():
63 rdepends = '%s %s' % (rdepends, 'systemd')
64 d.setVar('RDEPENDS_' + pkg, rdepends)
65
66
67 def systemd_generate_package_scripts(pkg): 66 def systemd_generate_package_scripts(pkg):
68 bb.debug(1, 'adding systemd calls to postinst/postrm for %s' % pkg) 67 bb.debug(1, 'adding systemd calls to postinst/postrm for %s' % pkg)
69 68
@@ -156,7 +155,6 @@ python systemd_populate_packages() {
156 systemd_check_package(pkg) 155 systemd_check_package(pkg)
157 if d.getVar('SYSTEMD_SERVICE_' + pkg, True): 156 if d.getVar('SYSTEMD_SERVICE_' + pkg, True):
158 systemd_generate_package_scripts(pkg) 157 systemd_generate_package_scripts(pkg)
159 systemd_add_rdepends(pkg)
160 systemd_check_services() 158 systemd_check_services()
161} 159}
162 160
diff --git a/meta/classes/update-rc.d.bbclass b/meta/classes/update-rc.d.bbclass
index 65bf022e49..0c2b94a25b 100644
--- a/meta/classes/update-rc.d.bbclass
+++ b/meta/classes/update-rc.d.bbclass
@@ -6,7 +6,7 @@ UPDATERCD_virtclass-cross = ""
6UPDATERCD_class-native = "" 6UPDATERCD_class-native = ""
7UPDATERCD_class-nativesdk = "" 7UPDATERCD_class-nativesdk = ""
8 8
9RDEPENDS_${UPDATERCPN}_append = " ${UPDATERCD}" 9RRECOMMENDS_${UPDATERCPN}_append = " ${UPDATERCD}"
10 10
11INITSCRIPT_PARAMS ?= "defaults" 11INITSCRIPT_PARAMS ?= "defaults"
12 12
@@ -18,7 +18,9 @@ if test "x$D" != "x"; then
18else 18else
19 OPT="-s" 19 OPT="-s"
20fi 20fi
21update-rc.d $OPT ${INITSCRIPT_NAME} ${INITSCRIPT_PARAMS} 21if type update-rc.d >/dev/null 2>/dev/null; then
22 update-rc.d $OPT ${INITSCRIPT_NAME} ${INITSCRIPT_PARAMS}
23fi
22} 24}
23 25
24updatercd_prerm() { 26updatercd_prerm() {
@@ -28,10 +30,13 @@ fi
28} 30}
29 31
30updatercd_postrm() { 32updatercd_postrm() {
31if [ "$D" != "" ]; then 33if test "$D" != ""; then
32 update-rc.d -f -r $D ${INITSCRIPT_NAME} remove 34 OPT="-f -r $D"
33else 35else
34 update-rc.d ${INITSCRIPT_NAME} remove 36 OPT=""
37fi
38if type update-rc.d >/dev/null 2>/dev/null; then
39 update-rc.d $OPT ${INITSCRIPT_NAME} remove
35fi 40fi
36} 41}
37 42
@@ -75,9 +80,10 @@ python populate_packages_updatercd () {
75 postrm += d.getVar('updatercd_postrm', True) 80 postrm += d.getVar('updatercd_postrm', True)
76 d.setVar('pkg_postrm_%s' % pkg, postrm) 81 d.setVar('pkg_postrm_%s' % pkg, postrm)
77 82
78 # If the systemd class has also been inherited, then don't do anything as 83 # Check that this class isn't being inhibited (generally, by
79 # the systemd units will override anything created by update-rc.d. 84 # systemd.bbclass) before doing any work.
80 if not d.getVar("SYSTEMD_BBCLASS_ENABLED", True): 85 if "sysvinit" in d.getVar("DISTRO_FEATURES").split() or \
86 not d.getVar("INHIBIT_UPDATERCD_BBCLASS", True):
81 pkgs = d.getVar('INITSCRIPT_PACKAGES', True) 87 pkgs = d.getVar('INITSCRIPT_PACKAGES', True)
82 if pkgs == None: 88 if pkgs == None:
83 pkgs = d.getVar('UPDATERCPN', True) 89 pkgs = d.getVar('UPDATERCPN', True)
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 01ebad4e1f..cd5d61e347 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -730,7 +730,7 @@ MACHINE_ESSENTIAL_EXTRA_RDEPENDS ?= ""
730MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= "" 730MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= ""
731IMAGE_FEATURES += "${EXTRA_IMAGE_FEATURES}" 731IMAGE_FEATURES += "${EXTRA_IMAGE_FEATURES}"
732 732
733DISTRO_FEATURES_BACKFILL = "pulseaudio ${DISTRO_FEATURES_INITMAN}" 733DISTRO_FEATURES_BACKFILL = "pulseaudio sysvinit"
734MACHINE_FEATURES_BACKFILL = "rtc" 734MACHINE_FEATURES_BACKFILL = "rtc"
735 735
736COMBINED_FEATURES = "\ 736COMBINED_FEATURES = "\
diff --git a/meta/conf/conf-notes.txt b/meta/conf/conf-notes.txt
new file mode 100644
index 0000000000..503cffa44e
--- /dev/null
+++ b/meta/conf/conf-notes.txt
@@ -0,0 +1,9 @@
1Common targets are:
2 core-image-minimal
3 core-image-sato
4 meta-toolchain
5 meta-toolchain-sdk
6 adt-installer
7 meta-ide-support
8
9You can also run generated qemu images with a command like 'runqemu qemux86'
diff --git a/meta/conf/distro/include/default-distrovars.inc b/meta/conf/distro/include/default-distrovars.inc
index f0fec2a011..b0586d6f05 100644
--- a/meta/conf/distro/include/default-distrovars.inc
+++ b/meta/conf/distro/include/default-distrovars.inc
@@ -17,8 +17,7 @@ DISTRO_FEATURES_LIBC_DEFAULT ?= "ipv4 ipv6 libc-backtrace libc-big-macros libc-b
17 libc-posix-wchar-io" 17 libc-posix-wchar-io"
18DISTRO_FEATURES_LIBC ?= "${DISTRO_FEATURES_LIBC_DEFAULT}" 18DISTRO_FEATURES_LIBC ?= "${DISTRO_FEATURES_LIBC_DEFAULT}"
19DISTRO_FEATURES_LIBC_class-nativesdk = "${DISTRO_FEATURES_LIBC_DEFAULT}" 19DISTRO_FEATURES_LIBC_class-nativesdk = "${DISTRO_FEATURES_LIBC_DEFAULT}"
20DISTRO_FEATURES_INITMAN ?= "sysvinit" 20DISTRO_FEATURES ?= "alsa argp bluetooth ext2 irda largefile pcmcia usbgadget usbhost wifi xattr nfs zeroconf pci 3g nfc x11 ${DISTRO_FEATURES_LIBC}"
21DISTRO_FEATURES ?= "alsa argp bluetooth ext2 irda largefile pcmcia usbgadget usbhost wifi xattr nfs zeroconf pci 3g nfc x11 ${DISTRO_FEATURES_LIBC} ${DISTRO_FEATURES_INITMAN}"
22 21
23IMAGE_FEATURES ?= "" 22IMAGE_FEATURES ?= ""
24 23
diff --git a/meta/conf/distro/include/default-providers.inc b/meta/conf/distro/include/default-providers.inc
index 39ce7cc3f1..4b665225ac 100644
--- a/meta/conf/distro/include/default-providers.inc
+++ b/meta/conf/distro/include/default-providers.inc
@@ -12,7 +12,6 @@ PREFERRED_PROVIDER_virtual/update-alternatives ?= "opkg"
12PREFERRED_PROVIDER_virtual/update-alternatives-native ?= "opkg-native" 12PREFERRED_PROVIDER_virtual/update-alternatives-native ?= "opkg-native"
13PREFERRED_PROVIDER_virtual/libx11 ?= "libx11" 13PREFERRED_PROVIDER_virtual/libx11 ?= "libx11"
14PREFERRED_PROVIDER_xf86-video-intel ?= "xf86-video-intel" 14PREFERRED_PROVIDER_xf86-video-intel ?= "xf86-video-intel"
15PREFERRED_PROVIDER_virtual/gtk-update-icon-cache-native ?= "gtk-update-icon-cache-native"
16 15
17# 16#
18# Default virtual runtime providers 17# Default virtual runtime providers
@@ -38,4 +37,4 @@ PREFERRED_PROVIDER_nativesdk-opkg ?= "nativesdk-opkg"
38PREFERRED_PROVIDER_console-tools ?= "kbd" 37PREFERRED_PROVIDER_console-tools ?= "kbd"
39PREFERRED_PROVIDER_gzip-native ?= "pigz-native" 38PREFERRED_PROVIDER_gzip-native ?= "pigz-native"
40PREFERRED_PROVIDER_make ?= "make" 39PREFERRED_PROVIDER_make ?= "make"
41PREFERRED_PROVIDER_udev ?= "${@base_contains('DISTRO_FEATURES','sysvinit','udev','',d)}${@base_contains('DISTRO_FEATURES','systemd','systemd','',d)}" 40PREFERRED_PROVIDER_udev ?= "${@base_contains('DISTRO_FEATURES','systemd','systemd','udev',d)}"
diff --git a/meta/conf/distro/include/default-versions.inc b/meta/conf/distro/include/default-versions.inc
index 53ec2e7caf..0a5b2f45f9 100644
--- a/meta/conf/distro/include/default-versions.inc
+++ b/meta/conf/distro/include/default-versions.inc
@@ -9,3 +9,6 @@ PREFERRED_VERSION_python-native ?= "2.7.3"
9 9
10# Force the older version of liberation-fonts until we fix the fontforge issue 10# Force the older version of liberation-fonts until we fix the fontforge issue
11PREFERRED_VERSION_liberation-fonts ?= "1.04" 11PREFERRED_VERSION_liberation-fonts ?= "1.04"
12
13# Set libpng default version for linuxstdbase
14PREFERRED_VERSION_libpng_linuxstdbase ?= "1.2.50"
diff --git a/meta/conf/distro/include/seperatebuilddir.inc b/meta/conf/distro/include/seperatebuilddir.inc
index 06df5fd73b..a9ca24090b 100644
--- a/meta/conf/distro/include/seperatebuilddir.inc
+++ b/meta/conf/distro/include/seperatebuilddir.inc
@@ -222,7 +222,6 @@ B_pn-gtk+3 = "${SEPB}"
222B_pn-gtk-doc-stub = "${SEPB}" 222B_pn-gtk-doc-stub = "${SEPB}"
223B_pn-gtk-doc-stub-native = "${SEPB}" 223B_pn-gtk-doc-stub-native = "${SEPB}"
224B_pn-gtk-engines = "${SEPB}" 224B_pn-gtk-engines = "${SEPB}"
225B_pn-gtk+-native = "${SEPB}"
226##make[1]: *** No rule to make target `data/gtkrc', needed by `all-am'. Stop 225##make[1]: *** No rule to make target `data/gtkrc', needed by `all-am'. Stop
227##B_pn-gtk-sato-engine = "${SEPB}" 226##B_pn-gtk-sato-engine = "${SEPB}"
228B_pn-guile = "${SEPB}" 227B_pn-guile = "${SEPB}"
diff --git a/meta/conf/machine/qemux86-64.conf b/meta/conf/machine/qemux86-64.conf
index 90007fb26e..ff666af1f7 100644
--- a/meta/conf/machine/qemux86-64.conf
+++ b/meta/conf/machine/qemux86-64.conf
@@ -14,7 +14,7 @@ KERNEL_IMAGETYPE = "bzImage"
14 14
15SERIAL_CONSOLE = "115200 ttyS0" 15SERIAL_CONSOLE = "115200 ttyS0"
16 16
17XSERVER ?= "xserver-xorg \ 17XSERVER = "xserver-xorg \
18 mesa-driver-swrast \ 18 mesa-driver-swrast \
19 xf86-input-vmmouse \ 19 xf86-input-vmmouse \
20 xf86-input-keyboard \ 20 xf86-input-keyboard \
diff --git a/meta/conf/machine/qemux86.conf b/meta/conf/machine/qemux86.conf
index 7a7cbfde8b..5f107bea8b 100644
--- a/meta/conf/machine/qemux86.conf
+++ b/meta/conf/machine/qemux86.conf
@@ -14,7 +14,7 @@ KERNEL_IMAGETYPE = "bzImage"
14 14
15SERIAL_CONSOLE = "115200 ttyS0" 15SERIAL_CONSOLE = "115200 ttyS0"
16 16
17XSERVER ?= "xserver-xorg \ 17XSERVER = "xserver-xorg \
18 mesa-driver-swrast \ 18 mesa-driver-swrast \
19 xf86-input-vmmouse \ 19 xf86-input-vmmouse \
20 xf86-input-keyboard \ 20 xf86-input-keyboard \
diff --git a/meta/lib/oe/lsb.py b/meta/lib/oe/lsb.py
index f4a5ba1c17..fed1204e85 100644
--- a/meta/lib/oe/lsb.py
+++ b/meta/lib/oe/lsb.py
@@ -1,9 +1,9 @@
1def release_dict(): 1def release_dict():
2 """Return the output of lsb_release -a as a dictionary""" 2 """Return the output of lsb_release -ir as a dictionary"""
3 from subprocess import PIPE 3 from subprocess import PIPE
4 4
5 try: 5 try:
6 output, err = bb.process.run(['lsb_release', '-a'], stderr=PIPE) 6 output, err = bb.process.run(['lsb_release', '-ir'], stderr=PIPE)
7 except bb.process.CmdError as exc: 7 except bb.process.CmdError as exc:
8 return None 8 return None
9 9
@@ -26,7 +26,7 @@ def release_dict_file():
26 with open('/etc/lsb-release') as f: 26 with open('/etc/lsb-release') as f:
27 for line in f: 27 for line in f:
28 key, value = line.split("=", 1) 28 key, value = line.split("=", 1)
29 data[key] = value 29 data[key] = value.strip()
30 elif os.path.exists('/etc/redhat-release'): 30 elif os.path.exists('/etc/redhat-release'):
31 data = {} 31 data = {}
32 with open('/etc/redhat-release') as f: 32 with open('/etc/redhat-release') as f:
diff --git a/meta/recipes-bsp/pcmciautils/pcmciautils.inc b/meta/recipes-bsp/pcmciautils/pcmciautils.inc
index 80271d6a9a..065123682a 100644
--- a/meta/recipes-bsp/pcmciautils/pcmciautils.inc
+++ b/meta/recipes-bsp/pcmciautils/pcmciautils.inc
@@ -21,7 +21,7 @@ export udevrulesdir = "${nonarch_base_libdir}/udev/rules.d"
21export UDEV = "1" 21export UDEV = "1"
22LD = "${CC}" 22LD = "${CC}"
23CFLAGS =+ "-I${S}/src" 23CFLAGS =+ "-I${S}/src"
24CFLAGS =+ "-DPCMCIAUTILS_VERSION=\'${PV}\'" 24CFLAGS =+ "-DPCMCIAUTILS_VERSION=\\"${PV}\\""
25 25
26PARALLEL_MAKE = "" 26PARALLEL_MAKE = ""
27EXTRA_OEMAKE = "-e 'STRIP=echo' 'LIB_OBJS=-lc -lsysfs' 'LEX=flex'" 27EXTRA_OEMAKE = "-e 'STRIP=echo' 'LIB_OBJS=-lc -lsysfs' 'LEX=flex'"
diff --git a/meta/recipes-connectivity/connman/connman.inc b/meta/recipes-connectivity/connman/connman.inc
index 96ebc551b8..5d35bc2185 100644
--- a/meta/recipes-connectivity/connman/connman.inc
+++ b/meta/recipes-connectivity/connman/connman.inc
@@ -20,7 +20,7 @@ DEPENDS = "dbus glib-2.0 ppp iptables gnutls \
20 ${@base_contains('DISTRO_FEATURES', '3g','ofono', '', d)} \ 20 ${@base_contains('DISTRO_FEATURES', '3g','ofono', '', d)} \
21 " 21 "
22 22
23INC_PR = "r0" 23INC_PR = "r1"
24 24
25TIST = "--enable-tist" 25TIST = "--enable-tist"
26TIST_powerpc = "" 26TIST_powerpc = ""
@@ -47,6 +47,7 @@ INITSCRIPT_NAME = "connman"
47INITSCRIPT_PARAMS = "start 05 5 2 3 . stop 22 0 1 6 ." 47INITSCRIPT_PARAMS = "start 05 5 2 3 . stop 22 0 1 6 ."
48 48
49SYSTEMD_SERVICE_${PN} = "connman.service" 49SYSTEMD_SERVICE_${PN} = "connman.service"
50SYSTEMD_WIRED_SETUP = "ExecStartPre=-/usr/lib/connman/wired-setup"
50 51
51# IMPORTANT: because xuser is shared with rootless X, please make sure the 52# IMPORTANT: because xuser is shared with rootless X, please make sure the
52# USERADD_PARAM is in sync with the one in xserver-nodm-init.bb 53# USERADD_PARAM is in sync with the one in xserver-nodm-init.bb
@@ -57,6 +58,10 @@ USERADD_PARAM_${PN} = "--create-home \
57 58
58inherit autotools gtk-doc pkgconfig systemd update-rc.d useradd 59inherit autotools gtk-doc pkgconfig systemd update-rc.d useradd
59 60
61do_configure_append () {
62 sed -i "s#ExecStart=#${SYSTEMD_WIRED_SETUP}\nExecStart=#" ${S}/src/connman.service
63}
64
60# This allows *everyone* to access ConnMan over DBus, without any access 65# This allows *everyone* to access ConnMan over DBus, without any access
61# control. Really the at_console flag should work, which would mean that 66# control. Really the at_console flag should work, which would mean that
62# both this and the xuser patch can be dropped. 67# both this and the xuser patch can be dropped.
diff --git a/meta/recipes-connectivity/openssh/openssh_6.1p1.bb b/meta/recipes-connectivity/openssh/openssh_6.1p1.bb
index 32c3b2c8a4..0cffd2316d 100644
--- a/meta/recipes-connectivity/openssh/openssh_6.1p1.bb
+++ b/meta/recipes-connectivity/openssh/openssh_6.1p1.bb
@@ -96,8 +96,7 @@ FILES_${PN}-misc = "${bindir}/ssh* ${libexecdir}/ssh*"
96FILES_${PN}-keygen = "${bindir}/ssh-keygen" 96FILES_${PN}-keygen = "${bindir}/ssh-keygen"
97 97
98RDEPENDS_${PN} += "${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-keygen" 98RDEPENDS_${PN} += "${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-keygen"
99DEPENDS_${PN}-sshd += "update-rc.d" 99RDEPENDS_${PN}-sshd += "${PN}-keygen"
100RDEPENDS_${PN}-sshd += "update-rc.d ${PN}-keygen"
101 100
102CONFFILES_${PN}-sshd = "${sysconfdir}/ssh/sshd_config" 101CONFFILES_${PN}-sshd = "${sysconfdir}/ssh/sshd_config"
103CONFFILES_${PN}-ssh = "${sysconfdir}/ssh/ssh_config" 102CONFFILES_${PN}-ssh = "${sysconfdir}/ssh/ssh_config"
diff --git a/meta/recipes-core/base-files/base-files/fstab.systemd b/meta/recipes-core/base-files/base-files/fstab.systemd
deleted file mode 100644
index cb48a0de4a..0000000000
--- a/meta/recipes-core/base-files/base-files/fstab.systemd
+++ /dev/null
@@ -1,9 +0,0 @@
1# stock fstab - you probably want to override this with a machine specific one
2
3rootfs / auto defaults 1 1
4tmpfs /var/volatile tmpfs defaults 0 0
5tmpfs /media/ram tmpfs defaults 0 0
6
7# uncomment this if your device has a SD/MMC/Transflash slot
8#/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0
9
diff --git a/meta/recipes-core/base-files/base-files_3.0.14.bb b/meta/recipes-core/base-files/base-files_3.0.14.bb
index e7a9d82133..a56450dc3f 100644
--- a/meta/recipes-core/base-files/base-files_3.0.14.bb
+++ b/meta/recipes-core/base-files/base-files_3.0.14.bb
@@ -18,7 +18,6 @@ SRC_URI = "file://rotation \
18 file://profile \ 18 file://profile \
19 file://shells \ 19 file://shells \
20 file://fstab \ 20 file://fstab \
21 file://fstab.systemd \
22 file://filesystems \ 21 file://filesystems \
23 file://issue.net \ 22 file://issue.net \
24 file://issue \ 23 file://issue \
@@ -92,11 +91,7 @@ do_install () {
92 install -m 0644 ${WORKDIR}/rotation ${D}${sysconfdir}/rotation 91 install -m 0644 ${WORKDIR}/rotation ${D}${sysconfdir}/rotation
93 fi 92 fi
94 93
95 if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then 94 install -m 0644 ${WORKDIR}/fstab ${D}${sysconfdir}/fstab
96 install -m 0644 ${WORKDIR}/fstab.systemd ${D}${sysconfdir}/fstab
97 else
98 install -m 0644 ${WORKDIR}/fstab ${D}${sysconfdir}/fstab
99 fi
100 install -m 0644 ${WORKDIR}/filesystems ${D}${sysconfdir}/filesystems 95 install -m 0644 ${WORKDIR}/filesystems ${D}${sysconfdir}/filesystems
101 install -m 0644 ${WORKDIR}/usbd ${D}${sysconfdir}/default/usbd 96 install -m 0644 ${WORKDIR}/usbd ${D}${sysconfdir}/default/usbd
102 sed -i "s#ROOTHOME#${ROOT_HOME}#" ${WORKDIR}/profile 97 sed -i "s#ROOTHOME#${ROOT_HOME}#" ${WORKDIR}/profile
diff --git a/meta/recipes-core/busybox/busybox-1.20.2/strict-atime.patch b/meta/recipes-core/busybox/busybox-1.20.2/strict-atime.patch
new file mode 100644
index 0000000000..8696427ee8
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox-1.20.2/strict-atime.patch
@@ -0,0 +1,49 @@
1Add support for the "strictatime" mount option.
2
3Upstream-Status: Backport [9ad8979ff15e1b894ee1f4bb6a2535a1a2c20d65]
4Signed-off-by: Ross Burton <ross.burton@intel.com>
5
6Index: busybox-1.20.2/util-linux/mount.c
7===================================================================
8--- busybox-1.20.2.orig/util-linux/mount.c 2012-07-02 15:08:25.000000000 +0100
9+++ busybox-1.20.2/util-linux/mount.c 2013-03-22 15:37:31.340277463 +0000
10@@ -113,6 +113,12 @@
11 #ifndef MS_RELATIME
12 # define MS_RELATIME (1 << 21)
13 #endif
14+#ifndef MS_STRICTATIME
15+# define MS_STRICTATIME (1 << 24)
16+#endif
17+
18+/* Any ~MS_FOO value has this bit set: */
19+#define BB_MS_INVERTED_VALUE (1u << 31)
20
21 #include "libbb.h"
22 #if ENABLE_FEATURE_MOUNT_LABEL
23@@ -239,6 +245,7 @@
24 /* "nomand" */ ~MS_MANDLOCK,
25 /* "relatime" */ MS_RELATIME,
26 /* "norelatime" */ ~MS_RELATIME,
27+ /* "strictatime" */ MS_STRICTATIME,
28 /* "loud" */ ~MS_SILENT,
29 /* "rbind" */ MS_BIND|MS_RECURSIVE,
30
31@@ -295,6 +302,7 @@
32 "nomand\0"
33 "relatime\0"
34 "norelatime\0"
35+ "strictatime\0"
36 "loud\0"
37 "rbind\0"
38
39@@ -466,8 +474,8 @@
40 // Find this option in mount_options
41 for (i = 0; i < ARRAY_SIZE(mount_options); i++) {
42 if (strcasecmp(option_str, options) == 0) {
43- long fl = mount_options[i];
44- if (fl < 0)
45+ unsigned long fl = mount_options[i];
46+ if (fl & BB_MS_INVERTED_VALUE)
47 flags &= fl;
48 else
49 flags |= fl;
diff --git a/meta/recipes-core/busybox/busybox.inc b/meta/recipes-core/busybox/busybox.inc
index fc6ca917cd..655cb3cd9b 100644
--- a/meta/recipes-core/busybox/busybox.inc
+++ b/meta/recipes-core/busybox/busybox.inc
@@ -18,7 +18,7 @@ export EXTRA_LDFLAGS = "${LDFLAGS}"
18PACKAGES =+ "${PN}-httpd ${PN}-udhcpd ${PN}-udhcpc ${PN}-syslog ${PN}-mdev ${PN}-hwclock" 18PACKAGES =+ "${PN}-httpd ${PN}-udhcpd ${PN}-udhcpc ${PN}-syslog ${PN}-mdev ${PN}-hwclock"
19 19
20FILES_${PN}-httpd = "${sysconfdir}/init.d/busybox-httpd /srv/www" 20FILES_${PN}-httpd = "${sysconfdir}/init.d/busybox-httpd /srv/www"
21FILES_${PN}-syslog = "${sysconfdir}/init.d/syslog* ${sysconfdir}/syslog-startup.conf*" 21FILES_${PN}-syslog = "${sysconfdir}/init.d/syslog* ${sysconfdir}/syslog-startup.conf* ${systemd_unitdir}/system/syslog.service"
22FILES_${PN}-mdev = "${sysconfdir}/init.d/mdev ${sysconfdir}/mdev.conf" 22FILES_${PN}-mdev = "${sysconfdir}/init.d/mdev ${sysconfdir}/mdev.conf"
23FILES_${PN}-udhcpd = "${sysconfdir}/init.d/busybox-udhcpd" 23FILES_${PN}-udhcpd = "${sysconfdir}/init.d/busybox-udhcpd"
24FILES_${PN}-udhcpc = "${sysconfdir}/udhcpc.d ${datadir}/udhcpc" 24FILES_${PN}-udhcpc = "${sysconfdir}/udhcpc.d ${datadir}/udhcpc"
@@ -27,17 +27,21 @@ FILES_${PN}-hwclock = "${sysconfdir}/init.d/hwclock.sh"
27INITSCRIPT_PACKAGES = "${PN}-httpd ${PN}-syslog ${PN}-udhcpd ${PN}-mdev ${PN}-hwclock" 27INITSCRIPT_PACKAGES = "${PN}-httpd ${PN}-syslog ${PN}-udhcpd ${PN}-mdev ${PN}-hwclock"
28 28
29INITSCRIPT_NAME_${PN}-httpd = "busybox-httpd" 29INITSCRIPT_NAME_${PN}-httpd = "busybox-httpd"
30INITSCRIPT_NAME_${PN}-syslog = "syslog"
31INITSCRIPT_NAME_${PN}-mdev = "mdev"
32INITSCRIPT_NAME_${PN}-hwclock = "hwclock.sh" 30INITSCRIPT_NAME_${PN}-hwclock = "hwclock.sh"
31INITSCRIPT_NAME_${PN}-mdev = "mdev"
33INITSCRIPT_PARAMS_${PN}-mdev = "start 06 S ." 32INITSCRIPT_PARAMS_${PN}-mdev = "start 06 S ."
33INITSCRIPT_NAME_${PN}-syslog = "syslog"
34INITSCRIPT_NAME_${PN}-udhcpd = "busybox-udhcpd" 34INITSCRIPT_NAME_${PN}-udhcpd = "busybox-udhcpd"
35
36SYSTEMD_PACKAGES = "${PN}-syslog"
37SYSTEMD_SERVICE_${PN}-syslog = "${PN}-syslog.service"
38
35CONFFILES_${PN}-syslog = "${sysconfdir}/syslog-startup.conf.${BPN}" 39CONFFILES_${PN}-syslog = "${sysconfdir}/syslog-startup.conf.${BPN}"
36CONFFILES_${PN}-mdev = "${sysconfdir}/mdev.conf" 40CONFFILES_${PN}-mdev = "${sysconfdir}/mdev.conf"
37 41
38RRECOMMENDS_${PN} = "${PN}-syslog ${PN}-udhcpc" 42RRECOMMENDS_${PN} = "${PN}-syslog ${PN}-udhcpc"
39 43
40inherit cml1 update-rc.d 44inherit cml1 systemd update-rc.d
41 45
42# internal helper 46# internal helper
43def busybox_cfg(feature, features, tokens, cnf, rem): 47def busybox_cfg(feature, features, tokens, cnf, rem):
@@ -213,6 +217,16 @@ do_install () {
213 fi 217 fi
214 fi 218 fi
215 install -m 0644 ${S}/busybox.links ${D}${sysconfdir} 219 install -m 0644 ${S}/busybox.links ${D}${sysconfdir}
220
221 if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then
222 install -d ${D}${systemd_unitdir}/system
223 sed 's,@base_sbindir@,${base_sbindir},g' < ${WORKDIR}/busybox-syslog.service.in \
224 > ${D}${systemd_unitdir}/system/busybox-syslog.service
225 sed 's,@base_sbindir@,${base_sbindir},g' < ${WORKDIR}/busybox-klogd.service.in \
226 > ${D}${systemd_unitdir}/system/busybox-klogd.service
227
228 ln -sf /dev/null ${D}${systemd_unitdir}/system/syslog.service
229 fi
216} 230}
217 231
218inherit update-alternatives 232inherit update-alternatives
diff --git a/meta/recipes-core/busybox/busybox_1.20.2.bb b/meta/recipes-core/busybox/busybox_1.20.2.bb
index 783261e4ea..c09a492dbd 100644
--- a/meta/recipes-core/busybox/busybox_1.20.2.bb
+++ b/meta/recipes-core/busybox/busybox_1.20.2.bb
@@ -28,7 +28,10 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
28 file://fix-for-spurious-testsuite-failure.patch \ 28 file://fix-for-spurious-testsuite-failure.patch \
29 file://busybox-1.20.2-kernel_ver.patch \ 29 file://busybox-1.20.2-kernel_ver.patch \
30 file://stat-usr-bin.patch \ 30 file://stat-usr-bin.patch \
31 file://testsuite-du-du-k-works-fix-false-positive.patch" 31 file://busybox-syslog.service.in \
32 file://busybox-klogd.service.in \
33 file://testsuite-du-du-k-works-fix-false-positive.patch \
34 file://strict-atime.patch"
32 35
33SRC_URI[tarball.md5sum] = "e025414bc6cd79579cc7a32a45d3ae1c" 36SRC_URI[tarball.md5sum] = "e025414bc6cd79579cc7a32a45d3ae1c"
34SRC_URI[tarball.sha256sum] = "eb13ff01dae5618ead2ef6f92ba879e9e0390f9583bd545d8789d27cf39b6882" 37SRC_URI[tarball.sha256sum] = "eb13ff01dae5618ead2ef6f92ba879e9e0390f9583bd545d8789d27cf39b6882"
diff --git a/meta/recipes-core/busybox/files/busybox-klogd.service.in b/meta/recipes-core/busybox/files/busybox-klogd.service.in
new file mode 100644
index 0000000000..d7c77558f3
--- /dev/null
+++ b/meta/recipes-core/busybox/files/busybox-klogd.service.in
@@ -0,0 +1,8 @@
1[Unit]
2Description=Kernel Logging Service
3
4[Service]
5ExecStart=@base_sbindir@/klogd -n
6
7[Install]
8WantedBy=multi-user.target
diff --git a/meta/recipes-core/busybox/files/busybox-syslog.service.in b/meta/recipes-core/busybox/files/busybox-syslog.service.in
new file mode 100644
index 0000000000..2e04321385
--- /dev/null
+++ b/meta/recipes-core/busybox/files/busybox-syslog.service.in
@@ -0,0 +1,13 @@
1[Unit]
2Description=System Logging Service
3Wants=busybox-klogd.service
4
5[Service]
6EnvironmentFile=-/etc/default/busybox-syslog
7ExecStart=@base_sbindir@/syslogd -n $OPTIONS
8Sockets=syslog.socket
9
10[Install]
11WantedBy=multi-user.target
12Also=busybox-klogd.service
13Alias=syslog.service
diff --git a/meta/recipes-core/coreutils/coreutils-8.14/remove-gets.patch b/meta/recipes-core/coreutils/coreutils-8.14/remove-gets.patch
deleted file mode 100644
index 4f61c92b15..0000000000
--- a/meta/recipes-core/coreutils/coreutils-8.14/remove-gets.patch
+++ /dev/null
@@ -1,23 +0,0 @@
1use gets iff its defined. eglibc 2.16 removed gets
2
3Signed-off-by: Khem Raj <raj.khem@gmail.com>
4Upstream-Status: Pending
5
6Index: coreutils-8.14/lib/stdio.in.h
7===================================================================
8--- coreutils-8.14.orig/lib/stdio.in.h 2011-09-24 04:20:48.000000000 -0700
9+++ coreutils-8.14/lib/stdio.in.h 2012-07-03 10:36:19.886296576 -0700
10@@ -713,11 +713,13 @@
11 _GL_CXXALIAS_SYS (gets, char *, (char *s));
12 # undef gets
13 # endif
14+# if defined gets
15 _GL_CXXALIASWARN (gets);
16 /* It is very rare that the developer ever has full control of stdin,
17 so any use of gets warrants an unconditional warning. Assume it is
18 always declared, since it is required by C89. */
19 _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
20+# endif
21 #endif
22
23
diff --git a/meta/recipes-core/coreutils/coreutils-8.14/coreutils-build-with-acl.patch b/meta/recipes-core/coreutils/coreutils-8.21/coreutils-build-with-acl.patch
index 8273d78eb3..8273d78eb3 100644
--- a/meta/recipes-core/coreutils/coreutils-8.14/coreutils-build-with-acl.patch
+++ b/meta/recipes-core/coreutils/coreutils-8.21/coreutils-build-with-acl.patch
diff --git a/meta/recipes-core/coreutils/coreutils-8.21/dummy_help2man.patch b/meta/recipes-core/coreutils/coreutils-8.21/dummy_help2man.patch
new file mode 100644
index 0000000000..4757f52aa0
--- /dev/null
+++ b/meta/recipes-core/coreutils/coreutils-8.21/dummy_help2man.patch
@@ -0,0 +1,22 @@
1Upstream-Status: Inappropriate [disable feature]
2
3Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
4diff -Nurd coreutils-8.21/man/local.mk coreutils-8.21/man/local.mk
5--- coreutils-8.21/man/local.mk 2013-02-05 16:01:21.000000000 +0200
6+++ coreutils-8.21/man/local.mk 2013-03-23 09:12:53.360470192 +0200
7@@ -19,11 +19,11 @@
8 EXTRA_DIST += man/help2man man/dummy-man
9
10 ## Graceful degradation for systems lacking perl.
11-if HAVE_PERL
12-run_help2man = $(PERL) -- $(srcdir)/man/help2man
13-else
14+#if HAVE_PERL
15+#run_help2man = $(PERL) -- $(srcdir)/man/help2man
16+#else
17 run_help2man = $(SHELL) $(srcdir)/man/dummy-man
18-endif
19+#endif
20
21 man1_MANS = @man1_MANS@
22 EXTRA_DIST += $(man1_MANS:.1=.x)
diff --git a/meta/recipes-core/coreutils/coreutils-8.14/remove-usr-local-lib-from-m4.patch b/meta/recipes-core/coreutils/coreutils-8.21/remove-usr-local-lib-from-m4.patch
index 2ef8a548ac..2ef8a548ac 100644
--- a/meta/recipes-core/coreutils/coreutils-8.14/remove-usr-local-lib-from-m4.patch
+++ b/meta/recipes-core/coreutils/coreutils-8.21/remove-usr-local-lib-from-m4.patch
diff --git a/meta/recipes-core/coreutils/coreutils_8.14.bb b/meta/recipes-core/coreutils/coreutils_8.21.bb
index b82bbe4145..88561c773a 100644
--- a/meta/recipes-core/coreutils/coreutils_8.14.bb
+++ b/meta/recipes-core/coreutils/coreutils_8.21.bb
@@ -6,8 +6,8 @@ HOMEPAGE = "http://www.gnu.org/software/coreutils/"
6BUGTRACKER = "http://debbugs.gnu.org/coreutils" 6BUGTRACKER = "http://debbugs.gnu.org/coreutils"
7LICENSE = "GPLv3+" 7LICENSE = "GPLv3+"
8LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504\ 8LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504\
9 file://src/ls.c;beginline=5;endline=16;md5=2e9acd8818fe6db4c2981d20ca632553" 9 file://src/ls.c;beginline=5;endline=16;md5=38b79785ca88537b75871782a2a3c6b8"
10PR = "r5" 10PR = "r0"
11DEPENDS = "gmp libcap" 11DEPENDS = "gmp libcap"
12DEPENDS_class-native = "" 12DEPENDS_class-native = ""
13 13
@@ -15,11 +15,12 @@ inherit autotools gettext
15 15
16SRC_URI = "${GNU_MIRROR}/coreutils/${BP}.tar.xz \ 16SRC_URI = "${GNU_MIRROR}/coreutils/${BP}.tar.xz \
17 file://remove-usr-local-lib-from-m4.patch \ 17 file://remove-usr-local-lib-from-m4.patch \
18 file://remove-gets.patch \
19 file://coreutils-build-with-acl.patch \ 18 file://coreutils-build-with-acl.patch \
19 file://dummy_help2man.patch \
20 " 20 "
21SRC_URI[md5sum] = "bcb135ce553493a45aba01b39eb3920a" 21
22SRC_URI[sha256sum] = "0d120817c19292edb19e92ae6b8eac9020e03d51e0af9cb116cf82b65d18b02d" 22SRC_URI[md5sum] = "065ba41828644eca5dd8163446de5d64"
23SRC_URI[sha256sum] = "adaa44bdab3fa5eb352e80d8a31fdbf957b78653d0c2cd30d63e161444288e18"
23 24
24EXTRA_OECONF = "--disable-acl" 25EXTRA_OECONF = "--disable-acl"
25EXTRA_OECONF_class-native = "--disable-acl --without-gmp" 26EXTRA_OECONF_class-native = "--disable-acl --without-gmp"
@@ -38,6 +39,11 @@ base_bindir_progs = "cat chgrp chmod chown cp date dd echo false kill ln ls mkdi
38 39
39sbindir_progs= "chroot" 40sbindir_progs= "chroot"
40 41
42# Deal with a separate builddir failure if src doesn't exist when creating version.c/version.h
43do_compile_prepend () {
44 mkdir -p ${B}/src
45}
46
41do_install_append() { 47do_install_append() {
42 for i in df mktemp base64; do mv ${D}${bindir}/$i ${D}${bindir}/$i.${BPN}; done 48 for i in df mktemp base64; do mv ${D}${bindir}/$i ${D}${bindir}/$i.${BPN}; done
43 49
diff --git a/meta/recipes-core/dbus/dbus.inc b/meta/recipes-core/dbus/dbus.inc
index affffbc187..bfd11672cf 100644
--- a/meta/recipes-core/dbus/dbus.inc
+++ b/meta/recipes-core/dbus/dbus.inc
@@ -9,7 +9,7 @@ X11DEPENDS = "virtual/libx11 libsm"
9DEPENDS = "expat virtual/libintl ${@base_contains('DISTRO_FEATURES', 'x11', '${X11DEPENDS}', '', d)}" 9DEPENDS = "expat virtual/libintl ${@base_contains('DISTRO_FEATURES', 'x11', '${X11DEPENDS}', '', d)}"
10DEPENDS_class-native = "expat-native virtual/libintl-native" 10DEPENDS_class-native = "expat-native virtual/libintl-native"
11DEPENDS_class-nativesdk = "nativesdk-expat virtual/nativesdk-libintl" 11DEPENDS_class-nativesdk = "nativesdk-expat virtual/nativesdk-libintl"
12RDEPENDS_dbus = "${@base_contains('DISTRO_FEATURES', 'ptest', 'dbus-ptest', '', d)}" 12RDEPENDS_dbus = "${@base_contains('DISTRO_FEATURES', 'ptest', 'dbus-ptest-ptest', '', d)}"
13RDEPENDS_class-native = "" 13RDEPENDS_class-native = ""
14 14
15INC_PR = "r6" 15INC_PR = "r6"
@@ -68,8 +68,8 @@ pkg_postinst_dbus() {
68EXTRA_OECONF_X = "${@base_contains('DISTRO_FEATURES', 'x11', '--with-x', '--without-x', d)}" 68EXTRA_OECONF_X = "${@base_contains('DISTRO_FEATURES', 'x11', '--with-x', '--without-x', d)}"
69EXTRA_OECONF_X_class-native = "--without-x --disable-x11-autolaunch" 69EXTRA_OECONF_X_class-native = "--without-x --disable-x11-autolaunch"
70# TODO: would like to --enable-systemd but that's a circular build-dependency 70# TODO: would like to --enable-systemd but that's a circular build-dependency
71# between systemd <->dbus 71# between systemd<->dbus
72EXTRA_OECONF_SYSTEMD = "${@base_contains('DISTRO_FEATURES', 'systemd', '--with-systemdsystemunitdir=${systemd_unitdir}/system/', '', d)}" 72EXTRA_OECONF_SYSTEMD = "${@base_contains('DISTRO_FEATURES', 'systemd', '--with-systemdsystemunitdir=${systemd_unitdir}/system/', '--without-systemdsystemunitdir', d)}"
73 73
74EXTRA_OECONF = "--disable-tests \ 74EXTRA_OECONF = "--disable-tests \
75 --disable-checks \ 75 --disable-checks \
diff --git a/meta/recipes-core/glib-networking/glib-networking_2.28.7.bb b/meta/recipes-core/glib-networking/glib-networking_2.28.7.bb
index 8c2404c1d3..17f0102f5a 100644
--- a/meta/recipes-core/glib-networking/glib-networking_2.28.7.bb
+++ b/meta/recipes-core/glib-networking/glib-networking_2.28.7.bb
@@ -15,7 +15,7 @@ SRC_URI = "${GNOME_MIRROR}/${BPN}/2.28/${BPN}-${PV}.tar.bz2"
15SRC_URI[md5sum] = "c10e51571d03c10111a37bcd21fbf777" 15SRC_URI[md5sum] = "c10e51571d03c10111a37bcd21fbf777"
16SRC_URI[sha256sum] = "98bedfbd530c4b1b53c91025fe82290bafd289d249e4eb549c3b90d23a76021c" 16SRC_URI[sha256sum] = "98bedfbd530c4b1b53c91025fe82290bafd289d249e4eb549c3b90d23a76021c"
17 17
18EXTRA_OECONF = "--without-ca-certificates" 18EXTRA_OECONF = "--without-ca-certificates --without-gnome-proxy --without-libproxy"
19 19
20inherit autotools pkgconfig 20inherit autotools pkgconfig
21 21
diff --git a/meta/recipes-core/images/core-image-minimal-initramfs.bb b/meta/recipes-core/images/core-image-minimal-initramfs.bb
index 7f6826ceb1..6de24b3211 100644
--- a/meta/recipes-core/images/core-image-minimal-initramfs.bb
+++ b/meta/recipes-core/images/core-image-minimal-initramfs.bb
@@ -17,3 +17,5 @@ IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}"
17inherit core-image 17inherit core-image
18 18
19IMAGE_ROOTFS_SIZE = "8192" 19IMAGE_ROOTFS_SIZE = "8192"
20
21BAD_RECOMMENDATIONS += "busybox-syslog"
diff --git a/meta/recipes-core/initrdscripts/files/init-install.sh b/meta/recipes-core/initrdscripts/files/init-install.sh
index 2c4486a149..d2a0db3183 100644
--- a/meta/recipes-core/initrdscripts/files/init-install.sh
+++ b/meta/recipes-core/initrdscripts/files/init-install.sh
@@ -57,6 +57,7 @@ echo "Installing image on /dev/${device}"
57# 57#
58# The udev automounter can cause pain here, kill it 58# The udev automounter can cause pain here, kill it
59# 59#
60rm -f /etc/udev/rules.d/automount.rules
60rm -f /etc/udev/scripts/mount* 61rm -f /etc/udev/scripts/mount*
61 62
62# 63#
diff --git a/meta/recipes-core/initscripts/initscripts-1.0/volatiles b/meta/recipes-core/initscripts/initscripts-1.0/volatiles
index f0c796c406..270f128a12 100644
--- a/meta/recipes-core/initscripts/initscripts-1.0/volatiles
+++ b/meta/recipes-core/initscripts/initscripts-1.0/volatiles
@@ -35,4 +35,3 @@ f root root 0664 /var/log/wtmp none
35f root root 0664 /var/run/utmp none 35f root root 0664 /var/run/utmp none
36l root root 0644 /etc/resolv.conf /var/run/resolv.conf 36l root root 0644 /etc/resolv.conf /var/run/resolv.conf
37f root root 0644 /var/run/resolv.conf none 37f root root 0644 /var/run/resolv.conf none
38l root root 0755 /run /var/run
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-boot.bb b/meta/recipes-core/packagegroups/packagegroup-core-boot.bb
index b9183a8709..9306a34840 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-boot.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-boot.bb
@@ -26,8 +26,8 @@ RCONFLICTS_${PN} = "task-core-boot"
26# Distro can override the following VIRTUAL-RUNTIME providers: 26# Distro can override the following VIRTUAL-RUNTIME providers:
27VIRTUAL-RUNTIME_dev_manager ?= "udev" 27VIRTUAL-RUNTIME_dev_manager ?= "udev"
28VIRTUAL-RUNTIME_login_manager ?= "tinylogin" 28VIRTUAL-RUNTIME_login_manager ?= "tinylogin"
29VIRTUAL-RUNTIME_init_manager ?= "${DISTRO_FEATURES_INITMAN}" 29VIRTUAL-RUNTIME_init_manager ?= "sysvinit"
30VIRTUAL-RUNTIME_initscripts ?= "${@base_contains('DISTRO_FEATURES', 'sysvinit', 'initscripts', '',d)}" 30VIRTUAL-RUNTIME_initscripts ?= "initscripts"
31VIRTUAL-RUNTIME_keymaps ?= "keymaps" 31VIRTUAL-RUNTIME_keymaps ?= "keymaps"
32 32
33RDEPENDS_${PN} = "\ 33RDEPENDS_${PN} = "\
@@ -42,7 +42,6 @@ RDEPENDS_${PN} = "\
42 ${VIRTUAL-RUNTIME_login_manager} \ 42 ${VIRTUAL-RUNTIME_login_manager} \
43 ${VIRTUAL-RUNTIME_init_manager} \ 43 ${VIRTUAL-RUNTIME_init_manager} \
44 ${VIRTUAL-RUNTIME_initscripts} \ 44 ${VIRTUAL-RUNTIME_initscripts} \
45 ${@base_contains('DISTRO_FEATURES', 'systemd', 'systemd-compat-units', '',d)} \
46 ${VIRTUAL-RUNTIME_dev_manager} \ 45 ${VIRTUAL-RUNTIME_dev_manager} \
47 ${VIRTUAL-RUNTIME_update-alternatives} \ 46 ${VIRTUAL-RUNTIME_update-alternatives} \
48 ${MACHINE_ESSENTIAL_EXTRA_RDEPENDS}" 47 ${MACHINE_ESSENTIAL_EXTRA_RDEPENDS}"
diff --git a/meta/recipes-core/psplash/psplash_git.bb b/meta/recipes-core/psplash/psplash_git.bb
index 5413b24057..2d0cae371d 100644
--- a/meta/recipes-core/psplash/psplash_git.bb
+++ b/meta/recipes-core/psplash/psplash_git.bb
@@ -74,12 +74,13 @@ python do_compile () {
74 import shutil, commands 74 import shutil, commands
75 75
76 # Build a separate executable for each splash image 76 # Build a separate executable for each splash image
77 convertscript = "%s/make-image-header.sh" % d.getVar('S', True)
77 destfile = "%s/psplash-poky-img.h" % d.getVar('S', True) 78 destfile = "%s/psplash-poky-img.h" % d.getVar('S', True)
78 localfiles = d.getVar('SPLASH_LOCALPATHS', True).split() 79 localfiles = d.getVar('SPLASH_LOCALPATHS', True).split()
79 outputfiles = d.getVar('SPLASH_INSTALL', True).split() 80 outputfiles = d.getVar('SPLASH_INSTALL', True).split()
80 for localfile, outputfile in zip(localfiles, outputfiles): 81 for localfile, outputfile in zip(localfiles, outputfiles):
81 if localfile.endswith(".png"): 82 if localfile.endswith(".png"):
82 outp = commands.getstatusoutput('./make-image-header.sh %s POKY' % localfile) 83 outp = commands.getstatusoutput('%s %s POKY' % (convertscript, localfile))
83 print(outp[1]) 84 print(outp[1])
84 fbase = os.path.splitext(os.path.basename(localfile))[0] 85 fbase = os.path.splitext(os.path.basename(localfile))[0]
85 shutil.copyfile("%s-img.h" % fbase, destfile) 86 shutil.copyfile("%s-img.h" % fbase, destfile)
diff --git a/meta/recipes-core/systemd/systemd-compat-units.bb b/meta/recipes-core/systemd/systemd-compat-units.bb
index 19a1ea1889..9b4a8a4abc 100644
--- a/meta/recipes-core/systemd/systemd-compat-units.bb
+++ b/meta/recipes-core/systemd/systemd-compat-units.bb
@@ -34,6 +34,7 @@ SYSTEMD_DISABLED_SYSV_SERVICES = " \
34 hwclock \ 34 hwclock \
35 networking \ 35 networking \
36 syslog.busybox \ 36 syslog.busybox \
37 dbus-1 \
37" 38"
38 39
39pkg_postinst_${PN} () { 40pkg_postinst_${PN} () {
diff --git a/meta/recipes-core/systemd/systemd/0001-systemd-analyze-rewrite-in-C.patch b/meta/recipes-core/systemd/systemd/0001-systemd-analyze-rewrite-in-C.patch
deleted file mode 100644
index b278390fef..0000000000
--- a/meta/recipes-core/systemd/systemd/0001-systemd-analyze-rewrite-in-C.patch
+++ /dev/null
@@ -1,1087 +0,0 @@
1Upstream-Status: Pending
2
3From 523f304facdf3dbc09dbcdcff500ddce60274987 Mon Sep 17 00:00:00 2001
4From: Peeters Simon <peeters.simon@gmail.com>
5Date: Thu, 17 Jan 2013 14:34:25 -0800
6Subject: [PATCH] systemd-analyze: rewrite in C.
7
8Written by Peeters Simon <peeters.simon@gmail.com>. Makefile stuff
9and cleaned up a bit by Auke Kok <auke-jan.h.kok@intel.com>.
10---
11 Makefile.am | 21 +-
12 src/analyze/systemd-analyze.c | 684 +++++++++++++++++++++++++++++++++++++++++
13 src/analyze/systemd-analyze.in | 328 --------------------
14 3 files changed, 694 insertions(+), 339 deletions(-)
15 create mode 100644 src/analyze/systemd-analyze.c
16 delete mode 100755 src/analyze/systemd-analyze.in
17
18Index: systemd-197/Makefile.am
19===================================================================
20--- systemd-197.orig/Makefile.am 2013-01-07 17:37:15.391966148 -0800
21+++ systemd-197/Makefile.am 2013-01-24 10:06:11.219490786 -0800
22@@ -185,7 +185,8 @@
23 systemd-ask-password \
24 systemd-tty-ask-password-agent \
25 systemd-tmpfiles \
26- systemd-machine-id-setup
27+ systemd-machine-id-setup \
28+ systemd-analyze
29
30 bin_PROGRAMS = \
31 systemd-cgls \
32@@ -220,14 +221,16 @@
33 systemd-fstab-generator \
34 systemd-system-update-generator
35
36-dist_bin_SCRIPTS = \
37- src/analyze/systemd-analyze
38+systemd_analyze_SOURCES = \
39+ src/analyze/systemd-analyze.c
40
41-EXTRA_DIST += \
42- src/analyze/systemd-analyze.in
43+systemd_analyze_CFLAGS = \
44+ $(AM_CFLAGS) \
45+ $(DBUS_CFLAGS)
46
47-CLEANFILES += \
48- src/analyze/systemd-analyze
49+systemd_analyze_LDADD = \
50+ libsystemd-shared.la \
51+ libsystemd-dbus.la
52
53 dist_bashcompletion_DATA = \
54 shell-completion/systemd-bash-completion.sh
55@@ -3839,10 +3842,6 @@
56 $(SED_PROCESS)
57 $(AM_V_GEN)chmod +x $@
58
59-src/analyze/systemd-analyze: %: %.in Makefile
60- $(SED_PROCESS)
61- $(AM_V_GEN)chmod +x $@
62-
63 src/%.c: src/%.gperf
64 $(AM_V_at)$(MKDIR_P) $(dir $@)
65 $(AM_V_GEN)$(GPERF) < $< > $@
66Index: systemd-197/src/analyze/systemd-analyze.c
67===================================================================
68--- /dev/null 1970-01-01 00:00:00.000000000 +0000
69+++ systemd-197/src/analyze/systemd-analyze.c 2013-01-24 10:06:11.219490786 -0800
70@@ -0,0 +1,684 @@
71+#include <stdio.h>
72+#include <stdlib.h>
73+#include <getopt.h>
74+#include <locale.h>
75+
76+#include "install.h"
77+#include "log.h"
78+#include "dbus-common.h"
79+#include "build.h"
80+#include "util.h"
81+
82+#define svg(...) printf(__VA_ARGS__)
83+
84+static UnitFileScope arg_scope = UNIT_FILE_SYSTEM;
85+
86+struct unit_times {
87+ char *name;
88+ unsigned long long int ixt;
89+ unsigned long long int iet;
90+ unsigned long long int axt;
91+ unsigned long long int aet;
92+};
93+
94+
95+unsigned long long int property_getull(
96+ DBusConnection *bus,
97+ const char *dest,
98+ const char *path,
99+ const char *interface,
100+ const char *property)
101+{
102+ _cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
103+ DBusMessageIter iter, sub;
104+ unsigned long long int result = 0;
105+ union {
106+ char byte;
107+ dbus_int16_t i16;
108+ dbus_uint16_t u16;
109+ dbus_int32_t i32;
110+ dbus_uint32_t u32;
111+ dbus_int64_t i64;
112+ dbus_uint64_t u64;
113+ } dbus_result;
114+
115+ int r = bus_method_call_with_reply (
116+ bus,
117+ dest,
118+ path,
119+ "org.freedesktop.DBus.Properties",
120+ "Get",
121+ &reply,
122+ NULL,
123+ DBUS_TYPE_STRING, &interface,
124+ DBUS_TYPE_STRING, &property,
125+ DBUS_TYPE_INVALID);
126+ if (r)
127+ goto finish;
128+
129+ if (!dbus_message_iter_init(reply, &iter) ||
130+ dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT)
131+ goto finish;
132+
133+ dbus_message_iter_recurse(&iter, &sub);
134+
135+ switch(dbus_message_iter_get_arg_type(&sub)) {
136+ case DBUS_TYPE_BYTE:
137+ dbus_message_iter_get_basic(&sub, &dbus_result.byte);
138+ result = dbus_result.byte;
139+ break;
140+ case DBUS_TYPE_INT16:
141+ dbus_message_iter_get_basic(&sub, &dbus_result.i16);
142+ result = dbus_result.i16;
143+ break;
144+ case DBUS_TYPE_UINT16:
145+ dbus_message_iter_get_basic(&sub, &dbus_result.u16);
146+ result = dbus_result.u16;
147+ break;
148+ case DBUS_TYPE_INT32:
149+ dbus_message_iter_get_basic(&sub, &dbus_result.i32);
150+ result = dbus_result.i32;
151+ break;
152+ case DBUS_TYPE_UINT32:
153+ dbus_message_iter_get_basic(&sub, &dbus_result.u32);
154+ result = dbus_result.u32;
155+ break;
156+ case DBUS_TYPE_INT64:
157+ dbus_message_iter_get_basic(&sub, &dbus_result.i64);
158+ result = dbus_result.i64;
159+ break;
160+ case DBUS_TYPE_UINT64:
161+ dbus_message_iter_get_basic(&sub, &dbus_result.u64);
162+ result = dbus_result.u64;
163+ break;
164+ default:
165+ goto finish;
166+ }
167+finish:
168+ return result;
169+}
170+
171+static int compare_unit_times1(const void *a, const void *b) {
172+ const struct unit_times *u = a, *v = b;
173+
174+ return (int)(v->aet - v->ixt) - (int)(u->aet - u->ixt);
175+}
176+
177+static int compare_unit_times2(const void *a, const void *b) {
178+ const struct unit_times *u = a, *v = b;
179+
180+ return (long long int)(u->ixt) - (long long int)(v->ixt);
181+}
182+
183+int acquire_time_data(DBusConnection *bus, struct unit_times **out)
184+{
185+ _cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
186+ DBusMessageIter iter, sub, sub2;
187+ unsigned int c = 0, n_units = 0;
188+ struct unit_times *unit_times = NULL;
189+ int r = bus_method_call_with_reply (
190+ bus,
191+ "org.freedesktop.systemd1",
192+ "/org/freedesktop/systemd1",
193+ "org.freedesktop.systemd1.Manager",
194+ "ListUnits",
195+ &reply,
196+ NULL,
197+ DBUS_TYPE_INVALID);
198+ if (r)
199+ goto finish;
200+
201+ if (!dbus_message_iter_init(reply, &iter) ||
202+ dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY ||
203+ dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) {
204+ log_error("Failed to parse reply.");
205+ r = -EIO;
206+ goto finish;
207+ }
208+
209+ dbus_message_iter_recurse(&iter, &sub);
210+
211+ while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) {
212+ struct unit_times *u;
213+ char *path;
214+
215+ if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) {
216+ log_error("Failed to parse reply.");
217+ r = -EIO;
218+ goto finish;
219+ }
220+
221+ if (c >= n_units) {
222+ struct unit_times *w;
223+
224+ n_units = MAX(2*c, 16);
225+ w = realloc(unit_times, sizeof(struct unit_times) * n_units);
226+
227+ if (!w) {
228+ log_error("Failed to allocate unit array.");
229+ r = -ENOMEM;
230+ goto finish;
231+ }
232+
233+ unit_times = w;
234+ }
235+ u = unit_times+c;
236+
237+ dbus_message_iter_recurse(&sub, &sub2);
238+
239+ if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &u->name, true) < 0 ||
240+ dbus_message_iter_next(&sub2), dbus_message_iter_next(&sub2), dbus_message_iter_next(&sub2),
241+ dbus_message_iter_next(&sub2), dbus_message_iter_next(&sub2),
242+ bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &path, true) < 0) {
243+ log_error("Failed to parse reply.");
244+ r = -EIO;
245+ goto finish;
246+ }
247+ u->name = strdup(u->name);
248+ u->ixt = property_getull(bus,
249+ "org.freedesktop.systemd1",
250+ path,
251+ "org.freedesktop.systemd1.Unit",
252+ "InactiveExitTimestampMonotonic");
253+ u->iet = property_getull(bus,
254+ "org.freedesktop.systemd1",
255+ path,
256+ "org.freedesktop.systemd1.Unit",
257+ "InactiveEnterTimestampMonotonic");
258+ u->axt = property_getull(bus,
259+ "org.freedesktop.systemd1",
260+ path,
261+ "org.freedesktop.systemd1.Unit",
262+ "ActiveExitTimestampMonotonic");
263+ u->aet = property_getull(bus,
264+ "org.freedesktop.systemd1",
265+ path,
266+ "org.freedesktop.systemd1.Unit",
267+ "ActiveEnterTimestampMonotonic");
268+ dbus_message_iter_next(&sub);
269+ if (u->ixt == 0)
270+ continue;
271+ c++;
272+ }
273+
274+ *out = unit_times;
275+ return c;
276+finish:
277+ free(unit_times);
278+ return r;
279+}
280+
281+static void svg_graph_box(int height, long long int begin, long long int end, float scale_x, float scale_y)
282+{
283+ double d = 0.0;
284+ int i = 0;
285+
286+ /* outside box, fill */
287+ svg("<rect class=\"box\" x=\"%.03f\" y=\"0\" width=\"%.03f\" height=\"%.03f\" />\n",
288+ 0,
289+ scale_x * (end - begin),
290+ scale_y * height);
291+
292+ for (d = 0.000001 * begin; d <= 0.000001 * end;
293+ d += 0.1) {
294+ /* lines for each second */
295+ if (i % 50 == 0)
296+ svg(" <line class=\"sec5\" x1=\"%.03f\" y1=\"0\" x2=\"%.03f\" y2=\"%.03f\" />\n",
297+ scale_x * d,
298+ scale_x * d,
299+ scale_y * height);
300+ else if (i % 10 == 0)
301+ svg(" <line class=\"sec1\" x1=\"%.03f\" y1=\"0\" x2=\"%.03f\" y2=\"%.03f\" />\n",
302+ scale_x * d,
303+ scale_x * d,
304+ scale_y * height);
305+ else
306+ svg(" <line class=\"sec01\" x1=\"%.03f\" y1=\"0\" x2=\"%.03f\" y2=\"%.03f\" />\n",
307+ scale_x * d,
308+ scale_x * d,
309+ scale_y * height);
310+
311+ /* time label */
312+ if (i % 10 == 0)
313+ svg(" <text class=\"sec\" x=\"%.03f\" y=\"%.03f\" >%.01fs</text>\n",
314+ scale_x * d, -5.0, d);
315+
316+ i++;
317+ }
318+}
319+
320+int analyze_plot(DBusConnection *bus)
321+{
322+ struct unit_times *times;
323+ int n = acquire_time_data(bus, &times);
324+ int m = n + 1;
325+ unsigned long long int firmware_time, loader_time, kernel_time, initrd_time, userspace_time, finish_time;
326+ long long int starttime = 0;
327+
328+ float scale_x = 100.0;
329+ float scale_y = 20.0;
330+
331+ if (n<=0)
332+ return -n;
333+
334+ qsort(times, n, sizeof(struct unit_times), compare_unit_times2);
335+
336+ firmware_time = property_getull(bus,
337+ "org.freedesktop.systemd1",
338+ "/org/freedesktop/systemd1",
339+ "org.freedesktop.systemd1.Manager",
340+ "FirmwareTimestampMonotonic");
341+ loader_time = property_getull(bus,
342+ "org.freedesktop.systemd1",
343+ "/org/freedesktop/systemd1",
344+ "org.freedesktop.systemd1.Manager",
345+ "LoaderTimestampMonotonic");
346+ kernel_time = property_getull(bus,
347+ "org.freedesktop.systemd1",
348+ "/org/freedesktop/systemd1",
349+ "org.freedesktop.systemd1.Manager",
350+ "KernelTimestamp");
351+ initrd_time = property_getull(bus,
352+ "org.freedesktop.systemd1",
353+ "/org/freedesktop/systemd1",
354+ "org.freedesktop.systemd1.Manager",
355+ "InitRDTimestampMonotonic");
356+ userspace_time = property_getull(bus,
357+ "org.freedesktop.systemd1",
358+ "/org/freedesktop/systemd1",
359+ "org.freedesktop.systemd1.Manager",
360+ "UserspaceTimestampMonotonic");
361+ finish_time = property_getull(bus,
362+ "org.freedesktop.systemd1",
363+ "/org/freedesktop/systemd1",
364+ "org.freedesktop.systemd1.Manager",
365+ "FinishTimestampMonotonic");
366+
367+
368+ if (firmware_time > 0) {
369+ m++;
370+ starttime += firmware_time - loader_time;
371+ }
372+ if (loader_time > 0) {
373+ m++;
374+ starttime += loader_time;
375+ }
376+ if (initrd_time > 0)
377+ m += 2;
378+ else if (kernel_time > 0)
379+ m++;
380+
381+ float width = 80.0 + (scale_x * (starttime + finish_time) * 0.000001);
382+ float height = 150.0 + (m* scale_y);
383+
384+ svg("<?xml version=\"1.0\" standalone=\"no\"?>\n");
385+ svg("<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" ");
386+ svg("\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n");
387+
388+ //svg("<g transform=\"translate(10,%d)\">\n", 1000 + 150 + (pcount * 20));
389+ svg("<svg width=\"%.0fpx\" height=\"%.0fpx\" version=\"1.1\" ", width, height);
390+ svg("xmlns=\"http://www.w3.org/2000/svg\">\n\n");
391+
392+ /* write some basic info as a comment, including some help */
393+ svg("<!-- This file is a systemd-analyze SVG file. It is best rendered in a -->\n");
394+ svg("<!-- browser such as Chrome/Chromium, firefox. Other applications that -->\n");
395+ svg("<!-- render these files properly but much more slow are ImageMagick, -->\n");
396+ svg("<!-- gimp, inkscape, etc.. To display the files on your system, just -->\n");
397+ svg("<!-- point your browser to file:///var/log/ and click. -->\n\n");
398+ svg("<!-- this plot was generated by systemd-analyze version %-16.16s -->\n\n", VERSION);
399+
400+ /* style sheet */
401+ svg("<defs>\n <style type=\"text/css\">\n <![CDATA[\n");
402+
403+ svg(" rect { stroke-width: 1; stroke-opacity: 0; }\n");
404+ svg(" rect.activating { fill: rgb(255,0,0); fill-opacity: 0.7; }\n");
405+ svg(" rect.active { fill: rgb(200,150,150); fill-opacity: 0.7; }\n");
406+ svg(" rect.deactivating { fill: rgb(150,100,100); fill-opacity: 0.7; }\n");
407+ svg(" rect.kernel { fill: rgb(150,150,150); fill-opacity: 0.7; }\n");
408+ svg(" rect.initrd { fill: rgb(150,150,150); fill-opacity: 0.7; }\n");
409+ svg(" rect.firmware { fill: rgb(150,150,150); fill-opacity: 0.7; }\n");
410+ svg(" rect.loader { fill: rgb(150,150,150); fill-opacity: 0.7; }\n");
411+ svg(" rect.userspace { fill: rgb(150,150,150); fill-opacity: 0.7; }\n");
412+ svg(" rect.cpu { fill: rgb(64,64,240); stroke-width: 0; fill-opacity: 0.7; }\n");
413+ svg(" rect.wait { fill: rgb(240,240,0); stroke-width: 0; fill-opacity: 0.7; }\n");
414+ svg(" rect.bi { fill: rgb(240,128,128); stroke-width: 0; fill-opacity: 0.7; }\n");
415+ svg(" rect.bo { fill: rgb(192,64,64); stroke-width: 0; fill-opacity: 0.7; }\n");
416+ svg(" rect.ps { fill: rgb(192,192,192); stroke: rgb(128,128,128); fill-opacity: 0.7; }\n");
417+ svg(" rect.krnl { fill: rgb(240,240,0); stroke: rgb(128,128,128); fill-opacity: 0.7; }\n");
418+ svg(" rect.box { fill: rgb(240,240,240); stroke: rgb(192,192,192); }\n");
419+ svg(" rect.clrw { stroke-width: 0; fill-opacity: 0.7;}\n");
420+ svg(" line { stroke: rgb(64,64,64); stroke-width: 1; }\n");
421+ svg("// line.sec1 { }\n");
422+ svg(" line.sec5 { stroke-width: 2; }\n");
423+ svg(" line.sec01 { stroke: rgb(224,224,224); stroke-width: 1; }\n");
424+ svg(" line.dot { stroke-dasharray: 2 4; }\n");
425+ svg(" line.idle { stroke: rgb(64,64,64); stroke-dasharray: 10 6; stroke-opacity: 0.7; }\n");
426+
427+ svg(" .run { font-size: 8; font-style: italic; }\n");
428+ svg(" text { font-family: Verdana, Helvetica; font-size: 10; }\n");
429+ svg(" text.sec { font-size: 8; }\n");
430+ svg(" text.t1 { font-size: 24; }\n");
431+ svg(" text.t2 { font-size: 12; }\n");
432+ svg(" text.idle { font-size: 18; }\n");
433+
434+ svg(" ]]>\n </style>\n</defs>\n\n");
435+
436+ svg("<text x=\"20\" y=\"40\">Startup finished in ");
437+
438+ if (firmware_time > 0)
439+ svg("%llums (firmware) + ", (firmware_time - loader_time) / 1000);
440+ if (loader_time > 0)
441+ svg("%llums (loader) + ", loader_time / 1000);
442+ if (initrd_time > 0)
443+ svg("%llums (kernel) + %llums (initrd) + ", initrd_time / 1000, (userspace_time - initrd_time) / 1000);
444+ else if (kernel_time > 0)
445+ svg("%llums (kernel) + ", userspace_time / 1000);
446+ svg("%llums (userspace) ", (finish_time - userspace_time) / 1000);
447+ if (kernel_time > 0)
448+ svg("= %llums\n", (firmware_time + finish_time) / 1000);
449+ else
450+ svg("= %llums\n", (finish_time - userspace_time) / 1000);
451+ svg("</text>");
452+
453+ svg("<g transform=\"translate(20,100)\">\n");
454+ svg_graph_box(m, starttime, finish_time, scale_x, scale_y);
455+
456+ float top = 0.0;
457+
458+ if (firmware_time > 0) {
459+ svg(" <rect class=\"firmware\" x=\"%.03f\" y=\"%.03f\" width=\"%.03f\" height=\"%.03f\" />\n",
460+ scale_x * (starttime - firmware_time) * 0.000001,
461+ top,
462+ scale_x * (firmware_time - loader_time) * 0.000001,
463+ scale_y - 1.0);
464+ svg(" <text x=\"%.03f\" y=\"%.03f\">firmware</text>\n",
465+ scale_x * (starttime - firmware_time) * 0.000001 + 5.0,
466+ top + 14.0);
467+ top += scale_y;
468+ }
469+ if (loader_time > 0) {
470+ svg(" <rect class=\"loader\" x=\"%.03f\" y=\"%.03f\" width=\"%.03f\" height=\"%.03f\" />\n",
471+ scale_x * (starttime - loader_time) * 0.000001,
472+ top,
473+ scale_x * (loader_time) * 0.000001,
474+ scale_y - 1.0);
475+ svg(" <text x=\"%.03f\" y=\"%.03f\">loader</text>\n",
476+ scale_x * (starttime - loader_time) * 0.000001 + 5.0,
477+ top + 14.0);
478+ top += scale_y;
479+ }
480+ if (initrd_time > 0) {
481+ svg(" <rect class=\"kernel\" x=\"%.03f\" y=\"%.03f\" width=\"%.03f\" height=\"%.03f\" />\n",
482+ scale_x * (starttime) * 0.000001,
483+ top,
484+ scale_x * (initrd_time) * 0.000001,
485+ scale_y - 1.0);
486+ svg(" <text x=\"%.03f\" y=\"%.03f\">kernel</text>\n",
487+ scale_x * (starttime) * 0.000001 + 5.0,
488+ top + 14.0);
489+ top += scale_y;
490+ svg(" <rect class=\"inird\" x=\"%.03f\" y=\"%.03f\" width=\"%.03f\" height=\"%.03f\" />\n",
491+ scale_x * (starttime + initrd_time) * 0.000001,
492+ top,
493+ scale_x * (userspace_time - initrd_time) * 0.000001,
494+ scale_y - 1.0);
495+ svg(" <text x=\"%.03f\" y=\"%.03f\">initrd</text>\n",
496+ scale_x * (starttime + initrd_time) * 0.000001 + 5.0,
497+ top + 14.0);
498+ top += scale_y;
499+ } else if (kernel_time > 0) {
500+ svg(" <rect class=\"kernel\" x=\"%.03f\" y=\"%.03f\" width=\"%.03f\" height=\"%.03f\" />\n",
501+ scale_x * (starttime) * 0.000001,
502+ top,
503+ scale_x * (userspace_time) * 0.000001,
504+ scale_y - 1.0);
505+ svg(" <text x=\"%.03f\" y=\"%.03f\">kernel</text>\n",
506+ scale_x * (starttime) * 0.000001 + 5.0,
507+ top + 14.0);
508+ top += scale_y;
509+ }
510+
511+ svg(" <rect class=\"userspace\" x=\"%.03f\" y=\"%.03f\" width=\"%.03f\" height=\"%.03f\" />\n",
512+ scale_x * (userspace_time) * 0.000001,
513+ top,
514+ scale_x * (finish_time - userspace_time) * 0.000001,
515+ scale_y - 1.0);
516+ svg(" <text x=\"%.03f\" y=\"%.03f\">userspace</text>\n",
517+ scale_x * (userspace_time) * 0.000001 + 5.0,
518+ top + 14.0);
519+ top += scale_y;
520+
521+
522+ for (int i=0; i < n; i++) {
523+ //draw times[i]
524+
525+ bool drawn = false;
526+
527+ if (times[i].ixt >= userspace_time && times[i].ixt <= finish_time) {
528+ unsigned long long int end = finish_time;
529+ if (times[i].aet >= times[i].ixt && times[i].aet < end)
530+ end = times[i].aet;
531+ if (times[i].axt >= times[i].ixt && times[i].axt < end)
532+ end = times[i].axt;
533+ if (times[i].iet >= times[i].ixt && times[i].iet < end)
534+ end = times[i].iet;
535+ svg(" <rect class=\"activating\" x=\"%.03f\" y=\"%.03f\" width=\"%.03f\" height=\"%.03f\" />\n",
536+ scale_x * (starttime + times[i].ixt) * 0.000001,
537+ top + (scale_y * i),
538+ scale_x * (end - times[i].ixt) * 0.000001,
539+ scale_y - 1.0);
540+ }
541+ if (times[i].aet >= userspace_time && times[i].aet <= finish_time) {
542+ unsigned long long int end = finish_time;
543+ if (times[i].axt >= times[i].aet && times[i].axt < end)
544+ end = times[i].axt;
545+ if (times[i].iet >= times[i].aet && times[i].iet < end)
546+ end = times[i].iet;
547+ svg(" <rect class=\"active\" x=\"%.03f\" y=\"%.03f\" width=\"%.03f\" height=\"%.03f\" />\n",
548+ scale_x * (starttime + times[i].aet) * 0.000001,
549+ top + (scale_y * i),
550+ scale_x * (end - times[i].aet) * 0.000001,
551+ scale_y - 1.0);
552+ }
553+ if (times[i].axt >= userspace_time && times[i].axt <= finish_time) {
554+ unsigned long long int end = finish_time;
555+ if (times[i].iet >= times[i].axt && times[i].iet < end)
556+ end = times[i].iet;
557+ svg(" <rect class=\"deactivating\" x=\"%.03f\" y=\"%.03f\" width=\"%.03f\" height=\"%.03f\" />\n",
558+ scale_x * (starttime + times[i].axt) * 0.000001,
559+ top + (scale_y * i),
560+ scale_x * (end - times[i].axt) * 0.000001,
561+ scale_y - 1.0);
562+ }
563+
564+ svg(" <text x=\"%.03f\" y=\"%.03f\">%s</text>\n",
565+ (starttime + times[i].ixt) * scale_x * 0.000001 + 5.0,
566+ top + (scale_y * i) + 14.0,
567+ times[i].name);
568+
569+ }
570+ svg("</g>\n\n");
571+
572+ svg("</svg>");
573+ return 0;
574+}
575+
576+int analyze_blame(DBusConnection *bus)
577+{
578+ struct unit_times *times;
579+ int n = acquire_time_data(bus, &times);
580+ if (n<=0)
581+ return -n;
582+
583+ qsort(times, n, sizeof(struct unit_times), compare_unit_times1);
584+
585+ for (int i = 0; i < n; i++) {
586+ if (times[i].ixt <= 0 || times[i].aet <= 0)
587+ continue;
588+ if (times[i].aet <= times[i].ixt)
589+ continue;
590+ printf("%6llums %s\n", (times[i].aet - times[i].ixt) / 1000, times[i].name);
591+ }
592+ return 0;
593+}
594+int analyze_time(DBusConnection *bus)
595+{
596+ unsigned long long firmware_time, loader_time, kernel_time, initrd_time, userspace_time, finish_time;
597+
598+ firmware_time = property_getull(bus,
599+ "org.freedesktop.systemd1",
600+ "/org/freedesktop/systemd1",
601+ "org.freedesktop.systemd1.Manager",
602+ "FirmwareTimestampMonotonic");
603+ loader_time = property_getull(bus,
604+ "org.freedesktop.systemd1",
605+ "/org/freedesktop/systemd1",
606+ "org.freedesktop.systemd1.Manager",
607+ "LoaderTimestampMonotonic");
608+ kernel_time = property_getull(bus,
609+ "org.freedesktop.systemd1",
610+ "/org/freedesktop/systemd1",
611+ "org.freedesktop.systemd1.Manager",
612+ "KernelTimestamp");
613+ initrd_time = property_getull(bus,
614+ "org.freedesktop.systemd1",
615+ "/org/freedesktop/systemd1",
616+ "org.freedesktop.systemd1.Manager",
617+ "InitRDTimestampMonotonic");
618+ userspace_time = property_getull(bus,
619+ "org.freedesktop.systemd1",
620+ "/org/freedesktop/systemd1",
621+ "org.freedesktop.systemd1.Manager",
622+ "UserspaceTimestampMonotonic");
623+ finish_time = property_getull(bus,
624+ "org.freedesktop.systemd1",
625+ "/org/freedesktop/systemd1",
626+ "org.freedesktop.systemd1.Manager",
627+ "FinishTimestampMonotonic");
628+
629+ printf("Startup finished in ");
630+
631+ if (firmware_time > 0)
632+ printf("%llums (firmware) + ", (firmware_time - loader_time) / 1000);
633+ if (loader_time > 0)
634+ printf("%llums (loader) + ", loader_time / 1000);
635+ if (initrd_time > 0)
636+ printf("%llums (kernel) + %llums (initrd) + ", initrd_time / 1000, (userspace_time - initrd_time) / 1000);
637+ else if (kernel_time > 0)
638+ printf("%llums (kernel) + ", userspace_time / 1000);
639+
640+ printf("%llums (userspace) ", (finish_time - userspace_time) / 1000);
641+
642+ if (kernel_time > 0)
643+ printf("= %llums\n", (firmware_time + finish_time) / 1000);
644+ else
645+ printf("= %llums\n", (finish_time - userspace_time) / 1000);
646+
647+ return 0;
648+}
649+
650+void analyze_help()
651+{
652+ printf("%s [OPTIONS...] {COMMAND} ...\n\n"
653+ " -h --help Show this help\n"
654+ " --version Show package version\n"
655+ " --system Connect to system manager\n"
656+ " --user Connect to user service manager\n\n"
657+ "Commands:\n"
658+ " time\n"
659+ " blame\n",
660+ program_invocation_short_name);
661+
662+}
663+
664+static int parse_argv(int argc, char *argv[])
665+{
666+ enum {
667+ ARG_VERSION = 0x100,
668+ ARG_USER,
669+ ARG_SYSTEM
670+ };
671+
672+ static const struct option options[] = {
673+ { "help", no_argument, NULL, 'h' },
674+ { "version", no_argument, NULL, ARG_VERSION },
675+ { "user", no_argument, NULL, ARG_USER },
676+ { "system", no_argument, NULL, ARG_SYSTEM },
677+ { NULL, 0, NULL, 0 }
678+ };
679+
680+ int c;
681+
682+ assert(argc >= 0);
683+ assert(argv);
684+
685+ while ((c = getopt_long(argc, argv, "h", options, NULL)) >= 0) {
686+ switch (c) {
687+ case 'h':
688+ analyze_help();
689+ return 0;
690+ case ARG_VERSION:
691+ puts(PACKAGE_STRING);
692+ puts(SYSTEMD_FEATURES);
693+ return 0;
694+ case ARG_USER:
695+ arg_scope = UNIT_FILE_USER;
696+ break;
697+ case ARG_SYSTEM:
698+ arg_scope = UNIT_FILE_SYSTEM;
699+ break;
700+
701+ case '?':
702+ return -EINVAL;
703+
704+ default:
705+ log_error("Unknown option code '%c'.", c);
706+ return -EINVAL;
707+ }
708+ }
709+ return 1;
710+}
711+
712+
713+int main(int argc, char*argv[]) {
714+ int r, retval = EXIT_FAILURE;
715+ DBusConnection *bus = NULL;
716+ DBusError error;
717+ bool private_bus = false;
718+
719+ dbus_error_init(&error);
720+
721+ setlocale(LC_ALL, "");
722+ log_parse_environment();
723+ log_open();
724+
725+ r = parse_argv(argc, argv);
726+ if (r < 0)
727+ goto finish;
728+ else if (r == 0) {
729+ retval = EXIT_SUCCESS;
730+ goto finish;
731+ }
732+
733+ bus_connect(arg_scope == UNIT_FILE_SYSTEM ? DBUS_BUS_SYSTEM : DBUS_BUS_SESSION, &bus, &private_bus, &error);
734+
735+ if (!argv[optind] || streq(argv[optind], "time"))
736+ retval = analyze_time(bus);
737+ else if (streq(argv[optind], "blame"))
738+ retval = analyze_blame(bus);
739+ else if (streq(argv[optind], "plot"))
740+ retval = analyze_plot(bus);
741+ else
742+ log_error("Unknown operation '%s'.", argv[optind]);
743+
744+finish:
745+ if (bus) {
746+ dbus_connection_flush(bus);
747+ dbus_connection_close(bus);
748+ dbus_connection_unref(bus);
749+ }
750+
751+ dbus_error_free(&error);
752+
753+ return retval;
754+}
755Index: systemd-197/src/analyze/systemd-analyze.in
756===================================================================
757--- systemd-197.orig/src/analyze/systemd-analyze.in 2013-01-07 16:27:01.000000000 -0800
758+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
759@@ -1,328 +0,0 @@
760-#!@PYTHON_BINARY@
761-# -*-python-*-
762-
763-# This file is part of systemd.
764-#
765-# Copyright 2010-2013 Lennart Poettering
766-#
767-# systemd is free software; you can redistribute it and/or modify it
768-# under the terms of the GNU Lesser General Public License as published by
769-# the Free Software Foundation; either version 2.1 of the License, or
770-# (at your option) any later version.
771-#
772-# systemd is distributed in the hope that it will be useful, but
773-# WITHOUT ANY WARRANTY; without even the implied warranty of
774-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
775-# Lesser General Public License for more details.
776-#
777-# You should have received a copy of the GNU Lesser General Public License
778-# along with systemd; If not, see <http://www.gnu.org/licenses/>.
779-
780-import sys, os
781-import argparse
782-from gi.repository import Gio
783-try:
784- import cairo
785-except ImportError:
786- cairo = None
787-
788-def acquire_time_data():
789- manager = Gio.DBusProxy.new_for_bus_sync(bus, Gio.DBusProxyFlags.NONE,
790- None, 'org.freedesktop.systemd1', '/org/freedesktop/systemd1', 'org.freedesktop.systemd1.Manager', None)
791- units = manager.ListUnits()
792-
793- l = []
794-
795- for i in units:
796- if i[5] != "":
797- continue
798-
799- properties = Gio.DBusProxy.new_for_bus_sync(bus, Gio.DBusProxyFlags.NONE,
800- None, 'org.freedesktop.systemd1', i[6], 'org.freedesktop.DBus.Properties', None)
801-
802- ixt = properties.Get('(ss)', 'org.freedesktop.systemd1.Unit', 'InactiveExitTimestampMonotonic')
803- aet = properties.Get('(ss)', 'org.freedesktop.systemd1.Unit', 'ActiveEnterTimestampMonotonic')
804- axt = properties.Get('(ss)', 'org.freedesktop.systemd1.Unit', 'ActiveExitTimestampMonotonic')
805- iet = properties.Get('(ss)', 'org.freedesktop.systemd1.Unit', 'InactiveEnterTimestampMonotonic')
806-
807- l.append((str(i[0]), ixt, aet, axt, iet))
808-
809- return l
810-
811-def acquire_start_time():
812- properties = Gio.DBusProxy.new_for_bus_sync(bus, Gio.DBusProxyFlags.NONE,
813- None, 'org.freedesktop.systemd1', '/org/freedesktop/systemd1', 'org.freedesktop.DBus.Properties', None)
814-
815- # Note that the firmware/loader times are returned as positive
816- # values but are actually considered negative from the point
817- # in time of kernel initialization. Also, the monotonic kernel
818- # time will always be 0 since that's the epoch of the
819- # monotonic clock. Since we want to know whether the kernel
820- # timestamp is set at all we will instead ask for the realtime
821- # clock for this timestamp.
822-
823- firmware_time = properties.Get('(ss)', 'org.freedesktop.systemd1.Manager', 'FirmwareTimestampMonotonic')
824- loader_time = properties.Get('(ss)', 'org.freedesktop.systemd1.Manager', 'LoaderTimestampMonotonic')
825- kernel_time = properties.Get('(ss)', 'org.freedesktop.systemd1.Manager', 'KernelTimestamp')
826- initrd_time = properties.Get('(ss)', 'org.freedesktop.systemd1.Manager', 'InitRDTimestampMonotonic')
827- userspace_time = properties.Get('(ss)', 'org.freedesktop.systemd1.Manager', 'UserspaceTimestampMonotonic')
828- finish_time = properties.Get('(ss)', 'org.freedesktop.systemd1.Manager', 'FinishTimestampMonotonic')
829-
830- if finish_time == 0:
831- sys.exit("Bootup is not yet finished. Please try again later.")
832-
833- assert firmware_time >= loader_time
834- assert initrd_time <= userspace_time
835- assert userspace_time <= finish_time
836-
837- return firmware_time, loader_time, kernel_time, initrd_time, userspace_time, finish_time
838-
839-def draw_box(context, j, k, l, m, r = 0, g = 0, b = 0):
840- context.save()
841- context.set_source_rgb(r, g, b)
842- context.rectangle(j, k, l, m)
843- context.fill()
844- context.restore()
845-
846-def draw_text(context, x, y, text, size = 12, r = 0, g = 0, b = 0, vcenter = 0.5, hcenter = 0.5):
847- context.save()
848-
849- context.set_source_rgb(r, g, b)
850- context.select_font_face("Sans", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)
851- context.set_font_size(size)
852-
853- if vcenter or hcenter:
854- x_bearing, y_bearing, width, height = context.text_extents(text)[:4]
855-
856- if hcenter:
857- x = x - width*hcenter - x_bearing
858-
859- if vcenter:
860- y = y - height*vcenter - y_bearing
861-
862- context.move_to(x, y)
863- context.show_text(text)
864-
865- context.restore()
866-
867-def time():
868-
869- firmware_time, loader_time, kernel_time, initrd_time, userspace_time, finish_time = acquire_start_time()
870-
871- sys.stdout.write("Startup finished in ")
872-
873- if firmware_time > 0:
874- sys.stdout.write("%lums (firmware) + " % ((firmware_time - loader_time) / 1000))
875- if loader_time > 0:
876- sys.stdout.write("%lums (loader) + " % (loader_time / 1000))
877- if initrd_time > 0:
878- sys.stdout.write("%lums (kernel) + %lums (initrd) + " % (initrd_time / 1000, (userspace_time - initrd_time) / 1000))
879- elif kernel_time > 0:
880- sys.stdout.write("%lums (kernel) + " % (userspace_time / 1000))
881-
882- sys.stdout.write("%lums (userspace) " % ((finish_time - userspace_time) / 1000))
883-
884- if kernel_time > 0:
885- sys.stdout.write("= %lums\n" % ((firmware_time + finish_time) / 1000))
886- else:
887- sys.stdout.write("= %lums\n" % ((finish_time - userspace_time) / 1000))
888-
889-def blame():
890-
891- data = acquire_time_data()
892- s = sorted(data, key = lambda i: i[2] - i[1], reverse = True)
893-
894- for name, ixt, aet, axt, iet in s:
895-
896- if ixt <= 0 or aet <= 0:
897- continue
898-
899- if aet <= ixt:
900- continue
901-
902- sys.stdout.write("%6lums %s\n" % ((aet - ixt) / 1000, name))
903-
904-def plot():
905- if cairo is None:
906- sys.exit("Failed to initilize python-cairo required for 'plot' verb.")
907- firmware_time, loader_time, kernel_time, initrd_time, userspace_time, finish_time = acquire_start_time()
908- data = acquire_time_data()
909- s = sorted(data, key = lambda i: i[1])
910-
911- # Account for kernel and initramfs bars if they exist
912- if initrd_time > 0:
913- count = 3
914- else:
915- count = 2
916-
917- for name, ixt, aet, axt, iet in s:
918-
919- if (ixt >= userspace_time and ixt <= finish_time) or \
920- (aet >= userspace_time and aet <= finish_time) or \
921- (axt >= userspace_time and axt <= finish_time):
922- count += 1
923-
924- border = 100
925- bar_height = 20
926- bar_space = bar_height * 0.1
927-
928- # 1000px = 10s, 1px = 10ms
929- width = finish_time/10000 + border*2
930- height = count * (bar_height + bar_space) + border * 2
931-
932- if width < 1000:
933- width = 1000
934-
935- surface = cairo.SVGSurface(sys.stdout, width, height)
936- context = cairo.Context(surface)
937-
938- draw_box(context, 0, 0, width, height, 1, 1, 1)
939-
940- context.translate(border + 0.5, border + 0.5)
941-
942- context.save()
943- context.set_line_width(1)
944- context.set_source_rgb(0.7, 0.7, 0.7)
945-
946- for x in range(0, int(finish_time/10000) + 100, 100):
947- context.move_to(x, 0)
948- context.line_to(x, height-border*2)
949-
950- context.move_to(0, 0)
951- context.line_to(width-border*2, 0)
952-
953- context.move_to(0, height-border*2)
954- context.line_to(width-border*2, height-border*2)
955-
956- context.stroke()
957- context.restore()
958-
959- osrel = "Linux"
960- if os.path.exists("/etc/os-release"):
961- for line in open("/etc/os-release"):
962- if line.startswith('PRETTY_NAME='):
963- osrel = line[12:]
964- osrel = osrel.strip('\"\n')
965- break
966-
967- banner = "{} {} ({} {}) {}".format(osrel, *(os.uname()[1:5]))
968- draw_text(context, 0, -15, banner, hcenter = 0, vcenter = 1)
969-
970- for x in range(0, int(finish_time/10000) + 100, 100):
971- draw_text(context, x, -5, "%lus" % (x/100), vcenter = 0, hcenter = 0)
972-
973- y = 0
974-
975- # draw boxes for kernel and initramfs boot time
976- if initrd_time > 0:
977- draw_box(context, 0, y, initrd_time/10000, bar_height, 0.7, 0.7, 0.7)
978- draw_text(context, 10, y + bar_height/2, "kernel", hcenter = 0)
979- y += bar_height + bar_space
980-
981- draw_box(context, initrd_time/10000, y, userspace_time/10000-initrd_time/10000, bar_height, 0.7, 0.7, 0.7)
982- draw_text(context, initrd_time/10000 + 10, y + bar_height/2, "initramfs", hcenter = 0)
983- y += bar_height + bar_space
984-
985- else:
986- draw_box(context, 0, y, userspace_time/10000, bar_height, 0.6, 0.6, 0.6)
987- draw_text(context, 10, y + bar_height/2, "kernel", hcenter = 0)
988- y += bar_height + bar_space
989-
990- draw_box(context, userspace_time/10000, y, finish_time/10000-userspace_time/10000, bar_height, 0.7, 0.7, 0.7)
991- draw_text(context, userspace_time/10000 + 10, y + bar_height/2, "userspace", hcenter = 0)
992- y += bar_height + bar_space
993-
994- for name, ixt, aet, axt, iet in s:
995-
996- drawn = False
997- left = -1
998-
999- if ixt >= userspace_time and ixt <= finish_time:
1000-
1001- # Activating
1002- a = ixt
1003- b = min(filter(lambda x: x >= ixt, (aet, axt, iet, finish_time))) - ixt
1004-
1005- draw_box(context, a/10000, y, b/10000, bar_height, 1, 0, 0)
1006- drawn = True
1007-
1008- if left < 0:
1009- left = a
1010-
1011- if aet >= userspace_time and aet <= finish_time:
1012-
1013- # Active
1014- a = aet
1015- b = min(filter(lambda x: x >= aet, (axt, iet, finish_time))) - aet
1016-
1017- draw_box(context, a/10000, y, b/10000, bar_height, .8, .6, .6)
1018- drawn = True
1019-
1020- if left < 0:
1021- left = a
1022-
1023- if axt >= userspace_time and axt <= finish_time:
1024-
1025- # Deactivating
1026- a = axt
1027- b = min(filter(lambda x: x >= axt, (iet, finish_time))) - axt
1028-
1029- draw_box(context, a/10000, y, b/10000, bar_height, .6, .4, .4)
1030- drawn = True
1031-
1032- if left < 0:
1033- left = a
1034-
1035- if drawn:
1036- x = left/10000
1037-
1038- if x < width/2-border:
1039- draw_text(context, x + 10, y + bar_height/2, name, hcenter = 0)
1040- else:
1041- draw_text(context, x - 10, y + bar_height/2, name, hcenter = 1)
1042-
1043- y += bar_height + bar_space
1044-
1045- draw_text(context, 0, height-border*2, "Legend: Red = Activating; Pink = Active; Dark Pink = Deactivating", hcenter = 0, vcenter = -1)
1046-
1047- if initrd_time > 0:
1048- draw_text(context, 0, height-border*2 + bar_height, "Startup finished in %lums (kernel) + %lums (initramfs) + %lums (userspace) = %lums" % ( \
1049- initrd_time/1000, \
1050- (userspace_time - initrd_time)/1000, \
1051- (finish_time - userspace_time)/1000, \
1052- finish_time/1000), hcenter = 0, vcenter = -1)
1053- else:
1054- draw_text(context, 0, height-border*2 + bar_height, "Startup finished in %lums (kernel) + %lums (userspace) = %lums" % ( \
1055- userspace_time/1000, \
1056- (finish_time - userspace_time)/1000, \
1057- finish_time/1000), hcenter = 0, vcenter = -1)
1058-
1059- surface.finish()
1060-
1061-parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter,
1062- version='systemd-analyze @PACKAGE_VERSION@',
1063- description='Process systemd profiling information',
1064- epilog='''\
1065-time - print time spent in the kernel before reaching userspace
1066-blame - print list of running units ordered by time to init
1067-plot - output SVG graphic showing service initialization
1068-''')
1069-
1070-parser.add_argument('action', choices=('time', 'blame', 'plot'),
1071- default='time', nargs='?',
1072- help='action to perform (default: time)')
1073-parser.add_argument('--user', action='store_true',
1074- help='use the session bus')
1075-
1076-args = parser.parse_args()
1077-
1078-if args.user:
1079- bus = Gio.BusType.SESSION
1080-else:
1081- bus = Gio.BusType.SYSTEM
1082-
1083-verb = {'time' : time,
1084- 'blame': blame,
1085- 'plot' : plot,
1086- }
1087-verb.get(args.action)()
diff --git a/meta/recipes-core/systemd/systemd/0002-readahead-chunk-on-spinning-media.patch b/meta/recipes-core/systemd/systemd/0002-readahead-chunk-on-spinning-media.patch
new file mode 100644
index 0000000000..d57a01c916
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0002-readahead-chunk-on-spinning-media.patch
@@ -0,0 +1,142 @@
1Upstream-Status: Backport
2
3-Khem 2013/03/28
4
5From 94243ef299425d6c7089a7a05c48c9bb8f6cf3da Mon Sep 17 00:00:00 2001
6From: Auke Kok <auke-jan.h.kok@intel.com>
7Date: Fri, 22 Mar 2013 15:09:45 -0700
8Subject: [PATCH 02/17] readahead: chunk on spinning media
9
10Readahead has all sorts of bad side effects depending on your
11storage media. On rotating disks, it may be degrading startup
12performance if enough requests are queued spanning linearly
13over all blocks early at boot, and mount, blkid and friends
14want to insert reads to the start of these block devices after.
15
16The end result is that on spinning disks with ext3/4 that udev
17and mounts take a very long time, and nothing really happens until
18readahead is completely finished.
19
20This has the net effect that the CPU is almost entirely idle
21for the entire period that readahead is working. We could have
22finished starting up quite a lot of services in this time if
23we were smarter at how we do readahead.
24
25This patch sorts all requests into 2 second "chunks" and sub-sorts
26each chunk by block. This adds a single cross-drive seek per "chunk"
27but has the benefit that we will have a lot of the blocks we need
28early on in the boot sequence loaded into memory faster.
29
30For a comparison of how before/after bootcharts look (ext4 on a
31mobile 5400rpm 250GB drive) please look at:
32
33 http://foo-projects.org/~sofar/blocked-tests/
34
35There are bootcharts in the "before" and "after" folders where you
36should be able to see that many low-level services finish 5-7
37seconds earlier with the patch applied (after).
38---
39 Makefile.am | 2 +-
40 src/readahead/readahead-collect.c | 28 +++++++++++++++++++++++++---
41 2 files changed, 26 insertions(+), 4 deletions(-)
42
43diff --git a/Makefile.am b/Makefile.am
44index 37c1cc2..5861976 100644
45--- a/Makefile.am
46+++ b/Makefile.am
47@@ -2956,7 +2956,7 @@ systemd_readahead_SOURCES = \
48 systemd_readahead_LDADD = \
49 libsystemd-shared.la \
50 libsystemd-daemon.la \
51- libudev.la
52+ libudev.la -lm
53
54 dist_doc_DATA += \
55 src/readahead/sd-readahead.c \
56diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c
57index 5d07f47..5d22949 100644
58--- a/src/readahead/readahead-collect.c
59+++ b/src/readahead/readahead-collect.c
60@@ -42,6 +42,7 @@
61 #include <sys/vfs.h>
62 #include <getopt.h>
63 #include <sys/inotify.h>
64+#include <math.h>
65
66 #ifdef HAVE_FANOTIFY_INIT
67 #include <sys/fanotify.h>
68@@ -67,6 +68,7 @@
69 */
70
71 static ReadaheadShared *shared = NULL;
72+static struct timespec starttime;
73
74 /* Avoid collisions with the NULL pointer */
75 #define SECTOR_TO_PTR(s) ULONG_TO_PTR((s)+1)
76@@ -205,6 +207,7 @@ static unsigned long fd_first_block(int fd) {
77 struct item {
78 const char *path;
79 unsigned long block;
80+ unsigned long bin;
81 };
82
83 static int qsort_compare(const void *a, const void *b) {
84@@ -213,6 +216,13 @@ static int qsort_compare(const void *a, const void *b) {
85 i = a;
86 j = b;
87
88+ /* sort by bin first */
89+ if (i->bin < j->bin)
90+ return -1;
91+ if (i->bin > j->bin)
92+ return 1;
93+
94+ /* then sort by sector */
95 if (i->block < j->block)
96 return -1;
97 if (i->block > j->block)
98@@ -250,6 +260,8 @@ static int collect(const char *root) {
99 goto finish;
100 }
101
102+ clock_gettime(CLOCK_MONOTONIC, &starttime);
103+
104 /* If there's no pack file yet we lower the kernel readahead
105 * so that mincore() is accurate. If there is a pack file
106 * already we assume it is accurate enough so that kernel
107@@ -447,10 +459,21 @@ static int collect(const char *root) {
108 free(p);
109 else {
110 unsigned long ul;
111+ struct timespec ts;
112+ struct item *entry;
113+
114+ entry = new0(struct item, 1);
115
116 ul = fd_first_block(m->fd);
117
118- if ((k = hashmap_put(files, p, SECTOR_TO_PTR(ul))) < 0) {
119+ clock_gettime(CLOCK_MONOTONIC, &ts);
120+
121+ entry->block = ul;
122+ entry->path = strdup(p);
123+ entry->bin = round((ts.tv_sec - starttime.tv_sec +
124+ ((ts.tv_nsec - starttime.tv_nsec) / 1000000000.0)) / 2.0);
125+
126+ if ((k = hashmap_put(files, p, entry)) < 0) {
127 log_warning("set_put() failed: %s", strerror(-k));
128 free(p);
129 }
130@@ -518,8 +541,7 @@ done:
131
132 j = ordered;
133 HASHMAP_FOREACH_KEY(q, p, files, i) {
134- j->path = p;
135- j->block = PTR_TO_SECTOR(q);
136+ memcpy(j, q, sizeof(struct item));
137 j++;
138 }
139
140--
1411.7.9.5
142
diff --git a/meta/recipes-core/systemd/systemd/0003-readahead-cleanups.patch b/meta/recipes-core/systemd/systemd/0003-readahead-cleanups.patch
new file mode 100644
index 0000000000..e0b68df607
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0003-readahead-cleanups.patch
@@ -0,0 +1,86 @@
1Upstream-Status: Backport
2
3-Khem 2013/03/28
4
5From b0640287f784a320661f7206c9ade07b99003fd5 Mon Sep 17 00:00:00 2001
6From: Auke Kok <auke-jan.h.kok@intel.com>
7Date: Tue, 26 Mar 2013 11:13:47 -0700
8Subject: [PATCH 03/17] readahead: cleanups
9
10- check for OOM
11- no need to use floats and round()
12---
13 Makefile.am | 2 +-
14 src/readahead/readahead-collect.c | 20 ++++++++++++++------
15 2 files changed, 15 insertions(+), 7 deletions(-)
16
17diff --git a/Makefile.am b/Makefile.am
18index 5861976..37c1cc2 100644
19--- a/Makefile.am
20+++ b/Makefile.am
21@@ -2956,7 +2956,7 @@ systemd_readahead_SOURCES = \
22 systemd_readahead_LDADD = \
23 libsystemd-shared.la \
24 libsystemd-daemon.la \
25- libudev.la -lm
26+ libudev.la
27
28 dist_doc_DATA += \
29 src/readahead/sd-readahead.c \
30diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c
31index 5d22949..e2fd8df 100644
32--- a/src/readahead/readahead-collect.c
33+++ b/src/readahead/readahead-collect.c
34@@ -68,7 +68,7 @@
35 */
36
37 static ReadaheadShared *shared = NULL;
38-static struct timespec starttime;
39+static usec_t starttime;
40
41 /* Avoid collisions with the NULL pointer */
42 #define SECTOR_TO_PTR(s) ULONG_TO_PTR((s)+1)
43@@ -260,7 +260,7 @@ static int collect(const char *root) {
44 goto finish;
45 }
46
47- clock_gettime(CLOCK_MONOTONIC, &starttime);
48+ starttime = now(CLOCK_MONOTONIC);
49
50 /* If there's no pack file yet we lower the kernel readahead
51 * so that mincore() is accurate. If there is a pack file
52@@ -459,19 +459,27 @@ static int collect(const char *root) {
53 free(p);
54 else {
55 unsigned long ul;
56- struct timespec ts;
57+ usec_t entrytime;
58 struct item *entry;
59
60 entry = new0(struct item, 1);
61+ if (!entry) {
62+ r = log_oom();
63+ goto finish;
64+ }
65
66 ul = fd_first_block(m->fd);
67
68- clock_gettime(CLOCK_MONOTONIC, &ts);
69+ entrytime = now(CLOCK_MONOTONIC);
70
71 entry->block = ul;
72 entry->path = strdup(p);
73- entry->bin = round((ts.tv_sec - starttime.tv_sec +
74- ((ts.tv_nsec - starttime.tv_nsec) / 1000000000.0)) / 2.0);
75+ if (!entry->path) {
76+ free(entry);
77+ r = log_oom();
78+ goto finish;
79+ }
80+ entry->bin = (entrytime - starttime) / 2000000;
81
82 if ((k = hashmap_put(files, p, entry)) < 0) {
83 log_warning("set_put() failed: %s", strerror(-k));
84--
851.7.9.5
86
diff --git a/meta/recipes-core/systemd/systemd/0013-systemd-sysctl-Handle-missing-etc-sysctl.conf-proper.patch b/meta/recipes-core/systemd/systemd/0013-systemd-sysctl-Handle-missing-etc-sysctl.conf-proper.patch
new file mode 100644
index 0000000000..f2c8e0290f
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0013-systemd-sysctl-Handle-missing-etc-sysctl.conf-proper.patch
@@ -0,0 +1,33 @@
1Upstream-Status: Backport
2
3-Khem 2013/03/28
4
5From 6f6fad96addf6b00b55c98cc0d0d8026b0c1e7ca Mon Sep 17 00:00:00 2001
6From: Eelco Dolstra <eelco.dolstra@logicblox.com>
7Date: Wed, 27 Mar 2013 13:41:59 +0100
8Subject: [PATCH 13/17] systemd-sysctl: Handle missing /etc/sysctl.conf
9 properly
10
11Since fabe5c0e5fce730aa66e10a9c4f9fdd443d7aeda, systemd-sysctl returns
12a non-zero exit code if /etc/sysctl.conf does not exist, due to a
13broken ENOENT check.
14---
15 src/sysctl/sysctl.c | 2 +-
16 1 file changed, 1 insertion(+), 1 deletion(-)
17
18diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c
19index 2d43660..79f3f77 100644
20--- a/src/sysctl/sysctl.c
21+++ b/src/sysctl/sysctl.c
22@@ -125,7 +125,7 @@ static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_eno
23
24 r = search_and_fopen_nulstr(path, "re", conf_file_dirs, &f);
25 if (r < 0) {
26- if (ignore_enoent && errno == -ENOENT)
27+ if (ignore_enoent && r == -ENOENT)
28 return 0;
29
30 log_error("Failed to open file '%s', ignoring: %s", path, strerror(-r));
31--
321.7.9.5
33
diff --git a/meta/recipes-core/systemd/systemd/init b/meta/recipes-core/systemd/systemd/init
new file mode 100644
index 0000000000..0ddd0434f2
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/init
@@ -0,0 +1,101 @@
1#!/bin/sh
2
3### BEGIN INIT INFO
4# Provides: udev
5# Required-Start: mountvirtfs
6# Required-Stop:
7# Default-Start: S
8# Default-Stop:
9# Short-Description: Start udevd, populate /dev and load drivers.
10### END INIT INFO
11
12. /etc/init.d/functions
13
14export TZ=/etc/localtime
15
16[ -d /sys/class ] || exit 1
17[ -r /proc/mounts ] || exit 1
18[ -x /lib/systemd/systemd-udevd ] || exit 1
19[ -f /etc/default/udev-cache ] && . /etc/default/udev-cache
20[ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
21
22readfile () {
23 filename=$1
24 READDATA=""
25 if [ -r $filename ]; then
26 while read line; do
27 READDATA="$READDATA$line"
28 done < $filename
29 fi
30}
31
32case "$1" in
33 start)
34 export ACTION=add
35 # propagate /dev from /sys
36 echo "Starting udev"
37
38 # mount the tmpfs on /dev, if not already done
39 LANG=C awk '$2 == "/dev" && ($3 == "tmpfs" || $3 == "devtmpfs") { exit 1 }' /proc/mounts && {
40 mount -n -o mode=0755 -t tmpfs none "/dev"
41 }
42 [ -e /dev/pts ] || mkdir -m 0755 /dev/pts
43 [ -e /dev/shm ] || mkdir -m 1777 /dev/shm
44 mount -a -t tmpfs 2>/dev/null
45 mkdir -p /var/volatile/run
46
47 # cache handling
48 if [ "$DEVCACHE" != "" ]; then
49 readfile /proc/version
50 VERSION="$READDATA"
51 readfile /proc/cmdline
52 CMDLINE="$READDATA"
53 readfile /proc/devices
54 DEVICES="$READDATA"
55 readfile /proc/atags
56 ATAGS="$READDATA"
57
58 if [ -e $DEVCACHE ]; then
59 readfile /etc/udev/cache.data
60 if [ "$READDATA" = "$VERSION$CMDLINE$DEVICES$ATAGS" ]; then
61 (cd /; tar xf $DEVCACHE > /dev/null 2>&1)
62 not_first_boot=1
63 fi
64
65 echo "$VERSION$CMDLINE$DEVICES$ATAGS" > /dev/shm/udev.cache
66 fi
67 fi
68
69 # make_extra_nodes
70 killproc systemd-udevd > "/dev/null" 2>&1
71
72 # trigger the sorted events
73 echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
74 /lib/systemd/systemd-udevd -d
75
76 /usr/bin/udevadm control --env=STARTUP=1
77 if [ "$not_first_boot" != "" ];then
78 /usr/bin/udevadm trigger --action=add --subsystem-nomatch=tty --subsystem-nomatch=mem --subsystem-nomatch=vc --subsystem-nomatch=vtconsole --subsystem-nomatch=misc --subsystem-nomatch=dcon --subsystem-nomatch=pci_bus --subsystem-nomatch=graphics --subsystem-nomatch=backlight --subsystem-nomatch=video4linux --subsystem-nomatch=platform
79 (/usr/bin/udevadm settle --timeout=3; /usr/bin/udevadm control --env=STARTUP=)&
80 else
81 /usr/bin/udevadm trigger --action=add
82 /usr/bin/udevadm settle
83 fi
84 ;;
85 stop)
86 echo "Stopping udevd"
87 start-stop-daemon --stop --name udevd --quiet
88 ;;
89 restart)
90 $0 stop
91 sleep 1
92 $0 start
93 ;;
94 status)
95 status udevd
96 ;;
97 *)
98 echo "Usage: $0 {start|stop|status|restart}"
99 exit 1
100esac
101exit 0
diff --git a/meta/recipes-core/systemd/systemd/systemd-pam-fix-msformat.patch b/meta/recipes-core/systemd/systemd/systemd-pam-fix-msformat.patch
index aa186bda72..8d1aa7d11a 100644
--- a/meta/recipes-core/systemd/systemd/systemd-pam-fix-msformat.patch
+++ b/meta/recipes-core/systemd/systemd/systemd-pam-fix-msformat.patch
@@ -1,20 +1,20 @@
1Upstream-Status: Denied [no desire for uclibc support] 1Upstream-Status: Denied [no desire for uclibc support]
2Signed-off-by: Khem Raj <raj.khem@gmail.com> 2Signed-off-by: Khem Raj <raj.khem@gmail.com>
3 3
4Index: systemd-196/src/fsck/fsck.c 4Index: systemd-198/src/fsck/fsck.c
5=================================================================== 5===================================================================
6--- systemd-196.orig/src/fsck/fsck.c 2012-07-26 03:45:14.000000000 -0700 6--- systemd-198.orig/src/fsck/fsck.c 2013-03-07 13:18:34.000000000 -0800
7+++ systemd-196/src/fsck/fsck.c 2013-01-21 16:10:46.807537608 -0800 7+++ systemd-198/src/fsck/fsck.c 2013-03-09 14:49:03.756572873 -0800
8@@ -36,6 +36,8 @@ 8@@ -37,6 +37,8 @@
9 #include "bus-errors.h"
10 #include "virt.h" 9 #include "virt.h"
10 #include "fileio.h"
11 11
12+#include "config.h" 12+#include "config.h"
13+ 13+
14 static bool arg_skip = false; 14 static bool arg_skip = false;
15 static bool arg_force = false; 15 static bool arg_force = false;
16 static bool arg_show_progress = false; 16 static bool arg_show_progress = false;
17@@ -193,9 +195,16 @@ 17@@ -203,9 +205,16 @@
18 char *device; 18 char *device;
19 double p; 19 double p;
20 usec_t t; 20 usec_t t;
@@ -33,10 +33,10 @@ Index: systemd-196/src/fsck/fsck.c
33 33
34 /* Only show one progress counter at max */ 34 /* Only show one progress counter at max */
35 if (!locked) { 35 if (!locked) {
36Index: systemd-196/src/core/swap.c 36Index: systemd-198/src/core/swap.c
37=================================================================== 37===================================================================
38--- systemd-196.orig/src/core/swap.c 2012-10-29 19:40:42.000000000 -0700 38--- systemd-198.orig/src/core/swap.c 2013-03-07 13:18:34.000000000 -0800
39+++ systemd-196/src/core/swap.c 2013-01-21 16:15:11.751544181 -0800 39+++ systemd-198/src/core/swap.c 2013-03-09 14:49:03.756572873 -0800
40@@ -41,6 +41,8 @@ 40@@ -41,6 +41,8 @@
41 #include "path-util.h" 41 #include "path-util.h"
42 #include "virt.h" 42 #include "virt.h"
@@ -46,7 +46,7 @@ Index: systemd-196/src/core/swap.c
46 static const UnitActiveState state_translation_table[_SWAP_STATE_MAX] = { 46 static const UnitActiveState state_translation_table[_SWAP_STATE_MAX] = {
47 [SWAP_DEAD] = UNIT_INACTIVE, 47 [SWAP_DEAD] = UNIT_INACTIVE,
48 [SWAP_ACTIVATING] = UNIT_ACTIVATING, 48 [SWAP_ACTIVATING] = UNIT_ACTIVATING,
49@@ -1059,6 +1061,7 @@ 49@@ -1037,6 +1039,7 @@
50 char *dev = NULL, *d; 50 char *dev = NULL, *d;
51 int prio = 0, k; 51 int prio = 0, k;
52 52
@@ -54,7 +54,7 @@ Index: systemd-196/src/core/swap.c
54 k = fscanf(m->proc_swaps, 54 k = fscanf(m->proc_swaps,
55 "%ms " /* device/file */ 55 "%ms " /* device/file */
56 "%*s " /* type of swap */ 56 "%*s " /* type of swap */
57@@ -1066,6 +1069,16 @@ 57@@ -1044,6 +1047,16 @@
58 "%*s " /* used */ 58 "%*s " /* used */
59 "%i\n", /* priority */ 59 "%i\n", /* priority */
60 &dev, &prio); 60 &dev, &prio);
@@ -71,10 +71,10 @@ Index: systemd-196/src/core/swap.c
71 if (k != 2) { 71 if (k != 2) {
72 if (k == EOF) 72 if (k == EOF)
73 break; 73 break;
74Index: systemd-196/src/core/mount-setup.c 74Index: systemd-198/src/core/mount-setup.c
75=================================================================== 75===================================================================
76--- systemd-196.orig/src/core/mount-setup.c 2012-11-09 06:55:35.000000000 -0800 76--- systemd-198.orig/src/core/mount-setup.c 2013-03-07 13:18:34.000000000 -0800
77+++ systemd-196/src/core/mount-setup.c 2013-01-21 16:10:46.807537608 -0800 77+++ systemd-198/src/core/mount-setup.c 2013-03-09 14:49:03.760572872 -0800
78@@ -28,6 +28,7 @@ 78@@ -28,6 +28,7 @@
79 #include <assert.h> 79 #include <assert.h>
80 #include <unistd.h> 80 #include <unistd.h>
@@ -83,16 +83,16 @@ Index: systemd-196/src/core/mount-setup.c
83 83
84 #include "mount-setup.h" 84 #include "mount-setup.h"
85 #include "dev-setup.h" 85 #include "dev-setup.h"
86@@ -42,6 +43,8 @@ 86@@ -43,6 +44,8 @@
87 #include "missing.h"
88 #include "virt.h" 87 #include "virt.h"
88 #include "efivars.h"
89 89
90+#include "config.h" 90+#include "config.h"
91+ 91+
92 #ifndef TTY_GID 92 #ifndef TTY_GID
93 #define TTY_GID 5 93 #define TTY_GID 5
94 #endif 94 #endif
95@@ -224,9 +227,12 @@ 95@@ -231,9 +234,12 @@
96 for (;;) { 96 for (;;) {
97 char *controller; 97 char *controller;
98 int enabled = 0; 98 int enabled = 0;
@@ -107,11 +107,11 @@ Index: systemd-196/src/core/mount-setup.c
107 if (feof(f)) 107 if (feof(f))
108 break; 108 break;
109 109
110Index: systemd-196/src/core/mount.c 110Index: systemd-198/src/core/mount.c
111=================================================================== 111===================================================================
112--- systemd-196.orig/src/core/mount.c 2012-10-22 16:53:02.000000000 -0700 112--- systemd-198.orig/src/core/mount.c 2013-03-07 13:18:34.000000000 -0800
113+++ systemd-196/src/core/mount.c 2013-01-21 16:10:46.811537609 -0800 113+++ systemd-198/src/core/mount.c 2013-03-09 14:49:03.760572872 -0800
114@@ -41,6 +41,8 @@ 114@@ -42,6 +42,8 @@
115 #include "exit-status.h" 115 #include "exit-status.h"
116 #include "def.h" 116 #include "def.h"
117 117
@@ -120,7 +120,7 @@ Index: systemd-196/src/core/mount.c
120 static const UnitActiveState state_translation_table[_MOUNT_STATE_MAX] = { 120 static const UnitActiveState state_translation_table[_MOUNT_STATE_MAX] = {
121 [MOUNT_DEAD] = UNIT_INACTIVE, 121 [MOUNT_DEAD] = UNIT_INACTIVE,
122 [MOUNT_MOUNTING] = UNIT_ACTIVATING, 122 [MOUNT_MOUNTING] = UNIT_ACTIVATING,
123@@ -1538,7 +1540,7 @@ 123@@ -1584,7 +1586,7 @@
124 int k; 124 int k;
125 125
126 device = path = options = options2 = fstype = d = p = o = NULL; 126 device = path = options = options2 = fstype = d = p = o = NULL;
@@ -129,7 +129,7 @@ Index: systemd-196/src/core/mount.c
129 if ((k = fscanf(m->proc_self_mountinfo, 129 if ((k = fscanf(m->proc_self_mountinfo,
130 "%*s " /* (1) mount id */ 130 "%*s " /* (1) mount id */
131 "%*s " /* (2) parent id */ 131 "%*s " /* (2) parent id */
132@@ -1557,7 +1559,31 @@ 132@@ -1603,7 +1605,31 @@
133 &fstype, 133 &fstype,
134 &device, 134 &device,
135 &options2)) != 5) { 135 &options2)) != 5) {
@@ -162,10 +162,10 @@ Index: systemd-196/src/core/mount.c
162 if (k == EOF) 162 if (k == EOF)
163 break; 163 break;
164 164
165Index: systemd-196/src/core/umount.c 165Index: systemd-198/src/core/umount.c
166=================================================================== 166===================================================================
167--- systemd-196.orig/src/core/umount.c 2012-11-16 09:32:41.000000000 -0800 167--- systemd-198.orig/src/core/umount.c 2013-03-07 13:18:34.000000000 -0800
168+++ systemd-196/src/core/umount.c 2013-01-21 16:10:46.811537609 -0800 168+++ systemd-198/src/core/umount.c 2013-03-09 14:49:03.760572872 -0800
169@@ -36,6 +36,8 @@ 169@@ -36,6 +36,8 @@
170 #include "util.h" 170 #include "util.h"
171 #include "virt.h" 171 #include "virt.h"
@@ -235,20 +235,20 @@ Index: systemd-196/src/core/umount.c
235 if (k == EOF) 235 if (k == EOF)
236 break; 236 break;
237 237
238Index: systemd-196/src/shared/socket-util.c 238Index: systemd-198/src/shared/socket-util.c
239=================================================================== 239===================================================================
240--- systemd-196.orig/src/shared/socket-util.c 2012-11-14 13:21:15.000000000 -0800 240--- systemd-198.orig/src/shared/socket-util.c 2013-03-07 13:18:34.000000000 -0800
241+++ systemd-196/src/shared/socket-util.c 2013-01-21 16:10:46.811537609 -0800 241+++ systemd-198/src/shared/socket-util.c 2013-03-09 14:49:03.760572872 -0800
242@@ -39,6 +39,8 @@ 242@@ -40,6 +40,8 @@
243 #include "socket-util.h"
244 #include "missing.h" 243 #include "missing.h"
244 #include "fileio.h"
245 245
246+#include "config.h" 246+#include "config.h"
247+ 247+
248 int socket_address_parse(SocketAddress *a, const char *s) { 248 int socket_address_parse(SocketAddress *a, const char *s) {
249 int r; 249 int r;
250 char *e, *n; 250 char *e, *n;
251@@ -202,8 +204,16 @@ 251@@ -203,8 +205,16 @@
252 a->type = SOCK_RAW; 252 a->type = SOCK_RAW;
253 253
254 errno = 0; 254 errno = 0;
@@ -266,10 +266,10 @@ Index: systemd-196/src/shared/socket-util.c
266 266
267 family = netlink_family_from_string(sfamily); 267 family = netlink_family_from_string(sfamily);
268 if (family < 0) 268 if (family < 0)
269Index: systemd-196/src/tmpfiles/tmpfiles.c 269Index: systemd-198/src/tmpfiles/tmpfiles.c
270=================================================================== 270===================================================================
271--- systemd-196.orig/src/tmpfiles/tmpfiles.c 2012-10-23 16:06:30.000000000 -0700 271--- systemd-198.orig/src/tmpfiles/tmpfiles.c 2013-03-07 13:18:34.000000000 -0800
272+++ systemd-196/src/tmpfiles/tmpfiles.c 2013-01-21 16:10:46.811537609 -0800 272+++ systemd-198/src/tmpfiles/tmpfiles.c 2013-03-09 14:55:40.772566599 -0800
273@@ -51,6 +51,8 @@ 273@@ -51,6 +51,8 @@
274 #include "conf-files.h" 274 #include "conf-files.h"
275 #include "capability.h" 275 #include "capability.h"
@@ -279,26 +279,25 @@ Index: systemd-196/src/tmpfiles/tmpfiles.c
279 /* This reads all files listed in /etc/tmpfiles.d/?*.conf and creates 279 /* This reads all files listed in /etc/tmpfiles.d/?*.conf and creates
280 * them in the file system. This is intended to be used to create 280 * them in the file system. This is intended to be used to create
281 * properly owned directories beneath /tmp, /var/tmp, /run, which are 281 * properly owned directories beneath /tmp, /var/tmp, /run, which are
282@@ -990,7 +992,7 @@ 282@@ -993,6 +995,7 @@
283 i = new0(Item, 1);
284 if (!i) 283 if (!i)
285 return log_oom(); 284 return log_oom();
286- 285
287+#ifdef HAVE_MSFORMAT 286+#ifdef HAVE_MSFORMAT
288 if (sscanf(buffer, 287 r = sscanf(buffer,
289 "%c " 288 "%c %ms %ms %ms %ms %ms %n",
290 "%ms " 289 &type,
291@@ -1006,6 +1008,28 @@ 290@@ -1002,6 +1005,29 @@
292 &group, 291 &group,
293 &age, 292 &age,
294 &n) < 2) { 293 &n);
295+#else 294+#else
296+ i->path = malloc(257); 295+ i->path = malloc(257);
297+ mode = malloc(257); 296+ mode = malloc(257);
298+ user = malloc(257); 297+ user = malloc(257);
299+ group = malloc(257); 298+ group = malloc(257);
300+ age = malloc(257); 299+ age = malloc(257);
301+ if (sscanf(buffer, 300+ r = sscanf(buffer,
302+ "%c " 301+ "%c "
303+ "%256s " 302+ "%256s "
304+ "%256s " 303+ "%256s "
@@ -312,38 +311,39 @@ Index: systemd-196/src/tmpfiles/tmpfiles.c
312+ user, 311+ user,
313+ group, 312+ group,
314+ age, 313+ age,
315+ &n) < 2) { 314+ &n);
316+#endif /* HAVE_MSFORMAT */ 315+#endif /* HAVE_MSFORMAT */
316+
317 if (r < 2) {
317 log_error("[%s:%u] Syntax error.", fname, line); 318 log_error("[%s:%u] Syntax error.", fname, line);
318 r = -EIO; 319 r = -EIO;
319 goto finish; 320Index: systemd-198/src/cryptsetup/cryptsetup-generator.c
320Index: systemd-196/src/cryptsetup/cryptsetup-generator.c
321=================================================================== 321===================================================================
322--- systemd-196.orig/src/cryptsetup/cryptsetup-generator.c 2012-08-08 14:53:24.000000000 -0700 322--- systemd-198.orig/src/cryptsetup/cryptsetup-generator.c 2013-03-07 13:18:34.000000000 -0800
323+++ systemd-196/src/cryptsetup/cryptsetup-generator.c 2013-01-21 16:10:46.811537609 -0800 323+++ systemd-198/src/cryptsetup/cryptsetup-generator.c 2013-03-09 14:51:33.080571639 -0800
324@@ -30,6 +30,8 @@ 324@@ -31,6 +31,8 @@
325 #include "virt.h"
326 #include "strv.h" 325 #include "strv.h"
326 #include "fileio.h"
327 327
328+#include "config.h" 328+#include "config.h"
329+ 329+
330 static const char *arg_dest = "/tmp"; 330 static const char *arg_dest = "/tmp";
331 static bool arg_enabled = true; 331 static bool arg_enabled = true;
332 static bool arg_read_crypttab = true; 332 static bool arg_read_crypttab = true;
333@@ -421,8 +423,15 @@ 333@@ -395,7 +397,16 @@
334 l = strstrip(line); 334 if (*l == '#' || *l == 0)
335 if (*l == '#' || *l == 0) 335 continue;
336 continue; 336
337-
338+#ifdef HAVE_MSFORMAT 337+#ifdef HAVE_MSFORMAT
339 k = sscanf(l, "%ms %ms %ms %ms", &name, &device, &password, &options); 338 k = sscanf(l, "%ms %ms %ms %ms", &name, &device, &password, &options);
340+#else 339+#else
341+ name = malloc(257); 340+ name = malloc(257);
342+ device = malloc(257); 341+ device = malloc(257);
343+ password = malloc(257); 342+ password = malloc(257);
344+ options = malloc(257); 343+ options = malloc(257);
345+ k = sscanf(l, "%256s %256s %256s %256s", name, device, password, options); 344+ k = sscanf(l, "%256s %256s %256s %256s", name, device, password, options);
346+#endif /* HAVE_MSFORMAT */ 345+#endif /* HAVE_MSFORMAT */
347 if (k < 2 || k > 4) { 346+
348 log_error("Failed to parse /etc/crypttab:%u, ignoring.", n); 347 if (k < 2 || k > 4) {
349 r = EXIT_FAILURE; 348 log_error("Failed to parse /etc/crypttab:%u, ignoring.", n);
349 r = EXIT_FAILURE;
diff --git a/meta/recipes-core/systemd/systemd/udev-linkage.patch b/meta/recipes-core/systemd/systemd/udev-linkage.patch
deleted file mode 100644
index a0d9b4c876..0000000000
--- a/meta/recipes-core/systemd/systemd/udev-linkage.patch
+++ /dev/null
@@ -1,62 +0,0 @@
1Don't cause libudev to link against libsystemd-daemon.
2
3Upstream-Status: Backport
4Signed-off-by: Ross Burton <ross.burton@intel.com>
5
6From 8ee37c2bed1d452d566abf85b0cdf732b7ca029a Mon Sep 17 00:00:00 2001
7From: Kay Sievers <kay@vrfy.org>
8Date: Thu, 7 Feb 2013 13:47:46 +0100
9Subject: [PATCH] build-sys: at least for now, never link libudev against
10 systemd's shared libraries
11
12---
13 Makefile.am | 12 +++++++++---
14 1 file changed, 9 insertions(+), 3 deletions(-)
15
16diff --git a/Makefile.am b/Makefile.am
17index 474110a..0e6c88f 100644
18--- a/Makefile.am
19+++ b/Makefile.am
20@@ -811,8 +811,6 @@ libsystemd_shared_la_SOURCES = \
21 src/shared/calendarspec.c \
22 src/shared/calendarspec.h
23
24-libsystemd_shared_la_LIBADD = libsystemd-daemon.la
25-
26 #-------------------------------------------------------------------------------
27 noinst_LTLIBRARIES += \
28 libsystemd-dbus.la
29@@ -1662,6 +1660,9 @@ systemd_tty_ask_password_agent_LDADD = \
30 libsystemd_daemon_la_SOURCES = \
31 src/libsystemd-daemon/sd-daemon.c
32
33+libsystemd_daemon_internal_la_SOURCES = \
34+ $(libsystemd_daemon_la_SOURCES)
35+
36 libsystemd_daemon_la_CFLAGS = \
37 $(AM_CFLAGS) \
38 -fvisibility=hidden \
39@@ -1689,6 +1690,9 @@ UNINSTALL_EXEC_HOOKS += libsystemd-daemon-uninstall-hook
40 lib_LTLIBRARIES += \
41 libsystemd-daemon.la
42
43+noinst_LTLIBRARIES += \
44+ libsystemd-daemon-internal.la
45+
46 pkgconfiglib_DATA += \
47 src/libsystemd-daemon/libsystemd-daemon.pc
48
49@@ -1768,7 +1772,9 @@ libudev_la_LDFLAGS = \
50 -Wl,--version-script=$(top_srcdir)/src/libudev/libudev.sym
51
52 libudev_la_LIBADD = \
53- libsystemd-shared.la
54+ libsystemd-shared.la \
55+ libsystemd-daemon-internal.la \
56+ libsystemd-id128-internal.la
57
58 pkgconfiglib_DATA += \
59 src/libudev/libudev.pc
60--
611.7.10.4
62
diff --git a/meta/recipes-core/systemd/systemd_197.bb b/meta/recipes-core/systemd/systemd_199.bb
index 5180eef2b3..ba1d13390d 100644
--- a/meta/recipes-core/systemd/systemd_197.bb
+++ b/meta/recipes-core/systemd/systemd_199.bb
@@ -9,14 +9,13 @@ LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
9PROVIDES = "udev" 9PROVIDES = "udev"
10 10
11PE = "1" 11PE = "1"
12PR = "r4"
13 12
14DEPENDS = "xz kmod docbook-sgml-dtd-4.1-native intltool-native gperf-native acl readline dbus libcap libcgroup tcp-wrappers glib-2.0" 13DEPENDS = "kmod docbook-sgml-dtd-4.1-native intltool-native gperf-native acl readline dbus libcap libcgroup tcp-wrappers glib-2.0"
15DEPENDS += "${@base_contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}" 14DEPENDS += "${@base_contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
16 15
17SECTION = "base/shell" 16SECTION = "base/shell"
18 17
19inherit gtk-doc useradd pkgconfig autotools perlnative 18inherit gtk-doc useradd pkgconfig autotools perlnative update-rc.d
20 19
21SRC_URI = "http://www.freedesktop.org/software/systemd/systemd-${PV}.tar.xz \ 20SRC_URI = "http://www.freedesktop.org/software/systemd/systemd-${PV}.tar.xz \
22 file://touchscreen.rules \ 21 file://touchscreen.rules \
@@ -24,11 +23,13 @@ SRC_URI = "http://www.freedesktop.org/software/systemd/systemd-${PV}.tar.xz \
24 file://var-run.conf \ 23 file://var-run.conf \
25 ${UCLIBCPATCHES} \ 24 ${UCLIBCPATCHES} \
26 file://00-create-volatile.conf \ 25 file://00-create-volatile.conf \
27 file://0001-systemd-analyze-rewrite-in-C.patch \ 26 file://0002-readahead-chunk-on-spinning-media.patch \
28 file://udev-linkage.patch \ 27 file://0003-readahead-cleanups.patch \
28 file://0013-systemd-sysctl-Handle-missing-etc-sysctl.conf-proper.patch \
29 file://init \
29 " 30 "
30SRC_URI[md5sum] = "56a860dceadfafe59f40141eb5223743" 31SRC_URI[md5sum] = "4bb13f84ce211e93f0141774a90a2322"
31SRC_URI[sha256sum] = "e6857ea21ae24d7056e7b0f4c2aaaba73b8bf57025b8949c0a8af0c1bc9774b5" 32SRC_URI[sha256sum] = "8c4462a04f3ecf7f083782e5e0687913b1d33c6444bf20fa2f31df9222965fed"
32 33
33UCLIBCPATCHES = "" 34UCLIBCPATCHES = ""
34UCLIBCPATCHES_libc-uclibc = "file://systemd-pam-configure-check-uclibc.patch \ 35UCLIBCPATCHES_libc-uclibc = "file://systemd-pam-configure-check-uclibc.patch \
@@ -43,9 +44,11 @@ LDFLAGS_libc-uclibc_append = " -lrt"
43 44
44GTKDOC_DOCDIR = "${S}/docs/" 45GTKDOC_DOCDIR = "${S}/docs/"
45 46
46PACKAGECONFIG ??= "" 47PACKAGECONFIG ??= "xz"
47# Sign the journal for anti-tampering 48# Sign the journal for anti-tampering
48PACKAGECONFIG[gcrypt] = "--enable-gcrypt,--disable-gcrypt,libgcrypt" 49PACKAGECONFIG[gcrypt] = "--enable-gcrypt,--disable-gcrypt,libgcrypt"
50# Compress the journal
51PACKAGECONFIG[xz] = "--enable-xz,--disable-xz,xz"
49 52
50CACHED_CONFIGUREVARS = "ac_cv_path_KILL=${base_bindir}/kill" 53CACHED_CONFIGUREVARS = "ac_cv_path_KILL=${base_bindir}/kill"
51 54
@@ -59,7 +62,6 @@ EXTRA_OECONF = " --with-rootprefix=${base_prefix} \
59 --disable-manpages \ 62 --disable-manpages \
60 --disable-coredump \ 63 --disable-coredump \
61 --disable-introspection \ 64 --disable-introspection \
62 --with-pci-ids-path=/usr/share/misc \
63 --disable-tcpwrap \ 65 --disable-tcpwrap \
64 --enable-split-usr \ 66 --enable-split-usr \
65 --disable-microhttpd \ 67 --disable-microhttpd \
@@ -99,6 +101,11 @@ do_install() {
99 install -m 0644 ${WORKDIR}/var-run.conf ${D}${sysconfdir}/tmpfiles.d/ 101 install -m 0644 ${WORKDIR}/var-run.conf ${D}${sysconfdir}/tmpfiles.d/
100 102
101 install -m 0644 ${WORKDIR}/00-create-volatile.conf ${D}${sysconfdir}/tmpfiles.d/ 103 install -m 0644 ${WORKDIR}/00-create-volatile.conf ${D}${sysconfdir}/tmpfiles.d/
104
105 if ${@base_contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
106 install -d ${D}${sysconfdir}/init.d
107 install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/systemd-udevd
108 fi
102} 109}
103 110
104python populate_packages_prepend (){ 111python populate_packages_prepend (){
@@ -107,10 +114,10 @@ python populate_packages_prepend (){
107} 114}
108PACKAGES_DYNAMIC += "^lib(udev|gudev|systemd).*" 115PACKAGES_DYNAMIC += "^lib(udev|gudev|systemd).*"
109 116
110PACKAGES =+ "${PN}-gui ${PN}-vconsole-setup ${PN}-initramfs ${PN}-analyze" 117PACKAGES =+ "${PN}-gui ${PN}-vconsole-setup ${PN}-initramfs ${PN}-analyze ${PN}-kernel-install"
111 118
112USERADD_PACKAGES = "${PN}" 119USERADD_PACKAGES = "${PN}"
113GROUPADD_PARAM_${PN} = "-r lock" 120GROUPADD_PARAM_${PN} = "-r lock; -r systemd-journal"
114 121
115FILES_${PN}-analyze = "${base_bindir}/systemd-analyze" 122FILES_${PN}-analyze = "${base_bindir}/systemd-analyze"
116 123
@@ -123,6 +130,10 @@ FILES_${PN}-vconsole-setup = "${systemd_unitdir}/systemd-vconsole-setup \
123 ${systemd_unitdir}/system/systemd-vconsole-setup.service \ 130 ${systemd_unitdir}/system/systemd-vconsole-setup.service \
124 ${systemd_unitdir}/system/sysinit.target.wants/systemd-vconsole-setup.service" 131 ${systemd_unitdir}/system/sysinit.target.wants/systemd-vconsole-setup.service"
125 132
133FILES_${PN}-kernel-install = "${bindir}/kernel-install \
134 ${sysconfdir}/kernel/ \
135 ${exec_prefix}/lib/kernel \
136 "
126RRECOMMENDS_${PN}-vconsole-setup = "kbd kbd-consolefonts" 137RRECOMMENDS_${PN}-vconsole-setup = "kbd kbd-consolefonts"
127 138
128CONFFILES_${PN} = "${sysconfdir}/systemd/journald.conf \ 139CONFFILES_${PN} = "${sysconfdir}/systemd/journald.conf \
@@ -131,6 +142,7 @@ CONFFILES_${PN} = "${sysconfdir}/systemd/journald.conf \
131 ${sysconfdir}/systemd/user.conf" 142 ${sysconfdir}/systemd/user.conf"
132 143
133FILES_${PN} = " ${base_bindir}/* \ 144FILES_${PN} = " ${base_bindir}/* \
145 ${datadir}/bash-completion \
134 ${datadir}/dbus-1/services \ 146 ${datadir}/dbus-1/services \
135 ${datadir}/dbus-1/system-services \ 147 ${datadir}/dbus-1/system-services \
136 ${datadir}/polkit-1 \ 148 ${datadir}/polkit-1 \
@@ -155,6 +167,8 @@ FILES_${PN} = " ${base_bindir}/* \
155 ${bindir}/localectl \ 167 ${bindir}/localectl \
156 ${bindir}/hostnamectl \ 168 ${bindir}/hostnamectl \
157 ${bindir}/timedatectl \ 169 ${bindir}/timedatectl \
170 ${bindir}/bootctl \
171 ${bindir}/kernel-install \
158 ${exec_prefix}/lib/tmpfiles.d/*.conf \ 172 ${exec_prefix}/lib/tmpfiles.d/*.conf \
159 ${exec_prefix}/lib/systemd \ 173 ${exec_prefix}/lib/systemd \
160 ${exec_prefix}/lib/binfmt.d \ 174 ${exec_prefix}/lib/binfmt.d \
@@ -171,21 +185,21 @@ FILES_${PN} = " ${base_bindir}/* \
171FILES_${PN}-dbg += "${systemd_unitdir}/.debug ${systemd_unitdir}/*/.debug ${base_libdir}/security/.debug/" 185FILES_${PN}-dbg += "${systemd_unitdir}/.debug ${systemd_unitdir}/*/.debug ${base_libdir}/security/.debug/"
172FILES_${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd" 186FILES_${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd"
173 187
174RDEPENDS_${PN} += "dbus udev-systemd" 188RDEPENDS_${PN} += "dbus"
175 189
176RRECOMMENDS_${PN} += "systemd-serialgetty \ 190RRECOMMENDS_${PN} += "systemd-serialgetty systemd-compat-units \
177 util-linux-agetty \ 191 util-linux-agetty \
178 util-linux-fsck e2fsprogs-e2fsck \ 192 util-linux-fsck e2fsprogs-e2fsck \
179 kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 \ 193 kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 \
180" 194"
181 195
182PACKAGES =+ "udev-dbg udev udev-consolekit udev-utils udev-systemd" 196PACKAGES =+ "udev-dbg udev udev-consolekit udev-utils udev-hwdb"
183 197
184FILES_udev-dbg += "/lib/udev/.debug" 198FILES_udev-dbg += "/lib/udev/.debug"
185 199
186RDEPENDS_udev += "udev-utils" 200RDEPENDS_udev += "udev-utils"
187RPROVIDES_udev = "hotplug" 201RPROVIDES_udev = "hotplug"
188RRECOMMENDS_udev += "udev-extraconf usbutils-ids pciutils-ids" 202RRECOMMENDS_udev += "udev-extraconf udev-hwdb"
189 203
190FILES_udev += "${base_sbindir}/udevd \ 204FILES_udev += "${base_sbindir}/udevd \
191 ${base_libdir}/systemd/systemd-udevd \ 205 ${base_libdir}/systemd/systemd-udevd \
@@ -208,17 +222,22 @@ FILES_udev += "${base_sbindir}/udevd \
208 /lib/udev/rules.d/78*.rules \ 222 /lib/udev/rules.d/78*.rules \
209 /lib/udev/rules.d/8*.rules \ 223 /lib/udev/rules.d/8*.rules \
210 /lib/udev/rules.d/95*.rules \ 224 /lib/udev/rules.d/95*.rules \
211 ${base_libdir}/udev/hwdb.d \
212 ${sysconfdir}/udev \ 225 ${sysconfdir}/udev \
226 ${sysconfdir}/init.d/systemd-udevd \
227 ${systemd_unitdir}/system/*udev* \
228 ${systemd_unitdir}/system/*.wants/*udev* \
213 " 229 "
214 230
215FILES_udev-consolekit += "/lib/ConsoleKit" 231FILES_udev-consolekit += "/lib/ConsoleKit"
216RDEPENDS_udev-consolekit += "${@base_contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d)}" 232RDEPENDS_udev-consolekit += "${@base_contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d)}"
217 233
218FILES_udev-utils = "${bindir}/udevadm" 234FILES_udev-utils = "${base_bindir}/udevadm ${datadir}/bash-completion/completions/udevadm"
235
236FILES_udev-hwdb = "${base_libdir}/udev/hwdb.d"
219 237
220FILES_udev-systemd = "${systemd_unitdir}/system/*udev* ${systemd_unitdir}/system/*.wants/*udev*" 238INITSCRIPT_PACKAGES = "udev"
221RDEPENDS_udev-systemd = "udev" 239INITSCRIPT_NAME_udev = "systemd-udevd"
240INITSCRIPT_PARAMS_udev = "start 03 S ."
222 241
223# TODO: 242# TODO:
224# u-a for runlevel and telinit 243# u-a for runlevel and telinit
@@ -239,6 +258,21 @@ update-alternatives --remove shutdown ${base_bindir}/systemctl
239update-alternatives --remove poweroff ${base_bindir}/systemctl 258update-alternatives --remove poweroff ${base_bindir}/systemctl
240} 259}
241 260
261pkg_postinst_udev-hwdb () {
262 if test -n "$D"; then
263 exit 1
264 fi
265
266 udevadm hwdb --update
267}
268
269pkg_prerm_udev-hwdb () {
270 if test -n "$D"; then
271 exit 1
272 fi
273
274 rm -f ${sysconfdir}/udev/hwdb.bin
275}
242 276
243# As this recipe builds udev, respect the systemd DISTRO_FEATURE so we don't try 277# As this recipe builds udev, respect the systemd DISTRO_FEATURE so we don't try
244# building udev and systemd in world builds. 278# building udev and systemd in world builds.
diff --git a/meta/recipes-core/sysvinit/sysvinit/rc b/meta/recipes-core/sysvinit/sysvinit/rc
index 44bc9bfd74..655a0b067c 100755
--- a/meta/recipes-core/sysvinit/sysvinit/rc
+++ b/meta/recipes-core/sysvinit/sysvinit/rc
@@ -171,7 +171,7 @@ startup() {
171 fi 171 fi
172 172
173#Uncomment to cause psplash to exit manually, otherwise it exits when it sees a VC switch 173#Uncomment to cause psplash to exit manually, otherwise it exits when it sees a VC switch
174if [ "x$runlevel" != "xS" ] && [ ! -x /etc/init.d/xserver-nodm ]; then 174if [ "x$runlevel" != "xS" ] && [ ! -x /etc/rc${runlevel}.d/S??xserver-nodm ]; then
175 if type psplash-write >/dev/null 2>&1; then 175 if type psplash-write >/dev/null 2>&1; then
176 TMPDIR=/mnt/.psplash psplash-write "QUIT" || true 176 TMPDIR=/mnt/.psplash psplash-write "QUIT" || true
177 umount /mnt/.psplash 177 umount /mnt/.psplash
diff --git a/meta/recipes-core/uclibc/uclibc-git.inc b/meta/recipes-core/uclibc/uclibc-git.inc
index ed9b5fd1c4..db00ee6243 100644
--- a/meta/recipes-core/uclibc/uclibc-git.inc
+++ b/meta/recipes-core/uclibc/uclibc-git.inc
@@ -1,4 +1,4 @@
1SRCREV="9591091f150e8a86c47efbea5def21fa67fffb07" 1SRCREV="946799cd0ce0c6c803c9cb173a84f4d607bde350"
2 2
3DEFAULT_PREFERENCE = "-1" 3DEFAULT_PREFERENCE = "-1"
4 4
@@ -16,13 +16,12 @@ SRC_URI = "git://uclibc.org/uClibc.git;branch=master;protocol=git \
16 file://argp-headers.patch \ 16 file://argp-headers.patch \
17 file://remove_attribute_optimize_Os.patch \ 17 file://remove_attribute_optimize_Os.patch \
18 file://compile-arm-fork-with-O2.patch \ 18 file://compile-arm-fork-with-O2.patch \
19 file://uclibc-execvpe.patch \
20 file://orign_path.patch \ 19 file://orign_path.patch \
21 file://posix_fallocate.patch \
22 file://0001-atexit_old-Do-not-add-it-to-shared-libc.patch \ 20 file://0001-atexit_old-Do-not-add-it-to-shared-libc.patch \
23 file://0001-nptl-arm-Move-aeabi_read_tp-to-uclibc_nonshared.a.patch \ 21 file://0001-nptl-arm-Move-aeabi_read_tp-to-uclibc_nonshared.a.patch \
24 file://0001-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch \ 22 file://0001-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch \
25 file://0001-librt-Use-nodefaultlibs-instead-of-nostdlib.patch \ 23 file://0001-librt-Use-nodefaultlibs-instead-of-nostdlib.patch \
26 file://0001-Revert-utent.c-wtent.c-move-functions-from-utxent.c.patch \ 24 file://0001-Revert-utent.c-wtent.c-move-functions-from-utxent.c.patch \
25 file://0001-i386-sysdep.h-Remove-STABS_-macros.patch \
27 " 26 "
28S = "${WORKDIR}/git" 27S = "${WORKDIR}/git"
diff --git a/meta/recipes-core/uclibc/uclibc-git/0001-i386-sysdep.h-Remove-STABS_-macros.patch b/meta/recipes-core/uclibc/uclibc-git/0001-i386-sysdep.h-Remove-STABS_-macros.patch
new file mode 100644
index 0000000000..8512c456a5
--- /dev/null
+++ b/meta/recipes-core/uclibc/uclibc-git/0001-i386-sysdep.h-Remove-STABS_-macros.patch
@@ -0,0 +1,71 @@
1Upstream-Status: Submitted
2
3-Khem
4
5From e20fd2c2427be981c16cb936cc6866d08520de9b Mon Sep 17 00:00:00 2001
6From: Khem Raj <raj.khem@gmail.com>
7Date: Mon, 25 Mar 2013 19:34:39 -0700
8Subject: [PATCH] i386/sysdep.h: Remove STABS_* macros
9
10uclibc is compiled with elf/dwarf and secondly HAVE_CPP_ASM_DEBUGINFO
11is not defined so we generate bogus .stab sections needlessly
12
13Some of post processing tools get confused when they see both
14dwarf and stab sections
15
16Signed-off-by: Khem Raj <raj.khem@gmail.com>
17---
18 libc/sysdeps/linux/i386/sysdep.h | 27 ---------------------------
19 1 file changed, 27 deletions(-)
20
21diff --git a/libc/sysdeps/linux/i386/sysdep.h b/libc/sysdeps/linux/i386/sysdep.h
22index 983c4f5..7a8d2e2 100644
23--- a/libc/sysdeps/linux/i386/sysdep.h
24+++ b/libc/sysdeps/linux/i386/sysdep.h
25@@ -43,12 +43,9 @@
26 incomplete stabs information. Fake some entries here which specify
27 the current source file. */
28 #define ENTRY(name) \
29- STABS_CURRENT_FILE1("") \
30- STABS_CURRENT_FILE(name) \
31 ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \
32 ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
33 .align ALIGNARG(4); \
34- STABS_FUN(name) \
35 C_LABEL(name) \
36 cfi_startproc; \
37 CALL_MCOUNT
38@@ -57,30 +54,6 @@
39 #define END(name) \
40 cfi_endproc; \
41 ASM_SIZE_DIRECTIVE(name) \
42- STABS_FUN_END(name)
43-
44-#ifdef HAVE_CPP_ASM_DEBUGINFO
45-/* Disable that goop, because we just pass -g through to the assembler
46- and it generates proper line number information directly. */
47-# define STABS_CURRENT_FILE1(name)
48-# define STABS_CURRENT_FILE(name)
49-# define STABS_FUN(name)
50-# define STABS_FUN_END(name)
51-#else
52-/* Remove the following two lines once the gdb bug is fixed. */
53-#define STABS_CURRENT_FILE(name) \
54- STABS_CURRENT_FILE1 (#name)
55-#define STABS_CURRENT_FILE1(name) \
56- 1: .stabs name,100,0,0,1b;
57-/* Emit stabs definition lines. We use F(0,1) and define t(0,1) as `int',
58- the same way gcc does it. */
59-#define STABS_FUN(name) STABS_FUN2(name, name##:F(0,1))
60-#define STABS_FUN2(name, namestr) \
61- .stabs "int:t(0,1)=r(0,1);-2147483648;2147483647;",128,0,0,0; \
62- .stabs #namestr,36,0,0,name;
63-#define STABS_FUN_END(name) \
64- 1: .stabs "",36,0,0,1b-name;
65-#endif
66
67 /* If compiled for profiling, call `mcount' at the start of each function. */
68 #ifdef PROF
69--
701.7.9.5
71
diff --git a/meta/recipes-core/uclibc/uclibc-git/0001-nptl-arm-Move-aeabi_read_tp-to-uclibc_nonshared.a.patch b/meta/recipes-core/uclibc/uclibc-git/0001-nptl-arm-Move-aeabi_read_tp-to-uclibc_nonshared.a.patch
index 407beb657b..7fc5bd3d74 100644
--- a/meta/recipes-core/uclibc/uclibc-git/0001-nptl-arm-Move-aeabi_read_tp-to-uclibc_nonshared.a.patch
+++ b/meta/recipes-core/uclibc/uclibc-git/0001-nptl-arm-Move-aeabi_read_tp-to-uclibc_nonshared.a.patch
@@ -13,12 +13,12 @@ Upstream-Status: Pending
13 13
14Index: git/libc/sysdeps/linux/arm/Makefile.arch 14Index: git/libc/sysdeps/linux/arm/Makefile.arch
15=================================================================== 15===================================================================
16--- git.orig/libc/sysdeps/linux/arm/Makefile.arch 2013-01-21 16:29:25.000000000 -0800 16--- git.orig/libc/sysdeps/linux/arm/Makefile.arch 2013-03-25 19:48:48.000000000 -0700
17+++ git/libc/sysdeps/linux/arm/Makefile.arch 2013-01-21 16:33:11.575571091 -0800 17+++ git/libc/sysdeps/linux/arm/Makefile.arch 2013-03-25 19:51:57.496677771 -0700
18@@ -12,7 +12,10 @@ 18@@ -13,7 +13,10 @@
19 bsd-_setjmp.S sigrestorer.S mmap64.S \
20 vfork.S clone.S 19 vfork.S clone.S
21 20
21 SSRC-$(UCLIBC_HAS_LFS) += mmap64.S
22-SSRC-$(UCLIBC_HAS_THREADS_NATIVE) += libc-aeabi_read_tp.S libc-thumb_atomics.S 22-SSRC-$(UCLIBC_HAS_THREADS_NATIVE) += libc-aeabi_read_tp.S libc-thumb_atomics.S
23+SSRC-$(UCLIBC_HAS_THREADS_NATIVE) += libc-thumb_atomics.S 23+SSRC-$(UCLIBC_HAS_THREADS_NATIVE) += libc-thumb_atomics.S
24+libc-nonshared-$(UCLIBC_HAS_THREADS_NATIVE) += $(ARCH_OUT)/libc-aeabi_read_tp.os 24+libc-nonshared-$(UCLIBC_HAS_THREADS_NATIVE) += $(ARCH_OUT)/libc-aeabi_read_tp.os
diff --git a/meta/recipes-core/uclibc/uclibc-git/posix_fallocate.patch b/meta/recipes-core/uclibc/uclibc-git/posix_fallocate.patch
deleted file mode 100644
index 46448babcb..0000000000
--- a/meta/recipes-core/uclibc/uclibc-git/posix_fallocate.patch
+++ /dev/null
@@ -1,408 +0,0 @@
1Delivered-To: raj.khem@gmail.com
2Received: by 10.152.129.134 with SMTP id nw6csp47712lab;
3 Tue, 17 Apr 2012 00:30:48 -0700 (PDT)
4Received: by 10.68.216.167 with SMTP id or7mr34112133pbc.140.1334647840512;
5 Tue, 17 Apr 2012 00:30:40 -0700 (PDT)
6Return-Path: <uclibc-bounces@uclibc.org>
7Received: from hemlock.osuosl.org (hemlock.osuosl.org. [140.211.166.133])
8 by mx.google.com with ESMTP id gr10si13305623pbc.339.2012.04.17.00.30.39;
9 Tue, 17 Apr 2012 00:30:40 -0700 (PDT)
10Received-SPF: neutral (google.com: 140.211.166.133 is neither permitted nor denied by best guess record for domain of uclibc-bounces@uclibc.org) client-ip=140.211.166.133;
11Authentication-Results: mx.google.com; spf=neutral (google.com: 140.211.166.133 is neither permitted nor denied by best guess record for domain of uclibc-bounces@uclibc.org) smtp.mail=uclibc-bounces@uclibc.org; dkim=neutral (body hash did not verify) header.i=@gmail.com
12Received: from localhost (localhost [127.0.0.1])
13 by hemlock.osuosl.org (Postfix) with ESMTP id 7C494A0277;
14 Tue, 17 Apr 2012 07:30:39 +0000 (UTC)
15X-Virus-Scanned: amavisd-new at osuosl.org
16Received: from hemlock.osuosl.org ([127.0.0.1])
17 by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)
18 with ESMTP id ZsSp5xE48GwC; Tue, 17 Apr 2012 07:30:34 +0000 (UTC)
19Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34])
20 by hemlock.osuosl.org (Postfix) with ESMTP id 1C4F5A0274;
21 Tue, 17 Apr 2012 07:30:33 +0000 (UTC)
22X-Original-To: uclibc@lists.busybox.net
23Delivered-To: uclibc@osuosl.org
24Received: from fraxinus.osuosl.org (fraxinus.osuosl.org [140.211.166.137])
25 by ash.osuosl.org (Postfix) with ESMTP id 17FDE8F75B
26 for <uclibc@lists.busybox.net>; Tue, 17 Apr 2012 07:30:32 +0000 (UTC)
27Received: from localhost (localhost [127.0.0.1])
28 by fraxinus.osuosl.org (Postfix) with ESMTP id 07B491016A1
29 for <uclibc@lists.busybox.net>; Tue, 17 Apr 2012 07:30:32 +0000 (UTC)
30X-Virus-Scanned: amavisd-new at osuosl.org
31Received: from fraxinus.osuosl.org ([127.0.0.1])
32 by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)
33 with ESMTP id XKP7jhcUijp4 for <uclibc@lists.busybox.net>;
34 Tue, 17 Apr 2012 07:30:27 +0000 (UTC)
35X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6
36Received: from mail-we0-f174.google.com (mail-we0-f174.google.com
37 [74.125.82.174])
38 by fraxinus.osuosl.org (Postfix) with ESMTPS id 2CC0B100190
39 for <uclibc@uclibc.org>; Tue, 17 Apr 2012 07:30:26 +0000 (UTC)
40Received: by wejx9 with SMTP id x9so5218587wej.33
41 for <uclibc@uclibc.org>; Tue, 17 Apr 2012 00:30:25 -0700 (PDT)
42DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
43 h=from:to:cc:subject:date:message-id:x-mailer;
44 bh=vadTQ1GL81XLDadHLtwCrcdL0YvVNNbIuISfTaQphgg=;
45 b=KkyW95PC1TUTmwGt+iBJ8p0FfGtTPAsTlXmul/1iH2p21itEpWkU+WcVd2jBH+jc6L
46 gzf4d6K1pmmfscdbPY3OkpFfvO/v/E4KYN7JmeI+fX1NY+gLBSHhExAVhM1Opue9z09V
47 54MrEMtlIA9Wo/5QPd1+W7o9gXHYEnMkoqYYZLmfPlG3+pCXZ6RP36fOZnSV44BQgOFz
48 KBqn7XLo6nxgP5X/+JuEe4stvCrI9/66nX30u/Sh77a9poj5pp8hQZmtIpbbm3xRKGnM
49 Fi72jNCq/0nHh3M7eMqn+rvwi1JQjk/90zWNv8v5ShAKqSJVrfqLVN72KjTJtXfLOqbL
50 e2qA==
51Received: by 10.216.133.72 with SMTP id p50mr8903959wei.78.1334647825412;
52 Tue, 17 Apr 2012 00:30:25 -0700 (PDT)
53Received: from s42.loc (85-127-86-115.dynamic.xdsl-line.inode.at.
54 [85.127.86.115])
55 by mx.google.com with ESMTPS id n20sm40466274wiw.5.2012.04.17.00.30.23
56 (version=TLSv1/SSLv3 cipher=OTHER);
57 Tue, 17 Apr 2012 00:30:24 -0700 (PDT)
58Received: from cow by s42.loc with local (Exim 4.77)
59 (envelope-from <rep.dot.nop@gmail.com>)
60 id 1SK2rm-0008Pl-V3; Tue, 17 Apr 2012 09:30:23 +0200
61From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
62To: uclibc@uclibc.org
63Subject: [PATCH,CFT] libc: add posix_fallocate()
64Date: Tue, 17 Apr 2012 09:30:15 +0200
65Message-Id: <1334647815-32315-1-git-send-email-rep.dot.nop@gmail.com>
66X-Mailer: git-send-email 1.7.9.1
67X-BeenThere: uclibc@uclibc.org
68X-Mailman-Version: 2.1.14
69Precedence: list
70List-Id: "Discussion and development of uClibc \(the embedded C library\)"
71 <uclibc.uclibc.org>
72List-Unsubscribe: <http://lists.busybox.net/mailman/options/uclibc>,
73 <mailto:uclibc-request@uclibc.org?subject=unsubscribe>
74List-Archive: <http://lists.busybox.net/pipermail/uclibc>
75List-Post: <mailto:uclibc@uclibc.org>
76List-Help: <mailto:uclibc-request@uclibc.org?subject=help>
77List-Subscribe: <http://lists.busybox.net/mailman/listinfo/uclibc>,
78 <mailto:uclibc-request@uclibc.org?subject=subscribe>
79MIME-Version: 1.0
80Content-Type: text/plain; charset="us-ascii"
81Content-Transfer-Encoding: 7bit
82Errors-To: uclibc-bounces@uclibc.org
83Sender: uclibc-bounces@uclibc.org
84
85Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
86Upstream-Status: Pending
87---
88 include/fcntl.h | 4 +-
89 libc/sysdeps/linux/common/Makefile.in | 3 +-
90 libc/sysdeps/linux/common/bits/kernel-features.h | 8 ++
91 libc/sysdeps/linux/common/posix_fallocate.c | 43 ++++++++
92 libc/sysdeps/linux/common/posix_fallocate64.c | 39 +++++++
93 libc/sysdeps/linux/common/stubs.c | 4 +
94 test/.gitignore | 1 +
95 test/unistd/Makefile.in | 3 +
96 test/unistd/tst-posix_fallocate.c | 121 ++++++++++++++++++++++
97 9 files changed, 222 insertions(+), 4 deletions(-)
98 create mode 100644 libc/sysdeps/linux/common/posix_fallocate.c
99 create mode 100644 libc/sysdeps/linux/common/posix_fallocate64.c
100 create mode 100644 test/unistd/tst-posix_fallocate.c
101
102Index: git/include/fcntl.h
103===================================================================
104--- git.orig/include/fcntl.h 2012-06-23 18:47:18.000000000 -0700
105+++ git/include/fcntl.h 2012-06-23 18:48:54.805911794 -0700
106@@ -218,9 +218,7 @@
107
108 #endif
109
110-#if 0 /* && defined __UCLIBC_HAS_ADVANCED_REALTIME__ */
111-
112-/* FIXME -- uClibc should probably implement these... */
113+#if defined __UCLIBC_HAS_ADVANCED_REALTIME__
114
115 /* Reserve storage for the data of the file associated with FD.
116
117Index: git/libc/sysdeps/linux/common/Makefile.in
118===================================================================
119--- git.orig/libc/sysdeps/linux/common/Makefile.in 2012-06-23 18:47:18.000000000 -0700
120+++ git/libc/sysdeps/linux/common/Makefile.in 2012-06-23 18:50:14.033915572 -0700
121@@ -81,7 +81,8 @@
122 sched_get_priority_max.c sched_get_priority_min.c sched_getscheduler.c \
123 sched_rr_get_interval.c sched_setparam.c sched_setscheduler.c sigqueue.c
124 # clock_getcpuclockid|clock_nanosleep|mq_timedreceive|mq_timedsend|posix_fadvise|posix_fallocate|posix_madvise|posix_memalign|posix_mem_offset|posix_spawnattr_destroy|posix_spawnattr_init|posix_spawnattr_getflags|posix_spawnattr_setflags|posix_spawnattr_getpgroup|posix_spawnattr_setpgroup|posix_spawnattr_getschedparam|posix_spawnattr_setschedparam|posix_spawnattr_getschedpolicy|posix_spawnattr_setschedpolicy|posix_spawnattr_getsigdefault|posix_spawnattr_setsigdefault|posix_spawnattr_getsigmask|posix_spawnattr_setsigmask|posix_spawnattr_init|posix_spawnattr_setflags|posix_spawnattr_setpgroup|posix_spawnattr_setschedparam|posix_spawnattr_setschedpolicy|posix_spawnattr_setsigdefault|posix_spawnattr_setsigmask|posix_spawn_file_actions_addclose|posix_spawn_file_actions_addopen|posix_spawn_file_actions_adddup2|posix_spawn_file_actions_addopen|posix_spawn_file_actions_destroy|posix_spawn_file_actions_init|posix_spawn_file_actions_init|posix_spawn|posix_spawnp|posix_spawnp|posix_typed_mem_get_info|pthread_mutex_timedlock|sem_timedwait
125-CSRC-$(UCLIBC_HAS_ADVANCED_REALTIME) += posix_fadvise64.c posix_fadvise.c posix_madvise.c
126+CSRC-$(UCLIBC_HAS_ADVANCED_REALTIME) += posix_fadvise64.c posix_fadvise.c posix_madvise.c \
127+ posix_fallocate.c posix_fallocate64.c
128 CSRC-$(UCLIBC_SUSV4_LEGACY) += utime.c
129 CSRC-$(UCLIBC_HAS_EPOLL) += epoll.c
130 CSRC-$(UCLIBC_HAS_XATTR) += xattr.c
131Index: git/libc/sysdeps/linux/common/bits/kernel-features.h
132===================================================================
133--- git.orig/libc/sysdeps/linux/common/bits/kernel-features.h 2012-06-23 18:47:18.000000000 -0700
134+++ git/libc/sysdeps/linux/common/bits/kernel-features.h 2012-06-23 18:48:54.805911794 -0700
135@@ -494,6 +494,14 @@
136 # define __ASSUME_PRIVATE_FUTEX 1
137 #endif
138
139+/* Support for fallocate was added in 2.6.23,
140+ on s390 only after 2.6.23-rc1, on alpha only after 2.6.33-rc1. */
141+#if __LINUX_KERNEL_VERSION >= 0x020617 \
142+ && (!defined __s390__ || __LINUX_KERNEL_VERSION >= 0x020618) \
143+ && (!defined __alpha__ || __LINUX_KERNEL_VERSION >= 0x020621)
144+# define __ASSUME_FALLOCATE 1
145+#endif
146+
147 /* getcpu is a syscall for x86-64 since 3.1. */
148 #if defined __x86_64__ && __LINUX_KERNEL_VERSION >= 0x030100
149 # define __ASSUME_GETCPU_SYSCALL 1
150Index: git/libc/sysdeps/linux/common/posix_fallocate.c
151===================================================================
152--- /dev/null 1970-01-01 00:00:00.000000000 +0000
153+++ git/libc/sysdeps/linux/common/posix_fallocate.c 2012-06-23 18:48:54.825911795 -0700
154@@ -0,0 +1,43 @@
155+/* vi: set sw=4 ts=4: */
156+/*
157+ * posix_fallocate() for uClibc
158+ * http://www.opengroup.org/onlinepubs/9699919799/functions/posix_fallocate.html
159+ *
160+ * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
161+ *
162+ * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
163+ */
164+
165+#include <sys/syscall.h>
166+#include <fcntl.h>
167+#include <bits/kernel-features.h>
168+#include <stdint.h>
169+
170+#if defined __NR_fallocate
171+int posix_fallocate(int fd, __off_t offset, __off_t len)
172+{
173+ int ret;
174+
175+# if __WORDSIZE == 32
176+ uint32_t off_low = offset;
177+ uint32_t len_low = len;
178+ /* may assert that these >>31 are 0 */
179+ uint32_t zero = 0;
180+ INTERNAL_SYSCALL_DECL(err);
181+ ret = (int) (INTERNAL_SYSCALL(fallocate, err, 6, fd, 0,
182+ __LONG_LONG_PAIR (zero, off_low),
183+ __LONG_LONG_PAIR (zero, len_low)));
184+# elif __WORDSIZE == 64
185+ INTERNAL_SYSCALL_DECL(err);
186+ ret = (int) (INTERNAL_SYSCALL(fallocate, err, 4, fd, 0, offset, len));
187+# else
188+# error your machine is neither 32 bit or 64 bit ... it must be magical
189+#endif
190+ if (unlikely(INTERNAL_SYSCALL_ERROR_P (ret, err)))
191+ return INTERNAL_SYSCALL_ERRNO (ret, err);
192+ return 0;
193+}
194+# if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
195+strong_alias(posix_fallocate,posix_fallocate64)
196+# endif
197+#endif
198Index: git/libc/sysdeps/linux/common/posix_fallocate64.c
199===================================================================
200--- /dev/null 1970-01-01 00:00:00.000000000 +0000
201+++ git/libc/sysdeps/linux/common/posix_fallocate64.c 2012-06-23 18:48:54.825911795 -0700
202@@ -0,0 +1,39 @@
203+/* vi: set sw=4 ts=4: */
204+/*
205+ * posix_fallocate() for uClibc
206+ * http://www.opengroup.org/onlinepubs/9699919799/functions/posix_fallocate.html
207+ *
208+ * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
209+ *
210+ * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
211+ */
212+
213+#include <sys/syscall.h>
214+#include <fcntl.h>
215+#include <bits/kernel-features.h>
216+#include <stdint.h>
217+
218+#if defined __NR_fallocate
219+
220+# if __WORDSIZE == 64
221+/* Can use normal posix_fallocate() */
222+# elif __WORDSIZE == 32
223+int posix_fallocate64(int fd, __off64_t offset, __off64_t len)
224+{
225+ int ret;
226+ uint32_t off_low = offset & 0xffffffff;
227+ uint32_t off_high = offset >> 32;
228+ uint32_t len_low = len & 0xffffffff;
229+ uint32_t len_high = len >> 32;
230+ INTERNAL_SYSCALL_DECL(err);
231+ ret = (int) (INTERNAL_SYSCALL(fallocate, err, 6, fd, 0,
232+ __LONG_LONG_PAIR (off_high, off_low),
233+ __LONG_LONG_PAIR (len_high, len_low)));
234+ if (unlikely(INTERNAL_SYSCALL_ERROR_P (ret, err)))
235+ return INTERNAL_SYSCALL_ERRNO (ret, err);
236+ return 0;
237+}
238+# else
239+# error your machine is neither 32 bit or 64 bit ... it must be magical
240+# endif
241+#endif
242Index: git/libc/sysdeps/linux/common/stubs.c
243===================================================================
244--- git.orig/libc/sysdeps/linux/common/stubs.c 2012-06-23 18:47:18.000000000 -0700
245+++ git/libc/sysdeps/linux/common/stubs.c 2012-06-23 18:48:54.825911795 -0700
246@@ -253,6 +253,10 @@
247 make_ret_stub(posix_fadvise64)
248 #endif
249
250+#if !defined __NR_fallocate && defined __UCLIBC_HAS_ADVANCED_REALTIME__
251+make_ret_stub(posix_fallocate)
252+#endif
253+
254 #ifndef __NR_madvise
255 make_ret_stub(posix_madvise)
256 #endif
257Index: git/test/.gitignore
258===================================================================
259--- git.orig/test/.gitignore 2012-06-23 18:47:18.000000000 -0700
260+++ git/test/.gitignore 2012-06-23 18:48:54.825911795 -0700
261@@ -316,6 +316,7 @@
262 unistd/getopt
263 unistd/getopt_long
264 unistd/tstgetopt
265+unistd/tst-posix_fallocate
266 unistd/tst-preadwrite
267 unistd/tst-preadwrite64
268 unistd/vfork
269Index: git/test/unistd/Makefile.in
270===================================================================
271--- git.orig/test/unistd/Makefile.in 2012-06-23 18:47:18.000000000 -0700
272+++ git/test/unistd/Makefile.in 2012-06-23 18:48:54.829911795 -0700
273@@ -4,6 +4,9 @@
274 ifeq ($(UCLIBC_HAS_LFS),)
275 TESTS_DISABLED := tst-preadwrite64
276 endif
277+ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),)
278+TESTS_DISABLED := tst-posix_fallocate
279+endif
280 OPTS_getopt := -abcXXX -9
281 OPTS_getopt_long := --add XXX --delete YYY --verbose
282 ifeq ($(UCLIBC_HAS_GNU_GETOPT),y)
283Index: git/test/unistd/tst-posix_fallocate.c
284===================================================================
285--- /dev/null 1970-01-01 00:00:00.000000000 +0000
286+++ git/test/unistd/tst-posix_fallocate.c 2012-06-23 18:48:54.829911795 -0700
287@@ -0,0 +1,121 @@
288+#include <fcntl.h>
289+#include <sys/stat.h>
290+
291+static void do_prepare (void);
292+#define PREPARE(argc, argv) do_prepare ()
293+static int do_test (void);
294+#define TEST_FUNCTION do_test ()
295+#include <test-skeleton.c>
296+
297+static int fd;
298+#ifndef O_LARGEFILE
299+# error no O_LARGEFILE
300+#endif
301+static void
302+do_prepare (void)
303+{
304+ fd = create_temp_file ("tst-posix_fallocate.", NULL);
305+ if (fd == -1)
306+ {
307+ printf ("cannot create temporary file: %m\n");
308+ exit (1);
309+ }
310+}
311+
312+
313+static int
314+do_test (void)
315+{
316+ struct stat64 st;
317+
318+ if (fstat64 (fd, &st) != 0)
319+ {
320+ puts ("1st fstat failed");
321+ return 1;
322+ }
323+
324+ if (st.st_size != 0)
325+ {
326+ puts ("file not created with size 0");
327+ return 1;
328+ }
329+
330+ if (posix_fallocate (fd, 512, 768) != 0)
331+ {
332+ puts ("1st posix_fallocate call failed");
333+ return 1;
334+ }
335+
336+ if (fstat64 (fd, &st) != 0)
337+ {
338+ puts ("2nd fstat failed");
339+ return 1;
340+ }
341+
342+ if (st.st_size != 512 + 768)
343+ {
344+ printf ("file size after 1st posix_fallocate call is %llu, expected %u\n",
345+ (unsigned long long int) st.st_size, 512u + 768u);
346+ return 1;
347+ }
348+
349+ if (posix_fallocate (fd, 0, 1024) != 0)
350+ {
351+ puts ("2nd posix_fallocate call failed");
352+ return 1;
353+ }
354+
355+ if (fstat64 (fd, &st) != 0)
356+ {
357+ puts ("3rd fstat failed");
358+ return 1;
359+ }
360+
361+ if (st.st_size != 512 + 768)
362+ {
363+ puts ("file size changed in 2nd posix_fallocate");
364+ return 1;
365+ }
366+
367+ if (posix_fallocate (fd, 2048, 64) != 0)
368+ {
369+ puts ("3rd posix_fallocate call failed");
370+ return 1;
371+ }
372+
373+ if (fstat64 (fd, &st) != 0)
374+ {
375+ puts ("4th fstat failed");
376+ return 1;
377+ }
378+
379+ if (st.st_size != 2048 + 64)
380+ {
381+ printf ("file size after 3rd posix_fallocate call is %llu, expected %u\n",
382+ (unsigned long long int) st.st_size, 2048u + 64u);
383+ return 1;
384+ }
385+
386+ if (posix_fallocate64 (fd, 4097ULL, 4294967295ULL + 2ULL) != 0)
387+ {
388+ puts ("4th posix_fallocate call failed");
389+ return 1;
390+ }
391+
392+ if (fstat64 (fd, &st) != 0)
393+ {
394+ puts ("5th fstat failed");
395+ return 1;
396+ }
397+
398+ if (st.st_size != 4097ULL + 4294967295ULL + 2ULL)
399+ {
400+ printf ("file size after 4th posix_fallocate call is %llu, expected %u\n",
401+ (unsigned long long int) st.st_size, 4097ULL + 4294967295ULL + 2ULL);
402+ return 1;
403+ }
404+
405+ close (fd);
406+
407+ return 0;
408+}
diff --git a/meta/recipes-core/uclibc/uclibc-git/uclibc-execvpe.patch b/meta/recipes-core/uclibc/uclibc-git/uclibc-execvpe.patch
deleted file mode 100644
index fe191fc496..0000000000
--- a/meta/recipes-core/uclibc/uclibc-git/uclibc-execvpe.patch
+++ /dev/null
@@ -1,163 +0,0 @@
1From d20556adadea03bff0bba051172caf0314a35471 Mon Sep 17 00:00:00 2001
2From: Henning Heinold <heinold@inf.fu-berlin.de>
3Date: Sat, 4 Jun 2011 21:23:15 +0200
4Subject: [PATCH 2/2] libc: add non standard execvpe function
5
6
7Signed-off-by: Henning Heinold <heinold@inf.fu-berlin.de>
8---
9 include/unistd.h | 6 ++++++
10 libc/unistd/exec.c | 38 +++++++++++++++++++++++++++++++++-----
11 libc/unistd/execvpe.c | 7 +++++++
12 3 files changed, 46 insertions(+), 5 deletions(-)
13 create mode 100644 libc/unistd/execvpe.c
14
15
16Upstream-Status: Pending
17
18diff --git a/include/unistd.h b/include/unistd.h
19index 9568790..070e4f2 100644
20--- a/include/unistd.h
21+++ b/include/unistd.h
22@@ -557,6 +557,12 @@ extern int execvp (__const char *__file, char *__const __argv[])
23 __THROW __nonnull ((1));
24 libc_hidden_proto(execvp)
25
26+/* Execute FILE, searching in the `PATH' environment variable if it contains
27+ no slashes, with arguments ARGV and environment from a pointer */
28+extern int execvpe (__const char *__file, char *__const __argv[], char *__const __envp[])
29+ __THROW __nonnull ((1));
30+libc_hidden_proto(execvpe)
31+
32 /* Execute FILE, searching in the `PATH' environment variable if
33 it contains no slashes, with all arguments after FILE until a
34 NULL pointer and environment from `environ'. */
35diff --git a/libc/unistd/exec.c b/libc/unistd/exec.c
36index 7d24072..802a174 100644
37--- a/libc/unistd/exec.c
38+++ b/libc/unistd/exec.c
39@@ -32,6 +32,8 @@
40 /**********************************************************************/
41 #define EXEC_FUNC_COMMON 0
42 #define EXEC_FUNC_EXECVP 1
43+#define EXEC_FUNC_EXECVPE 2
44+
45 #if defined(__ARCH_USE_MMU__)
46
47 /* We have an MMU, so use alloca() to grab space for buffers and arg lists. */
48@@ -58,6 +60,7 @@
49 * execle(a) -> execve(-)
50 * execv(-) -> execve(-)
51 * execvp(a) -> execve(-)
52+ * execvpe(a) -> execve(-)
53 */
54
55 # define EXEC_ALLOC_SIZE(VAR) /* nothing to do */
56@@ -219,15 +222,18 @@ libc_hidden_def(execlp)
57
58 #endif
59 /**********************************************************************/
60-#ifdef L_execvp
61+#if defined (L_execvp) || defined(L_execvpe)
62
63
64 /* Use a default path that matches glibc behavior, since SUSv3 says
65 * this is implementation-defined. The default is current working dir,
66 * /bin, and then /usr/bin. */
67 static const char default_path[] = ":/bin:/usr/bin";
68-
69+#if defined (L_execvp)
70 int execvp(const char *path, char *const argv[])
71+#elif defined (L_execvpe)
72+int execvpe(const char *path, char *const argv[], char *const envp[])
73+#endif
74 {
75 char *buf = NULL;
76 char *p;
77@@ -245,7 +251,11 @@ int execvp(const char *path, char *const argv[])
78 }
79
80 if (strchr(path, '/')) {
81+#if defined (L_execvp)
82 execve(path, argv, __environ);
83+#elif defined (L_execvpe)
84+ execve(path, argv, envp);
85+#endif
86 if (errno == ENOEXEC) {
87 char **nargv;
88 EXEC_ALLOC_SIZE(size2) /* Do NOT add a semicolon! */
89@@ -254,11 +264,19 @@ int execvp(const char *path, char *const argv[])
90 /* Need the dimension - 1. We omit counting the trailing
91 * NULL but we actually omit the first entry. */
92 for (n=0 ; argv[n] ; n++) {}
93+#if defined (L_execvp)
94 nargv = (char **) EXEC_ALLOC((n+2) * sizeof(char *), size2, EXEC_FUNC_EXECVP);
95+#elif defined (L_execvpe)
96+ nargv = (char **) EXEC_ALLOC((n+2) * sizeof(char *), size2, EXEC_FUNC_EXECVPE);
97+#endif
98 nargv[0] = argv[0];
99 nargv[1] = (char *)path;
100 memcpy(nargv+2, argv+1, n*sizeof(char *));
101+#if defined (L_execvp)
102 execve("/bin/sh", nargv, __environ);
103+#elif defined (L_execvpe)
104+ execve("/bin/sh", nargv, envp);
105+#endif
106 EXEC_FREE(nargv, size2);
107 }
108 } else {
109@@ -277,8 +295,11 @@ int execvp(const char *path, char *const argv[])
110 return -1;
111 }
112 len = (FILENAME_MAX - 1) - plen;
113-
114+#if defined (L_execvp)
115 buf = EXEC_ALLOC(FILENAME_MAX, size, EXEC_FUNC_EXECVP);
116+#elif defined (L_execvpe)
117+ buf = EXEC_ALLOC(FILENAME_MAX, size, EXEC_FUNC_EXECVPE);
118+#endif
119 {
120 int seen_small = 0;
121 s0 = buf + len;
122@@ -300,8 +321,11 @@ int execvp(const char *path, char *const argv[])
123 s[plen-1] = '/';
124 }
125
126+#if defined (L_execvp)
127 execve(s, argv, __environ);
128-
129+#elif defined (L_execvpe)
130+ execve(s, argv, envp);
131+#endif
132 seen_small = 1;
133
134 if (errno == ENOEXEC) {
135@@ -325,7 +349,11 @@ int execvp(const char *path, char *const argv[])
136
137 return -1;
138 }
139+#if defined (L_execvp)
140 libc_hidden_def(execvp)
141-
142+#elif defined (L_execvpe)
143+libc_hidden_def(execvpe)
144 #endif
145+
146+#endif /* #if defined (L_execvp) || defined(L_execvpe) */
147 /**********************************************************************/
148diff --git a/libc/unistd/execvpe.c b/libc/unistd/execvpe.c
149new file mode 100644
150index 0000000..5c1ce06
151--- /dev/null
152+++ b/libc/unistd/execvpe.c
153@@ -0,0 +1,7 @@
154+/* Copyright (C) 2011 Hennning Heinold <heinold@inf.fu-berlin.de>
155+ *
156+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
157+ */
158+
159+#define L_execvpe
160+#include "exec.c"
161--
1621.7.5.3
163
diff --git a/meta/recipes-core/udev/udev.inc b/meta/recipes-core/udev/udev.inc
index bd82c34b57..e358d2d200 100644
--- a/meta/recipes-core/udev/udev.inc
+++ b/meta/recipes-core/udev/udev.inc
@@ -27,7 +27,8 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
27 file://local.rules \ 27 file://local.rules \
28 file://udev-cache \ 28 file://udev-cache \
29 file://udev-cache.default \ 29 file://udev-cache.default \
30 file://init" 30 file://init \
31 file://volatiles"
31 32
32inherit autotools pkgconfig update-rc.d 33inherit autotools pkgconfig update-rc.d
33 34
@@ -81,6 +82,9 @@ do_install_append () {
81 install -d ${D}${sysconfdir}/default 82 install -d ${D}${sysconfdir}/default
82 install -m 0755 ${WORKDIR}/udev-cache.default ${D}${sysconfdir}/default/udev-cache 83 install -m 0755 ${WORKDIR}/udev-cache.default ${D}${sysconfdir}/default/udev-cache
83 84
85 install -d ${D}${sysconfdir}/default/volatiles
86 install -m 0644 ${WORKDIR}/volatiles ${D}${sysconfdir}/default/volatiles/00_udev
87
84 touch ${D}${sysconfdir}/udev/cache.data 88 touch ${D}${sysconfdir}/udev/cache.data
85 89
86 install -d ${D}${sysconfdir}/udev/rules.d/ 90 install -d ${D}${sysconfdir}/udev/rules.d/
diff --git a/meta/recipes-core/udev/udev/volatiles b/meta/recipes-core/udev/udev/volatiles
new file mode 100644
index 0000000000..e33561bf06
--- /dev/null
+++ b/meta/recipes-core/udev/udev/volatiles
@@ -0,0 +1 @@
l root root 0755 /run /var/run
diff --git a/meta/recipes-core/util-linux/util-linux.inc b/meta/recipes-core/util-linux/util-linux.inc
index 41a5471132..dd9c5466d4 100644
--- a/meta/recipes-core/util-linux/util-linux.inc
+++ b/meta/recipes-core/util-linux/util-linux.inc
@@ -17,7 +17,7 @@ LIC_FILES_CHKSUM = "file://README.licensing;md5=679af3e410ee112a5ec94de6501bf5c3
17 file://libmount/COPYING;md5=152f98bc301a5ea649769ede7203ac82 \ 17 file://libmount/COPYING;md5=152f98bc301a5ea649769ede7203ac82 \
18 file://libblkid/COPYING;md5=152f98bc301a5ea649769ede7203ac82" 18 file://libblkid/COPYING;md5=152f98bc301a5ea649769ede7203ac82"
19 19
20inherit autotools gettext pkgconfig 20inherit autotools gettext pkgconfig systemd
21DEPENDS = "zlib ncurses" 21DEPENDS = "zlib ncurses"
22DEPENDS_append_class-native = " lzo-native" 22DEPENDS_append_class-native = " lzo-native"
23 23
@@ -34,7 +34,7 @@ PACKAGES =+ "util-linux-agetty util-linux-fdisk util-linux-cfdisk util-linux-sfd
34 util-linux-libmount util-linux-libmount-dev \ 34 util-linux-libmount util-linux-libmount-dev \
35 util-linux-libblkid-dev util-linux-libuuid util-linux-libuuid-dev \ 35 util-linux-libblkid-dev util-linux-libuuid util-linux-libuuid-dev \
36 util-linux-uuidgen util-linux-lscpu util-linux-fsck util-linux-blkid \ 36 util-linux-uuidgen util-linux-lscpu util-linux-fsck util-linux-blkid \
37 util-linux-mkfs util-linux-mcookie util-linux-reset" 37 util-linux-mkfs util-linux-mcookie util-linux-reset util-linux-uuidd"
38 38
39EXTRA_OECONF = "--libdir=${base_libdir} --disable-use-tty-group \ 39EXTRA_OECONF = "--libdir=${base_libdir} --disable-use-tty-group \
40 --disable-makeinstall-chown --enable-elvtune --enable-init \ 40 --disable-makeinstall-chown --enable-elvtune --enable-init \
@@ -46,6 +46,10 @@ EXTRA_OECONF = "--libdir=${base_libdir} --disable-use-tty-group \
46 usrsbin_execdir='${sbindir}' \ 46 usrsbin_execdir='${sbindir}' \
47" 47"
48 48
49# Respect the systemd feature for uuidd
50EXTRA_OECONF += "${@base_contains('DISTRO_FEATURES', 'systemd', '--enable-socket-activation', '--disable-socket-activation', d)}"
51EXTRA_OECONF += "${@base_contains('DISTRO_FEATURES', 'systemd', '--with-systemdsystemunitdir=${systemd_unitdir}/system/', '--without-systemdsystemunitdir', d)}"
52
49EXTRA_OECONF_append_class-native = " --disable-login --disable-su" 53EXTRA_OECONF_append_class-native = " --disable-login --disable-su"
50 54
51FILES_${PN}-doc += "${datadir}/getopt/getopt-*.*" 55FILES_${PN}-doc += "${datadir}/getopt/getopt-*.*"
@@ -61,6 +65,7 @@ FILES_util-linux-mcookie = "${bindir}/mcookie"
61FILES_util-linux-umount = "${base_bindir}/umount.${BPN}" 65FILES_util-linux-umount = "${base_bindir}/umount.${BPN}"
62FILES_util-linux-readprofile = "${base_sbindir}/readprofile.${BPN}" 66FILES_util-linux-readprofile = "${base_sbindir}/readprofile.${BPN}"
63FILES_util-linux-uuidgen = "${bindir}/uuidgen" 67FILES_util-linux-uuidgen = "${bindir}/uuidgen"
68FILES_util-linux-uuidd = "${sbindir}/uuidd"
64FILES_util-linux-reset = "${base_bindir}/reset" 69FILES_util-linux-reset = "${base_bindir}/reset"
65 70
66FILES_util-linux-libblkid = "${base_libdir}/libblkid.so.*" 71FILES_util-linux-libblkid = "${base_libdir}/libblkid.so.*"
@@ -88,6 +93,8 @@ RRECOMMENDS_${PN} = "util-linux-fdisk util-linux-cfdisk util-linux-sfdisk util-l
88RRECOMMENDS_${PN}_class-native = "" 93RRECOMMENDS_${PN}_class-native = ""
89RDEPENDS_${PN}_class-native = "" 94RDEPENDS_${PN}_class-native = ""
90 95
96SYSTEMD_PACKAGES = "util-linux-uuidd"
97SYSTEMD_SERVICE_util-linux-uuidd = "uuidd.service"
91 98
92do_compile () { 99do_compile () {
93 set -e 100 set -e
@@ -110,7 +117,7 @@ do_install () {
110 117
111 sbinprogs="agetty ctrlaltdel cfdisk vipw vigr" 118 sbinprogs="agetty ctrlaltdel cfdisk vipw vigr"
112 sbinprogs_a="pivot_root hwclock mkswap mkfs.minix fsck.minix losetup swapon fdisk readprofile fsck blkid blockdev" 119 sbinprogs_a="pivot_root hwclock mkswap mkfs.minix fsck.minix losetup swapon fdisk readprofile fsck blkid blockdev"
113 usrbinprogs_a="chfn chsh hexdump last logger mesg newgrp renice utmpdump wall setsid chrt flock" 120 usrbinprogs_a="chfn chsh hexdump last logger mesg newgrp renice utmpdump wall setsid chrt flock getopt"
114 binprogs_a="dmesg kill more umount mount login reset" 121 binprogs_a="dmesg kill more umount mount login reset"
115 122
116 if [ "${base_sbindir}" != "${sbindir}" ]; then 123 if [ "${base_sbindir}" != "${sbindir}" ]; then
@@ -146,7 +153,7 @@ ALTERNATIVE_PRIORITY = "100"
146 153
147ALTERNATIVE_${PN} = "dmesg kill more mkswap blockdev pivot_root" 154ALTERNATIVE_${PN} = "dmesg kill more mkswap blockdev pivot_root"
148ALTERNATIVE_${PN} += "mkfs.minix hexdump last logger mesg renice wall" 155ALTERNATIVE_${PN} += "mkfs.minix hexdump last logger mesg renice wall"
149ALTERNATIVE_${PN} += "setsid chrt flock hwclock utmpdump eject" 156ALTERNATIVE_${PN} += "setsid chrt flock hwclock utmpdump eject getopt"
150 157
151ALTERNATIVE_LINK_NAME[dmesg] = "${base_bindir}/dmesg" 158ALTERNATIVE_LINK_NAME[dmesg] = "${base_bindir}/dmesg"
152ALTERNATIVE_LINK_NAME[kill] = "${base_bindir}/kill" 159ALTERNATIVE_LINK_NAME[kill] = "${base_bindir}/kill"
@@ -156,6 +163,8 @@ ALTERNATIVE_LINK_NAME[blockdev] = "${base_sbindir}/blockdev"
156ALTERNATIVE_LINK_NAME[pivot_root] = "${base_sbindir}/pivot_root" 163ALTERNATIVE_LINK_NAME[pivot_root] = "${base_sbindir}/pivot_root"
157ALTERNATIVE_LINK_NAME[mkfs.minix] = "${base_sbindir}/mkfs.minix" 164ALTERNATIVE_LINK_NAME[mkfs.minix] = "${base_sbindir}/mkfs.minix"
158ALTERNATIVE_LINK_NAME[eject] = "${bindir}/eject" 165ALTERNATIVE_LINK_NAME[eject] = "${bindir}/eject"
166ALTERNATIVE_LINK_NAME[getopt] = "${base_bindir}/getopt"
167ALTERNATIVE_TARGET[getopt] = "${bindir}/getopt"
159 168
160ALTERNATIVE_${PN}-doc = "mountpoint.1 last.1 mesg.1 wall.1 sulogin.8 utmpdump.1" 169ALTERNATIVE_${PN}-doc = "mountpoint.1 last.1 mesg.1 wall.1 sulogin.8 utmpdump.1"
161 170
diff --git a/meta/recipes-core/util-linux/util-linux_2.22.2.bb b/meta/recipes-core/util-linux/util-linux_2.22.2.bb
index 9b94a4773d..43a55a6db7 100644
--- a/meta/recipes-core/util-linux/util-linux_2.22.2.bb
+++ b/meta/recipes-core/util-linux/util-linux_2.22.2.bb
@@ -1,5 +1,5 @@
1MAJOR_VERSION = "2.22" 1MAJOR_VERSION = "2.22"
2PR = "r2" 2PR = "r3"
3require util-linux.inc 3require util-linux.inc
4 4
5SRC_URI += "file://util-linux-ng-replace-siginterrupt.patch \ 5SRC_URI += "file://util-linux-ng-replace-siginterrupt.patch \
diff --git a/meta/recipes-devtools/dosfstools/dosfstools_2.11.bb b/meta/recipes-devtools/dosfstools/dosfstools_2.11.bb
index eca54f1870..b7b85f059e 100644
--- a/meta/recipes-devtools/dosfstools/dosfstools_2.11.bb
+++ b/meta/recipes-devtools/dosfstools/dosfstools_2.11.bb
@@ -7,7 +7,7 @@ DESCRIPTION = "DOS FAT Filesystem Utilities"
7SECTION = "base" 7SECTION = "base"
8LICENSE = "GPLv2" 8LICENSE = "GPLv2"
9LIC_FILES_CHKSUM = "file://mkdosfs/COPYING;md5=cbe67f08d6883bff587f615f0cc81aa8" 9LIC_FILES_CHKSUM = "file://mkdosfs/COPYING;md5=cbe67f08d6883bff587f615f0cc81aa8"
10PR = "r4" 10PR = "r5"
11 11
12SRC_URI = "ftp://ftp.uni-erlangen.de/pub/Linux/LOCAL/dosfstools/dosfstools-${PV}.src.tar.gz \ 12SRC_URI = "ftp://ftp.uni-erlangen.de/pub/Linux/LOCAL/dosfstools/dosfstools-${PV}.src.tar.gz \
13 file://mkdosfs-bootcode.patch \ 13 file://mkdosfs-bootcode.patch \
@@ -22,6 +22,11 @@ SRC_URI = "ftp://ftp.uni-erlangen.de/pub/Linux/LOCAL/dosfstools/dosfstools-${PV}
22SRC_URI[md5sum] = "407d405ade410f7597d364ab5dc8c9f6" 22SRC_URI[md5sum] = "407d405ade410f7597d364ab5dc8c9f6"
23SRC_URI[sha256sum] = "0eac6d12388b3d9ed78684529c1b0d9346fa2abbe406c4d4a3eb5a023c98a484" 23SRC_URI[sha256sum] = "0eac6d12388b3d9ed78684529c1b0d9346fa2abbe406c4d4a3eb5a023c98a484"
24 24
25# Makefile sets this, but we clobber its CFLAGS, so
26# add this in here to for sure allow for big files.
27#
28CFLAGS_append = " -D_FILE_OFFSET_BITS=64"
29
25do_install () { 30do_install () {
26 oe_runmake "PREFIX=${D}" "SBINDIR=${D}${sbindir}" \ 31 oe_runmake "PREFIX=${D}" "SBINDIR=${D}${sbindir}" \
27 "MANDIR=${D}${mandir}/man8" install 32 "MANDIR=${D}${mandir}/man8" install
diff --git a/meta/recipes-devtools/elfutils/elfutils_0.148.bb b/meta/recipes-devtools/elfutils/elfutils_0.148.bb
index e8d58fbde5..9c0a08eafa 100644
--- a/meta/recipes-devtools/elfutils/elfutils_0.148.bb
+++ b/meta/recipes-devtools/elfutils/elfutils_0.148.bb
@@ -52,7 +52,7 @@ EXTRA_OECONF_append_class-native = " --without-bzlib"
52EXTRA_OECONF_append_libc-uclibc = " --enable-uclibc" 52EXTRA_OECONF_append_libc-uclibc = " --enable-uclibc"
53 53
54do_configure_prepend() { 54do_configure_prepend() {
55 sed -i 's:./i386_gendis:echo\ \#:g' ${S}/libcpu/Makefile.am 55 sed -i '/^i386_dis.h:/,+4 {/.*/d}' ${S}/libcpu/Makefile.am
56 56
57 cp ${WORKDIR}/*dis.h ${S}/libcpu 57 cp ${WORKDIR}/*dis.h ${S}/libcpu
58} 58}
diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
index f9b22f3a75..1b5b569eee 100644
--- a/meta/recipes-devtools/qemu/qemu.inc
+++ b/meta/recipes-devtools/qemu/qemu.inc
@@ -1,7 +1,7 @@
1DESCRIPTION = "open source processor emulator" 1DESCRIPTION = "open source processor emulator"
2HOMEPAGE = "http://qemu.org" 2HOMEPAGE = "http://qemu.org"
3LICENSE = "GPLv2 & LGPLv2.1" 3LICENSE = "GPLv2 & LGPLv2.1"
4DEPENDS = "glib-2.0 zlib alsa-lib virtual/libx11 pixman" 4DEPENDS = "glib-2.0 zlib alsa-lib virtual/libx11 pixman dtc"
5DEPENDS_class-native = "zlib-native alsa-lib-native glib-2.0-native pixman-native dtc-native" 5DEPENDS_class-native = "zlib-native alsa-lib-native glib-2.0-native pixman-native dtc-native"
6DEPENDS_class-nativesdk = "nativesdk-zlib nativesdk-libsdl nativesdk-glib-2.0 nativesdk-pixman nativesdk-dtc" 6DEPENDS_class-nativesdk = "nativesdk-zlib nativesdk-libsdl nativesdk-glib-2.0 nativesdk-pixman nativesdk-dtc"
7RDEPENDS_${PN}_class-nativesdk = "nativesdk-libsdl" 7RDEPENDS_${PN}_class-nativesdk = "nativesdk-libsdl"
diff --git a/meta/recipes-devtools/remake/remake_git.bb b/meta/recipes-devtools/remake/remake_git.bb
index a7cf54e320..afbc5d0710 100644
--- a/meta/recipes-devtools/remake/remake_git.bb
+++ b/meta/recipes-devtools/remake/remake_git.bb
@@ -16,10 +16,10 @@ PROVIDES += "make"
16 16
17do_configure_prepend() { 17do_configure_prepend() {
18 # remove the default LINGUAS since we are not going to generate languages 18 # remove the default LINGUAS since we are not going to generate languages
19 rm po/LINGUAS 19 rm ${S}/po/LINGUAS
20 touch po/LINGUAS 20 touch ${S}/po/LINGUAS
21 # create config.rpath which required by configure.ac 21 # create config.rpath which required by configure.ac
22 autopoint || touch config.rpath 22 ( cd ${S}; autopoint || touch config.rpath )
23} 23}
24 24
25BBCLASSEXTEND = "native" 25BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/rpm/rpm_5.4.9.bb b/meta/recipes-devtools/rpm/rpm_5.4.9.bb
index e9c8f23c18..7c3897c822 100644
--- a/meta/recipes-devtools/rpm/rpm_5.4.9.bb
+++ b/meta/recipes-devtools/rpm/rpm_5.4.9.bb
@@ -43,7 +43,7 @@ LICENSE = "LGPLv2.1"
43LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1" 43LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
44 44
45DEPENDS = "libpcre attr acl popt ossp-uuid file bison-native" 45DEPENDS = "libpcre attr acl popt ossp-uuid file bison-native"
46PR = "r61" 46PR = "r62"
47 47
48# rpm2cpio is a shell script, which is part of the rpm src.rpm. It is needed 48# rpm2cpio is a shell script, which is part of the rpm src.rpm. It is needed
49# in order to extract the distribution SRPM into a format we can extract... 49# in order to extract the distribution SRPM into a format we can extract...
@@ -200,7 +200,7 @@ CFLAGS_append = " -DRPM_VENDOR_WINDRIVER -DRPM_VENDOR_POKY -DRPM_VENDOR_OE"
200 200
201LDFLAGS_append_libc-uclibc = "-lrt -lpthread" 201LDFLAGS_append_libc-uclibc = "-lrt -lpthread"
202 202
203PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-libs ${PN}-dev ${PN}-staticdev ${PN}-common ${PN}-build python-rpm-dbg python-rpm-staticdev python-rpm-dev python-rpm perl-module-rpm perl-module-rpm-dev ${PN}-locale" 203PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-libs ${PN}-dev ${PN}-staticdev ${PN}-common ${PN}-build python-rpm-dbg python-rpm-staticdev python-rpm-dev python-rpm perl-module-rpm perl-module-rpm-dev ${PN}-locale ${PN}-postinsts"
204 204
205SOLIBS = "5.4.so" 205SOLIBS = "5.4.so"
206 206
@@ -224,9 +224,13 @@ FILES_${PN} = "${bindir}/rpm \
224 ${libdir}/rpm/bin/wget \ 224 ${libdir}/rpm/bin/wget \
225 /var/lib/rpm \ 225 /var/lib/rpm \
226 /var/cache/rpm \ 226 /var/cache/rpm \
227 ${sysconfdir}/rcS.d/S${POSTINSTALL_INITPOSITION}run-postinsts \
228 " 227 "
229 228
229RDEPENDS_${PN} += "${PN}-postinsts"
230
231FILES_${PN}-postinsts = "${sysconfdir}/rcS.d/S${POSTINSTALL_INITPOSITION}run-postinsts \
232 "
233
230FILES_${PN}-dbg += "${libdir}/rpm/.debug \ 234FILES_${PN}-dbg += "${libdir}/rpm/.debug \
231 ${libdir}/rpm/bin/.debug \ 235 ${libdir}/rpm/bin/.debug \
232 " 236 "
diff --git a/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb b/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
index 25fccaf45d..4d43c62c47 100644
--- a/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
+++ b/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
@@ -3,22 +3,17 @@ HOMEPAGE = "http://wiki.eclipse.org/TCF"
3BUGTRACKER = "https://bugs.eclipse.org/bugs/" 3BUGTRACKER = "https://bugs.eclipse.org/bugs/"
4 4
5LICENSE = "EPL-1.0 | EDL-1.0" 5LICENSE = "EPL-1.0 | EDL-1.0"
6LIC_FILES_CHKSUM = "file://../epl-v10.html;md5=7aa4215a330a0a4f6a1cbf8da1a0879f \ 6LIC_FILES_CHKSUM = "file://edl-v10.html;md5=522a390a83dc186513f0500543ad3679"
7 file://edl-v10.html;md5=522a390a83dc186513f0500543ad3679"
8 7
9SRCREV = "4ef94ecb927a8912c3d79ce137182247786cff8f" 8SRCREV = "4ef94ecb927a8912c3d79ce137182247786cff8f"
10PV = "0.4.0+git${SRCPV}" 9PV = "0.4.0+git${SRCPV}"
11PR = "r0" 10PR = "r0"
12 11
13SRC_URI = "git://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent.git;protocol=git \ 12SRC_URI = "git://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent.git;protocol=git \
14 http://www.eclipse.org/legal/epl-v10.html;name=epl \
15 file://fix_ranlib.patch \ 13 file://fix_ranlib.patch \
16 file://fix_tcf-agent.init.patch \ 14 file://fix_tcf-agent.init.patch \
17 " 15 "
18 16
19SRC_URI[epl.md5sum] = "7aa4215a330a0a4f6a1cbf8da1a0879f"
20SRC_URI[epl.sha256sum] = "4fd64aeed340d62a64a8da4b371efe0f6d0d745f4d2dbefacba86c646d36bc72"
21
22DEPENDS = "util-linux openssl" 17DEPENDS = "util-linux openssl"
23RDEPENDS_${PN} = "bash" 18RDEPENDS_${PN} = "bash"
24 19
diff --git a/meta/recipes-extended/lsb/lsb_4.1.bb b/meta/recipes-extended/lsb/lsb_4.1.bb
index 01368b334b..59d5bcafef 100644
--- a/meta/recipes-extended/lsb/lsb_4.1.bb
+++ b/meta/recipes-extended/lsb/lsb_4.1.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "LSB support for OpenEmbedded"
2SECTION = "console/utils" 2SECTION = "console/utils"
3HOMEPAGE = "http://prdownloads.sourceforge.net/lsb" 3HOMEPAGE = "http://prdownloads.sourceforge.net/lsb"
4LICENSE = "GPLv2+" 4LICENSE = "GPLv2+"
5PR = "r1" 5PR = "r2"
6 6
7# lsb_release needs getopt 7# lsb_release needs getopt
8RDEPENDS_${PN} += "util-linux" 8RDEPENDS_${PN} += "util-linux"
@@ -41,6 +41,9 @@ do_install(){
41 echo "\"" >> ${D}${sysconfdir}/lsb-release 41 echo "\"" >> ${D}${sysconfdir}/lsb-release
42 echo "DISTRIB_ID=${DISTRO}" >> ${D}${sysconfdir}/lsb-release 42 echo "DISTRIB_ID=${DISTRO}" >> ${D}${sysconfdir}/lsb-release
43 echo "DISTRIB_RELEASE=${DISTRO_VERSION}" >> ${D}${sysconfdir}/lsb-release 43 echo "DISTRIB_RELEASE=${DISTRO_VERSION}" >> ${D}${sysconfdir}/lsb-release
44 if [ -n "${DISTRO_CODENAME}" ]; then
45 echo "DISTRIB_CODENAME=${DISTRO_CODENAME}" >> ${D}${sysconfdir}/lsb-release
46 fi
44 echo "DISTRIB_DESCRIPTION=\"${DISTRO_NAME} ${DISTRO_VERSION}\"" >> ${D}${sysconfdir}/lsb-release 47 echo "DISTRIB_DESCRIPTION=\"${DISTRO_NAME} ${DISTRO_VERSION}\"" >> ${D}${sysconfdir}/lsb-release
45 48
46 if [ "${TARGET_ARCH}" = "i586" ];then 49 if [ "${TARGET_ARCH}" = "i586" ];then
diff --git a/meta/recipes-gnome/gtk+/gtk+.inc b/meta/recipes-gnome/gtk+/gtk+.inc
index f05838a173..84edaf38a6 100644
--- a/meta/recipes-gnome/gtk+/gtk+.inc
+++ b/meta/recipes-gnome/gtk+/gtk+.inc
@@ -10,8 +10,6 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
10 10
11SECTION = "libs" 11SECTION = "libs"
12 12
13PROVIDES_class-native = "virtual/gtk-update-icon-cache-native"
14
15X11DEPENDS = "virtual/libx11 libxext libxcursor libxrandr libxdamage libxrender libxcomposite" 13X11DEPENDS = "virtual/libx11 libxext libxcursor libxrandr libxdamage libxrender libxcomposite"
16DEPENDS = "glib-2.0 pango atk jpeg libpng gdk-pixbuf-native docbook-utils-native \ 14DEPENDS = "glib-2.0 pango atk jpeg libpng gdk-pixbuf-native docbook-utils-native \
17 libgcrypt cairo gdk-pixbuf" 15 libgcrypt cairo gdk-pixbuf"
@@ -81,12 +79,6 @@ do_install () {
81 mv ${D}${bindir}/gtk-update-icon-cache ${D}${bindir}/gtk-update-icon-cache-2.0 79 mv ${D}${bindir}/gtk-update-icon-cache ${D}${bindir}/gtk-update-icon-cache-2.0
82} 80}
83 81
84do_install_append_class-native () {
85 # Ideally we'd use alternatives in the sysroot, but they don't work.
86 # As we know we don't have a native GTK+ 3 (yet), make a symlink instead.
87 ln -s gtk-update-icon-cache-2.0 ${D}${bindir}/gtk-update-icon-cache
88}
89
90SYSROOT_PREPROCESS_FUNCS += "gtk_sysroot_preprocess" 82SYSROOT_PREPROCESS_FUNCS += "gtk_sysroot_preprocess"
91 83
92gtk_sysroot_preprocess () { 84gtk_sysroot_preprocess () {
diff --git a/meta/recipes-gnome/gtk+/gtk+_2.24.15.bb b/meta/recipes-gnome/gtk+/gtk+_2.24.15.bb
index 4e045e4fef..02d66f86b9 100644
--- a/meta/recipes-gnome/gtk+/gtk+_2.24.15.bb
+++ b/meta/recipes-gnome/gtk+/gtk+_2.24.15.bb
@@ -28,7 +28,7 @@ SRC_URI = "http://download.gnome.org/sources/gtk+/2.24/gtk+-${PV}.tar.xz \
28# file://combo-arrow-size.patch;striplevel=0 28# file://combo-arrow-size.patch;striplevel=0
29# file://configurefix.patch 29# file://configurefix.patch
30 30
31PR = "r0" 31PR = "r1"
32 32
33SRC_URI[md5sum] = "68f034fb4f68086790d7488cf00e71c8" 33SRC_URI[md5sum] = "68f034fb4f68086790d7488cf00e71c8"
34SRC_URI[sha256sum] = "d7e1c6d6ae6baa48c88441fe52b73b0fb6008763644867d59b049bafb0cf771b" 34SRC_URI[sha256sum] = "d7e1c6d6ae6baa48c88441fe52b73b0fb6008763644867d59b049bafb0cf771b"
@@ -38,14 +38,6 @@ EXTRA_OECONF = "--without-libtiff --without-libjasper --enable-xkb --disable-gli
38LIBV = "2.10.0" 38LIBV = "2.10.0"
39 39
40PACKAGES_DYNAMIC += "^gtk-immodule-.* ^gtk-printbackend-.*" 40PACKAGES_DYNAMIC += "^gtk-immodule-.* ^gtk-printbackend-.*"
41BBCLASSEXTEND = "native"
42RRECOMMENDS_${PN}_class-native = ""
43DEPENDS_class-native = "glib-2.0-native atk-native pango-native cairo-native gdk-pixbuf-native"
44
45do_install_append_class-native () {
46 create_wrapper ${D}/${bindir}/gtk-update-icon-cache-2.0 \
47 GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache
48}
49 41
50python populate_packages_prepend () { 42python populate_packages_prepend () {
51 gtk_libdir = d.expand('${libdir}/gtk-2.0/${LIBV}') 43 gtk_libdir = d.expand('${libdir}/gtk-2.0/${LIBV}')
diff --git a/meta/recipes-gnome/gtk+/gtk-update-icon-cache-native_3.4.4.bb b/meta/recipes-gnome/gtk+/gtk-update-icon-cache-native_3.4.4.bb
index ea99c14901..93c30a75b1 100644
--- a/meta/recipes-gnome/gtk+/gtk-update-icon-cache-native_3.4.4.bb
+++ b/meta/recipes-gnome/gtk+/gtk-update-icon-cache-native_3.4.4.bb
@@ -2,8 +2,6 @@ SUMMARY = "gtk-update-icon-cache built natively"
2DESCRIPTION = "Just gtk-update-icon-cache built from GTK+ natively, for on-host postinst script execution." 2DESCRIPTION = "Just gtk-update-icon-cache built from GTK+ natively, for on-host postinst script execution."
3SECTION = "libs" 3SECTION = "libs"
4 4
5PROVIDES = "virtual/gtk-update-icon-cache-native"
6
7DEPENDS = "gdk-pixbuf-native" 5DEPENDS = "gdk-pixbuf-native"
8 6
9LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+" 7LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+"
diff --git a/meta/recipes-gnome/packagegroups/packagegroup-toolset-native.bb b/meta/recipes-gnome/packagegroups/packagegroup-toolset-native.bb
index 5c544ecf5c..82ee8202a3 100644
--- a/meta/recipes-gnome/packagegroups/packagegroup-toolset-native.bb
+++ b/meta/recipes-gnome/packagegroups/packagegroup-toolset-native.bb
@@ -84,7 +84,7 @@ DEPENDS = "\
84 gperf-native \ 84 gperf-native \
85 groff-native \ 85 groff-native \
86 gtk-doc-stub-native \ 86 gtk-doc-stub-native \
87 gtk+-native \ 87 gtk-update-icon-cache-native \
88 guile-native \ 88 guile-native \
89 guilt-native \ 89 guilt-native \
90 gzip-native \ 90 gzip-native \
diff --git a/meta/recipes-graphics/builder/files/builder_hob_start.sh b/meta/recipes-graphics/builder/files/builder_hob_start.sh
index 1c6884e42b..40616f5e7b 100644
--- a/meta/recipes-graphics/builder/files/builder_hob_start.sh
+++ b/meta/recipes-graphics/builder/files/builder_hob_start.sh
@@ -7,7 +7,7 @@
7export PSEUDO_PREFIX=/usr 7export PSEUDO_PREFIX=/usr
8export PSEUDO_LOCALSTATEDIR=/home/builder/pseudo 8export PSEUDO_LOCALSTATEDIR=/home/builder/pseudo
9export PSEUDO_LIBDIR=/usr/lib/pseudo/lib64 9export PSEUDO_LIBDIR=/usr/lib/pseudo/lib64
10export GIT_PROXY_COMMAND=/home/builder/poky/scripts/oe-git-proxy-socks-command 10export GIT_PROXY_COMMAND=/home/builder/poky/scripts/oe-git-proxy
11 11
12cd /home/builder/poky 12cd /home/builder/poky
13. ./oe-init-build-env 13. ./oe-init-build-env
diff --git a/meta/recipes-graphics/wayland/wayland_1.0.3.bb b/meta/recipes-graphics/wayland/wayland_1.0.6.bb
index 6e01b227f0..6385933133 100644
--- a/meta/recipes-graphics/wayland/wayland_1.0.3.bb
+++ b/meta/recipes-graphics/wayland/wayland_1.0.6.bb
@@ -11,8 +11,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=1d4476a7d98dd5691c53d4d43a510c72 \
11 file://src/wayland-server.c;endline=21;md5=079ae21dbf98ada52ec23744851b0a5c" 11 file://src/wayland-server.c;endline=21;md5=079ae21dbf98ada52ec23744851b0a5c"
12 12
13SRC_URI = "http://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz" 13SRC_URI = "http://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz"
14SRC_URI[md5sum] = "eebe23571fd4f9ceacc583238e5a8ae9" 14SRC_URI[md5sum] = "936a2590aea69fa3c0cf234d54b9137c"
15SRC_URI[sha256sum] = "f6be5ee11ba534baaa116350b5efb874bf9963bf3fb18bcf40130317e83a5913" 15SRC_URI[sha256sum] = "f52a012df699eff434b0f49e56000d6978b5f781048402ca8e0232242970fc49"
16 16
17inherit autotools pkgconfig 17inherit autotools pkgconfig
18 18
diff --git a/meta/recipes-graphics/wayland/weston_1.0.3.bb b/meta/recipes-graphics/wayland/weston_1.0.6.bb
index f769312f32..cb41e05c46 100644
--- a/meta/recipes-graphics/wayland/weston_1.0.3.bb
+++ b/meta/recipes-graphics/wayland/weston_1.0.6.bb
@@ -8,8 +8,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=275efac2559a224527bd4fd593d38466 \
8SRC_URI = "http://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ 8SRC_URI = "http://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
9 file://weston.png \ 9 file://weston.png \
10 file://weston.desktop" 10 file://weston.desktop"
11SRC_URI[md5sum] = "f82ac2e013e6b6a6303ac4ba7b64c7f2" 11SRC_URI[md5sum] = "63202129d66d5514e572814da5dfa1f7"
12SRC_URI[sha256sum] = "3136a7d2f654ea3e946d4217f7e25321248ad2921f1f4e2504dda58968e04853" 12SRC_URI[sha256sum] = "c833bc4dc8667561d2639b57220541531c039aa9332ce2a7022a3c466eb894f1"
13 13
14inherit autotools pkgconfig 14inherit autotools pkgconfig
15 15
diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm
index c707a4bdb8..e790fb0921 100755
--- a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm
+++ b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm
@@ -4,7 +4,7 @@
4# Provides: xserver 4# Provides: xserver
5# Required-Start: $local_fs $remote_fs dbus 5# Required-Start: $local_fs $remote_fs dbus
6# Required-Stop: $local_fs $remote_fs 6# Required-Stop: $local_fs $remote_fs
7# Default-Start: 2 3 4 5 7# Default-Start: 2 5
8# Default-Stop: 0 1 6 8# Default-Stop: 0 1 6
9### END INIT INFO 9### END INIT INFO
10 10
diff --git a/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb b/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb
index b9e00fcdd6..5ee3b7362c 100644
--- a/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb
+++ b/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb
@@ -18,6 +18,9 @@ LIC_FILES_CHKSUM = "file://LICENSE.radeon;md5=e56b405656593a0c97e478513051ea0e \
18 file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \ 18 file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \
19 file://LICENCE.rtlwifi_firmware.txt;md5=00d06cfd3eddd5a2698948ead2ad54a5 \ 19 file://LICENCE.rtlwifi_firmware.txt;md5=00d06cfd3eddd5a2698948ead2ad54a5 \
20 file://LICENCE.broadcom_bcm43xx;md5=3160c14df7228891b868060e1951dfbc \ 20 file://LICENCE.broadcom_bcm43xx;md5=3160c14df7228891b868060e1951dfbc \
21 file://LICENCE.ti-connectivity;md5=186e7a43cf6c274283ad81272ca218ea \
22 file://LICENCE.atheros_firmware;md5=30a14c7823beedac9fa39c64fdd01a13 \
23 file://LICENCE.via_vt6656;md5=e4159694cba42d4377a912e78a6e850f \
21 " 24 "
22 25
23SRCREV = "c530a75c1e6a472b0eb9558310b518f0dfcd8860" 26SRCREV = "c530a75c1e6a472b0eb9558310b518f0dfcd8860"
@@ -38,20 +41,44 @@ do_install() {
38 install -d ${D}/lib/firmware/ 41 install -d ${D}/lib/firmware/
39 cp -r * ${D}/lib/firmware/ 42 cp -r * ${D}/lib/firmware/
40 43
44 # Avoid Makefile to be deplyed
45 rm ${D}/lib/firmware/Makefile
46
41 # Libertas sd8686 47 # Libertas sd8686
42 ln -sf libertas/sd8686_v9.bin ${D}/lib/firmware/sd8686.bin 48 ln -sf libertas/sd8686_v9.bin ${D}/lib/firmware/sd8686.bin
43 ln -sf libertas/sd8686_v9_helper.bin ${D}/lib/firmware/sd8686_helper.bin 49 ln -sf libertas/sd8686_v9_helper.bin ${D}/lib/firmware/sd8686_helper.bin
44 50
45 # Realtek rtl8192*
46 install -m 0644 LICENCE.rtlwifi_firmware.txt ${D}/lib/firmware/rtlwifi/LICENCE.rtlwifi_firmware.txt
47
48 # fixup wl12xx location, after 2.6.37 the kernel searches a different location for it 51 # fixup wl12xx location, after 2.6.37 the kernel searches a different location for it
49 ( cd ${D}/lib/firmware ; ln -sf ti-connectivity/* . ) 52 ( cd ${D}/lib/firmware ; ln -sf ti-connectivity/* . )
50} 53}
51 54
52PACKAGES =+ "${PN}-ralink ${PN}-sd8686 ${PN}-rtl8192cu \ 55PACKAGES =+ "${PN}-ralink ${PN}-sd8686 ${PN}-wl12xx ${PN}-vt6656 \
53 ${PN}-rtl8192ce ${PN}-rtl8192su ${PN}-wl12xx \ 56 ${PN}-rtl-license ${PN}-rtl8192cu ${PN}-rtl8192ce ${PN}-rtl8192su \
54 ${PN}-bcm4329 ${PN}-bcm4330 ${PN}-bcm4334" 57 ${PN}-broadcom-license ${PN}-bcm4329 ${PN}-bcm4330 ${PN}-bcm4334 \
58 ${PN}-atheros-license ${PN}-ar9170 ${PN}-ath6k ${PN}-ath9k"
59
60FILES_${PN}-atheros-license = "/lib/firmware/LICENCE.atheros_firmware"
61
62LICENSE_${PN}-9170 = "Firmware-atheros_firmware"
63FILES_${PN}-ar9170 = " \
64 /lib/firmware/ar9170*.fw \
65"
66RDEPENDS_${PN}-ar9170 += "${PN}-atheros-license"
67
68LICENSE_${PN}-ath6k = "Firmware-atheros_firmware"
69FILES_${PN}-ath6k = " \
70 /lib/firmware/ath6k \
71"
72RDEPENDS_${PN}-ath6k += "${PN}-atheros-license"
73
74LICENSE_${PN}-ath9k = "Firmware-atheros_firmware"
75FILES_${PN}-ath9k = " \
76 /lib/firmware/ar9271.fw \
77 /lib/firmware/ar7010*.fw \
78 /lib/firmware/htc_9271.fw \
79 /lib/firmware/htc_7010.fw \
80"
81RDEPENDS_${PN}-ath9k += "${PN}-atheros-license"
55 82
56LICENSE_${PN}-ralink = "Firmware-ralink" 83LICENSE_${PN}-ralink = "Firmware-ralink"
57FILES_${PN}-ralink = " \ 84FILES_${PN}-ralink = " \
@@ -66,57 +93,71 @@ FILES_${PN}-sd8686 = " \
66 /lib/firmware/LICENCE.libertas \ 93 /lib/firmware/LICENCE.libertas \
67" 94"
68 95
96FILES_${PN}-rtl-license = " \
97 /lib/firmware/rtlwifi/LICENCE.rtlwifi_firmware.txt \
98"
99
69LICENSE_${PN}-rtl8192cu = "Firmware-rtlwifi" 100LICENSE_${PN}-rtl8192cu = "Firmware-rtlwifi"
70FILES_${PN}-rtl8192cu = " \ 101FILES_${PN}-rtl8192cu = " \
71 /lib/firmware/rtlwifi/rtl8192cufw.bin \ 102 /lib/firmware/rtlwifi/rtl8192cufw.bin \
72 /lib/firmware/rtlwifi/LICENCE.rtlwifi_firmware.txt \
73" 103"
104RDEPENDS_${PN}-rtl8192cu += "${PN}-rtl-license"
74 105
75LICENSE_${PN}-rtl8192ce = "Firmware-rtlwifi" 106LICENSE_${PN}-rtl8192ce = "Firmware-rtlwifi"
76FILES_${PN}-rtl8192ce = " \ 107FILES_${PN}-rtl8192ce = " \
77 /lib/firmware/rtlwifi/rtl8192cfw.bin \ 108 /lib/firmware/rtlwifi/rtl8192cfw.bin \
78" 109"
110RDEPENDS_${PN}-rtl8192ce += "${PN}-rtl-license"
111
79 112
80LICENSE_${PN}-rtl8192su = "Firmware-rtlwifi" 113LICENSE_${PN}-rtl8192su = "Firmware-rtlwifi"
81FILES_${PN}-rtl8192su = " \ 114FILES_${PN}-rtl8192su = " \
82 /lib/firmware/rtlwifi/rtl8712u.bin \ 115 /lib/firmware/rtlwifi/rtl8712u.bin \
83" 116"
84 117
118LICENSE_${PN}-wl12xx = "Firmware-ti-connectivity"
85FILES_${PN}-wl12xx = " \ 119FILES_${PN}-wl12xx = " \
86 /lib/firmware/wl12* \ 120 /lib/firmware/wl12* \
87 /lib/firmware/TI* \ 121 /lib/firmware/TI* \
88 /lib/firmware/ti-connectivity \ 122 /lib/firmware/ti-connectivity \
89" 123"
90 124
125LICENSE_${PN}-vt6656 = "Firmware-via_vt6656"
126FILES_${PN}-vt6656 = " \
127 /lib/firmware/vntwusb.fw \
128"
129
91# WARNING: The ALTERNATIVE_* variables are not using ${PN} because of 130# WARNING: The ALTERNATIVE_* variables are not using ${PN} because of
92# a bug in bitbake; when this is fixed and bitbake learns how to proper 131# a bug in bitbake; when this is fixed and bitbake learns how to proper
93# pass variable flags with expansion we can rework this patch. 132# pass variable flags with expansion we can rework this patch.
94 133
95ALTERNATIVE_LINK_NAME[brcmfmac-sdio.bin] = "/lib/firmware/brcm/brcmfmac-sdio.bin" 134ALTERNATIVE_LINK_NAME[brcmfmac-sdio.bin] = "/lib/firmware/brcm/brcmfmac-sdio.bin"
96 135
136FILES_${PN}-broadcom-license = " \
137 /lib/firmware/LICENCE.broadcom_bcm43xx \
138"
139
97LICENSE_${PN}-bcm4329 = "Firmware-bcm4329" 140LICENSE_${PN}-bcm4329 = "Firmware-bcm4329"
98FILES_${PN}-bcm4329 = " \ 141FILES_${PN}-bcm4329 = " \
99 /lib/firmware/brcm/brcmfmac4329.bin \ 142 /lib/firmware/brcm/brcmfmac4329.bin \
100 /lib/firmware/LICENCE.broadcom_bcm43xx \
101" 143"
144RDEPENDS_${PN}-bcm4329 += "${PN}-broadcom-license"
102ALTERNATIVE_linux-firmware-bcm4329 = "brcmfmac-sdio.bin" 145ALTERNATIVE_linux-firmware-bcm4329 = "brcmfmac-sdio.bin"
103ALTERNATIVE_TARGET_linux-firmware-bcm4329[brcmfmac-sdio.bin] = "/lib/firmware/brcm/brcmfmac4329.bin" 146ALTERNATIVE_TARGET_linux-firmware-bcm4329[brcmfmac-sdio.bin] = "/lib/firmware/brcm/brcmfmac4329.bin"
104 147
105LICENSE_${PN}-bcm4330 = "Firmware-bcm4330" 148LICENSE_${PN}-bcm4330 = "Firmware-bcm4330"
106FILES_${PN}-bcm4330 = " \ 149FILES_${PN}-bcm4330 = " \
107 /lib/firmware/brcm/brcmfmac4330.bin \ 150 /lib/firmware/brcm/brcmfmac4330.bin \
108 /lib/firmware/LICENCE.broadcom_bcm43xx \
109" 151"
110 152RDEPENDS_${PN}-bcm4330 += "${PN}-broadcom-license"
111ALTERNATIVE_linux-firmware-bcm4330 = "brcmfmac-sdio.bin" 153ALTERNATIVE_linux-firmware-bcm4330 = "brcmfmac-sdio.bin"
112ALTERNATIVE_TARGET_linux-firmware-bcm4330[brcmfmac-sdio.bin] = "/lib/firmware/brcm/brcmfmac4330.bin" 154ALTERNATIVE_TARGET_linux-firmware-bcm4330[brcmfmac-sdio.bin] = "/lib/firmware/brcm/brcmfmac4330.bin"
113 155
114LICENSE_${PN}-bcm4334 = "Firmware-bcm4334" 156LICENSE_${PN}-bcm4334 = "Firmware-bcm4334"
115FILES_${PN}-bcm4334 = " \ 157FILES_${PN}-bcm4334 = " \
116 /lib/firmware/brcm/brcmfmac4334.bin \ 158 /lib/firmware/brcm/brcmfmac4334.bin \
117 /lib/firmware/LICENCE.broadcom_bcm43xx \
118" 159"
119 160RDEPENDS_${PN}-bcm4334 += "${PN}-broadcom-license"
120ALTERNATIVE_linux-firmware-bcm4334 = "brcmfmac-sdio.bin" 161ALTERNATIVE_linux-firmware-bcm4334 = "brcmfmac-sdio.bin"
121ALTERNATIVE_TARGET_linux-firmware-bcm4334[brcmfmac-sdio.bin] = "/lib/firmware/brcm/brcmfmac4334.bin" 162ALTERNATIVE_TARGET_linux-firmware-bcm4334[brcmfmac-sdio.bin] = "/lib/firmware/brcm/brcmfmac4334.bin"
122 163
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_3.8.bb b/meta/recipes-kernel/linux/linux-yocto-rt_3.8.bb
index 255e2e37b4..903fcb5c17 100644
--- a/meta/recipes-kernel/linux/linux-yocto-rt_3.8.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-rt_3.8.bb
@@ -8,8 +8,8 @@ LINUX_KERNEL_TYPE = "preempt-rt"
8 8
9KMETA = "meta" 9KMETA = "meta"
10 10
11SRCREV_machine ?= "f35992f80c81dc5fa1a97165dfd5cbb84661f7cb" 11SRCREV_machine ?= "abd0728b164f651292374e96251ee197b50e3c02"
12SRCREV_machine_qemuppc ?= "5789e3f33c1d5df35ced60d0153cafca7cd0e319" 12SRCREV_machine_qemuppc ?= "1619988b773840ec546292a9cd65dda99d55b96c"
13SRCREV_meta ?= "1b534b2f8bbe9b8a773268cfa30a4850346f6f5f" 13SRCREV_meta ?= "1b534b2f8bbe9b8a773268cfa30a4850346f6f5f"
14 14
15PR = "${INC_PR}.0" 15PR = "${INC_PR}.0"
diff --git a/meta/recipes-kernel/linux/linux-yocto_3.8.bb b/meta/recipes-kernel/linux/linux-yocto_3.8.bb
index 95a4906b99..10fc693d0e 100644
--- a/meta/recipes-kernel/linux/linux-yocto_3.8.bb
+++ b/meta/recipes-kernel/linux/linux-yocto_3.8.bb
@@ -3,12 +3,12 @@ require recipes-kernel/linux/linux-yocto.inc
3KBRANCH_DEFAULT = "standard/base" 3KBRANCH_DEFAULT = "standard/base"
4KBRANCH = "${KBRANCH_DEFAULT}" 4KBRANCH = "${KBRANCH_DEFAULT}"
5 5
6SRCREV_machine_qemuarm ?= "3a73643770a32ea6c86724e92e1e5abecb5dc822" 6SRCREV_machine_qemuarm ?= "bf458ca0e48f4f57cbb02b52070a000f361eec84"
7SRCREV_machine_qemumips ?= "1aefa19417793412ef87217a4cb5d1074dc549ba" 7SRCREV_machine_qemumips ?= "c7297b41016919c95a2c779cafc0aad736f6a400"
8SRCREV_machine_qemuppc ?= "8844013c81e9ad80246aabca6573eed9dbaac646" 8SRCREV_machine_qemuppc ?= "f8848d222d1fcd1ebc517d28f289735621708449"
9SRCREV_machine_qemux86 ?= "15a0766b3d007e5fafce3503375694dff2b0603e" 9SRCREV_machine_qemux86 ?= "42ddf06111efe45f3c36012d5a04a1eeb9781f42"
10SRCREV_machine_qemux86-64 ?= "15a0766b3d007e5fafce3503375694dff2b0603e" 10SRCREV_machine_qemux86-64 ?= "42ddf06111efe45f3c36012d5a04a1eeb9781f42"
11SRCREV_machine ?= "15a0766b3d007e5fafce3503375694dff2b0603e" 11SRCREV_machine ?= "42ddf06111efe45f3c36012d5a04a1eeb9781f42"
12SRCREV_meta ?= "1b534b2f8bbe9b8a773268cfa30a4850346f6f5f" 12SRCREV_meta ?= "1b534b2f8bbe9b8a773268cfa30a4850346f6f5f"
13 13
14SRC_URI = "git://git.yoctoproject.org/linux-yocto-3.8.git;protocol=git;bareclone=1;branch=${KBRANCH},${KMETA};name=machine,meta" 14SRC_URI = "git://git.yoctoproject.org/linux-yocto-3.8.git;protocol=git;bareclone=1;branch=${KBRANCH},${KMETA};name=machine,meta"
diff --git a/meta/recipes-lsb4/libpng/libpng_1.2.50.bb b/meta/recipes-lsb4/libpng/libpng_1.2.50.bb
new file mode 100644
index 0000000000..8fdc41ba19
--- /dev/null
+++ b/meta/recipes-lsb4/libpng/libpng_1.2.50.bb
@@ -0,0 +1,21 @@
1SUMMARY = "PNG Library"
2DESCRIPTION = "PNG Library"
3HOMEPAGE = "http://www.libpng.org/"
4SECTION = "libs"
5LICENSE = "Libpng"
6LIC_FILES_CHKSUM = "file://LICENSE;md5=c3d807a85c09ebdff087f18b4969ff96 \
7 file://png.h;beginline=310;endline=424;md5=b87b5e9252a3e14808a27b92912d268d"
8DEPENDS = "zlib"
9PR = "r0"
10
11SRC_URI = "${SOURCEFORGE_MIRROR}/project/libpng/libpng12/${PV}/libpng-${PV}.tar.xz"
12
13SRC_URI[md5sum] = "a3e00fccbfe356174ab515b5c00641c7"
14SRC_URI[sha256sum] = "4724f81f8c92ac7f360ad1fbf173396ea7c535923424db9fbaff07bfd9d8e8e7"
15
16inherit autotools binconfig pkgconfig
17
18PACKAGES =+ "${PN}12"
19
20FILES_${PN}12 = "${libdir}/libpng12${SOLIBS}"
21RPROVIDES_${PN}-dev += "${PN}12-dev"
diff --git a/meta/recipes-multimedia/alsa/alsa-tools/makefile_no_gtk.patch b/meta/recipes-multimedia/alsa/alsa-tools/makefile_no_gtk.patch
new file mode 100644
index 0000000000..51f934d8f6
--- /dev/null
+++ b/meta/recipes-multimedia/alsa/alsa-tools/makefile_no_gtk.patch
@@ -0,0 +1,21 @@
1Remove some sub-components which need gtk+.
2
3Signed-off-by: Rogerio Nunes <ronunes@gmail.com>
4
5Upstream-Status: Inappropriate [configuration]
6
7diff --git a/Makefile b/Makefile
8--- a/Makefile
9+++ b/Makefile
10@@ -1,8 +1,8 @@
11 VERSION = 1.0.26.1
12 TOP = .
13-SUBDIRS = ac3dec as10k1 envy24control \
14- mixartloader pcxhrloader rmedigicontrol sb16_csp seq sscape_ctl \
15- us428control usx2yloader vxloader echomixer \
16+SUBDIRS = ac3dec as10k1 \
17+ mixartloader pcxhrloader sb16_csp seq sscape_ctl \
18+ us428control usx2yloader vxloader \
19 hwmixvolume hda-verb
20
21 all:
diff --git a/meta/recipes-multimedia/alsa/alsa-tools_1.0.26.1.bb b/meta/recipes-multimedia/alsa/alsa-tools_1.0.26.1.bb
index 2b46aaffdd..81ad55acd3 100644
--- a/meta/recipes-multimedia/alsa/alsa-tools_1.0.26.1.bb
+++ b/meta/recipes-multimedia/alsa/alsa-tools_1.0.26.1.bb
@@ -5,14 +5,15 @@ SECTION = "console/utils"
5LICENSE = "GPLv2 & LGPLv2+" 5LICENSE = "GPLv2 & LGPLv2+"
6DEPENDS = "alsa-lib ncurses" 6DEPENDS = "alsa-lib ncurses"
7 7
8PR = "r0" 8PR = "r1"
9 9
10LIC_FILES_CHKSUM = "file://hdsploader/COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \ 10LIC_FILES_CHKSUM = "file://hdsploader/COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
11 file://ld10k1/COPYING.LIB;md5=7fbc338309ac38fefcd64b04bb903e34" 11 file://ld10k1/COPYING.LIB;md5=7fbc338309ac38fefcd64b04bb903e34"
12 12
13SRC_URI = "ftp://ftp.alsa-project.org/pub/tools/alsa-tools-${PV}.tar.bz2 \ 13SRC_URI = "ftp://ftp.alsa-project.org/pub/tools/alsa-tools-${PV}.tar.bz2 \
14 file://mips_has_no_io_h.patch \ 14 file://mips_has_no_io_h.patch \
15 file://autotools.patch" 15 file://autotools.patch \
16 ${@base_contains('DISTRO_FEATURES', 'x11', '', 'file://makefile_no_gtk.patch', d)}"
16 17
17SRC_URI[md5sum] = "805526ea5d6c40e1f2c94cee86141230" 18SRC_URI[md5sum] = "805526ea5d6c40e1f2c94cee86141230"
18SRC_URI[sha256sum] = "553338693707fe6ddfc430b9edc4cd2677390e200c9e38de82ede3394e733841" 19SRC_URI[sha256sum] = "553338693707fe6ddfc430b9edc4cd2677390e200c9e38de82ede3394e733841"
@@ -21,6 +22,9 @@ inherit autotools
21 22
22EXTRA_OEMAKE += "GITCOMPILE_ARGS='--host=${HOST_SYS} --build=${BUILD_SYS} --target=${TARGET_SYS} --with-libtool-sysroot=${STAGING_DIR_HOST} --prefix=${prefix}' ACLOCAL_FLAGS='-I ${STAGING_DATADIR}/aclocal'" 23EXTRA_OEMAKE += "GITCOMPILE_ARGS='--host=${HOST_SYS} --build=${BUILD_SYS} --target=${TARGET_SYS} --with-libtool-sysroot=${STAGING_DIR_HOST} --prefix=${prefix}' ACLOCAL_FLAGS='-I ${STAGING_DATADIR}/aclocal'"
23 24
25PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'x11', 'gtk+', '', d)}"
26PACKAGECONFIG[gtk+] = ",,gtk+,"
27
24do_compile_prepend () { 28do_compile_prepend () {
25 #Automake dir is not correctly detected in cross compilation case 29 #Automake dir is not correctly detected in cross compilation case
26 export AUTOMAKE_DIR=${STAGING_DATADIR_NATIVE}/$(ls ${STAGING_DATADIR_NATIVE} | grep automake) 30 export AUTOMAKE_DIR=${STAGING_DATADIR_NATIVE}/$(ls ${STAGING_DATADIR_NATIVE} | grep automake)
diff --git a/meta/recipes-multimedia/gstreamer/gst-plugins-bad_0.10.23.bb b/meta/recipes-multimedia/gstreamer/gst-plugins-bad_0.10.23.bb
index 9039f97804..eb289c70de 100644
--- a/meta/recipes-multimedia/gstreamer/gst-plugins-bad_0.10.23.bb
+++ b/meta/recipes-multimedia/gstreamer/gst-plugins-bad_0.10.23.bb
@@ -6,9 +6,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
6 file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605 \ 6 file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605 \
7 file://gst/tta/crc32.h;beginline=12;endline=29;md5=71a904d99ce7ae0c1cf129891b98145c" 7 file://gst/tta/crc32.h;beginline=12;endline=29;md5=71a904d99ce7ae0c1cf129891b98145c"
8 8
9DEPENDS += "gst-plugins-base tremor librsvg curl" 9DEPENDS += "gst-plugins-base tremor curl"
10 10
11PR = "r3" 11PR = "r4"
12 12
13inherit gettext 13inherit gettext
14 14
@@ -16,6 +16,9 @@ EXTRA_OECONF += "--disable-examples --disable-experimental --disable-sdl --disab
16 --with-plugins=wavpack,ivorbis,mpegvideoparse --disable-vdpau --disable-apexsink \ 16 --with-plugins=wavpack,ivorbis,mpegvideoparse --disable-vdpau --disable-apexsink \
17 --disable-orc" 17 --disable-orc"
18 18
19PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'x11', 'librsvg', '', d)}"
20PACKAGECONFIG[librsvg] = "--enable-librsvg,--disable-librsvg,librsvg,"
21
19ARM_INSTRUCTION_SET = "arm" 22ARM_INSTRUCTION_SET = "arm"
20 23
21do_configure_prepend() { 24do_configure_prepend() {
diff --git a/meta/recipes-qt/qt4/qt-mobility_1.2.0.inc b/meta/recipes-qt/qt4/qt-mobility_1.2.0.inc
index fca4cb0a13..1db143817d 100644
--- a/meta/recipes-qt/qt4/qt-mobility_1.2.0.inc
+++ b/meta/recipes-qt/qt4/qt-mobility_1.2.0.inc
@@ -18,7 +18,7 @@ SRC_URI = "http://get.qt.nokia.com/qt/add-ons/qt-mobility-opensource-src-${PV}.t
18SRC_URI[md5sum]="ea5db5a8d3dd4709c2926dceda646bd8" 18SRC_URI[md5sum]="ea5db5a8d3dd4709c2926dceda646bd8"
19SRC_URI[sha256sum]="ee3c88975e04139ac9589f76d4be646d44fcbc4c8c1cf2db621abc154cf0ba44" 19SRC_URI[sha256sum]="ee3c88975e04139ac9589f76d4be646d44fcbc4c8c1cf2db621abc154cf0ba44"
20 20
21PR = "r7" 21PR = "r8"
22 22
23S = "${WORKDIR}/qt-mobility-opensource-src-${PV}" 23S = "${WORKDIR}/qt-mobility-opensource-src-${PV}"
24 24
@@ -31,6 +31,8 @@ qtm_plugins := "/usr/lib/${qtm_dir}/plugins/QtMobility"
31qtm_data := "/usr/share/${qtm_dir}" 31qtm_data := "/usr/share/${qtm_dir}"
32qtm_imports := "/usr/lib/${qtm_dir}/imports" 32qtm_imports := "/usr/lib/${qtm_dir}/imports"
33 33
34QTM_MODULES_LIST ?= "bearer contacts gallery location publishsubscribe messaging multimedia \
35systeminfo serviceframework sensors versit organizer feedback connectivity"
34qtm_bluezflag ?= "${@base_contains('DISTRO_FEATURES', 'bluetooth', 'yes', 'no', d)}" 36qtm_bluezflag ?= "${@base_contains('DISTRO_FEATURES', 'bluetooth', 'yes', 'no', d)}"
35 37
36do_configure_prepend() { 38do_configure_prepend() {
@@ -44,7 +46,7 @@ do_configure_prepend() {
44 cp staticconfig.pri staticconfig.pri.old 46 cp staticconfig.pri staticconfig.pri.old
45 echo "include(${STAGING_DATADIR}/${qtm_dir}/mkspecs/qconfig.pri)" >staticconfig.pri 47 echo "include(${STAGING_DATADIR}/${qtm_dir}/mkspecs/qconfig.pri)" >staticconfig.pri
46 cat staticconfig.pri.old >>staticconfig.pri 48 cat staticconfig.pri.old >>staticconfig.pri
47 ./configure -qmake-exec qmake2 -prefix /usr -examples -demos 49 ./configure -qmake-exec qmake2 -prefix /usr -examples -demos -modules "${QTM_MODULES_LIST}"
48 echo QT_MOBILITY_BIN = ${qtm_bin} >>./config.pri 50 echo QT_MOBILITY_BIN = ${qtm_bin} >>./config.pri
49 echo QT_MOBILITY_LIB = ${qtm_lib} >>./config.pri 51 echo QT_MOBILITY_LIB = ${qtm_lib} >>./config.pri
50 echo QT_MOBILITY_INCLUDE = ${qtm_include} >>./config.pri 52 echo QT_MOBILITY_INCLUDE = ${qtm_include} >>./config.pri
diff --git a/meta/recipes-support/boost/bjam-native_1.53.0.bb b/meta/recipes-support/boost/bjam-native_1.53.0.bb
new file mode 100644
index 0000000000..59a031032c
--- /dev/null
+++ b/meta/recipes-support/boost/bjam-native_1.53.0.bb
@@ -0,0 +1,15 @@
1include boost-${PV}.inc
2
3DESCRIPTION = "Portable Boost.Jam build tool for boost"
4SECTION = "devel"
5
6inherit native
7
8do_compile() {
9 ./bootstrap.sh --with-toolset=gcc
10}
11
12do_install() {
13 install -d ${D}${bindir}/
14 install -c -m 755 bjam ${D}${bindir}/
15}
diff --git a/meta/recipes-support/boost/boost-1.53.0.inc b/meta/recipes-support/boost/boost-1.53.0.inc
new file mode 100644
index 0000000000..dbcaabcd10
--- /dev/null
+++ b/meta/recipes-support/boost/boost-1.53.0.inc
@@ -0,0 +1,19 @@
1# The Boost web site provides free peer-reviewed portable
2# C++ source libraries. The emphasis is on libraries which
3# work well with the C++ Standard Library. The libraries are
4# intended to be widely useful, and are in regular use by
5# thousands of programmers across a broad spectrum of applications.
6HOMEPAGE = "http://www.boost.org/"
7LICENSE = "BSL-1.0 & MIT & Python-2.0"
8LIC_FILES_CHKSUM = "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
9
10BOOST_VER = "${@"_".join(d.getVar("PV",1).split("."))}"
11BOOST_MAJ = "${@"_".join(d.getVar("PV",1).split(".")[0:2])}"
12BOOST_P = "boost_${BOOST_VER}"
13
14SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BOOST_P}.tar.bz2"
15
16SRC_URI[md5sum] = "a00d22605d5dbcfb4c9936a9b35bc4c2"
17SRC_URI[sha256sum] = "f88a041b01882b0c9c5c05b39603ec8383fb881f772f6f9e6e6fd0e0cddb9196"
18
19S = "${WORKDIR}/${BOOST_P}"
diff --git a/meta/recipes-support/boost/boost.inc b/meta/recipes-support/boost/boost.inc
index 1266666e30..a1c35c7b95 100644
--- a/meta/recipes-support/boost/boost.inc
+++ b/meta/recipes-support/boost/boost.inc
@@ -1,25 +1,9 @@
1# The Boost web site provides free peer-reviewed portable
2# C++ source libraries. The emphasis is on libraries which
3# work well with the C++ Standard Library. The libraries are
4# intended to be widely useful, and are in regular use by
5# thousands of programmers across a broad spectrum of applications.
6DESCRIPTION = "Free peer-reviewed portable C++ source libraries" 1DESCRIPTION = "Free peer-reviewed portable C++ source libraries"
7HOMEPAGE = "http://www.boost.org/"
8SECTION = "libs" 2SECTION = "libs"
9DEPENDS = "boost-native zlib bzip2" 3DEPENDS = "bjam-native zlib bzip2"
10DEPENDS_class-native = ""
11LICENSE = "BSL-1.0 & MIT & Python-2.0"
12 4
13ARM_INSTRUCTION_SET = "arm" 5ARM_INSTRUCTION_SET = "arm"
14 6
15BOOST_VER = "${@"_".join(d.getVar("PV",1).split("."))}"
16BOOST_MAJ = "${@"_".join(d.getVar("PV",1).split(".")[0:2])}"
17BOOST_P = "boost_${BOOST_VER}"
18
19SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BOOST_P}.tar.bz2"
20
21S = "${WORKDIR}/${BOOST_P}"
22
23BOOST_LIBS = "\ 7BOOST_LIBS = "\
24 date_time \ 8 date_time \
25 filesystem \ 9 filesystem \
@@ -126,6 +110,8 @@ BJAM_OPTS = '${PARALLEL_MAKE} \
126 --disable-icu \ 110 --disable-icu \
127 ${BJAM_EXTRA}' 111 ${BJAM_EXTRA}'
128 112
113# Native compilation of bzip2 isn't working
114BJAM_OPTS_append_class-native = ' -sNO_BZIP2=1'
129 115
130do_boostconfig() { 116do_boostconfig() {
131 cp -f boost/config/platform/linux.hpp boost/config/platform/linux-gnueabi.hpp 117 cp -f boost/config/platform/linux.hpp boost/config/platform/linux-gnueabi.hpp
@@ -138,7 +124,7 @@ do_boostconfig() {
138 124
139 echo "using python : ${PYTHON_VERSION} : : ${STAGING_INCDIR}/python${PYTHON_VERSION} ;" >> ${S}/tools/build/v2/user-config.jam 125 echo "using python : ${PYTHON_VERSION} : : ${STAGING_INCDIR}/python${PYTHON_VERSION} ;" >> ${S}/tools/build/v2/user-config.jam
140 126
141 CC="${BUILD_CC}" CFLAGS="${BUILD_CFLAGS}" ./bootstrap.sh --with-toolset=gcc --with-python-root=${PYTHON_ROOT} 127 CC="${BUILD_CC}" CFLAGS="${BUILD_CFLAGS}" ./bootstrap.sh --with-bjam=bjam --with-toolset=gcc --with-python-root=${PYTHON_ROOT}
142 sed -i '/^using python/d' project-config.jam 128 sed -i '/^using python/d' project-config.jam
143} 129}
144 130
@@ -170,30 +156,3 @@ do_install() {
170} 156}
171 157
172BBCLASSEXTEND = "native" 158BBCLASSEXTEND = "native"
173
174do_configure_class-native() {
175 :
176}
177
178do_boostconfig_class-native() {
179 :
180}
181
182do_compile_class-native() {
183 set -ex
184 cd ${S}/tools/build/v2/engine
185 rm -rf bin.*
186 ./build.sh gcc
187}
188
189# This is too terrible - the build script doesn't give any good
190# way I can see to find out where the binaries are placed, so
191# rely on only one bin.foo directory being created.
192do_install_class-native () {
193 set -ex
194 cd ${S}/tools/build/v2/engine
195 install -d ${D}${bindir}/
196 install -c -m 755 bin.*/bjam ${D}${bindir}/
197}
198
199
diff --git a/meta/recipes-support/boost/boost_1.53.0.bb b/meta/recipes-support/boost/boost_1.53.0.bb
index de721c532f..3a5a6cc386 100644
--- a/meta/recipes-support/boost/boost_1.53.0.bb
+++ b/meta/recipes-support/boost/boost_1.53.0.bb
@@ -1,9 +1,7 @@
1include boost-${PV}.inc
1include boost.inc 2include boost.inc
2 3
3LIC_FILES_CHKSUM = "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c" 4PR = "r1"
4 5
5SRC_URI += "file://arm-intrinsics.patch \ 6SRC_URI += "file://arm-intrinsics.patch \
6 " 7 "
7
8SRC_URI[md5sum] = "a00d22605d5dbcfb4c9936a9b35bc4c2"
9SRC_URI[sha256sum] = "f88a041b01882b0c9c5c05b39603ec8383fb881f772f6f9e6e6fd0e0cddb9196"
diff --git a/meta/recipes-support/nspr/files/nspr.pc.in b/meta/recipes-support/nspr/files/nspr.pc.in
index e7af08d271..c37d0bcbd7 100644
--- a/meta/recipes-support/nspr/files/nspr.pc.in
+++ b/meta/recipes-support/nspr/files/nspr.pc.in
@@ -6,6 +6,6 @@ includedir=OEINCDIR
6 6
7Name: NSPR 7Name: NSPR
8Description: The Netscape Portable Runtime 8Description: The Netscape Portable Runtime
9Version: 4.8.9 9Version: 4.9.5
10Libs: -L${libdir} -lplds4 -lplc4 -lnspr4 -lpthread -ldl 10Libs: -L${libdir} -lplds4 -lplc4 -lnspr4 -lpthread -ldl
11Cflags: 11Cflags:
diff --git a/scripts/buildhistory-collect-srcrevs b/scripts/buildhistory-collect-srcrevs
new file mode 100755
index 0000000000..7f65c90376
--- /dev/null
+++ b/scripts/buildhistory-collect-srcrevs
@@ -0,0 +1,104 @@
1#!/usr/bin/env python
2#
3# Collects the recorded SRCREV values from buildhistory and reports on them
4#
5# Copyright 2013 Intel Corporation
6# Authored-by: Paul Eggleton <paul.eggleton@intel.com>
7#
8# This program is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License version 2 as
10# published by the Free Software Foundation.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License along
18# with this program; if not, write to the Free Software Foundation, Inc.,
19# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20
21import os, sys
22import optparse
23import logging
24
25def logger_create():
26 logger = logging.getLogger("buildhistory")
27 loggerhandler = logging.StreamHandler()
28 loggerhandler.setFormatter(logging.Formatter("%(levelname)s: %(message)s"))
29 logger.addHandler(loggerhandler)
30 logger.setLevel(logging.INFO)
31 return logger
32
33logger = logger_create()
34
35def main():
36 parser = optparse.OptionParser(
37 usage = """
38 %prog [options] <buildhistory-dir>""")
39
40 parser.add_option("-a", "--report-all",
41 help = "Report all SRCREV values, not just ones where AUTOREV has been used",
42 action="store_true", dest="reportall")
43 parser.add_option("-f", "--forcevariable",
44 help = "Use forcevariable override for all output lines",
45 action="store_true", dest="forcevariable")
46
47 options, args = parser.parse_args(sys.argv)
48
49 if len(args) != 2:
50 parser.print_help()
51 sys.exit(1)
52
53 buildhistory_dir = args[1]
54 if not os.path.exists(buildhistory_dir):
55 logger.error('specified buildhistory path %s could not be found' % buildhistory_dir)
56 sys.exit(1)
57
58 if options.forcevariable:
59 forcevariable = '_forcevariable'
60 else:
61 forcevariable = ''
62
63 lastdir = ''
64 for root, dirs, files in os.walk(buildhistory_dir):
65 if '.git' in dirs:
66 dirs.remove('.git')
67 for fn in files:
68 if fn == 'latest_srcrev':
69 curdir = os.path.basename(os.path.dirname(root))
70 if lastdir != curdir:
71 print('# %s' % curdir)
72 lastdir = curdir
73 fullpath = os.path.join(root, fn)
74 pn = os.path.basename(root)
75 srcrev = None
76 orig_srcrev = None
77 orig_srcrevs = {}
78 srcrevs = {}
79 with open(fullpath) as f:
80 for line in f:
81 if '=' in line:
82 splitval = line.split('=')
83 value = splitval[1].strip('" \t\n\r')
84 if line.startswith('# SRCREV = '):
85 orig_srcrev = value
86 elif line.startswith('# SRCREV_'):
87 splitval = line.split('=')
88 name = splitval[0].split('_')[1].strip()
89 orig_srcrevs[name] = value
90 elif line.startswith('SRCREV ='):
91 srcrev = value
92 elif line.startswith('SRCREV_'):
93 name = splitval[0].split('_')[1].strip()
94 srcrevs[name] = value
95 if srcrev and (options.reportall or srcrev != orig_srcrev):
96 print('SRCREV_pn-%s%s = "%s"' % (pn, forcevariable, srcrev))
97 for name, value in srcrevs.items():
98 orig = orig_srcrevs.get(name, orig_srcrev)
99 if options.reportall or value != orig:
100 print('SRCREV_%s_pn-%s%s = "%s"' % (name, pn, forcevariable, value))
101
102
103if __name__ == "__main__":
104 main()
diff --git a/scripts/contrib/build-perf-test.sh b/scripts/contrib/build-perf-test.sh
new file mode 100755
index 0000000000..44a902c135
--- /dev/null
+++ b/scripts/contrib/build-perf-test.sh
@@ -0,0 +1,348 @@
1#!/bin/bash
2#
3# This script runs a series of tests (with and without sstate) and reports build time (and tmp/ size)
4#
5# Build performance test script
6#
7# Copyright 2013 Intel Corporation
8#
9# This program is free software; you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation; either version 2 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with this program; if not, write to the Free Software
21# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22#
23#
24# AUTHORS:
25# Stefan Stanacar <stefanx.stanacar@intel.com>
26
27
28ME=$(basename $0)
29
30#
31# usage and setup
32#
33
34usage () {
35cat << EOT
36Usage: $ME [-h]
37 $ME [-c <commit>] [-v] [-m <val>] [-j <val>] [-t <val>] [-i <image-name>] [-d <path>]
38Options:
39 -h
40 Display this help and exit.
41 -c <commit>
42 git checkout <commit> before anything else
43 -v
44 Show bitbake output, don't redirect it to a log.
45 -m <machine>
46 Value for MACHINE. Default is qemux86.
47 -j <val>
48 Value for PARALLEL_MAKE. Default is 8.
49 -t <val>
50 Value for BB_NUMBER_THREADS. Default is 8.
51 -i <image-name>
52 Instead of timing against core-image-sato, use <image-name>
53 -d <path>
54 Use <path> as DL_DIR
55 -p <githash>
56 Cherry pick githash onto the commit
57
58Note: current working directory must be inside a poky git clone.
59
60EOT
61}
62
63
64if clonedir=$(git rev-parse --show-toplevel); then
65 cd $clonedir
66else
67 echo "The current working dir doesn't seem to be a poky git clone. Please cd there before running $ME"
68 exit 1
69fi
70
71IMAGE="core-image-sato"
72verbose=0
73dldir=
74commit=
75pmake=
76cherrypicks=
77while getopts "hvc:m:j:t:i:d:p:" opt; do
78 case $opt in
79 h) usage
80 exit 0
81 ;;
82 v) verbose=1
83 ;;
84 c) commit=$OPTARG
85 ;;
86 m) export MACHINE=$OPTARG
87 ;;
88 j) pmake=$OPTARG
89 ;;
90 t) export BB_NUMBER_THREADS=$OPTARG
91 ;;
92 i) IMAGE=$OPTARG
93 ;;
94 d) dldir=$OPTARG
95 ;;
96 p) cherrypicks="$cherrypicks $OPTARG"
97 ;;
98 *) usage
99 exit 1
100 ;;
101 esac
102done
103
104
105#drop cached credentials and test for sudo access without a password
106sudo -k -n ls > /dev/null 2>&1
107reqpass=$?
108if [ $reqpass -ne 0 ]; then
109 echo "The script requires sudo access to drop caches between builds (echo 3 > /proc/sys/vm/drop_caches)"
110 read -s -p "Please enter your sudo password: " pass
111 echo
112fi
113
114if [ -n "$commit" ]; then
115 echo "git checkout $commit"
116 git pull > /dev/null 2>&1
117 git checkout $commit || exit 1
118 git pull > /dev/null 2>&1
119fi
120
121if [ -n "$cherrypicks" ]; then
122 for c in $cherrypicks; do
123 git cherry-pick $c
124 done
125fi
126
127rev=$(git rev-parse --short HEAD) || exit 1
128OUTDIR="$clonedir/build-perf-test/results-$rev-`date "+%Y%m%d%H%M%S"`"
129BUILDDIR="$OUTDIR/build"
130resultsfile="$OUTDIR/results.log"
131bboutput="$OUTDIR/bitbake.log"
132myoutput="$OUTDIR/output.log"
133globalres="$clonedir/build-perf-test/globalres.log"
134
135mkdir -p $OUTDIR || exit 1
136
137log () {
138 local msg="$1"
139 echo "`date`: $msg" | tee -a $myoutput
140}
141
142
143#
144# Config stuff
145#
146
147rev=$(git rev-parse HEAD) || exit 1
148log "Git revision is $rev"
149
150source ./oe-init-build-env $OUTDIR/build >/dev/null || exit 1
151cd $OUTDIR/build
152
153[ -n "$MACHINE" ] || export MACHINE="qemux86"
154[ -n "$BB_NUMBER_THREADS" ] || export BB_NUMBER_THREADS="8"
155
156if [ -n "$pmake" ]; then
157 export PARALLEL_MAKE="-j $pmake"
158else
159 export PARALLEL_MAKE="-j 8"
160fi
161
162if [ -n "$dldir" ]; then
163 echo "DL_DIR = \"$dldir\"" >> conf/local.conf
164else
165 echo "DL_DIR = \"$clonedir/build-perf-test/downloads\"" >> conf/local.conf
166fi
167
168#
169# Functions
170#
171
172declare -a TIMES
173time_count=0
174
175bbtime () {
176 log " Timing: bitbake $1"
177
178 if [ $verbose -eq 0 ]; then
179 /usr/bin/time -v -o $resultsfile bitbake "$1" >> $bboutput
180 else
181 /usr/bin/time -v -o $resultsfile bitbake "$1"
182 fi
183 ret=$?
184 if [ $ret -eq 0 ]; then
185 t=`grep wall $resultsfile | sed 's/.*m:ss): //'`
186 log " TIME: $t"
187 TIMES[(( time_count++ ))]="$t"
188 else
189 log "ERROR: exit status was non-zero, will report time as 0."
190 TIMES[(( time_count++ ))]="0"
191 fi
192
193 #time by default overwrites the output file and we want to keep the results
194 #it has an append option but I don't want to clobber the results in the same file
195 i=`ls $OUTDIR/results.log* |wc -l`
196 mv $resultsfile "${resultsfile}.${i}"
197 log "More stats can be found in ${resultsfile}.${i}"
198}
199
200#we don't time bitbake here
201bbnotime () {
202 log " Running: bitbake $1"
203 if [ $verbose -eq 0 ]; then
204 bitbake "$1" >> $bboutput
205 else
206 bitbake "$1"
207 fi
208 ret=$?
209 if [ $ret -eq 0 ]; then
210 log " Finished bitbake $1"
211 else
212 log "ERROR: exit status was non-zero. Exit.."
213 exit $?
214 fi
215
216}
217
218do_rmtmp() {
219 log " Removing tmp"
220 rm -rf bitbake.lock pseudodone conf/sanity_info cache tmp
221}
222do_rmsstate () {
223 log " Removing sstate-cache"
224 rm -rf sstate-cache
225}
226do_sync () {
227 log " Syncing and dropping caches"
228 sync; sync
229 if [ $reqpass -eq 0 ]; then
230 sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
231 else
232 echo "$pass" | sudo -S sh -c "echo 3 > /proc/sys/vm/drop_caches"
233 echo
234 fi
235 sleep 3
236}
237
238####
239
240#
241# Test 1
242# Measure: Wall clock of "bitbake core-image-sato" and size of tmp/dir (w/o rm_work and w/ rm_work)
243# Pre: Downloaded sources, no sstate
244# Steps:
245# Part1:
246# - fetchall
247# - clean build dir
248# - time bitbake core-image-sato
249# - collect data
250# Part2:
251# - bitbake virtual/kernel -c cleansstate
252# - time bitbake virtual/kernel
253# Part3:
254# - add INHERIT to local.conf
255# - clean build dir
256# - build
257# - report size, remove INHERIT
258
259test1_p1 () {
260log "Running Test 1, part 1/3: Measure wall clock of bitbake $IMAGE and size of tmp/ dir"
261bbnotime "$IMAGE -c fetchall"
262do_rmtmp
263do_rmsstate
264do_sync
265bbtime "$IMAGE"
266log "SIZE of tmp dir is: `du -sh tmp | sed 's/tmp//'`"
267log "Buildstats are saved in $OUTDIR/buildstats-test1"
268mv tmp/buildstats $OUTDIR/buildstats-test1
269}
270
271
272test1_p2 () {
273log "Running Test 1, part 2/3: bitbake virtual/kernel -c cleansstate and time bitbake virtual/kernel"
274bbnotime "virtual/kernel -c cleansstate"
275do_sync
276bbtime "virtual/kernel"
277}
278
279test1_p3 () {
280log "Running Test 1, part 3/3: Build $IMAGE w/o sstate and report size of tmp/dir with rm_work enabled"
281echo "INHERIT += \"rm_work\"" >> conf/local.conf
282do_rmtmp
283do_rmsstate
284do_sync
285bbtime "$IMAGE"
286sed -i 's/INHERIT += \"rm_work\"//' conf/local.conf
287log "SIZE of tmp dir is: `du -sh tmp | sed 's/tmp//'`"
288log "Buildstats are saved in $OUTDIR/buildstats-test13"
289mv tmp/buildstats $OUTDIR/buildstats-test13
290}
291
292
293#
294# Test 2
295# Measure: Wall clock of "bitbake core-image-sato" and size of tmp/dir
296# Pre: populated sstate cache
297
298test2 () {
299#assuming test 1 has run
300log "Running Test 2: Measure wall clock of bitbake $IMAGE -c rootfs with sstate"
301do_rmtmp
302do_sync
303bbtime "$IMAGE -c rootfs"
304}
305
306
307# Test 3
308# parsing time metrics
309#
310# Start with
311# i) "rm -rf tmp/cache; time bitbake -p"
312# ii) "rm -rf tmp/cache/default-eglibc/; time bitbake -p"
313# iii) "time bitbake -p"
314
315
316test3 () {
317log "Running Test 3: Parsing time metrics (bitbake -p)"
318log " Removing tmp/cache && cache"
319rm -rf tmp/cache cache
320bbtime "-p"
321log " Removing tmp/cache/default-eglibc/"
322rm -rf tmp/cache/default-eglibc/
323bbtime "-p"
324bbtime "-p"
325}
326
327
328
329# RUN!
330
331test1_p1
332test1_p2
333test1_p3
334test2
335test3
336
337log "All done, cleaning up..."
338
339do_rmtmp
340do_rmsstate
341
342# if we got til here write to global results
343echo "$rev" >> $globalres
344for i in "${TIMES[@]}"; do
345 echo -n "$i," >> $globalres
346done
347echo >> $globalres
348sed -i '$ s/,$//' $globalres
diff --git a/scripts/oe-setup-builddir b/scripts/oe-setup-builddir
index 95c803d504..76e17784d8 100755
--- a/scripts/oe-setup-builddir
+++ b/scripts/oe-setup-builddir
@@ -55,6 +55,7 @@ if [ "x" != "x$TEMPLATECONF" ]; then
55 fi 55 fi
56 OECORELAYERCONF="$TEMPLATECONF/bblayers.conf.sample" 56 OECORELAYERCONF="$TEMPLATECONF/bblayers.conf.sample"
57 OECORELOCALCONF="$TEMPLATECONF/local.conf.sample" 57 OECORELOCALCONF="$TEMPLATECONF/local.conf.sample"
58 OECORENOTESCONF="$TEMPLATECONF/conf-notes.txt"
58fi 59fi
59 60
60if [ "x" = "x$OECORELOCALCONF" ]; then 61if [ "x" = "x$OECORELOCALCONF" ]; then
@@ -113,14 +114,9 @@ cat <<EOM
113 114
114You can now run 'bitbake <target>' 115You can now run 'bitbake <target>'
115 116
116Common targets are:
117 core-image-minimal
118 core-image-sato
119 meta-toolchain
120 meta-toolchain-sdk
121 adt-installer
122 meta-ide-support
123
124You can also run generated qemu images with a command like 'runqemu qemux86'
125
126EOM 117EOM
118if [ "x" = "x$OECORENOTESCONF" ]; then
119 OECORENOTESCONF="$OEROOT/meta/conf/conf-notes.txt"
120fi
121cat $OECORENOTESCONF
122unset OECORENOTESCONF
diff --git a/scripts/qemuimage-testlib b/scripts/qemuimage-testlib
index a800f681f2..f791c527ab 100755
--- a/scripts/qemuimage-testlib
+++ b/scripts/qemuimage-testlib
@@ -408,8 +408,8 @@ Test_Create_Qemu()
408 export MACHINE=$QEMUARCH 408 export MACHINE=$QEMUARCH
409 409
410 # Create Qemu in localhost VNC Port 1 410 # Create Qemu in localhost VNC Port 1
411 echo "Running xterm -display ${DISPLAY} -e 'OE_TMPDIR=${OE_TMPDIR} ${RUNQEMU} ${KERNEL} ${TEST_ROOTFS_IMAGE} | tee ${RUNQEMU_LOGFILE} || /bin/sleep 60' &" 411 echo "Running xterm -display ${DISPLAY} -e 'OE_TMPDIR=${OE_TMPDIR} ${RUNQEMU} ${KERNEL} ${TEST_ROOTFS_IMAGE} 2>&1 | tee ${RUNQEMU_LOGFILE} || /bin/sleep 60' &"
412 xterm -display ${DISPLAY} -e "OE_TMPDIR=${OE_TMPDIR} ${RUNQEMU} ${KERNEL} ${TEST_ROOTFS_IMAGE} | tee ${RUNQEMU_LOGFILE} || /bin/sleep 60" & 412 xterm -display ${DISPLAY} -e "OE_TMPDIR=${OE_TMPDIR} ${RUNQEMU} ${KERNEL} ${TEST_ROOTFS_IMAGE} 2>&1 | tee ${RUNQEMU_LOGFILE} || /bin/sleep 60" &
413 413
414 # Get the pid of the xterm processor, which will be used in Test_Kill_Qemu 414 # Get the pid of the xterm processor, which will be used in Test_Kill_Qemu
415 XTERMPID=$! 415 XTERMPID=$!
@@ -418,7 +418,7 @@ Test_Create_Qemu()
418 sleep 5 418 sleep 5
419 fi 419 fi
420 420
421 while [ ${up_time} -lt 10 ] 421 while [ ${up_time} -lt 30 ]
422 do 422 do
423 QEMUPID=`qemuimage-testlib-pythonhelper --findqemu $XTERMPID 2>/dev/null` 423 QEMUPID=`qemuimage-testlib-pythonhelper --findqemu $XTERMPID 2>/dev/null`
424 if [ $? -ne 0 ]; then 424 if [ $? -ne 0 ]; then
@@ -432,7 +432,7 @@ Test_Create_Qemu()
432 fi 432 fi
433 done 433 done
434 434
435 if [ ${up_time} == 10 ]; then 435 if [ ${up_time} == 30 ]; then
436 Test_Info "No qemu process appeared to start, exiting" 436 Test_Info "No qemu process appeared to start, exiting"
437 ps axww -O ppid 437 ps axww -O ppid
438 Test_Info "Process list dumped for debugging purposes" 438 Test_Info "Process list dumped for debugging purposes"
@@ -442,10 +442,11 @@ Test_Create_Qemu()
442 return 1 442 return 1
443 fi 443 fi
444 444
445 up_time=0
445 # Parse IP address of target from the qemu command line 446 # Parse IP address of target from the qemu command line
446 TARGET_IPADDR=`Test_Fetch_Target_IP $QEMUPID` 447 TARGET_IPADDR=`Test_Fetch_Target_IP $QEMUPID`
447 echo "Target IP is ${TARGET_IPADDR}" 448 echo "Target IP is ${TARGET_IPADDR}"
448 if [ ${TARGET_IPADDR} = "" -o "${TARGET_IPADDR}" = "0" ]; then 449 if [ "${TARGET_IPADDR}" = "" -o "${TARGET_IPADDR}" = "0" ]; then
449 Test_Info "There is no qemu process or qemu ip address found, return failed" 450 Test_Info "There is no qemu process or qemu ip address found, return failed"
450 ps -wwf 451 ps -wwf
451 ps axww -O ppid 452 ps axww -O ppid
diff --git a/scripts/qemuimage-testlib-pythonhelper b/scripts/qemuimage-testlib-pythonhelper
index 2c1f557778..bb01246c77 100755
--- a/scripts/qemuimage-testlib-pythonhelper
+++ b/scripts/qemuimage-testlib-pythonhelper
@@ -19,7 +19,7 @@ if options.findqemu:
19 # 19 #
20 # Walk the process tree from the process specified looking for a qemu-system. Return its pid. 20 # Walk the process tree from the process specified looking for a qemu-system. Return its pid.
21 # 21 #
22 ps = subprocess.Popen(['ps', 'ax', '-o', 'pid,ppid,command'], stdout=subprocess.PIPE).communicate()[0] 22 ps = subprocess.Popen(['ps', 'axww', '-o', 'pid,ppid,command'], stdout=subprocess.PIPE).communicate()[0]
23 processes = ps.split('\n') 23 processes = ps.split('\n')
24 nfields = len(processes[0].split()) - 1 24 nfields = len(processes[0].split()) - 1
25 pids = {} 25 pids = {}
diff --git a/scripts/runqemu-internal b/scripts/runqemu-internal
index f06870e972..e8191d1375 100755
--- a/scripts/runqemu-internal
+++ b/scripts/runqemu-internal
@@ -302,7 +302,7 @@ if [ "$MACHINE" = "qemuarm" -o "$MACHINE" = "qemuarmv6" -o "$MACHINE" = "qemuarm
302 # QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS -force-pointer" 302 # QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS -force-pointer"
303 if [ "$FSTYPE" = "ext3" -o "$FSTYPE" = "btrfs" ]; then 303 if [ "$FSTYPE" = "ext3" -o "$FSTYPE" = "btrfs" ]; then
304 KERNCMDLINE="root=/dev/sda rw console=ttyAMA0,115200 console=tty $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY highres=off" 304 KERNCMDLINE="root=/dev/sda rw console=ttyAMA0,115200 console=tty $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY highres=off"
305 QEMUOPTIONS="$QEMU_NETWORK_CMD -M versatilepb -hda $ROOTFS -no-reboot $QEMU_UI_OPTIONS" 305 QEMUOPTIONS="$QEMU_NETWORK_CMD -M ${MACHINE_SUBTYPE} -hda $ROOTFS -no-reboot $QEMU_UI_OPTIONS"
306 fi 306 fi
307 if [ "$FSTYPE" = "nfs" ]; then 307 if [ "$FSTYPE" = "nfs" ]; then
308 if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then 308 if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then
@@ -311,7 +311,7 @@ if [ "$MACHINE" = "qemuarm" -o "$MACHINE" = "qemuarmv6" -o "$MACHINE" = "qemuarm
311 return 1 311 return 1
312 fi 312 fi
313 KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" 313 KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
314 QEMUOPTIONS="$QEMU_NETWORK_CMD -M versatilepb --no-reboot $QEMU_UI_OPTIONS" 314 QEMUOPTIONS="$QEMU_NETWORK_CMD -M ${MACHINE_SUBTYPE} --no-reboot $QEMU_UI_OPTIONS"
315 fi 315 fi
316 if [ "$MACHINE" = "qemuarmv6" ]; then 316 if [ "$MACHINE" = "qemuarmv6" ]; then
317 QEMUOPTIONS="$QEMUOPTIONS -cpu arm1136" 317 QEMUOPTIONS="$QEMUOPTIONS -cpu arm1136"
@@ -325,7 +325,7 @@ if [ "$MACHINE" = "qemux86" ]; then
325 QEMU=qemu-system-i386 325 QEMU=qemu-system-i386
326 QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS -vga vmware" 326 QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS -vga vmware"
327 if [ "$FSTYPE" = "ext2" -o "$FSTYPE" = "ext3" -o "$FSTYPE" = "btrfs" ]; then 327 if [ "$FSTYPE" = "ext2" -o "$FSTYPE" = "ext3" -o "$FSTYPE" = "btrfs" ]; then
328 KERNCMDLINE="vga=0 root=$DROOT rw mem=$QEMU_MEMORY $KERNEL_NETWORK_CMD" 328 KERNCMDLINE="vga=0 uvesafb.mode_option=640x480-32 root=$DROOT rw mem=$QEMU_MEMORY $KERNEL_NETWORK_CMD"
329 QEMUOPTIONS="$QEMU_NETWORK_CMD $ROOTFS_OPTIONS $QEMU_UI_OPTIONS" 329 QEMUOPTIONS="$QEMU_NETWORK_CMD $ROOTFS_OPTIONS $QEMU_UI_OPTIONS"
330 fi 330 fi
331 if [ "$FSTYPE" = "nfs" ]; then 331 if [ "$FSTYPE" = "nfs" ]; then