pkgsrc-WIP-changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
mpdecimal: update to 4.0.0.
Module Name: pkgsrc-wip
Committed By: Thomas Klausner <wiz%NetBSD.org@localhost>
Pushed By: wiz
Date: Sat Dec 21 11:05:20 2024 +0100
Changeset: 2c62b590dce9e221cb7582f915522b75493bd493
Modified Files:
mpdecimal/Makefile
mpdecimal/PLIST
mpdecimal/distinfo
Log Message:
mpdecimal: update to 4.0.0.
general
~~~~~~~
**sync soversion and major_version**
- The added number formatting feature requires an ABI change, hence the
increase to SOVERSION=4.
- Packagers outside of the Linux distributions sometimes use the major
version number as the equivalent of SOVERSION on their platforms and
have an incorrect SOVERSION for 2.5.1, which requires SOVERSION=3.
- While SOVERSION is not required to match the major version number
(example: glibc), mpdecimal will from now on take the path of least
resistance and always use SOVERSION=MPD_MAJOR_VERSION.
- The jump to 4.0.0 should also remind users that a C++ library is
available.
build/install
~~~~~~~~~~~~~
**features**
- Support for out-of-tree build.
- Support for pkg-config.
- Unix: support for Loongson.
- Unix: support for CheriBSD.
- Compilers: support for icx, icpx, ibm-clang_r, ibm-clang++_r, CompCert,
clang-cl and emscripten.
- Windows: support for MSYS2/MinGW.
- MSVC: the build now uses /O2 /DNDEBUG.
- MSVC: new arm64/arm32 cross build scripts.
- AIX: the shared libraries are now installed as versioned objects, e.g.,
shr4.o, shr4_64.o.
- New ``./configure`` switches:
``--enable-static``: enable/disable the build of the static libraries
(default: enabled).
``--enable-pc``: enable/disable the install of the pkgconfig files
(default: enabled).
``--enable-doc``: enable/disable the install of the documentation
(default: enabled).
- New ``./configure`` behavior:
On multilib platforms like AIX that default to 32-bit the 64-bit build can
be forced with a single ``./configure MACHINE=uint128`` (ibm-clang, gcc)
or ``./configure MACHINE=ansi64`` (xlc) rather than explicitly setting
``CFLAGS``, ``LDFLAGS``, ``CXXFLAGS`` and ``LDXXFLAGS``.
Note that on most other (multilib) platforms the default is 64-bit and the
optimal configuration is chosen by just using ``./configure``.
- New man pages direct users to the mpdecimal-doc package or the online
HTML documentation.
**tests**
- The C++ tests now automatically skip a small number of bignum tests if
the std::thread stack size (which cannot be altered) is less than 512K.
For all other tests a thread stack size of roughly 50K is sufficient.
- Files in the tests/testdata_dist directory have been significantly
abbreviated in order to facilitate testing on slower platforms. The
tests take 5s on a modern x86_64 platform.
The previous tests have been moved to the separate mpdecimal-testdata
package (replace tests/testdata_dist with the renamed mpdecimal-testdata
directory).
**toolchain issues**
- AIX: The preferred C/C++ compilers are ibm-clang_r and ibm-clang_r++.
g++ has sporadic C++11 threading issues that only show up in long running
programs (or short ones with a sufficient number of repetitions):
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98390
If you only use libmpdec (``--disable-cxx``), gcc and xlc are very stable.
**changed**
- The ``--enable-profile`` configure option has been removed due to fragile
integration with a sequence like ``make && make install``. The new method
is ``make profile && make install``.
**removed**
- The prebuilt HTML documentation is now in the separate mpdecimal-doc
package, which gives distributions that reject prebuilt documentation
the option to disregard it and use the new man pages.
libmpdec
~~~~~~~~
**features**
- Add the "z" format specifier (coerce negative zeros to positive).
- In extremely rare cases the transcendental functions (exp, ln, log10) did
not set the Subnormal/Underflow flags. The reason is that in the case of
an exponent boundary the Ziv correction loop for correct rounding requires
very few iterations to arrive at the correctly rounded result, but may
need many more iterations to arrive at the correct flags.
In these cases, Subnormal/Underflow is not very informative, so the status
quo was to skip the extra iterations.
Version 4.0.0 now specializes exponent boundary cases and uses up to five
additional iterations to set Subnormal/Underflow. The refactored code has
no speed penalty on average; in fact, in the deccheck tests (random tests
with a bias towards corner cases) it is slightly faster.
No cases have been found where more than two additional iterations are
required, but they may exist.
**reliability fixes**
- mpd_qset_string_exact(), mpd_qset_i64_exact() and mpd_qset_u64_exact()
can now be called with a nonzero status. Previously, the functions
could return NaN/Invalid_operation in that case.
This is listed under "reliability fixes" since there is no possible
scenario under which these functions would legitimately be called with
a nonzero status.
libmpdec++
~~~~~~~~~~
**features**
- Add input validation for Decimal.shiftl(), Decimal.shiftr() and
Decimal::ln10().
To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=2c62b590dce9e221cb7582f915522b75493bd493
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffstat:
mpdecimal/Makefile | 19 ++++++++-------
mpdecimal/PLIST | 70 ++++++++----------------------------------------------
mpdecimal/distinfo | 6 ++---
3 files changed, 24 insertions(+), 71 deletions(-)
diffs:
diff --git a/mpdecimal/Makefile b/mpdecimal/Makefile
index d285ee660d..4485c6dcf0 100644
--- a/mpdecimal/Makefile
+++ b/mpdecimal/Makefile
@@ -1,6 +1,6 @@
# $NetBSD$
-DISTNAME= mpdecimal-2.5.1
+DISTNAME= mpdecimal-4.0.0
CATEGORIES= math
MASTER_SITES= https://www.bytereef.org/software/mpdecimal/releases/
@@ -9,15 +9,18 @@ HOMEPAGE= https://www.bytereef.org/mpdecimal/
COMMENT= C/C++ arbitrary precision decimal floating point libraries
LICENSE= 2-clause-bsd
-GNU_CONFIGURE= yes
-USE_LANGUAGES= c c++
-USE_TOOLS+= gmake
-BUILD_TARGET= default
-TEST_TARGET= check_local
+GNU_CONFIGURE= yes
+USE_LANGUAGES= c c++
+USE_CC_FEATURES+= c99
-.include "../../mk/bsd.prefs.mk"
+USE_TOOLS+= gmake
+BUILD_TARGET= default
+TEST_TARGET= check_local
-CONFIGURE_ARGS+= CC=gcc CXX=g++ LDFLAGS="-Wl,-R${PREFIX}/lib" LDXXFLAGS="-Wl,-R${PREFIX}/lib"
+# so that libmpdec++.so find libmpdec.so
+CONFIGURE_ARGS+= LDFLAGS="${COMPILER_RPATH_FLAG}${PREFIX}/lib" LDXXFLAGS="${COMPILER_RPATH_FLAG}${PREFIX}/lib"
+PKGCONFIG_OVERRIDE+= libmpdec/.pc/libmpdec.pc.in
+PKGCONFIG_OVERRIDE+= libmpdec++/.pc/libmpdec++.pc.in
.include "../../mk/bsd.pkg.mk"
diff --git a/mpdecimal/PLIST b/mpdecimal/PLIST
index c836db76e1..43eadd1042 100644
--- a/mpdecimal/PLIST
+++ b/mpdecimal/PLIST
@@ -3,65 +3,15 @@ include/decimal.hh
include/mpdecimal.h
lib/libmpdec++.a
lib/libmpdec++.so
-lib/libmpdec++.so.2.5.1
-lib/libmpdec++.so.3
+lib/libmpdec++.so.4
+lib/libmpdec++.so.${PKGVERSION}
lib/libmpdec.a
lib/libmpdec.so
-lib/libmpdec.so.2.5.1
-lib/libmpdec.so.3
-share/doc/mpdecimal/libmpdec++/README.txt
-share/doc/mpdecimal/libmpdec++/_static/basic.css
-share/doc/mpdecimal/libmpdec++/_static/classic.css
-share/doc/mpdecimal/libmpdec++/_static/default.css
-share/doc/mpdecimal/libmpdec++/_static/doctools.js
-share/doc/mpdecimal/libmpdec++/_static/documentation_options.js
-share/doc/mpdecimal/libmpdec++/_static/file.png
-share/doc/mpdecimal/libmpdec++/_static/jquery-3.4.1.js
-share/doc/mpdecimal/libmpdec++/_static/jquery.js
-share/doc/mpdecimal/libmpdec++/_static/language_data.js
-share/doc/mpdecimal/libmpdec++/_static/minus.png
-share/doc/mpdecimal/libmpdec++/_static/mpdecimal-doc.css
-share/doc/mpdecimal/libmpdec++/_static/plus.png
-share/doc/mpdecimal/libmpdec++/_static/pygments.css
-share/doc/mpdecimal/libmpdec++/_static/searchtools.js
-share/doc/mpdecimal/libmpdec++/_static/sidebar.js
-share/doc/mpdecimal/libmpdec++/_static/underscore-1.3.1.js
-share/doc/mpdecimal/libmpdec++/_static/underscore.js
-share/doc/mpdecimal/libmpdec++/constants.html
-share/doc/mpdecimal/libmpdec++/context.html
-share/doc/mpdecimal/libmpdec++/decimal.html
-share/doc/mpdecimal/libmpdec++/exceptions.html
-share/doc/mpdecimal/libmpdec++/index.html
-share/doc/mpdecimal/libmpdec++/objects.inv
-share/doc/mpdecimal/libmpdec++/search.html
-share/doc/mpdecimal/libmpdec++/searchindex.js
-share/doc/mpdecimal/libmpdec/README.txt
-share/doc/mpdecimal/libmpdec/_static/basic.css
-share/doc/mpdecimal/libmpdec/_static/classic.css
-share/doc/mpdecimal/libmpdec/_static/default.css
-share/doc/mpdecimal/libmpdec/_static/doctools.js
-share/doc/mpdecimal/libmpdec/_static/documentation_options.js
-share/doc/mpdecimal/libmpdec/_static/file.png
-share/doc/mpdecimal/libmpdec/_static/jquery-3.4.1.js
-share/doc/mpdecimal/libmpdec/_static/jquery.js
-share/doc/mpdecimal/libmpdec/_static/language_data.js
-share/doc/mpdecimal/libmpdec/_static/minus.png
-share/doc/mpdecimal/libmpdec/_static/mpdecimal-doc.css
-share/doc/mpdecimal/libmpdec/_static/plus.png
-share/doc/mpdecimal/libmpdec/_static/pygments.css
-share/doc/mpdecimal/libmpdec/_static/searchtools.js
-share/doc/mpdecimal/libmpdec/_static/sidebar.js
-share/doc/mpdecimal/libmpdec/_static/underscore-1.3.1.js
-share/doc/mpdecimal/libmpdec/_static/underscore.js
-share/doc/mpdecimal/libmpdec/arithmetic.html
-share/doc/mpdecimal/libmpdec/assign-convert.html
-share/doc/mpdecimal/libmpdec/attributes.html
-share/doc/mpdecimal/libmpdec/context.html
-share/doc/mpdecimal/libmpdec/decimals.html
-share/doc/mpdecimal/libmpdec/functions.html
-share/doc/mpdecimal/libmpdec/index.html
-share/doc/mpdecimal/libmpdec/memory.html
-share/doc/mpdecimal/libmpdec/objects.inv
-share/doc/mpdecimal/libmpdec/search.html
-share/doc/mpdecimal/libmpdec/searchindex.js
-share/doc/mpdecimal/libmpdec/various.html
+lib/libmpdec.so.4
+lib/libmpdec.so.${PKGVERSION}
+lib/pkgconfig/libmpdec++.pc
+lib/pkgconfig/libmpdec.pc
+man/man3/libmpdec++.3
+man/man3/libmpdec.3
+man/man3/mpdecimal.3
+share/doc/mpdecimal/COPYRIGHT.txt
diff --git a/mpdecimal/distinfo b/mpdecimal/distinfo
index 77460ab9d2..9b6397a5b1 100644
--- a/mpdecimal/distinfo
+++ b/mpdecimal/distinfo
@@ -1,5 +1,5 @@
$NetBSD$
-BLAKE2s (mpdecimal-2.5.1.tar.gz) = 823e2701ce0bc19550c7f58819fd9b067fa9154fd0f83c3518c3b8a38f7f27e2
-SHA512 (mpdecimal-2.5.1.tar.gz) = 710cb5cb71dbcf3e170ca15869c148df0547b848400c6b6dd70c67d9961dbe1190af8fb4d1623bfb0ca2afe44f369a42e311ab5225ed89d4031cb49a3bd70f30
-Size (mpdecimal-2.5.1.tar.gz) = 2584021 bytes
+BLAKE2s (mpdecimal-4.0.0.tar.gz) = 02a10248bfe5df47a25edde34604c7b26c8e51429e57992cd0e459c605591d6b
+SHA512 (mpdecimal-4.0.0.tar.gz) = 7610ac53ac79f7a8a33fa7a3e61515810444ec73ebca859df7a9ddc18e96b990c99323172810c9cc7f6d6e1502c0be308cd443d6c2d5d0c871648e4842e05d59
+Size (mpdecimal-4.0.0.tar.gz) = 315325 bytes
Home |
Main Index |
Thread Index |
Old Index