Compare commits

..

No commits in common. "rawhide" and "f33" have entirely different histories.

4 changed files with 90 additions and 283 deletions

14
.gitignore vendored
View file

@ -5,16 +5,16 @@
# ignore log files created by fedpkg local # ignore log files created by fedpkg local
/*.log /*.log
# temporary files # temporary files
/temp /junk
/temp.* /junk.*
# ignore result drectory created by fedpkg mockbuild # ignore result drectory created by fedpkg mockbuild
/results_cppad/ /results_cppad/
# directories used like git cache # directory used like git cache
/new/ /new/
/new.*/ /new.*/
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# source code tarball that creates CppAD-20210000.5
/20210000.7.tar.gz
# #
# Most recent upstrem source # documentation tarball that creates CppAD-20210000.doc
/CppAD-20240000.3.tar.gz /20210000.doc.tar.gz
/CppAD-20250000.0.tar.gz
/CppAD-20260000.0.tar.gz

View file

@ -2,54 +2,34 @@
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# Preamble # Preamble
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# fedpkg lint: W: no-documentation # yyyy is year, mm is month, dd is day, corresponding to this version.
# The %%doc directive below installs COPYING and uw_copy_040507.html # The %%{version} macro includes a bug fix number at end that starts at zero.
# as part of the main package, so this warning should not be generated; see %define yyyymmdd 20210000
# https://fedoraproject.org/wiki/Common_Rpmlint_issues#no-documentation
# 'This would be rare as most packages should have some license text,
# a changelog or other information that is better placed in the main package
# instead of a -doc subpackage.'
# #
# year # fedora uses its own soversion number for cppad_lib
# The year corresponding to this version %define soversion 2.0
%define year 2026
#
# soversion
# fedora uses its own soversion number for cppad_lib where
# 1.0 corresponds to year 2020
%define soversion %[ %year - 2019 ]
#
# This is really an out of soruce build because the source is in the
# CppAD-%%{version} sub-directory of the source. The fedora macros are
# confused and need this defined true.
%define __cmake_in_source_build 1
# ----------------------------------------------------------------------------
# Fedora Release starts with 1; see # Fedora Release starts with 1; see
# https://docs.fedoraproject.org/en-US/packaging-guidelines/Versioning/ # https://fedoraproject.org/wiki/Packaging:Versioning
Name: cppad Name: cppad
Version: %{year}0000.0 Version: %{yyyymmdd}.7
Release: 1%{?dist} Release: 1%{?dist}
Summary: C++ Algorithmic Differentiation (AD), %{name}-devel and %{name}-doc Summary: C++ Algorithmic Differentiation (AD), %{name}-devel and %{name}-doc
#
License: EPL-2.0 OR GPL-2.0-or-later License: EPL-2.0 or GPLv2+
URL: https://github.com/coin-or/CppAD URL: http://coin-or.github.io/CppAD
Source: %{url}/archive/%{version}/CppAD-%{version}.tar.gz Source0: https://github.com/coin-or/CppAD/archive/%{version}.tar.gz
# Source1: https://github.com/coin-or/CppAD/archive/%{yyyymmdd}.doc.tar.gz
BuildRequires: gcc BuildRequires: gcc
BuildRequires: gcc-c++ BuildRequires: gcc-c++
BuildRequires: cmake >= 3.10 BuildRequires: cmake >= 2.8
BuildRequires: make BuildRequires: make
BuildRequires: python-xrst >= 2025.0
BuildRequires: python-sphinx_rtd_theme
BuildRequires: python-tomli
BuildRequires: python-sphinx-copybutton
BuildRequires: python-pyspellchecker
BuildRequires: python-furo
# Starting with f33, need to define this macro to build in source directory
%define __cmake_in_source_build 1
%description %description
C++ Algorithmic Differentiation (AD) include and library files. C++ Algorithmic Differentiation (AD), see %{name}-devel, %{name}-doc.
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
%package devel %package devel
@ -68,86 +48,70 @@ Given a C++ algorithm that computes function values, %{name} generates an
algorithm that computes its derivative values. A brief introduction to algorithm that computes its derivative values. A brief introduction to
Algorithmic Differentiation (AD) can be found at Algorithmic Differentiation (AD) can be found at
http://en.wikipedia.org/wiki/Automatic_differentiation http://en.wikipedia.org/wiki/Automatic_differentiation
The documentation for the %{year} version See the package %{name}-doc for documentation of this version of %{name}.
https://cppad.readthedocs.io/stable-%{year}
The documentation for the most recent version of %{name} can be found at # ----------------------------------------------------------------------------
https://cppad.readthedocs.io/latest %package doc
Summary: Documentation for %{name}-devel
BuildArch: noarch
%description doc
The %{name}-doc package installs the HTML documentation for this version
of %{name}-devel in
%{_docdir}/%{name}
The documentation, for the most recent version of %{name}, can be found at
http://coin-or.github.io/CppAD
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# prep # prep
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
%prep %prep
# #
# Create an empty directory named cppad-%%{version}, # Create an empty directory named cppad-%%{version},
# changed into that directory and unpack Source. # changed into that directory and unpack Source0 and Source1.
%setup -q -c %setup -q -c -a 0 -a 1
# #
# xrst.toml # move the documentaion to the build directory
# This is not a git repository so suppress the warning that could not double mv CppAD-%{yyyymmdd}.doc/doc CppAD-%{version}/doc
# check that all the files with xrst commands were included.
echo '' >> CppAD-%{version}/xrst.toml
echo '[input_files]' >> CppAD-%{version}/xrst.toml
echo 'data = [ ]' >> CppAD-%{version}/xrst.toml
# #
# COPYING, uw_copy_040507.html mv CppAD-%{version}/COPYING COPYING
cp CppAD-%{version}/COPYING COPYING mv CppAD-%{version}/uw_copy_040507.html uw_copy_040507.html
cp CppAD-%{version}/uw_copy_040507.html uw_copy_040507.html # ----------------------------------------------------------------------------
#
# cppad_lib/CMakeLists.txt
# cppad_lib: replace soversion number and ensure build type is release # cppad_lib: replace soversion number and ensure build type is release
sed -i.bak CppAD-%{version}/cppad_lib/CMakeLists.txt \ sed -i.bak CppAD-%{version}/cppad_lib/CMakeLists.txt \
-e "s|print_variable(soversion)|SET(soversion %{soversion} )\n&|" \ -e "s|print_variable(soversion)|SET(soversion %{soversion} )\n&|" \
-e "s|\${cppad_debug_which}|debug_none|" -e "s|\${cppad_debug_which}|debug_none|"
# #
# Print machine epsilon before any other testing # configure.hpp.in: Make sure CPPAD_DEBUG_AND_RELEASE is defined
cat << EOF > temp.cpp # so we can use cppad_lib with both debug and release builds.
# include <iostream> sed -i.bak CppAD-%{version}/include/cppad/configure.hpp.in \
# include <limits> -e 's|# define CPPAD_CONFIGURE_HPP|&\n# define CPPAD_DEBUG_AND_RELEASE|'
template <class Float> void print_epsilon(const char* type_name) #
{ Float epsilon = std::numeric_limits<Float>::epsilon(); # set_compile_flags.cmake: remove conditional def of CPPAD_DEBUG_AND_RELEASE
std::cout << type_name << " epsilon = " << epsilon << "\n"; sed -i.bak CppAD-%{version}/cmake/set_compile_flags.cmake \
} -e 's|-DCPPAD_DEBUG_AND_RELEASE||'
int main(void) #
{ print_epsilon<float>("float"); # test_more/debug_rel/CMakeLists.txt: remove def of CPPAD_DEBUG_AND_RELEASE
print_epsilon<double>("double"); sed -i.bak CppAD-%{version}/test_more/debug_rel/CMakeLists.txt \
print_epsilon<long double>("long double"); -e 's|-DCPPAD_DEBUG_AND_RELEASE||'
return 0; #
} # -----------------------------------------------------------------------------
EOF
g++ -std=c++11 temp.cpp -o temp
./temp > temp.out
cat temp.out
# ----------------------------------------------------------------------------
# build # build
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
%build %build
# #
# 1. The debug_all is overridden for cppad_lib by the edit of # 1. Cannot use %%{_includedir}, %%{_libdir}, %%{_datadir}, %%{_docdir}
# because they are absolute paths. Relative values would be more flexible
# because they can be combined with %%{_prefix} to get absolute values.
#
# 2. The last argument to the cmake command is the directory created using
# the souce code tarball.
#
# 3. The debug_all is overridden by for cppad_lib by the edit of
# cppad_lib/CMakeLists.txt above # cppad_lib/CMakeLists.txt above
# cppad_cxx_flags='-Wall -pedantic-errors -std=c++11 -Wshadow -Wconversion'
# 2. The gnu c++ compiler seems to be generating an incorrect warning about
# array bounds in thread_alloc.hpp. Use -Wno-array-bounds to suppress it.
#
# cppad_cxx_flags
# extra C++ compiler flags
cppad_cxx_flags=\
'-Wall -pedantic-errors -std=c++11 -Wshadow -Wconversion -Wno-array-bounds'
#
# CMake Warning:
# Manually-specified variables were not used by the project:
# CMAKE_C_FLAGS_RELEASE
# CMAKE_Fortran_FLAGS_RELEASE
# CMAKE_INSTALL_DO_STRIP
# INCLUDE_INSTALL_DIR
# LIB_INSTALL_DIR
# LIB_SUFFIX
# SHARE_INSTALL_PREFIX
# SYSCONF_INSTALL_DIR
#
%cmake --version %cmake --version
%cmake \ %cmake \
-S CppAD-%{version} \
-B . \
\
-D CMAKE_VERBOSE_MAKEFILE=0 \ -D CMAKE_VERBOSE_MAKEFILE=0 \
-G 'Unix Makefiles' \ -G 'Unix Makefiles' \
\ \
@ -158,28 +122,25 @@ cppad_cxx_flags=\
-D cmake_install_libdirs=%{_lib} \ -D cmake_install_libdirs=%{_lib} \
\ \
-D cmake_install_datadir=share \ -D cmake_install_datadir=share \
-D cmake_install_docdir='NOTFOUND' \ -D cmake_install_docdir=share/doc \
\
-D include_doc=true \
-D cmake_defined_ok=false \
-D cppad_static_lib=false \
-D cppad_debug_and_release=true \
\ \
-D include_adolc=false \ -D include_adolc=false \
-D include_eigen=false \
-D include_ipopt=false \ -D include_ipopt=false \
-D include_cppadcg=false \ -D include_cppadcg=false \
\ \
-D colpack_prefix='NOTFOUND' \ -D colpack_prefix='' \
-D fadbad_prefix='NOTFOUND' \ -D fadbad_prefix='' \
-D sacado_prefix='NOTFOUND' \ -D sacado_prefix='' \
\ \
-D cppad_cxx_flags="$cppad_cxx_flags" \ -D cppad_cxx_flags="$cppad_cxx_flags" \
-D cppad_profile_flag='' \ -D cppad_profile_flag='' \
-D cppad_testvector=cppad \ -D cppad_test_vector=cppad \
-D cppad_max_num_threads=64 \ -D cppad_max_num_theads=64 \
-D cppad_tape_id_type=size_t \ -D cppad_tape_id_type=size_t \
-D cppad_tape_addr_type='unsigned int' \ -D cppad_tape_addr_type=size_t \
-D cppad_debug_which='debug_all' -D cppad_debug_which='debug_all' \
CppAD-%{version}
# #
# see https://docs.fedoraproject.org/en-US/packaging-guidelines/ # see https://docs.fedoraproject.org/en-US/packaging-guidelines/
# parallel_make # parallel_make
@ -193,171 +154,32 @@ cppad_cxx_flags=\
# why_the_makeinstall_macro_should_not_be_used # why_the_makeinstall_macro_should_not_be_used
%make_install %make_install
%files
%{_libdir}/libcppad_lib.so.%{soversion}
# These documentation files come from the source code tarball
%doc COPYING uw_copy_040507.html
%files devel %files devel
%{_includedir}/%{name} %{_includedir}/%{name}
%{_datadir}/pkgconfig/%{name}.pc %{_datadir}/pkgconfig/%{name}.pc
%{_libdir}/pkgconfig/%{name}.pc %{_libdir}/pkgconfig/%{name}.pc
%{_libdir}/libcppad_lib.so %{_libdir}/libcppad_lib.so
%{_libdir}/libcppad_lib.so.%{soversion}
# These documentation files come from the source code tarball
%doc COPYING uw_copy_040507.html
%files doc
# These documentation files come from the docukentation tarball
%{_docdir}/%{name}
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Check # Check
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# # use the installed include files to compile and run the tests
%check %check
#
# Test installed version of CppAD
g++ CppAD-%{version}/example/get_started/get_started.cpp \
-I %{buildroot}/%{_includedir} \
-Wl,-rpath,%{buildroot}/%{_libdir} \
%{buildroot}/%{_libdir}/libcppad_lib.so \
-o get_started
./get_started
#
# Test building documentation
make %{?_smp_mflags} doc_user
#
# Run the all the standard CppAD tests.
make %{?_smp_mflags} check make %{?_smp_mflags} check
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# # %%clean
# Use %%clean with no arguments to surpress the cleanup of BUILDROOT # Use %%clean with no arguments to surpress the cleanup of BUILDROOT
# This enables one to check that the necessary files are installed. # This enables one to check that the necessary files are installed.
%%clean
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
%changelog %changelog
* Mon Jan 05 2026 Brad Bell <bradbell at seanet dot com> - 20260000.0-1
- New upstream source cppad-20260000.0.
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 20250000.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Wed Feb 05 2025 <bradbell at seanet dot com> - 20250000.0-4
- python-toml is deprecated, so current xrst-python uses python-tomli instead
* Sun Jan 19 2025 Brad Bell <bradbell at seanet dot com> - 20250000.0-3
- 1. Add the year macro and use it to define soversion and Version.
- 2. Remove the cppad-doc subpackage because documantion for this stable
version is not available at https://cppad.readthedocs.io/stable-2025/ .
- 3. Change include_doc=true, cmake_install_docdir=NOTFOUND, and add
make doc_user to test building, but not installing, user documentation.
- 4. The ppc64le arch has been fixed and now the CppAD to_string test pass
for long double (so we do not need to skip that test).
- 5. Use get_started.cpp to test the installed version of CppAD.
* Sat Jan 18 2025 Brad Bell <bradbell at seanet dot com> - 20250000.0-2
- This fixes two bugs and will not be necessary
- once the upstream source advances to 20250000.1.
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 20250000.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Tue Jan 14 2025 Brad Bell <bradbell at seanet dot com> - 20250000.0-1
- New upstream source cppad-20250000.0.
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 20240000.3-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Fri Mar 01 2024 Brad Bell <bradbell at seanet dot com> - 20240000.3-2
- This fixes a bug in fun2val.hpp. This change will not be necessary
- once the upstream source advances to 20240000.4.
* Sat Feb 17 2024 Brad Bell <bradbell at seanet dot com> - 20240000.3-1
- This fixes a long standing bug; see the heading 02-14 on
- https://cppad.readthedocs.io/latest/whats_new_24.html
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 20240000.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 20240000.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Jan 17 2024 Brad Bell <bradbell at seanet dot com> - 20240000.2-1
- Upstream moved i386 special cases into cmake script.
- Checking that other upstream changes do not affect Fedora install.
* Tue Jan 09 2024 Brad Bell <bradbell at seanet dot com> - 20240000.1-1
- thread_alloc.hpp: i386 i686: fix allignment for doubles
- op_hash_table: i386 i686: avoid second specialization of is_pod for same type.
- xrst.toml: add comment about why we are adding to this file.
- xrst command: speed up parallel build by settting number_jobs.
* Mon Jan 08 2024 Brad Bell <bradbell at seanet dot com> - 20240000.1-1
- Upstream fix of bug found by build on buildvm-x86-16.iad2.fedoraproject.org
* Sat Jan 06 2024 Brad Bell <bradbell at seanet dot com> - 20240000.0-1
- New upstream source cppad-20240000.0.
- require python-xrst >= 2024.0
- xrst.toml: no need to change to pyenchant because pyspellchecker avaialble
- upstream source changed CPPAD_DEBUG_AND_RELEASE to a cmake argument
* Mon Dec 25 2023 Brad Bell <bradbell at seanet dot com> - 20230000.0-3
- migrated to SPDX license
- move %%doc directive before subpackages (becasue it is in main package)
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 20230000.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Sun Jan 29 2023 Brad Bell <bradbell at seanet dot com> - 20230000.0-1
- Move libcppad_lib.so to main package (fixes a fedpkg lint error).
- Fix comment about where doc files come from.
- Move %%define __cmake_in_source_build to top of spec file.
- Add discussion of fedpkg lint files-duplicate warning.
* Sat Jan 28 2023 Brad Bell <bradbell at seanet dot com> - 20230000.0-1
- Advance upstream source to 2023.
- Add python-xrst to BuildRequires so can buile documentation.
- Remove Source1, change Source0 -> Source, and make definition so tarball
has the same name as the directory it creates.
- Change URL from documentation to git repo so can use in Source definition.
- Change some cmake definitions from empty string to NOTFOUND.
- Explicity specify the source directory (-S) and binary (-B) in camke comamnd.
- Add comments about __cmake_in_source_build confusion
- Update comments about cmake settings and warnings
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 20220000.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 20220000.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Sat May 21 2022 Brad Bell <bradbell at seanet dot com> - 20220000.4-1
- Advance to upstream 20220000.4. Main motivation for this is to make
cppad_eigen.hpp work with Eigen 3.4.0.
* Mon Feb 14 2022 Brad Bell <bradbell at seanet dot com> - 20220000.1-1
- Not necessary to advance to 20220000.2 because Fedora build is getting
correct result for cppad.pc.
* Wed Feb 02 2022 Brad Bell <bradbell at seanet dot com> - 20220000.1-1
- Try commenting out to_string test of long double on ppc56le arch.
This problem does not reproduce on ppc64le-test.fedorainfracloud.org.
* Tue Feb 01 2022 Brad Bell <bradbell at seanet dot com> - 20220000.1-1
- Modify to_string.cpp patch to print out more information on failure.
- Add simple program to print machine epsilon before any other testing.
* Mon Jan 31 2022 Brad Bell <bradbell at seanet dot com> - 20220000.1-1
- Fix following long standing typos in cmake command:
- 1. cppad_test_vector -> cppad_testvector
- 2. cppad_max_num_theads -> cppad_max_num_threads
- Temporary change to debug ppc64le build failure: replace to_string.cpp
- Replace temporary change by a patch to example/utility/to_string.cpp
* Mon Jan 24 2022 Brad Bell <bradbell at seanet dot com> - 20220000.1-1
- Advance to upstream source 20220000.1
- Add -Wno-array-bounds to compiler flags (see remarks about this flag)
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 20210000.7-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Mon Aug 02 2021 Brad Bell <bradbell at seanet dot com> - 20210000.7-1 * Mon Aug 02 2021 Brad Bell <bradbell at seanet dot com> - 20210000.7-1
- Advance to upstream source 20210000.7 - Advance to upstream source 20210000.7

View file

@ -1,16 +0,0 @@
# /usr/bin/env bash
set -e -u
#
version=$(sed -n cppad.spec -e '/^Version:/p' | sed -e 's|^Version: *||')
url=$(sed -n cppad.spec -e '/^URL:/p' | sed -e 's|^URL: *||')
local_tarball="CppAD-${version}.tar.gz"
remote_tarball="$url/archive/$version/$local_tarball"
if [ -e "$local_tarball" ]
then
echo "get_tarball.sh: $local_tarball already exists"
exit 1
fi
wget $tarball
#
echo 'get_tarball.sh: OK'
exit 0

View file

@ -1 +1,2 @@
SHA512 (CppAD-20260000.0.tar.gz) = abe9dd9a971f8d154990d54c1f798c8cab6bf90d016bb288efbcb23a14331897762610295658eec04fb50e5c13b05f4bb6b50a4647d6f0468eb94833dc3400d2 SHA512 (20210000.7.tar.gz) = 856a0669d91cea7695195f88a987b3b8eac5ec6de81d9dc55b8d90e78495553df1c2c152a27b49ae8596d4ac5c30f482501577fc88227efc8fe3e3b7859dd88e
SHA512 (20210000.doc.tar.gz) = 4e7be2b01d6b2d1bd3862a3260176806432893403bc3ba98bbdaad4a701abb64d9f47ccb408fe5e6e8360b4642a65395865274aea184a36aed7baa15d1ee6560