From 44209e62f1f8f0e9efe048846bb09e6eb51ea9f4 Mon Sep 17 00:00:00 2001 From: Nicolás Reynolds Date: Thu, 29 May 2014 04:09:56 +0000 Subject: Thu May 29 04:04:14 UTC 2014 --- community/canorus/PKGBUILD | 8 +- community/darkhttpd/PKGBUILD | 7 +- community/gmtk/PKGBUILD | 10 +- community/gsoap/PKGBUILD | 6 +- community/libuv/PKGBUILD | 15 +- community/libuv/inet_pton6.patch | 146 +++ community/qtcurve/PKGBUILD | 17 +- community/xmms2/PKGBUILD | 8 +- core/gcc/PKGBUILD | 17 +- core/gcc/gcc-4.9-tree-ssa-threadedge.patch | 38 - core/mpfr/PKGBUILD | 6 +- core/mpfr/mpfr-3.1.2-p5.patch | 905 -------------- core/mpfr/mpfr-3.1.2-p8.patch | 1273 ++++++++++++++++++++ extra/burp/PKGBUILD | 18 +- extra/cups/PKGBUILD | 6 +- extra/frameworkintegration/PKGBUILD | 4 +- extra/gnu-efi-libs/PKGBUILD | 22 +- .../gnu-efi-3.0v-revert-makefile-commit.patch | 148 +++ extra/qt5/PKGBUILD | 95 +- extra/qt5/QTBUG-39047.patch | 57 + extra/qtchooser/3.conf | 2 - extra/qtchooser/PKGBUILD | 18 +- extra/smplayer/PKGBUILD | 6 +- extra/vim/PKGBUILD | 6 +- 24 files changed, 1792 insertions(+), 1046 deletions(-) create mode 100644 community/libuv/inet_pton6.patch delete mode 100644 core/gcc/gcc-4.9-tree-ssa-threadedge.patch delete mode 100644 core/mpfr/mpfr-3.1.2-p5.patch create mode 100644 core/mpfr/mpfr-3.1.2-p8.patch create mode 100644 extra/gnu-efi-libs/gnu-efi-3.0v-revert-makefile-commit.patch create mode 100644 extra/qt5/QTBUG-39047.patch delete mode 100644 extra/qtchooser/3.conf diff --git a/community/canorus/PKGBUILD b/community/canorus/PKGBUILD index 459d17891..b9df9e9b4 100644 --- a/community/canorus/PKGBUILD +++ b/community/canorus/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 106369 2014-03-01 08:32:49Z andrea $ +# $Id: PKGBUILD 112019 2014-05-28 16:30:10Z spupykin $ # Maintainer: Sergej Pupykin # Maintainer: Arch Linux Pro Audio # Contributor: Coenraad van der Westhuizen @@ -6,13 +6,13 @@ pkgname=canorus pkgver=0.7.R1002 -pkgrel=5 +pkgrel=6 pkgdesc="A free music score editor" arch=('i686' 'x86_64') url="http://www.canorus.org/" license=('GPL') -depends=('qt4' 'alsa-lib' 'python2' 'swig' 'zlib') -makedepends=('cmake') +depends=('qt4' 'alsa-lib' 'python2' 'zlib') +makedepends=('cmake' 'swig') source=(http://download.berlios.de/$pkgname/$pkgname\_$pkgver\_source.tar.bz2) md5sums=('5575b7c54633056a463177579a390318') diff --git a/community/darkhttpd/PKGBUILD b/community/darkhttpd/PKGBUILD index f83370aae..75f11eda5 100644 --- a/community/darkhttpd/PKGBUILD +++ b/community/darkhttpd/PKGBUILD @@ -1,6 +1,6 @@ pkgname=darkhttpd -pkgver=1.9 -pkgrel=4 +pkgver=1.10 +pkgrel=1 pkgdesc="A small and secure static webserver" arch=('i686' 'x86_64') url="http://dmr.ath.cx/net/darkhttpd/" @@ -15,6 +15,9 @@ sha256sums=('33ef622069dc167bcf85e46482388f2d6555e25796f64a6c5b215d939f2b41c8' sha256sums=('33ef622069dc167bcf85e46482388f2d6555e25796f64a6c5b215d939f2b41c8' 'c0c8885682aca80474986080b5426f73dbf37237d02e3fc9035ac72ba74cdb1b' '3a5ad507b72c0c37e3255a70a5dcd8c8c79b728efd07a2dc2f6786f9b9cc3c1b') +sha256sums=('b5a9bcfe6e65a3fc20f96e6badb5da7ba776a792f13fe90015fe9f63b3c2eb63' + 'c0c8885682aca80474986080b5426f73dbf37237d02e3fc9035ac72ba74cdb1b' + '3a5ad507b72c0c37e3255a70a5dcd8c8c79b728efd07a2dc2f6786f9b9cc3c1b') build() { cd "$srcdir/$pkgname-$pkgver" diff --git a/community/gmtk/PKGBUILD b/community/gmtk/PKGBUILD index 687bcbe87..c98b8eebf 100644 --- a/community/gmtk/PKGBUILD +++ b/community/gmtk/PKGBUILD @@ -1,17 +1,17 @@ -# $Id: PKGBUILD 99144 2013-10-25 02:20:05Z allan $ +# $Id: PKGBUILD 112025 2014-05-28 18:14:20Z lfleischer $ # Maintainer: Lukas Fleischer pkgname=gmtk -pkgver=1.0.8 -pkgrel=2 +pkgver=1.0.9 +pkgrel=1 pkgdesc='Common functions for gnome-mplayer and gecko-mediaplayer.' arch=('i686' 'x86_64') url='http://gmtk.googlecode.com/' license=('GPL') depends=('glib2' 'gtk3' 'dconf') makedepends=('intltool' 'pkg-config') -source=("http://gmtk.googlecode.com/files/${pkgname}-${pkgver}.tar.gz") -md5sums=('ee8ab99f3ac2e0071c99a35e4847bba5') +source=("https://${pkgname}.googlecode.com/svn/packages/${pkgname}-${pkgver}.tar.gz") +md5sums=('9184658014ca7b325b569ac7417e4860') build() { cd "${srcdir}/${pkgname}-${pkgver}" diff --git a/community/gsoap/PKGBUILD b/community/gsoap/PKGBUILD index 2d9811977..8b6eca5a3 100644 --- a/community/gsoap/PKGBUILD +++ b/community/gsoap/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 104560 2014-01-22 19:43:31Z spupykin $ +# $Id: PKGBUILD 112021 2014-05-28 16:30:26Z spupykin $ # Maintainer: Sergej Pupykin # Contributor: Tor Krill # Contributor: Lee.MaRS pkgname=gsoap pkgver=2.8.17 -pkgrel=1 +pkgrel=2 pkgdesc="Offers an XML language binding to ease the development of SOAP/XML Web services in C and C/C++" url="http://www.cs.fsu.edu/~engelen/soap.html" arch=('i686' 'x86_64') @@ -20,7 +20,7 @@ md5sums=('381affd6e3ba59effb35725166143014' build() { cd $srcdir/gsoap-2.8 - [ -f Makefile ] || CXXFLAGS=-fPIC CFLAGS=-fPIC LDFLAGS=-fPIC ./configure --prefix=/usr + ./configure --prefix=/usr --enable-openssl make -j1 } diff --git a/community/libuv/PKGBUILD b/community/libuv/PKGBUILD index 351e64973..a2490709f 100644 --- a/community/libuv/PKGBUILD +++ b/community/libuv/PKGBUILD @@ -1,15 +1,21 @@ -# $Id: PKGBUILD 109510 2014-04-15 09:35:38Z mtorromeo $ +# $Id: PKGBUILD 112017 2014-05-28 16:26:31Z mtorromeo $ # Maintainer: Massimiliano Torromeo pkgname=libuv -pkgver=0.11.24 +pkgver=0.11.25 pkgrel=1 pkgdesc="A new platform layer for Node.JS" arch=('i686' 'x86_64') url="https://github.com/joyent/libuv" license=('custom') depends=('glibc') -source=("https://github.com/joyent/libuv/archive/v$pkgver.tar.gz") +source=("https://github.com/joyent/libuv/archive/v$pkgver.tar.gz" + "inet_pton6.patch::https://github.com/joyent/libuv/compare/6d56e6e132717df13c7ed76e6cc3ee53105759be...4fac9427e4a652cdebf241803ce7443dd59a4451.patch") + +prepare() { + cd "$srcdir/$pkgname-$pkgver" + patch -p1 -i "$srcdir/inet_pton6.patch" +} build() { cd "$srcdir/$pkgname-$pkgver" @@ -38,4 +44,5 @@ package() { "$pkgdir/usr/share/doc/$pkgname/ChangeLog" } -sha256sums=('8e23517d37a8c820fc68fa250b7398f520c76e40250b8da2a2eca230eb7f3ab8') +sha256sums=('b95a3e5eca9554998b7423ee786205e52731e82e2d24cbbd4f65af763de542fb' + '655c98f10daf171ce736cea594b710a3f8d72f4da02613588eb9856e4bb36561') diff --git a/community/libuv/inet_pton6.patch b/community/libuv/inet_pton6.patch new file mode 100644 index 000000000..3b0409712 --- /dev/null +++ b/community/libuv/inet_pton6.patch @@ -0,0 +1,146 @@ +From e7b3c3fb6b56298174e5eaf2ac3bea2b721cf0f5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= +Date: Fri, 23 May 2014 16:36:57 +0200 +Subject: [PATCH 1/2] unix, windows: define UV__INET/6_ADDRSTRLEN constants + +--- + src/inet.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/inet.c b/src/inet.c +index 9220de6..0eb9438 100644 +--- a/src/inet.c ++++ b/src/inet.c +@@ -27,6 +27,9 @@ + #include "uv.h" + #include "uv-common.h" + ++#define UV__INET_ADDRSTRLEN 16 ++#define UV__INET6_ADDRSTRLEN 46 ++ + + static int inet_ntop4(const unsigned char *src, char *dst, size_t size); + static int inet_ntop6(const unsigned char *src, char *dst, size_t size); +@@ -49,7 +52,7 @@ int uv_inet_ntop(int af, const void* src, char* dst, size_t size) { + + static int inet_ntop4(const unsigned char *src, char *dst, size_t size) { + static const char fmt[] = "%u.%u.%u.%u"; +- char tmp[sizeof "255.255.255.255"]; ++ char tmp[UV__INET_ADDRSTRLEN]; + int l; + + #ifndef _WIN32 +@@ -74,7 +77,7 @@ static int inet_ntop6(const unsigned char *src, char *dst, size_t size) { + * Keep this in mind if you think this function should have been coded + * to use pointer overlays. All the world's not a VAX. + */ +- char tmp[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"], *tp; ++ char tmp[UV__INET6_ADDRSTRLEN], *tp; + struct { int base, len; } best, cur; + unsigned int words[sizeof(struct in6_addr) / sizeof(uint16_t)]; + int i; +-- +1.9.3 + + +From 4fac9427e4a652cdebf241803ce7443dd59a4451 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= +Date: Fri, 23 May 2014 09:25:23 +0200 +Subject: [PATCH 2/2] unix, windows: fix parsing scoped IPv6 addresses +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Saúl Ibarra Corretgé +--- + src/inet.c | 36 ++++++++++++++++++++---------------- + test/test-ip6-addr.c | 2 ++ + 2 files changed, 22 insertions(+), 16 deletions(-) + +diff --git a/src/inet.c b/src/inet.c +index 0eb9438..c948b2e 100644 +--- a/src/inet.c ++++ b/src/inet.c +@@ -159,11 +159,27 @@ static int inet_ntop6(const unsigned char *src, char *dst, size_t size) { + + + int uv_inet_pton(int af, const char* src, void* dst) { ++ if (src == NULL || dst == NULL) ++ return UV_EINVAL; ++ + switch (af) { + case AF_INET: + return (inet_pton4(src, dst)); +- case AF_INET6: +- return (inet_pton6(src, dst)); ++ case AF_INET6: { ++ int len; ++ char tmp[UV__INET6_ADDRSTRLEN], *s, *p; ++ s = (char*) src; ++ p = strchr(src, '%'); ++ if (p != NULL) { ++ s = tmp; ++ len = p - src; ++ if (len > UV__INET6_ADDRSTRLEN-1) ++ return UV_EINVAL; ++ memcpy(s, src, len); ++ s[len] = '\0'; ++ } ++ return inet_pton6(s, dst); ++ } + default: + return UV_EAFNOSUPPORT; + } +@@ -228,7 +244,7 @@ static int inet_pton6(const char *src, unsigned char *dst) { + curtok = src; + seen_xdigits = 0; + val = 0; +- while ((ch = *src++) != '\0' && ch != '%') { ++ while ((ch = *src++) != '\0') { + const char *pch; + + if ((pch = strchr((xdigits = xdigits_l), ch)) == NULL) +@@ -259,19 +275,7 @@ static int inet_pton6(const char *src, unsigned char *dst) { + continue; + } + if (ch == '.' && ((tp + sizeof(struct in_addr)) <= endp)) { +- int err; +- +- /* Scope id present, parse ipv4 addr without it */ +- pch = strchr(curtok, '%'); +- if (pch != NULL) { +- char tmp[sizeof "255.255.255.255"]; +- +- memcpy(tmp, curtok, pch - curtok); +- curtok = tmp; +- src = pch; +- } +- +- err = inet_pton4(curtok, tp); ++ int err = inet_pton4(curtok, tp); + if (err == 0) { + tp += sizeof(struct in_addr); + seen_xdigits = 0; +diff --git a/test/test-ip6-addr.c b/test/test-ip6-addr.c +index 624b93b..cf8491f 100644 +--- a/test/test-ip6-addr.c ++++ b/test/test-ip6-addr.c +@@ -103,6 +103,7 @@ TEST_IMPL(ip6_addr_link_local) { + X("fe80::2acf:daff:fedd:342a") \ + X("fe80:0:0:0:2acf:daff:fedd:342a") \ + X("fe80:0:0:0:2acf:daff:1.2.3.4") \ ++ X("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255") \ + + #define BAD_ADDR_LIST(X) \ + X(":::1") \ +@@ -110,6 +111,7 @@ TEST_IMPL(ip6_addr_link_local) { + X("fe80:0:0:0:2acf:daff:fedd:342a:5678") \ + X("fe80:0:0:0:2acf:daff:abcd:1.2.3.4") \ + X("fe80:0:0:2acf:daff:1.2.3.4.5") \ ++ X("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255.255") \ + + #define TEST_GOOD(ADDR) \ + ASSERT(0 == uv_inet_pton(AF_INET6, ADDR, &addr)); \ +-- +1.9.3 + diff --git a/community/qtcurve/PKGBUILD b/community/qtcurve/PKGBUILD index f64a14d42..6a483567d 100644 --- a/community/qtcurve/PKGBUILD +++ b/community/qtcurve/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 105059 2014-01-30 19:46:54Z speps $ +# $Id: PKGBUILD 112041 2014-05-28 21:05:24Z speps $ # Maintainer : speps # Contributor: Sven-Hendrik Haase # Contributor: Andrea Scarpino @@ -7,15 +7,24 @@ pkgbase=qtcurve pkgname=('qtcurve-utils' 'qtcurve-gtk2' 'qtcurve-qt4' 'qtcurve-qt5' 'qtcurve-kde4') pkgver=1.8.18 -pkgrel=1 +pkgrel=2 pkgdesc='A configurable set of widget styles for KDE and Gtk' arch=('i686' 'x86_64') url='https://github.com/QtCurve/qtcurve' license=('LGPL') groups=('qtcurve') makedepends=('cmake' 'automoc4' 'gtk2' 'qt4' 'qt5-svg' 'qt5-x11extras' 'kdebase-workspace') -source=("$pkgbase-$pkgver.tar.gz::$url/archive/$pkgver.tar.gz") -md5sums=('422d1876d944bb278855f320eda19368') +source=("$pkgbase-$pkgver.tar.gz::$url/archive/$pkgver.tar.gz" + "https://github.com/QtCurve/qtcurve/commit/323402d8b99502300f65e909c61153cbd5d5d997.diff") +md5sums=('422d1876d944bb278855f320eda19368' + '632c1dfa26fcc5f5d45fe082c9738f3b') + +prepare() { + cd $pkgbase-$pkgver + + # fix FS#40524 - Qt 5.3 build fix + patch -p1 -i ../${source[1]##*/} +} build() { cd $pkgbase-$pkgver diff --git a/community/xmms2/PKGBUILD b/community/xmms2/PKGBUILD index 4ade6619f..f53d68674 100644 --- a/community/xmms2/PKGBUILD +++ b/community/xmms2/PKGBUILD @@ -1,16 +1,16 @@ -# $Id: PKGBUILD 111492 2014-05-19 10:09:32Z spupykin $ +# $Id: PKGBUILD 112023 2014-05-28 16:30:56Z spupykin $ # Maintainer: Sergej Pupykin pkgname=xmms2 pkgver=0.8DrO_o -pkgrel=26 +pkgrel=27 pkgdesc="complete rewrite of the popular music player" arch=('i686' 'x86_64') url="http://xmms2.org/" license=('LGPL') backup=('etc/conf.d/xmms2d.conf') depends=('sqlite' 'libmad') -makedepends=('alsa-lib' 'boost' 'curl' 'faad2' 'ffmpeg' 'fftw' 'flac' +makedepends=('alsa-lib' 'boost' 'curl' 'faad2' 'ffmpeg' 'fftw' 'flac' 'glib2' 'jack' 'libao' 'libmms' 'libmpcdec' 'libofa' 'libsamplerate' 'libshout' 'libdiscid' 'libcdio-paranoia' 'libvorbis' 'libxml2' 'mpg123' 'perl' 'pulseaudio' 'pyrex' @@ -72,7 +72,7 @@ prepare() { build() { cd ${srcdir}/${pkgname}-${pkgver} ./waf configure --prefix=/usr \ - --with-optionals=python,launcher,xmmsclient++,perl,ruby,nycli,pixmaps,et,mdns,medialib-updater \ + --with-optionals=python,launcher,xmmsclient++,xmmsclient++-glib,perl,ruby,nycli,pixmaps,et,mdns,medialib-updater \ --with-ruby-archdir=`ruby -e 'puts RbConfig::CONFIG["vendorarchdir"]'` \ --with-ruby-libdir=`ruby -e 'puts RbConfig::CONFIG["vendorlibdir"]'` ./waf build diff --git a/core/gcc/PKGBUILD b/core/gcc/PKGBUILD index 5839c520e..0870d296d 100644 --- a/core/gcc/PKGBUILD +++ b/core/gcc/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 212143 2014-05-09 01:21:38Z allan $ +# $Id: PKGBUILD 213674 2014-05-28 05:17:31Z allan $ # Maintainer: Allan McRae # toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc @@ -7,8 +7,8 @@ pkgname=('gcc' 'gcc-libs' 'gcc-fortran' 'gcc-objc' 'gcc-ada' 'gcc-go') pkgver=4.9.0 _pkgver=4.9 -pkgrel=2 -_snapshot=4.9-20140507 +pkgrel=3 +_snapshot=4.9-20140521 pkgdesc="The GNU Compiler Collection" arch=('i686' 'x86_64') license=('GPL' 'LGPL' 'FDL' 'custom') @@ -18,11 +18,9 @@ checkdepends=('dejagnu' 'inetutils') options=('!emptydirs') source=(#ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-${pkgver}.tar.bz2 ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-${_snapshot}.tar.bz2 - gcc-4.8-filename-output.patch - gcc-4.9-tree-ssa-threadedge.patch) -md5sums=('47dc2b91d2876daff53c20c30164c38f' - '40cb437805e2f7a006aa0d0c3098ab0f' - '311ece7f5446d550e84e28692d2fb823') + gcc-4.8-filename-output.patch) +md5sums=('cd3cbe93ebc7207bf65d30e3c9a74a26' + '40cb437805e2f7a006aa0d0c3098ab0f') if [ -n "${_snapshot}" ]; then _basedir=gcc-${_snapshot} @@ -49,9 +47,6 @@ prepare() { # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57653 patch -p0 -i ${srcdir}/gcc-4.8-filename-output.patch - # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60902 - patch -p1 -i ${srcdir}/gcc-4.9-tree-ssa-threadedge.patch - mkdir ${srcdir}/gcc-build } diff --git a/core/gcc/gcc-4.9-tree-ssa-threadedge.patch b/core/gcc/gcc-4.9-tree-ssa-threadedge.patch deleted file mode 100644 index 8827427e4..000000000 --- a/core/gcc/gcc-4.9-tree-ssa-threadedge.patch +++ /dev/null @@ -1,38 +0,0 @@ ---- trunk/gcc/tree-ssa-threadedge.c 2014/04/23 17:53:56 209715 -+++ trunk/gcc/tree-ssa-threadedge.c 2014/04/23 18:04:46 209716 -@@ -387,7 +387,34 @@ - && (gimple_code (stmt) != GIMPLE_CALL - || gimple_call_lhs (stmt) == NULL_TREE - || TREE_CODE (gimple_call_lhs (stmt)) != SSA_NAME)) -- continue; -+ { -+ /* STMT might still have DEFS and we need to invalidate any known -+ equivalences for them. -+ -+ Consider if STMT is a GIMPLE_ASM with one or more outputs that -+ feeds a conditional inside a loop. We might derive an equivalence -+ due to the conditional. */ -+ tree op; -+ ssa_op_iter iter; -+ -+ if (backedge_seen) -+ FOR_EACH_SSA_TREE_OPERAND (op, stmt, iter, SSA_OP_DEF) -+ { -+ /* This call only invalidates equivalences created by -+ PHI nodes. This is by design to keep the cost of -+ of invalidation reasonable. */ -+ invalidate_equivalences (op, stack, src_map, dst_map); -+ -+ /* However, conditionals can imply values for real -+ operands as well. And those won't be recorded in the -+ maps. In fact, those equivalences may be recorded totally -+ outside the threading code. We can just create a new -+ temporary NULL equivalence here. */ -+ record_temporary_equivalence (op, NULL_TREE, stack); -+ } -+ -+ continue; -+ } - - /* The result of __builtin_object_size depends on all the arguments - of a phi node. Temporarily using only one edge produces invalid diff --git a/core/mpfr/PKGBUILD b/core/mpfr/PKGBUILD index 3e086c971..4c7d4a2b4 100644 --- a/core/mpfr/PKGBUILD +++ b/core/mpfr/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 201554 2013-12-15 06:41:28Z allan $ +# $Id: PKGBUILD 213675 2014-05-28 05:17:32Z allan $ # Maintainer: Allan McRae # Contributor: damir pkgname=mpfr _pkgver=3.1.2 -_patchlevel=p5 +_patchlevel=p8 pkgver=${_pkgver}.${_patchlevel} #pkgver=${_pkgver} pkgrel=1 @@ -18,7 +18,7 @@ source=(http://www.mpfr.org/mpfr-current/mpfr-${_pkgver}.tar.xz{,.asc} mpfr-${_pkgver}-${_patchlevel}.patch) md5sums=('e3d203d188b8fe60bb6578dd3152e05c' 'SKIP' - 'e19c1d8db2cde4991ab52c8c20d16185') + '3280aba9c8ebb1be9dab32d28e97e9a6') build() { cd "${srcdir}/${pkgname}-${_pkgver}" diff --git a/core/mpfr/mpfr-3.1.2-p5.patch b/core/mpfr/mpfr-3.1.2-p5.patch deleted file mode 100644 index d9962a637..000000000 --- a/core/mpfr/mpfr-3.1.2-p5.patch +++ /dev/null @@ -1,905 +0,0 @@ -diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES ---- mpfr-3.1.2-a/PATCHES 2013-09-26 10:52:52.000000000 +0000 -+++ mpfr-3.1.2-b/PATCHES 2013-09-26 10:52:52.000000000 +0000 -@@ -0,0 +1 @@ -+exp_2 -diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION ---- mpfr-3.1.2-a/VERSION 2013-03-13 15:37:28.000000000 +0000 -+++ mpfr-3.1.2-b/VERSION 2013-09-26 10:52:52.000000000 +0000 -@@ -1 +1 @@ --3.1.2 -+3.1.2-p1 -diff -Naurd mpfr-3.1.2-a/src/exp_2.c mpfr-3.1.2-b/src/exp_2.c ---- mpfr-3.1.2-a/src/exp_2.c 2013-03-13 15:37:28.000000000 +0000 -+++ mpfr-3.1.2-b/src/exp_2.c 2013-09-26 10:52:52.000000000 +0000 -@@ -204,7 +204,7 @@ - for (k = 0; k < K; k++) - { - mpz_mul (ss, ss, ss); -- exps <<= 1; -+ exps *= 2; - exps += mpz_normalize (ss, ss, q); - } - mpfr_set_z (s, ss, MPFR_RNDN); -diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h ---- mpfr-3.1.2-a/src/mpfr.h 2013-03-13 15:37:37.000000000 +0000 -+++ mpfr-3.1.2-b/src/mpfr.h 2013-09-26 10:52:52.000000000 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 3 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 2 --#define MPFR_VERSION_STRING "3.1.2" -+#define MPFR_VERSION_STRING "3.1.2-p1" - - /* Macros dealing with MPFR VERSION */ - #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) -diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c ---- mpfr-3.1.2-a/src/version.c 2013-03-13 15:37:34.000000000 +0000 -+++ mpfr-3.1.2-b/src/version.c 2013-09-26 10:52:52.000000000 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "3.1.2"; -+ return "3.1.2-p1"; - } -diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES ---- mpfr-3.1.2-a/PATCHES 2013-09-26 10:56:55.000000000 +0000 -+++ mpfr-3.1.2-b/PATCHES 2013-09-26 10:56:55.000000000 +0000 -@@ -0,0 +1 @@ -+fits-smallneg -diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION ---- mpfr-3.1.2-a/VERSION 2013-09-26 10:52:52.000000000 +0000 -+++ mpfr-3.1.2-b/VERSION 2013-09-26 10:56:55.000000000 +0000 -@@ -1 +1 @@ --3.1.2-p1 -+3.1.2-p2 -diff -Naurd mpfr-3.1.2-a/src/fits_u.h mpfr-3.1.2-b/src/fits_u.h ---- mpfr-3.1.2-a/src/fits_u.h 2013-03-13 15:37:35.000000000 +0000 -+++ mpfr-3.1.2-b/src/fits_u.h 2013-09-26 10:56:55.000000000 +0000 -@@ -32,17 +32,20 @@ - int res; - - if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (f))) -- /* Zero always fit */ -- return MPFR_IS_ZERO (f) ? 1 : 0; -- else if (MPFR_IS_NEG (f)) -- /* Negative numbers don't fit */ -- return 0; -- /* now it fits if -- (a) f <= MAXIMUM -- (b) round(f, prec(slong), rnd) <= MAXIMUM */ -+ return MPFR_IS_ZERO (f) ? 1 : 0; /* Zero always fits */ - - e = MPFR_GET_EXP (f); - -+ if (MPFR_IS_NEG (f)) -+ return e >= 1 ? 0 /* f <= -1 does not fit */ -+ : rnd != MPFR_RNDN ? MPFR_IS_LIKE_RNDU (rnd, -1) /* directed mode */ -+ : e < 0 ? 1 /* f > -1/2 fits in MPFR_RNDN */ -+ : mpfr_powerof2_raw(f); /* -1/2 fits, -1 < f < -1/2 don't */ -+ -+ /* Now it fits if -+ (a) f <= MAXIMUM -+ (b) round(f, prec(slong), rnd) <= MAXIMUM */ -+ - /* first compute prec(MAXIMUM); fits in an int */ - for (s = MAXIMUM, prec = 0; s != 0; s /= 2, prec ++); - -diff -Naurd mpfr-3.1.2-a/src/fits_uintmax.c mpfr-3.1.2-b/src/fits_uintmax.c ---- mpfr-3.1.2-a/src/fits_uintmax.c 2013-03-13 15:37:33.000000000 +0000 -+++ mpfr-3.1.2-b/src/fits_uintmax.c 2013-09-26 10:56:55.000000000 +0000 -@@ -27,51 +27,19 @@ - #include "mpfr-intmax.h" - #include "mpfr-impl.h" - --#ifdef _MPFR_H_HAVE_INTMAX_T -- --/* We can't use fits_u.h <= mpfr_cmp_ui */ --int --mpfr_fits_uintmax_p (mpfr_srcptr f, mpfr_rnd_t rnd) --{ -- mpfr_exp_t e; -- int prec; -- uintmax_t s; -- mpfr_t x; -- int res; -- -- if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (f))) -- /* Zero always fit */ -- return MPFR_IS_ZERO (f) ? 1 : 0; -- else if (MPFR_IS_NEG (f)) -- /* Negative numbers don't fit */ -- return 0; -- /* now it fits if -- (a) f <= MAXIMUM -- (b) round(f, prec(slong), rnd) <= MAXIMUM */ -- -- e = MPFR_GET_EXP (f); -- -- /* first compute prec(MAXIMUM); fits in an int */ -- for (s = MPFR_UINTMAX_MAX, prec = 0; s != 0; s /= 2, prec ++); -- -- /* MAXIMUM needs prec bits, i.e. MAXIMUM = 2^prec - 1 */ -- -- /* if e <= prec - 1, then f < 2^(prec-1) < MAXIMUM */ -- if (e <= prec - 1) -- return 1; -+/* Note: though mpfr-impl.h is included in fits_u.h, we also include it -+ above so that it gets included even when _MPFR_H_HAVE_INTMAX_T is not -+ defined; this is necessary to avoid an empty translation unit, which -+ is forbidden by ISO C. Without this, a failing test can be reproduced -+ by creating an invalid stdint.h somewhere in the default include path -+ and by compiling MPFR with "gcc -ansi -pedantic-errors". */ - -- /* if e >= prec + 1, then f >= 2^prec > MAXIMUM */ -- if (e >= prec + 1) -- return 0; -+#ifdef _MPFR_H_HAVE_INTMAX_T - -- MPFR_ASSERTD (e == prec); -+#define FUNCTION mpfr_fits_uintmax_p -+#define MAXIMUM MPFR_UINTMAX_MAX -+#define TYPE uintmax_t - -- /* hard case: first round to prec bits, then check */ -- mpfr_init2 (x, prec); -- mpfr_set (x, f, rnd); -- res = MPFR_GET_EXP (x) == e; -- mpfr_clear (x); -- return res; --} -+#include "fits_u.h" - - #endif -diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h ---- mpfr-3.1.2-a/src/mpfr.h 2013-09-26 10:52:52.000000000 +0000 -+++ mpfr-3.1.2-b/src/mpfr.h 2013-09-26 10:56:55.000000000 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 3 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 2 --#define MPFR_VERSION_STRING "3.1.2-p1" -+#define MPFR_VERSION_STRING "3.1.2-p2" - - /* Macros dealing with MPFR VERSION */ - #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) -diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c ---- mpfr-3.1.2-a/src/version.c 2013-09-26 10:52:52.000000000 +0000 -+++ mpfr-3.1.2-b/src/version.c 2013-09-26 10:56:55.000000000 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "3.1.2-p1"; -+ return "3.1.2-p2"; - } -diff -Naurd mpfr-3.1.2-a/tests/tfits.c mpfr-3.1.2-b/tests/tfits.c ---- mpfr-3.1.2-a/tests/tfits.c 2013-03-13 15:37:45.000000000 +0000 -+++ mpfr-3.1.2-b/tests/tfits.c 2013-09-26 10:56:55.000000000 +0000 -@@ -33,155 +33,176 @@ - #include "mpfr-intmax.h" - #include "mpfr-test.h" - --#define ERROR1 { printf("Initial error for x="); mpfr_dump(x); exit(1); } --#define ERROR2 { printf("Error for x="); mpfr_dump(x); exit(1); } -+#define ERROR1(N) \ -+ do \ -+ { \ -+ printf("Error %d for rnd = %s and x = ", N, \ -+ mpfr_print_rnd_mode ((mpfr_rnd_t) r)); \ -+ mpfr_dump(x); \ -+ exit(1); \ -+ } \ -+ while (0) - - static void check_intmax (void); - - int - main (void) - { -- mpfr_t x; -+ mpfr_t x, y; -+ int i, r; - - tests_start_mpfr (); - - mpfr_init2 (x, 256); -+ mpfr_init2 (y, 8); - -- /* Check NAN */ -- mpfr_set_nan (x); -- if (mpfr_fits_ulong_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_slong_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_uint_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_sint_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_ushort_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_sshort_p (x, MPFR_RNDN)) -- ERROR1; -+ RND_LOOP (r) -+ { - -- /* Check INF */ -- mpfr_set_inf (x, 1); -- if (mpfr_fits_ulong_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_slong_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_uint_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_sint_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_ushort_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_sshort_p (x, MPFR_RNDN)) -- ERROR1; -+ /* Check NAN */ -+ mpfr_set_nan (x); -+ if (mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (1); -+ if (mpfr_fits_slong_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (2); -+ if (mpfr_fits_uint_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (3); -+ if (mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (4); -+ if (mpfr_fits_ushort_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (5); -+ if (mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (6); - -- /* Check Zero */ -- MPFR_SET_ZERO (x); -- if (!mpfr_fits_ulong_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_slong_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_uint_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_sint_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_ushort_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) -- ERROR2; -+ /* Check INF */ -+ mpfr_set_inf (x, 1); -+ if (mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (7); -+ if (mpfr_fits_slong_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (8); -+ if (mpfr_fits_uint_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (9); -+ if (mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (10); -+ if (mpfr_fits_ushort_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (11); -+ if (mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (12); - -- /* Check small op */ -- mpfr_set_str1 (x, "1@-1"); -- if (!mpfr_fits_ulong_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_slong_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_uint_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_sint_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_ushort_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) -- ERROR2; -+ /* Check Zero */ -+ MPFR_SET_ZERO (x); -+ if (!mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (13); -+ if (!mpfr_fits_slong_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (14); -+ if (!mpfr_fits_uint_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (15); -+ if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (16); -+ if (!mpfr_fits_ushort_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (17); -+ if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (18); - -- /* Check 17 */ -- mpfr_set_ui (x, 17, MPFR_RNDN); -- if (!mpfr_fits_ulong_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_slong_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_uint_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_sint_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_ushort_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) -- ERROR2; -+ /* Check small positive op */ -+ mpfr_set_str1 (x, "1@-1"); -+ if (!mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (19); -+ if (!mpfr_fits_slong_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (20); -+ if (!mpfr_fits_uint_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (21); -+ if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (22); -+ if (!mpfr_fits_ushort_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (23); -+ if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (24); - -- /* Check all other values */ -- mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN); -- mpfr_mul_2exp (x, x, 1, MPFR_RNDN); -- if (mpfr_fits_ulong_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_slong_p (x, MPFR_RNDN)) -- ERROR1; -- mpfr_mul_2exp (x, x, 40, MPFR_RNDN); -- if (mpfr_fits_ulong_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_uint_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_sint_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_ushort_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_sshort_p (x, MPFR_RNDN)) -- ERROR1; -+ /* Check 17 */ -+ mpfr_set_ui (x, 17, MPFR_RNDN); -+ if (!mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (25); -+ if (!mpfr_fits_slong_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (26); -+ if (!mpfr_fits_uint_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (27); -+ if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (28); -+ if (!mpfr_fits_ushort_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (29); -+ if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (30); - -- mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN); -- if (!mpfr_fits_ulong_p (x, MPFR_RNDN)) -- ERROR2; -- mpfr_set_ui (x, LONG_MAX, MPFR_RNDN); -- if (!mpfr_fits_slong_p (x, MPFR_RNDN)) -- ERROR2; -- mpfr_set_ui (x, UINT_MAX, MPFR_RNDN); -- if (!mpfr_fits_uint_p (x, MPFR_RNDN)) -- ERROR2; -- mpfr_set_ui (x, INT_MAX, MPFR_RNDN); -- if (!mpfr_fits_sint_p (x, MPFR_RNDN)) -- ERROR2; -- mpfr_set_ui (x, USHRT_MAX, MPFR_RNDN); -- if (!mpfr_fits_ushort_p (x, MPFR_RNDN)) -- ERROR2; -- mpfr_set_ui (x, SHRT_MAX, MPFR_RNDN); -- if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) -- ERROR2; -+ /* Check all other values */ -+ mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN); -+ mpfr_mul_2exp (x, x, 1, MPFR_RNDN); -+ if (mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (31); -+ if (mpfr_fits_slong_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (32); -+ mpfr_mul_2exp (x, x, 40, MPFR_RNDN); -+ if (mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (33); -+ if (mpfr_fits_uint_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (34); -+ if (mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (35); -+ if (mpfr_fits_ushort_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (36); -+ if (mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (37); - -- mpfr_set_si (x, 1, MPFR_RNDN); -- if (!mpfr_fits_sint_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) -- ERROR2; -+ mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN); -+ if (!mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (38); -+ mpfr_set_ui (x, LONG_MAX, MPFR_RNDN); -+ if (!mpfr_fits_slong_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (39); -+ mpfr_set_ui (x, UINT_MAX, MPFR_RNDN); -+ if (!mpfr_fits_uint_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (40); -+ mpfr_set_ui (x, INT_MAX, MPFR_RNDN); -+ if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (41); -+ mpfr_set_ui (x, USHRT_MAX, MPFR_RNDN); -+ if (!mpfr_fits_ushort_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (42); -+ mpfr_set_ui (x, SHRT_MAX, MPFR_RNDN); -+ if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (43); - -- /* Check negative value */ -- mpfr_set_si (x, -1, MPFR_RNDN); -- if (!mpfr_fits_sint_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_slong_p (x, MPFR_RNDN)) -- ERROR2; -- if (mpfr_fits_uint_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_ushort_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_ulong_p (x, MPFR_RNDN)) -- ERROR1; -+ mpfr_set_si (x, 1, MPFR_RNDN); -+ if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (44); -+ if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (45); -+ -+ /* Check negative op */ -+ for (i = 1; i <= 4; i++) -+ { -+ int inv; -+ -+ mpfr_set_si_2exp (x, -i, -2, MPFR_RNDN); -+ mpfr_rint (y, x, (mpfr_rnd_t) r); -+ inv = MPFR_NOTZERO (y); -+ if (!mpfr_fits_ulong_p (x, (mpfr_rnd_t) r) ^ inv) -+ ERROR1 (46); -+ if (!mpfr_fits_slong_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (47); -+ if (!mpfr_fits_uint_p (x, (mpfr_rnd_t) r) ^ inv) -+ ERROR1 (48); -+ if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (49); -+ if (!mpfr_fits_ushort_p (x, (mpfr_rnd_t) r) ^ inv) -+ ERROR1 (50); -+ if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (51); -+ } -+ } - - mpfr_clear (x); -+ mpfr_clear (y); - - check_intmax (); - -@@ -189,85 +210,98 @@ - return 0; - } - --static void check_intmax (void) -+static void -+check_intmax (void) - { - #ifdef _MPFR_H_HAVE_INTMAX_T -- mpfr_t x; -+ mpfr_t x, y; -+ int i, r; - -- mpfr_init2 (x, sizeof (uintmax_t)*CHAR_BIT); -+ mpfr_init2 (x, sizeof (uintmax_t) * CHAR_BIT); -+ mpfr_init2 (y, 8); - -- /* Check NAN */ -- mpfr_set_nan (x); -- if (mpfr_fits_uintmax_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_intmax_p (x, MPFR_RNDN)) -- ERROR1; -+ RND_LOOP (r) -+ { -+ /* Check NAN */ -+ mpfr_set_nan (x); -+ if (mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (52); -+ if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (53); - -- /* Check INF */ -- mpfr_set_inf (x, 1); -- if (mpfr_fits_uintmax_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_intmax_p (x, MPFR_RNDN)) -- ERROR1; -+ /* Check INF */ -+ mpfr_set_inf (x, 1); -+ if (mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (54); -+ if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (55); - -- /* Check Zero */ -- MPFR_SET_ZERO (x); -- if (!mpfr_fits_uintmax_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) -- ERROR2; -+ /* Check Zero */ -+ MPFR_SET_ZERO (x); -+ if (!mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (56); -+ if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (57); - -- /* Check small op */ -- mpfr_set_str1 (x, "1@-1"); -- if (!mpfr_fits_uintmax_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) -- ERROR2; -+ /* Check positive small op */ -+ mpfr_set_str1 (x, "1@-1"); -+ if (!mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (58); -+ if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (59); - -- /* Check 17 */ -- mpfr_set_ui (x, 17, MPFR_RNDN); -- if (!mpfr_fits_uintmax_p (x, MPFR_RNDN)) -- ERROR2; -- if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) -- ERROR2; -+ /* Check 17 */ -+ mpfr_set_ui (x, 17, MPFR_RNDN); -+ if (!mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (60); -+ if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (61); - -- /* Check hugest */ -- mpfr_set_ui_2exp (x, 42, sizeof (uintmax_t) * 32, MPFR_RNDN); -- if (mpfr_fits_uintmax_p (x, MPFR_RNDN)) -- ERROR1; -- if (mpfr_fits_intmax_p (x, MPFR_RNDN)) -- ERROR1; -+ /* Check hugest */ -+ mpfr_set_ui_2exp (x, 42, sizeof (uintmax_t) * 32, MPFR_RNDN); -+ if (mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (62); -+ if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (63); - -- /* Check all other values */ -- mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN); -- mpfr_add_ui (x, x, 1, MPFR_RNDN); -- if (mpfr_fits_uintmax_p (x, MPFR_RNDN)) -- ERROR1; -- mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN); -- if (!mpfr_fits_uintmax_p (x, MPFR_RNDN)) -- ERROR2; -- mpfr_set_sj (x, MPFR_INTMAX_MAX, MPFR_RNDN); -- mpfr_add_ui (x, x, 1, MPFR_RNDN); -- if (mpfr_fits_intmax_p (x, MPFR_RNDN)) -- ERROR1; -- mpfr_set_sj (x, MPFR_INTMAX_MAX, MPFR_RNDN); -- if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) -- ERROR2; -- mpfr_set_sj (x, MPFR_INTMAX_MIN, MPFR_RNDN); -- if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) -- ERROR2; -- mpfr_sub_ui (x, x, 1, MPFR_RNDN); -- if (mpfr_fits_intmax_p (x, MPFR_RNDN)) -- ERROR1; -+ /* Check all other values */ -+ mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN); -+ mpfr_add_ui (x, x, 1, MPFR_RNDN); -+ if (mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (64); -+ mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN); -+ if (!mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (65); -+ mpfr_set_sj (x, MPFR_INTMAX_MAX, MPFR_RNDN); -+ mpfr_add_ui (x, x, 1, MPFR_RNDN); -+ if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (66); -+ mpfr_set_sj (x, MPFR_INTMAX_MAX, MPFR_RNDN); -+ if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (67); -+ mpfr_set_sj (x, MPFR_INTMAX_MIN, MPFR_RNDN); -+ if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (68); -+ mpfr_sub_ui (x, x, 1, MPFR_RNDN); -+ if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (69); - -- /* Check negative value */ -- mpfr_set_si (x, -1, MPFR_RNDN); -- if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) -- ERROR2; -- if (mpfr_fits_uintmax_p (x, MPFR_RNDN)) -- ERROR1; -+ /* Check negative op */ -+ for (i = 1; i <= 4; i++) -+ { -+ int inv; -+ -+ mpfr_set_si_2exp (x, -i, -2, MPFR_RNDN); -+ mpfr_rint (y, x, (mpfr_rnd_t) r); -+ inv = MPFR_NOTZERO (y); -+ if (!mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r) ^ inv) -+ ERROR1 (70); -+ if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) -+ ERROR1 (71); -+ } -+ } - - mpfr_clear (x); -+ mpfr_clear (y); - #endif - } -- -diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES ---- mpfr-3.1.2-a/PATCHES 2013-10-09 13:34:21.000000000 +0000 -+++ mpfr-3.1.2-b/PATCHES 2013-10-09 13:34:21.000000000 +0000 -@@ -0,0 +1 @@ -+clang-divby0 -diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION ---- mpfr-3.1.2-a/VERSION 2013-09-26 10:52:52.000000000 +0000 -+++ mpfr-3.1.2-b/VERSION 2013-10-09 13:34:21.000000000 +0000 -@@ -1 +1 @@ --3.1.2-p2 -+3.1.2-p3 -diff -Naurd mpfr-3.1.2-a/src/mpfr-impl.h mpfr-3.1.2-b/src/mpfr-impl.h ---- mpfr-3.1.2-a/src/mpfr-impl.h 2013-03-13 15:37:36.000000000 +0000 -+++ mpfr-3.1.2-b/src/mpfr-impl.h 2013-10-09 13:34:21.000000000 +0000 -@@ -468,8 +468,16 @@ - #define MPFR_LIMBS_PER_FLT ((IEEE_FLT_MANT_DIG-1)/GMP_NUMB_BITS+1) - - /* Visual C++ doesn't support +1.0/0.0, -1.0/0.0 and 0.0/0.0 -- at compile time. */ --#if defined(_MSC_VER) && defined(_WIN32) && (_MSC_VER >= 1200) -+ at compile time. -+ Clang with -fsanitize=undefined is a bit similar due to a bug: -+ http://llvm.org/bugs/show_bug.cgi?id=17381 -+ but even without its sanitizer, it may be better to use the -+ double_zero version until IEEE 754 division by zero is properly -+ supported: -+ http://llvm.org/bugs/show_bug.cgi?id=17000 -+*/ -+#if (defined(_MSC_VER) && defined(_WIN32) && (_MSC_VER >= 1200)) || \ -+ defined(__clang__) - static double double_zero = 0.0; - # define DBL_NAN (double_zero/double_zero) - # define DBL_POS_INF ((double) 1.0/double_zero) -@@ -501,6 +509,8 @@ - (with Xcode 2.4.1, i.e. the latest one). */ - #define LVALUE(x) (&(x) == &(x) || &(x) != &(x)) - #define DOUBLE_ISINF(x) (LVALUE(x) && ((x) > DBL_MAX || (x) < -DBL_MAX)) -+/* The DOUBLE_ISNAN(x) macro is also valid on long double x -+ (assuming that the compiler isn't too broken). */ - #ifdef MPFR_NANISNAN - /* Avoid MIPSpro / IRIX64 / gcc -ffast-math (incorrect) optimizations. - The + must not be replaced by a ||. With gcc -ffast-math, NaN is -diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h ---- mpfr-3.1.2-a/src/mpfr.h 2013-09-26 10:52:52.000000000 +0000 -+++ mpfr-3.1.2-b/src/mpfr.h 2013-10-09 13:34:21.000000000 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 3 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 2 --#define MPFR_VERSION_STRING "3.1.2-p2" -+#define MPFR_VERSION_STRING "3.1.2-p3" - - /* Macros dealing with MPFR VERSION */ - #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) -diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c ---- mpfr-3.1.2-a/src/version.c 2013-09-26 10:52:52.000000000 +0000 -+++ mpfr-3.1.2-b/src/version.c 2013-10-09 13:34:21.000000000 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "3.1.2-p2"; -+ return "3.1.2-p3"; - } -diff -Naurd mpfr-3.1.2-a/tests/tget_flt.c mpfr-3.1.2-b/tests/tget_flt.c ---- mpfr-3.1.2-a/tests/tget_flt.c 2013-03-13 15:37:44.000000000 +0000 -+++ mpfr-3.1.2-b/tests/tget_flt.c 2013-10-09 13:34:21.000000000 +0000 -@@ -28,9 +28,17 @@ - main (void) - { - mpfr_t x, y; -- float f, g, infp; -+ float f, g; - int i; -+#if !defined(MPFR_ERRDIVZERO) -+ float infp; -+#endif -+ -+ tests_start_mpfr (); - -+#if !defined(MPFR_ERRDIVZERO) -+ /* The definition of DBL_POS_INF involves a division by 0. This makes -+ "clang -O2 -fsanitize=undefined -fno-sanitize-recover" fail. */ - infp = (float) DBL_POS_INF; - if (infp * 0.5 != infp) - { -@@ -38,8 +46,7 @@ - fprintf (stderr, "(this is probably a compiler bug, please report)\n"); - exit (1); - } -- -- tests_start_mpfr (); -+#endif - - mpfr_init2 (x, 24); - mpfr_init2 (y, 24); -@@ -353,6 +360,7 @@ - printf ("expected %.8e, got %.8e\n", g, f); - exit (1); - } -+#if !defined(MPFR_ERRDIVZERO) - f = mpfr_get_flt (x, MPFR_RNDN); /* first round to 2^128 (even rule), - thus we should get +Inf */ - g = infp; -@@ -376,6 +384,7 @@ - printf ("expected %.8e, got %.8e\n", g, f); - exit (1); - } -+#endif - - mpfr_clear (x); - mpfr_clear (y); -diff -Naurd mpfr-3.1.2-a/tests/tset_ld.c mpfr-3.1.2-b/tests/tset_ld.c ---- mpfr-3.1.2-a/tests/tset_ld.c 2013-03-13 15:37:44.000000000 +0000 -+++ mpfr-3.1.2-b/tests/tset_ld.c 2013-10-09 13:34:21.000000000 +0000 -@@ -47,8 +47,11 @@ - static int - Isnan_ld (long double d) - { -- double e = (double) d; -- if (DOUBLE_ISNAN (e)) -+ /* Do not convert d to double as this can give an overflow, which -+ may confuse compilers without IEEE 754 support (such as clang -+ -fsanitize=undefined), or trigger a trap if enabled. -+ The DOUBLE_ISNAN macro should work fine on long double. */ -+ if (DOUBLE_ISNAN (d)) - return 1; - LONGDOUBLE_NAN_ACTION (d, goto yes); - return 0; -diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES ---- mpfr-3.1.2-a/PATCHES 2013-11-15 00:51:49.211333830 +0000 -+++ mpfr-3.1.2-b/PATCHES 2013-11-15 00:51:49.323334999 +0000 -@@ -0,0 +1 @@ -+printf-alt0 -diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION ---- mpfr-3.1.2-a/VERSION 2013-11-15 00:51:49.211333830 +0000 -+++ mpfr-3.1.2-b/VERSION 2013-11-15 00:51:49.323334999 +0000 -@@ -1 +1 @@ --3.1.2-p3 -+3.1.2-p4 -diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h ---- mpfr-3.1.2-a/src/mpfr.h 2013-11-15 00:51:49.211333830 +0000 -+++ mpfr-3.1.2-b/src/mpfr.h 2013-11-15 00:51:49.323334999 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 3 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 2 --#define MPFR_VERSION_STRING "3.1.2-p3" -+#define MPFR_VERSION_STRING "3.1.2-p4" - - /* Macros dealing with MPFR VERSION */ - #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) -diff -Naurd mpfr-3.1.2-a/src/vasprintf.c mpfr-3.1.2-b/src/vasprintf.c ---- mpfr-3.1.2-a/src/vasprintf.c 2013-03-13 15:37:37.000000000 +0000 -+++ mpfr-3.1.2-b/src/vasprintf.c 2013-11-15 00:51:49.267334408 +0000 -@@ -1040,7 +1040,7 @@ - } - - /* Determine the different parts of the string representation of the regular -- number P when SPEC.SPEC is 'e', 'E', 'g', or 'G'. -+ number P when spec.spec is 'e', 'E', 'g', or 'G'. - DEC_INFO contains the previously computed exponent and string or is NULL. - - return -1 if some field > INT_MAX */ -@@ -1167,7 +1167,7 @@ - } - - /* Determine the different parts of the string representation of the regular -- number P when SPEC.SPEC is 'f', 'F', 'g', or 'G'. -+ number P when spec.spec is 'f', 'F', 'g', or 'G'. - DEC_INFO contains the previously computed exponent and string or is NULL. - - return -1 if some field of number_parts is greater than INT_MAX */ -@@ -1559,7 +1559,7 @@ - /* fractional part */ - { - np->point = MPFR_DECIMAL_POINT; -- np->fp_trailing_zeros = (spec.spec == 'g' && spec.spec == 'G') ? -+ np->fp_trailing_zeros = (spec.spec == 'g' || spec.spec == 'G') ? - spec.prec - 1 : spec.prec; - } - else if (spec.alt) -diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c ---- mpfr-3.1.2-a/src/version.c 2013-11-15 00:51:49.211333830 +0000 -+++ mpfr-3.1.2-b/src/version.c 2013-11-15 00:51:49.323334999 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "3.1.2-p3"; -+ return "3.1.2-p4"; - } -diff -Naurd mpfr-3.1.2-a/tests/tsprintf.c mpfr-3.1.2-b/tests/tsprintf.c ---- mpfr-3.1.2-a/tests/tsprintf.c 2013-03-13 15:37:44.000000000 +0000 -+++ mpfr-3.1.2-b/tests/tsprintf.c 2013-11-15 00:51:49.267334408 +0000 -@@ -456,10 +456,16 @@ - check_sprintf ("1.999900 ", "%-#10.7RG", x); - check_sprintf ("1.9999 ", "%-10.7RG", x); - mpfr_set_ui (x, 1, MPFR_RNDN); -+ check_sprintf ("1.", "%#.1Rg", x); -+ check_sprintf ("1. ", "%-#5.1Rg", x); -+ check_sprintf (" 1.0", "%#5.2Rg", x); - check_sprintf ("1.00000000000000000000000000000", "%#.30Rg", x); - check_sprintf ("1", "%.30Rg", x); - mpfr_set_ui (x, 0, MPFR_RNDN); -- check_sprintf ("0.000000000000000000000000000000", "%#.30Rg", x); -+ check_sprintf ("0.", "%#.1Rg", x); -+ check_sprintf ("0. ", "%-#5.1Rg", x); -+ check_sprintf (" 0.0", "%#5.2Rg", x); -+ check_sprintf ("0.00000000000000000000000000000", "%#.30Rg", x); - check_sprintf ("0", "%.30Rg", x); - - /* following tests with precision 53 bits */ -diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES ---- mpfr-3.1.2-a/PATCHES 2013-12-01 11:07:49.575329762 +0000 -+++ mpfr-3.1.2-b/PATCHES 2013-12-01 11:07:49.751331625 +0000 -@@ -0,0 +1 @@ -+custom_init_set -diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION ---- mpfr-3.1.2-a/VERSION 2013-12-01 11:07:49.571329714 +0000 -+++ mpfr-3.1.2-b/VERSION 2013-12-01 11:07:49.747331585 +0000 -@@ -1 +1 @@ --3.1.2-p4 -+3.1.2-p5 -diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h ---- mpfr-3.1.2-a/src/mpfr.h 2013-12-01 11:07:49.571329714 +0000 -+++ mpfr-3.1.2-b/src/mpfr.h 2013-12-01 11:07:49.747331585 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 3 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 2 --#define MPFR_VERSION_STRING "3.1.2-p4" -+#define MPFR_VERSION_STRING "3.1.2-p5" - - /* Macros dealing with MPFR VERSION */ - #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) -@@ -861,7 +861,7 @@ - _t = (mpfr_kind_t) _k; \ - _s = 1; \ - } else { \ -- _t = (mpfr_kind_t) -k; \ -+ _t = (mpfr_kind_t) - _k; \ - _s = -1; \ - } \ - _e = _t == MPFR_REGULAR_KIND ? (e) : \ -diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c ---- mpfr-3.1.2-a/src/version.c 2013-12-01 11:07:49.575329762 +0000 -+++ mpfr-3.1.2-b/src/version.c 2013-12-01 11:07:49.747331585 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "3.1.2-p4"; -+ return "3.1.2-p5"; - } diff --git a/core/mpfr/mpfr-3.1.2-p8.patch b/core/mpfr/mpfr-3.1.2-p8.patch new file mode 100644 index 000000000..31b2c61d3 --- /dev/null +++ b/core/mpfr/mpfr-3.1.2-p8.patch @@ -0,0 +1,1273 @@ +diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES +--- mpfr-3.1.2-a/PATCHES 2013-09-26 10:52:52.000000000 +0000 ++++ mpfr-3.1.2-b/PATCHES 2013-09-26 10:52:52.000000000 +0000 +@@ -0,0 +1 @@ ++exp_2 +diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION +--- mpfr-3.1.2-a/VERSION 2013-03-13 15:37:28.000000000 +0000 ++++ mpfr-3.1.2-b/VERSION 2013-09-26 10:52:52.000000000 +0000 +@@ -1 +1 @@ +-3.1.2 ++3.1.2-p1 +diff -Naurd mpfr-3.1.2-a/src/exp_2.c mpfr-3.1.2-b/src/exp_2.c +--- mpfr-3.1.2-a/src/exp_2.c 2013-03-13 15:37:28.000000000 +0000 ++++ mpfr-3.1.2-b/src/exp_2.c 2013-09-26 10:52:52.000000000 +0000 +@@ -204,7 +204,7 @@ + for (k = 0; k < K; k++) + { + mpz_mul (ss, ss, ss); +- exps <<= 1; ++ exps *= 2; + exps += mpz_normalize (ss, ss, q); + } + mpfr_set_z (s, ss, MPFR_RNDN); +diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h +--- mpfr-3.1.2-a/src/mpfr.h 2013-03-13 15:37:37.000000000 +0000 ++++ mpfr-3.1.2-b/src/mpfr.h 2013-09-26 10:52:52.000000000 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 3 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 2 +-#define MPFR_VERSION_STRING "3.1.2" ++#define MPFR_VERSION_STRING "3.1.2-p1" + + /* Macros dealing with MPFR VERSION */ + #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) +diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c +--- mpfr-3.1.2-a/src/version.c 2013-03-13 15:37:34.000000000 +0000 ++++ mpfr-3.1.2-b/src/version.c 2013-09-26 10:52:52.000000000 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "3.1.2"; ++ return "3.1.2-p1"; + } +diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES +--- mpfr-3.1.2-a/PATCHES 2013-09-26 10:56:55.000000000 +0000 ++++ mpfr-3.1.2-b/PATCHES 2013-09-26 10:56:55.000000000 +0000 +@@ -0,0 +1 @@ ++fits-smallneg +diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION +--- mpfr-3.1.2-a/VERSION 2013-09-26 10:52:52.000000000 +0000 ++++ mpfr-3.1.2-b/VERSION 2013-09-26 10:56:55.000000000 +0000 +@@ -1 +1 @@ +-3.1.2-p1 ++3.1.2-p2 +diff -Naurd mpfr-3.1.2-a/src/fits_u.h mpfr-3.1.2-b/src/fits_u.h +--- mpfr-3.1.2-a/src/fits_u.h 2013-03-13 15:37:35.000000000 +0000 ++++ mpfr-3.1.2-b/src/fits_u.h 2013-09-26 10:56:55.000000000 +0000 +@@ -32,17 +32,20 @@ + int res; + + if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (f))) +- /* Zero always fit */ +- return MPFR_IS_ZERO (f) ? 1 : 0; +- else if (MPFR_IS_NEG (f)) +- /* Negative numbers don't fit */ +- return 0; +- /* now it fits if +- (a) f <= MAXIMUM +- (b) round(f, prec(slong), rnd) <= MAXIMUM */ ++ return MPFR_IS_ZERO (f) ? 1 : 0; /* Zero always fits */ + + e = MPFR_GET_EXP (f); + ++ if (MPFR_IS_NEG (f)) ++ return e >= 1 ? 0 /* f <= -1 does not fit */ ++ : rnd != MPFR_RNDN ? MPFR_IS_LIKE_RNDU (rnd, -1) /* directed mode */ ++ : e < 0 ? 1 /* f > -1/2 fits in MPFR_RNDN */ ++ : mpfr_powerof2_raw(f); /* -1/2 fits, -1 < f < -1/2 don't */ ++ ++ /* Now it fits if ++ (a) f <= MAXIMUM ++ (b) round(f, prec(slong), rnd) <= MAXIMUM */ ++ + /* first compute prec(MAXIMUM); fits in an int */ + for (s = MAXIMUM, prec = 0; s != 0; s /= 2, prec ++); + +diff -Naurd mpfr-3.1.2-a/src/fits_uintmax.c mpfr-3.1.2-b/src/fits_uintmax.c +--- mpfr-3.1.2-a/src/fits_uintmax.c 2013-03-13 15:37:33.000000000 +0000 ++++ mpfr-3.1.2-b/src/fits_uintmax.c 2013-09-26 10:56:55.000000000 +0000 +@@ -27,51 +27,19 @@ + #include "mpfr-intmax.h" + #include "mpfr-impl.h" + +-#ifdef _MPFR_H_HAVE_INTMAX_T +- +-/* We can't use fits_u.h <= mpfr_cmp_ui */ +-int +-mpfr_fits_uintmax_p (mpfr_srcptr f, mpfr_rnd_t rnd) +-{ +- mpfr_exp_t e; +- int prec; +- uintmax_t s; +- mpfr_t x; +- int res; +- +- if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (f))) +- /* Zero always fit */ +- return MPFR_IS_ZERO (f) ? 1 : 0; +- else if (MPFR_IS_NEG (f)) +- /* Negative numbers don't fit */ +- return 0; +- /* now it fits if +- (a) f <= MAXIMUM +- (b) round(f, prec(slong), rnd) <= MAXIMUM */ +- +- e = MPFR_GET_EXP (f); +- +- /* first compute prec(MAXIMUM); fits in an int */ +- for (s = MPFR_UINTMAX_MAX, prec = 0; s != 0; s /= 2, prec ++); +- +- /* MAXIMUM needs prec bits, i.e. MAXIMUM = 2^prec - 1 */ +- +- /* if e <= prec - 1, then f < 2^(prec-1) < MAXIMUM */ +- if (e <= prec - 1) +- return 1; ++/* Note: though mpfr-impl.h is included in fits_u.h, we also include it ++ above so that it gets included even when _MPFR_H_HAVE_INTMAX_T is not ++ defined; this is necessary to avoid an empty translation unit, which ++ is forbidden by ISO C. Without this, a failing test can be reproduced ++ by creating an invalid stdint.h somewhere in the default include path ++ and by compiling MPFR with "gcc -ansi -pedantic-errors". */ + +- /* if e >= prec + 1, then f >= 2^prec > MAXIMUM */ +- if (e >= prec + 1) +- return 0; ++#ifdef _MPFR_H_HAVE_INTMAX_T + +- MPFR_ASSERTD (e == prec); ++#define FUNCTION mpfr_fits_uintmax_p ++#define MAXIMUM MPFR_UINTMAX_MAX ++#define TYPE uintmax_t + +- /* hard case: first round to prec bits, then check */ +- mpfr_init2 (x, prec); +- mpfr_set (x, f, rnd); +- res = MPFR_GET_EXP (x) == e; +- mpfr_clear (x); +- return res; +-} ++#include "fits_u.h" + + #endif +diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h +--- mpfr-3.1.2-a/src/mpfr.h 2013-09-26 10:52:52.000000000 +0000 ++++ mpfr-3.1.2-b/src/mpfr.h 2013-09-26 10:56:55.000000000 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 3 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 2 +-#define MPFR_VERSION_STRING "3.1.2-p1" ++#define MPFR_VERSION_STRING "3.1.2-p2" + + /* Macros dealing with MPFR VERSION */ + #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) +diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c +--- mpfr-3.1.2-a/src/version.c 2013-09-26 10:52:52.000000000 +0000 ++++ mpfr-3.1.2-b/src/version.c 2013-09-26 10:56:55.000000000 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "3.1.2-p1"; ++ return "3.1.2-p2"; + } +diff -Naurd mpfr-3.1.2-a/tests/tfits.c mpfr-3.1.2-b/tests/tfits.c +--- mpfr-3.1.2-a/tests/tfits.c 2013-03-13 15:37:45.000000000 +0000 ++++ mpfr-3.1.2-b/tests/tfits.c 2013-09-26 10:56:55.000000000 +0000 +@@ -33,155 +33,176 @@ + #include "mpfr-intmax.h" + #include "mpfr-test.h" + +-#define ERROR1 { printf("Initial error for x="); mpfr_dump(x); exit(1); } +-#define ERROR2 { printf("Error for x="); mpfr_dump(x); exit(1); } ++#define ERROR1(N) \ ++ do \ ++ { \ ++ printf("Error %d for rnd = %s and x = ", N, \ ++ mpfr_print_rnd_mode ((mpfr_rnd_t) r)); \ ++ mpfr_dump(x); \ ++ exit(1); \ ++ } \ ++ while (0) + + static void check_intmax (void); + + int + main (void) + { +- mpfr_t x; ++ mpfr_t x, y; ++ int i, r; + + tests_start_mpfr (); + + mpfr_init2 (x, 256); ++ mpfr_init2 (y, 8); + +- /* Check NAN */ +- mpfr_set_nan (x); +- if (mpfr_fits_ulong_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_slong_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_uint_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_sint_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_ushort_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_sshort_p (x, MPFR_RNDN)) +- ERROR1; ++ RND_LOOP (r) ++ { + +- /* Check INF */ +- mpfr_set_inf (x, 1); +- if (mpfr_fits_ulong_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_slong_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_uint_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_sint_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_ushort_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_sshort_p (x, MPFR_RNDN)) +- ERROR1; ++ /* Check NAN */ ++ mpfr_set_nan (x); ++ if (mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (1); ++ if (mpfr_fits_slong_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (2); ++ if (mpfr_fits_uint_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (3); ++ if (mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (4); ++ if (mpfr_fits_ushort_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (5); ++ if (mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (6); + +- /* Check Zero */ +- MPFR_SET_ZERO (x); +- if (!mpfr_fits_ulong_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_slong_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_uint_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_sint_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_ushort_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) +- ERROR2; ++ /* Check INF */ ++ mpfr_set_inf (x, 1); ++ if (mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (7); ++ if (mpfr_fits_slong_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (8); ++ if (mpfr_fits_uint_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (9); ++ if (mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (10); ++ if (mpfr_fits_ushort_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (11); ++ if (mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (12); + +- /* Check small op */ +- mpfr_set_str1 (x, "1@-1"); +- if (!mpfr_fits_ulong_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_slong_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_uint_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_sint_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_ushort_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) +- ERROR2; ++ /* Check Zero */ ++ MPFR_SET_ZERO (x); ++ if (!mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (13); ++ if (!mpfr_fits_slong_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (14); ++ if (!mpfr_fits_uint_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (15); ++ if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (16); ++ if (!mpfr_fits_ushort_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (17); ++ if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (18); + +- /* Check 17 */ +- mpfr_set_ui (x, 17, MPFR_RNDN); +- if (!mpfr_fits_ulong_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_slong_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_uint_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_sint_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_ushort_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) +- ERROR2; ++ /* Check small positive op */ ++ mpfr_set_str1 (x, "1@-1"); ++ if (!mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (19); ++ if (!mpfr_fits_slong_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (20); ++ if (!mpfr_fits_uint_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (21); ++ if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (22); ++ if (!mpfr_fits_ushort_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (23); ++ if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (24); + +- /* Check all other values */ +- mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN); +- mpfr_mul_2exp (x, x, 1, MPFR_RNDN); +- if (mpfr_fits_ulong_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_slong_p (x, MPFR_RNDN)) +- ERROR1; +- mpfr_mul_2exp (x, x, 40, MPFR_RNDN); +- if (mpfr_fits_ulong_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_uint_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_sint_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_ushort_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_sshort_p (x, MPFR_RNDN)) +- ERROR1; ++ /* Check 17 */ ++ mpfr_set_ui (x, 17, MPFR_RNDN); ++ if (!mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (25); ++ if (!mpfr_fits_slong_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (26); ++ if (!mpfr_fits_uint_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (27); ++ if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (28); ++ if (!mpfr_fits_ushort_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (29); ++ if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (30); + +- mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN); +- if (!mpfr_fits_ulong_p (x, MPFR_RNDN)) +- ERROR2; +- mpfr_set_ui (x, LONG_MAX, MPFR_RNDN); +- if (!mpfr_fits_slong_p (x, MPFR_RNDN)) +- ERROR2; +- mpfr_set_ui (x, UINT_MAX, MPFR_RNDN); +- if (!mpfr_fits_uint_p (x, MPFR_RNDN)) +- ERROR2; +- mpfr_set_ui (x, INT_MAX, MPFR_RNDN); +- if (!mpfr_fits_sint_p (x, MPFR_RNDN)) +- ERROR2; +- mpfr_set_ui (x, USHRT_MAX, MPFR_RNDN); +- if (!mpfr_fits_ushort_p (x, MPFR_RNDN)) +- ERROR2; +- mpfr_set_ui (x, SHRT_MAX, MPFR_RNDN); +- if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) +- ERROR2; ++ /* Check all other values */ ++ mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN); ++ mpfr_mul_2exp (x, x, 1, MPFR_RNDN); ++ if (mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (31); ++ if (mpfr_fits_slong_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (32); ++ mpfr_mul_2exp (x, x, 40, MPFR_RNDN); ++ if (mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (33); ++ if (mpfr_fits_uint_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (34); ++ if (mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (35); ++ if (mpfr_fits_ushort_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (36); ++ if (mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (37); + +- mpfr_set_si (x, 1, MPFR_RNDN); +- if (!mpfr_fits_sint_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) +- ERROR2; ++ mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN); ++ if (!mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (38); ++ mpfr_set_ui (x, LONG_MAX, MPFR_RNDN); ++ if (!mpfr_fits_slong_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (39); ++ mpfr_set_ui (x, UINT_MAX, MPFR_RNDN); ++ if (!mpfr_fits_uint_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (40); ++ mpfr_set_ui (x, INT_MAX, MPFR_RNDN); ++ if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (41); ++ mpfr_set_ui (x, USHRT_MAX, MPFR_RNDN); ++ if (!mpfr_fits_ushort_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (42); ++ mpfr_set_ui (x, SHRT_MAX, MPFR_RNDN); ++ if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (43); + +- /* Check negative value */ +- mpfr_set_si (x, -1, MPFR_RNDN); +- if (!mpfr_fits_sint_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_slong_p (x, MPFR_RNDN)) +- ERROR2; +- if (mpfr_fits_uint_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_ushort_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_ulong_p (x, MPFR_RNDN)) +- ERROR1; ++ mpfr_set_si (x, 1, MPFR_RNDN); ++ if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (44); ++ if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (45); ++ ++ /* Check negative op */ ++ for (i = 1; i <= 4; i++) ++ { ++ int inv; ++ ++ mpfr_set_si_2exp (x, -i, -2, MPFR_RNDN); ++ mpfr_rint (y, x, (mpfr_rnd_t) r); ++ inv = MPFR_NOTZERO (y); ++ if (!mpfr_fits_ulong_p (x, (mpfr_rnd_t) r) ^ inv) ++ ERROR1 (46); ++ if (!mpfr_fits_slong_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (47); ++ if (!mpfr_fits_uint_p (x, (mpfr_rnd_t) r) ^ inv) ++ ERROR1 (48); ++ if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (49); ++ if (!mpfr_fits_ushort_p (x, (mpfr_rnd_t) r) ^ inv) ++ ERROR1 (50); ++ if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (51); ++ } ++ } + + mpfr_clear (x); ++ mpfr_clear (y); + + check_intmax (); + +@@ -189,85 +210,98 @@ + return 0; + } + +-static void check_intmax (void) ++static void ++check_intmax (void) + { + #ifdef _MPFR_H_HAVE_INTMAX_T +- mpfr_t x; ++ mpfr_t x, y; ++ int i, r; + +- mpfr_init2 (x, sizeof (uintmax_t)*CHAR_BIT); ++ mpfr_init2 (x, sizeof (uintmax_t) * CHAR_BIT); ++ mpfr_init2 (y, 8); + +- /* Check NAN */ +- mpfr_set_nan (x); +- if (mpfr_fits_uintmax_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_intmax_p (x, MPFR_RNDN)) +- ERROR1; ++ RND_LOOP (r) ++ { ++ /* Check NAN */ ++ mpfr_set_nan (x); ++ if (mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (52); ++ if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (53); + +- /* Check INF */ +- mpfr_set_inf (x, 1); +- if (mpfr_fits_uintmax_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_intmax_p (x, MPFR_RNDN)) +- ERROR1; ++ /* Check INF */ ++ mpfr_set_inf (x, 1); ++ if (mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (54); ++ if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (55); + +- /* Check Zero */ +- MPFR_SET_ZERO (x); +- if (!mpfr_fits_uintmax_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) +- ERROR2; ++ /* Check Zero */ ++ MPFR_SET_ZERO (x); ++ if (!mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (56); ++ if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (57); + +- /* Check small op */ +- mpfr_set_str1 (x, "1@-1"); +- if (!mpfr_fits_uintmax_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) +- ERROR2; ++ /* Check positive small op */ ++ mpfr_set_str1 (x, "1@-1"); ++ if (!mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (58); ++ if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (59); + +- /* Check 17 */ +- mpfr_set_ui (x, 17, MPFR_RNDN); +- if (!mpfr_fits_uintmax_p (x, MPFR_RNDN)) +- ERROR2; +- if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) +- ERROR2; ++ /* Check 17 */ ++ mpfr_set_ui (x, 17, MPFR_RNDN); ++ if (!mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (60); ++ if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (61); + +- /* Check hugest */ +- mpfr_set_ui_2exp (x, 42, sizeof (uintmax_t) * 32, MPFR_RNDN); +- if (mpfr_fits_uintmax_p (x, MPFR_RNDN)) +- ERROR1; +- if (mpfr_fits_intmax_p (x, MPFR_RNDN)) +- ERROR1; ++ /* Check hugest */ ++ mpfr_set_ui_2exp (x, 42, sizeof (uintmax_t) * 32, MPFR_RNDN); ++ if (mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (62); ++ if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (63); + +- /* Check all other values */ +- mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN); +- mpfr_add_ui (x, x, 1, MPFR_RNDN); +- if (mpfr_fits_uintmax_p (x, MPFR_RNDN)) +- ERROR1; +- mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN); +- if (!mpfr_fits_uintmax_p (x, MPFR_RNDN)) +- ERROR2; +- mpfr_set_sj (x, MPFR_INTMAX_MAX, MPFR_RNDN); +- mpfr_add_ui (x, x, 1, MPFR_RNDN); +- if (mpfr_fits_intmax_p (x, MPFR_RNDN)) +- ERROR1; +- mpfr_set_sj (x, MPFR_INTMAX_MAX, MPFR_RNDN); +- if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) +- ERROR2; +- mpfr_set_sj (x, MPFR_INTMAX_MIN, MPFR_RNDN); +- if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) +- ERROR2; +- mpfr_sub_ui (x, x, 1, MPFR_RNDN); +- if (mpfr_fits_intmax_p (x, MPFR_RNDN)) +- ERROR1; ++ /* Check all other values */ ++ mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN); ++ mpfr_add_ui (x, x, 1, MPFR_RNDN); ++ if (mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (64); ++ mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN); ++ if (!mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (65); ++ mpfr_set_sj (x, MPFR_INTMAX_MAX, MPFR_RNDN); ++ mpfr_add_ui (x, x, 1, MPFR_RNDN); ++ if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (66); ++ mpfr_set_sj (x, MPFR_INTMAX_MAX, MPFR_RNDN); ++ if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (67); ++ mpfr_set_sj (x, MPFR_INTMAX_MIN, MPFR_RNDN); ++ if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (68); ++ mpfr_sub_ui (x, x, 1, MPFR_RNDN); ++ if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (69); + +- /* Check negative value */ +- mpfr_set_si (x, -1, MPFR_RNDN); +- if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) +- ERROR2; +- if (mpfr_fits_uintmax_p (x, MPFR_RNDN)) +- ERROR1; ++ /* Check negative op */ ++ for (i = 1; i <= 4; i++) ++ { ++ int inv; ++ ++ mpfr_set_si_2exp (x, -i, -2, MPFR_RNDN); ++ mpfr_rint (y, x, (mpfr_rnd_t) r); ++ inv = MPFR_NOTZERO (y); ++ if (!mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r) ^ inv) ++ ERROR1 (70); ++ if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) ++ ERROR1 (71); ++ } ++ } + + mpfr_clear (x); ++ mpfr_clear (y); + #endif + } +- +diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES +--- mpfr-3.1.2-a/PATCHES 2013-10-09 13:34:21.000000000 +0000 ++++ mpfr-3.1.2-b/PATCHES 2013-10-09 13:34:21.000000000 +0000 +@@ -0,0 +1 @@ ++clang-divby0 +diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION +--- mpfr-3.1.2-a/VERSION 2013-09-26 10:52:52.000000000 +0000 ++++ mpfr-3.1.2-b/VERSION 2013-10-09 13:34:21.000000000 +0000 +@@ -1 +1 @@ +-3.1.2-p2 ++3.1.2-p3 +diff -Naurd mpfr-3.1.2-a/src/mpfr-impl.h mpfr-3.1.2-b/src/mpfr-impl.h +--- mpfr-3.1.2-a/src/mpfr-impl.h 2013-03-13 15:37:36.000000000 +0000 ++++ mpfr-3.1.2-b/src/mpfr-impl.h 2013-10-09 13:34:21.000000000 +0000 +@@ -468,8 +468,16 @@ + #define MPFR_LIMBS_PER_FLT ((IEEE_FLT_MANT_DIG-1)/GMP_NUMB_BITS+1) + + /* Visual C++ doesn't support +1.0/0.0, -1.0/0.0 and 0.0/0.0 +- at compile time. */ +-#if defined(_MSC_VER) && defined(_WIN32) && (_MSC_VER >= 1200) ++ at compile time. ++ Clang with -fsanitize=undefined is a bit similar due to a bug: ++ http://llvm.org/bugs/show_bug.cgi?id=17381 ++ but even without its sanitizer, it may be better to use the ++ double_zero version until IEEE 754 division by zero is properly ++ supported: ++ http://llvm.org/bugs/show_bug.cgi?id=17000 ++*/ ++#if (defined(_MSC_VER) && defined(_WIN32) && (_MSC_VER >= 1200)) || \ ++ defined(__clang__) + static double double_zero = 0.0; + # define DBL_NAN (double_zero/double_zero) + # define DBL_POS_INF ((double) 1.0/double_zero) +@@ -501,6 +509,8 @@ + (with Xcode 2.4.1, i.e. the latest one). */ + #define LVALUE(x) (&(x) == &(x) || &(x) != &(x)) + #define DOUBLE_ISINF(x) (LVALUE(x) && ((x) > DBL_MAX || (x) < -DBL_MAX)) ++/* The DOUBLE_ISNAN(x) macro is also valid on long double x ++ (assuming that the compiler isn't too broken). */ + #ifdef MPFR_NANISNAN + /* Avoid MIPSpro / IRIX64 / gcc -ffast-math (incorrect) optimizations. + The + must not be replaced by a ||. With gcc -ffast-math, NaN is +diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h +--- mpfr-3.1.2-a/src/mpfr.h 2013-09-26 10:52:52.000000000 +0000 ++++ mpfr-3.1.2-b/src/mpfr.h 2013-10-09 13:34:21.000000000 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 3 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 2 +-#define MPFR_VERSION_STRING "3.1.2-p2" ++#define MPFR_VERSION_STRING "3.1.2-p3" + + /* Macros dealing with MPFR VERSION */ + #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) +diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c +--- mpfr-3.1.2-a/src/version.c 2013-09-26 10:52:52.000000000 +0000 ++++ mpfr-3.1.2-b/src/version.c 2013-10-09 13:34:21.000000000 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "3.1.2-p2"; ++ return "3.1.2-p3"; + } +diff -Naurd mpfr-3.1.2-a/tests/tget_flt.c mpfr-3.1.2-b/tests/tget_flt.c +--- mpfr-3.1.2-a/tests/tget_flt.c 2013-03-13 15:37:44.000000000 +0000 ++++ mpfr-3.1.2-b/tests/tget_flt.c 2013-10-09 13:34:21.000000000 +0000 +@@ -28,9 +28,17 @@ + main (void) + { + mpfr_t x, y; +- float f, g, infp; ++ float f, g; + int i; ++#if !defined(MPFR_ERRDIVZERO) ++ float infp; ++#endif ++ ++ tests_start_mpfr (); + ++#if !defined(MPFR_ERRDIVZERO) ++ /* The definition of DBL_POS_INF involves a division by 0. This makes ++ "clang -O2 -fsanitize=undefined -fno-sanitize-recover" fail. */ + infp = (float) DBL_POS_INF; + if (infp * 0.5 != infp) + { +@@ -38,8 +46,7 @@ + fprintf (stderr, "(this is probably a compiler bug, please report)\n"); + exit (1); + } +- +- tests_start_mpfr (); ++#endif + + mpfr_init2 (x, 24); + mpfr_init2 (y, 24); +@@ -353,6 +360,7 @@ + printf ("expected %.8e, got %.8e\n", g, f); + exit (1); + } ++#if !defined(MPFR_ERRDIVZERO) + f = mpfr_get_flt (x, MPFR_RNDN); /* first round to 2^128 (even rule), + thus we should get +Inf */ + g = infp; +@@ -376,6 +384,7 @@ + printf ("expected %.8e, got %.8e\n", g, f); + exit (1); + } ++#endif + + mpfr_clear (x); + mpfr_clear (y); +diff -Naurd mpfr-3.1.2-a/tests/tset_ld.c mpfr-3.1.2-b/tests/tset_ld.c +--- mpfr-3.1.2-a/tests/tset_ld.c 2013-03-13 15:37:44.000000000 +0000 ++++ mpfr-3.1.2-b/tests/tset_ld.c 2013-10-09 13:34:21.000000000 +0000 +@@ -47,8 +47,11 @@ + static int + Isnan_ld (long double d) + { +- double e = (double) d; +- if (DOUBLE_ISNAN (e)) ++ /* Do not convert d to double as this can give an overflow, which ++ may confuse compilers without IEEE 754 support (such as clang ++ -fsanitize=undefined), or trigger a trap if enabled. ++ The DOUBLE_ISNAN macro should work fine on long double. */ ++ if (DOUBLE_ISNAN (d)) + return 1; + LONGDOUBLE_NAN_ACTION (d, goto yes); + return 0; +diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES +--- mpfr-3.1.2-a/PATCHES 2013-11-15 00:51:49.211333830 +0000 ++++ mpfr-3.1.2-b/PATCHES 2013-11-15 00:51:49.323334999 +0000 +@@ -0,0 +1 @@ ++printf-alt0 +diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION +--- mpfr-3.1.2-a/VERSION 2013-11-15 00:51:49.211333830 +0000 ++++ mpfr-3.1.2-b/VERSION 2013-11-15 00:51:49.323334999 +0000 +@@ -1 +1 @@ +-3.1.2-p3 ++3.1.2-p4 +diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h +--- mpfr-3.1.2-a/src/mpfr.h 2013-11-15 00:51:49.211333830 +0000 ++++ mpfr-3.1.2-b/src/mpfr.h 2013-11-15 00:51:49.323334999 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 3 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 2 +-#define MPFR_VERSION_STRING "3.1.2-p3" ++#define MPFR_VERSION_STRING "3.1.2-p4" + + /* Macros dealing with MPFR VERSION */ + #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) +diff -Naurd mpfr-3.1.2-a/src/vasprintf.c mpfr-3.1.2-b/src/vasprintf.c +--- mpfr-3.1.2-a/src/vasprintf.c 2013-03-13 15:37:37.000000000 +0000 ++++ mpfr-3.1.2-b/src/vasprintf.c 2013-11-15 00:51:49.267334408 +0000 +@@ -1040,7 +1040,7 @@ + } + + /* Determine the different parts of the string representation of the regular +- number P when SPEC.SPEC is 'e', 'E', 'g', or 'G'. ++ number P when spec.spec is 'e', 'E', 'g', or 'G'. + DEC_INFO contains the previously computed exponent and string or is NULL. + + return -1 if some field > INT_MAX */ +@@ -1167,7 +1167,7 @@ + } + + /* Determine the different parts of the string representation of the regular +- number P when SPEC.SPEC is 'f', 'F', 'g', or 'G'. ++ number P when spec.spec is 'f', 'F', 'g', or 'G'. + DEC_INFO contains the previously computed exponent and string or is NULL. + + return -1 if some field of number_parts is greater than INT_MAX */ +@@ -1559,7 +1559,7 @@ + /* fractional part */ + { + np->point = MPFR_DECIMAL_POINT; +- np->fp_trailing_zeros = (spec.spec == 'g' && spec.spec == 'G') ? ++ np->fp_trailing_zeros = (spec.spec == 'g' || spec.spec == 'G') ? + spec.prec - 1 : spec.prec; + } + else if (spec.alt) +diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c +--- mpfr-3.1.2-a/src/version.c 2013-11-15 00:51:49.211333830 +0000 ++++ mpfr-3.1.2-b/src/version.c 2013-11-15 00:51:49.323334999 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "3.1.2-p3"; ++ return "3.1.2-p4"; + } +diff -Naurd mpfr-3.1.2-a/tests/tsprintf.c mpfr-3.1.2-b/tests/tsprintf.c +--- mpfr-3.1.2-a/tests/tsprintf.c 2013-03-13 15:37:44.000000000 +0000 ++++ mpfr-3.1.2-b/tests/tsprintf.c 2013-11-15 00:51:49.267334408 +0000 +@@ -456,10 +456,16 @@ + check_sprintf ("1.999900 ", "%-#10.7RG", x); + check_sprintf ("1.9999 ", "%-10.7RG", x); + mpfr_set_ui (x, 1, MPFR_RNDN); ++ check_sprintf ("1.", "%#.1Rg", x); ++ check_sprintf ("1. ", "%-#5.1Rg", x); ++ check_sprintf (" 1.0", "%#5.2Rg", x); + check_sprintf ("1.00000000000000000000000000000", "%#.30Rg", x); + check_sprintf ("1", "%.30Rg", x); + mpfr_set_ui (x, 0, MPFR_RNDN); +- check_sprintf ("0.000000000000000000000000000000", "%#.30Rg", x); ++ check_sprintf ("0.", "%#.1Rg", x); ++ check_sprintf ("0. ", "%-#5.1Rg", x); ++ check_sprintf (" 0.0", "%#5.2Rg", x); ++ check_sprintf ("0.00000000000000000000000000000", "%#.30Rg", x); + check_sprintf ("0", "%.30Rg", x); + + /* following tests with precision 53 bits */ +diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES +--- mpfr-3.1.2-a/PATCHES 2013-12-01 11:07:49.575329762 +0000 ++++ mpfr-3.1.2-b/PATCHES 2013-12-01 11:07:49.751331625 +0000 +@@ -0,0 +1 @@ ++custom_init_set +diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION +--- mpfr-3.1.2-a/VERSION 2013-12-01 11:07:49.571329714 +0000 ++++ mpfr-3.1.2-b/VERSION 2013-12-01 11:07:49.747331585 +0000 +@@ -1 +1 @@ +-3.1.2-p4 ++3.1.2-p5 +diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h +--- mpfr-3.1.2-a/src/mpfr.h 2013-12-01 11:07:49.571329714 +0000 ++++ mpfr-3.1.2-b/src/mpfr.h 2013-12-01 11:07:49.747331585 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 3 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 2 +-#define MPFR_VERSION_STRING "3.1.2-p4" ++#define MPFR_VERSION_STRING "3.1.2-p5" + + /* Macros dealing with MPFR VERSION */ + #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) +@@ -861,7 +861,7 @@ + _t = (mpfr_kind_t) _k; \ + _s = 1; \ + } else { \ +- _t = (mpfr_kind_t) -k; \ ++ _t = (mpfr_kind_t) - _k; \ + _s = -1; \ + } \ + _e = _t == MPFR_REGULAR_KIND ? (e) : \ +diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c +--- mpfr-3.1.2-a/src/version.c 2013-12-01 11:07:49.575329762 +0000 ++++ mpfr-3.1.2-b/src/version.c 2013-12-01 11:07:49.747331585 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "3.1.2-p4"; ++ return "3.1.2-p5"; + } +diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES +--- mpfr-3.1.2-a/PATCHES 2014-04-15 21:56:49.609057464 +0000 ++++ mpfr-3.1.2-b/PATCHES 2014-04-15 21:56:49.697059857 +0000 +@@ -0,0 +1 @@ ++li2-return +diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION +--- mpfr-3.1.2-a/VERSION 2014-04-15 21:56:49.609057464 +0000 ++++ mpfr-3.1.2-b/VERSION 2014-04-15 21:56:49.697059857 +0000 +@@ -1 +1 @@ +-3.1.2-p5 ++3.1.2-p6 +diff -Naurd mpfr-3.1.2-a/src/li2.c mpfr-3.1.2-b/src/li2.c +--- mpfr-3.1.2-a/src/li2.c 2013-03-13 15:37:32.000000000 +0000 ++++ mpfr-3.1.2-b/src/li2.c 2014-04-15 21:56:49.653058661 +0000 +@@ -630,5 +630,5 @@ + return mpfr_check_range (y, inexact, rnd_mode); + } + +- MPFR_ASSERTN (0); /* should never reach this point */ ++ MPFR_RET_NEVER_GO_HERE (); + } +diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h +--- mpfr-3.1.2-a/src/mpfr.h 2014-04-15 21:56:49.609057464 +0000 ++++ mpfr-3.1.2-b/src/mpfr.h 2014-04-15 21:56:49.697059857 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 3 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 2 +-#define MPFR_VERSION_STRING "3.1.2-p5" ++#define MPFR_VERSION_STRING "3.1.2-p6" + + /* Macros dealing with MPFR VERSION */ + #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) +diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c +--- mpfr-3.1.2-a/src/version.c 2014-04-15 21:56:49.609057464 +0000 ++++ mpfr-3.1.2-b/src/version.c 2014-04-15 21:56:49.697059857 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "3.1.2-p5"; ++ return "3.1.2-p6"; + } +diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES +--- mpfr-3.1.2-a/PATCHES 2014-04-15 22:04:57.090286262 +0000 ++++ mpfr-3.1.2-b/PATCHES 2014-04-15 22:04:57.162288198 +0000 +@@ -0,0 +1 @@ ++exp3 +diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION +--- mpfr-3.1.2-a/VERSION 2014-04-15 22:04:57.086286154 +0000 ++++ mpfr-3.1.2-b/VERSION 2014-04-15 22:04:57.162288198 +0000 +@@ -1 +1 @@ +-3.1.2-p6 ++3.1.2-p7 +diff -Naurd mpfr-3.1.2-a/src/exp3.c mpfr-3.1.2-b/src/exp3.c +--- mpfr-3.1.2-a/src/exp3.c 2013-03-13 15:37:34.000000000 +0000 ++++ mpfr-3.1.2-b/src/exp3.c 2014-04-15 22:04:57.126287230 +0000 +@@ -283,7 +283,7 @@ + } + } + +- if (mpfr_can_round (shift_x > 0 ? t : tmp, realprec, MPFR_RNDD, MPFR_RNDZ, ++ if (mpfr_can_round (shift_x > 0 ? t : tmp, realprec, MPFR_RNDN, MPFR_RNDZ, + MPFR_PREC(y) + (rnd_mode == MPFR_RNDN))) + { + inexact = mpfr_set (y, shift_x > 0 ? t : tmp, rnd_mode); +diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h +--- mpfr-3.1.2-a/src/mpfr.h 2014-04-15 22:04:57.086286154 +0000 ++++ mpfr-3.1.2-b/src/mpfr.h 2014-04-15 22:04:57.162288198 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 3 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 2 +-#define MPFR_VERSION_STRING "3.1.2-p6" ++#define MPFR_VERSION_STRING "3.1.2-p7" + + /* Macros dealing with MPFR VERSION */ + #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) +diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c +--- mpfr-3.1.2-a/src/version.c 2014-04-15 22:04:57.090286262 +0000 ++++ mpfr-3.1.2-b/src/version.c 2014-04-15 22:04:57.162288198 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "3.1.2-p6"; ++ return "3.1.2-p7"; + } +diff -Naurd mpfr-3.1.2-a/tests/texp.c mpfr-3.1.2-b/tests/texp.c +--- mpfr-3.1.2-a/tests/texp.c 2013-03-13 15:37:44.000000000 +0000 ++++ mpfr-3.1.2-b/tests/texp.c 2014-04-15 22:04:57.126287230 +0000 +@@ -150,6 +150,22 @@ + exit (1); + } + ++ mpfr_set_prec (x, 118); ++ mpfr_set_str_binary (x, "0.1110010100011101010000111110011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E-86"); ++ mpfr_set_prec (y, 118); ++ mpfr_exp_2 (y, x, MPFR_RNDU); ++ mpfr_exp_3 (x, x, MPFR_RNDU); ++ if (mpfr_cmp (x, y)) ++ { ++ printf ("mpfr_exp_2 and mpfr_exp_3 differ for prec=118\n"); ++ printf ("mpfr_exp_2 gives "); ++ mpfr_out_str (stdout, 2, 0, y, MPFR_RNDN); ++ printf ("\nmpfr_exp_3 gives "); ++ mpfr_out_str (stdout, 2, 0, x, MPFR_RNDN); ++ printf ("\n"); ++ exit (1); ++ } ++ + mpfr_clear (x); + mpfr_clear (y); + return 0; +diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES +--- mpfr-3.1.2-a/PATCHES 2014-04-15 22:20:32.243481506 +0000 ++++ mpfr-3.1.2-b/PATCHES 2014-04-15 22:22:32.418722707 +0000 +@@ -0,0 +1 @@ ++gmp6-compat +diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION +--- mpfr-3.1.2-a/VERSION 2014-04-15 22:20:20.755171478 +0000 ++++ mpfr-3.1.2-b/VERSION 2014-04-15 22:21:45.225450147 +0000 +@@ -1 +1 @@ +-3.1.2-p7 ++3.1.2-p8 +diff -Naurd mpfr-3.1.2-a/configure mpfr-3.1.2-b/configure +--- mpfr-3.1.2-a/configure 2013-03-13 15:38:20.000000000 +0000 ++++ mpfr-3.1.2-b/configure 2014-04-15 22:21:38.821277476 +0000 +@@ -14545,26 +14545,30 @@ + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + +-if test "$use_gmp_build" = yes ; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for valid GMP_NUMB_BITS" >&5 +-$as_echo_n "checking for valid GMP_NUMB_BITS... " >&6; } +- if test "$cross_compiling" = yes; then : ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GMP_NUMB_BITS and sizeof(mp_limb_t) consistency" >&5 ++$as_echo_n "checking for GMP_NUMB_BITS and sizeof(mp_limb_t) consistency... " >&6; } ++if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: can't test" >&5 + $as_echo "can't test" >&6; } + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + ++#include + #include + #include "gmp.h" +-#include "gmp-impl.h" + + int + main () + { + +- return GMP_NUMB_BITS == BYTES_PER_MP_LIMB * CHAR_BIT +- && sizeof(mp_limb_t) == BYTES_PER_MP_LIMB ? 0 : 1; ++ if (GMP_NUMB_BITS == sizeof(mp_limb_t) * CHAR_BIT) ++ return 0; ++ fprintf (stderr, "GMP_NUMB_BITS = %ld\n", (long) GMP_NUMB_BITS); ++ fprintf (stderr, "sizeof(mp_limb_t) = %ld\n", (long) sizeof(mp_limb_t)); ++ fprintf (stderr, "sizeof(mp_limb_t) * CHAR_BIT = %ld != GMP_NUMB_BITS\n", ++ (long) (sizeof(mp_limb_t) * CHAR_BIT)); ++ return 1; + + ; + return 0; +@@ -14577,14 +14581,14 @@ + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } +- as_fn_error $? "GMP_NUMB_BITS is incorrect. +-You probably need to change some of the GMP or MPFR compile options." "$LINENO" 5 ++ as_fn_error $? "GMP_NUMB_BITS and sizeof(mp_limb_t) are not consistent. ++You probably need to change some of the GMP or MPFR compile options. ++See 'config.log' for details (search for GMP_NUMB_BITS)." "$LINENO" 5 + fi + rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + +-fi + + + if test "$dont_link_with_gmp" = yes ; then +diff -Naurd mpfr-3.1.2-a/configure.ac mpfr-3.1.2-b/configure.ac +--- mpfr-3.1.2-a/configure.ac 2013-03-13 15:37:46.000000000 +0000 ++++ mpfr-3.1.2-b/configure.ac 2013-03-13 15:37:46.000000000 +0000 +@@ -435,23 +435,29 @@ + ]) + fi + +-dnl Check for valid GMP_NUMB_BITS and BYTES_PER_MP_LIMB ++dnl Check for GMP_NUMB_BITS and sizeof(mp_limb_t) consistency. ++dnl Problems may occur if gmp.h was generated with some ABI ++dnl and is used with another ABI (or if nails are used). + dnl This test doesn't need to link with libgmp (at least it shouldn't). +-if test "$use_gmp_build" = yes ; then +- AC_MSG_CHECKING(for valid GMP_NUMB_BITS) +- AC_RUN_IFELSE([AC_LANG_PROGRAM([[ ++AC_MSG_CHECKING(for GMP_NUMB_BITS and sizeof(mp_limb_t) consistency) ++AC_RUN_IFELSE([AC_LANG_PROGRAM([[ ++#include + #include + #include "gmp.h" +-#include "gmp-impl.h" + ]], [[ +- return GMP_NUMB_BITS == BYTES_PER_MP_LIMB * CHAR_BIT +- && sizeof(mp_limb_t) == BYTES_PER_MP_LIMB ? 0 : 1; ++ if (GMP_NUMB_BITS == sizeof(mp_limb_t) * CHAR_BIT) ++ return 0; ++ fprintf (stderr, "GMP_NUMB_BITS = %ld\n", (long) GMP_NUMB_BITS); ++ fprintf (stderr, "sizeof(mp_limb_t) = %ld\n", (long) sizeof(mp_limb_t)); ++ fprintf (stderr, "sizeof(mp_limb_t) * CHAR_BIT = %ld != GMP_NUMB_BITS\n", ++ (long) (sizeof(mp_limb_t) * CHAR_BIT)); ++ return 1; + ]])], [AC_MSG_RESULT(yes)], [ + AC_MSG_RESULT(no) +- AC_MSG_ERROR([GMP_NUMB_BITS is incorrect. +-You probably need to change some of the GMP or MPFR compile options.])], ++ AC_MSG_ERROR([GMP_NUMB_BITS and sizeof(mp_limb_t) are not consistent. ++You probably need to change some of the GMP or MPFR compile options. ++See 'config.log' for details (search for GMP_NUMB_BITS).])], + [AC_MSG_RESULT([can't test])]) +-fi + + + dnl We really need to link using libtool. But it is impossible with the current +diff -Naurd mpfr-3.1.2-a/src/init2.c mpfr-3.1.2-b/src/init2.c +--- mpfr-3.1.2-a/src/init2.c 2013-03-13 15:37:32.000000000 +0000 ++++ mpfr-3.1.2-b/src/init2.c 2014-04-15 22:21:06.220398489 +0000 +@@ -30,11 +30,11 @@ + + /* Check if we can represent the number of limbs + * associated to the maximum of mpfr_prec_t*/ +- MPFR_ASSERTN( MP_SIZE_T_MAX >= (MPFR_PREC_MAX/BYTES_PER_MP_LIMB) ); ++ MPFR_ASSERTN( MP_SIZE_T_MAX >= (MPFR_PREC_MAX/MPFR_BYTES_PER_MP_LIMB) ); + +- /* Check for correct GMP_NUMB_BITS and BYTES_PER_MP_LIMB */ +- MPFR_ASSERTN( GMP_NUMB_BITS == BYTES_PER_MP_LIMB * CHAR_BIT +- && sizeof(mp_limb_t) == BYTES_PER_MP_LIMB ); ++ /* Check for correct GMP_NUMB_BITS and MPFR_BYTES_PER_MP_LIMB */ ++ MPFR_ASSERTN( GMP_NUMB_BITS == MPFR_BYTES_PER_MP_LIMB * CHAR_BIT ++ && sizeof(mp_limb_t) == MPFR_BYTES_PER_MP_LIMB ); + + MPFR_ASSERTN (mp_bits_per_limb == GMP_NUMB_BITS); + +diff -Naurd mpfr-3.1.2-a/src/mpfr-gmp.h mpfr-3.1.2-b/src/mpfr-gmp.h +--- mpfr-3.1.2-a/src/mpfr-gmp.h 2013-03-13 15:37:32.000000000 +0000 ++++ mpfr-3.1.2-b/src/mpfr-gmp.h 2014-04-15 22:21:06.220398489 +0000 +@@ -72,7 +72,6 @@ + #endif + + /* Define some macros */ +-#define BYTES_PER_MP_LIMB (GMP_NUMB_BITS/CHAR_BIT) + + #define MP_LIMB_T_MAX (~(mp_limb_t)0) + +@@ -96,19 +95,19 @@ + #define SHRT_HIGHBIT SHRT_MIN + + /* MP_LIMB macros */ +-#define MPN_ZERO(dst, n) memset((dst), 0, (n)*BYTES_PER_MP_LIMB) +-#define MPN_COPY_DECR(dst,src,n) memmove((dst),(src),(n)*BYTES_PER_MP_LIMB) +-#define MPN_COPY_INCR(dst,src,n) memmove((dst),(src),(n)*BYTES_PER_MP_LIMB) ++#define MPN_ZERO(dst, n) memset((dst), 0, (n)*MPFR_BYTES_PER_MP_LIMB) ++#define MPN_COPY_DECR(dst,src,n) memmove((dst),(src),(n)*MPFR_BYTES_PER_MP_LIMB) ++#define MPN_COPY_INCR(dst,src,n) memmove((dst),(src),(n)*MPFR_BYTES_PER_MP_LIMB) + #define MPN_COPY(dst,src,n) \ + do \ + { \ + if ((dst) != (src)) \ + { \ + MPFR_ASSERTD ((char *) (dst) >= (char *) (src) + \ +- (n) * BYTES_PER_MP_LIMB || \ ++ (n) * MPFR_BYTES_PER_MP_LIMB || \ + (char *) (src) >= (char *) (dst) + \ +- (n) * BYTES_PER_MP_LIMB); \ +- memcpy ((dst), (src), (n) * BYTES_PER_MP_LIMB); \ ++ (n) * MPFR_BYTES_PER_MP_LIMB); \ ++ memcpy ((dst), (src), (n) * MPFR_BYTES_PER_MP_LIMB); \ + } \ + } \ + while (0) +diff -Naurd mpfr-3.1.2-a/src/mpfr-impl.h mpfr-3.1.2-b/src/mpfr-impl.h +--- mpfr-3.1.2-a/src/mpfr-impl.h 2013-10-09 13:34:21.000000000 +0000 ++++ mpfr-3.1.2-b/src/mpfr-impl.h 2014-04-15 22:21:06.220398489 +0000 +@@ -191,7 +191,7 @@ + # endif + #endif + +- ++#define MPFR_BYTES_PER_MP_LIMB (GMP_NUMB_BITS/CHAR_BIT) + + /****************************************************** + ******************** Check GMP *********************** +@@ -930,7 +930,7 @@ + #define MPFR_SET_ALLOC_SIZE(x, n) \ + ( ((mp_size_t*) MPFR_MANT(x))[-1] = n) + #define MPFR_MALLOC_SIZE(s) \ +- ( sizeof(mpfr_size_limb_t) + BYTES_PER_MP_LIMB * ((size_t) s) ) ++ ( sizeof(mpfr_size_limb_t) + MPFR_BYTES_PER_MP_LIMB * ((size_t) s) ) + #define MPFR_SET_MANT_PTR(x,p) \ + (MPFR_MANT(x) = (mp_limb_t*) ((mpfr_size_limb_t*) p + 1)) + #define MPFR_GET_REAL_PTR(x) \ +@@ -964,7 +964,7 @@ + #endif + + #define MPFR_TMP_LIMBS_ALLOC(N) \ +- ((mp_limb_t *) MPFR_TMP_ALLOC ((size_t) (N) * BYTES_PER_MP_LIMB)) ++ ((mp_limb_t *) MPFR_TMP_ALLOC ((size_t) (N) * MPFR_BYTES_PER_MP_LIMB)) + + /* temporary allocate 1 limb at xp, and initialize mpfr variable x */ + /* The temporary var doesn't have any size field, but it doesn't matter +diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h +--- mpfr-3.1.2-a/src/mpfr.h 2014-04-15 22:20:20.755171478 +0000 ++++ mpfr-3.1.2-b/src/mpfr.h 2014-04-15 22:21:45.225450147 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 3 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 2 +-#define MPFR_VERSION_STRING "3.1.2-p7" ++#define MPFR_VERSION_STRING "3.1.2-p8" + + /* Macros dealing with MPFR VERSION */ + #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) +diff -Naurd mpfr-3.1.2-a/src/mul.c mpfr-3.1.2-b/src/mul.c +--- mpfr-3.1.2-a/src/mul.c 2013-03-13 15:37:37.000000000 +0000 ++++ mpfr-3.1.2-b/src/mul.c 2014-04-15 22:21:06.224398597 +0000 +@@ -106,7 +106,7 @@ + MPFR_ASSERTD(tn <= k); + + /* Check for no size_t overflow*/ +- MPFR_ASSERTD((size_t) k <= ((size_t) -1) / BYTES_PER_MP_LIMB); ++ MPFR_ASSERTD((size_t) k <= ((size_t) -1) / MPFR_BYTES_PER_MP_LIMB); + MPFR_TMP_MARK(marker); + tmp = MPFR_TMP_LIMBS_ALLOC (k); + +@@ -301,7 +301,7 @@ + MPFR_ASSERTD (tn <= k); /* tn <= k, thus no int overflow */ + + /* Check for no size_t overflow*/ +- MPFR_ASSERTD ((size_t) k <= ((size_t) -1) / BYTES_PER_MP_LIMB); ++ MPFR_ASSERTD ((size_t) k <= ((size_t) -1) / MPFR_BYTES_PER_MP_LIMB); + MPFR_TMP_MARK (marker); + tmp = MPFR_TMP_LIMBS_ALLOC (k); + +diff -Naurd mpfr-3.1.2-a/src/stack_interface.c mpfr-3.1.2-b/src/stack_interface.c +--- mpfr-3.1.2-a/src/stack_interface.c 2013-03-13 15:37:32.000000000 +0000 ++++ mpfr-3.1.2-b/src/stack_interface.c 2014-04-15 22:21:06.220398489 +0000 +@@ -26,7 +26,7 @@ + size_t + mpfr_custom_get_size (mpfr_prec_t prec) + { +- return MPFR_PREC2LIMBS (prec) * BYTES_PER_MP_LIMB; ++ return MPFR_PREC2LIMBS (prec) * MPFR_BYTES_PER_MP_LIMB; + } + + #undef mpfr_custom_init +diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c +--- mpfr-3.1.2-a/src/version.c 2014-04-15 22:20:20.755171478 +0000 ++++ mpfr-3.1.2-b/src/version.c 2014-04-15 22:21:45.225450147 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "3.1.2-p7"; ++ return "3.1.2-p8"; + } diff --git a/extra/burp/PKGBUILD b/extra/burp/PKGBUILD index 90c8cf227..e85c798fa 100644 --- a/extra/burp/PKGBUILD +++ b/extra/burp/PKGBUILD @@ -1,24 +1,28 @@ -# $Id: PKGBUILD 199808 2013-11-17 00:47:14Z dreisner $ +# $Id: PKGBUILD 213673 2014-05-28 05:10:10Z dreisner $ # Maintainer: Dave Reisner pkgname=burp -pkgver=3 +pkgver=4 pkgrel=1 pkgdesc="A simple AUR uploader" arch=('i686' 'x86_64') url="http://github.com/falconindy/burp" license=('GPL') depends=('glibc' 'curl') -makedepends=('perl') -source=("http://code.falconindy.com/archive/$pkgname/$pkgname-$pkgver.tar.gz"{,.sig}) -md5sums=('3afc7346b3ba63ce9487bdbba1e370f1' +source=("http://code.falconindy.com/archive/$pkgname/$pkgname-$pkgver.tar.xz"{,.sig}) +md5sums=('f1369e5f46f9617654419d1e00a614d8' 'SKIP') build() { - make -C "$pkgname-$pkgver" + cd "$pkgname-$pkgver" + + ./configure + make } package() { - make -C "$pkgname-$pkgver" PREFIX=/usr DESTDIR="$pkgdir" MANPREFIX=/usr/share/man install + cd "$pkgname-$pkgver" + + make DESTDIR="$pkgdir" install } diff --git a/extra/cups/PKGBUILD b/extra/cups/PKGBUILD index b3ebf1daf..8c20c1541 100644 --- a/extra/cups/PKGBUILD +++ b/extra/cups/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 210252 2014-04-13 07:29:52Z andyrtr $ +# $Id: PKGBUILD 213693 2014-05-28 14:54:23Z andyrtr $ # Maintainer: Andreas Radke pkgbase="cups" pkgname=('libcups' 'cups') -pkgver=1.7.2 +pkgver=1.7.3 pkgrel=1 arch=('i686' 'x86_64') license=('GPL') @@ -31,7 +31,7 @@ source=(#http://mirror.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.b cupsd-no-crash-on-avahi-threaded-poll-shutdown.patch get-ppd-file-for-statically-configured-ipp-shared-queues.patch ppd-poll-with-client-conf.patch) -md5sums=('f06a997d4b71b81b23324e27174f93e7' +md5sums=('d498c3020acda0904ab0c13b6389a1ec' 'SKIP' 'f861b18f4446c43918c8643dcbbd7f6d' '96f82c38f3f540b53f3e5144900acf17' diff --git a/extra/frameworkintegration/PKGBUILD b/extra/frameworkintegration/PKGBUILD index 623844c3b..437f289e8 100644 --- a/extra/frameworkintegration/PKGBUILD +++ b/extra/frameworkintegration/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 213067 2014-05-18 18:58:27Z andrea $ +# $Id: PKGBUILD 213670 2014-05-27 22:20:27Z andrea $ # Maintainer: Andrea Scarpino pkgname=frameworkintegration pkgver=4.99.0 -pkgrel=2 +pkgrel=3 pkgdesc='Framework providing components to allow applications to integrate with a KDE Workspace' arch=('i686' 'x86_64') url='https://projects.kde.org/projects/frameworks/frameworkintegration' diff --git a/extra/gnu-efi-libs/PKGBUILD b/extra/gnu-efi-libs/PKGBUILD index 28de86fd1..a081dd705 100644 --- a/extra/gnu-efi-libs/PKGBUILD +++ b/extra/gnu-efi-libs/PKGBUILD @@ -1,11 +1,14 @@ # Maintainer: Tobias Powalowski -# Contributor: Keshav Padram <(the.ridikulus.rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)> +# Contributor: Keshav Amburay <(the ddoott ridikulus ddoott rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)> # Contributor: Alessio 'mOLOk' Bolognino +[[ "${CARCH}" == "x86_64" ]] && _EFI_ARCH="x86_64" +[[ "${CARCH}" == "i686" ]] && _EFI_ARCH="ia32" + _pkgver="3.0" pkgname="gnu-efi-libs" -pkgver="${_pkgver}u" -pkgrel="4" +pkgver="${_pkgver}v" +pkgrel="2" pkgdesc="Library for building UEFI Applications using GNU toolchain" url="http://sourceforge.net/projects/gnu-efi/" license=('GPL') @@ -13,11 +16,13 @@ arch=('x86_64' 'i686') options=('!strip' '!makeflags' 'staticlibs') makedepends=('pciutils') -source=("http://download.sourceforge.net/gnu-efi/gnu-efi_${pkgver}.orig.tar.gz") -md5sums=('d15d3c700e79a1e2938544d73edc572d') +source=("http://download.sourceforge.net/gnu-efi/gnu-efi_${pkgver}.orig.tar.gz" + 'gnu-efi-3.0v-revert-makefile-commit.patch') -[[ "${CARCH}" == "x86_64" ]] && _EFI_ARCH="x86_64" -[[ "${CARCH}" == "i686" ]] && _EFI_ARCH="ia32" +prepare() { + cd "${srcdir}/gnu-efi-${_pkgver}/" + patch -Np1 -R -i "${srcdir}/gnu-efi-3.0v-revert-makefile-commit.patch" +} build() { @@ -45,3 +50,6 @@ package() { install -D -m0644 "${srcdir}/gnu-efi-${_pkgver}/apps"/*.efi "${pkgdir}/usr/share/gnu-efi/apps/${_EFI_ARCH}/" } + +md5sums=('57f0a308c0e939e5d18e40840a5484a9' + '97ef85cd3d4aba2349aa1fab706568ab') diff --git a/extra/gnu-efi-libs/gnu-efi-3.0v-revert-makefile-commit.patch b/extra/gnu-efi-libs/gnu-efi-3.0v-revert-makefile-commit.patch new file mode 100644 index 000000000..3a04a4b3e --- /dev/null +++ b/extra/gnu-efi-libs/gnu-efi-3.0v-revert-makefile-commit.patch @@ -0,0 +1,148 @@ +commit 06744d69273de4945cf0ffcaa4a6abf7cec707b6 +Author: Nigel Croxon +Date: Fri Mar 14 13:47:39 2014 -0400 + + From: Sylvain Gault + Date: Wed, 19 Feb 2014 05:18:14 +0100 + Subject: [PATCH] make install: Don't overwrite up-to-date files + + make install used to copy files unconditionnally to their destination. + However, if the destination is used by another Makefile, it will always + see modified files. "install" target now only update the files when they + need to. + + Signed-off-by: Sylvain Gault + Signed-off-by: Nigel Croxon + +diff --git a/gnuefi/Makefile b/gnuefi/Makefile +index e99adbe..85a7db8 100644 +--- a/gnuefi/Makefile ++++ b/gnuefi/Makefile +@@ -49,6 +49,19 @@ OBJS = $(FILES:%=%.o) + + TARGETS = crt0-efi-$(ARCH).o libgnuefi.a + ++INSTALLTARGETS = $(TARGETS) ++ifneq (,$(findstring FreeBSD,$(OS))) ++ ifeq ($(ARCH),x86_64) ++ INSTALLTARGETS += elf_$(ARCH)_fbsd_efi.lds ++ else ++ INSTALLTARGETS += elf_$(ARCH)_efi.lds ++ endif ++else ++ INSTALLTARGETS += elf_$(ARCH)_efi.lds ++endif ++ ++LIBDIRINSTALL = $(INSTALLROOT)/$(LIBDIR) ++ + all: $(TARGETS) + + libgnuefi.a: $(patsubst %,libgnuefi.a(%),$(OBJS)) +@@ -56,17 +69,14 @@ libgnuefi.a: $(patsubst %,libgnuefi.a(%),$(OBJS)) + clean: + rm -f $(TARGETS) *~ *.o $(OBJS) + +-install: +- mkdir -p $(INSTALLROOT)/$(LIBDIR) +- $(INSTALL) -m 644 $(TARGETS) $(INSTALLROOT)/$(LIBDIR) +-ifneq (,$(findstring FreeBSD,$(OS))) +- ifeq ($(ARCH),x86_64) +- $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_fbsd_efi.lds $(INSTALLROOT)/$(LIBDIR) +- else +- $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)/$(LIBDIR) +- endif +-else +- $(INSTALL) -m 644 $(SRCDIR)/elf_$(ARCH)_efi.lds $(INSTALLROOT)/$(LIBDIR) +-endif ++$(LIBDIRINSTALL): ++ mkdir -p $@ ++ ++.SECONDEXPANSION: ++ ++$(LIBDIRINSTALL)/%: % | $$(dir $$@) ++ $(INSTALL) -m 644 $< $(dir $@) ++ ++install: $(addprefix $(LIBDIRINSTALL)/,$(INSTALLTARGETS)) + + include $(SRCDIR)/../Make.rules +diff --git a/inc/Makefile b/inc/Makefile +index 273d303..297385b 100644 +--- a/inc/Makefile ++++ b/inc/Makefile +@@ -8,20 +8,32 @@ TOPDIR = $(SRCDIR)/.. + + CDIR=$(TOPDIR)/.. + ++INCDIRINSTALL = $(INSTALLROOT)$(PREFIX)/include/efi ++ ++SRCHEADERS = $(wildcard $(SRCDIR)/*.h) \ ++ $(wildcard $(SRCDIR)/protocol/*.h) \ ++ $(wildcard $(SRCDIR)/$(ARCH)/*.h) ++ifeq ($(ARCH),ia64) ++ SRCHEADERS += $(wildcard $(SRCDIR)/protocol/$(ARCH)/*.h) ++endif ++ ++HEADERS = $(patsubst $(SRCDIR)/%,%,$(SRCHEADERS)) ++ + all: + + clean: + +-install: +- mkdir -p $(INSTALLROOT)$(PREFIX)/include/efi +- mkdir -p $(INSTALLROOT)$(PREFIX)/include/efi/protocol +- mkdir -p $(INSTALLROOT)$(PREFIX)/include/efi/$(ARCH) +- $(INSTALL) -m 644 $(SRCDIR)/*.h $(INSTALLROOT)$(PREFIX)/include/efi +- $(INSTALL) -m 644 $(SRCDIR)/protocol/*.h $(INSTALLROOT)$(PREFIX)/include/efi/protocol +- $(INSTALL) -m 644 $(SRCDIR)/$(ARCH)/*.h $(INSTALLROOT)$(PREFIX)/include/efi/$(ARCH) +-ifeq ($(ARCH),ia64) +- mkdir -p $(INSTALLROOT)$(PREFIX)/include/efi/protocol/ia64 +- $(INSTALL) -m 644 $(SRCDIR)/protocol/ia64/*.h $(INSTALLROOT)$(PREFIX)/include/efi/protocol/ia64 +-endif ++$(INCDIRINSTALL) \ ++$(INCDIRINSTALL)/protocol \ ++$(INCDIRINSTALL)/$(ARCH) \ ++$(INCDIRINSTALL)/protocol/$(ARCH): ++ mkdir -p $@ ++ ++.SECONDEXPANSION: ++ ++$(INCDIRINSTALL)/%.h: %.h | $$(dir $$@) ++ $(INSTALL) -m 644 $< $(dir $@) ++ ++install: $(addprefix $(INCDIRINSTALL)/,$(HEADERS)) + + include $(SRCDIR)/../Make.rules +diff --git a/lib/Makefile b/lib/Makefile +index e9f604e..d2635ad 100644 +--- a/lib/Makefile ++++ b/lib/Makefile +@@ -61,8 +61,11 @@ OBJS = $(FILES:%=%.o) + + SUBDIRS = ia32 x86_64 ia64 runtime + ++LIBDIRINSTALL = $(INSTALLROOT)/$(LIBDIR) ++ + all: libsubdirs libefi.a + ++.PHONY: libsubdirs + libsubdirs: + for sdir in $(SUBDIRS); do mkdir -p $$sdir; done + +@@ -71,9 +74,13 @@ libefi.a: $(patsubst %,libefi.a(%),$(OBJS)) + clean: + rm -f libefi.a *~ $(OBJS) */*.o + +-install: libefi.a +- mkdir -p $(INSTALLROOT)/$(LIBDIR) +- $(INSTALL) -m 644 libefi.a $(INSTALLROOT)/$(LIBDIR) ++$(LIBDIRINSTALL): ++ mkdir -p $@ ++ ++$(LIBDIRINSTALL)/libefi.a: libefi.a | $(LIBDIRINSTALL) ++ $(INSTALL) -m 644 $< $(dir $@) ++ ++install: $(LIBDIRINSTALL)/libefi.a + + include $(SRCDIR)/../Make.rules + diff --git a/extra/qt5/PKGBUILD b/extra/qt5/PKGBUILD index f1ad7cbb8..ebc217b1c 100644 --- a/extra/qt5/PKGBUILD +++ b/extra/qt5/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 211872 2014-04-28 15:12:15Z andrea $ +# $Id: PKGBUILD 213668 2014-05-27 22:18:41Z andrea $ # Maintainer: Andrea Scarpino pkgbase=qt5 @@ -6,6 +6,7 @@ pkgname=('qt5-base' 'qt5-connectivity' 'qt5-declarative' 'qt5-doc' + 'qt5-enginio' 'qt5-graphicaleffects' 'qt5-imageformats' 'qt5-location' @@ -19,10 +20,11 @@ pkgname=('qt5-base' 'qt5-tools' 'qt5-translations' 'qt5-webkit' + 'qt5-websockets' 'qt5-x11extras' 'qt5-xmlpatterns') -pkgver=5.2.1 -pkgrel=4 +pkgver=5.3.0 +pkgrel=3 arch=('i686' 'x86_64') url='http://qt-project.org/' license=('GPL3' 'LGPL' 'FDL' 'custom') @@ -31,18 +33,20 @@ makedepends=('libxcb' 'xcb-proto' 'xcb-util' 'xcb-util-image' 'xcb-util-wm' 'xcb 'libjpeg-turbo' 'cups' 'libpulse' 'hicolor-icon-theme' 'desktop-file-utils' 'postgresql-libs' 'libmariadbclient' 'sqlite' 'unixodbc' 'libfbclient' 'python2' 'ruby' 'gperf' 'libxslt' 'libxcomposite' 'fontconfig' - 'openal' 'gtk2' 'libxkbcommon' 'python') + 'openal' 'gtk2' 'libxkbcommon-x11' 'python' 'mtdev' 'harfbuzz') groups=('qt' 'qt5') _pkgfqn="qt-everywhere-opensource-src-${pkgver}" -source=("http://download.qt-project.org/official_releases/qt/5.2/${pkgver}/single/${_pkgfqn}.tar.xz" +source=("http://download.qt-project.org/official_releases/qt/5.3/${pkgver}/single/${_pkgfqn}.tar.xz" 'assistant.desktop' 'designer.desktop' 'linguist.desktop' 'qdbusviewer.desktop' - 'use-python2.patch') -md5sums=('0c8d2aa45f38be9c3f7c9325eb059d9d' + 'use-python2.patch' + 'QTBUG-39047.patch') +md5sums=('f00ac7930e3b1b2b364dedcd15acc142' 'b2897dd6a2967bccf8f10e397aafee55' '9638a78e502719ef8fe5f8d10d0361a9' '188da8f4c87316e730ebf1c6217bf5a0' '322b419b16c75d4de0ee7ad0a246caa1' - 'a378deccf363bd6079da459c89aff7b9') + 'a378deccf363bd6079da459c89aff7b9' + '819813c53ab11b2341baf54afbc37e37') prepare() { cd ${_pkgfqn} @@ -56,6 +60,9 @@ prepare() { sed -i -e "s|#![ ]*/usr/bin/python$|#!/usr/bin/python2|" \ -e "s|#![ ]*/usr/bin/env python$|#!/usr/bin/env python2|" \ $(find . -name '*.py') + + cd qtdeclarative + patch -p1 -i "${srcdir}"/QTBUG-39047.patch } build() { @@ -83,6 +90,8 @@ build() { -no-rpath \ -optimized-qmake \ -dbus-linked \ + -system-harfbuzz \ + -journald \ -reduce-relocations ${SSE2} make @@ -101,11 +110,15 @@ package_qt5-base() { pkgdesc='A cross-platform application and UI framework' depends=('libjpeg-turbo' 'xcb-util-keysyms' 'libgl' 'dbus' 'fontconfig' 'systemd' 'xcb-util-wm' 'libxrender' 'libxi' 'sqlite' 'xcb-util-image' 'icu' - 'qtchooser' 'libxkbcommon') + 'qtchooser') optdepends=('postgresql-libs: PostgreSQL driver' 'libmariadbclient: MariaDB driver' 'unixodbc: ODBC driver' - 'libfbclient: Firebird/iBase driver') + 'libfbclient: Firebird/iBase driver' + 'mtdev: evdev plugin' + 'libxkbcommon-x11: xcb plugin' + 'libsm: xcb plugin' + 'gtk2: GTK2 plugin') conflicts=('qt') options=('staticlibs') #libQt5PlatformSupport builds static only @@ -131,7 +144,7 @@ package_qt5-base() { } package_qt5-connectivity() { - pkgdesc='A cross-platform application and UI framework (QtBluetooth, QtNfc)' + pkgdesc='Provides access to Bluetooth hardware' depends=('qt5-declarative') cd ${_pkgfqn}/qtconnectivity @@ -146,8 +159,8 @@ package_qt5-connectivity() { } package_qt5-declarative() { - pkgdesc='A cross-platform application and UI framework (QtQml, QtQuick)' - depends=('qt5-xmlpatterns') + pkgdesc='Classes for QML and JavaScript languages' + depends=('qt5-xmlpatterns' 'libxkbcommon-x11') conflicts=('qt') cd ${_pkgfqn}/qtdeclarative @@ -184,8 +197,23 @@ package_qt5-doc() { "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt } +package_qt5-enginio() { + pkgdesc='A Backend-as-a-Service solution to ease the backend development for connected and data-driven application' + depends=('qt5-declarative') + + cd ${_pkgfqn}/qtenginio + make INSTALL_ROOT="${pkgdir}" install + + # Fix wrong path in prl files + find "${pkgdir}/usr/lib" -type f -name '*.prl' \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d;s/\(QMAKE_PRL_LIBS =\).*/\1/' {} \; + + install -D -m644 LGPL_EXCEPTION.txt \ + "${pkgdir}"/usr/share/licenses/${pkgname}/LGPL_EXCEPTION.txt +} + package_qt5-xmlpatterns() { - pkgdesc='A cross-platform application and UI framework (QtXmlPatterns)' + pkgdesc='Support for XPath, XQuery, XSLT and XML schema validation' depends=('qt5-base') conflicts=('qt') @@ -219,7 +247,7 @@ package_qt5-translations() { } package_qt5-multimedia() { - pkgdesc='A cross-platform application and UI framework (QtMultimedia)' + pkgdesc='Classes for audio, video, radio and camera functionality' depends=('qt5-declarative' 'libpulse' 'gstreamer0.10-base' 'openal') conflicts=('qt') @@ -235,7 +263,7 @@ package_qt5-multimedia() { } package_qt5-graphicaleffects() { - pkgdesc='A cross-platform application and UI framework (QtGraphicalEffects)' + pkgdesc='Graphical effects for use with Qt Quick 2' depends=('qt5-declarative') cd ${_pkgfqn}/qtgraphicaleffects @@ -246,8 +274,8 @@ package_qt5-graphicaleffects() { } package_qt5-imageformats() { - pkgdesc='A cross-platform application and UI framework (Images plugins)' - depends=('qt5-base' 'libtiff' 'libmng') + pkgdesc='Plugins for additional image formats: TIFF, MNG, TGA, WBMP' + depends=('qt5-base' 'jasper' 'libmng') conflicts=('qt') cd ${_pkgfqn}/qtimageformats @@ -258,7 +286,7 @@ package_qt5-imageformats() { } package_qt5-location() { - pkgdesc='A cross-platform application and UI framework (QtLocation, QtPositioning)' + pkgdesc='Provides access to position, satellite and area monitoring classes' depends=('qt5-declarative') cd ${_pkgfqn}/qtlocation @@ -273,7 +301,7 @@ package_qt5-location() { } package_qt5-quick1() { - pkgdesc='A cross-platform application and UI framework (QtDeclarative)' + pkgdesc='Qt Declarative is provided for Qt 4 compatibility' depends=('qt5-webkit' 'qt5-script') conflicts=('qt') @@ -295,7 +323,7 @@ package_qt5-quick1() { } package_qt5-quickcontrols() { - pkgdesc='A cross-platform application and UI framework (QtQuick)' + pkgdesc='Reusable Qt Quick based UI controls to create classic desktop-style user interfaces' depends=('qt5-declarative') cd ${_pkgfqn}/qtquickcontrols @@ -306,7 +334,7 @@ package_qt5-quickcontrols() { } package_qt5-script() { - pkgdesc='A cross-platform application and UI framework (QtScript)' + pkgdesc='Classes for making Qt applications scriptable. Provided for Qt 4.x compatibility' depends=('qt5-base') conflicts=('qt') @@ -322,7 +350,7 @@ package_qt5-script() { } package_qt5-sensors() { - pkgdesc='A cross-platform application and UI framework (QtSensors)' + pkgdesc='Provides access to sensor hardware and motion gesture recognition' depends=('qt5-declarative') cd ${_pkgfqn}/qtsensors @@ -337,7 +365,7 @@ package_qt5-sensors() { } package_qt5-serialport() { - pkgdesc='A cross-platform application and UI framework (QtSerialPort)' + pkgdesc='Provides access to hardware and virtual serial ports' depends=('qt5-base') cd ${_pkgfqn}/qtserialport @@ -352,7 +380,7 @@ package_qt5-serialport() { } package_qt5-svg() { - pkgdesc='A cross-platform application and UI framework (QtSvg)' + pkgdesc='Classes for displaying the contents of SVG files' depends=('qt5-base') conflicts=('qt') @@ -415,7 +443,7 @@ package_qt5-tools() { } package_qt5-webkit() { - pkgdesc='A cross-platform application and UI framework (QtWebKit)' + pkgdesc='Classes for a WebKit2 based implementation and a new QML API' depends=('qt5-sensors' 'qt5-location' 'gst-plugins-base' 'libxslt' 'libxcomposite') license=('GPL3' 'LGPL' 'FDL') @@ -430,8 +458,21 @@ package_qt5-webkit() { perl -pi -e "s, -L${srcdir}/?\S+,,g" "${pkgdir}"/usr/lib/pkgconfig/Qt5WebKit.pc } +package_qt5-websockets() { + pkgdesc='Provides WebSocket communication compliant with RFC 6455' + depends=('qt5-declarative') + license=('LGPL') + + cd ${_pkgfqn}/qtwebsockets + make INSTALL_ROOT="${pkgdir}" install + + # Fix wrong path in prl files + find "${pkgdir}/usr/lib" -type f -name '*.prl' \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d;s/\(QMAKE_PRL_LIBS =\).*/\1/' {} \; +} + package_qt5-x11extras() { - pkgdesc='A cross-platform application and UI framework (QtX11Extras)' + pkgdesc='Provides platform-specific APIs for X11' depends=('qt5-base') cd ${_pkgfqn}/qtx11extras diff --git a/extra/qt5/QTBUG-39047.patch b/extra/qt5/QTBUG-39047.patch new file mode 100644 index 000000000..ee6e4ad40 --- /dev/null +++ b/extra/qt5/QTBUG-39047.patch @@ -0,0 +1,57 @@ +From 009ad875f89d7d7bc4447e18c2fbbd485a75e0b5 Mon Sep 17 00:00:00 2001 +From: Oleg Shparber +Date: Mon, 19 May 2014 00:53:39 -0700 +Subject: [PATCH] Fix improper antialiasing property behavior + +For components antialiased by default the property was returned +as false if default true value was set to true again. + +Task-number: QTBUG-39047 +Change-Id: I16960a12b6d38a0d9e487fc6612610c39c4949d4 +Reviewed-by: Gunnar Sletta +--- + src/quick/items/qquickitem.cpp | 8 +++++--- + tests/auto/quick/qquicktext/tst_qquicktext.cpp | 7 +++++++ + 2 files changed, 12 insertions(+), 3 deletions(-) + +diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp +index 3f0dae8..ef2eac4 100644 +--- a/src/quick/items/qquickitem.cpp ++++ b/src/quick/items/qquickitem.cpp +@@ -5691,10 +5691,12 @@ void QQuickItem::setAntialiasing(bool aa) + { + Q_D(QQuickItem); + +- bool changed = (aa != antialiasing()); +- d->antialiasingValid = true; ++ if (!d->antialiasingValid) { ++ d->antialiasingValid = true; ++ d->antialiasing = d->implicitAntialiasing; ++ } + +- if (!changed) ++ if (aa == d->antialiasing) + return; + + d->antialiasing = aa; +diff --git a/tests/auto/quick/qquicktext/tst_qquicktext.cpp b/tests/auto/quick/qquicktext/tst_qquicktext.cpp +index 0b69981..d36c55d 100644 +--- a/tests/auto/quick/qquicktext/tst_qquicktext.cpp ++++ b/tests/auto/quick/qquicktext/tst_qquicktext.cpp +@@ -1334,6 +1334,13 @@ void tst_qquicktext::antialiasing() + text->resetAntialiasing(); + QCOMPARE(text->antialiasing(), true); + QCOMPARE(spy.count(), 2); ++ ++ // QTBUG-39047 ++ component.setData("import QtQuick 2.0\n Text { antialiasing: true }", QUrl()); ++ object.reset(component.create()); ++ text = qobject_cast(object.data()); ++ QVERIFY(text); ++ QCOMPARE(text->antialiasing(), true); + } + + void tst_qquicktext::weight() +-- +1.7.1 + diff --git a/extra/qtchooser/3.conf b/extra/qtchooser/3.conf deleted file mode 100644 index bea263c91..000000000 --- a/extra/qtchooser/3.conf +++ /dev/null @@ -1,2 +0,0 @@ -/usr/lib/qt3/bin -/usr/lib diff --git a/extra/qtchooser/PKGBUILD b/extra/qtchooser/PKGBUILD index 7f8a0e02a..6012a82c3 100644 --- a/extra/qtchooser/PKGBUILD +++ b/extra/qtchooser/PKGBUILD @@ -1,8 +1,8 @@ -# $Id: PKGBUILD 201641 2013-12-17 11:16:59Z andrea $ +# $Id: PKGBUILD 213671 2014-05-27 22:55:40Z andrea $ # Maintainer: Andrea Scarpino pkgname=qtchooser -pkgver=39 +pkgver=41 pkgrel=1 pkgdesc='Wrap the other Qt tools by searching for different instances of Qt on the system' arch=('i686' 'x86_64') @@ -10,24 +10,24 @@ url='http://qt.gitorious.org/qt/qtchooser' license=('GPL') backup=('etc/xdg/qtchooser/default.conf') depends=('gcc-libs') -source=("http://macieira.org/${pkgname}/${pkgname}-${pkgver}-g4717841.tar.gz" - {3,4,5}.conf) -md5sums=('fcf1b5e8373147e48ce72b9c1ffe3d10' - '7c5da2b7911d1c4fabc63d6ef00f0020' +makedepends=('git') +source=("git://gitorious.org/qt/${pkgname}.git#commit=7985f775fb9cf9b77bbbb394a832f0c5f26de47c" + {4,5}.conf) +md5sums=('SKIP' 'aa4d49b269e1b806f5eea170801f0aa6' 'cf83f09a9a5a44d898b93f624d74dd11') build() { - cd ${pkgname}-${pkgver}-g4717841 + cd ${pkgname} make } package() { - cd ${pkgname}-${pkgver}-g4717841 + cd ${pkgname} make INSTALL_ROOT="${pkgdir}" install install -d "${pkgdir}"/etc/xdg/qtchooser - install -m644 "${srcdir}"/{3,4,5}.conf \ + install -m644 "${srcdir}"/{4,5}.conf \ "${pkgdir}"/etc/xdg/qtchooser/ # Set the default Qt diff --git a/extra/smplayer/PKGBUILD b/extra/smplayer/PKGBUILD index 78eecc20b..cca535e4b 100644 --- a/extra/smplayer/PKGBUILD +++ b/extra/smplayer/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 211325 2014-04-18 17:38:47Z bpiotrowski $ +# $Id: PKGBUILD 213683 2014-05-28 09:21:43Z bpiotrowski $ # Maintainer : Ionut Biru # Contributor: Allan McRae # Contributor: Alessio 'mOLOk' Bolognino @@ -6,12 +6,12 @@ pkgname=smplayer pkgver=14.3.0 -pkgrel=1 +pkgrel=2 pkgdesc="A complete front-end for MPlayer" arch=('i686' 'x86_64') url="http://smplayer.sourceforge.net/" license=('GPL') -depends=('qt5-script' 'mplayer' 'hicolor-icon-theme') +depends=('qt5-script' 'mplayer' 'hicolor-icon-theme' 'libxkbcommon-x11') makedepends=('qt5-tools') optdepends=('smplayer-themes: icon themes collection' 'smplayer-skins: skin themes collection' diff --git a/extra/vim/PKGBUILD b/extra/vim/PKGBUILD index 2988b1389..541a9aaac 100644 --- a/extra/vim/PKGBUILD +++ b/extra/vim/PKGBUILD @@ -10,7 +10,7 @@ _patchlevel=307 __hgrev=54d96e3b2eec _versiondir="vim${_topver//./}" pkgver=${_topver}.${_patchlevel} -pkgrel=1 +pkgrel=2 arch=('i686' 'x86_64') license=('custom:vim') url="http://www.vim.org" @@ -230,8 +230,8 @@ package_gvim-python3() { rm -f ex.1 view.1 # provided by (n)vi done - # Move the runtime for later packaging - mv "${pkgdir}"/usr/share/vim "${srcdir}"/runtime-install + # need to remove since this is provided by vim-runtime + rm -rf "${pkgdir}"/usr/share/vim # freedesktop links install -Dm644 "${srcdir}"/gvim.desktop \ -- cgit v1.2.3-54-g00ecf