summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/mono.bbclass214
-rw-r--r--classes/package.bbclass22
-rw-r--r--conf/distro/include/sane-srcrevs.inc20
-rw-r--r--conf/machine/htcblueangel.conf1
-rw-r--r--conf/machine/hx4700.conf1
-rw-r--r--packages/atk/atk_1.19.3.bb2
-rw-r--r--packages/fontconfig/fontconfig_2.4.1.bb7
-rw-r--r--packages/gtk+/gtk-2.10.inc3
-rw-r--r--packages/gtk-webcore/midori/midori.desktop8
-rw-r--r--packages/gtk-webcore/midori_0.0.6.bb18
-rw-r--r--packages/gtk-webcore/midori_0.0.8.bb11
-rw-r--r--packages/libgcrypt/libgcrypt_1.2.3.bb12
-rw-r--r--packages/linux/linux.inc2
-rw-r--r--packages/maemo3/hildon-1_svn.bb2
-rw-r--r--packages/maemo3/libhildonfm/.mtn2git_empty (renamed from packages/gtk-webcore/midori/.mtn2git_empty)0
-rw-r--r--packages/maemo3/libhildonfm/hildonfm-ifdef-maemogtk.diff132
-rw-r--r--packages/maemo3/libhildonfm_1.9.41.bb29
-rw-r--r--packages/maemo3/libhildonhelp_1.9.1.bb2
-rw-r--r--packages/mono/README43
-rw-r--r--packages/mono/collect-paths.py135
-rw-r--r--packages/mono/mono-mcs-intermediate_1.2.5.1.bb59
-rw-r--r--packages/mono/mono_1.2.5.1.bb140
-rw-r--r--packages/mono/mono_files.py605
-rw-r--r--packages/mtd/mtd-utils-tests_1.0.0+git.bb59
-rw-r--r--packages/openmoko2/openmoko-dates2_svn.bb5
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.2.0/kdrive-imageon.patch9079
26 files changed, 1447 insertions, 9164 deletions
diff --git a/classes/mono.bbclass b/classes/mono.bbclass
new file mode 100644
index 0000000000..dcf5f7272c
--- /dev/null
+++ b/classes/mono.bbclass
@@ -0,0 +1,214 @@
+def mono_get_file_table(packageversion, d):
+ # The packageversion is currently ignored, but might be used in the future
+ # if more than one mono version is available and different versions
+ # need to use different tables
+
+ import bb, sys, os, glob, commands
+ curdir = os.path.dirname( bb.data.getVar('FILE', d, 1) )
+ if curdir not in sys.path: sys.path.append( curdir )
+ from mono_files import debian_mono_file_table
+
+ # mono-jay is not being built (for all platforms at least)
+ IGNORE = ("mono-jay", )
+ file_table = [
+ # Standard package
+ {"name": "mono-doc"},
+
+ # Virtual packages
+ {"name": "mono"},
+ {"name": "mono-runtime"},
+
+ # Not provided by Debian:
+ {"name": "libnunit2.2-cil",
+ "patterns": [
+ "/usr/lib/mono/gac/nunit.*/2.2.*",
+ "/usr/lib/mono/1.0/nunit.*.dll",
+ "/usr/lib/pkgconfig/mono-nunit.pc",
+ ],
+ "assemblies": [
+ ("nunit.core", "2.2.0.0"),
+ ("nunit.framework", "2.2.0.0"),
+ ("nunit.util", "2.2.0.0"),
+ ("nunit.mocks", "2.2.8.0"),
+ ],
+ },
+ {"name": "libmono-cecil0.5-cil",
+ "patterns": [
+ "/usr/lib/mono/gac/Mono.Cecil/0.5.*",
+ ],
+ "assemblies": [
+ ("Mono.Cecil", "0.5.*"),
+ ],
+ },
+ {"name": "libmono-db2-1.0-cil",
+ "patterns": [
+ "/usr/lib/mono/gac/IBM.Data.DB2/1.0*",
+ "/usr/lib/mono/1.0/IBM.Data.DB2.dll",
+ ],
+ "assemblies": [
+ ("IBM.Data.DB2", "1.0*"),
+ ],
+ },
+ ] + debian_mono_file_table
+
+ file_table = [e for e in file_table
+ if not (e.has_key("name") and e["name"] in IGNORE)]
+
+ return file_table
+
+def mono_find_provides_and_requires(files, d):
+ provides = []
+ requires = []
+
+ import bb, os, commands
+
+ pathprefix = "export PATH=%s; export LANG=; export LC_ALL=; " % bb.data.getVar('PATH', d, 1)
+ for filename in files:
+ if not filename.endswith(".dll") and not filename.endswith(".exe"):
+ continue
+ if not os.path.isfile(filename) or os.path.islink(filename):
+ continue
+
+ ## Provides
+ name, version = None, None
+
+ ret, result = commands.getstatusoutput("%smonodis --assembly '%s'" % (pathprefix, filename))
+ if ret:
+ bb.error("raw_provides_and_requires: monodis --assembly '%s' failed, dependency information will be inaccurate" % filename)
+ continue
+ for line in result.splitlines():
+ if not ":" in line: continue
+ key, value = line.split(":", 1)
+ if key.strip() == "Name":
+ name = value.strip()
+ elif key.strip() == "Version":
+ version = value.strip()
+ if name is not None and version is not None:
+ if (name, version) not in provides:
+ provides.append( (name, version) )
+
+ ## Requires
+ name, version = None, None
+ ret, result = commands.getstatusoutput("%smonodis --assemblyref '%s'" % (pathprefix, filename))
+ if ret:
+ bb.error("raw_provides_and_requires: monodis --assemblyref '%s' failed, dependency information will be inaccurate" % filename)
+ continue
+ for line in result.splitlines():
+ if not "=" in line: continue
+ key, value = line.split("=", 1)
+ if ":" in key and key.split(":",1)[1].strip() == "Version":
+ version = value.strip()
+ elif key.strip() == "Name":
+ name = value.strip()
+ if name is not None and version is not None:
+ if (name, version) not in requires:
+ requires.append( (name, version) )
+ name, version = None, None
+
+ # Remove everything from requires that's already in provides as it's not actually required
+ # to be provided externally
+ requires = [e for e in requires if not e in provides]
+ return provides, requires
+
+python mono_do_clilibs() {
+ import bb, os, re, os.path
+
+ exclude_clilibs = bb.data.getVar('EXCLUDE_FROM_CLILIBS', d, 0)
+ if exclude_clilibs:
+ bb.note("not generating clilibs")
+ return
+
+ lib_re = re.compile("^lib.*\.so")
+ libdir_re = re.compile(".*/lib$")
+
+ packages = bb.data.getVar('PACKAGES', d, 1)
+
+ workdir = bb.data.getVar('WORKDIR', d, 1)
+ if not workdir:
+ bb.error("WORKDIR not defined")
+ return
+
+ staging = bb.data.getVar('STAGING_DIR', d, 1)
+ if not staging:
+ bb.error("STAGING_DIR not defined")
+ return
+
+ pkgdest = bb.data.getVar('PKGDEST', d, 1)
+
+ clilibs_dir = os.path.join(staging, "clilibs")
+ bb.mkdirhier(clilibs_dir)
+
+ provides, requires = {}, {}
+ private_libs = bb.data.getVar('PRIVATE_CLILIBS', d, 1)
+ for pkg in packages.split():
+ bb.debug(2, "calculating clilib provides for %s" % pkg)
+
+ files_to_check = []
+ top = os.path.join(pkgdest, pkg)
+ for root, dirs, files in os.walk(top):
+ for file in files:
+ path = os.path.join(root, file)
+ if file.endswith(".exe") or file.endswith(".dll"):
+ files_to_check.append( path )
+ provides[pkg], requires[pkg] = mono_find_provides_and_requires(files_to_check, d)
+ clilibs_file = os.path.join(clilibs_dir, pkg + ".list")
+ if os.path.exists(clilibs_file):
+ os.remove(clilibs_file)
+ if len(provides[pkg]) > 0:
+ fd = open(clilibs_file, 'w')
+ for s in provides[pkg]:
+ fd.write(" ".join(s) + '\n')
+ fd.close()
+
+ clilib_provider = {}
+ list_re = re.compile('^(.*)\.list$')
+ for file in os.listdir(clilibs_dir):
+ m = list_re.match(file)
+ if m:
+ dep_pkg = m.group(1)
+ fd = open(os.path.join(clilibs_dir, file))
+ lines = fd.readlines()
+ fd.close()
+ for l in lines:
+ clilib_provider[tuple(l.rstrip().split())] = dep_pkg
+
+ for pkg in packages.split():
+ bb.debug(2, "calculating clilib requirements for %s" % pkg)
+
+ deps = []
+ for n in requires[pkg]:
+ if n in clilib_provider.keys():
+ dep_pkg = clilib_provider[n]
+
+ if dep_pkg == pkg:
+ continue
+
+ if not dep_pkg in deps:
+ deps.append(dep_pkg)
+ else:
+ bb.note("Couldn't find CLI library provider for %s" % n)
+
+ deps_file = os.path.join(pkgdest, pkg + ".clilibdeps")
+ if os.path.exists(deps_file):
+ os.remove(deps_file)
+ if len(deps) > 0:
+ fd = open(deps_file, 'w')
+ for dep in deps:
+ fd.write(dep + '\n')
+ fd.close()
+}
+
+python() {
+ # Insert mono_do_clilibs into PACKAGEFUNCS
+ # Needs to be called after populate_packages, but before read_shlibdeps
+ PACKAGEFUNCS = bb.data.getVar("PACKAGEFUNCS", d, 1)
+ if PACKAGEFUNCS:
+ PACKAGEFUNCS = PACKAGEFUNCS.split()
+ if "read_shlibdeps" in PACKAGEFUNCS:
+ i = PACKAGEFUNCS.index("read_shlibdeps")
+ PACKAGEFUNCS.insert(i, "mono_do_clilibs")
+ elif "populate_packages" in PACKAGEFUNCS:
+ i = PACKAGEFUNCS.index("populate_packages")
+ PACKAGEFUNCS.insert(i+1, "mono_do_clilibs")
+ bb.data.setVar("PACKAGEFUNCS", " ".join(PACKAGEFUNCS), d)
+}
diff --git a/classes/package.bbclass b/classes/package.bbclass
index 516cae823d..b114049b8e 100644
--- a/classes/package.bbclass
+++ b/classes/package.bbclass
@@ -793,20 +793,14 @@ python read_shlibdeps () {
packages = bb.data.getVar('PACKAGES', d, 1).split()
for pkg in packages:
rdepends = explode_deps(bb.data.getVar('RDEPENDS_' + pkg, d, 0) or bb.data.getVar('RDEPENDS', d, 0) or "")
- shlibsfile = bb.data.expand("${PKGDEST}/" + pkg + ".shlibdeps", d)
- if os.access(shlibsfile, os.R_OK):
- fd = file(shlibsfile)
- lines = fd.readlines()
- fd.close()
- for l in lines:
- rdepends.append(l.rstrip())
- pcfile = bb.data.expand("${PKGDEST}/" + pkg + ".pcdeps", d)
- if os.access(pcfile, os.R_OK):
- fd = file(pcfile)
- lines = fd.readlines()
- fd.close()
- for l in lines:
- rdepends.append(l.rstrip())
+ for extension in ".shlibdeps", ".pcdeps", ".clilibdeps":
+ depsfile = bb.data.expand("${PKGDEST}/" + pkg + extension, d)
+ if os.access(depsfile, os.R_OK):
+ fd = file(depsfile)
+ lines = fd.readlines()
+ fd.close()
+ for l in lines:
+ rdepends.append(l.rstrip())
bb.data.setVar('RDEPENDS_' + pkg, " " + " ".join(rdepends), d)
}
diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc
index e3efa9f699..67380a3160 100644
--- a/conf/distro/include/sane-srcrevs.inc
+++ b/conf/distro/include/sane-srcrevs.inc
@@ -17,12 +17,12 @@ SRCREV_pn-fbgrab-viewer-native ?= "1943"
SRCREV_pn-fstests ?= "204"
SRCREV_pn-gconf-dbus ?= "606"
SRCREV_pn-gnuradio ?= "6377"
-SRCREV_pn-hildon-1 ?= "13708"
+SRCREV_pn-hildon-1 ?= "14173"
SRCREV_pn-libgsmd ?= "2957"
SRCREV_pn-libmokogsmd2 ?= "2950"
SRCREV_pn-libmokojournal2 ?= "2780"
SRCREV_pn-libmokopanelui2 ?= "2958"
-SRCREV_pn-libmokoui2 ?= "3053"
+SRCREV_pn-libmokoui2 ?= "3064"
SRCREV_pn-libowl ?= "277"
SRCREV_pn-libxosd ?= "627"
SRCREV_pn-linux-hackndev-2.6 ?= "1308"
@@ -47,9 +47,9 @@ SRCREV_pn-openmoko-calculator2 ?= "2789"
SRCREV_pn-openmoko-common ?= "397"
SRCREV_pn-openmoko-common2 ?= "2679"
SRCREV_pn-openmoko-contacts ?= "2298"
-SRCREV_pn-openmoko-contacts2 ?= "335"
+SRCREV_pn-openmoko-contacts2 ?= "350"
SRCREV_pn-openmoko-dates ?= "467"
-SRCREV_pn-openmoko-dates2 ?= "563"
+SRCREV_pn-openmoko-dates2 ?= "617"
SRCREV_pn-openmoko-dialer ?= "2811"
SRCREV_pn-openmoko-dialer2 ?= "2976"
SRCREV_pn-openmoko-feedreader2 ?= "3060"
@@ -57,11 +57,11 @@ SRCREV_pn-openmoko-finger-demo ?= "1671"
SRCREV_pn-openmoko-firststart2 ?= "2873"
SRCREV_pn-openmoko-footer ?= "2354"
SRCREV_pn-openmoko-icon-theme-standard ?= "2232"
-SRCREV_pn-openmoko-icon-theme-standard2 ?= "3055"
-SRCREV_pn-openmoko-icon-theme-standard2-qvga ?= "2967"
+SRCREV_pn-openmoko-icon-theme-standard2 ?= "3066"
+SRCREV_pn-openmoko-icon-theme-standard2-qvga ?= "3066"
SRCREV_pn-openmoko-keyboard ?= "1631"
SRCREV_pn-openmoko-libs ?= "2367"
-SRCREV_pn-openmoko-mediaplayer2 ?= "2952"
+SRCREV_pn-openmoko-mediaplayer2 ?= "3057"
SRCREV_pn-openmoko-messages ?= "2276"
SRCREV_pn-openmoko-panel-battery ?= "2897"
SRCREV_pn-openmoko-panel-bt ?= "2896"
@@ -79,14 +79,14 @@ SRCREV_pn-openmoko-stylus-demo ?= "2324"
SRCREV_pn-openmoko-stylus-demo-simple ?= "1818"
SRCREV_pn-openmoko-taskmanager ?= "1663"
SRCREV_pn-openmoko-tasks ?= "320"
-SRCREV_pn-openmoko-tasks2 ?= "320"
+SRCREV_pn-openmoko-tasks2 ?= "343"
SRCREV_pn-openmoko-terminal2 ?= "2972"
SRCREV_pn-openmoko-theme-standard ?= "2370"
SRCREV_pn-openmoko-theme-standard-qvga ?= "2370"
-SRCREV_pn-openmoko-theme-standard2 ?= "2964"
+SRCREV_pn-openmoko-theme-standard2 ?= "3044"
SRCREV_pn-openmoko-theme-standard2-qvga ?= "2964"
SRCREV_pn-openmoko-today ?= "3056"
-SRCREV_pn-openmoko-today2 ?= "2955"
+SRCREV_pn-openmoko-today2 ?= "3056"
SRCREV_pn-openmoko-today2-folders ?= "2680"
SRCREV_pn-openocd ?= "206"
SRCREV_pn-openocd-native ?= "206"
diff --git a/conf/machine/htcblueangel.conf b/conf/machine/htcblueangel.conf
index 6aa1885293..44454f3902 100644
--- a/conf/machine/htcblueangel.conf
+++ b/conf/machine/htcblueangel.conf
@@ -21,7 +21,6 @@ MACHINE_FEATURES = "kernel26 touchscreen apm alsa irda bluetooth wifi usbgadget
# Software/packages selection
#
PREFERRED_PROVIDER_virtual/kernel = "linux-handhelds-2.6"
-PREFERRED_VERSION_linux-handhelds-2.6 ?= "2.6.19-hh8"
PCMCIA_MANAGER = "pcmciautils"
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
diff --git a/conf/machine/hx4700.conf b/conf/machine/hx4700.conf
index 7cea4e08de..87e03a7bdd 100644
--- a/conf/machine/hx4700.conf
+++ b/conf/machine/hx4700.conf
@@ -30,7 +30,6 @@ PCMCIA_MANAGER = "pcmciautils"
MODUTILS = "26"
XSERVER = "xserver-kdrive-w100"
-PREFERRED_VERSION_xserver-kdrive = "1.2.0"
PREFERRED_VERSION_orinoco-modules = "0.15rc1"
diff --git a/packages/atk/atk_1.19.3.bb b/packages/atk/atk_1.19.3.bb
index beef4ce97a..52136682d7 100644
--- a/packages/atk/atk_1.19.3.bb
+++ b/packages/atk/atk_1.19.3.bb
@@ -1,7 +1,5 @@
require atk.inc
-DEFAULT_PREFERENCE = "-1"
-
SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/atk/1.19/atk-${PV}.tar.bz2"
do_stage () {
diff --git a/packages/fontconfig/fontconfig_2.4.1.bb b/packages/fontconfig/fontconfig_2.4.1.bb
index 098939324a..cdfc28fb38 100644
--- a/packages/fontconfig/fontconfig_2.4.1.bb
+++ b/packages/fontconfig/fontconfig_2.4.1.bb
@@ -3,9 +3,9 @@ LICENSE = "BSD"
DESCRIPTION = "A library for configuring and customizing font access."
DEPENDS = "expat freetype freetype-native zlib"
-SRC_URI = "http://fontconfig.org/release/fontconfig-${PV}.tar.gz"
-
-PR = "r0"
+SRC_URI = "http://fontconfig.org/release/fontconfig-${PV}.tar.gz \
+ https://stage.maemo.org/svn/maemo/projects/haf/trunk/fontconfig/device_symbols.h"
+PR = "r1"
PACKAGES =+ "fontconfig-utils-dbg fontconfig-utils "
FILES_fontconfig-utils-dbg = "${bindir}/*.dbg"
@@ -39,6 +39,7 @@ python do_unpack () {
}
do_stage () {
+ cp ${WORKDIR}/device_symbols.h ${S}/fontconfig/
oe_libinstall -so -a -C src libfontconfig ${STAGING_LIBDIR}
install -d ${STAGING_INCDIR}/fontconfig
for i in ${S}/fontconfig/*.h; do install -m 0644 $i ${STAGING_INCDIR}/fontconfig/; done
diff --git a/packages/gtk+/gtk-2.10.inc b/packages/gtk+/gtk-2.10.inc
index c3bbb0232a..3fa5d22a71 100644
--- a/packages/gtk+/gtk-2.10.inc
+++ b/packages/gtk+/gtk-2.10.inc
@@ -52,7 +52,8 @@ do_stage () {
mkdir -p ${STAGING_LIBDIR}/gtk-2.0/include
install -m 0644 gdk/gdkconfig.h ${STAGING_LIBDIR}/gtk-2.0/include/gdkconfig.h
-
+ # Copy over all headers, since the maemo stuff needs access to the private api. *sigh*
+ cp gtk/*.h ${STAGING_INCDIR}/gtk-2.0/gtk/
install -m 0644 m4macros/gtk-2.0.m4 ${STAGING_DATADIR}/aclocal/
}
diff --git a/packages/gtk-webcore/midori/midori.desktop b/packages/gtk-webcore/midori/midori.desktop
deleted file mode 100644
index 683b1a343e..0000000000
--- a/packages/gtk-webcore/midori/midori.desktop
+++ /dev/null
@@ -1,8 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Name=Midori
-Comment=Webkit based browser
-Exec=midori
-Terminal=false
-Type=Application
-Categories=Application
diff --git a/packages/gtk-webcore/midori_0.0.6.bb b/packages/gtk-webcore/midori_0.0.6.bb
deleted file mode 100644
index ed0213964f..0000000000
--- a/packages/gtk-webcore/midori_0.0.6.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "Midori is a lightweight web browser."
-LICENSE = "GPLv2"
-
-DEPENDS = "webkit-gtk libsexy"
-
-inherit autotools pkgconfig
-
-SRC_URI = "http://software.twotoasts.de/media/midori/midori-${PV}.tar.gz \
- file://midori.desktop"
-
-do_install_append() {
- if [ -f ${WORKDIR}/midori.desktop ]; then
- install -d ${D}${datadir}/applications
- install -m 0644 ${WORKDIR}/midori.desktop ${D}${datadir}/applications
- fi
-
-}
-
diff --git a/packages/gtk-webcore/midori_0.0.8.bb b/packages/gtk-webcore/midori_0.0.8.bb
new file mode 100644
index 0000000000..23d0179375
--- /dev/null
+++ b/packages/gtk-webcore/midori_0.0.8.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Midori is a lightweight web browser."
+LICENSE = "GPLv2"
+
+DEPENDS = "webkit-gtk libsexy"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://software.twotoasts.de/media/midori/midori-${PV}.tar.gz \
+ "
+
+
diff --git a/packages/libgcrypt/libgcrypt_1.2.3.bb b/packages/libgcrypt/libgcrypt_1.2.3.bb
index 3cca30a6bb..74205da673 100644
--- a/packages/libgcrypt/libgcrypt_1.2.3.bb
+++ b/packages/libgcrypt/libgcrypt_1.2.3.bb
@@ -3,6 +3,7 @@ SECTION = "libs"
PRIORITY = "optional"
LICENSE = "GPL LGPL FDL"
DEPENDS = "libgpg-error"
+PR = "r1"
# move libgcrypt-config into -dev package
FILES_${PN} = "${libdir}/lib*.so.*"
@@ -17,14 +18,5 @@ EXTRA_OECONF = "--without-pth --disable-asm --with-capabilities"
ARM_INSTRUCTION_SET = "arm"
do_stage() {
- oe_libinstall -so -C src libgcrypt ${STAGING_LIBDIR}
- oe_libinstall -so -C src libgcrypt-pthread ${STAGING_LIBDIR}
- install -m 0755 src/libgcrypt-config ${STAGING_BINDIR_CROSS}/
-
- install -d ${STAGING_INCDIR}/
- for X in gcrypt.h gcrypt-module.h
- do
- install -m 0644 src/${X} ${STAGING_INCDIR}/${X}
- done
-
+ autotools_stage_all
}
diff --git a/packages/linux/linux.inc b/packages/linux/linux.inc
index 7579481005..41b0c13179 100644
--- a/packages/linux/linux.inc
+++ b/packages/linux/linux.inc
@@ -40,7 +40,7 @@ do_configure_prepend() {
#
# oabi / eabi support
#
- if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
+ if [ "${TARGET_OS}" = "linux-gnueabi" -o "${TARGET_OS}" = "linux-uclibcgnueabi" ]; then
echo "CONFIG_AEABI=y" >> ${S}/.config
echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
else
diff --git a/packages/maemo3/hildon-1_svn.bb b/packages/maemo3/hildon-1_svn.bb
index c5c01792ca..5105472989 100644
--- a/packages/maemo3/hildon-1_svn.bb
+++ b/packages/maemo3/hildon-1_svn.bb
@@ -3,7 +3,7 @@ LICENSE = "LGPL"
DEPENDS = "gconf-dbus esound gtk+"
-PV = "1.0.12+svnr${SRCREV}"
+PV = "1.0.17+svnr${SRCREV}"
SRC_URI = "svn://stage.maemo.org/svn/maemo/projects/haf/trunk;module=hildon-1;proto=https \
file://buttonbox.patch;patch=1 "
diff --git a/packages/gtk-webcore/midori/.mtn2git_empty b/packages/maemo3/libhildonfm/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gtk-webcore/midori/.mtn2git_empty
+++ b/packages/maemo3/libhildonfm/.mtn2git_empty
diff --git a/packages/maemo3/libhildonfm/hildonfm-ifdef-maemogtk.diff b/packages/maemo3/libhildonfm/hildonfm-ifdef-maemogtk.diff
new file mode 100644
index 0000000000..8d91e1dd65
--- /dev/null
+++ b/packages/maemo3/libhildonfm/hildonfm-ifdef-maemogtk.diff
@@ -0,0 +1,132 @@
+--- /tmp/hildon-file-selection.c 2007-10-02 10:08:17.000000000 +0200
++++ 1_1.9.41/hildon-fm/hildon-file-selection.c 2007-10-02 11:26:58.292045000 +0200
+@@ -2036,6 +2036,7 @@
+ g_object_set(cell, "text", buffer, "sensitive", sensitive, NULL);
+ }
+
++#ifdef USE_MAEMO_GTK
+ static void hildon_file_selection_navigation_pane_context(GtkWidget *
+ widget,
+ gpointer data)
+@@ -2052,6 +2053,7 @@
+ ULOG_DEBUG(__FUNCTION__);
+ g_signal_emit(data, signal_content_pane_context_menu, 0);
+ }
++#endif /* USE_MAEMO_GTK */
+
+ static gboolean hildon_file_selection_on_content_pane_key(GtkWidget *
+ widget,
+@@ -2200,6 +2202,7 @@
+ }
+ }
+
++#ifdef USE_MAEMO_GTK
+ static gboolean
+ tap_and_hold_query (gpointer self, guint signal_id)
+ {
+@@ -2225,6 +2228,8 @@
+ return tap_and_hold_query (self, signal_navigation_pane_context_menu);
+ }
+
++#endif /* USE_MAEMO_GTK */
++
+ static void hildon_file_selection_create_thumbnail_view(HildonFileSelection
+ * self)
+ {
+@@ -2277,7 +2282,7 @@
+ g_signal_connect_object(tree, "key-press-event",
+ G_CALLBACK(hildon_file_selection_on_content_pane_key),
+ self, 0);
+-
++#ifdef USE_MAEMO_GTK
+ gtk_widget_tap_and_hold_setup(GTK_WIDGET(tree), NULL, NULL,
+ GTK_TAP_AND_HOLD_NONE | GTK_TAP_AND_HOLD_NO_INTERNALS);
+ g_signal_connect_object (tree, "tap-and-hold-query",
+@@ -2286,6 +2291,7 @@
+ g_signal_connect_object(tree, "tap-and-hold",
+ G_CALLBACK
+ (hildon_file_selection_content_pane_context), self, 0);
++#endif /* USE_MAEMO_GTK */
+
+ g_signal_connect_object(tree, "notify::has-focus",
+ G_CALLBACK(content_pane_focus), self, 0);
+@@ -2397,7 +2403,7 @@
+ (selection, "changed",
+ G_CALLBACK (hildon_file_selection_content_pane_selection_changed),
+ self, 0);
+-
++#ifdef USE_MAEMO_GTK
+ gtk_widget_tap_and_hold_setup(GTK_WIDGET(tree), NULL, NULL,
+ GTK_TAP_AND_HOLD_NONE | GTK_TAP_AND_HOLD_NO_INTERNALS);
+ g_signal_connect_object (tree, "tap-and-hold-query",
+@@ -2406,7 +2412,7 @@
+ g_signal_connect_object(tree, "tap-and-hold",
+ G_CALLBACK
+ (hildon_file_selection_content_pane_context), self, 0);
+-
++#endif /* USE_MAEMO_GTK */
+ g_signal_connect_object(tree, "key-press-event",
+ G_CALLBACK(hildon_file_selection_on_content_pane_key),
+ self, 0);
+@@ -2492,7 +2498,7 @@
+ g_signal_connect_object(selection, "changed",
+ G_CALLBACK(hildon_file_selection_selection_changed),
+ self, 0);
+-
++#ifdef USE_MAEMO_GTK
+ gtk_widget_tap_and_hold_setup(GTK_WIDGET(self->priv->dir_tree), NULL,
+ NULL, GTK_TAP_AND_HOLD_NONE | GTK_TAP_AND_HOLD_NO_INTERNALS);
+ g_signal_connect_object (self->priv->dir_tree, "tap-and-hold-query",
+@@ -2502,7 +2508,7 @@
+ G_CALLBACK
+ (hildon_file_selection_navigation_pane_context),
+ self, 0);
+-
++#endif /* USE_MAEMO_GTK */
+ g_signal_connect_object(self->priv->dir_tree, "key-press-event",
+ G_CALLBACK
+ (hildon_file_selection_on_navigation_pane_key), self, 0);
+--- /tmp/hildon-file-chooser-dialog.c 2007-10-02 10:14:05.000000000 +0200
++++ 1_1.9.41/hildon-fm/hildon-file-chooser-dialog.c 2007-10-02 11:33:43.132045000 +0200
+@@ -191,7 +191,7 @@
+
+ return (first_digit << 4) | second_digit;
+ }
+-
++#ifdef USE_MAEMO_GTK
+ static void chooser_entry_invalid_input_cb (GtkEntry *entry,
+ GtkInvalidInputType inv_type,
+ gpointer user_data)
+@@ -202,7 +202,7 @@
+ HCS("ckdg_ib_maximum_characters_reached"));
+ }
+ }
+-
++#endif /* USE_MAEMO_GTK */
+ static gchar *
+ g_unescape_uri_string (const char *escaped,
+ int len,
+@@ -1837,8 +1837,9 @@
+ G_PARAM_READWRITE);
+ g_object_class_install_property(gobject_class, PROP_SELECTION_MODE, pspec);
+
+-
++#ifdef USE_MAEMO_GTK
+ hildon_gtk_file_chooser_install_properties(gobject_class);
++#endif
+ }
+
+ static void hildon_file_chooser_dialog_sort_changed(GtkWidget * item,
+@@ -1975,10 +1976,10 @@
+ g_signal_connect( priv->entry_name, "changed",
+ G_CALLBACK( hildon_file_chooser_entry_changed ),
+ self );
+-
++#ifdef USE_MAEMO_GTK
+ g_signal_connect(priv->entry_name, "invalid-input",
+ G_CALLBACK(chooser_entry_invalid_input_cb), self);
+-
++#endif /* USE_MAEMO_GTK */
+ priv->hbox_location = gtk_hbox_new(FALSE, HILDON_MARGIN_DEFAULT);
+ priv->hbox_items = gtk_hbox_new(FALSE, HILDON_MARGIN_DEFAULT);
+ priv->image_location = gtk_image_new();
diff --git a/packages/maemo3/libhildonfm_1.9.41.bb b/packages/maemo3/libhildonfm_1.9.41.bb
new file mode 100644
index 0000000000..de1bb3d9e3
--- /dev/null
+++ b/packages/maemo3/libhildonfm_1.9.41.bb
@@ -0,0 +1,29 @@
+LICENSE = "LGPL"
+DESCRIPTION = "Nokia hildon filemanager library"
+
+DEPENDS = "hildon-thumbnail mce-dev libhildonmime osso-gwconnect hildon-libs osso-thumbnail"
+
+PR = "r0"
+
+SRC_URI = "http://repository.maemo.org/pool/sardine/main/source/libh/libhildonfm/libhildonfm_${PV}.tar.gz \
+ file://hildonfm-ifdef-maemogtk.diff;patch=1 \
+ "
+
+inherit autotools pkgconfig lib_package
+
+S = "${WORKDIR}/1_${PV}"
+
+do_configure_prepend() {
+ # remove Werror from OSSO_CFLAGS
+ sed -i s:-Werror::g configure.ac
+ touch gtk-doc.make
+}
+
+
+PARALLEL_MAKE = ""
+
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/maemo3/libhildonhelp_1.9.1.bb b/packages/maemo3/libhildonhelp_1.9.1.bb
index b04efe2660..43d4c15d2e 100644
--- a/packages/maemo3/libhildonhelp_1.9.1.bb
+++ b/packages/maemo3/libhildonhelp_1.9.1.bb
@@ -1,7 +1,7 @@
LICENSE = "LGPL"
DESCRIPTION = "Nokia hildon help library"
-DEPENDS = "libart libpng jpeg libxml2 gtkhtml-3.8 libosso"
+DEPENDS = "libart-lgpl libpng jpeg libxml2 gtkhtml-3.8 libosso"
PR = "r0"
diff --git a/packages/mono/README b/packages/mono/README
index 39479308b2..c3043faee3 100644
--- a/packages/mono/README
+++ b/packages/mono/README
@@ -1,10 +1,39 @@
-Mono in OE is still very much a work in progress.
-1.2.4
- - is reported to work on MIPS.
- - has floating point problems on ARM
+Notes on Mono support in OE.
+
+===============================
+Cross Compiling Mono
+
+Cross compiling mono requires a two stage build because the mono mcs directory
+cannot be built while cross compiling (http://www.mono-project.com/Mono:ARM).
+The recommended way to cross compile mono is to
+
+ 1. do a complete build on the host system, and install.
+ 2. cross compile mono which will only build the native target code and
+ overlay the target binaries on the host install.
+
+The MCS build (step 1) is implemented by the mono-mcs-intermediate* recipe.
+This recipe is very similiar to the native build, except it uses standard
+install prefixes and the install directory is tar'd up, and placed in staging
+for use by the cross build.
+
+During the mono cross build, the first step during the install is to untar
+the install results of the mcs-intermediate build. The cross build install
+then proceeds to overlay the native binaries in the install directory.
+
+================================
+mono.bbclass
+
+Has a helper function for the list that maps file patterns to package
+names and assemblies (see below). Also has a function mono_do_clilibs
+and inserts that function into PACKAGEFUNCS. This function calls
+mono_find_provides_and_requires which finds out (through calls to
+monodis --assembly and monodis --assemblyref) which assemblies are
+provided and required by a particular package. mono_do_clilibs then
+puts the information about provided assemblies into
+${STAGING_DIR}/clilibs/${packagename}.list and information about the
+required packages into ${PKGDEST}/{packagename}.clilibdeps where it
+will later be picked up by the modified read_shlibdeps.
+
-1.2.5
- - tested on ARM EABI. Floating point issues have been worked around.
-There is still a lot of packaging work that needs done to package the mono dll's for installation.
diff --git a/packages/mono/collect-paths.py b/packages/mono/collect-paths.py
new file mode 100644
index 0000000000..a49b76e5aa
--- /dev/null
+++ b/packages/mono/collect-paths.py
@@ -0,0 +1,135 @@
+#!/usr/bin/env python
+
+## This utility takes the debian directory from an unpacked debian mono source tree
+## (e.g. apt-get source mono), parses the *.install files and generates python source
+## for a list of dictionaries that describe the individual packages and their contents
+## The output will look like
+##debian_mono_file_table = [
+## { 'name': 'libmono-peapi1.0-cil',
+## 'patterns': [
+## '/usr/lib/mono/gac/PEAPI/1.0.*/',
+## '/usr/lib/mono/1.0/PEAPI.dll'
+## ],
+## 'assemblies': [
+## ('PEAPI', '1.0.*')
+## ]
+## },
+## { 'name': 'mono-mjs',
+## 'patterns': [
+## '/usr/bin/mjs',
+## '/usr/lib/mono/1.0/mjs.exe*'
+## ]
+## },
+##....
+
+
+import os, sys, re
+
+def collect_paths(dir):
+ paths = {}
+
+ os.chdir(dir)
+ for filename in os.listdir("."):
+ if filename.endswith(".install"):
+ fp = file(filename, "r")
+ lines = fp.readlines()
+ fp.close()
+
+ contents = []
+ for line in lines:
+ lineparts = line.strip().split()
+ if lineparts[0].startswith("debian/tmp"):
+ pattern = lineparts[0][ len("debian/tmp"): ]
+ if len(lineparts) == 2:
+ if not pattern.startswith(lineparts[1]):
+ print >>sys.stderr, "Warning: Apparently I don't fully understand the format in file %s" % filename
+ elif len(lineparts) > 2:
+ print >>sys.stderr, "Warning: Apparently I don't fully understand the format in file %s" % filename
+
+ contents.append( pattern )
+ else:
+ print >>sys.stderr, "Note: Ignoring %s in %s" % (lineparts, filename)
+
+ paths[ filename[ :-len(".install") ] ] = contents
+
+ return paths
+
+def collect_packages(paths):
+ gac_re = re.compile(r'/usr/lib/mono/gac/(?P<assembly>[^/]+)/(?P<version>[^/]+)/?')
+
+ # These packages should be populated first (e.g. because their files will otherwise end up
+ # in other packages)
+ PACKAGES_FIRST = ("mono-jit", "mono-gac", "mono-mjs", "mono-gmcs", "mono-utils", "mono-doc")