Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add LoopTools #28292

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions recipes/looptools/examples/example01.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#include <stdio.h>
#include "clooptools.h"

#define MH2 (126.*126.)
#define MZ2 (91.188*91.188)
#define MW2 (80.4*80.4)
#define Alfa (1./137.0359895)
#define pi 3.14159265358979

#define SW2 (1. - MW2/MZ2)

static ComplexType SigmaH(double k2) {
return Alfa/(32*pi*SW2*MW2)*
( 3*MH2*A0(MH2) + 9*MH2*MH2*B0(k2, MH2, MH2)
+ 2*(MH2*MH2 - 4*MW2*(k2 - 3*MW2))*B0(k2, MW2, MW2)
+ 2*(6*MW2 + MH2)*A0(MW2) - 24*MW2*MW2
+ (MH2*MH2 - 4*MZ2*(k2 - 3*MZ2))*B0(k2, MZ2, MZ2)
+ (6*MZ2 + MH2)*A0(MZ2) - 12*MZ2*MZ2 );
}

int main() {
RealType s;
ltini();
for( s = 100; s <= 1000; s += 50 ) {
ComplexType sig = SigmaH(s);
printf("%g\t%g%+gi\n", s, Re(sig), Im(sig));
}
ltexi();
}
83 changes: 83 additions & 0 deletions recipes/looptools/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
{% set name = "looptools" %}
{% set version = "2.16" %}

package:
name: {{ name }}
version: {{ version }}

source:
url: https://feynarts.de/looptools/LoopTools-{{ version }}.tar.gz
sha256: 4113467575db3a14405d62d9e516b3b90410b73ea8d20c8eb8d70a30fc5cc9cb

build:
number: 0

outputs:
- name: {{ name }}-static

build:
skip: true # [win]
run_exports:
- {{ pin_subpackage('looptools-static', max_pin='x.x') }}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If it is static, it should need a run_exports.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@xhochy Hm, I thought from https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#export-runtime-requirements that I was setting run_exports here. Is there more clear documentation on how this works?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, or should the run_exports be at the top level instead?

diff --git a/recipes/looptools/meta.yaml b/recipes/looptools/meta.yaml
index d9c5496de2..cd8b8240aa 100644
--- a/recipes/looptools/meta.yaml
+++ b/recipes/looptools/meta.yaml
@@ -11,14 +11,14 @@ source:
 
 build:
   number: 0
+  run_exports:
+    - {{ pin_subpackage('looptools-static', max_pin='x.x') }}
 
 outputs:
   - name: {{ name }}-static
 
     build:
       skip: true  # [win]
-      run_exports:
-        - {{ pin_subpackage('looptools-static', max_pin='x.x') }}
       ignore_run_exports_from:
         - {{ compiler('cxx') }}
       script:

ignore_run_exports_from:
- {{ compiler('cxx') }}
script:
# FIXME: Avoid error from trying to create directories that exist
- sed -i 's/mkdir /mkdir -p /g' makefile.in
- ./configure --help
# FIXME: Author has disabled builds with dynamic linking
# c.f. https://github.com/hep-packaging-coordination/packaging-hep-simulation-stack/issues/4#issuecomment-2489198926
# - ./configure --prefix=$PREFIX --dynamic
- ./configure --prefix=$PREFIX
- make
- make install
# conda just uses $PREFIX/lib
- mv $PREFIX/lib64/libooptools.a $PREFIX/lib/libooptools.a # [linux]
- rm -rf build

requirements:
build:
- {{ stdlib('c') }}
- {{ compiler('cxx') }}
- {{ compiler('fortran') }}
- make
- sed
- gawk

test:
files:
- examples/
requires:
- {{ compiler('cxx') }}
- gfortran
commands:
- test ! -f $PREFIX/lib64/libooptools.a # [linux]
- test -f $PREFIX/lib/libooptools.a
- test -f $PREFIX/include/looptools.h
- test -f $PREFIX/include/clooptools.h
- test -f $PREFIX/bin/lt
- test -f $PREFIX/bin/fcc
- test -f $PREFIX/bin/f++

- fcc --help
- f++ --help

- cd examples
- $CXX example01.cpp -o example01 $CXXFLAGS $LDFLAGS -looptools -lgfortran
- ./example01

about:
home: https://feynarts.de/looptools/
summary: 'LoopTools: A package for evaluation of scalar and tensor one-loop integrals'
description: |
LoopTools is a package for evaluation of scalar and tensor one-loop integrals
based on the FF package by G.J. van Oldenborgh. It features an easy Fortran,
C++, and Mathematica interface to the scalar one-loop functions of FF and
in addition provides the 2-, 3-, and 4-point tensor coefficient functions.
license: GPL-3.0-only
license_family: GPL
license_file: COPYING

extra:
recipe-maintainers:
- matthewfeickert