diff --git a/.gitignore b/.gitignore index 6dd6f65..1498391 100644 --- a/.gitignore +++ b/.gitignore @@ -5,16 +5,15 @@ # ignore log files created by fedpkg local /*.log # temporary files -/temp -/temp.* +/junk +/junk.* # ignore result drectory created by fedpkg mockbuild /results_cppad/ -# directories used like git cache +# directory used like git cache /new/ /new.*/ # --------------------------------------------------------------------------- -# -# Most recent upstrem source -/CppAD-20240000.3.tar.gz -/CppAD-20250000.0.tar.gz -/CppAD-20260000.0.tar.gz +# source code tarball creates CppAD-20190200.0 +/20190200.0.tar.gz +# documentation tarball creates CppAD-20190200.doc +/20190200.doc.tar.gz diff --git a/cppad.spec b/cppad.spec index b3b1612..8d62237 100644 --- a/cppad.spec +++ b/cppad.spec @@ -1,55 +1,46 @@ # vim: set expandtab: # ---------------------------------------------------------------------------- +# Lint +# ---------------------------------------------------------------------------- +# The comamnd 'fedpkg lint' generates the warning: +# +# cppad.spec:99: W: rpm-buildroot-usage +# %%prep includedir=%%{buildroot}%%{_includedir} +# +# See https://lists.fedoraproject.org/pipermail/devel/2011-January/147969.html +# ---------------------------------------------------------------------------- # Preamble # ---------------------------------------------------------------------------- -# fedpkg lint: W: no-documentation -# The %%doc directive below installs COPYING and uw_copy_040507.html -# as part of the main package, so this warning should not be generated; see -# 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 -# The year corresponding to this version -%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 -# ---------------------------------------------------------------------------- +# yyyy is year, mm is month, dd is day, corresponding to this version +# The $${version} includes a bug fix number at end that starts at zero. +%define yyyymmdd 20190200 # Fedora Release starts with 1; see -# https://docs.fedoraproject.org/en-US/packaging-guidelines/Versioning/ -Name: cppad -Version: %{year}0000.0 -Release: 1%{?dist} +# https://fedoraproject.org/wiki/Packaging:Versioning +Name: cppad +Version: %{yyyymmdd}.0 +Release: 2%{?dist} Summary: C++ Algorithmic Differentiation (AD), %{name}-devel and %{name}-doc -# -License: EPL-2.0 OR GPL-2.0-or-later -URL: https://github.com/coin-or/CppAD -Source: %{url}/archive/%{version}/CppAD-%{version}.tar.gz -# -BuildRequires: gcc -BuildRequires: gcc-c++ -BuildRequires: cmake >= 3.10 -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 +# As of yet, there are no object libraries or executables included in this +# package. However, the results of the cmake command depend on the architecture +# so we do not include 'BuildArch: noarch' in this spec file. + +# The user can compile with or without debugging so there is nothing useful in +# *debuginfo. If status of cppad_lib changes (and it gets installed), this may +# change (see mention of cppad_lib below). +%global debug_package %{nil} + +License: EPL2.0 or (GPL2 or later) +URL: http://coin-or.github.io/CppAD +Source1: https://github.com/coin-or/CppAD/archive/%{version}.tar.gz +Source2: https://github.com/coin-or/CppAD/archive/%{yyyymmdd}.doc.tar.gz +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: cmake >= 2.8 %description -C++ Algorithmic Differentiation (AD) include and library files. +C++ Algorithmic Differentiation (AD), see %{name}-devel, %{name}-doc. # --------------------------------------------------------------------------- %package devel @@ -68,376 +59,112 @@ Given a C++ algorithm that computes function values, %{name} generates an algorithm that computes its derivative values. A brief introduction to Algorithmic Differentiation (AD) can be found at http://en.wikipedia.org/wiki/Automatic_differentiation -The documentation for the %{year} version - https://cppad.readthedocs.io/stable-%{year} -The documentation for the most recent version of %{name} can be found at - https://cppad.readthedocs.io/latest +See the package %{name}-doc for documentation of this version of %{name}. + +# ---------------------------------------------------------------------------- +%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 # -# Create an empty directory named cppad-%%{version}, -# changed into that directory and unpack Source. -%setup -q -c +# This source code tarball creates CppAD-%%{version} +rm -rf CppAD-%{version} +tar -xzf %{_topdir}/SOURCES/%{version}.tar.gz # -# xrst.toml -# This is not a git repository so suppress the warning that could not double -# 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 +# This documentation tarball creates CppAD-%%{yyymmdd}.doc +rm -rf CppAD-%{yyyymmdd}.doc +tar -xzf %{_topdir}/SOURCES/%{yyyymmdd}.doc.tar.gz # -# COPYING, uw_copy_040507.html -cp CppAD-%{version}/COPYING COPYING -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 -sed -i.bak CppAD-%{version}/cppad_lib/CMakeLists.txt \ - -e "s|print_variable(soversion)|SET(soversion %{soversion} )\n&|" \ - -e "s|\${cppad_debug_which}|debug_none|" -# -# Print machine epsilon before any other testing -cat << EOF > temp.cpp -# include -# include -template void print_epsilon(const char* type_name) -{ Float epsilon = std::numeric_limits::epsilon(); - std::cout << type_name << " epsilon = " << epsilon << "\n"; -} -int main(void) -{ print_epsilon("float"); - print_epsilon("double"); - print_epsilon("long double"); - return 0; -} -EOF -g++ -std=c++11 temp.cpp -o temp -./temp > temp.out -cat temp.out -# ---------------------------------------------------------------------------- +# move the documentaion to the build directory +mv CppAD-%{yyyymmdd}.doc/doc CppAD-%{version}/doc +mv CppAD-%{version}/COPYING COPYING +mv CppAD-%{version}/uw_copy_040507.html uw_copy_040507.html + +# Replace cppad_SOURCE_DIR by the system include directory so that +# installed files, instead of local files, are used for testing. +includedir=%{buildroot}%{_includedir} +sed -e "s|\${cppad_SOURCE_DIR}/include|SYSTEM $includedir|" \ + -i.bak CppAD-%{version}/CMakeLists.txt +# ----------------------------------------------------------------------------- # build # ----------------------------------------------------------------------------- %build # -# 1. The debug_all is overridden for cppad_lib by the edit of -# cppad_lib/CMakeLists.txt above -# -# 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 -# +# 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. +# The last argument to the cmake command is the directory created using +# the souce code tarball. +cppad_cxx_flags='-Wall -pedantic-errors -std=c++11 -Wshadow -Wconversion' %cmake --version %cmake \ - -S CppAD-%{version} \ - -B . \ - \ -D CMAKE_VERBOSE_MAKEFILE=0 \ -G 'Unix Makefiles' \ \ -D cppad_prefix=%{_prefix} \ -D cppad_postfix='' \ - \ -D cmake_install_includedirs=include \ -D cmake_install_libdirs=%{_lib} \ - \ -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_ipopt=false \ - -D include_cppadcg=false \ - \ - -D colpack_prefix='NOTFOUND' \ - -D fadbad_prefix='NOTFOUND' \ - -D sacado_prefix='NOTFOUND' \ + -D adolc_prefix='' \ + -D colpack_prefix='' \ + -D eigen_prefix='' \ + -D fadbad_prefix='' \ + -D ipopt_prefix='' \ + -D sacado_prefix='' \ \ -D cppad_cxx_flags="$cppad_cxx_flags" \ -D cppad_profile_flag='' \ - -D cppad_testvector=cppad \ - -D cppad_max_num_threads=64 \ + \ + -D cppad_test_vector=cppad \ + -D cppad_max_num_theads=64 \ -D cppad_tape_id_type=size_t \ - -D cppad_tape_addr_type='unsigned int' \ - -D cppad_debug_which='debug_all' + -D cppad_tape_addr_type=size_t \ + -D cppad_deprecated=NO \ + CppAD-%{version} # -# see https://docs.fedoraproject.org/en-US/packaging-guidelines/ -# parallel_make -%make_build +make %{?_smp_mflags} # ----------------------------------------------------------------------------- # Install # ----------------------------------------------------------------------------- %install -# https://docs.fedoraproject.org/en-US/packaging-guidelines/ -# why_the_makeinstall_macro_should_not_be_used -%make_install - -%files -%{_libdir}/libcppad_lib.so.%{soversion} - -# These documentation files come from the source code tarball -%doc COPYING uw_copy_040507.html - +rm -rf %{buildroot} +make install DESTDIR=%{buildroot} %files devel %{_includedir}/%{name} %{_datadir}/pkgconfig/%{name}.pc %{_libdir}/pkgconfig/%{name}.pc -%{_libdir}/libcppad_lib.so +# 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 # ----------------------------------------------------------------------------- -# +# use the installed include files to compile and run the tests %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 -# ---------------------------------------------------------------------------- -# -# Use %%clean with no arguments to surpress the cleanup of BUILDROOT -# This enables one to check that the necessary files are installed. -%%clean +make check + # ---------------------------------------------------------------------------- %changelog -* Mon Jan 05 2026 Brad Bell - 20260000.0-1 -- New upstream source cppad-20260000.0. - -* Wed Jul 23 2025 Fedora Release Engineering - 20250000.0-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Wed Feb 05 2025 - 20250000.0-4 -- python-toml is deprecated, so current xrst-python uses python-tomli instead - -* Sun Jan 19 2025 Brad Bell - 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 - 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 - 20250000.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Tue Jan 14 2025 Brad Bell - 20250000.0-1 -- New upstream source cppad-20250000.0. - -* Wed Jul 17 2024 Fedora Release Engineering - 20240000.3-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Fri Mar 01 2024 Brad Bell - 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 - 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 - 20240000.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Fedora Release Engineering - 20240000.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Wed Jan 17 2024 Brad Bell - 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 - 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 - 20240000.1-1 -- Upstream fix of bug found by build on buildvm-x86-16.iad2.fedoraproject.org - -* Sat Jan 06 2024 Brad Bell - 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 - 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 - 20230000.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Sun Jan 29 2023 Brad Bell - 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 - 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 - 20220000.4-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Wed Jul 20 2022 Fedora Release Engineering - 20220000.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Sat May 21 2022 Brad Bell - 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 - 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 - 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 - 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 - 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 - 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 - 20210000.7-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Mon Aug 02 2021 Brad Bell - 20210000.7-1 -- Advance to upstream source 20210000.7 - -* Wed Jul 21 2021 Fedora Release Engineering - 20210000.5-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Sun Mar 07 2021 Brad Bell - 20210000.5-2 -- Remove %%debug_package (not necessary to create debug info). -- Use %%setup to unpack tarballs (sets premissions properly). -- Add comments about using %%clean to check BUILDROOT. - -* Sun Feb 28 2021 Brad Bell - 20210000.5-1 -- Advance to upstream source 20210000.5 -- Remove patches that are no longer necessary. -- Change: Source1, Source2 -> Source0, Source1. -- Change: make %%{?_smp_mflags} -> %%make_build -- Change: make install DESTDIR=%%{buildroot} -> %%make_install. - -* Thu Feb 18 2021 Brad Bell - 20210000.3-3 -- Patch corresponding to bug fix in upstream source 20210000.5 - -* Tue Feb 02 2021 Brad Bell - 20210000.3-2 -- Patch corresponding to bug fix in upstream source 20210000.4 - -* Tue Jan 26 2021 Brad Bell - 20210000.3-1 -- Advance to upstream source 20210000.3 -- Remove patches that are no longer necessary. -- Update cmake command line to new version of upstream source. - -* Tue Jan 26 2021 Fedora Release Engineering - 20200000.0-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Sun Dec 27 2020 Brad Bell - 20200000.0-7 -- Add _smp_mflags to the make check command (parallel make) -- Build Debuginfo version of the cppad_lib library. - -* Sat Aug 01 2020 Brad Bell - 20200000.0-6 -- define __cmake_in_source_build see: - https://docs.fedoraproject.org/en-US/packaging-guidelines/CMake/ -- Change soversion edit so modified soversion displayed during cmake command - -* Sat Aug 01 2020 Fedora Release Engineering - 20200000.0-5 -- Second attempt - Rebuilt for - https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Mon Jul 27 2020 Fedora Release Engineering - 20200000.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Tue Jan 28 2020 Fedora Release Engineering - 20200000.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Thu Jan 23 2020 Brad Bell - 20200000.0-2 -- Remove comment about object library becasue install libcppadlib.so -- Patch to not install empty include (in 20200000.1 upstream) -- Patch to not use GreaterThanZero during reverse mode (in 2020000.2) -- Remove PowTestSeven which tested the GreaterThanZeor in reverse mode - -* Thu Jan 02 2020 Brad Bell - 20200000.0-1 -- Advance to version 2020 of cppad -- This is a major change because it we need to install the binary cppad_lib. -- No longer have lint error because must build library before installing. -- Remove patch for upstream source < 20190200.5. -- No debug_package, so need to ensure CPPAD_DEBUG_AND_RELEASE always defined. -- cppad_deprecatred is no longer in cmake command line. -- cppad_debug_which is set to debug_all and overridden for cppad_lib directory. - -* Wed Sep 18 2019 Brad Bell - 20190200.4-2 -- fedpkg lint now reconizes EPL-2.0 license so remove comment about its error -- Use sed edit of 20190200.4 to obtain bug fix that is in 20190200.5 - -* Tue Aug 06 2019 Brad Bell - 20190200.4-1 -- Bug fix by advancing to upstream source 20190200.4 - -* Wed Jul 24 2019 Fedora Release Engineering - 20190200.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Wed May 29 2019 Brad Bell - 20190200.0-3 -- Bug fix corresponding to upstream source 20190200.3. -- Fix license field and add comment at top about fedpkg lint license mistake. - * Fri Feb 01 2019 Brad Bell - 20190200.0-2 - Test with corrected version of source2; i.e., 20190200.doc.tar.gz diff --git a/get_tarball.sh b/get_tarball.sh deleted file mode 100755 index daf2942..0000000 --- a/get_tarball.sh +++ /dev/null @@ -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 diff --git a/sources b/sources index 8f40433..70c72d1 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ -SHA512 (CppAD-20260000.0.tar.gz) = abe9dd9a971f8d154990d54c1f798c8cab6bf90d016bb288efbcb23a14331897762610295658eec04fb50e5c13b05f4bb6b50a4647d6f0468eb94833dc3400d2 +SHA512 (20190200.0.tar.gz) = 2cd77d56b141f58f5bf2bfc75b17ac663e6f5696f43bb18219e94289000f45acb148eee2dec445813aada01e55ed560888e69f8c32ced359df5472938efec6a8 +SHA512 (20190200.doc.tar.gz) = 3099aa190b19f50e5a33d49aac62ce9218527f4810c85dad132068658922149af4e90b8c0658174711795d349769c664ca57c4bf15c603e8cfadfb160a8c1dd5