diff options
Diffstat (limited to 'recipes')
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 Binary files differdeleted file mode 100644 index 011fd5f296..0000000000 --- a/recipes/perl/perl-5.10.1/perl_5.10.1-8.diff.gz +++ /dev/null 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(®info, &tmp_s)) ++ ++ if (tmp_s >= strbeg && regtry(®info, &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" |