Compare commits

..

1610 Commits

Author SHA1 Message Date
Joshua Lock
b29bd836ad runqemu: Fix path for i586 cross binaries
As spotted by Jessica Zhang

Signed-off-by: Joshua Lock <josh@linux.intel.com>
2010-04-28 14:12:03 +01:00
Richard Purdie
72eafe23fc Purple 3.2.1 Release 2010-03-19 14:37:29 +00:00
Graeme Gregory
5cc700daae zoom2.conf : switch to using the TI integration tree for kernel
Signed-off-by: Graeme Gregory <gg@slimlogic.co.uk>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2010-03-18 21:48:28 +00:00
Graeme Gregory
c25d4ba28c linux-omap-zoomsync_2.6.32.bb : add kernel from TI zoom2 integration tree
This is the latest code from dev.omapzoom.org and is also what OE is using
for zoom2 machine.

Signed-off-by: Graeme Gregory <gg@slimlogic.co.uk>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2010-03-18 21:48:21 +00:00
Joshua Lock
045b982378 handbook: Correction, we're building QEMU x86 not QEMU Arm image
Signed-off-by: Joshua Lock <josh@linux.intel.com>
2010-03-18 16:13:12 +00:00
Joshua Lock
f99f7e354f handbook: update references of stable version number
Signed-off-by: Joshua Lock <josh@linux.intel.com>
2010-03-18 16:13:03 +00:00
Richard Purdie
82925e8d7f handbook: Various tweaks for recent fop/pdf generation
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2010-03-18 15:44:50 +00:00
Richard Purdie
55e159c873 poky-doc-tools: Update to work with fop >= 0.95
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2010-03-18 15:40:28 +00:00
Joshua Lock
eddcc607c9 scripts/runqemu: Fix some typos
Fix typo in help message (we default to ext3 not ext2 now)
and a typo whereby moblin-image-sdk wouldn't be autofound.

Signed-off-by: Joshua Lock <josh@linux.intel.com>
2010-03-17 12:22:52 +00:00
Enric Balletbo i Serra
b82067c8e7 poky-eabi: Set missing PREFERRED_VERSION of binutils-cross-canadian
Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Signed-off-by: Joshua Lock <josh@linux.intel.com>
2010-03-17 12:09:10 +00:00
Enric Balletbo i Serra
b861de3d39 gcc: Fix fail to compile since they can't find limits.h include.
With gcc package on my build machine gcc can't find limits.h include.

$ cat x.c

$ gcc -M x.c
In file included from x.c:1:
/usr/include/limits.h:125:26: error: no include path in which to search for limits.h

This patch adds missing includes to gcc package.

Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2010-03-05 15:02:29 +00:00
Richard Purdie
10e9286aba gcc: Make sure target_* variables are set, fixing gcc search path issues
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2010-03-05 14:57:06 +00:00
Richard Purdie
e0964ab86c fakeroot: Stop setting LD_LIBRARY_PATH as it breaks things (see patch description)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2010-03-05 14:56:55 +00:00
Richard Purdie
8f7bba3812 gcc-cross-canadian: Fix include paths and hence c++ compiler issues
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2010-03-05 14:56:37 +00:00
Richard Purdie
3a92d518b4 bitbake/data_smart.py: Fix error where update-rc.d would not get added to the dependency tree
If there was a variable such as:

X_${Y}_append = "Z"

The "Z" would be lost if X_${Y} was unset. This was due to a bug in the renameVar
function used by expandKeys().

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2010-03-05 14:37:19 +00:00
Joshua Lock
9fad50948c insane.bbclass: Skip arch check for Cross Canadian
Signed-off-by: Joshua Lock <josh@linux.intel.com>
2009-12-14 12:01:15 +00:00
Joshua Lock
43a1d901f5 local.conf: Fix cross canadian variable, it's SDKMACHINE not SDK_ARCH 2009-12-11 17:25:52 +00:00
Joshua Lock
3ca17dfc31 local.conf: mention the Canadian Cross variable; SDK_ARCH 2009-12-11 15:03:45 +00:00
Joshua Lock
d7919b22fe local.conf: use qemux86 as default target 2009-12-11 15:03:45 +00:00
Joshua Lock
e8bb07c601 handbook: point people at purple in the introduction 2009-12-11 15:03:45 +00:00
Joshua Lock
8626d103f7 poky.conf: change version for release of purple-3.2 2009-12-11 15:03:45 +00:00
Joshua Lock
0b02870404 qemugl-nativesdk: Add a nativesdk package 2009-12-11 15:03:36 +00:00
Enric Balletbo i Serra
7ed5c2cebc udev: Add local.rules for the IGEP v2 to symlink the first framebuffer to /dev/fb
Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-12-10 16:50:20 +00:00
Joshua Lock
12e3b599ca qemugl: remove staging function, no need to stage anything at all 2009-12-09 16:23:45 +00:00
Richard Purdie
76f6ab09ca leadpad/pcmanfm/puzzles: Make libowl optional
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-12-08 21:09:40 +00:00
Richard Purdie
a68bc3912a tasks: Fix missing quote
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-12-08 21:09:22 +00:00
Richard Purdie
1411386a6b poky-fixed-revisions.inc: Update dates revision
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-12-08 21:08:41 +00:00
Richard Purdie
9cb8f533fe pimlico: Clean up libowl handling to be consistent 2009-12-08 21:08:17 +00:00
Richard Purdie
f2bc66b102 libowl: Remove stale comments and enable packaging
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-12-08 21:06:37 +00:00
Richard Purdie
5dfee8d314 bitbake: Fix dict changing size problems
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-12-03 18:02:41 +00:00
Richard Purdie
c1ee270d2c poky-init-build-env: Remove now unneeded return
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-12-03 18:02:34 +00:00
Richard Purdie
80ca44d44c distro/poky: Set EXTRAOPKGCONFIG
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-12-03 18:02:24 +00:00
Richard Purdie
1218b39f24 Add poky-feed-config-opkg (based off moblin version)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-12-03 18:02:14 +00:00
Richard Purdie
c846e5848e scripts/poky-qemu-internal: Make sure qemuarm cursor is visible
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-12-03 18:02:02 +00:00
Richard Purdie
d2ce340b34 libxcalibrate: Fix with xcb
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-12-03 18:01:52 +00:00
Richard Purdie
5f72e5d0f2 pointercal: Update qemuarm calibration files after recent qemu changes to wacom code
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-12-03 18:01:35 +00:00
Richard Purdie
1a651898a8 udev-141: Backport fix from 145 which is also needed here
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-12-03 18:01:20 +00:00
Richard Purdie
0e1d3d91d6 qemu: Update to 0.10.6 and add fix wacom emulation issues
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-12-03 18:01:00 +00:00
Richard Purdie
935b598736 udev: Fix touchscreen link creation with latest version
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-12-03 17:59:39 +00:00
Richard Purdie
1a6a15e568 package.bbclass: Fix runtime_maping_rename so version information isn't removed
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-11-20 17:57:16 +00:00
Nicolas Dechesne
c7edcc0316 sato: move pam from meta-moblin to meta
pam recipe is required to build a sato image, and it was moved in the
meta-moblin collection by mistake, and sato build was broken.

pam is a dependency of policykit which is a dependency of networkmanager.

Signed-off-by: Nicolas Dechesne <n-dechesne@ti.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-11-20 17:49:17 +00:00
Nicolas Dechesne
6d80967bcf sato: move policykit from meta-moblin to met
policykit recipe is required to build a sato image, and it was moved in the
meta-moblin collection by mistake, and sato build was broken.

policykit is a dependency of networkmanager.

Signed-off-by: Nicolas Dechesne <n-dechesne@ti.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-11-20 17:49:08 +00:00
Richard Purdie
96ece54fa3 dbus: Disable X for -native versions, also explicitly disable libaudit
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-11-13 11:09:37 +00:00
Richard Purdie
a338a7a7fd dbus: Improve fix deamon install patch to use automake magic to avoid installing wrapper scripts
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-11-13 09:53:59 +00:00
Richard Purdie
ce3ef9f4e8 dbus-native: Apply install fix patch to ensure the version of dbus-daemon in staging is not a wrapper
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-11-12 22:41:14 +00:00
Richard Purdie
b5b6b222bc bitbake.conf: Drop SHELLCMDS quoting fixing menuconfig task
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-11-12 21:22:56 +00:00
Enric Balletbo i Serra
073faab2b1 linux-igep2: Fix audio capture, the capture result is always silence
Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-11-12 16:51:41 +00:00
Enric Balletbo i Serra
7a8660600e igep0020b.conf: Fix missing u-boot entrypoint
Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-11-12 16:51:38 +00:00
Joe MacDonald
988e4ddf3c poky-init-build-env: Update for BASH 4 Bourne Shell semantics
It's no longer valid in bash 4 when invoked with Bourne Shell semantics to
return unless you're inside a sourced script or a function.  Doing so in
this context doesn't actually exit from the setup script.  This should
probably preserve the original intent.

Signed-off-by: Joe MacDonald <joe@deserted.net>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-11-12 16:49:45 +00:00
Richard Purdie
117b91a172 m4: Apply config_links patch to non-native version as well (from Esben Haabendal <eha@doredevelopment.dk>)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-11-12 16:45:38 +00:00
Esben Haabendal
23a64bce2a m4-native: Fix building on Ubuntu 9.10
Avoid making GNUmakefile a symlink to itself with some versions
of autoconf/automake

Signed-off-by: Esben Haabendal <eha@doredevelopment.dk>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-11-10 12:54:58 +00:00
Richard Purdie
2dddd57e63 meta-moblin: Drop mux as now obsolete
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-11-10 12:41:44 +00:00
Marcin Juszkiewicz
08cd59f7eb poky: add support for changing bootsplash application
SPLASH variable contains name of package which handles bootprogress
display. By default psplash is used.

Signed-off-by: Marcin Juszkiewicz <marcin@buglabs.net>
2009-11-05 12:32:48 +01:00
Richard Purdie
e3c01a6c2f xorg: Fixup DEPENDS on util-macros
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-11-04 15:33:41 +00:00
Marcin Juszkiewicz
099fa6714d gcc 3.4.4: fixed Ubuntu 9.10 build
open() require 3 arguments now.

Signed-off-by: Marcin Juszkiewicz <marcin@buglabs.net>
2009-11-02 20:48:07 +01:00
Richard Purdie
ae0e1ad29b package.bbclass: Cleanup getVar syntax to use True, not 1 as third argument
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-29 23:24:19 +00:00
Richard Purdie
83a64003f8 packaged-staging: Whitelist the empty base_do_stage function as it does nothing and locks need not be held
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-28 15:22:37 +00:00
Richard Purdie
c078d4c0d3 poky.conf: Update source tarball stash url and variable name 2009-10-28 05:51:47 +00:00
Richard Purdie
8ceb125143 gcc-4.1.2: Add missing patch (from OE.dev)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-23 09:59:40 +01:00
Richard Purdie
eb0d2f2615 bitbake-dev: Fix a couple of bugs that crept in breaking runtime
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-22 17:32:12 +01:00
Richard Purdie
a1a308c546 Merge branch 'marcin/trunk' of git://git.pokylinux.org/poky-contrib 2009-10-22 17:00:50 +01:00
Richard Purdie
699fb85c0a bluez4: 4.39 -> 4.56
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-22 16:57:56 +01:00
Graeme Gregory
559cb333d0 linux-libc-headers_2.6.20.bb : more modern glibc expose getline from stdio.h rename the function so not to cause a clash
Signed-off-by: Marcin Juszkiewicz <marcin@buglabs.net>
2009-10-22 14:49:11 +02:00
Richard Purdie
908fa82244 libsynthesis/syncevolution: Switch to 0.9 release branch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-20 16:06:43 +01:00
Richard Purdie
0704ef95f2 poky-fixed-revisions.inc: Remove stray # character
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-20 11:33:03 +01:00
Richard Purdie
f310816acb bitbake: hg fetcher - sync bitbake-dev and remove debug
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-20 11:29:07 +01:00
Richard Purdie
d4fe9e79cf task-moblin-x11-netbook: Bump PR
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-20 11:27:31 +01:00
Richard Purdie
4f6fee840e mozilla-headless: Bump PV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-19 22:55:20 +01:00
Richard Purdie
0e2271239a poky-fixed-revisions.inc: Update mozila-headless SRCREV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-19 18:16:52 +01:00
Richard Purdie
3c0dd2d765 moblin-fixed-revisions.inc: Set mozilla-headless SRCREV correctly
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-19 18:09:53 +01:00
Richard Purdie
b8f69f77f6 mozilla-headless: Convert to auto revisioning
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-19 17:46:29 +01:00
Richard Purdie
717d71b8e9 bitbake: Add hg fetcher auto revisioning, patch from Carl Simonson <simonsonc@gmail.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-19 17:46:09 +01:00
Richard Purdie
96fc6f45bc moblin-floating-revisions: Bump Mozilla headless revision
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-19 17:09:14 +01:00
Richard Purdie
4d9309a8ca poky-fixed-revisions.inc: Set SRCREV for missing packages
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-19 16:32:08 +01:00
Richard Purdie
cb62df186f xserver-xf86-lite.inc: Make sure the correct RDEPENDS variable is appended too (thanks Enric)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-18 11:31:41 +01:00
Richard Purdie
7465fba01e mutter-moblin: Add missing DEPENDS on bognor-regis (thanks Enric)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-18 11:30:12 +01:00
Richard Purdie
ac4d25c89a bitbake: Fix svk fetcher
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-17 21:07:40 +01:00
Richard Purdie
627d9b1bde bitbake-dev: Sync with changes upstream
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-17 20:11:27 +01:00
Richard Purdie
f1216d2adb udev: Remove broken exec_prefix which fixes file layout and stages libudev correctly
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-14 17:28:13 +01:00
Richard Purdie
9b53d44c11 xserver-xf86-dri-lite: Fix RDEPENDS as RDEPENDS_PN is set and this overrides the base variable
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-14 16:22:55 +01:00
Enric Balletbo i Serra
65b24a0d83 xserver-xf86-config: Add version for IGEP v2 board
Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-14 16:18:17 +01:00
Enric Balletbo i Serra
f4ccb8fb83 formfactor: Add version for IGEP v2 board
Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-14 16:18:13 +01:00
Enric Balletbo i Serra
af132647e1 linux-igep2: kernel recipe for IGEP v2 board
Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-14 16:18:09 +01:00
Enric Balletbo i Serra
6598379dfc igep0020b.conf: Initial IGEP v2 board support
The IGEP v2 board is a low-cost, fan-less single board computer that
unleashes laptop-like performance and expandability without the bulk,
expense, or noise of typical desktop machines. Its architecture shares
much in common with other OMAP3 boards.

Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-14 16:17:23 +01:00
Enric Balletbo i Serra
5a8dd65872 xf86-video-omapfb: Add X.Org driver for TI OMAP framebuffers
Sync with OE.dev

Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-14 16:16:04 +01:00
Richard Purdie
7642529554 bitbake: Anonymous funciton improvements - use methodpool to allow cached code and remove anonymous function indentation mismatch problems
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-13 08:38:13 +01:00
Richard Purdie
44549775eb bitbake: Add bb and os to __builtins__, not the exec function global
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-13 08:38:13 +01:00
Richard Purdie
74016daa3a bitbake: Remove unused and hence pointless internal__functions__ variable
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-13 08:38:13 +01:00
Richard Purdie
dbf6a79be2 mobile-broadband-provider-info: Set PV correctly
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-12 23:18:47 +01:00
Richard Purdie
07c0fc055c moblin-floating-revisions.inc: Bump mozilla-headless revision
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-12 23:18:10 +01:00
Richard Purdie
279afff4f2 prefferred-xorg-versions: Update util-macros
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-12 17:57:54 +01:00
Richard Purdie
82d0344cb5 carrick: Add missing DEPENDS on mobile-broadband-provider-info
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-12 17:57:08 +01:00
Richard Purdie
d1b315db27 Add mobile-broadband-probider-info
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-12 17:56:36 +01:00
Richard Purdie
6f5fd5b0cf pango: Add 1.26.0
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-12 17:53:09 +01:00
Richard Purdie
424441d294 carrick: Add librest and libnotify to DEPENDS
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-12 12:50:42 +01:00
Richard Purdie
fec7fdee93 connman: Add option to enable tests
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-12 12:34:10 +01:00
Richard Purdie
9996221679 xf86-video-intel: Drop patches from git version
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-12 12:30:35 +01:00
Richard Purdie
127797db30 moblin-floating-revisions: Bump for mozilla-headless
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-09 18:05:58 +01:00
Richard Purdie
2ddd5a8c59 packagekit: Make sure connman is used, not network manager
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-09 17:08:44 +01:00
Richard Purdie
9c00056521 telepathy-glib: 0.7.29 -> 0.9.0
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-09 17:04:58 +01:00
Richard Purdie
f6db09f914 util-macros: 1.2.1 -> 1.3.0
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-09 17:04:21 +01:00
Richard Purdie
e57be74b8b moblin-app-installer: Add package
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-05 21:20:22 +01:00
Richard Purdie
220533aa03 packagekit: 0.3.8 -> 0.4.9 (and sync with OE.dev) and add gnome-packagekit from OE.dev)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-05 21:18:00 +01:00
Richard Purdie
b819bd9da1 libsexy: Add along with dependencies (aspell + enchant) from OE.dev
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-05 21:15:39 +01:00
Richard Purdie
5ce319a9b8 gnome-menus: 2.24.0 -> 2.24.1
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-05 21:12:06 +01:00
Richard Purdie
3aa68f1282 opkg: Switch to google svn and patch to export a version comparision function (patches taken from OE.dev)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-05 21:11:16 +01:00
Richard Purdie
67a79c7443 bitbake.conf: Fix STAGING_BINDIR_CROSS to point to the location before the layout_* changes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-05 16:29:06 +01:00
Richard Purdie
2c6494bebb policykit-gnome: Add from OE.dev with tweaks and fixed DEPENDS
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-10-05 11:39:36 +01:00
Richard Purdie
1a92cb6e0a tasks: Update SRCREV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-24 18:57:09 +01:00
Richard Purdie
d326382b5f bitbake/build.py: Remove zero sized log files
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-24 18:57:09 +01:00
Richard Purdie
bec200b38d bitbake/cache.py: Add warnings for leakage of SRCREVINACTION magic value
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-24 18:57:09 +01:00
Richard Purdie
8138603680 bitbake/fetch: Ensure SRCREVINACTION always resets the core flags even when parsing failes by using a try/finally
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-24 18:57:08 +01:00
Richard Purdie
1bc5ed054e bitbake-dev: Sync exported variables with bitbake
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-24 18:57:08 +01:00
Richard Purdie
d3d2bb6373 moblin-fixed-revisions.inc: Update connman revision to avoid parallel make races
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-18 12:39:25 +01:00
Richard Purdie
1d4f93e8f6 Add SDKMACHINE to simplify SDK control and add to CACHE paths to allow environmental variable control
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-18 10:01:33 +01:00
Richard Purdie
8aa3e16e1f nativesdk.bbclass: Drop ineffective dynamic linker flag
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-18 01:05:32 +01:00
Richard Purdie
7663a6e050 task-sdk-host: Add gdb-cross-canadian
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-18 01:04:32 +01:00
Richard Purdie
9943a3e063 gcc-crosssdk: Add code to change the deafult linker path in the case of sdk binaries
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-18 01:03:57 +01:00
Richard Purdie
a4c57e24cd gdb: Add cross-canadian recipe
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-18 01:02:52 +01:00
Richard Purdie
cd93271a66 ncurses: Fix up BUILD_LDFLAGS variable corrupting builds
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-18 01:02:21 +01:00
Richard Purdie
3831d44240 qemu-nativesdk: Use HOST_CC to build parse_gl_h
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-18 01:01:35 +01:00
Richard Purdie
0eb3586073 gcc-configure-common.inc: Fix to use target system paths
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:25 +01:00
Richard Purdie
3fbbc44cfd nativesdk/package_ipk.bbclass: Clean up sdk package architectures
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:25 +01:00
Richard Purdie
1c1305d15c meta-toolchain: Don't ship libGL
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:25 +01:00
Richard Purdie
43a6e6657f qemu-nativesdk: Add patch to fix linkage
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:25 +01:00
Richard Purdie
b4def68389 qemugl: Relax COMPATIBLE_MACHINE slightly for x86_64 case
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:25 +01:00
Richard Purdie
0756b31383 external-poky-toolchain: Don't inherit nativesdk
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:25 +01:00
Richard Purdie
191b03036c gcc-cross-sdk.inc: Drop no unused file
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:25 +01:00
Richard Purdie
4f8e5edf7c qemu-nativesdk: Add qemugl-nativesdk to DEPENDS
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:25 +01:00
Richard Purdie
9f5ef812c9 qemugl: Add staging function
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:25 +01:00
Richard Purdie
1353bc08bc glibc-2.6.1: Fix accidental unintended change
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:24 +01:00
Richard Purdie
7a382df853 task-sdk-host: Use cross-canadian packages 2009-09-17 22:25:24 +01:00
Richard Purdie
3e33f7fcf6 qemu-nativesdk: Use a specific gcc as otherwise configure tests break
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:24 +01:00
Richard Purdie
5369137430 libx11-nativesdk: No need to hardcode DEPENDS/PROVIDES
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:24 +01:00
Richard Purdie
ffc3e23564 gmp-nativesdk: Don't hardcode PV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:24 +01:00
Richard Purdie
a51362cc76 package_ipk.bbclass: Convert to use SDK_ARCH
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:24 +01:00
Richard Purdie
9fba0f42bc bitbake.conf: Update SPECIAL_PKGSUFFIX to include crosssdk/cross-canadian and drop -cross-sdk
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:24 +01:00
Richard Purdie
9174f712c6 gcc-configure-sdk: Tweak compiler options for working canadian cross compiles
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:24 +01:00
Richard Purdie
192709ca26 gcc-configure-common: Allow the sysroot layout seen by the compiler to be configured (based on a patch from OE.dev but improved)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:24 +01:00
Richard Purdie
7efbf5caf8 gcc-configure-common.inc: Allow the multilib option to be changed
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:24 +01:00
Richard Purdie
835bc8f5f6 meta-toolchain: Fix --build CONFIGURE_FLAG and add a target prefix to scripts
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:23 +01:00
Richard Purdie
abfe8598c3 bitbake.conf: Add SDK variable definitions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:23 +01:00
Richard Purdie
31a82c65ae gcc-package-cross: Cope with lib64 binaries
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:23 +01:00
Richard Purdie
00127b3744 packaged-staging.bbclass Use libdir_native for opkg paths in directory creation
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:23 +01:00
Richard Purdie
5912ab1de1 native.bbclass: Use prefix_native variable
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:23 +01:00
Richard Purdie
0768f596eb poky-fixed-revisions.inc: Rename -sdk to -nativesdk
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:23 +01:00
Richard Purdie
ca667135a3 nativesdk: Convert to use crosssdk toolchain and remove binutils/gcc nativesdk recipes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:23 +01:00
Richard Purdie
afa02c5470 cross-canadian: Add cross-canadian class with gcc and binutils recipes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:23 +01:00
Richard Purdie
c906f2bce4 crosssdk: Add crosssdk class with gcc and binutils recipes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:23 +01:00
Richard Purdie
eb1e80fae4 Extend various packages to use nativesdk using BBCLASSEXTEND
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:23 +01:00
Richard Purdie
f7fddc13da mpfr: Convert to use BBCLASSEXTEND
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:22 +01:00
Richard Purdie
bc5afa640b nativesdk: Don't use search and replace on DEPENDS field
Search and replace on the DEPENDS field can cause problems if
multiple similar names are present in the string so use an
alternative approach.

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:22 +01:00
Richard Purdie
0d7207ca39 sdk.bbclass: Rename to nativesdk.bbclass
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:25:22 +01:00
Richard Purdie
af85ce4b4e Remove layout_* variables
Remove layout_* variables and replace them with variables specific to the
different classes. The layout variables were only useful for the native/cross
classes and caused more confusion than they solved. They didn't scale to the
sdk class. It now clear a small set of native/cross variables fulfil the needs.

This patch also changes native.bbclass to use "/" as the STAGING_DIR which makes
sense since we're installing binaries into the locations we're compiling them for.

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:24:36 +01:00
Richard Purdie
046ae6a38d poky/moblin: Update SDKPATH and SDK_NAME to use SDK_ARCH and remove pointless path addition
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:22:53 +01:00
Richard Purdie
6024456d59 bitbake.conf: Use BASE_PACKAGE_ARCH as the default, not HOST_ARCH
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:22:15 +01:00
Richard Purdie
3b8b3f7a0b bitbake.conf: Add SDK variable definitions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:21:52 +01:00
Richard Purdie
f1c780d185 glibc: Use PN instead of hardcoded package name
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:19:47 +01:00
Richard Purdie
cf9a7f945f inputproto: Add missing DEPENDS on util-macros
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:19:12 +01:00
Richard Purdie
c5fb62ba32 gnome-settings-daemon: Fix problems with bad paths creeping into the configure paths
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:16:32 +01:00
Richard Purdie
2161f50859 sysfsutils: Drop custom staging function and broken includedir change
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-17 22:16:11 +01:00
Richard Purdie
285cd93adb moblin-floating-revisions.inc: Release nbtk/carrick versions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-16 16:33:58 +01:00
Richard Purdie
2756d7dfab carrick: Add missing DEPENDS on mutter-moblin
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-15 09:50:47 +01:00
Richard Purdie
3ec66b0c43 moblin-floating-revisions: Lock down carrick to to pre nbtk API change
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-15 09:28:55 +01:00
Richard Purdie
7b6110d802 moblin-floating-revisions: Lock down nbtk to pre API change
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-15 09:27:38 +01:00
Richard Purdie
2e7e072f58 gcc-4.3.3: Sync patchset with OE.dev
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-14 20:22:34 +01:00
Richard Purdie
8f96edfb16 glibc-2.9: Sync with OE.dev and update patchset
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-14 20:20:49 +01:00
Richard Purdie
48a278ed71 glibc-stage.inc: Massively simplify and speedup by just copying the data generated in the do_install stage
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-14 20:19:06 +01:00
Richard Purdie
ea5d780653 glibc-package.bbclass: Sync with OE.dev and remove hardcoded path references
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-14 20:18:17 +01:00
Richard Purdie
846794c17e bitbake.conf: Rename SDK_PREFIX SDKPATH
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-10 17:58:36 +01:00
Richard Purdie
d6719550db binutils-cross: Remove uneeded custom staging functions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-10 17:43:38 +01:00
Richard Purdie
1f8a1ea564 meta-toolchain: Exclude from world builds
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-08 17:43:26 +01:00
Richard Purdie
e4e019b964 carrick: Make sure the build/autotools directory exists or errors occur
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-07 18:22:54 +01:00
Richard Purdie
16d7767104 libnl: Fix compile header problems
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-04 10:37:13 +01:00
Richard Purdie
0e842cf1b5 zeroconf: Fix compile issue
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-04 10:07:29 +01:00
Richard Purdie
a340d3cda7 valgrind: 3.3.0 -> 3.5.0
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-03 23:43:24 +01:00
Richard Purdie
bc0b233c02 bitbake cache: Add code to catch a nasty cache corruption issue to aid in tracking it down
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-03 22:57:26 +01:00
Richard Purdie
e425d3c13e moblin-floating-revisions.inc: Lock down clutter-gst
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-03 22:39:25 +01:00
Richard Purdie
25d941359b tasks: Fix owl patch for latest git versions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-03 22:34:37 +01:00
Richard Purdie
4426c30114 dates: Fix owl patch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-03 22:31:28 +01:00
Richard Purdie
43fa53c9f3 patch.bbclass: Merge in git resolver changes from OE.dev. Catch all exceptions rather than print horrid backtraces
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-03 22:22:10 +01:00
Richard Purdie
0deeea4f90 poky.conf: Set SDK_NAME to include BUILD_ARCH, not HOST_ARCH
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-03 22:03:09 +01:00
Richard Purdie
09ed7a41c2 Lock down udev versions correctly for the versions of glibc in poky vs. moblin distros
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-03 22:02:36 +01:00
Richard Purdie
2557eb1882 meta-toolchain: Set --build flag to configure in CONFIGURE_FLAGS
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-01 23:28:04 +01:00
Richard Purdie
bdbabcba8d clutter-gtk: Append to DEPENDS, don't overwrite
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-01 23:27:27 +01:00
Richard Purdie
0533fa766a task-moblin-standalone-sdk-target: Add more moblin libraries
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-01 23:26:51 +01:00
Richard Purdie
1151312cfa moblin: Set toolchain SDK target to a moblin specific one
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-01 23:26:03 +01:00
Richard Purdie
d4181505d7 gcc-package-sdk.inc: Make sure include-fixed headers are included with the toolchain
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-01 23:19:58 +01:00
Richard Purdie
d8cc3662e0 preferred-xorg-versions.inc: Fix native/sdk versions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-01 17:45:11 +01:00
Richard Purdie
82e4926a55 moblin-floating-revisions: Fix fixed clutter-ftk SRCURI
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-01 17:41:15 +01:00
Richard Purdie
3645a1764d Merge branch 'mturquette/zoom2' of git://pokylinux.org/poky-contrib 2009-09-01 17:26:01 +01:00
Richard Purdie
bfcf81634a clutter-gtk: Lock down version due to unstable gtk dependency
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-01 17:19:21 +01:00
Richard Purdie
d09e6fa897 hornsey: Add clutter-gtk to DEPENDS
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-01 17:16:58 +01:00
Richard Purdie
faec274207 mesa-dri: Update patch against git
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-09-01 16:49:01 +01:00
Richard Purdie
d5341fb796 Add poky-trim-schemas post install script to remove unneeded schema locale translations from images (credit to Ross Burton for the initial script)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-28 17:11:57 +01:00
Mike Turquette
69af3cc6f2 linux-omap3-pm: remove 1 unneeded patch
Tracking upstream is messy.  Will generate a new stable kernel recipe once
2.6.31 is released and this recipe will keep tracking upstream git.

Signed-off-by: Mike Turquette <mturquette@ti.com>
2009-08-27 16:53:26 -05:00
Richard Purdie
1937c08705 util-linux: Bump PR
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-27 17:48:29 +01:00
Richard Purdie
c33873a6bd e2fsprogs: Don't install blkid.pc file
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-27 17:48:08 +01:00
Richard Purdie
c5983de054 opkg-utils: Update changing .ipk avoidence patch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-27 16:12:57 +01:00
Richard Purdie
670a7ee294 poky-fixed-revisions: Update hal version
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-27 16:06:18 +01:00
Richard Purdie
431ebeaa37 util-linux: Stage files
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-27 16:05:55 +01:00
Richard Purdie
45d44d3830 hal: Add 0.5.13
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-27 16:05:31 +01:00
Richard Purdie
9374840f3a anerley: Add missing DEPENDS on eds-dbus
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-27 15:06:24 +01:00
Richard Purdie
27881baf80 dhcp: Fix to work with glibc 2.9
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-27 15:04:26 +01:00
Richard Purdie
21c622d30a acpid: Fix issues with glibc 2.9 and remove old versions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-27 14:52:12 +01:00
Richard Purdie
0445add616 linux-libc-headers: Fix missing include for 2.6.30
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-27 14:36:15 +01:00
Richard Purdie
ec1d478271 udev: Add 145
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-27 13:02:47 +01:00
Richard Purdie
c2a128ee2d poky-moblin.inc: Use glibc 2.9, linux-libcheaders 2.6.30
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-27 13:02:00 +01:00
Richard Purdie
b410b2e02f glibc: Add 2.9 from OE.dev
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-26 23:10:10 +01:00
Richard Purdie
71e4d73bef linux-libc-headers: Add 2.6.30
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-26 22:02:47 +01:00
Richard Purdie
479d7f175a opkg-utils: Further missing files tweaks
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-26 20:50:43 +01:00
Richard Purdie
2498dd2f7d Add poky-autobuilder to .gitignore
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-26 18:14:58 +01:00
Richard Purdie
06b2913d8e moblin-web-browser: Make sure dbus service files are packaged
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-26 18:14:58 +01:00
Richard Purdie
b8187a1176 opkg-utils: Add patch to avoid errors when packages change while rebuilding the package indexes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-26 18:14:58 +01:00
Mike Turquette
3f8afe492f linux-omap3-pm: refresh patches and remove some sed magic to boot zoom2
Signed-off-by: Mike Turquette <mturquette@ti.com>
2009-08-26 10:56:53 -05:00
Mike Turquette
db4cd6d67e tune-cortexa8.inc: don't auto-vectorize, remove package overrides, some cleanup
Signed-off-by: Mike Turquette <mturquette@ti.com>
2009-08-26 10:56:53 -05:00
Mike Turquette
59040b5d14 __init__.py: export GIT_PROXY_COMMAND for those behind draconian proxies
Signed-off-by: Mike Turquette <mturquette@ti.com>
2009-08-26 10:56:53 -05:00
Mike Turquette
4eee576f4f linux-omap3-pm: remove 0001-OMAP3-MMC-Add-mux-for-pins.patch
Zoom2 MMC patches are now upstream.  Patch no longer required.

Signed-off-by: Mike Turquette <mturquette@ti.com>
2009-08-26 10:56:53 -05:00
Damien Lespiau
5680a1d906 hornsey: bump fixed revision to version 0.3
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2009-08-26 01:54:20 +01:00
Damien Lespiau
ba3735e3f5 clutter-gst: Bump moblin fixed revision to 0.10.0
That's a stable version, the first one depending on clutter-1.0.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2009-08-26 00:46:27 +01:00
Damien Lespiau
82013e7adc nbtk: bump fixed revision to 1.0.0
Among other things, it'll allow nbtk to compile as we now require
clutter-1.0

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2009-08-26 00:46:18 +01:00
Damien Lespiau
b65f2d5c92 clutter-imcontext: bump fixed revision to 0.1.4
Among other things, it'll allow clutter-imcontext to compile as we now
require clutter-1.0

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2009-08-26 00:46:09 +01:00
Damien Lespiau
0f2df9e639 base.bbclass: Don't retrieve SRC_URI when not necessary
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2009-08-26 00:45:53 +01:00
Damien Lespiau
65bf6c90e6 base.bbclass: packages pulling a mercurial tree should depend on mercurial
As we don't provide a mercurial-native package (yet) let's assume the
build machine has it installed and check (sanity.bbclass) if it's the
case.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2009-08-26 00:44:41 +01:00
Richard Purdie
c2b4308119 base.bbclass: Use subprocess rather than os.system for do_unpack
gzip reports broken pipe errors with do_unpack on Fedora with
certain builds of gzip and bash. By avoding python's SIGPIPE handler
we can work correctly on these distributions.

Patch based on a patch from the OE-devel mailing list, thanks to
Khem Raj <raj.khem@gmail.com> and Holger Freyther <zecke@selfish.org>

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-25 16:37:50 +01:00
Richard Purdie
7859b4c9bd gettext: Fix path to ncurses library
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-25 15:03:52 +01:00
Richard Purdie
539eb284cf moblin-feed-config-opkg: Bump PR
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-25 10:19:52 +01:00
Richard Purdie
5f1a5e334f nbtk: Disable introspection
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-24 17:56:47 +01:00
Richard Purdie
18f0cecb68 Add moblin-feed-incremental-bleeding class
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-24 17:30:13 +01:00
Richard Purdie
3feb78cab5 moblin-panels: Update DEPENDS
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-24 17:25:50 +01:00
Richard Purdie
484c2e5b3c connman: Update patch and bump revision
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-24 16:06:06 +01:00
Richard Purdie
1a338f56ac clutter-mozembed: Depend on clutter-1.0
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-24 14:53:59 +01:00
Richard Purdie
fe0b8a2e2b clutter-gst/gtk: Depend on clutter 1.0
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-24 14:53:16 +01:00
Richard Purdie
a9dac741e6 Add xbacklight 1.1
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-24 11:57:06 +01:00
Richard Purdie
efb47fef5d dalston: Add missing DEPENDS on mutter-moblin
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 21:18:53 +01:00
Richard Purdie
932f14381f package-index: Mark as exluded from world builds
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 21:05:53 +01:00
Richard Purdie
983a3afa89 libgalego: Add patch for mkinstalldirs problems
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 21:04:49 +01:00
Richard Purdie
bcd55cb99a farsight2: Bump PR
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 20:58:49 +01:00
Richard Purdie
64eaabeb41 farsight2: Fix rpm glob failure
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 20:52:14 +01:00
Richard Purdie
5a826d30e0 findutils: Add patch for mkdir issue and use BBCLASSEXTEND for the native version
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 18:10:21 +01:00
Richard Purdie
0dc18c5339 Add python-dbus, python-pyrex from OE.dev
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 18:03:38 +01:00
Richard Purdie
79542c9c7d e2fsprogs: Fix MKINSTALL issues
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 17:57:06 +01:00
Richard Purdie
32678f565e task-moblin-x11-netbook: Add empathy and gnome-terminal
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 17:29:54 +01:00
Richard Purdie
b64e3318f7 Add procps from OE.dev
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 17:10:08 +01:00
Richard Purdie
d0d2cda2f6 telepathy: Sync recipes/versions with OE.dev
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 17:09:36 +01:00
Richard Purdie
214e407ced Add farsight2 and libnice from OE.dev 2009-08-19 17:08:45 +01:00
Richard Purdie
331cd03201 gobject-introspection: Update revision
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 17:07:42 +01:00
Richard Purdie
e8618a1103 Add gnome-terminal
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 17:06:42 +01:00
Richard Purdie
714204fdcf vte: Upgrade 0.16.9 -> 0.20.5
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 17:06:05 +01:00
Richard Purdie
26b814e959 gstreamer, gst-plugins-base: Upgrade to 0.10.22
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 17:05:03 +01:00
Richard Purdie
92da203469 task-moblin-x11-netbook: Add natilus to images
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 09:34:34 +01:00
Richard Purdie
2c0cee1b31 nautilus: Add based roughly on OE.dev recipe
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-19 09:34:11 +01:00
Richard Purdie
d3983072bc Add gettext 0.17 (from OE.dev)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-18 18:14:09 +01:00
Richard Purdie
b2d195641d poky-fixed-revisions: Update matchbox-terminal SRCREV to get desktop file fixes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-18 17:08:41 +01:00
Richard Purdie
aa50690b25 moblin-icon-theme: Add applications-games icon symlink
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-18 17:03:47 +01:00
Richard Purdie
a4d9c0cad8 task-moblin-x11-netbook: Add gnome-settins-deamon, drop settings-daemon, matchbox-config-gtk and xcursos-transparent-theme
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-18 16:42:45 +01:00
Richard Purdie
9e58848ef9 gnome: Promote gnome-settings-daemon and dependencies into meta/. Also remove now unneeded custom staging functions 2009-08-18 16:41:39 +01:00
Richard Purdie
c41f317a14 puzzles: Make the owl menu poky distro specific
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-18 16:17:18 +01:00
Richard Purdie
6912b5dbfe Make the owl menu poky distro specific
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-18 16:08:19 +01:00
Richard Purdie
d8869f3ac3 pimlico: Convert recipes to gnome git
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-18 13:10:47 +01:00
Richard Purdie
14321b47b9 mesa-dri: Fix patch list
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-17 09:33:53 +01:00
Richard Purdie
e96829a024 moblin-web-browser: Fix locked down patch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-17 09:24:51 +01:00
Richard Purdie
bd1123228b moblin-web-browser: Add DEPENDS on mutter-moblin
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-17 09:21:21 +01:00
Richard Purdie
259498f7fc moblin-revisions: Switch to mesa 7.5 and git versions of mesa-dri, xserver-xf96-dri-lite and xf86-video-intel
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-14 18:08:42 +01:00
Richard Purdie
152b8d7de0 Various PR bumps
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-14 18:07:47 +01:00
Richard Purdie
d7134438be json-glib: Disable introspection explicitly
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-14 18:07:37 +01:00
Richard Purdie
a19a75fc31 Various PR bumps
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-14 18:06:32 +01:00
Richard Purdie
69005b217b mutter: Depend on clutter-1.0
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-14 18:05:54 +01:00
Richard Purdie
28e4e3b431 xserver-xf86-dri-lite: Update patches
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-14 18:05:34 +01:00
Richard Purdie
7f471985a7 xserver-xf86-dri-lite: Update patches
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-14 18:04:22 +01:00
Richard Purdie
a0a9a2c6df mesa: Update mesa-dri git recipe and add recipe for 7.5
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-14 18:02:13 +01:00
Richard Purdie
c57e2d6315 x11-common: Disable mipmapped text for now until problems with mesa are resolved
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-14 18:00:09 +01:00
Richard Purdie
d57c0cb795 matchbox-session-netbook: Disable mipmapped text for now until problems with mesa are resolved
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-14 17:59:05 +01:00
Richard Purdie
5959860d60 moblin-icon-theme: 0.3 -> 0.7
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-14 11:58:17 +01:00
Richard Purdie
5c3a5e9ec2 moblin-web-browser: Update patch against master
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-13 14:47:46 +01:00
Richard Purdie
5a5fdd72bc task-moblin-x11-netbook: Add droid-fonts to the image
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-12 12:57:07 +01:00
Richard Purdie
5918fbc935 Add droid-fonts
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-12 12:56:40 +01:00
Richard Purdie
b8398e1cdf autotools.bbclass: Remove pointless inherit
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-12 12:02:21 +01:00
Richard Purdie
db549cdae3 binconfig.bbclass: Remove pointless inherit
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-12 12:01:41 +01:00
Richard Purdie
98c561bf17 package_ipk.bbclass: Place configuration files in WORKDIR, not staging
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-12 11:26:07 +01:00
Richard Purdie
3a680d226b bitbake.conf: Create the rootfs in WORKDIR, not directly in TMPDIR allowing creation of more than one rootfs at once
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-12 10:01:25 +01:00
Richard Purdie
dc6cb5301e moblin-floating-revisions: Unlock clutter-1.0 version
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 18:05:55 +01:00
Richard Purdie
a1ff3f12be moblin-floating-revisions: Fix clutter-1.0 until fixed, free mojito
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 15:34:53 +01:00
Richard Purdie
2532cdb7c3 moblin-fixed-revisions: Update anerley revision
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 15:27:35 +01:00
Richard Purdie
f63a149da7 moblin-fixed-revisions: Update mutter revision
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 14:54:40 +01:00
Richard Purdie
e61d88ec43 moblin-fixed-revisions: Update clutter-gtk revision
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 14:47:47 +01:00
Richard Purdie
4c94f1f7de moblin-fixed-revisions: Update mozilla-headless-services revision
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 14:31:47 +01:00
Richard Purdie
d1c6ef8132 moblin-fixed-revisions: Update moblin-web-browser and clutter-mozembed
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 13:06:51 +01:00
Richard Purdie
24ad1add77 poky-fixed-revisions: Add SRCREV for new recipes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 12:58:06 +01:00
Richard Purdie
31d133c904 moblin-fixed-revisions: Update revisions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 12:46:16 +01:00
Richard Purdie
f56add4559 Merge branch 'mturquette/zoom2' of git://git.pokylinux.org/poky-contrib 2009-08-11 12:04:11 +01:00
Richard Purdie
083745a26e moblin: Convert to depend on clutter-1.0
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 11:49:36 +01:00
Richard Purdie
3dac2aa87c task-moblin-x11-netbook: Add moblin-panels
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 11:49:13 +01:00
Richard Purdie
775e051afa moblin-panel: Add recipes for moblin-panel applications
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 11:48:51 +01:00
Richard Purdie
37d2d56542 moblin-floating-revisions: Add new SRCREVs and lock down mojito
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 11:47:49 +01:00
Richard Purdie
2c259b0907 clutter: Add recipe for 1.0 release branch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 10:45:07 +01:00
Richard Purdie
f0b05021bf clutter-mozembed: Update patches after source layout change
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 10:24:11 +01:00
Richard Purdie
3a2a3d71f6 clutter-imcontext: Drop unneeded patch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 09:14:54 +01:00
Richard Purdie
dccd40de9b moblin-web-browser: Drop unneeded patch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 09:14:41 +01:00
Richard Purdie
f860c8f0f7 clutter-mozembed: Drop unneeded patch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-08-11 09:13:43 +01:00
Mike Turquette
63dffacec4 linux-omap3-pm: OMAP3 kernel recipe to build Kevin Hilman's linux-omap-pm tree
Currently tested on Zoom2 and Beagle board.  Please test if you have an OMAP3
board!  The source tree for this recipe is the latest and greatest power
management code for OMAP3.  You can find it at
http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=summary

Signed-off-by: Mike Turquette <mturquette@ti.com>
2009-08-05 09:11:10 -05:00
Mike Turquette
5e88a54c71 zoom2.conf: initial zoom2 board support
The Zoom2 is an OMAP3-based development platform.  Its architecture shares much in common with other OMAP3 boards such as Beagle, Overo, and RX51.

Signed-off-by: Mike Turquette <mturquette@ti.com>
2009-08-03 13:23:52 -05:00
Richard Purdie
51536c814a opensync: Remove further old code
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-31 14:51:43 +01:00
Richard Purdie
e2182c5b04 gmp: 4.2.2 -> 4.2.4 (parts from OE.dev)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-31 12:03:58 +01:00
Richard Purdie
aa5cf6c518 moblin-web-browser: Fix pkgconfig dependency
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-31 11:59:58 +01:00
Richard Purdie
952eb7554f clutter-mozembedd: Update clutter 1.0 patch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-31 11:45:19 +01:00
Richard Purdie
be8558d437 moblin-web-browser: Cope with clutter 1.0
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-31 11:38:25 +01:00
Richard Purdie
beefb3d59d clutter-imcontext: Update patch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-31 11:26:12 +01:00
Richard Purdie
ca9ae01535 clutter-imcontext: Update SRC_URI revision information
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-31 11:13:06 +01:00
Richard Purdie
e9e5bf6f38 moblin-fixed-revisions.inc: Change clutter-imcontext revision to work around build issues
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-31 11:06:27 +01:00
Richard Purdie
b3194b961c gypsy: Fix DEPENDS on bluez
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-31 10:42:53 +01:00
Richard Purdie
50c3af1bcf bluez-hcidump: Fix DEPENDS on bluez4
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-31 10:40:02 +01:00
Richard Purdie
1aaa18b886 opensync: Remove old versions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-31 10:35:55 +01:00
Richard Purdie
c45fda13e3 libopensync-plugin-syncml: Update to 0.38
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-31 10:35:37 +01:00
Richard Purdie
e831c3e023 clutter-imcontext: Fix for clutter 1.0
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-31 10:20:49 +01:00
Richard Purdie
de7a0026bc clutter-mozembed: Fix for clutter 1.0
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-31 10:20:23 +01:00
Richard Purdie
9078d4ab79 libsyncml: 0.4.7 -> 0.5.4
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-31 10:02:41 +01:00
Richard Purdie
456d9191f1 openobex: 1.2 -> 1.5
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-31 10:02:03 +01:00
Richard Purdie
433c2d2318 bitbake: Remove persist_data domain renaming code as it appears to expose sqlite bugs and data consistency issues
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-30 21:24:31 +01:00
Richard Purdie
ef9c095334 bitbake: Make sure tables exist when renaming
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-30 18:03:51 +01:00
Richard Purdie
64b04685b6 bitbake: Add a --revisions-changed commandline option to indicate when floating srcrevs have changed
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-29 14:33:14 +01:00
Richard Purdie
231b5f6784 bitbake: Add renameDomain and getKeyValues functions to the persistent data code
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-29 14:10:11 +01:00
Richard Purdie
47fb695aed bitbake runqueue: Add a minor speedup to the runqueue code
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-29 14:09:12 +01:00
Richard Purdie
a6d608eb19 bitbake runqueue: Add a minor speedup to the runqueue code
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-29 14:08:05 +01:00
Richard Purdie
9930c668c0 libid3tag: Improve pkgconfig file handling and use autotools_stage class
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-29 09:32:41 +01:00
Richard Purdie
9e9663ac06 packagehistory.bbclass: Make package history package architecture specific
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-28 20:03:36 +01:00
Richard Purdie
10a989f4af pcmciautils: Make sure to use flex
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 17:59:46 +01:00
Richard Purdie
e1370cd1c0 connman-gnome: Convert to SRCPV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 17:53:59 +01:00
Richard Purdie
4909fcd51c libsynthesis: Drop patch since upstream has made similar changes now
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 17:53:03 +01:00
Richard Purdie
31a29d2032 pcmciautils: Bump PR after dependency changes since configure task can be influenced by this
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 17:42:29 +01:00
Richard Purdie
388e267bcf clutter: Fix packaging of examples packages for 0.6 and 0.8 versions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 17:41:17 +01:00
Richard Purdie
52a7853735 gail: Remove now unneeded custom staging function
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 17:38:39 +01:00
Richard Purdie
a079b4c526 mozilla-headless-services: Convert to SRCPV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 17:36:47 +01:00
Richard Purdie
8e73d3d4fb web: Fix owlmenu patch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 17:32:35 +01:00
Richard Purdie
ae6e0e212f pcmciautils: Add DEPENDS on flex-native
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 17:31:01 +01:00
Richard Purdie
66c819f967 connman: Switch to SRCPV and bump PV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 17:30:20 +01:00
Richard Purdie
7369653953 json-glib: Update version to 0.7.2
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 17:29:07 +01:00
Richard Purdie
62d184e4fa meta-moblin: Increase PV of SRCPV packages
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 17:16:06 +01:00
Richard Purdie
d7d49ad189 meta-moblin: Increase PV of SRCPV packages
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 16:49:13 +01:00
Richard Purdie
60688d8a64 meta-moblin: Convert remaining git packages to SRCPV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 16:21:53 +01:00
Richard Purdie
f9686c4f10 mozilla-headless: Allow PV to forwards
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 16:17:15 +01:00
Richard Purdie
2e4fbb1718 meta-moblin: Update SRCREVs
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 15:45:31 +01:00
Richard Purdie
5c7facc053 mozilla-headless: Drop no merged patch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 15:22:11 +01:00
Richard Purdie
7370f7e42c connman: Update patchset
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 15:21:36 +01:00
Richard Purdie
dc50ffba55 clutter-mozembed: Update patches
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-27 15:20:41 +01:00
Richard Purdie
d776c57464 poky-fixed-revisions.inc: Update and sync with meta-moblin revisions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-23 21:36:48 +01:00
Richard Purdie
1379a98b4d bitbake-dev: Remve the need for the cache for -e -b options
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-23 19:51:56 +01:00
Richard Purdie
255f45be57 bitbake-dev: Improve showEnvironment functionality
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-23 19:42:04 +01:00
Richard Purdie
e912493614 bitbake-dev: xmlrpcserver - disable some verbose debug
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-23 19:32:48 +01:00
Richard Purdie
eeb65567a0 bitbake-dev: Add taskdata infinite loop fix from upstream
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-23 19:32:20 +01:00
Richard Purdie
60ba2a6a08 bitbake-dev: Fix cooker parser for cases there are no recipes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-23 19:31:23 +01:00
Richard Purdie
4ef85553f4 moblin-fixed-revisions.inc: Set revisions for libsynthesis and syncevolution
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-23 17:32:55 +01:00
Richard Purdie
699ad056d9 bitbake: Make sure regexp patterns are consistent in providers.py
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-23 16:20:02 +01:00
Richard Purdie
d02379d2df bitbake: Add a cache around PACKAGES_DYNAMIC regexps to help performance a bit
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-23 15:59:17 +01:00
Richard Purdie
a6ca63d77a bitbake-dev: Note that python 2.6 is needed
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-23 14:37:06 +01:00
Richard Purdie
94fe172d52 bitbake-dev: Catch up with bitbake changes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-21 22:39:58 +01:00
Richard Purdie
fa5d458526 bitbake: Factor some runqueue code into common functions making things more readable
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-21 22:38:53 +01:00
Richard Purdie
502bd2ef92 bitbake: Fix a bug in runqueue and optimise slightly further
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-21 22:32:35 +01:00
Richard Purdie
8f5363d16d bitbake: Optimise runqueue recursive dependency calculations removing a bottleneck in world builds
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-21 19:44:23 +01:00
Richard Purdie
133e9e6064 moblin-floating-revisions.inc: Add libsynthesis and syncevoltion
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-17 17:39:38 +01:00
Richard Purdie
9439e99ae7 autotools.bbclass: Fix to work with configure files with leading whitespace
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-16 15:54:47 +01:00
Richard Purdie
ceb58d4692 Add syncevoltion, libsynthesis 2009-07-16 12:09:29 +01:00
Richard Purdie
d4d60b9ad9 Add libpcre from OE.dev 2009-07-16 12:09:07 +01:00
Richard Purdie
43e94412c4 Add boost from OE.dev 2009-07-16 12:08:42 +01:00
Richard Purdie
4108e6f603 moblin-fixed-revisions.inc: Fix broken moblin-gtk-engine SRCREV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-15 15:23:45 +01:00
Richard Purdie
710d5b5f0f root_ipk.bbclass: Give EXTRAOPKGCONFIG a default value
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-15 13:43:33 +01:00
Richard Purdie
32d5444424 bognor-regis: Add missing DEPENDS on gtk+
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-15 13:05:08 +01:00
Richard Purdie
efd00048e3 rootfs_ipk.bbclass: Don't generate the arch.conf file, provide this as a packaged file in future
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-15 12:57:10 +01:00
Richard Purdie
a0a195df28 moblin-floating-versions.inc: Allow clutter version to float again
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-15 12:56:16 +01:00
Richard Purdie
6e58ebdc1a Add moblin-feed-config-opkg (loosely based on angstrom recipes)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-15 12:54:57 +01:00
Richard Purdie
1893aa639f distro/moblin/include: Update fixed revisisons to a more recent known to work combination
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-14 15:44:28 +01:00
Richard Purdie
b4bc6f9463 poky-eabi.inc: Use gcc 4.3.3 for all machines
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-14 10:50:51 +01:00
Richard Purdie
6aa20d95c5 moblin-floating-revisions: Tweak to a working configuration
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-14 10:46:26 +01:00
Richard Purdie
5d51a7e705 packagehistory: Make sure package is inherited beforehand to preserve the PACKAGEFUNCS variable
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-13 17:09:17 +01:00
Richard Purdie
fbee24dbe5 mutter-moblin: Add init script for plugins and populate the nbtk cache
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-13 17:08:12 +01:00
Richard Purdie
3c47e342d4 libowl: Bump PR after staging changes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-13 13:00:48 +01:00
Enric Balletbo i Serra
86e45a8c0c libowl: Use autotools_stage instead of broken custom staging function
This patch also fixes claws-mail, leafpad, pcmanfm, pimlico and puzzles
recipes using the proper include for owlwindowmenu.h

Signed-off-by: Enric Balletbo i Serra <eballetbo@gmail.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-09 21:58:47 +01:00
Enric Balletbo i Serra
915d91845f libfakekey: Use autotools_stage instead of broken custom staging function
Signed-off-by: Enric Balletbo i Serra <eballetbo@gmail.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-09 21:58:37 +01:00
Richard Purdie
0a155f0d10 gnome.bbclass: Convert to autotools_stage
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-09 17:51:53 +01:00
Richard Purdie
b006d15bd8 libart-lgpl: Use autotools_stage
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-09 17:49:35 +01:00
Richard Purdie
966ae73e79 gtkhtml: Use autotools_stage
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-09 17:49:00 +01:00
Richard Purdie
ffe979a855 Add package_history.bbclass which checks generated package against previous package looking for problematic changes 2009-07-09 17:19:29 +01:00
Richard Purdie
f5d0882b40 xserver-xf86-config: The simplified xorg.conf shouldn't use legacy drivers, it confuses the xserver with multiple keyboards
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-09 11:05:51 +01:00
Richard Purdie
1df8cad472 moblin-floating-revisions.inc: Fix clutter revision to avoid breakage
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-08 23:33:22 +01:00
Richard Purdie
433f50435e bitbake-dev: Turn parsing into a server idle callback allowing the client to interrupt parsing and improving user interactvity. Also now specify whether async commands need the cache or not
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-08 22:46:09 +01:00
Richard Purdie
67d169aa1c bitbake-dev: Fix to work with python 2.6 by dropping the now uneeded get_request overloaded function and using timeouts instead
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-08 22:43:18 +01:00
Richard Purdie
41ff874c7f matchbox-session-netbook: Fix mutter commandline
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-08 22:36:50 +01:00
Richard Purdie
303b0915f7 mutter-moblin: Update after metacity -> mutter rename
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-08 16:19:21 +01:00
Richard Purdie
7649c9d82a moblin-floating: Revert to release xorg versions for now
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-08 14:39:47 +01:00
Richard Purdie
a2d95a63f8 mutter-moblin: Package plugin after metacity -> mutter rename
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-08 13:54:31 +01:00
Richard Purdie
ef4165900c libmatchbox: Drop 1.7 (old version), use autotools_stage instead of broken custom staging function
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-08 13:49:49 +01:00
Richard Purdie
2b7886853c package_ipk.bbclass: Solve opkg-make-index locking problem using flock
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-08 00:51:51 +01:00
Richard Purdie
e7f1993e3b linux: Fix kernel.org mirror urls
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-07 23:37:29 +01:00
Richard Purdie
1f86370db8 bitbake: Fix wget fetcher bug when only checking URIs and the download doesn't exist
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-07 22:44:53 +01:00
Richard Purdie
1e638321db moblin-floating-revisions.inc: Set some revisions to make buildable config
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-07 17:05:02 +01:00
Richard Purdie
db9e25c7e7 moblin-fixed-revisions.inc: Prefer gtk 2.16.4 2009-07-07 16:21:24 +01:00
Richard Purdie
df5bef3cfb gtk+: Add 2.16.4
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-07 16:20:42 +01:00
Richard Purdie
8aaffe702a drm/mesa: Bump PR due to pkgconfig changes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-07 15:17:22 +01:00
Richard Purdie
f9f0753e7f connman: Drop now unneeded patch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-07 15:17:10 +01:00
Richard Purdie
b8b7652815 pkgconfig.bbclass: No longer default to pkgconfig_stage code (breaks libdrm)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-07 15:13:56 +01:00
Richard Purdie
b2112e9f85 mutter: Update after recent upstream changes and renaming
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-07 13:57:52 +01:00
Richard Purdie
87de4bd5c7 kexec: Update recentheader.patch to fix missing header
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-07 13:25:55 +01:00
Richard Purdie
2133e2dd23 moblin-floating-revisions.inc: Lock down mesa-dri for now due to upstream issues
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-03 17:29:31 +01:00
Richard Purdie
ff077bc877 libxext: Update SRCREV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 18:01:06 +01:00
Richard Purdie
e2e86894c1 task-base: Remove sets usage, deprecated in python
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 17:16:27 +01:00
Richard Purdie
a909986a26 xorg: Update to a buildable configuration 2009-07-02 17:09:17 +01:00
Richard Purdie
b3fd2238f8 xextproto 7.0.4 -> 7.0.5 2009-07-02 15:24:54 +01:00
Richard Purdie
c6109aede7 pong-clock: Fix DEPENDS
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 15:14:35 +01:00
Richard Purdie
efdb2547c7 connman-gnome: Add missing DEPENDS on gtk+
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 15:14:02 +01:00
Richard Purdie
3abe41b139 libx11-trim: Fix patches properly this time
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 15:10:50 +01:00
Richard Purdie
3f8c6e6960 inputproto 1.5.0 -> 1.9.99.12
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 15:04:23 +01:00
Richard Purdie
4853c362a9 Drop libx11-trim patches
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 15:04:00 +01:00
Richard Purdie
32cb1b049e moblin-gtk-engine: Add DEPENDS on gtk+
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 14:37:52 +01:00
Richard Purdie
e2580df891 patch.bbclass: Fix up the environment for the patch resolution code
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 14:36:56 +01:00
Richard Purdie
d5a137475a bitbake: Add build_environment function for building an environment based on the data dictonary
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 14:33:53 +01:00
Richard Purdie
03873c0625 preferred_versions_xorg.inc: Update git revisions to newer released versions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 14:30:42 +01:00
Richard Purdie
ea4be0e5b0 bitbake.conf: Sync with changes in OE.dev 2009-07-02 14:30:04 +01:00
Richard Purdie
41836f2d3f Add libext 1.0.5 and libxi 1.2.1
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 14:29:02 +01:00
Richard Purdie
5377e4fa3a libx11 1.1.5 -> 1.2.1
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 14:28:29 +01:00
Richard Purdie
136fecf7af xorg: Convert SRCREV -> SRCPV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 13:10:19 +01:00
Richard Purdie
166121923f xserver-xf86-dri-lite: Convert to SRCPV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 13:07:09 +01:00
Richard Purdie
d27a2656c1 mesa-dri: Update to SRCPV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 13:06:27 +01:00
Richard Purdie
264534ddd9 moblin-floating-revisions.inc: Add libxcb and xcb-proto versions, let mesa-dri float
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 13:01:19 +01:00
Richard Purdie
254c710eea Restore libxcb 1.1.91 and xcb-proto 1.2 for now
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 12:59:02 +01:00
Richard Purdie
b93a3d1d91 patch.bbclass: Sync with OE.dev
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-02 12:38:35 +01:00
Richard Purdie
54c44cb25c moblin-*-revisions.inc: Fix xf86-input-keyboard typo
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-01 12:14:31 +01:00
Richard Purdie
f79c2850e7 moblin-menus: Only apply patch against fixed revision now after upstream changes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-01 11:45:21 +01:00
Richard Purdie
3c1434de89 clutter-gst: Update patch against upstream
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-01 11:44:03 +01:00
Richard Purdie
409cca8760 mutter: Add a note about zenity
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-07-01 11:43:05 +01:00
Richard Purdie
0e64c40dbe mutter-moblin: Package extra theme files and add bickley to DEPENDS
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-30 18:06:09 +01:00
Richard Purdie
f0da36b97c moblin-web-browser: Adjust after upstream directory renaming
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-30 18:05:47 +01:00
Richard Purdie
3f75df20b4 matchbox-netbook-session: Add pokyuser to the video group for access to dri
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-30 18:05:14 +01:00
Richard Purdie
e95e0650a0 moblin-floating-revisions.inc: Add floating versions for xf86-video-intel, xserver-xf86-dri-lite, libdrm, xorg-input-keyboard, dri2proto and libx11-trim. Bump mozilla-headless source revision
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-30 18:04:35 +01:00
Richard Purdie
b05d6c25d3 moblin-fixed-revisions.inc: Set PREFERRED_VERSIONs for mesa-dri, xf86-video-intel, xserver-xf86-dri-lite, libdrm, dri2proto, xorg-input-keyboard
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-30 18:03:15 +01:00
Richard Purdie
12f7cfe586 xserver-xf86-dri-lite_git: Drop DEFAULT_PREFERENCE
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-30 18:01:51 +01:00
Richard Purdie
a299d7bda1 xf86-video-intel_git: Drop DEFAULT_PREFERENCE
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-30 18:01:26 +01:00
Richard Purdie
9999c8e650 dri2proto_git: Update PV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-30 18:00:56 +01:00
Richard Purdie
b523f9d7ec scb-proto: 1.2 -> 1.5
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-30 17:59:56 +01:00
Richard Purdie
817a58e92d libxcb: 1.1.91 -> 1.3
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-30 17:59:20 +01:00
Richard Purdie
00145d9c9b icu: Add patch to fix issue with #elif and recent gcc versions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-30 11:52:59 +01:00
Richard Purdie
7cecb5b9ca sqlite3: 3.6.10 -> 3.6.16
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-29 17:07:08 +01:00
Richard Purdie
a36becf4f8 drm/mesa/xorg-video-inte/xorg-xserver: Update PV revisions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-26 17:39:59 +01:00
Richard Purdie
3cb7d38b87 poky-fixed-revisions.inc: Set SRCREVs for new meta-moblin packages
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-26 17:05:22 +01:00
Richard Purdie
bdc3ec190f mutter-moblin: Package extra new files
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-24 16:46:13 +01:00
Richard Purdie
895455bc91 xserver-xorg: Add RDEPENDS on xkeyboard-config since the world is kxb centric
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-24 16:37:33 +01:00
Richard Purdie
ebfc798b26 xserver-xf86-config: Clean up xorg conf file
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-24 16:30:31 +01:00
Richard Purdie
b69163acd2 xkeyboard-config: Add sylink rule configure option to work well with xserver
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-24 16:10:41 +01:00
Richard Purdie
48870f66e5 nbtk: Add DEPENDS on clutter-imcontext
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-23 18:25:54 +01:00
Richard Purdie
579e850615 moblin-web-browser: Update against latest SCM changes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-23 18:25:28 +01:00
Richard Purdie
03cd4f4b51 meta-moblin/conf: Set SRCREV for clutter-imcontext
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-23 18:24:48 +01:00
Richard Purdie
c8b8d8a6a3 clutter-imcontext: Add git version
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-23 18:23:57 +01:00
Richard Purdie
0f0555776f mozilla-headless: Add patches for revision a3e7c6626661
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-22 16:06:39 +01:00
Richard Purdie
18b5cd7ba2 clutter-gst: Fix to work with SRCREV 9db4a61a25677764bb927369c5c68ada958fb65c
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-22 16:01:00 +01:00
Richard Purdie
96f56b2603 patch.bbclass: Allow a patch to be applied or not applied against a specific srcrev
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-22 16:00:28 +01:00
Richard Purdie
c68dd4f8ac moblin-bleeding: Add bleeding moblin configuration
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-19 23:06:18 +01:00
Richard Purdie
33beaee6b5 moblin-floating-revisions.inc: Add floating SCM version definitons
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-19 23:05:47 +01:00
Richard Purdie
72c1f1d556 moblin-fixed-revisions.inc: Add initial locked down versions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-19 23:05:09 +01:00
Richard Purdie
e2dd24f5c1 task-moblin-x11-packages: Add newly added packages
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-19 23:04:24 +01:00
Richard Purdie
cd60a7eb24 meta-moblin: Add recipes for most moblin beta components
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-19 18:06:20 +01:00
Richard Purdie
19e1d23dd1 bitbake: puccho: Fix glade file location
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-19 13:26:18 +01:00
Richard Purdie
ce55609d56 json-glib: Update gtk-doc workaround
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-18 15:25:33 +01:00
Joshua Lock
0bf673e01f cdrtools-native: Add a patch from Richard to work around a glibc name conflict 2009-06-18 13:21:05 +01:00
Richard Purdie
7948c08ab1 task-sdk-gmae.inc: update after bluez changes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-17 16:45:20 +01:00
Richard Purdie
aa16a97138 mozilla-headless: Add patch to remove bad rpath-link options from the linker commands
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-17 15:37:57 +01:00
Richard Purdie
865381df6e lttng-control: Fix missing recipe
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-17 09:55:02 +01:00
Richard Purdie
ca2538b64f python-pygobject: Export STAGING_INCDIR and STAGING_LIBDIR to fix python-config failures
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-16 23:37:22 +01:00
Richard Purdie
1c543df879 distutils.bbclass: Sync with OE
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-16 23:14:40 +01:00
Richard Purdie
7901380195 glibc: Add patch to avoid header issues after linux-libc-headers update
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-16 22:38:43 +01:00
Richard Purdie
1acaab0f4b qemu: Fix a GL passthrough bug
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-16 22:32:06 +01:00
Richard Purdie
1275962e51 lttng-control: 0.43 -> 0.67
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-16 17:25:53 +01:00
Richard Purdie
7ea5d80a84 mutter: Switch to moblin repository, drop zenity requirement as its not used
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-16 13:18:27 +01:00
Richard Purdie
e595bc11c8 poky-autobuild-notifier.bbclass: Remove unneeded recipients
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-15 22:51:42 +01:00
Richard Purdie
30f949e4bb clutter-gst: Update patch against upstream changes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-15 13:34:47 +01:00
Richard Purdie
2300c64646 mozilla-headless: Update configurefix patch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-15 13:27:24 +01:00
Richard Purdie
e1ee329a88 mozilla-headless: Catch up with upstream changes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 23:27:15 +01:00
Richard Purdie
19592cf696 flac: Convert to autotools_stafe
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 23:26:45 +01:00
Richard Purdie
826ed80637 libsamplerate0: Convert to autotools_stafe
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 23:26:18 +01:00
Richard Purdie
5dd9134d5e pkgconfig.bbclass: Fix typo
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 17:17:04 +01:00
Richard Purdie
b6913a228c libpng: Use pkgconfig_stage 2009-06-12 16:04:47 +01:00
Richard Purdie
60c4cb5db1 openssl: Use pkgconfig_stage 2009-06-12 16:04:37 +01:00
Richard Purdie
82f808f42a sqlite3: Use pkgconfig_stage 2009-06-12 16:04:17 +01:00
Richard Purdie
d555a21646 libgcrypt: Use pkgconfig_stage 2009-06-12 16:03:54 +01:00
Richard Purdie
65395e2090 gtk+: Use pkgconfig_stage 2009-06-12 16:03:38 +01:00
Richard Purdie
34498846f5 dbus: Use pkgconfig_stage 2009-06-12 16:03:27 +01:00
Richard Purdie
1bc852322e gnutls: Use pkgconfig_stage 2009-06-12 16:03:09 +01:00
Richard Purdie
83e3a45aad fontconfig: Stage .pc files
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 16:02:54 +01:00
Richard Purdie
1247e2bba2 pkgconfig.bbclass: Split out the staging function into its own class (pkgconfig_stage)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 16:02:13 +01:00
Richard Purdie
5d09a6bd93 gnome-mime-data: Fix pkgconfig file path, use autotools_stage
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 16:01:03 +01:00
Richard Purdie
c3e0da1363 libcroco: Convert to use autotools_stage
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 15:59:39 +01:00
Richard Purdie
078d43d16a telepathy-glib: Use autotools_stage_all now (its been fixed)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 15:58:37 +01:00
Richard Purdie
d950827961 matchbox-panel-2: Convert to use autotools_stage
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 15:56:46 +01:00
Richard Purdie
c4fc9e03e3 libdaemon: Convert to use autotools_stage
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 15:56:28 +01:00
Richard Purdie
2684b195bc packaged-staging.bbclass: Fix for packages which don't stage anything
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 15:55:11 +01:00
Richard Purdie
01342695c0 task-moblin-tools: Drop old lttng from tools package for now
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 15:54:10 +01:00
Richard Purdie
7e0fe4692c libsndfile1: Convert to use autotools_stage
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 15:53:30 +01:00
Richard Purdie
5009d0b5d5 alsa-lib: Convert to use autotools_stage
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 15:52:39 +01:00
Richard Purdie
6f8d9edfee mpeg2dec: Convert to use autotools_stage
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 15:52:04 +01:00
Richard Purdie
c6b3f2d2d3 kexec-tools: Update after linux-libc-headers changes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 15:50:43 +01:00
Richard Purdie
e7be8af151 hal: Use autotools_stage_all
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-12 15:50:01 +01:00
Joshua Lock
d0c00fd14b Redland is no longer a part of moblin so move to meta-extras 2009-06-11 18:11:00 +01:00
Joshua Lock
1dfc30d98d Remove depends on Redland as Bickley no longer uses it 2009-06-11 18:04:26 +01:00
Richard Purdie
de8ba464b3 glib-2.0-native: Stage .pc files
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-11 16:11:41 +01:00
Richard Purdie
1f9196bc8d quilt: Mark as broken for packaged staging acceleration
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-11 16:11:18 +01:00
Richard Purdie
3a309d20f2 packaged-staging.bbckass: Add option of setting PSTAGE_BROKEN_DESTDIR to disable packaged staging acceleration for packages with broken DESTDIR handling
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-11 16:10:28 +01:00
Richard Purdie
1f4391bdd9 poky-moblin.inc/poky-eabi.inc: Update linux-libc-headers PREFERRED_VERSION
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-11 15:07:39 +01:00
Richard Purdie
d684d4385d packaged-staging.bbclass: Turn off debug
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-11 15:04:33 +01:00
Richard Purdie
5a4c688958 packaged-staging.bbclass: Detect when we're using autotools_stage_all and don't hold the lock for as long when that is the case giving a significant performance boost with less lock contention and staging area file timestamp checking required
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-11 14:46:17 +01:00
Richard Purdie
4d503cfa06 native.bbclass: Drop INHIBIT_NATIVE_STAGE_INSTALL function and wrap logic in a do_stage_native() wrapper which packaged-staging can detect
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-11 14:43:45 +01:00
Richard Purdie
f80563c9cf cpan_build.bbclass: Just write a do_stage function, INHIBIT_NATIVE_STAGE_INSTALL isn't particuarly useful
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-11 14:41:50 +01:00
Richard Purdie
83d4a2bb48 libpng-native: Just write out a do_stage function, INHIBIT_NATIVE_STAGE_INSTALL is pointless
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-11 14:40:20 +01:00
Richard Purdie
1c549c478d linux-libc-headers: 2.6.24 -> 2.6.29
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-11 14:39:02 +01:00
Richard Purdie
f187869891 pkgconfig.bbclass: Drop strange unneeded inherit base
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-11 11:55:24 +01:00
Richard Purdie
5234f57e9c preferred-xorg-versions.inc: Tweak xf86-video-intel version number
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 17:41:43 +01:00
Richard Purdie
e4a43a1e2e Add gnome-settings-daemon and libgnomekbd from OE but with fixed dependencies
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 17:28:40 +01:00
Richard Purdie
4378f77b07 gnome-desktop: 2.26.0 -> 2.26.2
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 17:28:03 +01:00
Richard Purdie
720909c296 libxklavier: 3.7 -> 3.9, stage correctly and fix pkgconfig file
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 17:26:14 +01:00
Richard Purdie
c4bc453eab clutter-mozembed: Fix patch against upstream changes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 17:25:19 +01:00
Richard Purdie
acc137c1ac pulseaudio: Fix typo causing missing hal dependency
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 17:24:49 +01:00
Richard Purdie
a76e86b340 mozilla-headless: Take the revision from a SRCREVMOZILLAHEADLESS variable
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 14:37:45 +01:00
Richard Purdie
a70605ccbc poky-fixed-revisions.inc: Set SRCREVMOZILLAHEADLESS
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 14:37:23 +01:00
Richard Purdie
dbdf1c734f bitbake: Disable sortable revision for now
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 12:43:07 +01:00
Richard Purdie
12d6acb013 python-gobject: 2.12.3 -> 2.16.0
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 12:21:24 +01:00
Richard Purdie
de687629d8 scripts: Update qemux86 to use the vmmouse driver, not wacom and find moblin images
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 12:15:48 +01:00
Richard Purdie
824dce8d18 Add linux-rp 2.6.29 (qemux86 only for now)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 12:14:06 +01:00
Richard Purdie
2715db50bf mozilla-headless-services: Add json-glib to DEPENDS 2009-06-10 12:11:01 +01:00
Richard Purdie
191dee9198 clutter: Convert SRCREV -> SRVPV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 12:10:21 +01:00
Richard Purdie
8dae438a5a bickley: Depend on clutter-gst, not clutter-gst-0.8
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 11:40:12 +01:00
Richard Purdie
522cffdb9e bitbake: Add PN to SRCREV keyhash in the persistent database to avoid conflicts between pacckages (from upstream bitbake)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 11:21:43 +01:00
Richard Purdie
5f37dfd98b Add meta-gnome overlay information for gnome packages which aren't part of standard Poky (based on OE.dev but with additions/modifications)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 11:07:02 +01:00
Richard Purdie
d10060c330 gtk-doc: Sync with OE but also convert to use BBCLASSEXTEND with overrides magic
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 11:06:19 +01:00
Richard Purdie
a1830ffaa2 libgnomecanvas: Sync with OE.dev (and remove old version)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 10:52:13 +01:00
Richard Purdie
67955bf938 gail: Sync with OE.dev
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-10 10:51:11 +01:00
Richard Purdie
8643766837 bitbake.conf: Add definition of SRCPV so git revisions can be incrementaly numbered. Influence for this comes from Openmoko.
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-09 23:36:44 +01:00
Richard Purdie
1e71be8c99 qemux86: Add xf86-input-vmmouse, swrast dri fallback, switch back to mesa-dri as the GL provider and drop synaptics input driver
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-09 22:18:24 +01:00
Richard Purdie
be24aaa96c qemu: Drop a ton of old now mostly inappropriate patches and update the qemugl passthrough patch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-09 22:16:58 +01:00
Richard Purdie
3ac19a493e xserver-xf86-config: Set a netbook suitable resolution
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-09 21:28:42 +01:00
Richard Purdie
9c57e462ce xf86-input-vmmouse: Add RDEPENDS on xf86-input-mouse
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-09 21:28:08 +01:00
Richard Purdie
f4d34a005a qemugl: Use mesa-dri as the main gl provider and just swap libs at runtime
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-09 21:27:13 +01:00
Richard Purdie
111ea0d5cc xorg.conf: Use vmmouse for qemux86
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-09 16:29:34 +01:00
Richard Purdie
34a895836b Add xf86-input-vmmouse
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-09 16:28:07 +01:00
Richard Purdie
c676e8106e mojito: Drop unneeded gconf keys and remove undeeded sqlite3 dependency
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-09 11:51:44 +01:00
Richard Purdie
f1619b3567 packaged-staging.bbclass: Fix accidental debug addition
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-08 17:36:08 +01:00
Richard Purdie
7c0eb934b4 gettext: Fix library packaging so -dev packages aren't pulled in
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-08 17:35:17 +01:00
Richard Purdie
a25e703c10 mojito: Fix gconf name typo
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-04 23:05:17 +01:00
Richard Purdie
1a21e6e2d5 packaged-staging.bbclass: Add support for mangling .la files so the staging directory path can change. Someday libtool will support sysroot but until then...
Signed-off-by: Richard Purdie <richard@ted.(none)>
2009-06-04 20:46:09 +01:00
Richard Purdie
093a11caba mesa-dri: Set to use the glx state tracker and don't package the EGL librbary versions in git version
Signed-off-by: Richard Purdie <richard@ted.(none)>
2009-06-04 19:49:15 +01:00
Richard Purdie
c68023628b dri2proto: Fix strange filename
Signed-off-by: Richard Purdie <richard@ted.(none)>
2009-06-04 19:48:16 +01:00
Richard Purdie
4f3f5e4315 formfactor: Add verison for menlow (leave cursor visible for now)
Signed-off-by: Richard Purdie <richard@ted.(none)>
2009-06-04 19:47:09 +01:00
Richard Purdie
e9832b10b2 xf86-video-intel: Disable xvmc explicitly and don't use dolt in the git version
Signed-off-by: Richard Purdie <richard@ted.(none)>
2009-06-04 19:46:22 +01:00
Richard Purdie
176fad85ec xf86-input-keyboard: Upate git version PV
Signed-off-by: Richard Purdie <richard@ted.(none)>
2009-06-04 19:45:16 +01:00
Richard Purdie
c74b9ae44c Add xkeyboard-config
Signed-off-by: Richard Purdie <richard@ted.(none)>
2009-06-04 19:44:07 +01:00
Richard Purdie
a8427b9d92 xserver-xf86-dri-lite: Update git recipe (dependency on xkeyboard-config and need to enable dga for the intel 2D driver
Signed-off-by: Richard Purdie <richard@ted.(none)>
2009-06-04 19:43:12 +01:00
Richard Purdie
46cbf481e3 xserver-xf86-common.inc: Make sure directory exists before installing
Signed-off-by: Richard Purdie <richard@ted.(none)>
2009-06-04 19:42:12 +01:00
Richard Purdie
497fe49727 xserver-xf86-config: Set AllowEmptyInput to no fixing chaned defaults in modern xservers
Signed-off-by: Richard Purdie <richard@ted.(none)>
2009-06-04 19:41:32 +01:00
Richard Purdie
ae950c85d7 gtk+: Fix a string referencing bug (path sent upstream)
Signed-off-by: Richard Purdie <richard@ted.(none)>
2009-06-04 19:38:05 +01:00
Richard Purdie
0223f45de0 unifdef: rename getline function to avoid conflicts with stdio.h definitions from glibc
Signed-off-by: Richard Purdie <richard@ted.(none)>
2009-06-03 18:27:30 +01:00
Richard Purdie
9bb7f47b13 pulseaudio: Fix packaging of core/common libraries and stop development libs from entering images
Signed-off-by: Richard Purdie <richard@ted.(none)>
2009-06-02 08:49:45 +01:00
Richard Purdie
72f64585fe task-moblin-apps-x11-pimlico: No need to include web-webkit in the images anymore
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-01 14:24:13 +01:00
Richard Purdie
412d815bee connman: Start after dbus and use full path for binary in initscript
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-01 14:18:59 +01:00
Richard Purdie
4ae5537fff bluez: Update bluez4 version from OE.dev and drop bluez 3.x
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-01 14:17:44 +01:00
Richard Purdie
3051258e33 task-base: Switch to bluez4
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-06-01 14:17:05 +01:00
Richard Purdie
6a11cf7dfe bitbake.conf: Set PERSISTENT_DIR for the cache location so its common to all builds of different machines
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-31 22:23:30 +01:00
Richard Purdie
b22b97076a qemugl: Include headers and a pkgconfig file (from mesa) and add libxfixes to DEPENDS
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-31 22:20:17 +01:00
Richard Purdie
87b512fb1e connman: Start earlier in the init sequence
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-31 22:18:39 +01:00
Richard Purdie
ea26c2105d xserver-xf86: Split xorg.conf from main xserver package
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-31 22:17:58 +01:00
Richard Purdie
185d8b084a udev: Allow standard users to access shared memory
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-31 22:16:48 +01:00
Richard Purdie
c5e3def0a0 xf86-intel-video: 2.7.0 -> 2.7.1
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-31 22:16:04 +01:00
Richard Purdie
2f6ad802da linux-moblin: Update menlow defconfig
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-31 22:14:32 +01:00
Richard Purdie
8df390e179 poky-fixed-revisions: Remove duplicate (and incorrect) mutter SRCREV entry and bump psplash 421 -> 422
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-30 09:33:31 +01:00
Richard Purdie
05cf7690e8 dhcp: Use autotools class and remove broken configure call
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-29 17:29:20 +01:00
Richard Purdie
7951647c9f xserver-kdrive: Add missing DEPENDS on bigreqsproto xcmiscproto
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-29 15:44:48 +01:00
Richard Purdie
f2a9705633 sanity.bbclass: Really fix TMPDIR change warning message
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-28 21:32:30 +01:00
Richard Purdie
05a296b204 scripts/poky-env-internal: Add BB_SRCREV_POLICY to BB_ENV_WHITELIST
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-27 23:18:45 +01:00
Richard Purdie
fc9d9193d1 busybox: Add missing path in uducpc script
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-27 23:17:37 +01:00
Richard Purdie
9b9152e25b bickley: Add runtime dependency on xdg-user-dirs
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-27 23:16:53 +01:00
Richard Purdie
a47ba31646 Add recipe for xdg-user-dirs
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-27 23:16:25 +01:00
Richard Purdie
b63ec22113 pulseaudio: Backport some patches from git trunk and add module-alsa-card to required modules list
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-27 20:36:54 +01:00
Richard Purdie
ed0dea8890 pulseaudio: Add hal-detect module and package pactl binary in the server
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-27 11:46:21 +01:00
Richard Purdie
6ed027a31f xserver-nodm-init: Add ability to run X as a non-root user
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-27 11:45:22 +01:00
Richard Purdie
8f32595f6b x11-common: Remove unused Xinit file, remove hardcoded user assumptions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-27 11:44:42 +01:00
Richard Purdie
5c96414966 sudo: Add from OE.dev with tweaks to SRC_URI
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-27 11:10:06 +01:00
Richard Purdie
14f39f31a9 connmand: Drop patch merged upstream
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-26 22:57:37 +01:00
Richard Purdie
ba7f2cc548 initramfs-live-install: Update script to handle udev automounter issues and mount point name that doesn't clash
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-26 22:56:03 +01:00
Richard Purdie
91bbdf200b xserver-xf86-dri-lite: Add missing DEPENDS on dri2proto
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-26 22:54:44 +01:00
Richard Purdie
4e1e40562f xserver-xf86-dri-lite: Add missing DEPENDS on dri2proto
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-26 22:54:29 +01:00
Richard Purdie
5adadc366b dhcp: 3.0.2 -> 4.1.0
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-26 00:39:30 +01:00
Richard Purdie
1dfcc21eae connman: Various fixes so it starts working properly
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-26 00:38:51 +01:00
Richard Purdie
c321cda0a5 u-boot-omap3: Fix SRC_URI
Signed-off-by: Richard Purdie <richard@ted.(none)>
2009-05-25 22:11:00 +01:00
Richard Purdie
4f5d44c25c initscripts: Check link exists in volatiles script
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-25 14:38:30 +01:00
Richard Purdie
5638a3e8b5 poky-fixed-revisions: Bump psplash SRCREV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-25 11:47:55 +01:00
Richard Purdie
5381d16553 json-glib: Fix SRCREV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-25 11:33:15 +01:00
Richard Purdie
fbb79a7878 poky/moblin-fixed-revisions.inc: Make sure SRCREVs are set appropriately
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-25 11:32:47 +01:00
Richard Purdie
35bb05b7bb task-moblin-x11-netbook: Drop missing matchbox-session-netbook for now, add bickley and mojito
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-25 10:57:49 +01:00
Richard Purdie
79850d0d6e Add redland
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-25 10:37:02 +01:00
Richard Purdie
88181074bd busybox: Disable parallel make
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-25 10:26:48 +01:00
Richard Purdie
236b0c2b11 packagekit: Disable browser plugin
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-25 10:13:00 +01:00
Richard Purdie
b0ced1c94e netbook/menlow: Don't generate jffs2 images by default
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-25 10:08:52 +01:00
Richard Purdie
81acc39268 poky-image-sdk: Drop dbg-pkgs, they're just too large to make sense all in one
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-25 10:07:59 +01:00
Richard Purdie
2f67d4031c moblin-image-sdk: Drop dbg-pkgs, they're just too large to make sense all in one
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-25 10:07:19 +01:00
Richard Purdie
e8201f5889 clutter-cairo: From clutter 0.9 onwards, cairo is part of clutter itself
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-25 01:20:00 +01:00
Richard Purdie
6a444cad4e gst-ffmpeg: Bump PR after configure changes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-25 00:53:25 +01:00
Richard Purdie
9e73dde9a2 task-poky-tools: Drop exmap for now
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-25 00:51:37 +01:00
Richard Purdie
2ed6c62a83 poky-fixed-revisions: Update SRCREVs for clutter packages
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-24 15:54:07 +01:00
Richard Purdie
342a1a5554 monint: Don't try and strip bianries
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-24 15:51:02 +01:00
Richard Purdie
14a5b7d301 gst-ffmpeg: Disable pic due to register issues (fixing build problems)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-24 15:42:57 +01:00
Richard Purdie
e0839cf73d world-broken: Exclude exmap-console and xf86-video-psb from world builds
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-24 14:57:59 +01:00
Richard Purdie
fb26ad86b1 clutter-0.6: Fix symbol conflict with libc headers
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-24 14:57:26 +01:00
Richard Purdie
a844e018b6 rt2860: Drop since there is a better version in the kernel staging tree now
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-24 14:49:14 +01:00
Richard Purdie
3c759ae69b clutter-mozembed: Add missing DEPENDS on clutter
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-24 13:51:14 +01:00
Richard Purdie
7556381792 qemu: Fix for machines without zlib headers/library installed
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-24 11:14:32 +01:00
Richard Purdie
362d3886f5 alsa-utils: Fix ncurses build failures
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-23 23:50:09 +01:00
Richard Purdie
4e3afe5968 qemu: Switch to git and version 0.10.5
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-23 23:25:07 +01:00
Richard Purdie
79b7a566a2 opkg: Disable Werror, too many false positives with gcc 4.3.3
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-23 23:10:57 +01:00
Richard Purdie
d87496637d opkg-sdk: Bump PR after recent changes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-23 11:01:00 +01:00
Richard Purdie
619c1333b7 alsa-tools: Add missing DEPENDS on ncurses
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-23 11:00:32 +01:00
Richard Purdie
ec4d79ddc8 sanity.bbclass: Fix the warning message above tmpdir moving to point to the correct path
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-23 10:56:21 +01:00
Richard Purdie
85878623ab opkg: Fix sighandler compile error (patch from upstream)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-23 00:24:36 +01:00
Richard Purdie
525edb3e96 opkg: Fix sighandler compile error (patch from upstream)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-23 00:23:58 +01:00
Richard Purdie
7f4d8d110f settings-daemon: Add sound theme gconf key handling
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-22 17:35:25 +01:00
Richard Purdie
2b6bce37ca speex: Make sure all libraries are packaged
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-22 17:34:32 +01:00
Richard Purdie
f06e99d194 as-needed.inc: Blacklist pulseaudio due to its circular librbary dependencies
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-22 17:33:35 +01:00
Richard Purdie
98d05be7e9 moblin-fixed-revisions.inc: Fix hal-info version typo
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-22 17:32:59 +01:00
Richard Purdie
856af3fa63 libcanberra: Add patch to fix failures when the fallback theme is missing
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-22 17:32:17 +01:00
Richard Purdie
7d3cc76c04 task-moblin: Add alsamixer and pulseaudio-server
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-22 17:31:20 +01:00
Richard Purdie
45543f7749 consolekit: Add 0.3.0 from OE but disable policykit interaction
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-22 17:30:04 +01:00
Richard Purdie
d7568d312b pulseaudio: 0.9.12 -> 0.9.15 plus several build/packaging fixes and enabling dbus/consolekit/hal/x functionality
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-22 17:29:23 +01:00
Richard Purdie
ddc0eecb08 e2fsprogs: Don't install blkid as its now provided by util-linux
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-22 09:43:44 +01:00
Richard Purdie
e6a3149428 gcc: Add 4.3.3 and switch to for Moblin
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-22 09:42:20 +01:00
Richard Purdie
f887fcd665 linux-moblin: Improve defconfig for netbook
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-22 09:40:53 +01:00
Richard Purdie
af4155d88b connman: Install test scripts
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-22 09:40:12 +01:00
Richard Purdie
7a3ad270fc udev-141: Add missing udev rules
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-22 09:39:02 +01:00
Richard Purdie
edc9a00b47 qemu-sdk/qemu-native: No longer need to depend on gcc 3.x
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-21 17:01:53 +01:00
Richard Purdie
3af2755e9a pulseaudio: Allow empty main package for dependency chains
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-21 14:26:12 +01:00
Richard Purdie
5b5ed4cd35 libatomic-ops: Allow empty main package for packages dependency (library is only static)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-21 14:25:34 +01:00
Richard Purdie
114158d152 mozilla-headless: Make sure JS_THREADSAFE is always set
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-21 12:07:23 +01:00
Richard Purdie
c431f2b0a2 libgdbus: Fix SRC_URI
Signed-off-by: Richard Purdie <richard@ted.(none)>
2009-05-20 12:39:40 +01:00
Richard Purdie
f5cf7ef071 alsa: Upgrade to 1.0.20
Signed-off-by: Richard Purdie <richard@ted.(none)>
2009-05-20 11:17:49 +01:00
Richard Purdie
6c5d81946a mozilla-headless: Hardcode compiler options for now
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-20 01:22:17 +01:00
Richard Purdie
25185d5bb2 xserver-dri-lite: Drop dri2 version and enable dri2 by default
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-19 21:06:56 +01:00
Richard Purdie
14cba802f2 udev: Add 141
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-19 17:47:28 +01:00
Richard Purdie
d6cfaee455 util-linux: Fix compile of libblkid (from patches from OE.dev)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-19 17:11:43 +01:00
Richard Purdie
99f66c163d linux-moblin: Enable staging drivers in the kernel
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-19 16:01:21 +01:00
Richard Purdie
b0eb2f4cb3 moblin-fixed-revisions.inc: Use the more recent dbus
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-19 16:00:52 +01:00
Richard Purdie
7d2f5ce9e7 mozilla-headless: Bump revision used
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-19 16:00:19 +01:00
Richard Purdie
40afa0a864 initscripts: Since ld.so.cache is in /var/run, make sure the version in /etc/ is used as a fallback
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-19 15:59:36 +01:00
Richard Purdie
18f401d7fd connman: Improve the configure options
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-19 15:58:20 +01:00
Richard Purdie
cda31eb96c clutter-mozembed: Package some missing files
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-19 15:57:49 +01:00
Richard Purdie
e7f4dd810d psplash: Bump SRCREV 412 -> 420
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-19 15:57:06 +01:00
Richard Purdie
8534b097cd dbus: Add 1.2.14
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-19 15:56:33 +01:00
Richard Purdie
b15cfd5cbf ldconfig-native: Make it work for 32 bit targets from 64 bit build machines
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-19 15:55:55 +01:00
Richard Purdie
a811131e69 base.bbclass: Update to work with systems where install won't overwrite files
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-19 12:09:21 +01:00
Richard Purdie
514afcbb82 xf86-video-psb: Fix SRC_URI
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-19 11:58:34 +01:00
Richard Purdie
bc1c9bca63 world-broken.inc: Fix syntax
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-19 11:57:37 +01:00
Richard Purdie
e297c2f0cb world-broken.inc: Add helix-libs and clutter-helix
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-19 11:54:51 +01:00
Richard Purdie
c5c33ef672 libcanberra: Pass the --disable-ltdl-install configure option and DEPEND on libtool
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-18 12:45:15 +01:00
Richard Purdie
6c59a754e0 hal-info: 20080508 -> 20090414
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-18 12:39:11 +01:00
Richard Purdie
24bd0050ed hal: 0.5.11 -> 0.5.12rc1 2009-05-18 12:38:48 +01:00
Richard Purdie
e010c6c9b6 e2fsprogs: 1.41.2 -> 1.42.5
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-18 12:37:10 +01:00
Richard Purdie
e2eaac645e util-linux 2.12r -> util-linux-ng 2.15
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-18 12:36:34 +01:00
Richard Purdie
02def140ff mozilla-headless: Remove strange hardcoded paths
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-18 12:33:11 +01:00
Richard Purdie
92facff8dc poky-moblin.inc: Set gcc versions correctly
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-18 01:33:26 +01:00
Richard Purdie
a8f6bcf1e3 glibc: Add support for /etc/ld.so.conf.d/ files 2009-05-17 19:14:34 +01:00
Richard Purdie
dd0b54ded1 samba: Fix header file to include signal.h, fixing compile failures
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 17:52:27 +01:00
Richard Purdie
df0d3494f0 poky-fixed-revisions.inc: Update glib-2.0 versions
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 17:39:26 +01:00
Richard Purdie
4d4c8f5a8a mozilla-headless: Add an ld.so.conf.d addition to make sure its libraries are found
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 17:38:44 +01:00
Richard Purdie
27aeae57a7 glib-2.0: 1.18.1 -> 2.20.2
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 17:23:25 +01:00
Richard Purdie
81edb3c776 x11-common: Add support for starting xdg autostart .desktop files
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 17:22:50 +01:00
Richard Purdie
5c11f3184c task-moblin-x11-netbook: Drop networkmanager-applet
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 17:03:56 +01:00
Richard Purdie
9356620cab xdriinfo: Use virtual/libgl instead of mesa
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 15:22:19 +01:00
Richard Purdie
814700d243 Move libsampletate and libsndfile from meta-openmoko -> meta-moblin
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 15:01:24 +01:00
Richard Purdie
b8abc2db38 libnotify: Add missing DEPENDS on dbus-glib
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 15:00:01 +01:00
Richard Purdie
3593279260 poky.conf: Switch from libx11-diet to libx11-trim for less headaches
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 13:40:29 +01:00
Richard Purdie
17ab356f36 poky-fixed-revisions.inc: Set some extra SRCREVs
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 12:59:08 +01:00
Richard Purdie
f067655d8d world-broken.inc: Add gobject-introspection, drop helix as COMPATIBLE_HOST should take care of that
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 12:50:37 +01:00
Richard Purdie
b21b339183 clutter-helix: Set COMPATIBLE_HOST
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 12:48:57 +01:00
Richard Purdie
e223f6a22f libx11: Exclude from world builds so muliple versions aren't built. When needed the correct version will be automatically built 2009-05-17 12:46:17 +01:00
Richard Purdie
5fcdc32d7f mozilla-headless: Bump SRCREV
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 11:21:06 +01:00
Richard Purdie
5e986a23d0 bickley: Add DESCRIPTION
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 11:20:46 +01:00
Richard Purdie
0808818963 conf/distro: Update PREFERRED_VERSIONs
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 11:17:34 +01:00
Richard Purdie
0d3b18566e gnutls: Disable guile
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-17 11:16:17 +01:00
Richard Purdie
b4980e302c clutter: As standard DEPEND on virtual/libgl, not mesa 2009-05-17 11:06:20 +01:00
Richard Purdie
6aa642c8dc qemugl: Fix DEPENDS on virtual/xserver to be on virtual/libx11 2009-05-17 11:03:24 +01:00
Richard Purdie
0f3cf656a8 connman: Update to point at the correct upstream
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-16 19:35:58 +01:00
Richard Purdie
4519a40bab connman-gnome: Add
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-16 19:35:40 +01:00
Richard Purdie
8f66ea06d4 icon-naming-utils-native: 0.8.2 -> 0.8.7
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-16 19:34:25 +01:00
Richard Purdie
0e96bafeae Add libffi 3.0.8 2009-05-16 19:33:35 +01:00
Richard Purdie
86984e25fc e2fsprogs-native: Actually stage the useful binaries 2009-05-16 16:52:59 +01:00
Richard Purdie
40bb7a30fc networkmanager: Update to work with recent libnl
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-16 12:46:45 +01:00
Richard Purdie
e423eadb0f gtk+: Install the gtk-builder-convert python script somewhere where the system will find it 2009-05-16 12:03:17 +01:00
Richard Purdie
8cec085e25 libnl: 1.0-pre8 -> 1.1
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-16 11:02:23 +01:00
Richard Purdie
ff59ace98d clutter-mozembed: Add missing dependency on mozilla-headless-services
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-16 09:58:50 +01:00
Richard Purdie
b7a77fa0ff bickley: Add missing dependency on samba for libtdb and package dbus services files
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-16 09:58:08 +01:00
Richard Purdie
57b5ef0e8f libnotify: Add from OE
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-16 09:57:11 +01:00
Richard Purdie
6cce850bcb samba: Add from OE but split libtdb out into its own package
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-16 09:56:39 +01:00
Richard Purdie
cd5fa1ee4e telepathy-glib: 0.7.11 -> 0.7.29
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-16 09:55:30 +01:00
Richard Purdie
c2ac572857 networkmanager: Add DEPENDS on policykit
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-14 15:09:20 +01:00
Richard Purdie
90208115c0 gobject-introspection: Add an initial version, not functional yet
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-14 15:08:33 +01:00
Richard Purdie
29fb246f5e netbook: Disable rt2860 for now
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-14 15:04:35 +01:00
Richard Purdie
e6d96312f5 mozilla-headless: Convert to hg and add mozilla-headless-services
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-14 15:01:07 +01:00
Richard Purdie
59bb17f5c4 clutter-gtk: Disable introspection
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-14 15:00:02 +01:00
Richard Purdie
ffc7e98e95 clutter: Disable introspection
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-14 14:59:45 +01:00
Richard Purdie
7af06dbb89 clutter-mozembed: Update patch against latest git
Signed-off-by:  Richard Purdie <rpurdie@linux.intel.com>
2009-05-14 14:58:26 +01:00
Richard Purdie
f5e55e009a mojito: Add missing dependency on gnome-keyring
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-12 16:55:13 +01:00
Richard Purdie
fe457004c4 libccss: Use upstream for source
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-12 16:54:34 +01:00
Richard Purdie
81ff3a90f8 bitbake: Update to work without warnings with python 2.6
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-12 16:53:22 +01:00
Richard Purdie
22a4c4d02f gtk+: Append to PACKAGES_DYNAMIC, don't overwrite the default
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-12 16:52:39 +01:00
Richard Purdie
542eb3b16d eee901: Drop eee901 as superseeded by netbook
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-12 16:51:17 +01:00
Richard Purdie
9539b49c82 gnome-keyring: 2.20 -> 2.26.1
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-12 16:50:01 +01:00
Richard Purdie
e17a3ced72 libtasn1: Add from OE.dev with improvements for Poky
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-12 16:48:20 +01:00
Richard Purdie
d9e6cabc17 mutter: Disable introspection for now
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-12 15:07:02 +01:00
Richard Purdie
f6cb8229b9 twitter-glib: Disable shave and introspection to avoid build breakage
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-12 15:05:34 +01:00
Richard Purdie
9db2b57fca python-native: Fix the _ctypes module (and remove some dead files)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-12 10:23:41 +01:00
Richard Purdie
06e878caad sato-icon-theme: Remove recursive include. How this never errored before now, I have no idea...
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-11 23:14:16 +01:00
Richard Purdie
c009172f77 bitbake-dev: Sync with upstream
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-11 22:59:35 +01:00
Richard Purdie
107a9da006 bitbake: Merge further fixes from upstream 1.8 branch
* Make the test functionality work
* Optimise BBPATH handling when changing directory
* Optimise file globing for BBFILES

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-11 22:41:17 +01:00
Richard Purdie
1ca980646d bitbake: Sync git fetcher with changes upstream
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-11 22:34:07 +01:00
Richard Purdie
62d3720668 scripts: Remove autobuilder scripts
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-09 15:28:17 +01:00
Richard Purdie
44a88198c1 bitbake: Make sure existing environment variables are properly exported
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-09 15:28:17 +01:00
Richard Purdie
6a6f5cc820 Merge branch 'marcin/trunk' of git://git.pokylinux.org/poky-contrib 2009-04-28 17:13:57 +01:00
Marcin Juszkiewicz
0adc74b062 beagleboard: added 2.6.29 kernel from OE
tested on B7

Signed-off-by: Marcin Juszkiewicz <marcin@buglabs.net>
2009-04-28 18:09:45 +02:00
Richard Purdie
a8e1e028f8 xserver-dri-lite: Add version 1.6.0
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-28 12:40:10 +01:00
Richard Purdie
4f8346442c handbook: Add more information about extending Poky
Add more details on using in a team environment and how collections
can be used to manage groups of different kinds of changes

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-28 08:24:47 +01:00
Richard Purdie
3927e38eba Merge ssh://gitserver@git.pokylinux.org/poky 2009-04-28 08:24:11 +01:00
Richard Purdie
d65be3dd2a initramfs-live-boot: Fix script when multiple mounts are present and the last one isn't the correct one
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-23 12:21:06 +01:00
Richard Purdie
ed419e2d57 tasks-netbook: Catch up with metacity-clutter -> mutter renaming
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-22 17:44:06 +01:00
Richard Purdie
2096c315df bitbake.conf: Always add full debug information and increase the default image slack space
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-22 17:37:47 +01:00
Richard Purdie
b2a619b79e metacity-clutter: Rename to mutter and point at the new upstream
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-22 17:36:22 +01:00
Richard Purdie
ef5600cf10 conf/distro/include: Update various versions after recent changes
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-22 17:35:09 +01:00
Richard Purdie
912a522e2b libunique: Add 1.0.6
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-21 17:49:18 +01:00
Richard Purdie
d880beba01 clutter: Refresh patch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-21 17:48:32 +01:00
Richard Purdie
bb2ce064aa clutter-mozembed: Refresh patch
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-21 17:48:10 +01:00
Richard Purdie
622368d438 mojito: Package the dbus files
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-21 17:47:21 +01:00
Richard Purdie
a1b04dfe54 mozilla-headless: Use the upstream hg repository now and add missing DEPENDS on libidl
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-21 17:46:30 +01:00
Richard Purdie
939925365f libsoup: Add missing DEPENDS on sqlite3
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-21 17:45:34 +01:00
Richard Purdie
5c185c4cf7 json-glib: Make sure the autotools m4 files are found, unbreaking the build
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-21 17:44:59 +01:00
Richard Purdie
5264d4b9e2 bitbake: Fix a bug in the hg fetcher
Fix a bug in the hg fetcher where branch revisions are used with an
initial checkout.

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-21 17:42:47 +01:00
Richard Purdie
5df6deaa32 puslseaudio: Upgrade to 0.9.10
Upgrade to 0.9.10, moving pulseaudio to meta-moblin cleaning up and
merging in some changes from OE.dev. Also add libcanberra 0.10.

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-21 17:40:55 +01:00
Richard Purdie
12856d95a7 sqlite: 3.6.7 -> 3.6.10
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-21 17:38:40 +01:00
Richard Purdie
1370ba3fc0 libdrm: Package test utils
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-21 17:37:39 +01:00
Richard Purdie
31f3e71947 xf86-video-intel: 2.6.99.903 -> 2.7.0
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-21 17:36:05 +01:00
Richard Purdie
ad0c05d209 libnl: 1.0-pre6 -> 1.0-pre8
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-21 17:34:56 +01:00
Richard Purdie
f114fd2492 linux-moblin: Switch to 2.6.29.1
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-04-21 17:33:19 +01:00
Richard Purdie
e23c356916 libjana: revision 732 -> 749 2009-04-14 16:19:53 +01:00
Richard Purdie
9c4f33ad3d mojito: Disable PARALLEL_MAKE, the autofoo is broken around the generated files 2009-04-14 16:08:15 +01:00
Richard Purdie
80b4dd2fc8 xserver-xf86-dri-lite: Use the virtual mesa dependency instead of hardcoded mesa-dri 2009-04-14 15:32:19 +01:00
Richard Purdie
d620ad6a40 libdrm: 2.4.4 -> 2.4.7 2009-04-14 15:30:24 +01:00
Richard Purdie
1b4c8ad27e xf86-input-evdev: 2.1.1 -> 2.2.1 2009-04-14 15:26:33 +01:00
Richard Purdie
52cd772f8c xf86-input-synaptics 0.99.3 -> 1.1.0 2009-04-14 15:26:08 +01:00
Richard Purdie
1106f8a8fe xf86-input-synaptics 0.99.3 -> 1.1.0 2009-04-14 15:25:49 +01:00
Richard Purdie
3f438ba9a6 xf86-intel-video: Drop now unneeded dri2 version 2009-04-14 15:22:39 +01:00
Richard Purdie
ebc082ef37 xf86-video-intel: 2.6.0 -> 2.6.99.903 2009-04-14 15:21:59 +01:00
Richard Purdie
dfcd318ea1 mesa-dri: Use master branch for git version 2009-04-14 12:51:01 +01:00
Richard Purdie
25dc55da09 mesa: Drop stale files 2009-04-14 12:50:32 +01:00
Richard Purdie
7d5759aa44 mesa: Upgrade 7.2 -> 7.4 2009-04-14 12:50:03 +01:00
Richard Purdie
5a2365db5b mojito: Update FILES after recent source changes 2009-03-11 16:40:41 +00:00
Richard Purdie
bdc077bc13 libsoup-2.4: Add 2.25.29 (still 2.4 ABI) 2009-03-11 16:40:36 +00:00
Richard Purdie
01b99d5a65 Add libproxy 2009-03-11 16:40:27 +00:00
Koen Kooi
f94bd6b312 package bbclass: add an 'allow_links' param to get symlinks packaged, usefull for splitting out libraries 2009-03-11 12:05:53 +01:00
Robert Schuster
58ffd5a0ed base.bbclass: Add subdir feature to SRC_URI entries (from OE) 2009-03-11 12:03:25 +01:00
Marcin Juszkiewicz
9b6df99070 e2fsprogs-native: stage everything like it is done wuth non-native recipe 2009-03-10 16:47:02 +01:00
Marcin Juszkiewicz
784e1131c3 libice: added native version 2009-03-10 13:08:46 +01:00
Marcin Juszkiewicz
a102c05407 libsm: added native version 2009-03-10 13:08:46 +01:00
Marcin Juszkiewicz
3c8898c70f libxt: added native version 2009-03-10 13:08:46 +01:00
Richard Purdie
7a5b04186e Merge commit '84f0e3128b1ac1d2299e0a3ebb7117c775dfe16f' 2009-03-09 12:48:45 +00:00
Richard Purdie
88d8974bd5 linux-moblin: Build fix 2009-03-09 12:41:01 +00:00
Richard Purdie
49ca46f588 Merge ssh://gitserver@git.pokylinux.org/poky 2009-02-27 14:45:56 +00:00
Richard Purdie
00dccf496e linux-moblin: Update psb driver 2009-02-25 14:05:59 +00:00
Marcin Juszkiewicz
84f0e3128b dbus: make dbus-native do not use update-rc.d (removes harmless warning) 2009-02-23 20:45:46 +01:00
Marcin Juszkiewicz
caa983dd41 checksums.ini: added some new entries 2009-02-23 20:44:58 +01:00
Marcin Juszkiewicz
861933ade0 checksums.ini: merge entries from BUG Linux 2009-02-23 15:11:19 +01:00
Richard Purdie
440ac105bd meta-moblin: Add bickley, json-glib, libccss, librest, moblin-menus, twitter-glib 2009-02-18 14:20:06 +00:00
Richard Purdie
a397fbca1b linux-moblin: Update patches 2009-02-12 18:18:14 +00:00
Richard Purdie
ccfff6ce01 Merge branch 'fix-opkg-build' of git://git.lespiau.name/poky 2009-02-12 11:42:05 +00:00
Richard Purdie
1e4f72fcbf linux-moblin: Add 2.6.28+2.6.29-rc2 version 2009-02-12 10:21:54 +00:00
Richard Purdie
10f46e0117 linux-moblin: Cleanup patch whitespace 2009-02-11 09:47:42 +00:00
Damien Lespiau
53973f286b opkg: fix build with gcc 4.3.2
opkg has the -Werror flag enabled and gcc 4.3.2 introduces new warnings.
2009-02-09 11:13:05 +00:00
Richard Purdie
09bf864d4f libidl: 0.8.3 -> 0.8.12 2009-02-05 23:54:11 +00:00
Richard Purdie
be10b46b73 base.bbclass: Use explode_deps from bb.utils and remove the obsolete base.bbclass version 2009-02-05 23:54:11 +00:00
Richard Purdie
c2c16bced8 base.bbclass: Move package metadata handling functions into their own class file 2009-02-05 23:54:11 +00:00
Richard Purdie
0903f6a455 linux-rp: Update qemuarmv6/qemuarmv7 defconfigs 2009-02-05 15:55:47 +00:00
Richard Purdie
a6789f5b75 libdrm: Cleanup poulsbo patch slightly further 2009-02-05 15:02:30 +00:00
Richard Purdie
637183ec62 qemu: Update 6374 -> 6477 to fix absolute position device issues 2009-02-05 14:11:04 +00:00
Richard Purdie
942c23289f mesa: Drop 7.0.2 2009-02-05 14:08:54 +00:00
Richard Purdie
f06b34bf89 libdrm: Add patch for poulsbo 2009-02-05 14:08:41 +00:00
Richard Purdie
56383224c5 menlow: Update to use the same xserver/mesa as netbook 2009-02-05 14:07:45 +00:00
Richard Purdie
31ab259720 xf86-video-psb: Update to work with modern xservers 2009-02-05 14:06:34 +00:00
Richard Purdie
a1b17ee0ce linux-moblin: Update psb driver patch 2009-02-05 14:05:41 +00:00
Richard Purdie
cc01c77c99 meta-moblin: Drop now uneeded libdrm-psb 2009-02-05 14:05:03 +00:00
Richard Purdie
e5f1566660 meta-moblin: Drop now uneeded xserver-xf86-lite 2009-02-05 14:04:44 +00:00
Damien Lespiau
bcf14a38d5 sanity.bbclass: Fix error message when not having g++ on build 2009-02-04 09:47:35 +01:00
Richard Purdie
af9030880a shell.py: stage is called populate_staging 2009-01-30 12:21:06 +00:00
Richard Purdie
80f0032667 poky-moblin.inc: Switch to gcc 4.3.2 2009-01-29 13:57:42 +00:00
Richard Purdie
5a9a4802a9 netbook/menlow: Add core2 as an architecture 2009-01-29 13:57:07 +00:00
Richard Purdie
6147dc336e menlow.conf: Prefer linux-moblin as the kernel 2009-01-29 13:56:21 +00:00
Richard Purdie
8e2451f440 linux-psb-modules: Drop as now uneeded 2009-01-29 13:48:58 +00:00
Richard Purdie
c9f9486968 linux-moblin: Add patch to add the psb driver directly to the kernel instead of being standalone 2009-01-29 13:48:14 +00:00
Richard Purdie
837119e38e linux-mid: Drop as linux-moblin now supports menlow 2009-01-29 13:46:38 +00:00
Richard Purdie
514aa592cd libdrm-psb: Update to use a 2.6.27 kernel and simplify patches 2009-01-29 13:44:58 +00:00
Richard Purdie
4b7ef3d8b5 Add clutter-mozembed 2009-01-28 15:39:27 +00:00
Richard Purdie
53314a0125 Add mozilla-headless 2009-01-28 15:39:05 +00:00
Richard Purdie
463c2d6449 metacity-clutter: Add cross compile patch so compiles on x86_64 work for i386 targets 2009-01-27 15:44:07 +00:00
Richard Purdie
d9c8f31557 metacity-clutter: Fix after recent updates 2009-01-27 14:15:13 +00:00
Richard Purdie
deadb5259f mesa: Exclude mesa packages from world builds to reduce breakage 2009-01-27 13:23:10 +00:00
Marcin Juszkiewicz
e1d6280a61 bitbake.conf: add IMAGE_ROOTFS_SIZE (from OE) 2009-01-23 17:48:28 +00:00
Richard Purdie
edbdbd174e exmap-console: Add missing DEPENDS on glib-2.0 (from OE) 2009-01-23 16:50:42 +00:00
Cyril Humbert
4d7b70c17f base-files: Add /etc/shells file 2009-01-23 16:30:35 +00:00
Richard Purdie
c92acf4b05 image.bbclass: Use IMAGE_ROOTFS_SIZE if the image will fit into it and only add extra space if the image is too small (ported from OE by hrw) 2009-01-23 16:24:46 +00:00
Richard Purdie
7b6ad5b9fb Fix postinstall scripts not to use IMAGE_ROOTFS direction by use D instead. Based on a patch from Carl Simonson <simonsonc@gmail.com> 2009-01-23 16:15:06 +00:00
Carl Simonson
75f3ca5abb networkmanager: Add a missing configure dependency 2009-01-23 16:10:40 +00:00
Richard Purdie
b74734d8c9 poky-image/moblin-image.bbclass: Fix a typo noticed by Mike Turquette 2009-01-23 16:03:58 +00:00
Mike Turquette
063f2efff1 Add 2008q3 CSL toolchain support 2009-01-23 15:53:25 +00:00
Richard Purdie
aa8de0e941 mozilla.bbclass: Fix pkgconfig usage for pkgconfig sysroot 2009-01-23 15:51:44 +00:00
Richard Purdie
072545b111 scripts/poky-qemu-internal: Add support for GL passthrough in qemux86 images 2009-01-21 17:40:51 +00:00
Richard Purdie
b7fd2b744e qemux86: Convert to se xserver-xf86-dri-lite 2009-01-21 16:41:02 +00:00
Richard Purdie
db3dd3ad17 qemu: Upgrade to svn revision 6374 for working passthrough 2009-01-21 14:14:06 +00:00
Richard Purdie
a13faf34af qemugl: Install the library in the standard location 2009-01-21 11:36:21 +00:00
Richard Purdie
d2ebf9155e Add xf86-video-vmware driver 2009-01-21 11:35:33 +00:00
Richard Purdie
e121f9eb59 scripts/runqemu: Factor image location code into a shell function 2009-01-21 11:35:01 +00:00
Richard Purdie
0e22433130 qemu: Add x86_64-softmmu target 2009-01-21 11:34:08 +00:00
Richard Purdie
1884c240c9 clutter: Revert to a revision known to work for various subpackages 2009-01-20 12:32:25 +00:00
Richard Purdie
0d5a2607ab qemu-sdl: Remove i386-linux-user target for now 2009-01-20 11:45:24 +00:00
Richard Purdie
544361e3df clutter: Fix various missing DEPENDS on clutter and update clutter SRCREV 2009-01-20 10:06:56 +00:00
Richard Purdie
b1bf5e436d poky-fixed-revisions.inc: Add SRCREV for qemugl 2009-01-20 00:33:31 +00:00
Richard Purdie
ec3918509d Add qemugl 2009-01-19 23:47:10 +00:00
Richard Purdie
f6ea2f84fb qemu: Add host gl support for qemu x86 2009-01-19 23:46:37 +00:00
Richard Purdie
7fc734effe world-broken.inc: Add minimo, helix-libs and xlogo 2009-01-19 22:45:25 +00:00
Richard Purdie
2da90388ac poky-floating-revisions: Disable PREFERRED_VERSION statements for now 2009-01-19 22:37:38 +00:00
Richard Purdie
bb98685a71 bitbake: fetch/init: Add 'HOME' to list of variables exported when runnig fetcher commands 2009-01-19 22:28:49 +00:00
Richard Purdie
294a1ee38a libxi: Increase SRCREV 2009-01-19 14:23:01 +00:00
Richard Purdie
41523a7eb2 clutter-0.8: Increase the git revision used 2009-01-19 14:04:35 +00:00
Richard Purdie
6b375aca86 libjana: Switch to gnome svn and update the revision 2009-01-19 12:37:06 +00:00
Richard Purdie
4614e87870 Drop matchbox-session-netbook 2009-01-19 11:32:51 +00:00
Richard Purdie
ae80a4214c meta-moblin: Drop various matchbox packages from 'moblin' images 2009-01-19 11:32:25 +00:00
Richard Purdie
f0a876b8a2 Add latencytop 0.4 2009-01-18 13:09:23 +00:00
Richard Purdie
0e7c8367e5 meta-moblin: Convert from recipes to use the autotools_stage class 2009-01-18 13:07:33 +00:00
Richard Purdie
cd9ad54848 meta-extras: Convert from recipes to use the autotools_stage class 2009-01-18 13:07:05 +00:00
Richard Purdie
4cdb6114fa Drop sqlite3 from meta-extras 2009-01-18 13:06:29 +00:00
Richard Purdie
e9ee1e5cef xserver-xf86-dri-lite: Add patch to disable dolt and fix build breakage 2009-01-17 18:24:27 +00:00
Richard Purdie
b010c24c22 poky-fixed-revisions.inc: Update xserver-xf86-dri and inputproto revisions 2009-01-17 18:22:26 +00:00
Richard Purdie
05c1fabda8 menlow: Add xf86-input-evdev to list of drivers to load 2009-01-17 18:21:26 +00:00
Richard Purdie
d97dbdd9de xf86-video-intel: 2.4.2 -> 2.6.0 2009-01-17 15:23:57 +00:00
Richard Purdie
de44ac8893 conf/distro/include: Update PREFERRED_VERSIONS after various recent changes 2009-01-17 15:21:22 +00:00
Richard Purdie
2db2959935 libxcb: Add xcb-proto-native to DEPENDS 2009-01-17 15:20:31 +00:00
Richard Purdie
d29069819c randrproto: 1.2.2 -> 1.2.99.3 2009-01-16 15:57:28 +00:00
Richard Purdie
74a6e3e11c dri2proto: 1.1 -> 1.99.3 2009-01-16 15:56:53 +00:00
Richard Purdie
b974901b6e libxrandr: 1.2.3 -> 1.2.99.4 2009-01-16 15:56:15 +00:00
Richard Purdie
e0222818ce xf86-input-mouse: 1.3.0 -> 1.4.0 2009-01-16 15:55:37 +00:00
Richard Purdie
ef24ac261d xf86-input-keyboard: 1.3.1 -> 1.3.2 2009-01-16 15:55:30 +00:00
Richard Purdie
8ed9449f93 xf86-input-synaptics: 0.15 -> 0.99.3 2009-01-16 15:53:51 +00:00
Richard Purdie
7c73052d93 xf86-input-evdev: 2.0.4 -> 2.1.1 2009-01-16 15:53:46 +00:00
Richard Purdie
d7c383fd59 xcb-proto: Add 1.3 (non-default) 2009-01-16 15:53:39 +00:00
Richard Purdie
1ce1d4de35 libxcb: Add 1.1.91 and 1.1.93 versions to replace 1.0. .93 can't be default as the xserver doesn't support it yet 2009-01-16 15:53:23 +00:00
Richard Purdie
98fa049ba0 sdk.bbclass: Ignore -sdk suffix warnings for gcc-cross-sdk 2009-01-16 15:40:49 +00:00
Richard Purdie
7e0dfa2030 Drop unneeded tune-atom.inc file 2009-01-16 15:28:30 +00:00
Richard Purdie
5d12760e34 libdrm: 1.4.0 -> 1.4.4 2009-01-15 19:49:49 +00:00
Richard Purdie
68cc158ba7 moblin-fixed-revisions.inc: Drop unneeded versions settings 2009-01-15 19:49:17 +00:00
Richard Purdie
f3edcecf99 hal: Delete old hal and hal-info versions 2009-01-15 19:48:40 +00:00
Richard Purdie
29fd4733fd util-macros: Add hack for the loss of the xaw.m4 file until xorg-apps are released which don't use it 2009-01-15 15:27:11 +00:00
Richard Purdie
b10b195b8c dbus-glib: 0.76 -> 0.78 2009-01-15 15:17:54 +00:00
Richard Purdie
932fc6a37d apr: Disable checks for a system libtool, we don't need that 2009-01-15 13:36:08 +00:00
Richard Purdie
123b0991ee task-moblin-x11-netbook: Bump PR 2009-01-15 13:01:27 +00:00
Richard Purdie
ef0b90b903 gupnp: Update to latest releases, add gupnp-av, stage the binding tool into native staging (its a script so thats allowed) 2009-01-15 12:54:27 +00:00
Richard Purdie
0acce24b3c Drop linux-moblin obsolete kernels 2009-01-12 17:41:01 +00:00
Richard Purdie
f51973f5af apr/apr-util: Fix some other config path gremlins breaking builds 2009-01-12 17:34:52 +00:00
Richard Purdie
a43863b7f1 apr: Remove workdir path references from installed apr files 2009-01-12 15:37:21 +00:00
Richard Purdie
669aeb73eb dbus-glib: Use the binding tool from PATH 2009-01-12 10:24:55 +00:00
Richard Purdie
1daca591dd subversion 1.4.5 -> 1.5.5 2009-01-08 11:29:31 +00:00
Richard Purdie
9602318b9d task-moblin-sdk: Add subversion and git 2009-01-07 17:24:57 +00:00
Richard Purdie
eb72830fcf Add apr, apt-util and subversion based on recipes from OE with tweaks from Josh/me 2009-01-07 17:22:15 +00:00
Richard Purdie
30238161a6 image.bbclass: Generate the image after running the kernel modules and ldconfig commands, not before 2009-01-07 16:31:48 +00:00
Richard Purdie
b402db44f0 gnome-vfs: Only apply the RRECOMMENDS to the main package, not for example the -doc package 2009-01-07 16:30:59 +00:00
Richard Purdie
0341841061 update-rc.d.bbclass: Only change the main package RDEPENDS, not all the RDEPENDS as this affects things like the -doc packages 2009-01-07 16:30:28 +00:00
Richard Purdie
8101d6f93b gcc: Disable patches not needed for 4.3.x 2009-01-07 16:29:38 +00:00
Joshua Lock
bd43b80af9 git: Add a non-native git package for moblin-sdk 2009-01-07 15:46:31 +00:00
Richard Purdie
b040233aa6 omap3-sgx-modules: recipe to build sgx modules using the kbuild system from the GPL'ed imgtec sources (from OE.dev with added COMPATIBLE_MACHINE) 2009-01-06 20:43:34 +00:00
Richard Purdie
3ec9a7de2a bitbake: Fix wget fetcher to better handle urls with ; followed by parameters in the url 2009-01-06 19:56:02 +00:00
Richard Purdie
fa89b73e25 scripts/poky-autobuild-moblin: Add moblin-uricheck target support 2009-01-06 09:30:55 +00:00
Richard Purdie
a65bb5032c dbus-glib: Fix introspection configure option 2009-01-05 23:05:48 +00:00
Richard Purdie
48b487d1af e2fsprogs: Add darwin override for EXTRA_OECONF 2009-01-05 22:03:58 +00:00
Richard Purdie
7b281a3924 native.bbclass: Add virtclass-native to OVERRIDES and use in fakeroot to function correctly 2009-01-05 22:00:22 +00:00
Richard Purdie
34fa658f1f dbus-native: Bump PR 2009-01-05 19:14:05 +00:00
Richard Purdie
f0b6ce8482 dbus-glib: Factor into a common .inc file and cleanup the recipe using autotools staging 2009-01-05 17:21:56 +00:00
Richard Purdie
0d8a8c8932 dbus-native: Generate the dbus-bus-introspect.xml so dbus-glib recipes don't have to find the dbus source. Pass the location of the file to dbus-glib* with the --with-introspect and drop the now unneeded patch 2009-01-05 17:04:39 +00:00
Richard Purdie
eae7eb5bd5 scripts: Update qemu scripts with changes in recent qemu calling conventions and the switch to ext3 images 2009-01-05 16:00:31 +00:00
Richard Purdie
e45a4a847c libx11-sdk: Provide the correct virtual package 2009-01-05 15:59:52 +00:00
Richard Purdie
e247f22c27 sdk.bbclass: Don't special case virtual/ dependencies as this breaks things like libx11 2009-01-05 15:59:22 +00:00
Richard Purdie
fb9196ddcf native.bbclass: Handling remapping of PROVIDES similar to sdk.bbclass 2009-01-05 15:57:50 +00:00
Richard Purdie
55be33fd92 qemu: Upgrade to latest svn removing a ton of merged patches (yay) 2009-01-05 15:56:31 +00:00
Richard Purdie
5273e39edf metacity-clutter: Add intltool to DEPENDS 2009-01-05 14:35:31 +00:00
Joshua Lock
86ee5390e1 metacity-clutter_git: Set correct gconf keys after installation for compositing.
The clutter-plugin name has changed since the recipe was first written so we now set the right plugin name as well as enabling compositing.
2009-01-05 11:53:08 +00:00
Richard Purdie
78f5f8df30 Various fixes after recent commit breakage 2009-01-04 00:00:59 +00:00
Richard Purdie
bb2a5c9810 glib-2.0: Revert glib-2.0 S variable removal 2009-01-03 20:24:24 +00:00
Richard Purdie
f091e6c78a Remove unneeded S variables 2009-01-03 18:34:00 +00:00
Richard Purdie
467b5bc1e0 coreutils: Convert to BBCLASSEXTEND 2009-01-03 18:33:34 +00:00
Richard Purdie
66b6014139 fakeroot: Clean up and convert to BBCLASSEXTEND 2009-01-03 18:33:03 +00:00
Richard Purdie
8bc4105ddf fakechroot: Clean up and convert to BBCLASSEXTEND 2009-01-03 18:32:56 +00:00
Richard Purdie
d0cff01fba flex: Clean up and convert to BBCLASSEXTEND 2009-01-03 18:32:32 +00:00
Richard Purdie
a4ef0bb46a e2fsprogs: Drop stale unused patches, clean out unneeded metadata 2009-01-03 18:10:30 +00:00
Richard Purdie
1dc1601f65 expat: Upgrade native/sdk versions to 2.0.0, use BBCLASSEXTEND, drop 1.95.7 version, clean up recipe massively 2009-01-03 18:09:39 +00:00
Richard Purdie
aa820102c8 bzip2: Drop 1.0.2 version 2009-01-03 17:56:02 +00:00
Richard Purdie
575235fc03 curl: Get rid of old fashioned broken stage functions 2009-01-03 17:50:10 +00:00
Richard Purdie
c4a39f6417 zlib: Clean up recipe and use BBCLASSEXTEND for native and sdk versions 2009-01-03 17:31:17 +00:00
Richard Purdie
64c7fa4734 xorg: Remove unneeded XORG_PN settings and replace some native/sdk recipes with BBCLASSEXTEND 2009-01-03 17:10:57 +00:00
Richard Purdie
772ec7db08 bitbake-dev: Add BBCLASSEXTEND support 2009-01-03 16:33:11 +00:00
Richard Purdie
ee0faf1346 native/sdk.bbclass: Handle DEPENDS and PROVIDES fields magically, remove a number of xorg sdk and native packages replacing with BBCLASSEXTEND 2009-01-03 16:25:39 +00:00
Richard Purdie
ade351e2f4 bitbake: Add in code to support the BBCLASSEXTEND variable. Virtual native/sdk recipes then become possible 2009-01-03 16:25:20 +00:00
Richard Purdie
28fd9dadbd bitbake/cache.py: Simplify logic 2009-01-03 00:10:10 +00:00
Richard Purdie
250b021154 bitbake/BBHandler.py: Move handler finalisation code into a separate function 2009-01-02 23:49:18 +00:00
Richard Purdie
bb80287762 bitbake: Sync with upstream after 2.8.12 release 2009-01-02 17:27:25 +00:00
Richard Purdie
8fa334d02a dbus: Drop old 1.0.* and 1.1.* versions 2009-01-02 17:05:01 +00:00
Richard Purdie
23486c1532 gtk+: Drop old 2.10.* and 2.13* versions 2009-01-02 17:03:34 +00:00
Richard Purdie
cf093fa0f3 autoconf: Add 2.63 (leaving GPLv2 2.61) leaving 2.61 as default since glib-2.0 breaks with 2.63 (site files aren't
being included)
2009-01-02 15:42:12 +00:00
Richard Purdie
2d749dc4cc xorg-*common.inc: Use BPN instead of PN 2009-01-02 15:39:49 +00:00
Richard Purdie
f8a23031e2 Drop now unneeded FILESDIR and S variables from various recipes 2009-01-02 15:34:40 +00:00
Richard Purdie
61d8ea7a14 bitbake.conf: In SPECIAL_PKGSUFFIX -cross-sdk must come before -cross and -sdk or it doesn't work as expected 2009-01-02 14:01:27 +00:00
Richard Purdie
62f16a6578 libtool-native: Stage libltdl headers (from OE) 2009-01-02 12:39:47 +00:00
Richard Purdie
8ce2175cba Add m4 1.4.12 but leave 1.4.9 as its GPLv2 2009-01-02 11:22:07 +00:00
Richard Purdie
ba2b8cb172 automake: 1.10.1 -> 1.10.2 2009-01-02 11:21:51 +00:00
Richard Purdie
4bb83f1e22 quilt: 0.45 -> 0.47 2009-01-02 11:20:55 +00:00
Richard Purdie
01e07585ad libtool: Drop old version 1.5.10 2009-01-02 11:20:12 +00:00
Richard Purdie
01793c5bd3 base.bbclass: Remove pointless expand call 2009-01-02 11:18:42 +00:00
Richard Purdie
3ab2ff7668 base.bbclass: Add metadata revision handling for git (from OE) 2009-01-02 11:09:04 +00:00
Richard Purdie
1d89595e2b base.bbclass: Add unpack handling for .jar files (from OE) 2009-01-02 10:35:32 +00:00
Richard Purdie
6552990921 bitbake.conf: Default to an IMAGE_FSTYPES of tar.gz instead of the less useful jffs2 2009-01-02 10:31:44 +00:00
Richard Purdie
01ceeedc79 bitbake.conf: Rename DEBPV to EXTENDPV to sync up with OE 2009-01-02 10:30:37 +00:00
Richard Purdie
94c895aad5 bitbake.conf: Create BPN variable containing the pruned version of PN with various suffixes removed and use this for S and FILESPATH. This uses naming from OE but with improved code 2009-01-02 10:15:45 +00:00
Richard Purdie
fe0e39d0ee pax-utils: Upgrade 0.1.13 -> 0.1.19 2008-12-31 23:00:18 +00:00
Richard Purdie
93df528092 binutils: Drop versions 2.17 and earlier 2008-12-31 23:00:06 +00:00
Richard Purdie
3fc046901f bintuils: Add 2.19 (from OE) 2008-12-31 22:59:57 +00:00
Richard Purdie
f8e4a7575d poppler: 0.6 -> 0.9.2 2008-12-31 22:59:46 +00:00
Richard Purdie
9d88f9965a resolvconf: 1.42 -> 1.43 2008-12-31 22:59:33 +00:00
Richard Purdie
7695704eab bitbake: Add bb.utils.prune_suffix() 2008-12-31 22:58:57 +00:00
Richard Purdie
2c70bf49c1 bitbake.conf: Drop stale unused MANIFEST variable 2008-12-31 22:58:07 +00:00
Richard Purdie
102a8426b9 libsm: Add missing DEPENDS on e2fsprogs for uuid 2008-12-31 22:57:55 +00:00
Richard Purdie
3f4a6d8c8b gcc: Drop unneeded patch 2008-12-31 22:57:44 +00:00
Richard Purdie
1fc2929978 libpciaccess: Drop unneeded patch 2008-12-31 22:57:29 +00:00
Richard Purdie
f8daac5777 pciutils: Upgarde 2.2.4 -> 3.0.3 2008-12-31 17:20:38 +00:00
Richard Purdie
78456faa5e strace: Fix SRC_URI 2008-12-31 17:19:22 +00:00
Richard Purdie
1357f754b1 strace: Upgrade to 4.5.18 2008-12-31 17:17:18 +00:00
Richard Purdie
83494fc2e3 sqlite3: Upgrade to 3.6.7, drop old versions 2008-12-31 17:16:52 +00:00
Richard Purdie
141b7fc4e9 xextproto: Remove patch added upstream and now unneeded 2008-12-31 16:09:54 +00:00
Richard Purdie
71fc43d7cb xorg-proto: Upgrade various packages to the latest releases 2008-12-31 16:06:12 +00:00
Richard Purdie
711650f223 poky-fixed-revisions/preferred-xorg-versions.inc: Update PREFERRED_VERSIONS to reflect changed package versions in recent updates 2008-12-31 15:54:33 +00:00
Richard Purdie
2a94861982 xorg: Update various packages to the latest releases and remove old versions 2008-12-31 15:53:49 +00:00
Richard Purdie
5954823ea9 task-moblin-boot: Fix COMPATIBLE_MACHINE issues 2008-12-31 15:53:04 +00:00
Richard Purdie
f08f0ff06e cairo: Remove now unneeded do_stage function 2008-12-31 11:59:43 +00:00
Richard Purdie
ece77e6ecb pixman: Drop old version 2008-12-31 11:59:13 +00:00
Richard Purdie
fd0f817a96 pango: Drop old versions 2008-12-31 11:58:42 +00:00
Richard Purdie
82cdeb2b0e atk: Remove old versions 2008-12-31 00:33:25 +00:00
Richard Purdie
fd37f9451a glib-2.0: Drop old version 2008-12-31 00:21:57 +00:00
Richard Purdie
d1b0e1e055 Drop unneeded mtn2git files 2008-12-31 00:19:32 +00:00
Richard Purdie
72a7dc3687 dpkg: Drop old version 2008-12-31 00:18:09 +00:00
Richard Purdie
4f2bb36f31 cairo: Drop old versions 2008-12-31 00:15:45 +00:00
Richard Purdie
90f97b66b5 moblin-images-live: Move common code to the .inc file 2008-12-31 00:10:12 +00:00
Richard Purdie
323ba2166a moblin-image-live: Drop since this is the same as moblin-image-netbook-live 2008-12-31 00:05:34 +00:00
Richard Purdie
d170d89e8d check: Drop old version and use autotools_stage 2008-12-31 00:04:03 +00:00
Richard Purdie
433fca7e0a Set COMPATIBLE_MACHINE for menlow recipes 2008-12-30 21:21:50 +00:00
Richard Purdie
0f4433e3b7 task-moblin-x11-netbook: Bump PR 2008-12-30 21:03:55 +00:00
Richard Purdie
c8a24cd002 meta-moblin: Add initial menlow support 2008-12-30 17:15:49 +00:00
Richard Purdie
459a7f4a34 poky-fixed-revisions.inc: Add entry for mesa-xlib 2008-12-30 17:07:36 +00:00
Richard Purdie
ae64de57f3 mesa: Set PROVIDES correctly and alow building of an empty PN package for now 2008-12-30 17:07:26 +00:00
Richard Purdie
fcb1791f55 classes/autotools_stage.bbclass: Add autotools_stage class to further recipes to simplify recipes using standard autotools 2008-12-30 17:07:17 +00:00
Richard Purdie
e380b48602 classes/autotools_stage.bbclass: Add autotools_stage class to simplify recipes using standard autotools 2008-12-30 17:07:04 +00:00
Richard Purdie
f9f549d06f distro/poky.conf: Disable svn revision handling since svn is obsolete and no git revision handling function is present yet 2008-12-30 17:06:54 +00:00
Richard Purdie
428e022700 image-minimal-initramfs: Add base-passwd to images to avoid udev complaints 2008-12-26 14:26:16 +00:00
Ross Burton
48c50c2ca1 hicolor-icon-theme: add size/stock directories to hicolor for compatibility with OpenMoko 2008-12-23 15:20:51 +00:00
Richard Purdie
a42718c5b9 scripts/poky-autobuild-postprocess-moblin: Share toolchain/sdk output 2008-12-19 15:47:07 +00:00
Richard Purdie
01121bc89e clutter: Fix enable_tests patch for recent changes 2008-12-18 17:00:46 +00:00
Richard Purdie
0f918b445e scripts/poky-autobuild-moblin: Update to share moblin-incremental images 2008-12-18 16:43:03 +00:00
Richard Purdie
be30e75511 task-moblin-x11-netbook: Allow the user to append to the list of moblin packages 2008-12-18 15:49:19 +00:00
Richard Purdie
c29128b662 poky-fixed-revisions.inc: Fix whitespace problem 2008-12-18 15:35:17 +00:00
Richard Purdie
81ddcf3b37 poky-fixed-revisions.inc: Fix tidy SRCREV 2008-12-18 15:06:22 +00:00
Richard Purdie
48d2165e83 poky-fixed-revisions.inc: Set SRCREV for tidy, aaina and table properly 2008-12-18 14:47:54 +00:00
Richard Purdie
fc859a8ff4 clutter: Convert from svn to git 2008-12-18 12:02:12 +00:00
Richard Purdie
c3f6d464a1 scripts/poky-autobuild-moblin: Add rm_work 2008-12-18 09:26:52 +00:00
Richard Purdie
dd34449060 metacity-clutter: Fix .pc file issue 2008-12-17 22:46:17 +00:00
Richard Purdie
bc1ce63c1d scripts/autobuild-moblin: Configuration fixups 2008-12-17 17:18:27 +00:00
Richard Purdie
1dd27ec870 librsvg: Set a SRCREV (and also for tasks) 2008-12-17 12:21:02 +00:00
Richard Purdie
1acc6126b8 poky-fixed-revisions.inc: Update metacity-clutter SRCREV 2008-12-17 12:19:43 +00:00
Richard Purdie
0dd091d1ea librsvg: Add 2.22.3 and svn versions 2008-12-17 12:14:51 +00:00
Richard Purdie
5486cc46f7 meta-moblin: Add gnome-menus 2.24.0 (from OE) 2008-12-17 12:13:41 +00:00
Richard Purdie
36636a9e38 meta-moblin: Add libjana (from meta-openmoko) 2008-12-17 12:13:21 +00:00
Richard Purdie
57ba4a20fb meta-moblin: Add taglib 1.5 2008-12-17 12:12:51 +00:00
Richard Purdie
fe338b3628 pimlico: Update pimlico packages to reflect the new upstream svn urls 2008-12-17 12:10:49 +00:00
Richard Purdie
7ffb5983c0 intltool: 0.37.1 -> 0.40.5 2008-12-17 12:09:50 +00:00
Richard Purdie
ee1f065078 bitbake: Make sure the git remote head viewer preserves the username 2008-12-17 12:07:41 +00:00
Richard Purdie
f9dbbf4f83 gitignore: Update entries to match various meta repositories 2008-12-17 12:05:32 +00:00
Ross Burton
750486785b hicolor-icon-theme: ship a custom index.theme which includes the Hildon icon sizes 2008-12-16 18:06:13 +00:00
Ross Burton
9ca832b991 openmoko-icon-theme-standard2: add a compat package which symlinks the new icons into hicolor 2008-12-16 15:36:51 +00:00
Richard Purdie
da743fb70c scripts/poky-qemu-internal: Add usb commandline to nfs mounted images 2008-12-15 10:58:03 +00:00
Richard Purdie
ffdec425bf bitbake/bitbake-dev: Sync with upstream 2008-12-06 13:16:13 +00:00
Richard Purdie
4be017e82f poky-external.inc: No need to the TARGET_*_prepend directives after the external-poky-toolchain recipe changes 2008-12-05 14:37:28 +00:00
Richard Purdie
f1bac68e17 external-poky-toolchain: Add include and lib files to the staging sysroot removing the need to link against two trees at the same time 2008-12-05 14:37:28 +00:00
Andrzej Zaborowski
73b2200724 handbook: Correct a bunch of misc typos. 2008-12-05 13:07:12 +01:00
Richard Purdie
bcb58a0cd0 meta-toolchain: Fix problems introduced by prefix variable value changes 2008-12-05 11:25:55 +00:00
Ross Burton
1732e55c56 Bump matchbox-desktop srcrev
This version of Matchbox Desktop correctly recurses when loading desktop files,
so it handles Hildon-style application folders.
2008-12-04 15:25:59 +00:00
Robert Bragg
c1a12b7d20 Adds username support to the git fetcher, and exports SSH_AGENT_PID + SSH_AUTH_SOCK
The SSH_AGENT_PID + SSH_AUTH_SOCK environment variables are needed if you
are using ssh-agent to hold passwords for your ssh keys.
2008-12-03 16:21:45 +00:00
Richard Purdie
a8b0e8a034 scripts/poky-env-internal: Add SSH_AUTH_SOCK and SSH_AGENT_PID to BB_ENV_WHITELIST 2008-12-03 15:41:54 +00:00
Richard Purdie
63c279ef55 Move check, policykit and xerces-c to meta-moblin 2008-12-02 21:40:25 +00:00
Richard Purdie
8a7ecd59c7 handbook/faq.html: Fix cut and paste error 2008-12-02 21:39:48 +00:00
Mike Turquette
f6c65b8a8d distro/include: Add poky-external-csl2007q3 2008-12-02 20:28:19 +00:00
Mike Turquette
b3e49b643e external-csl-toolchain: Add 2007q3-51 and update 2006q3-27 2008-12-02 20:27:25 +00:00
Richard Purdie
7cd5d53f08 handbook/faq.xml: Add entry about Ubuntu Intrepid 2008-12-02 19:05:22 +00:00
Cyril Humbert
5b44f42e13 udev-124: Fix firmware loader script name and bump package PR 2008-12-02 17:21:26 +00:00
Richard Purdie
d38f630c1e meta-moblin/xorg-app: Add missing include file 2008-12-02 17:17:13 +00:00
Richard Purdie
70203a0723 Move pam, packagekit, monit and gnet to meta-moblin 2008-12-02 14:30:31 +00:00
Richard Purdie
11f0e58005 libsoup: Remove strange staging hacks fixing incompatibilities with libsoup-2.4 2008-12-02 14:30:01 +00:00
Richard Purdie
181042f4e8 handbook: Reference git instead of svn 2008-12-02 13:36:23 +00:00
Richard Purdie
f379d79162 meta-moblin: Remove files already in meta 2008-12-01 22:38:53 +00:00
Vivian Zhang
d0e82a364c Moved gypsy from meta-extras to meta and upgraded it to 0.6 2008-12-01 22:35:05 +00:00
Richard Purdie
4a4eaec9e0 meta-moblin: Add extra xorg-app, xorg-data and gvfs packages from OE 2008-12-01 20:56:25 +00:00
Richard Purdie
d7aaf31869 meta-moblin: Add basic qt support (from OE) 2008-12-01 20:55:25 +00:00
austin
14ecbd658e Skip useless and memory-based folder when create the initial file list. 2008-12-01 20:52:04 +00:00
Rob Bradford
199828c20e bitbake-dev: Add basics of "puccho" image builder UI 2008-12-01 20:50:34 +00:00
Rob Bradford
340b2b5612 bitbake-dev: Refactor goggle to pull out useful components.
Separate the GTK components and abstractions to a separate module where they
can be used by other user interfaces. This module includes the model, the view
and abstraction that populates the model.
2008-12-01 20:50:21 +00:00
Rob Bradford
49e8c06b77 bitbake.conf: Allow TMPDIR and DEPLOY_DIR_IMAGE to be overridden 2008-12-01 20:50:05 +00:00
Samuel Ortiz
f94ff99055 bluez4: Bump to 4.17 2008-12-01 20:44:09 +00:00
Vivian Zhang
fdc8250625 upgrade hal to 0.5.11 and hal-info to 20080508(from OE) 2008-12-01 20:42:56 +00:00
Vivian Zhang
1eb0272280 upgrade sqlite to 3.6.4 2008-12-01 20:41:33 +00:00
Peter Zhu
93ae0be27c upgrade PR of sreadahead_0.02.bb 2008-12-01 20:41:08 +00:00
austin
6f7afab062 sreadahead: Add a patch to set the app to io-idle running status.
This patch sets the sreadahead to io-idle stauts when it is running,
so that sreadahead will not preempt IO with other apps.
2008-12-01 20:40:32 +00:00
Vivian Zhang
0c2a3df77b upgrade eds-dbus to 2.20.0 2008-12-01 18:00:24 +00:00
Vivian Zhang
0e89124501 upgrade dbus to 1.2.4 2008-12-01 17:59:32 +00:00
Xu Li
d3bd1e8ab3 upgrade pango to 1.22.2; disable pango tests 2008-12-01 17:58:31 +00:00
Xu Li
d12f673a23 upgrade cairo to 1.8.2; add patch to fix its libtool issue 2008-12-01 17:57:55 +00:00
Xu Li
ba601403fe upgrade pixman to 0.12.0 2008-12-01 17:57:38 +00:00
Xu Li
57efa3ccc8 upgrade atk to 1.24.0 2008-12-01 17:57:17 +00:00
Ross Burton
5698e0be46 Fix qemu build on 2.6.27
Linux 2.6.27 removed linux/dirent.h, which qemu was included. Change this to
include dirent.h.
2008-11-11 11:11:56 +00:00
Richard Purdie
13ee3030f3 image.bbclass: Fix typo 2008-11-10 21:47:49 +00:00
Richard Purdie
793dc948e6 image.bbclass: Add function to write out an image manifest 2008-11-10 21:39:34 +00:00
Samuel Ortiz
e437435158 bootimg: Let mkdosfs choose between fat12 and fat16 2008-11-10 19:26:19 +01:00
Samuel Ortiz
2685507637 initrdscripts: Fix the init scripts to support the no fb case. 2008-11-10 18:50:56 +01:00
Samuel Ortiz
cf96c4ce6c psplash: Bump SVN revision to support the no fb case. 2008-11-10 17:49:15 +01:00
Samuel Ortiz
31aee0a9f9 image.bbclass: Add routine for disabling x startup when needed 2008-11-10 17:21:10 +01:00
Samuel Ortiz
1782861e45 Add missing ";" to the ROOTFS_POSTPROCESS_COMMAND string 2008-11-10 17:19:26 +01:00
Richard Purdie
69fb780e14 meta-toolchain: Make sure the opkg config files are clean to start with when rebuilding them 2008-11-10 15:34:25 +00:00
Richard Purdie
b618bcfeb9 gstreamer: Fix a problem with configure if check has already been built 2008-11-10 13:26:26 +00:00
Joshua Lock
5751ea748f Poppler moved from meta-extras to meta. 2008-11-07 16:59:21 +00:00
Joshua Lock
2761f49ae4 New recipe for Smart 1.1. 2008-11-07 16:59:21 +00:00
Richard Purdie
6f92ab0d55 bitbake-dev: Ignore SkipPackage and FunFailed errors when looking for python task failures 2008-11-07 15:05:25 +00:00
Richard Purdie
4f5bb4683d bitbake-dev: Fix python function task execution failure handling 2008-11-07 14:45:55 +00:00
Richard Purdie
6d7f3cbcb7 qmake2-cross: Fix the driectory the qmake binaries are installed into 2008-11-07 14:28:15 +00:00
Richard Purdie
fc50fe5f2d bitbake-dev: Always include logs for now 2008-11-07 14:08:11 +00:00
Richard Purdie
826cd19f04 meta/classes/rootfs_*.bbclass: Fix unset variable 2008-11-07 13:59:12 +00:00
Richard Purdie
ab3b4576ce bitbake-dev: Fix knotty fatal message handling and ignore configparsed events 2008-11-07 13:59:12 +00:00
Joshua Lock
5ef71a4121 distutils.bbclass: Remove .pyo object files before packaging. 2008-11-07 13:42:36 +00:00
Richard Purdie
5be6bb070b bitbake-dev: Handle fatal events correctly 2008-11-07 13:31:05 +00:00
Samuel Ortiz
f3a6210e93 mtpfs: removing package 2008-11-07 13:35:24 +01:00
Richard Purdie
94fed7b711 conf/distro/include/poky-fixed-revisions.inc: Set revision for gnet 2008-11-07 12:01:29 +00:00
Richard Purdie
88cc024814 gnet: Use SRCREV, not SRCDATE and use http protocol for svn 2008-11-07 11:53:04 +00:00
Richard Purdie
35994a063d Merge branch 'master' of git@moblin-mdi.jf.intel.com:poky 2008-11-07 11:16:36 +00:00
Richard Purdie
f473d75c15 bluez: Upgrade to more recent 3.x versions and add bluez 4 from OE 2008-11-07 11:15:58 +00:00
Richard Purdie
5be917f9d1 libusb: Add versions required for recent bluez 2008-11-07 11:13:20 +00:00
Samuel Ortiz
1c05260e7d librds: Initial commit, version 0.0.1 2008-11-07 11:51:02 +01:00
Richard Purdie
e7e2009277 bitbake-dev: Fix exit code value handling 2008-11-07 09:42:16 +00:00
Samuel Ortiz
67aaacacf9 mtpfs: Initial commit
There is no official mtpfs release, nor SVN tags. Only trunk for now..
2008-11-07 01:32:22 +01:00
Samuel Ortiz
186d324db1 fuse: Initial commit, version 2.7.2 2008-11-06 19:13:01 +01:00
Samuel Ortiz
c79b332505 bluez-utils: Bump to 3.30 2008-11-06 19:12:06 +01:00
Richard Purdie
13bbd6ec03 gnet: Fix pkgconfig issue 2008-11-06 16:45:09 +00:00
Joshua Lock
fffba252d1 Merge branch 'ivi' 2008-11-06 16:27:32 +00:00
Joshua Lock
690562b4d8 libexif 0.6.16 from OE 2008-11-06 16:26:10 +00:00
Joshua Lock
47b05dab48 gnet from OE plus a configure fix for cross-compile environments. 2008-11-06 16:24:30 +00:00
Richard Purdie
436c5f4716 classes: Add mechanism to install packages into images only if they've been built 2008-11-06 16:23:32 +00:00
Richard Purdie
1e967ea93e scripts/poky-env-internal: Fix PATH 2008-11-06 15:21:36 +00:00
Joshua Lock
1e6f21407f monit 4.10.1 from OE 2008-11-06 15:00:06 +00:00
Richard Purdie
4a04f29527 .gitignore: Add extra entries 2008-11-06 14:40:30 +00:00
Richard Purdie
9715260c35 scripts/poky-env-internal: Automatically add in additional meta- repositories if found 2008-11-06 14:40:30 +00:00
Samuel Ortiz
9e8d22ae38 linux-moblin-2.6.27-rc6: Fix rc6 patch URL 2008-11-06 15:15:38 +01:00
Samuel Ortiz
faae7d38e6 bootimg: As image size grows, we want to switch to FAT16 2008-11-06 11:25:34 +01:00
Richard Purdie
0e5bc8758b moblin.conf: Use package_ipk as well as rpm, just for now 2008-11-06 09:24:48 +00:00
Joshua Lock
fa7a4cd807 Merge branch 'master' of ssh://git@git.moblin.org/poky 2008-11-06 00:33:24 +00:00
Joshua Lock
3ae3b2ba8a moblin-image-sdk: Should use NETBOOK_IMAGE_FEATURES not SATO_IMAGE_FEATURES. 2008-11-06 00:32:09 +00:00
Richard Purdie
b6b37f065c bitbake: Improve error message for missing class files 2008-11-06 00:12:31 +00:00
Richard Purdie
4ba6a52d7e qemu.inc: Use ext3 images for qemu, not ext2 ones 2008-11-05 23:15:13 +00:00
Richard Purdie
4d24b9d044 Add xeyes (from OE) 2008-11-05 22:37:38 +00:00
Richard Purdie
dd36b620fe bitbake.conf: Fix CHECK_COMMAND_wget quoting 2008-11-05 19:34:12 +00:00
Joshua Lock
bbac24bb2e task-base: Removed RDEPEND on task-poky-boot
It is now neccesarry for each distro to specify a POKY_EXTRA_RDEPENDS for a relevant boot task. This has been added in poky and moblin distros.
2008-11-05 16:56:08 +00:00
Samuel Ortiz
7e6ddbd883 linux-moblin: Tweak defconfig to improve kernel boot time
We are now having uhci and ohci as modules. We also got rid of useless
BLK_DEV config options.
With this new .config, the kernel boots in just less than 1 second.
2008-11-05 17:34:59 +01:00
Joshua Lock
f667a067ba Merge branch 'master' of ssh://git@git.moblin.org/poky 2008-11-05 14:46:10 +00:00
Joshua Lock
47e825a2c4 moblin-image-netbook-install: deleted.
moblin-image-netbook-install no longer needed, install functionality is provided by moblin-image-netbook-live.
2008-11-05 14:45:20 +00:00
Samuel Ortiz
6e7061263e initrdscripts: Add the simplest init script
When booting from initramfs, one must provide a /init link.
This one is the simplest one, just forking a shell, allowing
for the smallest initramfs.
2008-11-05 13:53:09 +01:00
Samuel Ortiz
97cbee6239 task-moblin-tools: moving sreadahead to task-moblin-boot 2008-11-05 12:22:20 +01:00
Richard Purdie
610b53fcb9 bitbake: Optionally take username/password options from url parameters 2008-11-05 10:31:40 +00:00
Richard Purdie
33b4017b70 packagekit: Fix after polkit was renamed 2008-11-05 00:16:57 +00:00
Richard Purdie
9ffb17080f xf86-input-mouse: Fix header files included 2008-11-05 00:05:09 +00:00
Richard Purdie
d9dfbf4e12 xserver-x86: Fix m4 autoconf macro 2008-11-05 00:03:56 +00:00
Richard Purdie
f8e9dcb5ae libgtkstylus: rpm can't cope with these expressions so avoid them for now 2008-11-04 22:18:29 +00:00
Joshua Lock
76bf51b126 packagekit: fix typo in folder name 2008-11-04 22:11:58 +00:00
Joshua Lock
d422ac1c25 Merge branch 'master' of ssh://git@git.moblin.org/poky 2008-11-04 22:11:23 +00:00
Joshua Lock
3937aefbef polkit: Rename polkit to policykit 2008-11-04 22:11:00 +00:00
Richard Purdie
51db60903d packagekit: Disable gstreamer plugin (gstreamer is not in DEPENDS) 2008-11-04 22:06:39 +00:00
Richard Purdie
4b0098b261 packagekit: Fix DEPENDS and configure 2008-11-04 21:46:02 +00:00
Richard Purdie
76e51a83e1 polkit: Fix DEPENDS 2008-11-04 21:29:31 +00:00
Richard Purdie
94b399858d drm: Fix libpthreads-stubs name in DEPENDS 2008-11-04 21:26:52 +00:00
Richard Purdie
510d5d7f4d bitbake wget.py: Fix problem with empty proxy variables 2008-11-04 21:11:58 +00:00
Richard Purdie
973bba1ede pam: Fix use of binary built with the native compiler 2008-11-04 21:11:27 +00:00
Richard Purdie
559cbf23f9 sreadahead: Mark as x86 only 2008-11-04 20:58:27 +00:00
Richard Purdie
9586e75e26 scripts/poky-autobuild-moblin: Update the proxy config and add rpm packages to the build list 2008-11-04 19:35:06 +00:00
Richard Purdie
f869e706ab syslinux-installer-native: Add missing DEPENDS 2008-11-04 19:25:10 +00:00
Richard Purdie
9d0ed30faf libdrm: Add missing DEPENDS on pthread-stubs 2008-11-04 19:21:12 +00:00
Richard Purdie
7fdff0f3cd base.bbclass: Improve the git proxy syntax to match the http/ftp syntax too 2008-11-04 19:13:25 +00:00
Richard Purdie
c2ef2d4f5a bitbake: Improve proxy handling got wget so urls can be excluded from the proxy 2008-11-04 19:13:03 +00:00
Richard Purdie
2bd4344e9a .gitignore: Add build/conf/local.conf 2008-11-04 19:10:58 +00:00
Richard Purdie
e0dab8bda5 packaged-staging.bbclass: Ignore errors resulting from parallel threads clashing 2008-11-04 17:34:45 +00:00
Richard Purdie
dc0f956433 e2fsprogs: Bump version after the last commit to fix uuid librbary problems 2008-11-04 16:01:27 +00:00
Richard Purdie
e38ae8f00a uuid: Drop in favour of the e2fsprogs version 2008-11-04 16:00:15 +00:00
Richard Purdie
4a3a35f81c autotools.bbclass: Handle /lib as well as /usr/lib in autotools_stage_all 2008-11-04 15:40:56 +00:00
Joshua Lock
74e5d027b9 Merge branch 'master' of ssh://git@git.moblin.org/poky 2008-11-04 15:38:21 +00:00
Joshua Lock
fd4b88a88e poky-floating-revisions: Comment out SRCDATE_oprofile.
Remove CVS of Oprofile from poky-bleeding for now.
2008-11-04 15:37:15 +00:00
Richard Purdie
8dd388cac4 parted: Disable use of check, even its its detected since its not in DEPENDS (and isn't needed) 2008-11-04 15:25:27 +00:00
Richard Purdie
777f269259 scripts/poky-autobuild-moblin: Add GIT PROXY variables 2008-11-04 13:51:23 +00:00
Richard Purdie
4c626238e7 base.bbclass: Set GIT_CONFIG correctly 2008-11-04 13:32:35 +00:00
Richard Purdie
66481d67f4 base.bbclass: Fix whitepsace damage 2008-11-04 11:49:06 +00:00
Richard Purdie
2a0c668a9b base.bbclass: Create ~/.gitconfig if it doesn't already exist 2008-11-04 11:48:12 +00:00
Richard Purdie
51be1fad9c linux-simtec: Update simtec1 -> simtec3 and add COMPATIBLE_MACHINE 2008-11-04 11:43:33 +00:00
Richard Purdie
f27cbd1a4e Add depicture machine with patches from SimTec 2008-11-04 11:24:25 +00:00
Samuel Ortiz
1b7873fae9 task-moblin-tools: Add sreadahead to the package list 2008-11-03 19:18:40 +01:00
Samuel Ortiz
bebb376e62 sreadahead: Initial commit
Super readahead is an improved readahead tool.
2008-11-03 19:14:00 +01:00
Samuel Ortiz
7b5d03d08e linux-moblin: Add super readahead ext3 specific patch
We need this patch for sreadahead to generate the to be read file list.
2008-11-03 19:11:28 +01:00
Richard Purdie
b249501844 scripts/poky-autobuild-moblin: Set GIT_PROXY_COMMAND 2008-11-03 17:20:21 +00:00
Richard Purdie
4f083a4ada packaged-staging.bbclass: Make sure target directory exists, fixing build failures 2008-11-03 17:03:27 +00:00
Richard Purdie
10fd960412 sdk.bbclass: Fix PKG_CONFIG_DIR value 2008-11-03 17:00:29 +00:00
Richard Purdie
9ebe8de923 .gitignore: Fix directory reference issue 2008-11-03 15:17:17 +00:00
Joshua Lock
582b71a90c moblin-fixed-revisions: Added and preferred over poky-fixed-revisions
Add moblin-fixed-revisions to meta-moblin for where Moblin requires fixed revisions different from those in the Poky distro.
2008-11-03 10:46:09 +00:00
Rob Bradford
76a7b78b40 roots_rpm.bbclass: Use opkg-native to get update-alternatives 2008-10-31 16:24:31 +00:00
Joshua Lock
25e5b72195 libxml2: Fix a compilation error when using -D_FORTIFY_SOURCE=2 thanks Chenglan Huang 2008-10-31 15:25:24 +00:00
Anas Nashif
17bb6733b9 package pam correctly 2008-10-31 11:00:50 -04:00
Richard Purdie
efbd5e58d4 base.bbclass: Fix infinite loop 2008-10-31 14:47:22 +00:00
Richard Purdie
af861caace base.bbclass: Fix typo 2008-10-31 14:40:49 +00:00
Richard Purdie
921cbb2626 base.bbclass: Fix the git config file writing code 2008-10-31 14:38:11 +00:00
Richard Purdie
b1046ef743 bitbake: Don't export the GIT_PROXY_COMMAND in the fetcher code since it means selective proxying isn't possible 2008-10-31 14:37:24 +00:00
Rob Bradford
0e9f111c6c wpa_supplicant: Use volatiles for managing /var/run/wpa_supplicant 2008-10-31 13:35:29 +00:00
Rob Bradford
03d16ab59d networkmanager: Remove conflicting directories (managed by volatiles) 2008-10-31 13:35:29 +00:00
Rob Bradford
1f833df9f4 fontconfig: Use volatiles for managing /var/cache/fontconfig 2008-10-31 13:35:29 +00:00
Richard Purdie
57fbc64c59 base.bbclass: Fix getVar call 2008-10-31 13:25:04 +00:00
Richard Purdie
175b45b6ec base.bbclass: Add missing import os 2008-10-31 13:19:10 +00:00
Richard Purdie
d487daccd6 base.bbclass: Add missing import bb 2008-10-31 13:07:04 +00:00
Anas Nashif
e265dbee9e added packages: PolicyKit and PackageKit 2008-10-31 05:38:53 -07:00
Anas Nashif
7705e1e77d New package: pam 2008-10-31 05:34:20 -07:00
Samuel Ortiz
d410789397 linux-moblin: 2.6.27-rc6 is not the default 2008-10-31 13:13:00 +01:00
Richard Purdie
fa88660ee6 scripts/poky-autobuild-moblin: Add extra variables to the whitelist 2008-10-30 23:04:21 +00:00
Robert Bragg
35b85e9398 [task-moblin] bumps PR, so that machine mods to XSERVER get noticed 2008-10-30 18:30:11 +00:00
Robert Bragg
147f91a320 This removes xtrans 1.2.1 since we now have xtrans 1.2.2 2008-10-30 18:26:07 +00:00
Robert Bragg
47de743346 Deletes libdrm_2.3.1 since we now have libdrm_2.4.0 2008-10-30 18:26:07 +00:00
Robert Bragg
bcb38a847b Bumps revisions for various X packages
Updates for xserver-xf86-dri-lite, xtrans, mesa-dri, libdrm, xf86-input-mouse,
xf86-input-keyboard, xf86-input-synaptics, xf86-video-intel,
xf86-video-intel-dri2
2008-10-30 18:26:07 +00:00
Robert Bragg
156a992737 [xserver-xf86-dri2-lite_git] Removes the PE=1 2008-10-30 18:26:07 +00:00
Robert Bragg
4b41085132 Adds xf86-video-intel_git.bb
This also moves the patchs in xf86-video-intel-dri2/ -> xf86-video-intel/
2008-10-30 18:26:06 +00:00
Robert Bragg
b74cb8ace0 [xserver-xf86-dri-lite_git.bb] bumps the PR 2008-10-30 18:26:06 +00:00
Robert Bragg
5321ad4b13 Adds a new xserver-xf86-dri2-lite_git.bb package for building the X server
with dri2 enabled
2008-10-30 18:26:06 +00:00
Robert Bragg
9807c58b5a [xserver-xf86-dri-lite] Bumps the PV and explicitly disables dri2 2008-10-30 18:26:06 +00:00
Robert Bragg
5924dde351 [xf86-video-intel-dri2] Updates 004_reduce_driver_boottime.patch 2008-10-30 18:26:05 +00:00
Robert Bragg
c36db8d9b4 [xf86-video-intel-dri2] comments out reduce_driver_boottime.patch
This patch doesn't apply a.t.m to the latest driver (Will come back and rebase
this later)
2008-10-30 18:26:05 +00:00
Robert Bragg
43015b416d [poky-fixed-revisions.inc] Updates Git versions for various X packages
Updates for xserver-xf86-dri-lite, xserver-xf86-dri2-lite, dri2proto,
xf86-video-intel, xf86-video-intel-dri2, xf86-input-keyboard,
xf86-input-mouse, xf86-input-synaptics, mesa-dri, libdrm
2008-10-30 18:25:54 +00:00
Robert Bragg
d5b1c1dd85 [bitbake.conf] Removes the MACHINE_DRI_MODULES var since it's no longer used by mesa 2008-10-30 18:25:06 +00:00
Robert Bragg
8231fc119b [netbook.conf] removes MACHINE_DRI_MODULES, use xf86-video-intel (not dri2) default
MACHINE_DRI_MODULES is no longer used in the mesa recipe and the dri2 driver
depends on dri2.h which depends on the xserver being built for dri2.
Since the mesa package now splits up the dri drivers into seperate packages
this adds mesa-dri-driver-i915 to XSERVER
2008-10-30 18:25:06 +00:00
Robert Bragg
5924520f14 [mesa dri] Adds splitting of dri drivers into seperate packages
This removes the earlier use of the MACHINE_DRI_MODULES variable to configure
which drivers were built
2008-10-30 18:25:06 +00:00
Robert Bragg
c50e010193 [moblin.conf] Adds quotes for PREFERRED_PROVIDER_xf86-video-intel ?= "xf86-video-intel" 2008-10-30 18:25:05 +00:00
Robert Bragg
057abf00db Makes PREFERRED_PROVIDERs in machine/netbook.conf overrideable via ?= operator 2008-10-30 18:25:05 +00:00
Joshua Lock
d514eeeaec base.bbclass: Additional git proxy support.
Add to the git proxy support so that the proxy configuration can be propogated to the git config (etc/gitconfig in staging).
Add support for ignored hosts in the git proxy.

Examples in site.conf.sample
2008-10-30 17:52:32 +00:00
Rob Bradford
4b93bb3175 yum: Make the volatile configuration file available 2008-10-30 17:27:56 +00:00
Rob Bradford
b32d59fde6 e2fsprogs-lib: Remove unnecessary package (e2fsprogs can take it's place) 2008-10-30 14:22:20 +00:00
Rob Bradford
3ad92d80f3 parted: Depend on e2fsprogs rather than e2fsprogs-libs 2008-10-30 14:22:20 +00:00
Rob Bradford
0dc1dc4fbb poky-env-internal: Add quoting to support zsh.
Patch from Carl Simonson <simonsonc@gmail.com>.
2008-10-30 11:14:24 +00:00
Rob Bradford
524323b865 poky-fixed-revisions: Set a SRCREV on xf86-video-intel-dri2 2008-10-30 10:35:52 +00:00
Rob Bradford
8cafc7c2cb sysvinit: Manage /sbin/poweroff with update-alternatives 2008-10-29 18:22:42 +00:00
Rob Bradford
6c298cebbd rpm: Don't create a /var/tmp directory (clashes with basefiles) 2008-10-29 18:22:42 +00:00
Rob Braford
b906b0cd60 rootfs_rpm.bbclass: Disable non Poky repositories.
Only use repositories that begin "poky-feed". This prevents contamination with
system repositories.

It may be better to patch yum not to ever look in the system repository
locations (i.e. /etc/yum.repos.d).
2008-10-29 18:22:42 +00:00
Rob Bradford
d02483f74f yum: Use volatiles for the yum cache directory 2008-10-29 18:22:42 +00:00
Joshua Lock
db5f7b918b packages: check, uuid and xerces.
Add recipes for: updated check, 0.9.5
uuid 1.6.2
xerces-c 2.8.0
2008-10-29 16:34:47 +00:00
Rob Bradford
410141a907 createrepo-native: Fix SRC_URI. 2008-10-29 15:16:25 +00:00
Richard Purdie
e61ea24100 Merge branch 'pli1/X11-rework' of git@moblin-mdi.jf.intel.com:poky-staging into master-dev 2008-10-29 14:55:26 +00:00
Samuel Ortiz
3e7b691f60 task-moblin-tools: bumping PR 2008-10-29 15:34:36 +01:00
Peng Li
f21745fa92 xf86-video-intel-dri2: delete 007_disable_tiling_and_enable_UXA.patch
remove this patch because driver options are set in xorg.conf
2008-10-29 22:28:47 +08:00
Peng Li
37ea0eea91 xf86-video-intel-dri2: rebase X fastboot patches
rebase X fastboot patches for latest driver
2008-10-29 22:28:00 +08:00
Samuel Ortiz
6f65d5bbbe task-moblin-tools: Removed exmap and sreadahead 2008-10-29 15:27:27 +01:00
Peng Li
e76840f41a netbook.conf : change xf86-video-intel to xf86-video-intel-dri2
This change will have package "xf86-video-intel-dri2" built into
netbook image
2008-10-29 22:27:12 +08:00
Peng Li
4ef8d5cbe6 xf86-video-intel-dri2: don't apply patch "007_disable_tiling_and_enable_UXA"
These driver options are specified in xorg.conf.
Don't need to apply this patch any more.
2008-10-29 22:26:12 +08:00
Peng Li
0e2ba7a5a9 xf86-video-intel-dri2: update PV
PV should be "2.4.97+git${SRCREV}" according to upstream tag
poky.conf: small typo fix
2008-10-29 22:24:48 +08:00
Peng Li
8fea3faa89 xserver-xf86-dri-lite : apply xserver-boottime.patch
This patch is used to measure xserver boot time
2008-10-29 22:17:00 +08:00
Peng Li
e16d2b9ab2 xtrans: add xtrans_1.2.2.bb
This is a build dependency of xserver-xf86-dri-lite_git
2008-10-29 22:08:15 +08:00
Joshua Lock
d7f6212b03 meta-moblin/packages/tasks/task-moblin-tools.bb: fix typo in filename. 2008-10-29 11:15:51 +00:00
Joshua Lock
98e6b819e4 Tidy up images and tasks in meta and meta-moblin.
meta now only contains images and tasks relating to core Poky and the Sato environment.
meta-moblin contains images and tasks for netbooks and the moblin environment.

Remove any duplicated tasks and images and rename images and tasks in meta-moblin.
2008-10-29 10:49:16 +00:00
Richard Purdie
d0e6c71695 local.conf.sample: Append to BBFILES instead of overwriting 2008-10-29 10:41:28 +00:00
Richard Purdie
1d6b543dac gtk+: Add moblin override 2008-10-29 05:02:24 +00:00
Richard Purdie
e92cc8f576 Add poky-image-sdk-live to meta/ 2008-10-29 02:22:02 +00:00
Samuel Ortiz
7994045755 kernel.bbclass: We dont want to tar lib/ if we dont have any modules 2008-10-29 03:00:56 +01:00
Samuel Ortiz
fd38c1b084 meta-moblin: Add moblin-image-minimal image 2008-10-29 03:00:53 +01:00
Richard Purdie
8d50257cdf conf/distro/include/world-broken.inc: Exclude clutter-helix from world builds 2008-10-28 22:27:16 +00:00
Richard Purdie
b296ae263c bitbake: Add tryaltconfigs option to disable the alternative configuration attempts and make the 'continue' more aggresive 2008-10-28 22:15:06 +00:00
Richard Purdie
db140d9ce0 scripts/poky-env-internal: Add POKYMODE to BB_ENV_WHITELIST 2008-10-28 22:10:45 +00:00
Richard Purdie
2ff5dac290 conf/distro/include/world-broken.inc: Add abiword and abiword-embedded for now 2008-10-28 20:28:52 +00:00
Rob Bradford
ea868f9c9c package_rpm.bbclass: Don't use the system wide RPM macros.
This fixes the build on Fedora 10 where the RPM system macros obliterate the
value of BuildRoot that is set in the spec file.
2008-10-28 18:52:19 +00:00
Rob Bradford
1045eaa369 matchbox-panel-applet-2: Update SRCREV to fix breakage on non-APM platforms 2008-10-28 16:42:02 +00:00
Richard Purdie
47c42b6c30 conf/distro: Create a moblin distro config file based on the Poky one
Also refactor various data into common include files.
2008-10-28 16:34:35 +00:00
Rob Bradford
3a73995e31 bitbake-dev: Renamed to match the UI name
The UI starter now dynamically searches for the UI module based on the
parameter given to -u. bitbake advertises the dependency explorer as "depexp"
therefore this module needs renaming.
2008-10-28 15:25:13 +00:00
Richard Purdie
774485d133 image.bbclass: Add INHIBIT_DEFAULT_DEPS 2008-10-28 15:14:00 +00:00
Rob Bradford
526d996a02 bitbake-dev: Use the default task if 'None' asked for
Since the default task is not known/available until the configuration files
are parsed we may return None when the UI requests getCmdLine. We can enforce
the use of the default by querying it again after the configuration is
parsed/cache updated.
2008-10-28 12:06:05 +00:00
Rob Bradford
0b6fdfb14d bitbake-dev: Refactor configuration file parsing
Separate the parsing of the configuration files / recipes into a separate
function to the parsing of the command line. This parsing of the configuration
files now happens when updateCache() is called.

Some functionality has been moved from parseConfiguration() to __init__.
2008-10-28 11:40:03 +00:00
Rob Bradford
0b9da42bb5 bitbake-dev: Save the cooker log into the working directory.
This is necessary since with later refactoring the TMPDIR variable will not be
available at this point in time.
2008-10-28 11:40:03 +00:00
Richard Purdie
23f08fdde3 scripts/poky-env-internal: Unset BDIR after use 2008-10-28 10:01:03 +00:00
Richard Purdie
4041c25dea helix-libs, ribosome: Set COMPATIBLE_HOST since x86 only 2008-10-28 10:00:28 +00:00
Peng Li
262e18f3ae drm : add libdrm_2.4.0.bb
This is a GEM dependency. DRI2 will need GEM support
2008-10-28 11:20:17 +08:00
Samuel Ortiz
f19e4350c0 bootimg: copy rootfs to ISO image
We are only copying the initrd right now.
2008-10-27 13:44:20 +01:00
Samuel Ortiz
dae95a72e0 tasks: apps-x11-pimlico renaming typo 2008-10-27 13:34:47 +01:00
Samuel Ortiz
0472967f24 tasks: fix moblin-tools task name typo 2008-10-27 12:34:26 +01:00
Rob Bradford
f5c494bba5 bitbake-dev: Remove use of self.configuration.cmd as state from shell
The shell updated the self.configuration.cmd variable since commans relied on
this implicit state. Since those commands now have an explicit task parameter
such state manipulation is no longer necessary.
2008-10-27 10:19:55 +00:00
Rob Bradford
790ed68356 bitbake-dev: Remove implicit task from generateDepTree/generateDotGraphFiles
Remove the implicit (from configuration.cmd) command/task for these events and
instead use a parameter so that the task is given explicitly.
2008-10-27 10:19:54 +00:00
Rob Bradford
22a326547d bitbake-dev: Make the "buildFile" command use the task parameter
The "buildFile" command has a task parameter use it place of
self.configuration.cmd when adding to the runqueue.
2008-10-27 10:19:54 +00:00
Rob Bradford
c790192322 bitbake-dev: Make the task a parameter of the "tryBuild" command
And switch the runqueue to use this rather than keeping it in the
self.configuration.cmd variable
2008-10-27 10:19:54 +00:00
Rob Bradford
2684070ac6 bitbake-dev: Include target/command (from -c) in "buildTargets" command
This allows a UI to read / control which task for the given targets is used.
This makes it more consistent with the "buildFile" command.
2008-10-27 10:19:54 +00:00
Samuel Ortiz
acdff2b154 images: put poky-image-live back to meta/ 2008-10-24 18:11:57 +02:00
Samuel Ortiz
d5417e5a42 meta-moblin: rename images and tasks from poky-* to moblin-* 2008-10-24 17:57:33 +02:00
Richard Purdie
0f9a47af1e bitbake: Fix the wget fetcher so parameter portions of uris are ignored 2008-10-24 14:57:02 +01:00
Rob Bradford
08197d62ef Merge branch 'master' of ssh://git@git.moblin.org/poky 2008-10-24 14:46:07 +01:00
Rob Bradford
fbfc669583 bitbake-dev: add a setVariable command
This is synonymous with the getVariable command and allows you to set values
in the data dictionary.
2008-10-24 14:44:30 +01:00
Richard Purdie
e84e951822 meta-molbin/images: Add poky-image-sdk-live.bb 2008-10-24 09:49:18 +01:00
Richard Purdie
07b4c0676b spectrum-fw: Use the standard fetcher process 2008-10-23 21:10:28 +01:00
Richard Purdie
b8ff2b6cc3 base.bbclass/bitbake.conf: Fix some string quoting to handle more unusual URLs 2008-10-23 21:08:42 +01:00
Richard Purdie
e4aa77e88e scripts/build: Update the git proxy setup instructions 2008-10-23 15:12:41 +01:00
Rob Bradford
87fe772b8a bitbake-dev: rename readVariable to getVariable
Changing the name of this command makes it more consistent with other command
names.
2008-10-23 14:58:36 +01:00
Ross Burton
d3bf7895aa poky-image-openmoko.bb: remove matchbox-applet-startup-monitor
We don't ship matchbox-applet-startup-monitor, so remove it.
2008-10-23 14:40:39 +01:00
Ross Burton
45f4be4a24 poky-image-openmoko.bb: remove unused PR 2008-10-23 14:40:19 +01:00
Rob Bradford
c26d6cfda0 bitbake-dev: Change terminology online/offline to sync/async
Change the terminology from online/offline to sync/async when referring to
commands that return a result immediately versus those that produce changes
that are emitted as events over time.
2008-10-23 14:28:11 +01:00
Richard Purdie
f0b1d561c7 bitbake: Preserve http_proxy and ftp_proxy in fetcher command execution 2008-10-23 13:34:24 +01:00
Richard Purdie
0cc119f05f opkg: Really fix the prototype problem (and an invalid call) 2008-10-23 12:05:39 +01:00
Richard Purdie
842606bc39 opkg: Fix incomplete function prototype 2008-10-23 09:43:12 +01:00
Richard Purdie
4815f7bc53 bitbake: Remove bogus test code 2008-10-22 22:26:24 +01:00
Richard Purdie
ede20a3245 bitbake: Improve proxy variable handling in fetchers 2008-10-22 22:24:03 +01:00
Richard Purdie
4329a29db5 scripts/poky-env-internal: Add proxy variables to the enviornment whitelist (and OEROOT) 2008-10-22 21:56:30 +01:00
Richard Purdie
2236c01164 scripts: Fix variable quoting 2008-10-22 20:31:56 +01:00
Richard Purdie
ebb74a63e1 scripts: Add moblin autobuilder support scripts 2008-10-22 20:27:16 +01:00
Rusty Lynch
be2ad3b90c * Fixing the helix-player.pc to include a -lstdc++
* Adding clutter-helix recipe
2008-10-22 09:57:13 -07:00
Samuel Ortiz
d4f444a667 Add meta-moblin-internal to gitignore 2008-10-22 15:19:36 +02:00
Rusty Lynch
ca7fa46814 * Adding initial ribosome (helix build system) and helix-libs recipes 2008-10-22 04:21:53 -07:00
Rob Bradford
06db259785 bitbake-dev: add goggle - an experimental GTK UI. 2008-10-22 11:52:18 +01:00
Rob Bradford
f51afdc7b6 bitbake-dev: Include the worker's PID in events
When the runqueue forks off we save the pid inside the event module for that
thread. When we next fire an event then that PID gets included in the events.
2008-10-21 15:51:32 +01:00
Samuel Ortiz
e1155bcd79 linux-moblin: We dont need the defconfig-eee901 files anymore 2008-10-21 16:45:50 +02:00
Samuel Ortiz
e169b23e66 linux-moblin: Add 2.6.27 moblin kernel
This will be the default moblin kernel.
We also moved the 2.6.27-rc* kernels to meta-moblin.
2008-10-21 16:26:53 +02:00
Samuel Ortiz
e5c53ce035 netbook: changed platform name from eee901 to netbook
We want to have a more generic platform definition.
The netbook machine one currently supports the eee901 and the aspire one.
We also moved the machine and netbook image definitions to meta-moblin.
2008-10-21 16:01:02 +02:00
Rob Bradford
3e045793c7 bitbake-dev: Dynamically load the UI module.
Dynamically load the UI from a module based on the UI name given. We still
however maintain a fixed set in here with the set of suggested UIs.
2008-10-21 12:39:23 +01:00
Robert Bradford
7ddbeb2931 packaged-staging.bbclass: Avoid removing the staging.lock lock file.
The pstage_manualclean function can be called on a directory containing an
actively held lock on staging. Removing the lock file whilst the lock is held
results in a failure when the lock is released.

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5553 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-20 14:58:47 +00:00
Richard Purdie
c9fe18a6cb syslinux: Add COMPATIBLE_HOST
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5552 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-20 14:37:36 +00:00
Richard Purdie
c53608b220 bitbake utils.py: Merge prunedir symlink fix from bitbake upstream
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5551 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-20 14:19:36 +00:00
Richard Purdie
8bb2cd7963 libacpi: Add COMPATIBLE_HOST
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5550 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-20 13:50:59 +00:00
Richard Purdie
5e9788247a poky.conf: Fix world excludes typo
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5549 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-20 13:19:42 +00:00
Richard Purdie
7a0ee99499 libsyncml: Remove insane piece of strange assembler
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5548 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-20 13:18:49 +00:00
Richard Purdie
78fd54f371 poky.conf: Exclude linsync from world builds
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5547 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-20 12:58:24 +00:00
Richard Purdie
a7dea06db0 poky.conf: Update libopensync world exclude list
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5546 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-20 12:23:27 +00:00
Richard Purdie
83dd9c7a93 libopensync-plugin: Upgrade file and vformat to 0.37
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5545 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-20 12:22:58 +00:00
Richard Purdie
f5eeae1345 msynctool: Upgrade 0.36 -> 0.37
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5544 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-20 12:16:41 +00:00
Richard Purdie
14e3c93c80 libopensync-plugin-evolution2: Fix to work with libopensync 0.37
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5543 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-20 12:10:53 +00:00
Richard Purdie
22170fe711 syslinux: Various cleanups and add back some missing staging pieces
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5542 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-20 11:58:05 +00:00
Robert Bradford
f105cdc88a bitbake-dev: Remove the Pkg{Started, Failed, Succeeded} events and their handling in the UI
These events are superfluous now that BB operates on a task level granularity.

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5541 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-20 11:35:49 +00:00
Robert Bradford
a8644924ab base.bbclass: Output notes only on BB <= 1.8.x
With BB > 1.9 the UI can output the details of an event as it chooses. They do
not need to be converted into notes. Without this patch spurious messages are
generated on BB 1.9.

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5540 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-20 11:35:37 +00:00
Andrzej Zaborowski
3f93ed6bce syslinux-native: Try to make syslinux cross-compile friendly.
We only had one package for building both the bootloader and the installer,
i.e. target and host code.  It used always the host compiler.  Split the
package into syslinux and syslinux-installer-native, require both for a
cd bootable image.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5539 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-20 00:22:07 +00:00
Robert Bragg
4cb659823b Enables support for root over NFS in the linux-moblin defconfig
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5538 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 15:32:01 +00:00
Richard Purdie
85e2dcb420 Add libopesync 0.37
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5537 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 11:32:30 +00:00
Richard Purdie
0d25b9fe0b libxslt: Fix pkgconfig patch for exslt
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5536 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 11:30:56 +00:00
Samuel Ortiz
e1720d80de bootimg: Add symbolic links to iso and hddimg
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5535 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 11:04:51 +00:00
Richard Purdie
7a4b36a7d1 bitbake: Add some sanity checks to the lockfile functions
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5534 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 11:04:26 +00:00
Richard Purdie
8dd58f515c meta-toolchain: Don't inherit sdk
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5533 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 10:44:17 +00:00
Richard Purdie
e0c1bd1bd1 sdk.bbclass: Rewrite PACKAGE_ARCHS
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5532 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 10:43:38 +00:00
Richard Purdie
f8385030bb qemu-sdk: Pass the disable-vnc-tls option since we don't have gnutls-sdk
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5531 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 09:52:04 +00:00
Robert Bradford
d636d1b1ef bitbake-dev: Don't fallback if the UI fails to start; give an error message on UI exception
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5530 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 09:47:08 +00:00
Robert Bradford
bd63867cbe bitbake-dev: Move the ncurses TTY check into the UI plugin itself.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5529 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 09:46:59 +00:00
Robert Bradford
39ad2b3120 Update the ignore file so that it also includes VIM swap files
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5528 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 09:46:49 +00:00
Robert Bradford
696d4f01d2 bitbake: Refactor the environment variable handling
Refactor the environment variable handling so that it more closes matches the
changes that have been made in bitbake-dev.

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5527 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 09:46:35 +00:00
Robert Bradford
9294b95174 bitbake-dev: Refactor the environment variable handling.
Do not clear the environment when saving the environment to the data store.
Instead clear this once the cooker has forked. This ensures that the UI
operates in a filtered (but not empty) environment.

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5526 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 09:46:23 +00:00
Robert Bradford
603ae240ff Add .gitignore
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5525 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 09:46:13 +00:00
Richard Purdie
8c32e370ef libx11: Clean up all the git recipes into a common include file
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5524 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 09:33:46 +00:00
Richard Purdie
da303793d0 libx11_git: Cleanup duplicate metadata
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5523 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 09:19:37 +00:00
Richard Purdie
f4b04c9b26 poky-image-minimal-live: Set LABELS to fix image generation
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5522 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 08:42:43 +00:00
Richard Purdie
9a38dbddc0 syslinux.bbclass: Clean up boot menu title
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5521 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-17 08:39:34 +00:00
Richard Purdie
1a5f96aa40 libx11-trim: Fix git version DEPENDS
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5520 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-16 09:54:15 +00:00
Richard Purdie
aadd0fd11d libx11-trim: Fix FILESPATH
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5519 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-15 11:46:19 +00:00
Richard Purdie
b4a42918c4 Add libx11-trim git
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5518 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-15 11:42:07 +00:00
Richard Purdie
14d3569441 u-boot: Set COMPATIBLE_MACHINE
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5517 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-15 11:37:18 +00:00
Richard Purdie
0024d1aaac x-load: Set COMPATIBLE_MACHINE
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5516 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-15 11:36:07 +00:00
Marcin Juszkiewicz
819e4897d8 libx11-sdk: added git version (based on libx11-diet)
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5515 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-15 11:11:13 +00:00
Marcin Juszkiewicz
d0d47cb3c9 libsyncml: updated to 0.4.7 which builds with libsoup 2.4
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5514 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-15 09:35:28 +00:00
Marcin Juszkiewicz
48e3baa437 libxtst: bumped PR to force rebuild with newer libxi
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5513 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-15 06:26:34 +00:00
Marcin Juszkiewicz
e58db30e4c libxtst: depend on libxi to get XInput.h
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5512 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-15 06:26:23 +00:00
Marcin Juszkiewicz
5f12963ee3 checksums.ini: added some entries
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5511 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 15:47:45 +00:00
Marcin Juszkiewicz
f79e8258e4 libx11: fixed PV in git versions
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5510 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 15:45:20 +00:00
Marcin Juszkiewicz
4afe85d774 preferred-xorg-versions.inc: updated xdpyinfo version
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5509 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 15:45:07 +00:00
Marcin Juszkiewicz
8d3672ca60 poky-fixed-revisions.inc: added some entries
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5508 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 15:44:50 +00:00
Robert Bragg
c772ed952b This documents that PE defaults to 0 not 1 as previously written
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5507 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 15:24:12 +00:00
Marcin Juszkiewicz
100f4af692 xexproto: renamed directory to make xextproto-* working
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5506 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 13:14:54 +00:00
Andrzej Zaborowski
3ccabe81ea libowl: delete only libowl.* instead of libowl* on clean-up.
Otherwise innocent libowl-av files get deleted from staging.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5505 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 13:04:39 +00:00
Marcin Juszkiewicz
7ec0191a40 xserver-kdrive: added patch for 1.3.0.0 to get it built with x11/git
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5504 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 12:55:42 +00:00
Marcin Juszkiewicz
7457fccbb0 xdpyinfo: updated to 1.0.3
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5503 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 12:09:21 +00:00
Marcin Juszkiewicz
df8421a8ee xextproto: added patch from upstream GIT to unbreak xdpyinfo (and others)
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5502 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 12:07:57 +00:00
Marcin Juszkiewicz
433f9d837b poky: use libx11-diet from GIT
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5501 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 11:53:25 +00:00
Marcin Juszkiewicz
8e98e1f211 libx11-diet: added GIT version
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5500 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 11:53:14 +00:00
Marcin Juszkiewicz
13a115a188 preferred-xorg-versions.inc: fix libxcb version
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5499 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 11:36:35 +00:00
Marcin Juszkiewicz
6e56c4f91a preferred-xorg-versions.inc: prefer GIT versions of x11 libraries
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5498 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 11:15:50 +00:00
Marcin Juszkiewicz
4bfd39fca7 poky-fixed-revisions.inc: added SRCREVs for x11 libraries
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5497 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 11:15:34 +00:00
Marcin Juszkiewicz
f57ecf39b1 xcb-proto-native: added to get libxcb buildable
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5496 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 11:15:23 +00:00
Marcin Juszkiewicz
f732fed5ab xcb-proto: added GIT version
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5495 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 11:15:13 +00:00
Marcin Juszkiewicz
8159255a73 libxcb: added GIT version
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5494 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 11:15:02 +00:00
Marcin Juszkiewicz
c8acd246ef libx11: added GIT version
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5493 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 11:14:49 +00:00
Marcin Juszkiewicz
780b1589c5 libxi: added GIT version
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5492 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 11:14:38 +00:00
Marcin Juszkiewicz
6e046c741a libxext: added GIT version
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5491 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 11:14:27 +00:00
Samuel Ortiz
b7180969ea e2fsprogs: Add ext3 headers to the exported list.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5490 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 10:47:18 +00:00
Robert Bragg
eacf14f204 Various X package updates to deal with XInput.h being removed in
the latest inputproto package.

Updates libx11, libxext, libxext-sdk, libxi, xcb-proto and libxcb
Note: There is a still a xcb build issue that needs investigating
with these updated packages.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5489 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 09:30:18 +00:00
Richard Purdie
cd2ce1906e Drop linux-omap-2.6.25
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5488 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 09:11:16 +00:00
Richard Purdie
44bc7918da linux-omap-2.6.24.7: Update defconfig to fix various issues
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5486 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-14 08:03:39 +00:00
Robert Bragg
9d70f04b1d Use ?= for setting IMAGE_FSTYPES in eee901.conf so it can be overriden in
a local.conf


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5485 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-13 15:29:21 +00:00
Robert Bragg
10650210e7 Adds support for GEM + DRI2
DRI2 is disabled by default though since running with metacity-clutter seems
to cause a lock up.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5484 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-13 15:23:14 +00:00
Marcin Juszkiewicz
4c7fc91940 avahi: create/remove 'avahi-autoipd' user (from OE)
Patch from Cyril Humbert <cyril.humbert@martec.fr>

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5483 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-13 13:02:35 +00:00
Marcin Juszkiewicz
5c7adfa4aa task-base: build Bluetooth/Wifi support only for distros which feature them
Patch by  Carl Simonson <simonsonc@gmail.com>

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5482 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-13 13:02:22 +00:00
Marcin Juszkiewicz
2e900b0d6e apmd: drop obsolete zaurus 2.4 kernels hack
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5481 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-13 13:02:10 +00:00
Richard Purdie
f0676a3366 automake: Fix patch
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5480 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-10 16:24:26 +00:00
Richard Purdie
b2396b6282 automake: 1.10 -> 1.10.1
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5479 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-10 12:09:49 +00:00
Richard Purdie
985681c0dd libtool_2.2.6: Fix SRC_URI
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5478 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-10 12:07:59 +00:00
Richard Purdie
457ae5ada5 Add overo
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5477 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-10 11:56:19 +00:00
Richard Purdie
fe795de8f5 package_ipk.bbclass: Simplify variable expansion
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5476 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-10 11:24:33 +00:00
Richard Purdie
e360961047 libtool: Upgrade to 2.2.6
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5475 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-10 11:20:30 +00:00
Richard Purdie
3860decab2 gcc: Improve the build containment failure error message to be more user friendly
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5474 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-09 23:04:13 +00:00
Richard Purdie
fc467314f8 image.bbclass: Make the kernel depmod dependent on the presence of a kernel - some images eg an initramfs don't have this
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5473 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-09 19:08:11 +00:00
Samuel Ortiz
1ef8ccb0f6 exmap-console: Bump PR for new moblin kernel
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5472 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-09 17:02:03 +00:00
Samuel Ortiz
a2d782bb22 rt2860: Bump PR for new moblin kernel
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5471 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-09 17:01:27 +00:00
Samuel Ortiz
d89d52d3ec linux-moblin: 2.6.27-rc6 kernel
That includes the fastboot patches. An eee boots in 10s with that 
kernel.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5470 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-09 17:00:45 +00:00
Richard Purdie
3d40acdf3e devicekit: Disable man page generation
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5469 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-09 11:48:29 +00:00
Marcin Juszkiewicz
2eadfa913f image.bbclass: generate modules.dep
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5468 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-09 09:36:00 +00:00
Richard Purdie
51268c1f15 rootfs_ipk.bbclass: Don't error if the file doesn't exist
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5467 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 22:20:14 +00:00
Richard Purdie
7daedbf051 package_ipk.bbclass: Fix opkg config file generation
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5466 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 19:16:08 +00:00
Richard Purdie
fb439d9bc0 package_ipk/rootfs_ipk.bbclass: Update image from feed handling
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5465 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 16:49:57 +00:00
Samuel Ortiz
3dc1ade034 eee-acpi: power button support
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5464 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 16:06:09 +00:00
Ross Burton
93cd99156a devicekit: initial package
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5463 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 15:25:21 +00:00
Ross Burton
986e49c43b matchbox-panel: enable the relevant battery plugin depending on the machine features
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5462 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 15:25:01 +00:00
Ross Burton
2452ba4aa7 gupnp: add gssdp, gupnp, gupnp-tools
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5461 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 15:24:26 +00:00
Richard Purdie
52268b52d1 initramfs-live-install: Add COMPATIBLE_HOST
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5460 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 15:21:55 +00:00
Ross Burton
eb599a92d5 e2fsprogs: enable dynamic libs, and package libuuid separately
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5459 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 15:07:14 +00:00
Samuel Ortiz
4d3d6fbb41 syslinux: We forward the LABEL through cmdline
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5458 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 14:36:47 +00:00
Samuel Ortiz
62ece10eb1 initrdscripts: init can now launch the installation script
Depending on the boot label ("boot" or "install"), init will either 
chroot into the rootfs image (live boot path), or launch the 
installation script (installation path).


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5457 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 14:34:50 +00:00
Samuel Ortiz
460d93416d poky-image-netbook: Add installation script
By typing "install" from the syslinux prompt, you should boot into the  
netbook image installation script. That will install the netbook image  
in your selected hard drive.
By default, the netbook-live image will continue booting the live 
image.



git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5456 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 14:31:12 +00:00
Samuel Ortiz
864a4adacf initramfs-live-install: Initial commit
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5455 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 14:30:16 +00:00
Samuel Ortiz
1ed1a58d62 busybox: Add the halt command
It's nice to be able to reboot after installing.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5454 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 14:23:47 +00:00
Richard Purdie
228f25bb45 bitbake: cooker.py: Fix the point the configuration __depends is renamed
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5453 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 14:02:06 +00:00
Samuel Ortiz
23a18ebd09 e2fsprogs: Bump to 1.41.2
1.38 didnt seem to be able to create clean ext3 partitions on SSDs.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5452 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 13:49:09 +00:00
Richard Purdie
d33aedcd88 poky-eabi.inc: No need for parted as-needed exception anymore
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5451 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 11:30:42 +00:00
Richard Purdie
acb3bfa86b parted: Now readline is fixed, no need for weird EXTRA_OECONF options
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5450 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 11:29:57 +00:00
Richard Purdie
3abb77959d linux-omap-2.6.24.7: Fix compile failure
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5449 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 09:55:48 +00:00
Joshua Lock
0223c7c8c2 Enable 2.6.24.7 for the omap-3430sdp, even if it won't compile.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5448 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 09:41:54 +00:00
Richard Purdie
4ae784574d gdk-pixbuf-csource-native: Add libx11-native to DEPENDS and explicitly set X search paths
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5447 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 09:28:53 +00:00
Richard Purdie
25e4a631a0 readline: Add configure fix to solve missing symbol issues
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5446 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 09:05:00 +00:00
Richard Purdie
2ab7811678 exmap-console: Bump PR after readline version changes
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5445 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 08:45:43 +00:00
Samuel Ortiz
e5f329fd9e poky-eabi: as-needed breaks parted configure stage
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5444 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 08:25:20 +00:00
Samuel Ortiz
ade5e7371c parted: Initial commit
This is needed for netbook install images.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5443 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 08:19:28 +00:00
Samuel Ortiz
bfeacba18b grub: Initial commit
We need grub for building netbook installation images


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5442 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-08 08:16:38 +00:00
Richard Purdie
ba9e4edf49 gdb: Bump PR after readline library changes
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5441 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 23:16:36 +00:00
Samuel Ortiz
0a137849a4 e2fsprogs-libs: Initial commit
Needed by parted


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5440 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 22:56:40 +00:00
Samuel Ortiz
1922777cef readline: bump readline-native to the latest 5.2
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5439 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 22:36:40 +00:00
Samuel Ortiz
95857f6cad readline: bump to the latest 5.2
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5438 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 22:34:01 +00:00
Richard Purdie
c16dee4ff9 scripts/pokyABConfig.py: Add poky-image-netbook-live
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5437 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 16:59:53 +00:00
Marcin Juszkiewicz
c8a3fab82f rootfs_rpm.bbclass: added code to generate images from feeds
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5436 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 16:47:22 +00:00
Marcin Juszkiewicz
ab995b84b4 poky.conf: added RPM feeds example
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5435 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 16:21:36 +00:00
Marcin Juszkiewicz
0ea7472583 rootfs_rpm.bbclass: added generation of feed entries
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5434 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 16:21:25 +00:00
Marcin Juszkiewicz
d1a327bede rootfs_rpm.bbclass: remove temporary yum config - rootfs has one from yum package
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5433 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 15:34:55 +00:00
Marcin Juszkiewicz
f9b9e314eb rootfs_rpm.bbclass: fix platform so rpm will be usable on device
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5432 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 13:43:07 +00:00
Robert Bragg
21cdfe2a8a Replaces = with ?= in preferred-xorg-version so versions can be overridden
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5431 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 13:01:23 +00:00
Marcin Juszkiewicz
d151a7b177 yum: added one more python package - shlex
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5430 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 11:02:37 +00:00
Marcin Juszkiewicz
1a2cd2f2e1 python: package elementtree and shlex in separate packages
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5429 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 11:02:25 +00:00
Marcin Juszkiewicz
ceb27d5fd3 python: package bzip2 support into separate package
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5428 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 09:31:38 +00:00
Marcin Juszkiewicz
b7aed5e958 yum: added all required Python modules to dependencies
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5427 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 09:31:28 +00:00
Marcin Juszkiewicz
bc6e408352 yum: fixed packaging
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5426 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 09:31:18 +00:00
Richard Purdie
559a522dc3 base.bbclass: Add automatic osc-native dependencies for osc:// recipes
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5425 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 09:25:11 +00:00
Richard Purdie
9d46f762e5 ncurses.inc: Make sure paths start with /
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5424 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-07 09:24:10 +00:00
Richard Purdie
61ec403176 rpm: Add python module packaging
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5423 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-06 17:05:09 +00:00
Richard Purdie
ceb7254954 scripts/poky-autobuild-postprocess: Add eee901 minimal image
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5422 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-06 16:18:04 +00:00
Richard Purdie
8d90e33c3a scripts/poky-autobuild-postprocess: Add eee901
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5421 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-06 16:16:57 +00:00
Richard Purdie
43a3302623 poky-eabi.inc: Set gcc-cross-sdk version
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5420 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-06 16:00:35 +00:00
Richard Purdie
7676511a3e Add gmp-sdk
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5419 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-06 15:59:41 +00:00
Richard Purdie
27d572b55e Add mpfr-sdk
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5418 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-06 15:59:01 +00:00
Richard Purdie
8a76c9c705 gcc-cross-sdl 4.3.1: Merge in two fixes from OE, DEPEND on mpfr-sdk and gmp-sdk, use LD_LIBRBARY_PATH to fine libmpfr
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5417 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-06 15:58:29 +00:00
Richard Purdie
4d2a3b6a3d bitbake providers.py: Fix message typo and improve debug info
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5416 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-06 08:19:42 +00:00
Richard Purdie
f4337b9803 bitbake utils.py: Fix ocassional locking glitch with a better retrying mechanism
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5415 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-06 08:09:11 +00:00
Tomas Frydrych
527b3372cd patch to allow the moblin proto to run without shader support
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5414 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-04 06:02:58 +00:00
Marcin Juszkiewicz
690a699ec1 package_rpm.bbclass: save value of RPMBUILDPATH as it is needed for packaging
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5413 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-03 21:32:46 +00:00
Marcin Juszkiewicz
e71b7011d4 rootfs_rpm.bbclass: remove lock files to get rpm working on device
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5412 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-03 15:23:05 +00:00
Richard Purdie
47f77ae3e7 clutter-0.6: Bump PR
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5411 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-03 12:33:16 +00:00
Richard Purdie
811ee11718 clutter-0.6: Bump PR
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5410 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-03 12:16:44 +00:00
Richard Purdie
789d16f105 clutter-cairo: Set S correctly
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5409 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-03 11:29:39 +00:00
Richard Purdie
a953836f2e libxt: Use STAGING_INCDIR_NATIVE, not STAGING_INCDIR. Also fix error handling.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5406 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-03 10:02:16 +00:00
Samuel Ortiz
dddac8f2c3 linux-moblin: Remove the obsolete IRQ_BALANCE option
Found by powertop. The new defconfig also includes a couple option that 
makes powertop happier.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5405 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-03 08:45:12 +00:00
Samuel Ortiz
8e466ad34b linux-moblin2: Use a more generic name
And fix the eee901 machine file accordingly.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5404 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-03 08:42:49 +00:00
Samuel Ortiz
6c807a6d89 powertop: Remove 1.9
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5403 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-03 08:19:22 +00:00
Richard Purdie
1dc91f00fd fetch/__init__.py: Add in hooks to make sure osc fetcher is seen
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5402 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 22:15:38 +00:00
Richard Purdie
369a30a9d3 poky.conf: matchbox-wm PREFERRED_PROVIDER is not needed
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5401 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 22:10:15 +00:00
Richard Purdie
e373a4e065 matchbox-wm: Remove pointless PROVIDES
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5400 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 22:09:13 +00:00
Richard Purdie
628db3a7cf package.bbclass: Ignore virtual-locale- packages when building -dev and -dbg dependency chains
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5399 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 22:05:09 +00:00
Richard Purdie
a61f5b0a77 rootfs_rpm.bbclass: Set YUM_ARCH_FORCE
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5398 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 21:31:32 +00:00
Richard Purdie
19855de1e1 package_rpm.bbclass: Fix dependency rebuilding bug
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5397 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 21:31:05 +00:00
Richard Purdie
aea49588fa yum-native: Fix hacks.patch to handle architecture detection issues
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5396 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 21:28:14 +00:00
Richard Purdie
537ff09c69 yum: Don't apply hacks.patch, its only needed for the native version
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5395 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 21:27:39 +00:00
Robert Bragg
e668b911e1 Some build fixes for clutter-cairo-0.6, and clutter-gtk_svn
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5394 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 21:10:24 +00:00
Richard Purdie
785f33dfaa package_rpm.bbclass: Fix package version fixing for PKG renamed packages
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5393 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 20:56:59 +00:00
Marcin Juszkiewicz
8a49dd28cc yum: do not hardcode arm architecture - rootfs_rpm provide arch info
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5392 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 20:44:17 +00:00
Marcin Juszkiewicz
e5e21ca415 rootfs_rpm: set target architecture and do not tell yum which arch we will use
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5391 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 20:43:59 +00:00
Richard Purdie
3c5eae8fec package_rpm.bbclass: Improve handling of '-' characters in Requires and Recommends fields
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5390 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 19:57:34 +00:00
Richard Purdie
6e62524f37 base.bbclass: Add read_subpkgdata_dict function
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5389 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 19:56:43 +00:00
Richard Purdie
5bcae485f5 package.bbclass: Write out extra useful data into the pkgdata files
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5388 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 19:56:19 +00:00
Marcin Juszkiewicz
08565015fb shared-mime-info: fixed dependencies for native version
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5387 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 19:02:51 +00:00
Marcin Juszkiewicz
2d4b12e62b rootfs_rpm.bbclass: use more efficient way to copy packages
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5386 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 19:02:39 +00:00
Marcin Juszkiewicz
aabd91ec59 yum-metadata-parser: fixed dependencies
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5385 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 18:34:58 +00:00
Robert Bragg
c856d8bde2 - This adds clutter-{gst,gtk,cairo}-0.8 recipes and clutter-{gst,gtk,cairo}-0.6 recipes.
- It removes the 0.4 recipes.
- It renames things so that the major.minor revision is now part of the package name.
  This lets us correctly specify SRCREVs for each branch, and allows parallell install.
- All the SRCREVs have been updated to the heads of their corresponding branches


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5384 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 17:11:36 +00:00
Richard Purdie
dfffc404ac python-native: Add sqlite3-native to DEPENDS
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5383 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 16:10:39 +00:00
Richard Purdie
096b0cd292 packaged-staging.bbclass: Add rpm package coverage
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5382 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 15:22:10 +00:00
Richard Purdie
66d13479c4 classes: Split rpm feeds by PACKAGE_ARCH
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5381 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 15:21:36 +00:00
Marcin Juszkiewicz
9c63c7ef05 rootfs_rpm.bbclass: ship rpm and yum in target images
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5380 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 14:26:38 +00:00
Marcin Juszkiewicz
94fa2b90c5 yum: added 3.2.18
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5379 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 14:26:24 +00:00
Richard Purdie
8626cf563c rootfs_ipk.bbclass: Fix shell commands
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5378 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-02 09:42:27 +00:00
Marcin Juszkiewicz
1d182826b4 task-base: bumped PR due to poky config change
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5376 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 16:02:31 +00:00
Marcin Juszkiewicz
f467b973ef poky: added pci to distro features
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5375 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 16:02:20 +00:00
Richard Purdie
beee0c51f2 rootfs_ipk.bbclass: Improve image from feed generation
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5374 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 15:52:19 +00:00
Richard Purdie
39b0cfa2bd Rename FEED_URIS -> IPK_FEED_URIS
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5373 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 15:42:55 +00:00
Richard Purdie
18104e1216 rootfs_ipk.bbclass: Add the hard bit of image generation from feeds, controlled by a BUILD_IMAGES_FROM_FEEDS variable
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5372 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 15:38:55 +00:00
Samuel Ortiz
d96b9e37ff powertop: Add latest stable release
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5371 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 15:16:25 +00:00
Samuel Ortiz
9b52d24754 rt2860: Fix iwpriv oops
Triggered by powertop, iwpriv -a oops this driver when the interface is 
down.



git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5370 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 15:15:41 +00:00
Richard Purdie
f36ea090d1 bootimg.bbclass: Set nostamp for the bootimg task
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5369 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 13:56:29 +00:00
Richard Purdie
cd872118e7 bitbake: Fix nostamp flag handling bug
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5368 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 13:55:17 +00:00
Samuel Ortiz
4089a43b64 matchbox-session-netbook: Bump PR
We should get a brightness applet and a properly placed desktop combo 
then.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5367 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 13:17:16 +00:00
Richard Purdie
8f00ab411e ncurses: Really drop broken files
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5366 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 11:23:56 +00:00
Richard Purdie
5999a431d2 libx11-diet: Enable xkb
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5365 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 11:02:56 +00:00
Marcin Juszkiewicz
fcb3dfa87b libacpi: fixed packaging
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5364 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 10:36:44 +00:00
Richard Purdie
fb20bb3121 ncurses: Bump PR to fix bogus commit fallout
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5363 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 09:59:58 +00:00
Richard Purdie
3c7454cb38 bitbake/bitbake-dev: Bump cache version after AUTOREV DONT_CACHE changes
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5362 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 09:58:26 +00:00
Marcin Juszkiewicz
3db5955abd gconf.bbclass: depend also on gconf-native
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5361 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 09:50:47 +00:00
Marcin Juszkiewicz
6e5e000b0f clutter: added libxi to dependencies
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5360 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 09:50:37 +00:00
Marcin Juszkiewicz
1bc1337e1f gconf-dbus-native: fix dependencies
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5359 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 09:42:56 +00:00
Marcin Juszkiewicz
ff247ac3fc gconf-dbus-native: required by metacity/contacts and few more
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5358 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 09:35:03 +00:00
Samuel Ortiz
e33ca0e77a matchbox-session-netbook: Remove the --titlebar option
With the --titlebar option, the desktop combo will stay hidden under the 
panel.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5357 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 09:18:57 +00:00
Samuel Ortiz
9a711ae899 poky-fixed-revisions.inc: Bump mb-panel SRCREV
This will pull the battery applet ACPI support, and the panel filling 
the width of the screen.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5356 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-10-01 09:16:48 +00:00
Joshua Lock
0749420439 Fix a typo in the COMPATIBLE_MACHINE list
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5355 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 23:05:39 +00:00
Samuel Ortiz
db1e886abf linux-moblin2: Bumping PR for the new eee901 defconfig.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5354 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 22:44:05 +00:00
Richard Purdie
845d2988df Revert unintended commits
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5353 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 21:58:43 +00:00
Richard Purdie
979f987c44 bitbake cache.py: When SRCREV autorevisioning for a recipe is in use, don't cache the recipe. Based on work from Heikki Paajanen
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5352 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 21:54:47 +00:00
Joshua Lock
e2d321075a Add OEROOT to preserved_envvars_list.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5351 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 21:49:11 +00:00
Richard Purdie
efe3d75208 bitbake: Sync with upstream
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5350 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 21:12:36 +00:00
Joshua Lock
419f18450d Fix better_exec error message to actually report filename.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5349 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 21:07:13 +00:00
Richard Purdie
f0e249f5eb scripts/poky-env-internal: Add MACHINE, DISTRO and POKYLIBC to the environment whitelist for starters
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5348 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 21:00:37 +00:00
Richard Purdie
2e182847e4 bitbake/bitbake-dev: Allow much better control of which variable influence bitbake from the environment
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5347 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 20:57:18 +00:00
Richard Purdie
221ac2b25f bitbake/bitbake-dev: Sync with upstream
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5346 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 20:46:17 +00:00
Richard Purdie
dc98b2c28c bitbake: Sync with 1.8 branch upstream
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5345 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 20:32:33 +00:00
Marcin Juszkiewicz
f3937639b2 AUTHORS: update my email in BitBake
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5344 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 19:54:49 +00:00
Samuel Ortiz
ff56ee3717 matchbox-netbook: We can safely include the brightness applet.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5343 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 17:05:17 +00:00
Samuel Ortiz
65722fb862 eee901: We now use the intel FB driver.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5342 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 17:04:08 +00:00
Samuel Ortiz
2c1c5db4d5 linux-moblin2: More eee901 goodies
New eee901 kernel config for camera, hot-keys and the eee-laptop module.
We also got rid of all FB drivers but the Intel one.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5341 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 17:03:19 +00:00
Joshua Lock
cbaab65ff4 Merge changes from Poky bitbake 1.8
Update bitbake-dev to have extra fixes from Poky's internal (1.8) version of bitbake.
Should be able to use bitbake-dev with Poky now.

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5340 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 16:54:37 +00:00
Richard Purdie
d54280dd31 bitbake-dev: Update against bitbake trunk
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5339 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 15:22:44 +00:00
Richard Purdie
4e522e0d4b poky.conf: Add packaged-staging by default now
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5338 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 15:09:15 +00:00
Richard Purdie
c30eddb243 Add bitbake-dev to allow ease of testing and development of bitbake trunk
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5337 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 15:08:33 +00:00
Marcin Juszkiewicz
5ef0510474 git: depend on native perl and use it
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5335 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 11:40:52 +00:00
Samuel Ortiz
de39802df2 eee901: We use ACPI for battery status reading
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5334 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 09:49:09 +00:00
Samuel Ortiz
c127548304 task-base: Adding libacpi to the acpi task.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5333 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 09:47:26 +00:00
Samuel Ortiz
a2985cb500 libacpi: First poky commit
This is a generic ACPI library for accessing ACPI data.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5332 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 09:46:20 +00:00
Richard Purdie
1d0070a6e1 xf86-video-intel: DEPEND on virtual/libgl, not mesa
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5331 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-30 09:10:35 +00:00
Richard Purdie
f8df3fc341 libx11.inc: Fix error handling logic for makekeys generation
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5330 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 21:59:09 +00:00
Richard Purdie
287ef55e47 libx11-trim: Add missing xproto-native DEPENDS
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5329 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 21:28:48 +00:00
Richard Purdie
e4ac360292 zlib: Fix autotools off64_t patch logic fixing darwin builds
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5328 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 21:12:06 +00:00
Richard Purdie
ce846ca9cb libx11-diet: Fix require, drop unneeded PEs
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5327 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 20:15:39 +00:00
Richard Purdie
6de25dd7c2 libx11: Update include_fix.patch
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5326 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 20:12:39 +00:00
Richard Purdie
18b5ccc217 mesa-dri: Bump PR
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5325 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 20:05:54 +00:00
Richard Purdie
c1f119575c poky.conf/preferred-xorg-versions.inc: Catch up with libx11 changes
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5324 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 19:50:30 +00:00
Richard Purdie
05107cfb69 xserver-xf86-lite: Add a non-dri version of the server for use when dri/gl isn't appropriate
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5323 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 19:47:52 +00:00
Richard Purdie
897f193965 xserver-xf86-common: Fix PROVIDES to include PN
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5322 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 19:46:36 +00:00
Richard Purdie
fc0687500a libxcb.inc: Fix bogus reference to STAGING_DIR/HOST_SYS
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5321 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 19:30:37 +00:00
Richard Purdie
3081d60d5a libx11: Upgrade to 1.1.5, rename diet-x11 to libx11-diet for consistent naming. Create common .inc file for diet,trim and full-fat version versions
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5320 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 19:22:21 +00:00
Richard Purdie
ef3ef90918 poky.conf: Remove bogus EXCLUDE_FROM_WORLD
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5319 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 18:42:34 +00:00
Richard Purdie
e22a1867b9 xserver-xf86-dri-lite.inc: Add COMPATIBLE_HOST
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5318 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 18:41:42 +00:00
Richard Purdie
99d447c4b4 poky.conf: Add mesa-dri to EXCLUDE_FROM_WORLD
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5317 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 18:20:31 +00:00
Richard Purdie
343d7bd798 mess-dri: Add missing expat DEPENDS
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5316 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 18:18:19 +00:00
Richard Purdie
796d014e1a xf86-video-common.inc: Fix typo that revmoved the xserver DEPENDS leading to build failures
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5315 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 18:07:29 +00:00
Richard Purdie
c569e23d68 libxext: Add missing DEPENDS on libxdmcp
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5314 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 17:59:32 +00:00
Richard Purdie
450fcec814 libxt: Add missing DEPENDS on libxdmcp
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5313 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 17:59:10 +00:00
Richard Purdie
07e880112b omap-3430: Generate jffs2 images
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5310 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 16:15:07 +00:00
Richard Purdie
2d89305c19 linux-omap-3430ldp: Build jffs2 support in.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5309 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 16:06:49 +00:00
Richard Purdie
0307391afc netbase: Disable networkmanager for eth0 on qemux86/qemuarm
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5308 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 13:32:50 +00:00
Ross Burton
86ab8c8d1e libnotify: move from meta-extras to meta-openmoko
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5306 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 12:49:37 +00:00
Robert Bradford
9d8971de6e matchbox-desktop: update SRCREV.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5305 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 12:49:12 +00:00
Marcin Juszkiewicz
f9bc87bcd4 task-poky-sdk-gmae: fix sqlite-dev name
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5304 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-29 08:19:26 +00:00
Marcin Juszkiewicz
f21f937d49 libgcrypt: add pkg-config file info dev package
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5303 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-26 15:41:27 +00:00
Marcin Juszkiewicz
56e5e1d61b checksums.ini: added some entries
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5302 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-26 15:41:13 +00:00
Marcin Juszkiewicz
405e76189d gnutls: add 2.4.2 (latest stable)
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5301 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-26 15:40:58 +00:00
Marcin Juszkiewicz
062b2e125d gnutls: drop 2.2.5
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5300 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-26 15:40:36 +00:00
Robert Bragg
c4e9ad655c Fixes the metacity-clutter revision; packages the plugins; and adds a post
install section to use gconftool-2 to enable the "simple" plugin by default.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5299 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-26 15:16:32 +00:00
Ross Burton
52734d2374 task-sdk-gmae.inc: update to reflect GNOME Mobile 2.24
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5298 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-26 14:14:57 +00:00
Robert Bragg
b0432f711e removes SubSection "Display" from xorg.conf
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5297 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-26 13:41:28 +00:00
Robert Bragg
503cb726a2 fixes noPanoramiXExtension missing symbol problem when server tries to load libdri
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5296 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-26 13:41:17 +00:00
Ross Burton
fc3d94f80c poky-fixed-revisions.inc: bump matchbox-wm-2 for work area fixes
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5294 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-26 12:54:49 +00:00
Robert Bradford
dd465f2536 avahi: Move bshell into the avahi-ui-utils package
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5293 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-26 10:32:09 +00:00
Marcin Juszkiewicz
9b906c8b99 mesa-dri: mark as x86 only
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5292 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-26 09:54:09 +00:00
Marcin Juszkiewicz
297f268eb9 libpthread-stubs: Fix -dev and -dbg dependencies
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5291 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-26 09:50:39 +00:00
Marcin Juszkiewicz
5529d5ebb1 linux-moblin2: do not compile kernel with debug infos
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5290 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-26 09:48:09 +00:00
Ross Burton
13c0576b6b clutter.inc: use eglnative on 3430sdp
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5287 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-26 09:29:52 +00:00
Richard Purdie
536e19f772 xserver-kdrive: Feed xrandr calls to the framebuffer driver in case it can do better than software rotation
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5279 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-25 21:03:38 +00:00
Ross Burton
59754eed48 dialer: specify revision instead of using autorev
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5278 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-25 20:52:29 +00:00
Richard Purdie
10b492324f eee-acpi-scripts: Set PV correctly
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5277 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-25 20:38:26 +00:00
Samuel Ortiz
951142f7f8 eee-acpi-scripts: SRCREV should be in the distro config files
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5276 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-25 17:02:04 +00:00
Joshua Lock
78abb4091a Update fixed revision for the latest, greatest, metacity-clutter.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5275 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-25 16:38:36 +00:00
Richard Purdie
d7088809f0 xcb-proto: Fix -dev and -dbg dependencies
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5274 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-25 15:10:47 +00:00
Samuel Ortiz
7970ac7796 eee901: Add acpi and eee-acpi-scripts
We can now suspend/resume the eee901 through the Fn keys.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5273 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-25 15:06:11 +00:00
Samuel Ortiz
4a91a284b5 eee-acpi-scripts: Initial commit
eeePC specific ACPI hooks.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5272 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-25 14:58:13 +00:00
Samuel Ortiz
d3636b1f0c pm-utils: Initial commit
This is a set of scripts usually needed by the ACPI 
sleep/hibernate hooks.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5271 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-25 14:47:22 +00:00
Samuel Ortiz
f65b9db4a0 acpid: Initial poky commit
Needed on x86 machines.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5270 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-25 14:41:56 +00:00
Marcin Juszkiewicz
6ae402ea3f image.bbclass: make ext2/ext3 images autoresize
New variable IMAGE_EXTRA_SPACE contains amount of kilobytes which has
to be added to size of IMAGE_ROOTFS. Resulting size is then passed to
genext2fs util.

As a result we do not have to specify size for ROOTFS_SIZE anymore.

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5269 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-25 14:09:22 +00:00
Marcin Juszkiewicz
2c002e3a86 qemu targets: added IMAGE_ROOTFS_SIZE for ext3 filesystems
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5268 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-25 14:09:07 +00:00
Joshua Lock
92116e3085 Netbooks will use Sato too for now.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5267 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-25 13:27:10 +00:00
Joshua Lock
8f8fbefd0f Initial support for netbooks with a poky-image-netbook(-live) image target.
This needs much love from folk with UI and WM skills.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5266 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-25 09:50:05 +00:00
Robert Bradford
c8ece75aea libx11-trim: Add missing dep on xf86bigfontproto
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5265 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-24 20:15:19 +00:00
Robert Bradford
2f52c8c2a4 qemu-sdk: Build i386 QEMU for inclusion in the sdk.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5264 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-24 18:55:15 +00:00
Ross Burton
775eda0167 gtk-engines-2.12: remove
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5263 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-24 14:47:09 +00:00
Ross Burton
fb1907dc0f gtk-engines_2.14.0.bb: add PACKAGES_DYNAMIC
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5262 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-24 14:46:42 +00:00
Ross Burton
0ed09c367e gtk-engines-2.10.2: remove old release
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5261 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-24 14:43:58 +00:00
Marcin Juszkiewicz
9f09bdab25 matchbox-themes-gtk: fixed dependencies after clearlooks cleanup
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5260 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-24 14:39:17 +00:00
Marcin Juszkiewicz
c6a6eb4994 jpeg: added native version
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5259 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-24 14:20:08 +00:00
Marcin Juszkiewicz
0b751d3a19 metacity(-clutter): use gdk-pixbuf-csource-native
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5258 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-24 14:10:41 +00:00
Marcin Juszkiewicz
b40263eca9 gdk-pixbuf-csource: added 2.12.7
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5257 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-24 14:10:25 +00:00
Ross Burton
e64f44b3b9 gtk-theme-darkilouche.bb: depend on gtk-engines so that clearlooks is built, and rdepend on the engine not the theme
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5256 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-24 13:49:08 +00:00
Ross Burton
d1bd2284d6 gtk-engines: set PACKAGES_DYNAMIC
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5255 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-24 13:46:50 +00:00
Ross Burton
9221934835 gtk-clearlooks-engine_0.6.2.bb: remove old version
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5254 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-24 13:46:17 +00:00
Ross Burton
e409c1049b gtk-industrial-engine: remove ancient package
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5253 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-24 13:29:51 +00:00
Tomas Frydrych
c55be22636 added recipe for metacity-clutter
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5252 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-24 08:56:27 +00:00
Marcin Juszkiewicz
78579855e8 libtiff: set LICENSE
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5251 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-24 08:10:15 +00:00
Robert Bradford
887b8dea03 gtk+: Add gtk+ 2.14.2
(with rebased hardcoded_libtool.patch and new disable-gio-png-sniff-test.diff)

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5250 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 16:57:57 +00:00
Robert Bradford
57fbca3b65 libxklavier: add libxklavier 3.7 (XKB wrapper library)
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5249 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 16:57:48 +00:00
Marcin Juszkiewicz
e1852a5242 mesa-dri: make it non-default for targets other then EeePC 901
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5248 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 16:42:13 +00:00
Marcin Juszkiewicz
59e0767ebe mesa-xlib: added non-dri version of mesa
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5247 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 16:42:03 +00:00
Marcin Juszkiewicz
f3c9ce9f35 xf86-video-intel: mark as x86 only
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5246 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 16:32:37 +00:00
Marcin Juszkiewicz
accea02341 mesa-dri: fix packaging so test apps will really land in own package
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5245 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 16:32:24 +00:00
Robert Bradford
05908afac8 iso-codes: Make PACKAGE_ARCH=all
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5244 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 14:29:10 +00:00
Robert Bradford
395a25b219 intltool: Update to intltool 0.37.1
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5243 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 14:23:46 +00:00
Robert Bradford
663e3ea04b iso-codes: Add iso-codes package
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5242 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 14:18:17 +00:00
Marcin Juszkiewicz
5d82d23f72 metacity: do not require gdk-pixbuf-csource
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5241 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 12:54:15 +00:00
Marcin Juszkiewicz
b64f91322d checksums.ini: added some entries
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5240 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 11:26:18 +00:00
Robert Bradford
651835661d glib-2.0: Remove old bleeding version.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5239 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 11:22:01 +00:00
Robert Bradford
f25995487b glib-2.0: Update default revision to 2.18.1
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5238 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 11:21:52 +00:00
Robert Bradford
879f6e022d glib-2.0: Add 2.18.1 (new stable release)
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5237 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 10:38:54 +00:00
Ross Burton
7426229e2f poky-fixed-revisions.inc: fix typo
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5236 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 10:14:38 +00:00
Ross Burton
69bcf13bfc poky-fixed-revisions.inc: bump matchbox-desktop srvrev to fix icon loading bug
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5235 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 09:54:16 +00:00
Robert Bradford
fab192805d gnome-icon-theme: add an RRECOMMENDS on librsvg-gtk
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5234 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 09:02:49 +00:00
Joshua Lock
e419523cbf Add a bzip2-full-native recipe and make the python-native recipe depend on it.
Yum requires bzip2 support in Python so our native Python package needs something to provide it.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5233 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 03:30:23 +00:00
Robert Bragg
6e1a993ecc Makes metacity install as an alternative x-window-manager
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5232 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 03:21:06 +00:00
Robert Bragg
604df9a96a Bumps the mesa-dri revision to 7.2 and adds a mesa-xdemos package including
e.g glxinfo


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5231 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 02:01:11 +00:00
Robert Bragg
9954f13fa7 Ensures the themes get packaged with metacity
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5230 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-23 02:00:56 +00:00
Robert Bragg
0caca44655 Adds eee901 specific support into clutter.inc and adds a new virtual/libgl
for clutter to depend on which all mesa build variants provide.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5229 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 23:40:14 +00:00
Robert Bragg
bc88c3a81b increments task-poky revision, which fixed a dependency problem for me and
may help with similar problems others are seeing with the new X builds. (The
problem seemed to be related to the XSERVER variable which is referred to in
task-poky.bb)


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5228 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 23:28:49 +00:00
Marcin Juszkiewicz
9e00baff8b libxrender: added missing dependencies
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5227 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 19:09:23 +00:00
Marcin Juszkiewicz
a4fcdacd6b libx11-trim: added missing dependencies
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5226 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 19:08:58 +00:00
Samuel Ortiz
7178ed1a62 connman: Initial poky commit
We're adding both connman the daemon and connman-gnome which is a gnome 
applet.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5225 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 19:02:30 +00:00
Samuel Ortiz
08012fd963 resolvconf: Adding resolvconf as connman needs it
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5224 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 18:56:51 +00:00
Samuel Ortiz
422985cf93 libgdbus: Add latest git as SRCREV
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5223 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 18:54:37 +00:00
Samuel Ortiz
b5833ef23e libgdbus: Adding libgdbus as connman needs it
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5222 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 18:48:09 +00:00
Robert Bradford
37f772fd8b Add the Darkilouche dark theme
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5221 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 18:32:31 +00:00
Robert Bradford
561f4d0930 Update to gtk-engines 2.14
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5220 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 18:32:20 +00:00
Robert Bragg
4353685020 Some fixes for the xorg.conf for xserver-xf86-dri-lite
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5219 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 17:19:02 +00:00
Ross Burton
500a9242c9 libsoup-2.4: add libsoup 2.4
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5218 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 16:48:52 +00:00
Ross Burton
cf69f37551 gnome-icon-theme: add
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5217 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 16:47:42 +00:00
Joshua Lock
1c2a783e85 Basic recipe for Metacity. Needs some tweaking to strip out themes into separate packages and strip some unneeded binaries.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5216 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 16:43:39 +00:00
Tomas Frydrych
dd204d5a46 added missing dri2proto dependency
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5215 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 15:37:55 +00:00
Marcin Juszkiewicz
8321809b1f libx11-trim: fix location on keysymdef.h
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5214 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 14:46:13 +00:00
Marcin Juszkiewicz
565180719b xf86-video-intel: add missing dependencies
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5213 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 14:03:19 +00:00
Marcin Juszkiewicz
2297ec9fa8 xkeyboard-config: provide 'xorg' rules which are link to 'base' ones
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5212 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 13:59:31 +00:00
Marcin Juszkiewicz
f77a127cc9 xkeyboard-config: add keymaps for X11
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5211 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 13:59:21 +00:00
Marcin Juszkiewicz
ad239c215b xkbcomp: added 1.0.5 required by xkeyboard-config
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5210 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 13:59:11 +00:00
Marcin Juszkiewicz
af096d29bb libxkbfile-native: needed by xkbcomp-native
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5209 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 13:58:57 +00:00
Ross Burton
a521e64e06 Move libsoup to its own directory
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5208 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 13:53:19 +00:00
Marcin Juszkiewicz
f2bbf7ba5e libx11-native: do not provide virtual/libx11
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5207 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 13:50:15 +00:00
Marcin Juszkiewicz
90ebfbbaaa libxdmcp-native: do not provide xdmcp
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5206 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 13:50:05 +00:00
Robert Bragg
3de4627417 Adds recipes to support building X servers based on the xfree86 DDX instead
of kdrive and building mesa. It's a big commit and it's still rather rough
around the edges, but there is a desire to get this in early so people can
review the work and help polish the changes.

Some of the notable bits:
• DRI support in mesa and the X server. (configured in machine conf via
  MACHINE_DRI_MODULES variable)
• XCB backend for xlib
• A fairly lite X server build with lots of legacy modules disabled.

I'm sure there is plenty of other fairly low hanging fruit if we want to
put more effort into reducing the size of the xserver build. Currently the
server build comes in @ ~2.3MB vs a kdrive fbdev server build @ ~1MB. E.g
xaa could be made conditional to save ~320K. Of course the kdrive server
doesn't include glx stuff, which is a pretty big chunk.

Also thanks to hrw, since I nabbed a some patches from him for this, and RP,
for various bits of Poky style advice.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5205 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 13:33:19 +00:00
Richard Purdie
9b6a24b65d cdrtools-native: Don't look for headers in /usr/src/linux, that would be crazy
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5204 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-22 11:48:01 +00:00
Richard Purdie
dc2a130909 tune-xscale.inc: Compile cairo for armv4 to avoid alighment trap issues with double instruction
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5203 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-19 17:32:35 +00:00
Richard Purdie
b7b275518b gcc: Add 4.3.2 recipes
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5202 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-19 17:29:23 +00:00
Joshua Lock
571ddc976b Fetch implementation for the OpenSuse build service.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5201 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-18 18:03:20 +00:00
Joshua Lock
166a1acddd Native pacage for the OpenSuse build service client.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5200 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-18 18:02:38 +00:00
Joshua Lock
5744c2429e Make the eee use the correct DPI.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5199 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-18 18:01:51 +00:00
Ross Burton
0576faf045 poky-eabi.conf: add dialer to as-needed blacklist
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5198 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-18 09:35:14 +00:00
Richard Purdie
cd937b6f45 ConfHandler.py: revert accidental commit
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5197 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-16 20:09:03 +00:00
Richard Purdie
31511eb978 bitbake parse/__init_.py: Add missing update_mtime function fixing bitbake shell reparse failures
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5196 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-16 19:14:49 +00:00
Ross Burton
10481859f4 poky-fixed-revisions.inc: bump matchbox-desktop srvrev
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5195 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-16 16:24:31 +00:00
Ross Burton
57915de227 poky-fixed-revisions: bump libowl srvrev
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5194 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-16 15:36:32 +00:00
Ross Burton
c3bea6471b poky-fixed-revisions.inc: bump matchbox-wm-2
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5193 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-16 09:00:50 +00:00
Ross Burton
ce91157fda ref-variables.xml: Add POKY_EXTRA_INSTALL
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5192 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-12 15:43:10 +00:00
Richard Purdie
61af678505 handbook/faq.xml: Add a QA about proxy server setup
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5191 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-11 23:11:45 +00:00
Richard Purdie
ef1315e09f handbook/quickstart: Improve documentation on the options available in local.conf
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5190 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-11 23:02:51 +00:00
Richard Purdie
96a71ae116 local.conf.sample: Make the parallel threads documentation more visible and update with a quadcore example
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5189 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-11 22:41:08 +00:00
Richard Purdie
fc6f464b57 rt2860: Set COMPATIBLE_MACHINE for now to avoid builds with elderly kernels
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5188 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-11 20:13:05 +00:00
Ross Burton
93807d5187 eds-dbus: add libedataserverui to PACKAGES, fixing the borked packaging
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5187 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-11 16:57:47 +00:00
Samuel Ortiz
107efab106 eee901: Add wifi support
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5186 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-11 16:35:54 +00:00
Ross Burton
680a0e58e8 eds-dbus: package the glade files into libedataserverui
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5185 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-11 16:07:38 +00:00
Samuel Ortiz
d2c6e8a8e0 rt2860: Support for the rt2860 RaLink 802.11n chipset
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5184 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-11 15:57:47 +00:00
Richard Purdie
93159c9e70 eds-dbus: Add missing DEPENDS on libglade
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5183 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-11 15:43:25 +00:00
Richard Purdie
06b2ec9a81 local.conf.sample: Add comment about eee901
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5182 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-11 14:37:35 +00:00
Richard Purdie
f03756b98d poky-eabi.inc/poky-fixed-revisions.inc: Bump the matchbox-wm-2 revision and remove from the asneeded blacklist
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5181 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-11 11:00:49 +00:00
Samuel Ortiz
0dbd5e5826 image-live: exclude from world builds
We also remove a video kernel command line option, as this is platform 
specific.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5180 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-11 08:59:00 +00:00
Richard Purdie
22699496ae pokyABConfig.py: Add eee901 builds
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5179 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-10 22:54:21 +00:00
Richard Purdie
5931e8a4a5 gst-plugins-good: Remove bogus RPROVIDES and add to PACKAGES instead now the package class can handle this
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5178 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-10 22:32:22 +00:00
Richard Purdie
9a21f65eef package.bbclass: Adjust to handle split packages already being present in PACKAGES
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5177 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-10 22:29:43 +00:00
Samuel Ortiz
81824cd18d exmap-console: Bump to the latest SVN
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5176 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-10 22:21:00 +00:00
Richard Purdie
adf85c06ea poky-image-live.inc: Only run the FSTYPES check when the task is run
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5175 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-10 22:07:29 +00:00
Samuel Ortiz
6b2db1eb1a Added live USB poky images
We support sato and minimal live USB image production.


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5174 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-10 21:24:24 +00:00
Samuel Ortiz
9bdc5a0129 initrdscripts: Simple init files for initrd/initramfs images
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5173 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-10 21:21:23 +00:00
Samuel Ortiz
71a2e0d41d bootimg: Adding a rootfs to the disk image
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5172 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-10 21:19:19 +00:00
Samuel Ortiz
8615c214c2 eee901: Add video kernel options, vesa for now.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5171 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-10 21:12:46 +00:00
Richard Purdie
22e0395343 bitbake hg fetcher: Add fix from Matt Hoosier
The Mercurial fetcher right now will fail when used to incrementally
fetch an update to a local clone of a repository already fetched at
some prior revision. The culprit is the sequence:

 hg pull -r <rev>
 hg update -C <rev>
  
A subtlety in the way that Mercurial stores its tags (in a normally
version-controlled file called .hgtags) has the side-effect that a
repository fetched at a tag "foo" will not actually contain a
new-enough copy of the .hgtags file to be self-aware of the foo tag's
existence.
  
The solution is just to get all the changesets in the repository on
incremental upgrades, so that the following "hg update" will be able
to resolve the tag.
  


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5170 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-10 16:25:46 +00:00
Ross Burton
f09c00eb87 gaku: clean up depends/recommends
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5169 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-10 16:17:54 +00:00
Samuel Ortiz
16f7d679e3 formfactor: Add eee901 config file
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5168 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-10 15:44:26 +00:00
Samuel Ortiz
db323e31e5 eee901: Initial support
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5167 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-10 15:43:46 +00:00
Samuel Ortiz
4f82c5078e linux-moblin2: Add moblin2 kernel
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5166 311d38ba-8fff-0310-9ca6-ca027cbcb966
2008-09-10 15:37:14 +00:00
2344 changed files with 3910642 additions and 57978 deletions

13
.gitignore vendored Normal file
View File

@@ -0,0 +1,13 @@
*.pyc
*.pyo
build/conf/local.conf
build/tmp/
scripts/poky-git-proxy-socks
sources/
meta-darwin
meta-maemo
meta-prvt*
poky-autobuilder*
*.swp
*.orig
*.rej

10
bitbake-dev/AUTHORS Normal file
View File

@@ -0,0 +1,10 @@
Tim Ansell <mithro@mithis.net>
Phil Blundell <pb@handhelds.org>
Seb Frankengul <seb@frankengul.org>
Holger Freyther <zecke@handhelds.org>
Marcin Juszkiewicz <marcin@haerwu.biz>
Chris Larson <kergoth@handhelds.org>
Ulrich Luckas <luckas@musoft.de>
Mickey Lauer <mickey@Vanille.de>
Richard Purdie <rpurdie@rpsys.net>
Holger Schurig <holgerschurig@gmx.de>

339
bitbake-dev/COPYING Normal file
View File

@@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

315
bitbake-dev/ChangeLog Normal file
View File

@@ -0,0 +1,315 @@
Changes in Bitbake 1.9.x:
- Add PE (Package Epoch) support from Philipp Zabel (pH5)
- Treat python functions the same as shell functions for logging
- Use TMPDIR/anonfunc as a __anonfunc temp directory (T)
- Catch truncated cache file errors
- Allow operations other than assignment on flag variables
- Add code to handle inter-task dependencies
- Fix cache errors when generation dotGraphs
- Make sure __inherit_cache is updated before calling include() (from Michael Krelin)
- Fix bug when target was in ASSUME_PROVIDED (#2236)
- Raise ParseError for filenames with multiple underscores instead of infinitely looping (#2062)
- Fix invalid regexp in BBMASK error handling (missing import) (#1124)
- Promote certain warnings from debug to note 2 level
- Update manual
- Correctly redirect stdin when forking
- If parsing errors are found, exit, too many users miss the errors
- Remove supriours PREFERRED_PROVIDER warnings
- svn fetcher: Add _buildsvncommand function
- Improve certain error messages
- Rewrite svn fetcher to make adding extra operations easier
as part of future SRCDATE="now" fixes
(requires new FETCHCMD_svn definition in bitbake.conf)
- Change SVNDIR layout to be more unique (fixes #2644 and #2624)
- Add ConfigParsed Event after configuration parsing is complete
- Add SRCREV support for svn fetcher
- data.emit_var() - only call getVar if we need the variable
- Stop generating the A variable (seems to be legacy code)
- Make sure intertask depends get processed correcting in recursive depends
- Add pn-PN to overrides when evaluating PREFERRED_VERSION
- Improve the progress indicator by skipping tasks that have
already run before starting the build rather than during it
- Add profiling option (-P)
- Add BB_SRCREV_POLICY variable (clear or cache) to control SRCREV cache
- Add SRCREV_FORMAT support
- Fix local fetcher's localpath return values
- Apply OVERRIDES before performing immediate expansions
- Allow the -b -e option combination to take regular expressions
- Fix handling of variables with expansion in the name using _append/_prepend
e.g. RRECOMMENDS_${PN}_append_xyz = "abc"
- Add plain message function to bb.msg
- Sort the list of providers before processing so dependency problems are
reproducible rather than effectively random
- Fix/improve bitbake -s output
- Add locking for fetchers so only one tries to fetch a given file at a given time
- Fix int(0)/None confusion in runqueue.py which causes random gaps in dependency chains
- Expand data in addtasks
- Print the list of missing DEPENDS,RDEPENDS for the "No buildable providers available for required...."
error message.
- Rework add_task to be more efficient (6% speedup, 7% number of function calls reduction)
- Sort digraph output to make builds more reproducible
- Split expandKeys into two for loops to benefit from the expand_cache (12% speedup)
- runqueue.py: Fix idepends handling to avoid dependency errors
- Clear the terminal TOSTOP flag if set (and warn the user)
- Fix regression from r653 and make SRCDATE/CVSDATE work for packages again
- Fix a bug in bb.decodeurl where http://some.where.com/somefile.tgz decoded to host="" (#1530)
- Warn about malformed PREFERRED_PROVIDERS (#1072)
- Add support for BB_NICE_LEVEL option (#1627)
- Psyco is used only on x86 as there is no support for other architectures.
- Sort initial providers list by default preference (#1145, #2024)
- Improve provider sorting so prefered versions have preference over latest versions (#768)
- Detect builds of tasks with overlapping providers and warn (will become a fatal error) (#1359)
- Add MULTI_PROVIDER_WHITELIST variable to allow known safe multiple providers to be listed
- Handle paths in svn fetcher module parameter
- Support the syntax "export VARIABLE"
- Add bzr fetcher
- Add support for cleaning directories before a task in the form:
do_taskname[cleandirs] = "dir"
- bzr fetcher tweaks from Robert Schuster (#2913)
- Add mercurial (hg) fetcher from Robert Schuster (#2913)
- Don't add duplicates to BBPATH
- Fix preferred_version return values (providers.py)
- Fix 'depends' flag splitting
- Fix unexport handling (#3135)
- Add bb.copyfile function similar to bb.movefile (and improve movefile error reporting)
- Allow multiple options for deptask flag
- Use git-fetch instead of git-pull removing any need for merges when
fetching (we don't care about the index). Fixes fetch errors.
- Add BB_GENERATE_MIRROR_TARBALLS option, set to 0 to make git fetches
faster at the expense of not creating mirror tarballs.
- SRCREV handling updates, improvements and fixes from Poky
- Add bb.utils.lockfile() and bb.utils.unlockfile() from Poky
- Add support for task selfstamp and lockfiles flags
- Disable task number acceleration since it can allow the tasks to run
out of sequence
- Improve runqueue code comments
- Add task scheduler abstraction and some example schedulers
- Improve circular dependency chain debugging code and user feedback
- Don't give a stacktrace for invalid tasks, have a user friendly message (#3431)
- Add support for "-e target" (#3432)
- Fix shell showdata command (#3259)
- Fix shell data updating problems (#1880)
- Properly raise errors for invalid source URI protocols
- Change the wget fetcher failure handling to avoid lockfile problems
- Add support for branches in git fetcher (Otavio Salvador, Michael Lauer)
- Make taskdata and runqueue errors more user friendly
- Add norecurse and fullpath options to cvs fetcher
- Fix exit code for build failures in --continue mode
- Fix git branch tags fetching
- Change parseConfigurationFile so it works on real data, not a copy
- Handle 'base' inherit and all other INHERITs from parseConfigurationFile
instead of BBHandler
- Fix getVarFlags bug in data_smart
- Optmise cache handling by more quickly detecting an invalid cache, only
saving the cache when its changed, moving the cache validity check into
the parsing loop and factoring some getVar calls outside a for loop
- Cooker: Remove a debug message from the parsing loop to lower overhead
- Convert build.py exec_task to use getVarFlags
- Update shell to use cooker.buildFile
- Add StampUpdate event
- Convert -b option to use taskdata/runqueue
- Remove digraph and switch to new stamp checking code. exec_task no longer
honours dependencies
- Make fetcher timestamp updating non-fatal when permissions don't allow
updates
- Add BB_SCHEDULER variable/option ("completion" or "speed") controlling
the way bitbake schedules tasks
- Add BB_STAMP_POLICY variable/option ("perfile" or "full") controlling
how extensively stamps are looked at for validity
- When handling build target failures make sure idepends are checked and
failed where needed. Fixes --continue mode crashes.
- Fix -f (force) in conjunction with -b
- Fix problems with recrdeptask handling where some idepends weren't handled
correctly.
- Handle exit codes correctly (from pH5)
- Work around refs/HEAD issues with git over http (#3410)
- Add proxy support to the CVS fetcher (from Cyril Chemparathy)
- Improve runfetchcmd so errors are seen and various GIT variables are exported
- Add ability to fetchers to check URL validity without downloading
- Improve runtime PREFERRED_PROVIDERS warning message
- Add BB_STAMP_WHITELIST option which contains a list of stamps to ignore when
checking stamp dependencies and using a BB_STAMP_POLICY of "whitelist"
- No longer weight providers on the basis of a package being "already staged". This
leads to builds being non-deterministic.
- Flush stdout/stderr before forking to fix duplicate console output
- Make sure recrdeps tasks include all inter-task dependencies of a given fn
- Add bb.runqueue.check_stamp_fn() for use by packaged-staging
- Add PERSISTENT_DIR to store the PersistData in a persistent
directory != the cache dir.
- Add md5 and sha256 checksum generation functions to utils.py
- Correctly handle '-' characters in class names (#2958)
- Make sure expandKeys has been called on the data dictonary before running tasks
- Correctly add a task override in the form task-TASKNAME.
- Revert the '-' character fix in class names since it breaks things
- When a regexp fails to compile for PACKAGES_DYNAMIC, print a more useful error (#4444)
- Allow to checkout CVS by Date and Time. Just add HHmm to the SRCDATE.
- Move prunedir function to utils.py and add explode_dep_versions function
- Raise an exception if SRCREV == 'INVALID'
- Fix hg fetcher username/password handling and fix crash
- Fix PACKAGES_DYNAMIC handling of packages with '++' in the name
- Rename __depends to __base_depends after configuration parsing so we don't
recheck the validity of the config files time after time
- Add better environmental variable handling. By default it will now only pass certain
whitelisted variables into the data store. If BB_PRESERVE_ENV is set bitbake will use
all variable from the environment. If BB_ENV_WHITELIST is set, that whitelist will be
used instead of the internal bitbake one. Alternatively, BB_ENV_EXTRAWHITE can be used
to extend the internal whitelist.
- Perforce fetcher fix to use commandline options instead of being overriden by the environment
- bb.utils.prunedir can cope with symlinks to directoriees without exceptions
- use @rev when doing a svn checkout
- Add osc fetcher (from Joshua Lock in Poky)
- When SRCREV autorevisioning for a recipe is in use, don't cache the recipe
- Add tryaltconfigs option to control whether bitbake trys using alternative providers
to fulfil failed dependencies. It defaults to off, changing the default since this
behaviour confuses many users and isn't often useful.
- Improve lock file function error handling
- Add username handling to the git fetcher (Robert Bragg)
- Add support for HTTP_PROXY and HTTP_PROXY_IGNORE variables to the wget fetcher
- Export more variables to the fetcher commands to allow ssh checkouts and checkouts through
proxies to work better. (from Poky)
- Also allow user and pswd options in SRC_URIs globally (from Poky)
- Improve proxy handling when using mirrors (from Poky)
- Add bb.utils.prune_suffix function
- Fix hg checkouts of specific revisions (from Poky)
- Fix wget fetching of urls with parameters specified (from Poky)
- Add username handling to git fetcher (from Poky)
- Set HOME environmental variable when running fetcher commands (from Poky)
- Make sure allowed variables inherited from the environment are exported again (from Poky)
- When running a stage task in bbshell, run populate_staging, not the stage task (from Poky)
Changes in Bitbake 1.8.0:
- Release 1.7.x as a stable series
Changes in BitBake 1.7.x:
- Major updates of the dependency handling and execution
of tasks. Code from bin/bitbake replaced with runqueue.py
and taskdata.py
- New task execution code supports multithreading with a simplistic
threading algorithm controlled by BB_NUMBER_THREADS
- Change of the SVN Fetcher to keep the checkout around
courtsey of Paul Sokolovsky (#1367)
- PATH fix to bbimage (#1108)
- Allow debug domains to be specified on the commandline (-l)
- Allow 'interactive' tasks
- Logging message improvements
- Drop now uneeded BUILD_ALL_DEPS variable
- Add support for wildcards to -b option
- Major overhaul of the fetchers making a large amount of code common
including mirroring code
- Fetchers now touch md5 stamps upon access (to show activity)
- Fix -f force option when used without -b (long standing bug)
- Add expand_cache to data_cache.py, caching expanded data (speedup)
- Allow version field in DEPENDS (ignored for now)
- Add abort flag support to the shell
- Make inherit fail if the class doesn't exist (#1478)
- Fix data.emit_env() to expand keynames as well as values
- Add ssh fetcher
- Add perforce fetcher
- Make PREFERRED_PROVIDER_foobar defaults to foobar if available
- Share the parser's mtime_cache, reducing the number of stat syscalls
- Compile all anonfuncs at once!
*** Anonfuncs must now use common spacing format ***
- Memorise the list of handlers in __BBHANDLERS and tasks in __BBTASKS
This removes 2 million function calls resulting in a 5-10% speedup
- Add manpage
- Update generateDotGraph to use taskData/runQueue improving accuracy
and also adding a task dependency graph
- Fix/standardise on GPLv2 licence
- Move most functionality from bin/bitbake to cooker.py and split into
separate funcitons
- CVS fetcher: Added support for non-default port
- Add BBINCLUDELOGS_LINES, the number of lines to read from any logfile
- Drop shebangs from lib/bb scripts
Changes in Bitbake 1.6.0:
- Better msg handling
- COW dict implementation from Tim Ansell (mithro) leading
to better performance
- Speed up of -s
Changes in Bitbake 1.4.4:
- SRCDATE now handling courtsey Justin Patrin
- #1017 fix to work with rm_work
Changes in BitBake 1.4.2:
- Send logs to oe.pastebin.com instead of pastebin.com
fixes #856
- Copy the internal bitbake data before building the
dependency graph. This fixes nano not having a
virtual/libc dependency
- Allow multiple TARBALL_STASH entries
- Cache, check if the directory exists before changing
into it
- git speedup cloning by not doing a checkout
- allow to have spaces in filenames (.conf, .bb, .bbclass)
Changes in BitBake 1.4.0:
- Fix to check both RDEPENDS and RDEPENDS_${PN}
- Fix a RDEPENDS parsing bug in utils:explode_deps()
- Update git fetcher behaviour to match git changes
- ASSUME_PROVIDED allowed to include runtime packages
- git fetcher cleanup and efficency improvements
- Change the format of the cache
- Update usermanual to document the Fetchers
- Major changes to caching with a new strategy
giving a major performance increase when reparsing
with few data changes
Changes in BitBake 1.3.3:
- Create a new Fetcher module to ease the
development of new Fetchers.
Issue #438 fixed by rpurdie@openedhand.com
- Make the Subversion fetcher honor the SRC Date
(CVSDATE).
Issue #555 fixed by chris@openedhand.com
- Expand PREFERRED_PROVIDER properly
Issue #436 fixed by rprudie@openedhand.com
- Typo fix for Issue #531 by Philipp Zabel for the
BitBake Shell
- Introduce a new special variable SRCDATE as
a generic naming to replace CVSDATE.
- Introduce a new keyword 'required'. In contrast
to 'include' parsing will fail if a to be included
file can not be found.
- Remove hardcoding of the STAMP directory. Patch
courtsey pHilipp Zabel
- Track the RDEPENDS of each package (rpurdie@openedhand.com)
- Introduce BUILD_ALL_DEPS to build all RDEPENDS. E.g
this is used by the OpenEmbedded Meta Packages.
(rpurdie@openedhand.com).
Changes in BitBake 1.3.2:
- reintegration of make.py into BitBake
- bbread is gone, use bitbake -e
- lots of shell updates and bugfixes
- Introduction of the .= and =. operator
- Sort variables, keys and groups in bitdoc
- Fix regression in the handling of BBCOLLECTIONS
- Update the bitbake usermanual
Changes in BitBake 1.3.0:
- add bitbake interactive shell (bitbake -i)
- refactor bitbake utility in OO style
- kill default arguments in methods in the bb.data module
- kill default arguments in methods in the bb.fetch module
- the http/https/ftp fetcher will fail if the to be
downloaded file was not found in DL_DIR (this is needed
to avoid unpacking the sourceforge mirror page)
- Switch to a cow like data instance for persistent and non
persisting mode (called data_smart.py)
- Changed the callback of bb.make.collect_bbfiles to carry
additional parameters
- Drastically reduced the amount of needed RAM by not holding
each data instance in memory when using a cache/persistent
storage
Changes in BitBake 1.2.1:
The 1.2.1 release is meant as a intermediate release to lay the
ground for more radical changes. The most notable changes are:
- Do not hardcode {}, use bb.data.init() instead if you want to
get a instance of a data class
- bb.data.init() is a factory and the old bb.data methods are delegates
- Do not use deepcopy use bb.data.createCopy() instead.
- Removed default arguments in bb.fetch

207
bitbake-dev/bin/bitbake Executable file
View File

@@ -0,0 +1,207 @@
#!/usr/bin/env python
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2003, 2004 Phil Blundell
# Copyright (C) 2003 - 2005 Michael 'Mickey' Lauer
# Copyright (C) 2005 Holger Hans Peter Freyther
# Copyright (C) 2005 ROAD GmbH
# Copyright (C) 2006 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import sys, os, getopt, re, time, optparse, xmlrpclib
sys.path.insert(0,os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib'))
import bb
from bb import cooker
from bb import daemonize
from bb import ui
from bb.ui import uievent
__version__ = "1.9.0"
if sys.hexversion < 0x020600F0:
print "Sorry, python 2.6 or later is required for this version of bitbake"
sys.exit(1)
#============================================================================#
# BBOptions
#============================================================================#
class BBConfiguration( object ):
"""
Manages build options and configurations for one run
"""
def __init__( self, options ):
for key, val in options.__dict__.items():
setattr( self, key, val )
def print_exception(exc, value, tb):
"""
Print the exception to stderr, only showing the traceback if bitbake
debugging is enabled.
"""
if not bb.msg.debug_level['default']:
tb = None
sys.__excepthook__(exc, value, tb)
#============================================================================#
# main
#============================================================================#
def main():
return_value = 0
pythonver = sys.version_info
if pythonver[0] < 2 or (pythonver[0] == 2 and pythonver[1] < 5):
print "Sorry, bitbake needs python 2.5 or later."
sys.exit(1)
parser = optparse.OptionParser( version = "BitBake Build Tool Core version %s, %%prog version %s" % ( bb.__version__, __version__ ),
usage = """%prog [options] [package ...]
Executes the specified task (default is 'build') for a given set of BitBake files.
It expects that BBFILES is defined, which is a space separated list of files to
be executed. BBFILES does support wildcards.
Default BBFILES are the .bb files in the current directory.""" )
parser.add_option( "-b", "--buildfile", help = "execute the task against this .bb file, rather than a package from BBFILES.",
action = "store", dest = "buildfile", default = None )
parser.add_option( "-k", "--continue", help = "continue as much as possible after an error. While the target that failed, and those that depend on it, cannot be remade, the other dependencies of these targets can be processed all the same.",
action = "store_false", dest = "abort", default = True )
parser.add_option( "-a", "--tryaltconfigs", help = "continue with builds by trying to use alternative providers where possible.",
action = "store_true", dest = "tryaltconfigs", default = False )
parser.add_option( "-f", "--force", help = "force run of specified cmd, regardless of stamp status",
action = "store_true", dest = "force", default = False )
parser.add_option( "-i", "--interactive", help = "drop into the interactive mode also called the BitBake shell.",
action = "store_true", dest = "interactive", default = False )
parser.add_option( "-c", "--cmd", help = "Specify task to execute. Note that this only executes the specified task for the providee and the packages it depends on, i.e. 'compile' does not implicitly call stage for the dependencies (IOW: use only if you know what you are doing). Depending on the base.bbclass a listtasks tasks is defined and will show available tasks",
action = "store", dest = "cmd" )
parser.add_option( "-r", "--read", help = "read the specified file before bitbake.conf",
action = "append", dest = "file", default = [] )
parser.add_option( "-v", "--verbose", help = "output more chit-chat to the terminal",
action = "store_true", dest = "verbose", default = False )
parser.add_option( "-D", "--debug", help = "Increase the debug level. You can specify this more than once.",
action = "count", dest="debug", default = 0)
parser.add_option( "-n", "--dry-run", help = "don't execute, just go through the motions",
action = "store_true", dest = "dry_run", default = False )
parser.add_option( "-p", "--parse-only", help = "quit after parsing the BB files (developers only)",
action = "store_true", dest = "parse_only", default = False )
parser.add_option( "-d", "--disable-psyco", help = "disable using the psyco just-in-time compiler (not recommended)",
action = "store_true", dest = "disable_psyco", default = False )
parser.add_option( "-s", "--show-versions", help = "show current and preferred versions of all packages",
action = "store_true", dest = "show_versions", default = False )
parser.add_option( "-e", "--environment", help = "show the global or per-package environment (this is what used to be bbread)",
action = "store_true", dest = "show_environment", default = False )
parser.add_option( "-g", "--graphviz", help = "emit the dependency trees of the specified packages in the dot syntax",
action = "store_true", dest = "dot_graph", default = False )
parser.add_option( "-I", "--ignore-deps", help = """Assume these dependencies don't exist and are already provided (equivalent to ASSUME_PROVIDED). Useful to make dependency graphs more appealing""",
action = "append", dest = "extra_assume_provided", default = [] )
parser.add_option( "-l", "--log-domains", help = """Show debug logging for the specified logging domains""",
action = "append", dest = "debug_domains", default = [] )
parser.add_option( "-P", "--profile", help = "profile the command and print a report",
action = "store_true", dest = "profile", default = False )
parser.add_option( "-u", "--ui", help = "userinterface to use",
action = "store", dest = "ui")
parser.add_option( "", "--revisions-changed", help = "Set the exit code depending on whether upstream floating revisions have changed or not",
action = "store_true", dest = "revisions_changed", default = False )
options, args = parser.parse_args(sys.argv)
configuration = BBConfiguration(options)
configuration.pkgs_to_build = []
configuration.pkgs_to_build.extend(args[1:])
cooker = bb.cooker.BBCooker(configuration)
# Clear away any spurious environment variables. But don't wipe the
# environment totally. This is necessary to ensure the correct operation
# of the UIs (e.g. for DISPLAY, etc.)
bb.utils.clean_environment()
cooker.parseCommandLine()
host = cooker.server.host
port = cooker.server.port
# Save a logfile for cooker into the current working directory. When the
# server is daemonized this logfile will be truncated.
cooker_logfile = os.path.join (os.getcwd(), "cooker.log")
daemonize.createDaemon(cooker.serve, cooker_logfile)
del cooker
# Setup a connection to the server (cooker)
server = xmlrpclib.Server("http://%s:%s" % (host, port), allow_none=True)
# Setup an event receiving queue
eventHandler = uievent.BBUIEventQueue(server)
# Launch the UI
if configuration.ui:
ui = configuration.ui
else:
ui = "knotty"
try:
# Dynamically load the UI based on the ui name. Although we
# suggest a fixed set this allows you to have flexibility in which
# ones are available.
exec "from bb.ui import " + ui
exec "return_value = " + ui + ".init(server, eventHandler)"
except ImportError:
print "FATAL: Invalid user interface '%s' specified. " % ui
print "Valid interfaces are 'ncurses', 'depexp' or the default, 'knotty'."
except Exception, e:
print "FATAL: Unable to start to '%s' UI: %s." % (configuration.ui, e.message)
finally:
# Don't wait for server indefinitely
import socket
socket.setdefaulttimeout(2)
try:
eventHandler.system_quit()
except:
pass
try:
server.terminateServer()
except:
pass
return return_value
if __name__ == "__main__":
print """WARNING, WARNING, WARNING
This is a Bitbake from the Unstable/Development 1.9 Branch. This software is a work in progress and should only be used by Bitbake developers/testers"""
ret = main()
sys.exit(ret)

534
bitbake-dev/bin/bitdoc Executable file
View File

@@ -0,0 +1,534 @@
#!/usr/bin/env python
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Copyright (C) 2005 Holger Hans Peter Freyther
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import optparse, os, sys
# bitbake
sys.path.append(os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib'))
import bb
import bb.parse
from string import split, join
__version__ = "0.0.2"
class HTMLFormatter:
"""
Simple class to help to generate some sort of HTML files. It is
quite inferior solution compared to docbook, gtkdoc, doxygen but it
should work for now.
We've a global introduction site (index.html) and then one site for
the list of keys (alphabetical sorted) and one for the list of groups,
one site for each key with links to the relations and groups.
index.html
all_keys.html
all_groups.html
groupNAME.html
keyNAME.html
"""
def replace(self, text, *pairs):
"""
From pydoc... almost identical at least
"""
while pairs:
(a,b) = pairs[0]
text = join(split(text, a), b)
pairs = pairs[1:]
return text
def escape(self, text):
"""
Escape string to be conform HTML
"""
return self.replace(text,
('&', '&amp;'),
('<', '&lt;' ),
('>', '&gt;' ) )
def createNavigator(self):
"""
Create the navgiator
"""
return """<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="g" href="index.html">Home</a></td>
<td><a accesskey="n" href="all_groups.html">Groups</a></td>
<td><a accesskey="u" href="all_keys.html">Keys</a></td>
</tr></table>
"""
def relatedKeys(self, item):
"""
Create HTML to link to foreign keys
"""
if len(item.related()) == 0:
return ""
txt = "<p><b>See also:</b><br>"
txts = []
for it in item.related():
txts.append("""<a href="key%(it)s.html">%(it)s</a>""" % vars() )
return txt + ",".join(txts)
def groups(self,item):
"""
Create HTML to link to related groups
"""
if len(item.groups()) == 0:
return ""
txt = "<p><b>See also:</b><br>"
txts = []
for group in item.groups():
txts.append( """<a href="group%s.html">%s</a> """ % (group,group) )
return txt + ",".join(txts)
def createKeySite(self,item):
"""
Create a site for a key. It contains the header/navigator, a heading,
the description, links to related keys and to the groups.
"""
return """<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Key %s</title></head>
<link rel="stylesheet" href="style.css" type="text/css">
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
%s
<h2><span class="refentrytitle">%s</span></h2>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<p>
%s
</p>
</div>
<div class="refsynopsisdiv">
<h2>Related Keys</h2>
<p>
%s
</p>
</div>
<div class="refsynopsisdiv">
<h2>Groups</h2>
<p>
%s
</p>
</div>
</body>
""" % (item.name(), self.createNavigator(), item.name(),
self.escape(item.description()), self.relatedKeys(item), self.groups(item))
def createGroupsSite(self, doc):
"""
Create the Group Overview site
"""
groups = ""
sorted_groups = doc.groups()
sorted_groups.sort()
for group in sorted_groups:
groups += """<a href="group%s.html">%s</a><br>""" % (group, group)
return """<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Group overview</title></head>
<link rel="stylesheet" href="style.css" type="text/css">
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
%s
<h2>Available Groups</h2>
%s
</body>
""" % (self.createNavigator(), groups)
def createIndex(self):
"""
Create the index file
"""
return """<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Bitbake Documentation</title></head>
<link rel="stylesheet" href="style.css" type="text/css">
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
%s
<h2>Documentation Entrance</h2>
<a href="all_groups.html">All available groups</a><br>
<a href="all_keys.html">All available keys</a><br>
</body>
""" % self.createNavigator()
def createKeysSite(self, doc):
"""
Create Overview of all avilable keys
"""
keys = ""
sorted_keys = doc.doc_keys()
sorted_keys.sort()
for key in sorted_keys:
keys += """<a href="key%s.html">%s</a><br>""" % (key, key)
return """<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Key overview</title></head>
<link rel="stylesheet" href="style.css" type="text/css">
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
%s
<h2>Available Keys</h2>
%s
</body>
""" % (self.createNavigator(), keys)
def createGroupSite(self, gr, items, _description = None):
"""
Create a site for a group:
Group the name of the group, items contain the name of the keys
inside this group
"""
groups = ""
description = ""
# create a section with the group descriptions
if _description:
description += "<h2 Description of Grozp %s</h2>" % gr
description += _description
items.sort(lambda x,y:cmp(x.name(),y.name()))
for group in items:
groups += """<a href="key%s.html">%s</a><br>""" % (group.name(), group.name())
return """<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Group %s</title></head>
<link rel="stylesheet" href="style.css" type="text/css">
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
%s
%s
<div class="refsynopsisdiv">
<h2>Keys in Group %s</h2>
<pre class="synopsis">
%s
</pre>
</div>
</body>
""" % (gr, self.createNavigator(), description, gr, groups)
def createCSS(self):
"""
Create the CSS file
"""
return """.synopsis, .classsynopsis
{
background: #eeeeee;
border: solid 1px #aaaaaa;
padding: 0.5em;
}
.programlisting
{
background: #eeeeff;
border: solid 1px #aaaaff;
padding: 0.5em;
}
.variablelist
{
padding: 4px;
margin-left: 3em;
}
.variablelist td:first-child
{
vertical-align: top;
}
table.navigation
{
background: #ffeeee;
border: solid 1px #ffaaaa;
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.navigation a
{
color: #770000;
}
.navigation a:visited
{
color: #550000;
}
.navigation .title
{
font-size: 200%;
}
div.refnamediv
{
margin-top: 2em;
}
div.gallery-float
{
float: left;
padding: 10px;
}
div.gallery-float img
{
border-style: none;
}
div.gallery-spacer
{
clear: both;
}
a
{
text-decoration: none;
}
a:hover
{
text-decoration: underline;
color: #FF0000;
}
"""
class DocumentationItem:
"""
A class to hold information about a configuration
item. It contains the key name, description, a list of related names,
and the group this item is contained in.
"""
def __init__(self):
self._groups = []
self._related = []
self._name = ""
self._desc = ""
def groups(self):
return self._groups
def name(self):
return self._name
def description(self):
return self._desc
def related(self):
return self._related
def setName(self, name):
self._name = name
def setDescription(self, desc):
self._desc = desc
def addGroup(self, group):
self._groups.append(group)
def addRelation(self,relation):
self._related.append(relation)
def sort(self):
self._related.sort()
self._groups.sort()
class Documentation:
"""
Holds the documentation... with mappings from key to items...
"""
def __init__(self):
self.__keys = {}
self.__groups = {}
def insert_doc_item(self, item):
"""
Insert the Doc Item into the internal list
of representation
"""
item.sort()
self.__keys[item.name()] = item
for group in item.groups():
if not group in self.__groups:
self.__groups[group] = []
self.__groups[group].append(item)
self.__groups[group].sort()
def doc_item(self, key):
"""
Return the DocumentationInstance describing the key
"""
try:
return self.__keys[key]
except KeyError:
return None
def doc_keys(self):
"""
Return the documented KEYS (names)
"""
return self.__keys.keys()
def groups(self):
"""
Return the names of available groups
"""
return self.__groups.keys()
def group_content(self,group_name):
"""
Return a list of keys/names that are in a specefic
group or the empty list
"""
try:
return self.__groups[group_name]
except KeyError:
return []
def parse_cmdline(args):
"""
Parse the CMD line and return the result as a n-tuple
"""
parser = optparse.OptionParser( version = "Bitbake Documentation Tool Core version %s, %%prog version %s" % (bb.__version__,__version__))
usage = """%prog [options]
Create a set of html pages (documentation) for a bitbake.conf....
"""
# Add the needed options
parser.add_option( "-c", "--config", help = "Use the specified configuration file as source",
action = "store", dest = "config", default = os.path.join("conf", "documentation.conf") )
parser.add_option( "-o", "--output", help = "Output directory for html files",
action = "store", dest = "output", default = "html/" )
parser.add_option( "-D", "--debug", help = "Increase the debug level",
action = "count", dest = "debug", default = 0 )
parser.add_option( "-v","--verbose", help = "output more chit-char to the terminal",
action = "store_true", dest = "verbose", default = False )
options, args = parser.parse_args( sys.argv )
if options.debug:
bb.msg.set_debug_level(options.debug)
return options.config, options.output
def main():
"""
The main Method
"""
(config_file,output_dir) = parse_cmdline( sys.argv )
# right to let us load the file now
try:
documentation = bb.parse.handle( config_file, bb.data.init() )
except IOError:
bb.fatal( "Unable to open %s" % config_file )
except bb.parse.ParseError:
bb.fatal( "Unable to parse %s" % config_file )
if isinstance(documentation, dict):
documentation = documentation[""]
# Assuming we've the file loaded now, we will initialize the 'tree'
doc = Documentation()
# defined states
state_begin = 0
state_see = 1
state_group = 2
for key in bb.data.keys(documentation):
data = bb.data.getVarFlag(key, "doc", documentation)
if not data:
continue
# The Documentation now starts
doc_ins = DocumentationItem()
doc_ins.setName(key)
tokens = data.split(' ')
state = state_begin
string= ""
for token in tokens:
token = token.strip(',')
if not state == state_see and token == "@see":
state = state_see
continue
elif not state == state_group and token == "@group":
state = state_group
continue
if state == state_begin:
string += " %s" % token
elif state == state_see:
doc_ins.addRelation(token)
elif state == state_group:
doc_ins.addGroup(token)
# set the description
doc_ins.setDescription(string)
doc.insert_doc_item(doc_ins)
# let us create the HTML now
bb.mkdirhier(output_dir)
os.chdir(output_dir)
# Let us create the sites now. We do it in the following order
# Start with the index.html. It will point to sites explaining all
# keys and groups
html_slave = HTMLFormatter()
f = file('style.css', 'w')
print >> f, html_slave.createCSS()
f = file('index.html', 'w')
print >> f, html_slave.createIndex()
f = file('all_groups.html', 'w')
print >> f, html_slave.createGroupsSite(doc)
f = file('all_keys.html', 'w')
print >> f, html_slave.createKeysSite(doc)
# now for each group create the site
for group in doc.groups():
f = file('group%s.html' % group, 'w')
print >> f, html_slave.createGroupSite(group, doc.group_content(group))
# now for the keys
for key in doc.doc_keys():
f = file('key%s.html' % doc.doc_item(key).name(), 'w')
print >> f, html_slave.createKeySite(doc.doc_item(key))
if __name__ == "__main__":
main()

318
bitbake-dev/lib/bb/COW.py Normal file
View File

@@ -0,0 +1,318 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# This is a copy on write dictionary and set which abuses classes to try and be nice and fast.
#
# Copyright (C) 2006 Tim Amsell
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
#Please Note:
# Be careful when using mutable types (ie Dict and Lists) - operations involving these are SLOW.
# Assign a file to __warn__ to get warnings about slow operations.
#
import copy
import types
types.ImmutableTypes = tuple([ \
types.BooleanType, \
types.ComplexType, \
types.FloatType, \
types.IntType, \
types.LongType, \
types.NoneType, \
types.TupleType, \
frozenset] + \
list(types.StringTypes))
MUTABLE = "__mutable__"
class COWMeta(type):
pass
class COWDictMeta(COWMeta):
__warn__ = False
__hasmutable__ = False
__marker__ = tuple()
def __str__(cls):
# FIXME: I have magic numbers!
return "<COWDict Level: %i Current Keys: %i>" % (cls.__count__, len(cls.__dict__) - 3)
__repr__ = __str__
def cow(cls):
class C(cls):
__count__ = cls.__count__ + 1
return C
copy = cow
__call__ = cow
def __setitem__(cls, key, value):
if not isinstance(value, types.ImmutableTypes):
if not isinstance(value, COWMeta):
cls.__hasmutable__ = True
key += MUTABLE
setattr(cls, key, value)
def __getmutable__(cls, key, readonly=False):
nkey = key + MUTABLE
try:
return cls.__dict__[nkey]
except KeyError:
pass
value = getattr(cls, nkey)
if readonly:
return value
if not cls.__warn__ is False and not isinstance(value, COWMeta):
print >> cls.__warn__, "Warning: Doing a copy because %s is a mutable type." % key
try:
value = value.copy()
except AttributeError, e:
value = copy.copy(value)
setattr(cls, nkey, value)
return value
__getmarker__ = []
def __getreadonly__(cls, key, default=__getmarker__):
"""\
Get a value (even if mutable) which you promise not to change.
"""
return cls.__getitem__(key, default, True)
def __getitem__(cls, key, default=__getmarker__, readonly=False):
try:
try:
value = getattr(cls, key)
except AttributeError:
value = cls.__getmutable__(key, readonly)
# This is for values which have been deleted
if value is cls.__marker__:
raise AttributeError("key %s does not exist." % key)
return value
except AttributeError, e:
if not default is cls.__getmarker__:
return default
raise KeyError(str(e))
def __delitem__(cls, key):
cls.__setitem__(key, cls.__marker__)
def __revertitem__(cls, key):
if not cls.__dict__.has_key(key):
key += MUTABLE
delattr(cls, key)
def has_key(cls, key):
value = cls.__getreadonly__(key, cls.__marker__)
if value is cls.__marker__:
return False
return True
def iter(cls, type, readonly=False):
for key in dir(cls):
if key.startswith("__"):
continue
if key.endswith(MUTABLE):
key = key[:-len(MUTABLE)]
if type == "keys":
yield key
try:
if readonly:
value = cls.__getreadonly__(key)
else:
value = cls[key]
except KeyError:
continue
if type == "values":
yield value
if type == "items":
yield (key, value)
raise StopIteration()
def iterkeys(cls):
return cls.iter("keys")
def itervalues(cls, readonly=False):
if not cls.__warn__ is False and cls.__hasmutable__ and readonly is False:
print >> cls.__warn__, "Warning: If you arn't going to change any of the values call with True."
return cls.iter("values", readonly)
def iteritems(cls, readonly=False):
if not cls.__warn__ is False and cls.__hasmutable__ and readonly is False:
print >> cls.__warn__, "Warning: If you arn't going to change any of the values call with True."
return cls.iter("items", readonly)
class COWSetMeta(COWDictMeta):
def __str__(cls):
# FIXME: I have magic numbers!
return "<COWSet Level: %i Current Keys: %i>" % (cls.__count__, len(cls.__dict__) -3)
__repr__ = __str__
def cow(cls):
class C(cls):
__count__ = cls.__count__ + 1
return C
def add(cls, value):
COWDictMeta.__setitem__(cls, repr(hash(value)), value)
def remove(cls, value):
COWDictMeta.__delitem__(cls, repr(hash(value)))
def __in__(cls, value):
return COWDictMeta.has_key(repr(hash(value)))
def iterkeys(cls):
raise TypeError("sets don't have keys")
def iteritems(cls):
raise TypeError("sets don't have 'items'")
# These are the actual classes you use!
class COWDictBase(object):
__metaclass__ = COWDictMeta
__count__ = 0
class COWSetBase(object):
__metaclass__ = COWSetMeta
__count__ = 0
if __name__ == "__main__":
import sys
COWDictBase.__warn__ = sys.stderr
a = COWDictBase()
print "a", a
a['a'] = 'a'
a['b'] = 'b'
a['dict'] = {}
b = a.copy()
print "b", b
b['c'] = 'b'
print
print "a", a
for x in a.iteritems():
print x
print "--"
print "b", b
for x in b.iteritems():
print x
print
b['dict']['a'] = 'b'
b['a'] = 'c'
print "a", a
for x in a.iteritems():
print x
print "--"
print "b", b
for x in b.iteritems():
print x
print
try:
b['dict2']
except KeyError, e:
print "Okay!"
a['set'] = COWSetBase()
a['set'].add("o1")
a['set'].add("o1")
a['set'].add("o2")
print "a", a
for x in a['set'].itervalues():
print x
print "--"
print "b", b
for x in b['set'].itervalues():
print x
print
b['set'].add('o3')
print "a", a
for x in a['set'].itervalues():
print x
print "--"
print "b", b
for x in b['set'].itervalues():
print x
print
a['set2'] = set()
a['set2'].add("o1")
a['set2'].add("o1")
a['set2'].add("o2")
print "a", a
for x in a.iteritems():
print x
print "--"
print "b", b
for x in b.iteritems(readonly=True):
print x
print
del b['b']
try:
print b['b']
except KeyError:
print "Yay! deleted key raises error"
if b.has_key('b'):
print "Boo!"
else:
print "Yay - has_key with delete works!"
print "a", a
for x in a.iteritems():
print x
print "--"
print "b", b
for x in b.iteritems(readonly=True):
print x
print
b.__revertitem__('b')
print "a", a
for x in a.iteritems():
print x
print "--"
print "b", b
for x in b.iteritems(readonly=True):
print x
print
b.__revertitem__('dict')
print "a", a
for x in a.iteritems():
print x
print "--"
print "b", b
for x in b.iteritems(readonly=True):
print x
print

File diff suppressed because it is too large Load Diff

394
bitbake-dev/lib/bb/build.py Normal file
View File

@@ -0,0 +1,394 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# BitBake 'Build' implementation
#
# Core code for function execution and task handling in the
# BitBake build tools.
#
# Copyright (C) 2003, 2004 Chris Larson
#
# Based on Gentoo's portage.py.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
#Based on functions from the base bb module, Copyright 2003 Holger Schurig
from bb import data, event, mkdirhier, utils
import bb, os, sys
# When we execute a python function we'd like certain things
# in all namespaces, hence we add them to __builtins__
# If we do not do this and use the exec globals, they will
# not be available to subfunctions.
__builtins__['bb'] = bb
__builtins__['os'] = os
# events
class FuncFailed(Exception):
"""
Executed function failed
First parameter a message
Second paramter is a logfile (optional)
"""
class EventException(Exception):
"""Exception which is associated with an Event."""
def __init__(self, msg, event):
self.args = msg, event
class TaskBase(event.Event):
"""Base class for task events"""
def __init__(self, t, d ):
self._task = t
self._package = bb.data.getVar("PF", d, 1)
event.Event.__init__(self, d)
self._message = "package %s: task %s: %s" % (bb.data.getVar("PF", d, 1), t, bb.event.getName(self)[4:])
def getTask(self):
return self._task
def setTask(self, task):
self._task = task
task = property(getTask, setTask, None, "task property")
class TaskStarted(TaskBase):
"""Task execution started"""
class TaskSucceeded(TaskBase):
"""Task execution completed"""
class TaskFailed(TaskBase):
"""Task execution failed"""
def __init__(self, msg, logfile, t, d ):
self.logfile = logfile
self.msg = msg
TaskBase.__init__(self, t, d)
class InvalidTask(TaskBase):
"""Invalid Task"""
# functions
def exec_func(func, d, dirs = None):
"""Execute an BB 'function'"""
body = data.getVar(func, d)
if not body:
return
flags = data.getVarFlags(func, d)
for item in ['deps', 'check', 'interactive', 'python', 'cleandirs', 'dirs', 'lockfiles', 'fakeroot']:
if not item in flags:
flags[item] = None
ispython = flags['python']
cleandirs = (data.expand(flags['cleandirs'], d) or "").split()
for cdir in cleandirs:
os.system("rm -rf %s" % cdir)
if dirs:
dirs = data.expand(dirs, d)
else:
dirs = (data.expand(flags['dirs'], d) or "").split()
for adir in dirs:
mkdirhier(adir)
if len(dirs) > 0:
adir = dirs[-1]
else:
adir = data.getVar('B', d, 1)
# Save current directory
try:
prevdir = os.getcwd()
except OSError:
prevdir = data.getVar('TOPDIR', d, True)
# Setup logfiles
t = data.getVar('T', d, 1)
if not t:
bb.msg.fatal(bb.msg.domain.Build, "T not set")
mkdirhier(t)
# Gross hack, FIXME
import random
logfile = "%s/log.%s.%s.%s" % (t, func, str(os.getpid()),random.random())
runfile = "%s/run.%s.%s" % (t, func, str(os.getpid()))
# Change to correct directory (if specified)
if adir and os.access(adir, os.F_OK):
os.chdir(adir)
# Handle logfiles
si = file('/dev/null', 'r')
try:
if bb.msg.debug_level['default'] > 0 or ispython:
so = os.popen("tee \"%s\"" % logfile, "w")
else:
so = file(logfile, 'w')
except OSError, e:
bb.msg.error(bb.msg.domain.Build, "opening log file: %s" % e)
pass
se = so
# Dup the existing fds so we dont lose them
osi = [os.dup(sys.stdin.fileno()), sys.stdin.fileno()]
oso = [os.dup(sys.stdout.fileno()), sys.stdout.fileno()]
ose = [os.dup(sys.stderr.fileno()), sys.stderr.fileno()]
# Replace those fds with our own
os.dup2(si.fileno(), osi[1])
os.dup2(so.fileno(), oso[1])
os.dup2(se.fileno(), ose[1])
locks = []
lockfiles = (data.expand(flags['lockfiles'], d) or "").split()
for lock in lockfiles:
locks.append(bb.utils.lockfile(lock))
try:
# Run the function
if ispython:
exec_func_python(func, d, runfile, logfile)
else:
exec_func_shell(func, d, runfile, logfile, flags)
# Restore original directory
try:
os.chdir(prevdir)
except:
pass
finally:
# Unlock any lockfiles
for lock in locks:
bb.utils.unlockfile(lock)
# Restore the backup fds
os.dup2(osi[0], osi[1])
os.dup2(oso[0], oso[1])
os.dup2(ose[0], ose[1])
# Close our logs
si.close()
so.close()
se.close()
if os.path.exists(logfile) and os.path.getsize(logfile) == 0:
bb.msg.debug(2, bb.msg.domain.Build, "Zero size logfile %s, removing" % logfile)
os.remove(logfile)
# Close the backup fds
os.close(osi[0])
os.close(oso[0])
os.close(ose[0])
def exec_func_python(func, d, runfile, logfile):
"""Execute a python BB 'function'"""
import re, os
bbfile = bb.data.getVar('FILE', d, 1)
tmp = "def " + func + "():\n%s" % data.getVar(func, d)
tmp += '\n' + func + '()'
f = open(runfile, "w")
f.write(tmp)
comp = utils.better_compile(tmp, func, bbfile)
g = {} # globals
g['d'] = d
try:
utils.better_exec(comp, g, tmp, bbfile)
except:
(t,value,tb) = sys.exc_info()
if t in [bb.parse.SkipPackage, bb.build.FuncFailed]:
raise
bb.msg.error(bb.msg.domain.Build, "Function %s failed" % func)
raise FuncFailed("function %s failed" % func, logfile)
def exec_func_shell(func, d, runfile, logfile, flags):
"""Execute a shell BB 'function' Returns true if execution was successful.
For this, it creates a bash shell script in the tmp dectory, writes the local
data into it and finally executes. The output of the shell will end in a log file and stdout.
Note on directory behavior. The 'dirs' varflag should contain a list
of the directories you need created prior to execution. The last
item in the list is where we will chdir/cd to.
"""
deps = flags['deps']
check = flags['check']
if check in globals():
if globals()[check](func, deps):
return
f = open(runfile, "w")
f.write("#!/bin/sh -e\n")
if bb.msg.debug_level['default'] > 0: f.write("set -x\n")
data.emit_env(f, d)
f.write("cd %s\n" % os.getcwd())
if func: f.write("%s\n" % func)
f.close()
os.chmod(runfile, 0775)
if not func:
bb.msg.error(bb.msg.domain.Build, "Function not specified")
raise FuncFailed("Function not specified for exec_func_shell")
# execute function
if flags['fakeroot']:
maybe_fakeroot = "PATH=\"%s\" fakeroot " % bb.data.getVar("PATH", d, 1)
else:
maybe_fakeroot = ''
lang_environment = "LC_ALL=C "
ret = os.system('%s%ssh -e %s' % (lang_environment, maybe_fakeroot, runfile))
if ret == 0:
return
bb.msg.error(bb.msg.domain.Build, "Function %s failed" % func)
raise FuncFailed("function %s failed" % func, logfile)
def exec_task(task, d):
"""Execute an BB 'task'
The primary difference between executing a task versus executing
a function is that a task exists in the task digraph, and therefore
has dependencies amongst other tasks."""
# Check whther this is a valid task
if not data.getVarFlag(task, 'task', d):
raise EventException("No such task", InvalidTask(task, d))
try:
bb.msg.debug(1, bb.msg.domain.Build, "Executing task %s" % task)
old_overrides = data.getVar('OVERRIDES', d, 0)
localdata = data.createCopy(d)
data.setVar('OVERRIDES', 'task-%s:%s' % (task[3:], old_overrides), localdata)
data.update_data(localdata)
data.expandKeys(localdata)
event.fire(TaskStarted(task, localdata))
exec_func(task, localdata)
event.fire(TaskSucceeded(task, localdata))
except FuncFailed, message:
# Try to extract the optional logfile
try:
(msg, logfile) = message
except:
logfile = None
msg = message
bb.msg.note(1, bb.msg.domain.Build, "Task failed: %s" % message )
failedevent = TaskFailed(msg, logfile, task, d)
event.fire(failedevent)
raise EventException("Function failed in task: %s" % message, failedevent)
# make stamp, or cause event and raise exception
if not data.getVarFlag(task, 'nostamp', d) and not data.getVarFlag(task, 'selfstamp', d):
make_stamp(task, d)
def extract_stamp(d, fn):
"""
Extracts stamp format which is either a data dictonary (fn unset)
or a dataCache entry (fn set).
"""
if fn:
return d.stamp[fn]
return data.getVar('STAMP', d, 1)
def stamp_internal(task, d, file_name):
"""
Internal stamp helper function
Removes any stamp for the given task
Makes sure the stamp directory exists
Returns the stamp path+filename
"""
stamp = extract_stamp(d, file_name)
if not stamp:
return
stamp = "%s.%s" % (stamp, task)
mkdirhier(os.path.dirname(stamp))
# Remove the file and recreate to force timestamp
# change on broken NFS filesystems
if os.access(stamp, os.F_OK):
os.remove(stamp)
return stamp
def make_stamp(task, d, file_name = None):
"""
Creates/updates a stamp for a given task
(d can be a data dict or dataCache)
"""
stamp = stamp_internal(task, d, file_name)
if stamp:
f = open(stamp, "w")
f.close()
def del_stamp(task, d, file_name = None):
"""
Removes a stamp for a given task
(d can be a data dict or dataCache)
"""
stamp_internal(task, d, file_name)
def add_tasks(tasklist, d):
task_deps = data.getVar('_task_deps', d)
if not task_deps:
task_deps = {}
if not 'tasks' in task_deps:
task_deps['tasks'] = []
if not 'parents' in task_deps:
task_deps['parents'] = {}
for task in tasklist:
task = data.expand(task, d)
data.setVarFlag(task, 'task', 1, d)
if not task in task_deps['tasks']:
task_deps['tasks'].append(task)
flags = data.getVarFlags(task, d)
def getTask(name):
if not name in task_deps:
task_deps[name] = {}
if name in flags:
deptask = data.expand(flags[name], d)
task_deps[name][task] = deptask
getTask('depends')
getTask('deptask')
getTask('rdeptask')
getTask('recrdeptask')
getTask('nostamp')
task_deps['parents'][task] = []
for dep in flags['deps']:
dep = data.expand(dep, d)
task_deps['parents'][task].append(dep)
# don't assume holding a reference
data.setVar('_task_deps', task_deps, d)
def remove_task(task, kill, d):
"""Remove an BB 'task'.
If kill is 1, also remove tasks that depend on this task."""
data.delVarFlag(task, 'task', d)

534
bitbake-dev/lib/bb/cache.py Normal file
View File

@@ -0,0 +1,534 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# BitBake 'Event' implementation
#
# Caching of bitbake variables before task execution
# Copyright (C) 2006 Richard Purdie
# but small sections based on code from bin/bitbake:
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2003, 2004 Phil Blundell
# Copyright (C) 2003 - 2005 Michael 'Mickey' Lauer
# Copyright (C) 2005 Holger Hans Peter Freyther
# Copyright (C) 2005 ROAD GmbH
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import os, re
import bb.data
import bb.utils
try:
import cPickle as pickle
except ImportError:
import pickle
bb.msg.note(1, bb.msg.domain.Cache, "Importing cPickle failed. Falling back to a very slow implementation.")
__cache_version__ = "130"
class Cache:
"""
BitBake Cache implementation
"""
def __init__(self, cooker):
self.cachedir = bb.data.getVar("CACHE", cooker.configuration.data, True)
self.clean = {}
self.checked = {}
self.depends_cache = {}
self.data = None
self.data_fn = None
self.cacheclean = True
if self.cachedir in [None, '']:
self.has_cache = False
bb.msg.note(1, bb.msg.domain.Cache, "Not using a cache. Set CACHE = <directory> to enable.")
return
self.has_cache = True
self.cachefile = os.path.join(self.cachedir,"bb_cache.dat")
bb.msg.debug(1, bb.msg.domain.Cache, "Using cache in '%s'" % self.cachedir)
try:
os.stat( self.cachedir )
except OSError:
bb.mkdirhier( self.cachedir )
# If any of configuration.data's dependencies are newer than the
# cache there isn't even any point in loading it...
newest_mtime = 0
deps = bb.data.getVar("__depends", cooker.configuration.data, True)
for f,old_mtime in deps:
if old_mtime > newest_mtime:
newest_mtime = old_mtime
if bb.parse.cached_mtime_noerror(self.cachefile) >= newest_mtime:
try:
p = pickle.Unpickler(file(self.cachefile, "rb"))
self.depends_cache, version_data = p.load()
if version_data['CACHE_VER'] != __cache_version__:
raise ValueError, 'Cache Version Mismatch'
if version_data['BITBAKE_VER'] != bb.__version__:
raise ValueError, 'Bitbake Version Mismatch'
except EOFError:
bb.msg.note(1, bb.msg.domain.Cache, "Truncated cache found, rebuilding...")
self.depends_cache = {}
except:
bb.msg.note(1, bb.msg.domain.Cache, "Invalid cache found, rebuilding...")
self.depends_cache = {}
else:
try:
os.stat( self.cachefile )
bb.msg.note(1, bb.msg.domain.Cache, "Out of date cache found, rebuilding...")
except OSError:
pass
def getVar(self, var, fn, exp = 0):
"""
Gets the value of a variable
(similar to getVar in the data class)
There are two scenarios:
1. We have cached data - serve from depends_cache[fn]
2. We're learning what data to cache - serve from data
backend but add a copy of the data to the cache.
"""
if fn in self.clean:
return self.depends_cache[fn][var]
if not fn in self.depends_cache:
self.depends_cache[fn] = {}
if fn != self.data_fn:
# We're trying to access data in the cache which doesn't exist
# yet setData hasn't been called to setup the right access. Very bad.
bb.msg.error(bb.msg.domain.Cache, "Parsing error data_fn %s and fn %s don't match" % (self.data_fn, fn))
self.cacheclean = False
result = bb.data.getVar(var, self.data, exp)
self.depends_cache[fn][var] = result
return result
def setData(self, virtualfn, fn, data):
"""
Called to prime bb_cache ready to learn which variables to cache.
Will be followed by calls to self.getVar which aren't cached
but can be fulfilled from self.data.
"""
self.data_fn = virtualfn
self.data = data
# Make sure __depends makes the depends_cache
self.getVar("__depends", virtualfn, True)
self.depends_cache[virtualfn]["CACHETIMESTAMP"] = bb.parse.cached_mtime(fn)
def virtualfn2realfn(self, virtualfn):
"""
Convert a virtual file name to a real one + the associated subclass keyword
"""
fn = virtualfn
cls = ""
if virtualfn.startswith('virtual:'):
cls = virtualfn.split(':', 2)[1]
fn = virtualfn.replace('virtual:' + cls + ':', '')
#bb.msg.debug(2, bb.msg.domain.Cache, "virtualfn2realfn %s to %s %s" % (virtualfn, fn, cls))
return (fn, cls)
def realfn2virtual(self, realfn, cls):
"""
Convert a real filename + the associated subclass keyword to a virtual filename
"""
if cls == "":
#bb.msg.debug(2, bb.msg.domain.Cache, "realfn2virtual %s and '%s' to %s" % (realfn, cls, realfn))
return realfn
#bb.msg.debug(2, bb.msg.domain.Cache, "realfn2virtual %s and %s to %s" % (realfn, cls, "virtual:" + cls + ":" + realfn))
return "virtual:" + cls + ":" + realfn
def loadDataFull(self, virtualfn, cfgData):
"""
Return a complete set of data for fn.
To do this, we need to parse the file.
"""
(fn, cls) = self.virtualfn2realfn(virtualfn)
bb.msg.debug(1, bb.msg.domain.Cache, "Parsing %s (full)" % fn)
bb_data, skipped = self.load_bbfile(fn, cfgData)
if isinstance(bb_data, dict):
return bb_data[cls]
return bb_data
def loadData(self, fn, cfgData, cacheData):
"""
Load a subset of data for fn.
If the cached data is valid we do nothing,
To do this, we need to parse the file and set the system
to record the variables accessed.
Return the cache status and whether the file was skipped when parsed
"""
if fn not in self.checked:
self.cacheValidUpdate(fn)
if self.cacheValid(fn):
if "SKIPPED" in self.depends_cache[fn]:
return True, True
self.handle_data(fn, cacheData)
multi = self.getVar('BBCLASSEXTEND', fn, True)
if multi:
for cls in multi.split():
virtualfn = self.realfn2virtual(fn, cls)
# Pretend we're clean so getVar works
self.clean[virtualfn] = ""
self.handle_data(virtualfn, cacheData)
return True, False
bb.msg.debug(1, bb.msg.domain.Cache, "Parsing %s" % fn)
bb_data, skipped = self.load_bbfile(fn, cfgData)
if skipped:
if isinstance(bb_data, dict):
self.setData(fn, fn, bb_data[""])
else:
self.setData(fn, fn, bb_data)
return False, skipped
if isinstance(bb_data, dict):
for data in bb_data:
virtualfn = self.realfn2virtual(fn, data)
self.setData(virtualfn, fn, bb_data[data])
self.handle_data(virtualfn, cacheData)
return False, skipped
self.setData(fn, fn, bb_data)
self.handle_data(fn, cacheData)
return False, skipped
def cacheValid(self, fn):
"""
Is the cache valid for fn?
Fast version, no timestamps checked.
"""
# Is cache enabled?
if not self.has_cache:
return False
if fn in self.clean:
return True
return False
def cacheValidUpdate(self, fn):
"""
Is the cache valid for fn?
Make thorough (slower) checks including timestamps.
"""
# Is cache enabled?
if not self.has_cache:
return False
self.checked[fn] = ""
# Pretend we're clean so getVar works
self.clean[fn] = ""
# File isn't in depends_cache
if not fn in self.depends_cache:
bb.msg.debug(2, bb.msg.domain.Cache, "Cache: %s is not cached" % fn)
self.remove(fn)
return False
mtime = bb.parse.cached_mtime_noerror(fn)
# Check file still exists
if mtime == 0:
bb.msg.debug(2, bb.msg.domain.Cache, "Cache: %s not longer exists" % fn)
self.remove(fn)
return False
# Check the file's timestamp
if mtime != self.getVar("CACHETIMESTAMP", fn, True):
bb.msg.debug(2, bb.msg.domain.Cache, "Cache: %s changed" % fn)
self.remove(fn)
return False
# Check dependencies are still valid
depends = self.getVar("__depends", fn, True)
if depends:
for f,old_mtime in depends:
fmtime = bb.parse.cached_mtime_noerror(f)
# Check if file still exists
if old_mtime != 0 and fmtime == 0:
self.remove(fn)
return False
if (fmtime != old_mtime):
bb.msg.debug(2, bb.msg.domain.Cache, "Cache: %s's dependency %s changed" % (fn, f))
self.remove(fn)
return False
#bb.msg.debug(2, bb.msg.domain.Cache, "Depends Cache: %s is clean" % fn)
if not fn in self.clean:
self.clean[fn] = ""
return True
def skip(self, fn):
"""
Mark a fn as skipped
Called from the parser
"""
if not fn in self.depends_cache:
self.depends_cache[fn] = {}
self.depends_cache[fn]["SKIPPED"] = "1"
def remove(self, fn):
"""
Remove a fn from the cache
Called from the parser in error cases
"""
bb.msg.debug(1, bb.msg.domain.Cache, "Removing %s from cache" % fn)
if fn in self.depends_cache:
del self.depends_cache[fn]
if fn in self.clean:
del self.clean[fn]
def sync(self):
"""
Save the cache
Called from the parser when complete (or exiting)
"""
import copy
if not self.has_cache:
return
if self.cacheclean:
bb.msg.note(1, bb.msg.domain.Cache, "Cache is clean, not saving.")
return
version_data = {}
version_data['CACHE_VER'] = __cache_version__
version_data['BITBAKE_VER'] = bb.__version__
cache_data = copy.deepcopy(self.depends_cache)
for fn in self.depends_cache:
if '__BB_DONT_CACHE' in self.depends_cache[fn] and self.depends_cache[fn]['__BB_DONT_CACHE']:
bb.msg.debug(2, bb.msg.domain.Cache, "Not caching %s, marked as not cacheable" % fn)
del cache_data[fn]
elif 'PV' in self.depends_cache[fn] and 'SRCREVINACTION' in self.depends_cache[fn]['PV']:
bb.msg.error(bb.msg.domain.Cache, "Not caching %s as it had SRCREVINACTION in PV. Please report this bug" % fn)
del cache_data[fn]
p = pickle.Pickler(file(self.cachefile, "wb" ), -1 )
p.dump([cache_data, version_data])
def mtime(self, cachefile):
return bb.parse.cached_mtime_noerror(cachefile)
def handle_data(self, file_name, cacheData):
"""
Save data we need into the cache
"""
pn = self.getVar('PN', file_name, True)
pe = self.getVar('PE', file_name, True) or "0"
pv = self.getVar('PV', file_name, True)
if 'SRCREVINACTION' in pv:
bb.note("Found SRCREVINACTION in PV (%s) or %s. Please report this bug." % (pv, file_name))
pr = self.getVar('PR', file_name, True)
dp = int(self.getVar('DEFAULT_PREFERENCE', file_name, True) or "0")
depends = bb.utils.explode_deps(self.getVar("DEPENDS", file_name, True) or "")
packages = (self.getVar('PACKAGES', file_name, True) or "").split()
packages_dynamic = (self.getVar('PACKAGES_DYNAMIC', file_name, True) or "").split()
rprovides = (self.getVar("RPROVIDES", file_name, True) or "").split()
cacheData.task_deps[file_name] = self.getVar("_task_deps", file_name, True)
# build PackageName to FileName lookup table
if pn not in cacheData.pkg_pn:
cacheData.pkg_pn[pn] = []
cacheData.pkg_pn[pn].append(file_name)
cacheData.stamp[file_name] = self.getVar('STAMP', file_name, True)
# build FileName to PackageName lookup table
cacheData.pkg_fn[file_name] = pn
cacheData.pkg_pepvpr[file_name] = (pe,pv,pr)
cacheData.pkg_dp[file_name] = dp
provides = [pn]
for provide in (self.getVar("PROVIDES", file_name, True) or "").split():
if provide not in provides:
provides.append(provide)
# Build forward and reverse provider hashes
# Forward: virtual -> [filenames]
# Reverse: PN -> [virtuals]
if pn not in cacheData.pn_provides:
cacheData.pn_provides[pn] = []
cacheData.fn_provides[file_name] = provides
for provide in provides:
if provide not in cacheData.providers:
cacheData.providers[provide] = []
cacheData.providers[provide].append(file_name)
if not provide in cacheData.pn_provides[pn]:
cacheData.pn_provides[pn].append(provide)
cacheData.deps[file_name] = []
for dep in depends:
if not dep in cacheData.deps[file_name]:
cacheData.deps[file_name].append(dep)
if not dep in cacheData.all_depends:
cacheData.all_depends.append(dep)
# Build reverse hash for PACKAGES, so runtime dependencies
# can be be resolved (RDEPENDS, RRECOMMENDS etc.)
for package in packages:
if not package in cacheData.packages:
cacheData.packages[package] = []
cacheData.packages[package].append(file_name)
rprovides += (self.getVar("RPROVIDES_%s" % package, file_name, 1) or "").split()
for package in packages_dynamic:
if not package in cacheData.packages_dynamic:
cacheData.packages_dynamic[package] = []
cacheData.packages_dynamic[package].append(file_name)
for rprovide in rprovides:
if not rprovide in cacheData.rproviders:
cacheData.rproviders[rprovide] = []
cacheData.rproviders[rprovide].append(file_name)
# Build hash of runtime depends and rececommends
if not file_name in cacheData.rundeps:
cacheData.rundeps[file_name] = {}
if not file_name in cacheData.runrecs:
cacheData.runrecs[file_name] = {}
rdepends = self.getVar('RDEPENDS', file_name, True) or ""
rrecommends = self.getVar('RRECOMMENDS', file_name, True) or ""
for package in packages + [pn]:
if not package in cacheData.rundeps[file_name]:
cacheData.rundeps[file_name][package] = []
if not package in cacheData.runrecs[file_name]:
cacheData.runrecs[file_name][package] = []
cacheData.rundeps[file_name][package] = rdepends + " " + (self.getVar("RDEPENDS_%s" % package, file_name, True) or "")
cacheData.runrecs[file_name][package] = rrecommends + " " + (self.getVar("RRECOMMENDS_%s" % package, file_name, True) or "")
# Collect files we may need for possible world-dep
# calculations
if not self.getVar('BROKEN', file_name, True) and not self.getVar('EXCLUDE_FROM_WORLD', file_name, True):
cacheData.possible_world.append(file_name)
# Touch this to make sure its in the cache
self.getVar('__BB_DONT_CACHE', file_name, True)
self.getVar('BBCLASSEXTEND', file_name, True)
def load_bbfile( self, bbfile , config):
"""
Load and parse one .bb build file
Return the data and whether parsing resulted in the file being skipped
"""
import bb
from bb import utils, data, parse, debug, event, fatal
# expand tmpdir to include this topdir
data.setVar('TMPDIR', data.getVar('TMPDIR', config, 1) or "", config)
bbfile_loc = os.path.abspath(os.path.dirname(bbfile))
oldpath = os.path.abspath(os.getcwd())
if bb.parse.cached_mtime_noerror(bbfile_loc):
os.chdir(bbfile_loc)
bb_data = data.init_db(config)
try:
bb_data = parse.handle(bbfile, bb_data) # read .bb data
os.chdir(oldpath)
return bb_data, False
except bb.parse.SkipPackage:
os.chdir(oldpath)
return bb_data, True
except:
os.chdir(oldpath)
raise
def init(cooker):
"""
The Objective: Cache the minimum amount of data possible yet get to the
stage of building packages (i.e. tryBuild) without reparsing any .bb files.
To do this, we intercept getVar calls and only cache the variables we see
being accessed. We rely on the cache getVar calls being made for all
variables bitbake might need to use to reach this stage. For each cached
file we need to track:
* Its mtime
* The mtimes of all its dependencies
* Whether it caused a parse.SkipPackage exception
Files causing parsing errors are evicted from the cache.
"""
return Cache(cooker)
#============================================================================#
# CacheData
#============================================================================#
class CacheData:
"""
The data structures we compile from the cached data
"""
def __init__(self):
"""
Direct cache variables
(from Cache.handle_data)
"""
self.providers = {}
self.rproviders = {}
self.packages = {}
self.packages_dynamic = {}
self.possible_world = []
self.pkg_pn = {}
self.pkg_fn = {}
self.pkg_pepvpr = {}
self.pkg_dp = {}
self.pn_provides = {}
self.fn_provides = {}
self.all_depends = []
self.deps = {}
self.rundeps = {}
self.runrecs = {}
self.task_queues = {}
self.task_deps = {}
self.stamp = {}
self.preferred = {}
"""
Indirect Cache variables
(set elsewhere)
"""
self.ignored_dependencies = []
self.world_target = set()
self.bbfile_priority = {}
self.bbfile_config_priorities = []

View File

@@ -0,0 +1,272 @@
"""
BitBake 'Command' module
Provide an interface to interact with the bitbake server through 'commands'
"""
# Copyright (C) 2006-2007 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
"""
The bitbake server takes 'commands' from its UI/commandline.
Commands are either synchronous or asynchronous.
Async commands return data to the client in the form of events.
Sync commands must only return data through the function return value
and must not trigger events, directly or indirectly.
Commands are queued in a CommandQueue
"""
import bb
async_cmds = {}
sync_cmds = {}
class Command:
"""
A queue of asynchronous commands for bitbake
"""
def __init__(self, cooker):
self.cooker = cooker
self.cmds_sync = CommandsSync()
self.cmds_async = CommandsAsync()
# FIXME Add lock for this
self.currentAsyncCommand = None
for attr in CommandsSync.__dict__:
command = attr[:].lower()
method = getattr(CommandsSync, attr)
sync_cmds[command] = (method)
for attr in CommandsAsync.__dict__:
command = attr[:].lower()
method = getattr(CommandsAsync, attr)
async_cmds[command] = (method)
def runCommand(self, commandline):
bb.debug("Running command %s" % commandline)
try:
command = commandline.pop(0)
if command in CommandsSync.__dict__:
# Can run synchronous commands straight away
return getattr(CommandsSync, command)(self.cmds_sync, self, commandline)
if self.currentAsyncCommand is not None:
return "Busy (%s in progress)" % self.currentAsyncCommand[0]
if command not in CommandsAsync.__dict__:
return "No such command"
self.currentAsyncCommand = (command, commandline)
self.cooker.server.register_idle_function(self.cooker.runCommands, self.cooker)
return True
except:
import traceback
return traceback.format_exc()
def runAsyncCommand(self):
try:
if self.currentAsyncCommand is not None:
(command, options) = self.currentAsyncCommand
commandmethod = getattr(CommandsAsync, command)
needcache = getattr( commandmethod, "needcache" )
if needcache and self.cooker.cookerState != bb.cooker.cookerParsed:
self.cooker.updateCache()
return True
else:
commandmethod(self.cmds_async, self, options)
return False
else:
return False
except:
import traceback
self.finishAsyncCommand(traceback.format_exc())
return False
def finishAsyncCommand(self, error = None):
if error:
bb.event.fire(bb.command.CookerCommandFailed(self.cooker.configuration.event_data, error))
else:
bb.event.fire(bb.command.CookerCommandCompleted(self.cooker.configuration.event_data))
self.currentAsyncCommand = None
class CommandsSync:
"""
A class of synchronous commands
These should run quickly so as not to hurt interactive performance.
These must not influence any running synchronous command.
"""
def stateShutdown(self, command, params):
"""
Trigger cooker 'shutdown' mode
"""
command.cooker.cookerAction = bb.cooker.cookerShutdown
def stateStop(self, command, params):
"""
Stop the cooker
"""
command.cooker.cookerAction = bb.cooker.cookerStop
def getCmdLineAction(self, command, params):
"""
Get any command parsed from the commandline
"""
return command.cooker.commandlineAction
def getVariable(self, command, params):
"""
Read the value of a variable from configuration.data
"""
varname = params[0]
expand = True
if len(params) > 1:
expand = params[1]
return bb.data.getVar(varname, command.cooker.configuration.data, expand)
def setVariable(self, command, params):
"""
Set the value of variable in configuration.data
"""
varname = params[0]
value = params[1]
bb.data.setVar(varname, value, command.cooker.configuration.data)
class CommandsAsync:
"""
A class of asynchronous commands
These functions communicate via generated events.
Any function that requires metadata parsing should be here.
"""
def buildFile(self, command, params):
"""
Build a single specified .bb file
"""
bfile = params[0]
task = params[1]
command.cooker.buildFile(bfile, task)
buildFile.needcache = False
def buildTargets(self, command, params):
"""
Build a set of targets
"""
pkgs_to_build = params[0]
task = params[1]
command.cooker.buildTargets(pkgs_to_build, task)
buildTargets.needcache = True
def generateDepTreeEvent(self, command, params):
"""
Generate an event containing the dependency information
"""
pkgs_to_build = params[0]
task = params[1]
command.cooker.generateDepTreeEvent(pkgs_to_build, task)
command.finishAsyncCommand()
generateDepTreeEvent.needcache = True
def generateDotGraph(self, command, params):
"""
Dump dependency information to disk as .dot files
"""
pkgs_to_build = params[0]
task = params[1]
command.cooker.generateDotGraphFiles(pkgs_to_build, task)
command.finishAsyncCommand()
generateDotGraph.needcache = True
def showVersions(self, command, params):
"""
Show the currently selected versions
"""
command.cooker.showVersions()
command.finishAsyncCommand()
showVersions.needcache = True
def showEnvironmentTarget(self, command, params):
"""
Print the environment of a target recipe
(needs the cache to work out which recipe to use)
"""
pkg = params[0]
command.cooker.showEnvironment(None, pkg)
command.finishAsyncCommand()
showEnvironmentTarget.needcache = True
def showEnvironment(self, command, params):
"""
Print the standard environment
or if specified the environment for a specified recipe
"""
bfile = params[0]
command.cooker.showEnvironment(bfile)
command.finishAsyncCommand()
showEnvironment.needcache = False
def parseFiles(self, command, params):
"""
Parse the .bb files
"""
command.cooker.updateCache()
command.finishAsyncCommand()
parseFiles.needcache = True
def compareRevisions(self, command, params):
"""
Parse the .bb files
"""
command.cooker.compareRevisions()
command.finishAsyncCommand()
compareRevisions.needcache = True
#
# Events
#
class CookerCommandCompleted(bb.event.Event):
"""
Cooker command completed
"""
def __init__(self, data):
bb.event.Event.__init__(self, data)
class CookerCommandFailed(bb.event.Event):
"""
Cooker command completed
"""
def __init__(self, data, error):
bb.event.Event.__init__(self, data)
self.error = error
class CookerCommandSetExitCode(bb.event.Event):
"""
Set the exit code for a cooker command
"""
def __init__(self, data, exitcode):
bb.event.Event.__init__(self, data)
self.exitcode = int(exitcode)

View File

@@ -0,0 +1,977 @@
#!/usr/bin/env python
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2003, 2004 Phil Blundell
# Copyright (C) 2003 - 2005 Michael 'Mickey' Lauer
# Copyright (C) 2005 Holger Hans Peter Freyther
# Copyright (C) 2005 ROAD GmbH
# Copyright (C) 2006 - 2007 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import sys, os, getopt, glob, copy, os.path, re, time
import bb
from bb import utils, data, parse, event, cache, providers, taskdata, runqueue
from bb import xmlrpcserver, command
import itertools, sre_constants
class MultipleMatches(Exception):
"""
Exception raised when multiple file matches are found
"""
class ParsingErrorsFound(Exception):
"""
Exception raised when parsing errors are found
"""
class NothingToBuild(Exception):
"""
Exception raised when there is nothing to build
"""
# Different states cooker can be in
cookerClean = 1
cookerParsing = 2
cookerParsed = 3
# Different action states the cooker can be in
cookerRun = 1 # Cooker is running normally
cookerShutdown = 2 # Active tasks should be brought to a controlled stop
cookerStop = 3 # Stop, now!
#============================================================================#
# BBCooker
#============================================================================#
class BBCooker:
"""
Manages one bitbake build run
"""
def __init__(self, configuration):
self.status = None
self.cache = None
self.bb_cache = None
self.server = bb.xmlrpcserver.BitBakeXMLRPCServer(self)
#self.server.register_function(self.showEnvironment)
self.configuration = configuration
if self.configuration.verbose:
bb.msg.set_verbose(True)
if self.configuration.debug:
bb.msg.set_debug_level(self.configuration.debug)
else:
bb.msg.set_debug_level(0)
if self.configuration.debug_domains:
bb.msg.set_debug_domains(self.configuration.debug_domains)
self.configuration.data = bb.data.init()
bb.data.inheritFromOS(self.configuration.data)
for f in self.configuration.file:
self.parseConfigurationFile( f )
self.parseConfigurationFile( os.path.join( "conf", "bitbake.conf" ) )
if not self.configuration.cmd:
self.configuration.cmd = bb.data.getVar("BB_DEFAULT_TASK", self.configuration.data, True) or "build"
bbpkgs = bb.data.getVar('BBPKGS', self.configuration.data, True)
if bbpkgs and len(self.configuration.pkgs_to_build) == 0:
self.configuration.pkgs_to_build.extend(bbpkgs.split())
#
# Special updated configuration we use for firing events
#
self.configuration.event_data = bb.data.createCopy(self.configuration.data)
bb.data.update_data(self.configuration.event_data)
# TOSTOP must not be set or our children will hang when they output
fd = sys.stdout.fileno()
if os.isatty(fd):
import termios
tcattr = termios.tcgetattr(fd)
if tcattr[3] & termios.TOSTOP:
bb.msg.note(1, bb.msg.domain.Build, "The terminal had the TOSTOP bit set, clearing...")
tcattr[3] = tcattr[3] & ~termios.TOSTOP
termios.tcsetattr(fd, termios.TCSANOW, tcattr)
self.command = bb.command.Command(self)
self.cookerState = cookerClean
self.cookerAction = cookerRun
def parseConfiguration(self):
# Change nice level if we're asked to
nice = bb.data.getVar("BB_NICE_LEVEL", self.configuration.data, True)
if nice:
curnice = os.nice(0)
nice = int(nice) - curnice
bb.msg.note(2, bb.msg.domain.Build, "Renice to %s " % os.nice(nice))
def parseCommandLine(self):
# Parse any commandline into actions
if self.configuration.show_environment:
self.commandlineAction = None
if 'world' in self.configuration.pkgs_to_build:
bb.error("'world' is not a valid target for --environment.")
elif len(self.configuration.pkgs_to_build) > 1:
bb.error("Only one target can be used with the --environment option.")
elif self.configuration.buildfile and len(self.configuration.pkgs_to_build) > 0:
bb.error("No target should be used with the --environment and --buildfile options.")
elif len(self.configuration.pkgs_to_build) > 0:
self.commandlineAction = ["showEnvironmentTarget", self.configuration.pkgs_to_build]
else:
self.commandlineAction = ["showEnvironment", self.configuration.buildfile]
elif self.configuration.buildfile is not None:
self.commandlineAction = ["buildFile", self.configuration.buildfile, self.configuration.cmd]
elif self.configuration.revisions_changed:
self.commandlineAction = ["compareRevisions"]
elif self.configuration.show_versions:
self.commandlineAction = ["showVersions"]
elif self.configuration.parse_only:
self.commandlineAction = ["parseFiles"]
# FIXME - implement
#elif self.configuration.interactive:
# self.interactiveMode()
elif self.configuration.dot_graph:
if self.configuration.pkgs_to_build:
self.commandlineAction = ["generateDotGraph", self.configuration.pkgs_to_build, self.configuration.cmd]
else:
self.commandlineAction = None
bb.error("Please specify a package name for dependency graph generation.")
else:
if self.configuration.pkgs_to_build:
self.commandlineAction = ["buildTargets", self.configuration.pkgs_to_build, self.configuration.cmd]
else:
self.commandlineAction = None
bb.error("Nothing to do. Use 'bitbake world' to build everything, or run 'bitbake --help' for usage information.")
def runCommands(self, server, data, abort):
"""
Run any queued asynchronous command
This is done by the idle handler so it runs in true context rather than
tied to any UI.
"""
return self.command.runAsyncCommand()
def tryBuildPackage(self, fn, item, task, the_data):
"""
Build one task of a package, optionally build following task depends
"""
try:
if not self.configuration.dry_run:
bb.build.exec_task('do_%s' % task, the_data)
return True
except bb.build.FuncFailed:
bb.msg.error(bb.msg.domain.Build, "task stack execution failed")
raise
except bb.build.EventException, e:
event = e.args[1]
bb.msg.error(bb.msg.domain.Build, "%s event exception, aborting" % bb.event.getName(event))
raise
def tryBuild(self, fn, task):
"""
Build a provider and its dependencies.
build_depends is a list of previous build dependencies (not runtime)
If build_depends is empty, we're dealing with a runtime depends
"""
the_data = self.bb_cache.loadDataFull(fn, self.configuration.data)
item = self.status.pkg_fn[fn]
#if bb.build.stamp_is_current('do_%s' % self.configuration.cmd, the_data):
# return True
return self.tryBuildPackage(fn, item, task, the_data)
def showVersions(self):
# Need files parsed
self.updateCache()
pkg_pn = self.status.pkg_pn
preferred_versions = {}
latest_versions = {}
# Sort by priority
for pn in pkg_pn.keys():
(last_ver,last_file,pref_ver,pref_file) = bb.providers.findBestProvider(pn, self.configuration.data, self.status)
preferred_versions[pn] = (pref_ver, pref_file)
latest_versions[pn] = (last_ver, last_file)
pkg_list = pkg_pn.keys()
pkg_list.sort()
bb.msg.plain("%-35s %25s %25s" % ("Package Name", "Latest Version", "Preferred Version"))
bb.msg.plain("%-35s %25s %25s\n" % ("============", "==============", "================="))
for p in pkg_list:
pref = preferred_versions[p]
latest = latest_versions[p]
prefstr = pref[0][0] + ":" + pref[0][1] + '-' + pref[0][2]
lateststr = latest[0][0] + ":" + latest[0][1] + "-" + latest[0][2]
if pref == latest:
prefstr = ""
bb.msg.plain("%-35s %25s %25s" % (p, lateststr, prefstr))
def compareRevisions(self):
ret = bb.fetch.fetcher_compare_revisons(self.configuration.data)
bb.event.fire(bb.command.CookerCommandSetExitCode(self.configuration.event_data, ret))
def showEnvironment(self, buildfile = None, pkgs_to_build = []):
"""
Show the outer or per-package environment
"""
fn = None
envdata = None
if buildfile:
self.cb = None
self.bb_cache = bb.cache.init(self)
fn = self.matchFile(buildfile)
elif len(pkgs_to_build) == 1:
self.updateCache()
localdata = data.createCopy(self.configuration.data)
bb.data.update_data(localdata)
bb.data.expandKeys(localdata)
taskdata = bb.taskdata.TaskData(self.configuration.abort)
taskdata.add_provider(localdata, self.status, pkgs_to_build[0])
taskdata.add_unresolved(localdata, self.status)
targetid = taskdata.getbuild_id(pkgs_to_build[0])
fnid = taskdata.build_targets[targetid][0]
fn = taskdata.fn_index[fnid]
else:
envdata = self.configuration.data
if fn:
try:
envdata = self.bb_cache.loadDataFull(fn, self.configuration.data)
except IOError, e:
bb.msg.error(bb.msg.domain.Parsing, "Unable to read %s: %s" % (fn, e))
raise
except Exception, e:
bb.msg.error(bb.msg.domain.Parsing, "%s" % e)
raise
class dummywrite:
def __init__(self):
self.writebuf = ""
def write(self, output):
self.writebuf = self.writebuf + output
# emit variables and shell functions
try:
data.update_data(envdata)
wb = dummywrite()
data.emit_env(wb, envdata, True)
bb.msg.plain(wb.writebuf)
except Exception, e:
bb.msg.fatal(bb.msg.domain.Parsing, "%s" % e)
# emit the metadata which isnt valid shell
data.expandKeys(envdata)
for e in envdata.keys():
if data.getVarFlag( e, 'python', envdata ):
bb.msg.plain("\npython %s () {\n%s}\n" % (e, data.getVar(e, envdata, 1)))
def generateDepTreeData(self, pkgs_to_build, task):
"""
Create a dependency tree of pkgs_to_build, returning the data.
"""
# Need files parsed
self.updateCache()
# If we are told to do the None task then query the default task
if (task == None):
task = self.configuration.cmd
pkgs_to_build = self.checkPackages(pkgs_to_build)
localdata = data.createCopy(self.configuration.data)
bb.data.update_data(localdata)
bb.data.expandKeys(localdata)
taskdata = bb.taskdata.TaskData(self.configuration.abort)
runlist = []
for k in pkgs_to_build:
taskdata.add_provider(localdata, self.status, k)
runlist.append([k, "do_%s" % task])
taskdata.add_unresolved(localdata, self.status)
rq = bb.runqueue.RunQueue(self, self.configuration.data, self.status, taskdata, runlist)
rq.prepare_runqueue()
seen_fnids = []
depend_tree = {}
depend_tree["depends"] = {}
depend_tree["tdepends"] = {}
depend_tree["pn"] = {}
depend_tree["rdepends-pn"] = {}
depend_tree["packages"] = {}
depend_tree["rdepends-pkg"] = {}
depend_tree["rrecs-pkg"] = {}
for task in range(len(rq.runq_fnid)):
taskname = rq.runq_task[task]
fnid = rq.runq_fnid[task]
fn = taskdata.fn_index[fnid]
pn = self.status.pkg_fn[fn]
version = "%s:%s-%s" % self.status.pkg_pepvpr[fn]
if pn not in depend_tree["pn"]:
depend_tree["pn"][pn] = {}
depend_tree["pn"][pn]["filename"] = fn
depend_tree["pn"][pn]["version"] = version
for dep in rq.runq_depends[task]:
depfn = taskdata.fn_index[rq.runq_fnid[dep]]
deppn = self.status.pkg_fn[depfn]
dotname = "%s.%s" % (pn, rq.runq_task[task])
if not dotname in depend_tree["tdepends"]:
depend_tree["tdepends"][dotname] = []
depend_tree["tdepends"][dotname].append("%s.%s" % (deppn, rq.runq_task[dep]))
if fnid not in seen_fnids:
seen_fnids.append(fnid)
packages = []
depend_tree["depends"][pn] = []
for dep in taskdata.depids[fnid]:
depend_tree["depends"][pn].append(taskdata.build_names_index[dep])
depend_tree["rdepends-pn"][pn] = []
for rdep in taskdata.rdepids[fnid]:
depend_tree["rdepends-pn"][pn].append(taskdata.run_names_index[rdep])
rdepends = self.status.rundeps[fn]
for package in rdepends:
depend_tree["rdepends-pkg"][package] = []
for rdepend in rdepends[package]:
depend_tree["rdepends-pkg"][package].append(rdepend)
packages.append(package)
rrecs = self.status.runrecs[fn]
for package in rrecs:
depend_tree["rrecs-pkg"][package] = []
for rdepend in rrecs[package]:
depend_tree["rrecs-pkg"][package].append(rdepend)
if not package in packages:
packages.append(package)
for package in packages:
if package not in depend_tree["packages"]:
depend_tree["packages"][package] = {}
depend_tree["packages"][package]["pn"] = pn
depend_tree["packages"][package]["filename"] = fn
depend_tree["packages"][package]["version"] = version
return depend_tree
def generateDepTreeEvent(self, pkgs_to_build, task):
"""
Create a task dependency graph of pkgs_to_build.
Generate an event with the result
"""
depgraph = self.generateDepTreeData(pkgs_to_build, task)
bb.event.fire(bb.event.DepTreeGenerated(self.configuration.data, depgraph))
def generateDotGraphFiles(self, pkgs_to_build, task):
"""
Create a task dependency graph of pkgs_to_build.
Save the result to a set of .dot files.
"""
depgraph = self.generateDepTreeData(pkgs_to_build, task)
# Prints a flattened form of package-depends below where subpackages of a package are merged into the main pn
depends_file = file('pn-depends.dot', 'w' )
print >> depends_file, "digraph depends {"
for pn in depgraph["pn"]:
fn = depgraph["pn"][pn]["filename"]
version = depgraph["pn"][pn]["version"]
print >> depends_file, '"%s" [label="%s %s\\n%s"]' % (pn, pn, version, fn)
for pn in depgraph["depends"]:
for depend in depgraph["depends"][pn]:
print >> depends_file, '"%s" -> "%s"' % (pn, depend)
for pn in depgraph["rdepends-pn"]:
for rdepend in depgraph["rdepends-pn"][pn]:
print >> depends_file, '"%s" -> "%s" [style=dashed]' % (pn, rdepend)
print >> depends_file, "}"
bb.msg.plain("PN dependencies saved to 'pn-depends.dot'")
depends_file = file('package-depends.dot', 'w' )
print >> depends_file, "digraph depends {"
for package in depgraph["packages"]:
pn = depgraph["packages"][package]["pn"]
fn = depgraph["packages"][package]["filename"]
version = depgraph["packages"][package]["version"]
if package == pn:
print >> depends_file, '"%s" [label="%s %s\\n%s"]' % (pn, pn, version, fn)
else:
print >> depends_file, '"%s" [label="%s(%s) %s\\n%s"]' % (package, package, pn, version, fn)
for depend in depgraph["depends"][pn]:
print >> depends_file, '"%s" -> "%s"' % (package, depend)
for package in depgraph["rdepends-pkg"]:
for rdepend in depgraph["rdepends-pkg"][package]:
print >> depends_file, '"%s" -> "%s" [style=dashed]' % (package, rdepend)
for package in depgraph["rrecs-pkg"]:
for rdepend in depgraph["rrecs-pkg"][package]:
print >> depends_file, '"%s" -> "%s" [style=dashed]' % (package, rdepend)
print >> depends_file, "}"
bb.msg.plain("Package dependencies saved to 'package-depends.dot'")
tdepends_file = file('task-depends.dot', 'w' )
print >> tdepends_file, "digraph depends {"
for task in depgraph["tdepends"]:
(pn, taskname) = task.rsplit(".", 1)
fn = depgraph["pn"][pn]["filename"]
version = depgraph["pn"][pn]["version"]
print >> tdepends_file, '"%s.%s" [label="%s %s\\n%s\\n%s"]' % (pn, taskname, pn, taskname, version, fn)
for dep in depgraph["tdepends"][task]:
print >> tdepends_file, '"%s" -> "%s"' % (task, dep)
print >> tdepends_file, "}"
bb.msg.plain("Task dependencies saved to 'task-depends.dot'")
def buildDepgraph( self ):
all_depends = self.status.all_depends
pn_provides = self.status.pn_provides
localdata = data.createCopy(self.configuration.data)
bb.data.update_data(localdata)
bb.data.expandKeys(localdata)
def calc_bbfile_priority(filename):
for (regex, pri) in self.status.bbfile_config_priorities:
if regex.match(filename):
return pri
return 0
# Handle PREFERRED_PROVIDERS
for p in (bb.data.getVar('PREFERRED_PROVIDERS', localdata, 1) or "").split():
try:
(providee, provider) = p.split(':')
except:
bb.msg.fatal(bb.msg.domain.Provider, "Malformed option in PREFERRED_PROVIDERS variable: %s" % p)
continue
if providee in self.status.preferred and self.status.preferred[providee] != provider:
bb.msg.error(bb.msg.domain.Provider, "conflicting preferences for %s: both %s and %s specified" % (providee, provider, self.status.preferred[providee]))
self.status.preferred[providee] = provider
# Calculate priorities for each file
for p in self.status.pkg_fn.keys():
self.status.bbfile_priority[p] = calc_bbfile_priority(p)
def buildWorldTargetList(self):
"""
Build package list for "bitbake world"
"""
all_depends = self.status.all_depends
pn_provides = self.status.pn_provides
bb.msg.debug(1, bb.msg.domain.Parsing, "collating packages for \"world\"")
for f in self.status.possible_world:
terminal = True
pn = self.status.pkg_fn[f]
for p in pn_provides[pn]:
if p.startswith('virtual/'):
bb.msg.debug(2, bb.msg.domain.Parsing, "World build skipping %s due to %s provider starting with virtual/" % (f, p))
terminal = False
break
for pf in self.status.providers[p]:
if self.status.pkg_fn[pf] != pn:
bb.msg.debug(2, bb.msg.domain.Parsing, "World build skipping %s due to both us and %s providing %s" % (f, pf, p))
terminal = False
break
if terminal:
self.status.world_target.add(pn)
# drop reference count now
self.status.possible_world = None
self.status.all_depends = None
def interactiveMode( self ):
"""Drop off into a shell"""
try:
from bb import shell
except ImportError, details:
bb.msg.fatal(bb.msg.domain.Parsing, "Sorry, shell not available (%s)" % details )
else:
shell.start( self )
def parseConfigurationFile( self, afile ):
try:
self.configuration.data = bb.parse.handle( afile, self.configuration.data )
# Handle any INHERITs and inherit the base class
inherits = ["base"] + (bb.data.getVar('INHERIT', self.configuration.data, True ) or "").split()
for inherit in inherits:
self.configuration.data = bb.parse.handle(os.path.join('classes', '%s.bbclass' % inherit), self.configuration.data, True )
# Nomally we only register event handlers at the end of parsing .bb files
# We register any handlers we've found so far here...
for var in data.getVar('__BBHANDLERS', self.configuration.data) or []:
bb.event.register(var,bb.data.getVar(var, self.configuration.data))
bb.fetch.fetcher_init(self.configuration.data)
bb.event.fire(bb.event.ConfigParsed(self.configuration.data))
except IOError, e:
bb.msg.fatal(bb.msg.domain.Parsing, "Error when parsing %s: %s" % (afile, str(e)))
except bb.parse.ParseError, details:
bb.msg.fatal(bb.msg.domain.Parsing, "Unable to parse %s (%s)" % (afile, details) )
def handleCollections( self, collections ):
"""Handle collections"""
if collections:
collection_list = collections.split()
for c in collection_list:
regex = bb.data.getVar("BBFILE_PATTERN_%s" % c, self.configuration.data, 1)
if regex == None:
bb.msg.error(bb.msg.domain.Parsing, "BBFILE_PATTERN_%s not defined" % c)
continue
priority = bb.data.getVar("BBFILE_PRIORITY_%s" % c, self.configuration.data, 1)
if priority == None:
bb.msg.error(bb.msg.domain.Parsing, "BBFILE_PRIORITY_%s not defined" % c)
continue
try:
cre = re.compile(regex)
except re.error:
bb.msg.error(bb.msg.domain.Parsing, "BBFILE_PATTERN_%s \"%s\" is not a valid regular expression" % (c, regex))
continue
try:
pri = int(priority)
self.status.bbfile_config_priorities.append((cre, pri))
except ValueError:
bb.msg.error(bb.msg.domain.Parsing, "invalid value for BBFILE_PRIORITY_%s: \"%s\"" % (c, priority))
def buildSetVars(self):
"""
Setup any variables needed before starting a build
"""
if not bb.data.getVar("BUILDNAME", self.configuration.data):
bb.data.setVar("BUILDNAME", os.popen('date +%Y%m%d%H%M').readline().strip(), self.configuration.data)
bb.data.setVar("BUILDSTART", time.strftime('%m/%d/%Y %H:%M:%S',time.gmtime()), self.configuration.data)
def matchFiles(self, buildfile):
"""
Find the .bb files which match the expression in 'buildfile'.
"""
bf = os.path.abspath(buildfile)
try:
os.stat(bf)
return [bf]
except OSError:
(filelist, masked) = self.collect_bbfiles()
regexp = re.compile(buildfile)
matches = []
for f in filelist:
if regexp.search(f) and os.path.isfile(f):
bf = f
matches.append(f)
return matches
def matchFile(self, buildfile):
"""
Find the .bb file which matches the expression in 'buildfile'.
Raise an error if multiple files
"""
matches = self.matchFiles(buildfile)
if len(matches) != 1:
bb.msg.error(bb.msg.domain.Parsing, "Unable to match %s (%s matches found):" % (buildfile, len(matches)))
for f in matches:
bb.msg.error(bb.msg.domain.Parsing, " %s" % f)
raise MultipleMatches
return matches[0]
def buildFile(self, buildfile, task):
"""
Build the file matching regexp buildfile
"""
# Parse the configuration here. We need to do it explicitly here since
# buildFile() doesn't use the cache
self.parseConfiguration()
# If we are told to do the None task then query the default task
if (task == None):
task = self.configuration.cmd
fn = self.matchFile(buildfile)
self.buildSetVars()
# Load data into the cache for fn and parse the loaded cache data
self.bb_cache = bb.cache.init(self)
self.status = bb.cache.CacheData()
self.bb_cache.loadData(fn, self.configuration.data, self.status)
# Tweak some variables
item = self.bb_cache.getVar('PN', fn, True)
self.status.ignored_dependencies = set()
self.status.bbfile_priority[fn] = 1
# Remove external dependencies
self.status.task_deps[fn]['depends'] = {}
self.status.deps[fn] = []
self.status.rundeps[fn] = []
self.status.runrecs[fn] = []
# Remove stamp for target if force mode active
if self.configuration.force:
bb.msg.note(2, bb.msg.domain.RunQueue, "Remove stamp %s, %s" % (task, fn))
bb.build.del_stamp('do_%s' % task, self.status, fn)
# Setup taskdata structure
taskdata = bb.taskdata.TaskData(self.configuration.abort)
taskdata.add_provider(self.configuration.data, self.status, item)
buildname = bb.data.getVar("BUILDNAME", self.configuration.data)
bb.event.fire(bb.event.BuildStarted(buildname, [item], self.configuration.event_data))
# Execute the runqueue
runlist = [[item, "do_%s" % task]]
rq = bb.runqueue.RunQueue(self, self.configuration.data, self.status, taskdata, runlist)
def buildFileIdle(server, rq, abort):
if abort or self.cookerAction == cookerStop:
rq.finish_runqueue(True)
elif self.cookerAction == cookerShutdown:
rq.finish_runqueue(False)
failures = 0
try:
retval = rq.execute_runqueue()
except runqueue.TaskFailure, fnids:
for fnid in fnids:
bb.msg.error(bb.msg.domain.Build, "'%s' failed" % taskdata.fn_index[fnid])
failures = failures + 1
retval = False
if not retval:
self.command.finishAsyncCommand()
bb.event.fire(bb.event.BuildCompleted(buildname, targets, self.configuration.event_data, failures))
return False
return 0.5
self.server.register_idle_function(buildFileIdle, rq)
def buildTargets(self, targets, task):
"""
Attempt to build the targets specified
"""
# Need files parsed
self.updateCache()
# If we are told to do the NULL task then query the default task
if (task == None):
task = self.configuration.cmd
targets = self.checkPackages(targets)
def buildTargetsIdle(server, rq, abort):
if abort or self.cookerAction == cookerStop:
rq.finish_runqueue(True)
elif self.cookerAction == cookerShutdown:
rq.finish_runqueue(False)
failures = 0
try:
retval = rq.execute_runqueue()
except runqueue.TaskFailure, fnids:
for fnid in fnids:
bb.msg.error(bb.msg.domain.Build, "'%s' failed" % taskdata.fn_index[fnid])
failures = failures + 1
retval = False
if not retval:
self.command.finishAsyncCommand()
bb.event.fire(bb.event.BuildCompleted(buildname, targets, self.configuration.event_data, failures))
return None
return 0.5
self.buildSetVars()
buildname = bb.data.getVar("BUILDNAME", self.configuration.data)
bb.event.fire(bb.event.BuildStarted(buildname, targets, self.configuration.event_data))
localdata = data.createCopy(self.configuration.data)
bb.data.update_data(localdata)
bb.data.expandKeys(localdata)
taskdata = bb.taskdata.TaskData(self.configuration.abort)
runlist = []
for k in targets:
taskdata.add_provider(localdata, self.status, k)
runlist.append([k, "do_%s" % task])
taskdata.add_unresolved(localdata, self.status)
rq = bb.runqueue.RunQueue(self, self.configuration.data, self.status, taskdata, runlist)
self.server.register_idle_function(buildTargetsIdle, rq)
def updateCache(self):
if self.cookerState == cookerParsed:
return
if self.cookerState != cookerParsing:
self.parseConfiguration ()
# Import Psyco if available and not disabled
import platform
if platform.machine() in ['i386', 'i486', 'i586', 'i686']:
if not self.configuration.disable_psyco:
try:
import psyco
except ImportError:
bb.msg.note(1, bb.msg.domain.Collection, "Psyco JIT Compiler (http://psyco.sf.net) not available. Install it to increase performance.")
else:
psyco.bind( CookerParser.parse_next )
else:
bb.msg.note(1, bb.msg.domain.Collection, "You have disabled Psyco. This decreases performance.")
self.status = bb.cache.CacheData()
ignore = bb.data.getVar("ASSUME_PROVIDED", self.configuration.data, 1) or ""
self.status.ignored_dependencies = set(ignore.split())
for dep in self.configuration.extra_assume_provided:
self.status.ignored_dependencies.add(dep)
self.handleCollections( bb.data.getVar("BBFILE_COLLECTIONS", self.configuration.data, 1) )
bb.msg.debug(1, bb.msg.domain.Collection, "collecting .bb files")
(filelist, masked) = self.collect_bbfiles()
bb.data.renameVar("__depends", "__base_depends", self.configuration.data)
self.parser = CookerParser(self, filelist, masked)
self.cookerState = cookerParsing
if not self.parser.parse_next():
bb.msg.debug(1, bb.msg.domain.Collection, "parsing complete")
self.buildDepgraph()
self.cookerState = cookerParsed
return None
return 0.00001
def checkPackages(self, pkgs_to_build):
if len(pkgs_to_build) == 0:
raise NothingToBuild
if 'world' in pkgs_to_build:
self.buildWorldTargetList()
pkgs_to_build.remove('world')
for t in self.status.world_target:
pkgs_to_build.append(t)
return pkgs_to_build
def get_bbfiles( self, path = os.getcwd() ):
"""Get list of default .bb files by reading out the current directory"""
contents = os.listdir(path)
bbfiles = []
for f in contents:
(root, ext) = os.path.splitext(f)
if ext == ".bb":
bbfiles.append(os.path.abspath(os.path.join(os.getcwd(),f)))
return bbfiles
def find_bbfiles( self, path ):
"""Find all the .bb files in a directory"""
from os.path import join
found = []
for dir, dirs, files in os.walk(path):
for ignored in ('SCCS', 'CVS', '.svn'):
if ignored in dirs:
dirs.remove(ignored)
found += [join(dir,f) for f in files if f.endswith('.bb')]
return found
def collect_bbfiles( self ):
"""Collect all available .bb build files"""
parsed, cached, skipped, masked = 0, 0, 0, 0
self.bb_cache = bb.cache.init(self)
files = (data.getVar( "BBFILES", self.configuration.data, 1 ) or "").split()
data.setVar("BBFILES", " ".join(files), self.configuration.data)
if not len(files):
files = self.get_bbfiles()
if not len(files):
bb.msg.error(bb.msg.domain.Collection, "no files to build.")
newfiles = []
for f in files:
if os.path.isdir(f):
dirfiles = self.find_bbfiles(f)
if dirfiles:
newfiles += dirfiles
continue
else:
globbed = glob.glob(f)
if not globbed and os.path.exists(f):
globbed = [f]
newfiles += globbed
bbmask = bb.data.getVar('BBMASK', self.configuration.data, 1)
if not bbmask:
return (newfiles, 0)
try:
bbmask_compiled = re.compile(bbmask)
except sre_constants.error:
bb.msg.fatal(bb.msg.domain.Collection, "BBMASK is not a valid regular expression.")
finalfiles = []
for f in newfiles:
if bbmask_compiled.search(f):
bb.msg.debug(1, bb.msg.domain.Collection, "skipping masked file %s" % f)
masked += 1
continue
finalfiles.append(f)
return (finalfiles, masked)
def serve(self):
# Empty the environment. The environment will be populated as
# necessary from the data store.
bb.utils.empty_environment()
if self.configuration.profile:
try:
import cProfile as profile
except:
import profile
profile.runctx("self.server.serve_forever()", globals(), locals(), "profile.log")
# Redirect stdout to capture profile information
pout = open('profile.log.processed', 'w')
so = sys.stdout.fileno()
os.dup2(pout.fileno(), so)
import pstats
p = pstats.Stats('profile.log')
p.sort_stats('time')
p.print_stats()
p.print_callers()
p.sort_stats('cumulative')
p.print_stats()
os.dup2(so, pout.fileno())
pout.flush()
pout.close()
else:
self.server.serve_forever()
bb.event.fire(CookerExit(self.configuration.event_data))
class CookerExit(bb.event.Event):
"""
Notify clients of the Cooker shutdown
"""
def __init__(self, d):
bb.event.Event.__init__(self, d)
class CookerParser:
def __init__(self, cooker, filelist, masked):
# Internal data
self.filelist = filelist
self.cooker = cooker
# Accounting statistics
self.parsed = 0
self.cached = 0
self.skipped = 0
self.error = 0
self.masked = masked
self.total = len(filelist)
# Pointer to the next file to parse
self.pointer = 0
def parse_next(self):
print "Pointer %d" % self.pointer
if self.pointer < len(self.filelist):
f = self.filelist[self.pointer]
cooker = self.cooker
try:
fromCache, skip = cooker.bb_cache.loadData(f, cooker.configuration.data, cooker.status)
if skip:
self.skipped += 1
bb.msg.debug(2, bb.msg.domain.Collection, "skipping %s" % f)
cooker.bb_cache.skip(f)
elif fromCache: self.cached += 1
else: self.parsed += 1
except IOError, e:
self.error += 1
cooker.bb_cache.remove(f)
bb.msg.error(bb.msg.domain.Collection, "opening %s: %s" % (f, e))
pass
except KeyboardInterrupt:
cooker.bb_cache.remove(f)
cooker.bb_cache.sync()
raise
except Exception, e:
self.error += 1
cooker.bb_cache.remove(f)
bb.msg.error(bb.msg.domain.Collection, "%s while parsing %s" % (e, f))
except:
cooker.bb_cache.remove(f)
raise
finally:
bb.event.fire(bb.event.ParseProgress(cooker.configuration.event_data, self.cached, self.parsed, self.skipped, self.masked, self.error, self.total))
self.pointer += 1
if self.pointer >= self.total:
cooker.bb_cache.sync()
if self.error > 0:
raise ParsingErrorsFound
return False
return True

View File

@@ -0,0 +1,191 @@
"""
Python Deamonizing helper
Configurable daemon behaviors:
1.) The current working directory set to the "/" directory.
2.) The current file creation mode mask set to 0.
3.) Close all open files (1024).
4.) Redirect standard I/O streams to "/dev/null".
A failed call to fork() now raises an exception.
References:
1) Advanced Programming in the Unix Environment: W. Richard Stevens
2) Unix Programming Frequently Asked Questions:
http://www.erlenstar.demon.co.uk/unix/faq_toc.html
Modified to allow a function to be daemonized and return for
bitbake use by Richard Purdie
"""
__author__ = "Chad J. Schroeder"
__copyright__ = "Copyright (C) 2005 Chad J. Schroeder"
__version__ = "0.2"
# Standard Python modules.
import os # Miscellaneous OS interfaces.
import sys # System-specific parameters and functions.
# Default daemon parameters.
# File mode creation mask of the daemon.
# For BitBake's children, we do want to inherit the parent umask.
UMASK = None
# Default maximum for the number of available file descriptors.
MAXFD = 1024
# The standard I/O file descriptors are redirected to /dev/null by default.
if (hasattr(os, "devnull")):
REDIRECT_TO = os.devnull
else:
REDIRECT_TO = "/dev/null"
def createDaemon(function, logfile):
"""
Detach a process from the controlling terminal and run it in the
background as a daemon, returning control to the caller.
"""
try:
# Fork a child process so the parent can exit. This returns control to
# the command-line or shell. It also guarantees that the child will not
# be a process group leader, since the child receives a new process ID
# and inherits the parent's process group ID. This step is required
# to insure that the next call to os.setsid is successful.
pid = os.fork()
except OSError, e:
raise Exception, "%s [%d]" % (e.strerror, e.errno)
if (pid == 0): # The first child.
# To become the session leader of this new session and the process group
# leader of the new process group, we call os.setsid(). The process is
# also guaranteed not to have a controlling terminal.
os.setsid()
# Is ignoring SIGHUP necessary?
#
# It's often suggested that the SIGHUP signal should be ignored before
# the second fork to avoid premature termination of the process. The
# reason is that when the first child terminates, all processes, e.g.
# the second child, in the orphaned group will be sent a SIGHUP.
#
# "However, as part of the session management system, there are exactly
# two cases where SIGHUP is sent on the death of a process:
#
# 1) When the process that dies is the session leader of a session that
# is attached to a terminal device, SIGHUP is sent to all processes
# in the foreground process group of that terminal device.
# 2) When the death of a process causes a process group to become
# orphaned, and one or more processes in the orphaned group are
# stopped, then SIGHUP and SIGCONT are sent to all members of the
# orphaned group." [2]
#
# The first case can be ignored since the child is guaranteed not to have
# a controlling terminal. The second case isn't so easy to dismiss.
# The process group is orphaned when the first child terminates and
# POSIX.1 requires that every STOPPED process in an orphaned process
# group be sent a SIGHUP signal followed by a SIGCONT signal. Since the
# second child is not STOPPED though, we can safely forego ignoring the
# SIGHUP signal. In any case, there are no ill-effects if it is ignored.
#
# import signal # Set handlers for asynchronous events.
# signal.signal(signal.SIGHUP, signal.SIG_IGN)
try:
# Fork a second child and exit immediately to prevent zombies. This
# causes the second child process to be orphaned, making the init
# process responsible for its cleanup. And, since the first child is
# a session leader without a controlling terminal, it's possible for
# it to acquire one by opening a terminal in the future (System V-
# based systems). This second fork guarantees that the child is no
# longer a session leader, preventing the daemon from ever acquiring
# a controlling terminal.
pid = os.fork() # Fork a second child.
except OSError, e:
raise Exception, "%s [%d]" % (e.strerror, e.errno)
if (pid == 0): # The second child.
# We probably don't want the file mode creation mask inherited from
# the parent, so we give the child complete control over permissions.
if UMASK is not None:
os.umask(UMASK)
else:
# Parent (the first child) of the second child.
os._exit(0)
else:
# exit() or _exit()?
# _exit is like exit(), but it doesn't call any functions registered
# with atexit (and on_exit) or any registered signal handlers. It also
# closes any open file descriptors. Using exit() may cause all stdio
# streams to be flushed twice and any temporary files may be unexpectedly
# removed. It's therefore recommended that child branches of a fork()
# and the parent branch(es) of a daemon use _exit().
return
# Close all open file descriptors. This prevents the child from keeping
# open any file descriptors inherited from the parent. There is a variety
# of methods to accomplish this task. Three are listed below.
#
# Try the system configuration variable, SC_OPEN_MAX, to obtain the maximum
# number of open file descriptors to close. If it doesn't exists, use
# the default value (configurable).
#
# try:
# maxfd = os.sysconf("SC_OPEN_MAX")
# except (AttributeError, ValueError):
# maxfd = MAXFD
#
# OR
#
# if (os.sysconf_names.has_key("SC_OPEN_MAX")):
# maxfd = os.sysconf("SC_OPEN_MAX")
# else:
# maxfd = MAXFD
#
# OR
#
# Use the getrlimit method to retrieve the maximum file descriptor number
# that can be opened by this process. If there is not limit on the
# resource, use the default value.
#
import resource # Resource usage information.
maxfd = resource.getrlimit(resource.RLIMIT_NOFILE)[1]
if (maxfd == resource.RLIM_INFINITY):
maxfd = MAXFD
# Iterate through and close all file descriptors.
# for fd in range(0, maxfd):
# try:
# os.close(fd)
# except OSError: # ERROR, fd wasn't open to begin with (ignored)
# pass
# Redirect the standard I/O file descriptors to the specified file. Since
# the daemon has no controlling terminal, most daemons redirect stdin,
# stdout, and stderr to /dev/null. This is done to prevent side-effects
# from reads and writes to the standard I/O file descriptors.
# This call to open is guaranteed to return the lowest file descriptor,
# which will be 0 (stdin), since it was closed above.
# os.open(REDIRECT_TO, os.O_RDWR) # standard input (0)
# Duplicate standard input to standard output and standard error.
# os.dup2(0, 1) # standard output (1)
# os.dup2(0, 2) # standard error (2)
si = file('/dev/null', 'r')
so = file(logfile, 'w')
se = so
# Replace those fds with our own
os.dup2(si.fileno(), sys.stdin.fileno())
os.dup2(so.fileno(), sys.stdout.fileno())
os.dup2(se.fileno(), sys.stderr.fileno())
function()
os._exit(0)

562
bitbake-dev/lib/bb/data.py Normal file
View File

@@ -0,0 +1,562 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Data' implementations
Functions for interacting with the data structure used by the
BitBake build tools.
The expandData and update_data are the most expensive
operations. At night the cookie monster came by and
suggested 'give me cookies on setting the variables and
things will work out'. Taking this suggestion into account
applying the skills from the not yet passed 'Entwurf und
Analyse von Algorithmen' lecture and the cookie
monster seems to be right. We will track setVar more carefully
to have faster update_data and expandKeys operations.
This is a treade-off between speed and memory again but
the speed is more critical here.
"""
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2005 Holger Hans Peter Freyther
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
#Based on functions from the base bb module, Copyright 2003 Holger Schurig
import sys, os, re, types
if sys.argv[0][-5:] == "pydoc":
path = os.path.dirname(os.path.dirname(sys.argv[1]))
else:
path = os.path.dirname(os.path.dirname(sys.argv[0]))
sys.path.insert(0,path)
from bb import data_smart
import bb
_dict_type = data_smart.DataSmart
def init():
return _dict_type()
def init_db(parent = None):
if parent:
return parent.createCopy()
else:
return _dict_type()
def createCopy(source):
"""Link the source set to the destination
If one does not find the value in the destination set,
search will go on to the source set to get the value.
Value from source are copy-on-write. i.e. any try to
modify one of them will end up putting the modified value
in the destination set.
"""
return source.createCopy()
def initVar(var, d):
"""Non-destructive var init for data structure"""
d.initVar(var)
def setVar(var, value, d):
"""Set a variable to a given value
Example:
>>> d = init()
>>> setVar('TEST', 'testcontents', d)
>>> print getVar('TEST', d)
testcontents
"""
d.setVar(var,value)
def getVar(var, d, exp = 0):
"""Gets the value of a variable
Example:
>>> d = init()
>>> setVar('TEST', 'testcontents', d)
>>> print getVar('TEST', d)
testcontents
"""
return d.getVar(var,exp)
def renameVar(key, newkey, d):
"""Renames a variable from key to newkey
Example:
>>> d = init()
>>> setVar('TEST', 'testcontents', d)
>>> renameVar('TEST', 'TEST2', d)
>>> print getVar('TEST2', d)
testcontents
"""
d.renameVar(key, newkey)
def delVar(var, d):
"""Removes a variable from the data set
Example:
>>> d = init()
>>> setVar('TEST', 'testcontents', d)
>>> print getVar('TEST', d)
testcontents
>>> delVar('TEST', d)
>>> print getVar('TEST', d)
None
"""
d.delVar(var)
def setVarFlag(var, flag, flagvalue, d):
"""Set a flag for a given variable to a given value
Example:
>>> d = init()
>>> setVarFlag('TEST', 'python', 1, d)
>>> print getVarFlag('TEST', 'python', d)
1
"""
d.setVarFlag(var,flag,flagvalue)
def getVarFlag(var, flag, d):
"""Gets given flag from given var
Example:
>>> d = init()
>>> setVarFlag('TEST', 'python', 1, d)
>>> print getVarFlag('TEST', 'python', d)
1
"""
return d.getVarFlag(var,flag)
def delVarFlag(var, flag, d):
"""Removes a given flag from the variable's flags
Example:
>>> d = init()
>>> setVarFlag('TEST', 'testflag', 1, d)
>>> print getVarFlag('TEST', 'testflag', d)
1
>>> delVarFlag('TEST', 'testflag', d)
>>> print getVarFlag('TEST', 'testflag', d)
None
"""
d.delVarFlag(var,flag)
def setVarFlags(var, flags, d):
"""Set the flags for a given variable
Note:
setVarFlags will not clear previous
flags. Think of this method as
addVarFlags
Example:
>>> d = init()
>>> myflags = {}
>>> myflags['test'] = 'blah'
>>> setVarFlags('TEST', myflags, d)
>>> print getVarFlag('TEST', 'test', d)
blah
"""
d.setVarFlags(var,flags)
def getVarFlags(var, d):
"""Gets a variable's flags
Example:
>>> d = init()
>>> setVarFlag('TEST', 'test', 'blah', d)
>>> print getVarFlags('TEST', d)['test']
blah
"""
return d.getVarFlags(var)
def delVarFlags(var, d):
"""Removes a variable's flags
Example:
>>> data = init()
>>> setVarFlag('TEST', 'testflag', 1, data)
>>> print getVarFlag('TEST', 'testflag', data)
1
>>> delVarFlags('TEST', data)
>>> print getVarFlags('TEST', data)
None
"""
d.delVarFlags(var)
def keys(d):
"""Return a list of keys in d
Example:
>>> d = init()
>>> setVar('TEST', 1, d)
>>> setVar('MOO' , 2, d)
>>> setVarFlag('TEST', 'test', 1, d)
>>> keys(d)
['TEST', 'MOO']
"""
return d.keys()
def getData(d):
"""Returns the data object used"""
return d
def setData(newData, d):
"""Sets the data object to the supplied value"""
d = newData
##
## Cookie Monsters' query functions
##
def _get_override_vars(d, override):
"""
Internal!!!
Get the Names of Variables that have a specific
override. This function returns a iterable
Set or an empty list
"""
return []
def _get_var_flags_triple(d):
"""
Internal!!!
"""
return []
__expand_var_regexp__ = re.compile(r"\${[^{}]+}")
__expand_python_regexp__ = re.compile(r"\${@.+?}")
def expand(s, d, varname = None):
"""Variable expansion using the data store.
Example:
Standard expansion:
>>> d = init()
>>> setVar('A', 'sshd', d)
>>> print expand('/usr/bin/${A}', d)
/usr/bin/sshd
Python expansion:
>>> d = init()
>>> print expand('result: ${@37 * 72}', d)
result: 2664
Shell expansion:
>>> d = init()
>>> print expand('${TARGET_MOO}', d)
${TARGET_MOO}
>>> setVar('TARGET_MOO', 'yupp', d)
>>> print expand('${TARGET_MOO}',d)
yupp
>>> setVar('SRC_URI', 'http://somebug.${TARGET_MOO}', d)
>>> delVar('TARGET_MOO', d)
>>> print expand('${SRC_URI}', d)
http://somebug.${TARGET_MOO}
"""
return d.expand(s, varname)
def expandKeys(alterdata, readdata = None):
if readdata == None:
readdata = alterdata
todolist = {}
for key in keys(alterdata):
if not '${' in key:
continue
ekey = expand(key, readdata)
if key == ekey:
continue
todolist[key] = ekey
# These two for loops are split for performance to maximise the
# usefulness of the expand cache
for key in todolist:
ekey = todolist[key]
renameVar(key, ekey, alterdata)
def expandData(alterdata, readdata = None):
"""For each variable in alterdata, expand it, and update the var contents.
Replacements use data from readdata.
Example:
>>> a=init()
>>> b=init()
>>> setVar("dlmsg", "dl_dir is ${DL_DIR}", a)
>>> setVar("DL_DIR", "/path/to/whatever", b)
>>> expandData(a, b)
>>> print getVar("dlmsg", a)
dl_dir is /path/to/whatever
"""
if readdata == None:
readdata = alterdata
for key in keys(alterdata):
val = getVar(key, alterdata)
if type(val) is not types.StringType:
continue
expanded = expand(val, readdata)
# print "key is %s, val is %s, expanded is %s" % (key, val, expanded)
if val != expanded:
setVar(key, expanded, alterdata)
def inheritFromOS(d):
"""Inherit variables from the environment."""
for s in os.environ.keys():
try:
setVar(s, os.environ[s], d)
setVarFlag(s, "export", True, d)
except TypeError:
pass
def emit_var(var, o=sys.__stdout__, d = init(), all=False):
"""Emit a variable to be sourced by a shell."""
if getVarFlag(var, "python", d):
return 0
export = getVarFlag(var, "export", d)
unexport = getVarFlag(var, "unexport", d)
func = getVarFlag(var, "func", d)
if not all and not export and not unexport and not func:
return 0
try:
if all:
oval = getVar(var, d, 0)
val = getVar(var, d, 1)
except KeyboardInterrupt:
raise
except:
excname = str(sys.exc_info()[0])
if excname == "bb.build.FuncFailed":
raise
o.write('# expansion of %s threw %s\n' % (var, excname))
return 0
if all:
o.write('# %s=%s\n' % (var, oval))
if type(val) is not types.StringType:
return 0
if (var.find("-") != -1 or var.find(".") != -1 or var.find('{') != -1 or var.find('}') != -1 or var.find('+') != -1) and not all:
return 0
varExpanded = expand(var, d)
if unexport:
o.write('unset %s\n' % varExpanded)
return 1
val.rstrip()
if not val:
return 0
if func:
# NOTE: should probably check for unbalanced {} within the var
o.write("%s() {\n%s\n}\n" % (varExpanded, val))
return 1
if export:
o.write('export ')
# if we're going to output this within doublequotes,
# to a shell, we need to escape the quotes in the var
alter = re.sub('"', '\\"', val.strip())
o.write('%s="%s"\n' % (varExpanded, alter))
return 1
def emit_env(o=sys.__stdout__, d = init(), all=False):
"""Emits all items in the data store in a format such that it can be sourced by a shell."""
env = keys(d)
for e in env:
if getVarFlag(e, "func", d):
continue
emit_var(e, o, d, all) and o.write('\n')
for e in env:
if not getVarFlag(e, "func", d):
continue
emit_var(e, o, d) and o.write('\n')
def update_data(d):
"""Modifies the environment vars according to local overrides and commands.
Examples:
Appending to a variable:
>>> d = init()
>>> setVar('TEST', 'this is a', d)
>>> setVar('TEST_append', ' test', d)
>>> setVar('TEST_append', ' of the emergency broadcast system.', d)
>>> update_data(d)
>>> print getVar('TEST', d)
this is a test of the emergency broadcast system.
Prepending to a variable:
>>> setVar('TEST', 'virtual/libc', d)
>>> setVar('TEST_prepend', 'virtual/tmake ', d)
>>> setVar('TEST_prepend', 'virtual/patcher ', d)
>>> update_data(d)
>>> print getVar('TEST', d)
virtual/patcher virtual/tmake virtual/libc
Overrides:
>>> setVar('TEST_arm', 'target', d)
>>> setVar('TEST_ramses', 'machine', d)
>>> setVar('TEST_local', 'local', d)
>>> setVar('OVERRIDES', 'arm', d)
>>> setVar('TEST', 'original', d)
>>> update_data(d)
>>> print getVar('TEST', d)
target
>>> setVar('OVERRIDES', 'arm:ramses:local', d)
>>> setVar('TEST', 'original', d)
>>> update_data(d)
>>> print getVar('TEST', d)
local
CopyMonster:
>>> e = d.createCopy()
>>> setVar('TEST_foo', 'foo', e)
>>> update_data(e)
>>> print getVar('TEST', e)
local
>>> setVar('OVERRIDES', 'arm:ramses:local:foo', e)
>>> update_data(e)
>>> print getVar('TEST', e)
foo
>>> f = d.createCopy()
>>> setVar('TEST_moo', 'something', f)
>>> setVar('OVERRIDES', 'moo:arm:ramses:local:foo', e)
>>> update_data(e)
>>> print getVar('TEST', e)
foo
>>> h = init()
>>> setVar('SRC_URI', 'file://append.foo;patch=1 ', h)
>>> g = h.createCopy()
>>> setVar('SRC_URI_append_arm', 'file://other.foo;patch=1', g)
>>> setVar('OVERRIDES', 'arm:moo', g)
>>> update_data(g)
>>> print getVar('SRC_URI', g)
file://append.foo;patch=1 file://other.foo;patch=1
"""
bb.msg.debug(2, bb.msg.domain.Data, "update_data()")
# now ask the cookie monster for help
#print "Cookie Monster"
#print "Append/Prepend %s" % d._special_values
#print "Overrides %s" % d._seen_overrides
overrides = (getVar('OVERRIDES', d, 1) or "").split(':') or []
#
# Well let us see what breaks here. We used to iterate
# over each variable and apply the override and then
# do the line expanding.
# If we have bad luck - which we will have - the keys
# where in some order that is so important for this
# method which we don't have anymore.
# Anyway we will fix that and write test cases this
# time.
#
# First we apply all overrides
# Then we will handle _append and _prepend
#
for o in overrides:
# calculate '_'+override
l = len(o)+1
# see if one should even try
if not d._seen_overrides.has_key(o):
continue
vars = d._seen_overrides[o]
for var in vars:
name = var[:-l]
try:
d[name] = d[var]
except:
bb.msg.note(1, bb.msg.domain.Data, "Untracked delVar")
# now on to the appends and prepends
if d._special_values.has_key('_append'):
appends = d._special_values['_append'] or []
for append in appends:
for (a, o) in getVarFlag(append, '_append', d) or []:
# maybe the OVERRIDE was not yet added so keep the append
if (o and o in overrides) or not o:
delVarFlag(append, '_append', d)
if o and not o in overrides:
continue
sval = getVar(append,d) or ""
sval+=a
setVar(append, sval, d)
if d._special_values.has_key('_prepend'):
prepends = d._special_values['_prepend'] or []
for prepend in prepends:
for (a, o) in getVarFlag(prepend, '_prepend', d) or []:
# maybe the OVERRIDE was not yet added so keep the prepend
if (o and o in overrides) or not o:
delVarFlag(prepend, '_prepend', d)
if o and not o in overrides:
continue
sval = a + (getVar(prepend,d) or "")
setVar(prepend, sval, d)
def inherits_class(klass, d):
val = getVar('__inherit_cache', d) or []
if os.path.join('classes', '%s.bbclass' % klass) in val:
return True
return False
def _test():
"""Start a doctest run on this module"""
import doctest
import bb
from bb import data
bb.msg.set_debug_level(0)
doctest.testmod(data)
if __name__ == "__main__":
_test()

View File

@@ -0,0 +1,288 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake Smart Dictionary Implementation
Functions for interacting with the data structure used by the
BitBake build tools.
"""
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2004, 2005 Seb Frankengul
# Copyright (C) 2005, 2006 Holger Hans Peter Freyther
# Copyright (C) 2005 Uli Luckas
# Copyright (C) 2005 ROAD GmbH
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import copy, os, re, sys, time, types
import bb
from bb import utils, methodpool
from COW import COWDictBase
from new import classobj
__setvar_keyword__ = ["_append","_prepend"]
__setvar_regexp__ = re.compile('(?P<base>.*?)(?P<keyword>_append|_prepend)(_(?P<add>.*))?')
__expand_var_regexp__ = re.compile(r"\${[^{}]+}")
__expand_python_regexp__ = re.compile(r"\${@.+?}")
class DataSmart:
def __init__(self, special = COWDictBase.copy(), seen = COWDictBase.copy() ):
self.dict = {}
# cookie monster tribute
self._special_values = special
self._seen_overrides = seen
self.expand_cache = {}
def expand(self,s, varname):
def var_sub(match):
key = match.group()[2:-1]
if varname and key:
if varname == key:
raise Exception("variable %s references itself!" % varname)
var = self.getVar(key, 1)
if var is not None:
return var
else:
return match.group()
def python_sub(match):
import bb
code = match.group()[3:-1]
locals()['d'] = self
s = eval(code)
if type(s) == types.IntType: s = str(s)
return s
if type(s) is not types.StringType: # sanity check
return s
if varname and varname in self.expand_cache:
return self.expand_cache[varname]
while s.find('${') != -1:
olds = s
try:
s = __expand_var_regexp__.sub(var_sub, s)
s = __expand_python_regexp__.sub(python_sub, s)
if s == olds: break
if type(s) is not types.StringType: # sanity check
bb.msg.error(bb.msg.domain.Data, 'expansion of %s returned non-string %s' % (olds, s))
except KeyboardInterrupt:
raise
except:
bb.msg.note(1, bb.msg.domain.Data, "%s:%s while evaluating:\n%s" % (sys.exc_info()[0], sys.exc_info()[1], s))
raise
if varname:
self.expand_cache[varname] = s
return s
def initVar(self, var):
self.expand_cache = {}
if not var in self.dict:
self.dict[var] = {}
def _findVar(self,var):
_dest = self.dict
while (_dest and var not in _dest):
if not "_data" in _dest:
_dest = None
break
_dest = _dest["_data"]
if _dest and var in _dest:
return _dest[var]
return None
def _makeShadowCopy(self, var):
if var in self.dict:
return
local_var = self._findVar(var)
if local_var:
self.dict[var] = copy.copy(local_var)
else:
self.initVar(var)
def setVar(self,var,value):
self.expand_cache = {}
match = __setvar_regexp__.match(var)
if match and match.group("keyword") in __setvar_keyword__:
base = match.group('base')
keyword = match.group("keyword")
override = match.group('add')
l = self.getVarFlag(base, keyword) or []
l.append([value, override])
self.setVarFlag(base, keyword, l)
# todo make sure keyword is not __doc__ or __module__
# pay the cookie monster
try:
self._special_values[keyword].add( base )
except:
self._special_values[keyword] = set()
self._special_values[keyword].add( base )
return
if not var in self.dict:
self._makeShadowCopy(var)
# more cookies for the cookie monster
if '_' in var:
override = var[var.rfind('_')+1:]
if not self._seen_overrides.has_key(override):
self._seen_overrides[override] = set()
self._seen_overrides[override].add( var )
# setting var
self.dict[var]["content"] = value
def getVar(self,var,exp):
value = self.getVarFlag(var,"content")
if exp and value:
return self.expand(value,var)
return value
def renameVar(self, key, newkey):
"""
Rename the variable key to newkey
"""
val = self.getVar(key, 0)
if val is None:
return
self.setVar(newkey, val)
for i in ('_append', '_prepend'):
dest = self.getVarFlag(newkey, i) or []
src = self.getVarFlag(key, i) or []
dest.extend(src)
self.setVarFlag(newkey, i, dest)
if self._special_values.has_key(i) and key in self._special_values[i]:
self._special_values[i].remove(key)
self._special_values[i].add(newkey)
self.delVar(key)
def delVar(self,var):
self.expand_cache = {}
self.dict[var] = {}
def setVarFlag(self,var,flag,flagvalue):
if not var in self.dict:
self._makeShadowCopy(var)
self.dict[var][flag] = flagvalue
def getVarFlag(self,var,flag):
local_var = self._findVar(var)
if local_var:
if flag in local_var:
return copy.copy(local_var[flag])
return None
def delVarFlag(self,var,flag):
local_var = self._findVar(var)
if not local_var:
return
if not var in self.dict:
self._makeShadowCopy(var)
if var in self.dict and flag in self.dict[var]:
del self.dict[var][flag]
def setVarFlags(self,var,flags):
if not var in self.dict:
self._makeShadowCopy(var)
for i in flags.keys():
if i == "content":
continue
self.dict[var][i] = flags[i]
def getVarFlags(self,var):
local_var = self._findVar(var)
flags = {}
if local_var:
for i in local_var.keys():
if i == "content":
continue
flags[i] = local_var[i]
if len(flags) == 0:
return None
return flags
def delVarFlags(self,var):
if not var in self.dict:
self._makeShadowCopy(var)
if var in self.dict:
content = None
# try to save the content
if "content" in self.dict[var]:
content = self.dict[var]["content"]
self.dict[var] = {}
self.dict[var]["content"] = content
else:
del self.dict[var]
def createCopy(self):
"""
Create a copy of self by setting _data to self
"""
# we really want this to be a DataSmart...
data = DataSmart(seen=self._seen_overrides.copy(), special=self._special_values.copy())
data.dict["_data"] = self.dict
return data
# Dictionary Methods
def keys(self):
def _keys(d, mykey):
if "_data" in d:
_keys(d["_data"],mykey)
for key in d.keys():
if key != "_data":
mykey[key] = None
keytab = {}
_keys(self.dict,keytab)
return keytab.keys()
def __getitem__(self,item):
#print "Warning deprecated"
return self.getVar(item, False)
def __setitem__(self,var,data):
#print "Warning deprecated"
self.setVar(var,data)

302
bitbake-dev/lib/bb/event.py Normal file
View File

@@ -0,0 +1,302 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Event' implementation
Classes and functions for manipulating 'events' in the
BitBake build tools.
"""
# Copyright (C) 2003, 2004 Chris Larson
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import os, re
import bb.utils
# This is the pid for which we should generate the event. This is set when
# the runqueue forks off.
worker_pid = 0
class Event:
"""Base class for events"""
type = "Event"
def __init__(self, d):
self._data = d
self.pid = worker_pid
def getData(self):
return self._data
def setData(self, data):
self._data = data
data = property(getData, setData, None, "data property")
NotHandled = 0
Handled = 1
Registered = 10
AlreadyRegistered = 14
# Internal
_handlers = {}
_ui_handlers = {}
_ui_handler_seq = 0
def fire(event):
"""Fire off an Event"""
for handler in _handlers:
h = _handlers[handler]
if type(h).__name__ == "code":
exec(h)
tmpHandler(event)
else:
h(event)
# Remove the event data elements for UI handlers - too much data otherwise
# They can request data if they need it
event.data = None
event._data = None
errors = []
for h in _ui_handlers:
#print "Sending event %s" % event
classid = "%s.%s" % (event.__class__.__module__, event.__class__.__name__)
try:
_ui_handlers[h].event.send((classid, event))
except:
errors.append(h)
for h in errors:
del _ui_handlers[h]
def register(name, handler):
"""Register an Event handler"""
# already registered
if name in _handlers:
return AlreadyRegistered
if handler is not None:
# handle string containing python code
if type(handler).__name__ == "str":
tmp = "def tmpHandler(e):\n%s" % handler
comp = bb.utils.better_compile(tmp, "tmpHandler(e)", "bb.event._registerCode")
_handlers[name] = comp
else:
_handlers[name] = handler
return Registered
def remove(name, handler):
"""Remove an Event handler"""
_handlers.pop(name)
def register_UIHhandler(handler):
bb.event._ui_handler_seq = bb.event._ui_handler_seq + 1
_ui_handlers[_ui_handler_seq] = handler
return _ui_handler_seq
def unregister_UIHhandler(handlerNum):
if handlerNum in _ui_handlers:
del _ui_handlers[handlerNum]
return
def getName(e):
"""Returns the name of a class or class instance"""
if getattr(e, "__name__", None) == None:
return e.__class__.__name__
else:
return e.__name__
class ConfigParsed(Event):
"""Configuration Parsing Complete"""
class RecipeParsed(Event):
""" Recipe Parsing Complete """
def __init__(self, fn, d):
self.fn = fn
Event.__init__(self, d)
class StampUpdate(Event):
"""Trigger for any adjustment of the stamp files to happen"""
def __init__(self, targets, stampfns, d):
self._targets = targets
self._stampfns = stampfns
Event.__init__(self, d)
def getStampPrefix(self):
return self._stampfns
def getTargets(self):
return self._targets
stampPrefix = property(getStampPrefix)
targets = property(getTargets)
class PkgBase(Event):
"""Base class for package events"""
def __init__(self, t, d):
self._pkg = t
Event.__init__(self, d)
self._message = "package %s: %s" % (bb.data.getVar("P", d, 1), getName(self)[3:])
def getPkg(self):
return self._pkg
def setPkg(self, pkg):
self._pkg = pkg
pkg = property(getPkg, setPkg, None, "pkg property")
class BuildBase(Event):
"""Base class for bbmake run events"""
def __init__(self, n, p, c, failures = 0):
self._name = n
self._pkgs = p
Event.__init__(self, c)
self._failures = failures
def getPkgs(self):
return self._pkgs
def setPkgs(self, pkgs):
self._pkgs = pkgs
def getName(self):
return self._name
def setName(self, name):
self._name = name
def getCfg(self):
return self.data
def setCfg(self, cfg):
self.data = cfg
def getFailures(self):
"""
Return the number of failed packages
"""
return self._failures
pkgs = property(getPkgs, setPkgs, None, "pkgs property")
name = property(getName, setName, None, "name property")
cfg = property(getCfg, setCfg, None, "cfg property")
class DepBase(PkgBase):
"""Base class for dependency events"""
def __init__(self, t, data, d):
self._dep = d
PkgBase.__init__(self, t, data)
def getDep(self):
return self._dep
def setDep(self, dep):
self._dep = dep
dep = property(getDep, setDep, None, "dep property")
class BuildStarted(BuildBase):
"""bbmake build run started"""
class BuildCompleted(BuildBase):
"""bbmake build run completed"""
class UnsatisfiedDep(DepBase):
"""Unsatisfied Dependency"""
class RecursiveDep(DepBase):
"""Recursive Dependency"""
class NoProvider(Event):
"""No Provider for an Event"""
def __init__(self, item, data, runtime=False):
Event.__init__(self, data)
self._item = item
self._runtime = runtime
def getItem(self):
return self._item
def isRuntime(self):
return self._runtime
class MultipleProviders(Event):
"""Multiple Providers"""
def __init__(self, item, candidates, data, runtime = False):
Event.__init__(self, data)
self._item = item
self._candidates = candidates
self._is_runtime = runtime
def isRuntime(self):
"""
Is this a runtime issue?
"""
return self._is_runtime
def getItem(self):
"""
The name for the to be build item
"""
return self._item
def getCandidates(self):
"""
Get the possible Candidates for a PROVIDER.
"""
return self._candidates
class ParseProgress(Event):
"""
Parsing Progress Event
"""
def __init__(self, d, cached, parsed, skipped, masked, errors, total):
Event.__init__(self, d)
self.cached = cached
self.parsed = parsed
self.skipped = skipped
self.masked = masked
self.errors = errors
self.sofar = cached + parsed + skipped
self.total = total
class DepTreeGenerated(Event):
"""
Event when a dependency tree has been generated
"""
def __init__(self, d, depgraph):
Event.__init__(self, d)
self._depgraph = depgraph

View File

@@ -0,0 +1,606 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' implementations
Classes for obtaining upstream sources for the
BitBake build tools.
"""
# Copyright (C) 2003, 2004 Chris Larson
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os, re
import bb
from bb import data
from bb import persist_data
class FetchError(Exception):
"""Exception raised when a download fails"""
class NoMethodError(Exception):
"""Exception raised when there is no method to obtain a supplied url or set of urls"""
class MissingParameterError(Exception):
"""Exception raised when a fetch method is missing a critical parameter in the url"""
class ParameterError(Exception):
"""Exception raised when a url cannot be proccessed due to invalid parameters."""
class MD5SumError(Exception):
"""Exception raised when a MD5SUM of a file does not match the expected one"""
class InvalidSRCREV(Exception):
"""Exception raised when an invalid SRCREV is encountered"""
def uri_replace(uri, uri_find, uri_replace, d):
# bb.msg.note(1, bb.msg.domain.Fetcher, "uri_replace: operating on %s" % uri)
if not uri or not uri_find or not uri_replace:
bb.msg.debug(1, bb.msg.domain.Fetcher, "uri_replace: passed an undefined value, not replacing")
uri_decoded = list(bb.decodeurl(uri))
uri_find_decoded = list(bb.decodeurl(uri_find))
uri_replace_decoded = list(bb.decodeurl(uri_replace))
result_decoded = ['','','','','',{}]
for i in uri_find_decoded:
loc = uri_find_decoded.index(i)
result_decoded[loc] = uri_decoded[loc]
import types
if type(i) == types.StringType:
if (re.match(i, uri_decoded[loc])):
result_decoded[loc] = re.sub(i, uri_replace_decoded[loc], uri_decoded[loc])
if uri_find_decoded.index(i) == 2:
if d:
localfn = bb.fetch.localpath(uri, d)
if localfn:
result_decoded[loc] = os.path.dirname(result_decoded[loc]) + "/" + os.path.basename(bb.fetch.localpath(uri, d))
# bb.msg.note(1, bb.msg.domain.Fetcher, "uri_replace: matching %s against %s and replacing with %s" % (i, uri_decoded[loc], uri_replace_decoded[loc]))
else:
# bb.msg.note(1, bb.msg.domain.Fetcher, "uri_replace: no match")
return uri
# else:
# for j in i.keys():
# FIXME: apply replacements against options
return bb.encodeurl(result_decoded)
methods = []
urldata_cache = {}
saved_headrevs = {}
def fetcher_init(d):
"""
Called to initilize the fetchers once the configuration data is known
Calls before this must not hit the cache.
"""
pd = persist_data.PersistData(d)
# When to drop SCM head revisions controled by user policy
srcrev_policy = bb.data.getVar('BB_SRCREV_POLICY', d, 1) or "clear"
if srcrev_policy == "cache":
bb.msg.debug(1, bb.msg.domain.Fetcher, "Keeping SRCREV cache due to cache policy of: %s" % srcrev_policy)
elif srcrev_policy == "clear":
bb.msg.debug(1, bb.msg.domain.Fetcher, "Clearing SRCREV cache due to cache policy of: %s" % srcrev_policy)
try:
bb.fetch.saved_headrevs = pd.getKeyValues("BB_URI_HEADREVS")
except:
pass
pd.delDomain("BB_URI_HEADREVS")
else:
bb.msg.fatal(bb.msg.domain.Fetcher, "Invalid SRCREV cache policy of: %s" % srcrev_policy)
# Make sure our domains exist
pd.addDomain("BB_URI_HEADREVS")
pd.addDomain("BB_URI_LOCALCOUNT")
def fetcher_compare_revisons(d):
"""
Compare the revisions in the persistant cache with current values and
return true/false on whether they've changed.
"""
pd = persist_data.PersistData(d)
data = pd.getKeyValues("BB_URI_HEADREVS")
data2 = bb.fetch.saved_headrevs
changed = False
for key in data:
if key not in data2 or data2[key] != data[key]:
bb.msg.debug(1, bb.msg.domain.Fetcher, "%s changed" % key)
changed = True
return True
else:
bb.msg.debug(2, bb.msg.domain.Fetcher, "%s did not change" % key)
return False
# Function call order is usually:
# 1. init
# 2. go
# 3. localpaths
# localpath can be called at any time
def init(urls, d, setup = True):
urldata = {}
fn = bb.data.getVar('FILE', d, 1)
if fn in urldata_cache:
urldata = urldata_cache[fn]
for url in urls:
if url not in urldata:
urldata[url] = FetchData(url, d)
if setup:
for url in urldata:
if not urldata[url].setup:
urldata[url].setup_localpath(d)
urldata_cache[fn] = urldata
return urldata
def go(d):
"""
Fetch all urls
init must have previously been called
"""
urldata = init([], d, True)
for u in urldata:
ud = urldata[u]
m = ud.method
if ud.localfile:
if not m.forcefetch(u, ud, d) and os.path.exists(ud.md5):
# File already present along with md5 stamp file
# Touch md5 file to show activity
try:
os.utime(ud.md5, None)
except:
# Errors aren't fatal here
pass
continue
lf = bb.utils.lockfile(ud.lockfile)
if not m.forcefetch(u, ud, d) and os.path.exists(ud.md5):
# If someone else fetched this before we got the lock,
# notice and don't try again
try:
os.utime(ud.md5, None)
except:
# Errors aren't fatal here
pass
bb.utils.unlockfile(lf)
continue
m.go(u, ud, d)
if ud.localfile:
if not m.forcefetch(u, ud, d):
Fetch.write_md5sum(u, ud, d)
bb.utils.unlockfile(lf)
def checkstatus(d):
"""
Check all urls exist upstream
init must have previously been called
"""
urldata = init([], d, True)
for u in urldata:
ud = urldata[u]
m = ud.method
bb.msg.note(1, bb.msg.domain.Fetcher, "Testing URL %s" % u)
ret = m.checkstatus(u, ud, d)
if not ret:
bb.msg.fatal(bb.msg.domain.Fetcher, "URL %s doesn't work" % u)
def localpaths(d):
"""
Return a list of the local filenames, assuming successful fetch
"""
local = []
urldata = init([], d, True)
for u in urldata:
ud = urldata[u]
local.append(ud.localpath)
return local
srcrev_internal_call = False
def get_srcrev(d):
"""
Return the version string for the current package
(usually to be used as PV)
Most packages usually only have one SCM so we just pass on the call.
In the multi SCM case, we build a value based on SRCREV_FORMAT which must
have been set.
"""
#
# Ugly code alert. localpath in the fetchers will try to evaluate SRCREV which
# could translate into a call to here. If it does, we need to catch this
# and provide some way so it knows get_srcrev is active instead of being
# some number etc. hence the srcrev_internal_call tracking and the magic
# "SRCREVINACTION" return value.
#
# Neater solutions welcome!
#
if bb.fetch.srcrev_internal_call:
return "SRCREVINACTION"
scms = []
# Only call setup_localpath on URIs which suppports_srcrev()
urldata = init(bb.data.getVar('SRC_URI', d, 1).split(), d, False)
for u in urldata:
ud = urldata[u]
if ud.method.suppports_srcrev():
if not ud.setup:
ud.setup_localpath(d)
scms.append(u)
if len(scms) == 0:
bb.msg.error(bb.msg.domain.Fetcher, "SRCREV was used yet no valid SCM was found in SRC_URI")
raise ParameterError
bb.data.setVar('__BB_DONT_CACHE','1', d)
if len(scms) == 1:
return urldata[scms[0]].method.sortable_revision(scms[0], urldata[scms[0]], d)
#
# Mutiple SCMs are in SRC_URI so we resort to SRCREV_FORMAT
#
format = bb.data.getVar('SRCREV_FORMAT', d, 1)
if not format:
bb.msg.error(bb.msg.domain.Fetcher, "The SRCREV_FORMAT variable must be set when multiple SCMs are used.")
raise ParameterError
for scm in scms:
if 'name' in urldata[scm].parm:
name = urldata[scm].parm["name"]
rev = urldata[scm].method.sortable_revision(scm, urldata[scm], d)
format = format.replace(name, rev)
return format
def localpath(url, d, cache = True):
"""
Called from the parser with cache=False since the cache isn't ready
at this point. Also called from classed in OE e.g. patch.bbclass
"""
ud = init([url], d)
if ud[url].method:
return ud[url].localpath
return url
def runfetchcmd(cmd, d, quiet = False):
"""
Run cmd returning the command output
Raise an error if interrupted or cmd fails
Optionally echo command output to stdout
"""
# Need to export PATH as binary could be in metadata paths
# rather than host provided
# Also include some other variables.
# FIXME: Should really include all export varaiables?
exportvars = ['PATH', 'GIT_PROXY_COMMAND', 'GIT_PROXY_HOST', 'GIT_PROXY_PORT', 'GIT_CONFIG', 'http_proxy', 'ftp_proxy', 'SSH_AUTH_SOCK', 'SSH_AGENT_PID', 'HOME']
for var in exportvars:
val = data.getVar(var, d, True)
if val:
cmd = 'export ' + var + '=%s; %s' % (val, cmd)
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % cmd)
# redirect stderr to stdout
stdout_handle = os.popen(cmd + " 2>&1", "r")
output = ""
while 1:
line = stdout_handle.readline()
if not line:
break
if not quiet:
print line,
output += line
status = stdout_handle.close() or 0
signal = status >> 8
exitstatus = status & 0xff
if signal:
raise FetchError("Fetch command %s failed with signal %s, output:\n%s" % (cmd, signal, output))
elif status != 0:
raise FetchError("Fetch command %s failed with exit code %s, output:\n%s" % (cmd, status, output))
return output
class FetchData(object):
"""
A class which represents the fetcher state for a given URI.
"""
def __init__(self, url, d):
self.localfile = ""
(self.type, self.host, self.path, self.user, self.pswd, self.parm) = bb.decodeurl(data.expand(url, d))
self.date = Fetch.getSRCDate(self, d)
self.url = url
if not self.user and "user" in self.parm:
self.user = self.parm["user"]
if not self.pswd and "pswd" in self.parm:
self.pswd = self.parm["pswd"]
self.setup = False
for m in methods:
if m.supports(url, self, d):
self.method = m
return
raise NoMethodError("Missing implementation for url %s" % url)
def setup_localpath(self, d):
self.setup = True
if "localpath" in self.parm:
# if user sets localpath for file, use it instead.
self.localpath = self.parm["localpath"]
else:
try:
bb.fetch.srcrev_internal_call = True
self.localpath = self.method.localpath(self.url, self, d)
finally:
bb.fetch.srcrev_internal_call = False
# We have to clear data's internal caches since the cached value of SRCREV is now wrong.
# Horrible...
bb.data.delVar("ISHOULDNEVEREXIST", d)
self.md5 = self.localpath + '.md5'
self.lockfile = self.localpath + '.lock'
class Fetch(object):
"""Base class for 'fetch'ing data"""
def __init__(self, urls = []):
self.urls = []
def supports(self, url, urldata, d):
"""
Check to see if this fetch class supports a given url.
"""
return 0
def localpath(self, url, urldata, d):
"""
Return the local filename of a given url assuming a successful fetch.
Can also setup variables in urldata for use in go (saving code duplication
and duplicate code execution)
"""
return url
def setUrls(self, urls):
self.__urls = urls
def getUrls(self):
return self.__urls
urls = property(getUrls, setUrls, None, "Urls property")
def forcefetch(self, url, urldata, d):
"""
Force a fetch, even if localpath exists?
"""
return False
def suppports_srcrev(self):
"""
The fetcher supports auto source revisions (SRCREV)
"""
return False
def go(self, url, urldata, d):
"""
Fetch urls
Assumes localpath was called first
"""
raise NoMethodError("Missing implementation for url")
def checkstatus(self, url, urldata, d):
"""
Check the status of a URL
Assumes localpath was called first
"""
bb.msg.note(1, bb.msg.domain.Fetcher, "URL %s could not be checked for status since no method exists." % url)
return True
def getSRCDate(urldata, d):
"""
Return the SRC Date for the component
d the bb.data module
"""
if "srcdate" in urldata.parm:
return urldata.parm['srcdate']
pn = data.getVar("PN", d, 1)
if pn:
return data.getVar("SRCDATE_%s" % pn, d, 1) or data.getVar("CVSDATE_%s" % pn, d, 1) or data.getVar("SRCDATE", d, 1) or data.getVar("CVSDATE", d, 1) or data.getVar("DATE", d, 1)
return data.getVar("SRCDATE", d, 1) or data.getVar("CVSDATE", d, 1) or data.getVar("DATE", d, 1)
getSRCDate = staticmethod(getSRCDate)
def srcrev_internal_helper(ud, d):
"""
Return:
a) a source revision if specified
b) True if auto srcrev is in action
c) False otherwise
"""
if 'rev' in ud.parm:
return ud.parm['rev']
if 'tag' in ud.parm:
return ud.parm['tag']
rev = None
if 'name' in ud.parm:
pn = data.getVar("PN", d, 1)
rev = data.getVar("SRCREV_pn-" + pn + "_" + ud.parm['name'], d, 1)
if not rev:
rev = data.getVar("SRCREV", d, 1)
if rev == "INVALID":
raise InvalidSRCREV("Please set SRCREV to a valid value")
if not rev:
return False
if rev is "SRCREVINACTION":
return True
return rev
srcrev_internal_helper = staticmethod(srcrev_internal_helper)
def try_mirror(d, tarfn):
"""
Try to use a mirrored version of the sources. We do this
to avoid massive loads on foreign cvs and svn servers.
This method will be used by the different fetcher
implementations.
d Is a bb.data instance
tarfn is the name of the tarball
"""
tarpath = os.path.join(data.getVar("DL_DIR", d, 1), tarfn)
if os.access(tarpath, os.R_OK):
bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists, skipping checkout." % tarfn)
return True
pn = data.getVar('PN', d, True)
src_tarball_stash = None
if pn:
src_tarball_stash = (data.getVar('SRC_TARBALL_STASH_%s' % pn, d, True) or data.getVar('CVS_TARBALL_STASH_%s' % pn, d, True) or data.getVar('SRC_TARBALL_STASH', d, True) or data.getVar('CVS_TARBALL_STASH', d, True) or "").split()
ld = d.createCopy()
for stash in src_tarball_stash:
url = stash + tarfn
try:
ud = FetchData(url, ld)
except bb.fetch.NoMethodError:
bb.msg.debug(1, bb.msg.domain.Fetcher, "No method for %s" % url)
continue
ud.setup_localpath(ld)
try:
ud.method.go(url, ud, ld)
return True
except (bb.fetch.MissingParameterError,
bb.fetch.FetchError,
bb.fetch.MD5SumError):
import sys
(type, value, traceback) = sys.exc_info()
bb.msg.debug(2, bb.msg.domain.Fetcher, "Tarball stash fetch failure: %s" % value)
return False
try_mirror = staticmethod(try_mirror)
def verify_md5sum(ud, got_sum):
"""
Verify the md5sum we wanted with the one we got
"""
wanted_sum = None
if 'md5sum' in ud.parm:
wanted_sum = ud.parm['md5sum']
if not wanted_sum:
return True
return wanted_sum == got_sum
verify_md5sum = staticmethod(verify_md5sum)
def write_md5sum(url, ud, d):
md5data = bb.utils.md5_file(ud.localpath)
# verify the md5sum
if not Fetch.verify_md5sum(ud, md5data):
raise MD5SumError(url)
md5out = file(ud.md5, 'w')
md5out.write(md5data)
md5out.close()
write_md5sum = staticmethod(write_md5sum)
def latest_revision(self, url, ud, d):
"""
Look in the cache for the latest revision, if not present ask the SCM.
"""
if not hasattr(self, "_latest_revision"):
raise ParameterError
pd = persist_data.PersistData(d)
key = self.generate_revision_key(url, ud, d)
rev = pd.getValue("BB_URI_HEADREVS", key)
if rev != None:
return str(rev)
rev = self._latest_revision(url, ud, d)
pd.setValue("BB_URI_HEADREVS", key, rev)
return rev
def sortable_revision(self, url, ud, d):
"""
"""
has_sortable = hasattr(self, "_sortable_revision")
if has_sortable:
return self._sortable_revision(url, ud, d)
pd = persist_data.PersistData(d)
key = self.generate_revision_key(url, ud, d)
latest_rev = self._build_revision(url, ud, d)
last_rev = pd.getValue("BB_URI_LOCALCOUNT", key + "_rev")
count = pd.getValue("BB_URI_LOCALCOUNT", key + "_count")
if last_rev == latest_rev:
return str(count + "+" + latest_rev)
if count is None:
count = "0"
else:
count = str(int(count) + 1)
pd.setValue("BB_URI_LOCALCOUNT", key + "_rev", latest_rev)
pd.setValue("BB_URI_LOCALCOUNT", key + "_count", count)
return str(count + "+" + latest_rev)
def generate_revision_key(self, url, ud, d):
key = self._revision_key(url, ud, d)
return "%s-%s" % (key, bb.data.getVar("PN", d, True) or "")
import cvs
import git
import local
import svn
import wget
import svk
import ssh
import perforce
import bzr
import hg
import osc
methods.append(local.Local())
methods.append(wget.Wget())
methods.append(svn.Svn())
methods.append(git.Git())
methods.append(cvs.Cvs())
methods.append(svk.Svk())
methods.append(ssh.SSH())
methods.append(perforce.Perforce())
methods.append(bzr.Bzr())
methods.append(hg.Hg())
methods.append(osc.Osc())

View File

@@ -0,0 +1,153 @@
"""
BitBake 'Fetch' implementation for bzr.
"""
# Copyright (C) 2007 Ross Burton
# Copyright (C) 2007 Richard Purdie
#
# Classes for obtaining upstream sources for the
# BitBake build tools.
# Copyright (C) 2003, 2004 Chris Larson
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import os
import sys
import bb
from bb import data
from bb.fetch import Fetch
from bb.fetch import FetchError
from bb.fetch import runfetchcmd
class Bzr(Fetch):
def supports(self, url, ud, d):
return ud.type in ['bzr']
def localpath (self, url, ud, d):
# Create paths to bzr checkouts
relpath = ud.path
if relpath.startswith('/'):
# Remove leading slash as os.path.join can't cope
relpath = relpath[1:]
ud.pkgdir = os.path.join(data.expand('${BZRDIR}', d), ud.host, relpath)
revision = Fetch.srcrev_internal_helper(ud, d)
if revision is True:
ud.revision = self.latest_revision(url, ud, d)
elif revision:
ud.revision = revision
if not ud.revision:
ud.revision = self.latest_revision(url, ud, d)
ud.localfile = data.expand('bzr_%s_%s_%s.tar.gz' % (ud.host, ud.path.replace('/', '.'), ud.revision), d)
return os.path.join(data.getVar("DL_DIR", d, True), ud.localfile)
def _buildbzrcommand(self, ud, d, command):
"""
Build up an bzr commandline based on ud
command is "fetch", "update", "revno"
"""
basecmd = data.expand('${FETCHCMD_bzr}', d)
proto = "http"
if "proto" in ud.parm:
proto = ud.parm["proto"]
bzrroot = ud.host + ud.path
options = []
if command is "revno":
bzrcmd = "%s revno %s %s://%s" % (basecmd, " ".join(options), proto, bzrroot)
else:
if ud.revision:
options.append("-r %s" % ud.revision)
if command is "fetch":
bzrcmd = "%s co %s %s://%s" % (basecmd, " ".join(options), proto, bzrroot)
elif command is "update":
bzrcmd = "%s pull %s --overwrite" % (basecmd, " ".join(options))
else:
raise FetchError("Invalid bzr command %s" % command)
return bzrcmd
def go(self, loc, ud, d):
"""Fetch url"""
# try to use the tarball stash
if Fetch.try_mirror(d, ud.localfile):
bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists or was mirrored, skipping bzr checkout." % ud.localpath)
return
if os.access(os.path.join(ud.pkgdir, os.path.basename(ud.pkgdir), '.bzr'), os.R_OK):
bzrcmd = self._buildbzrcommand(ud, d, "update")
bb.msg.debug(1, bb.msg.domain.Fetcher, "BZR Update %s" % loc)
os.chdir(os.path.join (ud.pkgdir, os.path.basename(ud.path)))
runfetchcmd(bzrcmd, d)
else:
os.system("rm -rf %s" % os.path.join(ud.pkgdir, os.path.basename(ud.pkgdir)))
bzrcmd = self._buildbzrcommand(ud, d, "fetch")
bb.msg.debug(1, bb.msg.domain.Fetcher, "BZR Checkout %s" % loc)
bb.mkdirhier(ud.pkgdir)
os.chdir(ud.pkgdir)
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % bzrcmd)
runfetchcmd(bzrcmd, d)
os.chdir(ud.pkgdir)
# tar them up to a defined filename
try:
runfetchcmd("tar -czf %s %s" % (ud.localpath, os.path.basename(ud.pkgdir)), d)
except:
t, v, tb = sys.exc_info()
try:
os.unlink(ud.localpath)
except OSError:
pass
raise t, v, tb
def suppports_srcrev(self):
return True
def _revision_key(self, url, ud, d):
"""
Return a unique key for the url
"""
return "bzr:" + ud.pkgdir
def _latest_revision(self, url, ud, d):
"""
Return the latest upstream revision number
"""
bb.msg.debug(2, bb.msg.domain.Fetcher, "BZR fetcher hitting network for %s" % url)
output = runfetchcmd(self._buildbzrcommand(ud, d, "revno"), d, True)
return output.strip()
def _sortable_revision(self, url, ud, d):
"""
Return a sortable revision number which in our case is the revision number
"""
return self._build_revision(url, ud, d)
def _build_revision(self, url, ud, d):
return ud.revision

View File

@@ -0,0 +1,182 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' implementations
Classes for obtaining upstream sources for the
BitBake build tools.
"""
# Copyright (C) 2003, 2004 Chris Larson
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
#Based on functions from the base bb module, Copyright 2003 Holger Schurig
#
import os
import bb
from bb import data
from bb.fetch import Fetch
from bb.fetch import FetchError
from bb.fetch import MissingParameterError
class Cvs(Fetch):
"""
Class to fetch a module or modules from cvs repositories
"""
def supports(self, url, ud, d):
"""
Check to see if a given url can be fetched with cvs.
"""
return ud.type in ['cvs', 'pserver']
def localpath(self, url, ud, d):
if not "module" in ud.parm:
raise MissingParameterError("cvs method needs a 'module' parameter")
ud.module = ud.parm["module"]
ud.tag = ""
if 'tag' in ud.parm:
ud.tag = ud.parm['tag']
# Override the default date in certain cases
if 'date' in ud.parm:
ud.date = ud.parm['date']
elif ud.tag:
ud.date = ""
norecurse = ''
if 'norecurse' in ud.parm:
norecurse = '_norecurse'
fullpath = ''
if 'fullpath' in ud.parm:
fullpath = '_fullpath'
ud.localfile = data.expand('%s_%s_%s_%s%s%s.tar.gz' % (ud.module.replace('/', '.'), ud.host, ud.tag, ud.date, norecurse, fullpath), d)
return os.path.join(data.getVar("DL_DIR", d, True), ud.localfile)
def forcefetch(self, url, ud, d):
if (ud.date == "now"):
return True
return False
def go(self, loc, ud, d):
# try to use the tarball stash
if not self.forcefetch(loc, ud, d) and Fetch.try_mirror(d, ud.localfile):
bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists or was mirrored, skipping cvs checkout." % ud.localpath)
return
method = "pserver"
if "method" in ud.parm:
method = ud.parm["method"]
localdir = ud.module
if "localdir" in ud.parm:
localdir = ud.parm["localdir"]
cvs_port = ""
if "port" in ud.parm:
cvs_port = ud.parm["port"]
cvs_rsh = None
if method == "ext":
if "rsh" in ud.parm:
cvs_rsh = ud.parm["rsh"]
if method == "dir":
cvsroot = ud.path
else:
cvsroot = ":" + method
cvsproxyhost = data.getVar('CVS_PROXY_HOST', d, True)
if cvsproxyhost:
cvsroot += ";proxy=" + cvsproxyhost
cvsproxyport = data.getVar('CVS_PROXY_PORT', d, True)
if cvsproxyport:
cvsroot += ";proxyport=" + cvsproxyport
cvsroot += ":" + ud.user
if ud.pswd:
cvsroot += ":" + ud.pswd
cvsroot += "@" + ud.host + ":" + cvs_port + ud.path
options = []
if 'norecurse' in ud.parm:
options.append("-l")
if ud.date:
# treat YYYYMMDDHHMM specially for CVS
if len(ud.date) == 12:
options.append("-D \"%s %s:%s UTC\"" % (ud.date[0:8], ud.date[8:10], ud.date[10:12]))
else:
options.append("-D \"%s UTC\"" % ud.date)
if ud.tag:
options.append("-r %s" % ud.tag)
localdata = data.createCopy(d)
data.setVar('OVERRIDES', "cvs:%s" % data.getVar('OVERRIDES', localdata), localdata)
data.update_data(localdata)
data.setVar('CVSROOT', cvsroot, localdata)
data.setVar('CVSCOOPTS', " ".join(options), localdata)
data.setVar('CVSMODULE', ud.module, localdata)
cvscmd = data.getVar('FETCHCOMMAND', localdata, 1)
cvsupdatecmd = data.getVar('UPDATECOMMAND', localdata, 1)
if cvs_rsh:
cvscmd = "CVS_RSH=\"%s\" %s" % (cvs_rsh, cvscmd)
cvsupdatecmd = "CVS_RSH=\"%s\" %s" % (cvs_rsh, cvsupdatecmd)
# create module directory
bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: checking for module directory")
pkg = data.expand('${PN}', d)
pkgdir = os.path.join(data.expand('${CVSDIR}', localdata), pkg)
moddir = os.path.join(pkgdir,localdir)
if os.access(os.path.join(moddir,'CVS'), os.R_OK):
bb.msg.note(1, bb.msg.domain.Fetcher, "Update " + loc)
# update sources there
os.chdir(moddir)
myret = os.system(cvsupdatecmd)
else:
bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
# check out sources there
bb.mkdirhier(pkgdir)
os.chdir(pkgdir)
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % cvscmd)
myret = os.system(cvscmd)
if myret != 0 or not os.access(moddir, os.R_OK):
try:
os.rmdir(moddir)
except OSError:
pass
raise FetchError(ud.module)
# tar them up to a defined filename
if 'fullpath' in ud.parm:
os.chdir(pkgdir)
myret = os.system("tar -czf %s %s" % (ud.localpath, localdir))
else:
os.chdir(moddir)
os.chdir('..')
myret = os.system("tar -czf %s %s" % (ud.localpath, os.path.basename(moddir)))
if myret != 0:
try:
os.unlink(ud.localpath)
except OSError:
pass
raise FetchError(ud.module)

View File

@@ -0,0 +1,188 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' git implementation
"""
#Copyright (C) 2005 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import os
import bb
from bb import data
from bb.fetch import Fetch
from bb.fetch import runfetchcmd
class Git(Fetch):
"""Class to fetch a module or modules from git repositories"""
def supports(self, url, ud, d):
"""
Check to see if a given url can be fetched with git.
"""
return ud.type in ['git']
def localpath(self, url, ud, d):
if 'protocol' in ud.parm:
ud.proto = ud.parm['protocol']
elif not ud.host:
ud.proto = 'file'
else:
ud.proto = "rsync"
ud.branch = ud.parm.get("branch", "master")
tag = Fetch.srcrev_internal_helper(ud, d)
if tag is True:
ud.tag = self.latest_revision(url, ud, d)
elif tag:
ud.tag = tag
if not ud.tag or ud.tag == "master":
ud.tag = self.latest_revision(url, ud, d)
ud.localfile = data.expand('git_%s%s_%s.tar.gz' % (ud.host, ud.path.replace('/', '.'), ud.tag), d)
return os.path.join(data.getVar("DL_DIR", d, True), ud.localfile)
def go(self, loc, ud, d):
"""Fetch url"""
if Fetch.try_mirror(d, ud.localfile):
bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists (or was stashed). Skipping git checkout." % ud.localpath)
return
if ud.user:
username = ud.user + '@'
else:
username = ""
gitsrcname = '%s%s' % (ud.host, ud.path.replace('/', '.'))
repofilename = 'git_%s.tar.gz' % (gitsrcname)
repofile = os.path.join(data.getVar("DL_DIR", d, 1), repofilename)
repodir = os.path.join(data.expand('${GITDIR}', d), gitsrcname)
coname = '%s' % (ud.tag)
codir = os.path.join(repodir, coname)
if not os.path.exists(repodir):
if Fetch.try_mirror(d, repofilename):
bb.mkdirhier(repodir)
os.chdir(repodir)
runfetchcmd("tar -xzf %s" % (repofile), d)
else:
runfetchcmd("git clone -n %s://%s%s%s %s" % (ud.proto, username, ud.host, ud.path, repodir), d)
os.chdir(repodir)
# Remove all but the .git directory
if not self._contains_ref(ud.tag, d):
runfetchcmd("rm * -Rf", d)
runfetchcmd("git fetch %s://%s%s%s %s" % (ud.proto, username, ud.host, ud.path, ud.branch), d)
runfetchcmd("git fetch --tags %s://%s%s%s" % (ud.proto, username, ud.host, ud.path), d)
runfetchcmd("git prune-packed", d)
runfetchcmd("git pack-redundant --all | xargs -r rm", d)
os.chdir(repodir)
mirror_tarballs = data.getVar("BB_GENERATE_MIRROR_TARBALLS", d, True)
if mirror_tarballs != "0":
bb.msg.note(1, bb.msg.domain.Fetcher, "Creating tarball of git repository")
runfetchcmd("tar -czf %s %s" % (repofile, os.path.join(".", ".git", "*") ), d)
if os.path.exists(codir):
bb.utils.prunedir(codir)
bb.mkdirhier(codir)
os.chdir(repodir)
runfetchcmd("git read-tree %s" % (ud.tag), d)
runfetchcmd("git checkout-index -q -f --prefix=%s -a" % (os.path.join(codir, "git", "")), d)
os.chdir(codir)
bb.msg.note(1, bb.msg.domain.Fetcher, "Creating tarball of git checkout")
runfetchcmd("tar -czf %s %s" % (ud.localpath, os.path.join(".", "*") ), d)
os.chdir(repodir)
bb.utils.prunedir(codir)
def suppports_srcrev(self):
return True
def _contains_ref(self, tag, d):
output = runfetchcmd("git log --pretty=oneline -n 1 %s -- 2> /dev/null | wc -l" % tag, d, quiet=True)
return output.split()[0] != "0"
def _revision_key(self, url, ud, d):
"""
Return a unique key for the url
"""
return "git:" + ud.host + ud.path.replace('/', '.')
def _latest_revision(self, url, ud, d):
"""
Compute the HEAD revision for the url
"""
if ud.user:
username = ud.user + '@'
else:
username = ""
output = runfetchcmd("git ls-remote %s://%s%s%s %s" % (ud.proto, username, ud.host, ud.path, ud.branch), d, True)
return output.split()[0]
def _build_revision(self, url, ud, d):
return ud.tag
def _want_sortable_revision(self, url, ud, d):
return bb.data.getVar("BB_GIT_CLONE_FOR_SRCREV", d, True) or False
def _sortable_revision_disabled(self, url, ud, d):
"""
This is only called when _want_sortable_revision called true
We will have to get the updated revision.
"""
gitsrcname = '%s%s' % (ud.host, ud.path.replace('/', '.'))
repodir = os.path.join(data.expand('${GITDIR}', d), gitsrcname)
key = "GIT_CACHED_REVISION-%s-%s" % (gitsrcname, ud.tag)
if bb.data.getVar(key, d):
return bb.data.getVar(key, d)
# Runtime warning on wrongly configured sources
if ud.tag == "1":
bb.msg.error(1, bb.msg.domain.Fetcher, "SRCREV is '1'. This indicates a configuration error of %s" % url)
return "0+1"
cwd = os.getcwd()
# Check if we have the rev already
if not os.path.exists(repodir):
print "no repo"
self.go(None, ud, d)
os.chdir(repodir)
if not self._contains_ref(ud.tag, d):
self.go(None, ud, d)
output = runfetchcmd("git rev-list %s -- 2> /dev/null | wc -l" % ud.tag, d, quiet=True)
os.chdir(cwd)
sortable_revision = "%s+%s" % (output.split()[0], ud.tag)
bb.data.setVar(key, sortable_revision, d)
return sortable_revision

View File

@@ -0,0 +1,178 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' implementation for mercurial DRCS (hg).
"""
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2004 Marcin Juszkiewicz
# Copyright (C) 2007 Robert Schuster
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os
import sys
import bb
from bb import data
from bb.fetch import Fetch
from bb.fetch import FetchError
from bb.fetch import MissingParameterError
from bb.fetch import runfetchcmd
class Hg(Fetch):
"""Class to fetch a from mercurial repositories"""
def supports(self, url, ud, d):
"""
Check to see if a given url can be fetched with mercurial.
"""
return ud.type in ['hg']
def localpath(self, url, ud, d):
if not "module" in ud.parm:
raise MissingParameterError("hg method needs a 'module' parameter")
ud.module = ud.parm["module"]
# Create paths to mercurial checkouts
relpath = ud.path
if relpath.startswith('/'):
# Remove leading slash as os.path.join can't cope
relpath = relpath[1:]
ud.pkgdir = os.path.join(data.expand('${HGDIR}', d), ud.host, relpath)
ud.moddir = os.path.join(ud.pkgdir, ud.module)
if 'rev' in ud.parm:
ud.revision = ud.parm['rev']
else:
tag = Fetch.srcrev_internal_helper(ud, d)
if tag is True:
ud.revision = self.latest_revision(url, ud, d)
elif tag:
ud.revision = tag
else:
ud.revision = self.latest_revision(url, ud, d)
ud.localfile = data.expand('%s_%s_%s_%s.tar.gz' % (ud.module.replace('/', '.'), ud.host, ud.path.replace('/', '.'), ud.revision), d)
return os.path.join(data.getVar("DL_DIR", d, True), ud.localfile)
def _buildhgcommand(self, ud, d, command):
"""
Build up an hg commandline based on ud
command is "fetch", "update", "info"
"""
basecmd = data.expand('${FETCHCMD_hg}', d)
proto = "http"
if "proto" in ud.parm:
proto = ud.parm["proto"]
host = ud.host
if proto == "file":
host = "/"
ud.host = "localhost"
if not ud.user:
hgroot = host + ud.path
else:
hgroot = ud.user + "@" + host + ud.path
if command is "info":
return "%s identify -i %s://%s/%s" % (basecmd, proto, hgroot, ud.module)
options = [];
if ud.revision:
options.append("-r %s" % ud.revision)
if command is "fetch":
cmd = "%s clone %s %s://%s/%s %s" % (basecmd, " ".join(options), proto, hgroot, ud.module, ud.module)
elif command is "pull":
# do not pass options list; limiting pull to rev causes the local
# repo not to contain it and immediately following "update" command
# will crash
cmd = "%s pull" % (basecmd)
elif command is "update":
cmd = "%s update -C %s" % (basecmd, " ".join(options))
else:
raise FetchError("Invalid hg command %s" % command)
return cmd
def go(self, loc, ud, d):
"""Fetch url"""
# try to use the tarball stash
if Fetch.try_mirror(d, ud.localfile):
bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists or was mirrored, skipping hg checkout." % ud.localpath)
return
bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: checking for module directory '" + ud.moddir + "'")
if os.access(os.path.join(ud.moddir, '.hg'), os.R_OK):
updatecmd = self._buildhgcommand(ud, d, "pull")
bb.msg.note(1, bb.msg.domain.Fetcher, "Update " + loc)
# update sources there
os.chdir(ud.moddir)
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % updatecmd)
runfetchcmd(updatecmd, d)
else:
fetchcmd = self._buildhgcommand(ud, d, "fetch")
bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
# check out sources there
bb.mkdirhier(ud.pkgdir)
os.chdir(ud.pkgdir)
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % fetchcmd)
runfetchcmd(fetchcmd, d)
# Even when we clone (fetch), we still need to update as hg's clone
# won't checkout the specified revision if its on a branch
updatecmd = self._buildhgcommand(ud, d, "update")
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % updatecmd)
runfetchcmd(updatecmd, d)
os.chdir(ud.pkgdir)
try:
runfetchcmd("tar -czf %s %s" % (ud.localpath, ud.module), d)
except:
t, v, tb = sys.exc_info()
try:
os.unlink(ud.localpath)
except OSError:
pass
raise t, v, tb
def suppports_srcrev(self):
return True
def _latest_revision(self, url, ud, d):
"""
Compute tip revision for the url
"""
output = runfetchcmd(self._buildhgcommand(ud, d, "info"), d)
return output.strip()
def _build_revision(self, url, ud, d):
return ud.revision
def _revision_key(self, url, ud, d):
"""
Return a unique key for the url
"""
return "hg:" + ud.moddir

View File

@@ -0,0 +1,72 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' implementations
Classes for obtaining upstream sources for the
BitBake build tools.
"""
# Copyright (C) 2003, 2004 Chris Larson
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os
import bb
from bb import data
from bb.fetch import Fetch
class Local(Fetch):
def supports(self, url, urldata, d):
"""
Check to see if a given url can be fetched with cvs.
"""
return urldata.type in ['file','patch']
def localpath(self, url, urldata, d):
"""
Return the local filename of a given url assuming a successful fetch.
"""
path = url.split("://")[1]
path = path.split(";")[0]
newpath = path
if path[0] != "/":
filespath = data.getVar('FILESPATH', d, 1)
if filespath:
newpath = bb.which(filespath, path)
if not newpath:
filesdir = data.getVar('FILESDIR', d, 1)
if filesdir:
newpath = os.path.join(filesdir, path)
# We don't set localfile as for this fetcher the file is already local!
return newpath
def go(self, url, urldata, d):
"""Fetch urls (no-op for Local method)"""
# no need to fetch local files, we'll deal with them in place.
return 1
def checkstatus(self, url, urldata, d):
"""
Check the status of the url
"""
if urldata.localpath.find("*") != -1:
bb.msg.note(1, bb.msg.domain.Fetcher, "URL %s looks like a glob and was therefore not checked." % url)
return True
if os.path.exists(urldata.localpath):
return True
return False

View File

@@ -0,0 +1,155 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
Bitbake "Fetch" implementation for osc (Opensuse build service client).
Based on the svn "Fetch" implementation.
"""
import os
import sys
import bb
from bb import data
from bb.fetch import Fetch
from bb.fetch import FetchError
from bb.fetch import MissingParameterError
from bb.fetch import runfetchcmd
class Osc(Fetch):
"""Class to fetch a module or modules from Opensuse build server
repositories."""
def supports(self, url, ud, d):
"""
Check to see if a given url can be fetched with osc.
"""
return ud.type in ['osc']
def localpath(self, url, ud, d):
if not "module" in ud.parm:
raise MissingParameterError("osc method needs a 'module' parameter.")
ud.module = ud.parm["module"]
# Create paths to osc checkouts
relpath = ud.path
if relpath.startswith('/'):
# Remove leading slash as os.path.join can't cope
relpath = relpath[1:]
ud.pkgdir = os.path.join(data.expand('${OSCDIR}', d), ud.host)
ud.moddir = os.path.join(ud.pkgdir, relpath, ud.module)
if 'rev' in ud.parm:
ud.revision = ud.parm['rev']
else:
pv = data.getVar("PV", d, 0)
rev = Fetch.srcrev_internal_helper(ud, d)
if rev and rev != True:
ud.revision = rev
else:
ud.revision = ""
ud.localfile = data.expand('%s_%s_%s.tar.gz' % (ud.module.replace('/', '.'), ud.path.replace('/', '.'), ud.revision), d)
return os.path.join(data.getVar("DL_DIR", d, True), ud.localfile)
def _buildosccommand(self, ud, d, command):
"""
Build up an ocs commandline based on ud
command is "fetch", "update", "info"
"""
basecmd = data.expand('${FETCHCMD_osc}', d)
proto = "ocs"
if "proto" in ud.parm:
proto = ud.parm["proto"]
options = []
config = "-c %s" % self.generate_config(ud, d)
if ud.revision:
options.append("-r %s" % ud.revision)
coroot = ud.path
if coroot.startswith('/'):
# Remove leading slash as os.path.join can't cope
coroot= coroot[1:]
if command is "fetch":
osccmd = "%s %s co %s/%s %s" % (basecmd, config, coroot, ud.module, " ".join(options))
elif command is "update":
osccmd = "%s %s up %s" % (basecmd, config, " ".join(options))
else:
raise FetchError("Invalid osc command %s" % command)
return osccmd
def go(self, loc, ud, d):
"""
Fetch url
"""
# Try to use the tarball stash
if Fetch.try_mirror(d, ud.localfile):
bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists or was mirrored, skipping osc checkout." % ud.localpath)
return
bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: checking for module directory '" + ud.moddir + "'")
if os.access(os.path.join(data.expand('${OSCDIR}', d), ud.path, ud.module), os.R_OK):
oscupdatecmd = self._buildosccommand(ud, d, "update")
bb.msg.note(1, bb.msg.domain.Fetcher, "Update "+ loc)
# update sources there
os.chdir(ud.moddir)
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % oscupdatecmd)
runfetchcmd(oscupdatecmd, d)
else:
oscfetchcmd = self._buildosccommand(ud, d, "fetch")
bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
# check out sources there
bb.mkdirhier(ud.pkgdir)
os.chdir(ud.pkgdir)
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % oscfetchcmd)
runfetchcmd(oscfetchcmd, d)
os.chdir(os.path.join(ud.pkgdir + ud.path))
# tar them up to a defined filename
try:
runfetchcmd("tar -czf %s %s" % (ud.localpath, ud.module), d)
except:
t, v, tb = sys.exc_info()
try:
os.unlink(ud.localpath)
except OSError:
pass
raise t, v, tb
def supports_srcrev(self):
return False
def generate_config(self, ud, d):
"""
Generate a .oscrc to be used for this run.
"""
config_path = "%s/oscrc" % data.expand('${OSCDIR}', d)
if (os.path.exists(config_path)):
os.remove(config_path)
f = open(config_path, 'w')
f.write("[general]\n")
f.write("apisrv = %s\n" % ud.host)
f.write("scheme = http\n")
f.write("su-wrapper = su -c\n")
f.write("build-root = %s\n" % data.expand('${WORKDIR}', d))
f.write("urllist = http://moblin-obs.jf.intel.com:8888/build/%(project)s/%(repository)s/%(buildarch)s/:full/%(name)s.rpm\n")
f.write("extra-pkgs = gzip\n")
f.write("\n")
f.write("[%s]\n" % ud.host)
f.write("user = %s\n" % ud.parm["user"])
f.write("pass = %s\n" % ud.parm["pswd"])
f.close()
return config_path

View File

@@ -0,0 +1,214 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' implementations
Classes for obtaining upstream sources for the
BitBake build tools.
"""
# Copyright (C) 2003, 2004 Chris Larson
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os
import bb
from bb import data
from bb.fetch import Fetch
from bb.fetch import FetchError
class Perforce(Fetch):
def supports(self, url, ud, d):
return ud.type in ['p4']
def doparse(url,d):
parm = {}
path = url.split("://")[1]
delim = path.find("@");
if delim != -1:
(user,pswd,host,port) = path.split('@')[0].split(":")
path = path.split('@')[1]
else:
(host,port) = data.getVar('P4PORT', d).split(':')
user = ""
pswd = ""
if path.find(";") != -1:
keys=[]
values=[]
plist = path.split(';')
for item in plist:
if item.count('='):
(key,value) = item.split('=')
keys.append(key)
values.append(value)
parm = dict(zip(keys,values))
path = "//" + path.split(';')[0]
host += ":%s" % (port)
parm["cset"] = Perforce.getcset(d, path, host, user, pswd, parm)
return host,path,user,pswd,parm
doparse = staticmethod(doparse)
def getcset(d, depot,host,user,pswd,parm):
p4opt = ""
if "cset" in parm:
return parm["cset"];
if user:
p4opt += " -u %s" % (user)
if pswd:
p4opt += " -P %s" % (pswd)
if host:
p4opt += " -p %s" % (host)
p4date = data.getVar("P4DATE", d, 1)
if "revision" in parm:
depot += "#%s" % (parm["revision"])
elif "label" in parm:
depot += "@%s" % (parm["label"])
elif p4date:
depot += "@%s" % (p4date)
p4cmd = data.getVar('FETCHCOMMAND_p4', d, 1)
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s%s changes -m 1 %s" % (p4cmd, p4opt, depot))
p4file = os.popen("%s%s changes -m 1 %s" % (p4cmd, p4opt, depot))
cset = p4file.readline().strip()
bb.msg.debug(1, bb.msg.domain.Fetcher, "READ %s" % (cset))
if not cset:
return -1
return cset.split(' ')[1]
getcset = staticmethod(getcset)
def localpath(self, url, ud, d):
(host,path,user,pswd,parm) = Perforce.doparse(url,d)
# If a label is specified, we use that as our filename
if "label" in parm:
ud.localfile = "%s.tar.gz" % (parm["label"])
return os.path.join(data.getVar("DL_DIR", d, 1), ud.localfile)
base = path
which = path.find('/...')
if which != -1:
base = path[:which]
if base[0] == "/":
base = base[1:]
cset = Perforce.getcset(d, path, host, user, pswd, parm)
ud.localfile = data.expand('%s+%s+%s.tar.gz' % (host,base.replace('/', '.'), cset), d)
return os.path.join(data.getVar("DL_DIR", d, 1), ud.localfile)
def go(self, loc, ud, d):
"""
Fetch urls
"""
# try to use the tarball stash
if Fetch.try_mirror(d, ud.localfile):
bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists or was mirrored, skipping perforce checkout." % ud.localpath)
return
(host,depot,user,pswd,parm) = Perforce.doparse(loc, d)
if depot.find('/...') != -1:
path = depot[:depot.find('/...')]
else:
path = depot
if "module" in parm:
module = parm["module"]
else:
module = os.path.basename(path)
localdata = data.createCopy(d)
data.setVar('OVERRIDES', "p4:%s" % data.getVar('OVERRIDES', localdata), localdata)
data.update_data(localdata)
# Get the p4 command
p4opt = ""
if user:
p4opt += " -u %s" % (user)
if pswd:
p4opt += " -P %s" % (pswd)
if host:
p4opt += " -p %s" % (host)
p4cmd = data.getVar('FETCHCOMMAND', localdata, 1)
# create temp directory
bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: creating temporary directory")
bb.mkdirhier(data.expand('${WORKDIR}', localdata))
data.setVar('TMPBASE', data.expand('${WORKDIR}/oep4.XXXXXX', localdata), localdata)
tmppipe = os.popen(data.getVar('MKTEMPDIRCMD', localdata, 1) or "false")
tmpfile = tmppipe.readline().strip()
if not tmpfile:
bb.error("Fetch: unable to create temporary directory.. make sure 'mktemp' is in the PATH.")
raise FetchError(module)
if "label" in parm:
depot = "%s@%s" % (depot,parm["label"])
else:
cset = Perforce.getcset(d, depot, host, user, pswd, parm)
depot = "%s@%s" % (depot,cset)
os.chdir(tmpfile)
bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
bb.msg.note(1, bb.msg.domain.Fetcher, "%s%s files %s" % (p4cmd, p4opt, depot))
p4file = os.popen("%s%s files %s" % (p4cmd, p4opt, depot))
if not p4file:
bb.error("Fetch: unable to get the P4 files from %s" % (depot))
raise FetchError(module)
count = 0
for file in p4file:
list = file.split()
if list[2] == "delete":
continue
dest = list[0][len(path)+1:]
where = dest.find("#")
os.system("%s%s print -o %s/%s %s" % (p4cmd, p4opt, module,dest[:where],list[0]))
count = count + 1
if count == 0:
bb.error("Fetch: No files gathered from the P4 fetch")
raise FetchError(module)
myret = os.system("tar -czf %s %s" % (ud.localpath, module))
if myret != 0:
try:
os.unlink(ud.localpath)
except OSError:
pass
raise FetchError(module)
# cleanup
os.system('rm -rf %s' % tmpfile)

View File

@@ -0,0 +1,118 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
'''
BitBake 'Fetch' implementations
This implementation is for Secure Shell (SSH), and attempts to comply with the
IETF secsh internet draft:
http://tools.ietf.org/wg/secsh/draft-ietf-secsh-scp-sftp-ssh-uri/
Currently does not support the sftp parameters, as this uses scp
Also does not support the 'fingerprint' connection parameter.
'''
# Copyright (C) 2006 OpenedHand Ltd.
#
#
# Based in part on svk.py:
# Copyright (C) 2006 Holger Hans Peter Freyther
# Based on svn.py:
# Copyright (C) 2003, 2004 Chris Larson
# Based on functions from the base bb module:
# Copyright 2003 Holger Schurig
#
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import re, os
from bb import data
from bb.fetch import Fetch
from bb.fetch import FetchError
__pattern__ = re.compile(r'''
\s* # Skip leading whitespace
ssh:// # scheme
( # Optional username/password block
(?P<user>\S+) # username
(:(?P<pass>\S+))? # colon followed by the password (optional)
)?
(?P<cparam>(;[^;]+)*)? # connection parameters block (optional)
@
(?P<host>\S+?) # non-greedy match of the host
(:(?P<port>[0-9]+))? # colon followed by the port (optional)
/
(?P<path>[^;]+) # path on the remote system, may be absolute or relative,
# and may include the use of '~' to reference the remote home
# directory
(?P<sparam>(;[^;]+)*)? # parameters block (optional)
$
''', re.VERBOSE)
class SSH(Fetch):
'''Class to fetch a module or modules via Secure Shell'''
def supports(self, url, urldata, d):
return __pattern__.match(url) != None
def localpath(self, url, urldata, d):
m = __pattern__.match(url)
path = m.group('path')
host = m.group('host')
lpath = os.path.join(data.getVar('DL_DIR', d, True), host, os.path.basename(path))
return lpath
def go(self, url, urldata, d):
dldir = data.getVar('DL_DIR', d, 1)
m = __pattern__.match(url)
path = m.group('path')
host = m.group('host')
port = m.group('port')
user = m.group('user')
password = m.group('pass')
ldir = os.path.join(dldir, host)
lpath = os.path.join(ldir, os.path.basename(path))
if not os.path.exists(ldir):
os.makedirs(ldir)
if port:
port = '-P %s' % port
else:
port = ''
if user:
fr = user
if password:
fr += ':%s' % password
fr += '@%s' % host
else:
fr = host
fr += ':%s' % path
import commands
cmd = 'scp -B -r %s %s %s/' % (
port,
commands.mkarg(fr),
commands.mkarg(ldir)
)
(exitstatus, output) = commands.getstatusoutput(cmd)
if exitstatus != 0:
print output
raise FetchError('Unable to fetch %s' % url)

View File

@@ -0,0 +1,109 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' implementations
This implementation is for svk. It is based on the svn implementation
"""
# Copyright (C) 2006 Holger Hans Peter Freyther
# Copyright (C) 2003, 2004 Chris Larson
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os
import bb
from bb import data
from bb.fetch import Fetch
from bb.fetch import FetchError
from bb.fetch import MissingParameterError
class Svk(Fetch):
"""Class to fetch a module or modules from svk repositories"""
def supports(self, url, ud, d):
"""
Check to see if a given url can be fetched with cvs.
"""
return ud.type in ['svk']
def localpath(self, url, ud, d):
if not "module" in ud.parm:
raise MissingParameterError("svk method needs a 'module' parameter")
else:
ud.module = ud.parm["module"]
ud.revision = ""
if 'rev' in ud.parm:
ud.revision = ud.parm['rev']
ud.localfile = data.expand('%s_%s_%s_%s_%s.tar.gz' % (ud.module.replace('/', '.'), ud.host, ud.path.replace('/', '.'), ud.revision, ud.date), d)
return os.path.join(data.getVar("DL_DIR", d, True), ud.localfile)
def forcefetch(self, url, ud, d):
if (ud.date == "now"):
return True
return False
def go(self, loc, ud, d):
"""Fetch urls"""
if not self.forcefetch(loc, ud, d) and Fetch.try_mirror(d, ud.localfile):
return
svkroot = ud.host + ud.path
svkcmd = "svk co -r {%s} %s/%s" % (ud.date, svkroot, ud.module)
if ud.revision:
svkcmd = "svk co -r %s %s/%s" % (ud.revision, svkroot, ud.module)
# create temp directory
localdata = data.createCopy(d)
data.update_data(localdata)
bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: creating temporary directory")
bb.mkdirhier(data.expand('${WORKDIR}', localdata))
data.setVar('TMPBASE', data.expand('${WORKDIR}/oesvk.XXXXXX', localdata), localdata)
tmppipe = os.popen(data.getVar('MKTEMPDIRCMD', localdata, 1) or "false")
tmpfile = tmppipe.readline().strip()
if not tmpfile:
bb.msg.error(bb.msg.domain.Fetcher, "Fetch: unable to create temporary directory.. make sure 'mktemp' is in the PATH.")
raise FetchError(ud.module)
# check out sources there
os.chdir(tmpfile)
bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % svkcmd)
myret = os.system(svkcmd)
if myret != 0:
try:
os.rmdir(tmpfile)
except OSError:
pass
raise FetchError(ud.module)
os.chdir(os.path.join(tmpfile, os.path.dirname(ud.module)))
# tar them up to a defined filename
myret = os.system("tar -czf %s %s" % (ud.localpath, os.path.basename(ud.module)))
if myret != 0:
try:
os.unlink(ud.localpath)
except OSError:
pass
raise FetchError(ud.module)
# cleanup
os.system('rm -rf %s' % tmpfile)

View File

@@ -0,0 +1,206 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' implementation for svn.
"""
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2004 Marcin Juszkiewicz
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os
import sys
import bb
from bb import data
from bb.fetch import Fetch
from bb.fetch import FetchError
from bb.fetch import MissingParameterError
from bb.fetch import runfetchcmd
class Svn(Fetch):
"""Class to fetch a module or modules from svn repositories"""
def supports(self, url, ud, d):
"""
Check to see if a given url can be fetched with svn.
"""
return ud.type in ['svn']
def localpath(self, url, ud, d):
if not "module" in ud.parm:
raise MissingParameterError("svn method needs a 'module' parameter")
ud.module = ud.parm["module"]
# Create paths to svn checkouts
relpath = ud.path
if relpath.startswith('/'):
# Remove leading slash as os.path.join can't cope
relpath = relpath[1:]
ud.pkgdir = os.path.join(data.expand('${SVNDIR}', d), ud.host, relpath)
ud.moddir = os.path.join(ud.pkgdir, ud.module)
if 'rev' in ud.parm:
ud.date = ""
ud.revision = ud.parm['rev']
elif 'date' in ud.date:
ud.date = ud.parm['date']
ud.revision = ""
else:
#
# ***Nasty hack***
# If DATE in unexpanded PV, use ud.date (which is set from SRCDATE)
# Should warn people to switch to SRCREV here
#
pv = data.getVar("PV", d, 0)
if "DATE" in pv:
ud.revision = ""
else:
rev = Fetch.srcrev_internal_helper(ud, d)
if rev is True:
ud.revision = self.latest_revision(url, ud, d)
ud.date = ""
elif rev:
ud.revision = rev
ud.date = ""
else:
ud.revision = ""
ud.localfile = data.expand('%s_%s_%s_%s_%s.tar.gz' % (ud.module.replace('/', '.'), ud.host, ud.path.replace('/', '.'), ud.revision, ud.date), d)
return os.path.join(data.getVar("DL_DIR", d, True), ud.localfile)
def _buildsvncommand(self, ud, d, command):
"""
Build up an svn commandline based on ud
command is "fetch", "update", "info"
"""
basecmd = data.expand('${FETCHCMD_svn}', d)
proto = "svn"
if "proto" in ud.parm:
proto = ud.parm["proto"]
svn_rsh = None
if proto == "svn+ssh" and "rsh" in ud.parm:
svn_rsh = ud.parm["rsh"]
svnroot = ud.host + ud.path
# either use the revision, or SRCDATE in braces,
options = []
if ud.user:
options.append("--username %s" % ud.user)
if ud.pswd:
options.append("--password %s" % ud.pswd)
if command is "info":
svncmd = "%s info %s %s://%s/%s/" % (basecmd, " ".join(options), proto, svnroot, ud.module)
else:
suffix = ""
if ud.revision:
options.append("-r %s" % ud.revision)
suffix = "@%s" % (ud.revision)
elif ud.date:
options.append("-r {%s}" % ud.date)
if command is "fetch":
svncmd = "%s co %s %s://%s/%s%s %s" % (basecmd, " ".join(options), proto, svnroot, ud.module, suffix, ud.module)
elif command is "update":
svncmd = "%s update %s" % (basecmd, " ".join(options))
else:
raise FetchError("Invalid svn command %s" % command)
if svn_rsh:
svncmd = "svn_RSH=\"%s\" %s" % (svn_rsh, svncmd)
return svncmd
def go(self, loc, ud, d):
"""Fetch url"""
# try to use the tarball stash
if Fetch.try_mirror(d, ud.localfile):
bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists or was mirrored, skipping svn checkout." % ud.localpath)
return
bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: checking for module directory '" + ud.moddir + "'")
if os.access(os.path.join(ud.moddir, '.svn'), os.R_OK):
svnupdatecmd = self._buildsvncommand(ud, d, "update")
bb.msg.note(1, bb.msg.domain.Fetcher, "Update " + loc)
# update sources there
os.chdir(ud.moddir)
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % svnupdatecmd)
runfetchcmd(svnupdatecmd, d)
else:
svnfetchcmd = self._buildsvncommand(ud, d, "fetch")
bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
# check out sources there
bb.mkdirhier(ud.pkgdir)
os.chdir(ud.pkgdir)
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % svnfetchcmd)
runfetchcmd(svnfetchcmd, d)
os.chdir(ud.pkgdir)
# tar them up to a defined filename
try:
runfetchcmd("tar -czf %s %s" % (ud.localpath, ud.module), d)
except:
t, v, tb = sys.exc_info()
try:
os.unlink(ud.localpath)
except OSError:
pass
raise t, v, tb
def suppports_srcrev(self):
return True
def _revision_key(self, url, ud, d):
"""
Return a unique key for the url
"""
return "svn:" + ud.moddir
def _latest_revision(self, url, ud, d):
"""
Return the latest upstream revision number
"""
bb.msg.debug(2, bb.msg.domain.Fetcher, "SVN fetcher hitting network for %s" % url)
output = runfetchcmd("LANG=C LC_ALL=C " + self._buildsvncommand(ud, d, "info"), d, True)
revision = None
for line in output.splitlines():
if "Last Changed Rev" in line:
revision = line.split(":")[1].strip()
return revision
def _sortable_revision(self, url, ud, d):
"""
Return a sortable revision number which in our case is the revision number
"""
return self._build_revision(url, ud, d)
def _build_revision(self, url, ud, d):
return ud.revision

View File

@@ -0,0 +1,130 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'Fetch' implementations
Classes for obtaining upstream sources for the
BitBake build tools.
"""
# Copyright (C) 2003, 2004 Chris Larson
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os
import bb
from bb import data
from bb.fetch import Fetch
from bb.fetch import FetchError
from bb.fetch import uri_replace
class Wget(Fetch):
"""Class to fetch urls via 'wget'"""
def supports(self, url, ud, d):
"""
Check to see if a given url can be fetched with cvs.
"""
return ud.type in ['http','https','ftp']
def localpath(self, url, ud, d):
url = bb.encodeurl([ud.type, ud.host, ud.path, ud.user, ud.pswd, {}])
ud.basename = os.path.basename(ud.path)
ud.localfile = data.expand(os.path.basename(url), d)
return os.path.join(data.getVar("DL_DIR", d, True), ud.localfile)
def go(self, uri, ud, d, checkonly = False):
"""Fetch urls"""
def fetch_uri(uri, ud, d):
if checkonly:
fetchcmd = data.getVar("CHECKCOMMAND", d, 1)
elif os.path.exists(ud.localpath):
# file exists, but we didnt complete it.. trying again..
fetchcmd = data.getVar("RESUMECOMMAND", d, 1)
else:
fetchcmd = data.getVar("FETCHCOMMAND", d, 1)
uri = uri.split(";")[0]
uri_decoded = list(bb.decodeurl(uri))
uri_type = uri_decoded[0]
uri_host = uri_decoded[1]
bb.msg.note(1, bb.msg.domain.Fetcher, "fetch " + uri)
fetchcmd = fetchcmd.replace("${URI}", uri.split(";")[0])
fetchcmd = fetchcmd.replace("${FILE}", ud.basename)
httpproxy = None
ftpproxy = None
if uri_type == 'http':
httpproxy = data.getVar("HTTP_PROXY", d, True)
httpproxy_ignore = (data.getVar("HTTP_PROXY_IGNORE", d, True) or "").split()
for p in httpproxy_ignore:
if uri_host.endswith(p):
httpproxy = None
break
if uri_type == 'ftp':
ftpproxy = data.getVar("FTP_PROXY", d, True)
ftpproxy_ignore = (data.getVar("HTTP_PROXY_IGNORE", d, True) or "").split()
for p in ftpproxy_ignore:
if uri_host.endswith(p):
ftpproxy = None
break
if httpproxy:
fetchcmd = "http_proxy=" + httpproxy + " " + fetchcmd
if ftpproxy:
fetchcmd = "ftp_proxy=" + ftpproxy + " " + fetchcmd
bb.msg.debug(2, bb.msg.domain.Fetcher, "executing " + fetchcmd)
ret = os.system(fetchcmd)
if ret != 0:
return False
# Sanity check since wget can pretend it succeed when it didn't
# Also, this used to happen if sourceforge sent us to the mirror page
if not os.path.exists(ud.localpath) and not checkonly:
bb.msg.debug(2, bb.msg.domain.Fetcher, "The fetch command for %s returned success but %s doesn't exist?..." % (uri, ud.localpath))
return False
return True
localdata = data.createCopy(d)
data.setVar('OVERRIDES', "wget:" + data.getVar('OVERRIDES', localdata), localdata)
data.update_data(localdata)
premirrors = [ i.split() for i in (data.getVar('PREMIRRORS', localdata, 1) or "").split('\n') if i ]
for (find, replace) in premirrors:
newuri = uri_replace(uri, find, replace, d)
if newuri != uri:
if fetch_uri(newuri, ud, localdata):
return True
if fetch_uri(uri, ud, localdata):
return True
# try mirrors
mirrors = [ i.split() for i in (data.getVar('MIRRORS', localdata, 1) or "").split('\n') if i ]
for (find, replace) in mirrors:
newuri = uri_replace(uri, find, replace, d)
if newuri != uri:
if fetch_uri(newuri, ud, localdata):
return True
raise FetchError(uri)
def checkstatus(self, uri, ud, d):
return self.go(uri, ud, d, True)

View File

@@ -0,0 +1,144 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Copyright (C) 2003, 2004 Chris Larson
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import os, sys
import bb, bb.data
def getfields(line):
fields = {}
fieldmap = ( "pkg", "src", "dest", "type", "mode", "uid", "gid", "major", "minor", "start", "inc", "count" )
for f in xrange(len(fieldmap)):
fields[fieldmap[f]] = None
if not line:
return None
splitline = line.split()
if not len(splitline):
return None
try:
for f in xrange(len(fieldmap)):
if splitline[f] == '-':
continue
fields[fieldmap[f]] = splitline[f]
except IndexError:
pass
return fields
def parse (mfile, d):
manifest = []
while 1:
line = mfile.readline()
if not line:
break
if line.startswith("#"):
continue
fields = getfields(line)
if not fields:
continue
manifest.append(fields)
return manifest
def emit (func, manifest, d):
#str = "%s () {\n" % func
str = ""
for line in manifest:
emittedline = emit_line(func, line, d)
if not emittedline:
continue
str += emittedline + "\n"
# str += "}\n"
return str
def mangle (func, line, d):
import copy
newline = copy.copy(line)
src = bb.data.expand(newline["src"], d)
if src:
if not os.path.isabs(src):
src = "${WORKDIR}/" + src
dest = newline["dest"]
if not dest:
return
if dest.startswith("/"):
dest = dest[1:]
if func is "do_install":
dest = "${D}/" + dest
elif func is "do_populate":
dest = "${WORKDIR}/install/" + newline["pkg"] + "/" + dest
elif func is "do_stage":
varmap = {}
varmap["${bindir}"] = "${STAGING_DIR}/${HOST_SYS}/bin"
varmap["${libdir}"] = "${STAGING_DIR}/${HOST_SYS}/lib"
varmap["${includedir}"] = "${STAGING_DIR}/${HOST_SYS}/include"
varmap["${datadir}"] = "${STAGING_DATADIR}"
matched = 0
for key in varmap.keys():
if dest.startswith(key):
dest = varmap[key] + "/" + dest[len(key):]
matched = 1
if not matched:
newline = None
return
else:
newline = None
return
newline["src"] = src
newline["dest"] = dest
return newline
def emit_line (func, line, d):
import copy
newline = copy.deepcopy(line)
newline = mangle(func, newline, d)
if not newline:
return None
str = ""
type = newline["type"]
mode = newline["mode"]
src = newline["src"]
dest = newline["dest"]
if type is "d":
str = "install -d "
if mode:
str += "-m %s " % mode
str += dest
elif type is "f":
if not src:
return None
if dest.endswith("/"):
str = "install -d "
str += dest + "\n"
str += "install "
else:
str = "install -D "
if mode:
str += "-m %s " % mode
str += src + " " + dest
del newline
return str

View File

@@ -0,0 +1,84 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
#
# Copyright (C) 2006 Holger Hans Peter Freyther
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
"""
What is a method pool?
BitBake has a global method scope where .bb, .inc and .bbclass
files can install methods. These methods are parsed from strings.
To avoid recompiling and executing these string we introduce
a method pool to do this task.
This pool will be used to compile and execute the functions. It
will be smart enough to
"""
from bb.utils import better_compile, better_exec
from bb import error
# A dict of modules we have handled
# it is the number of .bbclasses + x in size
_parsed_methods = { }
_parsed_fns = { }
def insert_method(modulename, code, fn):
"""
Add code of a module should be added. The methods
will be simply added, no checking will be done
"""
comp = better_compile(code, "<bb>", fn )
better_exec(comp, __builtins__, code, fn)
# now some instrumentation
code = comp.co_names
for name in code:
if name in ['None', 'False']:
continue
elif name in _parsed_fns and not _parsed_fns[name] == modulename:
error( "Error Method already seen: %s in' %s' now in '%s'" % (name, _parsed_fns[name], modulename))
else:
_parsed_fns[name] = modulename
def check_insert_method(modulename, code, fn):
"""
Add the code if it wasnt added before. The module
name will be used for that
Variables:
@modulename a short name e.g. base.bbclass
@code The actual python code
@fn The filename from the outer file
"""
if not modulename in _parsed_methods:
return insert_method(modulename, code, fn)
_parsed_methods[modulename] = 1
def parsed_module(modulename):
"""
Inform me file xyz was parsed
"""
return modulename in _parsed_methods
def get_parsed_dict():
"""
shortcut
"""
return _parsed_methods

125
bitbake-dev/lib/bb/msg.py Normal file
View File

@@ -0,0 +1,125 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'msg' implementation
Message handling infrastructure for bitbake
"""
# Copyright (C) 2006 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import sys, bb
from bb import event
debug_level = {}
verbose = False
domain = bb.utils.Enum(
'Build',
'Cache',
'Collection',
'Data',
'Depends',
'Fetcher',
'Parsing',
'PersistData',
'Provider',
'RunQueue',
'TaskData',
'Util')
class MsgBase(bb.event.Event):
"""Base class for messages"""
def __init__(self, msg, d ):
self._message = msg
event.Event.__init__(self, d)
class MsgDebug(MsgBase):
"""Debug Message"""
class MsgNote(MsgBase):
"""Note Message"""
class MsgWarn(MsgBase):
"""Warning Message"""
class MsgError(MsgBase):
"""Error Message"""
class MsgFatal(MsgBase):
"""Fatal Message"""
class MsgPlain(MsgBase):
"""General output"""
#
# Message control functions
#
def set_debug_level(level):
bb.msg.debug_level = {}
for domain in bb.msg.domain:
bb.msg.debug_level[domain] = level
bb.msg.debug_level['default'] = level
def set_verbose(level):
bb.msg.verbose = level
def set_debug_domains(domains):
for domain in domains:
found = False
for ddomain in bb.msg.domain:
if domain == str(ddomain):
bb.msg.debug_level[ddomain] = bb.msg.debug_level[ddomain] + 1
found = True
if not found:
bb.msg.warn(None, "Logging domain %s is not valid, ignoring" % domain)
#
# Message handling functions
#
def debug(level, domain, msg, fn = None):
if not domain:
domain = 'default'
if debug_level[domain] >= level:
bb.event.fire(MsgDebug(msg, None))
def note(level, domain, msg, fn = None):
if not domain:
domain = 'default'
if level == 1 or verbose or debug_level[domain] >= 1:
bb.event.fire(MsgNote(msg, None))
def warn(domain, msg, fn = None):
bb.event.fire(MsgWarn(msg, None))
def error(domain, msg, fn = None):
bb.event.fire(MsgError(msg, None))
print 'ERROR: ' + msg
def fatal(domain, msg, fn = None):
bb.event.fire(MsgFatal(msg, None))
print 'FATAL: ' + msg
sys.exit(1)
def plain(msg, fn = None):
bb.event.fire(MsgPlain(msg, None))

View File

@@ -0,0 +1,84 @@
"""
BitBake Parsers
File parsers for the BitBake build tools.
"""
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2003, 2004 Phil Blundell
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
__all__ = [ 'ParseError', 'SkipPackage', 'cached_mtime', 'mark_dependency',
'supports', 'handle', 'init' ]
handlers = []
import bb, os
class ParseError(Exception):
"""Exception raised when parsing fails"""
class SkipPackage(Exception):
"""Exception raised to skip this package"""
__mtime_cache = {}
def cached_mtime(f):
if not __mtime_cache.has_key(f):
__mtime_cache[f] = os.stat(f)[8]
return __mtime_cache[f]
def cached_mtime_noerror(f):
if not __mtime_cache.has_key(f):
try:
__mtime_cache[f] = os.stat(f)[8]
except OSError:
return 0
return __mtime_cache[f]
def update_mtime(f):
__mtime_cache[f] = os.stat(f)[8]
return __mtime_cache[f]
def mark_dependency(d, f):
if f.startswith('./'):
f = "%s/%s" % (os.getcwd(), f[2:])
deps = bb.data.getVar('__depends', d) or []
deps.append( (f, cached_mtime(f)) )
bb.data.setVar('__depends', deps, d)
def supports(fn, data):
"""Returns true if we have a handler for this file, false otherwise"""
for h in handlers:
if h['supports'](fn, data):
return 1
return 0
def handle(fn, data, include = 0):
"""Call the handler that is appropriate for this file"""
for h in handlers:
if h['supports'](fn, data):
return h['handle'](fn, data, include)
raise ParseError("%s is not a BitBake file" % fn)
def init(fn, data):
for h in handlers:
if h['supports'](fn):
return h['init'](data)
from parse_py import __version__, ConfHandler, BBHandler

View File

@@ -0,0 +1,401 @@
#!/usr/bin/env python
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
class for handling .bb files
Reads a .bb file and obtains its metadata
"""
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2003, 2004 Phil Blundell
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import re, bb, os, sys, time, string
import bb.fetch, bb.build, bb.utils
from bb import data, fetch, methodpool
from ConfHandler import include, localpath, obtain, init
from bb.parse import ParseError
__func_start_regexp__ = re.compile( r"(((?P<py>python)|(?P<fr>fakeroot))\s*)*(?P<func>[\w\.\-\+\{\}\$]+)?\s*\(\s*\)\s*{$" )
__inherit_regexp__ = re.compile( r"inherit\s+(.+)" )
__export_func_regexp__ = re.compile( r"EXPORT_FUNCTIONS\s+(.+)" )
__addtask_regexp__ = re.compile("addtask\s+(?P<func>\w+)\s*((before\s*(?P<before>((.*(?=after))|(.*))))|(after\s*(?P<after>((.*(?=before))|(.*)))))*")
__addhandler_regexp__ = re.compile( r"addhandler\s+(.+)" )
__def_regexp__ = re.compile( r"def\s+(\w+).*:" )
__python_func_regexp__ = re.compile( r"(\s+.*)|(^$)" )
__word__ = re.compile(r"\S+")
__infunc__ = ""
__inpython__ = False
__body__ = []
__classname__ = ""
classes = [ None, ]
# We need to indicate EOF to the feeder. This code is so messy that
# factoring it out to a close_parse_file method is out of question.
# We will use the IN_PYTHON_EOF as an indicator to just close the method
#
# The two parts using it are tightly integrated anyway
IN_PYTHON_EOF = -9999999999999
__parsed_methods__ = methodpool.get_parsed_dict()
def supports(fn, d):
localfn = localpath(fn, d)
return localfn[-3:] == ".bb" or localfn[-8:] == ".bbclass" or localfn[-4:] == ".inc"
def inherit(files, d):
__inherit_cache = data.getVar('__inherit_cache', d) or []
fn = ""
lineno = 0
files = data.expand(files, d)
for file in files:
if file[0] != "/" and file[-8:] != ".bbclass":
file = os.path.join('classes', '%s.bbclass' % file)
if not file in __inherit_cache:
bb.msg.debug(2, bb.msg.domain.Parsing, "BB %s:%d: inheriting %s" % (fn, lineno, file))
__inherit_cache.append( file )
data.setVar('__inherit_cache', __inherit_cache, d)
include(fn, file, d, "inherit")
__inherit_cache = data.getVar('__inherit_cache', d) or []
def finalise(fn, d):
data.expandKeys(d)
data.update_data(d)
anonqueue = data.getVar("__anonqueue", d, 1) or []
body = [x['content'] for x in anonqueue]
flag = { 'python' : 1, 'func' : 1 }
data.setVar("__anonfunc", "\n".join(body), d)
data.setVarFlags("__anonfunc", flag, d)
from bb import build
try:
t = data.getVar('T', d)
data.setVar('T', '${TMPDIR}/anonfunc/', d)
anonfuncs = data.getVar('__BBANONFUNCS', d) or []
code = ""
for f in anonfuncs:
code = code + " %s(d)\n" % f
data.setVar("__anonfunc", code, d)
build.exec_func("__anonfunc", d)
data.delVar('T', d)
if t:
data.setVar('T', t, d)
except Exception, e:
bb.msg.debug(1, bb.msg.domain.Parsing, "Exception when executing anonymous function: %s" % e)
raise
data.delVar("__anonqueue", d)
data.delVar("__anonfunc", d)
data.update_data(d)
all_handlers = {}
for var in data.getVar('__BBHANDLERS', d) or []:
# try to add the handler
handler = data.getVar(var,d)
bb.event.register(var, handler)
tasklist = data.getVar('__BBTASKS', d) or []
bb.build.add_tasks(tasklist, d)
bb.event.fire(bb.event.RecipeParsed(fn, d))
def handle(fn, d, include = 0):
global __func_start_regexp__, __inherit_regexp__, __export_func_regexp__, __addtask_regexp__, __addhandler_regexp__, __infunc__, __body__, __residue__
__body__ = []
__infunc__ = ""
__classname__ = ""
__residue__ = []
if include == 0:
bb.msg.debug(2, bb.msg.domain.Parsing, "BB " + fn + ": handle(data)")
else:
bb.msg.debug(2, bb.msg.domain.Parsing, "BB " + fn + ": handle(data, include)")
(root, ext) = os.path.splitext(os.path.basename(fn))
base_name = "%s%s" % (root,ext)
init(d)
if ext == ".bbclass":
__classname__ = root
classes.append(__classname__)
__inherit_cache = data.getVar('__inherit_cache', d) or []
if not fn in __inherit_cache:
__inherit_cache.append(fn)
data.setVar('__inherit_cache', __inherit_cache, d)
if include != 0:
oldfile = data.getVar('FILE', d)
else:
oldfile = None
fn = obtain(fn, d)
bbpath = (data.getVar('BBPATH', d, 1) or '').split(':')
if not os.path.isabs(fn):
f = None
for p in bbpath:
j = os.path.join(p, fn)
if os.access(j, os.R_OK):
abs_fn = j
f = open(j, 'r')
break
if f is None:
raise IOError("file %s not found" % fn)
else:
f = open(fn,'r')
abs_fn = fn
if include:
bb.parse.mark_dependency(d, abs_fn)
if ext != ".bbclass":
data.setVar('FILE', fn, d)
lineno = 0
while 1:
lineno = lineno + 1
s = f.readline()
if not s: break
s = s.rstrip()
feeder(lineno, s, fn, base_name, d)
if __inpython__:
# add a blank line to close out any python definition
feeder(IN_PYTHON_EOF, "", fn, base_name, d)
if ext == ".bbclass":
classes.remove(__classname__)
else:
if include == 0:
multi = data.getVar('BBCLASSEXTEND', d, 1)
if multi:
based = bb.data.createCopy(d)
finalise(fn, based)
darray = {"": based}
for cls in multi.split():
pn = data.getVar('PN', d, True)
based = bb.data.createCopy(d)
data.setVar('PN', pn + '-' + cls, based)
inherit([cls], based)
finalise(fn, based)
darray[cls] = based
return darray
else:
finalise(fn, d)
bbpath.pop(0)
if oldfile:
bb.data.setVar("FILE", oldfile, d)
# we have parsed the bb class now
if ext == ".bbclass" or ext == ".inc":
__parsed_methods__[base_name] = 1
return d
def feeder(lineno, s, fn, root, d):
global __func_start_regexp__, __inherit_regexp__, __export_func_regexp__, __addtask_regexp__, __addhandler_regexp__, __def_regexp__, __python_func_regexp__, __inpython__,__infunc__, __body__, classes, bb, __residue__
if __infunc__:
if s == '}':
__body__.append('')
if __infunc__ == "__anonymous":
funcname = ("__anon_%s_%s" % (lineno, fn.translate(string.maketrans('/.+-', '____'))))
if not funcname in methodpool._parsed_fns:
text = "def %s(d):\n" % (funcname) + '\n'.join(__body__)
methodpool.insert_method(funcname, text, fn)
anonfuncs = data.getVar('__BBANONFUNCS', d) or []
anonfuncs.append(funcname)
data.setVar('__BBANONFUNCS', anonfuncs, d)
else:
data.setVarFlag(__infunc__, "func", 1, d)
data.setVar(__infunc__, '\n'.join(__body__), d)
__infunc__ = ""
__body__ = []
else:
__body__.append(s)
return
if __inpython__:
m = __python_func_regexp__.match(s)
if m and lineno != IN_PYTHON_EOF:
__body__.append(s)
return
else:
# Note we will add root to parsedmethods after having parse
# 'this' file. This means we will not parse methods from
# bb classes twice
if not root in __parsed_methods__:
text = '\n'.join(__body__)
methodpool.insert_method( root, text, fn )
__body__ = []
__inpython__ = False
if lineno == IN_PYTHON_EOF:
return
# fall through
if s == '' or s[0] == '#': return # skip comments and empty lines
if s[-1] == '\\':
__residue__.append(s[:-1])
return
s = "".join(__residue__) + s
__residue__ = []
m = __func_start_regexp__.match(s)
if m:
__infunc__ = m.group("func") or "__anonymous"
key = __infunc__
if data.getVar(key, d):
# clean up old version of this piece of metadata, as its
# flags could cause problems
data.setVarFlag(key, 'python', None, d)
data.setVarFlag(key, 'fakeroot', None, d)
if m.group("py") is not None:
data.setVarFlag(key, "python", "1", d)
else:
data.delVarFlag(key, "python", d)
if m.group("fr") is not None:
data.setVarFlag(key, "fakeroot", "1", d)
else:
data.delVarFlag(key, "fakeroot", d)
return
m = __def_regexp__.match(s)
if m:
__body__.append(s)
__inpython__ = True
return
m = __export_func_regexp__.match(s)
if m:
fns = m.group(1)
n = __word__.findall(fns)
for f in n:
allvars = []
allvars.append(f)
allvars.append(classes[-1] + "_" + f)
vars = [[ allvars[0], allvars[1] ]]
if len(classes) > 1 and classes[-2] is not None:
allvars.append(classes[-2] + "_" + f)
vars = []
vars.append([allvars[2], allvars[1]])
vars.append([allvars[0], allvars[2]])
for (var, calledvar) in vars:
if data.getVar(var, d) and not data.getVarFlag(var, 'export_func', d):
continue
if data.getVar(var, d):
data.setVarFlag(var, 'python', None, d)
data.setVarFlag(var, 'func', None, d)
for flag in [ "func", "python" ]:
if data.getVarFlag(calledvar, flag, d):
data.setVarFlag(var, flag, data.getVarFlag(calledvar, flag, d), d)
for flag in [ "dirs" ]:
if data.getVarFlag(var, flag, d):
data.setVarFlag(calledvar, flag, data.getVarFlag(var, flag, d), d)
if data.getVarFlag(calledvar, "python", d):
data.setVar(var, "\tbb.build.exec_func('" + calledvar + "', d)\n", d)
else:
data.setVar(var, "\t" + calledvar + "\n", d)
data.setVarFlag(var, 'export_func', '1', d)
return
m = __addtask_regexp__.match(s)
if m:
func = m.group("func")
before = m.group("before")
after = m.group("after")
if func is None:
return
var = "do_" + func
data.setVarFlag(var, "task", 1, d)
bbtasks = data.getVar('__BBTASKS', d) or []
if not var in bbtasks:
bbtasks.append(var)
data.setVar('__BBTASKS', bbtasks, d)
existing = data.getVarFlag(var, "deps", d) or []
if after is not None:
# set up deps for function
for entry in after.split():
if entry not in existing:
existing.append(entry)
data.setVarFlag(var, "deps", existing, d)
if before is not None:
# set up things that depend on this func
for entry in before.split():
existing = data.getVarFlag(entry, "deps", d) or []
if var not in existing:
data.setVarFlag(entry, "deps", [var] + existing, d)
return
m = __addhandler_regexp__.match(s)
if m:
fns = m.group(1)
hs = __word__.findall(fns)
bbhands = data.getVar('__BBHANDLERS', d) or []
for h in hs:
bbhands.append(h)
data.setVarFlag(h, "handler", 1, d)
data.setVar('__BBHANDLERS', bbhands, d)
return
m = __inherit_regexp__.match(s)
if m:
files = m.group(1)
n = __word__.findall(files)
inherit(n, d)
return
from bb.parse import ConfHandler
return ConfHandler.feeder(lineno, s, fn, d)
__pkgsplit_cache__={}
def vars_from_file(mypkg, d):
if not mypkg:
return (None, None, None)
if mypkg in __pkgsplit_cache__:
return __pkgsplit_cache__[mypkg]
myfile = os.path.splitext(os.path.basename(mypkg))
parts = myfile[0].split('_')
__pkgsplit_cache__[mypkg] = parts
if len(parts) > 3:
raise ParseError("Unable to generate default variables from the filename: %s (too many underscores)" % mypkg)
exp = 3 - len(parts)
tmplist = []
while exp != 0:
exp -= 1
tmplist.append(None)
parts.extend(tmplist)
return parts
# Add us to the handlers list
from bb.parse import handlers
handlers.append({'supports': supports, 'handle': handle, 'init': init})
del handlers

View File

@@ -0,0 +1,234 @@
#!/usr/bin/env python
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
class for handling configuration data files
Reads a .conf file and obtains its metadata
"""
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2003, 2004 Phil Blundell
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import re, bb.data, os, sys
from bb.parse import ParseError
#__config_regexp__ = re.compile( r"(?P<exp>export\s*)?(?P<var>[a-zA-Z0-9\-_+.${}]+)\s*(?P<colon>:)?(?P<ques>\?)?=\s*(?P<apo>['\"]?)(?P<value>.*)(?P=apo)$")
__config_regexp__ = re.compile( r"(?P<exp>export\s*)?(?P<var>[a-zA-Z0-9\-_+.${}/]+)(\[(?P<flag>[a-zA-Z0-9\-_+.]+)\])?\s*((?P<colon>:=)|(?P<ques>\?=)|(?P<append>\+=)|(?P<prepend>=\+)|(?P<predot>=\.)|(?P<postdot>\.=)|=)\s*(?P<apo>['\"]?)(?P<value>.*)(?P=apo)$")
__include_regexp__ = re.compile( r"include\s+(.+)" )
__require_regexp__ = re.compile( r"require\s+(.+)" )
__export_regexp__ = re.compile( r"export\s+(.+)" )
def init(data):
if not bb.data.getVar('TOPDIR', data):
bb.data.setVar('TOPDIR', os.getcwd(), data)
if not bb.data.getVar('BBPATH', data):
bb.data.setVar('BBPATH', os.path.join(sys.prefix, 'share', 'bitbake'), data)
def supports(fn, d):
return localpath(fn, d)[-5:] == ".conf"
def localpath(fn, d):
if os.path.exists(fn):
return fn
if "://" not in fn:
return fn
localfn = None
try:
localfn = bb.fetch.localpath(fn, d, False)
except bb.MalformedUrl:
pass
if not localfn:
return fn
return localfn
def obtain(fn, data):
import sys, bb
fn = bb.data.expand(fn, data)
localfn = bb.data.expand(localpath(fn, data), data)
if localfn != fn:
dldir = bb.data.getVar('DL_DIR', data, 1)
if not dldir:
bb.msg.debug(1, bb.msg.domain.Parsing, "obtain: DL_DIR not defined")
return localfn
bb.mkdirhier(dldir)
try:
bb.fetch.init([fn], data)
except bb.fetch.NoMethodError:
(type, value, traceback) = sys.exc_info()
bb.msg.debug(1, bb.msg.domain.Parsing, "obtain: no method: %s" % value)
return localfn
try:
bb.fetch.go(data)
except bb.fetch.MissingParameterError:
(type, value, traceback) = sys.exc_info()
bb.msg.debug(1, bb.msg.domain.Parsing, "obtain: missing parameters: %s" % value)
return localfn
except bb.fetch.FetchError:
(type, value, traceback) = sys.exc_info()
bb.msg.debug(1, bb.msg.domain.Parsing, "obtain: failed: %s" % value)
return localfn
return localfn
def include(oldfn, fn, data, error_out):
"""
error_out If True a ParseError will be reaised if the to be included
"""
if oldfn == fn: # prevent infinate recursion
return None
import bb
fn = bb.data.expand(fn, data)
oldfn = bb.data.expand(oldfn, data)
if not os.path.isabs(fn):
dname = os.path.dirname(oldfn)
bbpath = "%s:%s" % (dname, bb.data.getVar("BBPATH", data, 1))
abs_fn = bb.which(bbpath, fn)
if abs_fn:
fn = abs_fn
from bb.parse import handle
try:
ret = handle(fn, data, True)
except IOError:
if error_out:
raise ParseError("Could not %(error_out)s file %(fn)s" % vars() )
bb.msg.debug(2, bb.msg.domain.Parsing, "CONF file '%s' not found" % fn)
def handle(fn, data, include = 0):
if include:
inc_string = "including"
else:
inc_string = "reading"
init(data)
if include == 0:
oldfile = None
else:
oldfile = bb.data.getVar('FILE', data)
fn = obtain(fn, data)
if not os.path.isabs(fn):
f = None
bbpath = bb.data.getVar("BBPATH", data, 1) or []
for p in bbpath.split(":"):
currname = os.path.join(p, fn)
if os.access(currname, os.R_OK):
f = open(currname, 'r')
abs_fn = currname
bb.msg.debug(2, bb.msg.domain.Parsing, "CONF %s %s" % (inc_string, currname))
break
if f is None:
raise IOError("file '%s' not found" % fn)
else:
f = open(fn,'r')
bb.msg.debug(1, bb.msg.domain.Parsing, "CONF %s %s" % (inc_string,fn))
abs_fn = fn
if include:
bb.parse.mark_dependency(data, abs_fn)
lineno = 0
bb.data.setVar('FILE', fn, data)
while 1:
lineno = lineno + 1
s = f.readline()
if not s: break
w = s.strip()
if not w: continue # skip empty lines
s = s.rstrip()
if s[0] == '#': continue # skip comments
while s[-1] == '\\':
s2 = f.readline()[:-1].strip()
lineno = lineno + 1
s = s[:-1] + s2
feeder(lineno, s, fn, data)
if oldfile:
bb.data.setVar('FILE', oldfile, data)
return data
def feeder(lineno, s, fn, data):
def getFunc(groupd, key, data):
if 'flag' in groupd and groupd['flag'] != None:
return bb.data.getVarFlag(key, groupd['flag'], data)
else:
return bb.data.getVar(key, data)
m = __config_regexp__.match(s)
if m:
groupd = m.groupdict()
key = groupd["var"]
if "exp" in groupd and groupd["exp"] != None:
bb.data.setVarFlag(key, "export", 1, data)
if "ques" in groupd and groupd["ques"] != None:
val = getFunc(groupd, key, data)
if val == None:
val = groupd["value"]
elif "colon" in groupd and groupd["colon"] != None:
e = data.createCopy()
bb.data.update_data(e)
val = bb.data.expand(groupd["value"], e)
elif "append" in groupd and groupd["append"] != None:
val = "%s %s" % ((getFunc(groupd, key, data) or ""), groupd["value"])
elif "prepend" in groupd and groupd["prepend"] != None:
val = "%s %s" % (groupd["value"], (getFunc(groupd, key, data) or ""))
elif "postdot" in groupd and groupd["postdot"] != None:
val = "%s%s" % ((getFunc(groupd, key, data) or ""), groupd["value"])
elif "predot" in groupd and groupd["predot"] != None:
val = "%s%s" % (groupd["value"], (getFunc(groupd, key, data) or ""))
else:
val = groupd["value"]
if 'flag' in groupd and groupd['flag'] != None:
bb.msg.debug(3, bb.msg.domain.Parsing, "setVarFlag(%s, %s, %s, data)" % (key, groupd['flag'], val))
bb.data.setVarFlag(key, groupd['flag'], val, data)
else:
bb.data.setVar(key, val, data)
return
m = __include_regexp__.match(s)
if m:
s = bb.data.expand(m.group(1), data)
bb.msg.debug(3, bb.msg.domain.Parsing, "CONF %s:%d: including %s" % (fn, lineno, s))
include(fn, s, data, False)
return
m = __require_regexp__.match(s)
if m:
s = bb.data.expand(m.group(1), data)
include(fn, s, data, "include required")
return
m = __export_regexp__.match(s)
if m:
bb.data.setVarFlag(m.group(1), "export", 1, data)
return
raise ParseError("%s:%d: unparsed line: '%s'" % (fn, lineno, s));
# Add us to the handlers list
from bb.parse import handlers
handlers.append({'supports': supports, 'handle': handle, 'init': init})
del handlers

View File

@@ -0,0 +1,33 @@
#!/usr/bin/env python
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake Parsers
File parsers for the BitBake build tools.
"""
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2003, 2004 Phil Blundell
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
__version__ = '1.0'
__all__ = [ 'ConfHandler', 'BBHandler']
import ConfHandler
import BBHandler

View File

@@ -0,0 +1,121 @@
# BitBake Persistent Data Store
#
# Copyright (C) 2007 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import bb, os
try:
import sqlite3
except ImportError:
try:
from pysqlite2 import dbapi2 as sqlite3
except ImportError:
bb.msg.fatal(bb.msg.domain.PersistData, "Importing sqlite3 and pysqlite2 failed, please install one of them. Python 2.5 or a 'python-pysqlite2' like package is likely to be what you need.")
sqlversion = sqlite3.sqlite_version_info
if sqlversion[0] < 3 or (sqlversion[0] == 3 and sqlversion[1] < 3):
bb.msg.fatal(bb.msg.domain.PersistData, "sqlite3 version 3.3.0 or later is required.")
class PersistData:
"""
BitBake Persistent Data Store
Used to store data in a central location such that other threads/tasks can
access them at some future date.
The "domain" is used as a key to isolate each data pool and in this
implementation corresponds to an SQL table. The SQL table consists of a
simple key and value pair.
Why sqlite? It handles all the locking issues for us.
"""
def __init__(self, d):
self.cachedir = bb.data.getVar("PERSISTENT_DIR", d, True) or bb.data.getVar("CACHE", d, True)
if self.cachedir in [None, '']:
bb.msg.fatal(bb.msg.domain.PersistData, "Please set the 'PERSISTENT_DIR' or 'CACHE' variable.")
try:
os.stat(self.cachedir)
except OSError:
bb.mkdirhier(self.cachedir)
self.cachefile = os.path.join(self.cachedir,"bb_persist_data.sqlite3")
bb.msg.debug(1, bb.msg.domain.PersistData, "Using '%s' as the persistent data cache" % self.cachefile)
self.connection = sqlite3.connect(self.cachefile, timeout=5, isolation_level=None)
def addDomain(self, domain):
"""
Should be called before any domain is used
Creates it if it doesn't exist.
"""
self.connection.execute("CREATE TABLE IF NOT EXISTS %s(key TEXT, value TEXT);" % domain)
def delDomain(self, domain):
"""
Removes a domain and all the data it contains
"""
self.connection.execute("DROP TABLE IF EXISTS %s;" % domain)
def getKeyValues(self, domain):
"""
Return a list of key + value pairs for a domain
"""
ret = {}
data = self.connection.execute("SELECT key, value from %s;" % domain)
for row in data:
ret[str(row[0])] = str(row[1])
return ret
def getValue(self, domain, key):
"""
Return the value of a key for a domain
"""
data = self.connection.execute("SELECT * from %s where key=?;" % domain, [key])
for row in data:
return row[1]
def setValue(self, domain, key, value):
"""
Sets the value of a key for a domain
"""
data = self.connection.execute("SELECT * from %s where key=?;" % domain, [key])
rows = 0
for row in data:
rows = rows + 1
if rows:
self._execute("UPDATE %s SET value=? WHERE key=?;" % domain, [value, key])
else:
self._execute("INSERT into %s(key, value) values (?, ?);" % domain, [key, value])
def delValue(self, domain, key):
"""
Deletes a key/value pair
"""
self._execute("DELETE from %s where key=?;" % domain, [key])
def _execute(self, *query):
while True:
try:
self.connection.execute(*query)
return
except sqlite3.OperationalError, e:
if 'database is locked' in str(e):
continue
raise

View File

@@ -0,0 +1,315 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Copyright (C) 2003, 2004 Chris Larson
# Copyright (C) 2003, 2004 Phil Blundell
# Copyright (C) 2003 - 2005 Michael 'Mickey' Lauer
# Copyright (C) 2005 Holger Hans Peter Freyther
# Copyright (C) 2005 ROAD GmbH
# Copyright (C) 2006 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import re
from bb import data, utils
import bb
class NoProvider(Exception):
"""Exception raised when no provider of a build dependency can be found"""
class NoRProvider(Exception):
"""Exception raised when no provider of a runtime dependency can be found"""
def sortPriorities(pn, dataCache, pkg_pn = None):
"""
Reorder pkg_pn by file priority and default preference
"""
if not pkg_pn:
pkg_pn = dataCache.pkg_pn
files = pkg_pn[pn]
priorities = {}
for f in files:
priority = dataCache.bbfile_priority[f]
preference = dataCache.pkg_dp[f]
if priority not in priorities:
priorities[priority] = {}
if preference not in priorities[priority]:
priorities[priority][preference] = []
priorities[priority][preference].append(f)
pri_list = priorities.keys()
pri_list.sort(lambda a, b: a - b)
tmp_pn = []
for pri in pri_list:
pref_list = priorities[pri].keys()
pref_list.sort(lambda a, b: b - a)
tmp_pref = []
for pref in pref_list:
tmp_pref.extend(priorities[pri][pref])
tmp_pn = [tmp_pref] + tmp_pn
return tmp_pn
def findPreferredProvider(pn, cfgData, dataCache, pkg_pn = None, item = None):
"""
Find the first provider in pkg_pn with a PREFERRED_VERSION set.
"""
preferred_file = None
preferred_ver = None
localdata = data.createCopy(cfgData)
bb.data.setVar('OVERRIDES', "pn-%s:%s:%s" % (pn, pn, data.getVar('OVERRIDES', localdata)), localdata)
bb.data.update_data(localdata)
preferred_v = bb.data.getVar('PREFERRED_VERSION_%s' % pn, localdata, True)
if preferred_v:
m = re.match('(\d+:)*(.*)(_.*)*', preferred_v)
if m:
if m.group(1):
preferred_e = int(m.group(1)[:-1])
else:
preferred_e = None
preferred_v = m.group(2)
if m.group(3):
preferred_r = m.group(3)[1:]
else:
preferred_r = None
else:
preferred_e = None
preferred_r = None
for file_set in pkg_pn:
for f in file_set:
pe,pv,pr = dataCache.pkg_pepvpr[f]
if preferred_v == pv and (preferred_r == pr or preferred_r == None) and (preferred_e == pe or preferred_e == None):
preferred_file = f
preferred_ver = (pe, pv, pr)
break
if preferred_file:
break;
if preferred_r:
pv_str = '%s-%s' % (preferred_v, preferred_r)
else:
pv_str = preferred_v
if not (preferred_e is None):
pv_str = '%s:%s' % (preferred_e, pv_str)
itemstr = ""
if item:
itemstr = " (for item %s)" % item
if preferred_file is None:
bb.msg.note(1, bb.msg.domain.Provider, "preferred version %s of %s not available%s" % (pv_str, pn, itemstr))
else:
bb.msg.debug(1, bb.msg.domain.Provider, "selecting %s as PREFERRED_VERSION %s of package %s%s" % (preferred_file, pv_str, pn, itemstr))
return (preferred_ver, preferred_file)
def findLatestProvider(pn, cfgData, dataCache, file_set):
"""
Return the highest version of the providers in file_set.
Take default preferences into account.
"""
latest = None
latest_p = 0
latest_f = None
for file_name in file_set:
pe,pv,pr = dataCache.pkg_pepvpr[file_name]
dp = dataCache.pkg_dp[file_name]
if (latest is None) or ((latest_p == dp) and (utils.vercmp(latest, (pe, pv, pr)) < 0)) or (dp > latest_p):
latest = (pe, pv, pr)
latest_f = file_name
latest_p = dp
return (latest, latest_f)
def findBestProvider(pn, cfgData, dataCache, pkg_pn = None, item = None):
"""
If there is a PREFERRED_VERSION, find the highest-priority bbfile
providing that version. If not, find the latest version provided by
an bbfile in the highest-priority set.
"""
sortpkg_pn = sortPriorities(pn, dataCache, pkg_pn)
# Find the highest priority provider with a PREFERRED_VERSION set
(preferred_ver, preferred_file) = findPreferredProvider(pn, cfgData, dataCache, sortpkg_pn, item)
# Find the latest version of the highest priority provider
(latest, latest_f) = findLatestProvider(pn, cfgData, dataCache, sortpkg_pn[0])
if preferred_file is None:
preferred_file = latest_f
preferred_ver = latest
return (latest, latest_f, preferred_ver, preferred_file)
def _filterProviders(providers, item, cfgData, dataCache):
"""
Take a list of providers and filter/reorder according to the
environment variables and previous build results
"""
eligible = []
preferred_versions = {}
sortpkg_pn = {}
# The order of providers depends on the order of the files on the disk
# up to here. Sort pkg_pn to make dependency issues reproducible rather
# than effectively random.
providers.sort()
# Collate providers by PN
pkg_pn = {}
for p in providers:
pn = dataCache.pkg_fn[p]
if pn not in pkg_pn:
pkg_pn[pn] = []
pkg_pn[pn].append(p)
bb.msg.debug(1, bb.msg.domain.Provider, "providers for %s are: %s" % (item, pkg_pn.keys()))
# First add PREFERRED_VERSIONS
for pn in pkg_pn.keys():
sortpkg_pn[pn] = sortPriorities(pn, dataCache, pkg_pn)
preferred_versions[pn] = findPreferredProvider(pn, cfgData, dataCache, sortpkg_pn[pn], item)
if preferred_versions[pn][1]:
eligible.append(preferred_versions[pn][1])
# Now add latest verisons
for pn in pkg_pn.keys():
if pn in preferred_versions and preferred_versions[pn][1]:
continue
preferred_versions[pn] = findLatestProvider(pn, cfgData, dataCache, sortpkg_pn[pn][0])
eligible.append(preferred_versions[pn][1])
if len(eligible) == 0:
bb.msg.error(bb.msg.domain.Provider, "no eligible providers for %s" % item)
return 0
# If pn == item, give it a slight default preference
# This means PREFERRED_PROVIDER_foobar defaults to foobar if available
for p in providers:
pn = dataCache.pkg_fn[p]
if pn != item:
continue
(newvers, fn) = preferred_versions[pn]
if not fn in eligible:
continue
eligible.remove(fn)
eligible = [fn] + eligible
return eligible
def filterProviders(providers, item, cfgData, dataCache):
"""
Take a list of providers and filter/reorder according to the
environment variables and previous build results
Takes a "normal" target item
"""
eligible = _filterProviders(providers, item, cfgData, dataCache)
prefervar = bb.data.getVar('PREFERRED_PROVIDER_%s' % item, cfgData, 1)
if prefervar:
dataCache.preferred[item] = prefervar
foundUnique = False
if item in dataCache.preferred:
for p in eligible:
pn = dataCache.pkg_fn[p]
if dataCache.preferred[item] == pn:
bb.msg.note(2, bb.msg.domain.Provider, "selecting %s to satisfy %s due to PREFERRED_PROVIDERS" % (pn, item))
eligible.remove(p)
eligible = [p] + eligible
foundUnique = True
break
bb.msg.debug(1, bb.msg.domain.Provider, "sorted providers for %s are: %s" % (item, eligible))
return eligible, foundUnique
def filterProvidersRunTime(providers, item, cfgData, dataCache):
"""
Take a list of providers and filter/reorder according to the
environment variables and previous build results
Takes a "runtime" target item
"""
eligible = _filterProviders(providers, item, cfgData, dataCache)
# Should use dataCache.preferred here?
preferred = []
preferred_vars = []
for p in eligible:
pn = dataCache.pkg_fn[p]
provides = dataCache.pn_provides[pn]
for provide in provides:
bb.msg.note(2, bb.msg.domain.Provider, "checking PREFERRED_PROVIDER_%s" % (provide))
prefervar = bb.data.getVar('PREFERRED_PROVIDER_%s' % provide, cfgData, 1)
if prefervar == pn:
var = "PREFERRED_PROVIDER_%s = %s" % (provide, prefervar)
bb.msg.note(2, bb.msg.domain.Provider, "selecting %s to satisfy runtime %s due to %s" % (pn, item, var))
preferred_vars.append(var)
eligible.remove(p)
eligible = [p] + eligible
preferred.append(p)
break
numberPreferred = len(preferred)
if numberPreferred > 1:
bb.msg.error(bb.msg.domain.Provider, "Conflicting PREFERRED_PROVIDER entries were found which resulted in an attempt to select multiple providers (%s) for runtime dependecy %s\nThe entries resulting in this conflict were: %s" % (preferred, item, preferred_vars))
bb.msg.debug(1, bb.msg.domain.Provider, "sorted providers for %s are: %s" % (item, eligible))
return eligible, numberPreferred
regexp_cache = {}
def getRuntimeProviders(dataCache, rdepend):
"""
Return any providers of runtime dependency
"""
rproviders = []
if rdepend in dataCache.rproviders:
rproviders += dataCache.rproviders[rdepend]
if rdepend in dataCache.packages:
rproviders += dataCache.packages[rdepend]
if rproviders:
return rproviders
# Only search dynamic packages if we can't find anything in other variables
for pattern in dataCache.packages_dynamic:
pattern = pattern.replace('+', "\+")
if pattern in regexp_cache:
regexp = regexp_cache[pattern]
else:
try:
regexp = re.compile(pattern)
except:
bb.msg.error(bb.msg.domain.Provider, "Error parsing re expression: %s" % pattern)
raise
regexp_cache[pattern] = regexp
if regexp.match(rdepend):
rproviders += dataCache.packages_dynamic[pattern]
return rproviders

File diff suppressed because it is too large Load Diff

824
bitbake-dev/lib/bb/shell.py Normal file
View File

@@ -0,0 +1,824 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
##########################################################################
#
# Copyright (C) 2005-2006 Michael 'Mickey' Lauer <mickey@Vanille.de>
# Copyright (C) 2005-2006 Vanille Media
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
##########################################################################
#
# Thanks to:
# * Holger Freyther <zecke@handhelds.org>
# * Justin Patrin <papercrane@reversefold.com>
#
##########################################################################
"""
BitBake Shell
IDEAS:
* list defined tasks per package
* list classes
* toggle force
* command to reparse just one (or more) bbfile(s)
* automatic check if reparsing is necessary (inotify?)
* frontend for bb file manipulation
* more shell-like features:
- output control, i.e. pipe output into grep, sort, etc.
- job control, i.e. bring running commands into background and foreground
* start parsing in background right after startup
* ncurses interface
PROBLEMS:
* force doesn't always work
* readline completion for commands with more than one parameters
"""
##########################################################################
# Import and setup global variables
##########################################################################
try:
set
except NameError:
from sets import Set as set
import sys, os, readline, socket, httplib, urllib, commands, popen2, copy, shlex, Queue, fnmatch
from bb import data, parse, build, fatal, cache, taskdata, runqueue, providers as Providers
__version__ = "0.5.3.1"
__credits__ = """BitBake Shell Version %s (C) 2005 Michael 'Mickey' Lauer <mickey@Vanille.de>
Type 'help' for more information, press CTRL-D to exit.""" % __version__
cmds = {}
leave_mainloop = False
last_exception = None
cooker = None
parsed = False
debug = os.environ.get( "BBSHELL_DEBUG", "" )
##########################################################################
# Class BitBakeShellCommands
##########################################################################
class BitBakeShellCommands:
"""This class contains the valid commands for the shell"""
def __init__( self, shell ):
"""Register all the commands"""
self._shell = shell
for attr in BitBakeShellCommands.__dict__:
if not attr.startswith( "_" ):
if attr.endswith( "_" ):
command = attr[:-1].lower()
else:
command = attr[:].lower()
method = getattr( BitBakeShellCommands, attr )
debugOut( "registering command '%s'" % command )
# scan number of arguments
usage = getattr( method, "usage", "" )
if usage != "<...>":
numArgs = len( usage.split() )
else:
numArgs = -1
shell.registerCommand( command, method, numArgs, "%s %s" % ( command, usage ), method.__doc__ )
def _checkParsed( self ):
if not parsed:
print "SHELL: This command needs to parse bbfiles..."
self.parse( None )
def _findProvider( self, item ):
self._checkParsed()
# Need to use taskData for this information
preferred = data.getVar( "PREFERRED_PROVIDER_%s" % item, cooker.configuration.data, 1 )
if not preferred: preferred = item
try:
lv, lf, pv, pf = Providers.findBestProvider(preferred, cooker.configuration.data, cooker.status)
except KeyError:
if item in cooker.status.providers:
pf = cooker.status.providers[item][0]
else:
pf = None
return pf
def alias( self, params ):
"""Register a new name for a command"""
new, old = params
if not old in cmds:
print "ERROR: Command '%s' not known" % old
else:
cmds[new] = cmds[old]
print "OK"
alias.usage = "<alias> <command>"
def buffer( self, params ):
"""Dump specified output buffer"""
index = params[0]
print self._shell.myout.buffer( int( index ) )
buffer.usage = "<index>"
def buffers( self, params ):
"""Show the available output buffers"""
commands = self._shell.myout.bufferedCommands()
if not commands:
print "SHELL: No buffered commands available yet. Start doing something."
else:
print "="*35, "Available Output Buffers", "="*27
for index, cmd in enumerate( commands ):
print "| %s %s" % ( str( index ).ljust( 3 ), cmd )
print "="*88
def build( self, params, cmd = "build" ):
"""Build a providee"""
global last_exception
globexpr = params[0]
self._checkParsed()
names = globfilter( cooker.status.pkg_pn.keys(), globexpr )
if len( names ) == 0: names = [ globexpr ]
print "SHELL: Building %s" % ' '.join( names )
td = taskdata.TaskData(cooker.configuration.abort)
localdata = data.createCopy(cooker.configuration.data)
data.update_data(localdata)
data.expandKeys(localdata)
try:
tasks = []
for name in names:
td.add_provider(localdata, cooker.status, name)
providers = td.get_provider(name)
if len(providers) == 0:
raise Providers.NoProvider
tasks.append([name, "do_%s" % cmd])
td.add_unresolved(localdata, cooker.status)
rq = runqueue.RunQueue(cooker, localdata, cooker.status, td, tasks)
rq.prepare_runqueue()
rq.execute_runqueue()
except Providers.NoProvider:
print "ERROR: No Provider"
last_exception = Providers.NoProvider
except runqueue.TaskFailure, fnids:
for fnid in fnids:
print "ERROR: '%s' failed" % td.fn_index[fnid]
last_exception = runqueue.TaskFailure
except build.EventException, e:
print "ERROR: Couldn't build '%s'" % names
last_exception = e
build.usage = "<providee>"
def clean( self, params ):
"""Clean a providee"""
self.build( params, "clean" )
clean.usage = "<providee>"
def compile( self, params ):
"""Execute 'compile' on a providee"""
self.build( params, "compile" )
compile.usage = "<providee>"
def configure( self, params ):
"""Execute 'configure' on a providee"""
self.build( params, "configure" )
configure.usage = "<providee>"
def install( self, params ):
"""Execute 'install' on a providee"""
self.build( params, "install" )
install.usage = "<providee>"
def edit( self, params ):
"""Call $EDITOR on a providee"""
name = params[0]
bbfile = self._findProvider( name )
if bbfile is not None:
os.system( "%s %s" % ( os.environ.get( "EDITOR", "vi" ), bbfile ) )
else:
print "ERROR: Nothing provides '%s'" % name
edit.usage = "<providee>"
def environment( self, params ):
"""Dump out the outer BitBake environment"""
cooker.showEnvironment()
def exit_( self, params ):
"""Leave the BitBake Shell"""
debugOut( "setting leave_mainloop to true" )
global leave_mainloop
leave_mainloop = True
def fetch( self, params ):
"""Fetch a providee"""
self.build( params, "fetch" )
fetch.usage = "<providee>"
def fileBuild( self, params, cmd = "build" ):
"""Parse and build a .bb file"""
global last_exception
name = params[0]
bf = completeFilePath( name )
print "SHELL: Calling '%s' on '%s'" % ( cmd, bf )
try:
cooker.buildFile(bf, cmd)
except parse.ParseError:
print "ERROR: Unable to open or parse '%s'" % bf
except build.EventException, e:
print "ERROR: Couldn't build '%s'" % name
last_exception = e
fileBuild.usage = "<bbfile>"
def fileClean( self, params ):
"""Clean a .bb file"""
self.fileBuild( params, "clean" )
fileClean.usage = "<bbfile>"
def fileEdit( self, params ):
"""Call $EDITOR on a .bb file"""
name = params[0]
os.system( "%s %s" % ( os.environ.get( "EDITOR", "vi" ), completeFilePath( name ) ) )
fileEdit.usage = "<bbfile>"
def fileRebuild( self, params ):
"""Rebuild (clean & build) a .bb file"""
self.fileBuild( params, "rebuild" )
fileRebuild.usage = "<bbfile>"
def fileReparse( self, params ):
"""(re)Parse a bb file"""
bbfile = params[0]
print "SHELL: Parsing '%s'" % bbfile
parse.update_mtime( bbfile )
cooker.bb_cache.cacheValidUpdate(bbfile)
fromCache = cooker.bb_cache.loadData(bbfile, cooker.configuration.data, cooker.status)
cooker.bb_cache.sync()
if False: #fromCache:
print "SHELL: File has not been updated, not reparsing"
else:
print "SHELL: Parsed"
fileReparse.usage = "<bbfile>"
def abort( self, params ):
"""Toggle abort task execution flag (see bitbake -k)"""
cooker.configuration.abort = not cooker.configuration.abort
print "SHELL: Abort Flag is now '%s'" % repr( cooker.configuration.abort )
def force( self, params ):
"""Toggle force task execution flag (see bitbake -f)"""
cooker.configuration.force = not cooker.configuration.force
print "SHELL: Force Flag is now '%s'" % repr( cooker.configuration.force )
def help( self, params ):
"""Show a comprehensive list of commands and their purpose"""
print "="*30, "Available Commands", "="*30
allcmds = cmds.keys()
allcmds.sort()
for cmd in allcmds:
function,numparams,usage,helptext = cmds[cmd]
print "| %s | %s" % (usage.ljust(30), helptext)
print "="*78
def lastError( self, params ):
"""Show the reason or log that was produced by the last BitBake event exception"""
if last_exception is None:
print "SHELL: No Errors yet (Phew)..."
else:
reason, event = last_exception.args
print "SHELL: Reason for the last error: '%s'" % reason
if ':' in reason:
msg, filename = reason.split( ':' )
filename = filename.strip()
print "SHELL: Dumping log file for last error:"
try:
print open( filename ).read()
except IOError:
print "ERROR: Couldn't open '%s'" % filename
def match( self, params ):
"""Dump all files or providers matching a glob expression"""
what, globexpr = params
if what == "files":
self._checkParsed()
for key in globfilter( cooker.status.pkg_fn.keys(), globexpr ): print key
elif what == "providers":
self._checkParsed()
for key in globfilter( cooker.status.pkg_pn.keys(), globexpr ): print key
else:
print "Usage: match %s" % self.print_.usage
match.usage = "<files|providers> <glob>"
def new( self, params ):
"""Create a new .bb file and open the editor"""
dirname, filename = params
packages = '/'.join( data.getVar( "BBFILES", cooker.configuration.data, 1 ).split('/')[:-2] )
fulldirname = "%s/%s" % ( packages, dirname )
if not os.path.exists( fulldirname ):
print "SHELL: Creating '%s'" % fulldirname
os.mkdir( fulldirname )
if os.path.exists( fulldirname ) and os.path.isdir( fulldirname ):
if os.path.exists( "%s/%s" % ( fulldirname, filename ) ):
print "SHELL: ERROR: %s/%s already exists" % ( fulldirname, filename )
return False
print "SHELL: Creating '%s/%s'" % ( fulldirname, filename )
newpackage = open( "%s/%s" % ( fulldirname, filename ), "w" )
print >>newpackage,"""DESCRIPTION = ""
SECTION = ""
AUTHOR = ""
HOMEPAGE = ""
MAINTAINER = ""
LICENSE = "GPL"
PR = "r0"
SRC_URI = ""
#inherit base
#do_configure() {
#
#}
#do_compile() {
#
#}
#do_stage() {
#
#}
#do_install() {
#
#}
"""
newpackage.close()
os.system( "%s %s/%s" % ( os.environ.get( "EDITOR" ), fulldirname, filename ) )
new.usage = "<directory> <filename>"
def package( self, params ):
"""Execute 'package' on a providee"""
self.build( params, "package" )
package.usage = "<providee>"
def pasteBin( self, params ):
"""Send a command + output buffer to the pastebin at http://rafb.net/paste"""
index = params[0]
contents = self._shell.myout.buffer( int( index ) )
sendToPastebin( "output of " + params[0], contents )
pasteBin.usage = "<index>"
def pasteLog( self, params ):
"""Send the last event exception error log (if there is one) to http://rafb.net/paste"""
if last_exception is None:
print "SHELL: No Errors yet (Phew)..."
else:
reason, event = last_exception.args
print "SHELL: Reason for the last error: '%s'" % reason
if ':' in reason:
msg, filename = reason.split( ':' )
filename = filename.strip()
print "SHELL: Pasting log file to pastebin..."
file = open( filename ).read()
sendToPastebin( "contents of " + filename, file )
def patch( self, params ):
"""Execute 'patch' command on a providee"""
self.build( params, "patch" )
patch.usage = "<providee>"
def parse( self, params ):
"""(Re-)parse .bb files and calculate the dependency graph"""
cooker.status = cache.CacheData()
ignore = data.getVar("ASSUME_PROVIDED", cooker.configuration.data, 1) or ""
cooker.status.ignored_dependencies = set( ignore.split() )
cooker.handleCollections( data.getVar("BBFILE_COLLECTIONS", cooker.configuration.data, 1) )
(filelist, masked) = cooker.collect_bbfiles()
cooker.parse_bbfiles(filelist, masked, cooker.myProgressCallback)
cooker.buildDepgraph()
global parsed
parsed = True
print
def reparse( self, params ):
"""(re)Parse a providee's bb file"""
bbfile = self._findProvider( params[0] )
if bbfile is not None:
print "SHELL: Found bbfile '%s' for '%s'" % ( bbfile, params[0] )
self.fileReparse( [ bbfile ] )
else:
print "ERROR: Nothing provides '%s'" % params[0]
reparse.usage = "<providee>"
def getvar( self, params ):
"""Dump the contents of an outer BitBake environment variable"""
var = params[0]
value = data.getVar( var, cooker.configuration.data, 1 )
print value
getvar.usage = "<variable>"
def peek( self, params ):
"""Dump contents of variable defined in providee's metadata"""
name, var = params
bbfile = self._findProvider( name )
if bbfile is not None:
the_data = cooker.bb_cache.loadDataFull(bbfile, cooker.configuration.data)
value = the_data.getVar( var, 1 )
print value
else:
print "ERROR: Nothing provides '%s'" % name
peek.usage = "<providee> <variable>"
def poke( self, params ):
"""Set contents of variable defined in providee's metadata"""
name, var, value = params
bbfile = self._findProvider( name )
if bbfile is not None:
print "ERROR: Sorry, this functionality is currently broken"
#d = cooker.pkgdata[bbfile]
#data.setVar( var, value, d )
# mark the change semi persistant
#cooker.pkgdata.setDirty(bbfile, d)
#print "OK"
else:
print "ERROR: Nothing provides '%s'" % name
poke.usage = "<providee> <variable> <value>"
def print_( self, params ):
"""Dump all files or providers"""
what = params[0]
if what == "files":
self._checkParsed()
for key in cooker.status.pkg_fn.keys(): print key
elif what == "providers":
self._checkParsed()
for key in cooker.status.providers.keys(): print key
else:
print "Usage: print %s" % self.print_.usage
print_.usage = "<files|providers>"
def python( self, params ):
"""Enter the expert mode - an interactive BitBake Python Interpreter"""
sys.ps1 = "EXPERT BB>>> "
sys.ps2 = "EXPERT BB... "
import code
interpreter = code.InteractiveConsole( dict( globals() ) )
interpreter.interact( "SHELL: Expert Mode - BitBake Python %s\nType 'help' for more information, press CTRL-D to switch back to BBSHELL." % sys.version )
def showdata( self, params ):
"""Execute 'showdata' on a providee"""
cooker.showEnvironment(None, params)
showdata.usage = "<providee>"
def setVar( self, params ):
"""Set an outer BitBake environment variable"""
var, value = params
data.setVar( var, value, cooker.configuration.data )
print "OK"
setVar.usage = "<variable> <value>"
def rebuild( self, params ):
"""Clean and rebuild a .bb file or a providee"""
self.build( params, "clean" )
self.build( params, "build" )
rebuild.usage = "<providee>"
def shell( self, params ):
"""Execute a shell command and dump the output"""
if params != "":
print commands.getoutput( " ".join( params ) )
shell.usage = "<...>"
def stage( self, params ):
"""Execute 'stage' on a providee"""
self.build( params, "populate_staging" )
stage.usage = "<providee>"
def status( self, params ):
"""<just for testing>"""
print "-" * 78
print "building list = '%s'" % cooker.building_list
print "build path = '%s'" % cooker.build_path
print "consider_msgs_cache = '%s'" % cooker.consider_msgs_cache
print "build stats = '%s'" % cooker.stats
if last_exception is not None: print "last_exception = '%s'" % repr( last_exception.args )
print "memory output contents = '%s'" % self._shell.myout._buffer
def test( self, params ):
"""<just for testing>"""
print "testCommand called with '%s'" % params
def unpack( self, params ):
"""Execute 'unpack' on a providee"""
self.build( params, "unpack" )
unpack.usage = "<providee>"
def which( self, params ):
"""Computes the providers for a given providee"""
# Need to use taskData for this information
item = params[0]
self._checkParsed()
preferred = data.getVar( "PREFERRED_PROVIDER_%s" % item, cooker.configuration.data, 1 )
if not preferred: preferred = item
try:
lv, lf, pv, pf = Providers.findBestProvider(preferred, cooker.configuration.data, cooker.status)
except KeyError:
lv, lf, pv, pf = (None,)*4
try:
providers = cooker.status.providers[item]
except KeyError:
print "SHELL: ERROR: Nothing provides", preferred
else:
for provider in providers:
if provider == pf: provider = " (***) %s" % provider
else: provider = " %s" % provider
print provider
which.usage = "<providee>"
##########################################################################
# Common helper functions
##########################################################################
def completeFilePath( bbfile ):
"""Get the complete bbfile path"""
if not cooker.status: return bbfile
if not cooker.status.pkg_fn: return bbfile
for key in cooker.status.pkg_fn.keys():
if key.endswith( bbfile ):
return key
return bbfile
def sendToPastebin( desc, content ):
"""Send content to http://oe.pastebin.com"""
mydata = {}
mydata["lang"] = "Plain Text"
mydata["desc"] = desc
mydata["cvt_tabs"] = "No"
mydata["nick"] = "%s@%s" % ( os.environ.get( "USER", "unknown" ), socket.gethostname() or "unknown" )
mydata["text"] = content
params = urllib.urlencode( mydata )
headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
host = "rafb.net"
conn = httplib.HTTPConnection( "%s:80" % host )
conn.request("POST", "/paste/paste.php", params, headers )
response = conn.getresponse()
conn.close()
if response.status == 302:
location = response.getheader( "location" ) or "unknown"
print "SHELL: Pasted to http://%s%s" % ( host, location )
else:
print "ERROR: %s %s" % ( response.status, response.reason )
def completer( text, state ):
"""Return a possible readline completion"""
debugOut( "completer called with text='%s', state='%d'" % ( text, state ) )
if state == 0:
line = readline.get_line_buffer()
if " " in line:
line = line.split()
# we are in second (or more) argument
if line[0] in cmds and hasattr( cmds[line[0]][0], "usage" ): # known command and usage
u = getattr( cmds[line[0]][0], "usage" ).split()[0]
if u == "<variable>":
allmatches = cooker.configuration.data.keys()
elif u == "<bbfile>":
if cooker.status.pkg_fn is None: allmatches = [ "(No Matches Available. Parsed yet?)" ]
else: allmatches = [ x.split("/")[-1] for x in cooker.status.pkg_fn.keys() ]
elif u == "<providee>":
if cooker.status.pkg_fn is None: allmatches = [ "(No Matches Available. Parsed yet?)" ]
else: allmatches = cooker.status.providers.iterkeys()
else: allmatches = [ "(No tab completion available for this command)" ]
else: allmatches = [ "(No tab completion available for this command)" ]
else:
# we are in first argument
allmatches = cmds.iterkeys()
completer.matches = [ x for x in allmatches if x[:len(text)] == text ]
#print "completer.matches = '%s'" % completer.matches
if len( completer.matches ) > state:
return completer.matches[state]
else:
return None
def debugOut( text ):
if debug:
sys.stderr.write( "( %s )\n" % text )
def columnize( alist, width = 80 ):
"""
A word-wrap function that preserves existing line breaks
and most spaces in the text. Expects that existing line
breaks are posix newlines (\n).
"""
return reduce(lambda line, word, width=width: '%s%s%s' %
(line,
' \n'[(len(line[line.rfind('\n')+1:])
+ len(word.split('\n',1)[0]
) >= width)],
word),
alist
)
def globfilter( names, pattern ):
return fnmatch.filter( names, pattern )
##########################################################################
# Class MemoryOutput
##########################################################################
class MemoryOutput:
"""File-like output class buffering the output of the last 10 commands"""
def __init__( self, delegate ):
self.delegate = delegate
self._buffer = []
self.text = []
self._command = None
def startCommand( self, command ):
self._command = command
self.text = []
def endCommand( self ):
if self._command is not None:
if len( self._buffer ) == 10: del self._buffer[0]
self._buffer.append( ( self._command, self.text ) )
def removeLast( self ):
if self._buffer:
del self._buffer[ len( self._buffer ) - 1 ]
self.text = []
self._command = None
def lastBuffer( self ):
if self._buffer:
return self._buffer[ len( self._buffer ) -1 ][1]
def bufferedCommands( self ):
return [ cmd for cmd, output in self._buffer ]
def buffer( self, i ):
if i < len( self._buffer ):
return "BB>> %s\n%s" % ( self._buffer[i][0], "".join( self._buffer[i][1] ) )
else: return "ERROR: Invalid buffer number. Buffer needs to be in (0, %d)" % ( len( self._buffer ) - 1 )
def write( self, text ):
if self._command is not None and text != "BB>> ": self.text.append( text )
if self.delegate is not None: self.delegate.write( text )
def flush( self ):
return self.delegate.flush()
def fileno( self ):
return self.delegate.fileno()
def isatty( self ):
return self.delegate.isatty()
##########################################################################
# Class BitBakeShell
##########################################################################
class BitBakeShell:
def __init__( self ):
"""Register commands and set up readline"""
self.commandQ = Queue.Queue()
self.commands = BitBakeShellCommands( self )
self.myout = MemoryOutput( sys.stdout )
self.historyfilename = os.path.expanduser( "~/.bbsh_history" )
self.startupfilename = os.path.expanduser( "~/.bbsh_startup" )
readline.set_completer( completer )
readline.set_completer_delims( " " )
readline.parse_and_bind("tab: complete")
try:
readline.read_history_file( self.historyfilename )
except IOError:
pass # It doesn't exist yet.
print __credits__
def cleanup( self ):
"""Write readline history and clean up resources"""
debugOut( "writing command history" )
try:
readline.write_history_file( self.historyfilename )
except:
print "SHELL: Unable to save command history"
def registerCommand( self, command, function, numparams = 0, usage = "", helptext = "" ):
"""Register a command"""
if usage == "": usage = command
if helptext == "": helptext = function.__doc__ or "<not yet documented>"
cmds[command] = ( function, numparams, usage, helptext )
def processCommand( self, command, params ):
"""Process a command. Check number of params and print a usage string, if appropriate"""
debugOut( "processing command '%s'..." % command )
try:
function, numparams, usage, helptext = cmds[command]
except KeyError:
print "SHELL: ERROR: '%s' command is not a valid command." % command
self.myout.removeLast()
else:
if (numparams != -1) and (not len( params ) == numparams):
print "Usage: '%s'" % usage
return
result = function( self.commands, params )
debugOut( "result was '%s'" % result )
def processStartupFile( self ):
"""Read and execute all commands found in $HOME/.bbsh_startup"""
if os.path.exists( self.startupfilename ):
startupfile = open( self.startupfilename, "r" )
for cmdline in startupfile:
debugOut( "processing startup line '%s'" % cmdline )
if not cmdline:
continue
if "|" in cmdline:
print "ERROR: '|' in startup file is not allowed. Ignoring line"
continue
self.commandQ.put( cmdline.strip() )
def main( self ):
"""The main command loop"""
while not leave_mainloop:
try:
if self.commandQ.empty():
sys.stdout = self.myout.delegate
cmdline = raw_input( "BB>> " )
sys.stdout = self.myout
else:
cmdline = self.commandQ.get()
if cmdline:
allCommands = cmdline.split( ';' )
for command in allCommands:
pipecmd = None
#
# special case for expert mode
if command == 'python':
sys.stdout = self.myout.delegate
self.processCommand( command, "" )
sys.stdout = self.myout
else:
self.myout.startCommand( command )
if '|' in command: # disable output
command, pipecmd = command.split( '|' )
delegate = self.myout.delegate
self.myout.delegate = None
tokens = shlex.split( command, True )
self.processCommand( tokens[0], tokens[1:] or "" )
self.myout.endCommand()
if pipecmd is not None: # restore output
self.myout.delegate = delegate
pipe = popen2.Popen4( pipecmd )
pipe.tochild.write( "\n".join( self.myout.lastBuffer() ) )
pipe.tochild.close()
sys.stdout.write( pipe.fromchild.read() )
#
except EOFError:
print
return
except KeyboardInterrupt:
print
##########################################################################
# Start function - called from the BitBake command line utility
##########################################################################
def start( aCooker ):
global cooker
cooker = aCooker
bbshell = BitBakeShell()
bbshell.processStartupFile()
bbshell.main()
bbshell.cleanup()
if __name__ == "__main__":
print "SHELL: Sorry, this program should only be called by BitBake."

View File

@@ -0,0 +1,595 @@
#!/usr/bin/env python
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake 'TaskData' implementation
Task data collection and handling
"""
# Copyright (C) 2006 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import bb
class TaskData:
"""
BitBake Task Data implementation
"""
def __init__(self, abort = True, tryaltconfigs = False):
self.build_names_index = []
self.run_names_index = []
self.fn_index = []
self.build_targets = {}
self.run_targets = {}
self.external_targets = []
self.tasks_fnid = []
self.tasks_name = []
self.tasks_tdepends = []
self.tasks_idepends = []
# Cache to speed up task ID lookups
self.tasks_lookup = {}
self.depids = {}
self.rdepids = {}
self.consider_msgs_cache = []
self.failed_deps = []
self.failed_rdeps = []
self.failed_fnids = []
self.abort = abort
self.tryaltconfigs = tryaltconfigs
def getbuild_id(self, name):
"""
Return an ID number for the build target name.
If it doesn't exist, create one.
"""
if not name in self.build_names_index:
self.build_names_index.append(name)
return len(self.build_names_index) - 1
return self.build_names_index.index(name)
def getrun_id(self, name):
"""
Return an ID number for the run target name.
If it doesn't exist, create one.
"""
if not name in self.run_names_index:
self.run_names_index.append(name)
return len(self.run_names_index) - 1
return self.run_names_index.index(name)
def getfn_id(self, name):
"""
Return an ID number for the filename.
If it doesn't exist, create one.
"""
if not name in self.fn_index:
self.fn_index.append(name)
return len(self.fn_index) - 1
return self.fn_index.index(name)
def gettask_ids(self, fnid):
"""
Return an array of the ID numbers matching a given fnid.
"""
ids = []
if fnid in self.tasks_lookup:
for task in self.tasks_lookup[fnid]:
ids.append(self.tasks_lookup[fnid][task])
return ids
def gettask_id(self, fn, task, create = True):
"""
Return an ID number for the task matching fn and task.
If it doesn't exist, create one by default.
Optionally return None instead.
"""
fnid = self.getfn_id(fn)
if fnid in self.tasks_lookup:
if task in self.tasks_lookup[fnid]:
return self.tasks_lookup[fnid][task]
if not create:
return None
self.tasks_name.append(task)
self.tasks_fnid.append(fnid)
self.tasks_tdepends.append([])
self.tasks_idepends.append([])
listid = len(self.tasks_name) - 1
if fnid not in self.tasks_lookup:
self.tasks_lookup[fnid] = {}
self.tasks_lookup[fnid][task] = listid
return listid
def add_tasks(self, fn, dataCache):
"""
Add tasks for a given fn to the database
"""
task_deps = dataCache.task_deps[fn]
fnid = self.getfn_id(fn)
if fnid in self.failed_fnids:
bb.msg.fatal(bb.msg.domain.TaskData, "Trying to re-add a failed file? Something is broken...")
# Check if we've already seen this fn
if fnid in self.tasks_fnid:
return
for task in task_deps['tasks']:
# Work out task dependencies
parentids = []
for dep in task_deps['parents'][task]:
parentid = self.gettask_id(fn, dep)
parentids.append(parentid)
taskid = self.gettask_id(fn, task)
self.tasks_tdepends[taskid].extend(parentids)
# Touch all intertask dependencies
if 'depends' in task_deps and task in task_deps['depends']:
ids = []
for dep in task_deps['depends'][task].split():
if dep:
ids.append(((self.getbuild_id(dep.split(":")[0])), dep.split(":")[1]))
self.tasks_idepends[taskid].extend(ids)
# Work out build dependencies
if not fnid in self.depids:
dependids = {}
for depend in dataCache.deps[fn]:
bb.msg.debug(2, bb.msg.domain.TaskData, "Added dependency %s for %s" % (depend, fn))
dependids[self.getbuild_id(depend)] = None
self.depids[fnid] = dependids.keys()
# Work out runtime dependencies
if not fnid in self.rdepids:
rdependids = {}
rdepends = dataCache.rundeps[fn]
rrecs = dataCache.runrecs[fn]
for package in rdepends:
for rdepend in bb.utils.explode_deps(rdepends[package]):
bb.msg.debug(2, bb.msg.domain.TaskData, "Added runtime dependency %s for %s" % (rdepend, fn))
rdependids[self.getrun_id(rdepend)] = None
for package in rrecs:
for rdepend in bb.utils.explode_deps(rrecs[package]):
bb.msg.debug(2, bb.msg.domain.TaskData, "Added runtime recommendation %s for %s" % (rdepend, fn))
rdependids[self.getrun_id(rdepend)] = None
self.rdepids[fnid] = rdependids.keys()
for dep in self.depids[fnid]:
if dep in self.failed_deps:
self.fail_fnid(fnid)
return
for dep in self.rdepids[fnid]:
if dep in self.failed_rdeps:
self.fail_fnid(fnid)
return
def have_build_target(self, target):
"""
Have we a build target matching this name?
"""
targetid = self.getbuild_id(target)
if targetid in self.build_targets:
return True
return False
def have_runtime_target(self, target):
"""
Have we a runtime target matching this name?
"""
targetid = self.getrun_id(target)
if targetid in self.run_targets:
return True
return False
def add_build_target(self, fn, item):
"""
Add a build target.
If already present, append the provider fn to the list
"""
targetid = self.getbuild_id(item)
fnid = self.getfn_id(fn)
if targetid in self.build_targets:
if fnid in self.build_targets[targetid]:
return
self.build_targets[targetid].append(fnid)
return
self.build_targets[targetid] = [fnid]
def add_runtime_target(self, fn, item):
"""
Add a runtime target.
If already present, append the provider fn to the list
"""
targetid = self.getrun_id(item)
fnid = self.getfn_id(fn)
if targetid in self.run_targets:
if fnid in self.run_targets[targetid]:
return
self.run_targets[targetid].append(fnid)
return
self.run_targets[targetid] = [fnid]
def mark_external_target(self, item):
"""
Mark a build target as being externally requested
"""
targetid = self.getbuild_id(item)
if targetid not in self.external_targets:
self.external_targets.append(targetid)
def get_unresolved_build_targets(self, dataCache):
"""
Return a list of build targets who's providers
are unknown.
"""
unresolved = []
for target in self.build_names_index:
if target in dataCache.ignored_dependencies:
continue
if self.build_names_index.index(target) in self.failed_deps:
continue
if not self.have_build_target(target):
unresolved.append(target)
return unresolved
def get_unresolved_run_targets(self, dataCache):
"""
Return a list of runtime targets who's providers
are unknown.
"""
unresolved = []
for target in self.run_names_index:
if target in dataCache.ignored_dependencies:
continue
if self.run_names_index.index(target) in self.failed_rdeps:
continue
if not self.have_runtime_target(target):
unresolved.append(target)
return unresolved
def get_provider(self, item):
"""
Return a list of providers of item
"""
targetid = self.getbuild_id(item)
return self.build_targets[targetid]
def get_dependees(self, itemid):
"""
Return a list of targets which depend on item
"""
dependees = []
for fnid in self.depids:
if itemid in self.depids[fnid]:
dependees.append(fnid)
return dependees
def get_dependees_str(self, item):
"""
Return a list of targets which depend on item as a user readable string
"""
itemid = self.getbuild_id(item)
dependees = []
for fnid in self.depids:
if itemid in self.depids[fnid]:
dependees.append(self.fn_index[fnid])
return dependees
def get_rdependees(self, itemid):
"""
Return a list of targets which depend on runtime item
"""
dependees = []
for fnid in self.rdepids:
if itemid in self.rdepids[fnid]:
dependees.append(fnid)
return dependees
def get_rdependees_str(self, item):
"""
Return a list of targets which depend on runtime item as a user readable string
"""
itemid = self.getrun_id(item)
dependees = []
for fnid in self.rdepids:
if itemid in self.rdepids[fnid]:
dependees.append(self.fn_index[fnid])
return dependees
def add_provider(self, cfgData, dataCache, item):
try:
self.add_provider_internal(cfgData, dataCache, item)
except bb.providers.NoProvider:
if self.abort:
if self.get_rdependees_str(item):
bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item)))
else:
bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (item))
raise
targetid = self.getbuild_id(item)
self.remove_buildtarget(targetid)
self.mark_external_target(item)
def add_provider_internal(self, cfgData, dataCache, item):
"""
Add the providers of item to the task data
Mark entries were specifically added externally as against dependencies
added internally during dependency resolution
"""
if item in dataCache.ignored_dependencies:
return
if not item in dataCache.providers:
if self.get_rdependees_str(item):
bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item)))
else:
bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (item))
bb.event.fire(bb.event.NoProvider(item, cfgData))
raise bb.providers.NoProvider(item)
if self.have_build_target(item):
return
all_p = dataCache.providers[item]
eligible, foundUnique = bb.providers.filterProviders(all_p, item, cfgData, dataCache)
eligible = [p for p in eligible if not self.getfn_id(p) in self.failed_fnids]
if not eligible:
bb.msg.note(2, bb.msg.domain.Provider, "No buildable provider PROVIDES '%s' but '%s' DEPENDS on or otherwise requires it. Enable debugging and see earlier logs to find unbuildable providers." % (item, self.get_dependees_str(item)))
bb.event.fire(bb.event.NoProvider(item, cfgData))
raise bb.providers.NoProvider(item)
if len(eligible) > 1 and foundUnique == False:
if item not in self.consider_msgs_cache:
providers_list = []
for fn in eligible:
providers_list.append(dataCache.pkg_fn[fn])
bb.msg.note(1, bb.msg.domain.Provider, "multiple providers are available for %s (%s);" % (item, ", ".join(providers_list)))
bb.msg.note(1, bb.msg.domain.Provider, "consider defining PREFERRED_PROVIDER_%s" % item)
bb.event.fire(bb.event.MultipleProviders(item, providers_list, cfgData))
self.consider_msgs_cache.append(item)
for fn in eligible:
fnid = self.getfn_id(fn)
if fnid in self.failed_fnids:
continue
bb.msg.debug(2, bb.msg.domain.Provider, "adding %s to satisfy %s" % (fn, item))
self.add_build_target(fn, item)
self.add_tasks(fn, dataCache)
#item = dataCache.pkg_fn[fn]
def add_rprovider(self, cfgData, dataCache, item):
"""
Add the runtime providers of item to the task data
(takes item names from RDEPENDS/PACKAGES namespace)
"""
if item in dataCache.ignored_dependencies:
return
if self.have_runtime_target(item):
return
all_p = bb.providers.getRuntimeProviders(dataCache, item)
if not all_p:
bb.msg.error(bb.msg.domain.Provider, "'%s' RDEPENDS/RRECOMMENDS or otherwise requires the runtime entity '%s' but it wasn't found in any PACKAGE or RPROVIDES variables" % (self.get_rdependees_str(item), item))
bb.event.fire(bb.event.NoProvider(item, cfgData, runtime=True))
raise bb.providers.NoRProvider(item)
eligible, numberPreferred = bb.providers.filterProvidersRunTime(all_p, item, cfgData, dataCache)
eligible = [p for p in eligible if not self.getfn_id(p) in self.failed_fnids]
if not eligible:
bb.msg.error(bb.msg.domain.Provider, "'%s' RDEPENDS/RRECOMMENDS or otherwise requires the runtime entity '%s' but it wasn't found in any PACKAGE or RPROVIDES variables of any buildable targets.\nEnable debugging and see earlier logs to find unbuildable targets." % (self.get_rdependees_str(item), item))
bb.event.fire(bb.event.NoProvider(item, cfgData, runtime=True))
raise bb.providers.NoRProvider(item)
if len(eligible) > 1 and numberPreferred == 0:
if item not in self.consider_msgs_cache:
providers_list = []
for fn in eligible:
providers_list.append(dataCache.pkg_fn[fn])
bb.msg.note(2, bb.msg.domain.Provider, "multiple providers are available for runtime %s (%s);" % (item, ", ".join(providers_list)))
bb.msg.note(2, bb.msg.domain.Provider, "consider defining a PREFERRED_PROVIDER entry to match runtime %s" % item)
bb.event.fire(bb.event.MultipleProviders(item,providers_list, cfgData, runtime=True))
self.consider_msgs_cache.append(item)
if numberPreferred > 1:
if item not in self.consider_msgs_cache:
providers_list = []
for fn in eligible:
providers_list.append(dataCache.pkg_fn[fn])
bb.msg.note(2, bb.msg.domain.Provider, "multiple providers are available for runtime %s (top %s entries preferred) (%s);" % (item, numberPreferred, ", ".join(providers_list)))
bb.msg.note(2, bb.msg.domain.Provider, "consider defining only one PREFERRED_PROVIDER entry to match runtime %s" % item)
bb.event.fire(bb.event.MultipleProviders(item,providers_list, cfgData, runtime=True))
self.consider_msgs_cache.append(item)
# run through the list until we find one that we can build
for fn in eligible:
fnid = self.getfn_id(fn)
if fnid in self.failed_fnids:
continue
bb.msg.debug(2, bb.msg.domain.Provider, "adding '%s' to satisfy runtime '%s'" % (fn, item))
self.add_runtime_target(fn, item)
self.add_tasks(fn, dataCache)
def fail_fnid(self, fnid, missing_list = []):
"""
Mark a file as failed (unbuildable)
Remove any references from build and runtime provider lists
missing_list, A list of missing requirements for this target
"""
if fnid in self.failed_fnids:
return
bb.msg.debug(1, bb.msg.domain.Provider, "File '%s' is unbuildable, removing..." % self.fn_index[fnid])
self.failed_fnids.append(fnid)
for target in self.build_targets:
if fnid in self.build_targets[target]:
self.build_targets[target].remove(fnid)
if len(self.build_targets[target]) == 0:
self.remove_buildtarget(target, missing_list)
for target in self.run_targets:
if fnid in self.run_targets[target]:
self.run_targets[target].remove(fnid)
if len(self.run_targets[target]) == 0:
self.remove_runtarget(target, missing_list)
def remove_buildtarget(self, targetid, missing_list = []):
"""
Mark a build target as failed (unbuildable)
Trigger removal of any files that have this as a dependency
"""
if not missing_list:
missing_list = [self.build_names_index[targetid]]
else:
missing_list = [self.build_names_index[targetid]] + missing_list
bb.msg.note(2, bb.msg.domain.Provider, "Target '%s' is unbuildable, removing...\nMissing or unbuildable dependency chain was: %s" % (self.build_names_index[targetid], missing_list))
self.failed_deps.append(targetid)
dependees = self.get_dependees(targetid)
for fnid in dependees:
self.fail_fnid(fnid, missing_list)
for taskid in range(len(self.tasks_idepends)):
idepends = self.tasks_idepends[taskid]
for (idependid, idependtask) in idepends:
if idependid == targetid:
self.fail_fnid(self.tasks_fnid[taskid], missing_list)
if self.abort and targetid in self.external_targets:
bb.msg.error(bb.msg.domain.Provider, "Required build target '%s' has no buildable providers.\nMissing or unbuildable dependency chain was: %s" % (self.build_names_index[targetid], missing_list))
raise bb.providers.NoProvider
def remove_runtarget(self, targetid, missing_list = []):
"""
Mark a run target as failed (unbuildable)
Trigger removal of any files that have this as a dependency
"""
if not missing_list:
missing_list = [self.run_names_index[targetid]]
else:
missing_list = [self.run_names_index[targetid]] + missing_list
bb.msg.note(1, bb.msg.domain.Provider, "Runtime target '%s' is unbuildable, removing...\nMissing or unbuildable dependency chain was: %s" % (self.run_names_index[targetid], missing_list))
self.failed_rdeps.append(targetid)
dependees = self.get_rdependees(targetid)
for fnid in dependees:
self.fail_fnid(fnid, missing_list)
def add_unresolved(self, cfgData, dataCache):
"""
Resolve all unresolved build and runtime targets
"""
bb.msg.note(1, bb.msg.domain.TaskData, "Resolving any missing task queue dependencies")
while 1:
added = 0
for target in self.get_unresolved_build_targets(dataCache):
try:
self.add_provider_internal(cfgData, dataCache, target)
added = added + 1
except bb.providers.NoProvider:
targetid = self.getbuild_id(target)
if self.abort and targetid in self.external_targets:
if self.get_rdependees_str(target):
bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (target, self.get_dependees_str(target)))
else:
bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (target))
raise
self.remove_buildtarget(targetid)
for target in self.get_unresolved_run_targets(dataCache):
try:
self.add_rprovider(cfgData, dataCache, target)
added = added + 1
except bb.providers.NoRProvider:
self.remove_runtarget(self.getrun_id(target))
bb.msg.debug(1, bb.msg.domain.TaskData, "Resolved " + str(added) + " extra dependecies")
if added == 0:
break
# self.dump_data()
def dump_data(self):
"""
Dump some debug information on the internal data structures
"""
bb.msg.debug(3, bb.msg.domain.TaskData, "build_names:")
bb.msg.debug(3, bb.msg.domain.TaskData, ", ".join(self.build_names_index))
bb.msg.debug(3, bb.msg.domain.TaskData, "run_names:")
bb.msg.debug(3, bb.msg.domain.TaskData, ", ".join(self.run_names_index))
bb.msg.debug(3, bb.msg.domain.TaskData, "build_targets:")
for buildid in range(len(self.build_names_index)):
target = self.build_names_index[buildid]
targets = "None"
if buildid in self.build_targets:
targets = self.build_targets[buildid]
bb.msg.debug(3, bb.msg.domain.TaskData, " (%s)%s: %s" % (buildid, target, targets))
bb.msg.debug(3, bb.msg.domain.TaskData, "run_targets:")
for runid in range(len(self.run_names_index)):
target = self.run_names_index[runid]
targets = "None"
if runid in self.run_targets:
targets = self.run_targets[runid]
bb.msg.debug(3, bb.msg.domain.TaskData, " (%s)%s: %s" % (runid, target, targets))
bb.msg.debug(3, bb.msg.domain.TaskData, "tasks:")
for task in range(len(self.tasks_name)):
bb.msg.debug(3, bb.msg.domain.TaskData, " (%s)%s - %s: %s" % (
task,
self.fn_index[self.tasks_fnid[task]],
self.tasks_name[task],
self.tasks_tdepends[task]))
bb.msg.debug(3, bb.msg.domain.TaskData, "dependency ids (per fn):")
for fnid in self.depids:
bb.msg.debug(3, bb.msg.domain.TaskData, " %s %s: %s" % (fnid, self.fn_index[fnid], self.depids[fnid]))
bb.msg.debug(3, bb.msg.domain.TaskData, "runtime dependency ids (per fn):")
for fnid in self.rdepids:
bb.msg.debug(3, bb.msg.domain.TaskData, " %s %s: %s" % (fnid, self.fn_index[fnid], self.rdepids[fnid]))

View File

@@ -0,0 +1,18 @@
#
# BitBake UI Implementation
#
# Copyright (C) 2006-2007 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

View File

@@ -0,0 +1,18 @@
#
# BitBake UI Implementation
#
# Copyright (C) 2006-2007 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

View File

@@ -0,0 +1,457 @@
#
# BitBake Graphical GTK User Interface
#
# Copyright (C) 2008 Intel Corporation
#
# Authored by Rob Bradford <rob@linux.intel.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import gtk
import gobject
import threading
import os
import datetime
import time
class BuildConfiguration:
""" Represents a potential *or* historic *or* concrete build. It
encompasses all the things that we need to tell bitbake to do to make it
build what we want it to build.
It also stored the metadata URL and the set of possible machines (and the
distros / images / uris for these. Apart from the metdata URL these are
not serialised to file (since they may be transient). In some ways this
functionality might be shifted to the loader class."""
def __init__ (self):
self.metadata_url = None
# Tuple of (distros, image, urls)
self.machine_options = {}
self.machine = None
self.distro = None
self.image = None
self.urls = []
self.extra_urls = []
self.extra_pkgs = []
def get_machines_model (self):
model = gtk.ListStore (gobject.TYPE_STRING)
for machine in self.machine_options.keys():
model.append ([machine])
return model
def get_distro_and_images_models (self, machine):
distro_model = gtk.ListStore (gobject.TYPE_STRING)
for distro in self.machine_options[machine][0]:
distro_model.append ([distro])
image_model = gtk.ListStore (gobject.TYPE_STRING)
for image in self.machine_options[machine][1]:
image_model.append ([image])
return (distro_model, image_model)
def get_repos (self):
self.urls = self.machine_options[self.machine][2]
return self.urls
# It might be a lot lot better if we stored these in like, bitbake conf
# file format.
@staticmethod
def load_from_file (filename):
f = open (filename, "r")
conf = BuildConfiguration()
for line in f.readlines():
data = line.split (";")[1]
if (line.startswith ("metadata-url;")):
conf.metadata_url = data.strip()
continue
if (line.startswith ("url;")):
conf.urls += [data.strip()]
continue
if (line.startswith ("extra-url;")):
conf.extra_urls += [data.strip()]
continue
if (line.startswith ("machine;")):
conf.machine = data.strip()
continue
if (line.startswith ("distribution;")):
conf.distro = data.strip()
continue
if (line.startswith ("image;")):
conf.image = data.strip()
continue
f.close ()
return conf
# Serialise to a file. This is part of the build process and we use this
# to be able to repeat a given build (using the same set of parameters)
# but also so that we can include the details of the image / machine /
# distro in the build manager tree view.
def write_to_file (self, filename):
f = open (filename, "w")
lines = []
if (self.metadata_url):
lines += ["metadata-url;%s\n" % (self.metadata_url)]
for url in self.urls:
lines += ["url;%s\n" % (url)]
for url in self.extra_urls:
lines += ["extra-url;%s\n" % (url)]
if (self.machine):
lines += ["machine;%s\n" % (self.machine)]
if (self.distro):
lines += ["distribution;%s\n" % (self.distro)]
if (self.image):
lines += ["image;%s\n" % (self.image)]
f.writelines (lines)
f.close ()
class BuildResult(gobject.GObject):
""" Represents an historic build. Perhaps not successful. But it includes
things such as the files that are in the directory (the output from the
build) as well as a deserialised BuildConfiguration file that is stored in
".conf" in the directory for the build.
This is GObject so that it can be included in the TreeStore."""
(STATE_COMPLETE, STATE_FAILED, STATE_ONGOING) = \
(0, 1, 2)
def __init__ (self, parent, identifier):
gobject.GObject.__init__ (self)
self.date = None
self.files = []
self.status = None
self.identifier = identifier
self.path = os.path.join (parent, identifier)
# Extract the date, since the directory name is of the
# format build-<year><month><day>-<ordinal> we can easily
# pull it out.
# TODO: Better to stat a file?
(_ , date, revision) = identifier.split ("-")
print date
year = int (date[0:4])
month = int (date[4:6])
day = int (date[6:8])
self.date = datetime.date (year, month, day)
self.conf = None
# By default builds are STATE_FAILED unless we find a "complete" file
# in which case they are STATE_COMPLETE
self.state = BuildResult.STATE_FAILED
for file in os.listdir (self.path):
if (file.startswith (".conf")):
conffile = os.path.join (self.path, file)
self.conf = BuildConfiguration.load_from_file (conffile)
elif (file.startswith ("complete")):
self.state = BuildResult.STATE_COMPLETE
else:
self.add_file (file)
def add_file (self, file):
# Just add the file for now. Don't care about the type.
self.files += [(file, None)]
class BuildManagerModel (gtk.TreeStore):
""" Model for the BuildManagerTreeView. This derives from gtk.TreeStore
but it abstracts nicely what the columns mean and the setup of the columns
in the model. """
(COL_IDENT, COL_DESC, COL_MACHINE, COL_DISTRO, COL_BUILD_RESULT, COL_DATE, COL_STATE) = \
(0, 1, 2, 3, 4, 5, 6)
def __init__ (self):
gtk.TreeStore.__init__ (self,
gobject.TYPE_STRING,
gobject.TYPE_STRING,
gobject.TYPE_STRING,
gobject.TYPE_STRING,
gobject.TYPE_OBJECT,
gobject.TYPE_INT64,
gobject.TYPE_INT)
class BuildManager (gobject.GObject):
""" This class manages the historic builds that have been found in the
"results" directory but is also used for starting a new build."""
__gsignals__ = {
'population-finished' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
()),
'populate-error' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
())
}
def update_build_result (self, result, iter):
# Convert the date into something we can sort by.
date = long (time.mktime (result.date.timetuple()))
# Add a top level entry for the build
self.model.set (iter,
BuildManagerModel.COL_IDENT, result.identifier,
BuildManagerModel.COL_DESC, result.conf.image,
BuildManagerModel.COL_MACHINE, result.conf.machine,
BuildManagerModel.COL_DISTRO, result.conf.distro,
BuildManagerModel.COL_BUILD_RESULT, result,
BuildManagerModel.COL_DATE, date,
BuildManagerModel.COL_STATE, result.state)
# And then we use the files in the directory as the children for the
# top level iter.
for file in result.files:
self.model.append (iter, (None, file[0], None, None, None, date, -1))
# This function is called as an idle by the BuildManagerPopulaterThread
def add_build_result (self, result):
gtk.gdk.threads_enter()
self.known_builds += [result]
self.update_build_result (result, self.model.append (None))
gtk.gdk.threads_leave()
def notify_build_finished (self):
# This is a bit of a hack. If we have a running build running then we
# will have a row in the model in STATE_ONGOING. Find it and make it
# as if it was a proper historic build (well, it is completed now....)
# We need to use the iters here rather than the Python iterator
# interface to the model since we need to pass it into
# update_build_result
iter = self.model.get_iter_first()
while (iter):
(ident, state) = self.model.get(iter,
BuildManagerModel.COL_IDENT,
BuildManagerModel.COL_STATE)
if state == BuildResult.STATE_ONGOING:
result = BuildResult (self.results_directory, ident)
self.update_build_result (result, iter)
iter = self.model.iter_next(iter)
def notify_build_succeeded (self):
# Write the "complete" file so that when we create the BuildResult
# object we put into the model
complete_file_path = os.path.join (self.cur_build_directory, "complete")
f = file (complete_file_path, "w")
f.close()
self.notify_build_finished()
def notify_build_failed (self):
# Without a "complete" file then this will mark the build as failed:
self.notify_build_finished()
# This function is called as an idle
def emit_population_finished_signal (self):
gtk.gdk.threads_enter()
self.emit ("population-finished")
gtk.gdk.threads_leave()
class BuildManagerPopulaterThread (threading.Thread):
def __init__ (self, manager, directory):
threading.Thread.__init__ (self)
self.manager = manager
self.directory = directory
def run (self):
# For each of the "build-<...>" directories ..
if os.path.exists (self.directory):
for directory in os.listdir (self.directory):
if not directory.startswith ("build-"):
continue
build_result = BuildResult (self.directory, directory)
self.manager.add_build_result (build_result)
gobject.idle_add (BuildManager.emit_population_finished_signal,
self.manager)
def __init__ (self, server, results_directory):
gobject.GObject.__init__ (self)
# The builds that we've found from walking the result directory
self.known_builds = []
# Save out the bitbake server, we need this for issuing commands to
# the cooker:
self.server = server
# The TreeStore that we use
self.model = BuildManagerModel ()
# The results directory is where we create (and look for) the
# build-<xyz>-<n> directories. We need to populate ourselves from
# directory
self.results_directory = results_directory
self.populate_from_directory (self.results_directory)
def populate_from_directory (self, directory):
thread = BuildManager.BuildManagerPopulaterThread (self, directory)
thread.start()
# Come up with the name for the next build ident by combining "build-"
# with the date formatted as yyyymmdd and then an ordinal. We do this by
# an optimistic algorithm incrementing the ordinal if we find that it
# already exists.
def get_next_build_ident (self):
today = datetime.date.today ()
datestr = str (today.year) + str (today.month) + str (today.day)
revision = 0
test_name = "build-%s-%d" % (datestr, revision)
test_path = os.path.join (self.results_directory, test_name)
while (os.path.exists (test_path)):
revision += 1
test_name = "build-%s-%d" % (datestr, revision)
test_path = os.path.join (self.results_directory, test_name)
return test_name
# Take a BuildConfiguration and then try and build it based on the
# parameters of that configuration. S
def do_build (self, conf):
server = self.server
# Work out the build directory. Note we actually create the
# directories here since we need to write the ".conf" file. Otherwise
# we could have relied on bitbake's builder thread to actually make
# the directories as it proceeds with the build.
ident = self.get_next_build_ident ()
build_directory = os.path.join (self.results_directory,
ident)
self.cur_build_directory = build_directory
os.makedirs (build_directory)
conffile = os.path.join (build_directory, ".conf")
conf.write_to_file (conffile)
# Add a row to the model representing this ongoing build. It's kinda a
# fake entry. If this build completes or fails then this gets updated
# with the real stuff like the historic builds
date = long (time.time())
self.model.append (None, (ident, conf.image, conf.machine, conf.distro,
None, date, BuildResult.STATE_ONGOING))
try:
server.runCommand(["setVariable", "BUILD_IMAGES_FROM_FEEDS", 1])
server.runCommand(["setVariable", "MACHINE", conf.machine])
server.runCommand(["setVariable", "DISTRO", conf.distro])
server.runCommand(["setVariable", "PACKAGE_CLASSES", "package_ipk"])
server.runCommand(["setVariable", "BBFILES", \
"""${OEROOT}/meta/packages/*/*.bb ${OEROOT}/meta-moblin/packages/*/*.bb"""])
server.runCommand(["setVariable", "TMPDIR", "${OEROOT}/build/tmp"])
server.runCommand(["setVariable", "IPK_FEED_URIS", \
" ".join(conf.get_repos())])
server.runCommand(["setVariable", "DEPLOY_DIR_IMAGE",
build_directory])
server.runCommand(["buildTargets", [conf.image], "rootfs"])
except Exception, e:
print e
class BuildManagerTreeView (gtk.TreeView):
""" The tree view for the build manager. This shows the historic builds
and so forth. """
# We use this function to control what goes in the cell since we store
# the date in the model as seconds since the epoch (for sorting) and so we
# need to make it human readable.
def date_format_custom_cell_data_func (self, col, cell, model, iter):
date = model.get (iter, BuildManagerModel.COL_DATE)[0]
datestr = time.strftime("%A %d %B %Y", time.localtime(date))
cell.set_property ("text", datestr)
# This format function controls what goes in the cell. We use this to map
# the integer state to a string and also to colourise the text
def state_format_custom_cell_data_fun (self, col, cell, model, iter):
state = model.get (iter, BuildManagerModel.COL_STATE)[0]
if (state == BuildResult.STATE_ONGOING):
cell.set_property ("text", "Active")
cell.set_property ("foreground", "#000000")
elif (state == BuildResult.STATE_FAILED):
cell.set_property ("text", "Failed")
cell.set_property ("foreground", "#ff0000")
elif (state == BuildResult.STATE_COMPLETE):
cell.set_property ("text", "Complete")
cell.set_property ("foreground", "#00ff00")
else:
cell.set_property ("text", "")
def __init__ (self):
gtk.TreeView.__init__(self)
# Misc descriptiony thing
renderer = gtk.CellRendererText ()
col = gtk.TreeViewColumn (None, renderer,
text=BuildManagerModel.COL_DESC)
self.append_column (col)
# Machine
renderer = gtk.CellRendererText ()
col = gtk.TreeViewColumn ("Machine", renderer,
text=BuildManagerModel.COL_MACHINE)
self.append_column (col)
# distro
renderer = gtk.CellRendererText ()
col = gtk.TreeViewColumn ("Distribution", renderer,
text=BuildManagerModel.COL_DISTRO)
self.append_column (col)
# date (using a custom function for formatting the cell contents it
# takes epoch -> human readable string)
renderer = gtk.CellRendererText ()
col = gtk.TreeViewColumn ("Date", renderer,
text=BuildManagerModel.COL_DATE)
self.append_column (col)
col.set_cell_data_func (renderer,
self.date_format_custom_cell_data_func)
# For status.
renderer = gtk.CellRendererText ()
col = gtk.TreeViewColumn ("Status", renderer,
text = BuildManagerModel.COL_STATE)
self.append_column (col)
col.set_cell_data_func (renderer,
self.state_format_custom_cell_data_fun)

View File

@@ -0,0 +1,606 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--Generated with glade3 3.4.5 on Mon Nov 10 12:24:12 2008 -->
<glade-interface>
<widget class="GtkDialog" id="build_dialog">
<property name="title" translatable="yes">Start a build</property>
<property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="has_separator">False</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox1">
<property name="visible">True</property>
<property name="spacing">2</property>
<child>
<widget class="GtkTable" id="build_table">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="n_rows">7</property>
<property name="n_columns">3</property>
<property name="column_spacing">5</property>
<property name="row_spacing">6</property>
<child>
<widget class="GtkAlignment" id="status_alignment">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
<widget class="GtkHBox" id="status_hbox">
<property name="spacing">6</property>
<child>
<widget class="GtkImage" id="status_image">
<property name="visible">True</property>
<property name="no_show_all">True</property>
<property name="xalign">0</property>
<property name="stock">gtk-dialog-error</property>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="status_label">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">If you see this text something is wrong...</property>
<property name="use_markup">True</property>
<property name="use_underline">True</property>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
</child>
</widget>
<packing>
<property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">&lt;b&gt;Build configuration&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="right_attach">3</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="image_combo">
<property name="visible">True</property>
<property name="sensitive">False</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">6</property>
<property name="bottom_attach">7</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="image_label">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="xalign">0</property>
<property name="xpad">12</property>
<property name="label" translatable="yes">Image:</property>
</widget>
<packing>
<property name="top_attach">6</property>
<property name="bottom_attach">7</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="distribution_combo">
<property name="visible">True</property>
<property name="sensitive">False</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="distribution_label">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="xalign">0</property>
<property name="xpad">12</property>
<property name="label" translatable="yes">Distribution:</property>
</widget>
<packing>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="machine_combo">
<property name="visible">True</property>
<property name="sensitive">False</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="machine_label">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="xalign">0</property>
<property name="xpad">12</property>
<property name="label" translatable="yes">Machine:</property>
</widget>
<packing>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkButton" id="refresh_button">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="label" translatable="yes">gtk-refresh</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="location_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="width_chars">32</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="xpad">12</property>
<property name="label" translatable="yes">Location:</property>
</widget>
<packing>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">&lt;b&gt;Repository&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="right_attach">3</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment2">
<property name="visible">True</property>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment3">
<property name="visible">True</property>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">6</property>
<property name="bottom_attach">7</property>
<property name="y_options"></property>
</packing>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="dialog-action_area1">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
</widget>
</child>
</widget>
<widget class="GtkDialog" id="dialog2">
<property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="has_separator">False</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox2">
<property name="visible">True</property>
<property name="spacing">2</property>
<child>
<widget class="GtkTable" id="table2">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="n_rows">7</property>
<property name="n_columns">3</property>
<property name="column_spacing">6</property>
<property name="row_spacing">6</property>
<child>
<widget class="GtkLabel" id="label7">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">&lt;b&gt;Repositories&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="right_attach">3</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment4">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="left_padding">12</property>
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<child>
<widget class="GtkTreeView" id="treeview1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="headers_clickable">True</property>
</widget>
</child>
</widget>
</child>
</widget>
<packing>
<property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="entry1">
<property name="visible">True</property>
<property name="can_focus">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label9">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">&lt;b&gt;Additional packages&lt;/b&gt;</property>
<property name="use_markup">True</property>
</widget>
<packing>
<property name="right_attach">3</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment6">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="xscale">0</property>
<child>
<widget class="GtkLabel" id="label8">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="xpad">12</property>
<property name="label" translatable="yes">Location: </property>
</widget>
</child>
</widget>
<packing>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment7">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="xscale">0</property>
<child>
<widget class="GtkHButtonBox" id="hbuttonbox1">
<property name="visible">True</property>
<property name="spacing">5</property>
<child>
<widget class="GtkButton" id="button7">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="label" translatable="yes">gtk-remove</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
</widget>
</child>
<child>
<widget class="GtkButton" id="button6">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="label" translatable="yes">gtk-edit</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="button5">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="label" translatable="yes">gtk-add</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
</widget>
<packing>
<property name="position">2</property>
</packing>
</child>
</widget>
</child>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">3</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment5">
<property name="visible">True</property>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label10">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="xpad">12</property>
<property name="label" translatable="yes">Search:</property>
</widget>
<packing>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="entry2">
<property name="visible">True</property>
<property name="can_focus">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">3</property>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment8">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="left_padding">12</property>
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<child>
<widget class="GtkTreeView" id="treeview2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="headers_clickable">True</property>
</widget>
</child>
</widget>
</child>
</widget>
<packing>
<property name="right_attach">3</property>
<property name="top_attach">6</property>
<property name="bottom_attach">7</property>
<property name="y_options"></property>
</packing>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="dialog-action_area2">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
<widget class="GtkButton" id="button4">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="label" translatable="yes">gtk-close</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
</widget>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
</widget>
</child>
</widget>
<widget class="GtkWindow" id="main_window">
<child>
<widget class="GtkVBox" id="main_window_vbox">
<property name="visible">True</property>
<child>
<widget class="GtkToolbar" id="main_toolbar">
<property name="visible">True</property>
<child>
<widget class="GtkToolButton" id="main_toolbutton_build">
<property name="visible">True</property>
<property name="label" translatable="yes">Build</property>
<property name="stock_id">gtk-execute</property>
</widget>
<packing>
<property name="expand">False</property>
</packing>
</child>
</widget>
<packing>
<property name="expand">False</property>
</packing>
</child>
<child>
<widget class="GtkVPaned" id="vpaned1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child>
<widget class="GtkScrolledWindow" id="results_scrolledwindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="resize">False</property>
<property name="shrink">True</property>
</packing>
</child>
<child>
<widget class="GtkScrolledWindow" id="progress_scrolledwindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="resize">True</property>
<property name="shrink">True</property>
</packing>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
</child>
</widget>
</glade-interface>

View File

@@ -0,0 +1,180 @@
#
# BitBake Graphical GTK User Interface
#
# Copyright (C) 2008 Intel Corporation
#
# Authored by Rob Bradford <rob@linux.intel.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import gtk
import gobject
class RunningBuildModel (gtk.TreeStore):
(COL_TYPE, COL_PACKAGE, COL_TASK, COL_MESSAGE, COL_ICON, COL_ACTIVE) = (0, 1, 2, 3, 4, 5)
def __init__ (self):
gtk.TreeStore.__init__ (self,
gobject.TYPE_STRING,
gobject.TYPE_STRING,
gobject.TYPE_STRING,
gobject.TYPE_STRING,
gobject.TYPE_STRING,
gobject.TYPE_BOOLEAN)
class RunningBuild (gobject.GObject):
__gsignals__ = {
'build-succeeded' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
()),
'build-failed' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
())
}
pids_to_task = {}
tasks_to_iter = {}
def __init__ (self):
gobject.GObject.__init__ (self)
self.model = RunningBuildModel()
def handle_event (self, event):
# Handle an event from the event queue, this may result in updating
# the model and thus the UI. Or it may be to tell us that the build
# has finished successfully (or not, as the case may be.)
parent = None
pid = 0
package = None
task = None
# If we have a pid attached to this message/event try and get the
# (package, task) pair for it. If we get that then get the parent iter
# for the message.
if event[1].has_key ('pid'):
pid = event[1]['pid']
if self.pids_to_task.has_key(pid):
(package, task) = self.pids_to_task[pid]
parent = self.tasks_to_iter[(package, task)]
if event[0].startswith('bb.msg.Msg'):
# Set a pretty icon for the message based on it's type.
if (event[0].startswith ('bb.msg.MsgWarn')):
icon = "dialog-warning"
elif (event[0].startswith ('bb.msg.MsgErr')):
icon = "dialog-error"
else:
icon = None
# Ignore the "Running task i of n .." messages
if (event[1]['_message'].startswith ("Running task")):
return
# Add the message to the tree either at the top level if parent is
# None otherwise as a descendent of a task.
self.model.append (parent,
(event[0].split()[-1], # e.g. MsgWarn, MsgError
package,
task,
event[1]['_message'],
icon,
False))
elif event[0].startswith('bb.build.TaskStarted'):
(package, task) = (event[1]['_package'], event[1]['_task'])
# Save out this PID.
self.pids_to_task[pid] = (package,task)
# Check if we already have this package in our model. If so then
# that can be the parent for the task. Otherwise we create a new
# top level for the package.
if (self.tasks_to_iter.has_key ((package, None))):
parent = self.tasks_to_iter[(package, None)]
else:
parent = self.model.append (None, (None,
package,
None,
"Package: %s" % (package),
None,
False))
self.tasks_to_iter[(package, None)] = parent
# Because this parent package now has an active child mark it as
# such.
self.model.set(parent, self.model.COL_ICON, "gtk-execute")
# Add an entry in the model for this task
i = self.model.append (parent, (None,
package,
task,
"Task: %s" % (task),
None,
False))
# Save out the iter so that we can find it when we have a message
# that we need to attach to a task.
self.tasks_to_iter[(package, task)] = i
# Mark this task as active.
self.model.set(i, self.model.COL_ICON, "gtk-execute")
elif event[0].startswith('bb.build.Task'):
if event[0].startswith('bb.build.TaskFailed'):
# Mark the task as failed
i = self.tasks_to_iter[(package, task)]
self.model.set(i, self.model.COL_ICON, "dialog-error")
# Mark the parent package as failed
i = self.tasks_to_iter[(package, None)]
self.model.set(i, self.model.COL_ICON, "dialog-error")
else:
# Mark the task as inactive
i = self.tasks_to_iter[(package, task)]
self.model.set(i, self.model.COL_ICON, None)
# Mark the parent package as inactive
i = self.tasks_to_iter[(package, None)]
self.model.set(i, self.model.COL_ICON, None)
# Clear the iters and the pids since when the task goes away the
# pid will no longer be used for messages
del self.tasks_to_iter[(package, task)]
del self.pids_to_task[pid]
elif event[0].startswith('bb.event.BuildCompleted'):
failures = int (event[1]['_failures'])
# Emit the appropriate signal depending on the number of failures
if (failures > 1):
self.emit ("build-failed")
else:
self.emit ("build-succeeded")
class RunningBuildTreeView (gtk.TreeView):
def __init__ (self):
gtk.TreeView.__init__ (self)
# The icon that indicates whether we're building or failed.
renderer = gtk.CellRendererPixbuf ()
col = gtk.TreeViewColumn ("Status", renderer)
col.add_attribute (renderer, "icon-name", 4)
self.append_column (col)
# The message of the build.
renderer = gtk.CellRendererText ()
col = gtk.TreeViewColumn ("Message", renderer, text=3)
self.append_column (col)

View File

@@ -0,0 +1,272 @@
#
# BitBake Graphical GTK based Dependency Explorer
#
# Copyright (C) 2007 Ross Burton
# Copyright (C) 2007 - 2008 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import gobject
import gtk
import threading
import xmlrpclib
# Package Model
(COL_PKG_NAME) = (0)
# Dependency Model
(TYPE_DEP, TYPE_RDEP) = (0, 1)
(COL_DEP_TYPE, COL_DEP_PARENT, COL_DEP_PACKAGE) = (0, 1, 2)
class PackageDepView(gtk.TreeView):
def __init__(self, model, dep_type, label):
gtk.TreeView.__init__(self)
self.current = None
self.dep_type = dep_type
self.filter_model = model.filter_new()
self.filter_model.set_visible_func(self._filter)
self.set_model(self.filter_model)
#self.connect("row-activated", self.on_package_activated, COL_DEP_PACKAGE)
self.append_column(gtk.TreeViewColumn(label, gtk.CellRendererText(), text=COL_DEP_PACKAGE))
def _filter(self, model, iter):
(this_type, package) = model.get(iter, COL_DEP_TYPE, COL_DEP_PARENT)
if this_type != self.dep_type: return False
return package == self.current
def set_current_package(self, package):
self.current = package
self.filter_model.refilter()
class PackageReverseDepView(gtk.TreeView):
def __init__(self, model, label):
gtk.TreeView.__init__(self)
self.current = None
self.filter_model = model.filter_new()
self.filter_model.set_visible_func(self._filter)
self.set_model(self.filter_model)
self.append_column(gtk.TreeViewColumn(label, gtk.CellRendererText(), text=COL_DEP_PARENT))
def _filter(self, model, iter):
package = model.get_value(iter, COL_DEP_PACKAGE)
return package == self.current
def set_current_package(self, package):
self.current = package
self.filter_model.refilter()
class DepExplorer(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
self.set_title("Dependency Explorer")
self.set_default_size(500, 500)
self.connect("delete-event", gtk.main_quit)
# Create the data models
self.pkg_model = gtk.ListStore(gobject.TYPE_STRING)
self.depends_model = gtk.ListStore(gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING)
pane = gtk.HPaned()
pane.set_position(250)
self.add(pane)
# The master list of packages
scrolled = gtk.ScrolledWindow()
scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
scrolled.set_shadow_type(gtk.SHADOW_IN)
self.pkg_treeview = gtk.TreeView(self.pkg_model)
self.pkg_treeview.get_selection().connect("changed", self.on_cursor_changed)
self.pkg_treeview.append_column(gtk.TreeViewColumn("Package", gtk.CellRendererText(), text=COL_PKG_NAME))
pane.add1(scrolled)
scrolled.add(self.pkg_treeview)
box = gtk.VBox(homogeneous=True, spacing=4)
# Runtime Depends
scrolled = gtk.ScrolledWindow()
scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
scrolled.set_shadow_type(gtk.SHADOW_IN)
self.rdep_treeview = PackageDepView(self.depends_model, TYPE_RDEP, "Runtime Depends")
self.rdep_treeview.connect("row-activated", self.on_package_activated, COL_DEP_PACKAGE)
scrolled.add(self.rdep_treeview)
box.add(scrolled)
# Build Depends
scrolled = gtk.ScrolledWindow()
scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
scrolled.set_shadow_type(gtk.SHADOW_IN)
self.dep_treeview = PackageDepView(self.depends_model, TYPE_DEP, "Build Depends")
self.dep_treeview.connect("row-activated", self.on_package_activated, COL_DEP_PACKAGE)
scrolled.add(self.dep_treeview)
box.add(scrolled)
pane.add2(box)
# Reverse Depends
scrolled = gtk.ScrolledWindow()
scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
scrolled.set_shadow_type(gtk.SHADOW_IN)
self.revdep_treeview = PackageReverseDepView(self.depends_model, "Reverse Depends")
self.revdep_treeview.connect("row-activated", self.on_package_activated, COL_DEP_PARENT)
scrolled.add(self.revdep_treeview)
box.add(scrolled)
pane.add2(box)
self.show_all()
def on_package_activated(self, treeview, path, column, data_col):
model = treeview.get_model()
package = model.get_value(model.get_iter(path), data_col)
pkg_path = []
def finder(model, path, iter, needle):
package = model.get_value(iter, COL_PKG_NAME)
if package == needle:
pkg_path.append(path)
return True
else:
return False
self.pkg_model.foreach(finder, package)
if pkg_path:
self.pkg_treeview.get_selection().select_path(pkg_path[0])
self.pkg_treeview.scroll_to_cell(pkg_path[0])
def on_cursor_changed(self, selection):
(model, it) = selection.get_selected()
if iter is None:
current_package = None
else:
current_package = model.get_value(it, COL_PKG_NAME)
self.rdep_treeview.set_current_package(current_package)
self.dep_treeview.set_current_package(current_package)
self.revdep_treeview.set_current_package(current_package)
def parse(depgraph, pkg_model, depends_model):
for package in depgraph["pn"]:
pkg_model.set(pkg_model.append(), COL_PKG_NAME, package)
for package in depgraph["depends"]:
for depend in depgraph["depends"][package]:
depends_model.set (depends_model.append(),
COL_DEP_TYPE, TYPE_DEP,
COL_DEP_PARENT, package,
COL_DEP_PACKAGE, depend)
for package in depgraph["rdepends-pn"]:
for rdepend in depgraph["rdepends-pn"][package]:
depends_model.set (depends_model.append(),
COL_DEP_TYPE, TYPE_RDEP,
COL_DEP_PARENT, package,
COL_DEP_PACKAGE, rdepend)
class ProgressBar(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
self.set_title("Parsing .bb files, please wait...")
self.set_default_size(500, 0)
self.connect("delete-event", gtk.main_quit)
self.progress = gtk.ProgressBar()
self.add(self.progress)
self.show_all()
class gtkthread(threading.Thread):
quit = threading.Event()
def __init__(self, shutdown):
threading.Thread.__init__(self)
self.setDaemon(True)
self.shutdown = shutdown
def run(self):
gobject.threads_init()
gtk.gdk.threads_init()
gtk.main()
gtkthread.quit.set()
def init(server, eventHandler):
try:
cmdline = server.runCommand(["getCmdLineAction"])
if not cmdline or cmdline[0] != "generateDotGraph":
print "This UI is only compatible with the -g option"
return
ret = server.runCommand(["generateDepTreeEvent", cmdline[1], cmdline[2]])
if ret != True:
print "Couldn't run command! %s" % ret
return
except xmlrpclib.Fault, x:
print "XMLRPC Fault getting commandline:\n %s" % x
return
shutdown = 0
gtkgui = gtkthread(shutdown)
gtkgui.start()
gtk.gdk.threads_enter()
pbar = ProgressBar()
dep = DepExplorer()
gtk.gdk.threads_leave()
while True:
try:
event = eventHandler.waitEvent(0.25)
if gtkthread.quit.isSet():
break
if event is None:
continue
if event[0].startswith('bb.event.ParseProgress'):
x = event[1]['sofar']
y = event[1]['total']
if x == y:
print("\nParsing finished. %d cached, %d parsed, %d skipped, %d masked, %d errors."
% ( event[1]['cached'], event[1]['parsed'], event[1]['skipped'], event[1]['masked'], event[1]['errors']))
pbar.hide()
gtk.gdk.threads_enter()
pbar.progress.set_fraction(float(x)/float(y))
pbar.progress.set_text("%d/%d (%2d %%)" % (x, y, x*100/y))
gtk.gdk.threads_leave()
continue
if event[0] == "bb.event.DepTreeGenerated":
gtk.gdk.threads_enter()
parse(event[1]['_depgraph'], dep.pkg_model, dep.depends_model)
gtk.gdk.threads_leave()
if event[0] == 'bb.command.CookerCommandCompleted':
continue
if event[0] == 'bb.command.CookerCommandFailed':
print "Command execution failed: %s" % event[1]['error']
break
if event[0] == 'bb.cooker.CookerExit':
break
continue
except KeyboardInterrupt:
if shutdown == 2:
print "\nThird Keyboard Interrupt, exit.\n"
break
if shutdown == 1:
print "\nSecond Keyboard Interrupt, stopping...\n"
server.runCommand(["stateStop"])
if shutdown == 0:
print "\nKeyboard Interrupt, closing down...\n"
server.runCommand(["stateShutdown"])
shutdown = shutdown + 1
pass

View File

@@ -0,0 +1,77 @@
#
# BitBake Graphical GTK User Interface
#
# Copyright (C) 2008 Intel Corporation
#
# Authored by Rob Bradford <rob@linux.intel.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import gobject
import gtk
import xmlrpclib
from bb.ui.crumbs.runningbuild import RunningBuildTreeView, RunningBuild
def event_handle_idle_func (eventHandler, build):
# Consume as many messages as we can in the time available to us
event = eventHandler.getEvent()
while event:
build.handle_event (event)
event = eventHandler.getEvent()
return True
class MainWindow (gtk.Window):
def __init__ (self):
gtk.Window.__init__ (self, gtk.WINDOW_TOPLEVEL)
# Setup tree view and the scrolled window
scrolled_window = gtk.ScrolledWindow ()
self.add (scrolled_window)
self.cur_build_tv = RunningBuildTreeView()
scrolled_window.add (self.cur_build_tv)
def init (server, eventHandler):
gobject.threads_init()
gtk.gdk.threads_init()
window = MainWindow ()
window.show_all ()
# Create the object for the current build
running_build = RunningBuild ()
window.cur_build_tv.set_model (running_build.model)
try:
cmdline = server.runCommand(["getCmdLineAction"])
print cmdline
if not cmdline:
return 1
ret = server.runCommand(cmdline)
if ret != True:
print "Couldn't get default commandline! %s" % ret
return 1
except xmlrpclib.Fault, x:
print "XMLRPC Fault getting commandline:\n %s" % x
return 1
# Use a timeout function for probing the event queue to find out if we
# have a message waiting for us.
gobject.timeout_add (200,
event_handle_idle_func,
eventHandler,
running_build)
gtk.main()

View File

@@ -0,0 +1,162 @@
#
# BitBake (No)TTY UI Implementation
#
# Handling output to TTYs or files (no TTY)
#
# Copyright (C) 2006-2007 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import os
import sys
import itertools
import xmlrpclib
parsespin = itertools.cycle( r'|/-\\' )
def init(server, eventHandler):
# Get values of variables which control our output
includelogs = server.runCommand(["getVariable", "BBINCLUDELOGS"])
loglines = server.runCommand(["getVariable", "BBINCLUDELOGS_LINES"])
try:
cmdline = server.runCommand(["getCmdLineAction"])
#print cmdline
if not cmdline:
return 1
ret = server.runCommand(cmdline)
if ret != True:
print "Couldn't get default commandline! %s" % ret
return 1
except xmlrpclib.Fault, x:
print "XMLRPC Fault getting commandline:\n %s" % x
return 1
shutdown = 0
return_value = 0
while True:
try:
event = eventHandler.waitEvent(0.25)
if event is None:
continue
#print event
if event[0].startswith('bb.msg.MsgPlain'):
print event[1]['_message']
continue
if event[0].startswith('bb.msg.MsgDebug'):
print 'DEBUG: ' + event[1]['_message']
continue
if event[0].startswith('bb.msg.MsgNote'):
print 'NOTE: ' + event[1]['_message']
continue
if event[0].startswith('bb.msg.MsgWarn'):
print 'WARNING: ' + event[1]['_message']
continue
if event[0].startswith('bb.msg.MsgError'):
return_value = 1
print 'ERROR: ' + event[1]['_message']
continue
if event[0].startswith('bb.msg.MsgFatal'):
return_value = 1
print 'FATAL: ' + event[1]['_message']
break
if event[0].startswith('bb.build.TaskFailed'):
return_value = 1
logfile = event[1]['logfile']
if logfile:
print "ERROR: Logfile of failure stored in %s." % logfile
if 1 or includelogs:
print "Log data follows:"
f = open(logfile, "r")
lines = []
while True:
l = f.readline()
if l == '':
break
l = l.rstrip()
if loglines:
lines.append(' | %s' % l)
if len(lines) > int(loglines):
lines.pop(0)
else:
print '| %s' % l
f.close()
if lines:
for line in lines:
print line
if event[0].startswith('bb.build.Task'):
print "NOTE: %s" % event[1]['_message']
continue
if event[0].startswith('bb.event.ParseProgress'):
x = event[1]['sofar']
y = event[1]['total']
if os.isatty(sys.stdout.fileno()):
sys.stdout.write("\rNOTE: Handling BitBake files: %s (%04d/%04d) [%2d %%]" % ( parsespin.next(), x, y, x*100/y ) )
sys.stdout.flush()
else:
if x == 1:
sys.stdout.write("Parsing .bb files, please wait...")
sys.stdout.flush()
if x == y:
sys.stdout.write("done.")
sys.stdout.flush()
if x == y:
print("\nParsing finished. %d cached, %d parsed, %d skipped, %d masked, %d errors."
% ( event[1]['cached'], event[1]['parsed'], event[1]['skipped'], event[1]['masked'], event[1]['errors']))
continue
if event[0] == 'bb.command.CookerCommandCompleted':
break
if event[0] == 'bb.command.CookerCommandSetExitCode':
return_value = event[1]['exitcode']
continue
if event[0] == 'bb.command.CookerCommandFailed':
return_value = 1
print "Command execution failed: %s" % event[1]['error']
break
if event[0] == 'bb.cooker.CookerExit':
break
# ignore
if event[0].startswith('bb.event.BuildStarted'):
continue
if event[0].startswith('bb.event.BuildCompleted'):
continue
if event[0].startswith('bb.event.MultipleProviders'):
continue
if event[0].startswith('bb.runqueue.runQueue'):
continue
if event[0].startswith('bb.event.StampUpdate'):
continue
if event[0].startswith('bb.event.ConfigParsed'):
continue
if event[0].startswith('bb.event.RecipeParsed'):
continue
print "Unknown Event: %s" % event
except KeyboardInterrupt:
if shutdown == 2:
print "\nThird Keyboard Interrupt, exit.\n"
break
if shutdown == 1:
print "\nSecond Keyboard Interrupt, stopping...\n"
server.runCommand(["stateStop"])
if shutdown == 0:
print "\nKeyboard Interrupt, closing down...\n"
server.runCommand(["stateShutdown"])
shutdown = shutdown + 1
pass
return return_value

View File

@@ -0,0 +1,335 @@
#
# BitBake Curses UI Implementation
#
# Implements an ncurses frontend for the BitBake utility.
#
# Copyright (C) 2006 Michael 'Mickey' Lauer
# Copyright (C) 2006-2007 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
"""
We have the following windows:
1.) Main Window: Shows what we are ultimately building and how far we are. Includes status bar
2.) Thread Activity Window: Shows one status line for every concurrent bitbake thread.
3.) Command Line Window: Contains an interactive command line where you can interact w/ Bitbake.
Basic window layout is like that:
|---------------------------------------------------------|
| <Main Window> | <Thread Activity Window> |
| | 0: foo do_compile complete|
| Building Gtk+-2.6.10 | 1: bar do_patch complete |
| Status: 60% | ... |
| | ... |
| | ... |
|---------------------------------------------------------|
|<Command Line Window> |
|>>> which virtual/kernel |
|openzaurus-kernel |
|>>> _ |
|---------------------------------------------------------|
"""
import os, sys, curses, itertools, time
import bb
import xmlrpclib
from bb import ui
from bb.ui import uihelper
parsespin = itertools.cycle( r'|/-\\' )
X = 0
Y = 1
WIDTH = 2
HEIGHT = 3
MAXSTATUSLENGTH = 32
class NCursesUI:
"""
NCurses UI Class
"""
class Window:
"""Base Window Class"""
def __init__( self, x, y, width, height, fg=curses.COLOR_BLACK, bg=curses.COLOR_WHITE ):
self.win = curses.newwin( height, width, y, x )
self.dimensions = ( x, y, width, height )
"""
if curses.has_colors():
color = 1
curses.init_pair( color, fg, bg )
self.win.bkgdset( ord(' '), curses.color_pair(color) )
else:
self.win.bkgdset( ord(' '), curses.A_BOLD )
"""
self.erase()
self.setScrolling()
self.win.noutrefresh()
def erase( self ):
self.win.erase()
def setScrolling( self, b = True ):
self.win.scrollok( b )
self.win.idlok( b )
def setBoxed( self ):
self.boxed = True
self.win.box()
self.win.noutrefresh()
def setText( self, x, y, text, *args ):
self.win.addstr( y, x, text, *args )
self.win.noutrefresh()
def appendText( self, text, *args ):
self.win.addstr( text, *args )
self.win.noutrefresh()
def drawHline( self, y ):
self.win.hline( y, 0, curses.ACS_HLINE, self.dimensions[WIDTH] )
self.win.noutrefresh()
class DecoratedWindow( Window ):
"""Base class for windows with a box and a title bar"""
def __init__( self, title, x, y, width, height, fg=curses.COLOR_BLACK, bg=curses.COLOR_WHITE ):
NCursesUI.Window.__init__( self, x+1, y+3, width-2, height-4, fg, bg )
self.decoration = NCursesUI.Window( x, y, width, height, fg, bg )
self.decoration.setBoxed()
self.decoration.win.hline( 2, 1, curses.ACS_HLINE, width-2 )
self.setTitle( title )
def setTitle( self, title ):
self.decoration.setText( 1, 1, title.center( self.dimensions[WIDTH]-2 ), curses.A_BOLD )
#-------------------------------------------------------------------------#
# class TitleWindow( Window ):
#-------------------------------------------------------------------------#
# """Title Window"""
# def __init__( self, x, y, width, height ):
# NCursesUI.Window.__init__( self, x, y, width, height )
# version = bb.__version__
# title = "BitBake %s" % version
# credit = "(C) 2003-2007 Team BitBake"
# #self.win.hline( 2, 1, curses.ACS_HLINE, width-2 )
# self.win.border()
# self.setText( 1, 1, title.center( self.dimensions[WIDTH]-2 ), curses.A_BOLD )
# self.setText( 1, 2, credit.center( self.dimensions[WIDTH]-2 ), curses.A_BOLD )
#-------------------------------------------------------------------------#
class ThreadActivityWindow( DecoratedWindow ):
#-------------------------------------------------------------------------#
"""Thread Activity Window"""
def __init__( self, x, y, width, height ):
NCursesUI.DecoratedWindow.__init__( self, "Thread Activity", x, y, width, height )
def setStatus( self, thread, text ):
line = "%02d: %s" % ( thread, text )
width = self.dimensions[WIDTH]
if ( len(line) > width ):
line = line[:width-3] + "..."
else:
line = line.ljust( width )
self.setText( 0, thread, line )
#-------------------------------------------------------------------------#
class MainWindow( DecoratedWindow ):
#-------------------------------------------------------------------------#
"""Main Window"""
def __init__( self, x, y, width, height ):
self.StatusPosition = width - MAXSTATUSLENGTH
NCursesUI.DecoratedWindow.__init__( self, None, x, y, width, height )
curses.nl()
def setTitle( self, title ):
title = "BitBake %s" % bb.__version__
self.decoration.setText( 2, 1, title, curses.A_BOLD )
self.decoration.setText( self.StatusPosition - 8, 1, "Status:", curses.A_BOLD )
def setStatus(self, status):
while len(status) < MAXSTATUSLENGTH:
status = status + " "
self.decoration.setText( self.StatusPosition, 1, status, curses.A_BOLD )
#-------------------------------------------------------------------------#
class ShellOutputWindow( DecoratedWindow ):
#-------------------------------------------------------------------------#
"""Interactive Command Line Output"""
def __init__( self, x, y, width, height ):
NCursesUI.DecoratedWindow.__init__( self, "Command Line Window", x, y, width, height )
#-------------------------------------------------------------------------#
class ShellInputWindow( Window ):
#-------------------------------------------------------------------------#
"""Interactive Command Line Input"""
def __init__( self, x, y, width, height ):
NCursesUI.Window.__init__( self, x, y, width, height )
# put that to the top again from curses.textpad import Textbox
# self.textbox = Textbox( self.win )
# t = threading.Thread()
# t.run = self.textbox.edit
# t.start()
#-------------------------------------------------------------------------#
def main(self, stdscr, server, eventHandler):
#-------------------------------------------------------------------------#
height, width = stdscr.getmaxyx()
# for now split it like that:
# MAIN_y + THREAD_y = 2/3 screen at the top
# MAIN_x = 2/3 left, THREAD_y = 1/3 right
# CLI_y = 1/3 of screen at the bottom
# CLI_x = full
main_left = 0
main_top = 0
main_height = ( height / 3 * 2 )
main_width = ( width / 3 ) * 2
clo_left = main_left
clo_top = main_top + main_height
clo_height = height - main_height - main_top - 1
clo_width = width
cli_left = main_left
cli_top = clo_top + clo_height
cli_height = 1
cli_width = width
thread_left = main_left + main_width
thread_top = main_top
thread_height = main_height
thread_width = width - main_width
#tw = self.TitleWindow( 0, 0, width, main_top )
mw = self.MainWindow( main_left, main_top, main_width, main_height )
taw = self.ThreadActivityWindow( thread_left, thread_top, thread_width, thread_height )
clo = self.ShellOutputWindow( clo_left, clo_top, clo_width, clo_height )
cli = self.ShellInputWindow( cli_left, cli_top, cli_width, cli_height )
cli.setText( 0, 0, "BB>" )
mw.setStatus("Idle")
helper = uihelper.BBUIHelper()
shutdown = 0
try:
cmdline = server.runCommand(["getCmdLineAction"])
if not cmdline:
return
ret = server.runCommand(cmdline)
if ret != True:
print "Couldn't get default commandlind! %s" % ret
return
except xmlrpclib.Fault, x:
print "XMLRPC Fault getting commandline:\n %s" % x
return
exitflag = False
while not exitflag:
try:
event = eventHandler.waitEvent(0.25)
if not event:
continue
helper.eventHandler(event)
#mw.appendText("%s\n" % event[0])
if event[0].startswith('bb.build.Task'):
mw.appendText("NOTE: %s\n" % event[1]['_message'])
if event[0].startswith('bb.msg.MsgDebug'):
mw.appendText('DEBUG: ' + event[1]['_message'] + '\n')
if event[0].startswith('bb.msg.MsgNote'):
mw.appendText('NOTE: ' + event[1]['_message'] + '\n')
if event[0].startswith('bb.msg.MsgWarn'):
mw.appendText('WARNING: ' + event[1]['_message'] + '\n')
if event[0].startswith('bb.msg.MsgError'):
mw.appendText('ERROR: ' + event[1]['_message'] + '\n')
if event[0].startswith('bb.msg.MsgFatal'):
mw.appendText('FATAL: ' + event[1]['_message'] + '\n')
if event[0].startswith('bb.event.ParseProgress'):
x = event[1]['sofar']
y = event[1]['total']
if x == y:
mw.setStatus("Idle")
mw.appendText("Parsing finished. %d cached, %d parsed, %d skipped, %d masked."
% ( event[1]['cached'], event[1]['parsed'], event[1]['skipped'], event[1]['masked'] ))
else:
mw.setStatus("Parsing: %s (%04d/%04d) [%2d %%]" % ( parsespin.next(), x, y, x*100/y ) )
# if event[0].startswith('bb.build.TaskFailed'):
# if event[1]['logfile']:
# if data.getVar("BBINCLUDELOGS", d):
# bb.msg.error(bb.msg.domain.Build, "log data follows (%s)" % logfile)
# number_of_lines = data.getVar("BBINCLUDELOGS_LINES", d)
# if number_of_lines:
# os.system('tail -n%s %s' % (number_of_lines, logfile))
# else:
# f = open(logfile, "r")
# while True:
# l = f.readline()
# if l == '':
# break
# l = l.rstrip()
# print '| %s' % l
# f.close()
# else:
# bb.msg.error(bb.msg.domain.Build, "see log in %s" % logfile)
if event[0] == 'bb.command.CookerCommandCompleted':
exitflag = True
if event[0] == 'bb.command.CookerCommandFailed':
mw.appendText("Command execution failed: %s" % event[1]['error'])
time.sleep(2)
exitflag = True
if event[0] == 'bb.cooker.CookerExit':
exitflag = True
if helper.needUpdate:
activetasks, failedtasks = helper.getTasks()
taw.erase()
taw.setText(0, 0, "")
if activetasks:
taw.appendText("Active Tasks:\n")
for task in activetasks:
taw.appendText(task)
if failedtasks:
taw.appendText("Failed Tasks:\n")
for task in failedtasks:
taw.appendText(task)
curses.doupdate()
except KeyboardInterrupt:
if shutdown == 2:
mw.appendText("Third Keyboard Interrupt, exit.\n")
exitflag = True
if shutdown == 1:
mw.appendText("Second Keyboard Interrupt, stopping...\n")
server.runCommand(["stateStop"])
if shutdown == 0:
mw.appendText("Keyboard Interrupt, closing down...\n")
server.runCommand(["stateShutdown"])
shutdown = shutdown + 1
pass
def init(server, eventHandler):
if not os.isatty(sys.stdout.fileno()):
print "FATAL: Unable to run 'ncurses' UI without a TTY."
return
ui = NCursesUI()
try:
curses.wrapper(ui.main, server, eventHandler)
except:
import traceback
traceback.print_exc()

View File

@@ -0,0 +1,425 @@
#
# BitBake Graphical GTK User Interface
#
# Copyright (C) 2008 Intel Corporation
#
# Authored by Rob Bradford <rob@linux.intel.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import gtk
import gobject
import gtk.glade
import threading
import urllib2
import os
from bb.ui.crumbs.buildmanager import BuildManager, BuildConfiguration
from bb.ui.crumbs.buildmanager import BuildManagerTreeView
from bb.ui.crumbs.runningbuild import RunningBuild, RunningBuildTreeView
# The metadata loader is used by the BuildSetupDialog to download the
# available options to populate the dialog
class MetaDataLoader(gobject.GObject):
""" This class provides the mechanism for loading the metadata (the
fetching and parsing) from a given URL. The metadata encompasses details
on what machines are available. The distribution and images available for
the machine and the the uris to use for building the given machine."""
__gsignals__ = {
'success' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
()),
'error' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
(gobject.TYPE_STRING,))
}
# We use these little helper functions to ensure that we take the gdk lock
# when emitting the signal. These functions are called as idles (so that
# they happen in the gtk / main thread's main loop.
def emit_error_signal (self, remark):
gtk.gdk.threads_enter()
self.emit ("error", remark)
gtk.gdk.threads_leave()
def emit_success_signal (self):
gtk.gdk.threads_enter()
self.emit ("success")
gtk.gdk.threads_leave()
def __init__ (self):
gobject.GObject.__init__ (self)
class LoaderThread(threading.Thread):
""" This class provides an asynchronous loader for the metadata (by
using threads and signals). This is useful since the metadata may be
at a remote URL."""
class LoaderImportException (Exception):
pass
def __init__(self, loader, url):
threading.Thread.__init__ (self)
self.url = url
self.loader = loader
def run (self):
result = {}
try:
f = urllib2.urlopen (self.url)
# Parse the metadata format. The format is....
# <machine>;<default distro>|<distro>...;<default image>|<image>...;<type##url>|...
for line in f.readlines():
components = line.split(";")
if (len (components) < 4):
raise MetaDataLoader.LoaderThread.LoaderImportException
machine = components[0]
distros = components[1].split("|")
images = components[2].split("|")
urls = components[3].split("|")
result[machine] = (distros, images, urls)
# Create an object representing this *potential*
# configuration. It can become concrete if the machine, distro
# and image are all chosen in the UI
configuration = BuildConfiguration()
configuration.metadata_url = self.url
configuration.machine_options = result
self.loader.configuration = configuration
# Emit that we've actually got a configuration
gobject.idle_add (MetaDataLoader.emit_success_signal,
self.loader)
except MetaDataLoader.LoaderThread.LoaderImportException, e:
gobject.idle_add (MetaDataLoader.emit_error_signal, self.loader,
"Repository metadata corrupt")
except Exception, e:
gobject.idle_add (MetaDataLoader.emit_error_signal, self.loader,
"Unable to download repository metadata")
print e
def try_fetch_from_url (self, url):
# Try and download the metadata. Firing a signal if successful
thread = MetaDataLoader.LoaderThread(self, url)
thread.start()
class BuildSetupDialog (gtk.Dialog):
RESPONSE_BUILD = 1
# A little helper method that just sets the states on the widgets based on
# whether we've got good metadata or not.
def set_configurable (self, configurable):
if (self.configurable == configurable):
return
self.configurable = configurable
for widget in self.conf_widgets:
widget.set_sensitive (configurable)
if not configurable:
self.machine_combo.set_active (-1)
self.distribution_combo.set_active (-1)
self.image_combo.set_active (-1)
# GTK widget callbacks
def refresh_button_clicked (self, button):
# Refresh button clicked.
url = self.location_entry.get_chars (0, -1)
self.loader.try_fetch_from_url(url)
def repository_entry_editable_changed (self, entry):
if (len (entry.get_chars (0, -1)) > 0):
self.refresh_button.set_sensitive (True)
else:
self.refresh_button.set_sensitive (False)
self.clear_status_message()
# If we were previously configurable we are no longer since the
# location entry has been changed
self.set_configurable (False)
def machine_combo_changed (self, combobox):
active_iter = combobox.get_active_iter()
if not active_iter:
return
model = combobox.get_model()
if model:
chosen_machine = model.get (active_iter, 0)[0]
(distros_model, images_model) = \
self.loader.configuration.get_distro_and_images_models (chosen_machine)
self.distribution_combo.set_model (distros_model)
self.image_combo.set_model (images_model)
# Callbacks from the loader
def loader_success_cb (self, loader):
self.status_image.set_from_icon_name ("info",
gtk.ICON_SIZE_BUTTON)
self.status_image.show()
self.status_label.set_label ("Repository metadata successfully downloaded")
# Set the models on the combo boxes based on the models generated from
# the configuration that the loader has created
# We just need to set the machine here, that then determines the
# distro and image options. Cunning huh? :-)
self.configuration = self.loader.configuration
model = self.configuration.get_machines_model ()
self.machine_combo.set_model (model)
self.set_configurable (True)
def loader_error_cb (self, loader, message):
self.status_image.set_from_icon_name ("error",
gtk.ICON_SIZE_BUTTON)
self.status_image.show()
self.status_label.set_text ("Error downloading repository metadata")
for widget in self.conf_widgets:
widget.set_sensitive (False)
def clear_status_message (self):
self.status_image.hide()
self.status_label.set_label (
"""<i>Enter the repository location and press _Refresh</i>""")
def __init__ (self):
gtk.Dialog.__init__ (self)
# Cancel
self.add_button (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
# Build
button = gtk.Button ("_Build", None, True)
image = gtk.Image ()
image.set_from_stock (gtk.STOCK_EXECUTE,gtk.ICON_SIZE_BUTTON)
button.set_image (image)
self.add_action_widget (button, BuildSetupDialog.RESPONSE_BUILD)
button.show_all ()
# Pull in *just* the table from the Glade XML data.
gxml = gtk.glade.XML (os.path.dirname(__file__) + "/crumbs/puccho.glade",
root = "build_table")
table = gxml.get_widget ("build_table")
self.vbox.pack_start (table, True, False, 0)
# Grab all the widgets that we need to turn on/off when we refresh...
self.conf_widgets = []
self.conf_widgets += [gxml.get_widget ("machine_label")]
self.conf_widgets += [gxml.get_widget ("distribution_label")]
self.conf_widgets += [gxml.get_widget ("image_label")]
self.conf_widgets += [gxml.get_widget ("machine_combo")]
self.conf_widgets += [gxml.get_widget ("distribution_combo")]
self.conf_widgets += [gxml.get_widget ("image_combo")]
# Grab the status widgets
self.status_image = gxml.get_widget ("status_image")
self.status_label = gxml.get_widget ("status_label")
# Grab the refresh button and connect to the clicked signal
self.refresh_button = gxml.get_widget ("refresh_button")
self.refresh_button.connect ("clicked", self.refresh_button_clicked)
# Grab the location entry and connect to editable::changed
self.location_entry = gxml.get_widget ("location_entry")
self.location_entry.connect ("changed",
self.repository_entry_editable_changed)
# Grab the machine combo and hook onto the changed signal. This then
# allows us to populate the distro and image combos
self.machine_combo = gxml.get_widget ("machine_combo")
self.machine_combo.connect ("changed", self.machine_combo_changed)
# Setup the combo
cell = gtk.CellRendererText()
self.machine_combo.pack_start(cell, True)
self.machine_combo.add_attribute(cell, 'text', 0)
# Grab the distro and image combos. We need these to populate with
# models once the machine is chosen
self.distribution_combo = gxml.get_widget ("distribution_combo")
cell = gtk.CellRendererText()
self.distribution_combo.pack_start(cell, True)
self.distribution_combo.add_attribute(cell, 'text', 0)
self.image_combo = gxml.get_widget ("image_combo")
cell = gtk.CellRendererText()
self.image_combo.pack_start(cell, True)
self.image_combo.add_attribute(cell, 'text', 0)
# Put the default descriptive text in the status box
self.clear_status_message()
# Mark as non-configurable, this is just greys out the widgets the
# user can't yet use
self.configurable = False
self.set_configurable(False)
# Show the table
table.show_all ()
# The loader and some signals connected to it to update the status
# area
self.loader = MetaDataLoader()
self.loader.connect ("success", self.loader_success_cb)
self.loader.connect ("error", self.loader_error_cb)
def update_configuration (self):
""" A poorly named function but it updates the internal configuration
from the widgets. This can make that configuration concrete and can
thus be used for building """
# Extract the chosen machine from the combo
model = self.machine_combo.get_model()
active_iter = self.machine_combo.get_active_iter()
if (active_iter):
self.configuration.machine = model.get(active_iter, 0)[0]
# Extract the chosen distro from the combo
model = self.distribution_combo.get_model()
active_iter = self.distribution_combo.get_active_iter()
if (active_iter):
self.configuration.distro = model.get(active_iter, 0)[0]
# Extract the chosen image from the combo
model = self.image_combo.get_model()
active_iter = self.image_combo.get_active_iter()
if (active_iter):
self.configuration.image = model.get(active_iter, 0)[0]
# This function operates to pull events out from the event queue and then push
# them into the RunningBuild (which then drives the RunningBuild which then
# pushes through and updates the progress tree view.)
#
# TODO: Should be a method on the RunningBuild class
def event_handle_timeout (eventHandler, build):
# Consume as many messages as we can ...
event = eventHandler.getEvent()
while event:
build.handle_event (event)
event = eventHandler.getEvent()
return True
class MainWindow (gtk.Window):
# Callback that gets fired when the user hits a button in the
# BuildSetupDialog.
def build_dialog_box_response_cb (self, dialog, response_id):
conf = None
if (response_id == BuildSetupDialog.RESPONSE_BUILD):
dialog.update_configuration()
print dialog.configuration.machine, dialog.configuration.distro, \
dialog.configuration.image
conf = dialog.configuration
dialog.destroy()
if conf:
self.manager.do_build (conf)
def build_button_clicked_cb (self, button):
dialog = BuildSetupDialog ()
# For some unknown reason Dialog.run causes nice little deadlocks ... :-(
dialog.connect ("response", self.build_dialog_box_response_cb)
dialog.show()
def __init__ (self):
gtk.Window.__init__ (self)
# Pull in *just* the main vbox from the Glade XML data and then pack
# that inside the window
gxml = gtk.glade.XML (os.path.dirname(__file__) + "/crumbs/puccho.glade",
root = "main_window_vbox")
vbox = gxml.get_widget ("main_window_vbox")
self.add (vbox)
# Create the tree views for the build manager view and the progress view
self.build_manager_view = BuildManagerTreeView()
self.running_build_view = RunningBuildTreeView()
# Grab the scrolled windows that we put the tree views into
self.results_scrolledwindow = gxml.get_widget ("results_scrolledwindow")
self.progress_scrolledwindow = gxml.get_widget ("progress_scrolledwindow")
# Put the tree views inside ...
self.results_scrolledwindow.add (self.build_manager_view)
self.progress_scrolledwindow.add (self.running_build_view)
# Hook up the build button...
self.build_button = gxml.get_widget ("main_toolbutton_build")
self.build_button.connect ("clicked", self.build_button_clicked_cb)
# I'm not very happy about the current ownership of the RunningBuild. I have
# my suspicions that this object should be held by the BuildManager since we
# care about the signals in the manager
def running_build_succeeded_cb (running_build, manager):
# Notify the manager that a build has succeeded. This is necessary as part
# of the 'hack' that we use for making the row in the model / view
# representing the ongoing build change into a row representing the
# completed build. Since we know only one build can be running a time then
# we can handle this.
# FIXME: Refactor all this so that the RunningBuild is owned by the
# BuildManager. It can then hook onto the signals directly and drive
# interesting things it cares about.
manager.notify_build_succeeded ()
print "build succeeded"
def running_build_failed_cb (running_build, manager):
# As above
print "build failed"
manager.notify_build_failed ()
def init (server, eventHandler):
# Initialise threading...
gobject.threads_init()
gtk.gdk.threads_init()
main_window = MainWindow ()
main_window.show_all ()
# Set up the build manager stuff in general
builds_dir = os.path.join (os.getcwd(), "results")
manager = BuildManager (server, builds_dir)
main_window.build_manager_view.set_model (manager.model)
# Do the running build setup
running_build = RunningBuild ()
main_window.running_build_view.set_model (running_build.model)
running_build.connect ("build-succeeded", running_build_succeeded_cb,
manager)
running_build.connect ("build-failed", running_build_failed_cb, manager)
# We need to save the manager into the MainWindow so that the toolbar
# button can use it.
# FIXME: Refactor ?
main_window.manager = manager
# Use a timeout function for probing the event queue to find out if we
# have a message waiting for us.
gobject.timeout_add (200,
event_handle_timeout,
eventHandler,
running_build)
gtk.main()

View File

@@ -0,0 +1,127 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Copyright (C) 2006 - 2007 Michael 'Mickey' Lauer
# Copyright (C) 2006 - 2007 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
"""
Use this class to fork off a thread to recieve event callbacks from the bitbake
server and queue them for the UI to process. This process must be used to avoid
client/server deadlocks.
"""
import socket, threading
from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
class BBUIEventQueue:
def __init__(self, BBServer):
self.eventQueue = []
self.eventQueueLock = threading.Lock()
self.eventQueueNotify = threading.Event()
self.BBServer = BBServer
self.t = threading.Thread()
self.t.setDaemon(True)
self.t.run = self.startCallbackHandler
self.t.start()
def getEvent(self):
self.eventQueueLock.acquire()
if len(self.eventQueue) == 0:
self.eventQueueLock.release()
return None
item = self.eventQueue.pop(0)
if len(self.eventQueue) == 0:
self.eventQueueNotify.clear()
self.eventQueueLock.release()
return item
def waitEvent(self, delay):
self.eventQueueNotify.wait(delay)
return self.getEvent()
def queue_event(self, event):
self.eventQueueLock.acquire()
self.eventQueue.append(event)
self.eventQueueNotify.set()
self.eventQueueLock.release()
def startCallbackHandler(self):
server = UIXMLRPCServer()
self.host, self.port = server.socket.getsockname()
server.register_function( self.system_quit, "event.quit" )
server.register_function( self.queue_event, "event.send" )
server.socket.settimeout(1)
self.EventHandle = self.BBServer.registerEventHandler(self.host, self.port)
self.server = server
while not server.quit:
server.handle_request()
server.server_close()
def system_quit( self ):
"""
Shut down the callback thread
"""
try:
self.BBServer.unregisterEventHandler(self.EventHandle)
except:
pass
self.server.quit = True
class UIXMLRPCServer (SimpleXMLRPCServer):
def __init__( self, interface = ("localhost", 0) ):
self.quit = False
SimpleXMLRPCServer.__init__( self,
interface,
requestHandler=SimpleXMLRPCRequestHandler,
logRequests=False, allow_none=True)
def get_request(self):
while not self.quit:
try:
sock, addr = self.socket.accept()
sock.settimeout(1)
return (sock, addr)
except socket.timeout:
pass
return (None,None)
def close_request(self, request):
if request is None:
return
SimpleXMLRPCServer.close_request(self, request)
def process_request(self, request, client_address):
if request is None:
return
SimpleXMLRPCServer.process_request(self, request, client_address)

View File

@@ -0,0 +1,49 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
#
# Copyright (C) 2006 - 2007 Michael 'Mickey' Lauer
# Copyright (C) 2006 - 2007 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
class BBUIHelper:
def __init__(self):
self.needUpdate = False
self.running_tasks = {}
self.failed_tasks = {}
def eventHandler(self, event):
if event[0].startswith('bb.build.TaskStarted'):
self.running_tasks["%s %s\n" % (event[1]['_package'], event[1]['_task'])] = ""
self.needUpdate = True
if event[0].startswith('bb.build.TaskSucceeded'):
del self.running_tasks["%s %s\n" % (event[1]['_package'], event[1]['_task'])]
self.needUpdate = True
if event[0].startswith('bb.build.TaskFailed'):
del self.running_tasks["%s %s\n" % (event[1]['_package'], event[1]['_task'])]
self.failed_tasks["%s %s\n" % (event[1]['_package'], event[1]['_task'])] = ""
self.needUpdate = True
# Add runqueue event handling
#if event[0].startswith('bb.runqueue.runQueueTaskCompleted'):
# a = 1
#if event[0].startswith('bb.runqueue.runQueueTaskStarted'):
# a = 1
#if event[0].startswith('bb.runqueue.runQueueTaskFailed'):
# a = 1
#if event[0].startswith('bb.runqueue.runQueueExitWait'):
# a = 1
def getTasks(self):
return (self.running_tasks, self.failed_tasks)

417
bitbake-dev/lib/bb/utils.py Normal file
View File

@@ -0,0 +1,417 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
BitBake Utility Functions
"""
# Copyright (C) 2004 Michael Lauer
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
digits = "0123456789"
ascii_letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
import re, fcntl, os
def explode_version(s):
r = []
alpha_regexp = re.compile('^([a-zA-Z]+)(.*)$')
numeric_regexp = re.compile('^(\d+)(.*)$')
while (s != ''):
if s[0] in digits:
m = numeric_regexp.match(s)
r.append(int(m.group(1)))
s = m.group(2)
continue
if s[0] in ascii_letters:
m = alpha_regexp.match(s)
r.append(m.group(1))
s = m.group(2)
continue
s = s[1:]
return r
def vercmp_part(a, b):
va = explode_version(a)
vb = explode_version(b)
while True:
if va == []:
ca = None
else:
ca = va.pop(0)
if vb == []:
cb = None
else:
cb = vb.pop(0)
if ca == None and cb == None:
return 0
if ca > cb:
return 1
if ca < cb:
return -1
def vercmp(ta, tb):
(ea, va, ra) = ta
(eb, vb, rb) = tb
r = int(ea)-int(eb)
if (r == 0):
r = vercmp_part(va, vb)
if (r == 0):
r = vercmp_part(ra, rb)
return r
def explode_deps(s):
"""
Take an RDEPENDS style string of format:
"DEPEND1 (optional version) DEPEND2 (optional version) ..."
and return a list of dependencies.
Version information is ignored.
"""
r = []
l = s.split()
flag = False
for i in l:
if i[0] == '(':
flag = True
#j = []
if not flag:
r.append(i)
#else:
# j.append(i)
if flag and i.endswith(')'):
flag = False
# Ignore version
#r[-1] += ' ' + ' '.join(j)
return r
def explode_dep_versions(s):
"""
Take an RDEPENDS style string of format:
"DEPEND1 (optional version) DEPEND2 (optional version) ..."
and return a dictonary of dependencies and versions.
"""
r = {}
l = s.split()
lastdep = None
lastver = ""
inversion = False
for i in l:
if i[0] == '(':
inversion = True
lastver = i[1:] or ""
#j = []
elif inversion and i.endswith(')'):
inversion = False
lastver = lastver + " " + (i[:-1] or "")
r[lastdep] = lastver
elif not inversion:
r[i] = None
lastdep = i
lastver = ""
elif inversion:
lastver = lastver + " " + i
return r
def _print_trace(body, line):
"""
Print the Environment of a Text Body
"""
import bb
# print the environment of the method
bb.msg.error(bb.msg.domain.Util, "Printing the environment of the function")
min_line = max(1,line-4)
max_line = min(line+4,len(body)-1)
for i in range(min_line,max_line+1):
bb.msg.error(bb.msg.domain.Util, "\t%.4d:%s" % (i, body[i-1]) )
def better_compile(text, file, realfile):
"""
A better compile method. This method
will print the offending lines.
"""
try:
return compile(text, file, "exec")
except Exception, e:
import bb,sys
# split the text into lines again
body = text.split('\n')
bb.msg.error(bb.msg.domain.Util, "Error in compiling python function in: ", realfile)
bb.msg.error(bb.msg.domain.Util, "The lines resulting into this error were:")
bb.msg.error(bb.msg.domain.Util, "\t%d:%s:'%s'" % (e.lineno, e.__class__.__name__, body[e.lineno-1]))
_print_trace(body, e.lineno)
# exit now
sys.exit(1)
def better_exec(code, context, text, realfile):
"""
Similiar to better_compile, better_exec will
print the lines that are responsible for the
error.
"""
import bb,sys
try:
exec code in context
except:
(t,value,tb) = sys.exc_info()
if t in [bb.parse.SkipPackage, bb.build.FuncFailed]:
raise
# print the Header of the Error Message
bb.msg.error(bb.msg.domain.Util, "Error in executing python function in: %s" % realfile)
bb.msg.error(bb.msg.domain.Util, "Exception:%s Message:%s" % (t,value) )
# let us find the line number now
while tb.tb_next:
tb = tb.tb_next
import traceback
line = traceback.tb_lineno(tb)
_print_trace( text.split('\n'), line )
raise
def Enum(*names):
"""
A simple class to give Enum support
"""
assert names, "Empty enums are not supported"
class EnumClass(object):
__slots__ = names
def __iter__(self): return iter(constants)
def __len__(self): return len(constants)
def __getitem__(self, i): return constants[i]
def __repr__(self): return 'Enum' + str(names)
def __str__(self): return 'enum ' + str(constants)
class EnumValue(object):
__slots__ = ('__value')
def __init__(self, value): self.__value = value
Value = property(lambda self: self.__value)
EnumType = property(lambda self: EnumType)
def __hash__(self): return hash(self.__value)
def __cmp__(self, other):
# C fans might want to remove the following assertion
# to make all enums comparable by ordinal value {;))
assert self.EnumType is other.EnumType, "Only values from the same enum are comparable"
return cmp(self.__value, other.__value)
def __invert__(self): return constants[maximum - self.__value]
def __nonzero__(self): return bool(self.__value)
def __repr__(self): return str(names[self.__value])
maximum = len(names) - 1
constants = [None] * len(names)
for i, each in enumerate(names):
val = EnumValue(i)
setattr(EnumClass, each, val)
constants[i] = val
constants = tuple(constants)
EnumType = EnumClass()
return EnumType
def lockfile(name):
"""
Use the file fn as a lock file, return when the lock has been acquired.
Returns a variable to pass to unlockfile().
"""
path = os.path.dirname(name)
if not os.path.isdir(path):
import bb, sys
bb.msg.error(bb.msg.domain.Util, "Error, lockfile path does not exist!: %s" % path)
sys.exit(1)
while True:
# If we leave the lockfiles lying around there is no problem
# but we should clean up after ourselves. This gives potential
# for races though. To work around this, when we acquire the lock
# we check the file we locked was still the lock file on disk.
# by comparing inode numbers. If they don't match or the lockfile
# no longer exists, we start again.
# This implementation is unfair since the last person to request the
# lock is the most likely to win it.
try:
lf = open(name, "a+")
fcntl.flock(lf.fileno(), fcntl.LOCK_EX)
statinfo = os.fstat(lf.fileno())
if os.path.exists(lf.name):
statinfo2 = os.stat(lf.name)
if statinfo.st_ino == statinfo2.st_ino:
return lf
# File no longer exists or changed, retry
lf.close
except Exception, e:
continue
def unlockfile(lf):
"""
Unlock a file locked using lockfile()
"""
os.unlink(lf.name)
fcntl.flock(lf.fileno(), fcntl.LOCK_UN)
lf.close
def md5_file(filename):
"""
Return the hex string representation of the MD5 checksum of filename.
"""
try:
import hashlib
m = hashlib.md5()
except ImportError:
import md5
m = md5.new()
for line in open(filename):
m.update(line)
return m.hexdigest()
def sha256_file(filename):
"""
Return the hex string representation of the 256-bit SHA checksum of
filename. On Python 2.4 this will return None, so callers will need to
handle that by either skipping SHA checks, or running a standalone sha256sum
binary.
"""
try:
import hashlib
except ImportError:
return None
s = hashlib.sha256()
for line in open(filename):
s.update(line)
return s.hexdigest()
def preserved_envvars_list():
return [
'BBPATH',
'BB_PRESERVE_ENV',
'BB_ENV_WHITELIST',
'BB_ENV_EXTRAWHITE',
'COLORTERM',
'DBUS_SESSION_BUS_ADDRESS',
'DESKTOP_SESSION',
'DESKTOP_STARTUP_ID',
'DISPLAY',
'GNOME_KEYRING_PID',
'GNOME_KEYRING_SOCKET',
'GPG_AGENT_INFO',
'GTK_RC_FILES',
'HOME',
'LANG',
'LOGNAME',
'PATH',
'PWD',
'SESSION_MANAGER',
'SHELL',
'SSH_AUTH_SOCK',
'TERM',
'USER',
'USERNAME',
'_',
'XAUTHORITY',
'XDG_DATA_DIRS',
'XDG_SESSION_COOKIE',
]
def filter_environment(good_vars):
"""
Create a pristine environment for bitbake. This will remove variables that
are not known and may influence the build in a negative way.
"""
import bb
removed_vars = []
for key in os.environ.keys():
if key in good_vars:
continue
removed_vars.append(key)
os.unsetenv(key)
del os.environ[key]
if len(removed_vars):
bb.debug(1, "Removed the following variables from the environment:", ",".join(removed_vars))
return removed_vars
def clean_environment():
"""
Clean up any spurious environment variables. This will remove any
variables the user hasn't chose to preserve.
"""
if 'BB_PRESERVE_ENV' not in os.environ:
if 'BB_ENV_WHITELIST' in os.environ:
good_vars = os.environ['BB_ENV_WHITELIST'].split()
else:
good_vars = preserved_envvars_list()
if 'BB_ENV_EXTRAWHITE' in os.environ:
good_vars.extend(os.environ['BB_ENV_EXTRAWHITE'].split())
filter_environment(good_vars)
def empty_environment():
"""
Remove all variable from the environment.
"""
for s in os.environ.keys():
os.unsetenv(s)
del os.environ[s]
def build_environment(d):
"""
Build an environment from all exported variables.
"""
import bb
for var in bb.data.keys(d):
export = bb.data.getVarFlag(var, "export", d)
if export:
os.environ[var] = bb.data.getVar(var, d, True)
def prunedir(topdir):
# Delete everything reachable from the directory named in 'topdir'.
# CAUTION: This is dangerous!
for root, dirs, files in os.walk(topdir, topdown=False):
for name in files:
os.remove(os.path.join(root, name))
for name in dirs:
if os.path.islink(os.path.join(root, name)):
os.remove(os.path.join(root, name))
else:
os.rmdir(os.path.join(root, name))
os.rmdir(topdir)
#
# Could also use return re.compile("(%s)" % "|".join(map(re.escape, suffixes))).sub(lambda mo: "", var)
# but thats possibly insane and suffixes is probably going to be small
#
def prune_suffix(var, suffixes, d):
# See if var ends with any of the suffixes listed and
# remove it if found
for suffix in suffixes:
if var.endswith(suffix):
return var.replace(suffix, "")
return var

View File

@@ -0,0 +1,145 @@
#
# BitBake XMLRPC Server
#
# Copyright (C) 2006 - 2007 Michael 'Mickey' Lauer
# Copyright (C) 2006 - 2008 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
"""
This module implements an xmlrpc server for BitBake.
Use this by deriving a class from BitBakeXMLRPCServer and then adding
methods which you want to "export" via XMLRPC. If the methods have the
prefix xmlrpc_, then registering those function will happen automatically,
if not, you need to call register_function.
Use register_idle_function() to add a function which the xmlrpc server
calls from within server_forever when no requests are pending. Make sure
that those functions are non-blocking or else you will introduce latency
in the server's main loop.
"""
import bb
import xmlrpclib
DEBUG = False
from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
import inspect, select
class BitBakeServerCommands():
def __init__(self, server, cooker):
self.cooker = cooker
self.server = server
def registerEventHandler(self, host, port):
"""
Register a remote UI Event Handler
"""
s = xmlrpclib.Server("http://%s:%d" % (host, port), allow_none=True)
return bb.event.register_UIHhandler(s)
def unregisterEventHandler(self, handlerNum):
"""
Unregister a remote UI Event Handler
"""
return bb.event.unregister_UIHhandler(handlerNum)
def runCommand(self, command):
"""
Run a cooker command on the server
"""
return self.cooker.command.runCommand(command)
def terminateServer(self):
"""
Trigger the server to quit
"""
self.server.quit = True
print "Server (cooker) exitting"
return
def ping(self):
"""
Dummy method which can be used to check the server is still alive
"""
return True
class BitBakeXMLRPCServer(SimpleXMLRPCServer):
# remove this when you're done with debugging
# allow_reuse_address = True
def __init__(self, cooker, interface = ("localhost", 0)):
"""
Constructor
"""
SimpleXMLRPCServer.__init__(self, interface,
requestHandler=SimpleXMLRPCRequestHandler,
logRequests=False, allow_none=True)
self._idlefuns = {}
self.host, self.port = self.socket.getsockname()
#self.register_introspection_functions()
commands = BitBakeServerCommands(self, cooker)
self.autoregister_all_functions(commands, "")
def autoregister_all_functions(self, context, prefix):
"""
Convenience method for registering all functions in the scope
of this class that start with a common prefix
"""
methodlist = inspect.getmembers(context, inspect.ismethod)
for name, method in methodlist:
if name.startswith(prefix):
self.register_function(method, name[len(prefix):])
def register_idle_function(self, function, data):
"""Register a function to be called while the server is idle"""
assert callable(function)
self._idlefuns[function] = data
def serve_forever(self):
"""
Serve Requests. Overloaded to honor a quit command
"""
self.quit = False
while not self.quit:
#print "Idle queue length %s" % len(self._idlefuns)
if len(self._idlefuns) == 0:
self.timeout = None
else:
self.timeout = 0
self.handle_request()
#print "Idle timeout, running idle functions"
for function, data in self._idlefuns.items():
try:
retval = function(self, data, False)
if not retval:
del self._idlefuns[function]
except SystemExit:
raise
except:
import traceback
traceback.print_exc()
pass
# Tell idle functions we're exiting
for function, data in self._idlefuns.items():
try:
retval = function(self, data, True)
except:
pass
self.server_close()
return

View File

@@ -2,7 +2,7 @@ Tim Ansell <mithro@mithis.net>
Phil Blundell <pb@handhelds.org>
Seb Frankengul <seb@frankengul.org>
Holger Freyther <zecke@handhelds.org>
Marcin Juszkiewicz <hrw@hrw.one.pl>
Marcin Juszkiewicz <marcin@haerwu.biz>
Chris Larson <kergoth@handhelds.org>
Ulrich Luckas <luckas@musoft.de>
Mickey Lauer <mickey@Vanille.de>

View File

@@ -1,4 +1,7 @@
Changes in BitBake 1.8.x:
- Add bb.utils.prune_suffix function
Changes in BitBake 1.8.12:
- Fix -f (force) in conjunction with -b
- Fix exit code for build failures in --continue mode
- Fix git branch tags fetching
@@ -41,7 +44,38 @@ Changes in BitBake 1.8.x:
- Add PERSISTENT_DIR to store the PersistData in a persistent
directory != the cache dir.
- Add md5 and sha256 checksum generation functions to utils.py
- Make sure Build Completed events are generated even when tasks fail
- Correctly handle '-' characters in class names (#2958)
- Make sure expandKeys has been called on the data dictonary before running tasks
- Correctly add a task override in the form task-TASKNAME.
- Revert the '-' character fix in class names since it breaks things
- When a regexp fails to compile for PACKAGES_DYNAMIC, print a more useful error (#4444)
- Allow to checkout CVS by Date and Time. Just add HHmm to the SRCDATE.
- Move prunedir function to utils.py and add explode_dep_versions function
- Raise an exception if SRCREV == 'INVALID'
- Fix hg fetcher username/password handling and fix crash
- Fix PACKAGES_DYNAMIC handling of packages with '++' in the name
- Rename __depends to __base_depends after configuration parsing so we don't
recheck the validity of the config files time after time
- Add better environmental variable handling. By default it will now only pass certain
whitelisted variables into the data store. If BB_PRESERVE_ENV is set bitbake will use
all variable from the environment. If BB_ENV_WHITELIST is set, that whitelist will be
used instead of the internal bitbake one. Alternatively, BB_ENV_EXTRAWHITE can be used
to extend the internal whitelist.
- Perforce fetcher fix to use commandline options instead of being overriden by the environment
- use @rev when doing a svn checkout
- Add osc fetcher (from Joshua Lock in Poky)
- When SRCREV autorevisioning for a recipe is in use, don't cache the recipe
- Add tryaltconfigs option to control whether bitbake trys using alternative providers
to fulfil failed dependencies. It defaults to off, changing the default since this
behaviour confuses many users and isn't often useful.
- Improve lock file function error handling
- Add username handling to the git fetcher (Robert Bragg)
- Add support for HTTP_PROXY and HTTP_PROXY_IGNORE variables to the wget fetcher
- Export more variables to the fetcher commands to allow ssh checkouts and checkouts through
proxies to work better. (from Poky)
- Also allow user and pswd options in SRC_URIs globally (from Poky)
- Improve proxy handling when using mirrors (from Poky)
Changes in BitBake 1.8.10:
- Psyco is available only for x86 - do not use it on other architectures.
@@ -86,6 +120,7 @@ Changes in BitBake 1.8.10:
- Add support for branches in git fetcher (Otavio Salvador, Michael Lauer)
- Make taskdata and runqueue errors more user friendly
- Add norecurse and fullpath options to cvs fetcher
- bb.utils.prunedir can cope with symlinks to directories without exceptions
Changes in Bitbake 1.8.8:
- Rewrite svn fetcher to make adding extra operations easier

View File

@@ -20,6 +20,7 @@ lib/bb/fetch/cvs.py
lib/bb/fetch/git.py
lib/bb/fetch/hg.py
lib/bb/fetch/local.py
lib/bb/fetch/osc.py
lib/bb/fetch/perforce.py
lib/bb/fetch/ssh.py
lib/bb/fetch/svk.py

View File

@@ -27,7 +27,7 @@ sys.path.insert(0,os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'l
import bb
from bb import cooker
__version__ = "1.8.11"
__version__ = "1.8.13"
#============================================================================#
# BBOptions
@@ -60,6 +60,9 @@ Default BBFILES are the .bb files in the current directory.""" )
parser.add_option( "-k", "--continue", help = "continue as much as possible after an error. While the target that failed, and those that depend on it, cannot be remade, the other dependencies of these targets can be processed all the same.",
action = "store_false", dest = "abort", default = True )
parser.add_option( "-a", "--tryaltconfigs", help = "continue with builds by trying to use alternative providers where possible.",
action = "store_true", dest = "tryaltconfigs", default = False )
parser.add_option( "-f", "--force", help = "force run of specified cmd, regardless of stamp status",
action = "store_true", dest = "force", default = False )
@@ -105,6 +108,9 @@ Default BBFILES are the .bb files in the current directory.""" )
parser.add_option( "-P", "--profile", help = "profile the command and print a report",
action = "store_true", dest = "profile", default = False )
parser.add_option( "", "--revisions-changed", help = "Set the exit code depending on whether upstream floating revisions have changed or not",
action = "store_true", dest = "revisions_changed", default = False )
options, args = parser.parse_args(sys.argv)
configuration = BBConfiguration(options)
@@ -113,6 +119,12 @@ Default BBFILES are the .bb files in the current directory.""" )
cooker = bb.cooker.BBCooker(configuration)
# Clear away any spurious environment variables. But don't wipe the
# environment totally.
bb.utils.clean_environment()
cooker.parseConfiguration()
if configuration.profile:
try:
import cProfile as profile

View File

@@ -54,6 +54,9 @@ continue as much as possible after an error. While the target that failed, and
those that depend on it, cannot be remade, the other dependencies of these
targets can be processed all the same.
.TP
.B \-a, \-\-tryaltconfigs
continue with builds by trying to use alternative providers where possible.
.TP
.B \-f, \-\-force
force run of specified cmd, regardless of stamp status
.TP
@@ -97,12 +100,13 @@ emit the dependency trees of the specified packages in the dot syntax
.B \-IIGNORED\_DOT\_DEPS, \-\-ignore-deps=IGNORED_DOT_DEPS
Stop processing at the given list of dependencies when generating dependency
graphs. This can help to make the graph more appealing
.\"
.\" Next option is only in BitBake 1.7.x (trunk)
.\"
.\".TP
.\".B \-lDEBUG_DOMAINS, \-\-log-domains=DEBUG_DOMAINS
.\"Show debug logging for the specified logging domains
.TP
.B \-lDEBUG_DOMAINS, \-\-log-domains=DEBUG_DOMAINS
Show debug logging for the specified logging domains
.TP
.B \-P, \-\-profile
profile the command and print a report
.TP
.SH AUTHORS
BitBake was written by

View File

@@ -415,6 +415,7 @@ options:
the graph more appealing
-l DEBUG_DOMAINS, --log-domains=DEBUG_DOMAINS
Show debug logging for the specified logging domains
-P, --profile profile the command and print a report
</screen>
</para>

View File

@@ -26,7 +26,7 @@
from inspect import getmro
import copy
import types, sets
import types
types.ImmutableTypes = tuple([ \
types.BooleanType, \
types.ComplexType, \
@@ -35,7 +35,7 @@ types.ImmutableTypes = tuple([ \
types.LongType, \
types.NoneType, \
types.TupleType, \
sets.ImmutableSet] + \
frozenset] + \
list(types.StringTypes))
MUTABLE = "__mutable__"

View File

@@ -21,7 +21,7 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
__version__ = "1.8.11"
__version__ = "1.8.13"
__all__ = [
@@ -1129,4 +1129,5 @@ def dep_opconvert(mysplit, myuse):
if __name__ == "__main__":
import doctest, bb
bb.msg.set_debug_level(0)
doctest.testmod(bb)

View File

@@ -28,6 +28,13 @@
from bb import data, fetch, event, mkdirhier, utils
import bb, os
# When we execute a python function we'd like certain things
# in all namespaces, hence we add them to __builtins__
# If we do not do this and use the exec globals, they will
# not be available to subfunctions.
__builtins__['bb'] = bb
__builtins__['os'] = os
# events
class FuncFailed(Exception):
"""Executed function failed"""
@@ -122,20 +129,15 @@ def exec_func(func, d, dirs = None):
def exec_func_python(func, d):
"""Execute a python BB 'function'"""
import re, os
import re
bbfile = bb.data.getVar('FILE', d, 1)
tmp = "def " + func + "():\n%s" % data.getVar(func, d)
tmp += '\n' + func + '()'
comp = utils.better_compile(tmp, func, bbfile)
prevdir = os.getcwd()
g = {} # globals
g['bb'] = bb
g['os'] = os
g['d'] = d
utils.better_exec(comp, g, tmp, bbfile)
if os.path.exists(prevdir):
os.chdir(prevdir)
def exec_func_shell(func, d, flags):
"""Execute a shell BB 'function' Returns true if execution was successful.
@@ -225,6 +227,10 @@ def exec_func_shell(func, d, flags):
so.close()
se.close()
if os.path.getsize(logfile) == 0:
bb.msg.debug(2, bb.msg.domain.Build, "Zero size logfile %s, removing" % logfile)
os.remove(logfile)
# close the backup fds
os.close(osi[0])
os.close(oso[0])

View File

@@ -31,7 +31,6 @@
import os, re
import bb.data
import bb.utils
from sets import Set
try:
import cPickle as pickle
@@ -39,7 +38,7 @@ except ImportError:
import pickle
bb.msg.note(1, bb.msg.domain.Cache, "Importing cPickle failed. Falling back to a very slow implementation.")
__cache_version__ = "129"
__cache_version__ = "130"
class Cache:
"""
@@ -59,18 +58,16 @@ class Cache:
if self.cachedir in [None, '']:
self.has_cache = False
bb.msg.note(1, bb.msg.domain.Cache, "Not using a cache. Set CACHE = <directory> to enable.")
else:
self.has_cache = True
self.cachefile = os.path.join(self.cachedir,"bb_cache.dat")
bb.msg.debug(1, bb.msg.domain.Cache, "Using cache in '%s'" % self.cachedir)
try:
os.stat( self.cachedir )
except OSError:
bb.mkdirhier( self.cachedir )
return
if not self.has_cache:
return
self.has_cache = True
self.cachefile = os.path.join(self.cachedir,"bb_cache.dat")
bb.msg.debug(1, bb.msg.domain.Cache, "Using cache in '%s'" % self.cachedir)
try:
os.stat( self.cachedir )
except OSError:
bb.mkdirhier( self.cachedir )
# If any of configuration.data's dependencies are newer than the
# cache there isn't even any point in loading it...
@@ -95,7 +92,11 @@ class Cache:
bb.msg.note(1, bb.msg.domain.Cache, "Invalid cache found, rebuilding...")
self.depends_cache = {}
else:
bb.msg.note(1, bb.msg.domain.Cache, "Out of date cache found, rebuilding...")
try:
os.stat( self.cachefile )
bb.msg.note(1, bb.msg.domain.Cache, "Out of date cache found, rebuilding...")
except OSError:
pass
def getVar(self, var, fn, exp = 0):
"""
@@ -123,30 +124,59 @@ class Cache:
self.depends_cache[fn][var] = result
return result
def setData(self, fn, data):
def setData(self, virtualfn, fn, data):
"""
Called to prime bb_cache ready to learn which variables to cache.
Will be followed by calls to self.getVar which aren't cached
but can be fulfilled from self.data.
"""
self.data_fn = fn
self.data_fn = virtualfn
self.data = data
# Make sure __depends makes the depends_cache
self.getVar("__depends", fn, True)
self.depends_cache[fn]["CACHETIMESTAMP"] = bb.parse.cached_mtime(fn)
self.getVar("__depends", virtualfn, True)
self.depends_cache[virtualfn]["CACHETIMESTAMP"] = bb.parse.cached_mtime(fn)
def loadDataFull(self, fn, cfgData):
def virtualfn2realfn(self, virtualfn):
"""
Convert a virtual file name to a real one + the associated subclass keyword
"""
fn = virtualfn
cls = ""
if virtualfn.startswith('virtual:'):
cls = virtualfn.split(':', 2)[1]
fn = virtualfn.replace('virtual:' + cls + ':', '')
#bb.msg.debug(2, bb.msg.domain.Cache, "virtualfn2realfn %s to %s %s" % (virtualfn, fn, cls))
return (fn, cls)
def realfn2virtual(self, realfn, cls):
"""
Convert a real filename + the associated subclass keyword to a virtual filename
"""
if cls == "":
#bb.msg.debug(2, bb.msg.domain.Cache, "realfn2virtual %s and '%s' to %s" % (realfn, cls, realfn))
return realfn
#bb.msg.debug(2, bb.msg.domain.Cache, "realfn2virtual %s and %s to %s" % (realfn, cls, "virtual:" + cls + ":" + realfn))
return "virtual:" + cls + ":" + realfn
def loadDataFull(self, virtualfn, cfgData):
"""
Return a complete set of data for fn.
To do this, we need to parse the file.
"""
(fn, cls) = self.virtualfn2realfn(virtualfn)
bb.msg.debug(1, bb.msg.domain.Cache, "Parsing %s (full)" % fn)
bb_data, skipped = self.load_bbfile(fn, cfgData)
if isinstance(bb_data, dict):
return bb_data[cls]
return bb_data
def loadData(self, fn, cfgData):
def loadData(self, fn, cfgData, cacheData):
"""
Load a subset of data for fn.
If the cached data is valid we do nothing,
@@ -159,12 +189,36 @@ class Cache:
if self.cacheValid(fn):
if "SKIPPED" in self.depends_cache[fn]:
return True, True
self.handle_data(fn, cacheData)
multi = self.getVar('BBCLASSEXTEND', fn, True)
if multi:
for cls in multi.split():
virtualfn = self.realfn2virtual(fn, cls)
# Pretend we're clean so getVar works
self.clean[virtualfn] = ""
self.handle_data(virtualfn, cacheData)
return True, False
bb.msg.debug(1, bb.msg.domain.Cache, "Parsing %s" % fn)
bb_data, skipped = self.load_bbfile(fn, cfgData)
self.setData(fn, bb_data)
if skipped:
if isinstance(bb_data, dict):
self.setData(fn, fn, bb_data[""])
else:
self.setData(fn, fn, bb_data)
return False, skipped
if isinstance(bb_data, dict):
for data in bb_data:
virtualfn = self.realfn2virtual(fn, data)
self.setData(virtualfn, fn, bb_data[data])
self.handle_data(virtualfn, cacheData)
return False, skipped
self.setData(fn, fn, bb_data)
self.handle_data(fn, cacheData)
return False, skipped
def cacheValid(self, fn):
@@ -259,6 +313,7 @@ class Cache:
Save the cache
Called from the parser when complete (or exiting)
"""
import copy
if not self.has_cache:
return
@@ -271,8 +326,17 @@ class Cache:
version_data['CACHE_VER'] = __cache_version__
version_data['BITBAKE_VER'] = bb.__version__
cache_data = copy.deepcopy(self.depends_cache)
for fn in self.depends_cache:
if '__BB_DONT_CACHE' in self.depends_cache[fn] and self.depends_cache[fn]['__BB_DONT_CACHE']:
bb.msg.debug(2, bb.msg.domain.Cache, "Not caching %s, marked as not cacheable" % fn)
del cache_data[fn]
elif 'PV' in self.depends_cache[fn] and 'SRCREVINACTION' in self.depends_cache[fn]['PV']:
bb.msg.error(bb.msg.domain.Cache, "Not caching %s as it had SRCREVINACTION in PV. Please report this bug" % fn)
del cache_data[fn]
p = pickle.Pickler(file(self.cachefile, "wb" ), -1 )
p.dump([self.depends_cache, version_data])
p.dump([cache_data, version_data])
def mtime(self, cachefile):
return bb.parse.cached_mtime_noerror(cachefile)
@@ -285,6 +349,8 @@ class Cache:
pn = self.getVar('PN', file_name, True)
pe = self.getVar('PE', file_name, True) or "0"
pv = self.getVar('PV', file_name, True)
if 'SRCREVINACTION' in pv:
bb.note("Found SRCREVINACTION in PV (%s) or %s. Please report this bug." % (pv, file_name))
pr = self.getVar('PR', file_name, True)
dp = int(self.getVar('DEFAULT_PREFERENCE', file_name, True) or "0")
depends = bb.utils.explode_deps(self.getVar("DEPENDS", file_name, True) or "")
@@ -373,6 +439,9 @@ class Cache:
if not self.getVar('BROKEN', file_name, True) and not self.getVar('EXCLUDE_FROM_WORLD', file_name, True):
cacheData.possible_world.append(file_name)
# Touch this to make sure its in the cache
self.getVar('__BB_DONT_CACHE', file_name, True)
self.getVar('BBCLASSEXTEND', file_name, True)
def load_bbfile( self, bbfile , config):
"""
@@ -460,6 +529,6 @@ class CacheData:
(set elsewhere)
"""
self.ignored_dependencies = []
self.world_target = Set()
self.world_target = set()
self.bbfile_priority = {}
self.bbfile_config_priorities = []

View File

@@ -25,7 +25,6 @@
import sys, os, getopt, glob, copy, os.path, re, time
import bb
from bb import utils, data, parse, event, cache, providers, taskdata, runqueue
from sets import Set
import itertools, sre_constants
parsespin = itertools.cycle( r'|/-\\' )
@@ -59,6 +58,10 @@ class BBCooker:
self.configuration.data = bb.data.init()
def parseConfiguration(self):
bb.data.inheritFromOS(self.configuration.data)
for f in self.configuration.file:
self.parseConfigurationFile( f )
@@ -190,7 +193,7 @@ class BBCooker:
bb.data.update_data(localdata)
bb.data.expandKeys(localdata)
taskdata = bb.taskdata.TaskData(self.configuration.abort)
taskdata = bb.taskdata.TaskData(self.configuration.abort, self.configuration.tryaltconfigs)
try:
taskdata.add_provider(localdata, self.status, pkgs_to_build[0])
@@ -239,7 +242,7 @@ class BBCooker:
localdata = data.createCopy(self.configuration.data)
bb.data.update_data(localdata)
bb.data.expandKeys(localdata)
taskdata = bb.taskdata.TaskData(self.configuration.abort)
taskdata = bb.taskdata.TaskData(self.configuration.abort, self.configuration.tryaltconfigs)
runlist = []
try:
@@ -277,13 +280,13 @@ class BBCooker:
print >> depends_file, '"%s" -> "%s"' % (pn, depend)
rdepends = self.status.rundeps[fn]
for package in rdepends:
for rdepend in rdepends[package]:
print >> depends_file, '"%s" -> "%s" [style=dashed]' % (package, rdepend)
for rdepend in re.findall("([\w.-]+)(\ \(.+\))?", rdepends[package]):
print >> depends_file, '"%s" -> "%s%s" [style=dashed]' % (package, rdepend[0], rdepend[1])
packages.append(package)
rrecs = self.status.runrecs[fn]
for package in rrecs:
for rdepend in rrecs[package]:
print >> depends_file, '"%s" -> "%s" [style=dashed]' % (package, rdepend)
for rdepend in re.findall("([\w.-]+)(\ \(.+\))?", rrecs[package]):
print >> depends_file, '"%s" -> "%s%s" [style=dashed]' % (package, rdepend[0], rdepend[1])
if not package in packages:
packages.append(package)
for package in packages:
@@ -400,8 +403,8 @@ class BBCooker:
bb.event.fire(bb.event.ConfigParsed(self.configuration.data))
except IOError:
bb.msg.fatal(bb.msg.domain.Parsing, "Unable to open %s" % afile )
except IOError, e:
bb.msg.fatal(bb.msg.domain.Parsing, "IO Error: %s" % str(e) )
except bb.parse.ParseError, details:
bb.msg.fatal(bb.msg.domain.Parsing, "Unable to parse %s (%s)" % (afile, details) )
@@ -471,17 +474,14 @@ class BBCooker:
if not fn:
return False
# Load data into the cache for fn
# Load data into the cache for fn and parse the loaded cache data
self.bb_cache = bb.cache.init(self)
self.bb_cache.loadData(fn, self.configuration.data)
# Parse the loaded cache data
self.status = bb.cache.CacheData()
self.bb_cache.handle_data(fn, self.status)
self.bb_cache.loadData(fn, self.configuration.data, self.status)
# Tweak some variables
item = self.bb_cache.getVar('PN', fn, True)
self.status.ignored_dependencies = Set()
self.status.ignored_dependencies = set()
self.status.bbfile_priority[fn] = 1
# Remove external dependencies
@@ -496,7 +496,7 @@ class BBCooker:
bb.build.del_stamp('do_%s' % self.configuration.cmd, self.configuration.data)
# Setup taskdata structure
taskdata = bb.taskdata.TaskData(self.configuration.abort)
taskdata = bb.taskdata.TaskData(self.configuration.abort, self.configuration.tryaltconfigs)
taskdata.add_provider(self.configuration.data, self.status, item)
buildname = bb.data.getVar("BUILDNAME", self.configuration.data)
@@ -530,7 +530,7 @@ class BBCooker:
bb.data.update_data(localdata)
bb.data.expandKeys(localdata)
taskdata = bb.taskdata.TaskData(self.configuration.abort)
taskdata = bb.taskdata.TaskData(self.configuration.abort, self.configuration.tryaltconfigs)
runlist = []
try:
@@ -573,7 +573,7 @@ class BBCooker:
self.status = bb.cache.CacheData()
ignore = bb.data.getVar("ASSUME_PROVIDED", self.configuration.data, 1) or ""
self.status.ignored_dependencies = Set( ignore.split() )
self.status.ignored_dependencies = set( ignore.split() )
self.handleCollections( bb.data.getVar("BBFILE_COLLECTIONS", self.configuration.data, 1) )
@@ -592,6 +592,9 @@ class BBCooker:
build.
"""
# Wipe the OS environment
bb.utils.empty_environment()
if self.configuration.show_environment:
self.showEnvironment(self.configuration.buildfile, self.configuration.pkgs_to_build)
sys.exit( 0 )
@@ -609,6 +612,9 @@ class BBCooker:
# initialise the parsing status now we know we will need deps
self.updateCache()
if self.configuration.revisions_changed:
sys.exit(bb.fetch.fetcher_compare_revisons(self.configuration.data))
if self.configuration.parse_only:
bb.msg.note(1, bb.msg.domain.Collection, "Requested parsing .bb files only. Exiting.")
return 0
@@ -684,7 +690,11 @@ class BBCooker:
if dirfiles:
newfiles += dirfiles
continue
newfiles += glob.glob(f) or [ f ]
else:
globbed = glob.glob(f)
if not globbed and os.path.exists(f):
globbed = [f]
newfiles += globbed
bbmask = bb.data.getVar('BBMASK', self.configuration.data, 1)
@@ -697,9 +707,8 @@ class BBCooker:
bb.msg.fatal(bb.msg.domain.Collection, "BBMASK is not a valid regular expression.")
finalfiles = []
for i in xrange( len( newfiles ) ):
f = newfiles[i]
if bbmask and bbmask_compiled.search(f):
for f in newfiles:
if bbmask_compiled.search(f):
bb.msg.debug(1, bb.msg.domain.Collection, "skipping masked file %s" % f)
masked += 1
continue
@@ -716,7 +725,7 @@ class BBCooker:
# read a file's metadata
try:
fromCache, skip = self.bb_cache.loadData(f, self.configuration.data)
fromCache, skip = self.bb_cache.loadData(f, self.configuration.data, self.status)
if skip:
skipped += 1
bb.msg.debug(2, bb.msg.domain.Collection, "skipping %s" % f)
@@ -724,7 +733,6 @@ class BBCooker:
continue
elif fromCache: cached += 1
else: parsed += 1
deps = None
# Disabled by RP as was no longer functional
# allow metadata files to add items to BBFILES
@@ -737,8 +745,6 @@ class BBCooker:
# aof = os.path.join(os.path.dirname(f),aof)
# files.append(aof)
self.bb_cache.handle_data(f, self.status)
# now inform the caller
if progressCallback is not None:
progressCallback( i + 1, len( filelist ), f, fromCache )

View File

@@ -324,21 +324,14 @@ def expandData(alterdata, readdata = None):
if val != expanded:
setVar(key, expanded, alterdata)
import os
def inheritFromOS(d):
"""Inherit variables from the environment."""
# fakeroot needs to be able to set these
non_inherit_vars = [ "LD_LIBRARY_PATH", "LD_PRELOAD" ]
for s in os.environ.keys():
if not s in non_inherit_vars:
try:
setVar(s, os.environ[s], d)
setVarFlag(s, 'matchesenv', '1', d)
except TypeError:
pass
import sys
try:
setVar(s, os.environ[s], d)
setVarFlag(s, "export", True, d)
except TypeError:
pass
def emit_var(var, o=sys.__stdout__, d = init(), all=False):
"""Emit a variable to be sourced by a shell."""
@@ -379,9 +372,6 @@ def emit_var(var, o=sys.__stdout__, d = init(), all=False):
o.write('unset %s\n' % varExpanded)
return 1
if getVarFlag(var, 'matchesenv', d):
return 0
val.rstrip()
if not val:
return 0
@@ -563,7 +553,9 @@ def inherits_class(klass, d):
def _test():
"""Start a doctest run on this module"""
import doctest
import bb
from bb import data
bb.msg.set_debug_level(0)
doctest.testmod(data)
if __name__ == "__main__":

View File

@@ -32,7 +32,6 @@ import copy, os, re, sys, time, types
import bb
from bb import utils, methodpool
from COW import COWDictBase
from sets import Set
from new import classobj
@@ -142,22 +141,19 @@ class DataSmart:
try:
self._special_values[keyword].add( base )
except:
self._special_values[keyword] = Set()
self._special_values[keyword] = set()
self._special_values[keyword].add( base )
return
if not var in self.dict:
self._makeShadowCopy(var)
if self.getVarFlag(var, 'matchesenv'):
self.delVarFlag(var, 'matchesenv')
self.setVarFlag(var, 'export', 1)
# more cookies for the cookie monster
if '_' in var:
override = var[var.rfind('_')+1:]
if not self._seen_overrides.has_key(override):
self._seen_overrides[override] = Set()
self._seen_overrides[override] = set()
self._seen_overrides[override].add( var )
# setting var
@@ -175,14 +171,15 @@ class DataSmart:
Rename the variable key to newkey
"""
val = self.getVar(key, 0)
if val is None:
return
self.setVar(newkey, val)
if val is not None:
self.setVar(newkey, val)
for i in ('_append', '_prepend'):
src = self.getVarFlag(key, i)
if src is None:
continue
dest = self.getVarFlag(newkey, i) or []
src = self.getVarFlag(key, i) or []
dest.extend(src)
self.setVarFlag(newkey, i, dest)

View File

@@ -84,6 +84,7 @@ def uri_replace(uri, uri_find, uri_replace, d):
methods = []
urldata_cache = {}
saved_headrevs = {}
def fetcher_init(d):
"""
@@ -97,6 +98,10 @@ def fetcher_init(d):
bb.msg.debug(1, bb.msg.domain.Fetcher, "Keeping SRCREV cache due to cache policy of: %s" % srcrev_policy)
elif srcrev_policy == "clear":
bb.msg.debug(1, bb.msg.domain.Fetcher, "Clearing SRCREV cache due to cache policy of: %s" % srcrev_policy)
try:
bb.fetch.saved_headrevs = pd.getKeyValues("BB_URI_HEADREVS")
except:
pass
pd.delDomain("BB_URI_HEADREVS")
else:
bb.msg.fatal(bb.msg.domain.Fetcher, "Invalid SRCREV cache policy of: %s" % srcrev_policy)
@@ -104,6 +109,26 @@ def fetcher_init(d):
pd.addDomain("BB_URI_HEADREVS")
pd.addDomain("BB_URI_LOCALCOUNT")
def fetcher_compare_revisons(d):
"""
Compare the revisions in the persistant cache with current values and
return true/false on whether they've changed.
"""
pd = persist_data.PersistData(d)
data = pd.getKeyValues("BB_URI_HEADREVS")
data2 = bb.fetch.saved_headrevs
changed = False
for key in data:
if key not in data2 or data2[key] != data[key]:
bb.msg.debug(1, bb.msg.domain.Fetcher, "%s changed" % key)
changed = True
return True
else:
bb.msg.debug(2, bb.msg.domain.Fetcher, "%s did not change" % key)
return False
# Function call order is usually:
# 1. init
# 2. go
@@ -128,14 +153,16 @@ def init(urls, d, setup = True):
urldata_cache[fn] = urldata
return urldata
def go(d):
def go(d, urls = None):
"""
Fetch all urls
init must have previously been called
"""
urldata = init([], d, True)
if not urls:
urls = d.getVar("SRC_URI", 1).split()
urldata = init(urls, d, True)
for u in urldata:
for u in urls:
ud = urldata[u]
m = ud.method
if ud.localfile:
@@ -232,6 +259,8 @@ def get_srcrev(d):
bb.msg.error(bb.msg.domain.Fetcher, "SRCREV was used yet no valid SCM was found in SRC_URI")
raise ParameterError
bb.data.setVar('__BB_DONT_CACHE','1', d)
if len(scms) == 1:
return urldata[scms[0]].method.sortable_revision(scms[0], urldata[scms[0]], d)
@@ -272,7 +301,7 @@ def runfetchcmd(cmd, d, quiet = False):
# rather than host provided
# Also include some other variables.
# FIXME: Should really include all export varaiables?
exportvars = ['PATH', 'GIT_PROXY_HOST', 'GIT_PROXY_PORT', 'GIT_PROXY_COMMAND']
exportvars = ['PATH', 'GIT_PROXY_COMMAND', 'GIT_PROXY_HOST', 'GIT_PROXY_PORT', 'GIT_CONFIG', 'http_proxy', 'ftp_proxy', 'SSH_AUTH_SOCK', 'SSH_AGENT_PID', 'HOME']
for var in exportvars:
val = data.getVar(var, d, True)
@@ -313,6 +342,10 @@ class FetchData(object):
(self.type, self.host, self.path, self.user, self.pswd, self.parm) = bb.decodeurl(data.expand(url, d))
self.date = Fetch.getSRCDate(self, d)
self.url = url
if not self.user and "user" in self.parm:
self.user = self.parm["user"]
if not self.pswd and "pswd" in self.parm:
self.pswd = self.parm["pswd"]
self.setup = False
for m in methods:
if m.supports(url, self, d):
@@ -326,9 +359,11 @@ class FetchData(object):
# if user sets localpath for file, use it instead.
self.localpath = self.parm["localpath"]
else:
bb.fetch.srcrev_internal_call = True
self.localpath = self.method.localpath(self.url, self, d)
bb.fetch.srcrev_internal_call = False
try:
bb.fetch.srcrev_internal_call = True
self.localpath = self.method.localpath(self.url, self, d)
finally:
bb.fetch.srcrev_internal_call = False
# We have to clear data's internal caches since the cached value of SRCREV is now wrong.
# Horrible...
bb.data.delVar("ISHOULDNEVEREXIST", d)
@@ -463,6 +498,12 @@ class Fetch(object):
uri = stash + tarfn
bb.msg.note(1, bb.msg.domain.Fetcher, "fetch " + uri)
fetchcmd = fetchcmd.replace("${URI}", uri)
httpproxy = data.getVar("http_proxy", d, True)
ftpproxy = data.getVar("ftp_proxy", d, True)
if httpproxy:
fetchcmd = "http_proxy=" + httpproxy + " " + fetchcmd
if ftpproxy:
fetchcmd = "ftp_proxy=" + ftpproxy + " " + fetchcmd
ret = os.system(fetchcmd)
if ret == 0:
bb.msg.note(1, bb.msg.domain.Fetcher, "Fetched %s from tarball stash, skipping checkout" % tarfn)
@@ -502,7 +543,7 @@ class Fetch(object):
raise ParameterError
pd = persist_data.PersistData(d)
key = self._revision_key(url, ud, d)
key = self.generate_revision_key(url, ud, d)
rev = pd.getValue("BB_URI_HEADREVS", key)
if rev != None:
return str(rev)
@@ -515,11 +556,13 @@ class Fetch(object):
"""
"""
if hasattr(self, "_sortable_revision"):
has_sortable = hasattr(self, "_sortable_revision")
if has_sortable:
return self._sortable_revision(url, ud, d)
pd = persist_data.PersistData(d)
key = self._revision_key(url, ud, d)
key = self.generate_revision_key(url, ud, d)
latest_rev = self._build_revision(url, ud, d)
last_rev = pd.getValue("BB_URI_LOCALCOUNT", key + "_rev")
count = pd.getValue("BB_URI_LOCALCOUNT", key + "_count")
@@ -537,6 +580,9 @@ class Fetch(object):
return str(count + "+" + latest_rev)
def generate_revision_key(self, url, ud, d):
key = self._revision_key(url, ud, d)
return "%s-%s" % (key, bb.data.getVar("PN", d, True) or "")
import cvs
import git
@@ -548,6 +594,7 @@ import ssh
import perforce
import bzr
import hg
import osc
methods.append(local.Local())
methods.append(wget.Wget())
@@ -559,3 +606,4 @@ methods.append(ssh.SSH())
methods.append(perforce.Perforce())
methods.append(bzr.Bzr())
methods.append(hg.Hg())
methods.append(osc.Osc())

View File

@@ -118,7 +118,11 @@ class Cvs(Fetch):
if 'norecurse' in ud.parm:
options.append("-l")
if ud.date:
options.append("-D \"%s UTC\"" % ud.date)
# treat YYYYMMDDHHMM specially for CVS
if len(ud.date) == 12:
options.append("-D \"%s %s:%s UTC\"" % (ud.date[0:8], ud.date[8:10], ud.date[10:12]))
else:
options.append("-D \"%s UTC\"" % ud.date)
if ud.tag:
options.append("-r %s" % ud.tag)

View File

@@ -37,9 +37,12 @@ class Git(Fetch):
def localpath(self, url, ud, d):
ud.proto = "rsync"
if 'protocol' in ud.parm:
ud.proto = ud.parm['protocol']
elif not ud.host:
ud.proto = 'file'
else:
ud.proto = "rsync"
ud.branch = ud.parm.get("branch", "master")
@@ -49,12 +52,9 @@ class Git(Fetch):
elif tag:
ud.tag = tag
if not ud.tag:
if not ud.tag or ud.tag == "master":
ud.tag = self.latest_revision(url, ud, d)
if ud.tag == "master":
ud.tag = self.latest_revision(url, ud, d)
ud.localfile = data.expand('git_%s%s_%s.tar.gz' % (ud.host, ud.path.replace('/', '.'), ud.tag), d)
return os.path.join(data.getVar("DL_DIR", d, True), ud.localfile)
@@ -66,6 +66,11 @@ class Git(Fetch):
bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists (or was stashed). Skipping git checkout." % ud.localpath)
return
if ud.user:
username = ud.user + '@'
else:
username = ""
gitsrcname = '%s%s' % (ud.host, ud.path.replace('/', '.'))
repofilename = 'git_%s.tar.gz' % (gitsrcname)
@@ -81,15 +86,16 @@ class Git(Fetch):
os.chdir(repodir)
runfetchcmd("tar -xzf %s" % (repofile), d)
else:
runfetchcmd("git clone -n %s://%s%s %s" % (ud.proto, ud.host, ud.path, repodir), d)
runfetchcmd("git clone -n %s://%s%s%s %s" % (ud.proto, username, ud.host, ud.path, repodir), d)
os.chdir(repodir)
# Remove all but the .git directory
runfetchcmd("rm * -Rf", d)
runfetchcmd("git fetch %s://%s%s %s" % (ud.proto, ud.host, ud.path, ud.branch), d)
runfetchcmd("git fetch --tags %s://%s%s" % (ud.proto, ud.host, ud.path), d)
runfetchcmd("git prune-packed", d)
runfetchcmd("git pack-redundant --all | xargs -r rm", d)
if not self._contains_ref(ud.tag, d):
runfetchcmd("rm * -Rf", d)
runfetchcmd("git fetch %s://%s%s%s %s" % (ud.proto, username, ud.host, ud.path, ud.branch), d)
runfetchcmd("git fetch --tags %s://%s%s%s" % (ud.proto, username, ud.host, ud.path), d)
runfetchcmd("git prune-packed", d)
runfetchcmd("git pack-redundant --all | xargs -r rm", d)
os.chdir(repodir)
mirror_tarballs = data.getVar("BB_GENERATE_MIRROR_TARBALLS", d, True)
@@ -115,6 +121,10 @@ class Git(Fetch):
def suppports_srcrev(self):
return True
def _contains_ref(self, tag, d):
output = runfetchcmd("git log --pretty=oneline -n 1 %s -- 2> /dev/null | wc -l" % tag, d, quiet=True)
return output.split()[0] != "0"
def _revision_key(self, url, ud, d):
"""
Return a unique key for the url
@@ -125,9 +135,55 @@ class Git(Fetch):
"""
Compute the HEAD revision for the url
"""
output = runfetchcmd("git ls-remote %s://%s%s %s" % (ud.proto, ud.host, ud.path, ud.branch), d, True)
if ud.user:
username = ud.user + '@'
else:
username = ""
output = runfetchcmd("git ls-remote %s://%s%s%s %s" % (ud.proto, username, ud.host, ud.path, ud.branch), d, True)
return output.split()[0]
def _build_revision(self, url, ud, d):
return ud.tag
def _want_sortable_revision(self, url, ud, d):
return bb.data.getVar("BB_GIT_CLONE_FOR_SRCREV", d, True) or False
def _sortable_revision_disabled(self, url, ud, d):
"""
This is only called when _want_sortable_revision called true
We will have to get the updated revision.
"""
gitsrcname = '%s%s' % (ud.host, ud.path.replace('/', '.'))
repodir = os.path.join(data.expand('${GITDIR}', d), gitsrcname)
key = "GIT_CACHED_REVISION-%s-%s" % (gitsrcname, ud.tag)
if bb.data.getVar(key, d):
return bb.data.getVar(key, d)
# Runtime warning on wrongly configured sources
if ud.tag == "1":
bb.msg.error(1, bb.msg.domain.Fetcher, "SRCREV is '1'. This indicates a configuration error of %s" % url)
return "0+1"
cwd = os.getcwd()
# Check if we have the rev already
if not os.path.exists(repodir):
print "no repo"
self.go(None, ud, d)
os.chdir(repodir)
if not self._contains_ref(ud.tag, d):
self.go(None, ud, d)
output = runfetchcmd("git rev-list %s -- 2> /dev/null | wc -l" % ud.tag, d, quiet=True)
os.chdir(cwd)
sortable_revision = "%s+%s" % (output.split()[0], ud.tag)
bb.data.setVar(key, sortable_revision, d)
return sortable_revision

View File

@@ -57,6 +57,14 @@ class Hg(Fetch):
if 'rev' in ud.parm:
ud.revision = ud.parm['rev']
else:
tag = Fetch.srcrev_internal_helper(ud, d)
if tag is True:
ud.revision = self.latest_revision(url, ud, d)
elif tag:
ud.revision = tag
else:
ud.revision = self.latest_revision(url, ud, d)
ud.localfile = data.expand('%s_%s_%s_%s.tar.gz' % (ud.module.replace('/', '.'), ud.host, ud.path.replace('/', '.'), ud.revision), d)
@@ -79,7 +87,7 @@ class Hg(Fetch):
host = "/"
ud.host = "localhost"
if ud.user == None:
if not ud.user:
hgroot = host + ud.path
else:
hgroot = ud.user + "@" + host + ud.path
@@ -123,9 +131,6 @@ class Hg(Fetch):
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % updatecmd)
runfetchcmd(updatecmd, d)
updatecmd = self._buildhgcommand(ud, d, "update")
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % updatecmd)
runfetchcmd(updatecmd, d)
else:
fetchcmd = self._buildhgcommand(ud, d, "fetch")
bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
@@ -134,6 +139,12 @@ class Hg(Fetch):
os.chdir(ud.pkgdir)
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % fetchcmd)
runfetchcmd(fetchcmd, d)
# Even when we clone (fetch), we still need to update as hg's clone
# won't checkout the specified revision if its on a branch
updatecmd = self._buildhgcommand(ud, d, "update")
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % updatecmd)
runfetchcmd(updatecmd, d)
os.chdir(ud.pkgdir)
try:
@@ -145,3 +156,23 @@ class Hg(Fetch):
except OSError:
pass
raise t, v, tb
def suppports_srcrev(self):
return True
def _latest_revision(self, url, ud, d):
"""
Compute tip revision for the url
"""
output = runfetchcmd(self._buildhgcommand(ud, d, "info"), d)
return output.strip()
def _build_revision(self, url, ud, d):
return ud.revision
def _revision_key(self, url, ud, d):
"""
Return a unique key for the url
"""
return "hg:" + ud.moddir

155
bitbake/lib/bb/fetch/osc.py Normal file
View File

@@ -0,0 +1,155 @@
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
"""
Bitbake "Fetch" implementation for osc (Opensuse build service client).
Based on the svn "Fetch" implementation.
"""
import os
import sys
import bb
from bb import data
from bb.fetch import Fetch
from bb.fetch import FetchError
from bb.fetch import MissingParameterError
from bb.fetch import runfetchcmd
class Osc(Fetch):
"""Class to fetch a module or modules from Opensuse build server
repositories."""
def supports(self, url, ud, d):
"""
Check to see if a given url can be fetched with osc.
"""
return ud.type in ['osc']
def localpath(self, url, ud, d):
if not "module" in ud.parm:
raise MissingParameterError("osc method needs a 'module' parameter.")
ud.module = ud.parm["module"]
# Create paths to osc checkouts
relpath = ud.path
if relpath.startswith('/'):
# Remove leading slash as os.path.join can't cope
relpath = relpath[1:]
ud.pkgdir = os.path.join(data.expand('${OSCDIR}', d), ud.host)
ud.moddir = os.path.join(ud.pkgdir, relpath, ud.module)
if 'rev' in ud.parm:
ud.revision = ud.parm['rev']
else:
pv = data.getVar("PV", d, 0)
rev = Fetch.srcrev_internal_helper(ud, d)
if rev and rev != True:
ud.revision = rev
else:
ud.revision = ""
ud.localfile = data.expand('%s_%s_%s.tar.gz' % (ud.module.replace('/', '.'), ud.path.replace('/', '.'), ud.revision), d)
return os.path.join(data.getVar("DL_DIR", d, True), ud.localfile)
def _buildosccommand(self, ud, d, command):
"""
Build up an ocs commandline based on ud
command is "fetch", "update", "info"
"""
basecmd = data.expand('${FETCHCMD_osc}', d)
proto = "ocs"
if "proto" in ud.parm:
proto = ud.parm["proto"]
options = []
config = "-c %s" % self.generate_config(ud, d)
if ud.revision:
options.append("-r %s" % ud.revision)
coroot = ud.path
if coroot.startswith('/'):
# Remove leading slash as os.path.join can't cope
coroot= coroot[1:]
if command is "fetch":
osccmd = "%s %s co %s/%s %s" % (basecmd, config, coroot, ud.module, " ".join(options))
elif command is "update":
osccmd = "%s %s up %s" % (basecmd, config, " ".join(options))
else:
raise FetchError("Invalid osc command %s" % command)
return osccmd
def go(self, loc, ud, d):
"""
Fetch url
"""
# Try to use the tarball stash
if Fetch.try_mirror(d, ud.localfile):
bb.msg.debug(1, bb.msg.domain.Fetcher, "%s already exists or was mirrored, skipping osc checkout." % ud.localpath)
return
bb.msg.debug(2, bb.msg.domain.Fetcher, "Fetch: checking for module directory '" + ud.moddir + "'")
if os.access(os.path.join(data.expand('${OSCDIR}', d), ud.path, ud.module), os.R_OK):
oscupdatecmd = self._buildosccommand(ud, d, "update")
bb.msg.note(1, bb.msg.domain.Fetcher, "Update "+ loc)
# update sources there
os.chdir(ud.moddir)
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % oscupdatecmd)
runfetchcmd(oscupdatecmd, d)
else:
oscfetchcmd = self._buildosccommand(ud, d, "fetch")
bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
# check out sources there
bb.mkdirhier(ud.pkgdir)
os.chdir(ud.pkgdir)
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s" % oscfetchcmd)
runfetchcmd(oscfetchcmd, d)
os.chdir(os.path.join(ud.pkgdir + ud.path))
# tar them up to a defined filename
try:
runfetchcmd("tar -czf %s %s" % (ud.localpath, ud.module), d)
except:
t, v, tb = sys.exc_info()
try:
os.unlink(ud.localpath)
except OSError:
pass
raise t, v, tb
def supports_srcrev(self):
return False
def generate_config(self, ud, d):
"""
Generate a .oscrc to be used for this run.
"""
config_path = "%s/oscrc" % data.expand('${OSCDIR}', d)
if (os.path.exists(config_path)):
os.remove(config_path)
f = open(config_path, 'w')
f.write("[general]\n")
f.write("apisrv = %s\n" % ud.host)
f.write("scheme = http\n")
f.write("su-wrapper = su -c\n")
f.write("build-root = %s\n" % data.expand('${WORKDIR}', d))
f.write("urllist = http://moblin-obs.jf.intel.com:8888/build/%(project)s/%(repository)s/%(buildarch)s/:full/%(name)s.rpm\n")
f.write("extra-pkgs = gzip\n")
f.write("\n")
f.write("[%s]\n" % ud.host)
f.write("user = %s\n" % ud.parm["user"])
f.write("pass = %s\n" % ud.parm["pswd"])
f.close()
return config_path

View File

@@ -67,14 +67,15 @@ class Perforce(Fetch):
doparse = staticmethod(doparse)
def getcset(d, depot,host,user,pswd,parm):
p4opt = ""
if "cset" in parm:
return parm["cset"];
if user:
data.setVar('P4USER', user, d)
p4opt += " -u %s" % (user)
if pswd:
data.setVar('P4PASSWD', pswd, d)
p4opt += " -P %s" % (pswd)
if host:
data.setVar('P4PORT', host, d)
p4opt += " -p %s" % (host)
p4date = data.getVar("P4DATE", d, 1)
if "revision" in parm:
@@ -85,8 +86,8 @@ class Perforce(Fetch):
depot += "@%s" % (p4date)
p4cmd = data.getVar('FETCHCOMMAND_p4', d, 1)
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s changes -m 1 %s" % (p4cmd, depot))
p4file = os.popen("%s changes -m 1 %s" % (p4cmd,depot))
bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s%s changes -m 1 %s" % (p4cmd, p4opt, depot))
p4file = os.popen("%s%s changes -m 1 %s" % (p4cmd, p4opt, depot))
cset = p4file.readline().strip()
bb.msg.debug(1, bb.msg.domain.Fetcher, "READ %s" % (cset))
if not cset:
@@ -146,14 +147,15 @@ class Perforce(Fetch):
data.update_data(localdata)
# Get the p4 command
p4opt = ""
if user:
data.setVar('P4USER', user, localdata)
p4opt += " -u %s" % (user)
if pswd:
data.setVar('P4PASSWD', pswd, localdata)
p4opt += " -P %s" % (pswd)
if host:
data.setVar('P4PORT', host, localdata)
p4opt += " -p %s" % (host)
p4cmd = data.getVar('FETCHCOMMAND', localdata, 1)
@@ -175,8 +177,8 @@ class Perforce(Fetch):
os.chdir(tmpfile)
bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
bb.msg.note(1, bb.msg.domain.Fetcher, "%s files %s" % (p4cmd, depot))
p4file = os.popen("%s files %s" % (p4cmd, depot))
bb.msg.note(1, bb.msg.domain.Fetcher, "%s%s files %s" % (p4cmd, p4opt, depot))
p4file = os.popen("%s%s files %s" % (p4cmd, p4opt, depot))
if not p4file:
bb.error("Fetch: unable to get the P4 files from %s" % (depot))
@@ -193,7 +195,7 @@ class Perforce(Fetch):
dest = list[0][len(path)+1:]
where = dest.find("#")
os.system("%s print -o %s/%s %s" % (p4cmd, module,dest[:where],list[0]))
os.system("%s%s print -o %s/%s %s" % (p4cmd, p4opt, module,dest[:where],list[0]))
count = count + 1
if count == 0:

View File

@@ -25,7 +25,7 @@ This implementation is for svk. It is based on the svn implementation
#
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
import os, re
import os
import bb
from bb import data
from bb.fetch import Fetch
@@ -67,10 +67,10 @@ class Svk(Fetch):
svkroot = ud.host + ud.path
svkcmd = "svk co -r {%s} %s/%s" % (date, svkroot, ud.module)
svkcmd = "svk co -r {%s} %s/%s" % (ud.date, svkroot, ud.module)
if ud.revision:
svkcmd = "svk co -r %s/%s" % (ud.revision, svkroot, ud.module)
svkcmd = "svk co -r %s %s/%s" % (ud.revision, svkroot, ud.module)
# create temp directory
localdata = data.createCopy(d)

View File

@@ -114,13 +114,15 @@ class Svn(Fetch):
if command is "info":
svncmd = "%s info %s %s://%s/%s/" % (basecmd, " ".join(options), proto, svnroot, ud.module)
else:
suffix = ""
if ud.revision:
options.append("-r %s" % ud.revision)
suffix = "@%s" % (ud.revision)
elif ud.date:
options.append("-r {%s}" % ud.date)
if command is "fetch":
svncmd = "%s co %s %s://%s/%s %s" % (basecmd, " ".join(options), proto, svnroot, ud.module, ud.module)
svncmd = "%s co %s %s://%s/%s%s %s" % (basecmd, " ".join(options), proto, svnroot, ud.module, suffix, ud.module)
elif command is "update":
svncmd = "%s update %s" % (basecmd, " ".join(options))
else:

View File

@@ -60,9 +60,34 @@ class Wget(Fetch):
else:
fetchcmd = data.getVar("FETCHCOMMAND", d, 1)
uri = uri.split(";")[0]
uri_decoded = list(bb.decodeurl(uri))
uri_type = uri_decoded[0]
uri_host = uri_decoded[1]
bb.msg.note(1, bb.msg.domain.Fetcher, "fetch " + uri)
fetchcmd = fetchcmd.replace("${URI}", uri)
fetchcmd = fetchcmd.replace("${URI}", uri.split(";")[0])
fetchcmd = fetchcmd.replace("${FILE}", ud.basename)
httpproxy = None
ftpproxy = None
if uri_type == 'http':
httpproxy = data.getVar("HTTP_PROXY", d, True)
httpproxy_ignore = (data.getVar("HTTP_PROXY_IGNORE", d, True) or "").split()
for p in httpproxy_ignore:
if uri_host.endswith(p):
httpproxy = None
break
if uri_type == 'ftp':
ftpproxy = data.getVar("FTP_PROXY", d, True)
ftpproxy_ignore = (data.getVar("HTTP_PROXY_IGNORE", d, True) or "").split()
for p in ftpproxy_ignore:
if uri_host.endswith(p):
ftpproxy = None
break
if httpproxy:
fetchcmd = "http_proxy=" + httpproxy + " " + fetchcmd
if ftpproxy:
fetchcmd = "ftp_proxy=" + ftpproxy + " " + fetchcmd
bb.msg.debug(2, bb.msg.domain.Fetcher, "executing " + fetchcmd)
ret = os.system(fetchcmd)
if ret != 0:
@@ -70,7 +95,7 @@ class Wget(Fetch):
# Sanity check since wget can pretend it succeed when it didn't
# Also, this used to happen if sourceforge sent us to the mirror page
if not os.path.exists(ud.localpath):
if not os.path.exists(ud.localpath) and not checkonly:
bb.msg.debug(2, bb.msg.domain.Fetcher, "The fetch command for %s returned success but %s doesn't exist?..." % (uri, ud.localpath))
return False

View File

@@ -25,7 +25,7 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import re, bb, os, sys, time
import re, bb, os, sys, time, string
import bb.fetch, bb.build, bb.utils
from bb import data, fetch, methodpool
@@ -76,6 +76,45 @@ def inherit(files, d):
include(fn, file, d, "inherit")
__inherit_cache = data.getVar('__inherit_cache', d) or []
def finalise(fn, d):
data.expandKeys(d)
data.update_data(d)
anonqueue = data.getVar("__anonqueue", d, 1) or []
body = [x['content'] for x in anonqueue]
flag = { 'python' : 1, 'func' : 1 }
data.setVar("__anonfunc", "\n".join(body), d)
data.setVarFlags("__anonfunc", flag, d)
from bb import build
try:
t = data.getVar('T', d)
data.setVar('T', '${TMPDIR}/', d)
anonfuncs = data.getVar('__BBANONFUNCS', d) or []
code = ""
for f in anonfuncs:
code = code + " %s(d)\n" % f
data.setVar("__anonfunc", code, d)
build.exec_func_python("__anonfunc", d)
data.delVar('T', d)
if t:
data.setVar('T', t, d)
except Exception, e:
bb.msg.debug(1, bb.msg.domain.Parsing, "Exception when executing anonymous function: %s" % e)
raise
data.delVar("__anonqueue", d)
data.delVar("__anonfunc", d)
data.update_data(d)
all_handlers = {}
for var in data.getVar('__BBHANDLERS', d) or []:
# try to add the handler
handler = data.getVar(var,d)
bb.event.register(var, handler)
tasklist = data.getVar('__BBTASKS', d) or []
bb.build.add_tasks(tasklist, d)
def handle(fn, d, include = 0):
global __func_start_regexp__, __inherit_regexp__, __export_func_regexp__, __addtask_regexp__, __addhandler_regexp__, __infunc__, __body__, __residue__
__body__ = []
@@ -116,17 +155,11 @@ def handle(fn, d, include = 0):
f = open(j, 'r')
break
if f is None:
raise IOError("file not found")
raise IOError("file %s not found" % fn)
else:
f = open(fn,'r')
abs_fn = fn
if ext != ".bbclass":
dname = os.path.dirname(abs_fn)
if bbpath[0] != dname:
bbpath.insert(0, dname)
data.setVar('BBPATH', ":".join(bbpath), d)
if include:
bb.parse.mark_dependency(d, abs_fn)
@@ -147,38 +180,21 @@ def handle(fn, d, include = 0):
classes.remove(__classname__)
else:
if include == 0:
data.expandKeys(d)
data.update_data(d)
anonqueue = data.getVar("__anonqueue", d, 1) or []
body = [x['content'] for x in anonqueue]
flag = { 'python' : 1, 'func' : 1 }
data.setVar("__anonfunc", "\n".join(body), d)
data.setVarFlags("__anonfunc", flag, d)
from bb import build
try:
t = data.getVar('T', d)
data.setVar('T', '${TMPDIR}/', d)
build.exec_func("__anonfunc", d)
data.delVar('T', d)
if t:
data.setVar('T', t, d)
except Exception, e:
bb.msg.debug(1, bb.msg.domain.Parsing, "Exception when executing anonymous function: %s" % e)
raise
data.delVar("__anonqueue", d)
data.delVar("__anonfunc", d)
set_additional_vars(fn, d, include)
data.update_data(d)
all_handlers = {}
for var in data.getVar('__BBHANDLERS', d) or []:
# try to add the handler
handler = data.getVar(var,d)
bb.event.register(var, handler)
tasklist = data.getVar('__BBTASKS', d) or []
bb.build.add_tasks(tasklist, d)
multi = data.getVar('BBCLASSEXTEND', d, 1)
if multi:
based = bb.data.createCopy(d)
finalise(fn, based)
darray = {"": based}
for cls in multi.split():
pn = data.getVar('PN', d, True)
based = bb.data.createCopy(d)
data.setVar('PN', pn + '-' + cls, based)
inherit([cls], based)
finalise(fn, based)
darray[cls] = based
return darray
else:
finalise(fn, d)
bbpath.pop(0)
if oldfile:
bb.data.setVar("FILE", oldfile, d)
@@ -194,17 +210,17 @@ def feeder(lineno, s, fn, root, d):
if __infunc__:
if s == '}':
__body__.append('')
data.setVar(__infunc__, '\n'.join(__body__), d)
data.setVarFlag(__infunc__, "func", 1, d)
if __infunc__ == "__anonymous":
anonqueue = bb.data.getVar("__anonqueue", d) or []
anonitem = {}
anonitem["content"] = bb.data.getVar("__anonymous", d)
anonitem["flags"] = bb.data.getVarFlags("__anonymous", d)
anonqueue.append(anonitem)
bb.data.setVar("__anonqueue", anonqueue, d)
bb.data.delVarFlags("__anonymous", d)
bb.data.delVar("__anonymous", d)
funcname = ("__anon_%s_%s" % (lineno, fn.translate(string.maketrans('/.+-', '____'))))
if not funcname in methodpool._parsed_fns:
text = "def %s(d):\n" % (funcname) + '\n'.join(__body__)
methodpool.insert_method(funcname, text, fn)
anonfuncs = data.getVar('__BBANONFUNCS', d) or []
anonfuncs.append(funcname)
data.setVar('__BBANONFUNCS', anonfuncs, d)
else:
data.setVarFlag(__infunc__, "func", 1, d)
data.setVar(__infunc__, '\n'.join(__body__), d)
__infunc__ = ""
__body__ = []
else:
@@ -223,13 +239,6 @@ def feeder(lineno, s, fn, root, d):
if not root in __parsed_methods__:
text = '\n'.join(__body__)
methodpool.insert_method( root, text, fn )
funcs = data.getVar('__functions__', d) or {}
if not funcs.has_key( root ):
funcs[root] = text
else:
funcs[root] = "%s\n%s" % (funcs[root], text)
data.setVar('__functions__', funcs, d)
__body__ = []
__inpython__ = False
@@ -384,32 +393,6 @@ def vars_from_file(mypkg, d):
parts.extend(tmplist)
return parts
def set_additional_vars(file, d, include):
"""Deduce rest of variables, e.g. ${A} out of ${SRC_URI}"""
return
# Nothing seems to use this variable
#bb.msg.debug(2, bb.msg.domain.Parsing, "BB %s: set_additional_vars" % file)
#src_uri = data.getVar('SRC_URI', d, 1)
#if not src_uri:
# return
#a = (data.getVar('A', d, 1) or '').split()
#from bb import fetch
#try:
# ud = fetch.init(src_uri.split(), d)
# a += fetch.localpaths(d, ud)
#except fetch.NoMethodError:
# pass
#except bb.MalformedUrl,e:
# raise ParseError("Unable to generate local paths for SRC_URI due to malformed uri: %s" % e)
#del fetch
#data.setVar('A', " ".join(a), d)
# Add us to the handlers list
from bb.parse import handlers
handlers.append({'supports': supports, 'handle': handle, 'init': init})

View File

@@ -102,6 +102,13 @@ def include(oldfn, fn, data, error_out):
fn = bb.data.expand(fn, data)
oldfn = bb.data.expand(oldfn, data)
if not os.path.isabs(fn):
dname = os.path.dirname(oldfn)
bbpath = "%s:%s" % (dname, bb.data.getVar("BBPATH", data, 1))
abs_fn = bb.which(bbpath, fn)
if abs_fn:
fn = abs_fn
from bb.parse import handle
try:
ret = handle(fn, data, True)
@@ -118,7 +125,6 @@ def handle(fn, data, include = 0):
init(data)
if include == 0:
bb.data.inheritFromOS(data)
oldfile = None
else:
oldfile = bb.data.getVar('FILE', data)

View File

@@ -69,6 +69,17 @@ class PersistData:
"""
self.connection.execute("DROP TABLE IF EXISTS %s;" % domain)
def getKeyValues(self, domain):
"""
Return a list of key + value pairs for a domain
"""
ret = {}
data = self.connection.execute("SELECT key, value from %s;" % domain)
for row in data:
ret[str(row[0])] = str(row[1])
return ret
def getValue(self, domain, key):
"""
Return the value of a key for a domain

View File

@@ -260,9 +260,10 @@ def filterProvidersRunTime(providers, item, cfgData, dataCache):
pn = dataCache.pkg_fn[p]
provides = dataCache.pn_provides[pn]
for provide in provides:
bb.msg.note(2, bb.msg.domain.Provider, "checking PREFERRED_PROVIDER_%s" % (provide))
prefervar = bb.data.getVar('PREFERRED_PROVIDER_%s' % provide, cfgData, 1)
if prefervar == pn:
var = "PREFERRED_PROVIDERS_%s = %s" % (provide, prefervar)
var = "PREFERRED_PROVIDER_%s = %s" % (provide, prefervar)
bb.msg.note(2, bb.msg.domain.Provider, "selecting %s to satisfy runtime %s due to %s" % (pn, item, var))
preferred_vars.append(var)
eligible.remove(p)
@@ -273,12 +274,14 @@ def filterProvidersRunTime(providers, item, cfgData, dataCache):
numberPreferred = len(preferred)
if numberPreferred > 1:
bb.msg.error(bb.msg.domain.Provider, "Conflicting PREFERRED_PROVIDERS entries were found which resulted in an attempt to select multiple providers (%s) for runtime dependecy %s\nThe entries resulting in this conflict were: %s" % (preferred, item, preferred_vars))
bb.msg.error(bb.msg.domain.Provider, "Conflicting PREFERRED_PROVIDER entries were found which resulted in an attempt to select multiple providers (%s) for runtime dependecy %s\nThe entries resulting in this conflict were: %s" % (preferred, item, preferred_vars))
bb.msg.debug(1, bb.msg.domain.Provider, "sorted providers for %s are: %s" % (item, eligible))
return eligible, numberPreferred
regexp_cache = {}
def getRuntimeProviders(dataCache, rdepend):
"""
Return any providers of runtime dependency
@@ -297,11 +300,15 @@ def getRuntimeProviders(dataCache, rdepend):
# Only search dynamic packages if we can't find anything in other variables
for pattern in dataCache.packages_dynamic:
pattern = pattern.replace('+', "\+")
try:
regexp = re.compile(pattern)
except:
bb.msg.error(bb.msg.domain.Provider, "Error parsing re expression: %s" % pattern)
raise
if pattern in regexp_cache:
regexp = regexp_cache[pattern]
else:
try:
regexp = re.compile(pattern)
except:
bb.msg.error(bb.msg.domain.Provider, "Error parsing re expression: %s" % pattern)
raise
regexp_cache[pattern] = regexp
if regexp.match(rdepend):
rproviders += dataCache.packages_dynamic[pattern]

View File

@@ -23,7 +23,6 @@ Handles preparation and execution of a queue of tasks
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
from bb import msg, data, event, mkdirhier, utils
from sets import Set
import bb, os, sys
import signal
import stat
@@ -322,9 +321,10 @@ class RunQueue:
to optimise the execution order.
"""
depends = []
runq_build = []
recursive_tdepends = {}
runq_recrdepends = []
tdepends_fnid = {}
taskData = self.taskData
@@ -336,20 +336,51 @@ class RunQueue:
# Step A - Work out a list of tasks to run
#
# Taskdata gives us a list of possible providers for a every target
# ordered by priority (build_targets, run_targets). It also gives
# information on each of those providers.
# Taskdata gives us a list of possible providers for every build and run
# target ordered by priority. It also gives information on each of those
# providers.
#
# To create the actual list of tasks to execute we fix the list of
# providers and then resolve the dependencies into task IDs. This
# process is repeated for each type of dependency (tdepends, deptask,
# rdeptast, recrdeptask, idepends).
def add_build_dependencies(depids, tasknames, depends):
for depid in depids:
# Won't be in build_targets if ASSUME_PROVIDED
if depid not in taskData.build_targets:
continue
depdata = taskData.build_targets[depid][0]
if depdata is None:
continue
dep = taskData.fn_index[depdata]
for taskname in tasknames:
taskid = taskData.gettask_id(dep, taskname, False)
if taskid is not None:
depends.append(taskid)
def add_runtime_dependencies(depids, tasknames, depends):
for depid in depids:
if depid not in taskData.run_targets:
continue
depdata = taskData.run_targets[depid][0]
if depdata is None:
continue
dep = taskData.fn_index[depdata]
for taskname in tasknames:
taskid = taskData.gettask_id(dep, taskname, False)
if taskid is not None:
depends.append(taskid)
for task in range(len(taskData.tasks_name)):
depends = []
recrdepends = []
fnid = taskData.tasks_fnid[task]
fn = taskData.fn_index[fnid]
task_deps = self.dataCache.task_deps[fn]
bb.msg.debug(2, bb.msg.domain.RunQueue, "Processing %s:%s" %(fn, taskData.tasks_name[task]))
if fnid not in taskData.failed_fnids:
# Resolve task internal dependencies
@@ -363,14 +394,7 @@ class RunQueue:
# (makes sure sometask runs after someothertask of all DEPENDS)
if 'deptask' in task_deps and taskData.tasks_name[task] in task_deps['deptask']:
tasknames = task_deps['deptask'][taskData.tasks_name[task]].split()
for depid in taskData.depids[fnid]:
# Won't be in build_targets if ASSUME_PROVIDED
if depid in taskData.build_targets:
depdata = taskData.build_targets[depid][0]
if depdata is not None:
dep = taskData.fn_index[depdata]
for taskname in tasknames:
depends.append(taskData.gettask_id(dep, taskname))
add_build_dependencies(taskData.depids[fnid], tasknames, depends)
# Resolve 'rdeptask' dependencies
#
@@ -378,17 +402,14 @@ class RunQueue:
# (makes sure sometask runs after someothertask of all RDEPENDS)
if 'rdeptask' in task_deps and taskData.tasks_name[task] in task_deps['rdeptask']:
taskname = task_deps['rdeptask'][taskData.tasks_name[task]]
for depid in taskData.rdepids[fnid]:
if depid in taskData.run_targets:
depdata = taskData.run_targets[depid][0]
if depdata is not None:
dep = taskData.fn_index[depdata]
depends.append(taskData.gettask_id(dep, taskname))
add_runtime_dependencies(taskData.rdepids[fnid], [taskname], depends)
# Resolve inter-task dependencies
#
# e.g. do_sometask[depends] = "targetname:do_someothertask"
# (makes sure sometask runs after targetname's someothertask)
if fnid not in tdepends_fnid:
tdepends_fnid[fnid] = set()
idepends = taskData.tasks_idepends[task]
for (depid, idependtask) in idepends:
if depid in taskData.build_targets:
@@ -396,122 +417,22 @@ class RunQueue:
depdata = taskData.build_targets[depid][0]
if depdata is not None:
dep = taskData.fn_index[depdata]
depends.append(taskData.gettask_id(dep, idependtask))
taskid = taskData.gettask_id(dep, idependtask)
depends.append(taskid)
if depdata != fnid:
tdepends_fnid[fnid].add(taskid)
# Create a list of recursive dependent tasks (from tdepends) and cache
def get_recursive_tdepends(task):
if not task:
return []
if task in recursive_tdepends:
return recursive_tdepends[task]
fnid = taskData.tasks_fnid[task]
taskids = taskData.gettask_ids(fnid)
rectdepends = taskids
nextdeps = taskids
while len(nextdeps) != 0:
newdeps = []
for nextdep in nextdeps:
for tdepend in taskData.tasks_tdepends[nextdep]:
if tdepend not in rectdepends:
rectdepends.append(tdepend)
newdeps.append(tdepend)
nextdeps = newdeps
recursive_tdepends[task] = rectdepends
return rectdepends
# Using the list of tdepends for this task create a list of
# the recursive idepends we have
def get_recursive_idepends(task):
if not task:
return []
rectdepends = get_recursive_tdepends(task)
recidepends = []
for tdepend in rectdepends:
for idepend in taskData.tasks_idepends[tdepend]:
recidepends.append(idepend)
return recidepends
def add_recursive_build(depid, depfnid):
"""
Add build depends of depid to depends
(if we've not see it before)
(calls itself recursively)
"""
if str(depid) in dep_seen:
return
dep_seen.append(depid)
if depid in taskData.build_targets:
depdata = taskData.build_targets[depid][0]
if depdata is not None:
dep = taskData.fn_index[depdata]
# Need to avoid creating new tasks here
taskid = taskData.gettask_id(dep, taskname, False)
if taskid is not None:
depends.append(taskid)
fnid = taskData.tasks_fnid[taskid]
#print "Added %s (%s) due to %s" % (taskid, taskData.fn_index[fnid], taskData.fn_index[depfnid])
else:
fnid = taskData.getfn_id(dep)
for nextdepid in taskData.depids[fnid]:
if nextdepid not in dep_seen:
add_recursive_build(nextdepid, fnid)
for nextdepid in taskData.rdepids[fnid]:
if nextdepid not in rdep_seen:
add_recursive_run(nextdepid, fnid)
for (idependid, idependtask) in get_recursive_idepends(taskid):
if idependid not in dep_seen:
add_recursive_build(idependid, fnid)
def add_recursive_run(rdepid, depfnid):
"""
Add runtime depends of rdepid to depends
(if we've not see it before)
(calls itself recursively)
"""
if str(rdepid) in rdep_seen:
return
rdep_seen.append(rdepid)
if rdepid in taskData.run_targets:
depdata = taskData.run_targets[rdepid][0]
if depdata is not None:
dep = taskData.fn_index[depdata]
# Need to avoid creating new tasks here
taskid = taskData.gettask_id(dep, taskname, False)
if taskid is not None:
depends.append(taskid)
fnid = taskData.tasks_fnid[taskid]
#print "Added %s (%s) due to %s" % (taskid, taskData.fn_index[fnid], taskData.fn_index[depfnid])
else:
fnid = taskData.getfn_id(dep)
for nextdepid in taskData.depids[fnid]:
if nextdepid not in dep_seen:
add_recursive_build(nextdepid, fnid)
for nextdepid in taskData.rdepids[fnid]:
if nextdepid not in rdep_seen:
add_recursive_run(nextdepid, fnid)
for (idependid, idependtask) in get_recursive_idepends(taskid):
if idependid not in dep_seen:
add_recursive_build(idependid, fnid)
# Resolve recursive 'recrdeptask' dependencies
# Resolve recursive 'recrdeptask' dependencies (A)
#
# e.g. do_sometask[recrdeptask] = "do_someothertask"
# (makes sure sometask runs after someothertask of all DEPENDS, RDEPENDS and intertask dependencies, recursively)
# We cover the recursive part of the dependencies below
if 'recrdeptask' in task_deps and taskData.tasks_name[task] in task_deps['recrdeptask']:
for taskname in task_deps['recrdeptask'][taskData.tasks_name[task]].split():
dep_seen = []
rdep_seen = []
idep_seen = []
for depid in taskData.depids[fnid]:
add_recursive_build(depid, fnid)
for rdepid in taskData.rdepids[fnid]:
add_recursive_run(rdepid, fnid)
deptaskid = taskData.gettask_id(fn, taskname, False)
for (idependid, idependtask) in get_recursive_idepends(deptaskid):
add_recursive_build(idependid, fnid)
recrdepends.append(taskname)
add_build_dependencies(taskData.depids[fnid], [taskname], depends)
add_runtime_dependencies(taskData.rdepids[fnid], [taskname], depends)
# Rmove all self references
if task in depends:
@@ -522,13 +443,54 @@ class RunQueue:
newdep.append(dep)
depends = newdep
self.runq_fnid.append(taskData.tasks_fnid[task])
self.runq_task.append(taskData.tasks_name[task])
self.runq_depends.append(Set(depends))
self.runq_revdeps.append(Set())
self.runq_depends.append(set(depends))
self.runq_revdeps.append(set())
runq_build.append(0)
runq_recrdepends.append(recrdepends)
#
# Build a list of recursive cumulative dependencies for each fnid
# We do this by fnid, since if A depends on some task in B
# we're interested in later tasks B's fnid might have but B itself
# doesn't depend on
#
# Algorithm is O(tasks) + O(tasks)*O(fnids)
#
reccumdepends = {}
for task in range(len(self.runq_fnid)):
fnid = self.runq_fnid[task]
if fnid not in reccumdepends:
if fnid in tdepends_fnid:
reccumdepends[fnid] = tdepends_fnid[fnid]
else:
reccumdepends[fnid] = set()
reccumdepends[fnid].update(self.runq_depends[task])
for task in range(len(self.runq_fnid)):
taskfnid = self.runq_fnid[task]
for fnid in reccumdepends:
if task in reccumdepends[fnid]:
reccumdepends[fnid].add(task)
if taskfnid in reccumdepends:
reccumdepends[fnid].update(reccumdepends[taskfnid])
# Resolve recursive 'recrdeptask' dependencies (B)
#
# e.g. do_sometask[recrdeptask] = "do_someothertask"
# (makes sure sometask runs after someothertask of all DEPENDS, RDEPENDS and intertask dependencies, recursively)
for task in range(len(self.runq_fnid)):
if len(runq_recrdepends[task]) > 0:
taskfnid = self.runq_fnid[task]
for dep in reccumdepends[taskfnid]:
# Ignore self references
if dep == task:
continue
for taskname in runq_recrdepends[task]:
if taskData.tasks_name[dep] == taskname:
self.runq_depends[task].add(dep)
# Step B - Mark all active tasks
#
@@ -608,7 +570,7 @@ class RunQueue:
if len(self.runq_fnid) == 0:
if not taskData.abort:
bb.msg.fatal(bb.msg.domain.RunQueue, "All buildable tasks have been run but the build is incomplete (--continue mode). Errors for the tasks that failed will have been printed above.")
else:
else:
bb.msg.fatal(bb.msg.domain.RunQueue, "No active tasks and not in --continue mode?! Please report this bug.")
bb.msg.note(2, bb.msg.domain.RunQueue, "Pruned %s inactive tasks, %s left" % (delcount, len(self.runq_fnid)))
@@ -622,7 +584,7 @@ class RunQueue:
if maps[origdep] == -1:
bb.msg.fatal(bb.msg.domain.RunQueue, "Invalid mapping - Should never happen!")
newdeps.append(maps[origdep])
self.runq_depends[listid] = Set(newdeps)
self.runq_depends[listid] = set(newdeps)
bb.msg.note(2, bb.msg.domain.RunQueue, "Assign Weightings")
@@ -645,7 +607,6 @@ class RunQueue:
bb.msg.note(2, bb.msg.domain.RunQueue, "Compute totals (have %s endpoint(s))" % len(endpoints))
# Calculate task weights
# Check of higher length circular dependencies
self.runq_weight = self.calculate_task_weights(endpoints)
@@ -805,7 +766,7 @@ class RunQueue:
return False
# If its a 'nostamp' task, it's not current
taskdep = self.dataCache.task_deps[fn]
if 'nostamp' in taskdep and task in taskdep['nostamp']:
if 'nostamp' in taskdep and taskname in taskdep['nostamp']:
bb.msg.debug(2, bb.msg.domain.RunQueue, "%s.%s is nostamp\n" % (fn, taskname))
return False
@@ -845,7 +806,7 @@ class RunQueue:
failed_fnids = self.finish_runqueue()
if len(failed_fnids) == 0:
return failures
if self.taskData.abort:
if not self.taskData.tryaltconfigs:
raise bb.runqueue.TaskFailure(failed_fnids)
for fnid in failed_fnids:
#print "Failure: %s %s %s" % (fnid, self.taskData.fn_index[fnid], self.runq_task[fnid])
@@ -970,6 +931,8 @@ class RunQueue:
bb.msg.error(bb.msg.domain.RunQueue, "Task %s (%s) failed" % (task, self.get_user_idstring(task)))
self.failed_fnids.append(self.runq_fnid[task])
self.stats.taskFailed()
if not self.taskData.abort:
continue
break
self.task_complete(task)
self.stats.taskCompleted()

View File

@@ -276,7 +276,7 @@ class BitBakeShellCommands:
print "SHELL: Parsing '%s'" % bbfile
parse.update_mtime( bbfile )
cooker.bb_cache.cacheValidUpdate(bbfile)
fromCache = cooker.bb_cache.loadData(bbfile, cooker.configuration.data)
fromCache = cooker.bb_cache.loadData(bbfile, cooker.configuration.data, cooker.status)
cooker.bb_cache.sync()
if False: #fromCache:
print "SHELL: File has not been updated, not reparsing"
@@ -518,7 +518,7 @@ SRC_URI = ""
def stage( self, params ):
"""Execute 'stage' on a providee"""
self.build( params, "stage" )
self.build( params, "populate_staging" )
stage.usage = "<providee>"
def status( self, params ):

View File

@@ -30,7 +30,7 @@ class TaskData:
"""
BitBake Task Data implementation
"""
def __init__(self, abort = True):
def __init__(self, abort = True, tryaltconfigs = False):
self.build_names_index = []
self.run_names_index = []
self.fn_index = []
@@ -57,6 +57,7 @@ class TaskData:
self.failed_fnids = []
self.abort = abort
self.tryaltconfigs = tryaltconfigs
def getbuild_id(self, name):
"""
@@ -339,7 +340,10 @@ class TaskData:
self.add_provider_internal(cfgData, dataCache, item)
except bb.providers.NoProvider:
if self.abort:
bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item)))
if self.get_rdependees_str(item):
bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item)))
else:
bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (item))
raise
targetid = self.getbuild_id(item)
self.remove_buildtarget(targetid)
@@ -357,7 +361,10 @@ class TaskData:
return
if not item in dataCache.providers:
bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item)))
if self.get_rdependees_str(item):
bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item)))
else:
bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (item))
bb.event.fire(bb.event.NoProvider(item, cfgData))
raise bb.providers.NoProvider(item)
@@ -535,7 +542,10 @@ class TaskData:
except bb.providers.NoProvider:
targetid = self.getbuild_id(target)
if self.abort and targetid in self.external_targets:
bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (target, self.get_dependees_str(target)))
if self.get_rdependees_str(target):
bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (target, self.get_dependees_str(target)))
else:
bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (target))
raise
self.remove_buildtarget(targetid)
for target in self.get_unresolved_run_targets(dataCache):

View File

@@ -176,7 +176,7 @@ def better_exec(code, context, text, realfile):
raise
# print the Header of the Error Message
bb.msg.error(bb.msg.domain.Util, "Error in executing: ", realfile)
bb.msg.error(bb.msg.domain.Util, "Error in executing: %s" % realfile)
bb.msg.error(bb.msg.domain.Util, "Exception:%s Message:%s" % (t,value) )
# let us find the line number now
@@ -235,6 +235,12 @@ def lockfile(name):
Use the file fn as a lock file, return when the lock has been acquired.
Returns a variable to pass to unlockfile().
"""
path = os.path.dirname(name)
if not os.path.isdir(path):
import bb, sys
bb.msg.error(bb.msg.domain.Util, "Error, lockfile path does not exist!: %s" % path)
sys.exit(1)
while True:
# If we leave the lockfiles lying around there is no problem
# but we should clean up after ourselves. This gives potential
@@ -246,15 +252,18 @@ def lockfile(name):
# This implementation is unfair since the last person to request the
# lock is the most likely to win it.
lf = open(name, "a+")
fcntl.flock(lf.fileno(), fcntl.LOCK_EX)
statinfo = os.fstat(lf.fileno())
if os.path.exists(lf.name):
statinfo2 = os.stat(lf.name)
if statinfo.st_ino == statinfo2.st_ino:
return lf
# File no longer exists or changed, retry
lf.close
try:
lf = open(name, "a+")
fcntl.flock(lf.fileno(), fcntl.LOCK_EX)
statinfo = os.fstat(lf.fileno())
if os.path.exists(lf.name):
statinfo2 = os.stat(lf.name)
if statinfo.st_ino == statinfo2.st_ino:
return lf
# File no longer exists or changed, retry
lf.close
except Exception, e:
continue
def unlockfile(lf):
"""
@@ -296,6 +305,92 @@ def sha256_file(filename):
s.update(line)
return s.hexdigest()
def preserved_envvars_list():
return [
'BBPATH',
'BB_PRESERVE_ENV',
'BB_ENV_WHITELIST',
'BB_ENV_EXTRAWHITE',
'COLORTERM',
'DBUS_SESSION_BUS_ADDRESS',
'DESKTOP_SESSION',
'DESKTOP_STARTUP_ID',
'DISPLAY',
'GNOME_KEYRING_PID',
'GNOME_KEYRING_SOCKET',
'GPG_AGENT_INFO',
'GTK_RC_FILES',
'HOME',
'LANG',
'LOGNAME',
'PATH',
'PWD',
'SESSION_MANAGER',
'SHELL',
'SSH_AUTH_SOCK',
'TERM',
'USER',
'USERNAME',
'_',
'XAUTHORITY',
'XDG_DATA_DIRS',
'XDG_SESSION_COOKIE',
]
def filter_environment(good_vars):
"""
Create a pristine environment for bitbake. This will remove variables that
are not known and may influence the build in a negative way.
"""
import bb
removed_vars = []
for key in os.environ.keys():
if key in good_vars:
continue
removed_vars.append(key)
os.unsetenv(key)
del os.environ[key]
if len(removed_vars):
bb.debug(1, "Removed the following variables from the environment:", ",".join(removed_vars))
return removed_vars
def clean_environment():
"""
Clean up any spurious environment variables. This will remove any
variables the user hasn't chose to preserve.
"""
if 'BB_PRESERVE_ENV' not in os.environ:
if 'BB_ENV_WHITELIST' in os.environ:
good_vars = os.environ['BB_ENV_WHITELIST'].split()
else:
good_vars = preserved_envvars_list()
if 'BB_ENV_EXTRAWHITE' in os.environ:
good_vars.extend(os.environ['BB_ENV_EXTRAWHITE'].split())
filter_environment(good_vars)
def empty_environment():
"""
Remove all variables from the environment.
"""
for s in os.environ.keys():
os.unsetenv(s)
del os.environ[s]
def build_environment(d):
"""
Build an environment from all exported variables.
"""
import bb
for var in bb.data.keys(d):
export = bb.data.getVarFlag(var, "export", d)
if export:
os.environ[var] = bb.data.getVar(var, d, True)
def prunedir(topdir):
# Delete everything reachable from the directory named in 'topdir'.
# CAUTION: This is dangerous!
@@ -303,5 +398,20 @@ def prunedir(topdir):
for name in files:
os.remove(os.path.join(root, name))
for name in dirs:
os.rmdir(os.path.join(root, name))
if os.path.islink(os.path.join(root, name)):
os.remove(os.path.join(root, name))
else:
os.rmdir(os.path.join(root, name))
os.rmdir(topdir)
#
# Could also use return re.compile("(%s)" % "|".join(map(re.escape, suffixes))).sub(lambda mo: "", var)
# but thats possibly insane and suffixes is probably going to be small
#
def prune_suffix(var, suffixes, d):
# See if var ends with any of the suffixes listed and
# remove it if found
for suffix in suffixes:
if var.endswith(suffix):
return var.replace(suffix, "")
return var

View File

@@ -1,6 +1,15 @@
# Where to cache the files Poky downloads
DL_DIR ?= "${OEROOT}/sources"
BBFILES = "${OEROOT}/meta/packages/*/*.bb"
BBFILES += "\
${OEROOT}/meta/packages/*/*.bb \
${OEROOT}/meta-moblin/packages/*/*.bb"
BBFILE_COLLECTIONS = "normal moblin"
BBFILE_PATTERN_normal = "^${OEROOT}/meta/"
BBFILE_PATTERN_moblin = "^${OEROOT}/meta-moblin/"
BBFILE_PRIORITY_normal = "5"
BBFILE_PRIORITY_moblin = "5"
# Uncomment and set to allow bitbake to execute multiple tasks at once.
# For a quadcore, BB_NUMBER_THREADS = "4", PARALLEL_MAKE = "-j 4" would
@@ -10,10 +19,11 @@ BBFILES = "${OEROOT}/meta/packages/*/*.bb"
# PARALLEL_MAKE = "-j 4"
# The machine to target
MACHINE ?= "qemuarm"
MACHINE ?= "qemux86"
# Other supported machines
#MACHINE ?= "qemux86"
#MACHINE ?= "qemuarm"
#MACHINE ?= "netbook"
#MACHINE ?= "c7x0"
#MACHINE ?= "akita"
#MACHINE ?= "spitz"
@@ -36,17 +46,20 @@ DISTRO ?= "poky"
# Poky has various extra metadata collections (openmoko, extras).
# To enable these, uncomment all (or some of) the following lines:
# BBFILES = "\
# ${OEROOT}/meta/packages/*/*.bb
# ${OEROOT}/meta-extras/packages/*/*.bb
# ${OEROOT}/meta-openmoko/packages/*/*.bb
# ${OEROOT}/meta/packages/*/*.bb \
# ${OEROOT}/meta-extras/packages/*/*.bb \
# ${OEROOT}/meta-openmoko/packages/*/*.bb \
# ${OEROOT}/meta-moblin/packages/*/*.bb \
# "
# BBFILE_COLLECTIONS = "normal extras openmoko"
# BBFILE_COLLECTIONS = "normal extras openmoko moblin"
# BBFILE_PATTERN_normal = "^${OEROOT}/meta/"
# BBFILE_PATTERN_extras = "^${OEROOT}/meta-extras/"
# BBFILE_PATTERN_openmoko = "^${OEROOT}/meta-openmoko/"
# BBFILE_PATTERN_moblin = "^${OEROOT}/meta-moblin/"
# BBFILE_PRIORITY_normal = "5"
# BBFILE_PRIORITY_extras = "5"
# BBFILE_PRIORITY_openmoko = "5"
# BBFILE_PRIORITY_moblin = "5"
BBMASK = ""
@@ -138,3 +151,9 @@ SRC_TARBALL_STASH = "http://pokylinux.org/sources/"
#ASSUME_PROVIDED += "gtk+-native libglade-native"
ENABLE_BINARY_LOCALE_GENERATION = "1"
# The architecture to build SDK items for, by setting this you can build SDK
# packages for architectures other than the host i.e. building i586 packages
# on an x86_64 host.
# Supported values are i586 and x86_64
#SDKMACHINE="i586"

View File

@@ -7,10 +7,31 @@
#CVS_PROXY_HOST = "proxy.example.com"
#CVS_PROXY_PORT = "81"
# Uncomment to cause git to use the proxy host specificed
# For svn, you need to create ~/.subversion/servers containing:
#[global]
#http-proxy-host = proxy.example.com
#http-proxy-port = 81
#
# Uncomment to cause git to use the proxy host specificed
# although this only works for http
#GIT_PROXY_HOST = "proxy.example.com"
#GIT_PROXY_PORT = "81"
#export GIT_PROXY_COMMAND = "${OEROOT}/scripts/poky-git-proxy-command"
# GIT_PROXY_IGNORE_* lines define hosts which do not require a proxy to access
#GIT_CORE_CONFIG = "Yes"
#GIT_PROXY_IGNORE_1 = "host.server.com"
#GIT_PROXY_IGNORE_2 = "another.server.com"
# If SOCKS is available run the following command to comple a simple transport
# gcc scripts/poky-git-proxy-socks.c -o poky-git-proxy-socks
# and then share that binary somewhere in PATH, then use the following settings
#GIT_PROXY_HOST = "proxy.example.com"
#GIT_PROXY_PORT = "81"
#export GIT_PROXY_COMMAND = "${OEROOT}/scripts/poky-git-proxy-socks-command"
# Uncomment this to use a shared download directory
#DL_DIR = "/some/shared/download/directory/"
#DL_DIR = "/some/shared/download/directory/"

View File

@@ -2,7 +2,7 @@ all: html pdf
pdf:
poky-docbook-to-pdf poky-handbook.xml
./poky-doc-tools/poky-docbook-to-pdf poky-handbook.xml
# -- old way --
# dblatex poky-handbook.xml

View File

@@ -26,7 +26,15 @@
</para>
<para>
The simplest way to add a new package is to base it on a similar
Before writing a recipe from scratch it is often useful to check
someone else hasn't written one already. OpenEmbedded is a good place
to look as it has a wider scope and hence a wider range of packages.
Poky aims to be compatible with OpenEmbedded so most recipes should
just work in Poky.
</para>
<para>
For new packages, the simplest way to add a recipe is to base it on a similar
pre-existing recipe. There are some examples below of how to add
standard types of packages:
</para>
@@ -167,7 +175,6 @@ require xorg-lib-common.inc
DESCRIPTION = "X11 Pixmap library"
LICENSE = "X-BSD"
DEPENDS += "libxext"
PE = "1"
XORG_PN = "libXpm"
@@ -216,7 +223,7 @@ pkg_postinst_PACKAGENAME () {
<para>
Sometimes it is necessary that the execution of a post-installation
script is delayed until the first boot, because the script
needs to be executed the device itself. To delay script execution
needs to be executed on the device itself. To delay script execution
until boot time, the post-installation function should have the
following structure:
</para>
@@ -269,7 +276,7 @@ inherit poky-image
<para>
By creating a custom image, a developer has total control
over the contents of the image. It is important use
over the contents of the image. It is important to use
the correct names of packages in the <glossterm><link
linkend='var-IMAGE_INSTALL'>IMAGE_INSTALL</link></glossterm> variable.
The names must be in
@@ -296,11 +303,11 @@ IMAGE_INSTALL += "strace"
<title>Customising Images through custom tasks</title>
<para>
For for complex custom images, the best approach is to create a custom
task package which is them used to build the image (or images). A good
For complex custom images, the best approach is to create a custom
task package which is then used to build the image (or images). A good
example of a tasks package is <filename>meta/packages/tasks/task-poky.bb
</filename>. The <glossterm><link linkend='var-PACKAGES'>PACKAGES</link></glossterm>
variable lists the task packages to build (along with the complimentary
variable lists the task packages to build (along with the complementary
-dbg and -dev packages). For each package added,
<glossterm><link linkend='var-PACKAGES'>RDEPENDS</link></glossterm> and
<glossterm><link linkend='var-PACKAGES'>RRECOMMENDS</link></glossterm>
@@ -557,6 +564,37 @@ BBFILE_PRIORITY_extras = "5"</literallayout>
</para>
</section>
<section id="usingpoky-changes-supplement">
<title>Supplementry Metadata Repositories</title>
<para>
Often when developing a project based on Poky there will be components
that are not ready for public consumption for whatever reason. By making
use of the collections mechanism and other functionality within Poky, it
is possible to have a public repository which is supplemented by a private
one just containing the pieces that need to be kept private.
</para>
<para>
The usual approach with these is to create a separate git repository called
"meta-prvt-XXX" which is checked out alongside the other meta-*
directories included in Poky. Under this directory there can be several
different directories such as classes, conf and packages which all
function as per the usual Poky directory structure.
</para>
<para>
If extra meta-* directories are found, Poky will automatically add them
into the BBPATH variable so the conf and class files contained there
are found. If a file called poky-extra-environment is found within the
meta-* directory, this will be sourced as the environment is setup,
allowing certain configuration to be overridden such as the location of the
local.conf.sample file that is used.
</para>
<para>
Note that at present, BBFILES is not automatically changed and this needs
to be adjusted to find files in the packages/ directory. Usually a custom
local.conf.sample file will be used to handle this instead.
</para>
</section>
<section id='usingpoky-changes-commits'>
<title>Committing Changes</title>
@@ -565,8 +603,8 @@ BBFILE_PRIORITY_extras = "5"</literallayout>
Modifications to Poky are often managed under some kind of source
revision control system. The policy for committing to such systems
is important as some simple policy can significantly improve
usability. The tips below are based on the policy that OpenedHand
uses for commits to Poky.
usability. The tips below are based on the policy followed for the
Poky core.
</para>
<para>
@@ -623,6 +661,56 @@ BBFILE_PRIORITY_extras = "5"</literallayout>
upgradable packages in all cases.
</para>
</section>
<section id='usingpoky-changes-collaborate'>
<title>Using Poky in a Team Environment</title>
<para>
It may not be immediately clear how Poky can work in a team environment,
or scale to a large team of developers. The specifics of any situation
will determine the best solution and poky offers immense flexibility in
that aspect but there are some practises that experience has shown to work
well.
</para>
<para>
The core component of any development effort with Poky is often an
automated build testing framework and image generation process. This
can be used to check that the metadata is buildable, highlight when
commits break the builds and provide up to date images allowing people
to test the end result and use them as a base platform for further
development. Experience shows that buildbot is a good fit for this role
and that it works well to configure it to make two types of build -
incremental builds and 'from scratch'/full builds. The incremental builds
can be tied to a commit hook which triggers them each time a commit is
made to the metadata and are a useful acid test of whether a given commit
breaks the build in some serious way. They catch lots of simple errors
and whilst they won't catch 100% of failures, the tests are fast so
developers can get feedback on their changes quickly. The full builds
are builds that build everything from the ground up and test everything.
They usually happen at preset times such as at night when the machine
load isn't high from the incremental builds.
</para>
<para>
Most teams have pieces of software undergoing active development. It is of
significant benefit to put these under control of a source control system
compatible with Poky such as git or svn. The autobuilder can then be set to
pull the latest revisions of these packages so the latest commits get tested
by the builds allowing any issues to be highlighted quickly. Poky easily
supports configurations where there is both a stable known good revision
and a floating revision to test. Poky can also only take changes from specific
source control branches giving another way it can be used to track/test only
specified changes.
</para>
<para>
Perhaps the hardest part of setting this up is the policy that surrounds
the different source control systems, be them software projects or the Poky
metadata itself. The circumstances will be different in each case but this is
one of Poky's advantages - the system itself doesn't force any particular policy
unlike a lot of build systems, allowing the best policy to be chosen for the
circumstances.
</para>
</section>
</section>
<section id='usingpoky-modifing-packages'>

View File

@@ -242,8 +242,22 @@
</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>
I'm using Ubuntu Intrepid and am seeing build failures. Whats wrong?
</para>
</question>
<answer>
<para>
In Intrepid, Ubuntu turned on by default normally optional compile-time security features
and warnings. There are more details at <ulink
url='https://wiki.ubuntu.com/CompilerFlags'>https://wiki.ubuntu.com/CompilerFlags</ulink>.
You can work around this problem by disabling those options by adding " -Wno-format-security -U_FORTIFY_SOURCE"
to the BUILD_CPPFLAGS variable in conf/bitbake.conf.
</para>
</answer>
</qandaentry>
</qandaset>
</appendix>
<!--

View File

@@ -58,7 +58,7 @@
<screenshot>
<mediaobject>
<imageobject>
<imagedata fileref="screenshots/ss-sato.png" format="PNG"/>
<imagedata fileref="screenshots/ss-sato.png" format="PNG" align='center' scalefit='1' width="100%" contentdepth="100%"/>
</imageobject>
<caption>
<para>The Sato Desktop - A screenshot from a machine running a Poky built image</para>
@@ -69,7 +69,8 @@
<para>
Poky has a growing open source community backed up by commercial support provided by the principle developer and maintainer of Poky, <ulink url="http://o-hand.com/">OpenedHand Ltd</ulink>.
Poky has a growing open source community backed up by commercial support
provided by the principal developer and maintainer of Poky, <ulink url="http://o-hand.com/">OpenedHand Ltd</ulink>.
</para>
</section>
@@ -172,17 +173,17 @@
<para>
If you want to try Poky, you can do so in a few commands. The example below
checks out the Poky source code, sets up a build environment, builds an
image and then runs that image under the QEMU emulator in ARM system emulation mode:
image and then runs that image under the QEMU emulator in x86 system emulation mode:
</para>
<para>
<literallayout class='monospaced'>
$ wget http://pokylinux.org/releases/pinky-3.1.tar.gz
$ tar zxvf pinky-3.1.tar.gz
$ cd pinky-3.1/
$ wget http://pokylinux.org/releases/purple-3.2.1.tar.gz
$ tar zxvf purple-3.2.1.tar.gz
$ cd purple-3.2.1/
$ source poky-init-build-env
$ bitbake poky-image-sato
$ runqemu qemuarm
$ runqemu qemux86
</literallayout>
</para>
@@ -289,7 +290,7 @@ $ poky-qemu &lt;kernel&gt; &lt;image&gt;
We make nightly builds of Poky for testing purposes and to make the
latest developments available. The output from these builds is available
at <ulink url='http://pokylinux.org/autobuild/'/>
where the numbers represent the svn revision the builds were made from.
where the numbers increase for each subsequent build and can be used to reference it.
</para>
<para>
@@ -308,13 +309,13 @@ $ poky-qemu &lt;kernel&gt; &lt;image&gt;
<title>Development Checkouts</title>
<para>
Poky is available from our SVN repository located at
http://svn.o-hand.com/repos/poky/trunk; a web interface to the repository
can be accessed at <ulink url='http://svn.o-hand.com/view/poky/'/>.
Poky is available from our GIT repository located at
git://git.pokylinux.org/poky.git; a web interface to the repository
can be accessed at <ulink url='http://git.pokylinux.org/'/>.
</para>
<para>
'trunk' is where the deveopment work takes place and you should use this if you're
The 'master' is where the deveopment work takes place and you should use this if you're
after to work with the latest cutting edge developments. It is possible trunk
can suffer temporary periods of instability while new features are developed and
if this is undesireable we recommend using one of the release branches.

View File

@@ -1,7 +1,7 @@
poky-doc-tools
==============
Simple tools to wrap fop to create oh branded PDF's from docbook sources.
Simple tools to wrap fop to create Poky branded PDF's from docbook sources.
(based on OH doc tools)
Dependencies
@@ -9,15 +9,10 @@ Dependencies
Sun Java, make sure the java in your path is the *sun* java.
xlstproc, nwalsh style sheets.
xlstproc, nwalsh style sheets, fop
FOP, installed - see http://www.sagehill.net/docbookxsl/InstallingAnFO.html.
Also a 'fop' binary, eg I have;
% cat ~/bin/fop
#!/bin/sh
java org.apache.fop.apps.Fop "$@"
Updated to work with (fop > 0.95)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,33 +1,58 @@
<configuration>
<entry>
<!--
Set the baseDir so common/openedhand.svg references in plans still
work ok. Note, relative file references to current dir should still work.
-->
<key>baseDir</key>
<value>@datadir@</value>
</entry>
<fonts>
<font metrics-file="@datadir@/common/VeraMono.xml"
kerning="yes"
embed-file="@datadir@/common/VeraMono.ttf">
<font-triplet name="veramono" style="normal" weight="normal"/>
</font>
<fop version="1.0">
<font metrics-file="@datadir@/common/VeraMoBd.xml"
kerning="yes"
embed-file="@datadir@/common/VeraMoBd.ttf">
<font-triplet name="veramono" style="normal" weight="bold"/>
</font>
<!-- Strict user configuration -->
<strict-configuration>true</strict-configuration>
<font metrics-file="@datadir@/common/Vera.xml"
kerning="yes"
embed-file="@datadir@/common/Vera.ttf">
<font-triplet name="verasans" style="normal" weight="normal"/>
<font-triplet name="verasans" style="normal" weight="bold"/>
<font-triplet name="verasans" style="italic" weight="normal"/>
<font-triplet name="verasans" style="italic" weight="bold"/>
</font>
<!-- Strict FO validation -->
<strict-validation>true</strict-validation>
<!--
Set the baseDir so common/openedhand.svg references in plans still
work ok. Note, relative file references to current dir should still work.
-->
<base>@datadir@</base>
<font-base>@datadir@/common</font-base>
<!-- Source resolution in dpi (dots/pixels per inch) for determining the
size of pixels in SVG and bitmap images, default: 72dpi -->
<!-- <source-resolution>72</source-resolution> -->
<!-- Target resolution in dpi (dots/pixels per inch) for specifying the
target resolution for generated bitmaps, default: 72dpi -->
<!-- <target-resolution>72</target-resolution> -->
<!-- default page-height and page-width, in case
value is specified as auto -->
<default-page-settings height="11in" width="8.26in"/>
<!-- <use-cache>false</use-cache> -->
<renderers>
<renderer mime="application/pdf">
<fonts>
<font metrics-file="VeraMono.xml"
kerning="yes"
embed-url="VeraMono.ttf">
<font-triplet name="veramono" style="normal" weight="normal"/>
</font>
<font metrics-file="VeraMoBd.xml"
kerning="yes"
embed-url="VeraMoBd.ttf">
<font-triplet name="veramono" style="normal" weight="bold"/>
</font>
<font metrics-file="Vera.xml"
kerning="yes"
embed-url="Vera.ttf">
<font-triplet name="verasans" style="normal" weight="normal"/>
<font-triplet name="verasans" style="normal" weight="bold"/>
<font-triplet name="verasans" style="italic" weight="normal"/>
<font-triplet name="verasans" style="italic" weight="bold"/>
</font>
<auto-detect/>
</fonts>
</renderer>
</renderers>
</fop>
</fonts>
</configuration>

View File

@@ -54,7 +54,7 @@
<!-- general settings -->
<xsl:param name="fop.extensions" select="1"></xsl:param>
<xsl:param name="fop1.extensions" select="1"></xsl:param>
<xsl:param name="paper.type" select="'A4'"></xsl:param>
<xsl:param name="section.autolabel" select="1"></xsl:param>
<xsl:param name="body.font.family" select="'verasans'"></xsl:param>

View File

@@ -11,7 +11,7 @@
<imageobject>
<imagedata fileref='common/poky-handbook.png'
format='SVG'
align='center'/>
align='center' scalefit='1' width='100%'/>
</imageobject>
</mediaobject>

View File

@@ -218,7 +218,6 @@
<section id='structure-build-tmp-staging'>
<title><filename class="directory">build/tmp/staging/</filename></title>
<para>
Any package needing to share output with other packages does so within staging.
This means it contains any shared header files and any shared libraries amongst

View File

@@ -515,7 +515,7 @@
<glossentry id='var-PE'><glossterm>PE</glossterm>
<glossdef>
<para>
Epoch of the package. The default value is "1". The field is used
Epoch of the package. The default value is "0". The field is used
to make upgrades possible when the versioning scheme changes in
some backwards incompatible way.
</para>

View File

@@ -75,7 +75,7 @@
</para>
<para>
'package' can also used to describe recipes but since the same
'package' can also be used to describe recipes but since the same
word is used for the packaged output from Poky (i.e. .ipk or .deb
files), this document will avoid it.
</para>
@@ -114,7 +114,7 @@
<title>Running a Build</title>
<para>
First the Poky build environment needs to be setup using the following command:
First the Poky build environment needs to be set up using the following command:
</para>
<para>
<literallayout class='monospaced'>
@@ -122,7 +122,7 @@ $ source poky-init-build-env
</literallayout>
</para>
<para>
Once the Poky build environment is setup, a target can now be built using:
Once the Poky build environment is set up, a target can now be built using:
</para>
<para>
<literallayout class='monospaced'>
@@ -204,11 +204,11 @@ route add default gw 192.168.7.200 tap0
<para>
The second is to configure name resolution which is configured in the
<filename>/etc/resolv.conf</filename> file. The simplest solution is
to copy it's content from the host machine.
to copy its content from the host machine.
</para>
<para>
USB connections to devices can be setup and automated in a similar way.
USB connections to devices can be set up and automated in a similar way.
First add the following to
<filename>/etc/network/interfaces</filename>:
</para>
@@ -246,7 +246,7 @@ route add default gw 192.168.0.202 usb0
debugging practises such as comparing to the last
known working version and examining the changes, reapplying the
changes in steps to identify the one causing the problem etc. are
valid for Poky just like any other system. Its impossible to detail
valid for Poky just like any other system. It's impossible to detail
every possible potential failure here but there are some general
tips to aid debugging:
</para>
@@ -293,7 +293,7 @@ route add default gw 192.168.0.202 usb0
<para>
which would build matchbox-desktop, then recompile it. The
final command reruns all tasks after the compile (basically
the packaging tasks) since bitbake will notice the the
the packaging tasks) since bitbake will notice that the
compile has been rerun and hence the other tasks also need
to run again.
</para>

View File

@@ -4,8 +4,4 @@ PR = "r1"
SRC_URI = "http://www.balabit.com/downloads/files/eventlog/0.2/${P}.tar.gz"
inherit autotools pkgconfig
do_stage () {
autotools_stage_all
}
inherit autotools_stage pkgconfig

Some files were not shown because too many files have changed in this diff Show More