diff options
author | root <root@rshg054.dnsready.net> | 2012-01-22 23:15:13 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2012-01-22 23:15:13 +0000 |
commit | 164067832916c8e59219e1b0f30d7d04618a536e (patch) | |
tree | 5ec718dc77dfccfcdb1409707658bef3fb421ac4 /staging | |
parent | a1922d0ec660fdc1892f2783515f781c090df0a9 (diff) |
Sun Jan 22 23:15:13 UTC 2012
Diffstat (limited to 'staging')
73 files changed, 8705 insertions, 54 deletions
diff --git a/staging/djvulibre/PKGBUILD b/staging/djvulibre/PKGBUILD new file mode 100644 index 000000000..ef6bc1842 --- /dev/null +++ b/staging/djvulibre/PKGBUILD @@ -0,0 +1,41 @@ +# $Id: PKGBUILD 147068 2012-01-21 14:25:07Z andyrtr $ +# Maintainer: Jan de Groot <jgc@archlinux.org> +# Contributor: mgushee + +pkgname=djvulibre +pkgver=3.5.24 +pkgrel=3 +pkgdesc="Suite to create, manipulate and view DjVu ('déjà vu') documents" +arch=("i686" "x86_64") +license=('GPL') +url="http://djvu.sourceforge.net/" +depends=('gcc-libs' 'libtiff>=4.0.0' 'bash' 'hicolor-icon-theme') +makedepends=('pkg-config') +provides=("libdjvu=${pkgver}") +replaces=('libdjvu') +conflicts=('libdjvu') +optdepends=('djview4: Viewer application') +options=('!libtool') +install=djvulibre.install +source=(http://downloads.sourceforge.net/djvu/${pkgname}-${pkgver}.tar.gz + git-fixes.patch) +md5sums=('af83d27af5083198432a178d22b259c5' + 'ff3798e383e9c3fae407455d8a51deec') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/git-fixes.patch" + ./configure --prefix=/usr --disable-desktopfiles + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + + #Install icons for mime-types. + install -m755 -d ${pkgdir}/usr/share/icons/hicolor/{22x22,32x32,48x48,64x64}/mimetypes + for sz in 22 32 48 64; do + install -m644 desktopfiles/prebuilt-hi${sz}-djvu.png "${pkgdir}/usr/share/icons/hicolor/${sz}x${sz}/mimetypes/image-vnd.djvu.mime.png" + done +} diff --git a/staging/djvulibre/djvulibre.install b/staging/djvulibre/djvulibre.install new file mode 100644 index 000000000..3e9bb5c49 --- /dev/null +++ b/staging/djvulibre/djvulibre.install @@ -0,0 +1,13 @@ +post_install() { + if [ -x usr/bin/gtk-update-icon-cache ]; then + gtk-update-icon-cache -q -f usr/share/icons/hicolor + fi +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/staging/djvulibre/git-fixes.patch b/staging/djvulibre/git-fixes.patch new file mode 100644 index 000000000..3077cf0b4 --- /dev/null +++ b/staging/djvulibre/git-fixes.patch @@ -0,0 +1,1607 @@ +From 3341545edba359b292a8ef6db1b7d342caf3dcf1 Mon Sep 17 00:00:00 2001 +From: Leon Bottou <leon@bottou.org> +Date: Wed, 4 May 2011 21:25:35 -0700 +Subject: [PATCH] Added include <stddef.h> for gcc-4.6 + +--- + libdjvu/BSByteStream.cpp | 1 + + libdjvu/BSEncodeByteStream.cpp | 1 + + libdjvu/ByteStream.cpp | 1 + + libdjvu/DjVuFileCache.cpp | 1 + + libdjvu/DjVuGlobal.cpp | 2 ++ + libdjvu/DjVuGlobalMemory.cpp | 2 ++ + libdjvu/DjVuMessage.cpp | 1 + + libdjvu/DjVuMessageLite.cpp | 2 +- + libdjvu/DjVuPalette.cpp | 2 ++ + libdjvu/DjVuPort.h | 1 + + libdjvu/DjVuToPS.cpp | 1 + + libdjvu/GBitmap.cpp | 2 ++ + libdjvu/GException.cpp | 1 + + libdjvu/GOS.cpp | 1 + + libdjvu/GPixmap.cpp | 2 ++ + libdjvu/GSmartPointer.cpp | 1 + + libdjvu/GSmartPointer.h | 2 ++ + libdjvu/GString.cpp | 1 + + libdjvu/GString.h | 1 + + libdjvu/GThreads.cpp | 2 ++ + libdjvu/GURL.cpp | 1 + + libdjvu/GUnicode.cpp | 2 ++ + libdjvu/IFFByteStream.h | 1 + + libdjvu/IW44EncodeCodec.cpp | 1 + + libdjvu/IW44Image.cpp | 1 + + libdjvu/JPEGDecoder.h | 1 + + libdjvu/MMX.cpp | 1 + + libdjvu/UnicodeByteStream.h | 1 + + libdjvu/XMLParser.cpp | 1 + + libdjvu/ZPCodec.cpp | 2 ++ + libdjvu/atomic.cpp | 1 + + libdjvu/ddjvuapi.cpp | 1 + + libdjvu/ddjvuapi.h | 1 + + libdjvu/miniexp.cpp | 1 + + libdjvu/miniexp.h | 3 ++- + tools/bzz.cpp | 1 + + tools/c44.cpp | 1 + + tools/cjb2.cpp | 1 + + tools/cpaldjvu.cpp | 1 + + tools/csepdjvu.cpp | 1 + + tools/ddjvu.cpp | 1 + + tools/djvm.cpp | 2 +- + tools/djvmcvt.cpp | 1 + + tools/djvudump.cpp | 1 + + tools/djvuextract.cpp | 1 + + tools/djvumake.cpp | 1 + + tools/djvups.cpp | 1 + + tools/djvused.cpp | 1 + + tools/djvuserve.cpp | 1 + + tools/djvutxt.cpp | 1 + + tools/tiff2pdf.h | 1 + + xmltools/djvutoxml.cpp | 1 + + xmltools/djvuxmlparser.cpp | 1 + + 53 files changed, 63 insertions(+), 3 deletions(-) + +diff --git a/libdjvu/BSByteStream.cpp b/libdjvu/BSByteStream.cpp +index b762ccf..d662ab0 100644 +--- a/libdjvu/BSByteStream.cpp ++++ b/libdjvu/BSByteStream.cpp +@@ -62,6 +62,7 @@ + + // - Author: Leon Bottou, 07/1998 + ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> + #include <string.h> +diff --git a/libdjvu/BSEncodeByteStream.cpp b/libdjvu/BSEncodeByteStream.cpp +index 5d80e51..68bc3e3 100644 +--- a/libdjvu/BSEncodeByteStream.cpp ++++ b/libdjvu/BSEncodeByteStream.cpp +@@ -71,6 +71,7 @@ + #include "GOS.h" + #endif + ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> + #include <string.h> +diff --git a/libdjvu/ByteStream.cpp b/libdjvu/ByteStream.cpp +index 158c33c..be01847 100644 +--- a/libdjvu/ByteStream.cpp ++++ b/libdjvu/ByteStream.cpp +@@ -73,6 +73,7 @@ + #include "GOS.h" + #include "GURL.h" + #include "DjVuMessage.h" ++#include <stddef.h> + #include <fcntl.h> + #if defined(WIN32) || defined(__CYGWIN32__) + # include <io.h> +diff --git a/libdjvu/DjVuFileCache.cpp b/libdjvu/DjVuFileCache.cpp +index 6b1e85d..7d7a192 100644 +--- a/libdjvu/DjVuFileCache.cpp ++++ b/libdjvu/DjVuFileCache.cpp +@@ -63,6 +63,7 @@ + #include "DjVuFileCache.h" + #include "debug.h" + ++#include <stddef.h> + #include <stdlib.h> + + +diff --git a/libdjvu/DjVuGlobal.cpp b/libdjvu/DjVuGlobal.cpp +index e6d3cec..df9278e 100644 +--- a/libdjvu/DjVuGlobal.cpp ++++ b/libdjvu/DjVuGlobal.cpp +@@ -76,6 +76,8 @@ + #include "GThreads.h" + #include "GException.h" + #include "GContainer.h" ++ ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> + #include <string.h> +diff --git a/libdjvu/DjVuGlobalMemory.cpp b/libdjvu/DjVuGlobalMemory.cpp +index 3c6012c..c8ba309 100644 +--- a/libdjvu/DjVuGlobalMemory.cpp ++++ b/libdjvu/DjVuGlobalMemory.cpp +@@ -67,6 +67,8 @@ + + #include "DjVuGlobal.h" + #include "GException.h" ++ ++#include <stddef.h> + #include <stdlib.h> + #include <string.h> + #include "debug.h" +diff --git a/libdjvu/DjVuMessage.cpp b/libdjvu/DjVuMessage.cpp +index 6f5a735..1726025 100644 +--- a/libdjvu/DjVuMessage.cpp ++++ b/libdjvu/DjVuMessage.cpp +@@ -71,6 +71,7 @@ + #include "debug.h" + #include <ctype.h> + #include <string.h> ++#include <stddef.h> + #include <stdlib.h> + #ifdef WIN32 + # include <tchar.h> +diff --git a/libdjvu/DjVuMessageLite.cpp b/libdjvu/DjVuMessageLite.cpp +index b8c1010..5daa9d9 100644 +--- a/libdjvu/DjVuMessageLite.cpp ++++ b/libdjvu/DjVuMessageLite.cpp +@@ -73,8 +73,8 @@ + #include "debug.h" + #include <ctype.h> + #include <string.h> ++#include <stddef.h> + #include <stdlib.h> +-// #include <stdio.h> + #ifdef WIN32 + #include <tchar.h> + #include <windows.h> +diff --git a/libdjvu/DjVuPalette.cpp b/libdjvu/DjVuPalette.cpp +index c489f7b..76b0bf4 100644 +--- a/libdjvu/DjVuPalette.cpp ++++ b/libdjvu/DjVuPalette.cpp +@@ -64,6 +64,8 @@ + #include "ByteStream.h" + #include "BSByteStream.h" + #include "DjVuPalette.h" ++ ++#include <stddef.h> + #include <stdlib.h> + #include <math.h> + +diff --git a/libdjvu/DjVuPort.h b/libdjvu/DjVuPort.h +index f6a92f6..e2b3125 100644 +--- a/libdjvu/DjVuPort.h ++++ b/libdjvu/DjVuPort.h +@@ -65,6 +65,7 @@ + + #include "GThreads.h" + #include "GURL.h" ++#include "stddef.h" + + #ifdef HAVE_NAMESPACES + namespace DJVU { +diff --git a/libdjvu/DjVuToPS.cpp b/libdjvu/DjVuToPS.cpp +index 5517bf3..6914ff9 100644 +--- a/libdjvu/DjVuToPS.cpp ++++ b/libdjvu/DjVuToPS.cpp +@@ -72,6 +72,7 @@ + #include "GPixmap.h" + #include "debug.h" + #include <stdarg.h> ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> + #include <time.h> +diff --git a/libdjvu/GBitmap.cpp b/libdjvu/GBitmap.cpp +index ab5c0de..797edcc 100644 +--- a/libdjvu/GBitmap.cpp ++++ b/libdjvu/GBitmap.cpp +@@ -66,6 +66,8 @@ + #include "GString.h" + #include "GThreads.h" + #include "GException.h" ++#include <stddef.h> ++#include <stdlib.h> + #include <string.h> + + // - Author: Leon Bottou, 05/1997 +diff --git a/libdjvu/GException.cpp b/libdjvu/GException.cpp +index 2ea179a..89da70f 100644 +--- a/libdjvu/GException.cpp ++++ b/libdjvu/GException.cpp +@@ -60,6 +60,7 @@ + # pragma implementation + #endif + ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> + #include <string.h> +diff --git a/libdjvu/GOS.cpp b/libdjvu/GOS.cpp +index e784932..d2088e2 100644 +--- a/libdjvu/GOS.cpp ++++ b/libdjvu/GOS.cpp +@@ -65,6 +65,7 @@ + #include "GOS.h" + #include "GURL.h" + ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> + #include <ctype.h> +diff --git a/libdjvu/GPixmap.cpp b/libdjvu/GPixmap.cpp +index 392df54..4bf6f57 100644 +--- a/libdjvu/GPixmap.cpp ++++ b/libdjvu/GPixmap.cpp +@@ -75,6 +75,8 @@ + #include "GThreads.h" + #include "Arrays.h" + #include "JPEGDecoder.h" ++ ++#include <stddef.h> + #include <stdlib.h> + #include <math.h> + #include <assert.h> +diff --git a/libdjvu/GSmartPointer.cpp b/libdjvu/GSmartPointer.cpp +index 6e523e7..58aef5b 100644 +--- a/libdjvu/GSmartPointer.cpp ++++ b/libdjvu/GSmartPointer.cpp +@@ -67,6 +67,7 @@ + // Our original implementation consisted of multiple classes. + // <http://prdownloads.sourceforge.net/djvu/DjVu2_2b-src.tgz>. + ++#include <stddef.h> + #include <string.h> + #if PARANOID_DEBUG + # include <assert.h> +diff --git a/libdjvu/GSmartPointer.h b/libdjvu/GSmartPointer.h +index 82781bd..8a8bb8a 100644 +--- a/libdjvu/GSmartPointer.h ++++ b/libdjvu/GSmartPointer.h +@@ -97,6 +97,8 @@ + #include "DjVuGlobal.h" + #include "atomic.h" + ++#include <stddef.h> ++ + #ifdef HAVE_NAMESPACES + namespace DJVU { + # ifdef NOT_DEFINED // Just to fool emacs c++ mode +diff --git a/libdjvu/GString.cpp b/libdjvu/GString.cpp +index 03f6226..350b11b 100644 +--- a/libdjvu/GString.cpp ++++ b/libdjvu/GString.cpp +@@ -73,6 +73,7 @@ + #include "GThreads.h" + #include "debug.h" + ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> + #include <string.h> +diff --git a/libdjvu/GString.h b/libdjvu/GString.h +index b63b753..3aa1f76 100644 +--- a/libdjvu/GString.h ++++ b/libdjvu/GString.h +@@ -108,6 +108,7 @@ + #include "DjVuGlobal.h" + #include "GContainer.h" + ++#include <stddef.h> + #include <stdlib.h> + #include <stdarg.h> + #ifdef WIN32 +diff --git a/libdjvu/GThreads.cpp b/libdjvu/GThreads.cpp +index d81f3c3..253fed8 100644 +--- a/libdjvu/GThreads.cpp ++++ b/libdjvu/GThreads.cpp +@@ -71,6 +71,8 @@ + #include "GThreads.h" + #include "GException.h" + #include "DjVuMessageLite.h" ++ ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> + +diff --git a/libdjvu/GURL.cpp b/libdjvu/GURL.cpp +index c37bf52..a80078c 100644 +--- a/libdjvu/GURL.cpp ++++ b/libdjvu/GURL.cpp +@@ -72,6 +72,7 @@ + #include "GURL.h" + #include "debug.h" + ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> + #include <ctype.h> +diff --git a/libdjvu/GUnicode.cpp b/libdjvu/GUnicode.cpp +index 415c081..a8b25b8 100644 +--- a/libdjvu/GUnicode.cpp ++++ b/libdjvu/GUnicode.cpp +@@ -62,6 +62,8 @@ + + #include "GString.h" + ++#include <stddef.h> ++ + #if HAS_ICONV + #include <iconv.h> + #endif +diff --git a/libdjvu/IFFByteStream.h b/libdjvu/IFFByteStream.h +index a653f8c..e31b216 100644 +--- a/libdjvu/IFFByteStream.h ++++ b/libdjvu/IFFByteStream.h +@@ -124,6 +124,7 @@ + + + #include "DjVuGlobal.h" ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> + #include <string.h> +diff --git a/libdjvu/IW44EncodeCodec.cpp b/libdjvu/IW44EncodeCodec.cpp +index 8d7b12c..49081b7 100644 +--- a/libdjvu/IW44EncodeCodec.cpp ++++ b/libdjvu/IW44EncodeCodec.cpp +@@ -76,6 +76,7 @@ + #include "IFFByteStream.h" + #include "GRect.h" + ++#include <stddef.h> + #include <stdlib.h> + #include <string.h> + #include <math.h> +diff --git a/libdjvu/IW44Image.cpp b/libdjvu/IW44Image.cpp +index 9476726..4a19fb5 100644 +--- a/libdjvu/IW44Image.cpp ++++ b/libdjvu/IW44Image.cpp +@@ -76,6 +76,7 @@ + #include "IFFByteStream.h" + #include "GRect.h" + ++#include <stddef.h> + #include <stdlib.h> + #include <string.h> + #include <math.h> +diff --git a/libdjvu/JPEGDecoder.h b/libdjvu/JPEGDecoder.h +index bd430a0..fad1d4c 100644 +--- a/libdjvu/JPEGDecoder.h ++++ b/libdjvu/JPEGDecoder.h +@@ -64,6 +64,7 @@ + + #ifdef NEED_JPEG_DECODER + ++#include <stddef.h> + #include <string.h> + #include <setjmp.h> + +diff --git a/libdjvu/MMX.cpp b/libdjvu/MMX.cpp +index 5ab60bb..528dab6 100644 +--- a/libdjvu/MMX.cpp ++++ b/libdjvu/MMX.cpp +@@ -62,6 +62,7 @@ + + #include "MMX.h" + #include <stdio.h> ++#include <stddef.h> + #include <stdlib.h> + + +diff --git a/libdjvu/UnicodeByteStream.h b/libdjvu/UnicodeByteStream.h +index 0ae112b..9b49a17 100644 +--- a/libdjvu/UnicodeByteStream.h ++++ b/libdjvu/UnicodeByteStream.h +@@ -88,6 +88,7 @@ + #include "GString.h" + #include "ByteStream.h" + ++#include <stddef.h> + + #ifdef HAVE_NAMESPACES + namespace DJVU { +diff --git a/libdjvu/XMLParser.cpp b/libdjvu/XMLParser.cpp +index 84386c5..7da923a 100644 +--- a/libdjvu/XMLParser.cpp ++++ b/libdjvu/XMLParser.cpp +@@ -75,6 +75,7 @@ + #include "debug.h" + #include <stdio.h> + #include <ctype.h> ++#include <stddef.h> + #include <stdlib.h> + + +diff --git a/libdjvu/ZPCodec.cpp b/libdjvu/ZPCodec.cpp +index f6e971d..ff5b9bf 100644 +--- a/libdjvu/ZPCodec.cpp ++++ b/libdjvu/ZPCodec.cpp +@@ -66,6 +66,8 @@ + #include "ZPCodec.h" + #include "ByteStream.h" + #include "GException.h" ++ ++#include <stddef.h> + #include <stdlib.h> + #include <assert.h> + #include <math.h> +diff --git a/libdjvu/atomic.cpp b/libdjvu/atomic.cpp +index bdc193e..63fd483 100644 +--- a/libdjvu/atomic.cpp ++++ b/libdjvu/atomic.cpp +@@ -28,6 +28,7 @@ + # include "config.h" + #endif + ++#include <stddef.h> + #include <stdlib.h> + #include <assert.h> + #include "atomic.h" +diff --git a/libdjvu/ddjvuapi.cpp b/libdjvu/ddjvuapi.cpp +index b18b84b..f40f5aa 100644 +--- a/libdjvu/ddjvuapi.cpp ++++ b/libdjvu/ddjvuapi.cpp +@@ -60,6 +60,7 @@ + # pragma implementation "ddjvuapi.h" + #endif + ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> + #include <string.h> +diff --git a/libdjvu/ddjvuapi.h b/libdjvu/ddjvuapi.h +index d0ed48f..841f223 100644 +--- a/libdjvu/ddjvuapi.h ++++ b/libdjvu/ddjvuapi.h +@@ -64,6 +64,7 @@ extern "C" { + } + #endif + ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> + +diff --git a/libdjvu/miniexp.cpp b/libdjvu/miniexp.cpp +index e0fb087..fc51297 100644 +--- a/libdjvu/miniexp.cpp ++++ b/libdjvu/miniexp.cpp +@@ -23,6 +23,7 @@ + # pragma implementation "miniexp.h" + #endif + ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> + #include <ctype.h> +diff --git a/libdjvu/miniexp.h b/libdjvu/miniexp.h +index 91e345d..993005b 100644 +--- a/libdjvu/miniexp.h ++++ b/libdjvu/miniexp.h +@@ -38,7 +38,8 @@ extern "C" { + #ifndef MINILISPAPI + # define MINILISPAPI /**/ + #endif +- ++ ++#include <stddef.h> + + /* -------------------------------------------------- */ + /* LISP EXPRESSIONS */ +diff --git a/tools/bzz.cpp b/tools/bzz.cpp +index ca092e1..2ebc7b9 100644 +--- a/tools/bzz.cpp ++++ b/tools/bzz.cpp +@@ -94,6 +94,7 @@ + #include "GURL.h" + #include "DjVuMessage.h" + #include <locale.h> ++#include <stddef.h> + #include <stdlib.h> + + static const char *program = "(unknown)"; +diff --git a/tools/c44.cpp b/tools/c44.cpp +index 6f23b53..855504b 100644 +--- a/tools/c44.cpp ++++ b/tools/c44.cpp +@@ -226,6 +226,7 @@ + #include <locale.h> + #include <stdio.h> + #include <string.h> ++#include <stddef.h> + #include <stdlib.h> + + // command line data +diff --git a/tools/cjb2.cpp b/tools/cjb2.cpp +index 8cf89b9..11eb662 100644 +--- a/tools/cjb2.cpp ++++ b/tools/cjb2.cpp +@@ -120,6 +120,7 @@ + #include "jb2tune.h" + + #include <locale.h> ++#include <stddef.h> + #include <stdlib.h> + #if HAVE_TIFF + #include <tiffio.h> +diff --git a/tools/cpaldjvu.cpp b/tools/cpaldjvu.cpp +index 111cbd3..b640a7a 100644 +--- a/tools/cpaldjvu.cpp ++++ b/tools/cpaldjvu.cpp +@@ -118,6 +118,7 @@ + #include "jb2tune.h" + + #include <locale.h> ++#include <stddef.h> + #include <stdlib.h> + #include <math.h> + +diff --git a/tools/csepdjvu.cpp b/tools/csepdjvu.cpp +index cd721f8..d5203d5 100644 +--- a/tools/csepdjvu.cpp ++++ b/tools/csepdjvu.cpp +@@ -162,6 +162,7 @@ + #include "jb2tune.h" + + #include <locale.h> ++#include <stddef.h> + #include <stdlib.h> + + #undef MIN +diff --git a/tools/ddjvu.cpp b/tools/ddjvu.cpp +index 817e045..981a270 100644 +--- a/tools/ddjvu.cpp ++++ b/tools/ddjvu.cpp +@@ -62,6 +62,7 @@ + # include "config.h" + #endif + ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> + #include <stdarg.h> +diff --git a/tools/djvm.cpp b/tools/djvm.cpp +index 951bd66..6ea88c2 100644 +--- a/tools/djvm.cpp ++++ b/tools/djvm.cpp +@@ -135,9 +135,9 @@ + #include "DjVuMessage.h" + + #include <locale.h> ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> +-#include <stdlib.h> + + static const char * progname; + +diff --git a/tools/djvmcvt.cpp b/tools/djvmcvt.cpp +index 9ca1c54..20b468a 100644 +--- a/tools/djvmcvt.cpp ++++ b/tools/djvmcvt.cpp +@@ -144,6 +144,7 @@ + + #include <locale.h> + #include <stdio.h> ++#include <stddef.h> + #include <stdlib.h> + + static const char * progname; +diff --git a/tools/djvudump.cpp b/tools/djvudump.cpp +index 6a0215a..2dddbdf 100644 +--- a/tools/djvudump.cpp ++++ b/tools/djvudump.cpp +@@ -119,6 +119,7 @@ xxx + #include <locale.h> + #include <stdio.h> + #include <ctype.h> ++#include <stddef.h> + #include <stdlib.h> + + void +diff --git a/tools/djvuextract.cpp b/tools/djvuextract.cpp +index 4a9f381..907b99c 100644 +--- a/tools/djvuextract.cpp ++++ b/tools/djvuextract.cpp +@@ -105,6 +105,7 @@ + #include "GOS.h" + #include "DjVuMessage.h" + #include <locale.h> ++#include <stddef.h> + #include <stdlib.h> + + +diff --git a/tools/djvumake.cpp b/tools/djvumake.cpp +index 7020484..4c5fc0f 100644 +--- a/tools/djvumake.cpp ++++ b/tools/djvumake.cpp +@@ -153,6 +153,7 @@ + + #include <locale.h> + #include <stdio.h> ++#include <stddef.h> + #include <stdlib.h> + #include <ctype.h> + +diff --git a/tools/djvups.cpp b/tools/djvups.cpp +index 51aa999..632b832 100644 +--- a/tools/djvups.cpp ++++ b/tools/djvups.cpp +@@ -57,6 +57,7 @@ + # include "config.h" + #endif + ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> + #include <stdarg.h> +diff --git a/tools/djvused.cpp b/tools/djvused.cpp +index de84dcd..687fdca 100644 +--- a/tools/djvused.cpp ++++ b/tools/djvused.cpp +@@ -61,6 +61,7 @@ + #endif + + #include <stdio.h> ++#include <stddef.h> + #include <stdlib.h> + #include <stdarg.h> + #include <errno.h> +diff --git a/tools/djvuserve.cpp b/tools/djvuserve.cpp +index 19a17da..818fe78 100644 +--- a/tools/djvuserve.cpp ++++ b/tools/djvuserve.cpp +@@ -73,6 +73,7 @@ + + #include <locale.h> + #include <stdio.h> ++#include <stddef.h> + #include <stdlib.h> + #include <sys/stat.h> + #include <time.h> +diff --git a/tools/djvutxt.cpp b/tools/djvutxt.cpp +index ba2c745..9e9124c 100644 +--- a/tools/djvutxt.cpp ++++ b/tools/djvutxt.cpp +@@ -61,6 +61,7 @@ + # include "config.h" + #endif + ++#include <stddef.h> + #include <stdlib.h> + #include <stdio.h> + #include <stdarg.h> +diff --git a/tools/tiff2pdf.h b/tools/tiff2pdf.h +index 082f5fb..656dc43 100644 +--- a/tools/tiff2pdf.h ++++ b/tools/tiff2pdf.h +@@ -22,6 +22,7 @@ + # endif + # if HAVE_TIFF + # include <stdio.h> ++# include <stddef.h> + # include <stdlib.h> + # include <tiff.h> + # include <tiffio.h> +diff --git a/xmltools/djvutoxml.cpp b/xmltools/djvutoxml.cpp +index 17c769b..b40535e 100644 +--- a/xmltools/djvutoxml.cpp ++++ b/xmltools/djvutoxml.cpp +@@ -71,6 +71,7 @@ + + #include <locale.h> + #include <stdio.h> ++#include <stddef.h> + #include <stdlib.h> + #include <sys/stat.h> + #include <assert.h> +diff --git a/xmltools/djvuxmlparser.cpp b/xmltools/djvuxmlparser.cpp +index bdc5768..6679a9d 100644 +--- a/xmltools/djvuxmlparser.cpp ++++ b/xmltools/djvuxmlparser.cpp +@@ -70,6 +70,7 @@ + #include <stdio.h> + #include <ctype.h> + #include <locale.h> ++#include <stddef.h> + #include <stdlib.h> + + static void +-- +1.7.4.1 + +From 3cc41e2a72bbd6d34e81a9a214abbebf41cc00c7 Mon Sep 17 00:00:00 2001 +From: Leon Bottou <leon@bottou.org> +Date: Sat, 21 May 2011 09:27:17 -0700 +Subject: [PATCH] Added ddjvu option to skip corrupted pages. + +--- + tools/ddjvu.1 | 7 +++++++ + tools/ddjvu.cpp | 49 +++++++++++++++++++++++++++++++++---------------- + 2 files changed, 40 insertions(+), 16 deletions(-) + +diff --git a/tools/ddjvu.1 b/tools/ddjvu.1 +index 29285c3..7d3d105 100644 +--- a/tools/ddjvu.1 ++++ b/tools/ddjvu.1 +@@ -178,6 +178,13 @@ select specific layers of a DjVu image. + These modes can fail if the DjVu image does + not contain the selected layer. + .RE ++.TP ++.BI "-skip" ++Instead of aborting when encountering a corrupted page, ++this option causes ++.BR ddjvu ++to simply skip the corrupted page and continue with the next. ++This is useful for processing certain damaged files. + + .SH RESOLUTION OPTIONS + The following options control the resolution of the output image. +diff --git a/tools/ddjvu.cpp b/tools/ddjvu.cpp +index 981a270..b9cb038 100644 +--- a/tools/ddjvu.cpp ++++ b/tools/ddjvu.cpp +@@ -132,6 +132,7 @@ ddjvu_rect_t info_size; + ddjvu_rect_t info_segment; + const char *inputfilename = 0; + const char *outputfilename = 0; ++int flag_skip_corrupted = 0; + + #if HAVE_TIFF2PDF + char *tempfilename = 0; +@@ -164,7 +165,6 @@ handle(int wait) + if (msg->m_error.filename) + fprintf(stderr,"ddjvu: '%s:%d'\n", + msg->m_error.filename, msg->m_error.lineno); +- exit(10); + default: + break; + } +@@ -554,8 +554,16 @@ dopage(int pageno) + while (! ddjvu_page_decoding_done(page)) + handle(TRUE); + if (ddjvu_page_decoding_error(page)) +- die(i18n("Cannot decode page %d."), pageno); +- ++ { ++ handle(FALSE); ++ fprintf(stderr,"ddjvu: "); ++ fprintf(stderr,i18n("Cannot decode page %d."), pageno); ++ fprintf(stderr,"\n"); ++ if (flag_skip_corrupted) ++ return; ++ else ++ exit(10); ++ } + timingdata[1] = ticks(); + /* Open files */ + if (flag_format == 't') +@@ -753,19 +761,20 @@ usage() + i18n("DjVu decompression utility\n\n" + "Usage: ddjvu [options] [<djvufile> [<outputfile>]]\n\n" + "Options:\n" +- " -verbose Prints various informational messages.\n" +- " -format=FMT Selects output format: pbm,pgm,ppm,pnm,rle,tiff.\n" +- " -scale=N Selects display scale.\n" +- " -size=WxH Selects size of rendered image.\n" +- " -subsample=N Selects direct subsampling factor.\n" +- " -aspect=no Authorizes aspect ratio changes\n" +- " -segment=WxH+X+Y Selects which segment of the rendered image\n" +- " -mode=black Renders a meaningful bitonal image.\n" +- " -mode=mask Only renders the mask layer.\n" +- " -mode=foreground Only renders the foreground layer.\n" +- " -mode=background Only renders the background layer.\n" +- " -page=PAGESPEC Selects page(s) to be decoded.\n" +- " -quality=QUALITY Specifies jpeg quality for lossy tiff output.\n" ++ " -verbose Print various informational messages.\n" ++ " -format=FMT Select output format: pbm,pgm,ppm,pnm,rle,tiff.\n" ++ " -scale=N Select display scale.\n" ++ " -size=WxH Select size of rendered image.\n" ++ " -subsample=N Select direct subsampling factor.\n" ++ " -aspect=no Authorize aspect ratio changes\n" ++ " -segment=WxH+X+Y Select which segment of the rendered image\n" ++ " -mode=black Render a meaningful bitonal image.\n" ++ " -mode=mask Only render the mask layer.\n" ++ " -mode=foreground Only render the foreground layer.\n" ++ " -mode=background Only render the background layer.\n" ++ " -page=PAGESPEC Select page(s) to be decoded.\n" ++ " -skip Skip corrupted pages instead of aborting.\n" ++ " -quality=QUALITY Specify jpeg quality for lossy tiff output.\n" + "\n" + "If <outputfile> is a single dash or omitted, the decompressed image\n" + "is sent to the standard output. If <djvufile> is a single dash or\n" +@@ -846,6 +855,12 @@ parse_option(int argc, char **argv, int i) + die(i18n(errarg), opt); + flag_verbose = 1; + } ++ if (!strcmp(opt,"skip")) ++ { ++ if (arg) ++ die(i18n(errarg), opt); ++ flag_skip_corrupted = 1; ++ } + else if (!strcmp(opt,"scale")) + { + if (!arg) +@@ -1012,6 +1027,8 @@ main(int argc, char **argv) + die(i18n("Cannot open djvu document '%s'."), inputfilename); + while (! ddjvu_document_decoding_done(doc)) + handle(TRUE); ++ if (ddjvu_document_decoding_error(doc)) ++ die(i18n("Cannot decode document.")); + + /* Process all pages */ + i = ddjvu_document_get_pagenum(doc); +-- +1.7.4.1 + +From 6a6e6a047b41a431cfc091bd71fcad554fd79437 Mon Sep 17 00:00:00 2001 +From: Leon Bottou <leon@bottou.org> +Date: Mon, 30 May 2011 18:52:33 -0700 +Subject: [PATCH] Added option -o outputfile to djvudump. + +--- + tools/djvudump.1 | 2 +- + tools/djvudump.cpp | 34 +++++++++++++++++++++++++--------- + 2 files changed, 26 insertions(+), 10 deletions(-) + +diff --git a/tools/djvudump.1 b/tools/djvudump.1 +index c86b7d5..e39a318 100644 +--- a/tools/djvudump.1 ++++ b/tools/djvudump.1 +@@ -27,7 +27,7 @@ + djvudump \- Display internal structure of DjVu files. + + .SH SYNOPSIS +-.BI "djvudump " "djvufiles" "..." ++.BI "djvudump [-o " "outputfile" "] " "djvufiles" "..." + + .SH DESCRIPTION + Program +diff --git a/tools/djvudump.cpp b/tools/djvudump.cpp +index 2dddbdf..6daaf2c 100644 +--- a/tools/djvudump.cpp ++++ b/tools/djvudump.cpp +@@ -122,6 +122,9 @@ xxx + #include <stddef.h> + #include <stdlib.h> + ++const char *outputfile = 0; ++FILE *outputf = stdout; ++ + void + display(const GURL &url) + { +@@ -134,7 +137,7 @@ display(const GURL &url) + obs->seek(0); + obs->readall(buf, size); + GNativeString ns = str; +- fputs((const char*)ns, stdout); ++ fputs((const char*)ns, outputf); + } + + +@@ -146,7 +149,7 @@ usage() + "DJVUDUMP --- DjVuLibre-" DJVULIBRE_VERSION "\n" + #endif + "Describes DjVu and IFF85 files\n\n" +- "Usage: djvudump <iff_filenames>\n" ); ++ "Usage: djvudump [-o outputfile] <iff_filenames>\n" ); + exit(1); + } + +@@ -156,24 +159,37 @@ main(int argc, char **argv) + setlocale(LC_ALL,""); + setlocale(LC_NUMERIC,"C"); + djvu_programname(argv[0]); +- GArray<GUTF8String> dargv(0,argc-1); ++ // get output file name ++ if (argc>2 && !strcmp(argv[1],"-o")) ++ { ++ outputfile = argv[2]; ++ argv += 2; ++ argc -= 2; ++ } ++ // convert iff file name ++ GArray<GUTF8String> dargv(0, argc-1); + for(int i=0;i<argc;++i) + dargv[i]=GNativeString(argv[i]); ++ if (argc <= 1) ++ usage(); ++ if (outputfile && !(outputf = fopen(outputfile,"w"))) ++ { ++ DjVuPrintErrorUTF8("djvudump: Cannot open output file.\n"); ++ exit(1); ++ } + G_TRY + { +- if (argc<=1) +- usage(); + for (int i=1; i<argc; i++) +- { ++ { + const GURL::Filename::UTF8 url(dargv[i]); + display(url); +- } ++ } + } + G_CATCH(ex) +- { ++ { + ex.perror(); + exit(1); +- } ++ } + G_ENDCATCH; + return 0; + } +-- +1.7.4.1 + +From 6db359d1ad5e7e863fac53301e7ff884cfe44423 Mon Sep 17 00:00:00 2001 +From: Bill C Riemers <briemers@redhat.com> +Date: Thu, 2 Jun 2011 13:17:27 -0400 +Subject: [PATCH] Correct error copying an error in the annotation class of assigning a tempory + GUTF8String directly to a const char *. + +--- + libdjvu/DjVuAnno.cpp | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +diff --git a/libdjvu/DjVuAnno.cpp b/libdjvu/DjVuAnno.cpp +index 6ca5b4e..e2a9108 100644 +--- a/libdjvu/DjVuAnno.cpp ++++ b/libdjvu/DjVuAnno.cpp +@@ -261,7 +261,8 @@ GLObject::print(ByteStream & str, int compact, int indent, int * cur_pos) const + to_print=buffer.format("%d",number); + break; + case STRING: +- to_print=make_c_string(string); ++ buffer=make_c_string(string); ++ to_print=(const char *)buffer; + break; + case SYMBOL: + to_print=buffer.format("%s",(const char *)symbol); +-- +1.7.4.1 + +From 2b26415c3c46ffb7532ca250990668564be62d39 Mon Sep 17 00:00:00 2001 +From: Leon Bottou <leon@bottou.org> +Date: Thu, 2 Jun 2011 09:48:49 -0700 +Subject: [PATCH] Corrected polarity of xmp annotation saving + +--- + libdjvu/DjVuAnno.cpp | 19 ++++++++++--------- + 1 files changed, 10 insertions(+), 9 deletions(-) + +diff --git a/libdjvu/DjVuAnno.cpp b/libdjvu/DjVuAnno.cpp +index e2a9108..8e16dd8 100644 +--- a/libdjvu/DjVuAnno.cpp ++++ b/libdjvu/DjVuAnno.cpp +@@ -254,25 +254,24 @@ GLObject::print(ByteStream & str, int compact, int indent, int * cur_pos) const + if (!cur_pos) { cur_pos = &local_cur_pos; } + + GUTF8String buffer; +- const char * to_print=0; + switch(type) + { + case NUMBER: +- to_print=buffer.format("%d",number); ++ buffer.format("%d",number); + break; + case STRING: +- buffer=make_c_string(string); +- to_print=(const char *)buffer; ++ buffer = make_c_string(string); + break; + case SYMBOL: +- to_print=buffer.format("%s",(const char *)symbol); ++ buffer.format("%s",(const char *)symbol); + break; + case LIST: +- to_print=buffer.format("(%s",(const char *)name); ++ buffer.format("(%s",(const char *)name); + break; + case INVALID: + break; + } ++ const char * to_print = (const char*)buffer; + if (!compact && *cur_pos+strlen(to_print)>70) + { + char ch='\n'; +@@ -1375,7 +1374,7 @@ DjVuANT::encode_raw(void) const + } + //*** XMP Metadata + del_all_items(XMP_TAG, parser); +- if (!xmpmetadata) ++ if (!!xmpmetadata) + { + GUTF8String mdatabuffer("("); + mdatabuffer += XMP_TAG; +@@ -1385,8 +1384,10 @@ DjVuANT::encode_raw(void) const + //*** Mapareas + del_all_items(GMapArea::MAPAREA_TAG, parser); + for(GPosition pos=map_areas;pos;++pos) +- parser.parse(map_areas[pos]->print()); +- ++ { ++ GUTF8String mapareabuffer = map_areas[pos]->print(); ++ parser.parse(mapareabuffer); ++ } + GP<ByteStream> gstr=ByteStream::create(); + ByteStream &str=*gstr; + parser.print(str, 1); +-- +1.7.4.1 + +From 65600b5801d11ff8ca8db3a25bf004fc06f4515b Mon Sep 17 00:00:00 2001 +From: Leon Bottou <leon@bottou.org> +Date: Sat, 4 Jun 2011 15:29:18 -0700 +Subject: [PATCH] Eliminate warnings with gcc-4.6.0 + +--- + libdjvu/Arrays.cpp | 2 - + libdjvu/DjVuDocEditor.cpp | 37 +++++++++---------- + libdjvu/GString.cpp | 44 ++++++++-------------- + libdjvu/JPEGDecoder.cpp | 2 - + libdjvu/XMLParser.cpp | 7 +--- + tools/ddjvu.cpp | 2 +- + tools/jb2cmp/patterns.cpp | 87 +------------------------------------------- + tools/tiff2pdf.c | 9 ++--- + 8 files changed, 40 insertions(+), 150 deletions(-) + +diff --git a/libdjvu/Arrays.cpp b/libdjvu/Arrays.cpp +index c4f74ca..6c7f23a 100644 +--- a/libdjvu/Arrays.cpp ++++ b/libdjvu/Arrays.cpp +@@ -239,9 +239,7 @@ ArrayRep::ins(int n, const void * what, unsigned int howmany) + copy(ndata, lobound-minlo, hibound-minlo, + data, lobound-minlo, hibound-minlo); + destroy(data, lobound-minlo, hibound-minlo); +- void *tmp=data; + data=ndata; +- tmp=data; + maxhi = nmaxhi; + } + +diff --git a/libdjvu/DjVuDocEditor.cpp b/libdjvu/DjVuDocEditor.cpp +index 2247e40..f1d8b0d 100644 +--- a/libdjvu/DjVuDocEditor.cpp ++++ b/libdjvu/DjVuDocEditor.cpp +@@ -555,27 +555,24 @@ DjVuDocEditor::insert_file(const GURL &file_url, bool is_page, + can_compress_flag); + } + +- // Oh. It does exist... Check that it has IFF structure ++ // Oh. It does exist... Check that it has IFF structure + { +- const GP<IFFByteStream> giff( +- IFFByteStream::create(file_pool->get_stream())); +- IFFByteStream &iff=*giff; +- GUTF8String chkid; +- +- int length; +- length=iff.get_chunk(chkid); +- if (chkid!="FORM:DJVI" && chkid!="FORM:DJVU" && +- chkid!="FORM:BM44" && chkid!="FORM:PM44") +- G_THROW( ERR_MSG("DjVuDocEditor.not_1_page") "\t"+file_url.get_string()); +- +- // Wonderful. It's even a DjVu file. Scan for NDIR chunks. +- // If NDIR chunk is found, ignore the file +- while(iff.get_chunk(chkid)) +- { +- if (chkid=="NDIR") +- return false; +- iff.close_chunk(); +- } ++ const GP<IFFByteStream> giff( ++ IFFByteStream::create(file_pool->get_stream())); ++ IFFByteStream &iff=*giff; ++ GUTF8String chkid; ++ if (chkid!="FORM:DJVI" && chkid!="FORM:DJVU" && ++ chkid!="FORM:BM44" && chkid!="FORM:PM44") ++ G_THROW( ERR_MSG("DjVuDocEditor.not_1_page") "\t" ++ + file_url.get_string()); ++ // Wonderful. It's even a DjVu file. Scan for NDIR chunks. ++ // If NDIR chunk is found, ignore the file ++ while(iff.get_chunk(chkid)) ++ { ++ if (chkid=="NDIR") ++ return false; ++ iff.close_chunk(); ++ } + } + return insert_file(file_pool,file_url,is_page,file_pos,name2id,source); + } +diff --git a/libdjvu/GString.cpp b/libdjvu/GString.cpp +index 350b11b..ed92a7f 100644 +--- a/libdjvu/GString.cpp ++++ b/libdjvu/GString.cpp +@@ -643,26 +643,22 @@ GBaseString::UTF8ToNative( + const char *source=(*this); + GP<GStringRep> retval; + if(source && source[0]) +- { +-#if DO_CHANGELOCALE +- GUTF8String lc_ctype(setlocale(LC_CTYPE,0)); +-#endif +- bool repeat; +- for(repeat=!currentlocale;;repeat=false) + { +- retval=(*this)->toNative((GStringRep::EscapeMode)escape); + #if DO_CHANGELOCALE +- if (!repeat || retval || (lc_ctype == setlocale(LC_CTYPE,""))) ++ GUTF8String lc_ctype(setlocale(LC_CTYPE,0)); ++ bool repeat; ++ for(repeat=!currentlocale;;repeat=false) ++ { + #endif +- break; +- } ++ retval=(*this)->toNative((GStringRep::EscapeMode)escape); + #if DO_CHANGELOCALE +- if(!repeat) +- { ++ if (!repeat || retval || (lc_ctype == setlocale(LC_CTYPE,""))) ++ break; ++ } ++ if(!repeat) + setlocale(LC_CTYPE,(const char *)lc_ctype); +- } + #endif +- } ++ } + return GNativeString(retval); + } + +@@ -697,27 +693,19 @@ GBaseString::NativeToUTF8(void) const + const char *source=(*this); + #if DO_CHANGELOCALE + GUTF8String lc_ctype=setlocale(LC_CTYPE,0); +-#endif + bool repeat; + for(repeat=true;;repeat=false) +- { +- if( (retval=GStringRep::NativeToUTF8(source)) ) + { +- if(GStringRep::cmp(retval->toNative(),source)) +- { +- retval=GStringRep::UTF8::create((unsigned int)0); +- } +- } +-#if DO_CHANGELOCALE +- if(!repeat || retval || (lc_ctype == setlocale(LC_CTYPE,""))) + #endif +- break; +- } ++ if( (retval=GStringRep::NativeToUTF8(source)) ) ++ if(GStringRep::cmp(retval->toNative(),source)) ++ retval=GStringRep::UTF8::create((unsigned int)0); + #if DO_CHANGELOCALE ++ if(!repeat || retval || (lc_ctype == setlocale(LC_CTYPE,""))) ++ break; ++ } + if(!repeat) +- { + setlocale(LC_CTYPE,(const char *)lc_ctype); +- } + #endif + } + return GUTF8String(retval); +diff --git a/libdjvu/JPEGDecoder.cpp b/libdjvu/JPEGDecoder.cpp +index cb7aa97..f22f77a 100644 +--- a/libdjvu/JPEGDecoder.cpp ++++ b/libdjvu/JPEGDecoder.cpp +@@ -153,7 +153,6 @@ JPEGDecoder::decode(ByteStream & bs,GPixmap &pix) + + JSAMPARRAY buffer; /* Output row buffer */ + int row_stride; /* physical row width in output buffer */ +- int full_buf_size; + int isGrey,i; + + cinfo.err = jpeg_std_error(&jerr.pub); +@@ -184,7 +183,6 @@ JPEGDecoder::decode(ByteStream & bs,GPixmap &pix) + + /* JSAMPLEs per row in output buffer */ + row_stride = cinfo.output_width * cinfo.output_components; +- full_buf_size = row_stride * cinfo.output_height; + + /* Make a one-row-high sample array that will go away when done with image */ + buffer = (*cinfo.mem->alloc_sarray) +diff --git a/libdjvu/XMLParser.cpp b/libdjvu/XMLParser.cpp +index 7da923a..026b27d 100644 +--- a/libdjvu/XMLParser.cpp ++++ b/libdjvu/XMLParser.cpp +@@ -646,17 +646,12 @@ lt_XMLParser::Impl::parse(const lt_XMLTags &tags, GURL *pdjvufile) + GPosition datapos=args.contains("data"); + if(datapos) + { +- bool isDjVuType=false; + GPosition typePos(args.contains("type")); + if(typePos) +- { +- if(args[typePos] != mimetype) + { +- // DjVuPrintErrorUTF8("Ignoring %s Object tag\n",mimetype); ++ if(args[typePos] != mimetype) + continue; + } +- isDjVuType=true; +- } + const GURL url = (pdjvufile) ? *pdjvufile + : GURL::UTF8(args[datapos], + (args[datapos][0] == '/') ? codebase.base() : codebase); +diff --git a/tools/ddjvu.cpp b/tools/ddjvu.cpp +index b9cb038..3b4ce16 100644 +--- a/tools/ddjvu.cpp ++++ b/tools/ddjvu.cpp +@@ -855,7 +855,7 @@ parse_option(int argc, char **argv, int i) + die(i18n(errarg), opt); + flag_verbose = 1; + } +- if (!strcmp(opt,"skip")) ++ else if (!strcmp(opt,"skip")) + { + if (arg) + die(i18n(errarg), opt); +diff --git a/tools/jb2cmp/patterns.cpp b/tools/jb2cmp/patterns.cpp +index e456902..b31cf4e 100644 +--- a/tools/jb2cmp/patterns.cpp ++++ b/tools/jb2cmp/patterns.cpp +@@ -303,11 +303,8 @@ static int32 distance_by_pixeldiff_functions(Image *i1, Image *i2, + int32 (*compare_row)(byte *, byte *, int32), + int32 (*compare_with_white)(byte *, int32), int32 ceiling) + { +- byte **p1, **p2; + int32 w1, w2, h1, h2; + int32 shift_x, shift_y; /* of i1's coordinate system with respect to i2 */ +- /*int32 s = 0, i, i_start, i_cap; +- int32 right_margin_start, right_margin_width;*/ + + /* make i1 to be narrower than i2 */ + if (i1->width > i2->width) +@@ -317,8 +314,8 @@ static int32 distance_by_pixeldiff_functions(Image *i1, Image *i2, + i2 = img; + } + +- w1 = i1->width; h1 = i1->height; p1 = i1->pixels; +- w2 = i2->width; h2 = i2->height; p2 = i2->pixels; ++ w1 = i1->width; h1 = i1->height; ++ w2 = i2->width; h2 = i2->height; + + /* (shift_x, shift_y) */ + /* is what should be added to i1's coordinates to get i2's coordinates. */ +@@ -339,86 +336,6 @@ static int32 distance_by_pixeldiff_functions(Image *i1, Image *i2, + + return distance_by_pixeldiff_functions_by_shift( + i1, i2, compare_row, compare_with_white, ceiling, shift_x, shift_y); +- +-/* FIXME */ +-#if 0 +- /* Compute difference in the non-overlapping top margin */ +- +- if (shift_y < 0) +- { +- /* i1 has top rows not covered by i2 */ +- i_cap = -shift_y; +- for (i = 0; i < i_cap; i++) +- { +- assert(i >= 0 && i < h1); +- s += compare_with_white(p1[i], w1); +- if (s > ceiling) return maxint; +- } +- i_start = i_cap; /* topmost overlapping row in i1's coords */ +- } +- else +- { +- /* i2 has top rows not covered by i1 */ +- for (i = 0; i < shift_y; i++) +- { +- assert(i >= 0 && i < h2); +- s += compare_with_white(p2[i], w2); +- if (s > ceiling) return maxint; +- } +- i_start = 0; +- } +- +- /* Compute difference in the overlapping area */ +- +- i_cap = h2 - shift_y; +- if (h1 < i_cap) i_cap = h1; +- +- right_margin_start = shift_x + w1; +- right_margin_width = w2 - right_margin_start; +- +- for (i = i_start; i < i_cap; i++) /* i is a coordinate in i1 system */ +- { +- int32 y = i + shift_y; /* same row coordinate in i2 system */ +- assert(y >= 0 && y < h2); +- s += compare_with_white(p2[y], shift_x); +- if (s > ceiling) return maxint; +- assert(i >= 0 && i < h1); +- assert(shift_x + w1 <= w2); +- assert(i < h1); +- s += compare_row(p2[y] + shift_x, p1[i], w1); +- if (s > ceiling) return maxint; +- s += compare_with_white(p2[y] + right_margin_start, right_margin_width); +- if (s > ceiling) return maxint; +- } +- +- +- /* Compute difference in the non-overlapping bottom margin */ +- +- if (i_cap == h1) +- { +- /* i2 has bottom rows not covered by i1 */ +- i_start = i_cap + shift_y; +- for (i = i_start; i < h2; i++) +- { +- assert(i >= 0 && i < h2); +- s += compare_with_white(p2[i], w2); +- if (s > ceiling) return maxint; +- } +- } +- else +- { +- /* i1 has bottom rows not covered by i2 */ +- i_start = i_cap; +- for (i = i_cap; i < h1; i++) +- { +- assert(i >= 0 && i < h1); +- s += compare_with_white(p1[i], w1); +- if (s > ceiling) return maxint; +- } +- } +- +- return s; +-#endif + } + + #endif +diff --git a/tools/tiff2pdf.c b/tools/tiff2pdf.c +index 36949f1..2db8703 100644 +--- a/tools/tiff2pdf.c ++++ b/tools/tiff2pdf.c +@@ -721,7 +721,6 @@ tiff2pdf(TIFF *input, FILE *outputfile, int argc, const char **argv) + const char *outfilename = "<null>"; + T2P *t2p = NULL; + TIFF *output = NULL; +- tsize_t written=0; + int c; + + /* T2P */ +@@ -874,7 +873,7 @@ tiff2pdf(TIFF *input, FILE *outputfile, int argc, const char **argv) + TIFFSeekFile(output, (toff_t) 0, SEEK_SET); + + /* Write */ +- written = t2p_write_pdf(t2p, input, output); ++ t2p_write_pdf(t2p, input, output); + if(t2p->t2p_error != 0){ + TIFFError(TIFF2PDF_MODULE, "An error occurred creating output PDF file"); + goto fail; +@@ -2633,7 +2632,6 @@ static tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, + tsize_t read=0; + uint16 i=0; + ttile_t tilecount=0; +- tsize_t tilesize=0; + ttile_t septilecount=0; + tsize_t septilesize=0; + #ifdef JPEG_SUPPORT +@@ -2819,7 +2817,6 @@ static tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, + if(t2p->pdf_sample == T2P_SAMPLE_PLANAR_SEPARATE_TO_CONTIG){ + septilesize=TIFFTileSize(input); + septilecount=TIFFNumberOfTiles(input); +- tilesize=septilesize*t2p->tiff_samplesperpixel; + tilecount=septilecount/t2p->tiff_samplesperpixel; + buffer = (unsigned char*) _TIFFmalloc(t2p->tiff_datasize); + if(buffer==NULL){ +@@ -3802,7 +3799,6 @@ static tsize_t t2p_write_pdf_info(T2P* t2p, TIFF* input, TIFF* output){ + tsize_t written=0; + char* info; + char buffer[512]; +- int buflen=0; + + if(t2p->pdf_datetime==NULL){ + t2p_pdf_tifftime(t2p, input); +@@ -3815,7 +3811,8 @@ static tsize_t t2p_write_pdf_info(T2P* t2p, TIFF* input, TIFF* output){ + } + written += TIFFWriteFile(output, (tdata_t) "\r/Producer ", 11); + _TIFFmemset((tdata_t)buffer, 0x00, 512); +- buflen=sprintf(buffer, "libtiff / tiff2pdf - %d / %s", TIFFLIB_VERSION, T2P_VERSION); ++ sprintf(buffer, "libtiff / tiff2pdf - %d / %s", ++ TIFFLIB_VERSION, T2P_VERSION); + written += t2p_write_pdf_string(buffer, output); + written += TIFFWriteFile(output, (tdata_t) "\r", 1); + if(t2p->pdf_creator != NULL){ +-- +1.7.4.1 + +From 5b3d074c2b315e7339ce279c559c3a99f26bef6a Mon Sep 17 00:00:00 2001 +From: Leon Bottou <leon@bottou.org> +Date: Sat, 4 Jun 2011 17:37:00 -0700 +Subject: [PATCH] Fix MMX code when using gcc-4.6 + +Fix MMX macros +Enable MMX on x86_64 +--- + libdjvu/MMX.cpp | 17 ++++++++++++++++- + libdjvu/MMX.h | 11 ++++++----- + tools/ddjvu.cpp | 1 - + 3 files changed, 22 insertions(+), 7 deletions(-) + +diff --git a/libdjvu/MMX.cpp b/libdjvu/MMX.cpp +index 528dab6..e70fdd8 100644 +--- a/libdjvu/MMX.cpp ++++ b/libdjvu/MMX.cpp +@@ -167,8 +167,23 @@ MMXControl::enable_mmx() + : "=m" (cpuflags) : + : "eax","ecx","edx"); + #endif ++#if defined(MMX) && defined(__GNUC__) && defined(__x86_64__) ++ // Detection of MMX for GCC ++ __asm__ volatile (// Check that CR0:EM is clear ++ "xorl %%edx,%%edx\n\t" ++ "smsw %%ax\n\t" ++ "andl $4,%%eax\n\t" ++ "jnz 1f\n\t" ++ // Execute CPUID ++ "movl $1,%%eax\n\t" ++ "cpuid\n" ++ // Finish ++ "1:\tmovl %%edx, %0" ++ : "=m" (cpuflags) : ++ : "eax","ebx","ecx","edx"); ++#endif + #if defined(MMX) && defined(_MSC_VER) && defined(_M_IX86) +- // Detection of MMX for MSVC ++ // Detection of MMX for MSVC 32 bits + __asm { pushfd + pop ecx + xor edx,edx +diff --git a/libdjvu/MMX.h b/libdjvu/MMX.h +index b0af5e5..f8780af 100644 +--- a/libdjvu/MMX.h ++++ b/libdjvu/MMX.h +@@ -143,17 +143,18 @@ class MMXControl + + #ifndef NO_MMX + +-#if defined(__GNUC__) && defined(__i386__) ++#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) ++typedef struct{ char c[8]; } MMX_t; + #define MMXemms \ + __asm__ volatile("emms" : : : "memory" ) + #define MMXrr(op,src,dst) \ +- __asm__ volatile( #op " %%" #src ",%%" #dst : : : "memory") ++ __asm__ volatile( #op " %%" #src ",%%" #dst : : : "memory" ) + #define MMXir(op,imm,dst) \ +- __asm__ volatile( #op " %0,%%" #dst : : "i" (imm) : "memory") ++ __asm__ volatile( #op " %0,%%" #dst : : "i" (imm) : "memory" ) + #define MMXar(op,addr,dst) \ +- __asm__ volatile( #op " %0,%%" #dst : : "m" (*(addr)) : "memory") ++ __asm__ volatile( #op " %0,%%" #dst : : "m" (*(MMX_t*)(addr)) : "memory" ) + #define MMXra(op,src,addr) \ +- __asm__ volatile( #op " %%" #src ",%0" : : "m" (*(addr)) : "memory") ++ __asm__ volatile( #op " %%" #src ",%0" : "=m" (*(MMX_t*)(addr)) : : "memory") + #define MMX 1 + #endif + +diff --git a/tools/ddjvu.cpp b/tools/ddjvu.cpp +index 3b4ce16..216c6cb 100644 +--- a/tools/ddjvu.cpp ++++ b/tools/ddjvu.cpp +@@ -846,7 +846,6 @@ parse_option(int argc, char **argv, int i) + arg = opt; + opt = "subsample"; + } +- + /* Parse options */ + if (!strcmp(opt,"v") || + !strcmp(opt,"verbose")) +-- +1.7.4.1 + +From fbed8e51e5970b12ce36afb0dec8c4e02992c0f8 Mon Sep 17 00:00:00 2001 +From: Leon Bottou <leon@bottou.org> +Date: Thu, 9 Jun 2011 14:37:52 -0700 +Subject: [PATCH] Fixed regression in djvm. + +--- + libdjvu/DjVuDocEditor.cpp | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/libdjvu/DjVuDocEditor.cpp b/libdjvu/DjVuDocEditor.cpp +index f1d8b0d..baeb7dd 100644 +--- a/libdjvu/DjVuDocEditor.cpp ++++ b/libdjvu/DjVuDocEditor.cpp +@@ -561,6 +561,7 @@ DjVuDocEditor::insert_file(const GURL &file_url, bool is_page, + IFFByteStream::create(file_pool->get_stream())); + IFFByteStream &iff=*giff; + GUTF8String chkid; ++ iff.get_chunk(chkid); + if (chkid!="FORM:DJVI" && chkid!="FORM:DJVU" && + chkid!="FORM:BM44" && chkid!="FORM:PM44") + G_THROW( ERR_MSG("DjVuDocEditor.not_1_page") "\t" +-- +1.7.4.1 + +From f63327438954b8831a1a9f43afc8b6d16e1d3baf Mon Sep 17 00:00:00 2001 +From: Leon Bottou <leon@bottou.org> +Date: Wed, 15 Jun 2011 00:05:50 -0700 +Subject: [PATCH] Encode oblique text as separate lines. + +--- + tools/csepdjvu.cpp | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/tools/csepdjvu.cpp b/tools/csepdjvu.cpp +index d5203d5..08f7a27 100644 +--- a/tools/csepdjvu.cpp ++++ b/tools/csepdjvu.cpp +@@ -1288,7 +1288,7 @@ Comments::textmark(GP<TxtMark> mark) + int shx = (mark->x - lastx) * 100 / fontsize; + int shy = (mark->y - lasty) * 100 / fontsize; + int inter = dirx * shx + diry * shy; +- if ( (dirx == lastdirx) && (diry == lastdiry) && ++ if ( (dirx || diry) && (dirx == lastdirx) && (diry == lastdiry) && + (inter > -150) && (inter < 300) && + abs(diry * shx + dirx * shy) < 80 ) + mark->inter = inter; +-- +1.7.4.1 + +From ea9fd2acab2e298ba721eb79f5026d34e6ef141f Mon Sep 17 00:00:00 2001 +From: Barak A. Pearlmutter <barak+git@cs.nuim.ie> +Date: Wed, 22 Jun 2011 11:21:41 +0100 +Subject: [PATCH] consistent prototype for ddjvu_anno_get_xmp + +--- + libdjvu/ddjvuapi.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/libdjvu/ddjvuapi.h b/libdjvu/ddjvuapi.h +index 841f223..14b63eb 100644 +--- a/libdjvu/ddjvuapi.h ++++ b/libdjvu/ddjvuapi.h +@@ -1619,7 +1619,7 @@ ddjvu_anno_get_metadata(miniexp_t annotations, miniexp_t key); + Returns zero if no such key is present. */ + + DDJVUAPI const char * +-ddjvu_anno_get_xmp(miniexp_t annotations, miniexp_t xmp); ++ddjvu_anno_get_xmp(miniexp_t annotations); + + + /* -------------------------------------------------- */ +-- +1.7.4.1 + +From 701d1261493e175955aac97921949f4e4241750d Mon Sep 17 00:00:00 2001 +From: Leon Bottou <leon@bottou.org> +Date: Sun, 11 Sep 2011 09:59:26 -0700 +Subject: [PATCH] Fixed typo in man page. + +--- + tools/ddjvu.1 | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/tools/ddjvu.1 b/tools/ddjvu.1 +index 7d3d105..cbb8307 100644 +--- a/tools/ddjvu.1 ++++ b/tools/ddjvu.1 +@@ -66,7 +66,7 @@ and + .BR "ppm" + respectively produce a Portable Bitmap (PBM), + Portable Graymap (PGM), +-or Portable Pixmap (PGM) file. ++or Portable Pixmap (PPM) file. + Format + .B "pnm" + produces a PBM, PGM, or PPM +-- +1.7.4.1 + diff --git a/staging/emacs/PKGBUILD b/staging/emacs/PKGBUILD new file mode 100644 index 000000000..ec5d8568e --- /dev/null +++ b/staging/emacs/PKGBUILD @@ -0,0 +1,48 @@ +# $Id: PKGBUILD 147096 2012-01-21 21:55:38Z eric $ +# Maintainer: Juergen Hoetzel <juergen@archlinux.org> +# Contributor: Renchi Raju <renchi@green.tam.uiuc.edu> + +pkgname=emacs +_majorver=23.3 +_minorver=b +# We want something like "23.3.a" so pacman version comparison works, but +# upstream uses "23.3a", which is a bit silly and interpreted as alpha. +pkgver=$_majorver.$_minorver +_realver=$_majorver$_minorver +pkgrel=2 +pkgdesc="The extensible, customizable, self-documenting real-time display editor" +arch=('i686' 'x86_64') +url="http://www.gnu.org/software/emacs/emacs.html" +license=('GPL3') +depends=('librsvg' 'gpm' 'giflib' 'libxpm' 'gtk2' 'hicolor-icon-theme' 'gconf' 'desktop-file-utils' 'alsa-lib') +install=emacs.install +source=(ftp://ftp.gnu.org/gnu/emacs/$pkgname-$_realver.tar.bz2{,.sig} emacs-subversion17.patch) +md5sums=('917ce0054ef63773078a6e99b55df1ee' + '4f987fbb906c0ee73e05904b0f7ce5ec' + '12e2e7a66df5cc5ded54e1d30083a1fb') + +build() { + cd "$srcdir"/$pkgname-$_majorver + patch -p1 -i ../emacs-subversion17.patch + ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib \ + --localstatedir=/var --with-x-toolkit=gtk --with-xft + make +} + +package() { + cd "$srcdir"/$pkgname-$_majorver + make DESTDIR="$pkgdir" install + + # remove conflict with ctags package + mv "$pkgdir"/usr/bin/{ctags,ctags.emacs} + mv "$pkgdir"/usr/share/man/man1/{ctags.1,ctags.emacs.1} + # fix all the 777 perms on directories + find "$pkgdir"/usr/share/emacs/$_majorver -type d -exec chmod 755 {} \; + # fix user/root permissions on usr/share files + find "$pkgdir"/usr/share/emacs/$_majorver -exec chown root:root {} \; + # fix perms on /var/games + chmod 775 "$pkgdir"/var/games + chmod 775 "$pkgdir"/var/games/emacs + chmod 664 "$pkgdir"/var/games/emacs/* + chown -R root:games "$pkgdir"/var/games +} diff --git a/staging/emacs/emacs-subversion17.patch b/staging/emacs/emacs-subversion17.patch new file mode 100644 index 000000000..e7969de81 --- /dev/null +++ b/staging/emacs/emacs-subversion17.patch @@ -0,0 +1,83 @@ +From d7afd9288e22c466b63c27e7e11783589b07aeff Mon Sep 17 00:00:00 2001 +From: Karl Pflästerer <k@rl.pflaesterer.de> +Date: Sat, 12 Feb 2011 01:12:53 +0000 +Subject: Adapt to Subversion change, with no .svn directory in each sub directory. + +http://lists.gnu.org/archive/html/emacs-devel/2011-02/msg00357.html + +* vc/vc-svn.el (vc-svn-registered): Use vc-svn-root. +(vc-svn-root): New function. Make vc-svn-responsible-p an alias. +(vc-svn-repository-hostname): Use "svn info". +--- +(limited to 'lisp/vc/vc-svn.el') + +diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el +index aefef50..20c7689 100644 +--- a/lisp/vc-svn.el ++++ b/lisp/vc-svn.el +@@ -117,17 +117,13 @@ If you want to force an empty list of arguments, use t." + ;;;###autoload (getenv "SVN_ASP_DOT_NET_HACK")) + ;;;###autoload "_svn") + ;;;###autoload (t ".svn")))) +-;;;###autoload (when (file-readable-p (expand-file-name +-;;;###autoload (concat admin-dir "/entries") +-;;;###autoload (file-name-directory f))) ++;;;###autoload (when (vc-find-root f admin-dir) + ;;;###autoload (load "vc-svn") + ;;;###autoload (vc-svn-registered f)))) + + (defun vc-svn-registered (file) + "Check if FILE is SVN registered." +- (when (file-readable-p (expand-file-name (concat vc-svn-admin-directory +- "/entries") +- (file-name-directory file))) ++ (when (vc-svn-root file) + (with-temp-buffer + (cd (file-name-directory file)) + (let* (process-file-side-effects +@@ -275,14 +271,12 @@ Passes either `vc-svn-register-switches' or `vc-register-switches' + to the SVN command." + (apply 'vc-svn-command nil 0 files "add" (vc-switches 'SVN 'register))) + +-(defun vc-svn-responsible-p (file) +- "Return non-nil if SVN thinks it is responsible for FILE." +- (file-directory-p (expand-file-name vc-svn-admin-directory +- (if (file-directory-p file) +- file +- (file-name-directory file))))) ++(defun vc-svn-root (file) ++ (vc-find-root file vc-svn-admin-directory)) + +-(defalias 'vc-svn-could-register 'vc-svn-responsible-p ++(defalias 'vc-svn-responsible-p 'vc-svn-root) ++ ++(defalias 'vc-svn-could-register 'vc-svn-root + "Return non-nil if FILE could be registered in SVN. + This is only possible if SVN is responsible for FILE's directory.") + +@@ -594,20 +588,10 @@ and that it passes `vc-svn-global-switches' to it before FLAGS." + + (defun vc-svn-repository-hostname (dirname) + (with-temp-buffer +- (let ((coding-system-for-read +- (or file-name-coding-system +- default-file-name-coding-system))) +- (vc-insert-file (expand-file-name (concat vc-svn-admin-directory +- "/entries") +- dirname))) ++ (let (process-file-side-effects) ++ (vc-svn-command t t dirname "info" "--xml")) + (goto-char (point-min)) +- (when (re-search-forward +- ;; Old `svn' used name="svn:this_dir", newer use just name="". +- (concat "name=\"\\(?:svn:this_dir\\)?\"[\n\t ]*" +- "\\(?:[-a-z]+=\"[^\"]*\"[\n\t ]*\\)*?" +- "url=\"\\(?1:[^\"]+\\)\"" +- ;; Yet newer ones don't use XML any more. +- "\\|^\ndir\n[0-9]+\n\\(?1:.*\\)") nil t) ++ (when (re-search-forward "<url>\\(.*\\)</url>" nil t) + ;; This is not a hostname but a URL. This may actually be considered + ;; as a feature since it allows vc-svn-stay-local to specify different + ;; behavior for different modules on the same server. +-- +cgit v0.9.0.2 diff --git a/staging/emacs/emacs.install b/staging/emacs/emacs.install new file mode 100644 index 000000000..d84f1de14 --- /dev/null +++ b/staging/emacs/emacs.install @@ -0,0 +1,32 @@ +ICON_PATH=usr/share/icons/hicolor +INFO_DIR=usr/share/info + +INFO_FILES=(ada-mode auth autotype calc ccmode cl dbus dired-x ebrowse +ede ediff edt efaq eieio eintr elisp emacs emacs-mime epa erc eshell eudc flymake +forms gnus idlwave info mairix-el message mh-e newsticker nxml-mode +org pcl-cvs pgg rcirc reftex remember sasl sc semantic ses sieve smtpmail +speedbar tramp url vip viper widget woman) + +post_install() { + gtk-update-icon-cache -q -t -f ${ICON_PATH} + update-desktop-database -q + + [[ -x usr/bin/install-info ]] || return 0 + for f in ${INFO_FILES[@]}; do + install-info ${INFO_DIR}/$f.gz ${INFO_DIR}/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + gtk-update-icon-cache -q -t -f ${ICON_PATH} + update-desktop-database -q + + [[ -x usr/bin/install-info ]] || return 0 + for f in ${INFO_FILES[@]}; do + install-info --delete ${INFO_DIR}/$f.gz ${INFO_DIR}/dir 2> /dev/null + done +} diff --git a/staging/gimp-dbp/PKGBUILD b/staging/gimp-dbp/PKGBUILD new file mode 100644 index 000000000..7575150dc --- /dev/null +++ b/staging/gimp-dbp/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 147086 2012-01-21 18:00:41Z eric $ +# Maintainer: tobias <tobias@archlinux.org> +# Contributor: Tobias Kieslich <tobias@justdreams.de> + +pkgname=gimp-dbp +pkgver=1.1.9 +pkgrel=3 +pkgdesc="David's batch processor for the GIMP" +arch=('i686' 'x86_64') +url="http://members.ozemail.com.au/~hodsond/dbp.html" +license=('GPL') +depends=('gimp') +source=(http://www.ozemail.com.au/~hodsond/dbpSrc-${pkgver//./-}.tgz) +md5sums=('1106625707798ab8ea1317ac6bece1c5') + +build() { + cd "${srcdir}/dbp-${pkgver}" + sed -i "s|<string>|<cstring>|" op.h + make +} + +package() { + cd "${srcdir}/dbp-${pkgver}" + install -D -m755 dbp "${pkgdir}/usr/lib/gimp/2.0/plug-ins/dbp" +} diff --git a/staging/gimp-devel/PKGBUILD b/staging/gimp-devel/PKGBUILD new file mode 100644 index 000000000..4f5e74b22 --- /dev/null +++ b/staging/gimp-devel/PKGBUILD @@ -0,0 +1,54 @@ +# $Id: PKGBUILD 147053 2012-01-21 05:38:18Z eric $ +# Maintainer: Eric Bélanger <eric@archlinux.org> + +pkgname=gimp-devel +pkgver=2.7.4 +pkgrel=2 +pkgdesc="GNU Image Manipulation Program (Development Version)" +arch=('i686' 'x86_64') +url="http://www.gimp.org/" +license=('GPL3' 'LGPL3') +depends=('pygtk' 'lcms' 'libxpm' 'libwmf' 'librsvg' 'libmng' 'dbus-glib' \ + 'jasper' 'libexif' 'gegl' 'desktop-file-utils' 'hicolor-icon-theme') +makedepends=('intltool' 'libwebkit' 'poppler-glib' 'alsa-lib' 'iso-codes' 'curl') +optdepends=('gutenprint: for sophisticated printing only as gimp has built-in cups print support' + 'libwebkit: for the help browser or web-page plug-ins' + 'poppler-glib: for pdf support' + 'alsa-lib: for MIDI event controller module' + 'curl: for URI support') +options=('!libtool' '!makeflags') +conflicts=('gimp') +provides=("gimp=${pkgver}") +install=gimp-devel.install +source=(ftp://ftp.gimp.org/pub/gimp/v${pkgver%.*}/gimp-${pkgver}.tar.bz2 linux.gpl) +md5sums=('bda95a29c3483b8ff458b06b1543f867' + 'bb27bc214261d36484093e857f015f38') + +build() { + cd "${srcdir}/gimp-${pkgver}" + PYTHON=/usr/bin/python2 ./configure --prefix=/usr --sysconfdir=/etc \ + --enable-mp --enable-gimp-console --enable-python --with-libcurl \ + --with-gif-compression=lzw --without-aa --without-gvfs + make +} + +#check() { +# cd "${srcdir}/gimp-${pkgver}" +# make check +#} + +package() { + cd "${srcdir}/gimp-${pkgver}" + make DESTDIR="${pkgdir}" install + sed -i 's|#![ ]*/usr/bin/env python|#!/usr/bin/env python2|' "${pkgdir}"/usr/lib/gimp/2.0/plug-ins/*.py + install -D -m644 "${srcdir}/linux.gpl" "${pkgdir}/usr/share/gimp/2.0/palettes/Linux.gpl" + + ln -sf gimp-console-${pkgver%.*}.1.gz "${pkgdir}/usr/share/man/man1/gimp-console.1.gz" + ln -sf gimprc-${pkgver%.*}.5.gz "${pkgdir}/usr/share/man/man5/gimprc.5.gz" + ln -sf gimptool-2.0.1.gz "${pkgdir}/usr/share/man/man1/gimptool.1.gz" + ln -s gimp-${pkgver%.*}.1.gz "${pkgdir}/usr/share/man/man1/gimp.1.gz" + + ln -s gimp-${pkgver%.*} "${pkgdir}/usr/bin/gimp" + ln -s gimp-console-${pkgver%.*} "${pkgdir}/usr/bin/gimp-console" + ln -s gimptool-2.0 "${pkgdir}/usr/bin/gimptool" +} diff --git a/staging/gimp-devel/gimp-devel.install b/staging/gimp-devel/gimp-devel.install new file mode 100644 index 000000000..c317fbaca --- /dev/null +++ b/staging/gimp-devel/gimp-devel.install @@ -0,0 +1,12 @@ +post_install() { + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/staging/gimp-devel/linux.gpl b/staging/gimp-devel/linux.gpl new file mode 100644 index 000000000..0a73d8979 --- /dev/null +++ b/staging/gimp-devel/linux.gpl @@ -0,0 +1,19 @@ +GIMP Palette +Name: linux +# + 0 0 0 + 0 0 170 + 0 170 0 + 0 170 170 +170 0 0 +170 0 170 +170 85 0 +170 170 170 + 85 85 85 + 85 85 255 + 85 255 85 + 85 255 255 +255 85 85 +255 85 255 +255 255 85 +255 255 255 diff --git a/staging/gimp-ufraw/PKGBUILD b/staging/gimp-ufraw/PKGBUILD new file mode 100644 index 000000000..229159b5e --- /dev/null +++ b/staging/gimp-ufraw/PKGBUILD @@ -0,0 +1,34 @@ +# $Id: PKGBUILD 147080 2012-01-21 17:07:06Z eric $ +# Maintainer: Tobias Kieslich <tobias@archlinux.org> + +pkgname=gimp-ufraw +pkgver=0.18 +pkgrel=4 +pkgdesc="Standalone or gimp plugin converter for raw files" +url="http://ufraw.sourceforge.net/" +arch=('i686' 'x86_64') +license=('GPL') +depends=('gtkimageview' 'exiv2' 'lcms' 'bzip2' 'desktop-file-utils') +makedepends=('gimp' 'cinepaint') +optdepends=('gimp: to use the gimp import plugin for raw images' + 'cinepaint: to use the cinepaint import plugin for raw images') +install=gimp-ufraw.install +source=(http://downloads.sourceforge.net/ufraw/ufraw-${pkgver}.tar.gz) +sha1sums=('41c9ad7aa7f1cbb63a6b0b330b3599b18a7e8cd2') + +build() { + cd "${srcdir}/ufraw-${pkgver}" + + ./configure --prefix=/usr \ + --enable-extras \ + --enable-mime \ + --enable-openmp + sed -i "s/-ffast-math -fomit-frame-pointer -W -Wall -O3/${CFLAGS}/" Makefile + make +} + +package() { + cd "${srcdir}/ufraw-${pkgver}" + make DESTDIR="${pkgdir}" install + rm -f "${pkgdir}/usr/bin/dcraw" +} diff --git a/staging/gimp-ufraw/gimp-ufraw.install b/staging/gimp-ufraw/gimp-ufraw.install new file mode 100644 index 000000000..80312d4a6 --- /dev/null +++ b/staging/gimp-ufraw/gimp-ufraw.install @@ -0,0 +1,11 @@ +post_install() { + update-desktop-database -q +} + +post_upgrade() { + update-desktop-database -q +} + +post_remove() { + update-desktop-database -q +} diff --git a/staging/gimp/PKGBUILD b/staging/gimp/PKGBUILD new file mode 100644 index 000000000..6a95fb2b3 --- /dev/null +++ b/staging/gimp/PKGBUILD @@ -0,0 +1,53 @@ +# $Id: PKGBUILD 147055 2012-01-21 08:27:32Z eric $ +# Maintainer: tobias <tobias@archlinux.org> + +pkgname=gimp +pkgver=2.6.11 +pkgrel=8 +pkgdesc="GNU Image Manipulation Program" +arch=('i686' 'x86_64') +url="http://www.gimp.org/" +license=('GPL' 'LGPL') +depends=('pygtk' 'lcms' 'libxpm' 'libwmf' 'libxmu' 'librsvg' 'libmng' 'dbus-glib' \ + 'libexif' 'gegl' 'desktop-file-utils' 'hicolor-icon-theme') +makedepends=('intltool' 'libwebkit' 'poppler-glib' 'alsa-lib' 'iso-codes' 'curl') +optdepends=('gutenprint: for sophisticated printing only as gimp has built-in cups print support' + 'libwebkit: for the help browser' + 'poppler-glib: for pdf support' + 'alsa-lib: for MIDI event controller module' + 'curl: for URI support') +options=('!libtool' '!makeflags') +conflicts=('gimp-devel') +install=gimp.install +source=(ftp://ftp.gimp.org/pub/gimp/v${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2 linux.gpl + uri-backend-libcurl.patch gimp-poppler-0.18.patch libpng_compile.patch) +sha1sums=('2f9d596e727bdbf304fa78257c1731d9faf3934c' + '110ce9798173b19a662d086ed7b882b4729f06cf' + 'a65b0ee6cd1b4345065b7b98c07f2fed15f844f4' + '1479a6d80be7adf74f66a3b88057a5029fe892e8' + '5ce329d2e2cb136e93f16117fa79ab6e31866f68') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + patch -p1 < ../uri-backend-libcurl.patch + patch -p1 < ../gimp-poppler-0.18.patch + patch -p1 < ../libpng_compile.patch + PYTHON=/usr/bin/python2 LIBS+="-lgobject-2.0 -lglib-2.0 -lm" \ + ./configure --prefix=/usr --sysconfdir=/etc \ + --enable-mp --enable-gimp-console --enable-gimp-remote \ + --enable-python --with-gif-compression=lzw --with-libcurl \ + --without-aa --without-hal --without-gvfs --without-gnomevfs + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|' "${pkgdir}"/usr/lib/gimp/2.0/plug-ins/*.py + install -D -m644 "${srcdir}/linux.gpl" "${pkgdir}/usr/share/gimp/2.0/palettes/Linux.gpl" + + rm "${pkgdir}/usr/share/man/man1/gimp-console.1" + ln -s gimp-console-${pkgver%.*}.1.gz "${pkgdir}/usr/share/man/man1/gimp-console.1.gz" + ln -s gimptool-2.0 "${pkgdir}/usr/bin/gimptool" + ln -sf gimptool-2.0.1.gz "${pkgdir}/usr/share/man/man1/gimptool.1.gz" +} diff --git a/staging/gimp/gimp-poppler-0.18.patch b/staging/gimp/gimp-poppler-0.18.patch new file mode 100644 index 000000000..0715460bc --- /dev/null +++ b/staging/gimp/gimp-poppler-0.18.patch @@ -0,0 +1,476 @@ +From 69f69eed816b89be9a01a48a1f0643d1fd496118 Mon Sep 17 00:00:00 2001 +From: Nils Philippsen <nils@redhat.com> +Date: Fri, 6 May 2011 11:58:44 +0200 +Subject: [PATCH] patch: poppler-0.17 + +Squashed commit of the following: + +commit 529d940222dfc352d41fbf72de29134421aa4002 +Author: Nils Philippsen <nils@redhat.com> +Date: Fri May 6 11:50:30 2011 +0200 + + use code based on pixbufs instead of cairo surfaces + + this is done to avoid adding to libgimp, thanks to Mukund Sivaraman for + hints how to do this + +commit f8671d8767d4cdab830dc06310e96c63a88ec0fd +Author: Mukund Sivaraman <muks@banu.com> +Date: Thu Apr 21 13:57:13 2011 +0530 + + file-pdf-load: Update attribution, removing bogus copyright + (cherry picked from commit e999122e0b20b6ccd6bde3ce039bb64068fc0019) + +commit 89a78f2590d298dac2f42e6d9a3016fc5d672c70 +Author: Nils Philippsen <nils@redhat.com> +Date: Thu Apr 21 13:52:18 2011 +0200 + + file-pdf-load: Use better API + cleanups + + * fixes issues with poppler 0.17 completely + * uses new libgimp API to pass surfaces instead of pixbufs + * uses GTK+ 3 API to convert surfaces to pixbufs where available + (backported from commit 7bdadd80ba479d6ff904e276d805e16f6b940ee2) + +commit 4e92302c4a14a961f112587a0ad86696c88da2f8 +Author: Nils Philippsen <nils@redhat.com> +Date: Thu Apr 21 13:38:08 2011 +0200 + + file-pdf-load: Don't use deprecated API (bug #646947) + + (cherry picked from commit 9b3e1c91fd2eac69da6947ec9c7fbf10096ba237) + + Conflicts: + + plug-ins/common/file-pdf.c +--- + plug-ins/common/file-pdf.c | 323 ++++++++++++++++++++++++++++++++++++++------ + 1 files changed, 283 insertions(+), 40 deletions(-) + +diff --git a/plug-ins/common/file-pdf.c b/plug-ins/common/file-pdf.c +index a43b459..43c2b7d 100644 +--- a/plug-ins/common/file-pdf.c ++++ b/plug-ins/common/file-pdf.c +@@ -4,6 +4,9 @@ + * + * Copyright (C) 2005 Nathan Summers + * ++ * Some code in render_page_to_surface() borrowed from ++ * poppler.git/glib/poppler-page.cc. ++ * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or +@@ -80,16 +83,20 @@ static gboolean load_dialog (PopplerDocument *doc, + static PopplerDocument * open_document (const gchar *filename, + GError **error); + +-static GdkPixbuf * get_thumbnail (PopplerDocument *doc, ++static cairo_surface_t * get_thumb_surface (PopplerDocument *doc, ++ gint page, ++ gint preferred_size); ++ ++static GdkPixbuf * get_thumb_pixbuf (PopplerDocument *doc, + gint page, + gint preferred_size); + + static gint32 layer_from_pixbuf (gint32 image, +- const gchar *layer_name, +- gint position, +- GdkPixbuf *buf, +- gdouble progress_start, +- gdouble progress_scale); ++ const gchar *layer_name, ++ gint position, ++ GdkPixbuf *pixbuf, ++ gdouble progress_start, ++ gdouble progress_scale); + + /** + ** the following was formerly part of +@@ -433,11 +440,12 @@ run (const gchar *name, + } + else + { +- gdouble width = 0; +- gdouble height = 0; +- gdouble scale; +- gint32 image = -1; +- GdkPixbuf *pixbuf = NULL; ++ gdouble width = 0; ++ gdouble height = 0; ++ gdouble scale; ++ gint32 image = -1; ++ gint num_pages = 0; ++ GdkPixbuf *pixbuf = NULL; + + /* Possibly retrieve last settings */ + gimp_get_data (LOAD_PROC, &loadvals); +@@ -455,7 +463,10 @@ run (const gchar *name, + g_object_unref (page); + } + +- pixbuf = get_thumbnail (doc, 0, param[1].data.d_int32); ++ num_pages = poppler_document_get_n_pages (doc); ++ ++ pixbuf = get_thumb_pixbuf (doc, 0, param[1].data.d_int32); ++ + g_object_unref (doc); + } + +@@ -548,6 +559,187 @@ open_document (const gchar *filename, + return doc; + } + ++/* FIXME: Remove this someday when we depend fully on GTK+ >= 3 */ ++ ++#if (!GTK_CHECK_VERSION (3, 0, 0)) ++ ++static cairo_format_t ++gdk_cairo_format_for_content (cairo_content_t content) ++{ ++ switch (content) ++ { ++ case CAIRO_CONTENT_COLOR: ++ return CAIRO_FORMAT_RGB24; ++ case CAIRO_CONTENT_ALPHA: ++ return CAIRO_FORMAT_A8; ++ case CAIRO_CONTENT_COLOR_ALPHA: ++ default: ++ return CAIRO_FORMAT_ARGB32; ++ } ++} ++ ++static cairo_surface_t * ++gdk_cairo_surface_coerce_to_image (cairo_surface_t *surface, ++ cairo_content_t content, ++ int src_x, ++ int src_y, ++ int width, ++ int height) ++{ ++ cairo_surface_t *copy; ++ cairo_t *cr; ++ ++ copy = cairo_image_surface_create (gdk_cairo_format_for_content (content), ++ width, ++ height); ++ ++ cr = cairo_create (copy); ++ cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); ++ cairo_set_source_surface (cr, surface, -src_x, -src_y); ++ cairo_paint (cr); ++ cairo_destroy (cr); ++ ++ return copy; ++} ++ ++static void ++convert_alpha (guchar *dest_data, ++ int dest_stride, ++ guchar *src_data, ++ int src_stride, ++ int src_x, ++ int src_y, ++ int width, ++ int height) ++{ ++ int x, y; ++ ++ src_data += src_stride * src_y + src_x * 4; ++ ++ for (y = 0; y < height; y++) { ++ guint32 *src = (guint32 *) src_data; ++ ++ for (x = 0; x < width; x++) { ++ guint alpha = src[x] >> 24; ++ ++ if (alpha == 0) ++ { ++ dest_data[x * 4 + 0] = 0; ++ dest_data[x * 4 + 1] = 0; ++ dest_data[x * 4 + 2] = 0; ++ } ++ else ++ { ++ dest_data[x * 4 + 0] = (((src[x] & 0xff0000) >> 16) * 255 + alpha / 2) / alpha; ++ dest_data[x * 4 + 1] = (((src[x] & 0x00ff00) >> 8) * 255 + alpha / 2) / alpha; ++ dest_data[x * 4 + 2] = (((src[x] & 0x0000ff) >> 0) * 255 + alpha / 2) / alpha; ++ } ++ dest_data[x * 4 + 3] = alpha; ++ } ++ ++ src_data += src_stride; ++ dest_data += dest_stride; ++ } ++} ++ ++static void ++convert_no_alpha (guchar *dest_data, ++ int dest_stride, ++ guchar *src_data, ++ int src_stride, ++ int src_x, ++ int src_y, ++ int width, ++ int height) ++{ ++ int x, y; ++ ++ src_data += src_stride * src_y + src_x * 4; ++ ++ for (y = 0; y < height; y++) { ++ guint32 *src = (guint32 *) src_data; ++ ++ for (x = 0; x < width; x++) { ++ dest_data[x * 3 + 0] = src[x] >> 16; ++ dest_data[x * 3 + 1] = src[x] >> 8; ++ dest_data[x * 3 + 2] = src[x]; ++ } ++ ++ src_data += src_stride; ++ dest_data += dest_stride; ++ } ++} ++ ++/** ++ * gdk_pixbuf_get_from_surface: ++ * @surface: surface to copy from ++ * @src_x: Source X coordinate within @surface ++ * @src_y: Source Y coordinate within @surface ++ * @width: Width in pixels of region to get ++ * @height: Height in pixels of region to get ++ * ++ * Transfers image data from a #cairo_surface_t and converts it to an RGB(A) ++ * representation inside a #GdkPixbuf. This allows you to efficiently read ++ * individual pixels from cairo surfaces. For #GdkWindows, use ++ * gdk_pixbuf_get_from_window() instead. ++ * ++ * This function will create an RGB pixbuf with 8 bits per channel. ++ * The pixbuf will contain an alpha channel if the @surface contains one. ++ * ++ * Return value: (transfer full): A newly-created pixbuf with a reference ++ * count of 1, or %NULL on error ++ */ ++static GdkPixbuf * ++gdk_pixbuf_get_from_surface (cairo_surface_t *surface, ++ gint src_x, ++ gint src_y, ++ gint width, ++ gint height) ++{ ++ cairo_content_t content; ++ GdkPixbuf *dest; ++ ++ /* General sanity checks */ ++ g_return_val_if_fail (surface != NULL, NULL); ++ g_return_val_if_fail (width > 0 && height > 0, NULL); ++ ++ content = cairo_surface_get_content (surface) | CAIRO_CONTENT_COLOR; ++ dest = gdk_pixbuf_new (GDK_COLORSPACE_RGB, ++ !!(content & CAIRO_CONTENT_ALPHA), ++ 8, ++ width, height); ++ ++ surface = gdk_cairo_surface_coerce_to_image (surface, content, ++ src_x, src_y, ++ width, height); ++ cairo_surface_flush (surface); ++ if (cairo_surface_status (surface) || dest == NULL) ++ { ++ cairo_surface_destroy (surface); ++ return NULL; ++ } ++ ++ if (gdk_pixbuf_get_has_alpha (dest)) ++ convert_alpha (gdk_pixbuf_get_pixels (dest), ++ gdk_pixbuf_get_rowstride (dest), ++ cairo_image_surface_get_data (surface), ++ cairo_image_surface_get_stride (surface), ++ 0, 0, ++ width, height); ++ else ++ convert_no_alpha (gdk_pixbuf_get_pixels (dest), ++ gdk_pixbuf_get_rowstride (dest), ++ cairo_image_surface_get_data (surface), ++ cairo_image_surface_get_stride (surface), ++ 0, 0, ++ width, height); ++ ++ cairo_surface_destroy (surface); ++ return dest; ++} ++ ++#endif ++ + static gint32 + layer_from_pixbuf (gint32 image, + const gchar *layer_name, +@@ -566,6 +758,54 @@ layer_from_pixbuf (gint32 image, + return layer; + } + ++static cairo_surface_t * ++render_page_to_surface (PopplerPage *page, ++ int width, ++ int height, ++ double scale) ++{ ++ cairo_surface_t *surface; ++ cairo_t *cr; ++ ++ surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); ++ cr = cairo_create (surface); ++ ++ cairo_save (cr); ++ cairo_translate (cr, 0.0, 0.0); ++ ++ if (scale != 1.0) ++ cairo_scale (cr, scale, scale); ++ ++ poppler_page_render (page, cr); ++ cairo_restore (cr); ++ ++ cairo_set_operator (cr, CAIRO_OPERATOR_DEST_OVER); ++ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); ++ cairo_paint (cr); ++ ++ cairo_destroy (cr); ++ ++ return surface; ++} ++ ++static GdkPixbuf * ++render_page_to_pixbuf (PopplerPage *page, ++ int width, ++ int height, ++ double scale) ++{ ++ GdkPixbuf *pixbuf; ++ cairo_surface_t *surface; ++ ++ surface = render_page_to_surface (page, width, height, scale); ++ pixbuf = gdk_pixbuf_get_from_surface (surface, 0, 0, ++ cairo_image_surface_get_width (surface), ++ cairo_image_surface_get_height (surface)); ++ cairo_surface_destroy (surface); ++ ++ return pixbuf; ++} ++ + static gint32 + load_image (PopplerDocument *doc, + const gchar *filename, +@@ -597,7 +837,7 @@ load_image (PopplerDocument *doc, + gdouble page_width; + gdouble page_height; + +- GdkPixbuf *buf; ++ GdkPixbuf *pixbuf; + gint width; + gint height; + +@@ -627,15 +867,13 @@ load_image (PopplerDocument *doc, + gimp_image_set_resolution (image_ID, resolution, resolution); + } + +- buf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, width, height); +- +- poppler_page_render_to_pixbuf (page, 0, 0, width, height, scale, 0, buf); ++ pixbuf = render_page_to_pixbuf (page, width, height, scale); + +- layer_from_pixbuf (image_ID, page_label, i, buf, ++ layer_from_pixbuf (image_ID, page_label, i, pixbuf, + doc_progress, 1.0 / pages->n_pages); + + g_free (page_label); +- g_object_unref (buf); ++ g_object_unref(pixbuf); + + doc_progress = (double) (i + 1) / pages->n_pages; + gimp_progress_update (doc_progress); +@@ -676,30 +914,22 @@ load_image (PopplerDocument *doc, + return image_ID; + } + +-static GdkPixbuf * +-get_thumbnail (PopplerDocument *doc, +- gint page_num, +- gint preferred_size) ++static cairo_surface_t * ++get_thumb_surface (PopplerDocument *doc, ++ gint page_num, ++ gint preferred_size) + { + PopplerPage *page; +- GdkPixbuf *pixbuf; ++ cairo_surface_t *surface; + + page = poppler_document_get_page (doc, page_num); + + if (! page) + return NULL; + +- /* XXX: Remove conditional when we depend on poppler 0.8.0, but also +- * add configure check to make sure POPPLER_WITH_GDK is enabled! +- */ +-#ifdef POPPLER_WITH_GDK +- pixbuf = poppler_page_get_thumbnail_pixbuf (page); +-#else +- pixbuf = poppler_page_get_thumbnail (page); +-#endif +- ++ surface = poppler_page_get_thumbnail (page); + +- if (! pixbuf) ++ if (! surface) + { + gdouble width; + gdouble height; +@@ -712,15 +942,28 @@ get_thumbnail (PopplerDocument *doc, + width *= scale; + height *= scale; + +- pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, +- width, height); +- +- poppler_page_render_to_pixbuf (page, +- 0, 0, width, height, scale, 0, pixbuf); ++ surface = render_page_to_surface (page, width, height, scale); + } + + g_object_unref (page); + ++ return surface; ++} ++ ++static GdkPixbuf * ++get_thumb_pixbuf (PopplerDocument *doc, ++ gint page_num, ++ gint preferred_size) ++{ ++ cairo_surface_t *surface; ++ GdkPixbuf *pixbuf; ++ ++ surface = get_thumb_surface (doc, page_num, preferred_size); ++ pixbuf = gdk_pixbuf_get_from_surface (surface, 0, 0, ++ cairo_image_surface_get_width (surface), ++ cairo_image_surface_get_height (surface)); ++ cairo_surface_destroy (surface); ++ + return pixbuf; + } + +@@ -769,8 +1012,8 @@ thumbnail_thread (gpointer data) + idle_data->page_no = i; + + /* FIXME get preferred size from somewhere? */ +- idle_data->pixbuf = get_thumbnail (thread_data->document, i, +- THUMBNAIL_SIZE); ++ idle_data->pixbuf = get_thumb_pixbuf (thread_data->document, i, ++ THUMBNAIL_SIZE); + + g_idle_add (idle_set_thumbnail, idle_data); + +-- +1.7.5 diff --git a/staging/gimp/gimp.install b/staging/gimp/gimp.install new file mode 100644 index 000000000..c317fbaca --- /dev/null +++ b/staging/gimp/gimp.install @@ -0,0 +1,12 @@ +post_install() { + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/staging/gimp/libpng_compile.patch b/staging/gimp/libpng_compile.patch new file mode 100644 index 000000000..26d3f9427 --- /dev/null +++ b/staging/gimp/libpng_compile.patch @@ -0,0 +1,984 @@ +Description: fix compilation against libpng 1.5 +Origin: upstream, 2.6 branch, diff of 2917a0e..e7469007 +Bug-Debian: http://bugs.debian.org/649972 + +diff --git a/plug-ins/common/file-mng.c b/plug-ins/common/file-mng.c +index 29dd155..8054504 100644 +--- a/plug-ins/common/file-mng.c ++++ b/plug-ins/common/file-mng.c +@@ -136,7 +136,6 @@ struct mng_data_t + gint32 default_dispose; + }; + +- + /* Values of the instance of the above struct when the plug-in is + * first invoked. */ + +@@ -160,6 +159,21 @@ static struct mng_data_t mng_data = + }; + + ++/* These are not saved or restored. */ ++ ++struct mng_globals_t ++{ ++ gboolean has_trns; ++ png_bytep trans; ++ int num_trans; ++ gboolean has_plte; ++ png_colorp palette; ++ int num_palette; ++}; ++ ++static struct mng_globals_t mngg; ++ ++ + /* The output FILE pointer which is used by libmng; + * passed around as user data. */ + struct mnglib_userdata_t +@@ -196,7 +210,8 @@ static gboolean respin_cmap (png_structp png_ptr, + png_infop png_info_ptr, + guchar *remap, + gint32 image_id, +- GimpDrawable *drawable); ++ GimpDrawable *drawable, ++ int *bit_depth); + + static gboolean mng_save_image (const gchar *filename, + gint32 image_id, +@@ -414,6 +429,18 @@ ia_has_transparent_pixels (guchar *pixels, + return FALSE; + } + ++static int ++get_bit_depth_for_palette (int num_palette) ++{ ++ if (num_palette <= 2) ++ return 1; ++ else if (num_palette <= 4) ++ return 2; ++ else if (num_palette <= 16) ++ return 4; ++ else ++ return 8; ++} + + /* Spins the color map (palette) putting the transparent color at + * index 0 if there is space. If there isn't any space, warn the user +@@ -422,11 +449,12 @@ ia_has_transparent_pixels (guchar *pixels, + */ + + static gboolean +-respin_cmap (png_structp png_ptr, +- png_infop png_info_ptr, ++respin_cmap (png_structp pp, ++ png_infop info, + guchar *remap, + gint32 image_id, +- GimpDrawable *drawable) ++ GimpDrawable *drawable, ++ int *bit_depth) + { + static guchar trans[] = { 0 }; + guchar *before; +@@ -464,10 +492,13 @@ respin_cmap (png_structp png_ptr, + + if (transparent != -1) + { +- png_color palette[256] = { {0, 0, 0} }; ++ static png_color palette[256] = { {0, 0, 0} }; + gint i; + +- png_set_tRNS (png_ptr, png_info_ptr, (png_bytep) trans, 1, NULL); ++ /* Set tRNS chunk values for writing later. */ ++ mngg.has_trns = TRUE; ++ mngg.trans = trans; ++ mngg.num_trans = 1; + + /* Transform all pixels with a value = transparent to + * 0 and vice versa to compensate for re-ordering in palette +@@ -489,7 +520,12 @@ respin_cmap (png_structp png_ptr, + palette[i].blue = before[3 * remap[i] + 2]; + } + +- png_set_PLTE (png_ptr, png_info_ptr, (png_colorp) palette, colors); ++ /* Set PLTE chunk values for writing later. */ ++ mngg.has_plte = TRUE; ++ mngg.palette = palette; ++ mngg.num_palette = colors; ++ ++ *bit_depth = get_bit_depth_for_palette (colors); + + return TRUE; + } +@@ -500,7 +536,10 @@ respin_cmap (png_structp png_ptr, + } + } + +- png_set_PLTE (png_ptr, png_info_ptr, (png_colorp) before, colors); ++ mngg.has_plte = TRUE; ++ mngg.palette = (png_colorp) before; ++ mngg.num_palette = colors; ++ *bit_depth = get_bit_depth_for_palette (colors); + + return FALSE; + } +@@ -777,7 +816,6 @@ mng_save_image (const gchar *filename, + + for (i = (num_layers - 1); i >= 0; i--) + { +- gint num_colors; + GimpImageType layer_drawable_type; + GimpDrawable *layer_drawable; + gint layer_offset_x, layer_offset_y; +@@ -795,8 +833,8 @@ mng_save_image (const gchar *filename, + gchar frame_mode; + int frame_delay; + gchar *temp_file_name; +- png_structp png_ptr; +- png_infop png_info_ptr; ++ png_structp pp; ++ png_infop info; + FILE *infile, *outfile; + int num_passes; + int tile_height; +@@ -804,6 +842,8 @@ mng_save_image (const gchar *filename, + int pass, j, k, begin, end, num; + guchar *fixed; + guchar layer_remap[256]; ++ int color_type; ++ int bit_depth; + + layer_name = gimp_drawable_get_name (layers[i]); + layer_chunks_type = parse_chunks_type_from_layer_name (layer_name); +@@ -948,9 +988,9 @@ mng_save_image (const gchar *filename, + goto err3; + } + +- png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING, ++ pp = png_create_write_struct (PNG_LIBPNG_VER_STRING, + NULL, NULL, NULL); +- if (NULL == png_ptr) ++ if (NULL == pp) + { + g_warning ("Unable to png_create_write_struct() in mng_save_image()"); + fclose (outfile); +@@ -958,89 +998,97 @@ mng_save_image (const gchar *filename, + goto err3; + } + +- png_info_ptr = png_create_info_struct (png_ptr); +- if (NULL == png_info_ptr) ++ info = png_create_info_struct (pp); ++ if (NULL == info) + { + g_warning + ("Unable to png_create_info_struct() in mng_save_image()"); +- png_destroy_write_struct (&png_ptr, NULL); ++ png_destroy_write_struct (&pp, NULL); + fclose (outfile); + g_unlink (temp_file_name); + goto err3; + } + +- if (setjmp (png_ptr->jmpbuf) != 0) ++ if (setjmp (png_jmpbuf (pp)) != 0) + { + g_warning ("HRM saving PNG in mng_save_image()"); +- png_destroy_write_struct (&png_ptr, &png_info_ptr); ++ png_destroy_write_struct (&pp, &info); + fclose (outfile); + g_unlink (temp_file_name); + goto err3; + } + +- png_init_io (png_ptr, outfile); +- png_set_compression_level (png_ptr, mng_data.compression_level); ++ png_init_io (pp, outfile); + +- png_info_ptr->width = layer_cols; +- png_info_ptr->height = layer_rows; +- png_info_ptr->interlace_type = (mng_data.interlaced == 0 ? 0 : 1); +- png_info_ptr->bit_depth = 8; ++ bit_depth = 8; + + switch (layer_drawable_type) + { + case GIMP_RGB_IMAGE: +- png_info_ptr->color_type = PNG_COLOR_TYPE_RGB; ++ color_type = PNG_COLOR_TYPE_RGB; + break; + case GIMP_RGBA_IMAGE: +- png_info_ptr->color_type = PNG_COLOR_TYPE_RGB_ALPHA; ++ color_type = PNG_COLOR_TYPE_RGB_ALPHA; + break; + case GIMP_GRAY_IMAGE: +- png_info_ptr->color_type = PNG_COLOR_TYPE_GRAY; ++ color_type = PNG_COLOR_TYPE_GRAY; + break; + case GIMP_GRAYA_IMAGE: +- png_info_ptr->color_type = PNG_COLOR_TYPE_GRAY_ALPHA; ++ color_type = PNG_COLOR_TYPE_GRAY_ALPHA; + break; + case GIMP_INDEXED_IMAGE: +- png_info_ptr->color_type = PNG_COLOR_TYPE_PALETTE; +- png_info_ptr->valid |= PNG_INFO_PLTE; +- png_info_ptr->palette = +- (png_colorp) gimp_image_get_colormap (image_id, &num_colors); +- png_info_ptr->num_palette = num_colors; ++ color_type = PNG_COLOR_TYPE_PALETTE; ++ mngg.has_plte = TRUE; ++ mngg.palette = (png_colorp) ++ gimp_image_get_colormap (image_id, &mngg.num_palette); ++ bit_depth = get_bit_depth_for_palette (mngg.num_palette); + break; + case GIMP_INDEXEDA_IMAGE: +- png_info_ptr->color_type = PNG_COLOR_TYPE_PALETTE; ++ color_type = PNG_COLOR_TYPE_PALETTE; + layer_has_unique_palette = +- respin_cmap (png_ptr, png_info_ptr, layer_remap, +- image_id, layer_drawable); ++ respin_cmap (pp, info, layer_remap, ++ image_id, layer_drawable, ++ &bit_depth); + break; + default: + g_warning ("This can't be!\n"); +- png_destroy_write_struct (&png_ptr, &png_info_ptr); ++ png_destroy_write_struct (&pp, &info); + fclose (outfile); + g_unlink (temp_file_name); + goto err3; + } + +- if ((png_info_ptr->valid & PNG_INFO_PLTE) == PNG_INFO_PLTE) ++ /* Note: png_set_IHDR() must be called before any other ++ png_set_*() functions. */ ++ png_set_IHDR (pp, info, layer_cols, layer_rows, ++ bit_depth, ++ color_type, ++ mng_data.interlaced ? PNG_INTERLACE_ADAM7 : PNG_INTERLACE_NONE, ++ PNG_COMPRESSION_TYPE_BASE, ++ PNG_FILTER_TYPE_BASE); ++ ++ if (mngg.has_trns) ++ { ++ png_set_tRNS (pp, info, mngg.trans, mngg.num_trans, NULL); ++ } ++ ++ if (mngg.has_plte) + { +- if (png_info_ptr->num_palette <= 2) +- png_info_ptr->bit_depth = 1; +- else if (png_info_ptr->num_palette <= 4) +- png_info_ptr->bit_depth = 2; +- else if (png_info_ptr->num_palette <= 16) +- png_info_ptr->bit_depth = 4; ++ png_set_PLTE (pp, info, mngg.palette, mngg.num_palette); + } + +- png_write_info (png_ptr, png_info_ptr); ++ png_set_compression_level (pp, mng_data.compression_level); ++ ++ png_write_info (pp, info); + + if (mng_data.interlaced != 0) +- num_passes = png_set_interlace_handling (png_ptr); ++ num_passes = png_set_interlace_handling (pp); + else + num_passes = 1; + +- if ((png_info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) && +- (png_info_ptr->bit_depth < 8)) +- png_set_packing (png_ptr); ++ if ((color_type == PNG_COLOR_TYPE_PALETTE) && ++ (bit_depth < 8)) ++ png_set_packing (pp); + + tile_height = gimp_tile_height (); + layer_pixel = g_new (guchar, tile_height * layer_cols * layer_bpp); +@@ -1065,7 +1113,7 @@ mng_save_image (const gchar *filename, + gimp_pixel_rgn_get_rect (&layer_pixel_rgn, layer_pixel, 0, + begin, layer_cols, num); + +- if ((png_info_ptr->valid & PNG_INFO_tRNS) == PNG_INFO_tRNS) ++ if (png_get_valid (pp, info, PNG_INFO_tRNS)) + { + for (j = 0; j < num; j++) + { +@@ -1077,7 +1125,7 @@ mng_save_image (const gchar *filename, + } + } + else +- if (((png_info_ptr->valid & PNG_INFO_PLTE) == PNG_INFO_PLTE) ++ if (png_get_valid (pp, info, PNG_INFO_PLTE) + && (layer_bpp == 2)) + { + for (j = 0; j < num; j++) +@@ -1089,12 +1137,12 @@ mng_save_image (const gchar *filename, + } + } + +- png_write_rows (png_ptr, layer_pixels, num); ++ png_write_rows (pp, layer_pixels, num); + } + } + +- png_write_end (png_ptr, png_info_ptr); +- png_destroy_write_struct (&png_ptr, &png_info_ptr); ++ png_write_end (pp, info); ++ png_destroy_write_struct (&pp, &info); + + g_free (layer_pixels); + g_free (layer_pixel); +diff --git a/plug-ins/common/file-png.c b/plug-ins/common/file-png.c +index d42afff..8fa8983 100644 +--- a/plug-ins/common/file-png.c ++++ b/plug-ins/common/file-png.c +@@ -106,6 +106,17 @@ typedef struct + } + PngSaveGui; + ++/* These are not saved or restored. */ ++typedef struct ++{ ++ gboolean has_trns; ++ png_bytep trans; ++ int num_trans; ++ gboolean has_plte; ++ png_colorp palette; ++ int num_palette; ++} ++PngGlobals; + + /* + * Local functions... +@@ -127,7 +138,7 @@ static gboolean save_image (const gchar *filename, + gint32 orig_image_ID, + GError **error); + +-static void respin_cmap (png_structp pp, ++static int respin_cmap (png_structp pp, + png_infop info, + guchar *remap, + gint32 image_ID, +@@ -175,6 +186,7 @@ static const PngSaveVals defaults = + }; + + static PngSaveVals pngvals; ++static PngGlobals pngg; + + + /* +@@ -653,13 +665,25 @@ on_read_error (png_structp png_ptr, png_const_charp error_msg) + error_data->drawable->width, num); + } + +- longjmp (png_ptr->jmpbuf, 1); ++ longjmp (png_jmpbuf (png_ptr), 1); ++} ++ ++static int ++get_bit_depth_for_palette (int num_palette) ++{ ++ if (num_palette <= 2) ++ return 1; ++ else if (num_palette <= 4) ++ return 2; ++ else if (num_palette <= 16) ++ return 4; ++ else ++ return 8; + } + + /* + * 'load_image()' - Load a PNG image into a new image window. + */ +- + static gint32 + load_image (const gchar *filename, + gboolean interactive, +@@ -695,9 +719,20 @@ load_image (const gchar *filename, + gint num_texts; + + pp = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); ++ if (!pp) ++ { ++ /* this could happen if the compile time and run-time libpng ++ versions do not match. */ ++ ++ g_set_error (error, 0, 0, ++ _("Error creating PNG read struct while saving '%s'."), ++ gimp_filename_to_utf8 (filename)); ++ return -1; ++ } ++ + info = png_create_info_struct (pp); + +- if (setjmp (pp->jmpbuf)) ++ if (setjmp (png_jmpbuf (pp))) + { + g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, + _("Error while reading '%s'. File corrupted?"), +@@ -705,10 +740,6 @@ load_image (const gchar *filename, + return image; + } + +- /* initialise image here, thus avoiding compiler warnings */ +- +- image = -1; +- + /* + * Open the file and initialize the PNG read "engine"... + */ +@@ -738,17 +769,19 @@ load_image (const gchar *filename, + * Latest attempt, this should be my best yet :) + */ + +- if (info->bit_depth == 16) ++ if (png_get_bit_depth (pp, info) == 16) + { + png_set_strip_16 (pp); + } + +- if (info->color_type == PNG_COLOR_TYPE_GRAY && info->bit_depth < 8) ++ if (png_get_color_type (pp, info) == PNG_COLOR_TYPE_GRAY && ++ png_get_bit_depth (pp, info) < 8) + { + png_set_expand (pp); + } + +- if (info->color_type == PNG_COLOR_TYPE_PALETTE && info->bit_depth < 8) ++ if (png_get_color_type (pp, info) == PNG_COLOR_TYPE_PALETTE && ++ png_get_bit_depth (pp, info) < 8) + { + png_set_packing (pp); + } +@@ -757,8 +790,8 @@ load_image (const gchar *filename, + * Expand G+tRNS to GA, RGB+tRNS to RGBA + */ + +- if (info->color_type != PNG_COLOR_TYPE_PALETTE && +- (info->valid & PNG_INFO_tRNS)) ++ if (png_get_color_type (pp, info) != PNG_COLOR_TYPE_PALETTE && ++ png_get_valid (pp, info, PNG_INFO_tRNS)) + { + png_set_expand (pp); + } +@@ -775,7 +808,7 @@ load_image (const gchar *filename, + */ + + if (png_get_valid (pp, info, PNG_INFO_tRNS) && +- info->color_type == PNG_COLOR_TYPE_PALETTE) ++ png_get_color_type (pp, info) == PNG_COLOR_TYPE_PALETTE) + { + png_get_tRNS (pp, info, &alpha_ptr, &num, NULL); + /* Copy the existing alpha values from the tRNS chunk */ +@@ -797,7 +830,7 @@ load_image (const gchar *filename, + + png_read_update_info (pp, info); + +- switch (info->color_type) ++ switch (png_get_color_type (pp, info)) + { + case PNG_COLOR_TYPE_RGB: /* RGB */ + bpp = 3; +@@ -836,7 +869,9 @@ load_image (const gchar *filename, + return -1; + } + +- image = gimp_image_new (info->width, info->height, image_type); ++ image = gimp_image_new (png_get_image_width (pp, info), ++ png_get_image_height (pp, info), ++ image_type); + if (image == -1) + { + g_set_error (error, 0, 0, +@@ -849,7 +884,9 @@ load_image (const gchar *filename, + * Create the "background" layer to hold the image... + */ + +- layer = gimp_layer_new (image, _("Background"), info->width, info->height, ++ layer = gimp_layer_new (image, _("Background"), ++ png_get_image_width (pp, info), ++ png_get_image_height (pp, info), + layer_type, 100, GIMP_NORMAL_MODE); + gimp_image_add_layer (image, layer, 0); + +@@ -883,7 +920,8 @@ load_image (const gchar *filename, + + gimp_layer_set_offsets (layer, offset_x, offset_y); + +- if ((abs (offset_x) > info->width) || (abs (offset_y) > info->height)) ++ if ((abs (offset_x) > png_get_image_width (pp, info)) || ++ (abs (offset_y) > png_get_image_height (pp, info))) + { + if (interactive) + g_message (_("The PNG file specifies an offset that caused " +@@ -938,23 +976,27 @@ load_image (const gchar *filename, + + empty = 0; /* by default assume no full transparent palette entries */ + +- if (info->color_type & PNG_COLOR_MASK_PALETTE) ++ if (png_get_color_type (pp, info) & PNG_COLOR_MASK_PALETTE) + { ++ png_colorp palette; ++ int num_palette; ++ ++ png_get_PLTE (pp, info, &palette, &num_palette); + if (png_get_valid (pp, info, PNG_INFO_tRNS)) + { + for (empty = 0; empty < 256 && alpha[empty] == 0; ++empty) + /* Calculates number of fully transparent "empty" entries */; + + /* keep at least one entry */ +- empty = MIN (empty, info->num_palette - 1); ++ empty = MIN (empty, num_palette - 1); + +- gimp_image_set_colormap (image, (guchar *) (info->palette + empty), +- info->num_palette - empty); ++ gimp_image_set_colormap (image, (guchar *) (palette + empty), ++ num_palette - empty); + } + else + { +- gimp_image_set_colormap (image, (guchar *) info->palette, +- info->num_palette); ++ gimp_image_set_colormap (image, (guchar *) palette, ++ num_palette); + } + } + +@@ -972,18 +1014,19 @@ load_image (const gchar *filename, + */ + + tile_height = gimp_tile_height (); +- pixel = g_new0 (guchar, tile_height * info->width * bpp); ++ pixel = g_new0 (guchar, tile_height * png_get_image_width (pp, info) * bpp); + pixels = g_new (guchar *, tile_height); + + for (i = 0; i < tile_height; i++) +- pixels[i] = pixel + info->width * info->channels * i; ++ pixels[i] = pixel + png_get_image_width (pp, info) * ++ png_get_channels (pp, info) * i; + + /* Install our own error handler to handle incomplete PNG files better */ + error_data.drawable = drawable; + error_data.pixel = pixel; + error_data.tile_height = tile_height; +- error_data.width = info->width; +- error_data.height = info->height; ++ error_data.width = png_get_image_width (pp, info); ++ error_data.height = png_get_image_height (pp, info); + error_data.bpp = bpp; + error_data.pixel_rgn = &pixel_rgn; + +@@ -996,10 +1039,11 @@ load_image (const gchar *filename, + */ + + for (begin = 0, end = tile_height; +- begin < info->height; begin += tile_height, end += tile_height) ++ begin < png_get_image_height (pp, info); ++ begin += tile_height, end += tile_height) + { +- if (end > info->height) +- end = info->height; ++ if (end > png_get_image_height (pp, info)) ++ end = png_get_image_height (pp, info); + + num = end - begin; + +@@ -1016,11 +1060,13 @@ load_image (const gchar *filename, + gimp_pixel_rgn_set_rect (&pixel_rgn, pixel, 0, begin, + drawable->width, num); + +- memset (pixel, 0, tile_height * info->width * bpp); ++ memset (pixel, 0, ++ tile_height * png_get_image_width (pp, info) * bpp); + +- gimp_progress_update (((gdouble) pass + +- (gdouble) end / (gdouble) info->height) / +- (gdouble) num_passes); ++ gimp_progress_update ++ (((gdouble) pass + ++ (gdouble) end / (gdouble) png_get_image_height (pp, info)) / ++ (gdouble) num_passes); + } + } + +@@ -1189,7 +1235,6 @@ save_image (const gchar *filename, + GimpPixelRgn pixel_rgn; /* Pixel region for layer */ + png_structp pp; /* PNG read pointer */ + png_infop info; /* PNG info pointer */ +- gint num_colors; /* Number of colors in colormap */ + gint offx, offy; /* Drawable offsets from origin */ + guchar **pixels, /* Pixel rows */ + *fixed, /* Fixed-up pixel data */ +@@ -1200,56 +1245,28 @@ save_image (const gchar *filename, + guchar red, green, blue; /* Used for palette background */ + time_t cutime; /* Time since epoch */ + struct tm *gmt; /* GMT broken down */ ++ int color_type; ++ int bit_depth; + + guchar remap[256]; /* Re-mapping for the palette */ + + png_textp text = NULL; + +- if (pngvals.comment) ++ pp = png_create_write_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); ++ if (!pp) + { +- GimpParasite *parasite; +- gsize text_length = 0; +- +- parasite = gimp_image_parasite_find (orig_image_ID, "gimp-comment"); +- if (parasite) +- { +- gchar *comment = g_strndup (gimp_parasite_data (parasite), +- gimp_parasite_data_size (parasite)); ++ /* this could happen if the compile time and run-time libpng ++ versions do not match. */ + +- gimp_parasite_free (parasite); +- +- text = g_new0 (png_text, 1); +- text->key = "Comment"; +- +-#ifdef PNG_iTXt_SUPPORTED +- +- text->compression = PNG_ITXT_COMPRESSION_NONE; +- text->text = comment; +- text->itxt_length = strlen (comment); +- +-#else +- +- text->compression = PNG_TEXT_COMPRESSION_NONE; +- text->text = g_convert (comment, -1, +- "ISO-8859-1", "UTF-8", +- NULL, &text_length, +- NULL); +- text->text_length = text_length; +- +-#endif +- +- if (!text->text) +- { +- g_free (text); +- text = NULL; +- } +- } ++ g_set_error (error, 0, 0, ++ _("Error creating PNG write struct while saving '%s'."), ++ gimp_filename_to_utf8 (filename)); ++ return FALSE; + } + +- pp = png_create_write_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + info = png_create_info_struct (pp); + +- if (setjmp (pp->jmpbuf)) ++ if (setjmp (png_jmpbuf (pp))) + { + g_set_error (error, 0, 0, + _("Error while saving '%s'. Could not save image."), +@@ -1257,9 +1274,6 @@ save_image (const gchar *filename, + return FALSE; + } + +- if (text) +- png_set_text (pp, info, text, 1); +- + /* + * Open the file and initialize the PNG write "engine"... + */ +@@ -1286,17 +1300,6 @@ save_image (const gchar *filename, + type = gimp_drawable_type (drawable_ID); + + /* +- * Set the image dimensions, bit depth, interlacing and compression +- */ +- +- png_set_compression_level (pp, pngvals.compression_level); +- +- info->width = drawable->width; +- info->height = drawable->height; +- info->bit_depth = 8; +- info->interlace_type = pngvals.interlaced; +- +- /* + * Initialise remap[] + */ + for (i = 0; i < 256; i++) +@@ -1306,42 +1309,44 @@ save_image (const gchar *filename, + * Set color type and remember bytes per pixel count + */ + ++ bit_depth = 8; ++ + switch (type) + { + case GIMP_RGB_IMAGE: +- info->color_type = PNG_COLOR_TYPE_RGB; ++ color_type = PNG_COLOR_TYPE_RGB; + bpp = 3; + break; + + case GIMP_RGBA_IMAGE: +- info->color_type = PNG_COLOR_TYPE_RGB_ALPHA; ++ color_type = PNG_COLOR_TYPE_RGB_ALPHA; + bpp = 4; + break; + + case GIMP_GRAY_IMAGE: +- info->color_type = PNG_COLOR_TYPE_GRAY; ++ color_type = PNG_COLOR_TYPE_GRAY; + bpp = 1; + break; + + case GIMP_GRAYA_IMAGE: +- info->color_type = PNG_COLOR_TYPE_GRAY_ALPHA; ++ color_type = PNG_COLOR_TYPE_GRAY_ALPHA; + bpp = 2; + break; + + case GIMP_INDEXED_IMAGE: + bpp = 1; +- info->color_type = PNG_COLOR_TYPE_PALETTE; +- info->valid |= PNG_INFO_PLTE; +- info->palette = +- (png_colorp) gimp_image_get_colormap (image_ID, &num_colors); +- info->num_palette = num_colors; ++ color_type = PNG_COLOR_TYPE_PALETTE; ++ pngg.has_plte = TRUE; ++ pngg.palette = (png_colorp) gimp_image_get_colormap (image_ID, ++ &pngg.num_palette); ++ bit_depth = get_bit_depth_for_palette (pngg.num_palette); + break; + + case GIMP_INDEXEDA_IMAGE: + bpp = 2; +- info->color_type = PNG_COLOR_TYPE_PALETTE; ++ color_type = PNG_COLOR_TYPE_PALETTE; + /* fix up transparency */ +- respin_cmap (pp, info, remap, image_ID, drawable); ++ bit_depth = respin_cmap (pp, info, remap, image_ID, drawable); + break; + + default: +@@ -1349,21 +1354,29 @@ save_image (const gchar *filename, + return FALSE; + } + +- /* +- * Fix bit depths for (possibly) smaller colormap images +- */ ++ /* Note: png_set_IHDR() must be called before any other png_set_*() ++ functions. */ ++ png_set_IHDR (pp, info, drawable->width, drawable->height, ++ bit_depth, ++ color_type, ++ pngvals.interlaced ? PNG_INTERLACE_ADAM7 : PNG_INTERLACE_NONE, ++ PNG_COMPRESSION_TYPE_BASE, ++ PNG_FILTER_TYPE_BASE); ++ ++ if (pngg.has_trns) ++ { ++ png_set_tRNS (pp, info, pngg.trans, pngg.num_trans, NULL); ++ } + +- if (info->valid & PNG_INFO_PLTE) ++ if (pngg.has_plte) + { +- if (info->num_palette <= 2) +- info->bit_depth = 1; +- else if (info->num_palette <= 4) +- info->bit_depth = 2; +- else if (info->num_palette <= 16) +- info->bit_depth = 4; +- /* otherwise the default is fine */ ++ png_set_PLTE (pp, info, pngg.palette, pngg.num_palette); + } + ++ /* Set the compression level */ ++ ++ png_set_compression_level (pp, pngvals.compression_level); ++ + /* All this stuff is optional extras, if the user is aiming for smallest + possible file size she can turn them all off */ + +@@ -1462,6 +1475,52 @@ save_image (const gchar *filename, + } + #endif + ++ if (pngvals.comment) ++ { ++ GimpParasite *parasite; ++#ifndef PNG_iTXt_SUPPORTED ++ gsize text_length = 0; ++#endif /* PNG_iTXt_SUPPORTED */ ++ ++ parasite = gimp_image_parasite_find (orig_image_ID, "gimp-comment"); ++ if (parasite) ++ { ++ gchar *comment = g_strndup (gimp_parasite_data (parasite), ++ gimp_parasite_data_size (parasite)); ++ ++ gimp_parasite_free (parasite); ++ ++ text = g_new0 (png_text, 1); ++ text->key = "Comment"; ++ ++#ifdef PNG_iTXt_SUPPORTED ++ ++ text->compression = PNG_ITXT_COMPRESSION_NONE; ++ text->text = comment; ++ text->itxt_length = strlen (comment); ++ ++#else ++ ++ text->compression = PNG_TEXT_COMPRESSION_NONE; ++ text->text = g_convert (comment, -1, ++ "ISO-8859-1", "UTF-8", ++ NULL, &text_length, ++ NULL); ++ text->text_length = text_length; ++ ++#endif ++ ++ if (!text->text) ++ { ++ g_free (text); ++ text = NULL; ++ } ++ } ++ } ++ ++ if (text) ++ png_set_text (pp, info, text, 1); ++ + png_write_info (pp, info); + + /* +@@ -1477,7 +1536,8 @@ save_image (const gchar *filename, + * Convert unpacked pixels to packed if necessary + */ + +- if (info->color_type == PNG_COLOR_TYPE_PALETTE && info->bit_depth < 8) ++ if (color_type == PNG_COLOR_TYPE_PALETTE && ++ bit_depth < 8) + png_set_packing (pp); + + /* +@@ -1507,7 +1567,9 @@ save_image (const gchar *filename, + + gimp_pixel_rgn_get_rect (&pixel_rgn, pixel, 0, begin, + drawable->width, num); +- /*if we are with a RGBA image and have to pre-multiply the alpha channel */ ++ ++ /* If we are with a RGBA image and have to pre-multiply the ++ alpha channel */ + if (bpp == 4 && ! pngvals.save_transp_pixels) + { + for (i = 0; i < num; ++i) +@@ -1529,7 +1591,7 @@ save_image (const gchar *filename, + + /* If we're dealing with a paletted image with + * transparency set, write out the remapped palette */ +- if (info->valid & PNG_INFO_tRNS) ++ if (png_get_valid (pp, info, PNG_INFO_tRNS)) + { + guchar inverse_remap[256]; + +@@ -1547,9 +1609,11 @@ save_image (const gchar *filename, + } + } + } ++ + /* Otherwise if we have a paletted image and transparency + * couldn't be set, we ignore the alpha channel */ +- else if (info->valid & PNG_INFO_PLTE && bpp == 2) ++ else if (png_get_valid (pp, info, PNG_INFO_PLTE) && ++ bpp == 2) + { + for (i = 0; i < num; ++i) + { +@@ -1564,7 +1628,7 @@ save_image (const gchar *filename, + png_write_rows (pp, pixels, num); + + gimp_progress_update (((double) pass + (double) end / +- (double) info->height) / ++ (double) drawable->height) / + (double) num_passes); + } + } +@@ -1694,14 +1758,14 @@ find_unused_ia_color (GimpDrawable *drawable, + } + + +-static void ++static int + respin_cmap (png_structp pp, + png_infop info, + guchar *remap, + gint32 image_ID, + GimpDrawable *drawable) + { +- static const guchar trans[] = { 0 }; ++ static guchar trans[] = { 0 }; + + gint colors; + guchar *before; +@@ -1728,10 +1792,13 @@ respin_cmap (png_structp pp, + * index - do like gif2png and swap + * index 0 and index transparent */ + { +- png_color palette[256]; ++ static png_color palette[256]; + gint i; + +- png_set_tRNS (pp, info, (png_bytep) trans, 1, NULL); ++ /* Set tRNS chunk values for writing later. */ ++ pngg.has_trns = TRUE; ++ pngg.trans = trans; ++ pngg.num_trans = 1; + + /* Transform all pixels with a value = transparent to + * 0 and vice versa to compensate for re-ordering in palette +@@ -1752,7 +1819,10 @@ respin_cmap (png_structp pp, + palette[i].blue = before[3 * remap[i] + 2]; + } + +- png_set_PLTE (pp, info, palette, colors); ++ /* Set PLTE chunk values for writing later. */ ++ pngg.has_plte = TRUE; ++ pngg.palette = palette; ++ pngg.num_palette = colors; + } + else + { +@@ -1760,14 +1830,22 @@ respin_cmap (png_structp pp, + * transparency & just use the full palette */ + g_message (_("Couldn't losslessly save transparency, " + "saving opacity instead.")); +- png_set_PLTE (pp, info, (png_colorp) before, colors); ++ ++ /* Set PLTE chunk values for writing later. */ ++ pngg.has_plte = TRUE; ++ pngg.palette = (png_colorp) before; ++ pngg.num_palette = colors; + } + } + else + { +- png_set_PLTE (pp, info, (png_colorp) before, colors); ++ /* Set PLTE chunk values for writing later. */ ++ pngg.has_plte = TRUE; ++ pngg.palette = (png_colorp) before; ++ pngg.num_palette = colors; + } + ++ return get_bit_depth_for_palette (colors); + } + + static gboolean diff --git a/staging/gimp/linux.gpl b/staging/gimp/linux.gpl new file mode 100644 index 000000000..0a73d8979 --- /dev/null +++ b/staging/gimp/linux.gpl @@ -0,0 +1,19 @@ +GIMP Palette +Name: linux +# + 0 0 0 + 0 0 170 + 0 170 0 + 0 170 170 +170 0 0 +170 0 170 +170 85 0 +170 170 170 + 85 85 85 + 85 85 255 + 85 255 85 + 85 255 255 +255 85 85 +255 85 255 +255 255 85 +255 255 255 diff --git a/staging/gimp/uri-backend-libcurl.patch b/staging/gimp/uri-backend-libcurl.patch new file mode 100644 index 000000000..85da2fc7f --- /dev/null +++ b/staging/gimp/uri-backend-libcurl.patch @@ -0,0 +1,77 @@ +diff -aur gimp-2.6.11/plug-ins/file-uri/uri-backend-libcurl.c gimp-2.6.11.patched/plug-ins/file-uri/uri-backend-libcurl.c +--- gimp-2.6.11/plug-ins/file-uri/uri-backend-libcurl.c 2010-07-03 00:51:59.000000000 +0200 ++++ gimp-2.6.11.patched/plug-ins/file-uri/uri-backend-libcurl.c 2011-06-23 19:15:30.000000000 +0200 +@@ -4,9 +4,9 @@ + * libcurl backend for the URI plug-in + * Copyright (C) 2006 Mukund Sivaraman <muks@mukund.org> + * +- * This program is free software; you can redistribute it and/or modify ++ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or ++ * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, +@@ -15,8 +15,7 @@ + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + + #include "config.h" +@@ -24,7 +23,6 @@ + #include <errno.h> + + #include <curl/curl.h> +-#include <curl/types.h> + #include <curl/easy.h> + + #include <glib/gstdio.h> +@@ -63,7 +61,7 @@ + + vinfo = curl_version_info (CURLVERSION_NOW); + +- protocols = g_string_new ("http:,ftp:"); ++ protocols = g_string_new ("http:,ftp:,gopher:"); + + if (vinfo->features & CURL_VERSION_SSL) + { +@@ -153,7 +151,7 @@ + FILE *out_file; + CURL *curl_handle; + CURLcode result; +- gint response_code; ++ glong response_code; + + gimp_progress_init (_("Connecting to server")); + +@@ -195,12 +193,12 @@ + + curl_easy_getinfo (curl_handle, CURLINFO_RESPONSE_CODE, &response_code); + +- if (response_code != 200) ++ if (response_code != 200 && response_code != 226 && response_code != 0) + { + fclose (out_file); + g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, + _("Opening '%s' for reading resulted in HTTP " +- "response code: %d"), ++ "response code: %ld"), + uri, response_code); + curl_easy_cleanup (curl_handle); + return FALSE; +@@ -224,3 +222,10 @@ + + return FALSE; + } ++ ++gchar * ++uri_backend_map_image (const gchar *uri, ++ GimpRunMode run_mode) ++{ ++ return NULL; ++} diff --git a/staging/gthumb/PKGBUILD b/staging/gthumb/PKGBUILD new file mode 100644 index 000000000..fee27cc78 --- /dev/null +++ b/staging/gthumb/PKGBUILD @@ -0,0 +1,34 @@ +# $Id: PKGBUILD 147076 2012-01-21 15:34:53Z andyrtr $ +# Maintainer: Jan de Groot <jgc@archlinux.org> +# Contributor: Tobias Kieslich <tobias@justdreams.de> + +pkgname=gthumb +pkgver=2.14.1 +pkgrel=2 +pkgdesc="Image browser and viewer for the GNOME Desktop" +arch=(i686 x86_64) +license=('GPL') +url="http://gthumb.sourceforge.net/" +depends=('desktop-file-utils' 'libunique' 'gconf' 'exiv2' 'libsoup-gnome' 'clutter-gtk2' 'hicolor-icon-theme') +makedepends=('intltool' 'gnome-doc-utils' 'libsm' 'gstreamer0.10-base') +optdepends=('gstreamer0.10-base: video support') +options=('!libtool' '!emptydirs') +install=gthumb.install +source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz) +sha256sums=('002a6611112273189348871ff7c717fb3c776f5570656389e3d6c5b26bffa11f') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install + + install -m755 -d "${pkgdir}/usr/share/gconf/schemas" + gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gthumb "${pkgdir}"/etc/gconf/schemas/*.schemas + rm -f "${pkgdir}"/etc/gconf/schemas/*.schemas +} diff --git a/staging/gthumb/gthumb.install b/staging/gthumb/gthumb.install new file mode 100644 index 000000000..6046ebb6f --- /dev/null +++ b/staging/gthumb/gthumb.install @@ -0,0 +1,24 @@ +pkgname=gthumb + +post_install() { + usr/sbin/gconfpkg --install ${pkgname} + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +pre_upgrade() { + pre_remove $1 +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + usr/sbin/gconfpkg --uninstall ${pkgname} +} + +post_remove() { + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} diff --git a/staging/java7-openjdk/PKGBUILD b/staging/java7-openjdk/PKGBUILD new file mode 100644 index 000000000..b5ab884cb --- /dev/null +++ b/staging/java7-openjdk/PKGBUILD @@ -0,0 +1,346 @@ +# $Id: PKGBUILD 147010 2012-01-20 18:19:59Z andyrtr $ +# Maintainer: Andreas Radke <andyrtr@archlinux.org> +# Contributor: Jan de Groot <jgc@archlinux.org> +# Contributor: Guillaume ALAUX <guillaume@archlinux.org> + +pkgname=('jre7-openjdk-headless' 'jre7-openjdk' 'jdk7-openjdk' 'openjdk7-src') + # ToDo -demo -doc packages, see Debian file lists http://packages.debian.org/source/wheezy/openjdk-7 +pkgbase=java7-openjdk +_java_ver=7 +_openjdk_build=b147 +_openjdk_date=27_jun_2011 +_icedtea_ver=2.0 +_date=20110922 + +# check "${srcdir}/icedtea7"/Makefile.am +_CORBA_CHANGESET=4d9e4fb8af09 +_HOTSPOT_CHANGESET=b28ae681bae0 +_JAXP_CHANGESET=948e734135ea +_JAXWS_CHANGESET=a2ebfdc9db7e +_JDK_CHANGESET=2054526dd141 +_LANGTOOLS_CHANGESET=9b85f1265346 +_OPENJDK_CHANGESET=0a76e5390e68 + +_bootstrap=0 # 0/1 for quick build or full bootstrap + +pkgver=${_java_ver}.${_openjdk_build}_${_icedtea_ver} +pkgrel=6 +arch=('i686' 'x86_64') +url="http://icedtea.classpath.org" +license=('custom') +options=('!emptydirs') +makedepends=('jdk7-openjdk' 'libxp' 'libxslt' + 'alsa-lib' 'apache-ant>=1.8.1' 'giflib' 'libpng>=1.5.7' 'gtk2' + 'rhino' 'libpulse>=0.9.11' 'zip' 'unzip' 'cpio' 'fastjar') # fastjar`? +[ "$_bootstrap" = "1" ] && makedepends=(${makedepends[@]} 'eclipse-ecj') + +_url=http://icedtea.classpath.org/hg/release/icedtea7-forest-2.0 +source=(http://icedtea.classpath.org/download/source/icedtea-${_icedtea_ver}.tar.gz + ${_url}/archive/${_OPENJDK_CHANGESET}.tar.gz # openjdk.tar.gz + ${_url}/corba/archive/${_CORBA_CHANGESET}.tar.gz # corba.tar.gz + ${_url}/jaxp/archive/${_JAXP_CHANGESET}.tar.gz # jaxp.tar.gz + ${_url}/jaxws/archive/${_JAXWS_CHANGESET}.tar.gz # jaxws.tar.gz + ${_url}/jdk/archive/${_JDK_CHANGESET}.tar.gz # jdk.tar.gz + ${_url}/langtools/archive/${_LANGTOOLS_CHANGESET}.tar.gz # langtools.tar.gz + ${_url}/hotspot/archive/${_HOTSPOT_CHANGESET}.tar.gz # hotspot.tar.gz + fontconfig-paths.diff + fix_corba_cmds_path.diff + openjdk7_fix_jdk_cmds_path.diff + openjdk7_nonreparenting-wm.diff + jdk7-openjdk.profile + jdk7-openjdk.profile.csh + jre7-openjdk.profile + jre7-openjdk.profile.csh + glibc2_15.diff) +md5sums=('752721a037a625001fad7a5fc2013f60' + '4c34ddf70124ea90c79201c1afede3e3' + '8f8d222d0a6d363d06b40576da5f1ea2' + '4abf34372e34cccd74ad337e487ed790' + 'f2f40590a83889b8aa1d4631b705092d' + 'd3beed0118bbd93d4651af762eb748c7' + 'c8617700b4bd6cd5de1257bc36509bed' + 'f10b711b0c784df8707808d9d0f52abd' + 'ee1afda124d5927345014ab382ef581e' + 'f7e7a212e50abb56a6ef1a2b1bd27405' + 'c195c4865b84d9e2e0fd71ac6d88eadb' + '203640d6e79e41b0065e016818c17ccd' + 'b7b8996448c7b4fa7dd2d744488ed3bd' + 'cdabafad0ec413d9a983888bf445a443' + '612b0fec7e0943c37a6de77c43622007' + '62443459da0cb28181feb260dc0e5ce7' + 'a4293acadff03bdccbc9b412ad288549') + +#http://www.java.net/download/openjdk/jdk${_java_ver}/promoted/${_openjdk_build}/openjdk-${_java_ver}-fcs-src-${_openjdk_build}-${_openjdk_date}.zip + +noextract=("${_OPENJDK_CHANGESET}.tar.gz" + "${_CORBA_CHANGESET}.tar.gz" + "${_JAXP_CHANGESET}.tar.gz" + "${_JAXWS_CHANGESET}.tar.gz" + "${_JDK_CHANGESET}.tar.gz" + "${_LANGTOOLS_CHANGESET}.tar.gz" + "${_HOTSPOT_CHANGESET}.tar.gz") + + _jvmdir=/usr/lib/jvm/java-7-openjdk + + [ "$CARCH" = "x86_64" ] && _JARCH=amd64 + [ "$CARCH" = "i686" ] && _JARCH=i386 + +build() { + cd "${srcdir}/icedtea-${_icedtea_ver}" + + unset JAVA_HOME JDK_HOME CLASSPATH JAVAC JAVACFLAGS + + # default is to build with first found java-environment found in our repos - is jdk7-openjdk + [ -f /etc/profile.d/jdk.sh ] && . /etc/profile.d/jdk.sh + + unset MAKEFLAGS # parallel build is currently broken + export ALT_PARALLEL_COMPILE_JOBS="${MAKEFLAGS/-j}" + export HOTSPOT_BUILD_JOBS="${ALT_PARALLEL_COMPILE_JOBS}" + + . /etc/profile.d/apache-ant.sh + + cp ${srcdir}/*.diff ${srcdir}/icedtea-${_icedtea_ver}/patches + export DISTRIBUTION_PATCHES="patches/fontconfig-paths.diff patches/fix_corba_cmds_path.diff patches/openjdk7_fix_jdk_cmds_path.diff patches/openjdk7_nonreparenting-wm.diff patches/glibc2_15.diff" + + if [ "$_bootstrap" = "1" ]; then + BOOTSTRAPOPT="--enable-bootstrap --with-ecj-jar=/usr/share/java/ecj.jar" + else + BOOTSTRAPOPT="--disable-bootstrap" + fi + + ./configure \ + $BOOTSTRAPOPT \ + --with-parallel-jobs="${MAKEFLAGS/-j}" \ + --disable-tests \ + --with-pkgversion="ArchLinux build ${pkgver}-${pkgrel}-${CARCH}" \ + --with-jdk-home=${JAVA_HOME} \ + --with-openjdk-src-zip=${srcdir}/${_OPENJDK_CHANGESET}.tar.gz \ + --with-hotspot-src-zip=${srcdir}/${_HOTSPOT_CHANGESET}.tar.gz \ + --with-corba-src-zip=${srcdir}/${_CORBA_CHANGESET}.tar.gz \ + --with-jaxp-src-zip=${srcdir}/${_JAXP_CHANGESET}.tar.gz \ + --with-jaxws-src-zip=${srcdir}/${_JAXWS_CHANGESET}.tar.gz \ + --with-jdk-src-zip=${srcdir}/${_JDK_CHANGESET}.tar.gz \ + --with-langtools-src-zip=${srcdir}/${_LANGTOOLS_CHANGESET}.tar.gz \ + --enable-pulse-java \ + --enable-nss \ + --with-rhino + #--help + +# --enable-systemtap Enable inclusion of SystemTap trace support - needs systemtab from AUR + --with-abs-install-dir=/usr/lib/jvm/java-7-openjdk The absolute path where the j2sdk-image dir will be installed + + make +} + +check() { + cd "${srcdir}/icedtea-${_icedtea_ver}" + make -k check +} + +package_jre7-openjdk-headless() { + pkgdesc="Free Java environment based on OpenJDK 7.0 with IcedTea7 replacing binary plugs - Minimal Java runtime - needed for executing non GUI Java programs" + depends=('libjpeg-turbo' 'lcms2' 'nss' + 'ca-certificates-java' 'rhino') + optdepends=('libcups: needed for Java Mauve support - libmawt.so' + 'fontconfig: needed for Java Mauve support - libmawt.so') + provides=('java-runtime=7') + conflicts=('java-runtime' 'openjdk6') + # replaces=('openjdk6') # once we remove openjdk6 pkg from the repos + backup=(etc/profile.d/jre.sh + etc/profile.d/jre.csh + etc/java-7-openjdk/calendars.properties + etc/java-7-openjdk/content-types.properties + etc/java-7-openjdk/cursors/cursors.properties + etc/java-7-openjdk/flavormap.properties + etc/java-7-openjdk/fontconfig.bfc + etc/java-7-openjdk/fontconfig.properties + etc/java-7-openjdk/jvm.cfg + etc/java-7-openjdk/logging.properties + etc/java-7-openjdk/management/jmxremote.access + etc/java-7-openjdk/management/jmxremote.password + etc/java-7-openjdk/management/management.properties + etc/java-7-openjdk/management/snmp.acl + etc/java-7-openjdk/net.properties + etc/java-7-openjdk/psfont.properties.ja + etc/java-7-openjdk/psfontj2d.properties + etc/java-7-openjdk/security/java.policy + etc/java-7-openjdk/security/java.security + etc/java-7-openjdk/security/nss.cfg + etc/java-7-openjdk/sound.properties + etc/java-7-openjdk/tz.properties) + install=jre7-openjdk-headless.install + + cd "${srcdir}/icedtea-${_icedtea_ver}/openjdk.build/j2sdk-image/jre" + + mv lib/fontconfig.Ubuntu.properties.src lib/fontconfig.properties + mv lib/fontconfig.Ubuntu.bfc lib/fontconfig.bfc + rm -f lib/fontconfig.*.bfc + rm -f lib/fontconfig.*.properties.src + rm -f lib/fontconfig.properties.src + + install -d -m755 ${pkgdir}/${_jvmdir}/jre/ + cp -a bin lib ${pkgdir}/${_jvmdir}/jre + + # Install man pages + pushd ../../j2re-image/man + install -m755 -d ${pkgdir}/usr/share/man/{,ja/}man1/ + install -m644 man1/*.1 ${pkgdir}/usr/share/man/man1 + install -m644 ja_JP.UTF-8/man1/*.1 ${pkgdir}/usr/share/man/ja/man1 + popd + + # more files that belong to the desktop package + mkdir ${srcdir}/tmp-desktop-jre + for file in \ + "/usr/lib/jvm/java-7-openjdk/jre/bin/policytool" \ + "/usr/lib/jvm/java-7-openjdk/jre/lib/${_JARCH}/libjsoundalsa.so" \ + "/usr/lib/jvm/java-7-openjdk/jre/lib/${_JARCH}/libpulse-java.so" \ + "/usr/lib/jvm/java-7-openjdk/jre/lib/${_JARCH}/libsplashscreen.so" \ + "/usr/lib/jvm/java-7-openjdk/jre/lib/${_JARCH}/xawt/libmawt.so" \ + "/usr/share/man/ja/man1/policytool.1" \ + "/usr/share/man/man1/policytool.1"; do + dirname=`dirname $file` + install -dm755 ${srcdir}/tmp-desktop-jre/$dirname || /bin/true + # mv file from fakeinstall to pkgdir + mv ${pkgdir}/$file ${srcdir}/tmp-desktop-jre$file + done + rmdir ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/${_JARCH}/xawt + + # Link binaries into /usr/bin + pushd ${pkgdir}/${_jvmdir}/jre/bin + install -m755 -d ${pkgdir}/usr/bin/ + for file in *; do + ln -sf ${_jvmdir}/jre/bin/${file} ${pkgdir}/usr/bin + done + popd + + # Link JKS keystore from ca-certificates-java + rm -f ${pkgdir}/${_jvmdir}/jre/lib/security/cacerts + ln -sf /etc/ssl/certs/java/cacerts "${pkgdir}/${_jvmdir}/jre/lib/security/cacerts" + + # Set some variables + install -m755 -d ${pkgdir}/etc/profile.d/ + install -m755 ${srcdir}/jre7-openjdk.profile ${pkgdir}/etc/profile.d/jre.sh + install -m755 ${srcdir}/jre7-openjdk.profile.csh ${pkgdir}/etc/profile.d/jre.csh + + # Install license + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgbase}/ + install -m644 ASSEMBLY_EXCEPTION LICENSE THIRD_PARTY_README \ + ${pkgdir}/usr/share/licenses/${pkgbase} + + # Put some more files under backup control + install -m755 -d ${pkgdir}/etc/java-7-openjdk/ + install -m644 ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/*.properties* ${pkgdir}/etc/java-7-openjdk/ + # install dummy links to make them found by JAVA + cd ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/ + for file in `ls ${pkgdir}/etc/java-7-openjdk/*.properties*`; do + ln -vsf /etc/java-7-openjdk/`basename $file` . + done + # some more + install -m755 -d ${pkgdir}/etc/java-7-openjdk/{cursors,management,security} + install -m644 ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/images/cursors/cursors.properties ${pkgdir}/etc/java-7-openjdk/cursors/ + pushd ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/images/cursors/ + ln -vsf /etc/java-7-openjdk/cursors/cursors.properties . + popd + mv ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/management/jmxremote.password.template ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/management/jmxremote.password + mv ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/management/snmp.acl.template ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/management/snmp.acl + install -m644 ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/management/{management.properties,jmxremote.access,jmxremote.password,snmp.acl} ${pkgdir}/etc/java-7-openjdk/management/ + pushd ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/management + ln -vsf /etc/java-7-openjdk/management/{management.properties,jmxremote.access,jmxremote.password,snmp.acl} . + popd + install -m644 ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/security/{java.policy,java.security,nss.cfg} ${pkgdir}/etc/java-7-openjdk/security/ + pushd ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/security + ln -vsf /etc/java-7-openjdk/security/{java.policy,java.security,nss.cfg} . + popd + install -m644 ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/fontconfig.bfc ${pkgdir}/etc/java-7-openjdk/ + install -m644 ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/${_JARCH}/jvm.cfg ${pkgdir}/etc/java-7-openjdk/ + pushd ${pkgdir}/usr/lib/jvm/java-7-openjdk/jre/lib/${_JARCH}/ + ln -vsf /etc/java-7-openjdk/jvm.cfg . + popd +} + +package_jre7-openjdk() { + pkgdesc="Free Java environment based on OpenJDK 7.0 with IcedTea7 replacing binary plugs -Full Java runtime environment - needed for executing Java GUI and Webstart programs" + depends=('jre7-openjdk-headless' 'xdg-utils' 'hicolor-icon-theme') + optdepends=('icedtea-web-java7: web browser plugin + Java Web Start' + 'alsa-lib: for basic sound support' + 'giflib: for gif format support' + 'libpulse: for advanced sound support' + 'gtk2: for the Gtk+ look and feel - desktop usage') + install=jre7-openjdk.install + conflicts=('openjdk6') + + mv ${srcdir}/tmp-desktop-jre/* ${pkgdir} + # Link binaries into /usr/bin + pushd ${pkgdir}/${_jvmdir}/jre/bin + install -m755 -d ${pkgdir}/usr/bin/ + for file in *; do + ln -sf ${_jvmdir}/jre/bin/${file} ${pkgdir}/usr/bin + done + popd + + cd "${srcdir}/icedtea-${_icedtea_ver}/openjdk.build/j2sdk-image/jre" + + # Install icons and menu entries + for s in 16 24 32 48 ; do + install -m755 -d ${pkgdir}/usr/share/icons/hicolor/${s}x${s}/apps/ + install -m644 ../../../openjdk/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \ + ${pkgdir}/usr/share/icons/hicolor/${s}x${s}/apps/java.png + done + + # Install desktop files. + install -m755 -d ${pkgdir}/usr/share/applications + install -m644 ${srcdir}/icedtea-${_icedtea_ver}/{jconsole,policytool}.desktop ${pkgdir}/usr/share/applications +} + +package_jdk7-openjdk() { + pkgdesc="Free Java environment based on OpenJDK 7.0 with IcedTea7 replacing binary plugs - SDK" + depends=('jre7-openjdk') + provides=('java-environment=7') + conflicts=('java-environment') + # replaces=('openjdk6') + backup=(etc/profile.d/jdk.sh etc/profile.d/jdk.csh) + + cd "${srcdir}/icedtea-${_icedtea_ver}/openjdk.build/j2sdk-image" + + # Main files + install -m755 -d ${pkgdir}/${_jvmdir}/ + + cp -a demo include lib sample ${pkgdir}/${_jvmdir} + + # 'bin' files + pushd bin + install -m755 -d ${pkgdir}/${_jvmdir}/bin/ \ + ${pkgdir}/usr/bin/ \ + ${pkgdir}/usr/share/man/{,ja/}man1/ + + # 'java-rmi.cgi' will be handled separately as it should not be in the PATH and has no man page + for b in $(ls | grep -v java-rmi.cgi); do + if [ -e ../jre/bin/${b} ]; then + # Provide a link of the jre binary in the jdk/bin/ directory + ln -s ../jre/bin/${b} ${pkgdir}/${_jvmdir}/bin/${b} + else + # Copy binary to jdk/bin/ + install -m755 ${b} ${pkgdir}/${_jvmdir}/bin/${b} + # Copy man page + install -m644 ../man/man1/${b}.1 ${pkgdir}/usr/share/man/man1/${b}.1 + install -m644 ../man/ja/man1/${b}.1 ${pkgdir}/usr/share/man/ja/man1/${b}.1 + # Link from /bin/ + ln -s ${_jvmdir}/bin/${b} ${pkgdir}/usr/bin/${b} + fi + done + popd + + # Handling 'java-rmi.cgi' separately + install -m755 -D bin/java-rmi.cgi ${pkgdir}/${_jvmdir}/bin/java-rmi.cgi + + # Set some variables + install -m755 -d ${pkgdir}/etc/profile.d/ + install -m755 ${srcdir}/${pkgname}.profile ${pkgdir}/etc/profile.d/jdk.sh + install -m755 ${srcdir}/${pkgname}.profile.csh ${pkgdir}/etc/profile.d/jdk.csh +} + +package_openjdk7-src() { + pkgdesc="Free Java environment based on OpenJDK 7.0 with IcedTea7 replacing binary plugs - sources" + + install -D ${srcdir}/icedtea-${_icedtea_ver}/openjdk.build/j2sdk-image/src.zip \ + ${pkgdir}/${_jvmdir}/src.zip +} diff --git a/staging/java7-openjdk/fix_corba_cmds_path.diff b/staging/java7-openjdk/fix_corba_cmds_path.diff new file mode 100644 index 000000000..842657880 --- /dev/null +++ b/staging/java7-openjdk/fix_corba_cmds_path.diff @@ -0,0 +1,33 @@ +--- openjdk/corba/make/common/shared/Defs-utils.gmk.old 2008-04-13 13:26:12.000000000 +0300 ++++ openjdk/corba/make/common/shared/Defs-utils.gmk 2008-04-14 15:35:13.000000000 +0300 +@@ -86,10 +86,10 @@ + CHMOD = $(UTILS_COMMAND_PATH)chmod + CMP = $(UTILS_USR_BIN_PATH)cmp + COMM = $(UTILS_USR_BIN_PATH)comm +-COMPRESS = $(UTILS_USR_BIN_PATH)compress ++COMPRESS = $(UTILS_COMMAND_PATH)compress + CP = $(UTILS_COMMAND_PATH)cp + CPIO = $(UTILS_COMMAND_PATH)cpio +-CUT = $(UTILS_USR_BIN_PATH)cut ++CUT = $(UTILS_COMMAND_PATH)cut + DATE = $(UTILS_COMMAND_PATH)date + DF = $(UTILS_COMMAND_PATH)df + DIFF = $(UTILS_USR_BIN_PATH)diff +@@ -136,7 +136,7 @@ + TAR = $(UTILS_COMMAND_PATH)tar + TEST = $(UTILS_USR_BIN_PATH)test + TOUCH = $(UTILS_COMMAND_PATH)touch +-TR = $(UTILS_USR_BIN_PATH)tr ++TR = $(UTILS_COMMAND_PATH)tr + TRUE = $(UTILS_COMMAND_PATH)true + UNAME = $(UTILS_COMMAND_PATH)uname + UNIQ = $(UTILS_USR_BIN_PATH)uniq +@@ -186,7 +186,7 @@ + # others have it in /usr/bin. + SORT=$(firstword $(wildcard $(UTILS_COMMAND_PATH)sort) \ + $(wildcard $(UTILS_USR_BIN_PATH)sort)) +- NAWK = $(USRBIN_PATH)gawk ++ NAWK = $(UTILS_COMMAND_PATH)gawk + # Intrinsic unix command, with backslash-escaped character interpretation + ECHO = /bin/echo -e + # These are really in UTILS_USR_BIN_PATH on Linux (only sccs is not) diff --git a/staging/java7-openjdk/fontconfig-paths.diff b/staging/java7-openjdk/fontconfig-paths.diff new file mode 100644 index 000000000..fa08db629 --- /dev/null +++ b/staging/java7-openjdk/fontconfig-paths.diff @@ -0,0 +1,134 @@ +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties 2009-05-29 22:45:23.024341869 +0000 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties.new 2009-05-29 22:55:13.681366890 +0000 +@@ -275,73 +275,61 @@ + + # Font File Names + +-filename.DejaVu_Sans=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf +-filename.DejaVu_Sans_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf +-filename.DejaVu_Sans_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf +-filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf +- +-filename.DejaVu_Sans_Mono=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf +-filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf +-filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Oblique.ttf +-filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-BoldOblique.ttf +- +-filename.DejaVu_Serif=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf +-filename.DejaVu_Serif_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Bold.ttf +-filename.DejaVu_Serif_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Oblique.ttf +-filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-BoldOblique.ttf +- +-filename.AR_PL_UMing_CN=/usr/share/fonts/truetype/arphic/uming.ttc +-filename.AR_PL_UMing_HK=/usr/share/fonts/truetype/arphic/uming.ttc +-filename.AR_PL_UMing_TW=/usr/share/fonts/truetype/arphic/uming.ttc +-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/truetype/arphic/uming.ttf +- +-filename.WenQuanYi_Zen_Hei=/usr/share/fonts/truetype/wqy/wqy-zenhei.ttf +-filename.Baekmuk_Batang=/usr/share/fonts/truetype/baekmuk/batang.ttf +-filename.UnBatang=/usr/share/fonts/truetype/unfonts/UnBatang.ttf +-filename.UnBatang_Bold=/usr/share/fonts/truetype/unfonts/UnBatangBold.ttf +-filename.Baekmuk_Gulim=/usr/share/fonts/truetype/baekmuk/gulim.ttf +-filename.UnDotum=/usr/share/fonts/truetype/unfonts/UnDotum.ttf +-filename.UnDotum_Bold=/usr/share/fonts/truetype/unfonts/UnDotumBold.ttf +-filename.Kochi_Gothic=/usr/share/fonts/truetype/kochi/kochi-gothic.ttf +-filename.Sazanami_Gothic=/usr/share/fonts/truetype/sazanami/sazanami-gothic.ttf +-filename.Kochi_Mincho=/usr/share/fonts/truetype/kochi/kochi-mincho.ttf +-filename.Sazanami_Mincho=/usr/share/fonts/truetype/sazanami/sazanami-mincho.ttf +-filename.VL_Gothic=/usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf +-filename.VL_PGothic=/usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf +- +-filename.Lohit_Bengali=/usr/share/fonts/truetype/ttf-bengali-fonts/lohit_bn.ttf +-filename.Lohit_Gujarati=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_gu.ttf +-filename.Lohit_Hindi=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_hi.ttf +-filename.Lohit_Kannda=/usr/share/fonts/truetype/ttf-kannada-fonts/lohit_kn.ttf +-#filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +-filename.Lohit_Oriya=/usr/share/fonts/truetype/ttf-oriya-fonts/lohit_or.ttf +-filename.Lohit_Punjabi=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_pa.ttf +-filename.Lohit_Tamil=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_ta.ttf +-filename.Lohit_Telugu=/usr/share/fonts/truetype/ttf-telugu-fonts/lohit_te.ttf +-filename.LKLUG=/usr/share/fonts/truetype/ttf-sinhala-lklug/lklug.ttf +- +-filename.LuxiSans-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisr.ttf +-filename.LuxiSans-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisb.ttf +-filename.LuxiSans-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisri.ttf +-filename.LuxiSans-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisbi.ttf +-filename.LuxiMono-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximr.ttf +-filename.LuxiMono-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximb.ttf +-filename.LuxiMono-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximri.ttf +-filename.LuxiMono-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximbi.ttf +-filename.LuxiSerif-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirr.ttf +-filename.LuxiSerif-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirb.ttf +-filename.LuxiSerif-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirri.ttf +-filename.LuxiSerif-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirbi.ttf +- +-# AWT X11 font paths +-awtfontpath.latin-1=/usr/share/fonts/X11/Type1 +-awtfontpath.umingcn=/usr/share/fonts/truetype/arphic +-awtfontpath.uminghk=/usr/share/fonts/truetype/arphic +-awtfontpath.umingtw=/usr/share/fonts/truetype/arphic +-awtfontpath.shanheisun=/usr/share/fonts/truetype/arphic +-awtfontpath.wqy-zenhei=/usr/share/fonts/truetype/wqy +-awtfontpath.japanese-kochi=/usr/share/fonts/truetype/kochi +-awtfontpath.japanese-sazanami=/usr/share/fonts/truetype/sazanami +-awtfontpath.japanese-vlgothic=/usr/share/fonts/truetype/vlgothic +-awtfontpath.korean-baekmuk=/usr/share/fonts/truetype/baekmuk +-awtfontpath.korean-un=/usr/share/fonts/truetype/unfonts ++filename.DejaVu_Sans=/usr/share/fonts/TTF/DejaVuSans.ttf ++filename.DejaVu_Sans_Bold=/usr/share/fonts/TTF/DejaVuSans-Bold.ttf ++filename.DejaVu_Sans_Oblique=/usr/share/fonts/TTF/DejaVuSans-Oblique.ttf ++filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/TTF/DejaVuSans-BoldOblique.ttf ++ ++filename.DejaVu_Sans_Mono=/usr/share/fonts/TTF/DejaVuSansMono.ttf ++filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/TTF/DejaVuSansMono-Bold.ttf ++filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/TTF/DejaVuSansMono-Oblique.ttf ++filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/TTF/DejaVuSansMono-BoldOblique.ttf ++ ++filename.DejaVu_Serif=/usr/share/fonts/TTF/DejaVuSerif.ttf ++filename.DejaVu_Serif_Bold=/usr/share/fonts/TTF/DejaVuSerif-Bold.ttf ++filename.DejaVu_Serif_Oblique=/usr/share/fonts/TTF/DejaVuSerif-Oblique.ttf ++filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/TTF/DejaVuSerif-BoldOblique.ttf ++ ++filename.AR_PL_UMing_CN=/usr/share/fonts/TTF/uming.ttc ++filename.AR_PL_UMing_HK=/usr/share/fonts/TTF/uming.ttc ++filename.AR_PL_UMing_TW=/usr/share/fonts/TTF/uming.ttc ++filename.AR_PL_ShanHeiSun_Uni=/usr/share/TTF/uming.ttf ++ ++filename.WenQuanYi_Zen_Hei=/usr/share/fonts/TTF/wqy-zenhei.ttf ++filename.Baekmuk_Batang=/usr/share/fonts/TTF/batang.ttf ++filename.UnBatang=/usr/share/fonts/TTF/UnBatang.ttf ++filename.UnBatang_Bold=/usr/share/fonts/TTF/UnBatangBold.ttf ++filename.Baekmuk_Gulim=/usr/share/fonts/TTF/gulim.ttf ++filename.UnDotum=/usr/share/fonts/TTF/UnDotum.ttf ++filename.UnDotum_Bold=/usr/share/fonts/TTF/UnDotumBold.ttf ++filename.Kochi_Gothic=/usr/share/fonts/TTF/kochi-gothic.ttf ++filename.Sazanami_Gothic=/usr/share/fonts/TTF/sazanami-gothic.ttf ++filename.Kochi_Mincho=/usr/share/fonts/TTF/kochi-mincho.ttf ++filename.Sazanami_Mincho=/usr/share/fonts/TTF/sazanami-mincho.ttf ++filename.VL_Gothic=/usr/share/fonts/TTF/VL-Gothic-Regular.ttf ++filename.VL_PGothic=/usr/share/fonts/TTF/VL-PGothic-Regular.ttf ++ ++filename.Lohit_Bengali=/usr/share/fonts/TTF/lohit_bn.ttf ++filename.Lohit_Gujarati=/usr/share/fonts/TTF/lohit_gu.ttf ++filename.Lohit_Hindi=/usr/share/fonts/TTF/lohit_hi.ttf ++filename.Lohit_Kannda=/usr/share/fonts/TTF/lohit_kn.ttf ++#filename.Lohit_Malayalam=/usr/share/fonts/TTF/lohit_ml.ttf ++filename.Lohit_Oriya=/usr/share/fonts/TTF/lohit_or.ttf ++filename.Lohit_Punjabi=/usr/share/fonts/TTF/lohit_pa.ttf ++filename.Lohit_Tamil=/usr/share/fonts/TTF/lohit_ta.ttf ++filename.Lohit_Telugu=/usr/share/fonts/TTF/lohit_te.ttf ++filename.LKLUG=/usr/share/fonts/TTF/lklug.ttf ++ ++filename.LuxiSans-Regular=/usr/share/fonts/TTF/luxisr.ttf ++filename.LuxiSans-Bold=/usr/share/fonts/TTF/luxisb.ttf ++filename.LuxiSans-Oblique=/usr/share/fonts/TTF/luxisri.ttf ++filename.LuxiSans-BoldOblique=/usr/share/fonts/TTF/luxisbi.ttf ++filename.LuxiMono-Regular=/usr/share/fonts/TTF/luximr.ttf ++filename.LuxiMono-Bold=/usr/share/fonts/TTF/luximb.ttf ++filename.LuxiMono-Oblique=/usr/share/fonts/TTF/luximri.ttf ++filename.LuxiMono-BoldOblique=/usr/share/fonts/TTF/luximbi.ttf ++filename.LuxiSerif-Regular=/usr/share/fonts/TTF/luxirr.ttf ++filename.LuxiSerif-Bold=/usr/share/fonts/TTF/luxirb.ttf ++filename.LuxiSerif-Oblique=/usr/share/fonts/TTF/luxirri.ttf ++filename.LuxiSerif-BoldOblique=/usr/share/fonts/TTF/luxirbi.ttf ++ diff --git a/staging/java7-openjdk/glibc2_15.diff b/staging/java7-openjdk/glibc2_15.diff new file mode 100644 index 000000000..c2fd6124b --- /dev/null +++ b/staging/java7-openjdk/glibc2_15.diff @@ -0,0 +1,232 @@ + +# HG changeset patch +# User never +# Date 1319555835 25200 +# Node ID a6eef545f1a2ceca6aeadf688a965df600ffef28 +# Parent 2ec638646e86e455978c31a9d47fc0ec271ed926 +7103224: collision between __LEAF define in interfaceSupport.hpp and /usr/include/sys/cdefs.h with gcc +Reviewed-by: never +Contributed-by: Omair Majid <omajid@redhat.com> + +--- openjdk/hotspot/src/share/vm/opto/addnode.cpp Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/opto/addnode.cpp Tue Oct 25 08:17:15 2011 -0700 +@@ -33,8 +33,6 @@ + #include "opto/subnode.hpp" + + // Portions of code courtesy of Clifford Click +- +-#define MAXFLOAT ((float)3.40282346638528860e+38) + + // Classic Add functionality. This covers all the usual 'add' behaviors for + // an algebraic ring. Add-integer, add-float, add-double, and binary-or are +--- openjdk/hotspot/src/share/vm/prims/jniCheck.cpp Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/prims/jniCheck.cpp Tue Oct 25 08:17:15 2011 -0700 +@@ -107,7 +107,7 @@ extern "C" { + if (env != xenv) { \ + NativeReportJNIFatalError(thr, warn_wrong_jnienv); \ + } \ +- __ENTRY(result_type, header, thr) ++ VM_ENTRY_BASE(result_type, header, thr) + + + #define UNCHECKED() (unchecked_jni_NativeInterface) +--- openjdk/hotspot/src/share/vm/prims/jvmtiEnter.xsl Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/prims/jvmtiEnter.xsl Tue Oct 25 08:17:15 2011 -0700 +@@ -426,7 +426,7 @@ struct jvmtiInterface_1_ jvmti</xsl:text + <xsl:value-of select="$space"/> + <xsl:text>ThreadInVMfromNative __tiv(current_thread);</xsl:text> + <xsl:value-of select="$space"/> +- <xsl:text>__ENTRY(jvmtiError, </xsl:text> ++ <xsl:text>VM_ENTRY_BASE(jvmtiError, </xsl:text> + <xsl:apply-templates select="." mode="functionid"/> + <xsl:text> , current_thread)</xsl:text> + <xsl:value-of select="$space"/> +--- openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp Tue Oct 25 08:17:15 2011 -0700 +@@ -173,7 +173,7 @@ JvmtiEnv::GetThreadLocalStorage(jthread + // from native so as to resolve the jthread. + + ThreadInVMfromNative __tiv(current_thread); +- __ENTRY(jvmtiError, JvmtiEnv::GetThreadLocalStorage , current_thread) ++ VM_ENTRY_BASE(jvmtiError, JvmtiEnv::GetThreadLocalStorage , current_thread) + debug_only(VMNativeEntryWrapper __vew;) + + oop thread_oop = JNIHandles::resolve_external_guard(thread); +--- openjdk/hotspot/src/share/vm/prims/jvmtiExport.cpp Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/prims/jvmtiExport.cpp Tue Oct 25 08:17:15 2011 -0700 +@@ -373,7 +373,7 @@ JvmtiExport::get_jvmti_interface(JavaVM + JavaThread* current_thread = (JavaThread*) ThreadLocalStorage::thread(); + // transition code: native to VM + ThreadInVMfromNative __tiv(current_thread); +- __ENTRY(jvmtiEnv*, JvmtiExport::get_jvmti_interface, current_thread) ++ VM_ENTRY_BASE(jvmtiEnv*, JvmtiExport::get_jvmti_interface, current_thread) + debug_only(VMNativeEntryWrapper __vew;) + + JvmtiEnv *jvmti_env = JvmtiEnv::create_a_jvmti(version); +--- openjdk/hotspot/src/share/vm/runtime/interfaceSupport.hpp Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/runtime/interfaceSupport.hpp Tue Oct 25 08:17:15 2011 -0700 +@@ -72,9 +72,9 @@ class HandleMarkCleaner: public StackObj + } + }; + +-// InterfaceSupport provides functionality used by the __LEAF and __ENTRY +-// macros. These macros are used to guard entry points into the VM and +-// perform checks upon leave of the VM. ++// InterfaceSupport provides functionality used by the VM_LEAF_BASE and ++// VM_ENTRY_BASE macros. These macros are used to guard entry points into ++// the VM and perform checks upon leave of the VM. + + + class InterfaceSupport: AllStatic { +@@ -433,7 +433,7 @@ class RuntimeHistogramElement : public H + + // LEAF routines do not lock, GC or throw exceptions + +-#define __LEAF(result_type, header) \ ++#define VM_LEAF_BASE(result_type, header) \ + TRACE_CALL(result_type, header) \ + debug_only(NoHandleMark __hm;) \ + /* begin of body */ +@@ -441,7 +441,7 @@ class RuntimeHistogramElement : public H + + // ENTRY routines may lock, GC and throw exceptions + +-#define __ENTRY(result_type, header, thread) \ ++#define VM_ENTRY_BASE(result_type, header, thread) \ + TRACE_CALL(result_type, header) \ + HandleMarkCleaner __hm(thread); \ + Thread* THREAD = thread; \ +@@ -450,7 +450,7 @@ class RuntimeHistogramElement : public H + + // QUICK_ENTRY routines behave like ENTRY but without a handle mark + +-#define __QUICK_ENTRY(result_type, header, thread) \ ++#define VM_QUICK_ENTRY_BASE(result_type, header, thread) \ + TRACE_CALL(result_type, header) \ + debug_only(NoHandleMark __hm;) \ + Thread* THREAD = thread; \ +@@ -463,20 +463,20 @@ class RuntimeHistogramElement : public H + #define IRT_ENTRY(result_type, header) \ + result_type header { \ + ThreadInVMfromJava __tiv(thread); \ +- __ENTRY(result_type, header, thread) \ ++ VM_ENTRY_BASE(result_type, header, thread) \ + debug_only(VMEntryWrapper __vew;) + + + #define IRT_LEAF(result_type, header) \ + result_type header { \ +- __LEAF(result_type, header) \ ++ VM_LEAF_BASE(result_type, header) \ + debug_only(No_Safepoint_Verifier __nspv(true);) + + + #define IRT_ENTRY_NO_ASYNC(result_type, header) \ + result_type header { \ + ThreadInVMfromJavaNoAsyncException __tiv(thread); \ +- __ENTRY(result_type, header, thread) \ ++ VM_ENTRY_BASE(result_type, header, thread) \ + debug_only(VMEntryWrapper __vew;) + + // Another special case for nmethod_entry_point so the nmethod that the +@@ -487,7 +487,7 @@ class RuntimeHistogramElement : public H + result_type header { \ + nmethodLocker _nmlock(nm); \ + ThreadInVMfromJavaNoAsyncException __tiv(thread); \ +- __ENTRY(result_type, header, thread) ++ VM_ENTRY_BASE(result_type, header, thread) + + #define IRT_END } + +@@ -497,20 +497,20 @@ class RuntimeHistogramElement : public H + #define JRT_ENTRY(result_type, header) \ + result_type header { \ + ThreadInVMfromJava __tiv(thread); \ +- __ENTRY(result_type, header, thread) \ ++ VM_ENTRY_BASE(result_type, header, thread) \ + debug_only(VMEntryWrapper __vew;) + + + #define JRT_LEAF(result_type, header) \ + result_type header { \ +- __LEAF(result_type, header) \ ++ VM_LEAF_BASE(result_type, header) \ + debug_only(JRT_Leaf_Verifier __jlv;) + + + #define JRT_ENTRY_NO_ASYNC(result_type, header) \ + result_type header { \ + ThreadInVMfromJavaNoAsyncException __tiv(thread); \ +- __ENTRY(result_type, header, thread) \ ++ VM_ENTRY_BASE(result_type, header, thread) \ + debug_only(VMEntryWrapper __vew;) + + // Same as JRT Entry but allows for return value after the safepoint +@@ -543,11 +543,11 @@ extern "C" { + assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \ + ThreadInVMfromNative __tiv(thread); \ + debug_only(VMNativeEntryWrapper __vew;) \ +- __ENTRY(result_type, header, thread) ++ VM_ENTRY_BASE(result_type, header, thread) + + + // Ensure that the VMNativeEntryWrapper constructor, which can cause +-// a GC, is called outside the NoHandleMark (set via __QUICK_ENTRY). ++// a GC, is called outside the NoHandleMark (set via VM_QUICK_ENTRY_BASE). + #define JNI_QUICK_ENTRY(result_type, header) \ + extern "C" { \ + result_type JNICALL header { \ +@@ -555,7 +555,7 @@ extern "C" { + assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \ + ThreadInVMfromNative __tiv(thread); \ + debug_only(VMNativeEntryWrapper __vew;) \ +- __QUICK_ENTRY(result_type, header, thread) ++ VM_QUICK_ENTRY_BASE(result_type, header, thread) + + + #define JNI_LEAF(result_type, header) \ +@@ -563,7 +563,7 @@ extern "C" { + result_type JNICALL header { \ + JavaThread* thread=JavaThread::thread_from_jni_environment(env); \ + assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \ +- __LEAF(result_type, header) ++ VM_LEAF_BASE(result_type, header) + + + // Close the routine and the extern "C" +@@ -579,7 +579,7 @@ extern "C" { + JavaThread* thread=JavaThread::thread_from_jni_environment(env); \ + ThreadInVMfromNative __tiv(thread); \ + debug_only(VMNativeEntryWrapper __vew;) \ +- __ENTRY(result_type, header, thread) ++ VM_ENTRY_BASE(result_type, header, thread) + + + #define JVM_ENTRY_NO_ENV(result_type, header) \ +@@ -588,7 +588,7 @@ extern "C" { + JavaThread* thread = (JavaThread*)ThreadLocalStorage::thread(); \ + ThreadInVMfromNative __tiv(thread); \ + debug_only(VMNativeEntryWrapper __vew;) \ +- __ENTRY(result_type, header, thread) ++ VM_ENTRY_BASE(result_type, header, thread) + + + #define JVM_QUICK_ENTRY(result_type, header) \ +@@ -597,14 +597,14 @@ extern "C" { + JavaThread* thread=JavaThread::thread_from_jni_environment(env); \ + ThreadInVMfromNative __tiv(thread); \ + debug_only(VMNativeEntryWrapper __vew;) \ +- __QUICK_ENTRY(result_type, header, thread) ++ VM_QUICK_ENTRY_BASE(result_type, header, thread) + + + #define JVM_LEAF(result_type, header) \ + extern "C" { \ + result_type JNICALL header { \ + VM_Exit::block_if_vm_exited(); \ +- __LEAF(result_type, header) ++ VM_LEAF_BASE(result_type, header) + + + #define JVM_END } } + diff --git a/staging/java7-openjdk/jdk7-openjdk.profile b/staging/java7-openjdk/jdk7-openjdk.profile new file mode 100644 index 000000000..91265cc86 --- /dev/null +++ b/staging/java7-openjdk/jdk7-openjdk.profile @@ -0,0 +1,6 @@ +export J2SDKDIR=/usr/lib/jvm/java-7-openjdk +export J2REDIR=$J2SDKDIR/jre +export JAVA_HOME=/usr/lib/jvm/java-7-openjdk + +# For non-reparenting window managers, enable '_JAVA_AWT_WM_NONREPARENTING' +# in /etc/profile.d/jre7.sh diff --git a/staging/java7-openjdk/jdk7-openjdk.profile.csh b/staging/java7-openjdk/jdk7-openjdk.profile.csh new file mode 100644 index 000000000..cc7dc8ab1 --- /dev/null +++ b/staging/java7-openjdk/jdk7-openjdk.profile.csh @@ -0,0 +1 @@ +setenv J2SDKDIR "/usr/lib/jvm/java-7-openjdk" diff --git a/staging/java7-openjdk/jre7-openjdk-headless.install b/staging/java7-openjdk/jre7-openjdk-headless.install new file mode 100644 index 000000000..45f52fe32 --- /dev/null +++ b/staging/java7-openjdk/jre7-openjdk-headless.install @@ -0,0 +1,15 @@ +post_install() { + if [ ! -f /etc/ssl/certs/java/cacerts ]; then + /usr/sbin/init-jks-keystore + fi +} + +post_upgrade() { + if [ ! -f /etc/ssl/certs/java/cacerts ]; then + /usr/sbin/init-jks-keystore + fi +} + +#post_remove() { +# +#} diff --git a/staging/java7-openjdk/jre7-openjdk.install b/staging/java7-openjdk/jre7-openjdk.install new file mode 100644 index 000000000..d98e79ec5 --- /dev/null +++ b/staging/java7-openjdk/jre7-openjdk.install @@ -0,0 +1,18 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor 2> /dev/null + echo "when you use a non-reparenting window manager" + echo "set _JAVA_AWT_WM_NONREPARENTING=1 in" + echo "/etc/profile.d/jre.sh" +# update-desktop-database -q +} + +post_upgrade() { + xdg-icon-resource forceupdate --theme hicolor 2> /dev/null +# update-desktop-database -q +} + + +post_remove() { + xdg-icon-resource forceupdate --theme hicolor 2> /dev/null +# update-desktop-database -q +} diff --git a/staging/java7-openjdk/jre7-openjdk.profile b/staging/java7-openjdk/jre7-openjdk.profile new file mode 100644 index 000000000..c86ce857a --- /dev/null +++ b/staging/java7-openjdk/jre7-openjdk.profile @@ -0,0 +1,5 @@ +export J2REDIR=/usr/lib/jvm/java-7-openjdk/jre +export JAVA_HOME=${JAVA_HOME:-/usr/lib/jvm/java-7-openjdk/jre} + +# enable this for non-reparenting window managers +#export _JAVA_AWT_WM_NONREPARENTING=1 diff --git a/staging/java7-openjdk/jre7-openjdk.profile.csh b/staging/java7-openjdk/jre7-openjdk.profile.csh new file mode 100644 index 000000000..a9aed27d1 --- /dev/null +++ b/staging/java7-openjdk/jre7-openjdk.profile.csh @@ -0,0 +1,5 @@ +setenv J2REDIR "/usr/lib/jvm/java-7-openjdk/jre" +setenv JAVA_HOME "/usr/lib/jvm/java-7-openjdk/jre" + +# enable this for non-reparenting window managers +#setenv _JAVA_AWT_WM_NONREPARENTING 1 diff --git a/staging/java7-openjdk/openjdk7_fix_jdk_cmds_path.diff b/staging/java7-openjdk/openjdk7_fix_jdk_cmds_path.diff new file mode 100644 index 000000000..c68bd4441 --- /dev/null +++ b/staging/java7-openjdk/openjdk7_fix_jdk_cmds_path.diff @@ -0,0 +1,24 @@ +--- openjdk/jdk/make/common/shared/Defs-utils.gmk.old 2011-08-06 15:46:01.000000000 +0200 ++++ openjdk/jdk/make/common/shared/Defs-utils.gmk 2011-08-06 15:59:26.000000000 +0200 +@@ -91,10 +91,10 @@ + CHMOD = $(UTILS_COMMAND_PATH)chmod + CMP = $(UTILS_USR_BIN_PATH)cmp + COMM = $(UTILS_USR_BIN_PATH)comm +-COMPRESS = $(UTILS_USR_BIN_PATH)compress ++COMPRESS = $(UTILS_COMMAND_PATH)compress + CP = $(UTILS_COMMAND_PATH)cp + CPIO = $(UTILS_COMMAND_PATH)cpio +-CUT = $(UTILS_USR_BIN_PATH)cut ++CUT = $(UTILS_COMMAND_PATH)cut + DATE = $(UTILS_COMMAND_PATH)date + DF = $(UTILS_COMMAND_PATH)df + DIFF = $(UTILS_USR_BIN_PATH)diff +@@ -141,7 +141,7 @@ + TAR = $(UTILS_COMMAND_PATH)tar + TEST = $(UTILS_USR_BIN_PATH)test + TOUCH = $(UTILS_COMMAND_PATH)touch +-TR = $(UTILS_USR_BIN_PATH)tr ++TR = $(UTILS_COMMAND_PATH)tr + TRUE = $(UTILS_COMMAND_PATH)true + UNAME = $(UTILS_COMMAND_PATH)uname + UNIQ = $(UTILS_USR_BIN_PATH)uniq diff --git a/staging/java7-openjdk/openjdk7_nonreparenting-wm.diff b/staging/java7-openjdk/openjdk7_nonreparenting-wm.diff new file mode 100644 index 000000000..ba1a588e1 --- /dev/null +++ b/staging/java7-openjdk/openjdk7_nonreparenting-wm.diff @@ -0,0 +1,58 @@ +--- openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java.orig 2011-08-07 18:45:05.000000000 +0200 ++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java 2011-08-07 18:45:54.000000000 +0200 +@@ -102,7 +102,8 @@ + METACITY_WM = 11, + COMPIZ_WM = 12, + LG3D_WM = 13, +- MUTTER_WM = 14; ++ MUTTER_WM = 14, ++ OTHER_NONREPARENTING_WM = 15; + public String toString() { + switch (WMID) { + case NO_WM: +@@ -576,7 +577,7 @@ + // TODO: according to wikipedia, compiz is now reparenting. This should + // probably be updated. + static boolean isNonReparentingWM() { +- return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM); ++ return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM || XWM.getWMID() == XWM.OTHER_NONREPARENTING_WM); + } + + /* +@@ -762,9 +763,17 @@ + * supports WIN or _NET wm spec. + */ + else if (l_net_protocol.active()) { +- awt_wmgr = XWM.OTHER_WM; ++ if (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) { ++ awt_wmgr = XWM.OTHER_NONREPARENTING_WM; ++ } else { ++ awt_wmgr = XWM.OTHER_WM; ++ } + } else if (win.active()) { +- awt_wmgr = XWM.OTHER_WM; ++ if (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) { ++ awt_wmgr = XWM.OTHER_NONREPARENTING_WM; ++ } else { ++ awt_wmgr = XWM.OTHER_WM; ++ } + } + /* + * Check for legacy WMs. +@@ -775,6 +784,8 @@ + awt_wmgr = XWM.MOTIF_WM; + } else if (isOpenLook()) { + awt_wmgr = XWM.OPENLOOK_WM; ++ } else if (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) { ++ awt_wmgr = XWM.OTHER_NONREPARENTING_WM; + } else { + awt_wmgr = XWM.OTHER_WM; + } +@@ -1289,6 +1300,7 @@ + res = new Insets(28, 6, 6, 6); + break; + case NO_WM: ++ case OTHER_NONREPARENTING_WM: + case LG3D_WM: + res = zeroInsets; + break; diff --git a/staging/libreoffice/PKGBUILD b/staging/libreoffice/PKGBUILD index de7307ef5..d9a941c88 100644 --- a/staging/libreoffice/PKGBUILD +++ b/staging/libreoffice/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 146062 2012-01-04 21:30:06Z andyrtr $ +# $Id: PKGBUILD 147059 2012-01-21 10:23:48Z andyrtr $ # Maintainer: AndyRTR <andyrtr@archlinux.org> pkgbase="libreoffice" @@ -35,9 +35,9 @@ pkgname=('libreoffice-common' 'libreoffice-extension-validator' 'libreoffice-extension-watch-window' 'libreoffice-extension-wiki-publisher') -_LOver=3.4.4.2 -pkgver=3.4.4 -pkgrel=5 +_LOver=3.4.5.2 +pkgver=3.4.5 +pkgrel=2 arch=('i686' 'x86_64') #_LO_tree="3.4" _OFFICEUPD="340" @@ -61,8 +61,11 @@ makedepends=( # makedepends _mirror="http://download.documentfoundation.org/libreoffice/src/${pkgver}" #_mirror="http://dev-builds.libreoffice.org/pre-releases/src" +#_mirror="http://dev-builds.libreoffice.org/pre-releases-3-4/src" _additional_source_url="http://hg.services.openoffice.org/binaries" +_additional_source_url="http://dev-www.libreoffice.org/src" source=(${_mirror}/${pkgbase}-{artwork,base,bootstrap,calc,components,extensions,extras,filters,help,impress,libs-core,libs-extern,libs-extern-sys,libs-gui,postprocess,sdk,testing,ure,writer}-${_LOver}.tar.bz2 #,translations + ${_additional_source_url}/f02578f5218f217a9f20e9c30e119c6a-boost_1_44_0.tar.bz2 ${_additional_source_url}/1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz ${_additional_source_url}/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip ${_additional_source_url}/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip @@ -102,11 +105,9 @@ source=(${_mirror}/${pkgbase}-{artwork,base,bootstrap,calc,components,extensions buildfix_boost.diff buildfix_ct2n.diff vbahelper.visibility.patch - scp2-more-reasonable-file-access-rights.diff - oracle-recognition.diff::http://cgit.freedesktop.org/libreoffice/core/patch/?id=549e54fb2f8113502743c443d6deadfe648dede1 - RemovetheoslSecuritygetHomeDircheck.diff::http://cgit.freedesktop.org/libreoffice/ure/patch/?id=bc9b86940a707e9e2e1076f2954f38075398b5d7 - gcc462_buildfix.diff) + scp2-more-reasonable-file-access-rights.diff) noextract=(185d60944ea767075d27247c3162b3bc-unowinreg.dll + f02578f5218f217a9f20e9c30e119c6a-boost_1_44_0.tar.bz2 0ff7d225d087793c8c2c680d77aac3e7-mdds_0.5.3.tar.bz2 ada24d37d8d638b3d8a9985e80bc2978-source-9.0.0.7-bj.zip 798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip @@ -142,25 +143,26 @@ noextract=(185d60944ea767075d27247c3162b3bc-unowinreg.dll dbaafd21de055e582d92d7d32fe9da13-gdocs_2.3.1.oxt b7b2d0e04e142f26dd96119c80757d1f-oooblogger_0.1.oxt 90401bca927835b6fbae4a707ed187c8-nlpsolver-0.9.tar.bz2) -md5sums=('be8b13f83045f0a53b69fe76d6d72e9c' - 'db423cbb1cee416b718138044a5de930' - '31944d2139d6d81ef1131bd513530621' - 'f447fd4ffe54aab9561c6caa262754b3' - '97fe698737a35c8803712d4e08007620' - 'acff44d97a5106d9b53c747dabeb0800' - '620d43a0b9f36388f423e030513864ef' - '4c5b1ed870363eca2602f0cb42a8415a' - '702c6ca31525d7d2c2ded86c77b0bd2e' - 'ac9b3acf78f43c1395d0e2dedc860f30' - 'd8d2c41cb86bc8ba2a07e001a5317abb' - '4d4af2fc06dbe33ec2307df812f7abe1' - '1398a566eb76598bf3005e187fc2386c' - 'dd962d2d57f88b9e07e665adad3cabbc' - 'fff0fc9cd16ef1eb2b2ed5d0a6e77f95' - 'e54d41d39e63d04ac4a88ce79e37af98' - 'dbc71403040f447683bf55d1f0be3cad' - '69ce5b72f44b008d0e78767c5b1dbf39' - '34a2e8ae6b81a042966740263c53e135' +md5sums=('a75d7d4ebefb4c9a4bb256acf866fa81' + 'c1e2dabdf4cfcd5957779014a7f9787e' + '79c9c7fc208e7f56af09f284f261a7da' + 'c83a8a374d3d5cc83c6ac3b5ff613e46' + 'fa64799ebad8cbd2c160ac2f87bd5599' + 'b24fba57aa4185934e86a0a8db4a3433' + '4f98020088ab9b597fc21b617121bd47' + '3c3be7c5f923339c90b0d1d6ecad0243' + '3a0bb4bb096b7488533ed2ee466a2bc9' + 'f2b180aa1eff3884b4ca81c048f1e327' + 'a9af488ef92ad4442eafba874249c529' + 'db6a67c96a9090bc5e21b64e202a984e' + 'e00187ae0840e1f6a00fa3290cacf0d1' + '20fbf6cffd2b06e90a52105b75a57828' + '4af055f590732ec19a2534b2278ac49c' + 'c84693796d2b1d9c8269425b1fa53aef' + 'd4926dc27b6884656feec6753f4fdf22' + '770678ca19cca0f7985c1c82b2dccf48' + '97a1e3de430b124faf35bf334248ad53' + 'f02578f5218f217a9f20e9c30e119c6a' '1f24ab1d39f4a51faf22244c94a6203f' '35c94d2df8893241173de1d16b6034c0' '798b2ffdc8bcfe7bca2cf92b62caf685' @@ -200,10 +202,7 @@ md5sums=('be8b13f83045f0a53b69fe76d6d72e9c' 'bc228237108cab7745897a9f466b6d39' 'eee273f501ff45dc5f1365e78c6d57c0' '43b145db28e6c0d73578ae6fd35e510d' - '37638431e7e40baf2e47966ebb9bc0e9' - '3c6c62e77c30649a3dfe73512947cc9a' - 'eb35d4c715e0dfc23bbc706996033829' - '10600d04ee81014bc9b5cc04e615d799') + '37638431e7e40baf2e47966ebb9bc0e9') build() { @@ -233,10 +232,6 @@ build() { patch -Np1 -i ${srcdir}/buildfix_ct2n.diff patch -Np0 -i ${srcdir}/vbahelper.visibility.patch patch -Np0 -i ${srcdir}/scp2-more-reasonable-file-access-rights.diff - patch -Np1 -i ${srcdir}/oracle-recognition.diff - patch -Np1 -i ${srcdir}/RemovetheoslSecuritygetHomeDircheck.diff - # https://www.libreoffice.org/bugzilla/show_bug.cgi?id=43139 - patch -Np1 -i ${srcdir}/gcc462_buildfix.diff # unset C(XX)FLAGS # http://www.openoffice.org/issues/show_bug.cgi?id=103205 @@ -290,7 +285,6 @@ build() { --enable-lockdown\ --enable-opengl \ --enable-odk\ - --enable-opengl\ --enable-ext-barcode \ --enable-ext-diagram \ --enable-ext-google-docs \ @@ -333,7 +327,7 @@ build() { --with-external-libtextcat-data \ --with-openldap\ --with-ant-home="/usr/share/java/apache-ant"\ - --with-system-boost\ + --without-system-boost\ --with-system-cairo\ --with-system-libs\ --with-system-mozilla\ diff --git a/staging/libreoffice/PKGBUILD.next_stable b/staging/libreoffice/PKGBUILD.next_stable index a25819863..a8cb4c5ad 100644 --- a/staging/libreoffice/PKGBUILD.next_stable +++ b/staging/libreoffice/PKGBUILD.next_stable @@ -18,9 +18,9 @@ pkgname=('libreoffice-common' 'libreoffice-extension-presenter-screen' 'libreoffice-extension-presentation-minimizer' 'libreoffice-extension-report-builder') -_LOver=3.4.99.2 -pkgver=3.5.0beta2 -pkgrel=2 +_LOver=3.4.99.3 +pkgver=3.5.0beta3 +pkgrel=1 arch=('i686' 'x86_64') license=('LGPL3') url="http://www.libreoffice.org/" @@ -44,7 +44,8 @@ makedepends=( # makedepends _mirror="http://dev-builds.libreoffice.org/pre-releases/src" _additional_source_url="http://dev-www.libreoffice.org/src" source=(${_mirror}/${pkgbase}-{core,help,translations}-${_LOver}.tar.xz - ${_additional_source_url}/a8b25a0bf696fd126a08319d88998492-libvisio-0.0.11.tar.bz2 + ${_additional_source_url}/f02578f5218f217a9f20e9c30e119c6a-boost_1_44_0.tar.bz2 + ${_additional_source_url}/053a35c244bf132f806e198ac4d960aa-libvisio-0.0.12.tar.bz2 ${_additional_source_url}/1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz ${_additional_source_url}/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip ${_additional_source_url}/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip @@ -73,8 +74,9 @@ source=(${_mirror}/${pkgbase}-{core,help,translations}-${_LOver}.tar.xz #${_additional_source_url}/cc8eb870d6a324d36575420efd856319-libcdr-0.0.0.tar.bz2 http://download.go-oo.org/extern/185d60944ea767075d27247c3162b3bc-unowinreg.dll gmake_install.diff::http://cgit.freedesktop.org/libreoffice/core/patch/?id=1048d8fa4abd3e55a45dfb6884db808da1d72c9e - fix_menuicons.diff::http://cgit.freedesktop.org/libreoffice/core/patch/?id=c3569696294bb264a0c645db12f027d44b4e033f) -noextract=(a8b25a0bf696fd126a08319d88998492-libvisio-0.0.11.tar.bz2 + smp_buildfix.diff::http://cgit.freedesktop.org/libreoffice/core/patch/?id=cf23f57ae6bb7af689a45e0a850c3c2f67a8f810) +noextract=(053a35c244bf132f806e198ac4d960aa-libvisio-0.0.12.tar.bz2 + f02578f5218f217a9f20e9c30e119c6a-boost_1_44_0.tar.bz2 185d60944ea767075d27247c3162b3bc-unowinreg.dll 0ff7d225d087793c8c2c680d77aac3e7-mdds_0.5.3.tar.bz2 ada24d37d8d638b3d8a9985e80bc2978-source-9.0.0.7-bj.zip @@ -103,10 +105,11 @@ noextract=(a8b25a0bf696fd126a08319d88998492-libvisio-0.0.11.tar.bz2 ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip # cc8eb870d6a324d36575420efd856319-libcdr-0.0.0.tar.bz2 ) -md5sums=('e80d9d4b6c6b2a8be882a46bc8757e69' - '31471ad86996629a8c20f3a4d24ee03e' - '3146b8522605d24ce4a259fe73ec3519' - 'a8b25a0bf696fd126a08319d88998492' +md5sums=('3f223ec797a100e557f7138c8ab4a91b' + 'bb08c856e5c9a7a8bcf22fefdb7cf13f' + '83bd4be3370840de3e535b2c974e8af5' + 'f02578f5218f217a9f20e9c30e119c6a' + '053a35c244bf132f806e198ac4d960aa' '1f24ab1d39f4a51faf22244c94a6203f' '35c94d2df8893241173de1d16b6034c0' '798b2ffdc8bcfe7bca2cf92b62caf685' @@ -134,7 +137,7 @@ md5sums=('e80d9d4b6c6b2a8be882a46bc8757e69' '7c2549f6b0a8bb604e6c4c729ffdcfe6' '185d60944ea767075d27247c3162b3bc' '60ce5dc9bd098f95c2e621a930c98dd9' - 'f9bd737527dafd3eeb451cf0dd95d7d6') + '661a52a02a31b3afbe4b3b3146061afd') build() { @@ -157,8 +160,8 @@ build() { # buildfixes & bugfixes # one late fix to solve make distro-pack-install issue patch -Np1 -i ${srcdir}/gmake_install.diff - patch -Np1 -i ${srcdir}/fix_menuicons.diff - + patch -Np1 -i ${srcdir}/smp_buildfix.diff + # unset C(XX)FLAGS # http://www.openoffice.org/issues/show_bug.cgi?id=103205 # unset CFLAGS @@ -180,7 +183,7 @@ build() { # non-SMP test build # export MAKEFLAGS="-j1" #./configure --with-build-version="${_LOver} ArchLinux build-${pkgrel}" --with-vendor="ArchLinux" \ - touch autogen.lastrun +# touch autogen.lastrun ./autogen.sh --with-build-version="${_LOver} ArchLinux build-${pkgrel}" --with-vendor="ArchLinux" \ --with-unix-wrapper="libreoffice" \ --enable-split-app-modules \ @@ -232,7 +235,7 @@ build() { --without-system-mozilla \ --without-system-mozilla-headers \ --with-ant-home="/usr/share/java/apache-ant"\ - --with-system-boost\ + --without-system-boost\ --with-system-cairo\ --with-system-libs\ --with-system-mythes\ @@ -258,8 +261,6 @@ build() { touch src.downloaded #./download -# unset MAKEFLAGS -# ./bootstrap make # fake installation to create split file lists mkdir $srcdir/fakeinstall diff --git a/staging/libwebkit/PKGBUILD b/staging/libwebkit/PKGBUILD new file mode 100644 index 000000000..389f67bb5 --- /dev/null +++ b/staging/libwebkit/PKGBUILD @@ -0,0 +1,52 @@ +# $Id: PKGBUILD 147026 2012-01-20 21:25:43Z eric $ +# Maintainer: Andreas Radke <andyrtr@archlinux.org> + +pkgbase=libwebkit +pkgname=(libwebkit libwebkit3) +pkgver=1.6.1 +pkgrel=2 +pkgdesc="An opensource web content engine" +arch=('i686' 'x86_64') +url="http://webkitgtk.org/" +license=('custom') +depends=('libxt' 'libxslt' 'sqlite3' 'icu' 'gstreamer0.10-base' 'libsoup' 'enchant') +makedepends=('gperf' 'gtk-doc' 'gobject-introspection' 'python2' 'gtk2' 'gtk3') +options=('!libtool' '!emptydirs') +install=libwebkit.install +source=(http://webkitgtk.org/webkit-${pkgver}.tar.gz) +md5sums=('c11743694b1b71dad287b2e7a9e73b05') + +build() { + cd "${srcdir}/webkit-${pkgver}" + mkdir build-gtk{2,3} + + ( cd build-gtk2 && _build --with-gtk=2.0 ) + ( cd build-gtk3 && _build --with-gtk=3.0 ) +} + +_build() { + PYTHON=/usr/bin/python2 ../configure --prefix=/usr \ + --enable-introspection \ + --with-font-backend=freetype --enable-gtk-doc \ + --with-unicode-backend=icu \ + --enable-spellcheck "$@" + make all stamp-po +} + +package_libwebkit() { + pkgdesc+=" (for GTK2)" + depends+=(gtk2) + + cd "$srcdir/webkit-$pkgver/build-gtk2" + make DESTDIR="${pkgdir}" install + install -Dm644 ../Source/WebKit/LICENSE "${pkgdir}/usr/share/licenses/libwebkit/LICENSE" +} + +package_libwebkit3() { + pkgdesc+=" (for GTK3)" + depends+=(gtk3) + + cd "${srcdir}/webkit-${pkgver}/build-gtk3" + make DESTDIR="${pkgdir}" install + install -Dm644 ../Source/WebKit/LICENSE "${pkgdir}/usr/share/licenses/libwebkit3/LICENSE" +} diff --git a/staging/libwebkit/libwebkit.install b/staging/libwebkit/libwebkit.install new file mode 100644 index 000000000..24072f316 --- /dev/null +++ b/staging/libwebkit/libwebkit.install @@ -0,0 +1,11 @@ +post_install() { + usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/staging/netpbm/PKGBUILD b/staging/netpbm/PKGBUILD new file mode 100644 index 000000000..e94519534 --- /dev/null +++ b/staging/netpbm/PKGBUILD @@ -0,0 +1,72 @@ +# $Id: PKGBUILD 147094 2012-01-21 19:51:59Z eric $ +# Maintainer: Kevin Piche <kevin@archlinux.org> + +pkgname=netpbm +pkgver=10.57.1 +pkgrel=1 +pkgdesc="A toolkit for manipulation of graphic images" +arch=('i686' 'x86_64') +license=('custom' 'BSD' 'GPL' 'LGPL') +url="http://netpbm.sourceforge.net/" +depends=('perl' 'libpng' 'libtiff' 'libxml2') +makedepends=('python2') +options=('!makeflags') +# Releases after 10.34 are available via SVN only. +# Get Advanced tarball here: http://netpbm.sourceforge.net/release.html#tarball +# Get version number from version.mk +# Get docs with: wget --recursive --relative -nH http://netpbm.sourceforge.net/doc/ +source=(ftp://ftp.archlinux.org/other/netpbm/${pkgname}-${pkgver}.tar.gz \ + ftp://ftp.archlinux.org/other/netpbm/netpbm-doc-22Feb2009.tar.xz \ + netpbm-CAN-2005-2471.patch netpbm-security-code.patch netpbm-security-scripts.patch) +sha1sums=('cd0b99333faf994a680d77c5d217034df35ebd4e' + 'dfeba9f9a5fe987d64db0aadb5ca8c1b20fcead2' + 'b79cf9d42488fea065ba16262ed97694c47af08d' + '4cd5b94a24886ecae3973c5ae104d8298fe5a1f5' + '2ac31f714121e08e47af9337c6bbaab3cbfc5c75') + +build() { + cd "${srcdir}/advanced" + patch -p1 < ../netpbm-CAN-2005-2471.patch + patch -p1 < ../netpbm-security-code.patch + patch -p1 < ../netpbm-security-scripts.patch + sed -i 's|#!/usr/bin/python|#!/usr/bin/python2|' buildtools/makeman + sed -i 's|@python|@python2|' buildtools/manpage.mk + + cp config.mk.in config.mk + [ "${CARCH}" = 'x86_64' ] && echo 'CFLAGS_SHLIB = -fPIC' >> config.mk + echo "NETPBM_DOCURL = file://${srcdir}/doc" >> config.mk + echo 'TIFFLIB = libtiff.so' >> config.mk + echo 'JPEGLIB = libjpeg.so' >> config.mk + echo 'PNGLIB = libpng.so' >> config.mk + echo 'ZLIB = libz.so' >> config.mk + + sed -i 's|misc|share/netpbm|' common.mk + sed -i 's|/link|/lib|' lib/Makefile + sed -i 's|install.manweb install.man|install.man|' GNUmakefile + + make + + # Generating useful man pages with html doc + cd "${srcdir}/doc" + make MAKEMAN="${srcdir}/advanced/buildtools/makeman" USERGUIDE=. \ + -f "${srcdir}/advanced/buildtools/manpage.mk" manpages +} + +package() { + cd "${srcdir}/advanced" + make pkgdir="${pkgdir}/usr" PKGMANDIR=share/man install-run install-dev + +# Removing dummy man pages + rm "${pkgdir}"/usr/share/man/man{1,3,5}/* + + cd "${srcdir}/doc" + make MAKEMAN="${srcdir}/advanced/buildtools/makeman" MANDIR="${pkgdir}/usr/share/man" \ + -f "${srcdir}/advanced/buildtools/manpage.mk" installman + +# Replace obsolete utility + echo -e '#!/bin/sh\npamditherbw $@ | pamtopnm\n' > "${pkgdir}/usr/bin/pgmtopbm" + +# Licensing. Note that each program in the package has a separate license. + install -D -m644 "${srcdir}/advanced/doc/copyright_summary" \ + "${pkgdir}/usr/share/licenses/${pkgname}/copyright_summary.txt" +} diff --git a/staging/netpbm/netpbm-CAN-2005-2471.patch b/staging/netpbm/netpbm-CAN-2005-2471.patch new file mode 100644 index 000000000..3759d7ebe --- /dev/null +++ b/staging/netpbm/netpbm-CAN-2005-2471.patch @@ -0,0 +1,16 @@ +--- netpbm-10.29/converter/other/pstopnm.c.CAN-2005-2471 2005-08-15 02:39:46.000000000 +0200 ++++ netpbm-10.29/converter/other/pstopnm.c 2005-08-16 15:38:15.000000000 +0200 +@@ -711,11 +711,11 @@ + ghostscriptProg, arg0, + deviceopt, outfileopt, gopt, ropt, textalphabitsopt, + "-q", "-dNOPAUSE", +- "-dSAFER", "-"); ++ "-dPARANOIDSAFER", "-"); + } + + execl(ghostscriptProg, arg0, deviceopt, outfileopt, gopt, ropt, "-q", +- "-dNOPAUSE", "-dSAFER", "-", NULL); ++ "-dNOPAUSE", "-dPARANOIDSAFER", "-", NULL); + + pm_error("execl() of Ghostscript ('%s') failed, errno=%d (%s)", + ghostscriptProg, errno, strerror(errno)); diff --git a/staging/netpbm/netpbm-security-code.patch b/staging/netpbm/netpbm-security-code.patch new file mode 100644 index 000000000..da67a8f92 --- /dev/null +++ b/staging/netpbm/netpbm-security-code.patch @@ -0,0 +1,1668 @@ +diff -up netpbm-10.47.04/analyzer/pgmtexture.c.security netpbm-10.47.04/analyzer/pgmtexture.c +--- netpbm-10.47.04/analyzer/pgmtexture.c.security 2009-10-21 13:38:55.000000000 +0200 ++++ netpbm-10.47.04/analyzer/pgmtexture.c 2009-10-21 15:09:33.000000000 +0200 +@@ -79,6 +79,9 @@ vector (int nl, int nh) + { + float *v; + ++ if(nh < nl) ++ pm_error("assert: h < l"); ++ overflow_add(nh - nl, 1); + MALLOCARRAY(v, (unsigned) (nh - nl + 1)); + if (v == NULL) + pm_error("Unable to allocate memory for a vector."); +@@ -95,6 +98,9 @@ matrix (int nrl, int nrh, int ncl, int n + float **m; + + /* allocate pointers to rows */ ++ if(nrh < nrl) ++ pm_error("assert: h < l"); ++ overflow_add(nrh - nrl, 1); + MALLOCARRAY(m, (unsigned) (nrh - nrl + 1)); + if (m == NULL) + pm_error("Unable to allocate memory for a matrix."); +@@ -102,6 +108,9 @@ matrix (int nrl, int nrh, int ncl, int n + assert (nch >= ncl); + + /* allocate rows and set pointers to them */ ++ if(nch < ncl) ++ pm_error("assert: h < l"); ++ overflow_add(nch - ncl, 1); + for (i = nrl; i <= nrh; ++i) { + MALLOCARRAY(m[i], (unsigned) (nch - ncl + 1)); + if (m[i] == NULL) +diff -up netpbm-10.47.04/converter/other/gemtopnm.c.security netpbm-10.47.04/converter/other/gemtopnm.c +--- netpbm-10.47.04/converter/other/gemtopnm.c.security 2009-10-21 13:39:06.000000000 +0200 ++++ netpbm-10.47.04/converter/other/gemtopnm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -106,6 +106,7 @@ main(argc, argv) + + pnm_writepnminit( stdout, cols, rows, MAXVAL, type, 0 ); + ++ overflow_add(cols, padright); + { + /* allocate input row data structure */ + int plane; +diff -up netpbm-10.47.04/converter/other/jpegtopnm.c.security netpbm-10.47.04/converter/other/jpegtopnm.c +--- netpbm-10.47.04/converter/other/jpegtopnm.c.security 2009-10-21 13:39:06.000000000 +0200 ++++ netpbm-10.47.04/converter/other/jpegtopnm.c 2009-10-21 15:54:30.000000000 +0200 +@@ -861,6 +861,8 @@ convertImage(FILE * + /* Calculate output image dimensions so we can allocate space */ + jpeg_calc_output_dimensions(cinfoP); + ++ overflow2(cinfoP->output_width, cinfoP->output_components); ++ + /* Start decompressor */ + jpeg_start_decompress(cinfoP); + +diff -up netpbm-10.47.04/converter/other/pbmtopgm.c.security netpbm-10.47.04/converter/other/pbmtopgm.c +--- netpbm-10.47.04/converter/other/pbmtopgm.c.security 2009-10-21 13:39:06.000000000 +0200 ++++ netpbm-10.47.04/converter/other/pbmtopgm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -47,6 +47,7 @@ main(int argc, char *argv[]) { + "than the image height (%u rows)", height, rows); + + outrow = pgm_allocrow(cols) ; ++ overflow2(width, height); + maxval = MIN(PGM_OVERALLMAXVAL, width*height); + pgm_writepgminit(stdout, cols, rows, maxval, 0) ; + +diff -up netpbm-10.47.04/converter/other/pngtopnm.c.security netpbm-10.47.04/converter/other/pngtopnm.c +diff -up netpbm-10.47.04/converter/other/pnmtoddif.c.security netpbm-10.47.04/converter/other/pnmtoddif.c +--- netpbm-10.47.04/converter/other/pnmtoddif.c.security 2009-10-21 13:39:06.000000000 +0200 ++++ netpbm-10.47.04/converter/other/pnmtoddif.c 2009-10-21 15:09:33.000000000 +0200 +@@ -632,6 +632,7 @@ main(int argc, char *argv[]) { + switch (PNM_FORMAT_TYPE(format)) { + case PBM_TYPE: + ip.bits_per_pixel = 1; ++ overflow_add(cols, 7); + ip.bytes_per_line = (cols + 7) / 8; + ip.spectral = 2; + ip.components = 1; +@@ -647,6 +648,7 @@ main(int argc, char *argv[]) { + ip.polarity = 2; + break; + case PPM_TYPE: ++ overflow2(cols, 3); + ip.bytes_per_line = 3 * cols; + ip.bits_per_pixel = 24; + ip.spectral = 5; +diff -up netpbm-10.47.04/converter/other/pnmtojpeg.c.security netpbm-10.47.04/converter/other/pnmtojpeg.c +--- netpbm-10.47.04/converter/other/pnmtojpeg.c.security 2009-10-21 13:39:06.000000000 +0200 ++++ netpbm-10.47.04/converter/other/pnmtojpeg.c 2009-10-21 15:56:32.000000000 +0200 +@@ -605,7 +605,11 @@ read_scan_script(j_compress_ptr const ci + want JPOOL_PERMANENT. + */ + const unsigned int scan_info_size = nscans * sizeof(jpeg_scan_info); +- jpeg_scan_info * const scan_info = ++ const jpeg_scan_info * scan_info; ++ ++ overflow2(nscans, sizeof(jpeg_scan_info)); ++ ++ scan_info = + (jpeg_scan_info *) + (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE, + scan_info_size); +@@ -936,6 +940,8 @@ compute_rescaling_array(JSAMPLE ** const + const long half_maxval = maxval / 2; + long val; + ++ overflow_add(maxval, 1); ++ overflow2(maxval+1, sizeof(JSAMPLE)); + *rescale_p = (JSAMPLE *) + (cinfo.mem->alloc_small) ((j_common_ptr) &cinfo, JPOOL_IMAGE, + (size_t) (((long) maxval + 1L) * +@@ -1014,6 +1020,7 @@ convert_scanlines(struct jpeg_compress_s + */ + + /* Allocate the libpnm output and compressor input buffers */ ++ overflow2(cinfo_p->image_width, cinfo_p->input_components); + buffer = (*cinfo_p->mem->alloc_sarray) + ((j_common_ptr) cinfo_p, JPOOL_IMAGE, + (unsigned int) cinfo_p->image_width * cinfo_p->input_components, +diff -up netpbm-10.47.04/converter/other/pnmtosgi.c.security netpbm-10.47.04/converter/other/pnmtosgi.c +--- netpbm-10.47.04/converter/other/pnmtosgi.c.security 2009-10-21 13:39:06.000000000 +0200 ++++ netpbm-10.47.04/converter/other/pnmtosgi.c 2009-10-21 15:09:33.000000000 +0200 +@@ -213,6 +213,22 @@ write_channels(cols, rows, channels, put + } + } + ++static void * ++xmalloc2(int x, int y) ++{ ++ void *mem; ++ ++ overflow2(x,y); ++ if( x * y == 0 ) ++ return NULL; ++ ++ mem = malloc2(x, y); ++ if( mem == NULL ) ++ pm_error("out of memory allocating %d bytes", x * y); ++ return mem; ++} ++ ++ + static void + put_big_short(short s) + { +@@ -250,6 +266,7 @@ build_channels(FILE *ifp, int cols, int + #endif + + if( storage != STORAGE_VERBATIM ) { ++ overflow2(channels, rows); + MALLOCARRAY_NOFAIL(table, channels * rows); + MALLOCARRAY_NOFAIL(rletemp, WORSTCOMPR(cols)); + } +@@ -303,6 +320,8 @@ compress(temp, row, rows, cols, chan_no, + break; + case STORAGE_RLE: + tabrow = chan_no * rows + row; ++ overflow2(chan_no, rows); ++ overflow_add(chan_no* rows, row); + len = rle_compress(temp, cols); /* writes result into rletemp */ + channel[chan_no][row].length = len; + MALLOCARRAY(p, len); +diff -up netpbm-10.47.04/converter/other/rletopnm.c.security netpbm-10.47.04/converter/other/rletopnm.c +--- netpbm-10.47.04/converter/other/rletopnm.c.security 2009-10-21 13:39:06.000000000 +0200 ++++ netpbm-10.47.04/converter/other/rletopnm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -19,6 +19,8 @@ + * If you modify this software, you should include a notice giving the + * name of the person performing the modification, the date of modification, + * and the reason for such modification. ++ * ++ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com> + */ + /* + * rletopnm - A conversion program to convert from Utah's "rle" image format +diff -up netpbm-10.47.04/converter/other/sgitopnm.c.security netpbm-10.47.04/converter/other/sgitopnm.c +--- netpbm-10.47.04/converter/other/sgitopnm.c.security 2009-10-21 13:39:06.000000000 +0200 ++++ netpbm-10.47.04/converter/other/sgitopnm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -252,10 +252,14 @@ read_channels(ifp, head, table, func, oc + MALLOCARRAY_NOFAIL(image, head->ysize); + } else { + maxchannel = MIN(3, head->zsize); ++ overflow2(head->ysize, maxchannel); + MALLOCARRAY_NOFAIL(image, head->ysize * maxchannel); + } +- if (table) ++ if (table) { ++ overflow2(head->xsize, 2); ++ overflow_add(head->xsize*2, 2); + MALLOCARRAY_NOFAIL(temp, WORSTCOMPR(head->xsize)); ++ } + + for(channel = 0; channel < maxchannel; ++channel) { + unsigned int row; +diff -up netpbm-10.47.04/converter/other/sirtopnm.c.security netpbm-10.47.04/converter/other/sirtopnm.c +--- netpbm-10.47.04/converter/other/sirtopnm.c.security 2009-10-21 13:39:06.000000000 +0200 ++++ netpbm-10.47.04/converter/other/sirtopnm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -69,6 +69,7 @@ char* argv[]; + } + break; + case PPM_TYPE: ++ overflow3(cols, rows, 3); + picsize = cols * rows * 3; + planesize = cols * rows; + if ( !( sirarray = (unsigned char*) malloc( picsize ) ) ) +diff -up netpbm-10.47.04/converter/other/tifftopnm.c.security netpbm-10.47.04/converter/other/tifftopnm.c +--- netpbm-10.47.04/converter/other/tifftopnm.c.security 2009-10-21 13:39:06.000000000 +0200 ++++ netpbm-10.47.04/converter/other/tifftopnm.c 2009-10-21 15:49:29.000000000 +0200 +@@ -1291,7 +1291,9 @@ convertRasterByRows(pnmOut * const + if (scanbuf == NULL) + pm_error("can't allocate memory for scanline buffer"); + +- MALLOCARRAY(samplebuf, cols * spp); ++ /* samplebuf is unsigned int * !!! */ ++ samplebuf = (unsigned int *) malloc3(cols , sizeof(unsigned int) , spp); ++ + if (samplebuf == NULL) + pm_error("can't allocate memory for row buffer"); + +diff -up netpbm-10.47.04/converter/other/xwdtopnm.c.security netpbm-10.47.04/converter/other/xwdtopnm.c +--- netpbm-10.47.04/converter/other/xwdtopnm.c.security 2009-10-21 13:39:06.000000000 +0200 ++++ netpbm-10.47.04/converter/other/xwdtopnm.c 2009-10-21 15:53:27.000000000 +0200 +@@ -209,6 +209,10 @@ processX10Header(X10WDFileHeader * cons + *colorsP = pnm_allocrow(2); + PNM_ASSIGN1((*colorsP)[0], 0); + PNM_ASSIGN1((*colorsP)[1], *maxvalP); ++ overflow_add(h10P->pixmap_width, 15); ++ if(h10P->pixmap_width < 0) ++ pm_error("assert: negative width"); ++ overflow2((((h10P->pixmap_width + 15) / 16) * 16 - h10P->pixmap_width), 8); + *padrightP = + (((h10P->pixmap_width + 15) / 16) * 16 - h10P->pixmap_width) * 8; + *bits_per_itemP = 16; +@@ -634,6 +638,7 @@ processX11Header(X11WDFileHeader * cons + + *colsP = h11FixedP->pixmap_width; + *rowsP = h11FixedP->pixmap_height; ++ overflow2(h11FixedP->bytes_per_line, 8); + *padrightP = + h11FixedP->bytes_per_line * 8 - + h11FixedP->pixmap_width * h11FixedP->bits_per_pixel; +diff -up netpbm-10.47.04/converter/other/sunicontopnm.c.security netpbm-10.47.04/converter/other/sunicontopnm.c +--- netpbm-10.47.04/converter/other/sunicontopnm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/other/sunicontopnm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -11,6 +11,7 @@ + */ + + #include <string.h> ++#include <limits.h> + + #include "nstring.h" + #include "pbm.h" +@@ -87,6 +88,11 @@ ReadIconFile(FILE * const + if (*heightP <= 0) + pm_error("invalid height (must be positive): %d", *heightP); + ++ if ( *widthP > INT_MAX - 16 || *widthP < 0) ++ pm_error( "invalid width: %d", *widthP); ++ ++ overflow2(*widthP + 16, *heightP); ++ + } + + +diff -up netpbm-10.47.04/converter/pbm/mdatopbm.c.security netpbm-10.47.04/converter/pbm/mdatopbm.c +--- netpbm-10.47.04/converter/pbm/mdatopbm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/mdatopbm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -245,10 +245,13 @@ main(int argc, char **argv) { + pm_readlittleshort(infile, &yy); nInCols = yy; + } + ++ overflow2(nOutCols, 8); + nOutCols = 8 * nInCols; + nOutRows = nInRows; +- if (bScale) ++ if (bScale) { ++ overflow2(nOutRows, 2); + nOutRows *= 2; ++ } + + data = pbm_allocarray(nOutCols, nOutRows); + +diff -up netpbm-10.47.04/converter/pbm/mgrtopbm.c.security netpbm-10.47.04/converter/pbm/mgrtopbm.c +--- netpbm-10.47.04/converter/pbm/mgrtopbm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/mgrtopbm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -65,6 +65,8 @@ readMgrHeader(FILE * const ifP, + if (head.h_high < ' ' || head.l_high < ' ') + pm_error("Invalid width field in MGR header"); + ++ overflow_add(*colsP, pad); ++ + *colsP = (((int)head.h_wide - ' ') << 6) + ((int)head.l_wide - ' '); + *rowsP = (((int)head.h_high - ' ') << 6) + ((int) head.l_high - ' '); + *padrightP = ( ( *colsP + pad - 1 ) / pad ) * pad - *colsP; +diff -up netpbm-10.47.04/converter/pbm/pbmto10x.c.security netpbm-10.47.04/converter/pbm/pbmto10x.c +--- netpbm-10.47.04/converter/pbm/pbmto10x.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/pbmto10x.c 2009-10-21 15:09:33.000000000 +0200 +@@ -162,7 +162,7 @@ main(int argc, char * argv[]) { + res_60x72(); + + pm_close(ifp); +- exit(0); ++ return 0; + } + + +diff -up netpbm-10.47.04/converter/pbm/pbmto4425.c.security netpbm-10.47.04/converter/pbm/pbmto4425.c +--- netpbm-10.47.04/converter/pbm/pbmto4425.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/pbmto4425.c 2009-10-21 15:09:33.000000000 +0200 +@@ -2,6 +2,7 @@ + + #include "nstring.h" + #include "pbm.h" ++#include <string.h> + + static char bit_table[2][3] = { + {1, 4, 0x10}, +@@ -160,7 +161,7 @@ main(int argc, char * argv[]) { + xres = vmap_width * 2; + yres = vmap_height * 3; + +- vmap = malloc(vmap_width * vmap_height * sizeof(char)); ++ vmap = malloc3(vmap_width, vmap_height, sizeof(char)); + if(vmap == NULL) + { + pm_error( "Cannot allocate memory" ); +diff -up netpbm-10.47.04/converter/pbm/pbmtogem.c.security netpbm-10.47.04/converter/pbm/pbmtogem.c +--- netpbm-10.47.04/converter/pbm/pbmtogem.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/pbmtogem.c 2009-10-21 15:09:33.000000000 +0200 +@@ -123,6 +123,7 @@ putinit (rows, cols) + bitsperitem = 0; + bitshift = 7; + outcol = 0; ++ overflow_add(cols, 7); + outmax = (cols + 7) / 8; + outrow = (unsigned char *) pm_allocrow (outmax, sizeof (unsigned char)); + lastrow = (unsigned char *) pm_allocrow (outmax, sizeof (unsigned char)); +diff -up netpbm-10.47.04/converter/pbm/pbmtogo.c.security netpbm-10.47.04/converter/pbm/pbmtogo.c +--- netpbm-10.47.04/converter/pbm/pbmtogo.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/pbmtogo.c 2009-10-21 15:09:33.000000000 +0200 +@@ -158,6 +158,7 @@ main(int argc, + bitrow = pbm_allocrow(cols); + + /* Round cols up to the nearest multiple of 8. */ ++ overflow_add(cols, 7); + rucols = ( cols + 7 ) / 8; + bytesperrow = rucols; /* GraphOn uses bytes */ + rucols = rucols * 8; +diff -up netpbm-10.47.04/converter/pbm/pbmtolj.c.security netpbm-10.47.04/converter/pbm/pbmtolj.c +--- netpbm-10.47.04/converter/pbm/pbmtolj.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/pbmtolj.c 2009-10-21 15:09:33.000000000 +0200 +@@ -120,7 +120,11 @@ parseCommandLine(int argc, char ** argv, + static void + allocateBuffers(unsigned int const cols) { + ++ overflow_add(cols, 8); + rowBufferSize = (cols + 7) / 8; ++ overflow_add(rowBufferSize, 128); ++ overflow_add(rowBufferSize, rowBufferSize+128); ++ overflow_add(rowBufferSize+10, rowBufferSize/8); + packBufferSize = rowBufferSize + (rowBufferSize + 127) / 128 + 1; + deltaBufferSize = rowBufferSize + rowBufferSize / 8 + 10; + +diff -up netpbm-10.47.04/converter/pbm/pbmtomacp.c.security netpbm-10.47.04/converter/pbm/pbmtomacp.c +--- netpbm-10.47.04/converter/pbm/pbmtomacp.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/pbmtomacp.c 2009-10-21 15:09:33.000000000 +0200 +@@ -101,6 +101,7 @@ char *argv[]; + if( !lflg ) + left = 0; + ++ overflow_add(left, MAX_COLS - 1); + if( rflg ) + { if( right - left >= MAX_COLS ) + right = left + MAX_COLS - 1; +@@ -111,6 +112,8 @@ char *argv[]; + if( !tflg ) + top = 0; + ++ overflow_add(top, MAX_LINES - 1); ++ + if( bflg ) + { if( bottom - top >= MAX_LINES ) + bottom = top + MAX_LINES - 1; +diff -up netpbm-10.47.04/converter/pbm/pbmtomda.c.security netpbm-10.47.04/converter/pbm/pbmtomda.c +--- netpbm-10.47.04/converter/pbm/pbmtomda.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/pbmtomda.c 2009-10-21 15:09:33.000000000 +0200 +@@ -179,6 +179,7 @@ int main(int argc, char **argv) + + nOutRowsUnrounded = bScale ? nInRows/2 : nInRows; + ++ overflow_add(nOutRowsUnrounded, 3); + nOutRows = ((nOutRowsUnrounded + 3) / 4) * 4; + /* MDA wants rows a multiple of 4 */ + nOutCols = nInCols / 8; +diff -up netpbm-10.47.04/converter/pbm/pbmtomgr.c.security netpbm-10.47.04/converter/pbm/pbmtomgr.c +diff -up netpbm-10.47.04/converter/pbm/pbmtoppa/pbm.c.security netpbm-10.47.04/converter/pbm/pbmtoppa/pbm.c +--- netpbm-10.47.04/converter/pbm/pbmtoppa/pbm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/pbmtoppa/pbm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -105,6 +105,7 @@ int pbm_readline(pbm_stat* pbm,unsigned + return 0; + + case P4: ++ overflow_add(pbm->width, 7); + tmp=(pbm->width+7)/8; + tmp2=fread(data,1,tmp,pbm->fptr); + if(tmp2 == tmp) +@@ -129,7 +130,8 @@ void pbm_unreadline (pbm_stat *pbm, void + return; + + pbm->unread = 1; +- pbm->revdata = malloc ((pbm->width+7)/8); ++ overflow_add(pbm->width, 7); ++ pbm->revdata = malloc((pbm->width+7)/8); + memcpy (pbm->revdata, data, (pbm->width+7)/8); + pbm->current_line--; + } +diff -up netpbm-10.47.04/converter/pbm/pbmtoppa/pbmtoppa.c.security netpbm-10.47.04/converter/pbm/pbmtoppa/pbmtoppa.c +--- netpbm-10.47.04/converter/pbm/pbmtoppa/pbmtoppa.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/pbmtoppa/pbmtoppa.c 2009-10-21 15:09:33.000000000 +0200 +@@ -441,6 +441,7 @@ main(int argc, char *argv[]) { + pm_error("main(): unrecognized parameter '%s'", argv[argn]); + } + ++ overflow_add(Width, 7); + Pwidth=(Width+7)/8; + printer.fptr=out; + +diff -up netpbm-10.47.04/converter/pbm/pbmtoxbm.c.security netpbm-10.47.04/converter/pbm/pbmtoxbm.c +--- netpbm-10.47.04/converter/pbm/pbmtoxbm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/pbmtoxbm.c 2009-10-21 15:36:54.000000000 +0200 +@@ -335,6 +335,8 @@ convertRaster(FILE * const ifP, + + unsigned char * bitrow; + unsigned int row; ++ ++ overflow_add(cols, padright); + + putinit(xbmVersion); + +diff -up netpbm-10.47.04/converter/pbm/pbmtoybm.c.security netpbm-10.47.04/converter/pbm/pbmtoybm.c +--- netpbm-10.47.04/converter/pbm/pbmtoybm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/pbmtoybm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -45,6 +45,7 @@ main( argc, argv ) + bitrow = pbm_allocrow(cols); + + /* Compute padding to round cols up to the nearest multiple of 16. */ ++ overflow_add(cols, 16); + padright = ((cols + 15) / 16) * 16 - cols; + + putinit(cols, rows); +diff -up netpbm-10.47.04/converter/pbm/pbmtozinc.c.security netpbm-10.47.04/converter/pbm/pbmtozinc.c +--- netpbm-10.47.04/converter/pbm/pbmtozinc.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/pbmtozinc.c 2009-10-21 15:09:33.000000000 +0200 +@@ -65,6 +65,7 @@ main(int argc, char * argv[]) { + bitrow = pbm_allocrow( cols ); + + /* Compute padding to round cols up to the nearest multiple of 16. */ ++ overflow_add(cols, 16); + padright = ( ( cols + 15 ) / 16 ) * 16 - cols; + + printf( "USHORT %s[] = {\n",name); +diff -up netpbm-10.47.04/converter/pbm/pktopbm.c.security netpbm-10.47.04/converter/pbm/pktopbm.c +--- netpbm-10.47.04/converter/pbm/pktopbm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/pktopbm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -277,6 +277,7 @@ main(int argc, char *argv[]) { + if (flagbyte == 7) { /* long form preamble */ + integer packetlength = get32() ; /* character packet length */ + car = get32() ; /* character number */ ++ overflow_add(packetlength, pktopbm_pkloc); + endofpacket = packetlength + pktopbm_pkloc; + /* calculate end of packet */ + if ((car >= MAXPKCHAR) || !filename[car]) { +diff -up netpbm-10.47.04/converter/pbm/thinkjettopbm.l.security netpbm-10.47.04/converter/pbm/thinkjettopbm.l +--- netpbm-10.47.04/converter/pbm/thinkjettopbm.l.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/thinkjettopbm.l 2009-10-21 15:09:33.000000000 +0200 +@@ -107,7 +107,9 @@ DIG [0-9] + <RASTERMODE>\033\*b{DIG}+W { + int l; + if (rowCount >= rowCapacity) { ++ overflow_add(rowCapacity, 100); + rowCapacity += 100; ++ overflow2(rowCapacity, sizeof *rows); + rows = realloc (rows, rowCapacity * sizeof *rows); + if (rows == NULL) + pm_error ("Out of memory."); +@@ -217,6 +219,8 @@ yywrap (void) + /* + * Quite simple since ThinkJet bit arrangement matches PBM + */ ++ ++ overflow2(maxRowLength, 8); + pbm_writepbminit(stdout, maxRowLength*8, rowCount, 0); + + packed_bitrow = malloc(maxRowLength); +diff -up netpbm-10.47.04/converter/pbm/ybmtopbm.c.security netpbm-10.47.04/converter/pbm/ybmtopbm.c +--- netpbm-10.47.04/converter/pbm/ybmtopbm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/pbm/ybmtopbm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -88,4 +88,5 @@ getinit( file, colsP, rowsP, depthP, pad + pm_error("EOF / read error"); + + *depthP = 1; ++ overflow_add(*colsP, 15); + *padrightP = ((*colsP + 15) / 16) * 16 - *colsP; +} + +diff -up netpbm-10.47.04/converter/pgm/lispmtopgm.c.security netpbm-10.47.04/converter/pgm/lispmtopgm.c +--- netpbm-10.47.04/converter/pgm/lispmtopgm.c.security 2009-10-21 13:39:06.000000000 +0200 ++++ netpbm-10.47.04/converter/pgm/lispmtopgm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -58,6 +58,7 @@ main( argc, argv ) + pm_error( "depth (%d bits) is too large", depth); + + pgm_writepgminit( stdout, cols, rows, (gray) maxval, 0 ); ++ overflow_add(cols, 7); + grayrow = pgm_allocrow( ( cols + 7 ) / 8 * 8 ); + + for ( row = 0; row < rows; ++row ) +@@ -102,7 +103,9 @@ getinit( file, colsP, rowsP, depthP, pad + + if ( *depthP == 0 ) + *depthP = 1; /* very old file */ +- ++ ++ overflow_add((int)colsP, 31); ++ + *padrightP = ( ( *colsP + 31 ) / 32 ) * 32 - *colsP; + + if ( *colsP != (cols_32 - *padrightP) ) { +diff -up netpbm-10.47.04/converter/pgm/psidtopgm.c.security netpbm-10.47.04/converter/pgm/psidtopgm.c +--- netpbm-10.47.04/converter/pgm/psidtopgm.c.security 2009-10-21 13:39:06.000000000 +0200 ++++ netpbm-10.47.04/converter/pgm/psidtopgm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -78,6 +78,7 @@ main(int argc, + pm_error("bits/sample (%d) is too large.", bitspersample); + + pgm_writepgminit(stdout, cols, rows, maxval, 0); ++ overflow_add(cols, 7); + grayrow = pgm_allocrow((cols + 7) / 8 * 8); + for (row = 0; row < rows; ++row) { + unsigned int col; +diff -up netpbm-10.47.04/converter/ppm/ilbmtoppm.c.security netpbm-10.47.04/converter/ppm/ilbmtoppm.c +--- netpbm-10.47.04/converter/ppm/ilbmtoppm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/ilbmtoppm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -594,6 +594,7 @@ decode_row(FILE * const ifP, + rawtype *chp; + + cols = bmhdP->w; ++ overflow_add(cols, 15); + bytes = RowBytes(cols); + for( plane = 0; plane < nPlanes; plane++ ) { + int mask; +@@ -681,6 +682,23 @@ decode_mask(FILE * const ifP, + Multipalette handling + ****************************************************************************/ + ++static void * ++xmalloc2(x, y) ++ int x; ++ int y; ++{ ++ void *mem; ++ ++ overflow2(x,y); ++ if( x * y == 0 ) ++ return NULL; ++ ++ mem = malloc2(x,y); ++ if( mem == NULL ) ++ pm_error("out of memory allocating %d bytes", x * y); ++ return mem; ++} ++ + + static void + multi_adjust(cmap, row, palchange) +@@ -1300,6 +1318,9 @@ dcol_to_ppm(FILE * const ifP, + if( redmaxval != maxval || greenmaxval != maxval || bluemaxval != maxval ) + pm_message("scaling colors to %d bits", pm_maxvaltobits(maxval)); + ++ overflow_add(redmaxval, 1); ++ overflow_add(greenmaxval, 1); ++ overflow_add(bluemaxval, 1); + MALLOCARRAY_NOFAIL(redtable, redmaxval +1); + MALLOCARRAY_NOFAIL(greentable, greenmaxval +1); + MALLOCARRAY_NOFAIL(bluetable, bluemaxval +1); +@@ -1729,7 +1750,9 @@ PCHG_ConvertSmall(PCHG, cmap, mask, data + ChangeCount32 = *data++; + datasize -= 2; + ++ overflow_add(ChangeCount16, ChangeCount32); + changes = ChangeCount16 + ChangeCount32; ++ overflow_add(changes, 1); + for( i = 0; i < changes; i++ ) { + if( totalchanges >= PCHG->TotalChanges ) goto fail; + if( datasize < 2 ) goto fail; +@@ -1994,6 +2017,9 @@ read_pchg(FILE * const ifp, + cmap->mp_change[i] = NULL; + if( PCHG.StartLine < 0 ) { + int nch; ++ if(PCHG.MaxReg < PCHG.MinReg) ++ pm_error("assert: MinReg > MaxReg"); ++ overflow_add(PCHG.MaxReg-PCHG.MinReg, 2); + nch = PCHG.MaxReg - PCHG.MinReg +1; + MALLOCARRAY_NOFAIL(cmap->mp_init, nch + 1); + for( i = 0; i < nch; i++ ) +@@ -2070,6 +2096,7 @@ process_body( FILE * const ifp, + if( typeid == ID_ILBM ) { + int isdeep; + ++ overflow_add(bmhdP->w, 15); + MALLOCARRAY_NOFAIL(ilbmrow, RowBytes(bmhdP->w)); + *viewportmodesP |= fakeviewport; /* -isham/-isehb */ + +diff -up netpbm-10.47.04/converter/ppm/imgtoppm.c.security netpbm-10.47.04/converter/ppm/imgtoppm.c +--- netpbm-10.47.04/converter/ppm/imgtoppm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/imgtoppm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -84,6 +84,7 @@ main(int argc, char ** argv) { + len = atoi((char*) buf ); + if ( fread( buf, len, 1, ifp ) != 1 ) + pm_error( "bad colormap buf" ); ++ overflow2(cmaplen, 3); + if ( cmaplen * 3 != len ) + { + pm_message( +@@ -105,6 +106,7 @@ main(int argc, char ** argv) { + pm_error( "bad pixel data header" ); + buf[8] = '\0'; + len = atoi((char*) buf ); ++ overflow2(cols, rows); + if ( len != cols * rows ) + pm_message( + "pixel data length (%d) does not match image size (%d)", +diff -up netpbm-10.47.04/converter/ppm/Makefile.security netpbm-10.47.04/converter/ppm/Makefile +--- netpbm-10.47.04/converter/ppm/Makefile.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/Makefile 2009-10-21 15:09:33.000000000 +0200 +@@ -11,7 +11,7 @@ SUBDIRS = hpcdtoppm ppmtompeg + + PORTBINARIES = 411toppm eyuvtoppm gouldtoppm ilbmtoppm imgtoppm \ + leaftoppm mtvtoppm neotoppm \ +- pcxtoppm pc1toppm pi1toppm picttoppm pjtoppm \ ++ pcxtoppm pc1toppm pi1toppm pjtoppm \ + ppmtoacad ppmtoapplevol ppmtoarbtxt ppmtoascii \ + ppmtobmp ppmtoeyuv ppmtogif ppmtoicr ppmtoilbm \ + ppmtoleaf ppmtolj ppmtomitsu ppmtoneo \ +diff -up netpbm-10.47.04/converter/ppm/pcxtoppm.c.security netpbm-10.47.04/converter/ppm/pcxtoppm.c +--- netpbm-10.47.04/converter/ppm/pcxtoppm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/pcxtoppm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -409,6 +409,7 @@ pcx_planes_to_pixels(pixels, bitplanes, + /* + * clear the pixel buffer + */ ++ overflow2(bytesperline, 8); + npixels = (bytesperline * 8) / bitsperpixel; + p = pixels; + while (--npixels >= 0) +@@ -470,6 +471,7 @@ pcx_16col_to_ppm(FILE * const ifP, + } + + /* BytesPerLine should be >= BitsPerPixel * cols / 8 */ ++ overflow2(BytesPerLine, 8); + rawcols = BytesPerLine * 8 / BitsPerPixel; + if (headerCols > rawcols) { + pm_message("warning - BytesPerLine = %d, " +diff -up netpbm-10.47.04/converter/ppm/picttoppm.c.security netpbm-10.47.04/converter/ppm/picttoppm.c +--- netpbm-10.47.04/converter/ppm/picttoppm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/picttoppm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -1,3 +1,5 @@ ++#error "Unfixable. Don't ship me" ++ + /* + * picttoppm.c -- convert a MacIntosh PICT file to PPM format. + * +diff -up netpbm-10.47.04/converter/ppm/pjtoppm.c.security netpbm-10.47.04/converter/ppm/pjtoppm.c +--- netpbm-10.47.04/converter/ppm/pjtoppm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/pjtoppm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -127,19 +127,21 @@ main(argc, argv) + case 'V': /* send plane */ + case 'W': /* send last plane */ + if (rows == -1 || r >= rows || image == NULL) { +- if (rows == -1 || r >= rows) ++ if (rows == -1 || r >= rows) { ++ overflow_add(rows, 100); + rows += 100; ++ } + if (image == NULL) { +- MALLOCARRAY(image, rows * planes); +- MALLOCARRAY(imlen, rows * planes); ++ image = (unsigned char **) ++ malloc3(rows , planes , sizeof(unsigned char *)); ++ imlen = (int *) malloc3(rows , planes, sizeof(int)); + } + else { ++ overflow2(rows,planes); + image = (unsigned char **) +- realloc(image, +- rows * planes * ++ realloc2(image, rows * planes, + sizeof(unsigned char *)); +- imlen = (int *) +- realloc(imlen, rows * planes * sizeof(int)); ++ imlen = (int *) realloc2(imlen, rows * planes, sizeof(int)); + } + } + if (image == NULL || imlen == NULL) +@@ -212,8 +214,10 @@ main(argc, argv) + for (i = 0, c = 0; c < imlen[p + r * planes]; c += 2) + for (cmd = image[p + r * planes][c], + val = image[p + r * planes][c+1]; +- cmd >= 0 && i < newcols; cmd--, i++) ++ cmd >= 0 && i < newcols; cmd--, i++) { + buf[i] = val; ++ overflow_add(i, 1); ++ } + cols = cols > i ? cols : i; + free(image[p + r * planes]); + /* +@@ -224,6 +228,7 @@ main(argc, argv) + image[p + r * planes] = (unsigned char *) realloc(buf, i); + } + } ++ overflow2(cols, 8); + cols *= 8; + } + +diff -up netpbm-10.47.04/converter/ppm/ppmtoeyuv.c.security netpbm-10.47.04/converter/ppm/ppmtoeyuv.c +--- netpbm-10.47.04/converter/ppm/ppmtoeyuv.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/ppmtoeyuv.c 2009-10-21 15:09:33.000000000 +0200 +@@ -114,6 +114,7 @@ create_multiplication_tables(const pixva + + int index; + ++ overflow_add(maxval, 1); + MALLOCARRAY_NOFAIL(mult299 , maxval+1); + MALLOCARRAY_NOFAIL(mult587 , maxval+1); + MALLOCARRAY_NOFAIL(mult114 , maxval+1); +diff -up netpbm-10.47.04/converter/ppm/ppmtoicr.c.security netpbm-10.47.04/converter/ppm/ppmtoicr.c +--- netpbm-10.47.04/converter/ppm/ppmtoicr.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/ppmtoicr.c 2009-10-21 15:09:33.000000000 +0200 +@@ -169,7 +169,7 @@ char* argv[]; + + if (rleflag) { + pm_message("sending run-length encoded picture data ..." ); +- testimage = (char*) malloc(rows*cols); ++ testimage = (char*) malloc2(rows, cols); + p = testimage; + for (i=0; i<rows; i++) + for (j=0; j<cols; j++) +diff -up netpbm-10.47.04/converter/ppm/ppmtoilbm.c.security netpbm-10.47.04/converter/ppm/ppmtoilbm.c +--- netpbm-10.47.04/converter/ppm/ppmtoilbm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/ppmtoilbm.c 2009-10-21 15:47:50.000000000 +0200 +@@ -1214,6 +1214,7 @@ ppm_to_rgb8(ifP, cols, rows, maxval) + + maskmethod = 0; /* no masking - RGB8 uses genlock bits */ + compmethod = 4; /* RGB8 files are always compressed */ ++ overflow2(cols, 4); + MALLOCARRAY_NOFAIL(compr_row, cols * 4); + + if( maxval != 255 ) { +@@ -1302,6 +1303,7 @@ ppm_to_rgbn(ifP, cols, rows, maxval) + + maskmethod = 0; /* no masking - RGBN uses genlock bits */ + compmethod = 4; /* RGBN files are always compressed */ ++ overflow2(cols, 2); + MALLOCARRAY_NOFAIL(compr_row, cols * 2); + + if( maxval != 15 ) { +@@ -1779,6 +1781,7 @@ make_val_table(oldmaxval, newmaxval) + unsigned int i; + int * table; + ++ overflow_add(oldmaxval, 1); + MALLOCARRAY_NOFAIL(table, oldmaxval + 1); + for (i = 0; i <= oldmaxval; ++i) + table[i] = ROUNDDIV(i * newmaxval, oldmaxval); +@@ -2283,8 +2286,11 @@ main(int argc, char ** argv) { + MALLOCARRAY_NOFAIL(coded_rowbuf, RowBytes(cols)); + for (i = 0; i < RowBytes(cols); ++i) + coded_rowbuf[i] = 0; +- if (DO_COMPRESS) ++ if (DO_COMPRESS) { ++ overflow2(cols,2); ++ overflow_add(cols*2,2); + MALLOCARRAY_NOFAIL(compr_rowbuf, WORSTCOMPR(RowBytes(cols))); ++ } + } + + switch (mode) { +diff -up netpbm-10.47.04/converter/ppm/ppmtolj.c.security netpbm-10.47.04/converter/ppm/ppmtolj.c +--- netpbm-10.47.04/converter/ppm/ppmtolj.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/ppmtolj.c 2009-10-21 15:09:33.000000000 +0200 +@@ -181,7 +181,8 @@ int main(int argc, char *argv[]) { + + ppm_readppminit( ifp, &cols, &rows, &maxval, &format ); + pixelrow = ppm_allocrow( cols ); +- ++ ++ overflow2(cols, 6); + obuf = (unsigned char *) pm_allocrow(cols * 3, sizeof(unsigned char)); + cbuf = (unsigned char *) pm_allocrow(cols * 6, sizeof(unsigned char)); + if (mode == C_TRANS_MODE_DELTA) +diff -up netpbm-10.47.04/converter/ppm/ppmtomitsu.c.security netpbm-10.47.04/converter/ppm/ppmtomitsu.c +--- netpbm-10.47.04/converter/ppm/ppmtomitsu.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/ppmtomitsu.c 2009-10-21 15:48:30.000000000 +0200 +@@ -685,6 +685,8 @@ main(int argc, char * argv[]) { + medias = MSize_User; + + if (dpi300) { ++ overflow2(medias.maxcols, 2); ++ overflow2(medias.maxrows, 2); + medias.maxcols *= 2; + medias.maxrows *= 2; + } +diff -up netpbm-10.47.04/converter/ppm/ppmtopcx.c.security netpbm-10.47.04/converter/ppm/ppmtopcx.c +--- netpbm-10.47.04/converter/ppm/ppmtopcx.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/ppmtopcx.c 2009-10-21 15:09:33.000000000 +0200 +@@ -419,6 +419,8 @@ ppmTo16ColorPcx(pixel ** cons + else Planes = 1; + } + } ++ overflow2(BitsPerPixel, cols); ++ overflow_add(BitsPerPixel * cols, 7); + BytesPerLine = ((cols * BitsPerPixel) + 7) / 8; + MALLOCARRAY_NOFAIL(indexRow, cols); + MALLOCARRAY_NOFAIL(planesrow, BytesPerLine); +diff -up netpbm-10.47.04/converter/ppm/ppmtopict.c.security netpbm-10.47.04/converter/ppm/ppmtopict.c +--- netpbm-10.47.04/converter/ppm/ppmtopict.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/ppmtopict.c 2009-10-21 15:09:33.000000000 +0200 +@@ -245,6 +245,8 @@ char *argv[]; + putShort(stdout, 0); /* mode */ + + /* Finally, write out the data. */ ++ overflow_add(cols/MAX_COUNT, 1); ++ overflow_add(cols, cols/MAX_COUNT+1); + packed = malloc((unsigned)(cols+cols/MAX_COUNT+1)); + for (row = 0, oc = 0; row < rows; row++) + oc += putRow(stdout, row, cols, pixels[row], packed); +diff -up netpbm-10.47.04/converter/ppm/ppmtopj.c.security netpbm-10.47.04/converter/ppm/ppmtopj.c +--- netpbm-10.47.04/converter/ppm/ppmtopj.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/ppmtopj.c 2009-10-21 15:09:33.000000000 +0200 +@@ -179,6 +179,7 @@ char *argv[]; + pixels = ppm_readppm( ifp, &cols, &rows, &maxval ); + + pm_close( ifp ); ++ overflow2(cols,2); + obuf = (unsigned char *) pm_allocrow(cols, sizeof(unsigned char)); + cbuf = (unsigned char *) pm_allocrow(cols * 2, sizeof(unsigned char)); + +diff -up netpbm-10.47.04/converter/ppm/ppmtopjxl.c.security netpbm-10.47.04/converter/ppm/ppmtopjxl.c +--- netpbm-10.47.04/converter/ppm/ppmtopjxl.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/ppmtopjxl.c 2009-10-21 15:43:31.000000000 +0200 +@@ -276,6 +276,8 @@ main(int argc, const char * argv[]) { + pm_error("image too large; reduce with ppmscale"); + if (maxval > PCL_MAXVAL) + pm_error("color range too large; reduce with ppmcscale"); ++ if (cols < 0 || rows < 0) ++ pm_error("negative size is not possible"); + + /* Figure out the colormap. */ + pm_message("Computing colormap..."); +@@ -296,6 +298,8 @@ main(int argc, const char * argv[]) { + case 0: /* direct mode (no palette) */ + bpp = bitsperpixel(maxval); /* bits per pixel */ + bpg = bpp; bpb = bpp; ++ overflow2(bpp, 3); ++ overflow_add(bpp*3, 7); + bpp = (bpp*3+7)>>3; /* bytes per pixel now */ + bpr = (bpp<<3)-bpg-bpb; + bpp *= cols; /* bytes per row now */ +@@ -305,9 +309,13 @@ main(int argc, const char * argv[]) { + case 3: case 7: pclindex++; + default: + bpp = 8/pclindex; ++ overflow_add(cols, bpp); ++ if(bpp == 0) ++ pm_error("assert: no bpp"); + bpp = (cols+bpp-1)/bpp; /* bytes per row */ + } + } ++ overflow2(bpp,2); + inrow = (char *)malloc((unsigned)bpp); + outrow = (char *)malloc((unsigned)bpp*2); + runcnt = (signed char *)malloc((unsigned)bpp); +diff -up netpbm-10.47.04/converter/ppm/ppmtowinicon.c.security netpbm-10.47.04/converter/ppm/ppmtowinicon.c +--- netpbm-10.47.04/converter/ppm/ppmtowinicon.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/ppmtowinicon.c 2009-10-21 15:44:54.000000000 +0200 +@@ -12,6 +12,7 @@ + + #include <math.h> + #include <string.h> ++#include <stdlib.h> + + #include "pm_c_util.h" + #include "winico.h" +@@ -219,6 +220,7 @@ createAndBitmap (gray ** const ba, int c + MALLOCARRAY_NOFAIL(rowData, rows); + icBitmap->xBytes = xBytes; + icBitmap->data = rowData; ++ overflow2(xBytes, rows); + icBitmap->size = xBytes * rows; + for (y=0;y<rows;y++) { + u1 * row; +@@ -347,6 +349,7 @@ create4Bitmap (pixel ** const pa, int co + MALLOCARRAY_NOFAIL(rowData, rows); + icBitmap->xBytes = xBytes; + icBitmap->data = rowData; ++ overflow2(xBytes, rows); + icBitmap->size = xBytes * rows; + + for (y=0;y<rows;y++) { +@@ -407,6 +410,7 @@ create8Bitmap (pixel ** const pa, int co + MALLOCARRAY_NOFAIL(rowData, rows); + icBitmap->xBytes = xBytes; + icBitmap->data = rowData; ++ overflow2(xBytes, rows); + icBitmap->size = xBytes * rows; + + for (y=0;y<rows;y++) { +@@ -714,6 +718,10 @@ addEntryToIcon(MS_Ico const MSIcon + entry->bitcount = bpp; + entry->ih = createInfoHeader(entry, xorBitmap, andBitmap); + entry->colors = palette->colors; ++ overflow2(4, entry->color_count); ++ overflow_add(xorBitmap->size, andBitmap->size); ++ overflow_add(xorBitmap->size + andBitmap->size, 40); ++ overflow_add(xorBitmap->size + andBitmap->size + 40, 4 * entry->color_count); + entry->size_in_bytes = + xorBitmap->size + andBitmap->size + 40 + (4 * entry->color_count); + if (verbose) +diff -up netpbm-10.47.04/converter/ppm/ppmtoxpm.c.security netpbm-10.47.04/converter/ppm/ppmtoxpm.c +--- netpbm-10.47.04/converter/ppm/ppmtoxpm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/ppmtoxpm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -197,6 +197,7 @@ genNumstr(unsigned int const input, int + unsigned int i; + + /* Allocate memory for printed number. Abort if error. */ ++ overflow_add(digits, 1); + if (!(str = (char *) malloc(digits + 1))) + pm_error("out of memory"); + +@@ -314,6 +315,7 @@ genCmap(colorhist_vector const chv, + unsigned int charsPerPixel; + unsigned int xpmMaxval; + ++ if (includeTransparent) overflow_add(ncolors, 1); + MALLOCARRAY(cmap, cmapSize); + if (cmapP == NULL) + pm_error("Out of memory allocating %u bytes for a color map.", +diff -up netpbm-10.47.04/converter/ppm/qrttoppm.c.security netpbm-10.47.04/converter/ppm/qrttoppm.c +--- netpbm-10.47.04/converter/ppm/qrttoppm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/qrttoppm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -46,7 +46,7 @@ main( argc, argv ) + + ppm_writeppminit( stdout, cols, rows, maxval, 0 ); + pixelrow = ppm_allocrow( cols ); +- buf = (unsigned char *) malloc( 3 * cols ); ++ buf = (unsigned char *) malloc2( 3 , cols ); + if ( buf == (unsigned char *) 0 ) + pm_error( "out of memory" ); + +diff -up netpbm-10.47.04/converter/ppm/sldtoppm.c.security netpbm-10.47.04/converter/ppm/sldtoppm.c +--- netpbm-10.47.04/converter/ppm/sldtoppm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/sldtoppm.c 2009-10-21 15:44:11.000000000 +0200 +@@ -455,6 +455,8 @@ slider(slvecfn slvec, + + /* Allocate image buffer and clear it to black. */ + ++ overflow_add(ixdots,1); ++ overflow_add(iydots,1); + pixels = ppm_allocarray(pixcols = ixdots + 1, pixrows = iydots + 1); + PPM_ASSIGN(rgbcolor, 0, 0, 0); + ppmd_filledrectangle(pixels, pixcols, pixrows, pixmaxval, 0, 0, +diff -up netpbm-10.47.04/converter/ppm/ximtoppm.c.security netpbm-10.47.04/converter/ppm/ximtoppm.c +--- netpbm-10.47.04/converter/ppm/ximtoppm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/ximtoppm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -117,6 +117,7 @@ ReadXimHeader(FILE * const in_fp, + header->bits_channel = atoi(a_head.bits_per_channel); + header->alpha_flag = atoi(a_head.alpha_channel); + if (strlen(a_head.author)) { ++ overflow_add(strlen(a_head.author),1); + if (!(header->author = calloc((unsigned int)strlen(a_head.author)+1, + 1))) { + pm_message("ReadXimHeader: can't calloc author string" ); +@@ -126,6 +127,7 @@ ReadXimHeader(FILE * const in_fp, + strncpy(header->author, a_head.author, strlen(a_head.author)); + } + if (strlen(a_head.date)) { ++ overflow_add(strlen(a_head.date),1); + if (!(header->date =calloc((unsigned int)strlen(a_head.date)+1,1))){ + pm_message("ReadXimHeader: can't calloc date string" ); + return(0); +@@ -134,6 +136,7 @@ ReadXimHeader(FILE * const in_fp, + strncpy(header->date, a_head.date, strlen(a_head.date)); + } + if (strlen(a_head.program)) { ++ overflow_add(strlen(a_head.program),1); + if (!(header->program = calloc( + (unsigned int)strlen(a_head.program) + 1, 1))) { + pm_message("ReadXimHeader: can't calloc program string" ); +@@ -160,6 +163,7 @@ ReadXimHeader(FILE * const in_fp, + if (header->nchannels == 3 && header->bits_channel == 8) + header->ncolors = 0; + else if (header->nchannels == 1 && header->bits_channel == 8) { ++ overflow2(header->ncolors, sizeof(Color)); + header->colors = (Color *)calloc((unsigned int)header->ncolors, + sizeof(Color)); + if (header->colors == NULL) { +diff -up netpbm-10.47.04/converter/ppm/xpmtoppm.c.security netpbm-10.47.04/converter/ppm/xpmtoppm.c +--- netpbm-10.47.04/converter/ppm/xpmtoppm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/xpmtoppm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -701,6 +701,7 @@ ReadXPMFile(FILE * const stream, int * c + &ncolors, colorsP, &ptab); + *transparentP = -1; /* No transparency in version 1 */ + } ++ overflow2(*widthP, *heightP); + totalpixels = *widthP * *heightP; + MALLOCARRAY(*dataP, totalpixels); + if (*dataP == NULL) +diff -up netpbm-10.47.04/converter/ppm/yuvtoppm.c.security netpbm-10.47.04/converter/ppm/yuvtoppm.c +--- netpbm-10.47.04/converter/ppm/yuvtoppm.c.security 2009-10-21 13:39:10.000000000 +0200 ++++ netpbm-10.47.04/converter/ppm/yuvtoppm.c 2009-10-21 15:09:33.000000000 +0200 +@@ -72,6 +72,7 @@ main(argc, argv) + + ppm_writeppminit(stdout, cols, rows, (pixval) 255, 0); + pixrow = ppm_allocrow(cols); ++ overflow_add(cols, 1); + MALLOCARRAY(yuvbuf, (cols+1)/2); + if (yuvbuf == NULL) + pm_error("Unable to allocate YUV buffer for %d columns.", cols); +diff -up netpbm-10.47.04/editor/pamcut.c.security netpbm-10.47.04/editor/pamcut.c +--- netpbm-10.47.04/editor/pamcut.c.security 2009-10-21 13:38:57.000000000 +0200 ++++ netpbm-10.47.04/editor/pamcut.c 2009-10-21 15:29:36.000000000 +0200 +@@ -655,6 +655,8 @@ cutOneImage(FILE * const ifP + + outpam = inpam; /* Initial value -- most fields should be same */ + outpam.file = ofP; ++ overflow_add(rightcol, 1); ++ overflow_add(bottomrow, 1); + outpam.width = rightcol - leftcol + 1; + outpam.height = bottomrow - toprow + 1; + +diff -up netpbm-10.47.04/editor/pbmreduce.c.security netpbm-10.47.04/editor/pbmreduce.c +--- netpbm-10.47.04/editor/pbmreduce.c.security 2009-10-21 13:38:57.000000000 +0200 ++++ netpbm-10.47.04/editor/pbmreduce.c 2009-10-21 15:26:13.000000000 +0200 +@@ -94,6 +94,7 @@ main( argc, argv ) + if (halftone == QT_FS) { + unsigned int col; + /* Initialize Floyd-Steinberg. */ ++ overflow_add(newcols, 2); + MALLOCARRAY(thiserr, newcols + 2); + MALLOCARRAY(nexterr, newcols + 2); + if (thiserr == NULL || nexterr == NULL) +diff -up netpbm-10.47.04/editor/pnmgamma.c.security netpbm-10.47.04/editor/pnmgamma.c +--- netpbm-10.47.04/editor/pnmgamma.c.security 2009-10-21 13:38:57.000000000 +0200 ++++ netpbm-10.47.04/editor/pnmgamma.c 2009-10-21 15:09:34.000000000 +0200 +@@ -586,6 +586,7 @@ createGammaTables(enum transferFunction + xelval ** const btableP) { + + /* Allocate space for the tables. */ ++ overflow_add(maxval, 1); + MALLOCARRAY(*rtableP, maxval+1); + MALLOCARRAY(*gtableP, maxval+1); + MALLOCARRAY(*btableP, maxval+1); +diff -up netpbm-10.47.04/editor/pnmhisteq.c.security netpbm-10.47.04/editor/pnmhisteq.c +--- netpbm-10.47.04/editor/pnmhisteq.c.security 2009-10-21 13:38:57.000000000 +0200 ++++ netpbm-10.47.04/editor/pnmhisteq.c 2009-10-21 15:09:34.000000000 +0200 +@@ -103,6 +103,7 @@ computeLuminosityHistogram(xel * const * + unsigned int pixelCount; + unsigned int * lumahist; + ++ overflow_add(maxval, 1); + MALLOCARRAY(lumahist, maxval + 1); + if (lumahist == NULL) + pm_error("Out of storage allocating array for %u histogram elements", +diff -up netpbm-10.47.04/editor/pnmindex.csh.security netpbm-10.47.04/editor/pnmindex.csh +--- netpbm-10.47.04/editor/pnmindex.csh.security 2009-10-21 13:38:57.000000000 +0200 ++++ netpbm-10.47.04/editor/pnmindex.csh 2009-10-21 15:09:34.000000000 +0200 +@@ -1,5 +1,8 @@ + #!/bin/csh -f + # ++echo "Unsafe code, needs debugging, do not ship" ++exit 1 ++# + # pnmindex - build a visual index of a bunch of anymaps + # + # Copyright (C) 1991 by Jef Poskanzer. +diff -up netpbm-10.47.04/editor/pnmpad.c.security netpbm-10.47.04/editor/pnmpad.c +--- netpbm-10.47.04/editor/pnmpad.c.security 2009-10-21 13:38:57.000000000 +0200 ++++ netpbm-10.47.04/editor/pnmpad.c 2009-10-21 15:33:51.000000000 +0200 +@@ -527,6 +527,8 @@ main(int argc, const char ** argv) { + + computePadSizes(cmdline, cols, rows, &lpad, &rpad, &tpad, &bpad); + ++ overflow_add(cols, lpad); ++ overflow_add(cols + lpad, rpad); + newcols = cols + lpad + rpad; + + if (PNM_FORMAT_TYPE(format) == PBM_TYPE) +diff -up netpbm-10.47.04/editor/pnmpaste.c.security netpbm-10.47.04/editor/pnmpaste.c +diff -up netpbm-10.47.04/editor/pnmremap.c.security netpbm-10.47.04/editor/pnmremap.c +--- netpbm-10.47.04/editor/pnmremap.c.security 2009-10-21 13:38:57.000000000 +0200 ++++ netpbm-10.47.04/editor/pnmremap.c 2009-10-21 15:28:20.000000000 +0200 +@@ -408,7 +408,7 @@ initFserr(struct pam * const pamP, + unsigned int plane; + + unsigned int const fserrSize = pamP->width + 2; +- ++ overflow_add(pamP->width, 2); + fserrP->width = pamP->width; + + MALLOCARRAY(fserrP->thiserr, pamP->depth); +@@ -444,6 +444,7 @@ floydInitRow(struct pam * const pamP, st + + int col; + ++ overflow_add(pamP->width, 2); + for (col = 0; col < pamP->width + 2; ++col) { + unsigned int plane; + for (plane = 0; plane < pamP->depth; ++plane) +diff -up netpbm-10.47.04/editor/pnmscalefixed.c.security netpbm-10.47.04/editor/pnmscalefixed.c +--- netpbm-10.47.04/editor/pnmscalefixed.c.security 2009-10-21 13:38:57.000000000 +0200 ++++ netpbm-10.47.04/editor/pnmscalefixed.c 2009-10-21 15:09:34.000000000 +0200 +@@ -211,6 +211,8 @@ compute_output_dimensions(const struct c + const int rows, const int cols, + int * newrowsP, int * newcolsP) { + ++ overflow2(rows, cols); ++ + if (cmdline.pixels) { + if (rows * cols <= cmdline.pixels) { + *newrowsP = rows; +@@ -262,6 +264,8 @@ compute_output_dimensions(const struct c + + if (*newcolsP < 1) *newcolsP = 1; + if (*newrowsP < 1) *newrowsP = 1; ++ ++ overflow2(*newcolsP, *newrowsP); + } + + +@@ -443,6 +447,9 @@ main(int argc, char **argv ) { + unfilled. We can address that by stretching, whereas the other + case would require throwing away some of the input. + */ ++ ++ overflow2(newcols, SCALE); ++ overflow2(newrows, SCALE); + sxscale = SCALE * newcols / cols; + syscale = SCALE * newrows / rows; + +diff -up netpbm-10.47.04/editor/pnmshear.c.security netpbm-10.47.04/editor/pnmshear.c +--- netpbm-10.47.04/editor/pnmshear.c.security 2009-10-21 13:38:57.000000000 +0200 ++++ netpbm-10.47.04/editor/pnmshear.c 2009-10-21 15:31:26.000000000 +0200 +@@ -15,6 +15,7 @@ + #include <assert.h> + #include <math.h> + #include <string.h> ++#include <limits.h> + + #include "pm_c_util.h" + #include "ppm.h" +@@ -236,6 +237,11 @@ main(int argc, char * argv[]) { + + shearfac = fabs(tan(cmdline.angle)); + ++ if(rows * shearfac >= INT_MAX-1) ++ pm_error("image too large"); ++ ++ overflow_add(rows * shearfac, cols+1); ++ + newcols = rows * shearfac + cols + 0.999999; + + pnm_writepnminit(stdout, newcols, rows, newmaxval, newformat, 0); +diff -up netpbm-10.47.04/editor/specialty/pamoil.c.security netpbm-10.47.04/editor/specialty/pamoil.c +--- netpbm-10.47.04/editor/specialty/pamoil.c.security 2009-10-21 13:38:56.000000000 +0200 ++++ netpbm-10.47.04/editor/specialty/pamoil.c 2009-10-21 15:09:33.000000000 +0200 +@@ -112,6 +112,7 @@ main(int argc, char *argv[] ) { + tuples = pnm_readpam(ifp, &inpam, PAM_STRUCT_SIZE(tuple_type)); + pm_close(ifp); + ++ overflow_add(inpam.maxval, 1); + MALLOCARRAY(hist, inpam.maxval + 1); + if (hist == NULL) + pm_error("Unable to allocate memory for histogram."); +diff -up netpbm-10.47.04/generator/pbmtext.c.security netpbm-10.47.04/generator/pbmtext.c +--- netpbm-10.47.04/generator/pbmtext.c.security 2009-10-21 13:38:57.000000000 +0200 ++++ netpbm-10.47.04/generator/pbmtext.c 2009-10-21 15:23:15.000000000 +0200 +@@ -96,12 +96,14 @@ parseCommandLine(int argc, const char ** + + for (i = 1; i < argc; ++i) { + if (i > 1) { ++ overflow_add(totaltextsize, 1); + totaltextsize += 1; + text = realloc(text, totaltextsize); + if (text == NULL) + pm_error("out of memory allocating space for input text"); + strcat(text, " "); + } ++ overflow_add(totaltextsize, strlen(argv[i])); + totaltextsize += strlen(argv[i]); + text = realloc(text, totaltextsize); + if (text == NULL) +@@ -711,6 +713,7 @@ getText(const char cmdline_text + pm_error("A line of input text is longer than %u characters." + "Cannot process.", sizeof(buf)-1); + if (lineCount >= maxlines) { ++ overflow2(maxlines, 2); + maxlines *= 2; + REALLOCARRAY(text_array, maxlines); + if (text_array == NULL) +@@ -831,6 +834,7 @@ main(int argc, const char *argv[]) { + hmargin = fontP->maxwidth; + } else { + vmargin = fontP->maxheight; ++ overflow2(2, fontP->maxwidth); + hmargin = 2 * fontP->maxwidth; + } + } +diff -up netpbm-10.47.04/generator/pgmcrater.c.security netpbm-10.47.04/generator/pgmcrater.c +--- netpbm-10.47.04/generator/pgmcrater.c.security 2009-10-21 13:38:57.000000000 +0200 ++++ netpbm-10.47.04/generator/pgmcrater.c 2009-10-21 15:09:34.000000000 +0200 +@@ -130,7 +130,7 @@ static void gencraters() + /* Acquire the elevation array and initialize it to mean + surface elevation. */ + +- MALLOCARRAY(aux, SCRX * SCRY); ++ aux = (unsigned short *) malloc3(SCRX, SCRY, sizeof(short)); + if (aux == NULL) + pm_error("out of memory allocating elevation array"); + +diff -up netpbm-10.47.04/generator/pgmkernel.c.security netpbm-10.47.04/generator/pgmkernel.c +--- netpbm-10.47.04/generator/pgmkernel.c.security 2009-10-21 13:38:57.000000000 +0200 ++++ netpbm-10.47.04/generator/pgmkernel.c 2009-10-21 15:09:34.000000000 +0200 +@@ -68,7 +68,7 @@ main ( argc, argv ) + kycenter = (fysize - 1) / 2.0; + ixsize = fxsize + 0.999; + iysize = fysize + 0.999; +- MALLOCARRAY(fkernel, ixsize * iysize); ++ fkernel = (double *) malloc3 (ixsize, iysize, sizeof(double)); + for (i = 0; i < iysize; i++) + for (j = 0; j < ixsize; j++) { + fkernel[i*ixsize+j] = 1.0 / (1.0 + w * sqrt((double) +diff -up netpbm-10.47.04/lib/libpam.c.security netpbm-10.47.04/lib/libpam.c +--- netpbm-10.47.04/lib/libpam.c.security 2009-10-21 13:39:00.000000000 +0200 ++++ netpbm-10.47.04/lib/libpam.c 2009-10-21 15:09:34.000000000 +0200 +@@ -235,7 +235,8 @@ allocPamRow(const struct pam * const pam + int const bytesPerTuple = allocationDepth(pamP) * sizeof(sample); + tuple * tuplerow; + +- tuplerow = malloc(pamP->width * (sizeof(tuple *) + bytesPerTuple)); ++ overflow_add(sizeof(tuple *), bytesPerTuple); ++ tuplerow = malloc2(pamP->width, sizeof(tuple *) + bytesPerTuple); + + if (tuplerow != NULL) { + /* Now we initialize the pointers to the individual tuples +diff -up netpbm-10.47.04/lib/libpammap.c.security netpbm-10.47.04/lib/libpammap.c +--- netpbm-10.47.04/lib/libpammap.c.security 2009-10-21 13:39:00.000000000 +0200 ++++ netpbm-10.47.04/lib/libpammap.c 2009-10-21 15:09:34.000000000 +0200 +@@ -104,6 +104,8 @@ allocTupleIntListItem(struct pam * const + */ + struct tupleint_list_item * retval; + ++ overflow2(pamP->depth, sizeof(sample)); ++ overflow_add(sizeof(*retval)-sizeof(retval->tupleint.tuple), pamP->depth*sizeof(sample)); + unsigned int const size = + sizeof(*retval) - sizeof(retval->tupleint.tuple) + + pamP->depth * sizeof(sample); +diff -up netpbm-10.47.04/lib/libpbm1.c.security netpbm-10.47.04/lib/libpbm1.c +--- netpbm-10.47.04/lib/libpbm1.c.security 2009-10-21 13:39:00.000000000 +0200 ++++ netpbm-10.47.04/lib/libpbm1.c 2009-10-21 15:09:34.000000000 +0200 +@@ -77,6 +77,7 @@ pbm_check(FILE * file, const enum pm_che + pm_message("pm_filepos passed to pm_check() is %u bytes", + sizeof(pm_filepos)); + #endif ++ overflow2(bytes_per_row, rows); + pm_check(file, check_type, need_raster_size, retval_p); + } + } +--- netpbm-10.47.04/lib/libpm.c.security 2009-10-21 13:39:00.000000000 +0200 ++++ netpbm-10.47.04/lib/libpm.c 2009-10-21 15:09:34.000000000 +0200 +@@ -827,4 +827,53 @@ pm_parse_height(const char * const arg) + } + + ++/* ++ * Maths wrapping ++ */ ++ ++void __overflow2(int a, int b) ++{ ++ if(a < 0 || b < 0) ++ pm_error("object too large"); ++ if(b == 0) ++ return; ++ if(a > INT_MAX / b) ++ pm_error("object too large"); ++} ++ ++void overflow3(int a, int b, int c) ++{ ++ overflow2(a,b); ++ overflow2(a*b, c); ++} ++ ++void overflow_add(int a, int b) ++{ ++ if( a > INT_MAX - b) ++ pm_error("object too large"); ++} ++ ++void *malloc2(int a, int b) ++{ ++ overflow2(a, b); ++ if(a*b == 0) ++ pm_error("Zero byte allocation"); ++ return malloc(a*b); ++} ++ ++void *malloc3(int a, int b, int c) ++{ ++ overflow3(a, b, c); ++ if(a*b*c == 0) ++ pm_error("Zero byte allocation"); ++ return malloc(a*b*c); ++} ++ ++void *realloc2(void * a, int b, int c) ++{ ++ overflow2(b, c); ++ if(b*c == 0) ++ pm_error("Zero byte allocation"); ++ return realloc(a, b*c); ++} + +diff -up netpbm-10.47.04/lib/pm.h.security netpbm-10.47.04/lib/pm.h +--- netpbm-10.47.04/lib/pm.h.security 2009-10-21 13:39:00.000000000 +0200 ++++ netpbm-10.47.04/lib/pm.h 2009-10-21 15:09:34.000000000 +0200 +@@ -377,4 +377,11 @@ pm_parse_height(const char * const arg); + #endif + + ++void *malloc2(int, int); ++void *malloc3(int, int, int); ++#define overflow2(a,b) __overflow2(a,b) ++void __overflow2(int, int); ++void overflow3(int, int, int); ++void overflow_add(int, int); ++ + #endif +diff -up netpbm-10.47.04/other/pnmcolormap.c.security netpbm-10.47.04/other/pnmcolormap.c +--- netpbm-10.47.04/other/pnmcolormap.c.security 2009-10-21 13:38:54.000000000 +0200 ++++ netpbm-10.47.04/other/pnmcolormap.c 2009-10-21 15:09:34.000000000 +0200 +@@ -840,6 +840,7 @@ colormapToSquare(struct pam * const pamP + pamP->width = intsqrt; + else + pamP->width = intsqrt + 1; ++ overflow_add(intsqrt, 1); + } + { + unsigned int const intQuotient = colormap.size / pamP->width; +diff -up netpbm-10.47.04/urt/rle_addhist.c.security netpbm-10.47.04/urt/rle_addhist.c +--- netpbm-10.47.04/urt/rle_addhist.c.security 2009-10-21 13:39:11.000000000 +0200 ++++ netpbm-10.47.04/urt/rle_addhist.c 2009-10-21 15:09:34.000000000 +0200 +@@ -14,6 +14,8 @@ + * If you modify this software, you should include a notice giving the + * name of the person performing the modification, the date of modification, + * and the reason for such modification. ++ * ++ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com> + */ + /* + * rle_addhist.c - Add to the HISTORY comment in header +@@ -76,13 +78,19 @@ rle_addhist(char * argv[], + return; + + length = 0; +- for (i = 0; argv[i]; ++i) ++ for (i = 0; argv[i]; ++i) { ++ overflow_add(length, strlen(argv[i])); ++ overflow_add(length+1, strlen(argv[i])); + length += strlen(argv[i]) +1; /* length of each arg plus space. */ ++ } + + time(&temp); + timedate = ctime(&temp); + length += strlen(timedate); /* length of date and time in ASCII. */ + ++ overflow_add(strlen(padding), 4); ++ overflow_add(strlen(histoire), strlen(padding) + 4); ++ overflow_add(length, strlen(histoire) + strlen(padding) + 4); + length += strlen(padding) + 3 + strlen(histoire) + 1; + /* length of padding, "on " and length of history name plus "="*/ + if (in_hdr) /* if we are interested in the old comments... */ +@@ -90,9 +98,12 @@ rle_addhist(char * argv[], + else + old = NULL; + +- if (old && *old) ++ if (old && *old) { ++ overflow_add(length, strlen(old)); + length += strlen(old); /* add length if there. */ ++ } + ++ overflow_add(length, 1); + ++length; /*Cater for the null. */ + + MALLOCARRAY(newc, length); +diff -up netpbm-10.47.04/urt/rle_getrow.c.security netpbm-10.47.04/urt/rle_getrow.c +--- netpbm-10.47.04/urt/rle_getrow.c.security 2009-10-21 13:39:11.000000000 +0200 ++++ netpbm-10.47.04/urt/rle_getrow.c 2009-10-21 15:09:34.000000000 +0200 +@@ -17,6 +17,8 @@ + * + * Modified at BRL 16-May-88 by Mike Muuss to avoid Alliant STDC desire + * to have all "void" functions so declared. ++ * ++ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com> + */ + /* + * rle_getrow.c - Read an RLE file in. +@@ -168,6 +170,7 @@ rle_get_setup(rle_hdr * const the_hdr) { + register char * cp; + + VAXSHORT( comlen, infile ); /* get comment length */ ++ overflow_add(comlen, 1); + evenlen = (comlen + 1) & ~1; /* make it even */ + if ( evenlen ) + { +diff -up netpbm-10.47.04/urt/rle_hdr.c.security netpbm-10.47.04/urt/rle_hdr.c +--- netpbm-10.47.04/urt/rle_hdr.c.security 2009-10-21 13:39:11.000000000 +0200 ++++ netpbm-10.47.04/urt/rle_hdr.c 2009-10-21 15:09:34.000000000 +0200 +@@ -14,6 +14,8 @@ + * If you modify this software, you should include a notice giving the + * name of the person performing the modification, the date of modification, + * and the reason for such modification. ++ * ++ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com> + */ + /* + * rle_hdr.c - Functions to manipulate rle_hdr structures. +@@ -79,7 +81,10 @@ int img_num; + /* Fill in with copies of the strings. */ + if ( the_hdr->cmd != pgmname ) + { +- char *tmp = (char *)malloc( strlen( pgmname ) + 1 ); ++ char *tmp ; ++ ++ overflow_add(strlen(pgmname), 1); ++ tmp = malloc( strlen( pgmname ) + 1 ); + RLE_CHECK_ALLOC( pgmname, tmp, 0 ); + strcpy( tmp, pgmname ); + the_hdr->cmd = tmp; +@@ -87,7 +92,9 @@ int img_num; + + if ( the_hdr->file_name != fname ) + { +- char *tmp = (char *)malloc( strlen( fname ) + 1 ); ++ char *tmp; ++ overflow_add(strlen(fname), 1); ++ tmp = malloc( strlen( fname ) + 1 ); + RLE_CHECK_ALLOC( pgmname, tmp, 0 ); + strcpy( tmp, fname ); + the_hdr->file_name = tmp; +@@ -152,6 +159,7 @@ rle_hdr *from_hdr, *to_hdr; + if ( to_hdr->bg_color ) + { + int size = to_hdr->ncolors * sizeof(int); ++ overflow2(to_hdr->ncolors, sizeof(int)); + to_hdr->bg_color = (int *)malloc( size ); + RLE_CHECK_ALLOC( to_hdr->cmd, to_hdr->bg_color, "background color" ); + memcpy( to_hdr->bg_color, from_hdr->bg_color, size ); +@@ -160,7 +168,7 @@ rle_hdr *from_hdr, *to_hdr; + if ( to_hdr->cmap ) + { + int size = to_hdr->ncmap * (1 << to_hdr->cmaplen) * sizeof(rle_map); +- to_hdr->cmap = (rle_map *)malloc( size ); ++ to_hdr->cmap = (rle_map *)malloc3( to_hdr->ncmap, 1<<to_hdr->cmaplen, sizeof(rle_map)); + RLE_CHECK_ALLOC( to_hdr->cmd, to_hdr->cmap, "color map" ); + memcpy( to_hdr->cmap, from_hdr->cmap, size ); + } +@@ -173,11 +181,16 @@ rle_hdr *from_hdr, *to_hdr; + int size = 0; + CONST_DECL char **cp; + for ( cp=to_hdr->comments; *cp; cp++ ) ++ { ++ overflow_add(size, 1); + size++; /* Count the comments. */ ++ } + /* Check if there are really any comments. */ + if ( size ) + { ++ overflow_add(size, 1); + size++; /* Copy the NULL pointer, too. */ ++ overflow2(size, sizeof(char *)); + size *= sizeof(char *); + to_hdr->comments = (CONST_DECL char **)malloc( size ); + RLE_CHECK_ALLOC( to_hdr->cmd, to_hdr->comments, "comments" ); +diff -up netpbm-10.47.04/urt/rle_open_f.c.security netpbm-10.47.04/urt/rle_open_f.c +--- netpbm-10.47.04/urt/rle_open_f.c.security 2009-10-21 13:39:11.000000000 +0200 ++++ netpbm-10.47.04/urt/rle_open_f.c 2009-10-21 15:15:38.000000000 +0200 +@@ -163,64 +163,7 @@ dealWithSubprocess(const char * const f + bool * const noSubprocessP, + const char ** const errorP) { + +-#ifdef NO_OPEN_PIPES + *noSubprocessP = TRUE; +-#else +- const char *cp; +- +- reapChildren(catchingChildrenP, pids); +- +- /* Real file, not stdin or stdout. If name ends in ".Z", +- * pipe from/to un/compress (depending on r/w mode). +- * +- * If it starts with "|", popen that command. +- */ +- +- cp = file_name + strlen(file_name) - 2; +- /* Pipe case. */ +- if (file_name[0] == '|') { +- pid_t thepid; /* PID from my_popen */ +- +- *noSubprocessP = FALSE; +- +- *fpP = my_popen(file_name + 1, mode, &thepid); +- if (*fpP == NULL) +- *errorP = "%s: can't invoke <<%s>> for %s: "; +- else { +- /* One more child to catch, eventually. */ +- if (*catchingChildrenP < MAX_CHILDREN) +- pids[(*catchingChildrenP)++] = thepid; +- } +- } else if (cp > file_name && *cp == '.' && *(cp + 1) == 'Z' ) { +- /* Compress case. */ +- pid_t thepid; /* PID from my_popen. */ +- const char * command; +- +- *noSubprocessP = FALSE; +- +- if (*mode == 'w') +- pm_asprintf(&command, "compress > %s", file_name); +- else if (*mode == 'a') +- pm_asprintf(&command, "compress >> %s", file_name); +- else +- pm_asprintf(&command, "compress -d < %s", file_name); +- +- *fpP = my_popen(command, mode, &thepid); +- +- if (*fpP == NULL) +- *errorP = "%s: can't invoke 'compress' program, " +- "trying to open %s for %s"; +- else { +- /* One more child to catch, eventually. */ +- if (*catchingChildrenP < MAX_CHILDREN) +- pids[(*catchingChildrenP)++] = thepid; +- } +- pm_strfree(command); +- } else { +- *noSubprocessP = TRUE; +- *errorP = NULL; +- } +-#endif + } + + +diff -up netpbm-10.47.04/urt/rle_putcom.c.security netpbm-10.47.04/urt/rle_putcom.c +--- netpbm-10.47.04/urt/rle_putcom.c.security 2009-10-21 13:39:11.000000000 +0200 ++++ netpbm-10.47.04/urt/rle_putcom.c 2009-10-21 15:09:34.000000000 +0200 +@@ -14,6 +14,8 @@ + * If you modify this software, you should include a notice giving the + * name of the person performing the modification, the date of modification, + * and the reason for such modification. ++ * ++ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com> + */ + /* + * rle_putcom.c - Add a picture comment to the header struct. +@@ -98,12 +100,14 @@ rle_putcom(const char * const value, + const char * v; + const char ** old_comments; + int i; +- for (i = 2, cp = the_hdr->comments; *cp != NULL; ++i, ++cp) ++ for (i = 2, cp = the_hdr->comments; *cp != NULL; ++i, ++cp) { ++ overflow_add(i, 1); + if (match(value, *cp) != NULL) { + v = *cp; + *cp = value; + return v; + } ++ } + /* Not found */ + /* Can't realloc because somebody else might be pointing to this + * comments block. Of course, if this were true, then the +diff -up netpbm-10.47.04/urt/Runput.c.security netpbm-10.47.04/urt/Runput.c +--- netpbm-10.47.04/urt/Runput.c.security 2009-10-21 13:39:11.000000000 +0200 ++++ netpbm-10.47.04/urt/Runput.c 2009-10-21 15:09:34.000000000 +0200 +@@ -17,6 +17,8 @@ + * + * Modified at BRL 16-May-88 by Mike Muuss to avoid Alliant STDC desire + * to have all "void" functions so declared. ++ * ++ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com> + */ + /* + * Runput.c - General purpose Run Length Encoding. +@@ -202,9 +204,11 @@ RunSetup(rle_hdr * the_hdr) + if ( the_hdr->background != 0 ) + { + register int i; +- register rle_pixel *background = +- (rle_pixel *)malloc( (unsigned)(the_hdr->ncolors + 1) ); ++ register rle_pixel *background; + register int *bg_color; ++ ++ overflow_add(the_hdr->ncolors,1); ++ background = (rle_pixel *)malloc( (unsigned)(the_hdr->ncolors + 1) ); + /* + * If even number of bg color bytes, put out one more to get to + * 16 bit boundary. +@@ -224,7 +228,7 @@ RunSetup(rle_hdr * the_hdr) + /* Big-endian machines are harder */ + register int i, nmap = (1 << the_hdr->cmaplen) * + the_hdr->ncmap; +- register char *h_cmap = (char *)malloc( nmap * 2 ); ++ register char *h_cmap = (char *)malloc2( nmap, 2 ); + if ( h_cmap == NULL ) + { + fprintf( stderr, +diff -up netpbm-10.47.04/urt/scanargs.c.security netpbm-10.47.04/urt/scanargs.c +--- netpbm-10.47.04/urt/scanargs.c.security 2009-10-21 13:39:11.000000000 +0200 ++++ netpbm-10.47.04/urt/scanargs.c 2009-10-21 15:09:34.000000000 +0200 +@@ -38,6 +38,8 @@ + * + * Modified at BRL 16-May-88 by Mike Muuss to avoid Alliant STDC desire + * to have all "void" functions so declared. ++ * ++ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com> + */ + + #include "rle.h" +@@ -65,8 +67,8 @@ typedef int *ptr; + /* + * Storage allocation macros + */ +-#define NEW( type, cnt ) (type *) malloc( (cnt) * sizeof( type ) ) +-#define RENEW( type, ptr, cnt ) (type *) realloc( ptr, (cnt) * sizeof( type ) ) ++#define NEW( type, cnt ) (type *) malloc2( (cnt) , sizeof( type ) ) ++#define RENEW( type, ptr, cnt ) (type *) realloc2( ptr, (cnt), sizeof( type ) ) + + #if defined(c_plusplus) && !defined(USE_PROTOTYPES) + #define USE_PROTOTYPES +--- advanced/urt/rle_hdr.c.old 2012-01-21 05:57:25.000000000 -0500 ++++ advanced/urt/rle_hdr.c 2012-01-21 05:57:50.000000000 -0500 +@@ -29,6 +29,18 @@ + + #include <string.h> + ++/* ++ * Provided by pm library ++ */ ++ ++extern void overflow_add(int, int); ++#define overflow2(a,b) __overflow2(a,b) ++extern void __overflow2(int, int); ++extern void overflow3(int, int, int); ++extern void *malloc2(int, int); ++/*extern void *malloc3(int, int, int);*/ ++extern void *realloc2(void *, int, int); ++ + /***************************************************************** + * TAG( rle_names ) + * diff --git a/staging/netpbm/netpbm-security-scripts.patch b/staging/netpbm/netpbm-security-scripts.patch new file mode 100644 index 000000000..557914b66 --- /dev/null +++ b/staging/netpbm/netpbm-security-scripts.patch @@ -0,0 +1,393 @@ +diff -up netpbm-10.47.05/converter/other/anytopnm.security-scripts netpbm-10.47.05/converter/other/anytopnm +--- netpbm-10.47.05/converter/other/anytopnm.security-scripts 2009-12-10 08:34:36.000000000 +0100 ++++ netpbm-10.47.05/converter/other/anytopnm 2010-03-16 21:28:09.000000000 +0100 +@@ -510,10 +510,7 @@ else + inputFile="-" + fi + +-tempdir="${TMPDIR-/tmp}/anytopnm.$$" +-mkdir -m 0700 $tempdir || \ +- { echo "Could not create temporary file. Exiting."; exit 1;} +-trap 'rm -rf $tempdir' 0 ++tempdir=$(mktemp -d -t anytopnm.XXXXXXXXXX) || exit 1 + + # Take out all spaces + # Find the filename extension for last-ditch efforts later +@@ -539,9 +536,17 @@ if [ "$filetype" = "unknown" ]; then + echo "$progname: unknown file type. " \ + "'file' says mime type is '$mimeType', " 1>&2 + echo "type description is '$typeDescription'" 1>&2 ++ if [ -d "$tempdir" ] ; then ++ rm -rf "$tempdir" ++ fi ++ + exit 1 + fi + + convertIt $file $filetype + ++if [ -d "$tempdir" ] ; then ++ rm -rf "$tempdir" ++fi ++ + exit 0 +diff -up netpbm-10.47.05/editor/pamstretch-gen.security-scripts netpbm-10.47.05/editor/pamstretch-gen +--- netpbm-10.47.05/editor/pamstretch-gen.security-scripts 2009-12-10 08:34:32.000000000 +0100 ++++ netpbm-10.47.05/editor/pamstretch-gen 2010-03-16 21:28:47.000000000 +0100 +@@ -31,13 +31,9 @@ if [ "$1" = "" ]; then + exit 1 + fi + +-tempdir="${TMPDIR-/tmp}/pamstretch-gen.$$" +-mkdir -m 0700 $tempdir || \ +- { echo "Could not create temporary file. Exiting."; exit 1;} ++tempfile=$(mktemp /tmp/pnmig.XXXXXXXXXX) || exit 1 + trap 'rm -rf $tempdir' 0 1 3 15 + +-tempfile=$tempdir/pnmig +- + if ! cat $2 >$tempfile 2>/dev/null; then + echo 'pamstretch-gen: error reading file' 1>&2 + exit 1 +diff -up netpbm-10.47.05/editor/pnmmargin.security-scripts netpbm-10.47.05/editor/pnmmargin +--- netpbm-10.47.05/editor/pnmmargin.security-scripts 2009-12-10 08:34:32.000000000 +0100 ++++ netpbm-10.47.05/editor/pnmmargin 2010-03-16 21:28:09.000000000 +0100 +@@ -11,15 +11,11 @@ + # documentation. This software is provided "as is" without express or + # implied warranty. + +-tempdir="${TMPDIR-/tmp}/pnmmargin.$$" +-mkdir -m 0700 $tempdir || \ +- { echo "Could not create temporary file. Exiting." 1>&2; exit 1;} +-trap 'rm -rf $tempdir' 0 1 3 15 +- +-tmp1=$tempdir/pnmm1 +-tmp2=$tempdir/pnmm2 +-tmp3=$tempdir/pnmm3 +-tmp4=$tempdir/pnmm4 ++tmpdir=$(mktemp -d -t ppmmargin.XXXXXXX) || exit 1 ++tmp1="$tmpdir/tmp1" ++tmp2="$tmpdir/tmp2" ++tmp3="$tmpdir/tmp3" ++tmp4="$tmpdir/tmp4" + + color="-gofigure" + plainopt="" +@@ -90,6 +86,7 @@ else + -white | -black ) + pnmpad $plainopt $color \ + -left=$size -right=$size -top=$size -bottom=$size $tmp1 ++ rm -rf "$tmpdir" + exit + ;; + * ) +@@ -102,7 +99,4 @@ else + pnmcat -lr $tmp2 $tmp1 $tmp2 > $tmp4 + pnmcat -tb $plainopt $tmp3 $tmp4 $tmp3 + fi +- +- +- +- ++rm -rf "$tmpdir" +diff -up netpbm-10.47.05/editor/ppmfade.security-scripts netpbm-10.47.05/editor/ppmfade +--- netpbm-10.47.05/editor/ppmfade.security-scripts 2009-12-10 08:34:32.000000000 +0100 ++++ netpbm-10.47.05/editor/ppmfade 2010-03-16 21:28:09.000000000 +0100 +@@ -14,6 +14,7 @@ + # + #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + use strict; ++use File::Temp "tempdir"; + + my $SPREAD = 1; + my $SHIFT = 2; +@@ -111,20 +112,26 @@ if ($first_file ne "undefined") { + + print("Frames are " . $width . "W x " . $height . "H\n"); + ++# ++# We create a tmp-directory right here ++# ++my $tmpdir = tempdir("ppmfade.XXXXXX", CLEANUP => 1); ++ ++ + if ($first_file eq "undefined") { + print "Fading from black to "; +- system("ppmmake \\#000 $width $height >junk1$$.ppm"); ++ system("ppmmake \\#000 $width $height >$tmpdir/junk1$$.ppm"); + } else { + print "Fading from $first_file to "; +- system("cp", $first_file, "junk1$$.ppm"); ++ system("cp", $first_file, "$tmpdir/junk1$$.ppm"); + } + + if ($last_file eq "undefined") { + print "black.\n"; +- system("ppmmake \\#000 $width $height >junk2$$.ppm"); ++ system("ppmmake \\#000 $width $height >$tmpdir/junk2$$.ppm"); + } else { + print "$last_file\n"; +- system("cp", $last_file, "junk2$$.ppm"); ++ system("cp", $last_file, "$tmpdir/junk2$$.ppm"); + } + + # +@@ -132,14 +139,14 @@ if ($last_file eq "undefined") { + # + + # Here's what our temporary files are: +-# junk1$$.ppm: The original (fade-from) image +-# junk2$$.ppm: The target (fade-from) image +-# junk3$$.ppm: The frame of the fade for the current iteration of the +-# the for loop. +-# junk1a$$.ppm: If the fade involves a ppmmix sequence from one intermediate +-# image to another, this is the first frame of that +-# sequence. +-# junk2a$$.ppm: This is the last frame of the above-mentioned ppmmix sequence ++# $tmpdir/junk1$$.ppm: The original (fade-from) image ++# $tmpdir/junk2$$.ppm: The target (fade-from) image ++# $tmpdir/junk3$$.ppm: The frame of the fade for the current iteration of the ++# the for loop. ++# $tmpdir/junk1a$$.ppm: If the fade involves a ppmmix sequence from one intermediate ++# image to another, this is the first frame of that ++# sequence. ++# $tmpdir/junk2a$$.ppm: This is the last frame of the above-mentioned ppmmix sequence + + my $i; # Frame number + for ($i = 1; $i <= $nframes; $i++) { +@@ -147,147 +154,147 @@ for ($i = 1; $i <= $nframes; $i++) { + if ($mode eq $SPREAD) { + if ($i <= 10) { + my $n = $spline20[$i] * 100; +- system("ppmspread $n junk1$$.ppm >junk3$$.ppm"); ++ system("ppmspread $n $tmpdir/junk1$$.ppm >$tmpdir/junk3$$.ppm"); + } elsif ($i <= 20) { + my $n; + $n = $spline20[$i] * 100; +- system("ppmspread $n junk1$$.ppm >junk1a$$.ppm"); ++ system("ppmspread $n $tmpdir/junk1$$.ppm >$tmpdir/junk1a$$.ppm"); + $n = (1-$spline20[$i-10]) * 100; +- system("ppmspread $n junk2$$.ppm >junk2a$$.ppm"); ++ system("ppmspread $n $tmpdir/junk2$$.ppm >$tmpdir/junk2a$$.ppm"); + $n = $spline10[$i-10]; +- system("ppmmix $n junk1a$$.ppm junk2a$$.ppm >junk3$$.ppm"); ++ system("ppmmix $n $tmpdir/junk1a$$.ppm $tmpdir/junk2a$$.ppm >$tmpdir/junk3$$.ppm"); + } else { + my $n = (1-$spline20[$i-10])*100; +- system("ppmspread $n junk2$$.ppm >junk3$$.ppm"); ++ system("ppmspread $n $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm"); + } + } elsif ($mode eq $SHIFT) { + if ($i <= 10) { + my $n = $spline20[$i] * 100; +- system("ppmshift $n junk1$$.ppm >junk3$$.ppm"); ++ system("ppmshift $n $tmpdir/junk1$$.ppm >$tmpdir/junk3$$.ppm"); + } elsif ($i <= 20) { + my $n; + $n = $spline20[$i] * 100; +- system("ppmshift $n junk1$$.ppm >junk1a$$.ppm"); ++ system("ppmshift $n $tmpdir/junk1$$.ppm >$tmpdir/junk1a$$.ppm"); + $n = (1-$spline20[$i-10])*100; +- system("ppmshift $n junk2$$.ppm >junk2a$$.ppm"); ++ system("ppmshift $n $tmpdir/junk2$$.ppm >$tmpdir/junk2a$$.ppm"); + $n = $spline10[$i-10]; +- system("ppmmix $n junk1a$$.ppm junk2a$$.ppm >junk3$$.ppm"); ++ system("ppmmix $n $tmpdir/junk1a$$.ppm $tmpdir/junk2a$$.ppm >$tmpdir/junk3$$.ppm"); + } else { + my $n = (1-$spline20[$i-10]) * 100; +- system("ppmshift $n junk2$$.ppm >junk3$$.ppm"); ++ system("ppmshift $n $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm"); + } + } elsif ($mode eq $RELIEF) { + if ($i == 1) { +- system("ppmrelief junk1$$.ppm >junk1r$$.ppm"); ++ system("ppmrelief $tmpdir/junk1$$.ppm >$tmpdir/junk1r$$.ppm"); + } + if ($i <= 10) { + my $n = $spline10[$i]; +- system("ppmmix $n junk1$$.ppm junk1r$$.ppm >junk3$$.ppm"); ++ system("ppmmix $n $tmpdir/junk1$$.ppm $tmpdir/junk1r$$.ppm >$tmpdir/junk3$$.ppm"); + } elsif ($i <= 20) { + my $n = $spline10[$i-10]; +- system("ppmmix $n junk1r$$.ppm junk2r$$.ppm >junk3$$.ppm"); ++ system("ppmmix $n $tmpdir/junk1r$$.ppm $tmpdir/junk2r$$.ppm >$tmpdir/junk3$$.ppm"); + } else { + my $n = $spline10[$i-20]; +- system("ppmmix $n junk2r$$.ppm junk2$$.ppm >junk3$$.ppm"); ++ system("ppmmix $n $tmpdir/junk2r$$.ppm $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm"); + } + if ($i == 10) { +- system("ppmrelief junk2$$.ppm >junk2r$$.ppm"); ++ system("ppmrelief $tmpdir/junk2$$.ppm >$tmpdir/junk2r$$.ppm"); + } + } elsif ($mode eq $OIL) { + if ($i == 1) { +- system("ppmtopgm junk1$$.ppm | pgmoil >junko$$.ppm"); +- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " . +- ">junk1o$$.ppm"); ++ system("ppmtopgm $tmpdir/junk1$$.ppm | pgmoil >$tmpdir/junko$$.ppm"); ++ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " . ++ ">$tmpdir/junk1o$$.ppm"); + } + if ($i <= 10) { + my $n = $spline10[$i]; +- system("ppmmix $n junk1$$.ppm junk1o$$.ppm >junk3$$.ppm"); ++ system("ppmmix $n $tmpdir/junk1$$.ppm $tmpdir/junk1o$$.ppm >$tmpdir/junk3$$.ppm"); + } elsif ($i <= 20) { + my $n = $spline10[$i-10]; +- system("ppmmix $n junk1o$$.ppm junk2o$$.ppm >junk3$$.ppm"); ++ system("ppmmix $n $tmpdir/junk1o$$.ppm $tmpdir/junk2o$$.ppm >$tmpdir/junk3$$.ppm"); + } else { + my $n = $spline10[$i-20]; +- system("ppmmix $n junk2o$$.ppm junk2$$.ppm >junk3$$.ppm"); ++ system("ppmmix $n $tmpdir/junk2o$$.ppm $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm"); + } + if ($i == 10) { +- system("ppmtopgm junk2$$.ppm | pgmoil >junko$$.ppm"); +- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " . +- ">junk2o$$.ppm"); ++ system("ppmtopgm $tmpdir/junk2$$.ppm | pgmoil >$tmpdir/junko$$.ppm"); ++ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " . ++ ">$tmpdir/junk2o$$.ppm"); + } + } elsif ($mode eq $EDGE) { + if ($i == 1) { +- system("ppmtopgm junk1$$.ppm | pgmedge >junko$$.ppm"); +- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " . +- ">junk1o$$.ppm"); ++ system("ppmtopgm $tmpdir/junk1$$.ppm | pgmedge >$tmpdir/junko$$.ppm"); ++ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " . ++ ">$tmpdir/junk1o$$.ppm"); + } + if ($i <= 10) { + my $n = $spline10[$i]; +- system("ppmmix $n junk1$$.ppm junk1o$$.ppm >junk3$$.ppm"); ++ system("ppmmix $n $tmpdir/junk1$$.ppm $tmpdir/junk1o$$.ppm >$tmpdir/junk3$$.ppm"); + } elsif ($i <= 20) { + my $n = $spline10[$i-10]; +- system("ppmmix $n junk1o$$.ppm junk2o$$.ppm >junk3$$.ppm"); ++ system("ppmmix $n $tmpdir/junk1o$$.ppm $tmpdir/junk2o$$.ppm >$tmpdir/junk3$$.ppm"); + } else { + my $n = $spline10[$i-20]; +- system("ppmmix $n junk2o$$.ppm junk2$$.ppm >junk3$$.ppm"); ++ system("ppmmix $n $tmpdir/junk2o$$.ppm $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm"); + } + if ($i == 10) { +- system("ppmtopgm junk2$$.ppm | pgmedge >junko$$.ppm"); +- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " . +- ">junk2o$$.ppm"); ++ system("ppmtopgm $tmpdir/junk2$$.ppm | pgmedge >$tmpdir/junko$$.ppm"); ++ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " . ++ ">$tmpdir/junk2o$$.ppm"); + } + } elsif ($mode eq $BENTLEY) { + if ($i == 1) { +- system("ppmtopgm junk1$$.ppm | pgmbentley >junko$$.ppm"); +- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " . +- ">junk1o$$.ppm"); ++ system("ppmtopgm $tmpdir/junk1$$.ppm | pgmbentley >$tmpdir/junko$$.ppm"); ++ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " . ++ ">$tmpdir/junk1o$$.ppm"); + } + if ($i <= 10) { + my $n = $spline10[$i]; +- system("ppmmix $n junk1$$.ppm junk1o$$.ppm >junk3$$.ppm"); ++ system("ppmmix $n $tmpdir/junk1$$.ppm $tmpdir/junk1o$$.ppm >$tmpdir/junk3$$.ppm"); + } elsif ($i <= 20) { + my $n = $spline10[$i-10]; +- system("ppmmix $n junk1o$$.ppm junk2o$$.ppm >junk3$$.ppm"); ++ system("ppmmix $n $tmpdir/junk1o$$.ppm $tmpdir/junk2o$$.ppm >$tmpdir/junk3$$.ppm"); + } else { + my $n = $spline10[$i-20]; +- system("ppmmix $n junk2o$$.ppm junk2$$.ppm >junk3$$.ppm"); ++ system("ppmmix $n $tmpdir/junk2o$$.ppm $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm"); + } + if ($i == 10) { +- system("ppmtopgm junk2$$.ppm | pgmbentley >junko$$.ppm"); +- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " . +- ">junk2o$$.ppm"); ++ system("ppmtopgm $tmpdir/junk2$$.ppm | pgmbentley >$tmpdir/junko$$.ppm"); ++ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " . ++ ">$tmpdir/junk2o$$.ppm"); + } + } elsif ($mode eq $BLOCK) { + if ($i <= 10) { + my $n = 1 - 1.9*$spline20[$i]; +- system("pamscale $n junk1$$.ppm | " . +- "pamscale -width $width -height $height >junk3$$.ppm"); ++ system("pamscale $n $tmpdir/junk1$$.ppm | " . ++ "pamscale -width $width -height $height >$tmpdir/junk3$$.ppm"); + } elsif ($i <= 20) { + my $n = $spline10[$i-10]; +- system("ppmmix $n junk1a$$.ppm junk2a$$.ppm >junk3$$.ppm"); ++ system("ppmmix $n $tmpdir/junk1a$$.ppm $tmpdir/junk2a$$.ppm >$tmpdir/junk3$$.ppm"); + } else { + my $n = 1 - 1.9*$spline20[31-$i]; +- system("pamscale $n junk2$$.ppm | " . +- "pamscale -width $width -height $height >junk3$$.ppm"); ++ system("pamscale $n $tmpdir/junk2$$.ppm | " . ++ "pamscale -width $width -height $height >$tmpdir/junk3$$.ppm"); + } + if ($i == 10) { +- system("cp", "junk3$$.ppm", "junk1a$$.ppm"); +- system("pamscale $n junk2$$.ppm | " . +- "pamscale -width $width -height $height >junk2a$$.ppm"); ++ system("cp", "$tmpdir/junk3$$.ppm", "$tmpdir/junk1a$$.ppm"); ++ system("pamscale $n $tmpdir/junk2$$.ppm | " . ++ "pamscale -width $width -height $height >$tmpdir/junk2a$$.ppm"); + } + } elsif ($mode eq $MIX) { + my $fade_factor = sqrt(1/($nframes-$i+1)); +- system("ppmmix $fade_factor junk1$$.ppm junk2$$.ppm >junk3$$.ppm"); ++ system("ppmmix $fade_factor $tmpdir/junk1$$.ppm $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm"); + } else { + print("Internal error: impossible mode value '$mode'\n"); + } + + my $outfile = sprintf("%s.%04d.ppm", $base_name, $i); +- system("cp", "junk3$$.ppm", $outfile); ++ system("cp", "$tmpdir/junk3$$.ppm", $outfile); + } + + # + # Clean up shop. + # +-system("rm junk*$$.ppm"); ++system("rm $tmpdir/junk*$$.ppm"); + + exit(0); +diff -up netpbm-10.47.05/editor/ppmquantall.security-scripts netpbm-10.47.05/editor/ppmquantall +--- netpbm-10.47.05/editor/ppmquantall.security-scripts 2009-12-10 08:34:32.000000000 +0100 ++++ netpbm-10.47.05/editor/ppmquantall 2010-03-16 21:28:09.000000000 +0100 +@@ -70,12 +70,8 @@ for i in ${files[@]}; do + heights=(${heights[*]} `grep -v '^#' $i | sed '1d; s/.* //; 2q'`) + done + +-tempdir="${TMPDIR-/tmp}/ppmquantall.$$" +-mkdir -m 0700 $tempdir || \ +- { echo "Could not create temporary file. Exiting."; exit 1;} +-trap 'rm -rf $tempdir' 0 1 3 15 +- +-all=$tempdir/pqa.all.$$ ++all=$(mktemp -t pqa.all.XXXXXXXXXX) || exit 1 ++rm -f $all + + pnmcat -topbottom -jleft -white ${files[@]} | pnmquant $newcolors > $all + if [ $? != 0 ]; then +diff -up netpbm-10.47.05/editor/ppmshadow.security-scripts netpbm-10.47.05/editor/ppmshadow +--- netpbm-10.47.05/editor/ppmshadow.security-scripts 2009-12-10 08:34:32.000000000 +0100 ++++ netpbm-10.47.05/editor/ppmshadow 2010-03-16 21:28:09.000000000 +0100 +@@ -72,9 +72,10 @@ sub makeConvolutionKernel($$) { + + + my $tmpdir = $ENV{TMPDIR} || "/tmp"; +-my $ourtmp = "$tmpdir/ppmshadow$$"; +-mkdir($ourtmp, 0777) or +- die("Unable to create directory for temporary files '$ourtmp"); ++my $ourtmp; chomp($ourtmp = `mktemp -d -t PPMshadow.XXXXXX`); ++if ($? >> 8) { ++ die "Can't create directory for temporary files"; ++} + + # Process command line options + diff --git a/staging/nx-common/NXproto.h.64bit.diff b/staging/nx-common/NXproto.h.64bit.diff new file mode 100644 index 000000000..ac326ebcd --- /dev/null +++ b/staging/nx-common/NXproto.h.64bit.diff @@ -0,0 +1,66 @@ +--- nxcomp.old/NXproto.h 2006-06-19 19:55:56.000000000 +0200 ++++ nxcomp/NXproto.h 2007-02-12 18:17:41.000000000 +0100 +@@ -26,6 +26,30 @@ + #include <X11/Xmd.h> + #include <X11/Xproto.h> + ++/* ++ Copied from Xproto.h ++ */ ++ ++/* For the purpose of the structure definitions in this file, ++we must redefine the following types in terms of Xmd.h's types, which may ++include bit fields. All of these are #undef'd at the end of this file, ++restoring the definitions in X.h. */ ++ ++#define Window CARD32 ++#define Drawable CARD32 ++#define Font CARD32 ++#define Pixmap CARD32 ++#define Cursor CARD32 ++#define Colormap CARD32 ++#define GContext CARD32 ++#define Atom CARD32 ++#define VisualID CARD32 ++#define Time CARD32 ++#define KeyCode CARD8 ++#define KeySym CARD32 ++ ++/* End copied from Xproto.h */ ++ + #define sz_xNXGetControlParametersReq 4 + #define sz_xNXGetCleanupParametersReq 4 + #define sz_xNXGetImageParametersReq 4 +@@ -343,9 +367,9 @@ + CARD8 dstDepth; + CARD32 srcLength B32; + CARD32 dstLength B32; +- INT16 srcX B16, srcY B16; ++ CARD16 srcX B16, srcY B16; + CARD16 srcWidth B16, srcHeight B16; +- INT16 dstX B16, dstY B16; ++ CARD16 dstX B16, dstY B16; + CARD16 dstWidth B16, dstHeight B16; + } xNXPutPackedImageReq; + +@@ -463,4 +487,20 @@ + } + #endif + ++/* Copied from Xproto.h */ ++ ++/* restore these definitions back to the typedefs in X.h */ ++#undef Window ++#undef Drawable ++#undef Font ++#undef Pixmap ++#undef Cursor ++#undef Colormap ++#undef GContext ++#undef Atom ++#undef VisualID ++#undef Time ++#undef KeyCode ++#undef KeySym ++ + #endif /* NXproto_H */ diff --git a/staging/nx-common/PKGBUILD b/staging/nx-common/PKGBUILD new file mode 100644 index 000000000..372871404 --- /dev/null +++ b/staging/nx-common/PKGBUILD @@ -0,0 +1,59 @@ +# $Id: PKGBUILD 147024 2012-01-20 21:12:16Z andyrtr $ +# Maintainer: Tobias Powalowski <tpowa@archlinux.org> +# Contributed: eliott <eliott@solarblue.net>, Andre Naumann <anaumann@SPARCed.org> + +pkgname=nx-common +pkgver=3.5.0 +pkgrel=3 +pkgdesc="NoMachine NX common package for client and server" +arch=('i686' 'x86_64') +license=('GPL') +url="http://nomachine.com/" +depends=('libjpeg-turbo>=1.1.1' 'libpng>=1.5.7' 'openssl>=1.0.0' 'gcc-libs' 'bash') +makedepends=('xorg-server-devel') +source=( #Compression libs and proxy sources + http://64.34.161.181/download/$pkgver/sources/nxcomp-$pkgver-2.tar.gz + http://64.34.161.181/download/$pkgver/sources/nxcompsh-$pkgver-1.tar.gz + http://64.34.161.181/download/$pkgver/sources/nxssh-$pkgver-2.tar.gz + nxcompsh-gcc43.patch + nx-3.5.0-libpng15.patch) +options=(!libtool) +md5sums=('ad8c0f133122c6d07732ca69c8759410' + '84ade443b79ea079380b754aba9d392e' + 'f52fcdb38e09f8dcfb9ff0344dfbbbd6' + 'b6c279654dac421fc3dd1a27d66ff53c' + '2966353cabb96829eab291212ef078dc') + +build() { + # nxcomp + cd ${srcdir}/nxcomp + patch -Np1 -i ${srcdir}/nx-3.5.0-libpng15.patch + + ./configure --prefix=/opt/NX + make + # nxcompsh + cd ${srcdir}/nxcompsh + patch -Np1 -i ${srcdir}/nxcompsh-gcc43.patch + + ./configure --prefix=/opt/NX + make + # nxssh + cd ${srcdir}/nxssh + ./configure --prefix=/opt/NX + make +} + +package() { + mkdir -p ${pkgdir}/opt/NX/bin + mkdir -p ${pkgdir}/opt/NX/lib + + # nxcomp + cd ${srcdir}/nxcomp + cp -a libXcomp.so* ${pkgdir}/opt/NX/lib + # nxcompsh + cd ${srcdir}/nxcompsh + cp -a libXcompsh.so* ${pkgdir}/opt/NX/lib + # nxssh + cd ${srcdir}/nxssh + install -D -m755 nxssh ${pkgdir}/opt/NX/bin/nxssh +} diff --git a/staging/nx-common/nx-3.5.0-libpng15.patch b/staging/nx-common/nx-3.5.0-libpng15.patch new file mode 100644 index 000000000..c8f2a9559 --- /dev/null +++ b/staging/nx-common/nx-3.5.0-libpng15.patch @@ -0,0 +1,30 @@ +diff -ur nxcomp.orig/Pgn.cpp nxcomp/Pgn.cpp +--- nxcomp.orig/Pgn.cpp 2010-03-01 19:18:59.000000000 +0200 ++++ nxcomp/Pgn.cpp 2011-09-13 16:35:12.000000000 +0300 +@@ -414,7 +414,7 @@ + + png_read_info(pngPtr, infoPtr); + +- if (infoPtr -> color_type == PNG_COLOR_TYPE_PALETTE) ++ if (png_get_color_type(pngPtr, infoPtr) == PNG_COLOR_TYPE_PALETTE) + { + png_set_expand(pngPtr); + } +@@ -565,7 +565,7 @@ + + png_read_info( pngPtr, infoPtr ) ; + +- if (infoPtr -> color_type == PNG_COLOR_TYPE_PALETTE) ++ if (png_get_color_type(pngPtr, infoPtr) == PNG_COLOR_TYPE_PALETTE) + { + png_set_expand(pngPtr); + } +@@ -709,7 +709,7 @@ + png_read_info(pngPtr, infoPtr) ; + + +- if (infoPtr -> color_type == PNG_COLOR_TYPE_PALETTE) ++ if (png_get_color_type(pngPtr, infoPtr) == PNG_COLOR_TYPE_PALETTE) + { + png_set_expand(pngPtr); + } diff --git a/staging/nx-common/nxcompsh-gcc43.patch b/staging/nx-common/nxcompsh-gcc43.patch new file mode 100644 index 000000000..681a0dab5 --- /dev/null +++ b/staging/nx-common/nxcompsh-gcc43.patch @@ -0,0 +1,19 @@ +--- nxcompsh/Misc.h~ 2007-06-04 13:39:49.000000000 +0200 ++++ nxcompsh/Misc.h 2008-04-12 12:46:24.000000000 +0200 +@@ -18,10 +18,12 @@ + #ifndef Misc_H + #define Misc_H + +-#include <iostream.h> ++#include <iostream> + +-#include <errno.h> +-#include <string.h> ++#include <cerrno> ++#include <cstring> ++ ++using namespace std; + + // + // Error handling macros. + diff --git a/staging/nxserver/NXproto.h.64bit.diff b/staging/nxserver/NXproto.h.64bit.diff new file mode 100644 index 000000000..ac326ebcd --- /dev/null +++ b/staging/nxserver/NXproto.h.64bit.diff @@ -0,0 +1,66 @@ +--- nxcomp.old/NXproto.h 2006-06-19 19:55:56.000000000 +0200 ++++ nxcomp/NXproto.h 2007-02-12 18:17:41.000000000 +0100 +@@ -26,6 +26,30 @@ + #include <X11/Xmd.h> + #include <X11/Xproto.h> + ++/* ++ Copied from Xproto.h ++ */ ++ ++/* For the purpose of the structure definitions in this file, ++we must redefine the following types in terms of Xmd.h's types, which may ++include bit fields. All of these are #undef'd at the end of this file, ++restoring the definitions in X.h. */ ++ ++#define Window CARD32 ++#define Drawable CARD32 ++#define Font CARD32 ++#define Pixmap CARD32 ++#define Cursor CARD32 ++#define Colormap CARD32 ++#define GContext CARD32 ++#define Atom CARD32 ++#define VisualID CARD32 ++#define Time CARD32 ++#define KeyCode CARD8 ++#define KeySym CARD32 ++ ++/* End copied from Xproto.h */ ++ + #define sz_xNXGetControlParametersReq 4 + #define sz_xNXGetCleanupParametersReq 4 + #define sz_xNXGetImageParametersReq 4 +@@ -343,9 +367,9 @@ + CARD8 dstDepth; + CARD32 srcLength B32; + CARD32 dstLength B32; +- INT16 srcX B16, srcY B16; ++ CARD16 srcX B16, srcY B16; + CARD16 srcWidth B16, srcHeight B16; +- INT16 dstX B16, dstY B16; ++ CARD16 dstX B16, dstY B16; + CARD16 dstWidth B16, dstHeight B16; + } xNXPutPackedImageReq; + +@@ -463,4 +487,20 @@ + } + #endif + ++/* Copied from Xproto.h */ ++ ++/* restore these definitions back to the typedefs in X.h */ ++#undef Window ++#undef Drawable ++#undef Font ++#undef Pixmap ++#undef Cursor ++#undef Colormap ++#undef GContext ++#undef Atom ++#undef VisualID ++#undef Time ++#undef KeyCode ++#undef KeySym ++ + #endif /* NXproto_H */ diff --git a/staging/nxserver/PKGBUILD b/staging/nxserver/PKGBUILD new file mode 100644 index 000000000..5110e7097 --- /dev/null +++ b/staging/nxserver/PKGBUILD @@ -0,0 +1,95 @@ +# $Id: PKGBUILD 147028 2012-01-20 21:33:04Z andyrtr $ +# Maintainer: Tobias Powalowski <tpowa@archlinux.org> +# Contributed: eliott <eliott@solarblue.net>, Andre Naumann <anaumann@SPARCed.org> + +pkgname=nxserver +pkgver=3.5.0 +pkgrel=5 +pkgdesc="NoMachine NX is the next-generation X compression and roundtrip suppression scheme." +arch=(i686 x86_64) +url="http://nomachine.com/" +license=('GPL') +depends=("nx-common" 'libxaw' 'libxrender' 'libxp' 'gcc-libs' 'libjpeg>=8' #>=$pkgver + 'libxpm' 'libpng>=1.5.7' 'libxdamage' 'libxrandr' 'libxcomposite' 'libxtst' 'freetype2' + 'xorg-sessreg') +makedepends=('imake') +source=( +#X11 support programs and libraries +http://64.34.161.181/download/$pkgver/sources/nx-X11-$pkgver-2.tar.gz +http://64.34.161.181/download/$pkgver/sources/nxwin-$pkgver-2.tar.gz +http://64.34.161.181/download/$pkgver/sources/nxauth-$pkgver-1.tar.gz +http://64.34.161.181/download/$pkgver/sources/nxcomp-$pkgver-2.tar.gz # needed to provide NX.h and -LXcomp - part of nx-common +#X11 Agent sources +http://64.34.161.181/download/$pkgver/sources/nxagent-$pkgver-7.tar.gz +http://64.34.161.181/download/$pkgver/sources/nxcompsh-$pkgver-1.tar.gz # needed to get X11 built - part of nx-common +#Compression libs and proxy sources +http://64.34.161.181/download/$pkgver/sources/nxproxy-$pkgver-1.tar.gz +http://64.34.161.181/download/$pkgver/sources/nxcompext-$pkgver-1.tar.gz +http://64.34.161.181/download/$pkgver/sources/nxcompshad-$pkgver-2.tar.gz +# gcc 43 fix +nxcompsh-gcc43.patch +nx-3.5.0-libpng15.patch) +options=(!libtool) +md5sums=('12060433a74ac61a1c776d1d6d136117' + '84c7f1575d9a1506370125ed050514ab' + 'cf38ec1e5a5f6453946cd387c14f2684' + 'ad8c0f133122c6d07732ca69c8759410' + '0a36c7e6a86c6c741179464b8f79c487' + '84ade443b79ea079380b754aba9d392e' + '488bb4d9b8e9f82dc272b4e6e9c57d30' + 'abde2ccc33e31fc695031c2cfb60f3dd' + '90a762dd9eb19c8c97876ad837923857' + 'b6c279654dac421fc3dd1a27d66ff53c' + '2966353cabb96829eab291212ef078dc') + +build() { + cd ${srcdir} + + # nxcomp + cd ${srcdir}/nxcomp + patch -Np1 -i ${srcdir}/nx-3.5.0-libpng15.patch + ./configure --prefix=/opt/NX + make + # nxcompshad + cd ${srcdir}/nxcompshad + ./configure --prefix=/opt/NX + make + # nxcompsh + cd ${srcdir}/nxcompsh + patch -Np1 -i ${srcdir}/nxcompsh-gcc43.patch + ./configure --prefix=/opt/NX + make + # nxproxy + cd ${srcdir}/nxproxy + ./configure --prefix=/opt/NX + make + # nx-X11 + cd ${srcdir}/nx-X11 + make World + # nxcompext + cd ${srcdir}/nxcompext + ./configure --prefix=/opt/NX + make +} + +package() { + mkdir -p ${pkgdir}/opt/NX/bin + mkdir -p ${pkgdir}/opt/NX/lib + + # nxcompshad + cd ${srcdir}/nxcompshad + cp -a libXcompshad.so* ${pkgdir}/opt/NX/lib + # nxproxy + cd ${srcdir}/nxproxy + make prefix=${pkgdir}/opt/NX install + # nx-X11 + cd ${srcdir}/nx-X11 + cp -a lib/X11/libX11.so* ${pkgdir}/opt/NX/lib + cp -a lib/Xext/libXext.so* ${pkgdir}/opt/NX/lib + cp -a lib/Xrender/libXrender.so* ${pkgdir}/opt/NX/lib + install -D -m755 programs/Xserver/nxagent ${pkgdir}/opt/NX/bin/nxagent + install -D -m755 programs/nxauth/nxauth ${pkgdir}/opt/NX/bin/nxauth + # nxcompext + cd ${srcdir}/nxcompext + cp -a libXcompext.so* ${pkgdir}/opt/NX/lib +}
\ No newline at end of file diff --git a/staging/nxserver/nx-3.5.0-libpng15.patch b/staging/nxserver/nx-3.5.0-libpng15.patch new file mode 100644 index 000000000..c8f2a9559 --- /dev/null +++ b/staging/nxserver/nx-3.5.0-libpng15.patch @@ -0,0 +1,30 @@ +diff -ur nxcomp.orig/Pgn.cpp nxcomp/Pgn.cpp +--- nxcomp.orig/Pgn.cpp 2010-03-01 19:18:59.000000000 +0200 ++++ nxcomp/Pgn.cpp 2011-09-13 16:35:12.000000000 +0300 +@@ -414,7 +414,7 @@ + + png_read_info(pngPtr, infoPtr); + +- if (infoPtr -> color_type == PNG_COLOR_TYPE_PALETTE) ++ if (png_get_color_type(pngPtr, infoPtr) == PNG_COLOR_TYPE_PALETTE) + { + png_set_expand(pngPtr); + } +@@ -565,7 +565,7 @@ + + png_read_info( pngPtr, infoPtr ) ; + +- if (infoPtr -> color_type == PNG_COLOR_TYPE_PALETTE) ++ if (png_get_color_type(pngPtr, infoPtr) == PNG_COLOR_TYPE_PALETTE) + { + png_set_expand(pngPtr); + } +@@ -709,7 +709,7 @@ + png_read_info(pngPtr, infoPtr) ; + + +- if (infoPtr -> color_type == PNG_COLOR_TYPE_PALETTE) ++ if (png_get_color_type(pngPtr, infoPtr) == PNG_COLOR_TYPE_PALETTE) + { + png_set_expand(pngPtr); + } diff --git a/staging/nxserver/nxcompsh-gcc43.patch b/staging/nxserver/nxcompsh-gcc43.patch new file mode 100644 index 000000000..681a0dab5 --- /dev/null +++ b/staging/nxserver/nxcompsh-gcc43.patch @@ -0,0 +1,19 @@ +--- nxcompsh/Misc.h~ 2007-06-04 13:39:49.000000000 +0200 ++++ nxcompsh/Misc.h 2008-04-12 12:46:24.000000000 +0200 +@@ -18,10 +18,12 @@ + #ifndef Misc_H + #define Misc_H + +-#include <iostream.h> ++#include <iostream> + +-#include <errno.h> +-#include <string.h> ++#include <cerrno> ++#include <cstring> ++ ++using namespace std; + + // + // Error handling macros. + diff --git a/staging/opencv/PKGBUILD b/staging/opencv/PKGBUILD new file mode 100644 index 000000000..8829b6e70 --- /dev/null +++ b/staging/opencv/PKGBUILD @@ -0,0 +1,119 @@ +# $Id: PKGBUILD 147051 2012-01-21 05:36:50Z schiv $ +# Maintainer: Ray Rashif <schiv@archlinux.org> +# Contributor: Tobias Powalowski <tpowa@archlinux.org> + +pkgbase=opencv +pkgname=('opencv' 'opencv-docs' 'opencv-samples') +_realname=OpenCV +pkgver=2.3.1_a +_realver=2.3.1 +pkgrel=4 +pkgdesc="Open Source Computer Vision Library" +arch=('i686' 'x86_64') +license=('BSD') +url="http://opencv.willowgarage.com/" +depends=('jasper' 'gstreamer0.10-base' 'openexr' + 'gtk2' 'xine-lib' 'libdc1394' 'v4l-utils') +makedepends=('pkg-config' 'cmake' 'python2-numpy' 'eigen2') +optdepends=('opencv-docs' + 'opencv-samples' + 'eigen2' + 'python2-numpy: Python 2.x interface') +options=('!libtool') +source=("http://downloads.sourceforge.net/opencvlibrary/$_realname-${_realver}a.tar.bz2") +md5sums=('82e4b6bfa349777233eea09b075e931e') + +_cmakeopts=('-D CMAKE_BUILD_TYPE=Release' + '-D CMAKE_INSTALL_PREFIX=/usr' + '-D CMAKE_SKIP_RPATH=ON' + '-D BUILD_TESTS=OFF' + '-D ENABLE_SSE=ON' + '-D ENABLE_SSE2=ON' + '-D ENABLE_SSE3=OFF' + '-D ENABLE_SSSE3=OFF' + '-D ENABLE_SSE41=OFF' + '-D ENABLE_SSE42=OFF' + '-D BUILD_EXAMPLES=ON' + '-D INSTALL_C_EXAMPLES=ON' + '-D INSTALL_PYTHON_EXAMPLES=ON' + '-D WITH_XINE=ON' + '-D WITH_QT=OFF' + '-D WITH_QT_OPENGL=OFF' + '-D WITH_UNICAP=OFF' + '-D WITH_PVAPI=OFF' + '-D WITH_OPENNI=OFF' + '-D WITH_TBB=OFF' + '-D WITH_IPP=OFF' + '-D WITH_CUDA=OFF' + '-D USE_FAST_MATH=ON') + +build() { + cd "$srcdir/$_realname-$_realver" + + # x64, i.e "Athlon64" and upwards, can use SSE3 + [ $CARCH = x86_64 ] && \ + _cmakeopts=${_cmakeopts[@]/ENABLE_SSE3=OFF/ENABLE_SSE3=ON} + + cmake ${_cmakeopts[@]} . + + make +} + +package_opencv() { + cd "$srcdir/$_realname-$_realver" + + make DESTDIR="$pkgdir" install + + # install license file + install -Dm644 "$srcdir/$_realname-$_realver/doc/license.txt" \ + "$pkgdir/usr/share/licenses/$pkgname/LICENSE" + + cd "$pkgdir/usr/share" + + # prepare FSH-friendly dirs + if [ -d OpenCV ]; then + mv opencv/samples OpenCV/ + rm -r opencv + mv OpenCV opencv + fi + + # separate docs package; also be -R friendly + [ -d opencv/doc ] && mv opencv/doc "$srcdir/opencv-doc" + + # separate samples package + [ -d opencv/samples ] && mv opencv/samples "$srcdir/opencv-samples" +} + +package_opencv-docs() { + pkgdesc+=" (documentation)" + unset depends + unset optdepends + options=('docs') + + cd "$srcdir" + + mkdir -p "$pkgdir/usr/share/doc" + cp -r opencv-doc "$pkgdir/usr/share/doc/opencv" + + # install license file + install -Dm644 "$srcdir/$_realname-$_realver/doc/license.txt" \ + "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} + +package_opencv-samples() { + pkgdesc+=" (samples)" + depends=('bash') + unset optdepends + unset options + + cd "$srcdir" + + mkdir -p "$pkgdir/usr/share/opencv" + cp -r opencv-samples "$pkgdir/usr/share/opencv/samples" + + # install license file + install -Dm644 "$srcdir/$_realname-$_realver/doc/license.txt" \ + "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} + +# vim:set ts=2 sw=2 et: diff --git a/staging/openjdk6/PKGBUILD b/staging/openjdk6/PKGBUILD new file mode 100644 index 000000000..428f10348 --- /dev/null +++ b/staging/openjdk6/PKGBUILD @@ -0,0 +1,183 @@ +# $Id: PKGBUILD 147004 2012-01-20 15:47:29Z andyrtr $ +# Maintainer: Andreas Radke <andyrtr@archlinux.org> +# Contributor: Jan de Groot <jgc@archlinux.org> + +pkgname=('openjdk6' 'openjdk6-src') +pkgbase="openjdk6" +_javaver=6 +_icedteaver=1.10.5 +_openjdk_version=b22 +_openjdk_date=28_feb_2011 +pkgver=${_javaver}.${_openjdk_version}_${_icedteaver} +pkgrel=2 +url='http://icedtea.classpath.org' +arch=('i686' 'x86_64') +license=('custom') +makedepends=('gcc-libs' 'xdg-utils' 'hicolor-icon-theme' 'ca-certificates-java' 'libxtst' 'alsa-lib' 'giflib' 'libxp' 'gtk2' + 'nspr' 'zlib' 'freetype2' 'libjpeg>=8' 'libx11' 'libcups' 'patch' 'xalan-java' 'libxt' 'nss' + 'apache-ant' 'autoconf' 'unzip' 'rhino' 'mercurial' 'zip' 'cpio' 'openjdk6') +options=('!emptydirs') # 'force') # force needed for hg shots +source=(http://icedtea.classpath.org/download/source/icedtea6-${_icedteaver}.tar.gz + http://download.java.net/openjdk/jdk6/promoted/${_openjdk_version}/openjdk-6-src-${_openjdk_version}-${_openjdk_date}.tar.gz + http://icedtea.classpath.org/download/drops/jaxp144_01.zip + http://icedtea.classpath.org/download/drops/jdk6-jaxws-b20.zip + http://icedtea.classpath.org/download/drops/jdk6-jaf-b20.zip + fix_jdk_cmds_path.diff + fix_corba_cmds_path.diff + fontconfig-paths.diff + nonreparenting-wm.diff + openjdk6.profile + openjdk6.profile.csh + glibc2_15.diff) +noextract=(openjdk-6-src-${_openjdk_version}-${_openjdk_date}.tar.gz + jaxp144_01.zip + jdk6-jaxws-b20.zip + jdk6-jaf-b20.zip) +md5sums=('e2316f463b5d9f53f8c5c9020f2a7e5a' + '2d2bbbb0f9b81f1fec41ec730da8a933' + 'ef7a8b3624ea904bf584bc46d79b5e75' + '91adfd41e6f001add4f92ae31216b1e3' + 'bc95c133620bd68c161cac9891592901' + '5da3e39fa60985576c4f37d1491efbe2' + 'f7e7a212e50abb56a6ef1a2b1bd27405' + 'ee1afda124d5927345014ab382ef581e' + '9b4d368f5ee08de248eaf029303a446c' + '74c4a7adc782edd087802bf92ae3d6d0' + 'fdf295e2f186dfa4d308691a3d7ac8c5' + '0c8f0a398c88f85e0db44b4417562cf3') + +build() { + + unset JAVA_HOME + unset CLASSPATH + + [ -z "${ANT_HOME}" ] && . /etc/profile.d/apache-ant.sh + + _javaver=6 + _jvmdir=/usr/lib/jvm/java-${_javaver}-openjdk + + cd ${srcdir}/icedtea6-${_icedteaver} + + ln -s ${srcdir}/openjdk-6-src-${_openjdk_version}-${_openjdk_date}.tar.gz . + + cp ${srcdir}/*.diff ${srcdir}/icedtea6-${_icedteaver}/patches/ + + autoreconf -i + + export DISTRIBUTION_PATCHES="patches/fix_jdk_cmds_path.diff patches/fontconfig-paths.diff patches/fix_corba_cmds_path.diff patches/nonreparenting-wm.diff patches/glibc2_15.diff" + + export ALT_PARALLEL_COMPILE_JOBS="${MAKEFLAGS/-j}" + export HOTSPOT_BUILD_JOBS="${ALT_PARALLEL_COMPILE_JOBS}" + unset MAKEFLAGS + + ./configure --with-parallel-jobs=${HOTSPOT_BUILD_JOBS} \ + --with-xalan2-jar=/usr/share/java/xalan.jar \ + --with-ant-home=/usr/share/java/apache-ant \ + --with-pkgversion=ArchLinux-${pkgver}-${pkgrel}-$CARCH \ + --with-jaxp-drop-zip=${srcdir}/jaxp144_01.zip \ + --with-jaxws-drop-zip=${srcdir}/jdk6-jaxws-b20.zip \ + --with-jaf-drop-zip=${srcdir}/jdk6-jaf-b20.zip \ + --disable-bootstrap + LD_PRELOAD="" make +} + +package_openjdk6() { + pkgdesc='Free Java environment based on OpenJDK 6.0 with IcedTea6 replacing binary plugs.' + backup=(etc/profile.d/openjdk6.sh) + depends=('gcc-libs' 'xdg-utils' 'hicolor-icon-theme' 'ca-certificates-java' 'libxtst' 'libxt' 'nss' 'libjpeg' 'freetype2' 'libxrender' 'libpng>=1.5.7') + optdepends=('icedtea-web: web browser plugin + Java Web Start' + 'alsa-lib: for sound' + 'giflib: for gif format support') + conflicts=('java-environment' 'java-runtime') + provides=('java-environment=6' 'java-runtime=6') + install=openjdk6.install + + if [ "${CARCH}" = "x86_64" ]; then + _arch=amd64 + else + _arch=i586 + fi + + _javaver=6 + _jvmdir=/usr/lib/jvm/java-${_javaver}-openjdk + + cd ${srcdir}/icedtea6-${_icedteaver} + install -m755 -d ${pkgdir}/${_jvmdir}/jre + + pushd ${srcdir}/icedtea6-${_icedteaver}/openjdk.build/j2sdk-image + + # Install main files. + cp -a bin include lib ${pkgdir}/${_jvmdir}/ + cp -a jre/bin jre/lib ${pkgdir}/${_jvmdir}/jre/ + + mv ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.Ubuntu.properties.src \ + ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.properties.src + mv ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.Ubuntu.bfc \ + ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.bfc + rm -f ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.*.bfc + rm -f ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.*.properties.src + + # Install man pages. + install -m755 -d ${pkgdir}/usr/share/man/man1 + install -m644 man/man1/*.1 ${pkgdir}/usr/share/man/man1/ + + # Install demos and samples. + cp -a demo ${pkgdir}/${_jvmdir}/ + install -m755 -d sample/rmi + mv bin/java-rmi.cgi sample/rmi + cp -a sample ${pkgdir}/${_jvmdir}/ + popd + + # Install icons and menu entries. + for s in 16 24 32 48 ; do + install -m755 -d ${pkgdir}/usr/share/icons/hicolor/${s}x${s}/apps + install -m644 openjdk/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \ + ${pkgdir}/usr/share/icons/hicolor/${s}x${s}/apps/java.png + done + + # Install desktop files. + install -m755 -d ${pkgdir}/usr/share/applications + install -m644 {jconsole,policytool}.desktop ${pkgdir}/usr/share/applications + + # link binaries into /usr/bin + install -m755 -d ${pkgdir}/usr/bin + pushd ${pkgdir}/${_jvmdir}/bin + for file in *; do + ln -sf ${_jvmdir}/bin/${file} \ + ${pkgdir}/usr/bin + done + popd + + # link JKS keystore from ca-certificates-java + rm -f ${pkgdir}/${_jvmdir}/jre/lib/security/cacerts + ln -sf /etc/ssl/certs/java/cacerts "${pkgdir}/${_jvmdir}/jre/lib/security/cacerts" + + # set some variables + install -m755 -d ${pkgdir}/etc/profile.d + install -m755 ${srcdir}/openjdk6.profile ${pkgdir}/etc/profile.d/openjdk6.sh + install -m755 ${srcdir}/openjdk6.profile.csh ${pkgdir}/etc/profile.d/openjdk6.csh + + # install license + install -Dm644 ${srcdir}//icedtea6-${_icedteaver}/openjdk/LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE +} + +package_openjdk6-src() { + pkgdesc='Free Java environment based on OpenJDK 6.0 Source Bundle' + depends=('openjdk6') + + if [ "${CARCH}" = "x86_64" ]; then + _arch=amd64 + else + _arch=i586 + fi + + _javaver=6 + _jvmdir=/usr/lib/jvm/java-${_javaver}-openjdk + + cd ${srcdir}/icedtea6-${_icedteaver} + install -m755 -d ${pkgdir}/${_jvmdir}/jre + + pushd ${srcdir}/icedtea6-${_icedteaver}/openjdk.build/j2sdk-image + # Install src.zip file + cp -a src.zip ${pkgdir}/${_jvmdir}/ +} diff --git a/staging/openjdk6/fix_corba_cmds_path.diff b/staging/openjdk6/fix_corba_cmds_path.diff new file mode 100644 index 000000000..842657880 --- /dev/null +++ b/staging/openjdk6/fix_corba_cmds_path.diff @@ -0,0 +1,33 @@ +--- openjdk/corba/make/common/shared/Defs-utils.gmk.old 2008-04-13 13:26:12.000000000 +0300 ++++ openjdk/corba/make/common/shared/Defs-utils.gmk 2008-04-14 15:35:13.000000000 +0300 +@@ -86,10 +86,10 @@ + CHMOD = $(UTILS_COMMAND_PATH)chmod + CMP = $(UTILS_USR_BIN_PATH)cmp + COMM = $(UTILS_USR_BIN_PATH)comm +-COMPRESS = $(UTILS_USR_BIN_PATH)compress ++COMPRESS = $(UTILS_COMMAND_PATH)compress + CP = $(UTILS_COMMAND_PATH)cp + CPIO = $(UTILS_COMMAND_PATH)cpio +-CUT = $(UTILS_USR_BIN_PATH)cut ++CUT = $(UTILS_COMMAND_PATH)cut + DATE = $(UTILS_COMMAND_PATH)date + DF = $(UTILS_COMMAND_PATH)df + DIFF = $(UTILS_USR_BIN_PATH)diff +@@ -136,7 +136,7 @@ + TAR = $(UTILS_COMMAND_PATH)tar + TEST = $(UTILS_USR_BIN_PATH)test + TOUCH = $(UTILS_COMMAND_PATH)touch +-TR = $(UTILS_USR_BIN_PATH)tr ++TR = $(UTILS_COMMAND_PATH)tr + TRUE = $(UTILS_COMMAND_PATH)true + UNAME = $(UTILS_COMMAND_PATH)uname + UNIQ = $(UTILS_USR_BIN_PATH)uniq +@@ -186,7 +186,7 @@ + # others have it in /usr/bin. + SORT=$(firstword $(wildcard $(UTILS_COMMAND_PATH)sort) \ + $(wildcard $(UTILS_USR_BIN_PATH)sort)) +- NAWK = $(USRBIN_PATH)gawk ++ NAWK = $(UTILS_COMMAND_PATH)gawk + # Intrinsic unix command, with backslash-escaped character interpretation + ECHO = /bin/echo -e + # These are really in UTILS_USR_BIN_PATH on Linux (only sccs is not) diff --git a/staging/openjdk6/fix_jdk_cmds_path.diff b/staging/openjdk6/fix_jdk_cmds_path.diff new file mode 100644 index 000000000..7e16e1744 --- /dev/null +++ b/staging/openjdk6/fix_jdk_cmds_path.diff @@ -0,0 +1,33 @@ +--- openjdk/jdk/make/common/shared/Defs-utils.gmk.old 2008-04-13 13:33:23.000000000 +0300 ++++ openjdk/jdk/make/common/shared/Defs-utils.gmk 2008-04-14 15:37:34.000000000 +0300 +@@ -76,10 +76,10 @@ + CHMOD = $(UTILS_COMMAND_PATH)chmod + CMP = $(UTILS_USR_BIN_PATH)cmp + COMM = $(UTILS_USR_BIN_PATH)comm +-COMPRESS = $(UTILS_USR_BIN_PATH)compress ++COMPRESS = $(UTILS_COMMAND_PATH)compress + CP = $(UTILS_COMMAND_PATH)cp + CPIO = $(UTILS_COMMAND_PATH)cpio +-CUT = $(UTILS_USR_BIN_PATH)cut ++CUT = $(UTILS_COMMAND_PATH)cut + DATE = $(UTILS_COMMAND_PATH)date + DF = $(UTILS_COMMAND_PATH)df + DIFF = $(UTILS_USR_BIN_PATH)diff +@@ -126,7 +126,7 @@ + TAR = $(UTILS_COMMAND_PATH)tar + TEST = $(UTILS_USR_BIN_PATH)test + TOUCH = $(UTILS_COMMAND_PATH)touch +-TR = $(UTILS_USR_BIN_PATH)tr ++TR = $(UTILS_COMMAND_PATH)tr + TRUE = $(UTILS_COMMAND_PATH)true + UNAME = $(UTILS_COMMAND_PATH)uname + UNIQ = $(UTILS_USR_BIN_PATH)uniq +@@ -173,7 +173,7 @@ + BASENAME=$(firstword $(wildcard $(UTILS_COMMAND_PATH)basename) \ + $(wildcard $(UTILS_USR_BIN_PATH)basename)) + +- NAWK = $(USRBIN_PATH)gawk ++ NAWK = $(UTILS_COMMAND_PATH)gawk + # Intrinsic unix command, with backslash-escaped character interpretation + ECHO = /bin/echo -e + # These are really in UTILS_USR_BIN_PATH on Linux (only sccs is not) diff --git a/staging/openjdk6/fontconfig-paths.diff b/staging/openjdk6/fontconfig-paths.diff new file mode 100644 index 000000000..fa08db629 --- /dev/null +++ b/staging/openjdk6/fontconfig-paths.diff @@ -0,0 +1,134 @@ +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties 2009-05-29 22:45:23.024341869 +0000 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties.new 2009-05-29 22:55:13.681366890 +0000 +@@ -275,73 +275,61 @@ + + # Font File Names + +-filename.DejaVu_Sans=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf +-filename.DejaVu_Sans_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf +-filename.DejaVu_Sans_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf +-filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf +- +-filename.DejaVu_Sans_Mono=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf +-filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf +-filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Oblique.ttf +-filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-BoldOblique.ttf +- +-filename.DejaVu_Serif=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf +-filename.DejaVu_Serif_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Bold.ttf +-filename.DejaVu_Serif_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Oblique.ttf +-filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-BoldOblique.ttf +- +-filename.AR_PL_UMing_CN=/usr/share/fonts/truetype/arphic/uming.ttc +-filename.AR_PL_UMing_HK=/usr/share/fonts/truetype/arphic/uming.ttc +-filename.AR_PL_UMing_TW=/usr/share/fonts/truetype/arphic/uming.ttc +-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/truetype/arphic/uming.ttf +- +-filename.WenQuanYi_Zen_Hei=/usr/share/fonts/truetype/wqy/wqy-zenhei.ttf +-filename.Baekmuk_Batang=/usr/share/fonts/truetype/baekmuk/batang.ttf +-filename.UnBatang=/usr/share/fonts/truetype/unfonts/UnBatang.ttf +-filename.UnBatang_Bold=/usr/share/fonts/truetype/unfonts/UnBatangBold.ttf +-filename.Baekmuk_Gulim=/usr/share/fonts/truetype/baekmuk/gulim.ttf +-filename.UnDotum=/usr/share/fonts/truetype/unfonts/UnDotum.ttf +-filename.UnDotum_Bold=/usr/share/fonts/truetype/unfonts/UnDotumBold.ttf +-filename.Kochi_Gothic=/usr/share/fonts/truetype/kochi/kochi-gothic.ttf +-filename.Sazanami_Gothic=/usr/share/fonts/truetype/sazanami/sazanami-gothic.ttf +-filename.Kochi_Mincho=/usr/share/fonts/truetype/kochi/kochi-mincho.ttf +-filename.Sazanami_Mincho=/usr/share/fonts/truetype/sazanami/sazanami-mincho.ttf +-filename.VL_Gothic=/usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf +-filename.VL_PGothic=/usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf +- +-filename.Lohit_Bengali=/usr/share/fonts/truetype/ttf-bengali-fonts/lohit_bn.ttf +-filename.Lohit_Gujarati=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_gu.ttf +-filename.Lohit_Hindi=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_hi.ttf +-filename.Lohit_Kannda=/usr/share/fonts/truetype/ttf-kannada-fonts/lohit_kn.ttf +-#filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +-filename.Lohit_Oriya=/usr/share/fonts/truetype/ttf-oriya-fonts/lohit_or.ttf +-filename.Lohit_Punjabi=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_pa.ttf +-filename.Lohit_Tamil=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_ta.ttf +-filename.Lohit_Telugu=/usr/share/fonts/truetype/ttf-telugu-fonts/lohit_te.ttf +-filename.LKLUG=/usr/share/fonts/truetype/ttf-sinhala-lklug/lklug.ttf +- +-filename.LuxiSans-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisr.ttf +-filename.LuxiSans-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisb.ttf +-filename.LuxiSans-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisri.ttf +-filename.LuxiSans-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisbi.ttf +-filename.LuxiMono-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximr.ttf +-filename.LuxiMono-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximb.ttf +-filename.LuxiMono-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximri.ttf +-filename.LuxiMono-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximbi.ttf +-filename.LuxiSerif-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirr.ttf +-filename.LuxiSerif-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirb.ttf +-filename.LuxiSerif-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirri.ttf +-filename.LuxiSerif-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirbi.ttf +- +-# AWT X11 font paths +-awtfontpath.latin-1=/usr/share/fonts/X11/Type1 +-awtfontpath.umingcn=/usr/share/fonts/truetype/arphic +-awtfontpath.uminghk=/usr/share/fonts/truetype/arphic +-awtfontpath.umingtw=/usr/share/fonts/truetype/arphic +-awtfontpath.shanheisun=/usr/share/fonts/truetype/arphic +-awtfontpath.wqy-zenhei=/usr/share/fonts/truetype/wqy +-awtfontpath.japanese-kochi=/usr/share/fonts/truetype/kochi +-awtfontpath.japanese-sazanami=/usr/share/fonts/truetype/sazanami +-awtfontpath.japanese-vlgothic=/usr/share/fonts/truetype/vlgothic +-awtfontpath.korean-baekmuk=/usr/share/fonts/truetype/baekmuk +-awtfontpath.korean-un=/usr/share/fonts/truetype/unfonts ++filename.DejaVu_Sans=/usr/share/fonts/TTF/DejaVuSans.ttf ++filename.DejaVu_Sans_Bold=/usr/share/fonts/TTF/DejaVuSans-Bold.ttf ++filename.DejaVu_Sans_Oblique=/usr/share/fonts/TTF/DejaVuSans-Oblique.ttf ++filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/TTF/DejaVuSans-BoldOblique.ttf ++ ++filename.DejaVu_Sans_Mono=/usr/share/fonts/TTF/DejaVuSansMono.ttf ++filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/TTF/DejaVuSansMono-Bold.ttf ++filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/TTF/DejaVuSansMono-Oblique.ttf ++filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/TTF/DejaVuSansMono-BoldOblique.ttf ++ ++filename.DejaVu_Serif=/usr/share/fonts/TTF/DejaVuSerif.ttf ++filename.DejaVu_Serif_Bold=/usr/share/fonts/TTF/DejaVuSerif-Bold.ttf ++filename.DejaVu_Serif_Oblique=/usr/share/fonts/TTF/DejaVuSerif-Oblique.ttf ++filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/TTF/DejaVuSerif-BoldOblique.ttf ++ ++filename.AR_PL_UMing_CN=/usr/share/fonts/TTF/uming.ttc ++filename.AR_PL_UMing_HK=/usr/share/fonts/TTF/uming.ttc ++filename.AR_PL_UMing_TW=/usr/share/fonts/TTF/uming.ttc ++filename.AR_PL_ShanHeiSun_Uni=/usr/share/TTF/uming.ttf ++ ++filename.WenQuanYi_Zen_Hei=/usr/share/fonts/TTF/wqy-zenhei.ttf ++filename.Baekmuk_Batang=/usr/share/fonts/TTF/batang.ttf ++filename.UnBatang=/usr/share/fonts/TTF/UnBatang.ttf ++filename.UnBatang_Bold=/usr/share/fonts/TTF/UnBatangBold.ttf ++filename.Baekmuk_Gulim=/usr/share/fonts/TTF/gulim.ttf ++filename.UnDotum=/usr/share/fonts/TTF/UnDotum.ttf ++filename.UnDotum_Bold=/usr/share/fonts/TTF/UnDotumBold.ttf ++filename.Kochi_Gothic=/usr/share/fonts/TTF/kochi-gothic.ttf ++filename.Sazanami_Gothic=/usr/share/fonts/TTF/sazanami-gothic.ttf ++filename.Kochi_Mincho=/usr/share/fonts/TTF/kochi-mincho.ttf ++filename.Sazanami_Mincho=/usr/share/fonts/TTF/sazanami-mincho.ttf ++filename.VL_Gothic=/usr/share/fonts/TTF/VL-Gothic-Regular.ttf ++filename.VL_PGothic=/usr/share/fonts/TTF/VL-PGothic-Regular.ttf ++ ++filename.Lohit_Bengali=/usr/share/fonts/TTF/lohit_bn.ttf ++filename.Lohit_Gujarati=/usr/share/fonts/TTF/lohit_gu.ttf ++filename.Lohit_Hindi=/usr/share/fonts/TTF/lohit_hi.ttf ++filename.Lohit_Kannda=/usr/share/fonts/TTF/lohit_kn.ttf ++#filename.Lohit_Malayalam=/usr/share/fonts/TTF/lohit_ml.ttf ++filename.Lohit_Oriya=/usr/share/fonts/TTF/lohit_or.ttf ++filename.Lohit_Punjabi=/usr/share/fonts/TTF/lohit_pa.ttf ++filename.Lohit_Tamil=/usr/share/fonts/TTF/lohit_ta.ttf ++filename.Lohit_Telugu=/usr/share/fonts/TTF/lohit_te.ttf ++filename.LKLUG=/usr/share/fonts/TTF/lklug.ttf ++ ++filename.LuxiSans-Regular=/usr/share/fonts/TTF/luxisr.ttf ++filename.LuxiSans-Bold=/usr/share/fonts/TTF/luxisb.ttf ++filename.LuxiSans-Oblique=/usr/share/fonts/TTF/luxisri.ttf ++filename.LuxiSans-BoldOblique=/usr/share/fonts/TTF/luxisbi.ttf ++filename.LuxiMono-Regular=/usr/share/fonts/TTF/luximr.ttf ++filename.LuxiMono-Bold=/usr/share/fonts/TTF/luximb.ttf ++filename.LuxiMono-Oblique=/usr/share/fonts/TTF/luximri.ttf ++filename.LuxiMono-BoldOblique=/usr/share/fonts/TTF/luximbi.ttf ++filename.LuxiSerif-Regular=/usr/share/fonts/TTF/luxirr.ttf ++filename.LuxiSerif-Bold=/usr/share/fonts/TTF/luxirb.ttf ++filename.LuxiSerif-Oblique=/usr/share/fonts/TTF/luxirri.ttf ++filename.LuxiSerif-BoldOblique=/usr/share/fonts/TTF/luxirbi.ttf ++ diff --git a/staging/openjdk6/glibc2_15.diff b/staging/openjdk6/glibc2_15.diff new file mode 100644 index 000000000..8fe1b077a --- /dev/null +++ b/staging/openjdk6/glibc2_15.diff @@ -0,0 +1,236 @@ +# HG changeset patch +# User never +# Date 1319555835 25200 +# Node ID a6eef545f1a2ceca6aeadf688a965df600ffef28 +# Parent 2ec638646e86e455978c31a9d47fc0ec271ed926 +7103224: collision between __LEAF define in interfaceSupport.hpp and /usr/include/sys/cdefs.h with gcc +Reviewed-by: never +Contributed-by: Omair Majid <omajid@redhat.com> + +diff -r 2ec638646e86 -r a6eef545f1a2 src/share/vm/opto/addnode.cpp +--- openjdk/hotspot/src/share/vm/opto/addnode.cpp Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/opto/addnode.cpp Tue Oct 25 08:17:15 2011 -0700 +@@ -34,8 +34,6 @@ + + // Portions of code courtesy of Clifford Click + +-#define MAXFLOAT ((float)3.40282346638528860e+38) +- + // Classic Add functionality. This covers all the usual 'add' behaviors for + // an algebraic ring. Add-integer, add-float, add-double, and binary-or are + // all inherited from this class. The various identity values are supplied +diff -r 2ec638646e86 -r a6eef545f1a2 src/share/vm/prims/jniCheck.cpp +--- openjdk/hotspot/src/share/vm/prims/jniCheck.cpp Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/prims/jniCheck.cpp Tue Oct 25 08:17:15 2011 -0700 +@@ -107,7 +107,7 @@ + if (env != xenv) { \ + NativeReportJNIFatalError(thr, warn_wrong_jnienv); \ + } \ +- __ENTRY(result_type, header, thr) ++ VM_ENTRY_BASE(result_type, header, thr) + + + #define UNCHECKED() (unchecked_jni_NativeInterface) +diff -r 2ec638646e86 -r a6eef545f1a2 src/share/vm/prims/jvmtiEnter.xsl +--- openjdk/hotspot/src/share/vm/prims/jvmtiEnter.xsl Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/prims/jvmtiEnter.xsl Tue Oct 25 08:17:15 2011 -0700 +@@ -426,7 +426,7 @@ + <xsl:value-of select="$space"/> + <xsl:text>ThreadInVMfromNative __tiv(current_thread);</xsl:text> + <xsl:value-of select="$space"/> +- <xsl:text>__ENTRY(jvmtiError, </xsl:text> ++ <xsl:text>VM_ENTRY_BASE(jvmtiError, </xsl:text> + <xsl:apply-templates select="." mode="functionid"/> + <xsl:text> , current_thread)</xsl:text> + <xsl:value-of select="$space"/> +diff -r 2ec638646e86 -r a6eef545f1a2 src/share/vm/prims/jvmtiEnv.cpp +--- openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp Tue Oct 25 08:17:15 2011 -0700 +@@ -173,7 +173,7 @@ + // from native so as to resolve the jthread. + + ThreadInVMfromNative __tiv(current_thread); +- __ENTRY(jvmtiError, JvmtiEnv::GetThreadLocalStorage , current_thread) ++ VM_ENTRY_BASE(jvmtiError, JvmtiEnv::GetThreadLocalStorage , current_thread) + debug_only(VMNativeEntryWrapper __vew;) + + oop thread_oop = JNIHandles::resolve_external_guard(thread); +diff -r 2ec638646e86 -r a6eef545f1a2 src/share/vm/prims/jvmtiExport.cpp +--- openjdk/hotspot/src/share/vm/prims/jvmtiExport.cpp Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/prims/jvmtiExport.cpp Tue Oct 25 08:17:15 2011 -0700 +@@ -373,7 +373,7 @@ + JavaThread* current_thread = (JavaThread*) ThreadLocalStorage::thread(); + // transition code: native to VM + ThreadInVMfromNative __tiv(current_thread); +- __ENTRY(jvmtiEnv*, JvmtiExport::get_jvmti_interface, current_thread) ++ VM_ENTRY_BASE(jvmtiEnv*, JvmtiExport::get_jvmti_interface, current_thread) + debug_only(VMNativeEntryWrapper __vew;) + + JvmtiEnv *jvmti_env = JvmtiEnv::create_a_jvmti(version); +diff -r 2ec638646e86 -r a6eef545f1a2 src/share/vm/runtime/interfaceSupport.hpp +--- openjdk/hotspot/src/share/vm/runtime/interfaceSupport.hpp Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/runtime/interfaceSupport.hpp Tue Oct 25 08:17:15 2011 -0700 +@@ -72,9 +72,9 @@ + } + }; + +-// InterfaceSupport provides functionality used by the __LEAF and __ENTRY +-// macros. These macros are used to guard entry points into the VM and +-// perform checks upon leave of the VM. ++// InterfaceSupport provides functionality used by the VM_LEAF_BASE and ++// VM_ENTRY_BASE macros. These macros are used to guard entry points into ++// the VM and perform checks upon leave of the VM. + + + class InterfaceSupport: AllStatic { +@@ -433,7 +433,7 @@ + + // LEAF routines do not lock, GC or throw exceptions + +-#define __LEAF(result_type, header) \ ++#define VM_LEAF_BASE(result_type, header) \ + TRACE_CALL(result_type, header) \ + debug_only(NoHandleMark __hm;) \ + /* begin of body */ +@@ -441,7 +441,7 @@ + + // ENTRY routines may lock, GC and throw exceptions + +-#define __ENTRY(result_type, header, thread) \ ++#define VM_ENTRY_BASE(result_type, header, thread) \ + TRACE_CALL(result_type, header) \ + HandleMarkCleaner __hm(thread); \ + Thread* THREAD = thread; \ +@@ -450,7 +450,7 @@ + + // QUICK_ENTRY routines behave like ENTRY but without a handle mark + +-#define __QUICK_ENTRY(result_type, header, thread) \ ++#define VM_QUICK_ENTRY_BASE(result_type, header, thread) \ + TRACE_CALL(result_type, header) \ + debug_only(NoHandleMark __hm;) \ + Thread* THREAD = thread; \ +@@ -463,20 +463,20 @@ + #define IRT_ENTRY(result_type, header) \ + result_type header { \ + ThreadInVMfromJava __tiv(thread); \ +- __ENTRY(result_type, header, thread) \ ++ VM_ENTRY_BASE(result_type, header, thread) \ + debug_only(VMEntryWrapper __vew;) + + + #define IRT_LEAF(result_type, header) \ + result_type header { \ +- __LEAF(result_type, header) \ ++ VM_LEAF_BASE(result_type, header) \ + debug_only(No_Safepoint_Verifier __nspv(true);) + + + #define IRT_ENTRY_NO_ASYNC(result_type, header) \ + result_type header { \ + ThreadInVMfromJavaNoAsyncException __tiv(thread); \ +- __ENTRY(result_type, header, thread) \ ++ VM_ENTRY_BASE(result_type, header, thread) \ + debug_only(VMEntryWrapper __vew;) + + // Another special case for nmethod_entry_point so the nmethod that the +@@ -487,7 +487,7 @@ + result_type header { \ + nmethodLocker _nmlock(nm); \ + ThreadInVMfromJavaNoAsyncException __tiv(thread); \ +- __ENTRY(result_type, header, thread) ++ VM_ENTRY_BASE(result_type, header, thread) + + #define IRT_END } + +@@ -497,20 +497,20 @@ + #define JRT_ENTRY(result_type, header) \ + result_type header { \ + ThreadInVMfromJava __tiv(thread); \ +- __ENTRY(result_type, header, thread) \ ++ VM_ENTRY_BASE(result_type, header, thread) \ + debug_only(VMEntryWrapper __vew;) + + + #define JRT_LEAF(result_type, header) \ + result_type header { \ +- __LEAF(result_type, header) \ ++ VM_LEAF_BASE(result_type, header) \ + debug_only(JRT_Leaf_Verifier __jlv;) + + + #define JRT_ENTRY_NO_ASYNC(result_type, header) \ + result_type header { \ + ThreadInVMfromJavaNoAsyncException __tiv(thread); \ +- __ENTRY(result_type, header, thread) \ ++ VM_ENTRY_BASE(result_type, header, thread) \ + debug_only(VMEntryWrapper __vew;) + + // Same as JRT Entry but allows for return value after the safepoint +@@ -543,11 +543,11 @@ + assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \ + ThreadInVMfromNative __tiv(thread); \ + debug_only(VMNativeEntryWrapper __vew;) \ +- __ENTRY(result_type, header, thread) ++ VM_ENTRY_BASE(result_type, header, thread) + + + // Ensure that the VMNativeEntryWrapper constructor, which can cause +-// a GC, is called outside the NoHandleMark (set via __QUICK_ENTRY). ++// a GC, is called outside the NoHandleMark (set via VM_QUICK_ENTRY_BASE). + #define JNI_QUICK_ENTRY(result_type, header) \ + extern "C" { \ + result_type JNICALL header { \ +@@ -555,7 +555,7 @@ + assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \ + ThreadInVMfromNative __tiv(thread); \ + debug_only(VMNativeEntryWrapper __vew;) \ +- __QUICK_ENTRY(result_type, header, thread) ++ VM_QUICK_ENTRY_BASE(result_type, header, thread) + + + #define JNI_LEAF(result_type, header) \ +@@ -563,7 +563,7 @@ + result_type JNICALL header { \ + JavaThread* thread=JavaThread::thread_from_jni_environment(env); \ + assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \ +- __LEAF(result_type, header) ++ VM_LEAF_BASE(result_type, header) + + + // Close the routine and the extern "C" +@@ -579,7 +579,7 @@ + JavaThread* thread=JavaThread::thread_from_jni_environment(env); \ + ThreadInVMfromNative __tiv(thread); \ + debug_only(VMNativeEntryWrapper __vew;) \ +- __ENTRY(result_type, header, thread) ++ VM_ENTRY_BASE(result_type, header, thread) + + + #define JVM_ENTRY_NO_ENV(result_type, header) \ +@@ -588,7 +588,7 @@ + JavaThread* thread = (JavaThread*)ThreadLocalStorage::thread(); \ + ThreadInVMfromNative __tiv(thread); \ + debug_only(VMNativeEntryWrapper __vew;) \ +- __ENTRY(result_type, header, thread) ++ VM_ENTRY_BASE(result_type, header, thread) + + + #define JVM_QUICK_ENTRY(result_type, header) \ +@@ -597,14 +597,14 @@ + JavaThread* thread=JavaThread::thread_from_jni_environment(env); \ + ThreadInVMfromNative __tiv(thread); \ + debug_only(VMNativeEntryWrapper __vew;) \ +- __QUICK_ENTRY(result_type, header, thread) ++ VM_QUICK_ENTRY_BASE(result_type, header, thread) + + + #define JVM_LEAF(result_type, header) \ + extern "C" { \ + result_type JNICALL header { \ + VM_Exit::block_if_vm_exited(); \ +- __LEAF(result_type, header) ++ VM_LEAF_BASE(result_type, header) + + + #define JVM_END } }
\ No newline at end of file diff --git a/staging/openjdk6/nonreparenting-wm.diff b/staging/openjdk6/nonreparenting-wm.diff new file mode 100644 index 000000000..65fa66e89 --- /dev/null +++ b/staging/openjdk6/nonreparenting-wm.diff @@ -0,0 +1,60 @@ +diff --git a/jdk/src/solaris/classes/sun/awt/X11/XWM.java b/jdk/src/solaris/classes/sun/awt/X11/XWM.java +index 68d1ff7..878327e 100644 +--- openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java ++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java +@@ -99,7 +99,8 @@ + METACITY_WM = 11, + COMPIZ_WM = 12, + LG3D_WM = 13, +- MUTTER_WM = 14; ++ MUTTER_WM = 14, ++ OTHER_NONREPARENTING_WM = 15; + public String toString() { + switch (WMID) { + case NO_WM: +@@ -564,7 +567,7 @@ class XWM implements MWMConstants, XUtilConstants { + } + + static boolean isNonReparentingWM() { +- return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM); ++ return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM || XWM.getWMID() == XWM.OTHER_NONREPARENTING_WM); + } + + /* +@@ -764,9 +767,17 @@ class XWM implements MWMConstants, XUtilConstants { + * supports WIN or _NET wm spec. + */ + else if (l_net_protocol.active()) { +- awt_wmgr = XWM.OTHER_WM; ++ if (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) { ++ awt_wmgr = XWM.OTHER_NONREPARENTING_WM; ++ } else { ++ awt_wmgr = XWM.OTHER_WM; ++ } + } else if (win.active()) { +- awt_wmgr = XWM.OTHER_WM; ++ if (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) { ++ awt_wmgr = XWM.OTHER_NONREPARENTING_WM; ++ } else { ++ awt_wmgr = XWM.OTHER_WM; ++ } + } + /* + * Check for legacy WMs. +@@ -777,6 +788,8 @@ class XWM implements MWMConstants, XUtilConstants { + awt_wmgr = XWM.MOTIF_WM; + } else if (isOpenLook()) { + awt_wmgr = XWM.OPENLOOK_WM; ++ } else if (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) { ++ awt_wmgr = XWM.OTHER_NONREPARENTING_WM; + } else { + awt_wmgr = XWM.OTHER_WM; + } +@@ -1298,6 +1311,7 @@ class XWM implements MWMConstants, XUtilConstants { + res = new Insets(28, 6, 6, 6); + break; + case NO_WM: ++ case OTHER_NONREPARENTING_WM: + case LG3D_WM: + res = zeroInsets; + break; diff --git a/staging/openjdk6/openjdk6.install b/staging/openjdk6/openjdk6.install new file mode 100644 index 000000000..653c8fe2f --- /dev/null +++ b/staging/openjdk6/openjdk6.install @@ -0,0 +1,24 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor 2> /dev/null + if [ ! -f /etc/ssl/certs/java/cacerts ]; then + /usr/sbin/init-jks-keystore + fi + echo "when you use a non-reparenting window manager" + echo "set _JAVA_AWT_WM_NONREPARENTING=1 in" + echo "/etc/profile.d/openjdk6.sh" +# update-desktop-database -q +} + +post_upgrade() { + xdg-icon-resource forceupdate --theme hicolor 2> /dev/null + if [ ! -f /etc/ssl/certs/java/cacerts ]; then + /usr/sbin/init-jks-keystore + fi +# update-desktop-database -q +} + + +post_remove() { + xdg-icon-resource forceupdate --theme hicolor 2> /dev/null +# update-desktop-database -q +} diff --git a/staging/openjdk6/openjdk6.profile b/staging/openjdk6/openjdk6.profile new file mode 100644 index 000000000..9da4421ef --- /dev/null +++ b/staging/openjdk6/openjdk6.profile @@ -0,0 +1,6 @@ +export J2SDKDIR=/usr/lib/jvm/java-6-openjdk +export J2REDIR=$J2SDKDIR/jre +export JAVA_HOME=/usr/lib/jvm/java-6-openjdk + +# enable this for non-reparenting window managers +#export _JAVA_AWT_WM_NONREPARENTING=1 diff --git a/staging/openjdk6/openjdk6.profile.csh b/staging/openjdk6/openjdk6.profile.csh new file mode 100644 index 000000000..3cb15fd49 --- /dev/null +++ b/staging/openjdk6/openjdk6.profile.csh @@ -0,0 +1,6 @@ +setenv J2SDKDIR "/usr/lib/jvm/java-6-openjdk" +setenv J2REDIR "$J2SDKDIR/jre" +setenv JAVA_HOME "/usr/lib/jvm/java-6-openjdk" + +# enable this for non-reparenting window managers +#setenv _JAVA_AWT_WM_NONREPARENTING 1 diff --git a/staging/perl-tk/PKGBUILD b/staging/perl-tk/PKGBUILD new file mode 100644 index 000000000..5e195a545 --- /dev/null +++ b/staging/perl-tk/PKGBUILD @@ -0,0 +1,41 @@ +# $Id: PKGBUILD 146993 2012-01-20 05:40:57Z eric $ +# Maintainer: François Charette <francois ατ archlinux δοτ org> +# Contributor: Jason Chu <jchu@xentac.net> +# Contributor: Juergen Hoetzel <juergen@archlinux.org> + +pkgname=perl-tk +_cpanname=Tk +pkgver=804.030 +pkgrel=2 +pkgdesc="A graphical user interface toolkit for Perl" +arch=('i686' 'x86_64') +url="http://search.cpan.org/dist/${_cpanname}" +license=('PerlArtistic' 'GPL' 'custom') +depends=('libpng' 'libjpeg' 'tk' 'perl') +options=('!emptydirs') +replaces=('perltk') +provides=('perltk') +source=(http://www.cpan.org/authors/id/S/SR/SREZIC/${_cpanname}-${pkgver}.tar.gz) +md5sums=('13275e85f99ee467a86d9598a437abff') + +build() { + cd "$srcdir/${_cpanname}-$pkgver" + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor + make +} + +#check() { +# cd "$srcdir/${_cpanname}-$pkgver" +# make test +#} + +package() { + cd "$srcdir/${_cpanname}-$pkgver" + make install DESTDIR="$pkgdir" + + # license + install -D -m644 pTk/license.terms \ + "${pkgdir}/usr/share/licenses/${pkgname}/tk.license" + install -D -m644 pTk/Tix.license \ + "${pkgdir}/usr/share/licenses/${pkgname}/tix.license" +} diff --git a/staging/poppler/PKGBUILD b/staging/poppler/PKGBUILD new file mode 100644 index 000000000..a34a01a83 --- /dev/null +++ b/staging/poppler/PKGBUILD @@ -0,0 +1,83 @@ +# $Id: PKGBUILD 147049 2012-01-21 04:25:49Z eric $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgbase=poppler +pkgname=('poppler' 'poppler-glib' 'poppler-qt') +pkgver=0.18.2 +pkgrel=2 +arch=(i686 x86_64) +license=('GPL') +makedepends=('libjpeg' 'gcc-libs' 'cairo' 'fontconfig' 'openjpeg' 'gtk2' 'qt' 'pkgconfig' 'lcms' 'gobject-introspection') +options=('!libtool' '!emptydirs') +url="http://poppler.freedesktop.org/" +_testtag=0d2bfd4af4c76a3bac27ccaff793d9129df7b57a +source=(http://poppler.freedesktop.org/${pkgbase}-${pkgver}.tar.gz + http://cgit.freedesktop.org/poppler/test/snapshot/test-${_testtag}.tar.bz2 + git-fixes.patch) +md5sums=('38616927823ef01937aab26872e957e4' + '9dc64c254a31e570507bdd4ad4ba629a' + 'af56b7b1b24a08f7498a0c7f5e862b93') + +build() { + cd "${srcdir}/${pkgbase}-${pkgver}" + sed -i -e '/AC_PATH_XTRA/d' configure.ac + patch -Np1 -i "${srcdir}/git-fixes.patch" + + autoreconf -fi + + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static \ + --enable-cairo-output \ + --enable-xpdf-headers \ + --enable-libjpeg --enable-zlib \ + --enable-poppler-qt4 \ + --enable-poppler-glib + make +} + +check() { + cd "${srcdir}" + ln -sf test-${_testtag} test + cd ${pkgbase}-${pkgver} + LANG=en_US.UTF8 make check +} + +package_poppler() { + pkgdesc="PDF rendering library based on xpdf 3.0" + depends=('libjpeg' 'gcc-libs' 'cairo' 'fontconfig' 'openjpeg' 'lcms' 'poppler-data') + conflicts=("poppler-qt3<${pkgver}") + + cd "${srcdir}/${pkgbase}-${pkgver}" + sed -e 's/^glib_subdir =.*/glib_subdir =/' \ + -e 's/^qt4_subdir =.*/qt4_subdir =/' -i Makefile + make DESTDIR="${pkgdir}" install + + rm -f "${pkgdir}"/usr/lib/pkgconfig/poppler-{glib,qt4}.pc +} + +package_poppler-glib() { + pkgdesc="Poppler glib bindings" + depends=("poppler=${pkgver}" 'glib2') + + cd "${srcdir}/${pkgbase}-${pkgver}/poppler" + make DESTDIR="${pkgdir}" install-libLTLIBRARIES + cd "${srcdir}/${pkgbase}-${pkgver}/glib" + make DESTDIR="${pkgdir}" install + install -m755 -d "${pkgdir}/usr/lib/pkgconfig" + install -m644 ../poppler-glib.pc "${pkgdir}/usr/lib/pkgconfig/" + rm -f "${pkgdir}"/usr/lib/libpoppler.* + rm -f "${pkgdir}/usr/bin/poppler-glib-demo" +} + +package_poppler-qt() { + pkgdesc="Poppler Qt bindings" + depends=("poppler=${pkgver}" 'qt') + + cd "${srcdir}/${pkgbase}-${pkgver}/poppler" + make DESTDIR="${pkgdir}" install-libLTLIBRARIES + cd "${srcdir}/${pkgbase}-${pkgver}/qt4" + make DESTDIR="${pkgdir}" install + install -m755 -d "${pkgdir}/usr/lib/pkgconfig" + install -m644 ../poppler-qt4.pc "${pkgdir}/usr/lib/pkgconfig/" + rm -f "${pkgdir}"/usr/lib/libpoppler.* +} diff --git a/staging/poppler/git-fixes.patch b/staging/poppler/git-fixes.patch new file mode 100644 index 000000000..24a66b84f --- /dev/null +++ b/staging/poppler/git-fixes.patch @@ -0,0 +1,110 @@ +From 74f4299e8f9e2d204979479f6579dd784db678a4 Mon Sep 17 00:00:00 2001 +From: Albert Astals Cid <aacid@kde.org> +Date: Sun, 04 Dec 2011 16:29:45 +0000 +Subject: Do not fail if we are trying to save a file with Encrypt but that we have not modified at all + +Fixes KDE bug #288045 +(cherry picked from commit 63c942a45227ef28fb94ef4765171d9812fffafa) +--- +diff --git a/poppler/PDFDoc.cc b/poppler/PDFDoc.cc +index 01d2759..2758206 100644 +--- a/poppler/PDFDoc.cc ++++ b/poppler/PDFDoc.cc +@@ -707,35 +707,44 @@ int PDFDoc::saveAs(GooString *name, PDFWriteMode mode) { + + int PDFDoc::saveAs(OutStream *outStr, PDFWriteMode mode) { + +- // we don't support files with Encrypt at the moment ++ // find if we have updated objects ++ GBool updated = gFalse; ++ for(int i=0; i<xref->getNumObjects(); i++) { ++ if (xref->getEntry(i)->updated) { ++ updated = gTrue; ++ break; ++ } ++ } ++ ++ // we don't support rewriting files with Encrypt at the moment + Object obj; + xref->getTrailerDict()->getDict()->lookupNF("Encrypt", &obj); + if (!obj.isNull()) + { + obj.free(); +- return errEncrypted; ++ if (!updated && mode == writeStandard) { ++ // simply copy the original file ++ saveWithoutChangesAs (outStr); ++ } else { ++ return errEncrypted; ++ } + } +- obj.free(); ++ else ++ { ++ obj.free(); + +- if (mode == writeForceRewrite) { +- saveCompleteRewrite(outStr); +- } else if (mode == writeForceIncremental) { +- saveIncrementalUpdate(outStr); +- } else { // let poppler decide +- // find if we have updated objects +- GBool updated = gFalse; +- for(int i=0; i<xref->getNumObjects(); i++) { +- if (xref->getEntry(i)->updated) { +- updated = gTrue; +- break; ++ if (mode == writeForceRewrite) { ++ saveCompleteRewrite(outStr); ++ } else if (mode == writeForceIncremental) { ++ saveIncrementalUpdate(outStr); ++ } else { // let poppler decide ++ if(updated) { ++ saveIncrementalUpdate(outStr); ++ } else { ++ // simply copy the original file ++ saveWithoutChangesAs (outStr); + } + } +- if(updated) { +- saveIncrementalUpdate(outStr); +- } else { +- // simply copy the original file +- saveWithoutChangesAs (outStr); +- } + } + + return errNone; +-- +cgit v0.9.0.2-2-gbebe +From 03544e2f602319f0b381f5f357e14cc2cc77d2c1 Mon Sep 17 00:00:00 2001 +From: Albert Astals Cid <aacid@kde.org> +Date: Tue, 06 Dec 2011 22:21:15 +0000 +Subject: include strings.h as we use memcpy + +Fixes bug 43558 +(cherry picked from commit 388d72ac27ae98fe3a1ebd21760f2b0fa0249a9b) +--- +diff --git a/goo/PNGWriter.cc b/goo/PNGWriter.cc +index f88c3a7..1fb8cab 100644 +--- a/goo/PNGWriter.cc ++++ b/goo/PNGWriter.cc +@@ -6,7 +6,7 @@ + // + // Copyright (C) 2009 Warren Toomey <wkt@tuhs.org> + // Copyright (C) 2009 Shen Liang <shenzhuxi@gmail.com> +-// Copyright (C) 2009 Albert Astals Cid <aacid@kde.org> ++// Copyright (C) 2009, 2011 Albert Astals Cid <aacid@kde.org> + // Copyright (C) 2009 Stefan Thomas <thomas@eload24.com> + // Copyright (C) 2010, 2011 Adrian Johnson <ajohnson@redneon.com> + // Copyright (C) 2011 Thomas Klausner <wiz@danbala.tuwien.ac.at> +@@ -19,6 +19,7 @@ + + #include <zlib.h> + #include <stdlib.h> ++#include <string.h> + + #include "poppler/Error.h" + #include "goo/gmem.h" +-- +cgit v0.9.0.2-2-gbebe diff --git a/staging/qiv/PKGBUILD b/staging/qiv/PKGBUILD new file mode 100644 index 000000000..520b5847e --- /dev/null +++ b/staging/qiv/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 147092 2012-01-21 19:18:31Z eric $ +# Contributor: Tom Newsom <Jeepster@gmx.co.uk> +# Maintainer: Paul Mattal <paul@archlinux.org> + +pkgname=qiv +pkgver=2.2.4 +pkgrel=2 +pkgdesc="Quick Image Viewer (qiv) is a very small and fast GDK/Imlib image viewer" +arch=('i686' 'x86_64') +url="http://spiegl.de/qiv/" +license=('GPL2') +depends=('file' 'gtk2' 'imlib2') +source=(http://spiegl.de/qiv/download/$pkgname-$pkgver.tgz) +md5sums=('1425f89c90f9c045858fccf24d894c97') + +build() { + cd "$srcdir/$pkgname-$pkgver" + make +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + install -D -m 0755 qiv "$pkgdir/usr/bin/qiv" + install -D -m 0644 qiv.1 "$pkgdir/usr/share/man/man1/qiv.1" +} diff --git a/staging/streamtuner/PKGBUILD b/staging/streamtuner/PKGBUILD new file mode 100644 index 000000000..d25ae0451 --- /dev/null +++ b/staging/streamtuner/PKGBUILD @@ -0,0 +1,49 @@ +# $Id: PKGBUILD 147014 2012-01-20 18:50:13Z andyrtr $ +# Contributor: Greg Grabinski <greg@grabinski.ch> +# Maintainer: ndreas Radke <andyrtr@archlinux.org> + +pkgname=streamtuner +pkgver=0.99.99 +pkgrel=12 +pkgdesc="A stream directory browser" +arch=('i686' 'x86_64') +url="http://www.nongnu.org/streamtuner/" +license=('custom') +depends=('taglib' 'libxml2' 'gtk2' 'curl>=7.16.2' 'pygtk>=2.13.0-2') +conflicts=('streamtuner-live365') +replaces=('streamtuner-live365') +source=(http://savannah.nongnu.org/download/streamtuner/$pkgname-$pkgver.tar.gz \ + http://savannah.nongnu.org/download/streamtuner/streamtuner-0.99.99-live365.diff \ + http://savannah.nongnu.org/download/streamtuner/streamtuner-0.99.99-pygtk-2.6.diff + streamtuner-0.99.99-shoutcast.diff + shoutcast-redesign-patch.diff) +options=('!libtool' '!emptydirs') +md5sums=('2027b7c34e85b594524b0b4351c14362' + '8aa1994a849b05d2b8fffbda702b8a25' + '7aff45a41c60358cb2332c7ce644f661' + '1eab6edce130e1a1e5f208cd3ed6766a' + '8a3a17a1719a79353d6ad7ac8564947b') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + patch -p0 -i ${srcdir}/streamtuner-0.99.99-live365.diff + patch -p0 -i ${srcdir}/streamtuner-0.99.99-pygtk-2.6.diff + # fix http://bugs.archlinux.org/task/10308 + patch -p0 -i ${srcdir}/streamtuner-0.99.99-shoutcast.diff + # fix http://bugs.archlinux.org/task/11463 + patch -p1 -i ${srcdir}/shoutcast-redesign-patch.diff + + # python2 fixes + sed -i "s:^for ac_prog in python:for ac_prog in python2:" ${srcdir}/${pkgname}-${pkgver}/configure + + ./configure --prefix=/usr + make +} + +package() { + cd ${srcdir}/${pkgname}-${pkgver} + make prefix=${pkgdir}/usr install + + #Add license file + install -Dm0644 ${srcdir}/${pkgname}-${pkgver}/COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING +} diff --git a/staging/streamtuner/shoutcast-redesign-patch.diff b/staging/streamtuner/shoutcast-redesign-patch.diff new file mode 100644 index 000000000..644e2273e --- /dev/null +++ b/staging/streamtuner/shoutcast-redesign-patch.diff @@ -0,0 +1,12 @@ +diff -uar streamtuner-0.99.99-orig/src/plugins/shoutcast/shoutcast.c streamtuner-0.99.99-patched/src/plugins/shoutcast/shoutcast.c +--- streamtuner-0.99.99-orig/src/plugins/shoutcast/shoutcast.c 2008-09-12 18:04:00.229785732 -0400 ++++ streamtuner-0.99.99-patched/src/plugins/shoutcast/shoutcast.c 2008-09-12 18:05:56.716440720 -0400 +@@ -37,7 +37,7 @@ + + /*** cpp *********************************************************************/ + +-#define SHOUTCAST_ROOT "http://www.shoutcast.com/" ++#define SHOUTCAST_ROOT "http://classic.shoutcast.com/" + + #define MAX_STREAMS_PER_PAGE 100 /* enforced by SHOUTcast */ + diff --git a/staging/streamtuner/streamtuner-0.99.99-shoutcast.diff b/staging/streamtuner/streamtuner-0.99.99-shoutcast.diff new file mode 100644 index 000000000..e7fcbca94 --- /dev/null +++ b/staging/streamtuner/streamtuner-0.99.99-shoutcast.diff @@ -0,0 +1,41 @@ +--- src/plugins/shoutcast/shoutcast.c.orig 2004-12-19 15:21:00.000000000 +0000 ++++ src/plugins/shoutcast/shoutcast.c 2008-03-16 10:39:24.000000000 +0000 +@@ -94,6 +94,8 @@ + + GNode *parent_node; + SHOUTcastStream *stream; ++ ++ int parse_genres; + } ReloadInfo; + + /*** variable declarations ***************************************************/ +@@ -518,6 +520,7 @@ + info.npages = 0; + info.parent_node = NULL; + info.stream = NULL; ++ info.parse_genres = 0; + + status = st_transfer_session_get_by_line(session, + url, +@@ -565,10 +568,16 @@ + info->stream = stream_new_cb(NULL); + info->stream->url_postfix = st_sgml_ref_expand_len(s1, s2 - s1); + } +- else if (info->page < 2 +- && (((s1 = st_str_has_prefix_span(line, "\t<OPTION VALUE=\"")) +- || (s1 = st_str_has_prefix_span(line, "\t\t<OPTION VALUE=\""))) +- && (s2 = strstr(s1, "\">")))) ++ else if (info->page < 2 && (s1 = st_strstr_span(line, "<OPTION VALUE=\"TopTen\">"))) ++ { ++ info->parse_genres = 1; ++ } ++ else if (info->page < 2 && info->parse_genres == 1 && (s1 = st_strstr_span(line, "</SELECT>"))) ++ { ++ info->parse_genres = 0; ++ } ++ else if (info->page < 2 && info->parse_genres == 1 ++ && ((s1 = st_strstr_span(line, "<OPTION VALUE=\"")) && (s2 = strstr(s1, "\">")))) + { + STCategory *category; + GNode *node; + diff --git a/staging/transcode/PKGBUILD b/staging/transcode/PKGBUILD new file mode 100644 index 000000000..82e0d15fc --- /dev/null +++ b/staging/transcode/PKGBUILD @@ -0,0 +1,57 @@ +# $Id: PKGBUILD 147020 2012-01-20 20:01:07Z giovanni $ +# Maintainer: +# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca> +# Contributor: roberto <roberto@archlinux.org> + +pkgname=transcode +_sripver=0.3-4 +pkgver=1.1.7 +pkgrel=2 +pkgdesc="A video/DVD ripper and encoder for the terminal/console" +arch=('i686' 'x86_64') +url="http://tcforge.berlios.de/" +license=('GPL') +depends=('gawk' 'imagemagick' 'lzo2' 'libdvdread' 'ffmpeg' 'mjpegtools' + 'libmpeg2' 'libxaw' 'libxml2' 'libxv' 'a52dec') +makedepends=('nasm') +options=('!libtool') +source=(https://bitbucket.org/france/transcode-tcforge/downloads/${pkgname}-${pkgver}.tar.bz2 + http://downloads.sourceforge.net/sourceforge/subtitleripper/subtitleripper-${_sripver}.tgz + subtitleripper-0.3.4-linkingorder.patch subtitleripper-0.3.4-respect-ldflags.patch) +sha1sums=('e35df68b960eb56ef0a59a4cdbed1491be56aee6' + 'd93ff3578dd5f722c8f4ef16bc0903eec5781a0d' + 'fa05aa1770d9350d90b7cf315aa7c4a1fd921ac7' + '591943a33235342a66c3df0625a164a1479c09ae') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr \ + --disable-sse --disable-sse2 --disable-altivec --enable-mmx \ + --enable-lame --enable-ogg --enable-vorbis --enable-theora \ + --enable-libdv --enable-libxml2 --enable-v4l \ + --enable-imagemagick --enable-libjpeg --enable-lzo --enable-mjpegtools \ + --enable-sdl --enable-freetype2 --enable-a52 --enable-libpostproc \ + --enable-xvid --enable-x264 --enable-alsa --enable-libmpeg2 --enable-libmpeg2convert + make + + cd "${srcdir}/subtitleripper" + patch -p1 -i "${srcdir}/subtitleripper-0.3.4-linkingorder.patch" + patch -p1 -i "${srcdir}/subtitleripper-0.3.4-respect-ldflags.patch" + sed -e 's|^\(.*lppm.*\)$|#\1|' \ + -e 's|^\(.*D_HAVE_LIB_PPM.*\)$|#\1|' \ + -e 's/DEFINES :=/DEFINES = -DHAVE_GETLINE/' \ + -i Makefile + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + + cd "${srcdir}/subtitleripper" + install -m 755 pgm2txt "${pkgdir}/usr/bin/" + install -m 755 srttool "${pkgdir}/usr/bin/" + install -m 755 subtitle2pgm "${pkgdir}/usr/bin/" + install -m 755 subtitle2vobsub "${pkgdir}/usr/bin/" + install -m 755 vobsub2pgm "${pkgdir}/usr/bin/" +} diff --git a/staging/transcode/subtitleripper-0.3.4-linkingorder.patch b/staging/transcode/subtitleripper-0.3.4-linkingorder.patch new file mode 100644 index 000000000..7efe22346 --- /dev/null +++ b/staging/transcode/subtitleripper-0.3.4-linkingorder.patch @@ -0,0 +1,28 @@ +Index: subtitleripper/Makefile +=================================================================== +--- subtitleripper.orig/Makefile ++++ subtitleripper/Makefile +@@ -70,19 +70,19 @@ vobsub2pgm.o: vobsub2pgm.c vobsub.h spud + # Target + subtitle2pgm: subtitle2pgm.o spudec.o + @echo "Linking $@" +- @$(CC) $(LIBS) $^ -o $@ ++ @$(CC) $^ -o $@ $(LIBS) + + subtitle2vobsub: subtitle2vobsub.o vobsub.o + @echo "Linking $@" +- @$(CC) $(LIBS) $^ -o $@ ++ @$(CC) $^ -o $@ $(LIBS) + + srttool: srttool.o + @echo "Linking $@" +- @$(CC) $(LIBS) -g $^ -o $@ ++ @$(CC) -g $^ -o $@ $(LIBS) + + vobsub2pgm: vobsub2pgm.o vobsub.o spudec.o + @echo "Linking $@" +- @$(CC) $(LIBS) -g $^ -o $@ ++ @$(CC) -g $^ -o $@ $(LIBS) + + .PHONY: clean dist rpm + clean: diff --git a/staging/transcode/subtitleripper-0.3.4-respect-ldflags.patch b/staging/transcode/subtitleripper-0.3.4-respect-ldflags.patch new file mode 100644 index 000000000..2af11d257 --- /dev/null +++ b/staging/transcode/subtitleripper-0.3.4-respect-ldflags.patch @@ -0,0 +1,28 @@ +Index: subtitleripper/Makefile +=================================================================== +--- subtitleripper.orig/Makefile ++++ subtitleripper/Makefile +@@ -70,19 +70,19 @@ vobsub2pgm.o: vobsub2pgm.c vobsub.h spud + # Target + subtitle2pgm: subtitle2pgm.o spudec.o + @echo "Linking $@" +- @$(CC) $^ -o $@ $(LIBS) ++ @$(CC) $(LDFLAGS) $^ -o $@ $(LIBS) + + subtitle2vobsub: subtitle2vobsub.o vobsub.o + @echo "Linking $@" +- @$(CC) $^ -o $@ $(LIBS) ++ @$(CC) $(LDFLAGS) $^ -o $@ $(LIBS) + + srttool: srttool.o + @echo "Linking $@" +- @$(CC) -g $^ -o $@ $(LIBS) ++ @$(CC) $(LDFLAGS) $^ -o $@ $(LIBS) + + vobsub2pgm: vobsub2pgm.o vobsub.o spudec.o + @echo "Linking $@" +- @$(CC) -g $^ -o $@ $(LIBS) ++ @$(CC) $(LDFLAGS) $^ -o $@ $(LIBS) + + .PHONY: clean dist rpm + clean: diff --git a/staging/tuxpuck/PKGBUILD b/staging/tuxpuck/PKGBUILD new file mode 100644 index 000000000..19f50020a --- /dev/null +++ b/staging/tuxpuck/PKGBUILD @@ -0,0 +1,41 @@ +# $Id: PKGBUILD 147018 2012-01-20 19:49:39Z giovanni $ +# Maintainer: Tobias Powalowski <tpowa@archlinux.org> + +pkgname=tuxpuck +pkgver=0.8.2 +pkgrel=5 +pkgdesc="Airhockey with tux" +arch=('i686' 'x86_64') +url="http://home.no.net/munsuun/tuxpuck/" +license=('GPL2') +depends=('libjpeg' 'sdl' 'libpng' 'libvorbis') +makedepends=('freetype2') +options=('!makeflags') +source=("http://ftp.de.debian.org/debian/pool/main/t/${pkgname}/${pkgname}_$pkgver.orig.tar.gz" + 'tuxpuck-0.8.2-ldflags.patch' + 'tuxpuck-0.8.2-libpng15.patch') +md5sums=('fc839abc2b1f3eafae397e1ed6487079' + 'cb914d211bf3f519b7700fda180612b0' + 'a4da530d670a0c30ac0840aab1db0dca') + +build() { + cd $srcdir/$pkgname-$pkgver + + sed -i 's|usr/man|usr/share/man|' Makefile + sed -i -e 's/-Werror//' \ + -e '/^CC/d' \ + Makefile \ + utils/Makefile \ + data/Makefile + + patch -Np0 -i "${srcdir}/tuxpuck-0.8.2-ldflags.patch" + patch -Np0 -i "${srcdir}/tuxpuck-0.8.2-libpng15.patch" + + make +} + +package() { + cd $srcdir/$pkgname-$pkgver + + make DESTDIR=$pkgdir install +} diff --git a/staging/tuxpuck/tuxpuck-0.8.2-ldflags.patch b/staging/tuxpuck/tuxpuck-0.8.2-ldflags.patch new file mode 100644 index 000000000..28fcef48a --- /dev/null +++ b/staging/tuxpuck/tuxpuck-0.8.2-ldflags.patch @@ -0,0 +1,11 @@ +--- Makefile.old 2010-10-05 10:34:57.000000000 +0200 ++++ Makefile 2010-10-05 10:35:28.000000000 +0200 +@@ -20,7 +20,7 @@ + + $(NAME) : $(OBJS) + cd data; $(MAKE) +- $(CC) $(CFLAGS) $(OBJS) data/libdata.a `sdl-config --libs` -lm -lpng \ ++ $(CC) $(LDFLAGS) $(CFLAGS) $(OBJS) data/libdata.a `sdl-config --libs` -lm -lpng \ + -ljpeg -lz -lvorbisfile -lvorbis -logg -o $(NAME) + + w32icon.o : data/icons/tuxpuck.ico diff --git a/staging/tuxpuck/tuxpuck-0.8.2-libpng15.patch b/staging/tuxpuck/tuxpuck-0.8.2-libpng15.patch new file mode 100644 index 000000000..ca9539f39 --- /dev/null +++ b/staging/tuxpuck/tuxpuck-0.8.2-libpng15.patch @@ -0,0 +1,63 @@ +--- png.c.old 2011-09-14 16:25:54.415338149 +0200 ++++ png.c 2011-09-14 17:41:02.190803110 +0200 +@@ -38,6 +38,8 @@ + png_color_16 *transv; + SDL_RWops *src = NULL; + Uint32 size; ++ int num_palette; ++ png_colorp png_palette; + + memcpy(&size, data, sizeof(Uint32)); + if (memcounter) +@@ -74,7 +76,7 @@ + * the normal method of doing things with libpng). REQUIRED unless you + * set up your own error handlers in png_create_read_struct() earlier. + */ +- if (setjmp(png_ptr->jmpbuf)) { ++ if (setjmp(png_jmpbuf(png_ptr))) { + SDL_SetError("Error reading the PNG file."); + goto done; + } +@@ -142,9 +144,9 @@ + Rmask = 0x000000FF; + Gmask = 0x0000FF00; + Bmask = 0x00FF0000; +- Amask = (info_ptr->channels == 4) ? 0xFF000000 : 0; ++ Amask = (png_get_channels(png_ptr, info_ptr) == 4) ? 0xFF000000 : 0; + } else { +- int s = (info_ptr->channels == 4) ? 0 : 8; ++ int s = (png_get_channels(png_ptr, info_ptr) == 4) ? 0 : 8; + Rmask = 0xFF000000 >> s; + Gmask = 0x00FF0000 >> s; + Bmask = 0x0000FF00 >> s; +@@ -152,7 +154,7 @@ + } + } + surface = SDL_AllocSurface(SDL_SWSURFACE, width, height, +- bit_depth * info_ptr->channels, Rmask, Gmask, ++ bit_depth * png_get_channels(png_ptr, info_ptr), Rmask, Gmask, + Bmask, Amask); + if (surface == NULL) { + SDL_SetError("Out of memory"); +@@ -197,12 +199,15 @@ + palette->colors[i].g = i; + palette->colors[i].b = i; + } +- } else if (info_ptr->num_palette > 0) { +- palette->ncolors = info_ptr->num_palette; +- for (i = 0; i < info_ptr->num_palette; ++i) { +- palette->colors[i].b = info_ptr->palette[i].blue; +- palette->colors[i].g = info_ptr->palette[i].green; +- palette->colors[i].r = info_ptr->palette[i].red; ++ } else { ++ png_get_PLTE(png_ptr, info_ptr, &png_palette, &num_palette); ++ if (num_palette > 0) { ++ palette->ncolors = num_palette; ++ for (i = 0; i < num_palette; ++i) { ++ palette->colors[i].b = png_palette[i].blue; ++ palette->colors[i].g = png_palette[i].green; ++ palette->colors[i].r = png_palette[i].red; ++ } + } + } + } diff --git a/staging/vigra/PKGBUILD b/staging/vigra/PKGBUILD new file mode 100644 index 000000000..ebc7f60a6 --- /dev/null +++ b/staging/vigra/PKGBUILD @@ -0,0 +1,69 @@ +# $Id: PKGBUILD 147002 2012-01-20 14:21:18Z andyrtr $ +# Maintainer: AndyRTR <andyrtr@archlinux.org> +# Contributor: Lukas Jirkovsky <l.jirkovsky@gmail.com> + +pkgbase=vigra +pkgname=('vigra' 'vigra-doc') +pkgver=1.8.0 +pkgrel=3 +arch=('i686' 'x86_64') +url="http://hci.iwr.uni-heidelberg.de/vigra/" +license=('custom:MIT') +makedepends=(# runtime deps + 'libpng>=1.5.7' 'libtiff>=4.0.0' 'gcc-libs' 'sh' 'hdf5>=1.8.7' 'fftw' + # additional makedeps + 'cmake' 'python-nose' 'doxygen' 'python-sphinx' 'boost' 'python-numpy') +options=('!libtool') +source=(http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/${pkgname}-${pkgver}-src.tar.gz + vigra-1.7.1.gcc460.patch) +md5sums=('15c5544448e529ee60020758ab6be264' + '25ef8bc26bc38ee67e5b512d2acd0166') +sha1sums=('09f1d506c2748ebeb7d9f1c77ce387f9e7b837d2' + '1de6381a74dd136ea25df5a27f249187b0dbd17e') + +build() { + cd "${srcdir}"/${pkgbase}-${pkgver} + patch -Np1 -i ${srcdir}/vigra-1.7.1.gcc460.patch + cmake -DCMAKE_INSTALL_PREFIX=/usr \ + -DPYTHON_EXECUTABLE=/usr/bin/python2 \ + -DWITH_VIGRANUMPY=1 \ + -DDOCINSTALL=share/doc + make +} + +check() { + cd "${srcdir}"/${pkgname}-${pkgver} + make -k check || /bin/true # i686 fails +} + +package_vigra() { + pkgdesc="Computer vision library" + depends=('libpng>=1.5.7' 'libtiff>=4.0.0' 'gcc-libs' 'sh' 'hdf5>=1.8.7' 'fftw') + optdepends=('python2: for python bindings' + 'boost-libs: for python bindings') + + cd "${srcdir}"/${pkgbase}-${pkgver} + make DESTDIR="${pkgdir}" install + # license + install -D -m644 LICENSE.txt "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE + + # remove doc + rm -rf "${pkgdir}"/usr/share/doc + + #fix shebang for python2 + sed -i 's|python$|python2|' "$pkgdir"/usr/bin/vigra-config +} + +package_vigra-doc() { + pkgdesc="Computer vision library - documentation and examples" + #depends=('vigra') + #arch=('any') + + cd "${srcdir}"/${pkgbase}-${pkgver} + make DESTDIR="${pkgdir}" install + # cleanup + rm -rf "${pkgdir}"/usr/{bin,include,lib} + + # license + install -D -m644 LICENSE.txt "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE +} diff --git a/staging/vigra/vigra-1.7.1.gcc460.patch b/staging/vigra/vigra-1.7.1.gcc460.patch new file mode 100644 index 000000000..46f194dbc --- /dev/null +++ b/staging/vigra/vigra-1.7.1.gcc460.patch @@ -0,0 +1,33 @@ +diff -baur vigra-1.7.1.old/include/vigra/random_forest.hxx vigra-1.7.1/include/vigra/random_forest.hxx +--- vigra-1.7.1.old/include/vigra/random_forest.hxx 2010-12-03 17:40:34.000000000 +0000 ++++ vigra-1.7.1/include/vigra/random_forest.hxx 2011-01-28 00:16:32.000000000 +0000 +@@ -43,6 +43,7 @@ + #include <set> + #include <list> + #include <numeric> ++#include <stddef.h> + #include "mathutil.hxx" + #include "array_vector.hxx" + #include "sized_int.hxx" +diff -baur vigra-1.7.1.old/include/vigra/sifImport.hxx vigra-1.7.1/include/vigra/sifImport.hxx +--- vigra-1.7.1.old/include/vigra/sifImport.hxx 2010-12-03 17:40:34.000000000 +0000 ++++ vigra-1.7.1/include/vigra/sifImport.hxx 2011-01-28 00:23:31.000000000 +0000 +@@ -57,6 +57,7 @@ + #include <fstream> + #include <cstring> + #include <vector> ++#include <stddef.h> + #include "vigra/multi_array.hxx" + + namespace vigra { +diff -baur vigra-1.7.1.old/include/vigra/multi_iterator.hxx vigra-1.7.1/include/vigra/multi_iterator.hxx +--- vigra-1.7.1.old/include/vigra/multi_iterator.hxx 2010-12-03 17:40:34.000000000 +0000 ++++ vigra-1.7.1/include/vigra/multi_iterator.hxx 2011-01-28 00:23:31.000000000 +0000 +@@ -41,6 +41,7 @@ + #define VIGRA_MULTI_ITERATOR_HXX + + #include <sys/types.h> ++#include <stddef.h> + #include "tinyvector.hxx" + #include "iteratortags.hxx" + |