summaryrefslogtreecommitdiff
path: root/recipes
diff options
context:
space:
mode:
Diffstat (limited to 'recipes')
-rw-r--r--recipes/alsa/alsa-state.bb2
-rw-r--r--recipes/at91bootstrap/at91bootstrap.inc1
-rw-r--r--recipes/chumby/chumby-firmware_1.2.bb2
-rw-r--r--recipes/corosync/corosync_1.2.8.bb (renamed from recipes/corosync/corosync_1.2.7.bb)7
-rw-r--r--recipes/corosync/files/corosync-docs.patch38
-rw-r--r--recipes/devicekit/libatasmart_0.13.bb1
-rw-r--r--recipes/enblend/enblend-enfuse_4.0.bb16
-rw-r--r--recipes/enblend/plotutils/01_configure_ac.patch28
-rw-r--r--recipes/enblend/plotutils_2.6.bb23
-rw-r--r--recipes/gcc/gcc-configure-canadian-sdk.inc7
-rw-r--r--recipes/gcc/gcc-configure-cross.inc7
-rw-r--r--recipes/gcc/gcc-configure-sdk.inc8
-rw-r--r--recipes/gdb/gdb-cross-sdk.inc13
-rw-r--r--recipes/git/git-native_1.7.0.2.bb1
-rw-r--r--recipes/git/git.inc2
-rw-r--r--recipes/git/git_1.7.0.2.bb72
-rw-r--r--recipes/gmp/gmp.inc7
-rw-r--r--recipes/gmp/gmp_4.2.4.bb14
-rw-r--r--recipes/gmp/gmp_5.0.1.bb5
-rw-r--r--recipes/gnome/gvfs_1.6.0.bb4
-rw-r--r--recipes/groff/groff_1.19.2.bb1
-rw-r--r--recipes/groff/groff_1.20.1.bb24
-rw-r--r--recipes/grub/grub-0.97/grub-support-256byte-inode.diff21
-rw-r--r--recipes/grub/grub_0.97.bb2
-rw-r--r--recipes/gstreamer/gst-plugin-gles_git.bb20
-rw-r--r--recipes/gstreamer/gst-plugins-bad_0.10.20.bb11
-rw-r--r--recipes/gstreamer/gst-plugins-base_0.10.30.bb27
-rw-r--r--recipes/gstreamer/gst-plugins.inc4
-rw-r--r--recipes/gstreamer/gstreamer_0.10.30.bb11
-rw-r--r--recipes/gtk+/gtk+-2.14.2/no-demos.patch10
-rw-r--r--recipes/gtk+/gtk+_2.14.2.bb13
-rw-r--r--recipes/iphone/apple-csu_0.30.bb2
-rw-r--r--recipes/iphone/gcc-iphone-cross_git.bb1
-rw-r--r--recipes/iphone/iphone-rootfs_2.2.1.bb3
-rw-r--r--recipes/iphone/iphone-sdks_2.2.1.bb3
-rw-r--r--recipes/iw/iw/kill-git-version-check.patch26
-rw-r--r--recipes/iw/iw_0.9.18.bb7
-rw-r--r--recipes/libelf/libelf_0.8.13.bb2
-rw-r--r--recipes/libmpc/libmpc_0.8.1.bb4
-rw-r--r--recipes/libmpc/libmpc_0.8.2.bb2
-rw-r--r--recipes/libnl/libnl2_git.bb4
-rw-r--r--recipes/libnl/libnl_1.1.bb4
-rw-r--r--recipes/libunwind/libunwind.inc2
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0022-mach-gta02-fix-PR2349-do-not-manage-down.patch25
-rw-r--r--recipes/linux/linux-openmoko-2.6.32_git.bb8
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0001-DRM-for-platform-devices.patch8
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0001-accels.patch.patch8
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0001-glamo-core-move-glamo_engine_reg_set-definition-outs.patch44
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0001-glamo-display-Enable-FIFO-stage-for-the-LCD-engine-s.patch6
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0001-mach-gta02-fix-gsm-power_on-sysfs-node-path.patch25
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0002-Glamo-DRM-and-KMS-driver.patch6
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0002-usbhost.patch.patch10
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0003-Work-on-Glamo-core-for-DRM.patch18
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0003-ar6000_delay.patch.patch6
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0004-JBT6k74-work-for-KMS.patch6
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0004-save_regs.patch.patch6
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0005-Fix-dynamic-command-queue-allocation.patch10
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0006-Debug-statements-for-testing.patch8
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0007-Fix-claim-of-2D-register-resource.patch8
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0008-Use-unlocked_ioctl-rather-than-ioctl.patch8
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0009-glamo-display-fix-WSOD-for-242-timming.patch6
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/0010-mach-gta02-fix-PR2349-do-not-manage-down.patch25
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/touchscreen_ignoreunexpectedintr34.patch12
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/use-noclone-attribute-for-naked.patch139
-rw-r--r--recipes/linux/linux-openmoko-2.6.34/wm8753-fix-build-with-gcc-4.4.2-which-works-ok-with-.patch8
-rw-r--r--recipes/linux/linux-openmoko-2.6.34_git.bb13
-rw-r--r--recipes/live555/live555.inc4
-rw-r--r--recipes/mozilla/firefox/Add-nanojit-support-for-ARMv4T.patch463
-rw-r--r--recipes/mozilla/firefox_3.6.8.bb3
-rw-r--r--recipes/mpfr/mpfr_3.0.0.bb2
-rw-r--r--recipes/mpfr/mpfr_svn.bb2
-rw-r--r--recipes/mupdf/files/wintitle.patch15
-rw-r--r--recipes/mupdf/mupdf-0.6/Makerules8
-rw-r--r--recipes/mupdf/mupdf-0.6/mupdf_fix_endianness.patch90
-rw-r--r--recipes/mupdf/mupdf_git.bb (renamed from recipes/mupdf/mupdf_0.6.bb)30
-rw-r--r--recipes/musicbrainz/files/libmusicbrainz-3.0.2-cmake-neon.patch37
-rw-r--r--recipes/musicbrainz/libmusicbrainz_3.0.2.bb3
-rw-r--r--recipes/mythfront/mythfront-config.bb14
-rw-r--r--recipes/netbase/netbase_4.21.bb2
-rw-r--r--recipes/nodejs/nodejs_0.2.1.bb1
-rw-r--r--recipes/obsolete/farsight/farsight_0.1.5.bb (renamed from recipes/farsight/farsight_0.1.5.bb)0
-rw-r--r--recipes/obsolete/farsight/gst-plugins-farsight_0.10.1.bb (renamed from recipes/farsight/gst-plugins-farsight_0.10.1.bb)0
-rw-r--r--recipes/obsolete/tapioca/libjingle-tapioca-0.3.10/fix-host-h-double-install.patch (renamed from recipes/tapioca/libjingle-tapioca-0.3.10/fix-host-h-double-install.patch)0
-rw-r--r--recipes/obsolete/tapioca/libjingle-tapioca-0.3.10/gcc-4.5-compilation-fixes.patch (renamed from recipes/tapioca/libjingle-tapioca-0.3.10/gcc-4.5-compilation-fixes.patch)0
-rw-r--r--recipes/obsolete/tapioca/libjingle-tapioca_0.3.10.bb (renamed from recipes/tapioca/libjingle-tapioca_0.3.10.bb)0
-rw-r--r--recipes/obsolete/tapioca/tapioca-xmpp_0.3.9.bb (renamed from recipes/tapioca/tapioca-xmpp_0.3.9.bb)0
-rw-r--r--recipes/obsolete/tapioca/tapioca_0.3.9.bb (renamed from recipes/tapioca/tapioca_0.3.9.bb)0
-rw-r--r--recipes/obsolete/tapioca/tapiocaui_0.3.9.1.bb (renamed from recipes/tapioca/tapiocaui_0.3.9.1.bb)0
-rw-r--r--recipes/omnewrotate/omnewrotate_svn.bb8
-rw-r--r--recipes/openmoko-3rdparty/mokosuite2_git.bb21
-rw-r--r--recipes/openmoko-3rdparty/mokosuite2_svn.bb27
-rw-r--r--recipes/openmoko-3rdparty/mokowm-imf-ecore_git.bb (renamed from recipes/openmoko-3rdparty/mokowm-imf-ecore_svn.bb)10
-rw-r--r--recipes/openmoko-3rdparty/mokowm_git.bb23
-rw-r--r--recipes/opkg/opkg.inc5
-rw-r--r--recipes/orc/orc_0.4.9.bb5
-rw-r--r--recipes/p4/p4.inc72
-rw-r--r--recipes/p4/p4_04.2.bb18
-rw-r--r--recipes/p4/p4_05.2.bb18
-rw-r--r--recipes/perl/perl-5.10.1/abstract-sockets.diff122
-rw-r--r--recipes/perl/perl-5.10.1/anon-tmpfile-dir.diff102
-rw-r--r--recipes/perl/perl-5.10.1/archive-tar-instance-error.diff109
-rw-r--r--recipes/perl/perl-5.10.1/arm-alignment.diff39
-rw-r--r--recipes/perl/perl-5.10.1/arm_thread_stress_timeout.diff23
-rw-r--r--recipes/perl/perl-5.10.1/assorted_docs.diff25
-rw-r--r--recipes/perl/perl-5.10.1/autodie-flock.diff98
-rw-r--r--recipes/perl/perl-5.10.1/cpan_config_path.diff22
-rw-r--r--recipes/perl/perl-5.10.1/cpan_definstalldirs.diff35
-rw-r--r--recipes/perl/perl-5.10.1/cpanplus_config_path.diff43
-rw-r--r--recipes/perl/perl-5.10.1/cpanplus_definstalldirs.diff52
-rw-r--r--recipes/perl/perl-5.10.1/crash-on-undefined-destroy.diff58
-rw-r--r--recipes/perl/perl-5.10.1/db_file_ver.diff32
-rw-r--r--recipes/perl/perl-5.10.1/devel-ppport-ia64-optim.diff32
-rw-r--r--recipes/perl/perl-5.10.1/disable-zlib-bundling.diff29
-rw-r--r--recipes/perl/perl-5.10.1/doc_info.diff55
-rw-r--r--recipes/perl/perl-5.10.1/enc2xs_inc.diff49
-rw-r--r--recipes/perl/perl-5.10.1/errno_ver.diff32
-rw-r--r--recipes/perl/perl-5.10.1/extutils_hacks.diff313
-rw-r--r--recipes/perl/perl-5.10.1/fakeroot.diff43
-rw-r--r--recipes/perl/perl-5.10.1/fcgi-test.diff31
-rw-r--r--recipes/perl/perl-5.10.1/format-write-crash.diff1255
-rw-r--r--recipes/perl/perl-5.10.1/hppa-thread-eagain.diff72
-rw-r--r--recipes/perl/perl-5.10.1/hurd-ccflags.diff26
-rw-r--r--recipes/perl/perl-5.10.1/hurd_cppsymbols.diff25
-rw-r--r--recipes/perl/perl-5.10.1/instmodsh_doc.diff26
-rw-r--r--recipes/perl/perl-5.10.1/kfreebsd-filecopy-pipes.diff68
-rw-r--r--recipes/perl/perl-5.10.1/kfreebsd_cppsymbols.diff28
-rw-r--r--recipes/perl/perl-5.10.1/ld_run_path.diff23
-rw-r--r--recipes/perl/perl-5.10.1/libnet_config_path.diff35
-rw-r--r--recipes/perl/perl-5.10.1/m68k_thread_stress.diff43
-rw-r--r--recipes/perl/perl-5.10.1/mod_paths.diff117
-rw-r--r--recipes/perl/perl-5.10.1/module_build_man_extensions.diff31
-rw-r--r--recipes/perl/perl-5.10.1/net_smtp_docs.diff23
-rw-r--r--recipes/perl/perl-5.10.1/perl_5.10.1-8.diff.gzbin100662 -> 0 bytes
-rw-r--r--recipes/perl/perl-5.10.1/perl_synopsis.diff96
-rw-r--r--recipes/perl/perl-5.10.1/perlivp.diff38
-rw-r--r--recipes/perl/perl-5.10.1/pod2man-index-backslash.diff54
-rw-r--r--recipes/perl/perl-5.10.1/positive-gpos.diff36
-rw-r--r--recipes/perl/perl-5.10.1/processPL.diff43
-rw-r--r--recipes/perl/perl-5.10.1/prune_libs.diff36
-rw-r--r--recipes/perl/perl-5.10.1/safe-upgrade.diff836
-rw-r--r--recipes/perl/perl-5.10.1/tainted-errno.diff85
-rw-r--r--recipes/perl/perl-5.10.1/tell-crash.diff33
-rw-r--r--recipes/perl/perl-5.10.1/trie-logic-match.diff111
-rw-r--r--recipes/perl/perl-5.10.1/use_gdbm.diff39
-rw-r--r--recipes/perl/perl-native_5.10.1.bb6
-rw-r--r--recipes/perl/perl-rdepends_5.10.1.inc3
-rw-r--r--recipes/perl/perl-rprovides_5.10.1.inc1
-rw-r--r--recipes/perl/perl_5.10.1.bb53
-rw-r--r--recipes/pivotinit/pivotinit_1.0.0.bb1
-rw-r--r--recipes/python/python-cython-native_0.12.1.bb10
-rw-r--r--recipes/python/python-cython_0.13.bb (renamed from recipes/python/python-cython_0.12.1.bb)9
-rw-r--r--recipes/python/python-pybluez_0.18.bb13
-rw-r--r--recipes/qt4/qt4-tools-sdk_4.6.3.bb6
-rw-r--r--recipes/x-load/x-load-git/igep0020/remove-final-ldflags.patch11
-rw-r--r--recipes/x-load/x-load_git.bb7
-rw-r--r--recipes/xorg-lib/pixman-0.19.4/0001-ARM-HACK-added-NEON-optimizations-for-fetch-store-r5.patch168
-rw-r--r--recipes/xorg-lib/pixman-0.19.4/0002-Don-t-discriminate-PAD-and-REFLECT-repeat-in-standar.patch59
-rw-r--r--recipes/xorg-lib/pixman-0.19.4/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch114
-rw-r--r--recipes/xorg-lib/pixman-0.19.4/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch91
-rw-r--r--recipes/xorg-lib/pixman-0.19.4/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch91
-rw-r--r--recipes/xorg-lib/pixman-0.19.4/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch94
-rw-r--r--recipes/xorg-lib/pixman_0.19.4.bb23
162 files changed, 6413 insertions, 626 deletions
diff --git a/recipes/alsa/alsa-state.bb b/recipes/alsa/alsa-state.bb
index 04e500c55b..501f83f602 100644
--- a/recipes/alsa/alsa-state.bb
+++ b/recipes/alsa/alsa-state.bb
@@ -7,7 +7,7 @@
DESCRIPTION = "Alsa Scenario Files"
LICENSE = "MIT"
PV = "0.2.0"
-PR = "r19"
+PR = "r20"
SRC_URI = "\
file://asound.conf \
diff --git a/recipes/at91bootstrap/at91bootstrap.inc b/recipes/at91bootstrap/at91bootstrap.inc
index 2160f64fbc..dfe143ac59 100644
--- a/recipes/at91bootstrap/at91bootstrap.inc
+++ b/recipes/at91bootstrap/at91bootstrap.inc
@@ -1,6 +1,7 @@
DESCRIPTION = "at91bootstrap: loaded into internal SRAM by AT91 BootROM"
SECTION = "bootloaders"
+COMPATIBLE_MACHINE = "(afeb9260|at91cap9adk|at91sam9g20ek|at91sam9rlek|at91sam9263ek|at91sam9260ek|at91sam9xeek|at91sam9261ek)"
SRC_URI = "ftp://www.at91.com/pub/buildroot/${PN}-${PV}.tar.bz2 \
file://defconfig \
"
diff --git a/recipes/chumby/chumby-firmware_1.2.bb b/recipes/chumby/chumby-firmware_1.2.bb
index 2b3213c783..26a5ec513c 100644
--- a/recipes/chumby/chumby-firmware_1.2.bb
+++ b/recipes/chumby/chumby-firmware_1.2.bb
@@ -6,7 +6,7 @@ SRC_URI = "http://files.chumby.com/resources/chumby_fw_1_2.zip"
S = ${WORKDIR}
PACKAGE_ARCH = "chumby"
-COMPATIBLE_MACHINES = "chumby"
+COMPATIBLE_MACHINE = "(chumby)"
do_install () {
cd ${S}/update1 && unzip k2.bin.zip
diff --git a/recipes/corosync/corosync_1.2.7.bb b/recipes/corosync/corosync_1.2.8.bb
index b3f6f49b51..c3e4290009 100644
--- a/recipes/corosync/corosync_1.2.7.bb
+++ b/recipes/corosync/corosync_1.2.8.bb
@@ -1,19 +1,20 @@
DESCRIPTION = "OSI Certified implementation of a complete cluster engine"
LICENSE = "BSD"
+DEPENDS = "groff-native"
PR = "r0"
SRC_URI = " \
ftp://ftp@corosync.org/downloads/corosync-${PV}/corosync-${PV}.tar.gz \
file://fix-lcrso-linkage.patch \
+ file://corosync-docs.patch \
file://init \
file://corosync.conf \
file://volatiles \
file://fix-define-semun-union.patch \
"
-SRC_URI[md5sum] = "a1f5b03512977d495819e2ed05ba645b"
-SRC_URI[sha256sum] = "0f774cee5d9f5d3e20b146c8719115c029815015952b48de1b99b61b462367d1"
-
+SRC_URI[md5sum] = "43e97ef0d964ccb4063f40a4478eb679"
+SRC_URI[sha256sum] = "424b0590e52a08cf9066f9edbac4edf84e9d9bff54dd5036fb681d917db02bc8"
inherit autotools update-rc.d
diff --git a/recipes/corosync/files/corosync-docs.patch b/recipes/corosync/files/corosync-docs.patch
new file mode 100644
index 0000000000..1b5fc30421
--- /dev/null
+++ b/recipes/corosync/files/corosync-docs.patch
@@ -0,0 +1,38 @@
+Make docs optional
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -432,7 +432,7 @@
+ fi
+
+ # final build of *FLAGS
+-CFLAGS="$ENV_CFLAGS $OPT_CFLAGS $GDB_FLAGS $OS_CFLAGS \
++CFLAGS="$ENV_CFLAGS $OS_CFLAGS \
+ $COVERAGE_CFLAGS $EXTRA_WARNINGS $WERROR_CFLAGS $NSS_CFLAGS"
+ CPPFLAGS="$ENV_CPPFLAGS $ANSI_CPPFLAGS $OS_CPPFLAGS"
+ LDFLAGS="$ENV_LDFLAGS $COVERAGE_LDFLAGS $OS_LDFLAGS"
+@@ -458,7 +458,10 @@
+ AC_SUBST([DARWIN_OPTS])
+ AC_SUBST([SOLARIS_OPTS])
+
+-AM_CONDITIONAL(BUILD_HTML_DOCS, test -n "${GROFF}")
++AC_ARG_ENABLE([doc],
++ AS_HELP_STRING([--enable-doc],[Build html documentation])
++)
++AM_CONDITIONAL(BUILD_HTML_DOCS, [test -n "${GROFF}" && test "x$enable_doc" = "xyes"] )
+
+ AC_SUBST([LINT_FLAGS])
+
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -41,9 +41,6 @@
+ config.guess config.sub missing install-sh \
+ autoheader automake autoconf
+
+-dist_doc_DATA = LICENSE INSTALL README.devmap \
+- README.recovery SECURITY TODO AUTHORS
+-
+ corosysconfdir = ${COROSYSCONFDIR}
+
+ corosysconf_DATA = conf/corosync.conf.example
+
diff --git a/recipes/devicekit/libatasmart_0.13.bb b/recipes/devicekit/libatasmart_0.13.bb
index 719675b1cd..992ff3ebbe 100644
--- a/recipes/devicekit/libatasmart_0.13.bb
+++ b/recipes/devicekit/libatasmart_0.13.bb
@@ -1,3 +1,4 @@
+DEPENDS = "udev"
LICENSE = "LGPL"
SRCREV = "a80d7d5c25e88adea7b8e843cdb57143e6cfb46b"
diff --git a/recipes/enblend/enblend-enfuse_4.0.bb b/recipes/enblend/enblend-enfuse_4.0.bb
new file mode 100644
index 0000000000..63aa469a76
--- /dev/null
+++ b/recipes/enblend/enblend-enfuse_4.0.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Enblend/Enfuse - combine image with no seams"
+LICENSE = "GPLv2"
+
+DEPENDS = "tiff jpeg plotutils boost"
+
+SRC_URI = "http://downloads.sourceforge.net/project/enblend/enblend-enfuse/enblend-enfuse-${PV}/enblend-enfuse-${PV}.tar.gz"
+SRC_URI[md5sum] = "2e7c950061e0085fd75d94576130250f"
+SRC_URI[sha256sum] = "a12a44c2a07894f27e1d5a1675728175a943c89b91c1ac9abacce62f08c253c4"
+
+S = "${WORKDIR}/enblend-enfuse-4.0-753b534c819d"
+
+inherit autotools
+
+# Disable parallel make, the link step takes >2GB of ram otherwise
+PARALLEL_MAKE = ""
+
diff --git a/recipes/enblend/plotutils/01_configure_ac.patch b/recipes/enblend/plotutils/01_configure_ac.patch
new file mode 100644
index 0000000000..e432d135a8
--- /dev/null
+++ b/recipes/enblend/plotutils/01_configure_ac.patch
@@ -0,0 +1,28 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 01_configure_ac.dpatch by Floris Bruynooghe <floris.bruynooghe@gmail.com>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Enable AM_MAINTAINER_MODE to stop make from rebuilding configure in
+## DP: case of timestamp skew (as created by dpkg-source).
+
+@DPATCH@
+diff -urNad plotutils-2.5~/configure.ac plotutils-2.5/configure.ac
+--- plotutils-2.5~/configure.ac 2009-05-03 14:28:26.000000000 +0000
++++ plotutils-2.5/configure.ac 2009-05-03 14:33:24.000000000 +0000
+@@ -8,6 +8,8 @@
+ AM_INIT_AUTOMAKE([plotutils],[2.5])
+ AM_CONFIG_HEADER(config.h:config.hin)
+
++AM_MAINTAINER_MODE
++
+ # The following will be defined in config.h, if appropriate.
+
+ # Miscellaneous.
+@@ -64,6 +66,7 @@
+ # Note: this can apparently alter CFLAGS, on a few platforms, e.g., on
+ # SCO OpenServer 5 (i.e. *-*-sco3.2v5*), "-belf" is added.
+ AC_PROG_LIBTOOL
++AC_PROG_CXX
+
+ # Determine extension (e.g. ".exe") on executables, if any.
+ AC_EXEEXT
diff --git a/recipes/enblend/plotutils_2.6.bb b/recipes/enblend/plotutils_2.6.bb
new file mode 100644
index 0000000000..90a32b0e56
--- /dev/null
+++ b/recipes/enblend/plotutils_2.6.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "The GNU plotutils package contains software for both programmers and technical users. Its centerpiece is libplot, a powerful C/C++ function library for exporting 2-D vector graphics in many file formats, both vector and raster. It can also do vector graphics animations."
+
+LICENSE = "GPLv2+"
+
+SRC_URI = "http://ftp.gnu.org/gnu/plotutils/plotutils-${PV}.tar.gz \
+ file://01_configure_ac.patch"
+SRC_URI[md5sum] = "c08a424bd2438c80a786a7f4b5bb6a40"
+SRC_URI[sha256sum] = "4f4222820f97ca08c7ea707e4c53e5a3556af4d8f1ab51e0da6ff1627ff433ab"
+
+inherit autotools
+
+EXTRA_OECONF = "--enable-libxmi"
+
+python populate_packages_prepend () {
+ libdir = bb.data.expand('${libdir}', d)
+ libdir_dbg = bb.data.expand('${libdir}/.debug', d)
+ do_split_packages(d, libdir, '^lib(.*)\.so$', 'lib%s-dev', 'GNU Plotutils %s development package', extra_depends='${PN}-dev', allow_links=True)
+ do_split_packages(d, libdir, '^lib(.*)\.la$', 'lib%s-dev', 'GNU Plotutils %s development package', extra_depends='${PN}-dev')
+ do_split_packages(d, libdir, '^lib(.*)\.a$', 'lib%s-dev', 'GNU Plotutils %s development package', extra_depends='${PN}-dev')
+ do_split_packages(d, libdir, '^lib(.*)\.so\.*', 'lib%s', 'GNU Plotutils %s library', extra_depends='', allow_links=True)
+}
+
+FILES_${PN} = "${bindir}"
diff --git a/recipes/gcc/gcc-configure-canadian-sdk.inc b/recipes/gcc/gcc-configure-canadian-sdk.inc
index 83ae6f548d..5e27358d04 100644
--- a/recipes/gcc/gcc-configure-canadian-sdk.inc
+++ b/recipes/gcc/gcc-configure-canadian-sdk.inc
@@ -71,6 +71,13 @@ EXTRA_OECONF_PATHS = " \
do_configure () {
# Work around Hardcoded path assumptions in gcc
+ # Make sure we use GMP/MPFR statically
+ sed -i 's/^\(HOST_GMPLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.tpl
+ sed -i 's/^\(HOST_GMPLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.in
+ sed -i 's/^\(HOST_PPLLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.tpl
+ sed -i 's/^\(HOST_PPLLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.in
+ sed -i 's/^\(HOST_LIBELFLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.tpl
+ sed -i 's/^\(HOST_LIBELFLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.in
(cd ${S} && gnu-configize) || die "failure running gnu-configize"
(cd ${S}/libstdc++-v3 && autoreconf)
canadian_sdk_runconf
diff --git a/recipes/gcc/gcc-configure-cross.inc b/recipes/gcc/gcc-configure-cross.inc
index c3c2b665e4..7041fcfafc 100644
--- a/recipes/gcc/gcc-configure-cross.inc
+++ b/recipes/gcc/gcc-configure-cross.inc
@@ -17,6 +17,13 @@ do_configure_prepend () {
export OBJCOPY_FOR_TARGET="${TARGET_SYS}-objcopy"
export STRIP_FOR_TARGET="${TARGET_SYS}-strip"
export CC_FOR_TARGET="${CCACHE} ${TARGET_SYS}-gcc ${TARGET_CC_ARCH}"
+ # Make sure we use GMP/MPFR statically
+ sed -i 's/^\(HOST_GMPLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.tpl
+ sed -i 's/^\(HOST_GMPLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.in
+ sed -i 's/^\(HOST_PPLLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.tpl
+ sed -i 's/^\(HOST_PPLLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.in
+ sed -i 's/^\(HOST_LIBELFLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.tpl
+ sed -i 's/^\(HOST_LIBELFLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.in
}
LIBGCCS_VAR = "-lgcc_s"
diff --git a/recipes/gcc/gcc-configure-sdk.inc b/recipes/gcc/gcc-configure-sdk.inc
index 328e780082..c8fae11413 100644
--- a/recipes/gcc/gcc-configure-sdk.inc
+++ b/recipes/gcc/gcc-configure-sdk.inc
@@ -35,6 +35,14 @@ do_configure () {
export CPPFLAGS_FOR_BUILD="${BUILD_CPPFLAGS}"
export CXXFLAGS_FOR_BUILD="${BUILD_CXXFLAGS}"
export LDFLAGS_FOR_BUILD="${BUILD_LDFLAGS}"
+ # Make sure we use GMP/MPFR statically
+ sed -i 's/^\(HOST_GMPLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.tpl
+ sed -i 's/^\(HOST_GMPLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.in
+ sed -i 's/^\(HOST_PPLLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.tpl
+ sed -i 's/^\(HOST_PPLLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.in
+ sed -i 's/^\(HOST_LIBELFLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.tpl
+ sed -i 's/^\(HOST_LIBELFLIBS =\) \(.*\)$/\1 -Wl,-Bstatic \2 -Wl,-Bdynamic/' ${S}/Makefile.in
+
(cd ${S} && gnu-configize) || die "failure running gnu-configize"
oe_runconf
}
diff --git a/recipes/gdb/gdb-cross-sdk.inc b/recipes/gdb/gdb-cross-sdk.inc
index 7c856532ed..fbff553d29 100644
--- a/recipes/gdb/gdb-cross-sdk.inc
+++ b/recipes/gdb/gdb-cross-sdk.inc
@@ -1,8 +1,19 @@
require gdb-cross.inc
LICENSE = "GPLv3"
-INC_PR = "r6"
+INC_PR = "r7"
inherit sdk
DEPENDS = "ncurses-sdk zlib-sdk flex-native"
+EXTRA_OEMAKE = "'SUBDIRS=intl mmalloc libiberty opcodes bfd sim gdb etc utils' LDFLAGS='${BUILD_LDFLAGS}'"
+
+do_configure_append () {
+ cd ${B}
+ oe_runmake configure-host
+ sed -e 's,-lncurses,${STAGING_LIBDIR_NATIVE}/libncurses.a ${STAGING_LIBDIR_NATIVE}/libtinfo.a ,g' -i ${B}/gdb/Makefile
+ sed -e 's,-lz, ${STAGING_LIBDIR_NATIVE}/libz.a ,g' -i ${B}/gdb/Makefile
+ sed -e 's,-lexpat, ${STAGING_LIBDIR_NATIVE}/libexpat.a ,g' -i ${B}/gdb/Makefile
+ sed -e 's,libexpat.so,libexpat.a ,g' -i ${B}/gdb/Makefile
+ sed -e 's,-lz, ${STAGING_LIBDIR_NATIVE}/libz.a ,g' -i ${B}/sim/arm/Makefile
+} \ No newline at end of file
diff --git a/recipes/git/git-native_1.7.0.2.bb b/recipes/git/git-native_1.7.0.2.bb
index 5a4e8ddd9a..6dd14cb791 100644
--- a/recipes/git/git-native_1.7.0.2.bb
+++ b/recipes/git/git-native_1.7.0.2.bb
@@ -6,3 +6,4 @@ SRC_URI[src.md5sum] = "76518fa774b36de81d160b85fa4f19c1"
SRC_URI[src.sha256sum] = "5601df7fc282fdd66de196b282694eb77dcfc50438f01587de144b3ead1a6b2f"
EXTRA_OECONF_append = " --without-python"
+EXTRA_OEMAKE = "NO_TCLTK=1"
diff --git a/recipes/git/git.inc b/recipes/git/git.inc
index 8275adb1a2..bbbd7e966a 100644
--- a/recipes/git/git.inc
+++ b/recipes/git/git.inc
@@ -8,8 +8,6 @@ S = "${WORKDIR}/git-${PV}"
inherit autotools
-EXTRA_OEMAKE = "NO_TCLTK=1"
-
do_install () {
oe_runmake install DESTDIR="${D}" bindir=${bindir} \
template_dir=${datadir}/git-core/templates \
diff --git a/recipes/git/git_1.7.0.2.bb b/recipes/git/git_1.7.0.2.bb
index be7a526d1c..8f902e774a 100644
--- a/recipes/git/git_1.7.0.2.bb
+++ b/recipes/git/git_1.7.0.2.bb
@@ -8,21 +8,85 @@ SRC_URI += "file://git-less-hardlinks.diff"
EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no ac_cv_c_c99_format=yes"
-DEPENDS = "openssl curl zlib expat"
-RDEPENDS_${PN} = "perl perl-module-file-path cpio findutils sed"
+DEPENDS = "openssl curl zlib expat tcl-native"
+RDEPENDS_${PN} = "findutils sed"
# Dropbear ssh needs a wrapper script, so install openssh-ssh to make it work out of the box
RRECOMMENDS_${PN} = "openssh-ssh"
-PR = "r7"
+PR = "r10"
do_install_append() {
# Fix broken hardlinks
for gitprog in git-receive-pack git-upload-archive ; do
- rm ${D}${bindir}/$gitprog
+ rm ${D}${bindir}/$gitprog
ln -sf ${bindir}/git ${D}${bindir}/$gitprog
done
+ for gitprog in git-cvsserver git-shell git-upload-pack ; do
+ rm ${D}${libexecdir}/git-core/$gitprog
+ ln -sf ${bindir}/$gitprog ${D}${libexecdir}/git-core/$gitprog
+ done
rm ${D}${libexecdir}/git-core/git && ln -sf ${bindir}/git ${D}${libexecdir}/git-core/git
}
FILES_${PN}-dbg += "${libexecdir}/git-core/.debug"
+
+PACKAGES =+ "${PN}-perltools"
+FILES_${PN}-perltools += " \
+ ${libexecdir}/git-core/git-add--interactive \
+ ${libexecdir}/git-core/git-archimport \
+ ${libexecdir}/git-core/git-cvsexportcommit \
+ ${libexecdir}/git-core/git-cvsimport \
+ ${libexecdir}/git-core/git-cvsserver \
+ ${bindir}/git-cvsserver \
+ ${libexecdir}/git-core/git-difftool \
+ ${libexecdir}/git-core/git-relink \
+ ${libexecdir}/git-core/git-send-email \
+ ${libexecdir}/git-core/git-svn \
+ ${datadir}/perl \
+"
+RDEPENDS_${PN}-perltools = "${PN} perl perl-module-file-path findutils"
+
+PACKAGES =+ "${PN}-large"
+FILES_${PN}-large += " \
+ ${libexecdir}/git-core/git-http-backend \
+ ${libexecdir}/git-core/git-daemon \
+ ${libexecdir}/git-core/git-http-push \
+ ${libexecdir}/git-core/git-quiltimport \
+ ${libexecdir}/git-core/git-request-pull \
+ ${libexecdir}/git-core/git-shell \
+ ${bindir}/git-shell \
+ ${libexecdir}/git-core/git-instaweb \
+ ${libexecdir}/git-core/git-fast-import \
+ ${libexecdir}/git-core/git-imap-send \
+"
+# those might be useful in a less-than-large package ?
+FILES_${PN}-large += " \
+ ${libexecdir}/git-core/git-http-fetch \
+ ${libexecdir}/git-core/git-upload-pack \
+ ${bindir}/git-upload-pack \
+"
+# same here, but adding it causes git to depend on git-large(!)
+# see http://bugs.openembedded.net/show_bug.cgi?id=5465
+#FILES_${PN}-large += " \
+# ${libexecdir}/git-core/git-remote-http \
+#"
+RDEPENDS_${PN}-large = "${PN}"
+
+# git-tk package with gitk and git-gui
+PACKAGES =+ "${PN}-tk"
+RDEPENDS_${PN}-tk = "${PN} tk tcl"
+EXTRA_OEMAKE = "TCL_PATH=${STAGING_BINDIR_CROSS}/tclsh"
+FILES_${PN}-tk = " \
+ ${bindir}/gitk \
+ ${datadir}/gitk \
+"
+# git gui does not start at all at this time
+#FILES_${PN}-tk += " \
+# ${libexecdir}/git-core/git-gui \
+# ${libexecdir}/git-core/git-gui--askpass \
+# ${datadir}/git-gui \
+#"
+#PACKAGES += "${PN}-tk-locale"
+#PACKAGES_DYNAMIC = "${PN}-tk-locale-*"
+#FILES_${PN}-tk-locale = "${datadir}/git-gui/lib/msgs"
diff --git a/recipes/gmp/gmp.inc b/recipes/gmp/gmp.inc
index 55209f31da..522189d630 100644
--- a/recipes/gmp/gmp.inc
+++ b/recipes/gmp/gmp.inc
@@ -2,6 +2,7 @@ SECTION = "libs"
DESCRIPTION = "GNU multiprecision arithmetic library"
HOMEPAGE = "http://www.swox.com/gmp/"
LICENSE = "GPL LGPL"
+INC_PR = "r1"
SRC_URI = "${GNU_MIRROR}/gmp/gmp-${PV}.tar.bz2;name=gmp \
file://configure.patch \
@@ -11,5 +12,11 @@ inherit autotools
ARM_INSTRUCTION_SET = "arm"
+
+EXTRA_OECONF_append_virtclass-native = " --enable-static"
+
+BBCLASSEXTEND = "native nativesdk"
+NATIVE_INSTALL_WORKS = "1"
+
acpaths = ""
diff --git a/recipes/gmp/gmp_4.2.4.bb b/recipes/gmp/gmp_4.2.4.bb
index af05875075..6eb1ecbd1c 100644
--- a/recipes/gmp/gmp_4.2.4.bb
+++ b/recipes/gmp/gmp_4.2.4.bb
@@ -1,13 +1,13 @@
-INC_PR = "r0"
+require gmp.inc
+
+SRC_URI += "file://sh4-asmfix.patch \
+ file://use-includedir.patch \
+ file://dont_use_mips_h_constraint.patch \
+ "
+
PR = "${INC_PR}.5"
-SRC_URI_append += "file://sh4-asmfix.patch \
- file://use-includedir.patch \
- file://dont_use_mips_h_constraint.patch \
- "
-require gmp.inc
LICENSE = "GPLv3 LGPLv3"
-BBCLASSEXTEND = "nativesdk"
SRC_URI[gmp.md5sum] = "fc1e3b3a2a5038d4d74138d0b9cf8dbe"
SRC_URI[gmp.sha256sum] = "5420b0e558a69a53b36f2b2c70a69f547e075d98366a585fc80cbbcce1efe368"
diff --git a/recipes/gmp/gmp_5.0.1.bb b/recipes/gmp/gmp_5.0.1.bb
index 0b117b1e37..95cb771296 100644
--- a/recipes/gmp/gmp_5.0.1.bb
+++ b/recipes/gmp/gmp_5.0.1.bb
@@ -1,8 +1,5 @@
-INC_PR = "r0"
+require gmp.inc
PR = "${INC_PR}.1"
SRC_URI[gmp.md5sum] = "6bac6df75c192a13419dfd71d19240a7"
SRC_URI[gmp.sha256sum] = "a2a610f01fd3298dc08c87bf30498c2402590e1bcb227fc40b15ee6d280939fb"
-require gmp.inc
LICENSE = "GPLv3 LGPLv3"
-NATIVE_INSTALL_WORKS = "1"
-BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes/gnome/gvfs_1.6.0.bb b/recipes/gnome/gvfs_1.6.0.bb
index d03ce8754f..bc3031d543 100644
--- a/recipes/gnome/gvfs_1.6.0.bb
+++ b/recipes/gnome/gvfs_1.6.0.bb
@@ -1,6 +1,8 @@
DESCRIPTION = "gvfs is a userspace virtual filesystem"
LICENSE = "LGPL"
-DEPENDS = "gawk-native libimobiledevice gnome-keyring glib-2.0 obexftp fuse avahi fuse hal gconf samba gphoto2"
+DEPENDS = "libcdio gawk-native libimobiledevice gnome-keyring glib-2.0 obexftp fuse avahi fuse hal gconf samba gphoto2"
+
+PR = "r1"
inherit gnome
diff --git a/recipes/groff/groff_1.19.2.bb b/recipes/groff/groff_1.19.2.bb
index 22afab2d98..a5d8766e1c 100644
--- a/recipes/groff/groff_1.19.2.bb
+++ b/recipes/groff/groff_1.19.2.bb
@@ -27,6 +27,7 @@ do_configure() {
do_install_prepend() {
install -m 0755 -d ${D}
}
+BBCLASSEXTEND = "native"
SRC_URI[md5sum] = "f7c9cf2e4b9967d3af167d7c9fadaae4"
SRC_URI[sha256sum] = "d864fbd0bf6dea24e4f71736da9902a1cae86d0a1a893b5fe17118927257ec3e"
diff --git a/recipes/groff/groff_1.20.1.bb b/recipes/groff/groff_1.20.1.bb
new file mode 100644
index 0000000000..bb613e8bab
--- /dev/null
+++ b/recipes/groff/groff_1.20.1.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "GNU roff"
+SECTION = "base"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://ftp.gnu.org/gnu/groff/groff-${PV}.tar.gz \
+ "
+SRC_URI[md5sum] = "48fa768dd6fdeb7968041dd5ae8e2b02"
+SRC_URI[sha256sum] = "b645878135cb620c6c417c5601bfe96172245af12045540d7344938b4c2cd805"
+
+inherit autotools
+
+do_configure_prepend(){
+ sed -i \
+ -e '/^GROFFBIN=/s:=.*:=echo:' \
+ -e '/^TROFFBIN=/s:=.*:=echo:' \
+ -e '/^GROFF_BIN_PATH=/s:=.*:=:' \
+ -e '/^GROFF_BIN_DIR=/s:=.*:=:' \
+ ${S}/contrib/*/Makefile.sub \
+ ${S}/doc/Makefile.in \
+ ${S}/doc/Makefile.sub
+}
+
+BBCLASSEXTEND = "native"
diff --git a/recipes/grub/grub-0.97/grub-support-256byte-inode.diff b/recipes/grub/grub-0.97/grub-support-256byte-inode.diff
index bef3bc18e7..caaf9d6b62 100644
--- a/recipes/grub/grub-0.97/grub-support-256byte-inode.diff
+++ b/recipes/grub/grub-0.97/grub-support-256byte-inode.diff
@@ -1,7 +1,7 @@
-diff -Nrup a/stage2/fsys_ext2fs.c b/stage2/fsys_ext2fs.c
---- a/stage2/fsys_ext2fs.c 2004-08-08 20:19:18.000000000 +0200
-+++ b/stage2/fsys_ext2fs.c 2008-01-30 14:27:20.000000000 +0100
-@@ -79,7 +79,52 @@ struct ext2_super_block
+diff -Naur grub-0.97-800/stage2/fsys_ext2fs.c grub-0.97-810/stage2/fsys_ext2fs.c
+--- grub-0.97-800/stage2/fsys_ext2fs.c 2008-07-21 00:40:21.668879475 -0600
++++ grub-0.97-810/stage2/fsys_ext2fs.c 2008-07-21 01:01:11.063953773 -0600
+@@ -79,7 +79,52 @@
__u32 s_rev_level; /* Revision level */
__u16 s_def_resuid; /* Default uid for reserved blocks */
__u16 s_def_resgid; /* Default gid for reserved blocks */
@@ -55,17 +55,22 @@ diff -Nrup a/stage2/fsys_ext2fs.c b/stage2/fsys_ext2fs.c
};
struct ext2_group_desc
-@@ -218,6 +263,9 @@ struct ext2_dir_entry
+@@ -218,6 +263,14 @@
#define EXT2_ADDR_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (__u32))
#define EXT2_ADDR_PER_BLOCK_BITS(s) (log2(EXT2_ADDR_PER_BLOCK(s)))
-+#define EXT2_INODE_SIZE(s) (SUPERBLOCK->s_inode_size)
++#define EXT2_GOOD_OLD_REV 0 /* The good old (original) format */
++#define EXT2_DYNAMIC_REV 1 /* V2 format w/ dynamic inode sizes */
++#define EXT2_GOOD_OLD_INODE_SIZE 128
++#define EXT2_INODE_SIZE(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \
++ EXT2_GOOD_OLD_INODE_SIZE : \
++ (s)->s_inode_size)
+#define EXT2_INODES_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s)/EXT2_INODE_SIZE(s))
+
/* linux/ext2_fs.h */
#define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10)
/* kind of from ext2/super.c */
-@@ -553,7 +601,7 @@ ext2fs_dir (char *dirname)
+@@ -553,7 +606,7 @@
gdp = GROUP_DESC;
ino_blk = gdp[desc].bg_inode_table +
(((current_ino - 1) % (SUPERBLOCK->s_inodes_per_group))
@@ -74,7 +79,7 @@ diff -Nrup a/stage2/fsys_ext2fs.c b/stage2/fsys_ext2fs.c
#ifdef E2DEBUG
printf ("inode table fsblock=%d\n", ino_blk);
#endif /* E2DEBUG */
-@@ -565,13 +613,12 @@ ext2fs_dir (char *dirname)
+@@ -565,13 +618,12 @@
/* reset indirect blocks! */
mapblock2 = mapblock1 = -1;
diff --git a/recipes/grub/grub_0.97.bb b/recipes/grub/grub_0.97.bb
index 98691c1c38..eab4ad698c 100644
--- a/recipes/grub/grub_0.97.bb
+++ b/recipes/grub/grub_0.97.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "http://www.gnu.org/software/grub"
SECTION = "bootloaders"
PRIORITY = "optional"
RDEPENDS_${PN}-install = "diffutils"
-PR = "r6"
+PR = "r7"
SRC_URI = "ftp://alpha.gnu.org/gnu/grub/grub-${PV}.tar.gz \
file://automake-1.10.patch \
diff --git a/recipes/gstreamer/gst-plugin-gles_git.bb b/recipes/gstreamer/gst-plugin-gles_git.bb
index 58c78e2910..3ba9fdd5a3 100644
--- a/recipes/gstreamer/gst-plugin-gles_git.bb
+++ b/recipes/gstreamer/gst-plugin-gles_git.bb
@@ -3,19 +3,24 @@ require gst-plugins-package.inc
DESCRIPTION = "GStreamer OpenGL/GLES2 plugins"
LICENSE = "LGPL"
-SRCREV = "3d5ba149ee8c290bf9995cd2f6826b0ff2920adf"
+SRCREV = "eebd5c7587530521741155b6cc01c71d5d3c1bf5"
+#"15f8e2d17a61bf505c2c6fcd1296f776cd48dfee"
-PR = "r3"
+PR = "r0"
PR_append = "+gitr${SRCREV}"
-PV = "0.10"
+PV = "0.10.1.1"
DEPENDS = "virtual/libsdl libgles-omap3 gstreamer gst-plugins-base"
SRC_URI = "git://anongit.freedesktop.org/gstreamer/gst-plugins-gl;protocol=git \
- http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.23.tar.bz2 \
+ http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.29.tar.bz2 \
"
+SRC_URI[md5sum] = "c92d6bce4fc65fa9d5a3ad35cdd1a466"
+SRC_URI[sha256sum] = "e44a737c016ccab56d646718ecf24b9393babde2c417ac7dd5bd218e5c609ef9"
+
+
S = "${WORKDIR}/git"
inherit autotools pkgconfig
@@ -23,8 +28,8 @@ inherit autotools pkgconfig
EXTRA_OECONF = " --disable-rpath --disable-tests --disable-examples"
do_configure_prepend () {
- cp -rf ${WORKDIR}/gstreamer-0.10.23/common/* ${S}/common/
- cp -rf ${WORKDIR}/gstreamer-0.10.23/po/* ${S}/po/
+ cp -rf ${WORKDIR}/gstreamer-0.10.29/common/* ${S}/common/
+ cp -rf ${WORKDIR}/gstreamer-0.10.29/po/* ${S}/po/
autopoint --force
sed -i -e '/po /d' ${S}/Makefile.am
}
@@ -49,6 +54,3 @@ do_install() {
# bad rpaths we can't get rid off..
INSANE_SKIP_gst-plugin-opengl = True
-
-SRC_URI[md5sum] = "f7b2e300d2d85756407ec529424ab237"
-SRC_URI[sha256sum] = "cf750821040102d2c9fbfed56472a86fd0d8c24ada37901c41867c88438a776d"
diff --git a/recipes/gstreamer/gst-plugins-bad_0.10.20.bb b/recipes/gstreamer/gst-plugins-bad_0.10.20.bb
new file mode 100644
index 0000000000..51aa8aef1e
--- /dev/null
+++ b/recipes/gstreamer/gst-plugins-bad_0.10.20.bb
@@ -0,0 +1,11 @@
+require gst-plugins.inc
+
+SRC_URI[archive.md5sum] = "7c84766f6d24f41ba90c3f6141012ab8"
+SRC_URI[archive.sha256sum] = "1031dff866df976a957f34039addbab4c0753406299a275f4cf1780e1dbe2a90"
+
+DEPENDS += "orc-native orc libcdaudio gst-plugins-base openssl directfb libmodplug"
+
+PR = "${INC_PR}.0"
+
+# We don't have vdpau headers in OE and it creates crosscompile badness
+EXTRA_OECONF_append = " --disable-vdpau --enable-sdl"
diff --git a/recipes/gstreamer/gst-plugins-base_0.10.30.bb b/recipes/gstreamer/gst-plugins-base_0.10.30.bb
new file mode 100644
index 0000000000..e4fb2260db
--- /dev/null
+++ b/recipes/gstreamer/gst-plugins-base_0.10.30.bb
@@ -0,0 +1,27 @@
+require gst-plugins.inc
+
+SRC_URI += " \
+ file://ivorbis-thumb.patch \
+ file://make382.patch \
+"
+
+SRC_URI[archive.md5sum] = "3ad90152b58563e1314af26c263f3c4c"
+SRC_URI[archive.sha256sum] = "63938641380be9935c804ae8d55acdcfd93920ed2deb72dcf70f027a78b085d7"
+
+PR = "${INC_PR}.0"
+
+PROVIDES += "gst-plugins"
+
+# gst-plugins-base only builds the alsa plugin
+# if alsa has been built and is present. You will
+# not get an error if this is not present, just
+# a missing alsa plugin
+DEPENDS += "udev cdparanoia pango libtheora alsa-lib libsm virtual/libx11 freetype gnome-vfs libxv"
+
+# Needs a udev that enabled gudev, which isn't the default
+EXTRA_OECONF_append = " --with-gudev"
+
+do_configure_prepend() {
+ sed -i -e s:QtGui:NoQtGui:g ${S}/configure.ac
+}
+
diff --git a/recipes/gstreamer/gst-plugins.inc b/recipes/gstreamer/gst-plugins.inc
index 62fbd40398..33b494b193 100644
--- a/recipes/gstreamer/gst-plugins.inc
+++ b/recipes/gstreamer/gst-plugins.inc
@@ -2,10 +2,10 @@ require gst-common.inc
require gst-plugins-package.inc
DESCRIPTION = "Plugins for GStreamer"
-DEPENDS = "gstreamer jack virtual/libsdl libvpx x264 libmms libmusicbrainz schroedinger faac faad2 libmikmod liboil libogg tremor libvorbis"
+DEPENDS = "libcdio wavpack libvisual gstreamer jack virtual/libsdl libvpx x264 libmms libmusicbrainz schroedinger faac faad2 libmikmod liboil libogg tremor libvorbis"
DEPENDS += "${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad libid3tag', d)}"
-INC_PR = "r9"
+INC_PR = "r10"
PACKAGES_DYNAMIC = "gst-plugin-*"
diff --git a/recipes/gstreamer/gstreamer_0.10.30.bb b/recipes/gstreamer/gstreamer_0.10.30.bb
new file mode 100644
index 0000000000..4d371522dd
--- /dev/null
+++ b/recipes/gstreamer/gstreamer_0.10.30.bb
@@ -0,0 +1,11 @@
+require gstreamer.inc
+
+SRC_URI[archive.md5sum] = "de01f73f71d97c5854badd363ca06509"
+SRC_URI[archive.sha256sum] = "e8ef301be423797ff36a0bb3615930b112b4175634051d19fd655e0ed974532a"
+
+EXTRA_OECONF += "ac_cv_func_register_printf_function=no"
+
+do_configure_prepend() {
+ sed -i -e s:docs::g Makefile.am
+}
+
diff --git a/recipes/gtk+/gtk+-2.14.2/no-demos.patch b/recipes/gtk+/gtk+-2.14.2/no-demos.patch
new file mode 100644
index 0000000000..0fc4c48d1a
--- /dev/null
+++ b/recipes/gtk+/gtk+-2.14.2/no-demos.patch
@@ -0,0 +1,10 @@
+--- gtk+-2.10.1/Makefile.am.orig 2006-08-08 12:37:30.000000000 +0100
++++ gtk+-2.10.1/Makefile.am 2006-08-08 12:37:48.000000000 +0100
+@@ -1,6 +1,6 @@
+ ## Makefile.am for GTK+
+
+-SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests perf contrib
++SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests perf contrib
+ SUBDIRS = po po-properties $(SRC_SUBDIRS) docs m4macros
+
+ # require automake 1.4
diff --git a/recipes/gtk+/gtk+_2.14.2.bb b/recipes/gtk+/gtk+_2.14.2.bb
index cb0d3f7efa..acf8624bd7 100644
--- a/recipes/gtk+/gtk+_2.14.2.bb
+++ b/recipes/gtk+/gtk+_2.14.2.bb
@@ -1,12 +1,23 @@
require gtk+.inc
-PR = "${INC_PR}.0"
+PR = "${INC_PR}.1"
SRC_URI += "file://smallscreen_filechooser.patch \
"
+SRC_URI_append_virtclass-native = " file://no-demos.patch \
+"
+
+BBCLASSEXTEND = "native"
+
+DEPENDS_virtclass-native = "libpng-native atk-native pango-native cairo-native libxrender-native libxext-native libgcrypt-native"
+RRECOMMENDS_${PN}_virtclass-native = ""
+PROVIDES_virtclass-native = "gdk-pixbuf-csource-native"
+
EXTRA_OECONF = "--with-libtiff --disable-xkb --disable-glibtest --enable-display-migration gio_can_sniff=yes"
+EXTRA_OECONF_append_virtclass-native = " --without-libtiff --without-libjpeg --without-libjasper --disable-cups"
+
PACKAGES_DYNAMIC = "gtk-module-* gdk-pixbuf-loader-* gtk-immodule-* gtk-printbackend-*"
python populate_packages_prepend () {
diff --git a/recipes/iphone/apple-csu_0.30.bb b/recipes/iphone/apple-csu_0.30.bb
index d6325713ed..2653ab8a5f 100644
--- a/recipes/iphone/apple-csu_0.30.bb
+++ b/recipes/iphone/apple-csu_0.30.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Core iPhone libs"
HOMEPAGE = "http://code.google.com/p/iphone-dev"
INHIBIT_DEFAULT_DEPS = "1"
-EXCLUDE_FROM_WORLD = "1"
+COMPATIBLE_MACHINE = "(iphone)"
SRCREV="285"
SRC_URI = "svn://iphone-dev.googlecode.com/svn/trunk;proto=http;module=csu"
diff --git a/recipes/iphone/gcc-iphone-cross_git.bb b/recipes/iphone/gcc-iphone-cross_git.bb
index 43f8b6b3b5..5040edb614 100644
--- a/recipes/iphone/gcc-iphone-cross_git.bb
+++ b/recipes/iphone/gcc-iphone-cross_git.bb
@@ -3,6 +3,7 @@ DEPENDS = "iphone-sdks"
PV = "4.2.1+git${SRCREV}"
INHIBIT_DEFAULT_DEPS = "1"
+COMPATIBLE_MACHINE = "(iphone)"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
PROVIDES += "virtual/${TARGET_PREFIX}gcc-initial virtual/${TARGET_PREFIX}gcc-intermediate"
diff --git a/recipes/iphone/iphone-rootfs_2.2.1.bb b/recipes/iphone/iphone-rootfs_2.2.1.bb
index 10d359121c..6acaedd809 100644
--- a/recipes/iphone/iphone-rootfs_2.2.1.bb
+++ b/recipes/iphone/iphone-rootfs_2.2.1.bb
@@ -4,8 +4,7 @@ PROVIDES = "virtual/${TARGET_PREFIX}libc-for-gcc virtual/libc virtual/libiconv v
INHIBIT_DEFAULT_DEPS = "1"
EXCLUDE_FROM_SHLIBS = "1"
-EXCLUDE_FROM_WORLD = "1"
-
+COMPATIBLE_MACHINE = "(iphone)"
# note: see iphone-sources script to get/generate the tarballs
SRC_URI = "file://iphone-rootfs-${PV}.tar.bz2"
diff --git a/recipes/iphone/iphone-sdks_2.2.1.bb b/recipes/iphone/iphone-sdks_2.2.1.bb
index 259eb3a1e0..3bd90db67e 100644
--- a/recipes/iphone/iphone-sdks_2.2.1.bb
+++ b/recipes/iphone/iphone-sdks_2.2.1.bb
@@ -3,8 +3,7 @@ SECTION = "libs"
PROVIDES = "linux-libc-headers"
INHIBIT_DEFAULT_DEPS = "1"
-EXCLUDE_FROM_WORLD = "1"
-
+COMPATIBLE_MACHINE = "(iphone)"
# note: see iphone-sources script to get/generate the tarballs
SRC_URI = "\
file://iphone-sdks-${PV}.tar.bz2 \
diff --git a/recipes/iw/iw/kill-git-version-check.patch b/recipes/iw/iw/kill-git-version-check.patch
new file mode 100644
index 0000000000..93aad026e2
--- /dev/null
+++ b/recipes/iw/iw/kill-git-version-check.patch
@@ -0,0 +1,26 @@
+Index: iw-0.9.18/version.sh
+===================================================================
+--- iw-0.9.18.orig/version.sh 2010-09-14 13:50:27.000000000 +0400
++++ iw-0.9.18/version.sh 2010-09-14 13:50:40.000000000 +0400
+@@ -5,20 +5,6 @@
+
+ echo '#include "iw.h"' > "$OUT"
+
+-if head=`git rev-parse --verify HEAD 2>/dev/null`; then
+- git update-index --refresh --unmerged > /dev/null
+- descr=$(git describe)
+-
+- # on git builds check that the version number above
+- # is correct...
+- [ "${descr%%-*}" = "v$VERSION" ] || exit 2
+-
+- v="${descr#v}"
+- if git diff-index --name-only HEAD | read dummy ; then
+- v="$v"-dirty
+- fi
+-else
+- v="$VERSION"
+-fi
++v="$VERSION"
+
+ echo "const char iw_version[] = \"$v\";" >> "$OUT"
diff --git a/recipes/iw/iw_0.9.18.bb b/recipes/iw/iw_0.9.18.bb
index bd4642919c..4631456678 100644
--- a/recipes/iw/iw_0.9.18.bb
+++ b/recipes/iw/iw_0.9.18.bb
@@ -3,11 +3,14 @@ HOMEPAGE = "http://linuxwireless.org/en/users/Documentation/iw"
SECTION = "base"
PRIORITY = "optional"
LICENSE = "BSD"
-PR = "r0"
+PR = "r1"
DEPENDS = "libnl pkgconfig"
-SRC_URI = "http://wireless.kernel.org/download/iw/${P}.tar.bz2"
+SRC_URI = " \
+ http://wireless.kernel.org/download/iw/${P}.tar.bz2 \
+ file://kill-git-version-check.patch \
+ "
do_compile() {
oe_runmake
diff --git a/recipes/libelf/libelf_0.8.13.bb b/recipes/libelf/libelf_0.8.13.bb
index 27fee38b45..ea19b353e2 100644
--- a/recipes/libelf/libelf_0.8.13.bb
+++ b/recipes/libelf/libelf_0.8.13.bb
@@ -12,6 +12,8 @@ PARALLEL_MAKE = ""
TARGET_CC_ARCH += "${LDFLAGS}"
+EXTRA_OECONF_append_virtclass-native = " --enable-static"
+
do_configure_prepend () {
if test ! -e acinclude.m4; then
cp aclocal.m4 acinclude.m4
diff --git a/recipes/libmpc/libmpc_0.8.1.bb b/recipes/libmpc/libmpc_0.8.1.bb
index f79321c70d..ed7e5bb7e9 100644
--- a/recipes/libmpc/libmpc_0.8.1.bb
+++ b/recipes/libmpc/libmpc_0.8.1.bb
@@ -4,9 +4,11 @@ DEPENDS = "gmp mpfr"
S = "${WORKDIR}/mpc-${PV}"
NATIVE_INSTALL_WORKS = "1"
BBCLASSEXTEND = "native"
-PR = "1"
+PR = "r2"
SRC_URI = "http://www.multiprecision.org/mpc/download/mpc-${PV}.tar.gz"
+EXTRA_OECONF_append_virtclass-native = " --enable-static"
+
SRC_URI[md5sum] = "5b34aa804d514cc295414a963aedb6bf"
SRC_URI[sha256sum] = "e664603757251fd8a352848276497a4c79b7f8b21fd8aedd5cc0598a38fee3e4"
diff --git a/recipes/libmpc/libmpc_0.8.2.bb b/recipes/libmpc/libmpc_0.8.2.bb
index 1d383fab93..18a161ada1 100644
--- a/recipes/libmpc/libmpc_0.8.2.bb
+++ b/recipes/libmpc/libmpc_0.8.2.bb
@@ -4,8 +4,10 @@ DEPENDS = "gmp mpfr"
S = "${WORKDIR}/mpc-${PV}"
NATIVE_INSTALL_WORKS = "1"
BBCLASSEXTEND = "native"
+PR = "r1"
SRC_URI = "http://www.multiprecision.org/mpc/download/mpc-${PV}.tar.gz"
+EXTRA_OECONF_append_virtclass-native = " --enable-static"
SRC_URI[md5sum] = "e98267ebd5648a39f881d66797122fb6"
SRC_URI[sha256sum] = "ae79f8d41d8a86456b68607e9ca398d00f8b7342d1d83bcf4428178ac45380c7"
diff --git a/recipes/libnl/libnl2_git.bb b/recipes/libnl/libnl2_git.bb
index 08c1b630c1..6c5f9f19f5 100644
--- a/recipes/libnl/libnl2_git.bb
+++ b/recipes/libnl/libnl2_git.bb
@@ -1,8 +1,8 @@
DESCRIPTION = "libnl2 is a library for applications dealing with netlink sockets"
SECTION = "libs/network"
LICENSE = "LGPL"
-HOMEPAGE = "http://people.suug.ch/~tgr/libnl"
-SRCREV = "8808743839b0f459394ecd00cb0f7c1896c0ab7a"
+HOMEPAGE = "http://www.infradead.org/~tgr/libnl/"
+SRCREV = "d378220c96c3c8b6f27dca33e7d8ba03318f9c2d"
PV = "1.9+gitr${SRCPV}"
PE = "1"
PR = "r1"
diff --git a/recipes/libnl/libnl_1.1.bb b/recipes/libnl/libnl_1.1.bb
index 0659d933eb..06059ca85d 100644
--- a/recipes/libnl/libnl_1.1.bb
+++ b/recipes/libnl/libnl_1.1.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "libnl is a library for applications dealing with netlink sockets"
SECTION = "libs/network"
LICENSE = "LGPL"
-HOMEPAGE = "http://people.suug.ch/~tgr/libnl"
+HOMEPAGE = "http://www.infradead.org/~tgr/libnl/"
# If you get errors like : undefined reference to `nl_handle_alloc
# do a bitbake -c clean libnl2
@@ -13,7 +13,7 @@ inherit autotools pkgconfig
CFLAGS += '-DVLAN_FLAG_REORDER_HDR=1'
SRC_URI = "\
- http://people.suug.ch/~tgr/libnl/files/libnl-${PV}.tar.gz \
+ http://www.infradead.org/~tgr/libnl/files/libnl-${PV}.tar.gz \
file://local-includes.patch \
file://fix-includes.patch \
file://respect-ldflags.patch \
diff --git a/recipes/libunwind/libunwind.inc b/recipes/libunwind/libunwind.inc
index 853d3e6972..6994095897 100644
--- a/recipes/libunwind/libunwind.inc
+++ b/recipes/libunwind/libunwind.inc
@@ -3,7 +3,7 @@ HOMEPAGE = "http://www.nongnu.org/libunwind"
LICENSE = "MIT"
INC_PR = "r1"
-SRC_URI = "http://download.savannah.nongnu.org/releases/libunwind/${PN}-${PV}.tar.gz;name=archive"
+SRC_URI = "http://download.savannah.nongnu.org/releases/${BPN}/${BPN}-${PV}.tar.gz;name=archive"
S = "${WORKDIR}/${PN}-${PV}"
diff --git a/recipes/linux/linux-openmoko-2.6.32/0022-mach-gta02-fix-PR2349-do-not-manage-down.patch b/recipes/linux/linux-openmoko-2.6.32/0022-mach-gta02-fix-PR2349-do-not-manage-down.patch
new file mode 100644
index 0000000000..e858d1a83a
--- /dev/null
+++ b/recipes/linux/linux-openmoko-2.6.32/0022-mach-gta02-fix-PR2349-do-not-manage-down.patch
@@ -0,0 +1,25 @@
+From 305e61f039abb44f9f0b00e24963136ab76be6f7 Mon Sep 17 00:00:00 2001
+From: Gennady Kupava <gb@bsdmn.com>
+Date: Tue, 21 Sep 2010 11:00:28 +0200
+Subject: [PATCH] mach-gta02: fix PR2349, do not manage down
+
+---
+ arch/arm/mach-s3c2442/mach-gta02.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/arch/arm/mach-s3c2442/mach-gta02.c b/arch/arm/mach-s3c2442/mach-gta02.c
+index 779d6df..5ecc57b 100644
+--- a/arch/arm/mach-s3c2442/mach-gta02.c
++++ b/arch/arm/mach-s3c2442/mach-gta02.c
+@@ -610,7 +610,7 @@ struct pcf50633_platform_data gta02_pcf_pdata = {
+ .max_uV = 1600000,
+ .valid_modes_mask = REGULATOR_MODE_NORMAL,
+ .valid_ops_mask = REGULATOR_CHANGE_STATUS,
+- .always_on = 1,
++ .always_on = 0,
+ .apply_uV = 1,
+ },
+ },
+--
+1.7.3
+
diff --git a/recipes/linux/linux-openmoko-2.6.32_git.bb b/recipes/linux/linux-openmoko-2.6.32_git.bb
index 19171af811..828ef22f39 100644
--- a/recipes/linux/linux-openmoko-2.6.32_git.bb
+++ b/recipes/linux/linux-openmoko-2.6.32_git.bb
@@ -1,7 +1,7 @@
require linux.inc
require linux-openmoko.inc
-KERNEL_RELEASE="2.6.32.21"
+KERNEL_RELEASE="2.6.32.22"
SRCREV = "a9254be10ac2294ea20165a87c09ea6afcf66d94"
OEV = "oe3.3"
@@ -40,11 +40,13 @@ SRC_URI = "\
# faster glamo
file://0020-mfd-glamo-Enable-FIFO-stage-for-the-LCD-engine-s-mem.patch \
file://0021-glamo-display-fix-WSOD-for-242-timming.patch \
+# fix PR2349
+ file://0022-mach-gta02-fix-PR2349-do-not-manage-down.patch \
file://defconfig \
"
-SRC_URI[stablepatch.md5sum] = "29aa10a231882a6e52908642b572326f"
-SRC_URI[stablepatch.sha256sum] = "88e579f74f95ffac30d9d011be98c83e67cf348b9937d2131514a0874bb4413f"
+SRC_URI[stablepatch.md5sum] = "da1431a1d659298c6bd11714416c840f"
+SRC_URI[stablepatch.sha256sum] = "9f04a819a6ae1ac9a4793ce229bc9a2cb095ac10a2d46955ec1e6769283c4de4"
S = "${WORKDIR}/git"
diff --git a/recipes/linux/linux-openmoko-2.6.34/0001-DRM-for-platform-devices.patch b/recipes/linux/linux-openmoko-2.6.34/0001-DRM-for-platform-devices.patch
index d2e575ad94..229a08baf4 100644
--- a/recipes/linux/linux-openmoko-2.6.34/0001-DRM-for-platform-devices.patch
+++ b/recipes/linux/linux-openmoko-2.6.34/0001-DRM-for-platform-devices.patch
@@ -1,7 +1,7 @@
-From 2ec20c69573ac255b3aefd4306f4aaed16c310bc Mon Sep 17 00:00:00 2001
+From 319da58b0613920223caf7711e10a0b866f9305a Mon Sep 17 00:00:00 2001
From: Thomas White <taw@bitwiz.org.uk>
Date: Sat, 22 May 2010 18:59:58 +0200
-Subject: [PATCH 1/8] DRM for platform devices
+Subject: [PATCH 03/17] DRM for platform devices
This modifies the DRM core in a small number of places to allow platform
devices to be used for direct rendering, alongside PCI devices.
@@ -45,7 +45,7 @@ index f7ba82e..30ce982 100644
map->offset < virt_to_phys(high_memory)) {
kfree(map);
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
-index 4a66201..769d12b 100644
+index c9736ed..b064dd2 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -250,6 +250,7 @@ int drm_lastclose(struct drm_device * dev)
@@ -454,5 +454,5 @@ index 2f3b3a0..43894ec 100644
extern int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
struct drm_driver *driver);
--
-1.7.1
+1.7.3
diff --git a/recipes/linux/linux-openmoko-2.6.34/0001-accels.patch.patch b/recipes/linux/linux-openmoko-2.6.34/0001-accels.patch.patch
index 9b731b58a0..4365e9312a 100644
--- a/recipes/linux/linux-openmoko-2.6.34/0001-accels.patch.patch
+++ b/recipes/linux/linux-openmoko-2.6.34/0001-accels.patch.patch
@@ -1,7 +1,7 @@
-From 53e2489c536fc9e382be71be84800cb532acbf73 Mon Sep 17 00:00:00 2001
+From 1b8efb3ae35ba6a3dfcf03b28bab9ce945a9b294 Mon Sep 17 00:00:00 2001
From: Radek Polak <psonek2@seznam.cz>
Date: Fri, 9 Apr 2010 09:15:40 +0200
-Subject: [PATCH 1/4] accels.patch
+Subject: [PATCH 11/17] accels.patch
adds support for accelerometers. You will need include/linux/lis302dl.h and
drivers/input/misc/lis302dl.c from andy-tracking. The patch needs
@@ -39,7 +39,7 @@ index dcef228..8eedc9c 100644
diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c
-index e8ac76b..795b9f4 100644
+index 9a9461d..1fa93b4 100644
--- a/arch/arm/mach-s3c2440/mach-gta02.c
+++ b/arch/arm/mach-s3c2440/mach-gta02.c
@@ -62,6 +62,7 @@
@@ -1755,5 +1755,5 @@ index 3274c50..6dc9b8b 100644
/* start or stop queue processing */
extern int spi_bitbang_start(struct spi_bitbang *spi);
--
-1.7.1
+1.7.3
diff --git a/recipes/linux/linux-openmoko-2.6.34/0001-glamo-core-move-glamo_engine_reg_set-definition-outs.patch b/recipes/linux/linux-openmoko-2.6.34/0001-glamo-core-move-glamo_engine_reg_set-definition-outs.patch
deleted file mode 100644
index 75d9d88368..0000000000
--- a/recipes/linux/linux-openmoko-2.6.34/0001-glamo-core-move-glamo_engine_reg_set-definition-outs.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From f9f4dad4ceac84b4ca496c82e1e2824ca986c3e2 Mon Sep 17 00:00:00 2001
-From: Martin Jansa <Martin.Jansa@gmail.com>
-Date: Wed, 4 Aug 2010 11:53:00 +0200
-Subject: [PATCH] glamo-core: move glamo_engine_reg_set definition outside #ifdef CONFIG_DEBUG_FS
-
-* it's also used outside
-* building without CONFIG_DEBUG_FS fails with error: array type has incomplete element type
----
- drivers/mfd/glamo-core.c | 12 ++++++------
- 1 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/mfd/glamo-core.c b/drivers/mfd/glamo-core.c
-index 23a0026..468194f 100644
---- a/drivers/mfd/glamo-core.c
-+++ b/drivers/mfd/glamo-core.c
-@@ -398,12 +398,6 @@ static const struct file_operations debugfs_regs_ops = {
- .release = single_release,
- };
-
--struct glamo_engine_reg_set {
-- uint16_t reg;
-- uint16_t mask_suspended;
-- uint16_t mask_enabled;
--};
--
- static void glamo_init_debugfs(struct glamo_core *glamo)
- {
- glamo->debugfs_dir = debugfs_create_dir("glamo3362", NULL);
-@@ -429,6 +423,12 @@ static void glamo_exit_debugfs(struct glamo_core *glamo)
- }
- #endif
-
-+struct glamo_engine_reg_set {
-+ uint16_t reg;
-+ uint16_t mask_suspended;
-+ uint16_t mask_enabled;
-+};
-+
- struct glamo_engine_desc {
- const char *name;
- uint16_t hostbus;
---
-1.7.1.1
-
diff --git a/recipes/linux/linux-openmoko-2.6.34/0001-glamo-display-Enable-FIFO-stage-for-the-LCD-engine-s.patch b/recipes/linux/linux-openmoko-2.6.34/0001-glamo-display-Enable-FIFO-stage-for-the-LCD-engine-s.patch
index b4186d9792..4326fc2c4d 100644
--- a/recipes/linux/linux-openmoko-2.6.34/0001-glamo-display-Enable-FIFO-stage-for-the-LCD-engine-s.patch
+++ b/recipes/linux/linux-openmoko-2.6.34/0001-glamo-display-Enable-FIFO-stage-for-the-LCD-engine-s.patch
@@ -1,7 +1,7 @@
-From 660579bd6333e7e33cfb176f849bcc098e33af38 Mon Sep 17 00:00:00 2001
+From 49a7aaa93557318d985b87ee865285a2ca4f65cc Mon Sep 17 00:00:00 2001
From: Martin Jansa <Martin.Jansa@gmail.com>
Date: Mon, 19 Jul 2010 13:39:06 +0200
-Subject: [PATCH] glamo-display: Enable FIFO stage for the LCD engine's memory access
+Subject: [PATCH 15/17] glamo-display: Enable FIFO stage for the LCD engine's memory access
---
drivers/gpu/drm/glamo/glamo-display.c | 2 +-
@@ -21,5 +21,5 @@ index 6f25326..4e85906 100644
{ GLAMO_REG_LCD_B_BASE2, 0x0009 }, /* display B base address 22:16 */
{ GLAMO_REG_LCD_CURSOR_BASE1, 0xC000 }, /* cursor base address 15:0 */
--
-1.7.1.1
+1.7.3
diff --git a/recipes/linux/linux-openmoko-2.6.34/0001-mach-gta02-fix-gsm-power_on-sysfs-node-path.patch b/recipes/linux/linux-openmoko-2.6.34/0001-mach-gta02-fix-gsm-power_on-sysfs-node-path.patch
deleted file mode 100644
index d1053d4530..0000000000
--- a/recipes/linux/linux-openmoko-2.6.34/0001-mach-gta02-fix-gsm-power_on-sysfs-node-path.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From ed36456fa34c2653d4a39c3dbeb66b4e671103fe Mon Sep 17 00:00:00 2001
-From: Gennady Kupava <gb@bsdmn.com>
-Date: Mon, 2 Aug 2010 14:53:55 +0200
-Subject: [PATCH] mach-gta02: fix gsm power_on sysfs node path
-
----
- arch/arm/mach-s3c2440/mach-gta02.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c
-index e7d0b82..08e9dcc 100644
---- a/arch/arm/mach-s3c2440/mach-gta02.c
-+++ b/arch/arm/mach-s3c2440/mach-gta02.c
-@@ -1341,7 +1341,7 @@ static struct platform_device* gta02_hdq_children[] = {
-
- static struct gta02_device_children gta02_device_children[] = {
- {
-- .dev_name = "pcf50633-gpio",
-+ .dev_name = "pcf50633-gpio.0",
- .num_children = 2,
- .children = gta02_pcf50633_gpio_children,
- },
---
-1.7.1.1
-
diff --git a/recipes/linux/linux-openmoko-2.6.34/0002-Glamo-DRM-and-KMS-driver.patch b/recipes/linux/linux-openmoko-2.6.34/0002-Glamo-DRM-and-KMS-driver.patch
index b76990f5d0..1d6e444a46 100644
--- a/recipes/linux/linux-openmoko-2.6.34/0002-Glamo-DRM-and-KMS-driver.patch
+++ b/recipes/linux/linux-openmoko-2.6.34/0002-Glamo-DRM-and-KMS-driver.patch
@@ -1,7 +1,7 @@
-From b47b5c8042832424555cecda7a2ab21f8e57f9d4 Mon Sep 17 00:00:00 2001
+From 9231014c2f79c75aa1358b36e0c576ec1c97c2bc Mon Sep 17 00:00:00 2001
From: Thomas White <taw@bitwiz.org.uk>
Date: Sat, 22 May 2010 19:01:00 +0200
-Subject: [PATCH 2/8] Glamo DRM and KMS driver
+Subject: [PATCH 04/17] Glamo DRM and KMS driver
This adds the Glamo DRM and KMS driver, but note that modifications are needed
elsewhere to support it.
@@ -3878,5 +3878,5 @@ index 0000000..4c194dc
+
+#endif
--
-1.7.1
+1.7.3
diff --git a/recipes/linux/linux-openmoko-2.6.34/0002-usbhost.patch.patch b/recipes/linux/linux-openmoko-2.6.34/0002-usbhost.patch.patch
index ee330a0e9f..11886a55f3 100644
--- a/recipes/linux/linux-openmoko-2.6.34/0002-usbhost.patch.patch
+++ b/recipes/linux/linux-openmoko-2.6.34/0002-usbhost.patch.patch
@@ -1,7 +1,7 @@
-From 65954829e9732060a734e977817dbaa611b6c42b Mon Sep 17 00:00:00 2001
+From ffddb76b59aaaccd48524460dd5ebf91b5796c2b Mon Sep 17 00:00:00 2001
From: Radek Polak <psonek2@seznam.cz>
Date: Fri, 9 Apr 2010 09:17:28 +0200
-Subject: [PATCH 2/4] usbhost.patch
+Subject: [PATCH 12/17] usbhost.patch
adds support for usb host mode and adds usb host pm sysfs node. I just copied
and modified how modem is powered up and backported changes in ohci-s3c2410.c.
@@ -214,7 +214,7 @@ index 0000000..233340a
+MODULE_AUTHOR("Harald Welte <laforge@openmoko.org>");
+MODULE_DESCRIPTION("Openmoko Freerunner USBHOST Power Management");
diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c
-index 795b9f4..e7d0b82 100644
+index 1fa93b4..08e9dcc 100644
--- a/arch/arm/mach-s3c2440/mach-gta02.c
+++ b/arch/arm/mach-s3c2440/mach-gta02.c
@@ -202,6 +202,10 @@ static struct platform_device gta02_pm_gsm_dev = {
@@ -309,7 +309,7 @@ index 795b9f4..e7d0b82 100644
@@ -1301,7 +1342,7 @@ static struct platform_device* gta02_hdq_children[] = {
static struct gta02_device_children gta02_device_children[] = {
{
- .dev_name = "pcf50633-gpio",
+ .dev_name = "pcf50633-gpio.0",
- .num_children = 1,
+ .num_children = 2,
.children = gta02_pcf50633_gpio_children,
@@ -410,5 +410,5 @@ index a68af2d..02bd7b0 100644
s3c2410_stop_hc(dev);
iounmap(hcd->regs);
--
-1.7.1
+1.7.3
diff --git a/recipes/linux/linux-openmoko-2.6.34/0003-Work-on-Glamo-core-for-DRM.patch b/recipes/linux/linux-openmoko-2.6.34/0003-Work-on-Glamo-core-for-DRM.patch
index 4906f97904..624c49e416 100644
--- a/recipes/linux/linux-openmoko-2.6.34/0003-Work-on-Glamo-core-for-DRM.patch
+++ b/recipes/linux/linux-openmoko-2.6.34/0003-Work-on-Glamo-core-for-DRM.patch
@@ -1,7 +1,7 @@
-From 21469ba33747fef2625bf20c72cbbe776d8c59b7 Mon Sep 17 00:00:00 2001
+From 5e4ad788f6692865a17dcf4e870c20a9dc04651c Mon Sep 17 00:00:00 2001
From: Thomas White <taw@bitwiz.org.uk>
Date: Tue, 17 Nov 2009 23:45:29 +0100
-Subject: [PATCH 3/8] Work on Glamo-core for DRM
+Subject: [PATCH 05/17] Work on Glamo-core for DRM
This adds modifications to the core of the Glamo driver to expose functionality
to support DRM and KMS.
@@ -15,10 +15,10 @@ Signed-off-by: Thomas White <taw@bitwiz.org.uk>
4 files changed, 69 insertions(+), 21 deletions(-)
diff --git a/drivers/mfd/glamo-core.c b/drivers/mfd/glamo-core.c
-index 135856a..da32b77 100644
+index 8880263..3d57d2b 100644
--- a/drivers/mfd/glamo-core.c
+++ b/drivers/mfd/glamo-core.c
-@@ -221,10 +221,25 @@ static struct resource glamo_fb_resources[] = {
+@@ -190,10 +190,25 @@ static struct resource glamo_fb_resources[] = {
.flags = IORESOURCE_MEM,
}, {
.name = "glamo-fb-mem",
@@ -47,7 +47,7 @@ index 135856a..da32b77 100644
};
static struct resource glamo_mmc_resources[] = {
-@@ -235,9 +250,9 @@ static struct resource glamo_mmc_resources[] = {
+@@ -204,9 +219,9 @@ static struct resource glamo_mmc_resources[] = {
.flags = IORESOURCE_MEM
}, {
.name = "glamo-mmc-mem",
@@ -61,7 +61,7 @@ index 135856a..da32b77 100644
}, {
.start = GLAMO_IRQ_MMC,
diff --git a/include/linux/mfd/glamo-core.h b/include/linux/mfd/glamo-core.h
-index 34ec7c4..25bd94d 100644
+index 8275a2f..66cd7a5 100644
--- a/include/linux/mfd/glamo-core.h
+++ b/include/linux/mfd/glamo-core.h
@@ -3,18 +3,30 @@
@@ -139,10 +139,10 @@ index 59848e1..8b2fd47 100644
+
#endif /* _GLAMO_REGS_H */
diff --git a/include/linux/mfd/glamo.h b/include/linux/mfd/glamo.h
-index 529d4f0..ea91a06 100644
+index ae52f3d..99114aa 100644
--- a/include/linux/mfd/glamo.h
+++ b/include/linux/mfd/glamo.h
-@@ -41,12 +41,9 @@ enum glamo_engine {
+@@ -43,12 +43,9 @@ enum glamo_engine {
GLAMO_ENGINE_RISC = 11,
GLAMO_ENGINE_MICROP1_MPEG_ENC = 12,
GLAMO_ENGINE_MICROP1_MPEG_DEC = 13,
@@ -158,5 +158,5 @@ index 529d4f0..ea91a06 100644
+
#endif
--
-1.7.1
+1.7.3
diff --git a/recipes/linux/linux-openmoko-2.6.34/0003-ar6000_delay.patch.patch b/recipes/linux/linux-openmoko-2.6.34/0003-ar6000_delay.patch.patch
index dbff9c0869..be69b78e81 100644
--- a/recipes/linux/linux-openmoko-2.6.34/0003-ar6000_delay.patch.patch
+++ b/recipes/linux/linux-openmoko-2.6.34/0003-ar6000_delay.patch.patch
@@ -1,7 +1,7 @@
-From 32dcde00ad05fa148ba96f46427afe9af226ffb7 Mon Sep 17 00:00:00 2001
+From ecbd0e7d09f2058486f8a2b389744d1da116cc6b Mon Sep 17 00:00:00 2001
From: Radek Polak <psonek2@seznam.cz>
Date: Fri, 9 Apr 2010 09:18:02 +0200
-Subject: [PATCH 3/4] ar6000_delay.patch
+Subject: [PATCH 13/17] ar6000_delay.patch
patch from https://docs.openmoko.org/trac/ticket/2327 - wifi is working good
(100% until now) for me with this patch.
@@ -25,5 +25,5 @@ index 386d96e..90178d0 100644
if (ret == A_OK)
return 0;
--
-1.7.1
+1.7.3
diff --git a/recipes/linux/linux-openmoko-2.6.34/0004-JBT6k74-work-for-KMS.patch b/recipes/linux/linux-openmoko-2.6.34/0004-JBT6k74-work-for-KMS.patch
index dee8a64587..5d0008d69d 100644
--- a/recipes/linux/linux-openmoko-2.6.34/0004-JBT6k74-work-for-KMS.patch
+++ b/recipes/linux/linux-openmoko-2.6.34/0004-JBT6k74-work-for-KMS.patch
@@ -1,7 +1,7 @@
-From 1cc704d6777a97bc55f3822c218fd49e12561347 Mon Sep 17 00:00:00 2001
+From 1f722e3bf68126afd3266d4a3f8b7fdbd87c4068 Mon Sep 17 00:00:00 2001
From: Thomas White <taw@bitwiz.org.uk>
Date: Sat, 21 Nov 2009 21:42:16 +0100
-Subject: [PATCH 4/8] JBT6k74 work for KMS
+Subject: [PATCH 06/17] JBT6k74 work for KMS
This simplifies the JBT6k74 driver, and adds hooks for the Glamo driver to cooperate
more closely with it.
@@ -536,5 +536,5 @@ index 75488c4..2010bdc 100644
int gpio_reset;
};
--
-1.7.1
+1.7.3
diff --git a/recipes/linux/linux-openmoko-2.6.34/0004-save_regs.patch.patch b/recipes/linux/linux-openmoko-2.6.34/0004-save_regs.patch.patch
index a8911676ed..809325bbc9 100644
--- a/recipes/linux/linux-openmoko-2.6.34/0004-save_regs.patch.patch
+++ b/recipes/linux/linux-openmoko-2.6.34/0004-save_regs.patch.patch
@@ -1,7 +1,7 @@
-From 784ad85c80030910862e5b7f655eb69a6f980e4f Mon Sep 17 00:00:00 2001
+From c49bfa4677fc1f161330165657122375d46c71d1 Mon Sep 17 00:00:00 2001
From: Radek Polak <psonek2@seznam.cz>
Date: Fri, 9 Apr 2010 09:22:23 +0200
-Subject: [PATCH 4/4] save_regs.patch
+Subject: [PATCH 14/17] save_regs.patch
With this patch wifi can survive suspend.
---
@@ -136,5 +136,5 @@ index e4898e9..b49d674 100644
extern int mmc_wait_for_cmd(struct mmc_host *, struct mmc_command *, int);
extern int mmc_wait_for_app_cmd(struct mmc_host *, struct mmc_card *,
--
-1.7.1
+1.7.3
diff --git a/recipes/linux/linux-openmoko-2.6.34/0005-Fix-dynamic-command-queue-allocation.patch b/recipes/linux/linux-openmoko-2.6.34/0005-Fix-dynamic-command-queue-allocation.patch
index 0351f50ec1..3bf85eda9b 100644
--- a/recipes/linux/linux-openmoko-2.6.34/0005-Fix-dynamic-command-queue-allocation.patch
+++ b/recipes/linux/linux-openmoko-2.6.34/0005-Fix-dynamic-command-queue-allocation.patch
@@ -1,7 +1,7 @@
-From 2114f9008abe39b8ed914f650d50775e39f53cca Mon Sep 17 00:00:00 2001
+From 2c92aeeb0924bfcae13879f530de253cd1f9143b Mon Sep 17 00:00:00 2001
From: Thomas White <taw@bitwiz.org.uk>
Date: Thu, 6 May 2010 05:40:15 -0700
-Subject: [PATCH 5/8] Fix dynamic command queue allocation
+Subject: [PATCH 07/17] Fix dynamic command queue allocation
(Not tested...)
@@ -13,7 +13,7 @@ Signed-off-by: Thomas White <taw@bitwiz.org.uk>
3 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/glamo/glamo-cmdq.c b/drivers/gpu/drm/glamo/glamo-cmdq.c
-index 3ce970e..4b0d55f 100644
+index 71eb53c..4947ec7 100644
--- a/drivers/gpu/drm/glamo/glamo-cmdq.c
+++ b/drivers/gpu/drm/glamo/glamo-cmdq.c
@@ -497,10 +497,11 @@ int glamo_cmdq_setup(struct glamodrm_handle *gdrm)
@@ -64,7 +64,7 @@ index 510d195..6d7f184 100644
extern void glamo_cmdq_suspend(struct glamodrm_handle *gdrm);
extern void glamo_cmdq_resume(struct glamodrm_handle *gdrm);
diff --git a/drivers/gpu/drm/glamo/glamo-drm-drv.c b/drivers/gpu/drm/glamo/glamo-drm-drv.c
-index 224c857..9f74983 100644
+index 8a41b18..1867983 100644
--- a/drivers/gpu/drm/glamo/glamo-drm-drv.c
+++ b/drivers/gpu/drm/glamo/glamo-drm-drv.c
@@ -129,7 +129,7 @@ static int glamodrm_load(struct drm_device *dev, unsigned long flags)
@@ -119,5 +119,5 @@ index 224c857..9f74983 100644
/* Release 2D engine */
iounmap(gdrm->twod_base);
--
-1.7.1
+1.7.3
diff --git a/recipes/linux/linux-openmoko-2.6.34/0006-Debug-statements-for-testing.patch b/recipes/linux/linux-openmoko-2.6.34/0006-Debug-statements-for-testing.patch
index c47ebf12eb..e959f3c533 100644
--- a/recipes/linux/linux-openmoko-2.6.34/0006-Debug-statements-for-testing.patch
+++ b/recipes/linux/linux-openmoko-2.6.34/0006-Debug-statements-for-testing.patch
@@ -1,7 +1,7 @@
-From cf82ca72810135babe7493bdd7c1cc63ed2ebac6 Mon Sep 17 00:00:00 2001
+From ffb224c021cd7b2c320cccab59588f2002cfbca1 Mon Sep 17 00:00:00 2001
From: Thomas White <taw@bitwiz.org.uk>
Date: Thu, 6 May 2010 05:40:33 -0700
-Subject: [PATCH 6/8] Debug statements for testing
+Subject: [PATCH 08/17] Debug statements for testing
Signed-off-by: Thomas White <taw@bitwiz.org.uk>
---
@@ -10,7 +10,7 @@ Signed-off-by: Thomas White <taw@bitwiz.org.uk>
2 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/drivers/gpu/drm/glamo/glamo-display.c b/drivers/gpu/drm/glamo/glamo-display.c
-index a058b40..c54dd49 100644
+index ef7e8c8..6f25326 100644
--- a/drivers/gpu/drm/glamo/glamo-display.c
+++ b/drivers/gpu/drm/glamo/glamo-display.c
@@ -258,6 +258,8 @@ static int glamo_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y,
@@ -74,5 +74,5 @@ index 91651e7..56a3e3a 100644
}
EXPORT_SYMBOL_GPL(jbt6k74_setpower);
--
-1.7.1
+1.7.3
diff --git a/recipes/linux/linux-openmoko-2.6.34/0007-Fix-claim-of-2D-register-resource.patch b/recipes/linux/linux-openmoko-2.6.34/0007-Fix-claim-of-2D-register-resource.patch
index 978545a4a4..1c1369bcdb 100644
--- a/recipes/linux/linux-openmoko-2.6.34/0007-Fix-claim-of-2D-register-resource.patch
+++ b/recipes/linux/linux-openmoko-2.6.34/0007-Fix-claim-of-2D-register-resource.patch
@@ -1,7 +1,7 @@
-From 2f8fb0d0308960e53395428873549ae2961469ca Mon Sep 17 00:00:00 2001
+From 3e47dbb5e8cc60618fcca74bcbb24d46a7a4dee5 Mon Sep 17 00:00:00 2001
From: Thomas White <taw@bitwiz.org.uk>
Date: Thu, 6 May 2010 08:37:04 -0700
-Subject: [PATCH 7/8] Fix claim of 2D register resource
+Subject: [PATCH 09/17] Fix claim of 2D register resource
Signed-off-by: Thomas White <taw@bitwiz.org.uk>
---
@@ -9,7 +9,7 @@ Signed-off-by: Thomas White <taw@bitwiz.org.uk>
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/drivers/gpu/drm/glamo/glamo-drm-drv.c b/drivers/gpu/drm/glamo/glamo-drm-drv.c
-index 9f74983..2a7f600 100644
+index 1867983..eb0827a 100644
--- a/drivers/gpu/drm/glamo/glamo-drm-drv.c
+++ b/drivers/gpu/drm/glamo/glamo-drm-drv.c
@@ -273,7 +273,8 @@ static int glamodrm_probe(struct platform_device *pdev)
@@ -23,5 +23,5 @@ index 9f74983..2a7f600 100644
dev_err(&pdev->dev, "Unable to find 2D registers.\n");
rc = -ENOENT;
--
-1.7.1
+1.7.3
diff --git a/recipes/linux/linux-openmoko-2.6.34/0008-Use-unlocked_ioctl-rather-than-ioctl.patch b/recipes/linux/linux-openmoko-2.6.34/0008-Use-unlocked_ioctl-rather-than-ioctl.patch
index 3c9b48bc3b..3775717045 100644
--- a/recipes/linux/linux-openmoko-2.6.34/0008-Use-unlocked_ioctl-rather-than-ioctl.patch
+++ b/recipes/linux/linux-openmoko-2.6.34/0008-Use-unlocked_ioctl-rather-than-ioctl.patch
@@ -1,7 +1,7 @@
-From 97f5e67992f766359987a876e61afacf3a8532cb Mon Sep 17 00:00:00 2001
+From ad2a0e197a8bb7cc03082f46d5fb895f99574824 Mon Sep 17 00:00:00 2001
From: Thomas White <taw@bitwiz.org.uk>
Date: Mon, 24 May 2010 21:49:14 +0200
-Subject: [PATCH 8/8] Use unlocked_ioctl rather than ioctl
+Subject: [PATCH 10/17] Use unlocked_ioctl rather than ioctl
The arguments changed between 2.6.32 and 2.6.34.
@@ -11,7 +11,7 @@ Signed-off-by: Thomas White <taw@bitwiz.org.uk>
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/gpu/drm/glamo/glamo-drm-drv.c b/drivers/gpu/drm/glamo/glamo-drm-drv.c
-index 2a7f600..36e6941 100644
+index eb0827a..2cdf429 100644
--- a/drivers/gpu/drm/glamo/glamo-drm-drv.c
+++ b/drivers/gpu/drm/glamo/glamo-drm-drv.c
@@ -180,7 +180,7 @@ static struct drm_driver glamodrm_drm_driver = {
@@ -24,5 +24,5 @@ index 2a7f600..36e6941 100644
.poll = drm_poll,
.fasync = drm_fasync,
--
-1.7.1
+1.7.3
diff --git a/recipes/linux/linux-openmoko-2.6.34/0009-glamo-display-fix-WSOD-for-242-timming.patch b/recipes/linux/linux-openmoko-2.6.34/0009-glamo-display-fix-WSOD-for-242-timming.patch
index 1a645d01a3..d011aec2c1 100644
--- a/recipes/linux/linux-openmoko-2.6.34/0009-glamo-display-fix-WSOD-for-242-timming.patch
+++ b/recipes/linux/linux-openmoko-2.6.34/0009-glamo-display-fix-WSOD-for-242-timming.patch
@@ -1,7 +1,7 @@
-From 2262b75d6035fb15f555d0d019def3ad1c35c997 Mon Sep 17 00:00:00 2001
+From 58b171ce3f1887f4c2b162a7265c745eb488363d Mon Sep 17 00:00:00 2001
From: Martin Jansa <Martin.Jansa@gmail.com>
Date: Fri, 27 Aug 2010 08:52:07 +0200
-Subject: [PATCH] glamo-display: fix WSOD for 242 timming
+Subject: [PATCH 16/17] glamo-display: fix WSOD for 242 timming
---
drivers/gpu/drm/glamo/glamo-display.c | 2 +-
@@ -35,5 +35,5 @@ index 3f8ec8d..a428047 100644
GLAMO_LCD_CMD_TYPE_DISP |
GLAMO_LCD_CMD_DATA_DISP_FIRE);
--
-1.7.2.2
+1.7.3
diff --git a/recipes/linux/linux-openmoko-2.6.34/0010-mach-gta02-fix-PR2349-do-not-manage-down.patch b/recipes/linux/linux-openmoko-2.6.34/0010-mach-gta02-fix-PR2349-do-not-manage-down.patch
new file mode 100644
index 0000000000..8414b1f210
--- /dev/null
+++ b/recipes/linux/linux-openmoko-2.6.34/0010-mach-gta02-fix-PR2349-do-not-manage-down.patch
@@ -0,0 +1,25 @@
+From e8e48bd0e3aa263ecf68e71d1e4d25a8d727f50d Mon Sep 17 00:00:00 2001
+From: Gennady Kupava <gb@bsdmn.com>
+Date: Tue, 21 Sep 2010 11:11:35 +0200
+Subject: [PATCH 17/17] mach-gta02: fix PR2349, do not manage down
+
+---
+ arch/arm/mach-s3c2440/mach-gta02.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c
+index 08e9dcc..e639cac 100644
+--- a/arch/arm/mach-s3c2440/mach-gta02.c
++++ b/arch/arm/mach-s3c2440/mach-gta02.c
+@@ -715,7 +715,7 @@ struct pcf50633_platform_data gta02_pcf_pdata = {
+ .min_uV = 3300000,
+ .max_uV = 3300000,
+ .valid_modes_mask = REGULATOR_MODE_NORMAL,
+- .always_on = 1,
++ .always_on = 0,
+ .apply_uV = 1,
+ .state_mem = {
+ .enabled = 1,
+--
+1.7.3
+
diff --git a/recipes/linux/linux-openmoko-2.6.34/touchscreen_ignoreunexpectedintr34.patch b/recipes/linux/linux-openmoko-2.6.34/touchscreen_ignoreunexpectedintr34.patch
index d68346a921..e37231aa53 100644
--- a/recipes/linux/linux-openmoko-2.6.34/touchscreen_ignoreunexpectedintr34.patch
+++ b/recipes/linux/linux-openmoko-2.6.34/touchscreen_ignoreunexpectedintr34.patch
@@ -1,3 +1,12 @@
+From a3704a5bd991e0cc9ae72d6fd3c35880e6e28aad Mon Sep 17 00:00:00 2001
+From: Gennady Kupava <gb@bsdmn.com>
+Date: Sat, 26 Jun 2010 00:15:02 +0200
+Subject: [PATCH 02/17] touchscreen: ignore unexpected interrupts
+
+---
+ drivers/input/touchscreen/s3c2410_ts.c | 29 ++++++++++++++++++++++++-----
+ 1 files changed, 24 insertions(+), 5 deletions(-)
+
diff --git a/drivers/input/touchscreen/s3c2410_ts.c b/drivers/input/touchscreen/s3c2410_ts.c
index 98a7d12..8fba8a8 100644
--- a/drivers/input/touchscreen/s3c2410_ts.c
@@ -91,3 +100,6 @@ index 98a7d12..8fba8a8 100644
writel(WAIT4INT | INT_DOWN, ts.io + S3C2410_ADCTSC);
return 0;
+--
+1.7.3
+
diff --git a/recipes/linux/linux-openmoko-2.6.34/use-noclone-attribute-for-naked.patch b/recipes/linux/linux-openmoko-2.6.34/use-noclone-attribute-for-naked.patch
deleted file mode 100644
index cf09e244b4..0000000000
--- a/recipes/linux/linux-openmoko-2.6.34/use-noclone-attribute-for-naked.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-This patch add noinline and noclone attributes to naked functions.
-GCC 4.5 has new optimization -fipa-ira which is enabled at -Os and -O2
-this option will clone the functions and that can change the standard
-calling convention but the naked functions expect that and use
-arguments as in standard calling convention. Therefore the naked
-functions should not be marked non inline and noclone.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Index: linux-2.6.34/include/linux/compiler-gcc4.h
-===================================================================
---- linux-2.6.34.orig/include/linux/compiler-gcc4.h 2010-05-29 17:18:55.338127623 -0700
-+++ linux-2.6.34/include/linux/compiler-gcc4.h 2010-05-29 17:32:33.910657021 -0700
-@@ -48,6 +48,10 @@
- * unreleased. Really, we need to have autoconf for the kernel.
- */
- #define unreachable() __builtin_unreachable()
-+
-+/* Mark a function definition as prohibited from being cloned. */
-+#define __noclone __attribute__((__noclone__))
-+
- #endif
-
- #endif
-Index: linux-2.6.34/include/linux/compiler-gcc.h
-===================================================================
---- linux-2.6.34.orig/include/linux/compiler-gcc.h 2010-05-29 17:28:28.238113095 -0700
-+++ linux-2.6.34/include/linux/compiler-gcc.h 2010-05-29 17:31:58.938153321 -0700
-@@ -58,8 +58,12 @@
- * naked functions because then mcount is called without stack and frame pointer
- * being set up and there is no chance to restore the lr register to the value
- * before mcount was called.
-+ *
-+ * The asm() bodies of naked functions often depend on standard calling conventions,
-+ * therefore they must be noinline and noclone. GCC 4.[56] currently fail to enforce
-+ * this, so we must do so ourselves. See GCC PR44290.
- */
--#define __naked __attribute__((naked)) notrace
-+#define __naked __attribute__((naked)) noinline __noclone notrace
-
- #define __noreturn __attribute__((noreturn))
-
-@@ -85,3 +89,8 @@
- #define _gcc_header(x) __gcc_header(linux/compiler-gcc##x.h)
- #define gcc_header(x) _gcc_header(x)
- #include gcc_header(__GNUC__)
-+
-+#if !defined(__noclone)
-+#define __noclone /* not needed */
-+#endif
-+
-Index: linux-2.6.34/arch/arm/mm/copypage-v4wb.c
-===================================================================
---- linux-2.6.34.orig/arch/arm/mm/copypage-v4wb.c 2010-05-29 23:01:46.580600195 -0700
-+++ linux-2.6.34/arch/arm/mm/copypage-v4wb.c 2010-05-29 23:46:10.610629920 -0700
-@@ -27,7 +27,7 @@ v4wb_copy_user_page(void *kto, const voi
- {
- asm("\
- stmfd sp!, {r4, lr} @ 2\n\
-- mov r2, %0 @ 1\n\
-+ mov r2, %2 @ 1\n\
- ldmia r1!, {r3, r4, ip, lr} @ 4\n\
- 1: mcr p15, 0, r0, c7, c6, 1 @ 1 invalidate D line\n\
- stmia r0!, {r3, r4, ip, lr} @ 4\n\
-@@ -44,7 +44,7 @@ v4wb_copy_user_page(void *kto, const voi
- mcr p15, 0, r1, c7, c10, 4 @ 1 drain WB\n\
- ldmfd sp!, {r4, pc} @ 3"
- :
-- : "I" (PAGE_SIZE / 64));
-+ : "r" (kto), "r" (kfrom), "I" (PAGE_SIZE / 64));
- }
-
- void v4wb_copy_user_highpage(struct page *to, struct page *from,
-Index: linux-2.6.34/arch/arm/mm/copypage-v4wt.c
-===================================================================
---- linux-2.6.34.orig/arch/arm/mm/copypage-v4wt.c 2010-05-29 23:48:51.908131421 -0700
-+++ linux-2.6.34/arch/arm/mm/copypage-v4wt.c 2010-05-29 23:53:15.410657789 -0700
-@@ -25,7 +25,7 @@ v4wt_copy_user_page(void *kto, const voi
- {
- asm("\
- stmfd sp!, {r4, lr} @ 2\n\
-- mov r2, %0 @ 1\n\
-+ mov r2, %2 @ 1\n\
- ldmia r1!, {r3, r4, ip, lr} @ 4\n\
- 1: stmia r0!, {r3, r4, ip, lr} @ 4\n\
- ldmia r1!, {r3, r4, ip, lr} @ 4+1\n\
-@@ -40,7 +40,7 @@ v4wt_copy_user_page(void *kto, const voi
- mcr p15, 0, r2, c7, c7, 0 @ flush ID cache\n\
- ldmfd sp!, {r4, pc} @ 3"
- :
-- : "I" (PAGE_SIZE / 64));
-+ : "r" (kto), "r" (kfrom), "I" (PAGE_SIZE / 64));
- }
-
- void v4wt_copy_user_highpage(struct page *to, struct page *from,
-Index: linux-2.6.34/arch/arm/mm/copypage-feroceon.c
-===================================================================
---- linux-2.6.34.orig/arch/arm/mm/copypage-feroceon.c 2010-05-29 23:50:26.518121374 -0700
-+++ linux-2.6.34/arch/arm/mm/copypage-feroceon.c 2010-05-29 23:50:53.238196555 -0700
-@@ -18,7 +18,7 @@ feroceon_copy_user_page(void *kto, const
- {
- asm("\
- stmfd sp!, {r4-r9, lr} \n\
-- mov ip, %0 \n\
-+ mov ip, %2 \n\
- 1: mov lr, r1 \n\
- ldmia r1!, {r2 - r9} \n\
- pld [lr, #32] \n\
-@@ -64,7 +64,7 @@ feroceon_copy_user_page(void *kto, const
- mcr p15, 0, ip, c7, c10, 4 @ drain WB\n\
- ldmfd sp!, {r4-r9, pc}"
- :
-- : "I" (PAGE_SIZE));
-+ : "r" (kto), "r" (kfrom), "I" (PAGE_SIZE));
- }
-
- void feroceon_copy_user_highpage(struct page *to, struct page *from,
-Index: linux-2.6.34/arch/arm/mm/copypage-xsc3.c
-===================================================================
---- linux-2.6.34.orig/arch/arm/mm/copypage-xsc3.c 2010-05-29 23:52:00.010626567 -0700
-+++ linux-2.6.34/arch/arm/mm/copypage-xsc3.c 2010-05-29 23:52:30.048147465 -0700
-@@ -34,7 +34,7 @@ xsc3_mc_copy_user_page(void *kto, const
- {
- asm("\
- stmfd sp!, {r4, r5, lr} \n\
-- mov lr, %0 \n\
-+ mov lr, %2 \n\
- \n\
- pld [r1, #0] \n\
- pld [r1, #32] \n\
-@@ -67,7 +67,7 @@ xsc3_mc_copy_user_page(void *kto, const
- \n\
- ldmfd sp!, {r4, r5, pc}"
- :
-- : "I" (PAGE_SIZE / 64 - 1));
-+ : "r" (kto), "r" (kfrom), "I" (PAGE_SIZE / 64 - 1));
- }
-
- void xsc3_mc_copy_user_highpage(struct page *to, struct page *from,
diff --git a/recipes/linux/linux-openmoko-2.6.34/wm8753-fix-build-with-gcc-4.4.2-which-works-ok-with-.patch b/recipes/linux/linux-openmoko-2.6.34/wm8753-fix-build-with-gcc-4.4.2-which-works-ok-with-.patch
index 52fe6262cc..ee9a3a09be 100644
--- a/recipes/linux/linux-openmoko-2.6.34/wm8753-fix-build-with-gcc-4.4.2-which-works-ok-with-.patch
+++ b/recipes/linux/linux-openmoko-2.6.34/wm8753-fix-build-with-gcc-4.4.2-which-works-ok-with-.patch
@@ -1,7 +1,7 @@
-From 16722526979959805c493deabaac8cf9ba2f8ef6 Mon Sep 17 00:00:00 2001
+From d23270c39a5cd1af8df119c51645b6b0ed21f012 Mon Sep 17 00:00:00 2001
From: Martin Jansa <Martin.Jansa@gmail.com>
Date: Sat, 7 Nov 2009 20:33:06 +0100
-Subject: [PATCH 01/14] wm8753: fix build with gcc-4.4.2, which works ok with 4.1.2
+Subject: [PATCH 01/17] wm8753: fix build with gcc-4.4.2, which works ok with 4.1.2
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
@@ -9,7 +9,7 @@ Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c
-index 5ad677c..e148406 100644
+index 613199a..e270b9f 100644
--- a/sound/soc/codecs/wm8753.c
+++ b/sound/soc/codecs/wm8753.c
@@ -710,7 +710,9 @@ static void pll_factors(struct _pll_div *pll_div, unsigned int target,
@@ -24,5 +24,5 @@ index 5ad677c..e148406 100644
K = Kpart & 0xFFFFFFFF;
--
-1.7.1
+1.7.3
diff --git a/recipes/linux/linux-openmoko-2.6.34_git.bb b/recipes/linux/linux-openmoko-2.6.34_git.bb
index a1eae7719e..d2728a493f 100644
--- a/recipes/linux/linux-openmoko-2.6.34_git.bb
+++ b/recipes/linux/linux-openmoko-2.6.34_git.bb
@@ -1,9 +1,9 @@
require linux.inc
require linux-openmoko.inc
-KERNEL_RELEASE="2.6.34.6"
+KERNEL_RELEASE="2.6.34.7"
-SRCREV = "3f6725d43021d2d7597027e36020df5b44d0667e"
+SRCREV = "e4182f3551f1b8e8f8bd07a2d68e49a0ec4cd04a"
OEV = "oe4.6"
PV = "${KERNEL_RELEASE}-${OEV}+gitr${SRCPV}"
@@ -13,7 +13,6 @@ SRC_URI = "\
${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/patch-${KERNEL_RELEASE}.bz2;apply=yes;name=stablepatch \
# build fix
file://wm8753-fix-build-with-gcc-4.4.2-which-works-ok-with-.patch \
- file://0001-glamo-core-move-glamo_engine_reg_set-definition-outs.patch \
# fix for lost touchscreen https://docs.openmoko.org/trac/ticket/2328
file://touchscreen_ignoreunexpectedintr34.patch \
# patches from Thomas White's gdrm-for-merging branch
@@ -32,13 +31,13 @@ SRC_URI = "\
file://0002-usbhost.patch.patch \
file://0003-ar6000_delay.patch.patch \
file://0004-save_regs.patch.patch \
-# sysfs node path fix
- file://0001-mach-gta02-fix-gsm-power_on-sysfs-node-path.patch \
+# fix PR2349
+ file://0010-mach-gta02-fix-PR2349-do-not-manage-down.patch \
file://defconfig \
"
-SRC_URI[stablepatch.md5sum] = "49d8234d88bba062edcab19fd0ee28b4"
-SRC_URI[stablepatch.sha256sum] = "a62e9392ad435948ea4ea2cce12e60e042da6e6da806691936ba50bbaa0dc8cc"
+SRC_URI[stablepatch.md5sum] = "a88e4b5a9fcb23c2229301ac4dae1f1a"
+SRC_URI[stablepatch.sha256sum] = "b146904ea07cc87a3fbcbd4eab51d331d56718431539e6aa29c24b072e6b7832"
S = "${WORKDIR}/git"
diff --git a/recipes/live555/live555.inc b/recipes/live555/live555.inc
index 30249d22b4..14e97bbbae 100644
--- a/recipes/live555/live555.inc
+++ b/recipes/live555/live555.inc
@@ -45,9 +45,11 @@ do_install() {
for i in MPEG2TransportStreamIndexer openRTSP playSIP sapWatch testMPEG1or2AudioVideoToDarwin testMPEG1or2ProgramToTransportStream testMPEG1or2Splitter testMPEG1or2VideoReceiver testMPEG2TransportStreamTrickPlay testMPEG4VideoToDarwin testOnDemandRTSPServer testRelay testAMRAudioStreamer testDVVideoStreamer testMP3Receiver testMP3Streamer testMPEG1or2AudioVideoStreamer testMPEG1or2VideoStreamer testMPEG2TransportStreamer testMPEG4VideoStreamer testWAVAudioStreamer vobStreamer; do
install -m 0755 ${S}/testProgs/${i} ${D}${bindir}/
done
+ install -m 0755 ${S}/mediaServer/live555MediaServer ${D}${bindir}/
}
-PACKAGES =+ " live555-openrtsp live555-playsip"
+PACKAGES =+ " live555-openrtsp live555-playsip live555-mediaserver"
FILES_${PN} = "${bindir}/sapWatch ${bindir}/testMPEG1or2AudioVideoToDarwin ${bindir}/testMPEG1or2ProgramToTransportStream ${bindir}/testMPEG1or2Splitter ${bindir}/testMPEG1or2VideoReceiver ${bindir}/testMPEG2TransportStreamTrickPlay ${bindir}/testMPEG4VideoToDarwin ${bindir}/testOnDemandRTSPServer ${bindir}/testRelay ${bindir}/testAMRAudioStreamer ${bindir}/testDVVideoStreamer ${bindir}/testMP3Receiver ${bindir}/testMP3Streamer ${bindir}/testMPEG1or2AudioVideoStreamer ${bindir}/testMPEG1or2VideoStreamer ${bindir}/testMPEG2TransportStreamer ${bindir}/testMPEG4VideoStreamer ${bindir}/testWAVAudioStreamer ${bindir}/vobStreamer ${bindir}/MPEG2TransportStreamIndexer"
FILES_live555-openrtsp = "${bindir}/openRTSP"
FILES_live555-playsip = "${bindir}/playSIP"
+FILES_live555-mediaserver = "${bindir}/live555MediaServer"
diff --git a/recipes/mozilla/firefox/Add-nanojit-support-for-ARMv4T.patch b/recipes/mozilla/firefox/Add-nanojit-support-for-ARMv4T.patch
new file mode 100644
index 0000000000..b047e13133
--- /dev/null
+++ b/recipes/mozilla/firefox/Add-nanojit-support-for-ARMv4T.patch
@@ -0,0 +1,463 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Wed, 1 Sep 2010 21:07:45 +0200
+Subject: Add nanojit support for ARMv4T
+
+Thanks Albin Tonnerre for the initial patch.
+https://bugzilla.mozilla.org/show_bug.cgi?id=586224
+https://bugzilla.mozilla.org/show_bug.cgi?id=586625
+https://bugzilla.mozilla.org/show_bug.cgi?id=586262
+https://bugzilla.mozilla.org/show_bug.cgi?id=585604
+https://bugzilla.mozilla.org/show_bug.cgi?id=552624
+---
+ js/src/nanojit/NativeARM.cpp | 156 ++++++++++++++++++++++--------------------
+ js/src/nanojit/NativeARM.h | 3 +-
+ js/src/nanojit/avmplus.cpp | 7 --
+ js/src/nanojit/avmplus.h | 11 +++-
+ js/src/nanojit/njcpudetect.h | 110 +++++++++++++++++++++++++++++
+ 5 files changed, 202 insertions(+), 85 deletions(-)
+ create mode 100644 js/src/nanojit/njcpudetect.h
+
+diff --git a/js/src/nanojit/NativeARM.cpp b/js/src/nanojit/NativeARM.cpp
+index 9387191..2333960 100644
+--- a/js/src/nanojit/NativeARM.cpp
++++ b/js/src/nanojit/NativeARM.cpp
+@@ -42,7 +42,6 @@
+
+ #ifdef UNDER_CE
+ #include <cmnintrin.h>
+-extern "C" bool blx_lr_broken();
+ #endif
+
+ #if defined(AVMPLUS_LINUX)
+@@ -109,44 +108,14 @@ Assembler::decOp2Imm(uint32_t enc)
+ #endif
+
+ // Calculate the number of leading zeroes in data.
+-inline uint32_t
+-Assembler::CountLeadingZeroes(uint32_t data)
++static inline uint32_t
++CountLeadingZeroesSlow(uint32_t data)
+ {
+- uint32_t leading_zeroes;
+-
+- // We can't do CLZ on anything earlier than ARMv5. Architectures as early
+- // as that aren't supported, but assert that we aren't running on one
+- // anyway.
+- // If ARMv4 support is required in the future for some reason, we can do a
+- // run-time check on config.arch and fall back to the C routine, but for
+- // now we can avoid the cost of the check as we don't intend to support
+- // ARMv4 anyway.
+- NanoAssert(ARM_ARCH >= 5);
+-
+-#if defined(__ARMCC__)
+- // ARMCC can do this with an intrinsic.
+- leading_zeroes = __clz(data);
+-
+-// current Android GCC compiler incorrectly refuses to compile 'clz' for armv5
+-// (even though this is a legal instruction there). Since we currently only compile for ARMv5
+-// for emulation, we don't care too much (but we DO care for ARMv6+ since those are "real"
+-// devices).
+-#elif defined(__GNUC__) && !(defined(ANDROID) && __ARM_ARCH__ <= 5)
+- // GCC can use inline assembler to insert a CLZ instruction.
+- __asm (
+- " clz %0, %1 \n"
+- : "=r" (leading_zeroes)
+- : "r" (data)
+- );
+-#elif defined(WINCE)
+- // WinCE can do this with an intrinsic.
+- leading_zeroes = _CountLeadingZeros(data);
+-#else
+ // Other platforms must fall back to a C routine. This won't be as
+ // efficient as the CLZ instruction, but it is functional.
+ uint32_t try_shift;
+
+- leading_zeroes = 0;
++ uint32_t leading_zeroes = 0;
+
+ // This loop does a bisection search rather than the obvious rotation loop.
+ // This should be faster, though it will still be no match for CLZ.
+@@ -156,6 +125,43 @@ Assembler::CountLeadingZeroes(uint32_t data)
+ leading_zeroes = shift;
+ }
+ }
++
++ return leading_zeroes;
++}
++
++inline uint32_t
++Assembler::CountLeadingZeroes(uint32_t data)
++{
++ uint32_t leading_zeroes;
++
++#if defined(__ARMCC__)
++ // ARMCC can do this with an intrinsic.
++ leading_zeroes = __clz(data);
++#elif defined(__GNUC__)
++ // GCC can use inline assembler to insert a CLZ instruction.
++ if (ARM_ARCH_AT_LEAST(5)) {
++ __asm (
++#if defined(ANDROID) && (NJ_COMPILER_ARM_ARCH < 7)
++ // On Android gcc compiler, the clz instruction is not supported with a
++ // target smaller than armv7, despite it being legal for armv5+.
++ " .arch armv7-a\n"
++#elif (NJ_COMPILER_ARM_ARCH < 5)
++ // Targetting armv5t allows a toolchain with armv4t target to still build
++ // with clz, and clz to be used when appropriate at runtime.
++ " .arch armv5t\n"
++#endif
++ " clz %0, %1 \n"
++ : "=r" (leading_zeroes)
++ : "r" (data)
++ );
++ } else {
++ leading_zeroes = CountLeadingZeroesSlow(data);
++ }
++#elif defined(UNDER_CE)
++ // WinCE can do this with an intrinsic.
++ leading_zeroes = _CountLeadingZeros(data);
++#else
++ leading_zeroes = CountLeadingZeroesSlow(data);
+ #endif
+
+ // Assert that the operation worked!
+@@ -462,11 +468,6 @@ Assembler::asm_eor_imm(Register rd, Register rn, int32_t imm, int stat /* =0 */)
+ void
+ Assembler::nInit(AvmCore*)
+ {
+-#ifdef UNDER_CE
+- blx_lr_bug = blx_lr_broken();
+-#else
+- blx_lr_bug = 0;
+-#endif
+ }
+
+ void Assembler::nBeginAssembly()
+@@ -554,12 +555,18 @@ Assembler::nFragExit(LInsp guard)
+ NIns*
+ Assembler::genEpilogue()
+ {
+- // On ARMv5+, loading directly to PC correctly handles interworking.
+- // Note that we don't support anything older than ARMv5.
+- NanoAssert(ARM_ARCH >= 5);
++ RegisterMask savingMask;
+
+- RegisterMask savingMask = rmask(FP) | rmask(PC);
++ if (ARM_ARCH_AT_LEAST(5)) {
++ // On ARMv5+, loading directly to PC correctly handles interworking.
++ savingMask = rmask(FP) | rmask(PC);
+
++ } else {
++ // On ARMv4T, interworking is not handled properly, therefore, we pop
++ // lr and use bx lr to avoid that.
++ savingMask = rmask(FP) | rmask(LR);
++ BX(LR);
++ }
+ POP_mask(savingMask); // regs
+
+ return _nIns;
+@@ -867,25 +874,23 @@ Assembler::asm_call(LInsp ins)
+ outputf(" %p:", _nIns);
+ )
+
+- // Direct call: on v5 and above (where the calling sequence doesn't
+- // corrupt LR until the actual branch instruction), we can avoid an
+- // interlock in the "long" branch sequence by manually loading the
+- // target address into LR ourselves before setting up the parameters
+- // in other registers.
+ BranchWithLink((NIns*)call->_address);
+ } else {
+- // Indirect call: we assign the address arg to LR since it's not
+- // used for regular arguments, and is otherwise scratch since it's
+- // clobberred by the call. On v4/v4T, where we have to manually do
+- // the equivalent of a BLX, move LR into IP before corrupting LR
+- // with the return address.
+- if (blx_lr_bug) {
++ // Indirect call: we assign the address arg to LR
++ if (ARM_ARCH_AT_LEAST(5)) {
++#ifndef UNDER_CE
+ // workaround for msft device emulator bug (blx lr emulated as no-op)
+ underrunProtect(8);
+ BLX(IP);
+- MOV(IP,LR);
+- } else {
++ MOV(IP, LR);
++#else
+ BLX(LR);
++#endif
++ } else {
++ underrunProtect(12);
++ BX(IP);
++ MOV(LR, PC);
++ MOV(IP, LR);
+ }
+ asm_regarg(ARGSIZE_LO, ins->arg(--argc), LR);
+ }
+@@ -1494,7 +1499,7 @@ Assembler::BranchWithLink(NIns* addr)
+ // reserve enough space for the LDR sequence. This should give us a slight
+ // net gain over reserving the exact amount required for shorter branches.
+ // This _must_ be called before PC_OFFSET_FROM as it can move _nIns!
+- underrunProtect(4+LD32_size);
++ underrunProtect(8+LD32_size);
+
+ // Calculate the offset from the instruction that is about to be
+ // written (at _nIns-1) to the target.
+@@ -1513,29 +1518,30 @@ Assembler::BranchWithLink(NIns* addr)
+ // BL target
+ *(--_nIns) = (NIns)( (COND_AL) | (0xB<<24) | (offs2) );
+ asm_output("bl %p", (void*)addr);
+- } else {
+- // The target is Thumb, so emit a BLX.
+-
+- // We need to emit an ARMv5+ instruction, so assert that we have a
+- // suitable processor. Note that we don't support ARMv4(T), but
+- // this serves as a useful sanity check.
+- NanoAssert(ARM_ARCH >= 5);
+-
++ return;
++ } else if (ARM_ARCH_AT_LEAST(5)) {
++ // The target is Thumb, so emit a BLX (ARMv5+)
+ // The (pre-shifted) value of the "H" bit in the BLX encoding.
+ uint32_t H = (offs & 0x2) << 23;
+
+ // BLX addr
+ *(--_nIns) = (NIns)( (0xF << 28) | (0x5<<25) | (H) | (offs2) );
+ asm_output("blx %p", (void*)addr);
++ return;
+ }
+- } else {
++ /* If we get here, it means we are on ARMv4T, and the target is Thumb,
++ in which case we want to emit a branch with a register */
++ }
++ if (ARM_ARCH_AT_LEAST(5)) {
+ // Load the target address into IP and branch to that. We've already
+ // done underrunProtect, so we can skip that here.
+ BLX(IP, false);
+-
+- // LDR IP, =addr
+- asm_ld_imm(IP, (int32_t)addr, false);
++ } else {
++ BX(IP);
++ MOV(LR, PC);
+ }
++ // LDR IP, =addr
++ asm_ld_imm(IP, (int32_t)addr, false);
+ }
+
+ // This is identical to BranchWithLink(NIns*) but emits a branch to an address
+@@ -1546,20 +1552,22 @@ Assembler::BLX(Register addr, bool chk /* = true */)
+ // We need to emit an ARMv5+ instruction, so assert that we have a suitable
+ // processor. Note that we don't support ARMv4(T), but this serves as a
+ // useful sanity check.
+- NanoAssert(ARM_ARCH >= 5);
++ NanoAssert(ARM_ARCH_AT_LEAST(5));
+
+ NanoAssert(IsGpReg(addr));
++#ifdef UNDER_CE
+ // There is a bug in the WinCE device emulator which stops "BLX LR" from
+ // working as expected. Assert that we never do that!
+- if (blx_lr_bug) { NanoAssert(addr != LR); }
++ NanoAssert(addr != LR);
++#endif
+
+ if (chk) {
+ underrunProtect(4);
+ }
+
+- // BLX IP
++ // BLX reg
+ *(--_nIns) = (NIns)( (COND_AL) | (0x12<<20) | (0xFFF<<8) | (0x3<<4) | (addr) );
+- asm_output("blx ip");
++ asm_output("blx %s", gpn(addr));
+ }
+
+ // Emit the code required to load a memory address into a register as follows:
+@@ -2177,7 +2185,7 @@ Assembler::asm_arith(LInsp ins)
+ // common for (rr == ra) and is thus likely to be the most
+ // efficient case; if ra is no longer used after this LIR
+ // instruction, it is re-used for the result register (rr).
+- if ((ARM_ARCH > 5) || (rr != rb)) {
++ if ((ARM_ARCH_AT_LEAST(6)) || (rr != rb)) {
+ // Newer cores place no restrictions on the registers used in a
+ // MUL instruction (compared to other arithmetic instructions).
+ MUL(rr, rb, ra);
+diff --git a/js/src/nanojit/NativeARM.h b/js/src/nanojit/NativeARM.h
+index 55b2e8e..a0b0b87 100644
+--- a/js/src/nanojit/NativeARM.h
++++ b/js/src/nanojit/NativeARM.h
+@@ -229,7 +229,6 @@ verbose_only( extern const char* shiftNames[]; )
+ int * _nSlot; \
+ int * _startingSlot; \
+ int * _nExitSlot; \
+- bool blx_lr_bug; \
+ int max_out_args; /* bytes */
+
+ //nj_dprintf("jmp_l_n count=%d, nins=%X, %X = %X\n", (_c), nins, _nIns, ((intptr_t)(nins+(_c))-(intptr_t)_nIns - 4) );
+@@ -461,7 +460,7 @@ enum {
+ // _d = _l * _r
+ #define MUL(_d,_l,_r) do { \
+ underrunProtect(4); \
+- NanoAssert((ARM_ARCH >= 6) || ((_d) != (_l))); \
++ NanoAssert((ARM_ARCH_AT_LEAST(6)) || ((_d) != (_l))); \
+ NanoAssert(IsGpReg(_d) && IsGpReg(_l) && IsGpReg(_r)); \
+ NanoAssert(((_d) != PC) && ((_l) != PC) && ((_r) != PC)); \
+ *(--_nIns) = (NIns)( COND_AL | (_d)<<16 | (_r)<<8 | 0x90 | (_l) ); \
+diff --git a/js/src/nanojit/avmplus.cpp b/js/src/nanojit/avmplus.cpp
+index ab84abd..f436c1e 100644
+--- a/js/src/nanojit/avmplus.cpp
++++ b/js/src/nanojit/avmplus.cpp
+@@ -45,13 +45,6 @@
+ typedef void *maddr_ptr;
+ #endif
+
+-#if defined(AVMPLUS_ARM) && defined(UNDER_CE)
+-extern "C" bool
+-blx_lr_broken() {
+- return false;
+-}
+-#endif
+-
+ using namespace avmplus;
+
+ Config AvmCore::config;
+diff --git a/js/src/nanojit/avmplus.h b/js/src/nanojit/avmplus.h
+index ffc0873..76370f5 100644
+--- a/js/src/nanojit/avmplus.h
++++ b/js/src/nanojit/avmplus.h
+@@ -50,11 +50,18 @@
+ #include "jstypes.h"
+ #include "jsstdint.h"
+
++#include "njcpudetect.h"
++
+ #ifdef AVMPLUS_ARM
+-#define ARM_ARCH config.arch
++#ifdef DEBUG
++#define ARM_ARCH_AT_LEAST(wanted) (config.arch >= (wanted))
+ #define ARM_VFP config.vfp
++#else
++#define ARM_ARCH_AT_LEAST(wanted) \
++ ((NJ_COMPILER_ARM_ARCH >= (wanted)) || (config.arch >= (wanted)))
++#define ARM_VFP ((NJ_COMPILER_ARM_ARCH >= 7) || (config.vfp))
++#endif
+ #define ARM_THUMB2 config.thumb2
+-
+ #endif
+
+ #if !defined(AVMPLUS_LITTLE_ENDIAN) && !defined(AVMPLUS_BIG_ENDIAN)
+diff --git a/js/src/nanojit/njcpudetect.h b/js/src/nanojit/njcpudetect.h
+new file mode 100644
+index 0000000..1143005
+--- /dev/null
++++ b/js/src/nanojit/njcpudetect.h
+@@ -0,0 +1,110 @@
++/* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4 -*- */
++/* vi: set ts=4 sw=4 expandtab: (add to ~/.vimrc: set modeline modelines=5) */
++/* ***** BEGIN LICENSE BLOCK *****
++ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Mozilla Public License Version
++ * 1.1 (the "License"); you may not use this file except in compliance with
++ * the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++ * for the specific language governing rights and limitations under the
++ * License.
++ *
++ * The Original Code is [Open Source Virtual Machine].
++ *
++ * The Initial Developer of the Original Code is
++ * Adobe System Incorporated.
++ * Portions created by the Initial Developer are Copyright (C) 2004-2007
++ * the Initial Developer. All Rights Reserved.
++ *
++ * Contributor(s):
++ * Adobe AS3 Team
++ *
++ * Alternatively, the contents of this file may be used under the terms of
++ * either the GNU General Public License Version 2 or later (the "GPL"), or
++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the MPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the MPL, the GPL or the LGPL.
++ *
++ * ***** END LICENSE BLOCK ***** */
++
++#ifndef __njcpudetect__
++#define __njcpudetect__
++
++/***
++ * Note: this file should not include *any* other files, nor should it wrap
++ * itself in ifdef FEATURE_NANOJIT, nor should it do anything other than
++ * define preprocessor symbols.
++ */
++
++/***
++ * NJ_COMPILER_ARM_ARCH attempts to specify the minimum ARM architecture
++ * that the C++ compiler has specified. Note that although Config::arm_arch
++ * is initialized to this value by default, there is no requirement that they
++ * be in sync.
++ *
++ * Note, this is done via #define so that downstream preprocessor usage can
++ * examine it, but please don't attempt to redefine it.
++ *
++ * Note, this is deliberately not encased in "ifdef NANOJIT_ARM", as this file
++ * may be included before that is defined. On non-ARM platforms we will hit the
++ * "Unable to determine" case.
++ */
++
++// GCC and RealView usually define __ARM_ARCH__
++#if defined(__ARM_ARCH__)
++
++ #define NJ_COMPILER_ARM_ARCH __ARM_ARCH__
++
++// ok, try well-known GCC flags ( see http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html )
++#elif defined(__ARM_ARCH_7__) || \
++ defined(__ARM_ARCH_7A__) || \
++ defined(__ARM_ARCH_7M__) || \
++ defined(__ARM_ARCH_7R__) || \
++ defined(_ARM_ARCH_7)
++
++ #define NJ_COMPILER_ARM_ARCH 7
++
++#elif defined(__ARM_ARCH_6__) || \
++ defined(__ARM_ARCH_6J__) || \
++ defined(__ARM_ARCH_6T2__) || \
++ defined(__ARM_ARCH_6Z__) || \
++ defined(__ARM_ARCH_6ZK__) || \
++ defined(__ARM_ARCH_6M__) || \
++ defined(_ARM_ARCH_6)
++
++ #define NJ_COMPILER_ARM_ARCH 6
++
++#elif defined(__ARM_ARCH_5__) || \
++ defined(__ARM_ARCH_5T__) || \
++ defined(__ARM_ARCH_5E__) || \
++ defined(__ARM_ARCH_5TE__)
++
++ #define NJ_COMPILER_ARM_ARCH 5
++
++#elif defined(__ARM_ARCH_4T__)
++
++ #define NJ_COMPILER_ARM_ARCH 4
++
++// Visual C has its own mojo
++#elif defined(_MSC_VER) && defined(_M_ARM)
++
++ #define NJ_COMPILER_ARM_ARCH _M_ARM
++
++#else
++
++ // non-numeric value
++ #define NJ_COMPILER_ARM_ARCH "Unable to determine valid NJ_COMPILER_ARM_ARCH (nanojit only supports ARMv4T or later)"
++
++#endif
++
++#endif // __njcpudetect__
diff --git a/recipes/mozilla/firefox_3.6.8.bb b/recipes/mozilla/firefox_3.6.8.bb
index 825e6926b2..7927a22561 100644
--- a/recipes/mozilla/firefox_3.6.8.bb
+++ b/recipes/mozilla/firefox_3.6.8.bb
@@ -1,5 +1,5 @@
DEPENDS += "cairo sqlite3 libnotify"
-PR = "r1"
+PR = "r2"
# The .pc files below have "3.6" hardcoded, fix that before using them in a newer FF version!
SRC_URI = "ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${PV}/source/firefox-${PV}.source.tar.bz2;name=archive \
@@ -12,6 +12,7 @@ SRC_URI = "ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${PV}/source/f
file://0001-Remove-Werror-from-build.patch \
file://0002-Fix-security-cross-compile-cpu-detection-error.patch \
file://plugins-dir.patch \
+ file://Add-nanojit-support-for-ARMv4T.patch \
file://firefox-plugin.pc \
file://firefox-xpcom.pc \
file://nspr.pc \
diff --git a/recipes/mpfr/mpfr_3.0.0.bb b/recipes/mpfr/mpfr_3.0.0.bb
index 97f4970f08..0dacb1eefb 100644
--- a/recipes/mpfr/mpfr_3.0.0.bb
+++ b/recipes/mpfr/mpfr_3.0.0.bb
@@ -11,5 +11,7 @@ SRC_URI = "http://www.mpfr.org/mpfr-${PV}/mpfr-${PV}.tar.bz2 \
# fix build in thumb mode for armv4t
SRC_URI_append_thumb = " file://long-long-thumb.patch"
+EXTRA_OECONF_append_virtclass-native = " --enable-static"
+
SRC_URI[md5sum] = "f45bac3584922c8004a10060ab1a8f9f"
SRC_URI[sha256sum] = "8f4e5f9c53536cb798a30455ac429b1f9fc75a0f8af32d6e0ac31ebf1024821f"
diff --git a/recipes/mpfr/mpfr_svn.bb b/recipes/mpfr/mpfr_svn.bb
index c1695b42de..da58b372d3 100644
--- a/recipes/mpfr/mpfr_svn.bb
+++ b/recipes/mpfr/mpfr_svn.bb
@@ -6,3 +6,5 @@ PR = "${INC_PR}.0"
SRC_URI = "svn://scm.gforge.inria.fr/svn/mpfr;module=trunk"
S = "${WORKDIR}/trunk"
+
+EXTRA_OECONF_append_virtclass-native = " --enable-static"
diff --git a/recipes/mupdf/files/wintitle.patch b/recipes/mupdf/files/wintitle.patch
new file mode 100644
index 0000000000..dbcf83473d
--- /dev/null
+++ b/recipes/mupdf/files/wintitle.patch
@@ -0,0 +1,15 @@
+Upstream: http://bugs.ghostscript.com/show_bug.cgi?id=691577
+Status: pending
+
+diff --git a/apps/x11_main.c b/apps/x11_main.c
+index 395f9fd..c045863 100644
+--- a/apps/x11_main.c
++++ b/apps/x11_main.c
+@@ -198,6 +198,7 @@ void wincursor(pdfapp_t *app, int curs)
+
+ void wintitle(pdfapp_t *app, char *s)
+ {
++ XStoreName(xdpy, xwin, s);
+ #ifdef X_HAVE_UTF8_STRING
+ Xutf8SetWMProperties(xdpy, xwin, s, s, nil, 0, nil, nil, nil);
+ #else
diff --git a/recipes/mupdf/mupdf-0.6/Makerules b/recipes/mupdf/mupdf-0.6/Makerules
deleted file mode 100644
index 5f3d4e2aea..0000000000
--- a/recipes/mupdf/mupdf-0.6/Makerules
+++ /dev/null
@@ -1,8 +0,0 @@
-# Configuration for the Makefile
-LIBS := -ljbig2dec -lopenjpeg -ljpeg -lz -lm
-CFLAGS := -Wall --std=gnu99 -Ifitz -Imupdf $(THIRD_INCS)
-
-CFLAGS += `pkg-config --cflags freetype2`
-LDFLAGS += `pkg-config --libs freetype2`
-X11LIBS = -lX11 -lXext
-PDFVIEW_EXE = $(X11VIEW_EXE)
diff --git a/recipes/mupdf/mupdf-0.6/mupdf_fix_endianness.patch b/recipes/mupdf/mupdf-0.6/mupdf_fix_endianness.patch
deleted file mode 100644
index 056e1451b1..0000000000
--- a/recipes/mupdf/mupdf-0.6/mupdf_fix_endianness.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-Patch from upstream darcs repository, see this bugzilla entry for details:
-http://bugs.ghostscript.com/show_bug.cgi?id=690932
-
-Wed Jun 16 10:29:54 UTC 2010 tor@ghostscript.com
- * Do runtime endianness test instead of relying on unreliable preprocessor macros.
-diff -rN -u old-mupdf/apps/x11_image.c new-mupdf-1/apps/x11_image.c
---- old-mupdf/apps/x11_image.c 2010-06-16 12:33:35.000000000 +0000
-+++ new-mupdf-1/apps/x11_image.c 2010-06-16 12:33:35.000000000 +0000
-@@ -10,7 +10,7 @@
- # define _XOPEN_SOURCE 1
- #endif
-
--#include <fitz.h>
-+#include "fitz.h"
-
- #include <X11/Xlib.h>
- #include <X11/Xutil.h>
-@@ -205,11 +205,10 @@
- unsigned long rs, gs, bs;
-
- byteorder = ImageByteOrder(info.display);
--#if BYTE_ORDER == BIG_ENDIAN
-- byterev = byteorder != MSBFirst;
--#else
-- byterev = byteorder != LSBFirst;
--#endif
-+ if (fz_isbigendian())
-+ byterev = byteorder != MSBFirst;
-+ else
-+ byterev = byteorder != LSBFirst;
-
- rm = info.visual.red_mask;
- gm = info.visual.green_mask;
-diff -rN -u old-mupdf/draw/imageunpack.c new-mupdf-1/draw/imageunpack.c
---- old-mupdf/draw/imageunpack.c 2010-06-16 12:33:35.000000000 +0000
-+++ new-mupdf-1/draw/imageunpack.c 2010-06-16 12:33:36.000000000 +0000
-@@ -31,6 +31,12 @@
- justinvert &= min[i] == 255 && max[i] == 0 && sub[i] == -255;
- }
-
-+ unsigned mask;
-+ if (fz_isbigendian())
-+ mask = 0x00ff00ff;
-+ else
-+ mask = 0xff00ff00;
-+
- if (!needed)
- return;
-
-@@ -51,11 +57,7 @@
- wh = wh - 2 * hwh;
- while(hwh--) {
- unsigned in = *wp;
--#if BYTE_ORDER == LITTLE_ENDIAN
-- unsigned out = in ^ 0xff00ff00;
--#else
-- unsigned out = in ^ 0x00ff00ff;
--#endif
-+ unsigned out = in ^ mask;
- *wp++ = out;
- }
- p = (byte *)wp;
-diff -rN -u old-mupdf/fitz/base_cpudep.c new-mupdf-1/fitz/base_cpudep.c
---- old-mupdf/fitz/base_cpudep.c 2010-06-16 12:33:35.000000000 +0000
-+++ new-mupdf-1/fitz/base_cpudep.c 2010-06-16 12:33:36.000000000 +0000
-@@ -10,6 +10,12 @@
- /* global run-time constant */
- unsigned fz_cpuflags = 0;
-
-+int fz_isbigendian(void)
-+{
-+ static const int one = 1;
-+ return *(char*)&one == 0;
-+}
-+
- #ifndef HAVE_CPUDEP
-
- void fz_cpudetect(void)
-diff -rN -u old-mupdf/fitz/fitz_base.h new-mupdf-1/fitz/fitz_base.h
---- old-mupdf/fitz/fitz_base.h 2010-06-16 12:33:35.000000000 +0000
-+++ new-mupdf-1/fitz/fitz_base.h 2010-06-16 12:33:36.000000000 +0000
-@@ -86,6 +86,8 @@
- /* treat as constant! */
- extern unsigned fz_cpuflags;
-
-+int fz_isbigendian(void);
-+
- /*
- * Base Fitz runtime.
- */
diff --git a/recipes/mupdf/mupdf_0.6.bb b/recipes/mupdf/mupdf_git.bb
index 16d49d8ff1..ddec287cb4 100644
--- a/recipes/mupdf/mupdf_0.6.bb
+++ b/recipes/mupdf/mupdf_git.bb
@@ -2,15 +2,17 @@ DESCRIPTION = "A lightweight PDF viewer and toolkit written in portable C."
HOMEPAGE = "http://www.mupdf.com"
SECTION = "x11/applications"
LICENSE = "GPLv3"
+
+SRCREV = "8147dd7fe7107de60f2c7de3bcd78e0048c26241"
+PV = "0.7+gitr${SRCPV}"
PR = "r0"
DEPENDS = "openjpeg-native jbig2dec-native jpeg-native freetype-native libpng-native openjpeg jbig2dec jpeg zlib virtual/libx11 libxext freetype"
-SRC_URI = "http://mupdf.com/download/source/${PN}-${PV}.tar.gz \
- file://mupdf_fix_endianness.patch \
- file://Makerules"
+SRC_URI = "git://mupdf.com/repos/mupdf.git;protocol=http \
+ file://wintitle.patch"
-S = "${WORKDIR}/mupdf"
+S = "${WORKDIR}/git"
PACKAGES =+ "${PN}-tools ${PN}-tools-doc "
FILES_${PN}-tools = "${bindir}/pdfclean ${bindir}/pdfdraw ${bindir}/pdfshow \
@@ -18,13 +20,11 @@ FILES_${PN}-tools = "${bindir}/pdfclean ${bindir}/pdfdraw ${bindir}/pdfshow \
FILES_${PN}-tools-doc = "${mandir}/man1/pdfclean.1 ${mandir}/man1/pdfdraw.1 \
${mandir}/man1/pdfshow.1"
-# mupdf crashes (at least on arm) when built with high level of optimization
-# so we need to provide some safe settings
-FULL_OPTIMIZATION = "-O2"
+# mupdf crashes when built with -ggdb3
+# http://bugs.ghostscript.com/show_bug.cgi?id=691578
+FULL_OPTIMIZATION := "${@oe_filter_out('-ggdb3', '${FULL_OPTIMIZATION}', d)}"
do_configure() {
- cp ${WORKDIR}/Makerules ${S}/Makerules
-
# we don't include CJK fonts to make binary more slim
# comment out following two lines if you need support for CJK
sed -i 's:^\t\$.GENDIR./font_cjk.c::g' ${S}/Makefile
@@ -36,20 +36,20 @@ do_compile() {
# so we need to compile them first with host compiler
unset CFLAGS LDFLAGS
export PKG_CONFIG_PATH=${STAGING_LIBDIR_NATIVE}/pkgconfig
- oe_runmake build/debug
- oe_runmake build/debug/cmapdump LD="${BUILD_CC} -L${STAGING_LIBDIR_NATIVE} -Wl,-rpath,${STAGING_LIBDIR_NATIVE}" CC=${BUILD_CC}
- oe_runmake build/debug/fontdump LD="${BUILD_CC} -L${STAGING_LIBDIR_NATIVE} -Wl,-rpath,${STAGING_LIBDIR_NATIVE}" CC=${BUILD_CC}
+ oe_runmake build=release build/release
+ oe_runmake build=release build/release/cmapdump LD="${BUILD_CC} -L${STAGING_LIBDIR_NATIVE} -Wl,-rpath,${STAGING_LIBDIR_NATIVE}" CC=${BUILD_CC}
+ oe_runmake build=release build/release/fontdump LD="${BUILD_CC} -L${STAGING_LIBDIR_NATIVE} -Wl,-rpath,${STAGING_LIBDIR_NATIVE}" CC=${BUILD_CC}
export PKG_CONFIG_PATH=${STAGING_LIBDIR}/pkgconfig
# ...and then we fire 'make', feeding proper
# cross-compilation flags through Makerules file
echo "CFLAGS += ${CFLAGS}" >> ${S}/Makerules
echo "LDFLAGS += ${LDFLAGS}" >> ${S}/Makerules
- oe_runmake LD="${CC}"
+ oe_runmake build=release LD="${CC}"
}
do_install() {
- oe_runmake install prefix="${D}/usr"
+ oe_runmake install build=release prefix="${D}/usr"
install -d ${D}/${datadir}/applications
install -d ${D}/${datadir}/pixmaps
install -d ${D}/${mandir}/man1
@@ -58,5 +58,3 @@ do_install() {
install -m 0644 ${S}/debian/*.1 ${D}/${mandir}/man1/
}
-SRC_URI[md5sum] = "d1e1a1df8fb3e4d1c601506797b75036"
-SRC_URI[sha256sum] = "6f87c4f113ee9e0f4bdfd3a316ef44052edc4febc8f7b531c4a3f44ffe149605"
diff --git a/recipes/musicbrainz/files/libmusicbrainz-3.0.2-cmake-neon.patch b/recipes/musicbrainz/files/libmusicbrainz-3.0.2-cmake-neon.patch
new file mode 100644
index 0000000000..a10627548d
--- /dev/null
+++ b/recipes/musicbrainz/files/libmusicbrainz-3.0.2-cmake-neon.patch
@@ -0,0 +1,37 @@
+Upstream: not yet
+
+Fix build when prefix = "".
+
+musicbrainz is looking for ne_request.h under ${includedir}. It should be
+looking for neon/ne_request.h under ${includedir}, and -I${includedir}/neon
+should be added to the compiler flags, as specified by pkg-config. The
+existing FindNeon.cmake had a special case to find
+/usr/include/neon/ne_request.h so it worked if prefix = "/usr".
+
+--- libmusicbrainz-3.0.2/cmake/modules/FindNeon.cmake.orig 2007-05-12 07:09:24.000000000 -0400
++++ libmusicbrainz-3.0.2/cmake/modules/FindNeon.cmake 2010-09-22 18:09:29.000000000 -0400
+@@ -1,10 +1,10 @@
+ INCLUDE(UsePkgConfig)
+ PKGCONFIG(neon _NeonIncDir _NeonLinkDir _NeonLinkFlags _NeonCflags)
+
+-FIND_PATH(NEON_INCLUDE_DIR ne_request.h
++FIND_PATH(NEON_INCLUDE_DIR neon/ne_request.h
+ ${_NeonIncDir}
+- /usr/include/neon
+- /usr/local/include/neon
++ /usr/include
++ /usr/local/include
+ )
+
+ FIND_LIBRARY(NEON_LIBRARIES neon
+--- libmusicbrainz-3.0.2/src/CMakeLists.txt.orig 2007-07-13 17:16:58.000000000 -0400
++++ libmusicbrainz-3.0.2/src/CMakeLists.txt 2010-09-22 18:28:46.000000000 -0400
+@@ -1,6 +1,8 @@
+ SET(CMAKE_INCLUDE_CURRENT_DIR ON)
+ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR}/../include ${NEON_INCLUDE_DIR})
+
++ADD_DEFINITIONS(${_NeonCflags})
++
+ FILE(GLOB _sources ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/xmlParser/*.cpp)
+ ADD_LIBRARY(musicbrainz3 SHARED ${_sources})
+
diff --git a/recipes/musicbrainz/libmusicbrainz_3.0.2.bb b/recipes/musicbrainz/libmusicbrainz_3.0.2.bb
index a27ddcb439..52ffe53149 100644
--- a/recipes/musicbrainz/libmusicbrainz_3.0.2.bb
+++ b/recipes/musicbrainz/libmusicbrainz_3.0.2.bb
@@ -2,7 +2,8 @@ require ${PN}.inc
PR = "r1"
-SRC_URI_append = " file://libmusicbrainz-3.0.2-gcc-4.4-fix.patch"
+SRC_URI_append = " file://libmusicbrainz-3.0.2-gcc-4.4-fix.patch \
+ file://libmusicbrainz-3.0.2-cmake-neon.patch"
SRC_URI[md5sum] = "648ecd43f7b80852419aaf73702bc23f"
diff --git a/recipes/mythfront/mythfront-config.bb b/recipes/mythfront/mythfront-config.bb
index b87e0be8ad..79ba428516 100644
--- a/recipes/mythfront/mythfront-config.bb
+++ b/recipes/mythfront/mythfront-config.bb
@@ -1,11 +1,12 @@
PV = "1.10"
-PR = "r0"
+PR = "r1"
RDEPENDS_${PN} = "font-misc-misc"
LICENSE = "MIT"
-SRC_URI = "file://tftp.sh file://xorg.conf"
+SRC_URI = "file://tftp.sh"
-SRC_URI_append_epia = " file://serial.sh"
+SRC_URI_append_epia = " file://serial.sh \
+ file://xorg.conf"
do_install() {
install -d ${D}${sysconfdir}/udhcpc.d/
@@ -14,9 +15,6 @@ do_install() {
install -d ${D}${sysconfdir}/mythtv
ln -sf /var/lib/config/mysql.txt ${D}${sysconfdir}/mythtv
- install -d ${D}${sysconfdir}/X11
- install -m 0644 ${WORKDIR}/xorg.conf ${D}${sysconfdir}/X11
-
ln -sf /var/lib/config/lircd.conf ${D}${sysconfdir}/lircd.conf
install -d ${D}/dev
@@ -30,3 +28,7 @@ do_install() {
fi
}
+do_install_append_epia() {
+ install -d ${D}${sysconfdir}/X11
+ install -m 0644 ${WORKDIR}/xorg.conf ${D}${sysconfdir}/X11
+}
diff --git a/recipes/netbase/netbase_4.21.bb b/recipes/netbase/netbase_4.21.bb
index 219616ef2f..ddd186ea45 100644
--- a/recipes/netbase/netbase_4.21.bb
+++ b/recipes/netbase/netbase_4.21.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "This package provides the necessary \
infrastructure for basic TCP/IP based networking."
SECTION = "base"
LICENSE = "GPLv2"
-PR = "r46"
+PR = "r47"
inherit update-rc.d
diff --git a/recipes/nodejs/nodejs_0.2.1.bb b/recipes/nodejs/nodejs_0.2.1.bb
index b2bbcc308b..c2e9c4163b 100644
--- a/recipes/nodejs/nodejs_0.2.1.bb
+++ b/recipes/nodejs/nodejs_0.2.1.bb
@@ -31,3 +31,4 @@ do_install () {
DESTDIR=${D} oe_runmake install
}
+BBCLASSEXTEND = "native"
diff --git a/recipes/farsight/farsight_0.1.5.bb b/recipes/obsolete/farsight/farsight_0.1.5.bb
index 70e1468c2d..70e1468c2d 100644
--- a/recipes/farsight/farsight_0.1.5.bb
+++ b/recipes/obsolete/farsight/farsight_0.1.5.bb
diff --git a/recipes/farsight/gst-plugins-farsight_0.10.1.bb b/recipes/obsolete/farsight/gst-plugins-farsight_0.10.1.bb
index 0c390e5e07..0c390e5e07 100644
--- a/recipes/farsight/gst-plugins-farsight_0.10.1.bb
+++ b/recipes/obsolete/farsight/gst-plugins-farsight_0.10.1.bb
diff --git a/recipes/tapioca/libjingle-tapioca-0.3.10/fix-host-h-double-install.patch b/recipes/obsolete/tapioca/libjingle-tapioca-0.3.10/fix-host-h-double-install.patch
index b99115522c..b99115522c 100644
--- a/recipes/tapioca/libjingle-tapioca-0.3.10/fix-host-h-double-install.patch
+++ b/recipes/obsolete/tapioca/libjingle-tapioca-0.3.10/fix-host-h-double-install.patch
diff --git a/recipes/tapioca/libjingle-tapioca-0.3.10/gcc-4.5-compilation-fixes.patch b/recipes/obsolete/tapioca/libjingle-tapioca-0.3.10/gcc-4.5-compilation-fixes.patch
index 57db0934db..57db0934db 100644
--- a/recipes/tapioca/libjingle-tapioca-0.3.10/gcc-4.5-compilation-fixes.patch
+++ b/recipes/obsolete/tapioca/libjingle-tapioca-0.3.10/gcc-4.5-compilation-fixes.patch
diff --git a/recipes/tapioca/libjingle-tapioca_0.3.10.bb b/recipes/obsolete/tapioca/libjingle-tapioca_0.3.10.bb
index f734e820ca..f734e820ca 100644
--- a/recipes/tapioca/libjingle-tapioca_0.3.10.bb
+++ b/recipes/obsolete/tapioca/libjingle-tapioca_0.3.10.bb
diff --git a/recipes/tapioca/tapioca-xmpp_0.3.9.bb b/recipes/obsolete/tapioca/tapioca-xmpp_0.3.9.bb
index 860ebd0d5d..860ebd0d5d 100644
--- a/recipes/tapioca/tapioca-xmpp_0.3.9.bb
+++ b/recipes/obsolete/tapioca/tapioca-xmpp_0.3.9.bb
diff --git a/recipes/tapioca/tapioca_0.3.9.bb b/recipes/obsolete/tapioca/tapioca_0.3.9.bb
index ef0b21d0f9..ef0b21d0f9 100644
--- a/recipes/tapioca/tapioca_0.3.9.bb
+++ b/recipes/obsolete/tapioca/tapioca_0.3.9.bb
diff --git a/recipes/tapioca/tapiocaui_0.3.9.1.bb b/recipes/obsolete/tapioca/tapiocaui_0.3.9.1.bb
index 1c93434b59..1c93434b59 100644
--- a/recipes/tapioca/tapiocaui_0.3.9.1.bb
+++ b/recipes/obsolete/tapioca/tapiocaui_0.3.9.1.bb
diff --git a/recipes/omnewrotate/omnewrotate_svn.bb b/recipes/omnewrotate/omnewrotate_svn.bb
index 63059bb5d2..b7ad1bf653 100644
--- a/recipes/omnewrotate/omnewrotate_svn.bb
+++ b/recipes/omnewrotate/omnewrotate_svn.bb
@@ -5,13 +5,11 @@ LICENSE = "GPLv3"
SECTION = "console/network"
DEPENDS = "libframeworkd-glib xrandr"
-SRCREV = "67"
+SRCREV = "69"
-PV = "0.5.8+svnr${SRCPV}"
-PR = "r1"
+PV = "0.5.9+svnr${SRCPV}"
-SRC_URI = "svn://omnewrotate.googlecode.com/svn;module=trunk;proto=http \
- file://xsession.script.patch"
+SRC_URI = "svn://omnewrotate.googlecode.com/svn;module=trunk;proto=http"
S = "${WORKDIR}/trunk"
diff --git a/recipes/openmoko-3rdparty/mokosuite2_git.bb b/recipes/openmoko-3rdparty/mokosuite2_git.bb
new file mode 100644
index 0000000000..e01cfb4110
--- /dev/null
+++ b/recipes/openmoko-3rdparty/mokosuite2_git.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Desktop environment and phone stack GUI for SHR"
+HOMEPAGE = "http://gitorious.org/mokosuite2"
+AUTHOR = "Daniele Ricci"
+LICENSE = "GPLv3"
+DEPENDS = "mokowm elementary libfreesmartphone-glib libphone-utils eggdbus glib-2.0 dbus-glib alsa-lib db sqlite3"
+SECTION = "misc/utils"
+
+PV = "1.0.99+gitr${SRCPV}"
+SRCREV = "b06f0d5ee9a8b3aef1be9c084975a8a08a3b3213"
+
+SRC_URI = "git://gitorious.org/mokosuite2/appbunch.git;protocol=git"
+S = "${WORKDIR}/git"
+
+PARALLEL_MAKE = ""
+
+CFLAGS += "-DOPENMOKO"
+EXTRA_OECONF = " --enable-contactsdb-sqlite --enable-settings-config --with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc"
+FILES_${PN} += "${datadir}/mokosuite ${sysconfdir}/dbus-1 ${sysconfdir}/X11 ${sysconfdir}/mokosuite.conf {$datadir}/applications"
+CONFFILES_${PN} = "${sysconfdir}/mokosuite.conf"
+
+inherit pkgconfig autotools
diff --git a/recipes/openmoko-3rdparty/mokosuite2_svn.bb b/recipes/openmoko-3rdparty/mokosuite2_svn.bb
deleted file mode 100644
index ea00b31a19..0000000000
--- a/recipes/openmoko-3rdparty/mokosuite2_svn.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-DESCRIPTION = "Desktop environment and phone stack GUI for SHR"
-HOMEPAGE = "http://wiki.openmoko.org/"
-AUTHOR = "Daniele Ricci"
-LICENSE = "GPLv3"
-DEPENDS = "elementary libframeworkd-glib libphone-utils eggdbus glib-2.0 dbus-glib alsa-lib db sqlite3"
-SECTION = "misc/utils"
-
-PV = "1.0+svnr${SRCPV}"
-PR = "r1"
-SRCREV = "454"
-
-SRC_URI = "svn://svn.casaricci.it/openmoko/trunk;module=mokosuite;proto=svn"
-S = "${WORKDIR}/mokosuite"
-
-PARALLEL_MAKE = ""
-
-CFLAGS += "-DOPENMOKO"
-EXTRA_OECONF = " --enable-callsdb-sqlite --enable-contactsdb-sqlite --with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc"
-FILES_${PN} += "${datadir}/mokosuite ${sysconfdir}/dbus-1 ${sysconfdir}/X11 ${sysconfdir}/mokosuite.conf {$datadir}/applications"
-CONFFILES_${PN} = "${sysconfdir}/mokosuite.conf"
-
-inherit pkgconfig autotools update-alternatives
-
-ALTERNATIVE_PATH = "${bindir}/mokosession"
-ALTERNATIVE_NAME = "x-window-manager"
-ALTERNATIVE_LINK = "${bindir}/x-window-manager"
-ALTERNATIVE_PRIORITY = "20"
diff --git a/recipes/openmoko-3rdparty/mokowm-imf-ecore_svn.bb b/recipes/openmoko-3rdparty/mokowm-imf-ecore_git.bb
index 023757dc2a..1cd5fd1c6b 100644
--- a/recipes/openmoko-3rdparty/mokowm-imf-ecore_svn.bb
+++ b/recipes/openmoko-3rdparty/mokowm-imf-ecore_git.bb
@@ -1,15 +1,15 @@
DESCRIPTION = "Ecore input method for the Mokosuite window manager"
-HOMEPAGE = "http://wiki.openmoko.org/"
+HOMEPAGE = "http://gitorious.org/mokosuite2"
AUTHOR = "Daniele Ricci"
LICENSE = "GPLv3"
DEPENDS = "ecore eina"
SECTION = "misc/utils"
-PV = "1.0+svnr${SRCPV}"
-SRCREV = "457"
+PV = "1.0.99+gitr${SRCPV}"
+SRCREV = "59c1afe3c347a4da38fa7a5f4f7dd080a65d0858"
-SRC_URI = "svn://svn.casaricci.it/openmoko/trunk;module=mokowm-imf-ecore;proto=svn"
-S = "${WORKDIR}/mokowm-imf-ecore"
+SRC_URI = "git://gitorious.org/mokosuite2/mokowm-imf-ecore.git;protocol=git"
+S = "${WORKDIR}/git"
FILES_${PN}-dbg += "${libdir}/ecore/immodules/.debug"
FILES_${PN} += "${libdir}/ecore/immodules"
diff --git a/recipes/openmoko-3rdparty/mokowm_git.bb b/recipes/openmoko-3rdparty/mokowm_git.bb
new file mode 100644
index 0000000000..625e366e05
--- /dev/null
+++ b/recipes/openmoko-3rdparty/mokowm_git.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "A minimal X11 window manager for the Mokosuite"
+HOMEPAGE = "http://gitorious.org/mokosuite2"
+AUTHOR = "Daniele Ricci"
+LICENSE = "GPLv3"
+DEPENDS = "glib-2.0 ecore evas edje"
+SECTION = "x11/clients"
+
+PV = "1.0.99+gitr${SRCPV}"
+SRCREV = "fc51f730414aa9efd716849ac64ce582e53cfaf1"
+
+SRC_URI = "git://gitorious.org/mokosuite2/mokowm.git;protocol=git"
+S = "${WORKDIR}/git"
+
+CFLAGS += "-DOPENMOKO"
+EXTRA_OECONF = " --with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc"
+FILES_${PN} += "${datadir}/mokosuite ${sysconfdir}/X11"
+
+inherit autotools update-alternatives
+
+ALTERNATIVE_PATH = "${bindir}/mokosession"
+ALTERNATIVE_NAME = "x-window-manager"
+ALTERNATIVE_LINK = "${bindir}/x-window-manager"
+ALTERNATIVE_PRIORITY = "20"
diff --git a/recipes/opkg/opkg.inc b/recipes/opkg/opkg.inc
index 3f94506039..ae1622a6fa 100644
--- a/recipes/opkg/opkg.inc
+++ b/recipes/opkg/opkg.inc
@@ -4,7 +4,7 @@ SECTION = "base"
LICENSE = "GPLv2"
SRCREV = ${OPKG_SRCREV}
PV = "0.1.8+svnr${SRCPV}"
-INC_PR = "r1"
+INC_PR = "r2"
SRC_URI = "svn://opkg.googlecode.com/svn;module=trunk;proto=http \
file://configure \
@@ -22,4 +22,5 @@ do_install_prepend() {
EXTRA_OECONF += " --disable-gpg \
--disable-openssl \
--disable-ssl-curl \
- --disable-curl"
+ --disable-curl \
+ --disable-sha256"
diff --git a/recipes/orc/orc_0.4.9.bb b/recipes/orc/orc_0.4.9.bb
new file mode 100644
index 0000000000..3c24203381
--- /dev/null
+++ b/recipes/orc/orc_0.4.9.bb
@@ -0,0 +1,5 @@
+require orc.inc
+
+SRC_URI[orc.md5sum] = "4006eb0ba85a69563952a65b5ea043a0"
+SRC_URI[orc.sha256sum] = "aac7af5d37ce87b1d3d014822f2e2b6be83daff4d752f56a45766e5a807e6b53"
+
diff --git a/recipes/p4/p4.inc b/recipes/p4/p4.inc
deleted file mode 100644
index a8121c1fd4..0000000000
--- a/recipes/p4/p4.inc
+++ /dev/null
@@ -1,72 +0,0 @@
-# p4 .bb build file
-# Copyright (C) 2006, Advanced Micro Devices, Inc. All Rights Reserved
-# Released under the MIT license (see /COPYING)
-
-DESCRIPTION = "Perforce client and server binaries"
-HOMEPAGE = "http://www.perforce.com"
-LICENSE = "Perforce"
-
-def p4_arch(d):
- import bb, re
- arch = bb.data.getVar('TARGET_ARCH', d, 1)
- os = bb.data.getVar('TARGET_OS', d, 1)
-
- if re.match("^linux.*$", os):
- r = re.compile("([0-9]+\.[0-9]+).*")
- m = r.match(base_read_file(bb.data.expand('${STAGING_KERNEL_DIR}/kernel-abiversion', d)));
- os = "linux"
- if m and re.match("^.*86.*$", arch):
- os = "linux%s" % m.group(1).replace('.','')
-
- if re.match("^i.86$", arch):
- arch = "x86"
- elif arch == "x86_64":
- arch = "amd64"
- elif re.match("^mips.*$", arch):
- arch = "mips"
-
- return "%s%s" % (os, arch)
-
-P4ARCH = "${@p4_arch(d)}"
-P4BASEURL = "http://filehost.perforce.com/perforce/r${PV}/bin.${P4ARCH}"
-
-#Because these files are all named the same thing, regardless of version or arch
-PREMIRRORS=""
-DL_DIR="${WORKDIR}/${P4ARCH}"
-
-SRC_URI="\
- ${P4BASEURL}/p4;name=p4 \
- ${P4BASEURL}/p4api.tar;name=p4api \
- ${P4BASEURL}/p4d;name=p4d \
- ${P4BASEURL}/p4ftpd;name=p4ftpd \
- ${P4BASEURL}/p4p;name=p4p \
- ${P4BASEURL}/p4web;name=p4web"
-S = "${WORKDIR}"
-
-PACKAGES += " ${PN}-server"
-FILES_${PN} = " ${bindir}/p4"
-FILES_${PN}-server = " ${bindir}/p4d ${bindir}/p4ftpd ${bindir}/p4p ${bindir}/p4web"
-
-do_stage() {
- install -d ${STAGING_INCDIR}/p4api
- install -m 0644 *.h ${STAGING_INCDIR}/p4api/
-
- oe_libinstall -a libclient ${STAGING_LIBDIR}
- oe_libinstall -a librpc ${STAGING_LIBDIR}
- oe_libinstall -a libsupp ${STAGING_LIBDIR}
-}
-
-do_install() {
- install -d ${D}${bindir}
- install -d ${D}${includedir}/p4api
- install -d ${D}${libdir}
-
- install -m 0644 *.h ${D}${includedir}/p4api/
- for p4bin in p4 p4d p4ftpd p4p p4web ; do
- install -m 0755 $p4bin ${D}${bindir}/
- done
-
- oe_libinstall -a libclient ${D}${libdir}/
- oe_libinstall -a librpc ${D}${libdir}/
- oe_libinstall -a libsupp ${D}${libdir}/
-}
diff --git a/recipes/p4/p4_04.2.bb b/recipes/p4/p4_04.2.bb
deleted file mode 100644
index 6b1d527f38..0000000000
--- a/recipes/p4/p4_04.2.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-# p4 .bb build file
-# Copyright (C) 2006, Advanced Micro Devices, Inc. All Rights Reserved
-# Released under the MIT license (see /COPYING)
-
-require p4.inc
-
-SRC_URI[p4.md5sum] = "ba983759366018ad2d90a7e088f509eb"
-SRC_URI[p4.sha256sum] = "de8bce2b3ae085a973dca4f7208c3cb1ab1fdc9bbcc9e3496ad3d56a4923dba0"
-SRC_URI[p4api.md5sum] = "1eb1fb53531e09a03f158957016d55a6"
-SRC_URI[p4api.sha256sum] = "7d5455c9aa77aea548f3b52f579bf41fff034f0be1c283840b88be401f817792"
-SRC_URI[p4d.md5sum] = "690a404af3d916dc7c1cfa5a14a51171"
-SRC_URI[p4d.sha256sum] = "e41d44dbc5bd60f2140f0774945154105759b2dabf4c26c097cf754797274e39"
-SRC_URI[p4ftpd.md5sum] = "c099df674fb3c249cb1d1984f00d573e"
-SRC_URI[p4ftpd.sha256sum] = "9839564335035bc92041fafd93d05a811dc4243bb72269b3afe5ba823f016418"
-SRC_URI[p4p.md5sum] = "02de68f26da402689f661662217cd77f"
-SRC_URI[p4p.sha256sum] = "24d153529f669ff5fd9dc0d7a09bf7c6e658ee2d2496ab8025a2aaf12425907c"
-SRC_URI[p4web.md5sum] = "7bf9967719351c7a0758e20641978358"
-SRC_URI[p4web.sha256sum] = "70ebe07343989de042b9ef7866cfca540cfb28458e6c475d516c6916f4feb468"
diff --git a/recipes/p4/p4_05.2.bb b/recipes/p4/p4_05.2.bb
deleted file mode 100644
index ba60aa8a3f..0000000000
--- a/recipes/p4/p4_05.2.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-# p4 .bb build file
-# Copyright (C) 2006, Advanced Micro Devices, Inc. All Rights Reserved
-# Released under the MIT license (see /COPYING)
-
-require p4.inc
-
-SRC_URI[p4.md5sum] = "9bc57695db5885ffac0a352fc17a7f84"
-SRC_URI[p4.sha256sum] = "56dd1cb2364b8c8618f9019b641d17d6b307a5a797f3ac31c16a01247554e10c"
-SRC_URI[p4api.md5sum] = "7bdb4d9f59a231cc90a8e93709ec1595"
-SRC_URI[p4api.sha256sum] = "2e742bf3358f9b8b38f692f4222f96d6901a6faedca155942f58435cee385614"
-SRC_URI[p4d.md5sum] = "9a72849bb39cfe19da018271824a3ae1"
-SRC_URI[p4d.sha256sum] = "d67bc483b3cbccdcf32db6af21f02d20793a4c3ccc4b758c3a66374b410b73e8"
-SRC_URI[p4ftpd.md5sum] = "eb47a4e532fca795893f0c727ae59c84"
-SRC_URI[p4ftpd.sha256sum] = "bb5de57d0098e1c6f0d238cc4e658c64579b26fc1df58b9ce59c057fcb5b2f4c"
-SRC_URI[p4p.md5sum] = "eed70a3a6af7e59a44d614d4a8022ff0"
-SRC_URI[p4p.sha256sum] = "b4b6546d16f161a50337bf9f5dfaf3a4795a3c9b56931e7ee2ace8bcf1863d6e"
-SRC_URI[p4web.md5sum] = "e97b15e64be5a3773880f7d66e87a541"
-SRC_URI[p4web.sha256sum] = "ce72ef785a92aa8c71b6525e37da49bebab670a046b2ee0c023713f5aa497826"
diff --git a/recipes/perl/perl-5.10.1/abstract-sockets.diff b/recipes/perl/perl-5.10.1/abstract-sockets.diff
new file mode 100644
index 0000000000..954f9cbb3f
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/abstract-sockets.diff
@@ -0,0 +1,122 @@
+Author: Lubomir Rintel <lkundrak@v3.sk>
+Subject: Add support for Abstract namespace sockets.
+Bug-Debian: http://bugs.debian.org/490660
+Bug-Debian: http://bugs.debian.org/329291
+Origin: upstream, http://perl5.git.perl.org/perl.git/commit/99f13d4c3419e967e95c5ac6a3af61e9bb0fd3c0
+Origin: upstream, http://perl5.git.perl.org/perl.git/commit/89904c08923161afd23c629d5c2c7472a09c16bb
+
+trivially backported for 5.10.1 by Niko Tyni <ntyni@debian.org>
+
+
+---
+ ext/Socket/Socket.xs | 33 ++++++++++++++++++++++++---------
+ ext/Socket/t/Socket.t | 14 ++++++++++++--
+ 2 files changed, 36 insertions(+), 11 deletions(-)
+
+diff --git a/ext/Socket/Socket.xs b/ext/Socket/Socket.xs
+index 076297f..3522303 100644
+--- a/ext/Socket/Socket.xs
++++ b/ext/Socket/Socket.xs
+@@ -303,6 +303,7 @@ pack_sockaddr_un(pathname)
+ struct sockaddr_un sun_ad; /* fear using sun */
+ STRLEN len;
+ char * pathname_pv;
++ int addr_len;
+
+ Zero( &sun_ad, sizeof sun_ad, char );
+ sun_ad.sun_family = AF_UNIX;
+@@ -336,7 +337,17 @@ pack_sockaddr_un(pathname)
+ Copy( pathname_pv, sun_ad.sun_path, len, char );
+ # endif
+ if (0) not_here("dummy");
+- ST(0) = sv_2mortal(newSVpvn((char *)&sun_ad, sizeof sun_ad));
++ if (len > 1 && sun_ad.sun_path[0] == '\0') {
++ /* Linux-style abstract-namespace socket.
++ * The name is not a file name, but an array of arbitrary
++ * character, starting with \0 and possibly including \0s,
++ * therefore the length of the structure must denote the
++ * end of that character array */
++ addr_len = (void *)&sun_ad.sun_path - (void *)&sun_ad + len;
++ } else {
++ addr_len = sizeof sun_ad;
++ }
++ ST(0) = sv_2mortal(newSVpvn((char *)&sun_ad, addr_len));
+ #else
+ ST(0) = (SV *) not_here("pack_sockaddr_un");
+ #endif
+@@ -352,7 +363,7 @@ unpack_sockaddr_un(sun_sv)
+ struct sockaddr_un addr;
+ STRLEN sockaddrlen;
+ char * sun_ad = SvPVbyte(sun_sv,sockaddrlen);
+- char * e;
++ int addr_len;
+ # ifndef __linux__
+ /* On Linux sockaddrlen on sockets returned by accept, recvfrom,
+ getpeername and getsockname is not equal to sizeof(addr). */
+@@ -371,13 +382,17 @@ unpack_sockaddr_un(sun_sv)
+ addr.sun_family,
+ AF_UNIX);
+ }
+- e = (char*)addr.sun_path;
+- /* On Linux, the name of abstract unix domain sockets begins
+- * with a '\0', so allow this. */
+- while ((*e || (e == addr.sun_path && e[1] && sockaddrlen > 1))
+- && e < (char*)addr.sun_path + sizeof addr.sun_path)
+- ++e;
+- ST(0) = sv_2mortal(newSVpvn(addr.sun_path, e - (char*)addr.sun_path));
++
++ if (addr.sun_path[0] == '\0') {
++ /* Linux-style abstract socket address begins with a nul
++ * and can contain nuls. */
++ addr_len = (void *)&addr - (void *)&addr.sun_path + sockaddrlen;
++ } else {
++ for (addr_len = 0; addr.sun_path[addr_len]
++ && addr_len < sizeof addr.sun_path; addr_len++);
++ }
++
++ ST(0) = sv_2mortal(newSVpvn(addr.sun_path, addr_len));
+ #else
+ ST(0) = (SV *) not_here("unpack_sockaddr_un");
+ #endif
+diff --git a/ext/Socket/t/Socket.t b/ext/Socket/t/Socket.t
+index f707999..d1e7447 100755
+--- a/ext/Socket/t/Socket.t
++++ b/ext/Socket/t/Socket.t
+@@ -14,7 +14,7 @@ BEGIN {
+
+ use Socket qw(:all);
+
+-print "1..17\n";
++print "1..18\n";
+
+ $has_echo = $^O ne 'MSWin32';
+ $alarmed = 0;
+@@ -152,7 +152,7 @@ print (($@ =~ /^Bad arg length for Socket::sockaddr_family, length is 0, should
+
+ if ($^O eq 'linux') {
+ # see if we can handle abstract sockets
+- my $test_abstract_socket = chr(0) . '/tmp/test-perl-socket';
++ my $test_abstract_socket = chr(0) . '/org/perl/hello'. chr(0) . 'world';
+ my $addr = sockaddr_un ($test_abstract_socket);
+ my ($path) = sockaddr_un ($addr);
+ if ($test_abstract_socket eq $path) {
+@@ -163,7 +163,17 @@ if ($^O eq 'linux') {
+ print "# got <$path>\n";
+ print "not ok 17\n";
+ }
++
++ # see if we calculate the address structure length correctly
++ if (length ($test_abstract_socket) + 2 == length $addr) {
++ print "ok 18\n";
++ } else {
++ print "# got ".(length $addr)."\n";
++ print "not ok 18\n";
++ }
++
+ } else {
+ # doesn't have abstract socket support
+ print "ok 17 - skipped on this platform\n";
++ print "ok 18 - skipped on this platform\n";
+ }
+--
+tg: (daf8b46..) fixes/abstract-sockets (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/anon-tmpfile-dir.diff b/recipes/perl/perl-5.10.1/anon-tmpfile-dir.diff
new file mode 100644
index 0000000000..a010a6ac9a
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/anon-tmpfile-dir.diff
@@ -0,0 +1,102 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Honor TMPDIR when open()ing an anonymous temporary file
+Bug-Debian: http://bugs.debian.org/528544
+Bug: http://rt.perl.org/rt3/Public/Bug/Display.html?id=66452
+
+[perl #66452]
+
+As reported by Norbert Buchmuller <norbi@nix.hu>, opening an anonymous
+temporary file with the magical open($fh, '+>', undef) ignores TMPDIR.
+
+
+---
+ perlio.c | 20 ++++++++++++++++----
+ t/io/perlio.t | 15 ++++++++++++++-
+ 2 files changed, 30 insertions(+), 5 deletions(-)
+
+diff --git a/perlio.c b/perlio.c
+index 3803247..3ce579f 100644
+--- a/perlio.c
++++ b/perlio.c
+@@ -5167,18 +5167,30 @@ PerlIO_tmpfile(void)
+ f = PerlIO_fdopen(fd, "w+b");
+ #else /* WIN32 */
+ # if defined(HAS_MKSTEMP) && ! defined(VMS) && ! defined(OS2)
+- SV * const sv = newSVpvs("/tmp/PerlIO_XXXXXX");
++ int fd = -1;
++ char tempname[] = "/tmp/PerlIO_XXXXXX";
++ const char * const tmpdir = PL_tainting ? NULL : PerlEnv_getenv("TMPDIR");
++ SV * const sv = tmpdir && *tmpdir ? newSVpv(tmpdir, 0) : NULL;
+ /*
+ * I have no idea how portable mkstemp() is ... NI-S
+ */
+- const int fd = mkstemp(SvPVX(sv));
++ if (sv) {
++ /* if TMPDIR is set and not empty, we try that first */
++ sv_catpv(sv, tempname + 4);
++ fd = mkstemp(SvPVX(sv));
++ }
++ if (fd < 0) {
++ /* else we try /tmp */
++ fd = mkstemp(tempname);
++ }
+ if (fd >= 0) {
+ f = PerlIO_fdopen(fd, "w+");
+ if (f)
+ PerlIOBase(f)->flags |= PERLIO_F_TEMP;
+- PerlLIO_unlink(SvPVX_const(sv));
++ PerlLIO_unlink(sv ? SvPVX_const(sv) : tempname);
+ }
+- SvREFCNT_dec(sv);
++ if (sv)
++ SvREFCNT_dec(sv);
+ # else /* !HAS_MKSTEMP, fallback to stdio tmpfile(). */
+ FILE * const stdio = PerlSIO_tmpfile();
+
+diff --git a/t/io/perlio.t b/t/io/perlio.t
+index c145945..c1eebec 100755
+--- a/t/io/perlio.t
++++ b/t/io/perlio.t
+@@ -8,13 +8,14 @@ BEGIN {
+ }
+ }
+
+-use Test::More tests => 37;
++use Test::More tests => 39;
+
+ use_ok('PerlIO');
+
+ my $txt = "txt$$";
+ my $bin = "bin$$";
+ my $utf = "utf$$";
++my $nonexistent = "nex$$";
+
+ my $txtfh;
+ my $binfh;
+@@ -89,6 +90,17 @@ ok(close($utffh));
+ # report after STDOUT is restored
+ ok($status, ' re-open STDOUT');
+ close OLDOUT;
++
++ SKIP: {
++ skip("TMPDIR not honored on this platform", 2)
++ if !$Config{d_mkstemp}
++ || $^O eq 'VMS' || $^O eq 'MSwin32' || $^O eq 'os2';
++ local $ENV{TMPDIR} = $nonexistent;
++ ok( open(my $x,"+<",undef), 'TMPDIR honored by magic temp file via 3 arg open with undef - works if TMPDIR points to a non-existent dir');
++
++ mkdir $ENV{TMPDIR};
++ ok(open(my $x,"+<",undef), 'TMPDIR honored by magic temp file via 3 arg open with undef - works if TMPDIR points to an existent dir');
++ }
+ }
+
+ # in-memory open
+@@ -136,5 +148,6 @@ END {
+ 1 while unlink $txt;
+ 1 while unlink $bin;
+ 1 while unlink $utf;
++ rmdir $nonexistent;
+ }
+
+--
+tg: (daf8b46..) fixes/anon-tmpfile-dir (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/archive-tar-instance-error.diff b/recipes/perl/perl-5.10.1/archive-tar-instance-error.diff
new file mode 100644
index 0000000000..23c45ef3b7
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/archive-tar-instance-error.diff
@@ -0,0 +1,109 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Separate Archive::Tar instance error strings from each other
+Bug-Debian: http://bugs.debian.org/539355
+Bug: http://rt.cpan.org/Public/Bug/Display.html?id=48879
+
+Included upstream in Archive-Tar-1.54.
+
+
+---
+ lib/Archive/Tar.pm | 17 +++++++++++++++--
+ lib/Archive/Tar/t/06_error.t | 39 +++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 54 insertions(+), 2 deletions(-)
+
+diff --git a/lib/Archive/Tar.pm b/lib/Archive/Tar.pm
+index 022a172..bc97c0e 100644
+--- a/lib/Archive/Tar.pm
++++ b/lib/Archive/Tar.pm
+@@ -117,7 +117,7 @@ sub new {
+
+ ### copying $tmpl here since a shallow copy makes it use the
+ ### same aref, causing for files to remain in memory always.
+- my $obj = bless { _data => [ ], _file => 'Unknown' }, $class;
++ my $obj = bless { _data => [ ], _file => 'Unknown', _error => '' }, $class;
+
+ if (@_) {
+ unless ( $obj->read( @_ ) ) {
+@@ -1445,6 +1445,10 @@ method call instead.
+ my $self = shift;
+ my $msg = $error = shift;
+ $longmess = Carp::longmess($error);
++ if (ref $self) {
++ $self->{_error} = $error;
++ $self->{_longmess} = $longmess;
++ }
+
+ ### set Archive::Tar::WARN to 0 to disable printing
+ ### of errors
+@@ -1457,7 +1461,11 @@ method call instead.
+
+ sub error {
+ my $self = shift;
+- return shift() ? $longmess : $error;
++ if (ref $self) {
++ return shift() ? $self->{_longmess} : $self->{_error};
++ } else {
++ return shift() ? $longmess : $error;
++ }
+ }
+ }
+
+@@ -1817,6 +1825,11 @@ use is very much discouraged. Use the C<error()> method instead:
+
+ warn $tar->error unless $tar->extract;
+
++Note that in older versions of this module, the C<error()> method
++would return an effectively global value even when called an instance
++method as above. This has since been fixed, and multiple instances of
++C<Archive::Tar> now have separate error strings.
++
+ =head2 $Archive::Tar::INSECURE_EXTRACT_MODE
+
+ This variable indicates whether C<Archive::Tar> should allow
+diff --git a/lib/Archive/Tar/t/06_error.t b/lib/Archive/Tar/t/06_error.t
+new file mode 100644
+index 0000000..5c728bc
+--- /dev/null
++++ b/lib/Archive/Tar/t/06_error.t
+@@ -0,0 +1,39 @@
++BEGIN {
++ if( $ENV{PERL_CORE} ) {
++ chdir '../lib/Archive/Tar' if -d '../lib/Archive/Tar';
++ }
++ use lib '../../..';
++}
++
++BEGIN { chdir 't' if -d 't' }
++
++use Test::More 'no_plan';
++use strict;
++use lib '../lib';
++
++use Archive::Tar;
++use File::Spec;
++
++$Archive::Tar::WARN = 0;
++
++my $t1 = Archive::Tar->new;
++my $t2 = Archive::Tar->new;
++
++is($Archive::Tar::error, "", "global error string is empty");
++is($t1->error, "", "error string of object 1 is empty");
++is($t2->error, "", "error string of object 2 is empty");
++
++ok(!$t1->read(), "can't read without a file");
++
++isnt($t1->error, "", "error string of object 1 is set");
++is($Archive::Tar::error, $t1->error, "global error string equals that of object 1");
++is($Archive::Tar::error, Archive::Tar->error, "the class error method returns the global error");
++is($t2->error, "", "error string of object 2 is still empty");
++
++my $src = File::Spec->catfile( qw[src short b] );
++ok(!$t2->read($src), "error when opening $src");
++
++isnt($t2->error, "", "error string of object 1 is set");
++isnt($t2->error, $t1->error, "error strings of objects 1 and 2 differ");
++is($Archive::Tar::error, $t2->error, "global error string equals that of object 2");
++is($Archive::Tar::error, Archive::Tar->error, "the class error method returns the global error");
+--
+tg: (daf8b46..) fixes/archive-tar-instance-error (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/arm-alignment.diff b/recipes/perl/perl-5.10.1/arm-alignment.diff
new file mode 100644
index 0000000000..28038b7115
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/arm-alignment.diff
@@ -0,0 +1,39 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Prevent gcc from optimizing the alignment test away on armel
+Bug-Debian: http://bugs.debian.org/289884
+Author: Marc Pignat <marc.pignat@hevs.ch>
+Origin: upstream, http://perl5.git.perl.org/perl.git/commit/f1c7503b9028d20741c9a01345ba8704998ea381
+
+As hunted down by Marc Pignat, gcc optimizations make the check for
+u32align (U32_ALIGNMENT_REQUIRED) a no-op on armel, breaking the MD5
+module.
+
+---
+ Configure | 5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/Configure b/Configure
+index 01fa3c0..f39b2f9 100755
+--- a/Configure
++++ b/Configure
+@@ -18533,6 +18533,7 @@ $cat <<EOM
+
+ Checking to see whether you can access character data unalignedly...
+ EOM
++: volatile so that the compiler does not optimize the test away
+ case "$d_u32align" in
+ '') $cat >try.c <<EOCP
+ #include <stdio.h>
+@@ -18549,8 +18550,8 @@ $signal_t bletch(int s) { exit(4); }
+ #endif
+ int main() {
+ #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
+- U8 buf[8];
+- U32 *up;
++ $volatile U8 buf[8];
++ $volatile U32 *up;
+ int i;
+
+ if (sizeof(U32) != 4) {
+--
+tg: (daf8b46..) fixes/arm-alignment (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/arm_thread_stress_timeout.diff b/recipes/perl/perl-5.10.1/arm_thread_stress_timeout.diff
new file mode 100644
index 0000000000..785ac46361
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/arm_thread_stress_timeout.diff
@@ -0,0 +1,23 @@
+Subject: Raise the timeout of ext/threads/shared/t/stress.t to accommodate slower build hosts
+Bug-Debian: http://bugs.debian.org/501970
+
+
+---
+ ext/threads-shared/t/stress.t | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/ext/threads-shared/t/stress.t b/ext/threads-shared/t/stress.t
+index e36ab0a..33aa3b8 100755
+--- a/ext/threads-shared/t/stress.t
++++ b/ext/threads-shared/t/stress.t
+@@ -34,7 +34,7 @@ use threads::shared;
+ {
+ my $cnt = 50;
+
+- my $TIMEOUT = 60;
++ my $TIMEOUT = 150;
+
+ my $mutex = 1;
+ share($mutex);
+--
+tg: (daf8b46..) debian/arm_thread_stress_timeout (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/assorted_docs.diff b/recipes/perl/perl-5.10.1/assorted_docs.diff
new file mode 100644
index 0000000000..49c509ff4e
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/assorted_docs.diff
@@ -0,0 +1,25 @@
+Subject: Math::BigInt::CalcEmu documentation grammar fix
+Bug-Debian: http://bugs.debian.org/443733
+Origin: upstream, http://perl5.git.perl.org/perl.git/commit/384f06ae49854089e0cf13ffe34560627ea86f8a
+
+This is fixed in blead by change 33129 but was skipped for maint-5.10.
+
+---
+ lib/Math/BigInt/CalcEmu.pm | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/lib/Math/BigInt/CalcEmu.pm b/lib/Math/BigInt/CalcEmu.pm
+index 79efac6..5810f5d 100644
+--- a/lib/Math/BigInt/CalcEmu.pm
++++ b/lib/Math/BigInt/CalcEmu.pm
+@@ -295,7 +295,7 @@ Math::BigInt::CalcEmu - Emulate low-level math with BigInt code
+ =head1 DESCRIPTION
+
+ Contains routines that emulate low-level math functions in BigInt, e.g.
+-optional routines the low-level math package does not provide on it's own.
++optional routines the low-level math package does not provide on its own.
+
+ Will be loaded on demand and called automatically by BigInt.
+
+--
+tg: (daf8b46..) fixes/assorted_docs (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/autodie-flock.diff b/recipes/perl/perl-5.10.1/autodie-flock.diff
new file mode 100644
index 0000000000..19ea3aae67
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/autodie-flock.diff
@@ -0,0 +1,98 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Allow for flock returning EAGAIN instead of EWOULDBLOCK on linux/parisc
+Bug-Debian: http://bugs.debian.org/543731
+Origin: upstream, http://github.com/pfenwick/autodie/commit/037738e11a6097734b0e1dabdd77b92e5fe35219
+
+
+---
+ lib/Fatal.pm | 14 +++++++++++++-
+ lib/autodie/t/flock.t | 12 ++++++++++--
+ 2 files changed, 23 insertions(+), 3 deletions(-)
+
+diff --git a/lib/Fatal.pm b/lib/Fatal.pm
+old mode 100644
+new mode 100755
+index 18e71ed..c17a257
+--- a/lib/Fatal.pm
++++ b/lib/Fatal.pm
+@@ -5,6 +5,7 @@ use Carp;
+ use strict;
+ use warnings;
+ use Tie::RefHash; # To cache subroutine refs
++use Config;
+
+ use constant PERL510 => ( $] >= 5.010 );
+
+@@ -52,6 +53,10 @@ our %_EWOULDBLOCK = (
+ MSWin32 => 33,
+ );
+
++# the linux parisc port has separate EAGAIN and EWOULDBLOCK,
++# and the kernel returns EAGAIN
++my $try_EAGAIN = ($^O eq 'linux' and $Config{archname} =~ /hppa|parisc/) ? 1 : 0;
++
+ # We have some tags that can be passed in for use with import.
+ # These are all assumed to be CORE::
+
+@@ -720,6 +725,11 @@ sub _one_invocation {
+ my $EWOULDBLOCK = eval { POSIX::EWOULDBLOCK(); }
+ || $_EWOULDBLOCK{$^O}
+ || _autocroak("Internal error - can't overload flock - EWOULDBLOCK not defined on this system.");
++ my $EAGAIN = $EWOULDBLOCK;
++ if ($try_EAGAIN) {
++ $EAGAIN = eval { POSIX::EAGAIN(); }
++ || _autocroak("Internal error - can't overload flock - EAGAIN not defined on this system.");
++ }
+
+ require Fcntl; # For Fcntl::LOCK_NB
+
+@@ -735,7 +745,9 @@ sub _one_invocation {
+ # If we failed, but we're using LOCK_NB and
+ # returned EWOULDBLOCK, it's not a real error.
+
+- if (\$_[1] & Fcntl::LOCK_NB() and \$! == $EWOULDBLOCK ) {
++ if (\$_[1] & Fcntl::LOCK_NB() and
++ (\$! == $EWOULDBLOCK or
++ ($try_EAGAIN and \$! == $EAGAIN ))) {
+ return \$retval;
+ }
+
+diff --git a/lib/autodie/t/flock.t b/lib/autodie/t/flock.t
+index a7550ba..6421a56 100755
+--- a/lib/autodie/t/flock.t
++++ b/lib/autodie/t/flock.t
+@@ -2,7 +2,8 @@
+ use strict;
+ use Test::More;
+ use Fcntl qw(:flock);
+-use POSIX qw(EWOULDBLOCK);
++use POSIX qw(EWOULDBLOCK EAGAIN);
++use Config;
+
+ require Fatal;
+
+@@ -10,6 +11,9 @@ my $EWOULDBLOCK = eval { EWOULDBLOCK() }
+ || $Fatal::_EWOULDBLOCK{$^O}
+ || plan skip_all => "EWOULDBLOCK not defined on this system";
+
++my $try_EAGAIN = ($^O eq 'linux' and $Config{archname} =~ /hppa|parisc/) ? 1 : 0;
++my $EAGAIN = eval { EAGAIN() };
++
+ my ($self_fh, $self_fh2);
+
+ eval {
+@@ -55,7 +59,11 @@ eval {
+ $return = flock($self_fh2, LOCK_EX | LOCK_NB);
+ };
+
+-is($!+0, $EWOULDBLOCK, "Double-flocking should be EWOULDBLOCK");
++if (!$try_EAGAIN) {
++ is($!+0, $EWOULDBLOCK, "Double-flocking should be EWOULDBLOCK");
++} else {
++ ok($!+0 == $EWOULDBLOCK || $!+0 == $EAGAIN, "Double-flocking should be EWOULDBLOCK or EAGAIN");
++}
+ ok(!$return, "flocking a file twice should fail");
+ is($@, "", "Non-blocking flock should not fail on EWOULDBLOCK");
+
+--
+tg: (daf8b46..) fixes/autodie-flock (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/cpan_config_path.diff b/recipes/perl/perl-5.10.1/cpan_config_path.diff
new file mode 100644
index 0000000000..c4f161977c
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/cpan_config_path.diff
@@ -0,0 +1,22 @@
+Subject: Set location of CPAN::Config to /etc/perl as /usr may not be writable.
+
+
+---
+ lib/CPAN/HandleConfig.pm | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/lib/CPAN/HandleConfig.pm b/lib/CPAN/HandleConfig.pm
+index 903b414..ba7dae8 100644
+--- a/lib/CPAN/HandleConfig.pm
++++ b/lib/CPAN/HandleConfig.pm
+@@ -541,7 +541,7 @@ sub load {
+ $configpm = $INC{"CPAN/MyConfig.pm"};
+ $redo++;
+ } else {
+- my($path_to_cpan) = File::Basename::dirname($INC{"CPAN.pm"});
++ my($path_to_cpan) = '/etc/perl';
+ my($configpmdir) = File::Spec->catdir($path_to_cpan,"CPAN");
+ my($configpmtest) = File::Spec->catfile($configpmdir,"Config.pm");
+ my $inc_key;
+--
+tg: (daf8b46..) debian/cpan_config_path (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/cpan_definstalldirs.diff b/recipes/perl/perl-5.10.1/cpan_definstalldirs.diff
new file mode 100644
index 0000000000..1b306aba12
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/cpan_definstalldirs.diff
@@ -0,0 +1,35 @@
+Subject: Provide a sensible INSTALLDIRS default for modules installed from CPAN.
+
+Some modules which are included in core set INSTALLDIRS => 'perl'
+explicitly in Makefile.PL or Build.PL. This makes sense for the normal @INC
+ordering, but not ours.
+
+
+---
+ lib/CPAN/FirstTime.pm | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/CPAN/FirstTime.pm b/lib/CPAN/FirstTime.pm
+index 50bebc3..0136fef 100644
+--- a/lib/CPAN/FirstTime.pm
++++ b/lib/CPAN/FirstTime.pm
+@@ -952,7 +952,7 @@ sub init {
+ my_prompt_loop(prefer_installer => 'MB', $matcher, 'MB|EUMM|RAND');
+
+ if (!$matcher or 'makepl_arg make_arg' =~ /$matcher/) {
+- my_dflt_prompt(makepl_arg => "", $matcher);
++ my_dflt_prompt(makepl_arg => "INSTALLDIRS=site", $matcher);
+ my_dflt_prompt(make_arg => "", $matcher);
+ if ( $CPAN::Config->{makepl_arg} =~ /LIBS=|INC=/ ) {
+ $CPAN::Frontend->mywarn(
+@@ -974,7 +974,7 @@ sub init {
+ my_dflt_prompt(make_install_arg => $CPAN::Config->{make_arg} || "",
+ $matcher);
+
+- my_dflt_prompt(mbuildpl_arg => "", $matcher);
++ my_dflt_prompt(mbuildpl_arg => "--installdirs site", $matcher);
+ my_dflt_prompt(mbuild_arg => "", $matcher);
+
+ if (exists $CPAN::HandleConfig::keys{mbuild_install_build_command}
+--
+tg: (daf8b46..) debian/cpan_definstalldirs (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/cpanplus_config_path.diff b/recipes/perl/perl-5.10.1/cpanplus_config_path.diff
new file mode 100644
index 0000000000..321ac451d2
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/cpanplus_config_path.diff
@@ -0,0 +1,43 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Save local versions of CPANPLUS::Config::System into /etc/perl.
+
+This is a configuration file and needs to go in /etc by policy.
+Besides, /usr may not even be writable.
+
+This mirrors the Debian setup of CPAN.pm in debian/cpan_config_path.
+
+See #533707.
+
+---
+ lib/CPANPLUS/Configure.pm | 1 +
+ lib/CPANPLUS/Internals/Constants.pm | 3 +++
+ 2 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/lib/CPANPLUS/Configure.pm b/lib/CPANPLUS/Configure.pm
+index 2d249e5..bbed1b8 100644
+--- a/lib/CPANPLUS/Configure.pm
++++ b/lib/CPANPLUS/Configure.pm
+@@ -276,6 +276,7 @@ Saves the configuration to the package name you provided.
+ If this package is not C<CPANPLUS::Config::System>, it will
+ be saved in your C<.cpanplus> directory, otherwise it will
+ be attempted to be saved in the system wide directory.
++(On Debian systems, this system wide directory is /etc/perl.)
+
+ If no argument is provided, it will default to your personal
+ config.
+diff --git a/lib/CPANPLUS/Internals/Constants.pm b/lib/CPANPLUS/Internals/Constants.pm
+index 1d05c98..7a5cef8 100644
+--- a/lib/CPANPLUS/Internals/Constants.pm
++++ b/lib/CPANPLUS/Internals/Constants.pm
+@@ -194,6 +194,9 @@ use constant CONFIG_USER_FILE => sub {
+ ) . '.pm';
+ };
+ use constant CONFIG_SYSTEM_FILE => sub {
++ # Debian-specific shortcut
++ return '/etc/perl/CPANPLUS/Config/System.pm';
++
+ require CPANPLUS::Internals;
+ require File::Basename;
+ my $dir = File::Basename::dirname(
+--
+tg: (daf8b46..) debian/cpanplus_config_path (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/cpanplus_definstalldirs.diff b/recipes/perl/perl-5.10.1/cpanplus_definstalldirs.diff
new file mode 100644
index 0000000000..eeeff4347f
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/cpanplus_definstalldirs.diff
@@ -0,0 +1,52 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Configure CPANPLUS to use the site directories by default.
+Closes: 533707
+
+The core modules usually default to INSTALLDIRS=perl (ExtUtils::MakeMaker)
+or installdirs=core (Module::Build), so we need to explicitly ask for
+the site destination to get upgraded versions into /usr/local.
+
+See also the sister patch, debian/cpan_definstalldirs .
+
+---
+ lib/CPANPLUS/Config/System.pm | 30 ++++++++++++++++++++++++++++++
+ 1 files changed, 30 insertions(+), 0 deletions(-)
+
+diff --git a/lib/CPANPLUS/Config/System.pm b/lib/CPANPLUS/Config/System.pm
+new file mode 100644
+index 0000000..5e6e11e
+--- /dev/null
++++ b/lib/CPANPLUS/Config/System.pm
+@@ -0,0 +1,30 @@
++### minimal pod, so you can find it with perldoc -l, etc
++=pod
++
++=head1 NAME
++
++CPANPLUS::Config::System
++
++=head1 DESCRIPTION
++
++This is a CPANPLUS configuration file that sets appropriate default
++settings on Debian systems.
++
++The only preconfigured settings are C<makemakerflags> (set to
++C<INSTALLDIRS=site>) and C<buildflags> (set to C<--installdirs site>).
++
++These settings will not have any effect if
++C</etc/perl/CPANPLUS/Config/System.pm> is present.
++
++=cut
++
++
++package CPANPLUS::Config::System;
++
++sub setup {
++ my $conf = shift;
++ $conf->set_conf( makemakerflags => 'INSTALLDIRS=site' );
++ $conf->set_conf( buildflags => '--installdirs site' );
++}
++
++1;
+--
+tg: (daf8b46..) debian/cpanplus_definstalldirs (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/crash-on-undefined-destroy.diff b/recipes/perl/perl-5.10.1/crash-on-undefined-destroy.diff
new file mode 100644
index 0000000000..6991140cd1
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/crash-on-undefined-destroy.diff
@@ -0,0 +1,58 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Fix a NULL pointer dereference when looking for a DESTROY method
+Bug-Debian: http://bugs.debian.org/564074
+Bug: http://rt.perl.org/rt3/Public/Bug/Display.html?id=71952
+Origin: upstream, http://perl5.git.perl.org/perl.git/commit/1f15e670edb515b744e9021b4a42a7955da83093
+
+The empty DESTROY method optimization introduced by upstream commit
+fbb3ee5af3d would crash the interpreter if a DESTROY method was declared
+but not actually defined.
+
+
+---
+ sv.c | 3 ++-
+ t/op/method.t | 11 ++++++++++-
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/sv.c b/sv.c
+index d2fcb0c..ec1ac82 100644
+--- a/sv.c
++++ b/sv.c
+@@ -5419,7 +5419,8 @@ Perl_sv_clear(pTHX_ register SV *sv)
+ if (destructor
+ /* Don't bother calling an empty destructor */
+ && (CvISXSUB(destructor)
+- || CvSTART(destructor)->op_next->op_type != OP_LEAVESUB))
++ || (CvSTART(destructor)
++ && (CvSTART(destructor)->op_next->op_type != OP_LEAVESUB))))
+ {
+ SV* const tmpref = newRV(sv);
+ SvREADONLY_on(tmpref); /* DESTROY() could be naughty */
+diff --git a/t/op/method.t b/t/op/method.t
+index 46c4642..8e91c48 100755
+--- a/t/op/method.t
++++ b/t/op/method.t
+@@ -10,7 +10,7 @@ BEGIN {
+ require "test.pl";
+ }
+
+-print "1..78\n";
++print "1..79\n";
+
+ @A::ISA = 'B';
+ @B::ISA = 'C';
+@@ -293,3 +293,12 @@ EOT
+ "check if UNIVERSAL::AUTOLOAD works",
+ );
+ }
++{
++ fresh_perl_is(<<'EOT',
++sub M::DESTROY; bless {}, "M" ; print "survived\n";
++EOT
++ "survived",
++ {},
++ "no crash with a declared but missing DESTROY method"
++ );
++}
+--
+tg: (daf8b46..) fixes/crash-on-undefined-destroy (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/db_file_ver.diff b/recipes/perl/perl-5.10.1/db_file_ver.diff
new file mode 100644
index 0000000000..921942901c
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/db_file_ver.diff
@@ -0,0 +1,32 @@
+Subject: Remove overly restrictive DB_File version check.
+Bug-Debian: http://bugs.debian.org/340047
+
+Package dependencies ensure the correct library is linked at run-time.
+
+
+---
+ ext/DB_File/version.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/ext/DB_File/version.c b/ext/DB_File/version.c
+index 47158d3..67ccdff 100644
+--- a/ext/DB_File/version.c
++++ b/ext/DB_File/version.c
+@@ -48,6 +48,7 @@ __getBerkeleyDBInfo()
+
+ (void)db_version(&Major, &Minor, &Patch) ;
+
++#ifndef DEBIAN
+ /* Check that the versions of db.h and libdb.a are the same */
+ if (Major != DB_VERSION_MAJOR || Minor != DB_VERSION_MINOR )
+ /* || Patch != DB_VERSION_PATCH) */
+@@ -55,6 +56,7 @@ __getBerkeleyDBInfo()
+ croak("\nDB_File was build with libdb version %d.%d.%d,\nbut you are attempting to run it with libdb version %d.%d.%d\n",
+ DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
+ Major, Minor, Patch) ;
++#endif /* DEBIAN */
+
+ /* check that libdb is recent enough -- we need 2.3.4 or greater */
+ if (Major == 2 && (Minor < 3 || (Minor == 3 && Patch < 4)))
+--
+tg: (daf8b46..) debian/db_file_ver (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/devel-ppport-ia64-optim.diff b/recipes/perl/perl-5.10.1/devel-ppport-ia64-optim.diff
new file mode 100644
index 0000000000..98bdc109bf
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/devel-ppport-ia64-optim.diff
@@ -0,0 +1,32 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Work around an ICE on ia64
+Closes: 548943
+
+Temporarily work around an internal compiler error in Devel::PPPort
+on ia64+gcc-4.3.
+
+
+---
+ ext/Devel-PPPort/Makefile.PL | 7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/ext/Devel-PPPort/Makefile.PL b/ext/Devel-PPPort/Makefile.PL
+index 67eebc1..f1ef7a2 100644
+--- a/ext/Devel-PPPort/Makefile.PL
++++ b/ext/Devel-PPPort/Makefile.PL
+@@ -75,6 +75,13 @@ sub configure
+ push @moreopts, INSTALLDIRS => ($] >= 5.007003 ? 'perl' : 'site');
+ }
+
++
++ # temporary Debian hack, see http://bugs.debian.org/548943
++ require Config;
++ if ($Config::Config{archname} =~ /^ia64/) {
++ push @moreopts, OPTIMIZE => '-g -O0';
++ }
++
+ if ($opt{'apicheck'}) {
+ $PL_FILES{'apicheck_c.PL'} = 'apicheck.c';
+ push @C_FILES, qw{ apicheck.c };
+--
+tg: (daf8b46..) debian/devel-ppport-ia64-optim (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/disable-zlib-bundling.diff b/recipes/perl/perl-5.10.1/disable-zlib-bundling.diff
new file mode 100644
index 0000000000..0a3e6d1a22
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/disable-zlib-bundling.diff
@@ -0,0 +1,29 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Disable zlib bundling in Compress::Raw::Zlib
+
+Compress::Raw::Zlib statically links its bundled version of zlib
+by default, but we use the system library instead.
+
+---
+ ext/Compress-Raw-Zlib/config.in | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/ext/Compress-Raw-Zlib/config.in b/ext/Compress-Raw-Zlib/config.in
+index c56cc03..2c6659b 100644
+--- a/ext/Compress-Raw-Zlib/config.in
++++ b/ext/Compress-Raw-Zlib/config.in
+@@ -16,9 +16,9 @@
+ # Setting the Gzip OS Code
+ #
+
+-BUILD_ZLIB = True
+-INCLUDE = ./zlib-src
+-LIB = ./zlib-src
++BUILD_ZLIB = False
++INCLUDE = /usr/include
++LIB = /usr/lib
+
+ OLD_ZLIB = False
+ GZIP_OS_CODE = AUTO_DETECT
+--
+tg: (daf8b46..) debian/disable-zlib-bundling (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/doc_info.diff b/recipes/perl/perl-5.10.1/doc_info.diff
new file mode 100644
index 0000000000..14d872ca55
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/doc_info.diff
@@ -0,0 +1,55 @@
+Subject: Replace generic man(1) instructions with Debian-specific information.
+
+Indicate that the user needs to install the perl-doc package.
+
+
+---
+ pod/perl.pod | 30 +++++++-----------------------
+ 1 files changed, 7 insertions(+), 23 deletions(-)
+
+diff --git a/pod/perl.pod b/pod/perl.pod
+index 939c683..134bb77 100644
+--- a/pod/perl.pod
++++ b/pod/perl.pod
+@@ -227,32 +227,16 @@ For ease of access, the Perl manual has been split up into several sections.
+ perlwin32 Perl notes for Windows
+
+
+-By default, the manpages listed above are installed in the
+-F</usr/local/man/> directory.
++On Debian systems, you need to install the B<perl-doc> package which
++contains the majority of the standard Perl documentation and the
++F<perldoc> program.
+
+-Extensive additional documentation for Perl modules is available. The
+-default configuration for perl will place this additional documentation
+-in the F</usr/local/lib/perl5/man> directory (or else in the F<man>
+-subdirectory of the Perl library directory). Some of this additional
+-documentation is distributed standard with Perl, but you'll also find
+-documentation for third-party modules there.
++Extensive additional documentation for Perl modules is available, both
++those distributed with Perl and third-party modules which are packaged
++or locally installed.
+
+ You should be able to view Perl's documentation with your man(1)
+-program by including the proper directories in the appropriate start-up
+-files, or in the MANPATH environment variable. To find out where the
+-configuration has installed the manpages, type:
+-
+- perl -V:man.dir
+-
+-If the directories have a common stem, such as F</usr/local/man/man1>
+-and F</usr/local/man/man3>, you need only to add that stem
+-(F</usr/local/man>) to your man(1) configuration files or your MANPATH
+-environment variable. If they do not share a stem, you'll have to add
+-both stems.
+-
+-If that doesn't work for some reason, you can still use the
+-supplied F<perldoc> script to view module information. You might
+-also look into getting a replacement man program.
++program or perldoc(1).
+
+ If something strange has gone wrong with your program and you're not
+ sure where you should look for help, try the B<-w> switch first. It
+--
+tg: (daf8b46..) debian/doc_info (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/enc2xs_inc.diff b/recipes/perl/perl-5.10.1/enc2xs_inc.diff
new file mode 100644
index 0000000000..57cee24f39
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/enc2xs_inc.diff
@@ -0,0 +1,49 @@
+Subject: Tweak enc2xs to follow symlinks and ignore missing @INC directories.
+Bug-Debian: http://bugs.debian.org/290336
+
+- ignore missing directories,
+- follow symlinks (/usr/share/perl/5.8 -> 5.8.4).
+
+
+---
+ ext/Encode/bin/enc2xs | 8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/ext/Encode/bin/enc2xs b/ext/Encode/bin/enc2xs
+index 233ca54..502baec 100644
+--- a/ext/Encode/bin/enc2xs
++++ b/ext/Encode/bin/enc2xs
+@@ -924,11 +924,11 @@ use vars qw(
+ sub find_e2x{
+ eval { require File::Find; };
+ my (@inc, %e2x_dir);
+- for my $inc (@INC){
++ for my $inc (grep -d, @INC){
+ push @inc, $inc unless $inc eq '.'; #skip current dir
+ }
+ File::Find::find(
+- sub {
++ { wanted => sub {
+ my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
+ $atime,$mtime,$ctime,$blksize,$blocks)
+ = lstat($_) or return;
+@@ -938,7 +938,7 @@ sub find_e2x{
+ $e2x_dir{$File::Find::dir} ||= $mtime;
+ }
+ return;
+- }, @inc);
++ }, follow => 1}, @inc);
+ warn join("\n", keys %e2x_dir), "\n";
+ for my $d (sort {$e2x_dir{$a} <=> $e2x_dir{$b}} keys %e2x_dir){
+ $_E2X = $d;
+@@ -1005,7 +1005,7 @@ sub make_configlocal_pm {
+ $LocalMod{$enc} ||= $mod;
+ }
+ };
+- File::Find::find({wanted => $wanted}, @INC);
++ File::Find::find({wanted => $wanted, follow => 1}, grep -d, @INC);
+ $_ModLines = "";
+ for my $enc ( sort keys %LocalMod ) {
+ $_ModLines .=
+--
+tg: (daf8b46..) debian/enc2xs_inc (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/errno_ver.diff b/recipes/perl/perl-5.10.1/errno_ver.diff
new file mode 100644
index 0000000000..49c4901c63
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/errno_ver.diff
@@ -0,0 +1,32 @@
+Subject: Remove Errno version check due to upgrade problems with long-running processes.
+Bug-Debian: http://bugs.debian.org/343351
+
+Remove version check which can cause problems for long running
+processes embedding perl when upgrading to a newer version,
+compatible, but built on a different machine.
+
+
+---
+ ext/Errno/Errno_pm.PL | 5 -----
+ 1 files changed, 0 insertions(+), 5 deletions(-)
+
+diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL
+index 124b8fc..b554cd4 100644
+--- a/ext/Errno/Errno_pm.PL
++++ b/ext/Errno/Errno_pm.PL
+@@ -341,13 +341,8 @@ EOF
+ package Errno;
+ our (\@EXPORT_OK,\%EXPORT_TAGS,\@ISA,\$VERSION,\%errno,\$AUTOLOAD);
+ use Exporter ();
+-use Config;
+ use strict;
+
+-"\$Config{'archname'}-\$Config{'osvers'}" eq
+-"$Config{'archname'}-$Config{'osvers'}" or
+- die "Errno architecture ($Config{'archname'}-$Config{'osvers'}) does not match executable architecture (\$Config{'archname'}-\$Config{'osvers'})";
+-
+ \$VERSION = "$VERSION";
+ \$VERSION = eval \$VERSION;
+ \@ISA = qw(Exporter);
+--
+tg: (daf8b46..) debian/errno_ver (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/extutils_hacks.diff b/recipes/perl/perl-5.10.1/extutils_hacks.diff
new file mode 100644
index 0000000000..94120cb1c8
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/extutils_hacks.diff
@@ -0,0 +1,313 @@
+Subject: Various debian-specific ExtUtils changes
+
+ * Respect umask during installation, and set as appropriate for each of
+ perl, vendor and site (policy requires group writable site dirs).
+
+ * Don't install .packlist or perllocal.pod for perl or vendor.
+ * Fiddle with *PREFIX and variables written to the makefile so that
+ install directories may be changed when make is run by passing
+ PREFIX= to the "make install" command (used when packaging
+ modules).
+
+ * Set location of libperl.a to /usr/lib.
+ * Note that libperl-dev package is required for embedded linking.
+ * Change install target dependencies to facilitate parallel makes.
+
+
+---
+ lib/ExtUtils/Embed.pm | 3 ++
+ lib/ExtUtils/Install.pm | 18 ++++++++--------
+ lib/ExtUtils/MM_Any.pm | 12 +++++-----
+ lib/ExtUtils/MM_Unix.pm | 44 +++++++++--------------------------------
+ lib/ExtUtils/t/INST.t | 4 +--
+ lib/ExtUtils/t/INST_PREFIX.t | 10 ++++----
+ 6 files changed, 34 insertions(+), 57 deletions(-)
+
+diff --git a/lib/ExtUtils/Embed.pm b/lib/ExtUtils/Embed.pm
+index 24ae909..12d421d 100644
+--- a/lib/ExtUtils/Embed.pm
++++ b/lib/ExtUtils/Embed.pm
+@@ -305,6 +305,9 @@ and extensions in your C/C++ applications.
+ Typically, an application B<Makefile> will invoke ExtUtils::Embed
+ functions while building your application.
+
++Note that on Debian systems the B<libperl-dev> package is required for
++compiling applications which embed an interpreter.
++
+ =head1 @EXPORT
+
+ ExtUtils::Embed exports the following functions:
+diff --git a/lib/ExtUtils/Install.pm b/lib/ExtUtils/Install.pm
+index c886c69..7a0c24e 100644
+--- a/lib/ExtUtils/Install.pm
++++ b/lib/ExtUtils/Install.pm
+@@ -457,7 +457,7 @@ sub _can_write_dir {
+
+ =pod
+
+-=item _mkpath($dir,$show,$mode,$verbose,$dry_run)
++=item _mkpath($dir,$show,$verbose,$dry_run)
+
+ Wrapper around File::Path::mkpath() to handle errors.
+
+@@ -474,13 +474,13 @@ writable.
+ =cut
+
+ sub _mkpath {
+- my ($dir,$show,$mode,$verbose,$dry_run)=@_;
++ my ($dir,$show,$verbose,$dry_run)=@_;
+ if ( $verbose && $verbose > 1 && ! -d $dir) {
+ $show= 1;
+- printf "mkpath(%s,%d,%#o)\n", $dir, $show, $mode;
++ printf "mkpath(%s,%d)\n", $dir, $show;
+ }
+ if (!$dry_run) {
+- if ( ! eval { File::Path::mkpath($dir,$show,$mode); 1 } ) {
++ if ( ! eval { File::Path::mkpath($dir,$show); 1 } ) {
+ _choke("Can't create '$dir'","$@");
+ }
+
+@@ -787,7 +787,7 @@ sub install { #XXX OS-SPECIFIC
+ _chdir($cwd);
+ }
+ foreach my $targetdir (sort keys %check_dirs) {
+- _mkpath( $targetdir, 0, 0755, $verbose, $dry_run );
++ _mkpath( $targetdir, 0, $verbose, $dry_run );
+ }
+ foreach my $found (@found_files) {
+ my ($diff, $ffd, $origfile, $mode, $size, $atime, $mtime,
+@@ -801,7 +801,7 @@ sub install { #XXX OS-SPECIFIC
+ $targetfile= _unlink_or_rename( $targetfile, 'tryhard', 'install' )
+ unless $dry_run;
+ } elsif ( ! -d $targetdir ) {
+- _mkpath( $targetdir, 0, 0755, $verbose, $dry_run );
++ _mkpath( $targetdir, 0, $verbose, $dry_run );
+ }
+ print "Installing $targetfile\n";
+
+@@ -841,7 +841,7 @@ sub install { #XXX OS-SPECIFIC
+
+ if ($pack{'write'}) {
+ $dir = install_rooted_dir(dirname($pack{'write'}));
+- _mkpath( $dir, 0, 0755, $verbose, $dry_run );
++ _mkpath( $dir, 0, $verbose, $dry_run );
+ print "Writing $pack{'write'}\n" if $verbose;
+ $packlist->write(install_rooted_file($pack{'write'})) unless $dry_run;
+ }
+@@ -1181,7 +1181,7 @@ be prepended as a directory to each installed file (and directory).
+ sub pm_to_blib {
+ my($fromto,$autodir,$pm_filter) = @_;
+
+- _mkpath($autodir,0,0755);
++ _mkpath($autodir,0);
+ while(my($from, $to) = each %$fromto) {
+ if( -f $to && -s $from == -s $to && -M $to < -M $from ) {
+ print "Skip $to (unchanged)\n";
+@@ -1204,7 +1204,7 @@ sub pm_to_blib {
+ # we wont try hard here. its too likely to mess things up.
+ forceunlink($to);
+ } else {
+- _mkpath(dirname($to),0,0755);
++ _mkpath(dirname($to),0);
+ }
+ if ($need_filtering) {
+ run_filter($pm_filter, $from, $to);
+diff --git a/lib/ExtUtils/MM_Any.pm b/lib/ExtUtils/MM_Any.pm
+index a7afe20..402e0c0 100644
+--- a/lib/ExtUtils/MM_Any.pm
++++ b/lib/ExtUtils/MM_Any.pm
+@@ -701,8 +701,6 @@ all POD files in MAN1PODS and MAN3PODS.
+ sub manifypods_target {
+ my($self) = shift;
+
+- my $man1pods = '';
+- my $man3pods = '';
+ my $dependencies = '';
+
+ # populate manXpods & dependencies:
+@@ -718,7 +716,7 @@ END
+ foreach my $section (qw(1 3)) {
+ my $pods = $self->{"MAN${section}PODS"};
+ push @man_cmds, $self->split_command(<<CMD, %$pods);
+- \$(NOECHO) \$(POD2MAN) --section=$section --perm_rw=\$(PERM_RW)
++ \$(NOECHO) \$(POD2MAN) --section=\$(MAN${section}EXT) --perm_rw=\$(PERM_RW)
+ CMD
+ }
+
+@@ -1428,9 +1426,11 @@ sub init_INSTALL_from_PREFIX {
+ $self->{SITEPREFIX} ||= $sprefix;
+ $self->{VENDORPREFIX} ||= $vprefix;
+
+- # Lots of MM extension authors like to use $(PREFIX) so we
+- # put something sensible in there no matter what.
+- $self->{PREFIX} = '$('.uc $self->{INSTALLDIRS}.'PREFIX)';
++ my $p = $self->{PREFIX} = $self->{PERLPREFIX};
++ for my $t (qw/PERL SITE VENDOR/)
++ {
++ $self->{"${t}PREFIX"} =~ s!^\Q$p\E(?=/|$)!\$(PREFIX)!;
++ }
+ }
+
+ my $arch = $Config{archname};
+diff --git a/lib/ExtUtils/MM_Unix.pm b/lib/ExtUtils/MM_Unix.pm
+index ad28b22..c3504b6 100644
+--- a/lib/ExtUtils/MM_Unix.pm
++++ b/lib/ExtUtils/MM_Unix.pm
+@@ -2046,9 +2046,7 @@ doc__install : doc_site_install
+ $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+ pure_perl_install :: all
+- $(NOECHO) $(MOD_INSTALL) \
+- read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
+- write }.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
++ $(NOECHO) umask 022; $(MOD_INSTALL) \
+ $(INST_LIB) $(DESTINSTALLPRIVLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
+ $(INST_BIN) $(DESTINSTALLBIN) \
+@@ -2060,7 +2058,7 @@ pure_perl_install :: all
+
+
+ pure_site_install :: all
+- $(NOECHO) $(MOD_INSTALL) \
++ $(NOECHO) umask 02; $(MOD_INSTALL) \
+ read }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
+ write }.$self->catfile('$(DESTINSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \
+ $(INST_LIB) $(DESTINSTALLSITELIB) \
+@@ -2073,9 +2071,7 @@ pure_site_install :: all
+ }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{
+
+ pure_vendor_install :: all
+- $(NOECHO) $(MOD_INSTALL) \
+- read }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
+- write }.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ \
++ $(NOECHO) umask 022; $(MOD_INSTALL) \
+ $(INST_LIB) $(DESTINSTALLVENDORLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
+ $(INST_BIN) $(DESTINSTALLVENDORBIN) \
+@@ -2084,37 +2080,19 @@ pure_vendor_install :: all
+ $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+
+ doc_perl_install :: all
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
+- "Module" "$(NAME)" \
+- "installed into" "$(INSTALLPRIVLIB)" \
+- LINKTYPE "$(LINKTYPE)" \
+- VERSION "$(VERSION)" \
+- EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
+
+ doc_site_install :: all
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
++ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod
++ -$(NOECHO) umask 02; $(MKPATH) $(DESTINSTALLSITEARCH)
++ -$(NOECHO) umask 02; $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLSITELIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
++ >> }.$self->catfile('$(DESTINSTALLSITEARCH)','perllocal.pod').q{
+
+ doc_vendor_install :: all
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
+- "Module" "$(NAME)" \
+- "installed into" "$(INSTALLVENDORLIB)" \
+- LINKTYPE "$(LINKTYPE)" \
+- VERSION "$(VERSION)" \
+- EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
+
+ };
+
+@@ -2123,13 +2101,12 @@ uninstall :: uninstall_from_$(INSTALLDIRS)dirs
+ $(NOECHO) $(NOOP)
+
+ uninstall_from_perldirs ::
+- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{
+
+ uninstall_from_sitedirs ::
+ $(NOECHO) $(UNINSTALL) }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{
+
+ uninstall_from_vendordirs ::
+- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{
++
+ };
+
+ join("",@m);
+@@ -2402,7 +2379,7 @@ MAP_PRELIBS = $Config{perllibs} $Config{cryptlib}
+ ($lperl = $libperl) =~ s/\$\(A\)/$self->{LIB_EXT}/;
+ }
+ unless ($libperl && -f $lperl) { # Ilya's code...
+- my $dir = $self->{PERL_SRC} || "$self->{PERL_ARCHLIB}/CORE";
++ my $dir = $self->{PERL_SRC} || "/usr/lib";
+ $dir = "$self->{PERL_ARCHLIB}/.." if $self->{UNINSTALLED_PERL};
+ $libperl ||= "libperl$self->{LIB_EXT}";
+ $libperl = "$dir/$libperl";
+@@ -2986,8 +2963,7 @@ sub prefixify {
+ print STDERR " prefixify $var => $path\n" if $Verbose >= 2;
+ print STDERR " from $sprefix to $rprefix\n" if $Verbose >= 2;
+
+- if( $self->{ARGS}{PREFIX} &&
+- $path !~ s{^\Q$sprefix\E\b}{$rprefix}s )
++ if( $path !~ s{^\Q$sprefix\E\b}{$rprefix}s && $self->{ARGS}{PREFIX} )
+ {
+
+ print STDERR " cannot prefix, using default.\n" if $Verbose >= 2;
+diff --git a/lib/ExtUtils/t/INST.t b/lib/ExtUtils/t/INST.t
+index 49938cb..562e3de 100755
+--- a/lib/ExtUtils/t/INST.t
++++ b/lib/ExtUtils/t/INST.t
+@@ -65,9 +65,7 @@ isa_ok( $mm, 'ExtUtils::MakeMaker' );
+ is( $mm->{NAME}, 'Big::Dummy', 'NAME' );
+ is( $mm->{VERSION}, 0.01, 'VERSION' );
+
+-my $config_prefix = $Config{installprefixexp} || $Config{installprefix} ||
+- $Config{prefixexp} || $Config{prefix};
+-is( $mm->{PERLPREFIX}, $config_prefix, 'PERLPREFIX' );
++is( $mm->{PERLPREFIX}, '$(PREFIX)', 'PERLPREFIX' );
+
+ is( !!$mm->{PERL_CORE}, !!$ENV{PERL_CORE}, 'PERL_CORE' );
+
+diff --git a/lib/ExtUtils/t/INST_PREFIX.t b/lib/ExtUtils/t/INST_PREFIX.t
+index 57e7eb2..337c3b8 100755
+--- a/lib/ExtUtils/t/INST_PREFIX.t
++++ b/lib/ExtUtils/t/INST_PREFIX.t
+@@ -16,7 +16,7 @@ BEGIN {
+ }
+
+ use strict;
+-use Test::More tests => 52;
++use Test::More tests => 47;
+ use MakeMaker::Test::Utils;
+ use MakeMaker::Test::Setup::BFD;
+ use ExtUtils::MakeMaker;
+@@ -62,16 +62,16 @@ like( $stdout->read, qr{
+ Writing\ $Makefile\ for\ Big::Dummy\n
+ }x );
+
+-is( $mm->{PREFIX}, '$(SITEPREFIX)', 'PREFIX set based on INSTALLDIRS' );
++#is( $mm->{PREFIX}, '$(SITEPREFIX)', 'PREFIX set based on INSTALLDIRS' );
+
+ isa_ok( $mm, 'ExtUtils::MakeMaker' );
+
+ is( $mm->{NAME}, 'Big::Dummy', 'NAME' );
+ is( $mm->{VERSION}, 0.01, 'VERSION' );
+
+-foreach my $prefix (qw(PREFIX PERLPREFIX SITEPREFIX VENDORPREFIX)) {
+- unlike( $mm->{$prefix}, qr/\$\(PREFIX\)/ );
+-}
++#foreach my $prefix (qw(PREFIX PERLPREFIX SITEPREFIX VENDORPREFIX)) {
++# unlike( $mm->{$prefix}, qr/\$\(PREFIX\)/ );
++#}
+
+
+ my $PREFIX = File::Spec->catdir('foo', 'bar');
+--
+tg: (daf8b46..) debian/extutils_hacks (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/fakeroot.diff b/recipes/perl/perl-5.10.1/fakeroot.diff
new file mode 100644
index 0000000000..806f38ea39
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/fakeroot.diff
@@ -0,0 +1,43 @@
+Subject: Postpone LD_LIBRARY_PATH evaluation to the binary targets.
+
+Modify the setting of LD_LIBRARY_PATH to append pre-existing values at the
+time the rule is evaluated rather than when the Makefile is created.
+
+This is required when building packages with dpkg-buildpackage and fakeroot,
+since fakeroot (which now sets LD_LIBRARY_PATH) is not used for the "build"
+rule where the Makefile is created, but is for the clean/binary* targets.
+
+
+---
+ Makefile.SH | 9 ++-------
+ 1 files changed, 2 insertions(+), 7 deletions(-)
+
+diff --git a/Makefile.SH b/Makefile.SH
+index 12d84ff..2eb7109 100755
+--- a/Makefile.SH
++++ b/Makefile.SH
+@@ -56,12 +56,7 @@ case "$useshrplib" in
+ true)
+ # Prefix all runs of 'miniperl' and 'perl' with
+ # $ldlibpth so that ./perl finds *this* shared libperl.
+- case "$LD_LIBRARY_PATH" in
+- '')
+- ldlibpth="LD_LIBRARY_PATH=`pwd`";;
+- *)
+- ldlibpth="LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}";;
+- esac
++ ldlibpth=LD_LIBRARY_PATH=`pwd`'$${LD_LIBRARY_PATH:+:}$$LD_LIBRARY_PATH'
+
+ pldlflags="$cccdlflags"
+ static_ldflags=''
+@@ -132,7 +127,7 @@ true)
+ ;;
+ esac
+ case "$ldlibpthname" in
+- '') ;;
++ ''|LD_LIBRARY_PATH) ;;
+ *)
+ case "$osname" in
+ os2)
+--
+tg: (daf8b46..) debian/fakeroot (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/fcgi-test.diff b/recipes/perl/perl-5.10.1/fcgi-test.diff
new file mode 100644
index 0000000000..740547011c
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/fcgi-test.diff
@@ -0,0 +1,31 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Fix a failure in CGI/t/fast.t when FCGI is installed
+Origin: upstream
+
+Cherry picked from CGI-3.48.
+
+The test is skipped in clean build environments because FCGI is not in
+the core.
+
+Upstream has dropped the whole test from the Perl core distribution for
+the 5.12 series because it relies on external modules. Possibly we should
+do that instead.
+
+---
+ lib/CGI/t/fast.t | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/lib/CGI/t/fast.t b/lib/CGI/t/fast.t
+index 45f8e12..264e047 100755
+--- a/lib/CGI/t/fast.t
++++ b/lib/CGI/t/fast.t
+@@ -32,6 +32,6 @@ SKIP: {
+
+ # if this is false, the package var will be empty
+ $ENV{FCGI_SOCKET_PATH} = 0;
+- is( $CGI::Fast::Ext_Request, '', 'checking no active request' );
++ is( $CGI::Fast::Ext_Request, undef, 'checking no active request' );
+
+ }
+--
+tg: (daf8b46..) fixes/fcgi-test (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/format-write-crash.diff b/recipes/perl/perl-5.10.1/format-write-crash.diff
new file mode 100644
index 0000000000..946f5f1ff5
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/format-write-crash.diff
@@ -0,0 +1,1255 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Fix a crash in format/write
+Bug-Debian: http://bugs.debian.org/579537
+Bug: http://rt.perl.org/rt3/Public/Bug/Display.html?id=22977
+Origin: upstream, http://perl5.git.perl.org/perl.git/commit/421f30ed1e95009450bdc7905bf3433ee806ea4f
+
+The perly.act and perly.tab changes were generated with flex 2.5.35-6
+and bison 1:2.3.dfsg-5 from Debian Lenny to avoid unnecessary changes.
+
+---
+ MANIFEST | 1 +
+ perly.act | 284 ++++++++++++++++++++++++++-------------------------
+ perly.tab | 30 +++---
+ perly.y | 8 ++-
+ t/comp/form_scope.t | 18 ++++
+ 5 files changed, 186 insertions(+), 155 deletions(-)
+
+diff --git a/MANIFEST b/MANIFEST
+index 2b5a968..15ce1c7 100644
+--- a/MANIFEST
++++ b/MANIFEST
+@@ -3944,6 +3944,7 @@ t/comp/cpp.aux main file for cpp.t
+ t/comp/cpp.t See if C preprocessor works
+ t/comp/decl.t See if declarations work
+ t/comp/fold.t See if constant folding works
++t/comp/form_scope.t See if format scoping works
+ t/comp/hints.t See if %^H works
+ t/comp/multiline.t See if multiline strings work
+ t/comp/opsubs.t See if q() etc. are not parsed as functions
+diff --git a/perly.act b/perly.act
+index b610294..e426f9e 100644
+--- a/perly.act
++++ b/perly.act
+@@ -450,7 +450,9 @@ case 2:
+
+ case 60:
+ #line 509 "perly.y"
+- { SvREFCNT_inc_simple_void(PL_compcv);
++ {
++ CV *fmtcv = PL_compcv;
++ SvREFCNT_inc_simple_void(PL_compcv);
+ #ifdef MAD
+ (yyval.opval) = newFORM((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval), (ps[(4) - (4)].val.opval));
+ prepend_madprops((ps[(1) - (4)].val.i_tkval)->tk_mad, (yyval.opval), 'F');
+@@ -460,21 +462,25 @@ case 2:
+ newFORM((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval), (ps[(4) - (4)].val.opval));
+ (yyval.opval) = (OP*)NULL;
+ #endif
++ if (CvOUTSIDE(fmtcv) && !CvUNIQUE(CvOUTSIDE(fmtcv))) {
++ SvREFCNT_inc_simple_void(fmtcv);
++ pad_add_anon((SV*)fmtcv, OP_NULL);
++ }
+ ;}
+ break;
+
+ case 61:
+-#line 522 "perly.y"
++#line 528 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ break;
+
+ case 62:
+-#line 523 "perly.y"
++#line 529 "perly.y"
+ { (yyval.opval) = (OP*)NULL; ;}
+ break;
+
+ case 63:
+-#line 528 "perly.y"
++#line 534 "perly.y"
+ { SvREFCNT_inc_simple_void(PL_compcv);
+ #ifdef MAD
+ (yyval.opval) = newMYSUB((ps[(2) - (6)].val.ival), (ps[(3) - (6)].val.opval), (ps[(4) - (6)].val.opval), (ps[(5) - (6)].val.opval), (ps[(6) - (6)].val.opval));
+@@ -487,7 +493,7 @@ case 2:
+ break;
+
+ case 64:
+-#line 541 "perly.y"
++#line 547 "perly.y"
+ { SvREFCNT_inc_simple_void(PL_compcv);
+ #ifdef MAD
+ {
+@@ -510,25 +516,25 @@ case 2:
+ break;
+
+ case 65:
+-#line 563 "perly.y"
++#line 569 "perly.y"
+ { (yyval.ival) = start_subparse(FALSE, 0);
+ SAVEFREESV(PL_compcv); ;}
+ break;
+
+ case 66:
+-#line 569 "perly.y"
++#line 575 "perly.y"
+ { (yyval.ival) = start_subparse(FALSE, CVf_ANON);
+ SAVEFREESV(PL_compcv); ;}
+ break;
+
+ case 67:
+-#line 574 "perly.y"
++#line 580 "perly.y"
+ { (yyval.ival) = start_subparse(TRUE, 0);
+ SAVEFREESV(PL_compcv); ;}
+ break;
+
+ case 68:
+-#line 579 "perly.y"
++#line 585 "perly.y"
+ { const char *const name = SvPV_nolen_const(((SVOP*)(ps[(1) - (1)].val.opval))->op_sv);
+ if (strEQ(name, "BEGIN") || strEQ(name, "END")
+ || strEQ(name, "INIT") || strEQ(name, "CHECK")
+@@ -538,24 +544,24 @@ case 2:
+ break;
+
+ case 69:
+-#line 589 "perly.y"
++#line 595 "perly.y"
+ { (yyval.opval) = (OP*)NULL; ;}
+ break;
+
+ case 71:
+-#line 595 "perly.y"
++#line 601 "perly.y"
+ { (yyval.opval) = (OP*)NULL; ;}
+ break;
+
+ case 72:
+-#line 597 "perly.y"
++#line 603 "perly.y"
+ { (yyval.opval) = (ps[(2) - (2)].val.opval);
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),':');
+ ;}
+ break;
+
+ case 73:
+-#line 601 "perly.y"
++#line 607 "perly.y"
+ { (yyval.opval) = IF_MAD(
+ newOP(OP_NULL, 0),
+ (OP*)NULL
+@@ -565,14 +571,14 @@ case 2:
+ break;
+
+ case 74:
+-#line 611 "perly.y"
++#line 617 "perly.y"
+ { (yyval.opval) = (ps[(2) - (2)].val.opval);
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),':');
+ ;}
+ break;
+
+ case 75:
+-#line 615 "perly.y"
++#line 621 "perly.y"
+ { (yyval.opval) = IF_MAD(
+ newOP(OP_NULL, 0),
+ (OP*)NULL
+@@ -582,12 +588,12 @@ case 2:
+ break;
+
+ case 76:
+-#line 624 "perly.y"
++#line 630 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ break;
+
+ case 77:
+-#line 625 "perly.y"
++#line 631 "perly.y"
+ { (yyval.opval) = IF_MAD(
+ newOP(OP_NULL,0),
+ (OP*)NULL
+@@ -598,7 +604,7 @@ case 2:
+ break;
+
+ case 78:
+-#line 635 "perly.y"
++#line 641 "perly.y"
+ {
+ #ifdef MAD
+ (yyval.opval) = package((ps[(2) - (3)].val.opval));
+@@ -612,12 +618,12 @@ case 2:
+ break;
+
+ case 79:
+-#line 648 "perly.y"
++#line 654 "perly.y"
+ { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;}
+ break;
+
+ case 80:
+-#line 650 "perly.y"
++#line 656 "perly.y"
+ { SvREFCNT_inc_simple_void(PL_compcv);
+ #ifdef MAD
+ (yyval.opval) = utilize(IVAL((ps[(1) - (7)].val.i_tkval)), (ps[(2) - (7)].val.ival), (ps[(4) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval));
+@@ -634,28 +640,28 @@ case 2:
+ break;
+
+ case 81:
+-#line 667 "perly.y"
++#line 673 "perly.y"
+ { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 82:
+-#line 671 "perly.y"
++#line 677 "perly.y"
+ { (yyval.opval) = newLOGOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 83:
+-#line 675 "perly.y"
++#line 681 "perly.y"
+ { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 85:
+-#line 683 "perly.y"
++#line 689 "perly.y"
+ {
+ #ifdef MAD
+ OP* op = newNULLLIST();
+@@ -668,7 +674,7 @@ case 2:
+ break;
+
+ case 86:
+-#line 693 "perly.y"
++#line 699 "perly.y"
+ {
+ OP* term = (ps[(3) - (3)].val.opval);
+ DO_MAD(
+@@ -680,7 +686,7 @@ case 2:
+ break;
+
+ case 88:
+-#line 706 "perly.y"
++#line 712 "perly.y"
+ { (yyval.opval) = convert(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_STACKED,
+ prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (3)].val.i_tkval)),(ps[(2) - (3)].val.opval)), (ps[(3) - (3)].val.opval)) );
+ TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
+@@ -688,7 +694,7 @@ case 2:
+ break;
+
+ case 89:
+-#line 711 "perly.y"
++#line 717 "perly.y"
+ { (yyval.opval) = convert(IVAL((ps[(1) - (5)].val.i_tkval)), OPf_STACKED,
+ prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (5)].val.i_tkval)),(ps[(3) - (5)].val.opval)), (ps[(4) - (5)].val.opval)) );
+ TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
+@@ -698,7 +704,7 @@ case 2:
+ break;
+
+ case 90:
+-#line 718 "perly.y"
++#line 724 "perly.y"
+ { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
+ append_elem(OP_LIST,
+ prepend_elem(OP_LIST, scalar((ps[(1) - (6)].val.opval)), (ps[(5) - (6)].val.opval)),
+@@ -710,7 +716,7 @@ case 2:
+ break;
+
+ case 91:
+-#line 727 "perly.y"
++#line 733 "perly.y"
+ { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
+ append_elem(OP_LIST, scalar((ps[(1) - (3)].val.opval)),
+ newUNOP(OP_METHOD, 0, (ps[(3) - (3)].val.opval))));
+@@ -719,7 +725,7 @@ case 2:
+ break;
+
+ case 92:
+-#line 733 "perly.y"
++#line 739 "perly.y"
+ { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
+ append_elem(OP_LIST,
+ prepend_elem(OP_LIST, (ps[(2) - (3)].val.opval), (ps[(3) - (3)].val.opval)),
+@@ -728,7 +734,7 @@ case 2:
+ break;
+
+ case 93:
+-#line 739 "perly.y"
++#line 745 "perly.y"
+ { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
+ append_elem(OP_LIST,
+ prepend_elem(OP_LIST, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)),
+@@ -739,14 +745,14 @@ case 2:
+ break;
+
+ case 94:
+-#line 747 "perly.y"
++#line 753 "perly.y"
+ { (yyval.opval) = convert(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 95:
+-#line 751 "perly.y"
++#line 757 "perly.y"
+ { (yyval.opval) = convert(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
+ TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
+@@ -755,13 +761,13 @@ case 2:
+ break;
+
+ case 96:
+-#line 757 "perly.y"
++#line 763 "perly.y"
+ { SvREFCNT_inc_simple_void(PL_compcv);
+ (yyval.opval) = newANONATTRSUB((ps[(2) - (3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); ;}
+ break;
+
+ case 97:
+-#line 760 "perly.y"
++#line 766 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+ append_elem(OP_LIST,
+ prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)), (ps[(1) - (5)].val.opval)));
+@@ -769,7 +775,7 @@ case 2:
+ break;
+
+ case 100:
+-#line 775 "perly.y"
++#line 781 "perly.y"
+ { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), scalar((ps[(3) - (5)].val.opval)));
+ PL_parser->expect = XOPERATOR;
+ TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
+@@ -779,7 +785,7 @@ case 2:
+ break;
+
+ case 101:
+-#line 782 "perly.y"
++#line 788 "perly.y"
+ { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[(1) - (4)].val.opval)), scalar((ps[(3) - (4)].val.opval)));
+ TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
+ TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
+@@ -787,7 +793,7 @@ case 2:
+ break;
+
+ case 102:
+-#line 787 "perly.y"
++#line 793 "perly.y"
+ { (yyval.opval) = newBINOP(OP_AELEM, 0,
+ ref(newAVREF((ps[(1) - (5)].val.opval)),OP_RV2AV),
+ scalar((ps[(4) - (5)].val.opval)));
+@@ -798,7 +804,7 @@ case 2:
+ break;
+
+ case 103:
+-#line 795 "perly.y"
++#line 801 "perly.y"
+ { (yyval.opval) = newBINOP(OP_AELEM, 0,
+ ref(newAVREF((ps[(1) - (4)].val.opval)),OP_RV2AV),
+ scalar((ps[(3) - (4)].val.opval)));
+@@ -808,7 +814,7 @@ case 2:
+ break;
+
+ case 104:
+-#line 802 "perly.y"
++#line 808 "perly.y"
+ { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[(1) - (5)].val.opval)), jmaybe((ps[(3) - (5)].val.opval)));
+ PL_parser->expect = XOPERATOR;
+ TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
+@@ -818,7 +824,7 @@ case 2:
+ break;
+
+ case 105:
+-#line 809 "perly.y"
++#line 815 "perly.y"
+ { (yyval.opval) = newBINOP(OP_HELEM, 0,
+ ref(newHVREF((ps[(1) - (6)].val.opval)),OP_RV2HV),
+ jmaybe((ps[(4) - (6)].val.opval)));
+@@ -831,7 +837,7 @@ case 2:
+ break;
+
+ case 106:
+-#line 819 "perly.y"
++#line 825 "perly.y"
+ { (yyval.opval) = newBINOP(OP_HELEM, 0,
+ ref(newHVREF((ps[(1) - (5)].val.opval)),OP_RV2HV),
+ jmaybe((ps[(3) - (5)].val.opval)));
+@@ -843,7 +849,7 @@ case 2:
+ break;
+
+ case 107:
+-#line 828 "perly.y"
++#line 834 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+ newCVREF(0, scalar((ps[(1) - (4)].val.opval))));
+ TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'a');
+@@ -853,7 +859,7 @@ case 2:
+ break;
+
+ case 108:
+-#line 835 "perly.y"
++#line 841 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+ append_elem(OP_LIST, (ps[(4) - (5)].val.opval),
+ newCVREF(0, scalar((ps[(1) - (5)].val.opval)))));
+@@ -864,7 +870,7 @@ case 2:
+ break;
+
+ case 109:
+-#line 844 "perly.y"
++#line 850 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+ append_elem(OP_LIST, (ps[(3) - (4)].val.opval),
+ newCVREF(0, scalar((ps[(1) - (4)].val.opval)))));
+@@ -874,7 +880,7 @@ case 2:
+ break;
+
+ case 110:
+-#line 851 "perly.y"
++#line 857 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+ newCVREF(0, scalar((ps[(1) - (3)].val.opval))));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
+@@ -883,7 +889,7 @@ case 2:
+ break;
+
+ case 111:
+-#line 857 "perly.y"
++#line 863 "perly.y"
+ { (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - (6)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (6)].val.i_tkval),(yyval.opval),'(');
+ TOKEN_GETMAD((ps[(3) - (6)].val.i_tkval),(yyval.opval),')');
+@@ -893,7 +899,7 @@ case 2:
+ break;
+
+ case 112:
+-#line 864 "perly.y"
++#line 870 "perly.y"
+ { (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL);
+ TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'(');
+ TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),')');
+@@ -903,21 +909,21 @@ case 2:
+ break;
+
+ case 113:
+-#line 874 "perly.y"
++#line 880 "perly.y"
+ { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(3) - (3)].val.opval));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 114:
+-#line 878 "perly.y"
++#line 884 "perly.y"
+ { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 115:
+-#line 882 "perly.y"
++#line 888 "perly.y"
+ { if (IVAL((ps[(2) - (3)].val.i_tkval)) != OP_REPEAT)
+ scalar((ps[(1) - (3)].val.opval));
+ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), scalar((ps[(3) - (3)].val.opval)));
+@@ -926,49 +932,49 @@ case 2:
+ break;
+
+ case 116:
+-#line 888 "perly.y"
++#line 894 "perly.y"
+ { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 117:
+-#line 892 "perly.y"
++#line 898 "perly.y"
+ { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 118:
+-#line 896 "perly.y"
++#line 902 "perly.y"
+ { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 119:
+-#line 900 "perly.y"
++#line 906 "perly.y"
+ { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 120:
+-#line 904 "perly.y"
++#line 910 "perly.y"
+ { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 121:
+-#line 908 "perly.y"
++#line 914 "perly.y"
+ { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 122:
+-#line 912 "perly.y"
++#line 918 "perly.y"
+ {
+ (yyval.opval) = newRANGE(IVAL((ps[(2) - (3)].val.i_tkval)), scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
+ DO_MAD({
+@@ -983,28 +989,28 @@ case 2:
+ break;
+
+ case 123:
+-#line 924 "perly.y"
++#line 930 "perly.y"
+ { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 124:
+-#line 928 "perly.y"
++#line 934 "perly.y"
+ { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 125:
+-#line 932 "perly.y"
++#line 938 "perly.y"
+ { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 126:
+-#line 936 "perly.y"
++#line 942 "perly.y"
+ { (yyval.opval) = bind_match(IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),
+ ((yyval.opval)->op_type == OP_NOT
+@@ -1014,14 +1020,14 @@ case 2:
+ break;
+
+ case 127:
+-#line 946 "perly.y"
++#line 952 "perly.y"
+ { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - (2)].val.opval)));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 128:
+-#line 950 "perly.y"
++#line 956 "perly.y"
+ { (yyval.opval) = IF_MAD(
+ newUNOP(OP_NULL, 0, (ps[(2) - (2)].val.opval)),
+ (ps[(2) - (2)].val.opval)
+@@ -1031,21 +1037,21 @@ case 2:
+ break;
+
+ case 129:
+-#line 957 "perly.y"
++#line 963 "perly.y"
+ { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval)));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 130:
+-#line 961 "perly.y"
++#line 967 "perly.y"
+ { (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((ps[(2) - (2)].val.opval)));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 131:
+-#line 965 "perly.y"
++#line 971 "perly.y"
+ { (yyval.opval) = newUNOP(OP_POSTINC, 0,
+ mod(scalar((ps[(1) - (2)].val.opval)), OP_POSTINC));
+ TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
+@@ -1053,7 +1059,7 @@ case 2:
+ break;
+
+ case 132:
+-#line 970 "perly.y"
++#line 976 "perly.y"
+ { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
+ mod(scalar((ps[(1) - (2)].val.opval)), OP_POSTDEC));
+ TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
+@@ -1061,7 +1067,7 @@ case 2:
+ break;
+
+ case 133:
+-#line 975 "perly.y"
++#line 981 "perly.y"
+ { (yyval.opval) = newUNOP(OP_PREINC, 0,
+ mod(scalar((ps[(2) - (2)].val.opval)), OP_PREINC));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
+@@ -1069,7 +1075,7 @@ case 2:
+ break;
+
+ case 134:
+-#line 980 "perly.y"
++#line 986 "perly.y"
+ { (yyval.opval) = newUNOP(OP_PREDEC, 0,
+ mod(scalar((ps[(2) - (2)].val.opval)), OP_PREDEC));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
+@@ -1077,7 +1083,7 @@ case 2:
+ break;
+
+ case 135:
+-#line 989 "perly.y"
++#line 995 "perly.y"
+ { (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'[');
+ TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),']');
+@@ -1085,7 +1091,7 @@ case 2:
+ break;
+
+ case 136:
+-#line 994 "perly.y"
++#line 1000 "perly.y"
+ { (yyval.opval) = newANONLIST((OP*)NULL);
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'[');
+ TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),']');
+@@ -1093,7 +1099,7 @@ case 2:
+ break;
+
+ case 137:
+-#line 999 "perly.y"
++#line 1005 "perly.y"
+ { (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'{');
+ TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),';');
+@@ -1102,7 +1108,7 @@ case 2:
+ break;
+
+ case 138:
+-#line 1005 "perly.y"
++#line 1011 "perly.y"
+ { (yyval.opval) = newANONHASH((OP*)NULL);
+ TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'{');
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),';');
+@@ -1111,7 +1117,7 @@ case 2:
+ break;
+
+ case 139:
+-#line 1011 "perly.y"
++#line 1017 "perly.y"
+ { SvREFCNT_inc_simple_void(PL_compcv);
+ (yyval.opval) = newANONATTRSUB((ps[(2) - (5)].val.ival), (ps[(3) - (5)].val.opval), (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
+@@ -1121,21 +1127,21 @@ case 2:
+ break;
+
+ case 140:
+-#line 1022 "perly.y"
++#line 1028 "perly.y"
+ { (yyval.opval) = dofile((ps[(2) - (2)].val.opval), IVAL((ps[(1) - (2)].val.i_tkval)));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 141:
+-#line 1026 "perly.y"
++#line 1032 "perly.y"
+ { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, scope((ps[(2) - (2)].val.opval)));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'D');
+ ;}
+ break;
+
+ case 142:
+-#line 1030 "perly.y"
++#line 1036 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB,
+ OPf_SPECIAL|OPf_STACKED,
+ prepend_elem(OP_LIST,
+@@ -1150,7 +1156,7 @@ case 2:
+ break;
+
+ case 143:
+-#line 1042 "perly.y"
++#line 1048 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB,
+ OPf_SPECIAL|OPf_STACKED,
+ append_elem(OP_LIST,
+@@ -1166,7 +1172,7 @@ case 2:
+ break;
+
+ case 144:
+-#line 1055 "perly.y"
++#line 1061 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
+ prepend_elem(OP_LIST,
+ scalar(newCVREF(0,scalar((ps[(2) - (4)].val.opval)))), (OP*)NULL)); dep();
+@@ -1177,7 +1183,7 @@ case 2:
+ break;
+
+ case 145:
+-#line 1063 "perly.y"
++#line 1069 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
+ prepend_elem(OP_LIST,
+ (ps[(4) - (5)].val.opval),
+@@ -1189,7 +1195,7 @@ case 2:
+ break;
+
+ case 150:
+-#line 1079 "perly.y"
++#line 1085 "perly.y"
+ { (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - (5)].val.opval), (ps[(5) - (5)].val.opval));
+ TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'?');
+ TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),':');
+@@ -1197,26 +1203,26 @@ case 2:
+ break;
+
+ case 151:
+-#line 1084 "perly.y"
++#line 1090 "perly.y"
+ { (yyval.opval) = newUNOP(OP_REFGEN, 0, mod((ps[(2) - (2)].val.opval),OP_REFGEN));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 152:
+-#line 1088 "perly.y"
++#line 1094 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ break;
+
+ case 153:
+-#line 1090 "perly.y"
++#line 1096 "perly.y"
+ { (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval)));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'k');
+ ;}
+ break;
+
+ case 154:
+-#line 1094 "perly.y"
++#line 1100 "perly.y"
+ { (yyval.opval) = sawparens(IF_MAD(newUNOP(OP_NULL,0,(ps[(2) - (3)].val.opval)), (ps[(2) - (3)].val.opval)));
+ TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'(');
+ TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
+@@ -1224,7 +1230,7 @@ case 2:
+ break;
+
+ case 155:
+-#line 1099 "perly.y"
++#line 1105 "perly.y"
+ { (yyval.opval) = sawparens(newNULLLIST());
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'(');
+ TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')');
+@@ -1232,37 +1238,37 @@ case 2:
+ break;
+
+ case 156:
+-#line 1104 "perly.y"
++#line 1110 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ break;
+
+ case 157:
+-#line 1106 "perly.y"
++#line 1112 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ break;
+
+ case 158:
+-#line 1108 "perly.y"
++#line 1114 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ break;
+
+ case 159:
+-#line 1110 "perly.y"
++#line 1116 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ break;
+
+ case 160:
+-#line 1112 "perly.y"
++#line 1118 "perly.y"
+ { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));;}
+ break;
+
+ case 161:
+-#line 1114 "perly.y"
++#line 1120 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ break;
+
+ case 162:
+-#line 1116 "perly.y"
++#line 1122 "perly.y"
+ { (yyval.opval) = prepend_elem(OP_ASLICE,
+ newOP(OP_PUSHMARK, 0),
+ newLISTOP(OP_ASLICE, 0,
+@@ -1274,7 +1280,7 @@ case 2:
+ break;
+
+ case 163:
+-#line 1125 "perly.y"
++#line 1131 "perly.y"
+ { (yyval.opval) = prepend_elem(OP_HSLICE,
+ newOP(OP_PUSHMARK, 0),
+ newLISTOP(OP_HSLICE, 0,
+@@ -1288,17 +1294,17 @@ case 2:
+ break;
+
+ case 164:
+-#line 1136 "perly.y"
++#line 1142 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ break;
+
+ case 165:
+-#line 1138 "perly.y"
++#line 1144 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); ;}
+ break;
+
+ case 166:
+-#line 1140 "perly.y"
++#line 1146 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (3)].val.opval)));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
+ TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
+@@ -1306,7 +1312,7 @@ case 2:
+ break;
+
+ case 167:
+-#line 1145 "perly.y"
++#line 1151 "perly.y"
+ {
+ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+ append_elem(OP_LIST, (ps[(3) - (4)].val.opval), scalar((ps[(1) - (4)].val.opval))));
+@@ -1322,7 +1328,7 @@ case 2:
+ break;
+
+ case 168:
+-#line 1158 "perly.y"
++#line 1164 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+ append_elem(OP_LIST, (ps[(3) - (3)].val.opval), scalar((ps[(2) - (3)].val.opval))));
+ TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
+@@ -1330,7 +1336,7 @@ case 2:
+ break;
+
+ case 169:
+-#line 1163 "perly.y"
++#line 1169 "perly.y"
+ { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), OPf_SPECIAL);
+ PL_hints |= HINT_BLOCK_SCOPE;
+ TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
+@@ -1338,74 +1344,74 @@ case 2:
+ break;
+
+ case 170:
+-#line 1168 "perly.y"
++#line 1174 "perly.y"
+ { (yyval.opval) = newLOOPEX(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 171:
+-#line 1172 "perly.y"
++#line 1178 "perly.y"
+ { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval)));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 172:
+-#line 1176 "perly.y"
++#line 1182 "perly.y"
+ { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0);
+ TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 173:
+-#line 1180 "perly.y"
++#line 1186 "perly.y"
+ { (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 174:
+-#line 1184 "perly.y"
++#line 1190 "perly.y"
+ { (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 175:
+-#line 1188 "perly.y"
++#line 1194 "perly.y"
+ { (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.i_tkval) ? OPf_SPECIAL : 0);
+ TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 176:
+-#line 1192 "perly.y"
++#line 1198 "perly.y"
+ { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.i_tkval) ? OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 177:
+-#line 1196 "perly.y"
++#line 1202 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;}
+ break;
+
+ case 178:
+-#line 1198 "perly.y"
++#line 1204 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+ append_elem(OP_LIST, (ps[(2) - (2)].val.opval), scalar((ps[(1) - (2)].val.opval)))); ;}
+ break;
+
+ case 179:
+-#line 1201 "perly.y"
++#line 1207 "perly.y"
+ { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0);
+ TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 180:
+-#line 1205 "perly.y"
++#line 1211 "perly.y"
+ { (yyval.opval) = newOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0);
+ TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
+@@ -1414,13 +1420,13 @@ case 2:
+ break;
+
+ case 181:
+-#line 1211 "perly.y"
++#line 1217 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+ scalar((ps[(1) - (1)].val.opval))); ;}
+ break;
+
+ case 182:
+-#line 1214 "perly.y"
++#line 1220 "perly.y"
+ { (yyval.opval) = (IVAL((ps[(1) - (3)].val.i_tkval)) == OP_NOT)
+ ? newUNOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0, newSVOP(OP_CONST, 0, newSViv(0)))
+ : newOP(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_SPECIAL);
+@@ -1432,7 +1438,7 @@ case 2:
+ break;
+
+ case 183:
+-#line 1223 "perly.y"
++#line 1229 "perly.y"
+ { (yyval.opval) = newUNOP(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
+ TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
+@@ -1441,7 +1447,7 @@ case 2:
+ break;
+
+ case 184:
+-#line 1229 "perly.y"
++#line 1235 "perly.y"
+ { (yyval.opval) = pmruntime((ps[(1) - (4)].val.opval), (ps[(3) - (4)].val.opval), 1);
+ TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
+ TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
+@@ -1449,7 +1455,7 @@ case 2:
+ break;
+
+ case 187:
+-#line 1239 "perly.y"
++#line 1245 "perly.y"
+ { (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval));
+ DO_MAD(
+ token_getmad((ps[(1) - (3)].val.i_tkval),(yyval.opval),'d');
+@@ -1460,14 +1466,14 @@ case 2:
+ break;
+
+ case 188:
+-#line 1247 "perly.y"
++#line 1253 "perly.y"
+ { (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval)));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'d');
+ ;}
+ break;
+
+ case 189:
+-#line 1254 "perly.y"
++#line 1260 "perly.y"
+ { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'(');
+ TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
+@@ -1475,7 +1481,7 @@ case 2:
+ break;
+
+ case 190:
+-#line 1259 "perly.y"
++#line 1265 "perly.y"
+ { (yyval.opval) = sawparens(newNULLLIST());
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'(');
+ TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')');
+@@ -1483,42 +1489,42 @@ case 2:
+ break;
+
+ case 191:
+-#line 1264 "perly.y"
++#line 1270 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ break;
+
+ case 192:
+-#line 1266 "perly.y"
++#line 1272 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ break;
+
+ case 193:
+-#line 1268 "perly.y"
++#line 1274 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ break;
+
+ case 194:
+-#line 1273 "perly.y"
++#line 1279 "perly.y"
+ { (yyval.opval) = (OP*)NULL; ;}
+ break;
+
+ case 195:
+-#line 1275 "perly.y"
++#line 1281 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ break;
+
+ case 196:
+-#line 1279 "perly.y"
++#line 1285 "perly.y"
+ { (yyval.opval) = (OP*)NULL; ;}
+ break;
+
+ case 197:
+-#line 1281 "perly.y"
++#line 1287 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ break;
+
+ case 198:
+-#line 1283 "perly.y"
++#line 1289 "perly.y"
+ {
+ #ifdef MAD
+ OP* op = newNULLLIST();
+@@ -1532,69 +1538,69 @@ case 2:
+ break;
+
+ case 199:
+-#line 1298 "perly.y"
++#line 1304 "perly.y"
+ { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); ;}
+ break;
+
+ case 200:
+-#line 1302 "perly.y"
++#line 1308 "perly.y"
+ { (yyval.opval) = newCVREF(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'&');
+ ;}
+ break;
+
+ case 201:
+-#line 1308 "perly.y"
++#line 1314 "perly.y"
+ { (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'$');
+ ;}
+ break;
+
+ case 202:
+-#line 1314 "perly.y"
++#line 1320 "perly.y"
+ { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'@');
+ ;}
+ break;
+
+ case 203:
+-#line 1320 "perly.y"
++#line 1326 "perly.y"
+ { (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'%');
+ ;}
+ break;
+
+ case 204:
+-#line 1326 "perly.y"
++#line 1332 "perly.y"
+ { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'l');
+ ;}
+ break;
+
+ case 205:
+-#line 1332 "perly.y"
++#line 1338 "perly.y"
+ { (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'*');
+ ;}
+ break;
+
+ case 206:
+-#line 1339 "perly.y"
++#line 1345 "perly.y"
+ { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
+ break;
+
+ case 207:
+-#line 1341 "perly.y"
++#line 1347 "perly.y"
+ { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
+ break;
+
+ case 208:
+-#line 1343 "perly.y"
++#line 1349 "perly.y"
+ { (yyval.opval) = scope((ps[(1) - (1)].val.opval)); ;}
+ break;
+
+ case 209:
+-#line 1346 "perly.y"
++#line 1352 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ break;
+
+diff --git a/perly.tab b/perly.tab
+index 8dd02ed..5980559 100644
+--- a/perly.tab
++++ b/perly.tab
+@@ -171,21 +171,21 @@ static const yytype_uint16 yyrline[] =
+ 311, 314, 320, 321, 328, 341, 353, 364, 374, 384,
+ 416, 424, 434, 440, 441, 446, 449, 453, 458, 462,
+ 466, 472, 481, 485, 487, 489, 491, 493, 498, 502,
+- 508, 522, 523, 527, 540, 563, 569, 574, 579, 589,
+- 590, 595, 596, 600, 610, 614, 624, 625, 634, 648,
+- 647, 666, 670, 674, 678, 682, 692, 701, 705, 710,
+- 717, 726, 732, 738, 746, 750, 757, 756, 767, 768,
+- 772, 781, 786, 794, 801, 808, 818, 827, 834, 843,
+- 850, 856, 863, 873, 877, 881, 887, 891, 895, 899,
+- 903, 907, 911, 923, 927, 931, 935, 945, 949, 956,
+- 960, 964, 969, 974, 979, 988, 993, 998, 1004, 1010,
+- 1021, 1025, 1029, 1041, 1054, 1062, 1074, 1075, 1076, 1077,
+- 1078, 1083, 1087, 1089, 1093, 1098, 1103, 1105, 1107, 1109,
+- 1111, 1113, 1115, 1124, 1135, 1137, 1139, 1144, 1157, 1162,
+- 1167, 1171, 1175, 1179, 1183, 1187, 1191, 1195, 1197, 1200,
+- 1204, 1210, 1213, 1222, 1228, 1233, 1234, 1238, 1246, 1253,
+- 1258, 1263, 1265, 1267, 1272, 1274, 1279, 1280, 1282, 1297,
+- 1301, 1307, 1313, 1319, 1325, 1331, 1338, 1340, 1342, 1345
++ 508, 528, 529, 533, 546, 569, 575, 580, 585, 595,
++ 596, 601, 602, 606, 616, 620, 630, 631, 640, 654,
++ 653, 672, 676, 680, 684, 688, 698, 707, 711, 716,
++ 723, 732, 738, 744, 752, 756, 763, 762, 773, 774,
++ 778, 787, 792, 800, 807, 814, 824, 833, 840, 849,
++ 856, 862, 869, 879, 883, 887, 893, 897, 901, 905,
++ 909, 913, 917, 929, 933, 937, 941, 951, 955, 962,
++ 966, 970, 975, 980, 985, 994, 999, 1004, 1010, 1016,
++ 1027, 1031, 1035, 1047, 1060, 1068, 1080, 1081, 1082, 1083,
++ 1084, 1089, 1093, 1095, 1099, 1104, 1109, 1111, 1113, 1115,
++ 1117, 1119, 1121, 1130, 1141, 1143, 1145, 1150, 1163, 1168,
++ 1173, 1177, 1181, 1185, 1189, 1193, 1197, 1201, 1203, 1206,
++ 1210, 1216, 1219, 1228, 1234, 1239, 1240, 1244, 1252, 1259,
++ 1264, 1269, 1271, 1273, 1278, 1280, 1285, 1286, 1288, 1303,
++ 1307, 1313, 1319, 1325, 1331, 1337, 1344, 1346, 1348, 1351
+ };
+ #endif
+
+diff --git a/perly.y b/perly.y
+index 6b8b4e3..9164cab 100644
+--- a/perly.y
++++ b/perly.y
+@@ -506,7 +506,9 @@ peg : PEG
+ ;
+
+ format : FORMAT startformsub formname block
+- { SvREFCNT_inc_simple_void(PL_compcv);
++ {
++ CV *fmtcv = PL_compcv;
++ SvREFCNT_inc_simple_void(PL_compcv);
+ #ifdef MAD
+ $$ = newFORM($2, $3, $4);
+ prepend_madprops($1->tk_mad, $$, 'F');
+@@ -516,6 +518,10 @@ format : FORMAT startformsub formname block
+ newFORM($2, $3, $4);
+ $$ = (OP*)NULL;
+ #endif
++ if (CvOUTSIDE(fmtcv) && !CvUNIQUE(CvOUTSIDE(fmtcv))) {
++ SvREFCNT_inc_simple_void(fmtcv);
++ pad_add_anon((SV*)fmtcv, OP_NULL);
++ }
+ }
+ ;
+
+diff --git a/t/comp/form_scope.t b/t/comp/form_scope.t
+new file mode 100644
+index 0000000..3ef891e
+--- /dev/null
++++ b/t/comp/form_scope.t
+@@ -0,0 +1,18 @@
++#!./perl
++#
++# Tests bug #22977. Test case from Dave Mitchell.
++
++print "1..2\n";
++
++sub f ($);
++sub f ($) {
++my $test = $_[0];
++write;
++format STDOUT =
++ok @<<<<<<<
++$test
++.
++}
++
++f(1);
++f(2);
+--
+tg: (daf8b46..) fixes/format-write-crash (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/hppa-thread-eagain.diff b/recipes/perl/perl-5.10.1/hppa-thread-eagain.diff
new file mode 100644
index 0000000000..b967752629
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/hppa-thread-eagain.diff
@@ -0,0 +1,72 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: make the threads-shared test suite more robust, fixing failures on hppa
+Closes: 554218
+
+Fix from threads-shared-1.31:
+ Handle thread creation failures in tests due to lack of memory, etc.
+
+
+---
+ ext/threads-shared/t/stress.t | 28 ++++++++++++++++++++++++----
+ 1 files changed, 24 insertions(+), 4 deletions(-)
+
+diff --git a/ext/threads-shared/t/stress.t b/ext/threads-shared/t/stress.t
+index e36ab0a..adfd1ed 100755
+--- a/ext/threads-shared/t/stress.t
++++ b/ext/threads-shared/t/stress.t
+@@ -39,7 +39,11 @@ use threads::shared;
+ my $mutex = 1;
+ share($mutex);
+
++ my $warning;
++ $SIG{__WARN__} = sub { $warning = shift; };
++
+ my @threads;
++
+ for (reverse(1..$cnt)) {
+ $threads[$_] = threads->create(sub {
+ my $tnum = shift;
+@@ -71,10 +75,26 @@ use threads::shared;
+ cond_broadcast($mutex);
+ return ('okay');
+ }, $_);
++
++ # Handle thread creation failures
++ if ($warning) {
++ my $printit = 1;
++ if ($warning =~ /returned 11/) {
++ $warning = "Thread creation failed due to 'No more processes'\n";
++ $printit = (! $ENV{'PERL_CORE'});
++ } elsif ($warning =~ /returned 12/) {
++ $warning = "Thread creation failed due to 'No more memory'\n";
++ $printit = (! $ENV{'PERL_CORE'});
++ }
++ print(STDERR "# Warning: $warning") if ($printit);
++ lock($mutex);
++ $mutex = $_ + 1;
++ last;
++ }
+ }
+
+ # Gather thread results
+- my ($okay, $failures, $timeouts, $unknown) = (0, 0, 0, 0);
++ my ($okay, $failures, $timeouts, $unknown) = (0, 0, 0, 0, 0);
+ for (1..$cnt) {
+ if (! $threads[$_]) {
+ $failures++;
+@@ -92,10 +112,10 @@ use threads::shared;
+ }
+ }
+ }
++
+ if ($failures) {
+- # Most likely due to running out of memory
+- print(STDERR "# Warning: $failures threads failed\n");
+- print(STDERR "# Note: errno 12 = ENOMEM\n");
++ my $only = $cnt - $failures;
++ print(STDERR "# Warning: Intended to use $cnt threads, but could only muster $only\n");
+ $cnt -= $failures;
+ }
+
+--
+tg: (daf8b46..) fixes/hppa-thread-eagain (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/hurd-ccflags.diff b/recipes/perl/perl-5.10.1/hurd-ccflags.diff
new file mode 100644
index 0000000000..b103154aa3
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/hurd-ccflags.diff
@@ -0,0 +1,26 @@
+Author: Samuel Thibault <sthibault@debian.org>
+Subject: Make hints/gnu.sh append to $ccflags rather than overriding them
+Bug-Debian: http://bugs.debian.org/587901
+
+Don't override possible extra $ccflags values given to Configure
+on GNU/Hurd.
+
+---
+ hints/gnu.sh | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/hints/gnu.sh b/hints/gnu.sh
+index 2cfce54..c1ba2db 100644
+--- a/hints/gnu.sh
++++ b/hints/gnu.sh
+@@ -19,7 +19,7 @@ lddlflags='-shared'
+ ccdlflags='-Wl,-E'
+
+ # Debian bug #258618
+-ccflags='-D_GNU_SOURCE'
++ccflags="-D_GNU_SOURCE $ccflags"
+
+ # The following routines are only available as stubs in GNU libc.
+ # XXX remove this once metaconf detects the GNU libc stubs.
+--
+tg: (daf8b46..) fixes/hurd-ccflags (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/hurd_cppsymbols.diff b/recipes/perl/perl-5.10.1/hurd_cppsymbols.diff
new file mode 100644
index 0000000000..d4802319c9
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/hurd_cppsymbols.diff
@@ -0,0 +1,25 @@
+From: Samuel Thibault <sthibault@debian.org>
+Subject: Add gcc predefined macros to $Config{cppsymbols} on GNU/Hurd.
+Bug-Debian: http://bugs.debian.org/544307
+Origin: http://perl5.git.perl.org/perl.git/commit/eeb92b76fda504cc34bcd98ba2dbc73d933c0208
+
+
+---
+ Configure | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/Configure b/Configure
+index 5e863b3..eed6f9b 100755
+--- a/Configure
++++ b/Configure
+@@ -21375,7 +21375,7 @@ $eunicefix Cppsym.try
+ ./Cppsym < Cppsym.know > Cppsym.true
+ : Add in any linux cpp "predefined macros":
+ case "$osname::$gccversion" in
+- *linux*::*.*|*gnukfreebsd*::*.*)
++ *linux*::*.*|*gnukfreebsd*::*.*|gnu::*.*)
+ tHdrH=_tmpHdr
+ rm -f $tHdrH'.h' $tHdrH
+ touch $tHdrH'.h'
+--
+tg: (89dcf0f..) fixes/hurd_cppsymbols (depends on: fixes/kfreebsd_cppsymbols)
diff --git a/recipes/perl/perl-5.10.1/instmodsh_doc.diff b/recipes/perl/perl-5.10.1/instmodsh_doc.diff
new file mode 100644
index 0000000000..10b743d32c
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/instmodsh_doc.diff
@@ -0,0 +1,26 @@
+Subject: Debian policy doesn't install .packlist files for core or vendor.
+
+
+---
+ lib/ExtUtils/instmodsh | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+diff --git a/lib/ExtUtils/instmodsh b/lib/ExtUtils/instmodsh
+index 5874aa6..6a2f03e 100644
+--- a/lib/ExtUtils/instmodsh
++++ b/lib/ExtUtils/instmodsh
+@@ -18,9 +18,11 @@ instmodsh - A shell to examine installed modules
+
+ =head1 DESCRIPTION
+
+-A little interface to ExtUtils::Installed to examine installed modules,
++A little interface to ExtUtils::Installed to examine locally* installed modules,
+ validate your packlists and even create a tarball from an installed module.
+
++*On Debian system, B<core> and B<vendor> modules are managed by C<dpkg>.
++
+ =head1 SEE ALSO
+
+ ExtUtils::Installed
+--
+tg: (daf8b46..) debian/instmodsh_doc (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/kfreebsd-filecopy-pipes.diff b/recipes/perl/perl-5.10.1/kfreebsd-filecopy-pipes.diff
new file mode 100644
index 0000000000..839d06465e
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/kfreebsd-filecopy-pipes.diff
@@ -0,0 +1,68 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Fix File::Copy::copy with pipes on GNU/kFreeBSD
+Bug-Debian: http://bugs.debian.org/537555
+Origin: upstream, http://perl5.git.perl.org/perl.git/commit/16f708c9bc0dc48713b200031295a40bed83bbfc
+
+Quoting Petr Salinger:
+The Copy tries to detect whether source and dest are the same files.
+Unfortunately, on the GNU/kFreeBSD the kernel returns for all pipes
+as device and inode numbers just zero. See pipe_stat() in
+http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/sys_pipe.c
+
+Patch by Petr Salinger, tests by Niko Tyni.
+
+Backported from blead change 16f708c9bc0dc48713b200031295a40bed83bbfc
+
+---
+ lib/File/Copy.pm | 2 +-
+ lib/File/Copy.t | 15 ++++++++++++++-
+ 2 files changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/lib/File/Copy.pm b/lib/File/Copy.pm
+index e1d7724..1da5437 100644
+--- a/lib/File/Copy.pm
++++ b/lib/File/Copy.pm
+@@ -115,7 +115,7 @@ sub copy {
+ my @fs = stat($from);
+ if (@fs) {
+ my @ts = stat($to);
+- if (@ts && $fs[0] == $ts[0] && $fs[1] == $ts[1]) {
++ if (@ts && $fs[0] == $ts[0] && $fs[1] == $ts[1] && !-p $from) {
+ carp("'$from' and '$to' are identical (not copied)");
+ return 0;
+ }
+diff --git a/lib/File/Copy.t b/lib/File/Copy.t
+index bcfa207..2e5ce9c 100755
+--- a/lib/File/Copy.t
++++ b/lib/File/Copy.t
+@@ -14,7 +14,7 @@ use Test::More;
+
+ my $TB = Test::More->builder;
+
+-plan tests => 115;
++plan tests => 117;
+
+ # We're going to override rename() later on but Perl has to see an override
+ # at compile time to honor it.
+@@ -272,6 +272,19 @@ for my $cross_partition_test (0..1) {
+ }
+ }
+
++SKIP: {
++ skip("fork required to test pipe copying", 2)
++ if (!$Config{'d_fork'});
++
++ open(my $IN, "-|") || exec $^X, '-e', 'print "Hello, world!\n"';
++ open(my $OUT, "|-") || exec $^X, '-ne', 'exit(/Hello/ ? 55 : 0)';
++
++ ok(copy($IN, $OUT), "copy pipe to another");
++ close($OUT);
++ is($? >> 8, 55, "content copied through the pipes");
++ close($IN);
++}
++
+ END {
+ 1 while unlink "file-$$";
+ 1 while unlink "lib/file-$$";
+--
+tg: (daf8b46..) fixes/kfreebsd-filecopy-pipes (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/kfreebsd_cppsymbols.diff b/recipes/perl/perl-5.10.1/kfreebsd_cppsymbols.diff
new file mode 100644
index 0000000000..41c43b12dc
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/kfreebsd_cppsymbols.diff
@@ -0,0 +1,28 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Add gcc predefined macros to $Config{cppsymbols} on GNU/kFreeBSD.
+Bug-Debian: http://bugs.debian.org/533098
+Origin: upstream, http://perl5.git.perl.org/perl.git/commit/3b910a06633f63976a6da223b122193040fbe96d
+
+This is needed at least by h2ph, otherwise the generated .ph files
+choke on missing __LONG_MAX__ and similar definitions.
+
+
+---
+ Configure | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/Configure b/Configure
+index 01fa3c0..5e863b3 100755
+--- a/Configure
++++ b/Configure
+@@ -21375,7 +21375,7 @@ $eunicefix Cppsym.try
+ ./Cppsym < Cppsym.know > Cppsym.true
+ : Add in any linux cpp "predefined macros":
+ case "$osname::$gccversion" in
+- *linux*::*.*)
++ *linux*::*.*|*gnukfreebsd*::*.*)
+ tHdrH=_tmpHdr
+ rm -f $tHdrH'.h' $tHdrH
+ touch $tHdrH'.h'
+--
+tg: (daf8b46..) fixes/kfreebsd_cppsymbols (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/ld_run_path.diff b/recipes/perl/perl-5.10.1/ld_run_path.diff
new file mode 100644
index 0000000000..8ab25c9481
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/ld_run_path.diff
@@ -0,0 +1,23 @@
+Subject: Remove standard libs from LD_RUN_PATH as per Debian policy.
+
+
+---
+ lib/ExtUtils/Liblist/Kid.pm | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/lib/ExtUtils/Liblist/Kid.pm b/lib/ExtUtils/Liblist/Kid.pm
+index 380d4f8..6e6ed5a 100644
+--- a/lib/ExtUtils/Liblist/Kid.pm
++++ b/lib/ExtUtils/Liblist/Kid.pm
+@@ -53,6 +53,9 @@ sub _unix_os2_ext {
+ my($pwd) = cwd(); # from Cwd.pm
+ my($found) = 0;
+
++ # Debian-specific: don't use LD_RUN_PATH for standard dirs
++ $ld_run_path_seen{$_}++ for qw(/lib /usr/lib /usr/X11R6/lib);
++
+ foreach my $thislib (split ' ', $potential_libs) {
+
+ # Handle possible linker path arguments.
+--
+tg: (daf8b46..) debian/ld_run_path (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/libnet_config_path.diff b/recipes/perl/perl-5.10.1/libnet_config_path.diff
new file mode 100644
index 0000000000..da7a4c1c30
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/libnet_config_path.diff
@@ -0,0 +1,35 @@
+Subject: Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.
+
+
+---
+ lib/Net/Config.pm | 7 +++----
+ 1 files changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/lib/Net/Config.pm b/lib/Net/Config.pm
+index db51c1f..8404593 100644
+--- a/lib/Net/Config.pm
++++ b/lib/Net/Config.pm
+@@ -57,9 +57,8 @@ my %nc = (
+ }
+ TRY_INTERNET_CONFIG
+
+-my $file = __FILE__;
++my $file = '/etc/perl/Net/libnet.cfg';
+ my $ref;
+-$file =~ s/Config.pm/libnet.cfg/;
+ if (-f $file) {
+ $ref = eval { local $SIG{__DIE__}; do $file };
+ if (ref($ref) eq 'HASH') {
+@@ -132,8 +131,8 @@ Net::Config - Local configuration data for libnet
+ C<Net::Config> holds configuration data for the modules in the libnet
+ distribution. During installation you will be asked for these values.
+
+-The configuration data is held globally in a file in the perl installation
+-tree, but a user may override any of these values by providing their own. This
++The configuration data is held globally in C</etc/perl/Net/libnet.cfg>,
++but a user may override any of these values by providing their own. This
+ can be done by having a C<.libnetrc> file in their home directory. This file
+ should return a reference to a HASH containing the keys described below.
+ For example
+--
+tg: (daf8b46..) debian/libnet_config_path (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/m68k_thread_stress.diff b/recipes/perl/perl-5.10.1/m68k_thread_stress.diff
new file mode 100644
index 0000000000..f45fa36c50
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/m68k_thread_stress.diff
@@ -0,0 +1,43 @@
+Subject: Disable some threads tests on m68k for now due to missing TLS.
+Closes: #495826, #517938
+
+
+---
+ ext/threads-shared/t/stress.t | 4 ++++
+ ext/threads-shared/t/waithires.t | 6 ++++++
+ 2 files changed, 10 insertions(+), 0 deletions(-)
+
+diff --git a/ext/threads-shared/t/stress.t b/ext/threads-shared/t/stress.t
+index e36ab0a..eb591ff 100755
+--- a/ext/threads-shared/t/stress.t
++++ b/ext/threads-shared/t/stress.t
+@@ -11,6 +11,10 @@ BEGIN {
+ print("1..0 # SKIP Broken under HP-UX 10.20\n");
+ exit(0);
+ }
++ if ($^O eq 'linux' && $Config{archname} =~ /^m68k/) {
++ print("1..0 # Skip: no TLS on m68k yet <http://bugs.debian.org/495826>\n");
++ exit(0);
++ }
+ }
+
+ use ExtUtils::testlib;
+diff --git a/ext/threads-shared/t/waithires.t b/ext/threads-shared/t/waithires.t
+index ae82448..e17c471 100755
+--- a/ext/threads-shared/t/waithires.t
++++ b/ext/threads-shared/t/waithires.t
+@@ -16,6 +16,12 @@ BEGIN {
+ if (! eval 'use Time::HiRes "time"; 1') {
+ Test::skip_all('Time::HiRes not available');
+ }
++
++ if ($^O eq 'linux' && $Config{archname} =~ /^m68k/) {
++ print("1..0 # Skip: no TLS on m68k yet <http://bugs.debian.org/495826>\n");
++ exit(0);
++ }
++
+ }
+
+ use ExtUtils::testlib;
+--
+tg: (daf8b46..) debian/m68k_thread_stress (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/mod_paths.diff b/recipes/perl/perl-5.10.1/mod_paths.diff
new file mode 100644
index 0000000000..c32f3dea14
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/mod_paths.diff
@@ -0,0 +1,117 @@
+Subject: Tweak @INC ordering for Debian
+
+Our order is:
+
+ etc (for config files)
+ site (5.8.1)
+ vendor (all)
+ core (5.8.1)
+ site (version-indep)
+ site (pre-5.8.1)
+
+The rationale being that an admin (via site), or module packager
+(vendor) can chose to shadow core modules when there is a newer
+version than is included in core.
+
+
+---
+ perl.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 62 insertions(+), 0 deletions(-)
+
+diff --git a/perl.c b/perl.c
+index 94f2b13..5a6744a 100644
+--- a/perl.c
++++ b/perl.c
+@@ -4879,9 +4879,14 @@ S_init_perllib(pTHX)
+ incpush(APPLLIB_EXP, TRUE, TRUE, TRUE, TRUE);
+ #endif
+
++#ifdef DEBIAN
++ /* for configuration where /usr is mounted ro (CPAN::Config, Net::Config) */
++ incpush("/etc/perl", FALSE, FALSE, FALSE, FALSE);
++#else
+ #ifdef ARCHLIB_EXP
+ incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE, TRUE);
+ #endif
++#endif
+ #ifdef MACOS_TRADITIONAL
+ {
+ Stat_t tmpstatbuf;
+@@ -4906,11 +4911,13 @@ S_init_perllib(pTHX)
+ #ifndef PRIVLIB_EXP
+ # define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl"
+ #endif
++#ifndef DEBIAN
+ #if defined(WIN32)
+ incpush(PRIVLIB_EXP, TRUE, FALSE, TRUE, TRUE);
+ #else
+ incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE, TRUE);
+ #endif
++#endif
+
+ #ifdef SITEARCH_EXP
+ /* sitearch is always relative to sitelib on Windows for
+@@ -4954,6 +4961,61 @@ S_init_perllib(pTHX)
+ incpush(PERL_VENDORLIB_STEM, FALSE, TRUE, TRUE, TRUE);
+ #endif
+
++#ifdef DEBIAN
++ incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE, FALSE);
++ incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE, FALSE);
++
++ /* Non-versioned site directory for local modules and for
++ compatability with the previous packages' site dirs */
++ incpush("/usr/local/lib/site_perl", TRUE, FALSE, FALSE, FALSE);
++
++#ifdef PERL_INC_VERSION_LIST
++ {
++ struct stat s;
++
++ /* add small buffer in case old versions are longer than the
++ current version */
++ char sitearch[sizeof(SITEARCH_EXP)+16] = SITEARCH_EXP;
++ char sitelib[sizeof(SITELIB_EXP)+16] = SITELIB_EXP;
++ char const *vers[] = { PERL_INC_VERSION_LIST };
++ char const **p;
++
++ char *arch_vers = strrchr(sitearch, '/');
++ char *lib_vers = strrchr(sitelib, '/');
++
++ if (arch_vers && isdigit(*++arch_vers))
++ *arch_vers = 0;
++ else
++ arch_vers = 0;
++
++ if (lib_vers && isdigit(*++lib_vers))
++ *lib_vers = 0;
++ else
++ lib_vers = 0;
++
++ /* there is some duplication here as incpush does something
++ similar internally, but required as sitearch is not a
++ subdirectory of sitelib */
++ for (p = vers; *p; p++)
++ {
++ if (arch_vers)
++ {
++ strcpy(arch_vers, *p);
++ if (PerlLIO_stat(sitearch, &s) >= 0 && S_ISDIR(s.st_mode))
++ incpush(sitearch, FALSE, FALSE, FALSE, FALSE);
++ }
++
++ if (lib_vers)
++ {
++ strcpy(lib_vers, *p);
++ if (PerlLIO_stat(sitelib, &s) >= 0 && S_ISDIR(s.st_mode))
++ incpush(sitelib, FALSE, FALSE, FALSE, FALSE);
++ }
++ }
++ }
++#endif
++#endif
++
+ #ifdef PERL_OTHERLIBDIRS
+ incpush(PERL_OTHERLIBDIRS, TRUE, TRUE, TRUE, TRUE);
+ #endif
+--
+tg: (daf8b46..) debian/mod_paths (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/module_build_man_extensions.diff b/recipes/perl/perl-5.10.1/module_build_man_extensions.diff
new file mode 100644
index 0000000000..bbe53a618d
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/module_build_man_extensions.diff
@@ -0,0 +1,31 @@
+Subject: Adjust Module::Build manual page extensions for the Debian Perl policy
+Bug-Debian: http://bugs.debian.org/479460
+
+---
+ lib/Module/Build/Base.pm | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/Module/Build/Base.pm b/lib/Module/Build/Base.pm
+index ade64c8..b580423 100644
+--- a/lib/Module/Build/Base.pm
++++ b/lib/Module/Build/Base.pm
+@@ -2732,7 +2732,7 @@ sub manify_bin_pods {
+ foreach my $file (keys %$files) {
+ # Pod::Simple based parsers only support one document per instance.
+ # This is expected to change in a future version (Pod::Simple > 3.03).
+- my $parser = Pod::Man->new( section => 1 ); # binaries go in section 1
++ my $parser = Pod::Man->new( section => '1p' ); # binaries go in section 1p
+ my $manpage = $self->man1page_name( $file ) . '.' .
+ $self->config( 'man1ext' );
+ my $outfile = File::Spec->catfile($mandir, $manpage);
+@@ -2756,7 +2756,7 @@ sub manify_lib_pods {
+ while (my ($file, $relfile) = each %$files) {
+ # Pod::Simple based parsers only support one document per instance.
+ # This is expected to change in a future version (Pod::Simple > 3.03).
+- my $parser = Pod::Man->new( section => 3 ); # libraries go in section 3
++ my $parser = Pod::Man->new( section => '3pm' ); # libraries go in section 3pm
+ my $manpage = $self->man3page_name( $relfile ) . '.' .
+ $self->config( 'man3ext' );
+ my $outfile = File::Spec->catfile( $mandir, $manpage);
+--
+tg: (daf8b46..) debian/module_build_man_extensions (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/net_smtp_docs.diff b/recipes/perl/perl-5.10.1/net_smtp_docs.diff
new file mode 100644
index 0000000000..520172f831
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/net_smtp_docs.diff
@@ -0,0 +1,23 @@
+Subject: Document the Net::SMTP 'Port' option
+Bug-Debian: http://bugs.debian.org/100195
+Bug: http://rt.cpan.org/Public/Bug/Display.html?id=36038
+
+
+---
+ lib/Net/SMTP.pm | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/lib/Net/SMTP.pm b/lib/Net/SMTP.pm
+index a28496d..07b2498 100644
+--- a/lib/Net/SMTP.pm
++++ b/lib/Net/SMTP.pm
+@@ -625,6 +625,7 @@ Net::SMTP will attempt to extract the address from the value passed.
+
+ B<Debug> - Enable debugging information
+
++B<Port> - Select a port on the remote host to connect to (default is 25)
+
+ Example:
+
+--
+tg: (daf8b46..) fixes/net_smtp_docs (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/perl_5.10.1-8.diff.gz b/recipes/perl/perl-5.10.1/perl_5.10.1-8.diff.gz
deleted file mode 100644
index 011fd5f296..0000000000
--- a/recipes/perl/perl-5.10.1/perl_5.10.1-8.diff.gz
+++ /dev/null
Binary files differ
diff --git a/recipes/perl/perl-5.10.1/perl_synopsis.diff b/recipes/perl/perl-5.10.1/perl_synopsis.diff
new file mode 100644
index 0000000000..584a065ba2
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/perl_synopsis.diff
@@ -0,0 +1,96 @@
+Subject: Rearrange perl.pod
+Bug-Debian: http://bugs.debian.org/278323
+
+The TOC in perl.pod should probably not be in the synopsis.
+
+Note the debian/ prefix rather than fixes/ since upstream doesn't agree.
+
+
+---
+ pod/perl.pod | 64 +++++++++++++++++++++++++++++-----------------------------
+ 1 files changed, 32 insertions(+), 32 deletions(-)
+
+diff --git a/pod/perl.pod b/pod/perl.pod
+index 939c683..9bc461d 100644
+--- a/pod/perl.pod
++++ b/pod/perl.pod
+@@ -16,6 +16,38 @@ B<perl> S<[ B<-sTtuUWX> ]>
+ S<[ B<-i>[I<extension>] ]>
+ S<[ [B<-e>|B<-E>] I<'command'> ] [ B<--> ] [ I<programfile> ] [ I<argument> ]...>
+
++=head1 DESCRIPTION
++
++Perl is a language optimized for scanning arbitrary
++text files, extracting information from those text files, and printing
++reports based on that information. It's also a good language for many
++system management tasks. The language is intended to be practical
++(easy to use, efficient, complete) rather than beautiful (tiny,
++elegant, minimal).
++
++Perl combines (in the author's opinion, anyway) some of the best
++features of C, B<sed>, B<awk>, and B<sh>, so people familiar with
++those languages should have little difficulty with it. (Language
++historians will also note some vestiges of B<csh>, Pascal, and even
++BASIC-PLUS.) Expression syntax corresponds closely to C
++expression syntax. Unlike most Unix utilities, Perl does not
++arbitrarily limit the size of your data--if you've got the memory,
++Perl can slurp in your whole file as a single string. Recursion is of
++unlimited depth. And the tables used by hashes (sometimes called
++"associative arrays") grow as necessary to prevent degraded
++performance. Perl can use sophisticated pattern matching techniques to
++scan large amounts of data quickly. Although optimized for
++scanning text, Perl can also deal with binary data, and can make dbm
++files look like hashes. Setuid Perl scripts are safer than C programs
++through a dataflow tracing mechanism that prevents many stupid
++security holes.
++
++If you have a problem that would ordinarily use B<sed> or B<awk> or
++B<sh>, but it exceeds their capabilities or must run a little faster,
++and you don't want to write the silly thing in C, then Perl may be for
++you. There are also translators to turn your B<sed> and B<awk>
++scripts into Perl scripts.
++
+ If you're new to Perl, you should start with L<perlintro>, which is a
+ general intro for beginners and provides some background to help you
+ navigate the rest of Perl's extensive documentation.
+@@ -258,38 +290,6 @@ If something strange has gone wrong with your program and you're not
+ sure where you should look for help, try the B<-w> switch first. It
+ will often point out exactly where the trouble is.
+
+-=head1 DESCRIPTION
+-
+-Perl is a language optimized for scanning arbitrary
+-text files, extracting information from those text files, and printing
+-reports based on that information. It's also a good language for many
+-system management tasks. The language is intended to be practical
+-(easy to use, efficient, complete) rather than beautiful (tiny,
+-elegant, minimal).
+-
+-Perl combines (in the author's opinion, anyway) some of the best
+-features of C, B<sed>, B<awk>, and B<sh>, so people familiar with
+-those languages should have little difficulty with it. (Language
+-historians will also note some vestiges of B<csh>, Pascal, and even
+-BASIC-PLUS.) Expression syntax corresponds closely to C
+-expression syntax. Unlike most Unix utilities, Perl does not
+-arbitrarily limit the size of your data--if you've got the memory,
+-Perl can slurp in your whole file as a single string. Recursion is of
+-unlimited depth. And the tables used by hashes (sometimes called
+-"associative arrays") grow as necessary to prevent degraded
+-performance. Perl can use sophisticated pattern matching techniques to
+-scan large amounts of data quickly. Although optimized for
+-scanning text, Perl can also deal with binary data, and can make dbm
+-files look like hashes. Setuid Perl scripts are safer than C programs
+-through a dataflow tracing mechanism that prevents many stupid
+-security holes.
+-
+-If you have a problem that would ordinarily use B<sed> or B<awk> or
+-B<sh>, but it exceeds their capabilities or must run a little faster,
+-and you don't want to write the silly thing in C, then Perl may be for
+-you. There are also translators to turn your B<sed> and B<awk>
+-scripts into Perl scripts.
+-
+ But wait, there's more...
+
+ Begun in 1993 (see L<perlhist>), Perl version 5 is nearly a complete
+--
+tg: (daf8b46..) debian/perl_synopsis (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/perlivp.diff b/recipes/perl/perl-5.10.1/perlivp.diff
new file mode 100644
index 0000000000..bf5c728a5d
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/perlivp.diff
@@ -0,0 +1,38 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Make perlivp skip include directories in /usr/local
+Closes: 510895
+
+On Sat, Jan 10, 2009 at 12:37:18AM +1100, Brendan O'Dea wrote:
+> On Wed, Jan 7, 2009 at 12:21 AM, Niko Tyni <ntyni@debian.org> wrote:
+
+> > We could create the directories in a postinst script, but I'm not sure
+> > I see the point. They will be created automatically when installing
+> > CPAN modules.
+>
+> The directories are intentionally not created, as this way they are
+> excluded from the search path at start-up, saving a bunch of wasted
+> stats at use/require time in the common case that the user has not
+> installed any local packages. As Niko points out, they will be
+> created as required.
+
+
+Signed-off-by: Niko Tyni <ntyni@debian.org>
+
+---
+ utils/perlivp.PL | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/utils/perlivp.PL b/utils/perlivp.PL
+index 762b4b3..20f6579 100644
+--- a/utils/perlivp.PL
++++ b/utils/perlivp.PL
+@@ -142,6 +142,7 @@ my $INC_total = 0;
+ my $INC_there = 0;
+ foreach (@INC) {
+ next if $_ eq '.'; # skip -d test here
++ next if m|/usr/local|; # not shipped on Debian
+ if ($^O eq 'MacOS') {
+ next if $_ eq ':'; # skip -d test here
+ next if $_ eq 'Dev:Pseudo:'; # why is this in @INC?
+--
+tg: (daf8b46..) debian/perlivp (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/pod2man-index-backslash.diff b/recipes/perl/perl-5.10.1/pod2man-index-backslash.diff
new file mode 100644
index 0000000000..30708e9edb
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/pod2man-index-backslash.diff
@@ -0,0 +1,54 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Escape backslashes in .IX entries
+Bug-Debian: http://bugs.debian.org/521256
+Origin: upstream, http://git.eyrie.org/?p=perl/podlators.git;a=commit;h=8de2177170c79800d81d480227643c1c2ce84a0a
+
+Applicable parts of podlators upstream git commit
+release/2.2.2-6-g8de2177
+
+
+---
+ lib/Pod/Man.pm | 1 +
+ lib/Pod/t/man.t | 11 ++++++++++-
+ 2 files changed, 11 insertions(+), 1 deletions(-)
+
+diff --git a/lib/Pod/Man.pm b/lib/Pod/Man.pm
+index 71a4d7a..7662935 100644
+--- a/lib/Pod/Man.pm
++++ b/lib/Pod/Man.pm
+@@ -712,6 +712,7 @@ sub outindex {
+ for (@output) {
+ my ($type, $entry) = @$_;
+ $entry =~ s/\"/\"\"/g;
++ $entry =~ s/\\/\\\\/g;
+ $self->output (".IX $type " . '"' . $entry . '"' . "\n");
+ }
+ }
+diff --git a/lib/Pod/t/man.t b/lib/Pod/t/man.t
+index 419cce3..c4588bc 100755
+--- a/lib/Pod/t/man.t
++++ b/lib/Pod/t/man.t
+@@ -17,7 +17,7 @@ BEGIN {
+ }
+ unshift (@INC, '../blib/lib');
+ $| = 1;
+- print "1..25\n";
++ print "1..26\n";
+ }
+
+ END {
+@@ -482,3 +482,12 @@ Some raw nroff.
+ .PP
+ More text.
+ ###
++=head1 INDEX
++
++Index entry matching a whitespace escape.X<\n>
++###
++.SH "INDEX"
++.IX Header "INDEX"
++Index entry matching a whitespace escape.
++.IX Xref "\\n"
++###
+--
+tg: (daf8b46..) fixes/pod2man-index-backslash (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/positive-gpos.diff b/recipes/perl/perl-5.10.1/positive-gpos.diff
new file mode 100644
index 0000000000..f9e355e9ef
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/positive-gpos.diff
@@ -0,0 +1,36 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Fix \G crash on first match
+Bug-Debian: http://bugs.debian.org/545234
+Bug: http://rt.perl.org/rt3/Public/Bug/Display.html?id=69056
+Origin: upstream, http://perl5.git.perl.org/perl.git/commit/c584a96ef5d541fd119f21c2c77f6ffe2b2c0370
+
+
+---
+ regexec.c | 5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+diff --git a/regexec.c b/regexec.c
+index 7a42c4f..5beb8ca 100644
+--- a/regexec.c
++++ b/regexec.c
+@@ -1853,6 +1853,8 @@ Perl_regexec_flags(pTHX_ REGEXP * const prog, char *stringarg, register char *st
+ if (s > reginfo.ganch)
+ goto phooey;
+ s = reginfo.ganch - prog->gofs;
++ if (s < strbeg)
++ goto phooey;
+ }
+ }
+ else if (data) {
+@@ -1928,7 +1930,8 @@ Perl_regexec_flags(pTHX_ REGEXP * const prog, char *stringarg, register char *st
+ is bogus -- we set it above, when prog->extflags & RXf_GPOS_SEEN
+ and we only enter this block when the same bit is set. */
+ char *tmp_s = reginfo.ganch - prog->gofs;
+- if (regtry(&reginfo, &tmp_s))
++
++ if (tmp_s >= strbeg && regtry(&reginfo, &tmp_s))
+ goto got_it;
+ goto phooey;
+ }
+--
+tg: (daf8b46..) fixes/positive-gpos (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/processPL.diff b/recipes/perl/perl-5.10.1/processPL.diff
new file mode 100644
index 0000000000..3e48df124a
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/processPL.diff
@@ -0,0 +1,43 @@
+Subject: Always use PERLRUNINST when building perl modules.
+Bug-Debian: http://bugs.debian.org/357264
+Bug: http://rt.cpan.org/Public/Bug/Display.html?id=17224
+
+Revert part of upstream change 24524 to always use PERLRUNINST when
+building perl modules: Some PDL demos expect blib to be implicitly
+searched.
+
+
+---
+ lib/ExtUtils/MM_Unix.pm | 5 +----
+ 1 files changed, 1 insertions(+), 4 deletions(-)
+
+diff --git a/lib/ExtUtils/MM_Unix.pm b/lib/ExtUtils/MM_Unix.pm
+index ad28b22..1f6b2ef 100644
+--- a/lib/ExtUtils/MM_Unix.pm
++++ b/lib/ExtUtils/MM_Unix.pm
+@@ -3031,14 +3031,11 @@ sub processPL {
+ # pm_to_blib depends on then it can't depend on pm_to_blib
+ # else we have a dependency loop.
+ my $pm_dep;
+- my $perlrun;
+ if( defined $self->{PM}{$target} ) {
+ $pm_dep = '';
+- $perlrun = 'PERLRUN';
+ }
+ else {
+ $pm_dep = 'pm_to_blib';
+- $perlrun = 'PERLRUNINST';
+ }
+
+ $m .= <<MAKE_FRAG;
+@@ -3047,7 +3044,7 @@ all :: $target
+ \$(NOECHO) \$(NOOP)
+
+ $target :: $plfile $pm_dep
+- \$($perlrun) $plfile $target
++ \$(PERLRUNINST) $plfile $target
+ MAKE_FRAG
+
+ }
+--
+tg: (daf8b46..) fixes/processPL (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/prune_libs.diff b/recipes/perl/perl-5.10.1/prune_libs.diff
new file mode 100644
index 0000000000..8a36eb1d70
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/prune_libs.diff
@@ -0,0 +1,36 @@
+Subject: Prune the list of libraries wanted to what we actually need.
+Bug-Debian: http://bugs.debian.org/128355
+
+We want to keep the dependencies on perl-base as small as possible,
+and some of the original list may be present on buildds (see Bug#128355).
+
+
+---
+ Configure | 5 ++---
+ 1 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/Configure b/Configure
+index 01fa3c0..1fee5c1 100755
+--- a/Configure
++++ b/Configure
+@@ -1354,8 +1354,7 @@ libswanted_uselargefiles=''
+ : set usesocks on the Configure command line to enable socks.
+ : List of libraries we want.
+ : If anyone needs extra -lxxx, put those in a hint file.
+-libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
+-libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
++libswanted='gdbm gdbm_compat db dl m c crypt'
+ : We probably want to search /usr/shlib before most other libraries.
+ : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
+ glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
+@@ -22044,7 +22043,7 @@ sunos*X4*)
+ ;;
+ *) case "$usedl" in
+ $define|true|[yY]*)
+- set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -lgdbm_compat @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
++ set X `echo " $libs " | sed -e 's@ -lgdbm @ @' -e 's@ -lgdbm_compat @ @' -e 's@ -ldb @ @'`
+ shift
+ perllibs="$*"
+ ;;
+--
+tg: (daf8b46..) debian/prune_libs (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/safe-upgrade.diff b/recipes/perl/perl-5.10.1/safe-upgrade.diff
new file mode 100644
index 0000000000..51c063eac5
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/safe-upgrade.diff
@@ -0,0 +1,836 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Upgrade Safe.pm to 2.25, fixing CVE-2010-1974
+Bug-Debian: http://bugs.debian.org/582978
+Origin: upstream
+
+Upgrade Safe.pm to 2.25, fixing CVE-2010-1974, as recommended in
+
+ http://blogs.perl.org/users/rafael_garcia-suarez/2010/03/new-safepm-fixes-security-hole.html
+
+Although 2.27 is available, its changes are more intrusive.
+
+---
+ ext/Safe/Safe.pm | 290 +++++++++++++++++++++++++++++++++-----------
+ ext/Safe/t/safe1.t | 4 -
+ ext/Safe/t/safe2.t | 4 -
+ ext/Safe/t/safe3.t | 4 -
+ ext/Safe/t/safeload.t | 4 -
+ ext/Safe/t/safeops.t | 8 +-
+ ext/Safe/t/safesort.t | 61 +++++++++
+ ext/Safe/t/safeuniversal.t | 13 +--
+ ext/Safe/t/safeutf8.t | 46 +++++++
+ ext/Safe/t/safewrap.t | 39 ++++++
+ 10 files changed, 370 insertions(+), 103 deletions(-)
+
+diff --git a/ext/Safe/Safe.pm b/ext/Safe/Safe.pm
+index ff099ec..e33598e 100644
+--- a/ext/Safe/Safe.pm
++++ b/ext/Safe/Safe.pm
+@@ -2,8 +2,10 @@ package Safe;
+
+ use 5.003_11;
+ use strict;
++use Scalar::Util qw(reftype);
++use B qw(sub_generation);
+
+-$Safe::VERSION = "2.18";
++$Safe::VERSION = "2.25";
+
+ # *** Don't declare any lexicals above this point ***
+ #
+@@ -11,18 +13,18 @@ $Safe::VERSION = "2.18";
+ # see any lexicals in scope (apart from __ExPr__ which is unavoidable)
+
+ sub lexless_anon_sub {
+- # $_[0] is package;
+- # $_[1] is strict flag;
++ # $_[0] is package;
++ # $_[1] is strict flag;
+ my $__ExPr__ = $_[2]; # must be a lexical to create the closure that
+- # can be used to pass the value into the safe
+- # world
++ # can be used to pass the value into the safe
++ # world
+
+ # Create anon sub ref in root of compartment.
+ # Uses a closure (on $__ExPr__) to pass in the code to be executed.
+ # (eval on one line to keep line numbers as expected by caller)
+ eval sprintf
+ 'package %s; %s strict; sub { @_=(); eval q[my $__ExPr__;] . $__ExPr__; }',
+- $_[0], $_[1] ? 'use' : 'no';
++ $_[0], $_[1] ? 'use' : 'no';
+ }
+
+ use Carp;
+@@ -38,6 +40,23 @@ use Opcode 1.01, qw(
+
+ *ops_to_opset = \&opset; # Temporary alias for old Penguins
+
++# Regular expressions and other unicode-aware code may need to call
++# utf8->SWASHNEW (via perl's utf8.c). That will fail unless we share the
++# SWASHNEW method.
++# Sadly we can't just add utf8::SWASHNEW to $default_share because perl's
++# utf8.c code does a fetchmethod on SWASHNEW to check if utf8.pm is loaded,
++# and sharing makes it look like the method exists.
++# The simplest and most robust fix is to ensure the utf8 module is loaded when
++# Safe is loaded. Then we can add utf8::SWASHNEW to $default_share.
++require utf8;
++# we must ensure that utf8_heavy.pl, where SWASHNEW is defined, is loaded
++# but without depending on knowledge of that implementation detail.
++# This code (//i on a unicode string) ensures utf8 is fully loaded
++# and also loads the ToFold SWASH.
++# (Swashes are cached internally by perl in PL_utf8_* variables
++# independent of being inside/outside of Safe. So once loaded they can be)
++do { my $unicode = pack('U',0xC4).'1a'; $unicode =~ /\xE4/i; };
++# now we can safely include utf8::SWASHNEW in $default_share defined below.
+
+ my $default_root = 0;
+ # share *_ and functions defined in universal.c
+@@ -57,10 +76,15 @@ my $default_share = [qw[
+ &utf8::downgrade
+ &utf8::native_to_unicode
+ &utf8::unicode_to_native
++ &utf8::SWASHNEW
+ $version::VERSION
+ $version::CLASS
++ $version::STRICT
++ $version::LAX
+ @version::ISA
+-], ($] >= 5.008001 && qw[
++], ($] < 5.010 && qw[
++ &utf8::SWASHGET
++]), ($] >= 5.008001 && qw[
+ &Regexp::DESTROY
+ ]), ($] >= 5.010 && qw[
+ &re::is_regexp
+@@ -93,6 +117,11 @@ my $default_share = [qw[
+ &version::noop
+ &version::is_alpha
+ &version::qv
++ &version::vxs::declare
++ &version::vxs::qv
++ &version::vxs::_VERSION
++ &version::vxs::new
++ &version::vxs::parse
+ ]), ($] >= 5.011 && qw[
+ &re::regexp_pattern
+ ])];
+@@ -103,14 +132,14 @@ sub new {
+ bless $obj, $class;
+
+ if (defined($root)) {
+- croak "Can't use \"$root\" as root name"
+- if $root =~ /^main\b/ or $root !~ /^\w[:\w]*$/;
+- $obj->{Root} = $root;
+- $obj->{Erase} = 0;
++ croak "Can't use \"$root\" as root name"
++ if $root =~ /^main\b/ or $root !~ /^\w[:\w]*$/;
++ $obj->{Root} = $root;
++ $obj->{Erase} = 0;
+ }
+ else {
+- $obj->{Root} = "Safe::Root".$default_root++;
+- $obj->{Erase} = 1;
++ $obj->{Root} = "Safe::Root".$default_root++;
++ $obj->{Erase} = 1;
+ }
+
+ # use permit/deny methods instead till interface issues resolved
+@@ -125,7 +154,9 @@ sub new {
+ # the whole glob *_ rather than $_ and @_ separately, otherwise
+ # @_ in non default packages within the compartment don't work.
+ $obj->share_from('main', $default_share);
++
+ Opcode::_safe_pkg_prep($obj->{Root}) if($Opcode::VERSION > 1.04);
++
+ return $obj;
+ }
+
+@@ -140,7 +171,7 @@ sub erase {
+ my ($stem, $leaf);
+
+ no strict 'refs';
+- $pkg = "main::$pkg\::"; # expand to full symbol table name
++ $pkg = "main::$pkg\::"; # expand to full symbol table name
+ ($stem, $leaf) = $pkg =~ m/(.*::)(\w+::)$/;
+
+ # The 'my $foo' is needed! Without it you get an
+@@ -149,7 +180,7 @@ sub erase {
+
+ #warn "erase($pkg) stem=$stem, leaf=$leaf";
+ #warn " stem_symtab hash ".scalar(%$stem_symtab)."\n";
+- # ", join(', ', %$stem_symtab),"\n";
++ # ", join(', ', %$stem_symtab),"\n";
+
+ # delete $stem_symtab->{$leaf};
+
+@@ -220,12 +251,12 @@ sub dump_mask {
+ }
+
+
+-
+ sub share {
+ my($obj, @vars) = @_;
+ $obj->share_from(scalar(caller), \@vars);
+ }
+
++
+ sub share_from {
+ my $obj = shift;
+ my $pkg = shift;
+@@ -236,26 +267,27 @@ sub share_from {
+ no strict 'refs';
+ # Check that 'from' package actually exists
+ croak("Package \"$pkg\" does not exist")
+- unless keys %{"$pkg\::"};
++ unless keys %{"$pkg\::"};
+ my $arg;
+ foreach $arg (@$vars) {
+- # catch some $safe->share($var) errors:
+- my ($var, $type);
+- $type = $1 if ($var = $arg) =~ s/^(\W)//;
+- # warn "share_from $pkg $type $var";
+- for (1..2) { # assign twice to avoid any 'used once' warnings
+- *{$root."::$var"} = (!$type) ? \&{$pkg."::$var"}
+- : ($type eq '&') ? \&{$pkg."::$var"}
+- : ($type eq '$') ? \${$pkg."::$var"}
+- : ($type eq '@') ? \@{$pkg."::$var"}
+- : ($type eq '%') ? \%{$pkg."::$var"}
+- : ($type eq '*') ? *{$pkg."::$var"}
+- : croak(qq(Can't share "$type$var" of unknown type));
+- }
++ # catch some $safe->share($var) errors:
++ my ($var, $type);
++ $type = $1 if ($var = $arg) =~ s/^(\W)//;
++ # warn "share_from $pkg $type $var";
++ for (1..2) { # assign twice to avoid any 'used once' warnings
++ *{$root."::$var"} = (!$type) ? \&{$pkg."::$var"}
++ : ($type eq '&') ? \&{$pkg."::$var"}
++ : ($type eq '$') ? \${$pkg."::$var"}
++ : ($type eq '@') ? \@{$pkg."::$var"}
++ : ($type eq '%') ? \%{$pkg."::$var"}
++ : ($type eq '*') ? *{$pkg."::$var"}
++ : croak(qq(Can't share "$type$var" of unknown type));
++ }
+ }
+ $obj->share_record($pkg, $vars) unless $no_record or !$vars;
+ }
+
++
+ sub share_record {
+ my $obj = shift;
+ my $pkg = shift;
+@@ -264,41 +296,135 @@ sub share_record {
+ # Record shares using keys of $obj->{Shares}. See reinit.
+ @{$shares}{@$vars} = ($pkg) x @$vars if @$vars;
+ }
++
++
+ sub share_redo {
+ my $obj = shift;
+ my $shares = \%{$obj->{Shares} ||= {}};
+ my($var, $pkg);
+ while(($var, $pkg) = each %$shares) {
+- # warn "share_redo $pkg\:: $var";
+- $obj->share_from($pkg, [ $var ], 1);
++ # warn "share_redo $pkg\:: $var";
++ $obj->share_from($pkg, [ $var ], 1);
+ }
+ }
++
++
+ sub share_forget {
+ delete shift->{Shares};
+ }
+
++
+ sub varglob {
+ my ($obj, $var) = @_;
+ no strict 'refs';
+ return *{$obj->root()."::$var"};
+ }
+
++sub _clean_stash {
++ my ($root, $saved_refs) = @_;
++ $saved_refs ||= [];
++ no strict 'refs';
++ foreach my $hook (qw(DESTROY AUTOLOAD), grep /^\(/, keys %$root) {
++ push @$saved_refs, \*{$root.$hook};
++ delete ${$root}{$hook};
++ }
++
++ for (grep /::$/, keys %$root) {
++ next if \%{$root.$_} eq \%$root;
++ _clean_stash($root.$_, $saved_refs);
++ }
++}
+
+ sub reval {
+ my ($obj, $expr, $strict) = @_;
+ my $root = $obj->{Root};
+
+- my $evalsub = lexless_anon_sub($root,$strict, $expr);
+- return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub);
++ my $evalsub = lexless_anon_sub($root, $strict, $expr);
++ # propagate context
++ my $sg = sub_generation();
++ my @subret = (wantarray)
++ ? Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub)
++ : scalar Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub);
++ _clean_stash($root.'::') if $sg != sub_generation();
++ return (wantarray) ? @subret : $subret[0];
++}
++
++
++sub wrap_code_refs_within {
++ my $obj = shift;
++
++ $obj->_find_code_refs('wrap_code_ref', @_);
++}
++
++
++sub _find_code_refs {
++ my $obj = shift;
++ my $visitor = shift;
++
++ for my $item (@_) {
++ my $reftype = $item && reftype $item
++ or next;
++ if ($reftype eq 'ARRAY') {
++ $obj->_find_code_refs($visitor, @$item);
++ }
++ elsif ($reftype eq 'HASH') {
++ $obj->_find_code_refs($visitor, values %$item);
++ }
++ # XXX GLOBs?
++ elsif ($reftype eq 'CODE') {
++ $item = $obj->$visitor($item);
++ }
++ }
++}
++
++
++sub wrap_code_ref {
++ my ($obj, $sub) = @_;
++
++ # wrap code ref $sub with _safe_call_sv so that, when called, the
++ # execution will happen with the compartment fully 'in effect'.
++
++ croak "Not a CODE reference"
++ if reftype $sub ne 'CODE';
++
++ my $ret = sub {
++ my @args = @_; # lexical to close over
++ my $sub_with_args = sub { $sub->(@args) };
++
++ my @subret;
++ my $error;
++ do {
++ local $@; # needed due to perl_call_sv(sv, G_EVAL|G_KEEPERR)
++ my $sg = sub_generation();
++ @subret = (wantarray)
++ ? Opcode::_safe_call_sv($obj->{Root}, $obj->{Mask}, $sub_with_args)
++ : scalar Opcode::_safe_call_sv($obj->{Root}, $obj->{Mask}, $sub_with_args);
++ $error = $@;
++ _clean_stash($obj->{Root}.'::') if $sg != sub_generation();
++ };
++ if ($error) { # rethrow exception
++ $error =~ s/\t\(in cleanup\) //; # prefix added by G_KEEPERR
++ die $error;
++ }
++ return (wantarray) ? @subret : $subret[0];
++ };
++
++ return $ret;
+ }
+
++
+ sub rdo {
+ my ($obj, $file) = @_;
+ my $root = $obj->{Root};
+
++ my $sg = sub_generation();
+ my $evalsub = eval
+- sprintf('package %s; sub { @_ = (); do $file }', $root);
+- return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub);
++ sprintf('package %s; sub { @_ = (); do $file }', $root);
++ my @subret = (wantarray)
++ ? Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub)
++ : scalar Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub);
++ _clean_stash($root.'::') if $sg != sub_generation();
++ return (wantarray) ? @subret : $subret[0];
+ }
+
+
+@@ -390,15 +516,7 @@ of this software.
+ Your mileage will vary. If in any doubt B<do not use it>.
+
+
+-=head2 RECENT CHANGES
+-
+-The interface to the Safe module has changed quite dramatically since
+-version 1 (as supplied with Perl5.002). Study these pages carefully if
+-you have code written to use Safe version 1 because you will need to
+-makes changes.
+-
+-
+-=head2 Methods in class Safe
++=head1 METHODS
+
+ To create a new compartment, use
+
+@@ -417,9 +535,7 @@ object returned by the above constructor. The object argument
+ is implicit in each case.
+
+
+-=over 8
+-
+-=item permit (OP, ...)
++=head2 permit (OP, ...)
+
+ Permit the listed operators to be used when compiling code in the
+ compartment (in I<addition> to any operators already permitted).
+@@ -427,29 +543,30 @@ compartment (in I<addition> to any operators already permitted).
+ You can list opcodes by names, or use a tag name; see
+ L<Opcode/"Predefined Opcode Tags">.
+
+-=item permit_only (OP, ...)
++=head2 permit_only (OP, ...)
+
+ Permit I<only> the listed operators to be used when compiling code in
+ the compartment (I<no> other operators are permitted).
+
+-=item deny (OP, ...)
++=head2 deny (OP, ...)
+
+ Deny the listed operators from being used when compiling code in the
+ compartment (other operators may still be permitted).
+
+-=item deny_only (OP, ...)
++=head2 deny_only (OP, ...)
+
+ Deny I<only> the listed operators from being used when compiling code
+-in the compartment (I<all> other operators will be permitted).
++in the compartment (I<all> other operators will be permitted, so you probably
++don't want to use this method).
+
+-=item trap (OP, ...)
++=head2 trap (OP, ...)
+
+-=item untrap (OP, ...)
++=head2 untrap (OP, ...)
+
+ The trap and untrap methods are synonyms for deny and permit
+ respectfully.
+
+-=item share (NAME, ...)
++=head2 share (NAME, ...)
+
+ This shares the variable(s) in the argument list with the compartment.
+ This is almost identical to exporting variables using the L<Exporter>
+@@ -465,9 +582,9 @@ for a glob (i.e. all symbol table entries associated with "foo",
+ including scalar, array, hash, sub and filehandle).
+
+ Each NAME is assumed to be in the calling package. See share_from
+-for an alternative method (which share uses).
++for an alternative method (which C<share> uses).
+
+-=item share_from (PACKAGE, ARRAYREF)
++=head2 share_from (PACKAGE, ARRAYREF)
+
+ This method is similar to share() but allows you to explicitly name the
+ package that symbols should be shared from. The symbol names (including
+@@ -475,20 +592,29 @@ type characters) are supplied as an array reference.
+
+ $safe->share_from('main', [ '$foo', '%bar', 'func' ]);
+
++Names can include package names, which are relative to the specified PACKAGE.
++So these two calls have the same effect:
++
++ $safe->share_from('Scalar::Util', [ 'reftype' ]);
++ $safe->share_from('main', [ 'Scalar::Util::reftype' ]);
+
+-=item varglob (VARNAME)
++=head2 varglob (VARNAME)
+
+ This returns a glob reference for the symbol table entry of VARNAME in
+ the package of the compartment. VARNAME must be the B<name> of a
+-variable without any leading type marker. For example,
++variable without any leading type marker. For example:
++
++ ${$cpt->varglob('foo')} = "Hello world";
++
++has the same effect as:
+
+ $cpt = new Safe 'Root';
+ $Root::foo = "Hello world";
+- # Equivalent version which doesn't need to know $cpt's package name:
+- ${$cpt->varglob('foo')} = "Hello world";
++
++but avoids the need to know $cpt's package name.
+
+
+-=item reval (STRING, STRICT)
++=head2 reval (STRING, STRICT)
+
+ This evaluates STRING as perl code inside the compartment.
+
+@@ -553,14 +679,12 @@ the code in the compartment.
+ A similar effect applies to I<all> runtime symbol lookups in code
+ called from a compartment but not compiled within it.
+
+-
+-
+-=item rdo (FILENAME)
++=head2 rdo (FILENAME)
+
+ This evaluates the contents of file FILENAME inside the compartment.
+ See above documentation on the B<reval> method for further details.
+
+-=item root (NAMESPACE)
++=head2 root (NAMESPACE)
+
+ This method returns the name of the package that is the root of the
+ compartment's namespace.
+@@ -569,7 +693,7 @@ Note that this behaviour differs from version 1.00 of the Safe module
+ where the root module could be used to change the namespace. That
+ functionality has been withdrawn pending deeper consideration.
+
+-=item mask (MASK)
++=head2 mask (MASK)
+
+ This is a get-or-set method for the compartment's operator mask.
+
+@@ -579,14 +703,34 @@ the compartment.
+ With the MASK argument present, it sets the operator mask for the
+ compartment (equivalent to calling the deny_only method).
+
+-=back
++=head2 wrap_code_ref (CODEREF)
++
++Returns a reference to an anonymous subroutine that, when executed, will call
++CODEREF with the Safe compartment 'in effect'. In other words, with the
++package namespace adjusted and the opmask enabled.
+
++Note that the opmask doesn't affect the already compiled code, it only affects
++any I<further> compilation that the already compiled code may try to perform.
+
+-=head2 Some Safety Issues
++This is particularly useful when applied to code references returned from reval().
+
+-This section is currently just an outline of some of the things code in
+-a compartment might do (intentionally or unintentionally) which can
+-have an effect outside the compartment.
++(It also provides a kind of workaround for RT#60374: "Safe.pm sort {} bug with
++-Dusethreads". See L<http://rt.perl.org/rt3//Public/Bug/Display.html?id=60374>
++for I<much> more detail.)
++
++=head2 wrap_code_refs_within (...)
++
++Wraps any CODE references found within the arguments by replacing each with the
++result of calling L</wrap_code_ref> on the CODE reference. Any ARRAY or HASH
++references in the arguments are inspected recursively.
++
++Returns nothing.
++
++=head1 RISKS
++
++This section is just an outline of some of the things code in a compartment
++might do (intentionally or unintentionally) which can have an effect outside
++the compartment.
+
+ =over 8
+
+@@ -624,7 +768,7 @@ but more subtle effect.
+
+ =back
+
+-=head2 AUTHOR
++=head1 AUTHOR
+
+ Originally designed and implemented by Malcolm Beattie.
+
+diff --git a/ext/Safe/t/safe1.t b/ext/Safe/t/safe1.t
+index 6a3b908..385d661 100755
+--- a/ext/Safe/t/safe1.t
++++ b/ext/Safe/t/safe1.t
+@@ -1,10 +1,6 @@
+ #!./perl -w
+ $|=1;
+ BEGIN {
+- if($ENV{PERL_CORE}) {
+- chdir 't' if -d 't';
+- @INC = '../lib';
+- }
+ require Config; import Config;
+ if ($Config{'extensions'} !~ /\bOpcode\b/ && $Config{'osname'} ne 'VMS') {
+ print "1..0\n";
+diff --git a/ext/Safe/t/safe2.t b/ext/Safe/t/safe2.t
+index d0239d1..2548dcc 100755
+--- a/ext/Safe/t/safe2.t
++++ b/ext/Safe/t/safe2.t
+@@ -1,10 +1,6 @@
+ #!./perl -w
+ $|=1;
+ BEGIN {
+- if($ENV{PERL_CORE}) {
+- chdir 't' if -d 't';
+- @INC = '../lib';
+- }
+ require Config; import Config;
+ if ($Config{'extensions'} !~ /\bOpcode\b/ && $Config{'osname'} ne 'VMS') {
+ print "1..0\n";
+diff --git a/ext/Safe/t/safe3.t b/ext/Safe/t/safe3.t
+index c809f27..1f99f49 100755
+--- a/ext/Safe/t/safe3.t
++++ b/ext/Safe/t/safe3.t
+@@ -1,10 +1,6 @@
+ #!perl -w
+
+ BEGIN {
+- if ($ENV{PERL_CORE}) {
+- chdir 't' if -d 't';
+- @INC = '../lib';
+- }
+ require Config; import Config;
+ if ($Config{'extensions'} !~ /\bOpcode\b/
+ && $Config{'extensions'} !~ /\bPOSIX\b/
+diff --git a/ext/Safe/t/safeload.t b/ext/Safe/t/safeload.t
+index b15c290..2d2c3cc 100755
+--- a/ext/Safe/t/safeload.t
++++ b/ext/Safe/t/safeload.t
+@@ -1,10 +1,6 @@
+ #!perl
+
+ BEGIN {
+- if ($ENV{PERL_CORE}) {
+- chdir 't' if -d 't';
+- @INC = '../lib';
+- }
+ require Config;
+ import Config;
+ if ($Config{'extensions'} !~ /\bOpcode\b/) {
+diff --git a/ext/Safe/t/safeops.t b/ext/Safe/t/safeops.t
+index 229672e..e8fa339 100755
+--- a/ext/Safe/t/safeops.t
++++ b/ext/Safe/t/safeops.t
+@@ -2,13 +2,9 @@
+ # Tests that all ops can be trapped by a Safe compartment
+
+ BEGIN {
+- if ($ENV{PERL_CORE}) {
+- chdir 't' if -d 't';
+- @INC = '../lib';
+- }
+- else {
++ unless ($ENV{PERL_CORE}) {
+ # this won't work outside of the core, so exit
+- print "1..0\n"; exit 0;
++ print "1..0 # skipped: PERL_CORE unset\n"; exit 0;
+ }
+ }
+ use Config;
+diff --git a/ext/Safe/t/safesort.t b/ext/Safe/t/safesort.t
+new file mode 100644
+index 0000000..797e155
+--- /dev/null
++++ b/ext/Safe/t/safesort.t
+@@ -0,0 +1,61 @@
++#!perl -w
++$|=1;
++BEGIN {
++ require Config; import Config;
++ if ($Config{'extensions'} !~ /\bOpcode\b/ && $Config{'osname'} ne 'VMS') {
++ print "1..0\n";
++ exit 0;
++ }
++}
++
++use Safe 1.00;
++use Test::More tests => 10;
++
++my $safe = Safe->new('PLPerl');
++$safe->permit_only(qw(:default sort));
++
++# check basic argument passing and context for anon-subs
++my $func = $safe->reval(q{ sub { @_ } });
++is_deeply [ $func->() ], [ ];
++is_deeply [ $func->("foo") ], [ "foo" ];
++
++my $func1 = $safe->reval(<<'EOS');
++
++ # uses quotes in { "$a" <=> $b } to avoid the optimizer replacing the block
++ # with a hardwired comparison
++ { package Pkg; sub p_sort { return sort { "$a" <=> $b } @_; } }
++ sub l_sort { return sort { "$a" <=> $b } @_; }
++
++ return sub { return join(",",l_sort(@_)), join(",",Pkg::p_sort(@_)) }
++
++EOS
++
++is $@, '', 'reval should not fail';
++is ref $func, 'CODE', 'reval should return a CODE ref';
++
++# $func1 will work in non-threaded perl
++# but RT#60374 "Safe.pm sort {} bug with -Dusethreads"
++# means the sorting won't work unless we wrap the code ref
++# such that it's executed with Safe 'in effect' at runtime
++my $func2 = $safe->wrap_code_ref($func1);
++
++my ($l_sorted, $p_sorted) = $func2->(3,1,2);
++is $l_sorted, "1,2,3";
++is $p_sorted, "1,2,3";
++
++# check other aspects of closures created inside Safe
++
++my $die_func = $safe->reval(q{ sub { die @_ if @_; 1 } });
++
++# check $@ not affected by successful call
++$@ = 42;
++$die_func->();
++is $@, 42, 'successful closure call should not alter $@';
++
++{
++ my $warns = 0;
++ local $SIG{__WARN__} = sub { $warns++ };
++ ok !eval { $die_func->("died\n"); 1 }, 'should die';
++ is $@, "died\n", '$@ should be set correctly';
++ is $warns, 0;
++}
+diff --git a/ext/Safe/t/safeuniversal.t b/ext/Safe/t/safeuniversal.t
+index 5ef3842..95867c5 100755
+--- a/ext/Safe/t/safeuniversal.t
++++ b/ext/Safe/t/safeuniversal.t
+@@ -1,10 +1,6 @@
+ #!perl
+
+ BEGIN {
+- if ($ENV{PERL_CORE}) {
+- chdir 't' if -d 't';
+- @INC = '../lib';
+- }
+ require Config;
+ import Config;
+ if ($Config{'extensions'} !~ /\bOpcode\b/) {
+@@ -22,8 +18,10 @@ plan(tests => 6);
+ my $c = new Safe;
+ $c->permit(qw(require caller));
+
+-my $r = $c->reval(q!
+- no warnings 'redefine';
++my $no_warn_redef = ($] != 5.008009)
++ ? q(no warnings 'redefine';)
++ : q($SIG{__WARN__}=sub{};);
++my $r = $c->reval($no_warn_redef . q!
+ sub UNIVERSAL::isa { "pwned" }
+ (bless[],"Foo")->isa("Foo");
+ !);
+@@ -33,8 +31,7 @@ is( (bless[],"Foo")->isa("Foo"), 1, "... but not outside" );
+
+ sub Foo::foo {}
+
+-$r = $c->reval(q!
+- no warnings 'redefine';
++$r = $c->reval($no_warn_redef . q!
+ sub UNIVERSAL::can { "pwned" }
+ (bless[],"Foo")->can("foo");
+ !);
+diff --git a/ext/Safe/t/safeutf8.t b/ext/Safe/t/safeutf8.t
+new file mode 100644
+index 0000000..28441da
+--- /dev/null
++++ b/ext/Safe/t/safeutf8.t
+@@ -0,0 +1,46 @@
++#!perl -w
++$|=1;
++BEGIN {
++ require Config; import Config;
++ if ($Config{'extensions'} !~ /\bOpcode\b/ && $Config{'osname'} ne 'VMS') {
++ print "1..0\n";
++ exit 0;
++ }
++}
++
++use Test::More tests => 7;
++
++use Safe 1.00;
++use Opcode qw(full_opset);
++
++pass;
++
++my $safe = Safe->new('PLPerl');
++$safe->permit(qw(pack));
++
++# Expression that triggers require utf8 and call to SWASHNEW.
++# Fails with "Undefined subroutine PLPerl::utf8::SWASHNEW called"
++# if SWASHNEW is not shared, else returns true if unicode logic is working.
++my $trigger = q{ my $a = pack('U',0xC4); $a =~ /\\xE4/i };
++
++ok $safe->reval( $trigger ), 'trigger expression should return true';
++is $@, '', 'trigger expression should not die';
++
++# return a closure
++my $sub = $safe->reval(q{sub { warn pack('U',0xC4) }});
++
++# define code outside Safe that'll be triggered from inside
++my @warns;
++$SIG{__WARN__} = sub {
++ my $msg = shift;
++ # this regex requires a different SWASH digit data for \d)
++ # than the one used above and by the trigger code in Safe.pm
++ $msg =~ s/\(eval \d+\)/XXX/i; # uses IsDigit SWASH
++ push @warns, $msg;
++};
++
++is eval { $sub->() }, 1, 'warn should return 1';
++is $@, '', '__WARN__ hook should not die';
++is @warns, 1, 'should only be 1 warning';
++like $warns[0], qr/at XXX line/, 'warning should have been edited';
++
+diff --git a/ext/Safe/t/safewrap.t b/ext/Safe/t/safewrap.t
+new file mode 100644
+index 0000000..27166f8
+--- /dev/null
++++ b/ext/Safe/t/safewrap.t
+@@ -0,0 +1,39 @@
++#!perl -w
++
++$|=1;
++BEGIN {
++ require Config; import Config;
++ if ($Config{'extensions'} !~ /\bOpcode\b/ && $Config{'osname'} ne 'VMS') {
++ print "1..0\n";
++ exit 0;
++ }
++}
++
++use strict;
++use Safe 1.00;
++use Test::More tests => 9;
++
++my $safe = Safe->new('PLPerl');
++$safe->permit_only(qw(:default sort));
++
++# eval within an eval: the outer eval is compiled into the sub, the inner is
++# compiled (by the outer) at runtime and so is subject to runtime opmask
++my $sub1 = sub { eval " eval '1+1' " };
++is $sub1->(), 2;
++
++my $sub1w = $safe->wrap_code_ref($sub1);
++is ref $sub1w, 'CODE';
++is eval { $sub1w->() }, undef;
++like $@, qr/eval .* trapped by operation mask/;
++
++is $sub1->(), 2, 'original ref should be unaffected';
++
++# setup args for wrap_code_refs_within including nested data
++my @args = (42, [[ 0, { sub => $sub1 }, 2 ]], 24);
++is $args[1][0][1]{sub}, $sub1;
++
++$safe->wrap_code_refs_within(@args);
++my $sub1w2 = $args[1][0][1]{sub};
++isnt $sub1w2, $sub1;
++is eval { $sub1w2->() }, undef;
++like $@, qr/eval .* trapped by operation mask/;
+--
+tg: (daf8b46..) fixes/safe-upgrade (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/tainted-errno.diff b/recipes/perl/perl-5.10.1/tainted-errno.diff
new file mode 100644
index 0000000000..23931fd01f
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/tainted-errno.diff
@@ -0,0 +1,85 @@
+Author: David Mitchell <davem@iabyn.com>
+Author: Nicholas Clark <nick@ccl4.org>
+Subject: fix an errno stringification bug in taint mode
+Bug-Debian: http://bugs.debian.org/574129
+Bug: http://rt.perl.org/rt3/Public/Bug/Display.html?id=61976
+Origin: http://perl5.git.perl.org/perl.git/commit/0097b436152452e403cc71b4f1a1cfd30ec0ba1a
+Origin: http://perl5.git.perl.org/perl.git/commit/be1cf43c8dab9dd236839206d53611f7e7d2d856
+
+Hopefully fixes $! stringification problems seen with spamassassin (#574129).
+
+---
+ mg.c | 2 ++
+ t/op/magic.t | 8 +++++++-
+ t/op/taint.t | 13 ++++++++++++-
+ 3 files changed, 21 insertions(+), 2 deletions(-)
+
+diff --git a/mg.c b/mg.c
+index 5502e90..70ebb0b 100644
+--- a/mg.c
++++ b/mg.c
+@@ -1041,6 +1041,8 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg)
+ else
+ #endif
+ sv_setpv(sv, errno ? Strerror(errno) : "");
++ if (SvPOKp(sv))
++ SvPOK_on(sv); /* may have got removed during taint processing */
+ RESTORE_ERRNO;
+ }
+ #endif
+diff --git a/t/op/magic.t b/t/op/magic.t
+index bfb68a7..d51a22b 100755
+--- a/t/op/magic.t
++++ b/t/op/magic.t
+@@ -12,7 +12,7 @@ use warnings;
+ use Config;
+
+
+-plan (tests => 59);
++plan (tests => 60);
+
+ $Is_MSWin32 = $^O eq 'MSWin32';
+ $Is_NetWare = $^O eq 'NetWare';
+@@ -475,3 +475,9 @@ SKIP: {
+ is $@, '', 'Assign a shared key to a magic hash';
+ $@ and print "# $@";
+ }
++
++{
++ $! = 9999;
++ is int $!, 9999, q{[perl #72850] Core dump in bleadperl from perl -e '$! = 9999; $a = $!;'};
++
++}
+diff --git a/t/op/taint.t b/t/op/taint.t
+index 0ac02a6..6511fa5 100755
+--- a/t/op/taint.t
++++ b/t/op/taint.t
+@@ -17,7 +17,7 @@ use Config;
+ use File::Spec::Functions;
+
+ BEGIN { require './test.pl'; }
+-plan tests => 301;
++plan tests => 302;
+
+ $| = 1;
+
+@@ -1316,6 +1316,17 @@ foreach my $ord (78, 163, 256) {
+ ok(tainted($zz), "pack a*a* preserves tainting");
+ }
+
++# Bug RT #61976 tainted $! would show numeric rather than string value
++
++{
++ my $tainted_path = substr($^X,0,0) . "/no/such/file";
++ my $err;
++ # $! is used in a tainted expression, so gets tainted
++ open my $fh, $tainted_path or $err= "$!";
++ unlike($err, qr/^\d+$/, 'tainted $!');
++}
++
++
+ # This may bomb out with the alarm signal so keep it last
+ SKIP: {
+ skip "No alarm()" unless $Config{d_alarm};
+--
+tg: (daf8b46..) fixes/tainted-errno (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/tell-crash.diff b/recipes/perl/perl-5.10.1/tell-crash.diff
new file mode 100644
index 0000000000..c21c13dc48
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/tell-crash.diff
@@ -0,0 +1,33 @@
+From: Niko Tyni <ntyni@debian.org>
+Subject: Fix a tell() crash on bad arguments.
+Bug-Debian: http://bugs.debian.org/578577
+Origin: upstream, http://perl5.git.perl.org/perl.git/commit/f03173f2c707a804ec3e9c291d2ab1adb9db4abc
+Origin: upstream, http://perl5.git.perl.org/perl.git/commit/f4817f32b1c5f1cefe556cf79f36f874b67cad16
+
+Fix a crash with things like
+ perl -e 'tell (fileno(*STDOUT))'
+
+
+---
+ pp_sys.c | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/pp_sys.c b/pp_sys.c
+index a1f8c7a..74004b9 100644
+--- a/pp_sys.c
++++ b/pp_sys.c
+@@ -2081,6 +2081,12 @@ PP(pp_tell)
+ RETURN;
+ }
+ }
++ else if (!gv) {
++ if (!errno)
++ SETERRNO(EBADF,RMS_IFI);
++ PUSHi(-1);
++ RETURN;
++ }
+
+ #if LSEEKSIZE > IVSIZE
+ PUSHn( do_tell(gv) );
+--
+tg: (daf8b46..) fixes/tell-crash (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/trie-logic-match.diff b/recipes/perl/perl-5.10.1/trie-logic-match.diff
new file mode 100644
index 0000000000..b64457649a
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/trie-logic-match.diff
@@ -0,0 +1,111 @@
+From: Eugene V. Lyubimkin <jackyf@debian.org>
+Subject: Fix a DoS in Unicode processing [CVE-2009-3626]
+Bug-Debian: http://bugs.debian.org/552291
+Bug: http://rt.perl.org/rt3/Public/Bug/Display.html?id=69973
+Origin: upstream, http://perl5.git.perl.org/perl.git/commit/0abd0d78a73da1c4d13b1c700526b7e5d03b32d4.
+
+Resolves segmentation fault in some tricky tainted non-UTF-8 matches.
+
+Signed-off-by: Eugene V. Lyubimkin <jackyf@debian.org>
+
+---
+ ext/re/t/regop.t | 12 ++++++------
+ regcomp.c | 17 +++++++++++------
+ regexec.c | 9 ++-------
+ 3 files changed, 19 insertions(+), 19 deletions(-)
+
+diff --git a/ext/re/t/regop.t b/ext/re/t/regop.t
+index 7fe7b20..f111b91 100755
+--- a/ext/re/t/regop.t
++++ b/ext/re/t/regop.t
+@@ -233,12 +233,12 @@ anchored "ABC" at 0
+ #Freeing REx: "(\\.COM|\\.EXE|\\.BAT|\\.CMD|\\.VBS|\\.VBE|\\.JS|\\.JSE|\\."......
+ %MATCHED%
+ floating ""$ at 3..4 (checking floating)
+-1:1[1] 3:2[1] 5:2[64] 45:83[1] 47:84[1] 48:85[0]
+-stclass EXACTF <.> minlen 3
+-Found floating substr ""$ at offset 30...
+-Does not contradict STCLASS...
+-Guessed: match at offset 26
+-Matching stclass EXACTF <.> against ".exe"
++#1:1[1] 3:2[1] 5:2[64] 45:83[1] 47:84[1] 48:85[0]
++#stclass EXACTF <.> minlen 3
++#Found floating substr ""$ at offset 30...
++#Does not contradict STCLASS...
++#Guessed: match at offset 26
++#Matching stclass EXACTF <.> against ".exe"
+ ---
+ #Compiling REx "[q]"
+ #size 12 nodes Got 100 bytes for offset annotations.
+diff --git a/regcomp.c b/regcomp.c
+index 49e69b2..b7fb032 100644
+--- a/regcomp.c
++++ b/regcomp.c
+@@ -2820,13 +2820,18 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp,
+ }
+ } else {
+ /*
+- Currently we assume that the trie can handle unicode and ascii
+- matches fold cased matches. If this proves true then the following
+- define will prevent tries in this situation.
+-
+- #define TRIE_TYPE_IS_SAFE (UTF || optype==EXACT)
+-*/
++ Currently we do not believe that the trie logic can
++ handle case insensitive matching properly when the
++ pattern is not unicode (thus forcing unicode semantics).
++
++ If/when this is fixed the following define can be swapped
++ in below to fully enable trie logic.
++
+ #define TRIE_TYPE_IS_SAFE 1
++
++*/
++#define TRIE_TYPE_IS_SAFE (UTF || optype==EXACT)
++
+ if ( last && TRIE_TYPE_IS_SAFE ) {
+ make_trie( pRExC_state,
+ startbranch, first, cur, tail, count,
+diff --git a/regexec.c b/regexec.c
+index 7a42c4f..32994de 100644
+--- a/regexec.c
++++ b/regexec.c
+@@ -1006,16 +1006,15 @@ Perl_re_intuit_start(pTHX_ REGEXP * const prog, SV *sv, char *strpos,
+
+ #define REXEC_TRIE_READ_CHAR(trie_type, trie, widecharmap, uc, uscan, len, \
+ uvc, charid, foldlen, foldbuf, uniflags) STMT_START { \
+- UV uvc_unfolded = 0; \
+ switch (trie_type) { \
+ case trie_utf8_fold: \
+ if ( foldlen>0 ) { \
+- uvc_unfolded = uvc = utf8n_to_uvuni( uscan, UTF8_MAXLEN, &len, uniflags ); \
++ uvc = utf8n_to_uvuni( uscan, UTF8_MAXLEN, &len, uniflags ); \
+ foldlen -= len; \
+ uscan += len; \
+ len=0; \
+ } else { \
+- uvc_unfolded = uvc = utf8n_to_uvuni( (U8*)uc, UTF8_MAXLEN, &len, uniflags ); \
++ uvc = utf8n_to_uvuni( (U8*)uc, UTF8_MAXLEN, &len, uniflags ); \
+ uvc = to_uni_fold( uvc, foldbuf, &foldlen ); \
+ foldlen -= UNISKIP( uvc ); \
+ uscan = foldbuf + UNISKIP( uvc ); \
+@@ -1041,7 +1040,6 @@ uvc, charid, foldlen, foldbuf, uniflags) STMT_START { \
+ uvc = (UV)*uc; \
+ len = 1; \
+ } \
+- \
+ if (uvc < 256) { \
+ charid = trie->charmap[ uvc ]; \
+ } \
+@@ -1054,9 +1052,6 @@ uvc, charid, foldlen, foldbuf, uniflags) STMT_START { \
+ charid = (U16)SvIV(*svpp); \
+ } \
+ } \
+- if (!charid && trie_type == trie_utf8_fold && !UTF) { \
+- charid = trie->charmap[uvc_unfolded]; \
+- } \
+ } STMT_END
+
+ #define REXEC_FBC_EXACTISH_CHECK(CoNd) \
+--
+tg: (daf8b46..) fixes/trie-logic-match (depends on: upstream)
diff --git a/recipes/perl/perl-5.10.1/use_gdbm.diff b/recipes/perl/perl-5.10.1/use_gdbm.diff
new file mode 100644
index 0000000000..085a700888
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/use_gdbm.diff
@@ -0,0 +1,39 @@
+Subject: Explicitly link against -lgdbm_compat in ODBM_File/NDBM_File.
+
+Explicitly link against -lgdbm_compat.
+
+
+---
+ ext/NDBM_File/hints/linux.pl | 5 +----
+ ext/ODBM_File/hints/linux.pl | 8 +-------
+ 2 files changed, 2 insertions(+), 11 deletions(-)
+
+diff --git a/ext/NDBM_File/hints/linux.pl b/ext/NDBM_File/hints/linux.pl
+index 174f913..652b75b 100644
+--- a/ext/NDBM_File/hints/linux.pl
++++ b/ext/NDBM_File/hints/linux.pl
+@@ -2,7 +2,4 @@
+ # Prefer gdbm to avoid the broken ndbm in some distributions
+ # (no null key support)
+ # Jonathan Stowe <gellyfish@gellyfish.com>
+-use Config;
+-use ExtUtils::Liblist;
+-($self->{LIBS}) = ExtUtils::Liblist->ext('-lgdbm -lgdbm_compat')
+- if $Config{libs} =~ /(?:^|\s)-lgdbm(?:\s|$)/;
++$self->{LIBS} = ['-lgdbm_compat'];
+diff --git a/ext/ODBM_File/hints/linux.pl b/ext/ODBM_File/hints/linux.pl
+index f8ca492..2cf6b02 100644
+--- a/ext/ODBM_File/hints/linux.pl
++++ b/ext/ODBM_File/hints/linux.pl
+@@ -1,8 +1,2 @@
+ # uses GDBM dbm compatibility feature - at least on SuSE 8.0
+-$self->{LIBS} = ['-lgdbm'];
+-
+-# Debian/Ubuntu have /usr/lib/libgdbm_compat.so.3* but not this file,
+-# so linking may fail
+-if (-e '/usr/lib/libgdbm_compat.so' or -e '/usr/lib64/libgdbm_compat.so') {
+- $self->{LIBS}->[0] .= ' -lgdbm_compat';
+-}
++$self->{LIBS} = ['-lgdbm_compat'];
+--
+tg: (daf8b46..) debian/use_gdbm (depends on: upstream)
diff --git a/recipes/perl/perl-native_5.10.1.bb b/recipes/perl/perl-native_5.10.1.bb
index 0e0854b6d1..b6e0bb56e1 100644
--- a/recipes/perl/perl-native_5.10.1.bb
+++ b/recipes/perl/perl-native_5.10.1.bb
@@ -3,12 +3,16 @@ HOMEPAGE = "http://www.perl.org/"
SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS = "virtual/db-native gdbm-native"
-PR = "r4"
+PR = "r5"
NATIVE_INSTALL_WORKS = "1"
# Not tested enough
DEFAULT_PREFERENCE = "-1"
+# 5.10.1 has this module built-in
+PROVIDES += "libmodule-build-perl-native"
+RPROVIDES_${PN} += "libmodule-build-perl-native"
+
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/perl-${PV}"
SRC_URI = "http://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz;name=perl-${PV} \
diff --git a/recipes/perl/perl-rdepends_5.10.1.inc b/recipes/perl/perl-rdepends_5.10.1.inc
index f92fca82c9..552160311a 100644
--- a/recipes/perl/perl-rdepends_5.10.1.inc
+++ b/recipes/perl/perl-rdepends_5.10.1.inc
@@ -24,6 +24,9 @@ RDEPENDS_perl-module-config-heavy += "perl-module-config-git "
RDEPENDS_perl-module-utf8-heavy += "perl-module-unicore-exact "
+RDEPENDS_perl-module-pod-simple-blackbox += "perl-module-universal"
+RDEPENDS_perl-module-file-temp += "perl-module-io-seekable"
+
# Auto-generated dependencies
RDEPENDS_perl-module-app-prove += "perl-module-app-prove-state "
RDEPENDS_perl-module-app-prove += "perl-module-carp "
diff --git a/recipes/perl/perl-rprovides_5.10.1.inc b/recipes/perl/perl-rprovides_5.10.1.inc
new file mode 100644
index 0000000000..9a648dbf2f
--- /dev/null
+++ b/recipes/perl/perl-rprovides_5.10.1.inc
@@ -0,0 +1 @@
+RPROVIDES_perl-module-module-build += "libmodule-build-perl"
diff --git a/recipes/perl/perl_5.10.1.bb b/recipes/perl/perl_5.10.1.bb
index c3755125ce..8a0726ae55 100644
--- a/recipes/perl/perl_5.10.1.bb
+++ b/recipes/perl/perl_5.10.1.bb
@@ -5,7 +5,10 @@ LICENSE = "Artistic|GPL"
PRIORITY = "optional"
# We need gnugrep (for -I)
DEPENDS = "virtual/db perl-native grep-native"
-PR = "r10"
+PR = "r13"
+
+# 5.10.1 has Module::Build built-in
+PROVIDES += "libmodule-build-perl"
# Not tested enough
DEFAULT_PREFERENCE = "-1"
@@ -14,7 +17,52 @@ DEFAULT_PREFERENCE = "-1"
PVM = "5.10"
SRC_URI = "ftp://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz;name=perl-${PV} \
- file://perl_${PV}-8.diff.gz \
+ file://arm_thread_stress_timeout.diff \
+ file://cpan_config_path.diff \
+ file://cpan_definstalldirs.diff \
+ file://db_file_ver.diff \
+ file://doc_info.diff \
+ file://enc2xs_inc.diff \
+ file://errno_ver.diff \
+ file://extutils_hacks.diff \
+ file://fakeroot.diff \
+ file://instmodsh_doc.diff \
+ file://ld_run_path.diff \
+ file://libnet_config_path.diff \
+ file://m68k_thread_stress.diff \
+ file://mod_paths.diff \
+ file://module_build_man_extensions.diff \
+ file://perl_synopsis.diff \
+ file://prune_libs.diff \
+ file://use_gdbm.diff \
+ file://assorted_docs.diff \
+ file://net_smtp_docs.diff \
+ file://processPL.diff \
+ file://perlivp.diff \
+ file://pod2man-index-backslash.diff \
+ file://disable-zlib-bundling.diff \
+ file://kfreebsd_cppsymbols.diff \
+ file://cpanplus_definstalldirs.diff \
+ file://cpanplus_config_path.diff \
+ file://kfreebsd-filecopy-pipes.diff \
+ file://anon-tmpfile-dir.diff \
+ file://abstract-sockets.diff \
+ file://hurd_cppsymbols.diff \
+ file://autodie-flock.diff \
+ file://archive-tar-instance-error.diff \
+ file://positive-gpos.diff \
+ file://devel-ppport-ia64-optim.diff \
+ file://trie-logic-match.diff \
+ file://hppa-thread-eagain.diff \
+ file://crash-on-undefined-destroy.diff \
+ file://tainted-errno.diff \
+ file://safe-upgrade.diff \
+ file://tell-crash.diff \
+ file://format-write-crash.diff \
+ file://arm-alignment.diff \
+ file://fcgi-test.diff \
+ file://hurd-ccflags.diff \
+ \
file://Makefile.patch \
file://Makefile.SH.patch \
file://installperl.patch \
@@ -234,5 +282,6 @@ FILES_perl-module-unicore-name += "${datadir}/perl/${PV}/unicore"
require perl-rdepends_${PV}.inc
require perl-rprovides.inc
+require perl-rprovides_${PV}.inc
PARALLEL_MAKE = ""
diff --git a/recipes/pivotinit/pivotinit_1.0.0.bb b/recipes/pivotinit/pivotinit_1.0.0.bb
index 912cfeb5b9..8b40db2663 100644
--- a/recipes/pivotinit/pivotinit_1.0.0.bb
+++ b/recipes/pivotinit/pivotinit_1.0.0.bb
@@ -4,6 +4,7 @@ PRIORITY = "required"
LICENSE = "MIT"
PR = "r0"
+COMPATIBLE_MACHINE = "(spitz)"
SRC_URI = "file://init"
do_install () {
diff --git a/recipes/python/python-cython-native_0.12.1.bb b/recipes/python/python-cython-native_0.12.1.bb
deleted file mode 100644
index d42d1fdd7b..0000000000
--- a/recipes/python/python-cython-native_0.12.1.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require python-cython_${PV}.bb
-inherit native
-DEPENDS = "python-native"
-RDEPENDS_${PN} = ""
-
-do_stage() {
- PYTHONPATH=${STAGING_BINDIR} BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
- STAGING_LIBDIR=${STAGING_LIBDIR} STAGING_INCDIR=${STAGING_INCDIR} \
- ${STAGING_BINDIR}/python setup.py install --prefix=${STAGING_BINDIR}/.. --install-data=${STAGING_DATADIR}
-}
diff --git a/recipes/python/python-cython_0.12.1.bb b/recipes/python/python-cython_0.13.bb
index b3e9d8b811..61ad71887d 100644
--- a/recipes/python/python-cython_0.12.1.bb
+++ b/recipes/python/python-cython_0.13.bb
@@ -5,12 +5,13 @@ SECTION = "devel/python"
PRIORITY = "optional"
LICENSE = "GPL"
SRCNAME = "Cython"
-PR = "ml0"
+BBCLASSEXTEND = "native"
+NATIVE_INSTALL_WORKS = "1"
-SRC_URI = "http://www.cython.org/release/${SRCNAME}-${PV}.tar.gz;name=archive"
+SRC_URI = "http://www.cython.org/release/${SRCNAME}-${PV}.tar.gz"
S = "${WORKDIR}/${SRCNAME}-${PV}"
-SRC_URI[archive.md5sum] = "cf9f98e982258f8516620277975016f3"
-SRC_URI[archive.sha256sum] = "0f384ec20c579b80d1960a5795d6517a6885305efa9964bcbf6a7b8da88b9c77"
+SRC_URI[md5sum] = "ed2ec5e0df60a6b8e500bedf93bb1feb"
+SRC_URI[sha256sum] = "a30d5e26c82ec65d65703c7cf312161a21b30339addc1a42d3b2965dea254ca6"
inherit distutils
diff --git a/recipes/python/python-pybluez_0.18.bb b/recipes/python/python-pybluez_0.18.bb
new file mode 100644
index 0000000000..f30d30896b
--- /dev/null
+++ b/recipes/python/python-pybluez_0.18.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Python bindings for the Linux Bluetooth stack"
+SECTION = "devel/python"
+DEPENDS = "bluez-libs"
+LICENSE = "GPL"
+PR = "ml0"
+
+SRC_URI = "http://pybluez.googlecode.com/files/PyBluez-${PV}.tar.gz"
+S = "${WORKDIR}/PyBluez-${PV}"
+
+inherit distutils
+
+SRC_URI[md5sum] = "be8c8ce615c3189fda1aaf3d568314b2"
+SRC_URI[sha256sum] = "66b2184e0eaad5e1ecc89eb4c81cba0696b3028b85d1301186b45b0bbd761065"
diff --git a/recipes/qt4/qt4-tools-sdk_4.6.3.bb b/recipes/qt4/qt4-tools-sdk_4.6.3.bb
index 1695c199cf..6eceadaff6 100644
--- a/recipes/qt4/qt4-tools-sdk_4.6.3.bb
+++ b/recipes/qt4/qt4-tools-sdk_4.6.3.bb
@@ -5,6 +5,8 @@ HOMEPAGE = "http://www.trolltech.com"
PRIORITY = "optional"
LICENSE = "LGPLv2.1 GPLv3"
+PR = "r1"
+
DEFAULT_PREFERENCE = "-1"
inherit sdk
@@ -76,6 +78,10 @@ do_install() {
for i in moc uic uic3 rcc lrelease lupdate qdbuscpp2xml qdbusxml2cpp; do \
ln -s ${i}4 ${i}; \
done)
+
+ # make a symbolic link to mkspecs for compatibility with Nokia's SDK
+ # and QTCreator
+ (cd ${D}${bindir}/..; ln -s ${TARGET_SYS}/usr/share/qtopia/mkspecs mkspecs;)
}
SRC_URI[md5sum] = "5c69f16d452b0bb3d44bc3c10556c072"
diff --git a/recipes/x-load/x-load-git/igep0020/remove-final-ldflags.patch b/recipes/x-load/x-load-git/igep0020/remove-final-ldflags.patch
new file mode 100644
index 0000000000..c5ac09b8e7
--- /dev/null
+++ b/recipes/x-load/x-load-git/igep0020/remove-final-ldflags.patch
@@ -0,0 +1,11 @@
+--- a/Makefile 2010-09-03 09:59:12.000000000 +0200
++++ b/Makefile 2010-09-03 10:43:46.650000018 +0200
+@@ -90,7 +90,7 @@
+
+ x-load: $(OBJS) $(LIBS) $(LDSCRIPT)
+ UNDEF_SYM=`$(OBJDUMP) -x $(LIBS) |sed -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
+- $(LD) $(LDFLAGS) $$UNDEF_SYM $(OBJS) \
++ $(LD) $$UNDEF_SYM $(OBJS) \
+ --start-group $(LIBS) --end-group $(PLATFORM_LIBS) \
+ -Map x-load.map -o x-load
+
diff --git a/recipes/x-load/x-load_git.bb b/recipes/x-load/x-load_git.bb
index cbcbf17d61..eb4a2deeba 100644
--- a/recipes/x-load/x-load_git.bb
+++ b/recipes/x-load/x-load_git.bb
@@ -9,7 +9,7 @@ SRCREV_beagleboard = "1c9276af4d6a5b7014a7630a1abeddf3b3177563"
PV = "1.42+${PR}+gitr${SRCREV}"
PV_beagleboard = "1.44+${PR}+gitr${SRCREV}"
-PR ="r15"
+PR ="r16"
PE = "1"
SRC_URI = "git://gitorious.org/x-load-omap3/mainline.git;branch=master;protocol=git"
@@ -56,6 +56,11 @@ SRCREV_omapzoom36x = "251d92815500143aefdbe3b3558a0ce6daeaebdc"
SRC_URI[uboot.md5sum] = "e68b30714d22ce2f926d2dd19f94a2be"
SRC_URI[uboot.sha256sum] = "e7e5c87d939cc4c1f14d17ea0814b0bed97021c7afca3ef9053c896c2b5bdd6f"
+SRC_URI_igep0020 = "git://git.igep.es/pub/scm/x-loader.git;protocol=git \
+ file://remove-final-ldflags.patch"
+SRCREV_igep0020 = "213d95fcadc54424c796259928d7c15c5a2945a0"
+PV_igep0020 = "1.43+${PR}+gitr${SRCREV}"
+
S = "${WORKDIR}/git"
PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/recipes/xorg-lib/pixman-0.19.4/0001-ARM-HACK-added-NEON-optimizations-for-fetch-store-r5.patch b/recipes/xorg-lib/pixman-0.19.4/0001-ARM-HACK-added-NEON-optimizations-for-fetch-store-r5.patch
new file mode 100644
index 0000000000..756c418fce
--- /dev/null
+++ b/recipes/xorg-lib/pixman-0.19.4/0001-ARM-HACK-added-NEON-optimizations-for-fetch-store-r5.patch
@@ -0,0 +1,168 @@
+From 38aabb3be87ea68e37f34256c778d07f62680ec6 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Thu, 10 Dec 2009 00:51:50 +0200
+Subject: [PATCH 1/6] ARM: HACK: added NEON optimizations for fetch/store r5g6b5 scanline
+
+---
+ pixman/pixman-access.c | 23 ++++++++++++++++++++++-
+ pixman/pixman-arm-neon-asm.S | 20 ++++++++++++++++++++
+ pixman/pixman-arm-neon.c | 40 ++++++++++++++++++++++++++++++++++++++++
+ pixman/pixman-private.h | 5 +++++
+ 4 files changed, 87 insertions(+), 1 deletions(-)
+
+diff --git a/pixman/pixman-access.c b/pixman/pixman-access.c
+index f1ce0ba..b33da29 100644
+--- a/pixman/pixman-access.c
++++ b/pixman/pixman-access.c
+@@ -2836,7 +2836,7 @@ typedef struct
+ store_scanline_ ## format, store_scanline_generic_64 \
+ }
+
+-static const format_info_t accessors[] =
++static format_info_t accessors[] =
+ {
+ /* 32 bpp formats */
+ FORMAT_INFO (a8r8g8b8),
+@@ -2978,6 +2978,27 @@ _pixman_bits_image_setup_accessors (bits_image_t *image)
+ setup_accessors (image);
+ }
+
++void
++_pixman_bits_override_accessors (pixman_format_code_t format,
++ fetch_scanline_t fetch_func,
++ store_scanline_t store_func)
++{
++ format_info_t *info = accessors;
++
++ while (info->format != PIXMAN_null)
++ {
++ if (info->format == format)
++ {
++ if (fetch_func)
++ info->fetch_scanline_32 = fetch_func;
++ if (store_func)
++ info->store_scanline_32 = store_func;
++ return;
++ }
++ info++;
++ }
++}
++
+ #else
+
+ void
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index 9f6568f..e1a697e 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -458,6 +458,16 @@ generate_composite_function \
+ pixman_composite_src_8888_0565_process_pixblock_tail, \
+ pixman_composite_src_8888_0565_process_pixblock_tail_head
+
++generate_composite_function_single_scanline \
++ pixman_store_scanline_r5g6b5_asm_neon, 32, 0, 16, \
++ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
++ 8, /* number of pixels, processed in a single block */ \
++ default_init, \
++ default_cleanup, \
++ pixman_composite_src_8888_0565_process_pixblock_head, \
++ pixman_composite_src_8888_0565_process_pixblock_tail, \
++ pixman_composite_src_8888_0565_process_pixblock_tail_head
++
+ /******************************************************************************/
+
+ .macro pixman_composite_src_0565_8888_process_pixblock_head
+@@ -493,6 +503,16 @@ generate_composite_function \
+ pixman_composite_src_0565_8888_process_pixblock_tail, \
+ pixman_composite_src_0565_8888_process_pixblock_tail_head
+
++generate_composite_function_single_scanline \
++ pixman_fetch_scanline_r5g6b5_asm_neon, 16, 0, 32, \
++ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
++ 8, /* number of pixels, processed in a single block */ \
++ default_init, \
++ default_cleanup, \
++ pixman_composite_src_0565_8888_process_pixblock_head, \
++ pixman_composite_src_0565_8888_process_pixblock_tail, \
++ pixman_composite_src_0565_8888_process_pixblock_tail_head
++
+ /******************************************************************************/
+
+ .macro pixman_composite_add_8000_8000_process_pixblock_head
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index ece6054..e0d2001 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -344,6 +344,42 @@ BIND_COMBINE_U (over)
+ BIND_COMBINE_U (add)
+ BIND_COMBINE_U (out_reverse)
+
++void
++pixman_fetch_scanline_r5g6b5_asm_neon (int width,
++ uint32_t *buffer,
++ const uint16_t *pixel);
++void
++pixman_store_scanline_r5g6b5_asm_neon (int width,
++ uint16_t *pixel,
++ const uint32_t *values);
++
++static void
++neon_fetch_scanline_r5g6b5 (pixman_image_t *image,
++ int x,
++ int y,
++ int width,
++ uint32_t * buffer,
++ const uint32_t *mask)
++{
++ const uint32_t *bits = image->bits.bits + y * image->bits.rowstride;
++ const uint16_t *pixel = (const uint16_t *)bits + x;
++
++ pixman_fetch_scanline_r5g6b5_asm_neon (width, buffer, pixel);
++}
++
++static void
++neon_store_scanline_r5g6b5 (bits_image_t * image,
++ int x,
++ int y,
++ int width,
++ const uint32_t *values)
++{
++ uint32_t *bits = image->bits + image->rowstride * y;
++ uint16_t *pixel = ((uint16_t *) bits) + x;
++
++ pixman_store_scanline_r5g6b5_asm_neon (width, pixel, values);
++}
++
+ pixman_implementation_t *
+ _pixman_implementation_create_arm_neon (void)
+ {
+@@ -355,6 +391,10 @@ _pixman_implementation_create_arm_neon (void)
+ imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u;
+ imp->combine_32[PIXMAN_OP_OUT_REVERSE] = neon_combine_out_reverse_u;
+
++ _pixman_bits_override_accessors (PIXMAN_r5g6b5,
++ neon_fetch_scanline_r5g6b5,
++ neon_store_scanline_r5g6b5);
++
+ imp->blt = arm_neon_blt;
+ imp->fill = arm_neon_fill;
+
+diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
+index d85868f..564f8f0 100644
+--- a/pixman/pixman-private.h
++++ b/pixman/pixman-private.h
+@@ -206,6 +206,11 @@ void
+ _pixman_bits_image_setup_accessors (bits_image_t *image);
+
+ void
++_pixman_bits_override_accessors (pixman_format_code_t format,
++ fetch_scanline_t fetch_func,
++ store_scanline_t store_func);
++
++void
+ _pixman_image_get_scanline_generic_64 (pixman_image_t *image,
+ int x,
+ int y,
+--
+1.6.6.1
+
diff --git a/recipes/xorg-lib/pixman-0.19.4/0002-Don-t-discriminate-PAD-and-REFLECT-repeat-in-standar.patch b/recipes/xorg-lib/pixman-0.19.4/0002-Don-t-discriminate-PAD-and-REFLECT-repeat-in-standar.patch
new file mode 100644
index 0000000000..324fb41393
--- /dev/null
+++ b/recipes/xorg-lib/pixman-0.19.4/0002-Don-t-discriminate-PAD-and-REFLECT-repeat-in-standar.patch
@@ -0,0 +1,59 @@
+From e3bfd272cf813b8419757a3b59128b3568e5f800 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Mon, 20 Sep 2010 19:07:33 +0300
+Subject: [PATCH 2/6] Don't discriminate PAD and REFLECT repeat in standard fast paths
+
+Without this fix, setting PAD repeat on a source image prevents
+the use of any nonscaled standard fast paths, affecting performance
+a lot. But as long as no pixels outside the source image boundaries
+are touched by the compositing operation, all the repeat types
+behave the same and can take the same fast paths.
+
+This is important because setting PAD repeat instead of NONE is
+more hardware acceleration friendly (for the drivers implementing
+RENDER extension) and does not inhibit OVER->SRC operator
+optimization in pixman.
+---
+ pixman/pixman-image.c | 6 ++----
+ pixman/pixman-private.h | 2 --
+ 2 files changed, 2 insertions(+), 6 deletions(-)
+
+diff --git a/pixman/pixman-image.c b/pixman/pixman-image.c
+index 8397f6a..14a2219 100644
+--- a/pixman/pixman-image.c
++++ b/pixman/pixman-image.c
+@@ -363,16 +363,14 @@ compute_image_info (pixman_image_t *image)
+ flags |=
+ FAST_PATH_NO_PAD_REPEAT |
+ FAST_PATH_NO_NONE_REPEAT |
+- FAST_PATH_NO_NORMAL_REPEAT |
+- FAST_PATH_COVERS_CLIP;
++ FAST_PATH_NO_NORMAL_REPEAT;
+ break;
+
+ case PIXMAN_REPEAT_PAD:
+ flags |=
+ FAST_PATH_NO_REFLECT_REPEAT |
+ FAST_PATH_NO_NONE_REPEAT |
+- FAST_PATH_NO_NORMAL_REPEAT |
+- FAST_PATH_COVERS_CLIP;
++ FAST_PATH_NO_NORMAL_REPEAT;
+ break;
+
+ default:
+diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
+index 564f8f0..440ae7a 100644
+--- a/pixman/pixman-private.h
++++ b/pixman/pixman-private.h
+@@ -602,8 +602,6 @@ _pixman_choose_implementation (void);
+ (FAST_PATH_ID_TRANSFORM | \
+ FAST_PATH_NO_ALPHA_MAP | \
+ FAST_PATH_NO_CONVOLUTION_FILTER | \
+- FAST_PATH_NO_PAD_REPEAT | \
+- FAST_PATH_NO_REFLECT_REPEAT | \
+ FAST_PATH_NO_ACCESSORS | \
+ FAST_PATH_NARROW_FORMAT | \
+ FAST_PATH_COVERS_CLIP)
+--
+1.6.6.1
+
diff --git a/recipes/xorg-lib/pixman-0.19.4/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/recipes/xorg-lib/pixman-0.19.4/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
new file mode 100644
index 0000000000..2264d0d3b6
--- /dev/null
+++ b/recipes/xorg-lib/pixman-0.19.4/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
@@ -0,0 +1,114 @@
+From c5099dabb417cab343185d6e22ae4925e53a756f Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Tue, 16 Mar 2010 16:55:28 +0100
+Subject: [PATCH 3/6] Generic C implementation of pixman_blt with overlapping support
+
+Uses memcpy/memmove functions to copy pixels, can handle the
+case when both source and destination areas are in the same
+image (this is useful for scrolling).
+
+It is assumed that copying direction is only important when
+using the same image for both source and destination (and
+src_stride == dst_stride). Copying direction is undefined
+for the images with different source and destination stride
+which happen to be in the overlapped areas (but this is an
+unrealistic case anyway).
+---
+ pixman/pixman-general.c | 21 ++++++++++++++++++---
+ pixman/pixman-private.h | 43 +++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 61 insertions(+), 3 deletions(-)
+
+diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c
+index 4d234a0..c4d2c14 100644
+--- a/pixman/pixman-general.c
++++ b/pixman/pixman-general.c
+@@ -280,9 +280,24 @@ general_blt (pixman_implementation_t *imp,
+ int width,
+ int height)
+ {
+- /* We can't blit unless we have sse2 or mmx */
+-
+- return FALSE;
++ uint8_t *dst_bytes = (uint8_t *)dst_bits;
++ uint8_t *src_bytes = (uint8_t *)src_bits;
++ int bpp;
++
++ if (src_bpp != dst_bpp || src_bpp & 7)
++ return FALSE;
++
++ bpp = src_bpp >> 3;
++ width *= bpp;
++ src_stride *= 4;
++ dst_stride *= 4;
++ pixman_blt_helper (src_bytes + src_y * src_stride + src_x * bpp,
++ dst_bytes + dst_y * dst_stride + dst_x * bpp,
++ src_stride,
++ dst_stride,
++ width,
++ height);
++ return TRUE;
+ }
+
+ static pixman_bool_t
+diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
+index 440ae7a..aac2067 100644
+--- a/pixman/pixman-private.h
++++ b/pixman/pixman-private.h
+@@ -10,6 +10,7 @@
+
+ #include "pixman.h"
+ #include <time.h>
++#include <string.h>
+ #include <assert.h>
+ #include <stdio.h>
+ #include <string.h>
+@@ -883,4 +884,46 @@ void pixman_timer_register (pixman_timer_t *timer);
+
+ #endif /* PIXMAN_TIMERS */
+
++/* a helper function, can blit 8-bit images with src/dst overlapping support */
++static inline void
++pixman_blt_helper (uint8_t *src_bytes,
++ uint8_t *dst_bytes,
++ int src_stride,
++ int dst_stride,
++ int width,
++ int height)
++{
++ /*
++ * The second part of this check is not strictly needed, but it prevents
++ * unnecessary upside-down processing of areas which belong to different
++ * images. Upside-down processing can be slower with fixed-distance-ahead
++ * prefetch and perceived as having more tearing.
++ */
++ if (src_bytes < dst_bytes + width &&
++ src_bytes + src_stride * height > dst_bytes)
++ {
++ src_bytes += src_stride * height - src_stride;
++ dst_bytes += dst_stride * height - dst_stride;
++ dst_stride = -dst_stride;
++ src_stride = -src_stride;
++ /* Horizontal scrolling to the left needs memmove */
++ if (src_bytes + width > dst_bytes)
++ {
++ while (--height >= 0)
++ {
++ memmove (dst_bytes, src_bytes, width);
++ dst_bytes += dst_stride;
++ src_bytes += src_stride;
++ }
++ return;
++ }
++ }
++ while (--height >= 0)
++ {
++ memcpy (dst_bytes, src_bytes, width);
++ dst_bytes += dst_stride;
++ src_bytes += src_stride;
++ }
++}
++
+ #endif /* PIXMAN_PRIVATE_H */
+--
+1.6.6.1
+
diff --git a/recipes/xorg-lib/pixman-0.19.4/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/recipes/xorg-lib/pixman-0.19.4/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
new file mode 100644
index 0000000000..bbade7f8ba
--- /dev/null
+++ b/recipes/xorg-lib/pixman-0.19.4/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
@@ -0,0 +1,91 @@
+From f8c3deb1f7a26992fe217d1748a1fa5c832bbbd2 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Thu, 22 Oct 2009 05:45:47 +0300
+Subject: [PATCH 4/6] Support of overlapping src/dst for pixman_blt_mmx
+
+---
+ pixman/pixman-mmx.c | 55 +++++++++++++++++++++++++++++---------------------
+ 1 files changed, 32 insertions(+), 23 deletions(-)
+
+diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
+index b284cd3..5b6afaa 100644
+--- a/pixman/pixman-mmx.c
++++ b/pixman/pixman-mmx.c
+@@ -2996,34 +2996,43 @@ pixman_blt_mmx (uint32_t *src_bits,
+ {
+ uint8_t * src_bytes;
+ uint8_t * dst_bytes;
+- int byte_width;
++ int bpp;
+
+- if (src_bpp != dst_bpp)
++ if (src_bpp != dst_bpp || src_bpp & 7)
+ return FALSE;
+
+- if (src_bpp == 16)
+- {
+- src_stride = src_stride * (int) sizeof (uint32_t) / 2;
+- dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
+- src_bytes = (uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
+- dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+- byte_width = 2 * width;
+- src_stride *= 2;
+- dst_stride *= 2;
+- }
+- else if (src_bpp == 32)
++ bpp = src_bpp >> 3;
++ width *= bpp;
++ src_stride *= 4;
++ dst_stride *= 4;
++ src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++ dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++ if (src_bpp != 16 && src_bpp != 32)
+ {
+- src_stride = src_stride * (int) sizeof (uint32_t) / 4;
+- dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
+- src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
+- dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+- byte_width = 4 * width;
+- src_stride *= 4;
+- dst_stride *= 4;
++ pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++ width, height);
++ return TRUE;
+ }
+- else
++
++ if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
+ {
+- return FALSE;
++ src_bytes += src_stride * height - src_stride;
++ dst_bytes += dst_stride * height - dst_stride;
++ dst_stride = -dst_stride;
++ src_stride = -src_stride;
++
++ if (src_bytes + width > dst_bytes)
++ {
++ /* TODO: reverse scanline copy using MMX */
++ while (--height >= 0)
++ {
++ memmove (dst_bytes, src_bytes, width);
++ dst_bytes += dst_stride;
++ src_bytes += src_stride;
++ }
++ return TRUE;
++ }
+ }
+
+ while (height--)
+@@ -3033,7 +3042,7 @@ pixman_blt_mmx (uint32_t *src_bits,
+ uint8_t *d = dst_bytes;
+ src_bytes += src_stride;
+ dst_bytes += dst_stride;
+- w = byte_width;
++ w = width;
+
+ while (w >= 2 && ((unsigned long)d & 3))
+ {
+--
+1.6.6.1
+
diff --git a/recipes/xorg-lib/pixman-0.19.4/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/recipes/xorg-lib/pixman-0.19.4/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
new file mode 100644
index 0000000000..bf540e06c5
--- /dev/null
+++ b/recipes/xorg-lib/pixman-0.19.4/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
@@ -0,0 +1,91 @@
+From 79fe7f347fe396aa2c917a1928fc18ab9321336c Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Thu, 22 Oct 2009 05:45:54 +0300
+Subject: [PATCH 5/6] Support of overlapping src/dst for pixman_blt_sse2
+
+---
+ pixman/pixman-sse2.c | 55 +++++++++++++++++++++++++++++--------------------
+ 1 files changed, 32 insertions(+), 23 deletions(-)
+
+diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c
+index 33d71ee..dcd6dcd 100644
+--- a/pixman/pixman-sse2.c
++++ b/pixman/pixman-sse2.c
+@@ -5614,34 +5614,43 @@ pixman_blt_sse2 (uint32_t *src_bits,
+ {
+ uint8_t * src_bytes;
+ uint8_t * dst_bytes;
+- int byte_width;
++ int bpp;
+
+- if (src_bpp != dst_bpp)
++ if (src_bpp != dst_bpp || src_bpp & 7)
+ return FALSE;
+
+- if (src_bpp == 16)
+- {
+- src_stride = src_stride * (int) sizeof (uint32_t) / 2;
+- dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
+- src_bytes =(uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
+- dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+- byte_width = 2 * width;
+- src_stride *= 2;
+- dst_stride *= 2;
+- }
+- else if (src_bpp == 32)
++ bpp = src_bpp >> 3;
++ width *= bpp;
++ src_stride *= 4;
++ dst_stride *= 4;
++ src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++ dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++ if (src_bpp != 16 && src_bpp != 32)
+ {
+- src_stride = src_stride * (int) sizeof (uint32_t) / 4;
+- dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
+- src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
+- dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+- byte_width = 4 * width;
+- src_stride *= 4;
+- dst_stride *= 4;
++ pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++ width, height);
++ return TRUE;
+ }
+- else
++
++ if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
+ {
+- return FALSE;
++ src_bytes += src_stride * height - src_stride;
++ dst_bytes += dst_stride * height - dst_stride;
++ dst_stride = -dst_stride;
++ src_stride = -src_stride;
++
++ if (src_bytes + width > dst_bytes)
++ {
++ /* TODO: reverse scanline copy using SSE2 */
++ while (--height >= 0)
++ {
++ memmove (dst_bytes, src_bytes, width);
++ dst_bytes += dst_stride;
++ src_bytes += src_stride;
++ }
++ return TRUE;
++ }
+ }
+
+ cache_prefetch ((__m128i*)src_bytes);
+@@ -5654,7 +5663,7 @@ pixman_blt_sse2 (uint32_t *src_bits,
+ uint8_t *d = dst_bytes;
+ src_bytes += src_stride;
+ dst_bytes += dst_stride;
+- w = byte_width;
++ w = width;
+
+ cache_prefetch_next ((__m128i*)s);
+ cache_prefetch_next ((__m128i*)d);
+--
+1.6.6.1
+
diff --git a/recipes/xorg-lib/pixman-0.19.4/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/recipes/xorg-lib/pixman-0.19.4/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
new file mode 100644
index 0000000000..cd25193670
--- /dev/null
+++ b/recipes/xorg-lib/pixman-0.19.4/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
@@ -0,0 +1,94 @@
+From ea0f7b1ae605bb57ca23e88b38b9c19390596723 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Wed, 18 Nov 2009 06:08:48 +0200
+Subject: [PATCH 6/6] Support of overlapping src/dst for pixman_blt_neon
+
+---
+ pixman/pixman-arm-neon.c | 62 +++++++++++++++++++++++++++++++++++++--------
+ 1 files changed, 51 insertions(+), 11 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index e0d2001..db1c2df 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -172,26 +172,66 @@ pixman_blt_neon (uint32_t *src_bits,
+ int width,
+ int height)
+ {
+- if (src_bpp != dst_bpp)
++ uint8_t * src_bytes;
++ uint8_t * dst_bytes;
++ int bpp;
++
++ if (src_bpp != dst_bpp || src_bpp & 7)
+ return FALSE;
+
++ bpp = src_bpp >> 3;
++ width *= bpp;
++ src_stride *= 4;
++ dst_stride *= 4;
++ src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++ dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++ if (src_bpp != 16 && src_bpp != 32)
++ {
++ pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++ width, height);
++ return TRUE;
++ }
++
++ if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
++ {
++ src_bytes += src_stride * height - src_stride;
++ dst_bytes += dst_stride * height - dst_stride;
++ dst_stride = -dst_stride;
++ src_stride = -src_stride;
++
++ if (src_bytes + width > dst_bytes)
++ {
++ /* TODO: reverse scanline copy using NEON */
++ while (--height >= 0)
++ {
++ memmove (dst_bytes, src_bytes, width);
++ dst_bytes += dst_stride;
++ src_bytes += src_stride;
++ }
++ return TRUE;
++ }
++ }
++
+ switch (src_bpp)
+ {
+ case 16:
+ pixman_composite_src_0565_0565_asm_neon (
+- width, height,
+- (uint16_t *)(((char *) dst_bits) +
+- dst_y * dst_stride * 4 + dst_x * 2), dst_stride * 2,
+- (uint16_t *)(((char *) src_bits) +
+- src_y * src_stride * 4 + src_x * 2), src_stride * 2);
++ width >> 1,
++ height,
++ (uint16_t *) dst_bytes,
++ dst_stride >> 1,
++ (uint16_t *) src_bytes,
++ src_stride >> 1);
+ return TRUE;
+ case 32:
+ pixman_composite_src_8888_8888_asm_neon (
+- width, height,
+- (uint32_t *)(((char *) dst_bits) +
+- dst_y * dst_stride * 4 + dst_x * 4), dst_stride,
+- (uint32_t *)(((char *) src_bits) +
+- src_y * src_stride * 4 + src_x * 4), src_stride);
++ width >> 2,
++ height,
++ (uint32_t *) dst_bytes,
++ dst_stride >> 2,
++ (uint32_t *) src_bytes,
++ src_stride >> 2);
+ return TRUE;
+ default:
+ return FALSE;
+--
+1.6.6.1
+
diff --git a/recipes/xorg-lib/pixman_0.19.4.bb b/recipes/xorg-lib/pixman_0.19.4.bb
new file mode 100644
index 0000000000..19fb1d4a4c
--- /dev/null
+++ b/recipes/xorg-lib/pixman_0.19.4.bb
@@ -0,0 +1,23 @@
+require pixman.inc
+
+SRC_URI[archive.md5sum] = "100a2d23f1d5683fdaa5d7ca71a0182b"
+SRC_URI[archive.sha256sum] = "04e613f87fec13e5d6e8540587af1112e9ab19f9d550751e848a2d65deb26fd6"
+
+PR = "${INC_PR}.0"
+
+SRC_URI += "\
+ file://0001-ARM-HACK-added-NEON-optimizations-for-fetch-store-r5.patch \
+ file://0002-Don-t-discriminate-PAD-and-REFLECT-repeat-in-standar.patch \
+ file://0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch \
+ file://0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch \
+ file://0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch \
+ file://0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch \
+"
+
+NEON = " --disable-arm-neon "
+NEON_armv7a = " "
+
+EXTRA_OECONF = "${NEON} --disable-gtk"
+
+DEFAULT_PREFERENCE = "-1"
+DEFAULT_PREFERENCE_angstrom = "2"