diff --git a/0001-Correct-the-lhapdf-config-help-message-to-use-includ.patch b/0001-Correct-the-lhapdf-config-help-message-to-use-includ.patch deleted file mode 100644 index 911a430..0000000 --- a/0001-Correct-the-lhapdf-config-help-message-to-use-includ.patch +++ /dev/null @@ -1,50 +0,0 @@ -From d49e808ed6c027db3a682a731d74ec3ffa7c6076 Mon Sep 17 00:00:00 2001 -From: Andy Buckley -Date: Mon, 9 Mar 2026 19:33:39 +0000 -Subject: [PATCH] Correct the lhapdf-config help message to use --includedir - rather than --incdir, but also add a backward-compatibility handling for - --incdir if given. Thanks to Mark Sutton. - ---- - ChangeLog | 6 ++++++ - bin/lhapdf-config.in | 3 ++- - 2 files changed, 8 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index cd35d70..7eabc3f 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,9 @@ -+2026-03-09 Andy Buckley -+ -+ * Correct the lhapdf-config help message to use --includedir -+ rather than --incdir, but also add a backward-compatibility -+ handling for --incdir if given. Thanks to Mark Sutton. -+ - 2026-02-19 Andy Buckley - - * Version 6.5.6 release. -diff --git a/bin/lhapdf-config.in b/bin/lhapdf-config.in -index b62a217..d13b6f1 100644 ---- a/bin/lhapdf-config.in -+++ b/bin/lhapdf-config.in -@@ -13,7 +13,7 @@ Options: - --help | -h : show this help message - - --prefix : show the installation prefix (cf. autoconf) -- --incdir : show the path to the LHAPDF C++ header directory -+ --includedir : show the path to the LHAPDF C++ header directory - --libdir : show the path to the LHAPDF library directory - --datadir : show the path to the LHAPDF data directory - --pythonpath|--pydir : show the path(s) to the directory containing LHAPDF's Python package -@@ -48,6 +48,7 @@ for opt in "$@"; do - --version) echo "@PACKAGE_VERSION@" && exit 0 ;; - --prefix) show_prefix=1 ;; - --includedir) show_incdir=1 ;; -+ --incdir) show_incdir=1 ;; #< TODO: for backward compatibility from 6.5.7, remove eventually - --libdir) show_libdir=1 ;; - --datadir) show_datdir=1 ;; - --pythonpath) show_pypath=1 ;; --- -2.53.0 - diff --git a/0001-Fix-double-I-in-lhapdf-config-cflags-output.patch b/0001-Fix-double-I-in-lhapdf-config-cflags-output.patch deleted file mode 100644 index f8959a8..0000000 --- a/0001-Fix-double-I-in-lhapdf-config-cflags-output.patch +++ /dev/null @@ -1,76 +0,0 @@ -From d4dd6202016754052f7f7f0cfedd3913a08afbbf Mon Sep 17 00:00:00 2001 -From: Mattias Ellert -Date: Fri, 3 Apr 2026 07:45:56 +0200 -Subject: [PATCH] Fix double -I in lhapdf-config --cflags output Don't put - -L/usr/lib and -L/usr/lib64 in build flags Fix pkg-config --define-variable - libdir=/path --libs lhapdf - ---- - ChangeLog | 6 ++++++ - bin/lhapdf-config.in | 2 +- - configure | 9 +++++++-- - lhapdf.pc.in | 4 ++-- - 4 files changed, 16 insertions(+), 5 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 7eabc3f..74f4c7e 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,9 @@ -+2026-04-03 Mattias Ellert -+ -+ * Fix double -I in lhapdf-config --cflags output -+ * Don't put -L/usr/lib and -L/usr/lib64 in build flags -+ * Fix pkg-config --define-variable libdir=/path --libs lhapdf -+ - 2026-03-09 Andy Buckley - - * Correct the lhapdf-config help message to use --includedir -diff --git a/bin/lhapdf-config.in b/bin/lhapdf-config.in -index d13b6f1..4b5afcd 100644 ---- a/bin/lhapdf-config.in -+++ b/bin/lhapdf-config.in -@@ -102,7 +102,7 @@ if [ "$show_iflags" -eq 1 ]; then - ilhapdf="@includedir@" - test -n "$ilhapdf" && OUT="$OUT -I${ilhapdf}" - iyamlcpp="@YAML_CPP_CPPFLAGS@" -- test -n "$iyamlcpp" && OUT="$OUT -I${iyamlcpp}" -+ test -n "$iyamlcpp" && OUT="$OUT ${iyamlcpp}" - fi - if [ "$show_Lflags" -eq 1 ]; then - llhapdf="@libdir@" -diff --git a/configure b/configure -index 7fafae6..d530cd7 100644 ---- a/configure -+++ b/configure -@@ -19972,8 +19972,13 @@ - YAML_CPP_CPPFLAGS="" - YAML_CPP_LDFLAGS="" - if test "x$yaml_cpp_prefix" != "xno"; then -- YAML_CPP_CPPFLAGS="-I$yaml_cpp_prefix/include" -- YAML_CPP_LDFLAGS="-L$yaml_cpp_prefix/lib -L$yaml_cpp_prefix/lib64 -lyaml-cpp" -+ if test "x$yaml_cpp_prefix" = "x/usr"; then -+ YAML_CPP_CPPFLAGS="" -+ YAML_CPP_LDFLAGS="-lyaml-cpp" -+ else -+ YAML_CPP_CPPFLAGS="-I$yaml_cpp_prefix/include" -+ YAML_CPP_LDFLAGS="-L$yaml_cpp_prefix/lib -L$yaml_cpp_prefix/lib64 -lyaml-cpp" -+ fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lyaml-cpp" >&5 - printf %s "checking for main in -lyaml-cpp... " >&6; } - if test ${ac_cv_lib_yaml_cpp_main+y} -diff --git a/lhapdf.pc.in b/lhapdf.pc.in -index 964d0ae..1a7d80a 100644 ---- a/lhapdf.pc.in -+++ b/lhapdf.pc.in -@@ -8,5 +8,5 @@ Name: lhapdf - Description: LHAPDF parton density library - URL: https://lhapdf.hepforge.org - Version: @VERSION@ --Libs: -L@libdir@ @YAML_CPP_LDFLAGS@ -lLHAPDF --Cflags: -I@includedir@ @YAML_CPP_CPPFLAGS@ -+Libs: -L${libdir} @YAML_CPP_LDFLAGS@ -lLHAPDF -+Cflags: -I${includedir} @YAML_CPP_CPPFLAGS@ --- -2.53.0 - diff --git a/lhapdf-config.1 b/lhapdf-config.1 new file mode 100644 index 0000000..e0f63d2 --- /dev/null +++ b/lhapdf-config.1 @@ -0,0 +1,40 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.39.4. +.TH LHAPDF-CONFIG "1" "May 2011" "lhapdf-config" "User Commands" +.SH NAME +lhapdf-config \- script to get version number and compiler flags of the installed LHAPDF library +.SH SYNOPSIS +.B lhapdf-config +[[\fI--help|-h\fR] \fI| \fR[\fI--prefix\fR] \fI| \fR[\fI--pdfsets-path\fR]] +.SH DESCRIPTION +\fIlhapdf-config\fP is a tool that is used to configure to determine +the compiler and linker flags that should be used to compile +and link programs that use \fILHAPDF\fP. +.SH OPTIONS +.TP +\fB\-\-help\fR | \fB\-h\fR +: show this help message +.TP +\fB\-\-prefix\fR +: show the installation prefix (cf. autoconf) +.TP +\fB\-\-incdir\fR +: show the path to the LHAPDF header directory (for C++ interface) +.TP +\fB\-\-libdir\fR +: show the path to the LHAPDF library directory +.TP +\fB\-\-datadir\fR +: show the path to the LHAPDF installed data directory +.HP +\fB\-\-pdfsets\-path\fR : show the path to the directory containing the PDF set data files +.TP +\fB\-\-cppflags\fR +: get compiler flags for use with the C preprocessor stage of C++ compilation +.TP +\fB\-\-ldflags\fR +: get compiler flags for use with the linker stage of any compilation +.TP +\fB\-\-version\fR +: returns LHAPDF release version number +.SH AUTHOR +This manual page was written by Lifeng Sun for the Debian system (but may be used by others). diff --git a/lhapdf-fix-lhapdf-config.patch b/lhapdf-fix-lhapdf-config.patch new file mode 100644 index 0000000..09b5ee6 --- /dev/null +++ b/lhapdf-fix-lhapdf-config.patch @@ -0,0 +1,13 @@ +Fix the package name in lhapdf-config. + +--- a/bin/lhapdf-config.in ++++ b/bin/lhapdf-config.in +@@ -22,7 +22,7 @@ + echo " --cppflags : get compiler flags for use with the C preprocessor stage of C++ compilation" + echo " --ldflags : get compiler flags for use with the linker stage of any compilation" + echo +- echo " --version : returns Rivet release version number" ++ echo " --version : returns LHAPDF release version number" + fi + + OUT="" diff --git a/lhapdf-fix-test-environment.patch b/lhapdf-fix-test-environment.patch new file mode 100644 index 0000000..8287201 --- /dev/null +++ b/lhapdf-fix-test-environment.patch @@ -0,0 +1,44 @@ +Fix test environment. + +--- a/octave/Makefile.am ++++ b/octave/Makefile.am +@@ -5,5 +5,5 @@ + lhapdf.oct: wrapoctave.cc + $(MKOCTFILE) -I$(top_srcdir)/include -v -g -o lhapdf.oct wrapoctave.cc -L$(top_builddir)/lib -L$(top_builddir)/lib/.libs -lLHAPDF + +-TESTS_ENVIRONMENT = LHAPATH=$(top_srcdir)/PDFsets $(OCTAVE) ++TESTS_ENVIRONMENT = LHAPATH=$(top_srcdir)/PDFsets LD_LIBRARY_PATH="$(top_builddir)/lib/.libs$${LD_LIBRARY_PATH:+:$$LD_LIBRARY_PATH}" $(OCTAVE) + TESTS = $(srcdir)/lhapdf-octave-example1.m +--- a/octave/Makefile.in ++++ b/octave/Makefile.in +@@ -195,7 +195,7 @@ + top_srcdir = @top_srcdir@ + EXTRA_DIST = lhapdf-octave-example1.m wrapoctave.cc + pkgdata_DATA = lhapdf.oct +-TESTS_ENVIRONMENT = LHAPATH=$(top_srcdir)/PDFsets $(OCTAVE) ++TESTS_ENVIRONMENT = LHAPATH=$(top_srcdir)/PDFsets LD_LIBRARY_PATH="$(top_builddir)/lib/.libs$${LD_LIBRARY_PATH:+:$$LD_LIBRARY_PATH}" $(OCTAVE) + TESTS = $(srcdir)/lhapdf-octave-example1.m + all: all-am + +--- a/examples/Makefile.am ++++ b/examples/Makefile.am +@@ -12,7 +12,7 @@ + lhapdf_example9_SOURCES = Example9.f + lhapdf_example10_SOURCES = Example10.f + +-#TESTS_ENVIRONMENT = LHAPATH=$(top_srcdir)/PDFsets ++TESTS_ENVIRONMENT = LHAPATH=$(top_srcdir)/PDFsets + TESTS = lhapdf-example1 + # lhapdf-example2 lhapdf-example3 + +diff -ur lhapdf-5.8.8.orig/examples/Makefile.in lhapdf-5.8.8/examples/Makefile.in +--- a/examples/Makefile.in ++++ b/examples/Makefile.in +@@ -37,6 +37,7 @@ + lhapdf-example8$(EXEEXT) lhapdf-example9$(EXEEXT) \ + lhapdf-example10$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) + TESTS = lhapdf-example1$(EXEEXT) $(am__EXEEXT_3) $(am__EXEEXT_4) ++TESTS_ENVIRONMENT = LHAPATH=$(top_srcdir)/PDFsets + @ENABLE_LHAGLUE_TRUE@am__append_1 = lhapdf-example4 lhapdf-example5 lhapdf-example6 + @ENABLE_LHAGLUE_TRUE@am__append_2 = lhapdf-example4 + @ENABLE_CCWRAP_TRUE@am__append_3 = lhapdf-cctest1 lhapdf-cctest2 lhapdf-cctest3 lhapdf-cctest4 lhapdf-cctest5 diff --git a/lhapdf-fix-typo.patch b/lhapdf-fix-typo.patch new file mode 100644 index 0000000..71eb447 --- /dev/null +++ b/lhapdf-fix-typo.patch @@ -0,0 +1,13 @@ +Fix typo: AVAIABLE->AVAILABLE. + +--- a/src/wrapevolve.F ++++ b/src/wrapevolve.F +@@ -315,7 +315,7 @@ + if(index(setpath,'NNPDF').gt.0) then + if(nset.gt.1) then + if((index(setpath,'1000.').gt.0.and.nnpdf.gt.0).or.(index(setpath,'100.').gt.0.and.nnpdf1000.gt.0)) then +- print *,'LHAPDF ERROR: MULTISET-INITIALIZATION with NNPDF 1000 sets IS NOT AVAIABLE (AT THE MOMENT)!' ++ print *,'LHAPDF ERROR: MULTISET-INITIALIZATION with NNPDF 1000 sets IS NOT AVAILABLE (AT THE MOMENT)!' + STOP + endif + endif diff --git a/lhapdf-getdata.1 b/lhapdf-getdata.1 new file mode 100644 index 0000000..aaec653 --- /dev/null +++ b/lhapdf-getdata.1 @@ -0,0 +1,64 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.39.4. +.TH LHAPDF-GETDATA "1" "May 2011" "lhapdf-getdata" "User Commands" +.SH NAME +lhapdf-getdata \- Get PDF sets from the LHAPDF repository +.SH SYNOPSIS +.B lhapdf-getdata +[\fI--main\fR] [\fI--all\fR] [\fI--repo=URL\fR] [\fI--dest=DEST\fR] [\fI--dryrun\fR] + [ ...] +.SH DESCRIPTION +.IP +.PP +Grab PDF grid and param files from the LHAPDF repository and install +them into the local LHAPDF data directory. +.SH OPTIONS +.TP +\fB\-h\fR, \fB\-\-help\fR +show this help message and exit +.TP +\fB\-\-repo\fR=\fIURL\fR +Base URL of online sets repository +(http://www.hepforge.org/archive/lhapdf/pdfsets/current) +.TP +\fB\-\-dest\fR=\fIDEST\fR +PDF sets directory to install to (/usr/share/lhapdf/PDFsets) +.TP +\fB\-\-all\fR +Get ALL sets (this will be hundreds of megabytes... be +careful!) +.TP +\fB\-\-list\fR +Just list available files +.TP +\fB\-\-force\fR +Overwrite existing files +.TP +\fB\-\-dryrun\fR +Don't actually do any downloading +.TP +\fB\-Q\fR, \fB\-\-quiet\fR +Suppress normal messages +.TP +\fB\-V\fR, \fB\-\-verbose\fR +Add extra debug messages +.SH EXAMPLES +.TP +Show all available sets: +lhapdf\-getdata \fB\-\-list\fR +.TP +Get all NNPDF PDFs with pattern matching: +lhapdf\-getdata NNPDF +.TP +Get CTEQ6L1, CTEQ66, MRST\-S LO* and LO** PDFs with pattern matching: +lhapdf\-getdata CTEQ6ll CTEQ66 lomod MCal +.TP +Get MSTW2008 68% confidence PDF by full name: +lhapdf\-getdata MSTW2008lo68cl.LHgrid +.TP +See how much downloading would be involved in getting all PDF sets: +lhapdf\-getdata \fB\-\-all\fR \fB\-\-dryrun\fR +.TP +I'm hardcore, give me the whole collection: +lhapdf\-getdata \fB\-\-all\fR +.SH AUTHOR +This manual page was written by Lifeng Sun for the Debian system (but may be used by others). diff --git a/lhapdf-lhacontrol.patch b/lhapdf-lhacontrol.patch new file mode 100644 index 0000000..cc4d0f2 --- /dev/null +++ b/lhapdf-lhacontrol.patch @@ -0,0 +1,13 @@ +diff -ur lhapdf-5.9.1.orig/examples/Example6.f lhapdf-5.9.1/examples/Example6.f +--- lhapdf-5.9.1.orig/examples/Example6.f 2008-10-21 13:09:33.000000000 +0200 ++++ lhapdf-5.9.1/examples/Example6.f 2015-03-07 06:15:27.094311950 +0100 +@@ -10,7 +10,8 @@ + data inset/20200,20201,231/ + character*20 lhaparm(20) + double precision lhavalue(20) +- common/lhacontrol/lhaparm,lhavalue ++ character*20 commoninitflag ++ common/lhacontrol/lhaparm,lhavalue,commoninitflag + common/W50513/xmin,xmax,q2min,q2max + !open(7,file='/home/whalley/lhapdf/lhanames') + parm(1)='DEFAULT' diff --git a/lhapdf-path-max.patch b/lhapdf-path-max.patch new file mode 100644 index 0000000..b209dc9 --- /dev/null +++ b/lhapdf-path-max.patch @@ -0,0 +1,13 @@ +--- a/src/binreloc.c ++++ b/src/binreloc.c +@@ -24,6 +24,10 @@ + #include + #include "binreloc.h" + ++#ifndef PATH_MAX ++#define PATH_MAX 4096 ++#endif ++ + #ifdef __cplusplus + extern "C" { + #endif /* __cplusplus */ diff --git a/lhapdf-query.1 b/lhapdf-query.1 new file mode 100644 index 0000000..43a09c5 --- /dev/null +++ b/lhapdf-query.1 @@ -0,0 +1,25 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.39.4. +.TH LHAPDF-QUERY "1" "May 2011" "lhapdf-query" "User Commands" +.SH NAME +lhapdf-query \- Query PDF values from LHAPDF +.SH SYNOPSIS +.B lhapdf-query +[cmd] [setname|num] [memnum] x Q [flavourID] +.SH DESCRIPTION +.PP +Retrieve PDF values from LHAPDF, given a set name, member number +and values for x and Q. This will return a list of xf(x,Q2) values +for each parton; specifying a parton name on the command line will +return the single appropriate xf(x,Q2) value for that flavour. +.SH OPTIONS +.TP +\fB\-h\fR, \fB\-\-help\fR +Show this help message and exit +.TP +\fB\-Q\fR, \fB\-\-quiet\fR +Suppress normal messages +.TP +\fB\-V\fR, \fB\-\-verbose\fR +Add extra debug messages +.SH AUTHOR +This manual page was written by Lifeng Sun for the Debian system (but may be used by others). diff --git a/lhapdf.spec b/lhapdf.spec index 69013a3..3bc9c2e 100644 --- a/lhapdf.spec +++ b/lhapdf.spec @@ -1,351 +1,238 @@ +%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} + Name: lhapdf -Version: 6.5.6 -Release: 6%{?dist} +Version: 5.9.1 +Release: 14%{?dist} Summary: Les Houches Accord PDF Interface +Group: System Environment/Libraries -License: GPL-3.0-only -URL: https://lhapdf.hepforge.org/ -Source0: https://www.hepforge.org/archive/lhapdf/LHAPDF-%{version}.tar.gz -# PDFs used during testing -Source1: https://lhapdfsets.web.cern.ch/current/CT10nlo.tar.gz -Source2: https://lhapdfsets.web.cern.ch/current/MSTW2008nlo68cl.tar.gz -Source3: https://lhapdfsets.web.cern.ch/current/NNPDF31_lo_as_0130.tar.gz -# Missing file in source tarfile -# See: https://gitlab.com/hepcedar/lhapdf/-/merge_requests/120 -Source4: testunc.py -# https://gitlab.com/hepcedar/lhapdf/-/merge_requests/123 -Patch0: 0001-Correct-the-lhapdf-config-help-message-to-use-includ.patch -# https://gitlab.com/hepcedar/lhapdf/-/merge_requests/124 -Patch1: 0001-Fix-double-I-in-lhapdf-config-cflags-output.patch +License: GPLv2+ +URL: http://lhapdf.hepforge.org/ +Source0: http://www.hepforge.org/archive/lhapdf/%{name}-%{version}.tar.gz +# Minimal set of PDFs (needed to run make check) +Source1: http://www.hepforge.org/archive/lhapdf/pdfsets/%{version}/cteq5l.LHgrid +Source2: http://www.hepforge.org/archive/lhapdf/pdfsets/%{version}/cteq6ll.LHpdf +Source3: http://www.hepforge.org/archive/lhapdf/pdfsets/%{version}/cteq61.LHgrid +Source4: http://www.hepforge.org/archive/lhapdf/pdfsets/%{version}/CT10.LHgrid +Source5: http://www.hepforge.org/archive/lhapdf/pdfsets/%{version}/GRV98nlo.LHgrid +Source6: http://www.hepforge.org/archive/lhapdf/pdfsets/%{version}/MRST2001nlo.LHgrid +# Man pages (from the Debian package) +Source7: %{name}-config.1 +Source8: %{name}-getdata.1 +Source9: %{name}-query.1 +# Patches (from the Debian package) +Patch0: %{name}-fix-lhapdf-config.patch +Patch1: %{name}-fix-test-environment.patch +Patch2: %{name}-fix-typo.patch +Patch3: %{name}-path-max.patch +Patch4: %{name}-lhacontrol.patch -BuildRequires: make -BuildRequires: gcc-c++ -BuildRequires: yaml-cpp-devel -BuildRequires: python3-Cython -BuildRequires: python3-devel +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: octave-devel +BuildRequires: ncurses-devel +BuildRequires: python-devel +BuildRequires: gcc-gfortran +BuildRequires: swig BuildRequires: doxygen - -# Obsolete LHAPDF5 packages not provided by LHAPDF6 -Obsoletes: octave-lhapdf < 6 -Obsoletes: lhapdf-pdfsets-minimal < 6 +BuildRequires: tex(latex) +BuildRequires: ghostscript %description -LHAPDF is a general purpose C++ interpolator, used for evaluating PDFs -from discretized data files. Previous versions of LHAPDF were written -in Fortran 77/90 and are documented at http://lhapdf.hepforge.org/lhapdf5/. - -LHAPDF6 vastly reduces the memory overhead of the Fortran LHAPDF (from -gigabytes to megabytes!), entirely removes restrictions on numbers of -concurrent PDFs, allows access to single PDF members without needing -to load whole sets, and separates a new standardized PDF data format -from the code library so that new PDF sets may be created and released -easier and faster. The C++ LHAPDF6 also permits arbitrary parton -contents via the standard PDG ID code scheme, is computationally more -efficient (particularly if only one or two flavors are required at -each phase space point, as in PDF reweighting), and uses a flexible -metadata system which fixes many fundamental metadata and concurrency -bugs in LHAPDF5. - -Compatibility routines are provided as standard for existing C++ and -Fortran codes using the LHAPDF5 and PDFLIB legacy interfaces, so you -can keep using your existing codes. But the new interface is much more -powerful and pleasant to work with, so we think you'll want to switch -once you've used it! - -LHAPDF6 is documented in more detail in http://arxiv.org/abs/1412.7420 +LHAPDF provides a unified and easy to use interface to modern PDF +sets. It is designed to work not only with individual PDF sets but +also with the more recent multiple "error" sets. It can be viewed as +the successor to PDFLIB, incorporating many of the older sets found in +the latter, including pion and photon PDFs. In LHAPDF the computer +code and input parameters/grids are separated thus allowing more easy +updating and no limit to the expansion possibilities. %package devel Summary: Les Houches Accord PDF Interface - development files +Group: Development/Libraries Requires: %{name}%{?_isa} = %{version}-%{release} -Requires: yaml-cpp-devel %description devel This package provides development files of LHAPDF, including C++ bindings. -%package -n python3-%{name} -Summary: Les Houches Accord PDF Interface - Python 3 module -%py_provides python3-%{name} +%global octpkg %{name} +%{!?octave_api: %global octave_api %(octave-config -p API_VERSION || echo 0)} +%{!?octpkgdir: %global octpkgdir %{_datadir}/octave/packages/%{octpkg}-%{version}} +%{!?octpkglibdir: %global octpkglibdir %{_libexecdir}/octave/packages/%{octpkg}-%{version}} +%{!?octave_cmd: %global octave_cmd() octave -H -q --no-site-file --eval "%*";} + +%package -n octave-%{name} +Summary: Les Houches Accord PDF Interface - Octave module +Group: Applications/Engineering +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: octave(api) = %{octave_api} +Requires(post): octave +Requires(postun): octave + +%description -n octave-%{name} +This package provides Octave bindings for LHAPDF. + +%package -n python-%{name} +Summary: Les Houches Accord PDF Interface - Python module +Group: Applications/Engineering Requires: %{name}%{?_isa} = %{version}-%{release} -%description -n python3-%{name} -This package provides Python 3 bindings for LHAPDF. -This package also provides a script called "lhapdf" which can be used -to query the catalog of PDF sets and to install and update them from -the command line. It accepts commands "list", "update", "install" and -"upgrade". Please run "lhapdf help" for full usage instructions. +%description -n python-%{name} +This package provides Python bindings for LHAPDF. + +%package pdfsets-minimal +Summary: Les Houches Accord PDF Interface - PDF sets +Group: Applications/Engineering +%if %{?fedora}%{!?fedora:0} >= 10 || %{?rhel}%{!?rhel:0} >= 6 +BuildArch: noarch +%endif +Requires: %{name} = %{version}-%{release} + +%description pdfsets-minimal +This package provides a minimal PDF sets required by the test suites. +Note: the python-lhapdf package provides the lhapdf-getdata script to +download other PDF sets. %package doc Summary: Les Houches Accord PDF Interface - documentation +Group: Documentation +%if %{?fedora}%{!?fedora:0} >= 10 || %{?rhel}%{!?rhel:0} >= 6 BuildArch: noarch - -%description doc -This package provides API documentation and examples for LHAPDF. - -%prep -%setup -q -n LHAPDF-%{version} -%patch -P0 -p1 -%patch -P1 -p1 - -mkdir tests/SETS -tar -z -x -f %{SOURCE1} -C tests/SETS -tar -z -x -f %{SOURCE2} -C tests/SETS -tar -z -x -f %{SOURCE3} -C tests/SETS - -cp -p %{SOURCE4} tests - -# Remove bundled yaml-cpp -rm -rf src/yamlcpp/ - -# Fix shebangs -sed 's!/usr/bin/env python3!%{__python3}!' -i bin/lhapdf -sed 's!/usr/bin/env python!%{__python3}!' -i examples/*.py -sed 's!/usr/bin/env bash!/bin/bash!' -i bin/lhapdf-config.in - -%build -%configure \ - --disable-static \ - --with-yaml-cpp \ - --enable-librelease \ - --docdir=%{_pkgdocdir} \ - PYTHON=%{__python3} - -%if %{?rhel}%{!?rhel:0} == 8 -# cython version on RHEL 8 is too old and generates broken code. -# touch the pregenerated bundled source file to prevent regeneration. -# See: https://gitlab.com/hepcedar/lhapdf/-/merge_requests/122 -touch wrappers/python/lhapdf.cpp -%else -rm wrappers/python/lhapdf.cpp %endif -%make_build +%description doc +This package provides documentation of C++ bindings for LHAPDF. -# Build doxygen documentation -%make_build doxy +%prep +%setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +mkdir PDFsets +install -m 644 -p %SOURCE1 PDFsets +install -m 644 -p %SOURCE2 PDFsets +install -m 644 -p %SOURCE3 PDFsets +install -m 644 -p %SOURCE4 PDFsets +install -m 644 -p %SOURCE5 PDFsets +install -m 644 -p %SOURCE6 PDFsets + +sed 's!/usr/bin/env python!/usr/bin/python!' -i bin/lhapdf-* examples/*.py +sed 's!/usr/bin/env bash!/bin/bash!' -i bin/lhapdf-config.in + +%if %{?fedora}%{!?fedora:0} >= 7 || %{?rhel}%{!?rhel:0} >= 6 +# Remove bundled swig generated sources +rm pyext/lhapdf_wrap.cc +rm pyext/lhapdf.py +%endif + +%build +%configure --disable-static --enable-octave + +# Reduce overlinking +sed 's!CC \(.*-shared\) !CC \\\${wl}--as-needed \1 !' -i libtool + +make %{?_smp_mflags} %install -%make_install +rm -rf %{buildroot} +make install DESTDIR=%{buildroot} -mkdir %{buildroot}%{python3_sitearch}/%{name}-%{version}.dist-info -cat << EOF > %{buildroot}%{python3_sitearch}/%{name}-%{version}.dist-info/METADATA -Name: %{name} -Version: %{version} -EOF +mkdir -p %{buildroot}%{_mandir}/man1 +install -m 644 -p %SOURCE7 %{buildroot}%{_mandir}/man1 +install -m 644 -p %SOURCE8 %{buildroot}%{_mandir}/man1 +install -m 644 -p %SOURCE9 %{buildroot}%{_mandir}/man1 rm %{buildroot}%{_libdir}/libLHAPDF.la -find %{buildroot}%{_pkgdocdir}/examples -type f -a '!' -name '*.*' -delete +rm %{buildroot}%{_datadir}/%{name}/doc/html + +APIDIR=$(octave-config -p CANONICAL_HOST_TYPE)-$(octave-config -p API_VERSION) +mkdir -p %{buildroot}%{octpkglibdir}/${APIDIR} +mv %{buildroot}%{_datadir}/%{name}/%{name}.oct \ + %{buildroot}%{octpkglibdir}/${APIDIR}/%{name}.oct +chmod 755 %{buildroot}%{octpkglibdir}/${APIDIR}/%{name}.oct +mkdir -p %{buildroot}%{octpkgdir}/packinfo +install -m 644 -p COPYING %{buildroot}%{octpkgdir}/packinfo/COPYING +cat << EOF > %{buildroot}%{octpkgdir}/packinfo/DESCRIPTION +Name: %{name} +Version: %{version} +Date: `date -I` +Author: W Giele , Mike R Whalley +Maintainer: W Giele , Mike R Whalley +Title: Les Houches Accord PDF Interface +Description: LHAPDF provides a unified and easy to use interface to + modern PDF sets. It is designed to work not only with individual PDF + sets but also with the more recent multiple "error" sets. It can be + viewed as the successor to PDFLIB, incorporating many of the older sets + found in the latter, including pion and photon PDFs. In LHAPDF the + computer code and input parameters/grids are separated thus allowing + more easy updating and no limit to the expansion possibilities. +EOF + +sed '2a pkg load lhapdf' octave/lhapdf-octave-example1.m \ + > lhapdf-octave-example1.m + +mkdir -p %{buildroot}%{_datadir}/%{name}/PDFsets +install -m 644 -p PDFsets/* %{buildroot}%{_datadir}/%{name}/PDFsets %check -# Workaround incomplete test environment -# See: https://gitlab.com/hepcedar/lhapdf/-/merge_requests/121 -cp -p pdfsets.index tests/SETS -cp -p lhapdf.conf tests/SETS -export PYTHONPATH=$PWD/wrappers/python/build -export LD_LIBRARY_PATH=$PWD/src/.libs -%make_build check +%ifnarch s390 %{arm} +GNUTERM=dumb make check +%endif + +%clean +rm -rf %{buildroot} + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%post -n octave-%{name} +%octave_cmd pkg rebuild + +%postun -n octave-%{name} +%octave_cmd pkg rebuild %files -%{_libdir}/libLHAPDF-%{version}.so -%{_datadir}/LHAPDF -%doc AUTHORS ChangeLog -%license COPYING +%{_libdir}/libLHAPDF.so.* +%doc AUTHORS ChangeLog COPYING README TODO %files devel -%{_bindir}/%{name}-config +%{_bindir}/lhapdf-config +%{_mandir}/man1/lhapdf-config.1* %{_includedir}/LHAPDF %{_libdir}/libLHAPDF.so -%{_libdir}/pkgconfig/%{name}.pc +%doc examples/CC*.cc examples/Example*.f -%files -n python3-%{name} -%{_bindir}/%{name} -%{python3_sitearch}/%{name}-%{version}.dist-info -%{python3_sitearch}/%{name} +%files -n octave-%{name} +%{octpkglibdir} +%{octpkgdir} +%doc lhapdf-octave-example1.m + +%files -n python-%{name} +%{_bindir}/lhapdf-getdata +%{_bindir}/lhapdf-query +%{_mandir}/man1/lhapdf-getdata.1* +%{_mandir}/man1/lhapdf-query.1* +%{python_sitearch}/* +%doc examples/pdf-*.py + +%files pdfsets-minimal +%dir %{_datadir}/%{name} +%{_datadir}/%{name}/PDFsets +%{_datadir}/%{name}/PDFsets.index %files doc -%doc %{_pkgdocdir}/doxygen -%doc %{_pkgdocdir}/examples -%license COPYING +%doc ccwrap/doxy/html COPYING %changelog -* Wed Jul 22 2026 Python Maint - 6.5.6-6 -- Rebuilt for Python 3.15.0b4 ABI change - -* Thu Jul 16 2026 Fedora Release Engineering - 6.5.6-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild - -* Wed Jun 03 2026 Python Maint - 6.5.6-4 -- Rebuilt for Python 3.15 - -* Fri Apr 03 2026 Mattias Ellert - 6.5.6-3 -- More fixes to lhapdf-config and lhapdf.pc - -* Sat Mar 28 2026 Mattias Ellert - 6.5.6-2 -- Correct the lhapdf-config output (backport from upstream git) - -* Thu Mar 05 2026 Mattias Ellert - 6.5.6-1 -- Update to version 6.5.6 -- Add PDFs used by new tests to the source RPM -- Add test file missing from the source tarfile to the source RPM - -* Fri Jan 16 2026 Fedora Release Engineering - 6.5.5-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild - -* Fri Dec 05 2025 Orion Poplawski - 6.5.5-2 -- Rebuild for yaml-cpp 0.8 (epel10) - -* Fri Sep 19 2025 Python Maint - 6.5.5-6 -- Rebuilt for Python 3.14.0rc3 bytecode - -* Fri Aug 15 2025 Python Maint - 6.5.5-5 -- Rebuilt for Python 3.14.0rc2 bytecode - -* Thu Jul 24 2025 Fedora Release Engineering - 6.5.5-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Mon Jun 02 2025 Python Maint - 6.5.5-3 -- Rebuilt for Python 3.14 - -* Fri Jan 17 2025 Fedora Release Engineering - 6.5.5-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Wed Jan 01 2025 Mattias Ellert - 6.5.5-1 -- Update to version 6.5.5 -- Drop soname patch, use new configure option --enable-librelease instead -- Unbundle yaml-cpp, using new configure option --with-yaml-cpp -- EPEL 7 EOL specfile cleanup - -* Thu Jul 18 2024 Fedora Release Engineering - 6.5.4-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Fri Jun 07 2024 Python Maint - 6.5.4-7 -- Rebuilt for Python 3.13 - -* Mon Jun 03 2024 Mattias Ellert - 6.5.4-6 -- Eliminate use of obsolete patchN syntax - -* Thu Jan 25 2024 Fedora Release Engineering - 6.5.4-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sun Jan 21 2024 Fedora Release Engineering - 6.5.4-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Thu Jul 20 2023 Fedora Release Engineering - 6.5.4-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Tue Jun 13 2023 Python Maint - 6.5.4-2 -- Rebuilt for Python 3.12 - -* Mon Mar 13 2023 Mattias Ellert - 6.5.4-1 -- Update to version 6.5.4 - -* Thu Jan 19 2023 Fedora Release Engineering - 6.4.0-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Thu Jul 21 2022 Fedora Release Engineering - 6.4.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Mon Jun 13 2022 Python Maint - 6.4.0-3 -- Rebuilt for Python 3.11 - -* Thu Jan 20 2022 Fedora Release Engineering - 6.4.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Sun Dec 19 2021 Mattias Ellert - 6.4.0-1 -- Update to version 6.4.0 - -* Thu Jul 22 2021 Fedora Release Engineering - 6.3.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Fri Jun 04 2021 Python Maint - 6.3.0-3 -- Rebuilt for Python 3.10 - -* Tue Jan 26 2021 Fedora Release Engineering - 6.3.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Sun Aug 23 2020 Mattias Ellert - 6.3.0-1 -- Update to version 6.3.0 -- Drop patch lhapdf-cython-configure.patch (previously backported) - -* Tue Jul 28 2020 Fedora Release Engineering - 6.2.1-11 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Tue May 26 2020 Miro Hrončok - 6.2.1-10 -- Rebuilt for Python 3.9 - -* Wed Jan 29 2020 Fedora Release Engineering - 6.2.1-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Mon Aug 19 2019 Miro Hrončok - 6.2.1-8 -- Rebuilt for Python 3.8 - -* Thu Jul 25 2019 Fedora Release Engineering - 6.2.1-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Thu Mar 07 2019 Troy Dawson - 6.2.1-6 -- Rebuilt to change main python from 3.4 to 3.6 - -* Fri Feb 01 2019 Fedora Release Engineering - 6.2.1-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Sat Nov 10 2018 Mattias Ellert - 6.2.1-5 -- Drop Python 2 bindings for Fedora 29+ -- Make Cython checking script usable with Python3 (backport) -- Add Python 3.6 package for EPEL 7 - -* Tue Jul 31 2018 Florian Weimer - 6.2.1-4 -- Rebuild with fixed binutils - -* Sun Jul 29 2018 Mattias Ellert - 6.2.1-3 -- Move lhapdf script to python3 package for Fedora 29+ - -* Fri Jul 13 2018 Fedora Release Engineering - 6.2.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Wed Jul 04 2018 Mattias Ellert - 6.2.1-1 -- Update to version 6.2.1 -- Change license tag from GPLv2+ to GPLv3+ -- Add Python 3 bindings -- Drop packages not provided by LHAPDF6: octave-lhapdf, lhapdf-pdfsets-minimal - -* Wed Feb 07 2018 Mattias Ellert - 5.9.1-23 -- Compile with -std=legacy when using gfortran >= 8 - -* Thu Aug 10 2017 Mattias Ellert - 5.9.1-22 -- Rename python package -- EPEL 5 End-Of-Life specfile clean-up - - Remove Group and BuildRoot tags - - Don't clear the buildroot in the install section - - Remove the clean section - - Remove octave packaging macro definitions - -* Thu Aug 03 2017 Fedora Release Engineering - 5.9.1-21 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Wed Jul 26 2017 Fedora Release Engineering - 5.9.1-20 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Mon May 15 2017 Fedora Release Engineering - 5.9.1-19 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild - -* Wed Feb 08 2017 Kalev Lember - 5.9.1-18 -- Rebuilt for libgfortran soname bump - -* Wed Dec 07 2016 Orion Poplawski - 5.9.1-17 -- Rebuild for octave 4.2 - -* Tue Jul 19 2016 Fedora Release Engineering - 5.9.1-16 -- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages - -* Wed Feb 17 2016 Mattias Ellert - 5.9.1-15 -- Disable octave support for EPEL 6 ppc64 - octave no longer available - * Mon Feb 08 2016 Mattias Ellert - 5.9.1-14 - Disable tests on arm * Thu Feb 04 2016 Fedora Release Engineering - 5.9.1-13 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild -* Mon Jul 06 2015 Orion Poplawski - 5.9.1-12 +* Mon Jul 6 2015 Orion Poplawski - 5.9.1-12 - Rebuild for octave 4.0 * Wed Jun 17 2015 Fedora Release Engineering - 5.9.1-11 diff --git a/sources b/sources index 70e3f3b..e589fa6 100644 --- a/sources +++ b/sources @@ -1,4 +1,7 @@ -SHA512 (LHAPDF-6.5.6.tar.gz) = 03cf1c848b127d76ab6f13b852743827c00ae9312721dcd1fd17a9d9d88fa50e5f004fcf2fa1b23d15a0b2c30515d5f2a5e2bee85e67be5c675864bdc364ca78 -SHA512 (CT10nlo.tar.gz) = 64c1ae32380a8e8ae647bdd79a63bdb252540777f802bebf003d20ec3e7532370601619a85f6fd872f7d0e39e1a1f66ea96fcd4b9179e1f23e27d533906af493 -SHA512 (MSTW2008nlo68cl.tar.gz) = 4bf44b96363c91cb85f298d139b356ed4111c842476f02b44efac18710e4ca168691d0cbb5222839b0d219ccb264e387fc8ac93a689f5d0981fed9478f45749b -SHA512 (NNPDF31_lo_as_0130.tar.gz) = 7f2ef921e8ddd938438978383778c5e7538105c78defe34abfe6212a480da9ccdfedbec30174f0aed18576a3c3fc03866bc22b329667b41f2896dfb3814d9d1a +5260c1979355243f6584c16a5f19bfd1 lhapdf-5.9.1.tar.gz +b592db3245a875f1a2ab5b0be0e06b5b cteq5l.LHgrid +330dc600f0ee7f9b5fa8051eef732930 cteq6ll.LHpdf +f85b82894b43df936fa395465ba155c4 cteq61.LHgrid +49276a39307a609d446722302915b09a CT10.LHgrid +4b93c4101fa8f162ae744da3b3fce031 GRV98nlo.LHgrid +a5121e3ab1912a4a72e85889ba5e9234 MRST2001nlo.LHgrid diff --git a/testunc.py b/testunc.py deleted file mode 100755 index 4d6b1d2..0000000 --- a/testunc.py +++ /dev/null @@ -1,45 +0,0 @@ -#! /usr/bin/env python3 - -import lhapdf -print("Version:", lhapdf.version()) -print() - -#pdfset = lhapdf.getPDFSet("CT10nlo") -pdfset = lhapdf.getPDFSet("NNPDF31_lo_as_0130") -print(pdfset) -print("m_t =", pdfset.get_entry("MTop", 123.4)) -print() - -pdfs = pdfset.mkPDFs() -print() - -xfs_g = [pdfs[k].xfxQ(21, 1e-4, 100.) for k in range(pdfset.size)] -print("Gluon PDFs at x = 0.001, Q = 100 GeV:", xfs_g) -print() - -for alt_ci_method in [True,False]: - print(f"Using alt (asymm) CI calculation = {alt_ci_method}") - u = pdfset.uncertainty(xfs_g, 95., alt_ci_method) - print(u) - print(u.central) - print(" + ", u.errplus) - print(" - ", u.errminus) - print(" +-", u.errsymm) - print() - -#import numpy as np -#for cl in np.linspace(0.0, 1.0, 20): -xfmin, xfmax = min(xfs_g), max(xfs_g) -print("Range =", xfmax - xfmin) -for i in range(11): - cl = i/10 - print(f"CL = {cl:0.2f} -> CI = {pdfset.uncertainty(xfs_g, 100*cl, True).errsymm:0.2f}") -print(f" ... last interval should equal half-range = {(xfmax - xfmin)/2:0.2f}") -print() - -e = pdfset.errorInfo -print(e) -print() - -# pdf = lhapdf.mkPDF("CT10/0") -# print(pdf)