Bug#990290: petsc: add support for 64-bit integer lapack/blas
Giacomo Mulas
giacomo.mulas at inaf.it
Thu Jun 24 18:05:23 BST 2021
Source: petsc
Version: 3.14.5+dfsg1-4
Severity: wishlist
Tags: patch
Dear Maintainer,
I am the developer of a quantum chemistry code that deals with very large
matrices. As such, it uses at the same time slepc/petsc, scalapack, and
elpa libraries. Since matrices may easily become larger than the maximum
size that can be indexed by standard scalapack (and underlying blas/lapack),
I need to use the versions with long integer indices (i.e. lapack64,
blas64, mkl scalapack with ilp64 interface), as well as a custom compiled
version of elpa, also with support for the same versions of lapack/blas
(i.e. compiled with the --64bit-integer-math-support configure option). Of
course, I cannot link the same code with two different versions of
lapack/blas, so I also need to compile petsc so that it uses the same
versions of lapack/blas. Luckily, recent versions of the upstream package
do support this, with the --with-64-bit-indices and
--with-64-bit-blas-indices configure options.
Now, since the current debian/rules already has all the machinery to produce
the "petsc64" versions of all packages, using only the --with-64-bit-indices
option, I thought I might hack it to also produce additional real packages
also with the --with-64-bit-blas-indices option, producing additional
packages that can coexist smootly with the other ones.
The quick (and partial) hack that I put together successfully did the trick,
producing real interface petsc libraries that passed all the tests and
appear to work without problems. I am sending you all the modified/added
files, in case you may want to add official support for this in debian, in
some future. The hacked version also enables cuda in my custom compiled
packages (not the 64bit blas ones), which would be a welcome addition as
well (for me).
Let me know if this is of any use, and/or if I may help producing a more
complete and cleaner version of this.
Best regards, and thanks for all the great work.
Giacomo Mulas
-- System Information:
Debian Release: 11.0
APT prefers unstable
APT policy: (401, 'unstable'), (10, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 5.10.0-7-amd64 (SMP w/12 CPU threads)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=it_IT.UTF-8, LC_CTYPE=it_IT.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
debian/rules:
#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
#export DH_VERBOSE = 1
# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/*
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk
DEB_SOURCE_PACKAGE := $(strip $(shell egrep '^Source: ' debian/control | cut -f 2 -d ':'))
DEB_VERSION := $(shell dpkg-parsechangelog -S Version)
DEB_NOEPOCH_VERSION := $(shell echo $(DEB_VERSION) | cut -d: -f2-)
DEB_UPSTREAM_VERSION := $(shell echo $(DEB_NOEPOCH_VERSION) | sed 's/-[^-]*$$//')
DEB_STRIPPED_UPSTREAM_VERSION = $(shell echo $(DEB_UPSTREAM_VERSION) | sed -e 's/[\.\+]dfsg.*$$//' )
# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all
# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append FLAGS
export DEB_CFLAGS_MAINT_APPEND = -fPIC
export DEB_CXXFLAGS_MAINT_APPEND = -fPIC
export DEB_FFLAGS_MAINT_APPEND = -fPIC -ffree-line-length-0
export DEB_FCFLAGS_MAINT_APPEND = $(DEB_FFLAGS_MAINT_APPEND)
export DEB_LDFLAGS_MAINT_APPEND = -fPIC
# keep the build dir (in the -fdebug-prefix-map flag) out of the installed config files,
# by applying the flag only at build time not configure time
export CFLAGS_NO_DEBUG_PREFIX_MAP := $(shell echo $(CFLAGS) | sed "s/ -fdebug-prefix-map=[^ ]* / /" )
export CFLAGS_DEBUG_PREFIX_MAP := $(shell echo $(CFLAGS) | sed -n "s/^.*\(-fdebug-prefix-map=[^ ]*\) .*$$/\1/p" )
export CXXFLAGS_NO_DEBUG_PREFIX_MAP := $(shell echo $(CXXFLAGS) | sed "s/ -fdebug-prefix-map=[^ ]* / /" )
export CXXFLAGS_DEBUG_PREFIX_MAP := $(shell echo $(CXXFLAGS) | sed -n "s/^.*\(-fdebug-prefix-map=[^ ]*\) .*$$/\1/p" )
export FCFLAGS_NO_DEBUG_PREFIX_MAP := $(shell echo $(FCFLAGS) | sed "s/ -fdebug-prefix-map=[^ ]* / /" )
export FCFLAGS_DEBUG_PREFIX_MAP := $(shell echo $(FCFLAGS) | sed -n "s/^.*\(-fdebug-prefix-map=[^ ]*\) .*$$/\1/p" )
export FFLAGS_NO_DEBUG_PREFIX_MAP := $(shell echo $(FFLAGS) | sed "s/ -fdebug-prefix-map=[^ ]* / /" )
export FFLAGS_DEBUG_PREFIX_MAP := $(shell echo $(FFLAGS) | sed -n "s/^.*\(-fdebug-prefix-map=[^ ]*\) .*$$/\1/p" )
# Overriding this with "contrib" attempts to link with parmetis (unimplemented).
DEBIAN_DIST=main
export DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
# On Alpha, override this with debian/rules PETSC_ARCH=linux_alpha_dec binary
# to build PETSc libs with the Compaq compilers, though that requires at least:
# libots, cpml-ev(5|6), cxml-ev(5|6), cfal and ccc.
# Note that only arch-dependent .debs are generated when you do this.
PETSC_ARCH=$(DEB_HOST_MULTIARCH)
CPU_COUNT := $(shell /usr/bin/nproc )
export DEB_BUILD_OPTIONS ?= parallel=$(CPU_COUNT)
# This defines the MPI implementation to use. The easiest way to override this
# default is to specify while building, e.g. debian/rules PETSC_MPI=lam binary.
# Again, only arch-dependent .debs are generated when you do this.
# Note that as of PETSc 2.3.0 this only specifies the name of the PETSc
# packages, the implementation is chosen by BuildSystem according to what's
# available at build time.
include /usr/share/mpi-default-dev/debian_defaults
PETSC_MPI=$(ARCH_DEFAULT_MPI_IMPL)
# PETSc has a tight dependency on the MPI minor version:
# the Major.Minor version of the current MPI must match the one that
# PETSc was built against, see /usr/lib/petscdir/*/x86_64-linux-gnu-real/include/petscsys.h
# Define the required version here:
MPI_DEPENDS=$(shell debian/extract_MPI_dependency)
# facilitate build-time testing (invoking OpenMPI) when building in a chroot (pbuilder or sbuild)
export OMPI_MCA_plm_rsh_agent=/bin/false
export OMPI_MCA_btl_base_warn_component_unused=0
HDF5_INCLUDE_DIR=$(shell for i in `pkg-config hdf5-mpi --cflags-only-I`; do echo $$i | grep "include/hdf5"; done | sed "s/-I//")
HDF5_LIBS=$(shell pkg-config hdf5-mpi --libs)
PETSC_HDF5_FLAGS=--with-hdf5-include=$(HDF5_INCLUDE_DIR) --with-hdf5-lib="$(HDF5_LIBS)"
PETSC_REAL_BUILD_DIR=$(PETSC_ARCH)-real
PETSC_REAL_DEBUG_BUILD_DIR=$(PETSC_ARCH)-real-debug
PETSC_COMPLEX_BUILD_DIR=$(PETSC_ARCH)-complex
PETSC_COMPLEX_DEBUG_BUILD_DIR=$(PETSC_ARCH)-complex-debug
PETSC64_REAL_BUILD_DIR=$(PETSC_ARCH)-real-64
PETSC64_REAL_DEBUG_BUILD_DIR=$(PETSC_ARCH)-real-debug-64
PETSC64_COMPLEX_BUILD_DIR=$(PETSC_ARCH)-complex-64
PETSC64_COMPLEX_DEBUG_BUILD_DIR=$(PETSC_ARCH)-complex-debug-64
PETSC64B_REAL_BUILD_DIR=$(PETSC_ARCH)-real-64b
# PETSC_VERSION is used for the package names, library sonames, and
# /usr/lib/petscdir subdirectory names.
export PETSC_VERSION=$(DEB_STRIPPED_UPSTREAM_VERSION)$(PETSC_EXT)
# use only major.minor as general soname (rather than major.minor.patch.build)
export PETSC_SONAME_VERSION=$(shell echo $(PETSC_VERSION) | awk 'BEGIN { FS="."}; {print $$1"."$$2 }')
# PETSC_NAME is the install dir under /usr/lib and the base for package names
PETSC_NAME=petsc$(PETSC_SONAME_VERSION)
PETSC_REAL_SONAME=petsc-real$(PETSC_SONAME_VERSION)
PETSC_COMPLEX_SONAME=petsc-complex$(PETSC_SONAME_VERSION)
PETSC64_NAME=petsc64-$(PETSC_SONAME_VERSION)
PETSC64_REAL_SONAME=petsc64-real$(PETSC_SONAME_VERSION)
PETSC64_COMPLEX_SONAME=petsc64-complex$(PETSC_SONAME_VERSION)
PETSC64B_NAME=petsc64b-$(PETSC_SONAME_VERSION)
PETSC64B_REAL_SONAME=petsc64b-real$(PETSC_SONAME_VERSION)
# debian binary package names
PETSC_REAL_DEV_PACKAGE=lib$(PETSC_REAL_SONAME)-dev
PETSC_REAL_PACKAGE=lib$(PETSC_REAL_SONAME)
PETSC_REAL_DEBUG_PACKAGE=lib$(PETSC_REAL_SONAME)-dbg
PETSC_COMPLEX_DEV_PACKAGE=lib$(PETSC_COMPLEX_SONAME)-dev
PETSC_COMPLEX_PACKAGE=lib$(PETSC_COMPLEX_SONAME)
PETSC_COMPLEX_DEBUG_PACKAGE=lib$(PETSC_COMPLEX_SONAME)-dbg
PETSC64_REAL_DEV_PACKAGE=lib$(PETSC64_REAL_SONAME)-dev
PETSC64_REAL_PACKAGE=lib$(PETSC64_REAL_SONAME)
PETSC64_REAL_DEBUG_PACKAGE=lib$(PETSC64_REAL_SONAME)-dbg
PETSC64_COMPLEX_DEV_PACKAGE=lib$(PETSC64_COMPLEX_SONAME)-dev
PETSC64_COMPLEX_PACKAGE=lib$(PETSC64_COMPLEX_SONAME)
PETSC64_COMPLEX_DEBUG_PACKAGE=lib$(PETSC64_COMPLEX_SONAME)-dbg
PETSC64B_REAL_DEV_PACKAGE=libpetsc64i64b-real$(PETSC_SONAME_VERSION)-dev
PETSC64B_REAL_PACKAGE=libpetsc64i64b-real$(PETSC_SONAME_VERSION)
PETSC_DEV_COMMON_PACKAGE=lib$(PETSC_NAME)-dev-common
export PETSC_DOC_PACKAGE=petsc$(PETSC_SONAME_VERSION)-doc
export PETSC_DEV_EXAMPLE_PACKAGE=lib$(PETSC_NAME)-dev-examples
# install into /usr/lib/petscdir rather than /usr/lib/petsc
# to allow /usr/lib/petsc to be configured by alternatives
export PETSC_REAL_DIR_PREFIX=/usr/lib/petscdir/$(PETSC_NAME)/$(PETSC_ARCH)-real
export PETSC_REAL_DEBUG_DIR_PREFIX=/usr/lib/petscdir/$(PETSC_NAME)/$(PETSC_ARCH)-real-debug
export PETSC_COMPLEX_DIR_PREFIX=/usr/lib/petscdir/$(PETSC_NAME)/$(PETSC_ARCH)-complex
export PETSC_COMPLEX_DEBUG_DIR_PREFIX=/usr/lib/petscdir/$(PETSC_NAME)/$(PETSC_ARCH)-complex-debug
export PETSC64_REAL_DIR_PREFIX=/usr/lib/petscdir/$(PETSC64_NAME)/$(PETSC_ARCH)-real
export PETSC64_REAL_DEBUG_DIR_PREFIX=/usr/lib/petscdir/$(PETSC64_NAME)/$(PETSC_ARCH)-real-debug
export PETSC64_COMPLEX_DIR_PREFIX=/usr/lib/petscdir/$(PETSC64_NAME)/$(PETSC_ARCH)-complex
export PETSC64_COMPLEX_DEBUG_DIR_PREFIX=/usr/lib/petscdir/$(PETSC64_NAME)/$(PETSC_ARCH)-complex-debug
export PETSC64B_REAL_DIR_PREFIX=/usr/lib/petscdir/$(PETSC64B_NAME)/$(PETSC_ARCH)-real
PACKAGE_REAL_INSTALL_DIR=debian/tmp/$(PETSC_NAME)-real
export PACKAGE_REAL_DEBUG_INSTALL_DIR=debian/tmp/$(PETSC_NAME)-real-debug
PACKAGE_COMPLEX_INSTALL_DIR=debian/tmp/$(PETSC_NAME)-complex
PACKAGE_COMPLEX_DEBUG_INSTALL_DIR=debian/tmp/$(PETSC_NAME)-complex-debug
PACKAGE_64_REAL_INSTALL_DIR=debian/tmp/$(PETSC64_NAME)-real
export PACKAGE_64_REAL_DEBUG_INSTALL_DIR=debian/tmp/$(PETSC64_NAME)-real-debug
PACKAGE_64_COMPLEX_INSTALL_DIR=debian/tmp/$(PETSC64_NAME)-complex
PACKAGE_64_COMPLEX_DEBUG_INSTALL_DIR=debian/tmp/$(PETSC64_NAME)-complex-debug
PACKAGE_64B_REAL_INSTALL_DIR=debian/tmp/$(PETSC64B_NAME)-real
CONFIGURATION_OPTIONS=--with-shared-libraries --with-pic=1 \
--with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90 \
--with-cxx-dialect=C++11 \
--with-opencl=1 \
--with-ptscotch=1 --with-ptscotch-include=/usr/include/scotch --with-ptscotch-lib="-lptesmumps -lptscotch -lptscotcherr" \
$(PETSC_HDF5_FLAGS) --CXX_LINKER_FLAGS="-Wl,--no-as-needed"
MKL_OPTIONS=--with-blas-lib="-lmkl_blas95_lp64 -lmkl_cdft_core -lmkl_gf_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm" --with-lapack-lib="-lmkl_blas95_lp64 -lmkl_lapack95_lp64 -lmkl_cdft_core -lmkl_gf_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm" --with-scalapack=1 --with-scalapack-lib="-lmkl_blas95_lp64 -lmkl_lapack95_lp64 -lmkl_scalapack_lp64 -lmkl_cdft_core -lmkl_blacs_openmpi_lp64 -lmkl_gf_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm"
MKL64B_OPTIONS=--with-blas-lib="-lmkl_blas95_ilp64 -lmkl_cdft_core -lmkl_gf_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm" --with-lapack-lib="-lmkl_blas95_ilp64 -lmkl_lapack95_ilp64 -lmkl_cdft_core -lmkl_gf_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm"
FFTW_OPTIONS=--with-fftw=1 --with-fftw-include=[] --with-fftw-lib="-lfftw3 -lfftw3_mpi"
FFTW64B_OPTIONS=
CUDA_OPTIONS=--with-cuda=1 --with-cuda-lib="-lcufft -lcublas -lcudart -lcusparse -lcusolver -lcuda" --with-cuda-include=/usr/include
CUDA64B_OPTIONS=
# hypre is only supported with real numbers, not complex
HYPRE_CONFIG=--with-hypre=1 --with-hypre-include=/usr/include/hypre \
--with-hypre-lib="-lHYPRE_core"
# --with-64-bit-indices option requires Hypre built with --enable-bigint or --enable-mixedint (not yet available)
HYPRE64_CONFIG=
HYPRE64B_CONFIG=
# standard MUMPS (32 bit)
MUMPS_CONFIG=--with-mumps=1 --with-mumps-include=[] --with-mumps-lib="-ldmumps -lzmumps -lsmumps -lcmumps -lmumps_common -lpord"
# 64-bit MUMPS
MUMPS64_CONFIG=--with-mumps=1 --with-mumps-include=[] --with-mumps-lib="-ldmumps_64 -lzmumps_64 -lsmumps_64 -lcmumps_64 -lmumps_common_64 -lpord_64"
MUMPS64B_CONFIG=
# Cannot use SuperLU with 64 bit integers, it is not coded for this capability
SUPERLU_CONFIG=--with-superlu=1 --with-superlu-include=/usr/include/superlu --with-superlu-lib=-lsuperlu
SUPERLU64B_CONFIG=--with-superlu=0
SUPERLUDIST_CONFIG=--with-superlu_dist=1 --with-superlu_dist-include=/usr/include/superlu-dist --with-superlu_dist-lib=-lsuperlu_dist
SUPERLUDIST64_CONFIG=--with-superlu_dist=1 --with-superlu_dist-include=/usr/include/superlu-dist --with-superlu_dist-lib=-lsuperlu_dist
PETSC64_CONFIG=--with-64-bit-indices
PETSC64B_CONFIG=--with-64-bit-indices --with-64-bit-blas-indices
SUITESPARSE_CONFIG=--with-suitesparse=1 --with-suitesparse-include=/usr/include/suitesparse --with-suitesparse-lib="-lumfpack -lamd -lcholmod -lklu"
# SuiteSparse does not support 64-bit indices on 32-bit architectures, so drop it in that case.
32BIT_ARCH_LIST := armel armhf i386 mipsel hppa hurd-i386 m68k powerpc sh4 x32
ifneq (,$(findstring $(space)$(DEB_HOST_ARCH)$(space), $(space)$(32BIT_ARCH_LIST)$(space)))
SUITESPARSE64_CONFIG=
else
SUITESPARSE64_CONFIG=$(SUITESPARSE_CONFIG)
endif
SUITESPARSE64B_CONFIG=
# main packaging script based on dh7 syntax
%:
dh $@ --with python3,fortran_mod,sphinxdoc
override_dh_auto_clean:
if [ -d $(PETSC_REAL_DEBUG_BUILD_DIR) -a -f $(PETSC_REAL_DEBUG_BUILD_DIR)/lib/petsc/conf/petscrules ]; then \
dh_auto_clean -p$(PETSC_REAL_DEBUG_PACKAGE) -p$(PETSC_DOC_PACKAGE) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_REAL_DEBUG_BUILD_DIR); \
fi
if [ -d $(PETSC_REAL_BUILD_DIR) -a -f $(PETSC_REAL_BUILD_DIR)/lib/petsc/conf/petscrules ]; then \
dh_auto_clean -p$(PETSC_REAL_DEV_PACKAGE) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_REAL_BUILD_DIR); \
fi
if [ -d $(PETSC_COMPLEX_BUILD_DIR) -a -f $(PETSC_COMPLEX_BUILD_DIR)/lib/petsc/conf/petscrules ]; then \
dh_auto_clean -p$(PETSC_COMPLEX_DEV_PACKAGE) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_COMPLEX_BUILD_DIR); \
fi
if [ -d $(PETSC_COMPLEX_DEBUG_BUILD_DIR) -a -f $(PETSC_COMPLEX_DEBUG_BUILD_DIR)/lib/petsc/conf/petscrules ]; then \
dh_auto_clean -p$(PETSC_COMPLEX_DEBUG_PACKAGE) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_COMPLEX_DEBUG_BUILD_DIR); \
fi
if [ -d $(PETSC_REAL_DEBUG_BUILD_DIR) -a -f $(PETSC_REAL_DEBUG_BUILD_DIR)/lib/petsc/conf/petscrules ]; then \
dh_auto_clean -p$(PETSC_REAL_DEBUG_PACKAGE) -p$(PETSC_DOC_PACKAGE) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_REAL_DEBUG_BUILD_DIR); \
fi
if [ -d $(PETSC64_REAL_BUILD_DIR) -a -f $(PETSC64_REAL_BUILD_DIR)/lib/petsc/conf/petscrules ]; then \
dh_auto_clean -p$(PETSC64_REAL_DEV_PACKAGE) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64_REAL_BUILD_DIR); \
fi
if [ -d $(PETSC64_COMPLEX_BUILD_DIR) -a -f $(PETSC64_COMPLEX_BUILD_DIR)/lib/petsc/conf/petscrules ]; then \
dh_auto_clean -p$(PETSC64_COMPLEX_DEV_PACKAGE) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64_COMPLEX_BUILD_DIR); \
fi
if [ -d $(PETSC64_COMPLEX_DEBUG_BUILD_DIR) -a -f $(PETSC64_COMPLEX_DEBUG_BUILD_DIR)/lib/petsc/conf/petscrules ]; then \
dh_auto_clean -p$(PETSC64_COMPLEX_DEBUG_PACKAGE) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64_COMPLEX_DEBUG_BUILD_DIR); \
fi
if [ -d $(PETSC64B_REAL_BUILD_DIR) -a -f $(PETSC64B_REAL_BUILD_DIR)/lib/petsc/conf/petscrules ]; then \
dh_auto_clean -p$(PETSC64B_REAL_DEV_PACKAGE) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64B_REAL_BUILD_DIR); \
fi
override_dh_clean: override_dh_auto_clean
dh_clean
rm -f *.log *.log.bkp configtest.mod
rm -f src/vec/vec/tests/x.h5
rm -f lib/petsc/conf/petscvariables
rm -f reconfigure-*.py
find config -name *.pyc | xargs rm -f
rm -f CMakeLists.txt
rm -rf $(PETSC_REAL_BUILD_DIR) $(PETSC_REAL_DEBUG_BUILD_DIR) $(PETSC_COMPLEX_BUILD_DIR) $(PETSC_COMPLEX_DEBUG_BUILD_DIR) \
$(PETSC64_REAL_BUILD_DIR) $(PETSC64_REAL_DEBUG_BUILD_DIR) $(PETSC64_COMPLEX_BUILD_DIR) $(PETSC64_COMPLEX_DEBUG_BUILD_DIR) \
$(PETSC64B_REAL_BUILD_DIR)
override_dh_auto_configure:
@echo ===================== $(PETSC_REAL_DEBUG_PACKAGE) =====================
if dh_auto_configure -p$(PETSC_REAL_DEBUG_PACKAGE) -p$(PETSC_DOC_PACKAGE) -- \
--with-debugging=1 \
--shared-library-extension=_real \
$(CONFIGURATION_OPTIONS) \
$(HYPRE_CONFIG) \
$(MUMPS_CONFIG) \
$(SUITESPARSE_CONFIG) \
$(SUPERLU_CONFIG) \
$(SUPERLUDIST_CONFIG) \
$(MKL_OPTIONS) \
$(FFTW_OPTIONS) \
$(CUDA_OPTIONS) \
--prefix=$(PETSC_REAL_DEBUG_DIR_PREFIX) \
--PETSC_ARCH=$(PETSC_REAL_DEBUG_BUILD_DIR) \
CFLAGS="$(CFLAGS_NO_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_NO_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_NO_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_NO_DEBUG_PREFIX_MAP)" \
CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" MAKEFLAGS="$(MAKEFLAGS)"; then \
: ; \
else \
cat configure.log; \
false; \
fi
@echo ===================== $(PETSC_REAL_DEV_PACKAGE) =====================
if dh_auto_configure -p$(PETSC_REAL_DEV_PACKAGE) -- \
--with-debugging=0 \
--shared-library-extension=_real \
$(CONFIGURATION_OPTIONS) \
$(HYPRE_CONFIG) \
$(MUMPS_CONFIG) \
$(SUITESPARSE_CONFIG) \
$(SUPERLU_CONFIG) \
$(SUPERLUDIST_CONFIG) \
$(MKL_OPTIONS) \
$(FFTW_OPTIONS) \
$(CUDA_OPTIONS) \
--prefix=$(PETSC_REAL_DIR_PREFIX) \
--PETSC_ARCH=$(PETSC_REAL_BUILD_DIR) \
CFLAGS="$(CFLAGS_NO_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_NO_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_NO_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_NO_DEBUG_PREFIX_MAP)" \
CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" MAKEFLAGS="$(MAKEFLAGS)"; then \
: ; \
else \
cat configure.log; \
false; \
fi
@echo ===================== $(PETSC_COMPLEX_DEV_PACKAGE) =====================
if dh_auto_configure -p$(PETSC_COMPLEX_DEV_PACKAGE) -- \
--with-debugging=0 \
--with-scalar-type=complex --shared-library-extension=_complex \
$(CONFIGURATION_OPTIONS) \
$(MUMPS_CONFIG) \
$(SUITESPARSE_CONFIG) \
$(SUPERLU_CONFIG) \
$(SUPERLUDIST_CONFIG) \
$(MKL_OPTIONS) \
$(FFTW_OPTIONS) \
$(CUDA_OPTIONS) \
--prefix=$(PETSC_COMPLEX_DIR_PREFIX) \
--PETSC_ARCH=$(PETSC_COMPLEX_BUILD_DIR) \
CFLAGS="$(CFLAGS_NO_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_NO_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_NO_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_NO_DEBUG_PREFIX_MAP)" \
CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" MAKEFLAGS="$(MAKEFLAGS)"; then \
: ; \
else \
cat configure.log; \
false; \
fi
@echo ===================== $(PETSC_COMPLEX_DEBUG_PACKAGE) =====================
if dh_auto_configure -p$(PETSC_COMPLEX_DEBUG_PACKAGE) -- \
--with-debugging=1 \
--with-scalar-type=complex --shared-library-extension=_complex \
$(CONFIGURATION_OPTIONS) \
$(MUMPS_CONFIG) \
$(SUITESPARSE_CONFIG) \
$(SUPERLU_CONFIG) \
$(SUPERLUDIST_CONFIG) \
$(MKL_OPTIONS) \
$(FFTW_OPTIONS) \
$(CUDA_OPTIONS) \
--prefix=$(PETSC_COMPLEX_DEBUG_DIR_PREFIX) \
--PETSC_ARCH=$(PETSC_COMPLEX_DEBUG_BUILD_DIR) \
CFLAGS="$(CFLAGS_NO_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_NO_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_NO_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_NO_DEBUG_PREFIX_MAP)" \
CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" MAKEFLAGS="$(MAKEFLAGS)"; then \
: ; \
else \
cat configure.log; \
false; \
fi
@echo ===================== $(PETSC64_REAL_DEBUG_PACKAGE) =====================
if dh_auto_configure -p$(PETSC64_REAL_DEBUG_PACKAGE) -- \
$(PETSC64_CONFIG) \
--with-debugging=1 \
--shared-library-extension=64_real \
$(CONFIGURATION_OPTIONS) \
$(HYPRE64_CONFIG) \
$(MUMPS64_CONFIG) \
$(SUITESPARSE64_CONFIG) \
$(SUPERLUDIST_CONFIG) \
$(MKL_OPTIONS) \
$(FFTW_OPTIONS) \
$(CUDA_OPTIONS) \
--prefix=$(PETSC64_REAL_DEBUG_DIR_PREFIX) \
--PETSC_ARCH=$(PETSC64_REAL_DEBUG_BUILD_DIR) \
CFLAGS="$(CFLAGS_NO_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_NO_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_NO_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_NO_DEBUG_PREFIX_MAP)" \
CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" MAKEFLAGS="$(MAKEFLAGS)"; then \
: ; \
else \
cat configure.log; \
false; \
fi
@echo ===================== $(PETSC64_REAL_DEV_PACKAGE) =====================
if dh_auto_configure -p$(PETSC64_REAL_DEV_PACKAGE) -- \
$(PETSC64_CONFIG) \
--with-debugging=0 \
--shared-library-extension=64_real \
$(CONFIGURATION_OPTIONS) \
$(HYPRE64_CONFIG) \
$(MUMPS64_CONFIG) \
$(SUITESPARSE64_CONFIG) \
$(SUPERLUDIST_CONFIG) \
$(MKL_OPTIONS) \
$(FFTW_OPTIONS) \
$(CUDA_OPTIONS) \
--prefix=$(PETSC64_REAL_DIR_PREFIX) \
--PETSC_ARCH=$(PETSC64_REAL_BUILD_DIR) \
CFLAGS="$(CFLAGS_NO_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_NO_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_NO_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_NO_DEBUG_PREFIX_MAP)" \
CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" MAKEFLAGS="$(MAKEFLAGS)"; then \
: ; \
else \
cat configure.log; \
false; \
fi
@echo ===================== $(PETSC64_COMPLEX_DEV_PACKAGE) =====================
if dh_auto_configure -p$(PETSC64_COMPLEX_DEV_PACKAGE) -- \
$(PETSC64_CONFIG) \
--with-debugging=0 \
--with-scalar-type=complex --shared-library-extension=64_complex \
$(CONFIGURATION_OPTIONS) \
$(MUMPS64_CONFIG) \
$(SUITESPARSE64_CONFIG) \
$(SUPERLUDIST_CONFIG) \
$(MKL_OPTIONS) \
$(FFTW_OPTIONS) \
$(CUDA_OPTIONS) \
--prefix=$(PETSC64_COMPLEX_DIR_PREFIX) \
--PETSC_ARCH=$(PETSC64_COMPLEX_BUILD_DIR) \
CFLAGS="$(CFLAGS_NO_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_NO_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_NO_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_NO_DEBUG_PREFIX_MAP)" \
CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" MAKEFLAGS="$(MAKEFLAGS)"; then \
: ; \
else \
cat configure.log; \
false; \
fi
@echo ===================== $(PETSC64_COMPLEX_DEBUG_PACKAGE) =====================
if dh_auto_configure -p$(PETSC64_COMPLEX_DEBUG_PACKAGE) -- \
$(PETSC64_CONFIG) \
--with-debugging=1 \
--with-scalar-type=complex --shared-library-extension=64_complex \
$(CONFIGURATION_OPTIONS) \
$(MUMPS64_CONFIG) \
$(SUITESPARSE64_CONFIG) \
$(SUPERLUDIST_CONFIG) \
$(MKL_OPTIONS) \
$(FFTW_OPTIONS) \
$(CUDA_OPTIONS) \
--prefix=$(PETSC64_COMPLEX_DEBUG_DIR_PREFIX) \
--PETSC_ARCH=$(PETSC64_COMPLEX_DEBUG_BUILD_DIR) \
CFLAGS="$(CFLAGS_NO_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_NO_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_NO_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_NO_DEBUG_PREFIX_MAP)" \
CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" MAKEFLAGS="$(MAKEFLAGS)"; then \
: ; \
else \
cat configure.log; \
false; \
fi
@echo ===================== $(PETSC64B_REAL_DEV_PACKAGE) =====================
@echo sticazzi9
if dh_auto_configure -p$(PETSC64B_REAL_DEV_PACKAGE) -- \
$(PETSC64B_CONFIG) \
--with-debugging=0 \
--shared-library-extension=64i64b_real \
$(CONFIGURATION_OPTIONS) \
$(SUPERLU64B_CONFIG) \
$(HYPRE64_CONFIG) \
$(MKL64B_OPTIONS) \
--prefix=$(PETSC64B_REAL_DIR_PREFIX) \
--PETSC_ARCH=$(PETSC64B_REAL_BUILD_DIR) \
CFLAGS="$(CFLAGS_NO_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_NO_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_NO_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_NO_DEBUG_PREFIX_MAP)" \
CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" MAKEFLAGS="$(MAKEFLAGS)"; then \
: ; \
else \
cat configure.log; \
false; \
fi
override_dh_auto_build:
dh_auto_build -p$(PETSC_REAL_DEBUG_PACKAGE) -p$(PETSC_DOC_PACKAGE) -p$(PETSC_DEV_EXAMPLE_PACKAGE) -- V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_REAL_DEBUG_BUILD_DIR) \
CFLAGS="$(CFLAGS_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_DEBUG_PREFIX_MAP)"
dh_auto_build -p$(PETSC_REAL_DEV_PACKAGE) -- V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_REAL_BUILD_DIR) \
CFLAGS="$(CFLAGS_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_DEBUG_PREFIX_MAP)"
dh_auto_build -p$(PETSC_COMPLEX_DEV_PACKAGE) -- V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_COMPLEX_BUILD_DIR) \
CFLAGS="$(CFLAGS_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_DEBUG_PREFIX_MAP)"
dh_auto_build -p$(PETSC_COMPLEX_DEBUG_PACKAGE) -- V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_COMPLEX_DEBUG_BUILD_DIR) \
CFLAGS="$(CFLAGS_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_DEBUG_PREFIX_MAP)"
dh_auto_build -p$(PETSC64_REAL_DEBUG_PACKAGE) -- V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64_REAL_DEBUG_BUILD_DIR) \
CFLAGS="$(CFLAGS_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_DEBUG_PREFIX_MAP)"
dh_auto_build -p$(PETSC64_REAL_DEV_PACKAGE) -- V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64_REAL_BUILD_DIR) \
CFLAGS="$(CFLAGS_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_DEBUG_PREFIX_MAP)"
dh_auto_build -p$(PETSC64_COMPLEX_DEV_PACKAGE) -- V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64_COMPLEX_BUILD_DIR) \
CFLAGS="$(CFLAGS_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_DEBUG_PREFIX_MAP)"
dh_auto_build -p$(PETSC64_COMPLEX_DEBUG_PACKAGE) -- V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64_COMPLEX_DEBUG_BUILD_DIR) \
CFLAGS="$(CFLAGS_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_DEBUG_PREFIX_MAP)"
dh_auto_build -p$(PETSC64B_REAL_DEV_PACKAGE) -- V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64B_REAL_BUILD_DIR) \
CFLAGS="$(CFLAGS_DEBUG_PREFIX_MAP)" CXXFLAGS="$(CXXFLAGS_DEBUG_PREFIX_MAP)" \
FCFLAGS="$(FCFLAGS_DEBUG_PREFIX_MAP)" FFLAGS="$(FFLAGS_DEBUG_PREFIX_MAP)"
# these arches started failing to complete tests in PETSc 3.9
# so skip their tests until a workaround or fix is known
ARCH_NO_TEST_LIST = armel armhf i386 mips64el hppa ia64 powerpc x32
empty :=
space := $(empty)$(empty)
# run tests, or not
RUNTEST=yes
ifneq (,$(findstring $(space)$(DEB_HOST_ARCH)$(space), $(space)$(ARCH_NO_TEST_LIST)$(space)))
RUNTEST=no
endif
ifeq (nocheck,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
RUNTEST=no
endif
override_dh_auto_test-indep:
echo "Tests are run with arch-any builds".
override_dh_auto_test-arch:
set -e; \
if [ "$(RUNTEST)" = "no" ]; then \
echo Tests have been disabled on $(DEB_HOST_ARCH); \
else make -j$(CPU_COUNT) check_build VERBOSE=1 V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_REAL_DEBUG_BUILD_DIR) \
LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(CURDIR)/$(PETSC_REAL_DEBUG_BUILD_DIR)/lib; \
make -j$(CPU_COUNT) check_build VERBOSE=1 V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_REAL_BUILD_DIR) \
LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(CURDIR)/$(PETSC_REAL_BUILD_DIR)/lib; \
make -j$(CPU_COUNT) check_build VERBOSE=1 V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_COMPLEX_BUILD_DIR) \
LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(CURDIR)/$(PETSC_COMPLEX_BUILD_DIR)/lib; \
make -j$(CPU_COUNT) check_build VERBOSE=1 V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_COMPLEX_DEBUG_BUILD_DIR) \
LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(CURDIR)/$(PETSC_COMPLEX_DEBUG_BUILD_DIR)/lib; \
make -j$(CPU_COUNT) check_build VERBOSE=1 V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64_REAL_DEBUG_BUILD_DIR) \
LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(CURDIR)/$(PETSC64_REAL_DEBUG_BUILD_DIR)/lib; \
make -j$(CPU_COUNT) check_build VERBOSE=1 V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64_REAL_BUILD_DIR) \
LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(CURDIR)/$(PETSC64_REAL_BUILD_DIR)/lib; \
make -j$(CPU_COUNT) check_build VERBOSE=1 V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64_COMPLEX_BUILD_DIR) \
LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(CURDIR)/$(PETSC64_COMPLEX_BUILD_DIR)/lib; \
make -j$(CPU_COUNT) check_build VERBOSE=1 V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64_COMPLEX_DEBUG_BUILD_DIR) \
LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(CURDIR)/$(PETSC64_COMPLEX_DEBUG_BUILD_DIR)/lib; \
make -j$(CPU_COUNT) check_build VERBOSE=1 V=1 \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64B_REAL_BUILD_DIR) \
LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(CURDIR)/$(PETSC64B_REAL_BUILD_DIR)/lib; \
fi
override_dh_auto_install:
dh_auto_install -p$(PETSC_REAL_DEBUG_PACKAGE) -p$(PETSC_DOC_PACKAGE) -p$(PETSC_DEV_EXAMPLE_PACKAGE) --destdir=$(PACKAGE_REAL_DEBUG_INSTALL_DIR) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_REAL_DEBUG_BUILD_DIR)
dh_auto_install -p$(PETSC_REAL_DEV_PACKAGE) --destdir=$(PACKAGE_REAL_INSTALL_DIR) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_REAL_BUILD_DIR)
dh_auto_install -p$(PETSC_COMPLEX_DEV_PACKAGE) --destdir=$(PACKAGE_COMPLEX_INSTALL_DIR) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_COMPLEX_BUILD_DIR)
dh_auto_install -p$(PETSC_COMPLEX_DEBUG_PACKAGE) --destdir=$(PACKAGE_COMPLEX_DEBUG_INSTALL_DIR) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC_COMPLEX_DEBUG_BUILD_DIR)
dh_auto_install -p$(PETSC64_REAL_DEBUG_PACKAGE) --destdir=$(PACKAGE_64_REAL_DEBUG_INSTALL_DIR) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64_REAL_DEBUG_BUILD_DIR)
dh_auto_install -p$(PETSC64_REAL_DEV_PACKAGE) --destdir=$(PACKAGE_64_REAL_INSTALL_DIR) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64_REAL_BUILD_DIR)
dh_auto_install -p$(PETSC64_COMPLEX_DEV_PACKAGE) --destdir=$(PACKAGE_64_COMPLEX_INSTALL_DIR) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64_COMPLEX_BUILD_DIR)
dh_auto_install -p$(PETSC64_COMPLEX_DEBUG_PACKAGE) --destdir=$(PACKAGE_64_COMPLEX_DEBUG_INSTALL_DIR) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64_COMPLEX_DEBUG_BUILD_DIR)
dh_auto_install -p$(PETSC64B_REAL_DEV_PACKAGE) --destdir=$(PACKAGE_64B_REAL_INSTALL_DIR) -- \
PETSC_DIR=$(CURDIR) PETSC_ARCH=$(PETSC64B_REAL_BUILD_DIR)
override_dh_install:
dh_install -p$(PETSC_REAL_PACKAGE) --sourcedir $(PACKAGE_REAL_INSTALL_DIR) $(PETSC_REAL_DIR_PREFIX)/lib/libpetsc_real.so.$(PETSC_VERSION) usr/lib/$(DEB_HOST_MULTIARCH)
dh_install -p$(PETSC_REAL_DEV_PACKAGE) --sourcedir $(PACKAGE_REAL_INSTALL_DIR) --autodest --exclude='include/*.mod' --exclude=*html --exclude=conf/uninstall.py --exclude=libpetsc_real.so.$(PETSC_VERSION) --exclude=share/ --exclude=include/petsc/ --exclude=lib/petsc/bin/ usr
dh_install -p$(PETSC_REAL_DEBUG_PACKAGE) --sourcedir $(PACKAGE_REAL_DEBUG_INSTALL_DIR) --autodest --exclude='include/*.mod' --exclude=*html --exclude=conf/uninstall.py --exclude=share/ --exclude=include/petsc/ --exclude=lib/petsc/bin/ usr
dh_install -p$(PETSC_COMPLEX_PACKAGE) --sourcedir $(PACKAGE_COMPLEX_INSTALL_DIR) $(PETSC_COMPLEX_DIR_PREFIX)/lib/libpetsc_complex.so.$(PETSC_VERSION) usr/lib/$(DEB_HOST_MULTIARCH)
dh_install -p$(PETSC_COMPLEX_DEV_PACKAGE) --sourcedir $(PACKAGE_COMPLEX_INSTALL_DIR) --autodest --exclude='include/*.mod' --exclude=*html --exclude=conf/uninstall.py --exclude=libpetsc_complex.so.$(PETSC_VERSION) --exclude=share/ --exclude=include/petsc/ --exclude=lib/petsc/bin/ usr
dh_install -p$(PETSC_COMPLEX_DEBUG_PACKAGE) --sourcedir $(PACKAGE_COMPLEX_DEBUG_INSTALL_DIR) --autodest --exclude='include/*.mod' --exclude=*html --exclude=conf/uninstall.py --exclude=share/ --exclude=include/petsc/ --exclude=lib/petsc/bin/ usr
dh_install -p$(PETSC64_REAL_PACKAGE) --sourcedir $(PACKAGE_64_REAL_INSTALL_DIR) $(PETSC64_REAL_DIR_PREFIX)/lib/libpetsc64_real.so.$(PETSC_VERSION) usr/lib/$(DEB_HOST_MULTIARCH)
dh_install -p$(PETSC64_REAL_DEV_PACKAGE) --sourcedir $(PACKAGE_64_REAL_INSTALL_DIR) --autodest --exclude='include/*.mod' --exclude=*html --exclude=conf/uninstall.py --exclude=libpetsc64_real.so.$(PETSC_VERSION) --exclude=share/ --exclude=include/petsc/ --exclude=lib/petsc/bin/ usr
dh_install -p$(PETSC64_REAL_DEBUG_PACKAGE) --sourcedir $(PACKAGE_64_REAL_DEBUG_INSTALL_DIR) --autodest --exclude='include/*.mod' --exclude=*html --exclude=conf/uninstall.py --exclude=share/ --exclude=include/petsc/ --exclude=lib/petsc/bin/ usr
dh_install -p$(PETSC64_COMPLEX_PACKAGE) --sourcedir $(PACKAGE_64_COMPLEX_INSTALL_DIR) $(PETSC64_COMPLEX_DIR_PREFIX)/lib/libpetsc64_complex.so.$(PETSC_VERSION) usr/lib/$(DEB_HOST_MULTIARCH)
dh_install -p$(PETSC64_COMPLEX_DEV_PACKAGE) --sourcedir $(PACKAGE_64_COMPLEX_INSTALL_DIR) --autodest --exclude='include/*.mod' --exclude=*html --exclude=conf/uninstall.py --exclude=libpetsc64_complex.so.$(PETSC_VERSION) --exclude=share/ --exclude=include/petsc/ --exclude=lib/petsc/bin/ usr
dh_install -p$(PETSC64_COMPLEX_DEBUG_PACKAGE) --sourcedir $(PACKAGE_64_COMPLEX_DEBUG_INSTALL_DIR) --autodest --exclude='include/*.mod' --exclude=*html --exclude=conf/uninstall.py --exclude=share/ --exclude=include/petsc/ --exclude=lib/petsc/bin/ usr
dh_install -p$(PETSC64B_REAL_PACKAGE) --sourcedir $(PACKAGE_64B_REAL_INSTALL_DIR) $(PETSC64B_REAL_DIR_PREFIX)/lib/libpetsc64i64b_real.so.$(PETSC_VERSION) usr/lib/$(DEB_HOST_MULTIARCH)
dh_install -p$(PETSC64B_REAL_DEV_PACKAGE) --sourcedir $(PACKAGE_64B_REAL_INSTALL_DIR) --autodest --exclude='include/*.mod' --exclude=*html --exclude=conf/uninstall.py --exclude=libpetsc64i64b_real.so.$(PETSC_VERSION) --exclude=share/ --exclude=include/petsc/ --exclude=lib/petsc/bin/ usr
dh_install -p$(PETSC_DEV_COMMON_PACKAGE) --sourcedir $(PACKAGE_REAL_DEBUG_INSTALL_DIR)/$(PETSC_REAL_DEBUG_DIR_PREFIX) --exclude=share/petsc/examples/ --exclude=share/petsc/datafiles/ share usr/share/petsc/$(PETSC_SONAME_VERSION)
dh_install -p$(PETSC_DEV_COMMON_PACKAGE) --sourcedir $(PACKAGE_REAL_DEBUG_INSTALL_DIR)/$(PETSC_REAL_DEBUG_DIR_PREFIX) --exclude=*html include/petsc usr/share/petsc/$(PETSC_SONAME_VERSION)/include
dh_install -p$(PETSC_DEV_COMMON_PACKAGE) --sourcedir $(PACKAGE_REAL_DEBUG_INSTALL_DIR)/$(PETSC_REAL_DEBUG_DIR_PREFIX) lib/petsc/bin usr/share/petsc/$(PETSC_SONAME_VERSION)/lib/petsc
dh_install -p$(PETSC_DEV_EXAMPLE_PACKAGE)
# use local MathJax.js
if [ -d debian/$(PETSC_DEV_EXAMPLE_PACKAGE)/usr/share/petsc/$(PETSC_SONAME_VERSION) ]; then \
find debian/$(PETSC_DEV_EXAMPLE_PACKAGE)/usr/share/petsc/$(PETSC_SONAME_VERSION) -name "*html" | \
xargs sed -i "s|https://cdn.mathjax.org/mathjax/latest/MathJax.js|file:///usr/share/javascript/mathjax/MathJax.js|" ; \
fi
override_dh_installdocs-indep:
dh_installdocs -i
rm -rf ./debian/$(PETSC_DOC_PACKAGE)/usr/share/doc/$(PETSC_DOC_PACKAGE)/docs/sphinx_docs
# dh_install can't install .html while preserving directory structure
# so first install all include files to docs...
dh_install -p$(PETSC_DOC_PACKAGE) --sourcedir $(PACKAGE_REAL_DEBUG_INSTALL_DIR) $(PETSC_REAL_DEBUG_DIR_PREFIX)/include usr/share/doc/$(PETSC_DOC_PACKAGE)
# test if header docs were installed (in a binary-only build they won't be)
if [ -d ./debian/$(PETSC_DOC_PACKAGE)/usr/share/doc/$(PETSC_DOC_PACKAGE)/include ]; then \
# then remove non-html files \
find ./debian/$(PETSC_DOC_PACKAGE)/usr/share/doc/$(PETSC_DOC_PACKAGE)/include/ -type f -not -name "*.html" -delete ; \
# make header docs "generic" (pointing to headers in preferred alternative /usr/include/petsc) \
for hdoc in `find ./debian/$(PETSC_DOC_PACKAGE)/usr/share/doc/$(PETSC_DOC_PACKAGE)/include/ -name "*.html"`; do \
h=`echo $${hdoc} | xargs basename | sed "s/.html//"`; \
hdir=`echo $${hdoc} | xargs dirname | sed "s|^.*/include||"`; \
sed "s|href=\"$${h}\"|href=\"/usr/include/petsc$${hdir}/$${h}\"|" -i $${hdoc}; \
done \
fi
override_dh_sphinxdoc-indep:
# various js scripts provided with upstream source were built with a different sphinx version not recognized by dh_sphinxdoc
dh_sphinxdoc -i -Xjquery -Xsearchtools -Xunderscore -Xdoctools
for j in jquery searchtools underscore doctools; do \
rm -rf debian/$(PETSC_DOC_PACKAGE)/usr/share/doc/$(PETSC_DOC_PACKAGE)/html/_static/$${j}.js ; \
ln -s /usr/share/sphinx/themes/basic/static/$${j}.js debian/$(PETSC_DOC_PACKAGE)/usr/share/doc/$(PETSC_DOC_PACKAGE)/html/_static/$${j}.js ; \
done
rm -rf debian/$(PETSC_DOC_PACKAGE)/usr/share/doc/$(PETSC_DOC_PACKAGE)/html/_static/jquery-?.?.?.js
rm -rf debian/$(PETSC_DOC_PACKAGE)/usr/share/doc/$(PETSC_DOC_PACKAGE)/html/_static/underscore-?.?.?.js
# change external references to local js scripts (avoid privacy breaches)
for j in contrib/auto-render.min.js katex.min.js katex.min.css; do \
grep -ls "https://cdn.jsdelivr.net/npm/.*/dist/$$j" debian/$(PETSC_DOC_PACKAGE)/usr/share/doc/$(PETSC_DOC_PACKAGE)/* -R \
| xargs sed -i "s|https://cdn.jsdelivr.net/npm/.*/dist/$$j|/usr/share/doc/$(PETSC_DOC_PACKAGE)/html/js/`basename $$j`|g"; \
done
if [ -d debian/$(PETSC_DEV_COMMON_PACKAGE)/usr/share/petsc/$(PETSC_SONAME_VERSION)/share/petsc/saws ]; then \
find debian/$(PETSC_DEV_COMMON_PACKAGE)/usr/share/petsc/$(PETSC_SONAME_VERSION)/share/petsc/saws -name "*html" | \
xargs sed -i "s|https://www.mcs.anl.gov/research/projects/saws/js/jquery-.*[^custom].js|file://usr/share/sphinx/themes/basic/static/jquery.js|; \
s|https://www.mcs.anl.gov/research/projects/saws/js/jquery-ui.*.js|file://usr/share/javascript/jquery-ui/jquery-ui.js|; \
s|http://cdn.mathjax.org/mathjax/latest/MathJax.js|file:///usr/share/javascript/mathjax/MathJax.js|" ; \
fi
# dh_installchangelogs can't handle a directory of changelog files, so skip them here
override_dh_installchangelogs:
dh_installchangelogs --exclude=docs/changes
override_dh_fixperms-indep:
dh_fixperms
chmod a-x debian/$(PETSC_DEV_EXAMPLE_PACKAGE)/usr/share/petsc/$(PETSC_SONAME_VERSION)/share/petsc/datafiles/matrices/*
chmod a-x debian/$(PETSC_DEV_EXAMPLE_PACKAGE)/usr/share/petsc/$(PETSC_SONAME_VERSION)/share/petsc/examples/config/example_template.py
chmod a+x debian/$(PETSC_DEV_EXAMPLE_PACKAGE)/usr/share/petsc/$(PETSC_SONAME_VERSION)/share/petsc/examples/src/ts/tutorials/hybrid/run.sh
# python auxiliary modules and support files need not be executable
# let PetscBinaryIO_tests.py remain executable, but add hashbang
chmod a-x debian/$(PETSC_DEV_COMMON_PACKAGE)/usr/share/petsc/$(PETSC_SONAME_VERSION)/lib/petsc/bin/petsc_conf.py
chmod a-x debian/$(PETSC_DEV_COMMON_PACKAGE)/usr/share/petsc/$(PETSC_SONAME_VERSION)/lib/petsc/bin/PetscBinaryIO.py
sed '1 s|^|#!/usr/bin/python3\n|' -i debian/$(PETSC_DEV_COMMON_PACKAGE)/usr/share/petsc/$(PETSC_SONAME_VERSION)/lib/petsc/bin/PetscBinaryIO_tests.py
# matlab scripts should not be executable
for matlabdir in `find debian/*/usr -name matlab | grep "petsc/matlab" `; do \
find $$matlabdir -name *.m | xargs chmod a-x; \
chmod a-x $$matlabdir/laplacianlicense.txt; \
done
override_dh_python3-indep:
for p in configureTAS.py extract.py; do chmod a+x debian/$(PETSC_DEV_COMMON_PACKAGE)/usr/share/petsc/$(PETSC_SONAME_VERSION)/lib/petsc/bin/$$p; done
dh_python3 -i --shebang=/usr/bin/python3
dh_python3 --shebang=/usr/bin/python3 -p$(PETSC_DEV_COMMON_PACKAGE) /usr/share/petsc/$(PETSC_SONAME_VERSION)/lib/petsc/bin
dh_python3 --shebang=/usr/bin/python3 -p$(PETSC_DEV_EXAMPLE_PACKAGE) /usr/share/petsc/$(PETSC_SONAME_VERSION)/share/petsc/examples
dh_python3 --shebang=/usr/bin/python3 -p$(PETSC_DEV_EXAMPLE_PACKAGE) /usr/share/petsc/$(PETSC_SONAME_VERSION)/share/petsc/datafiles
override_dh_python3-arch:
dh_python3 -a --shebang=/usr/bin/python3
override_dh_installdeb:
dh_installdeb
for pkg in $$(dh_listpackages -a); do \
sed -i -e 's/__PETSC_SONAME_VERSION__/$(PETSC_SONAME_VERSION)/; s/__PETSC_VERSION__/$(PETSC_VERSION)/; s/__DEB_HOST_MULTIARCH__/$(DEB_HOST_MULTIARCH)/' debian/$$pkg/DEBIAN/*; \
done
override_dh_gencontrol:
dh_gencontrol -- -VMPI:Depends="$(MPI_DEPENDS)"
override_dh_strip:
dh_strip --dbg-package=$(PETSC_REAL_DEBUG_PACKAGE)
dh_strip --dbg-package=$(PETSC_COMPLEX_DEBUG_PACKAGE)
dh_strip --dbg-package=$(PETSC64_REAL_DEBUG_PACKAGE)
dh_strip --dbg-package=$(PETSC64_COMPLEX_DEBUG_PACKAGE)
# a sample binary build is made to build docs, but those binaries are not installed in an arch-indep build
override_dh_missing-indep:
dh_missing --list-missing
USCAN_DESTDIR := $(CURDIR)
get-orig-source:
uscan --no-conf --download-current-version --repack --compression xz
debian/control:
Source: petsc
Section: devel
Priority: optional
Maintainer: Debian Science Maintainers <debian-science-maintainers at lists.alioth.debian.org>
Uploaders: "Adam C. Powell, IV" <hazelsct at debian.org>, Drew Parsons <dparsons at debian.org>
Standards-Version: 4.5.1
Build-Depends: debhelper-compat (= 13), python3, gfortran,
pkg-config, dh-python,
dh-fortran-mod,
gdb,
mpi-default-dev (>= 1.0.2),
ocl-icd-opencl-dev | opencl-dev,
libblas-dev | libopenblas-dev | libatlas-base-dev | libblas.so,
liblapack-dev | libopenblas-dev | libatlas-base-dev | liblapack.so,
libsuitesparse-dev (>= 1:5.6.0),
libhypre-dev (>= 2.15.1), libptscotch-dev,
libhdf5-mpi-dev (>= 1.10.6+repack-1),
libscalapack-mpi-dev,
libmumps-dev, libmumps64-dev,
libfftw3-dev, libfftw3-mpi-dev, libssl-dev,
libsuperlu-dev (>= 5.2.1), libsuperlu-dist-dev (>= 6.1.1),
sphinx-common | python3-sphinx | dh-sequence-sphinxdoc
Build-Depends-Indep: libjs-mathjax,
libjs-jquery, libjs-jquery-ui
Vcs-Git: https://salsa.debian.org/science-team/petsc.git
Vcs-Browser: https://salsa.debian.org/science-team/petsc
Homepage: http://www.mcs.anl.gov/petsc
Package: petsc-dev
Architecture: all
Multi-Arch: foreign
Section: libdevel
Depends: libpetsc-real-dev, ${misc:Depends}
Description: Virtual package depending on latest PETSc development package
PETSc is the "Portable Extensible Toolkit for Scientific Computation", a suite
of data structures and routines for the scalable (parallel) solution of
scientific applications modeled by partial differential equations. It employs
the MPI standard for all message-passing communication. Several sample
scientific applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This metapackage installs libpetsc-real-dev, which will always depend
on the most recent version of PETSc with real number support. So if
you install it then you will get upgrades automatically.
Package: libpetsc-real-dev
Architecture: all
Multi-Arch: foreign
Section: libdevel
Depends: libpetsc-real3.14-dev, ${misc:Depends}
Description: Virtual package depending on latest PETSc development package
PETSc is the "Portable Extensible Toolkit for Scientific Computation", a suite
of data structures and routines for the scalable (parallel) solution of
scientific applications modeled by partial differential equations. It employs
the MPI standard for all message-passing communication. Several sample
scientific applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This is a dummy package which depends on the most recent version of
libpetsc-realX-dev with real number support (X=version).
Package: libpetsc-complex-dev
Architecture: all
Multi-Arch: foreign
Section: libdevel
Depends: libpetsc-complex3.14-dev, ${misc:Depends}
Description: Virtual package depending on latest PETSc development package
PETSc is the "Portable Extensible Toolkit for Scientific Computation", a suite
of data structures and routines for the scalable (parallel) solution of
scientific applications modeled by partial differential equations. It employs
the MPI standard for all message-passing communication. Several sample
scientific applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This is a dummy package which depends on the most recent version of
libpetsc-complexX-dev with complex number support (X=version).
Package: libpetsc-real3.14-dev
Multi-Arch: same
Architecture: any
Section: libdevel
Depends: libpetsc-real3.14 (= ${binary:Version}),
libpetsc3.14-dev-common (= ${source:Version}),
${MPI:Depends},
libsuitesparse-dev,
libhypre-dev (>= 2.15.1), libptscotch-dev, libscalapack-mpi-dev,
libmumps-dev, libfftw3-dev, libfftw3-mpi-dev, libssl-dev,
ocl-icd-opencl-dev | opencl-dev,
gfortran,
libhdf5-mpi-dev (>= 1.8.8), libsuperlu-dev (>= 5.2), libsuperlu-dist-dev,
${misc:Depends}, python3, ${python3:Depends}
Conflicts: libpetsc3.6.3-dev (<< 3.6.3.dfsg2-2), libpetsc-complex-3.6.3-dev (<< 3.6.3.dfsg2-2),
libpetsc3.6.2-dev (<= 3.6.2.dfsg1-3), libpetsc-complex-3.6.2-dev (<= 3.6.2.dfsg1-3)
Recommends: libpetsc3.14-dev-examples, ksh | mksh | pdksh | zsh
Suggests: petsc-dev, libpetsc-real3.14-dbg (= ${binary:Version}), petsc3.14-doc, libluminate-dev
Description: Static libraries, shared links, header files for PETSc
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package provides the development files for building applications
using PETSc 3.14 with real numbers.
Package: libpetsc-real3.14
Architecture: any
Multi-Arch: same
Section: libs
Provides: libpetsc3.14
Pre-Depends: ${misc:Pre-Depends}
Depends: ${shlibs:Depends}, ${misc:Depends}
Conflicts: libpetsc3.6 (<< 3.6.2.dfsg1-4)
Breaks: libpetsc-real3.10, libslepc-real3.10, libpetsc3.10-dev-common, libpetsc3.10-dev-examples
Replaces: libpetsc3.6 (<< 3.6.2.dfsg1-4)
Description: Shared libraries for version 3.14 of PETSc
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package contains the PETSc 3.14 shared library for real numbers.
.
It provides soname libpetsc-real3.14
Package: libpetsc3.14-dev-common
Architecture: all
Multi-Arch: foreign
Section: libdevel
Depends: libjs-jquery, libjs-jquery-ui,
libjs-mathjax,
${misc:Depends}, ${python3:Depends},
${sphinxdoc:Depends}
Recommends: libpetsc-real3.14-dev | libpetsc-complex3.14-dev
Description: Common header and support dev files for PETSc
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package provides header and other support files common to the
various dev packages (with real or complex number support) for PETSc 3.14.
Package: libpetsc3.14-dev-examples
Architecture: all
Multi-Arch: foreign
Section: libdevel
Depends: ${misc:Depends}, ${python3:Depends},
libjs-mathjax
Recommends: ksh | mksh | pdksh | zsh,
libpetsc-real3.14-dev | libpetsc-complex3.14-dev | libpetsc-real3.14-dbg | libpetsc-complex3.14-dbg
Suggests: petsc3.14-doc
Description: Static libraries, shared links, header files for PETSc
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package provides example, test, and tutorial scripts for PETSc 3.14.
Package: libpetsc-real3.14-dbg
Architecture: any
Multi-Arch: same
Section: debug
Pre-Depends: ${misc:Pre-Depends}
Depends: libpetsc-real3.14-dev (= ${binary:Version}),
libpetsc3.14-dev-common (= ${source:Version}),
${misc:Depends}, ${shlibs:Depends},
python3, ${python3:Depends}
Recommends: libpetsc3.14-dev-examples, ksh | mksh | pdksh | zsh
Provides: petsc3.14-dbg
Description: Debugging libraries for PETSc
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package provides the development files and debugging libraries for
debugging applications using PETSc 3.14 with real numbers.
.
Libraries include unstripped symbols, but this package is also built with
internal PETSc debugging activated.
Package: petsc3.14-doc
Architecture: all
Multi-Arch: foreign
Section: doc
Depends: sphinx-common, ${misc:Depends}, ${sphinxdoc:Depends}
Suggests: libpetsc-real3.14-dev (= ${binary:Version}), illuminator-doc
Description: Documentation and examples for PETSc
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package contains documentation for developing with PETSc 3.14.
Package: libpetsc-complex3.14-dev
Architecture: any
Multi-Arch: same
Section: libdevel
Depends: libpetsc-complex3.14 (= ${binary:Version}),
libpetsc3.14-dev-common (= ${source:Version}),
${MPI:Depends},
libsuitesparse-dev,
libptscotch-dev, libscalapack-mpi-dev,
libmumps-dev, libfftw3-dev, libfftw3-mpi-dev, libssl-dev,
ocl-icd-opencl-dev | opencl-dev,
gfortran,
libhdf5-mpi-dev (>= 1.8.8), libsuperlu-dev (>= 5.2), libsuperlu-dist-dev,
${misc:Depends}, python3, ${python3:Depends}
Conflicts: libpetsc-complex-3.6.3-dev (<< 3.6.3.dfsg2-2), libpetsc3.6.3-dev (<< 3.6.3.dfsg2-2),
libpetsc3.6.2-dev (<= 3.6.2.dfsg1-3), libpetsc-complex-3.6.2-dev (<= 3.6.2.dfsg1-3)
Recommends: libpetsc3.14-dev-examples, ksh | mksh | pdksh | zsh
Suggests: petsc-dev, libpetsc-complex3.14-dbg (= ${binary:Version}), petsc3.14-doc, libluminate-dev
Description: Static libraries, shared links, header files for PETSc
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package provides the development files for building applications
using PETSc 3.14 with support for complex numbers.
.
Note HYPRE is not supported with PETSc complex.
Package: libpetsc-complex3.14
Architecture: any
Multi-Arch: same
Section: libs
Pre-Depends: ${misc:Pre-Depends}
Depends: ${shlibs:Depends}, ${misc:Depends}
Conflicts: libpetsc-complex-3.6 (<< 3.6.2.dfsg1-4)
Breaks: libpetsc-complex3.10, libslepc-complex3.10, libpetsc3.10-dev-common, libpetsc3.10-dev-examples
Replaces: libpetsc-complex-3.6 (<< 3.6.2.dfsg1-4)
Description: Shared libraries for version 3.14 of PETSc with Complex Numbers
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package contains the PETSc 3.14 shared library, supporting
complex numbers.
.
It provides soname libpetsc-complex3.14
Package: libpetsc-complex3.14-dbg
Architecture: any
Multi-Arch: same
Section: debug
Pre-Depends: ${misc:Pre-Depends}
Depends: libpetsc-complex3.14-dev (= ${binary:Version}),
libpetsc3.14-dev-common (= ${source:Version}),
${misc:Depends}, ${shlibs:Depends},
python3, ${python3:Depends}
Recommends: libpetsc3.14-dev-examples, ksh | mksh | pdksh | zsh
Provides: petsc-complex3.14-dbg
Description: Debugging libraries for PETSc
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package provides the development files and debugging libraries for
debugging applications using PETSc 3.14 with complex number support.
.
Libraries include unstripped symbols, but this package is also built with
internal PETSc debugging activated.
Package: petsc64-dev
Architecture: all
Multi-Arch: foreign
Section: libdevel
Depends: libpetsc64-real-dev, ${misc:Depends}
Description: Virtual package depending on latest 64-bit PETSc development package
PETSc is the "Portable Extensible Toolkit for Scientific Computation", a suite
of data structures and routines for the scalable (parallel) solution of
scientific applications modeled by partial differential equations. It employs
the MPI standard for all message-passing communication. Several sample
scientific applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This metapackage installs libpetsc64-real-dev, which will always
depend on the most recent version of PETSc with real number support
and 64-bit indexing. So if you install it then you will get upgrades
automatically.
Package: libpetsc64-real-dev
Architecture: all
Multi-Arch: foreign
Section: libdevel
Depends: libpetsc64-real3.14-dev, ${misc:Depends}
Description: Virtual package depending on latest 64-bit PETSc development package
PETSc is the "Portable Extensible Toolkit for Scientific Computation", a suite
of data structures and routines for the scalable (parallel) solution of
scientific applications modeled by partial differential equations. It employs
the MPI standard for all message-passing communication. Several sample
scientific applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This is a dummy package which depends on the most recent version of
libpetsc64-realX-dev with real number support and 64-bit indexing
(X=version).
Package: libpetsc64-complex-dev
Architecture: all
Multi-Arch: foreign
Section: libdevel
Depends: libpetsc64-complex3.14-dev, ${misc:Depends}
Description: Latest 64-bit PETSc development package with complex numbers
PETSc is the "Portable Extensible Toolkit for Scientific Computation", a suite
of data structures and routines for the scalable (parallel) solution of
scientific applications modeled by partial differential equations. It employs
the MPI standard for all message-passing communication. Several sample
scientific applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This is a dummy package which depends on the most recent version of
libpetsc64-complexX-dev with complex number support and 64-bit
indexing (X=version).
Package: libpetsc64-real3.14-dev
Multi-Arch: same
Architecture: any
Section: libdevel
Depends: libpetsc64-real3.14 (= ${binary:Version}),
libpetsc3.14-dev-common (= ${source:Version}),
${MPI:Depends},
libsuitesparse-dev,
libhypre-dev (>= 2.15.1), libptscotch-dev, libscalapack-mpi-dev,
libmumps64-dev, libfftw3-dev, libfftw3-mpi-dev, libssl-dev,
ocl-icd-opencl-dev | opencl-dev,
gfortran,
libhdf5-mpi-dev (>= 1.8.8), libsuperlu-dev (>= 5.2), libsuperlu-dist-dev,
${misc:Depends}, python3, ${python3:Depends}
Recommends: libpetsc3.14-dev-examples, ksh | mksh | pdksh | zsh
Suggests: petsc64-dev, libpetsc64-real3.14-dbg (= ${binary:Version}), petsc3.14-doc, libluminate-dev
Description: Static libraries, shared links, header files for 64-bit PETSc
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package provides the development files for building applications
using PETSc 3.14 with real numbers and 64-bit indexing.
Package: libpetsc64-real3.14
Architecture: any
Multi-Arch: same
Section: libs
Provides: libpetsc64-3.14
Pre-Depends: ${misc:Pre-Depends}
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Shared libraries for version 3.14 of 64-bit PETSc
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package contains the PETSc 3.14 shared library for real numbers
and 64-bit indexing.
.
It provides soname libpetsc-real3.14
Package: libpetsc64i64b-real3.14-dev
Multi-Arch: same
Architecture: any
Section: libdevel
Depends: libpetsc64i64b-real3.14 (= ${binary:Version}),
libpetsc3.14-dev-common (= ${source:Version}),
${MPI:Depends},
libptscotch-dev, libscalapack-mpi-dev,
libssl-dev,
ocl-icd-opencl-dev | opencl-dev,
gfortran,
libhdf5-mpi-dev (>= 1.8.8),
${misc:Depends}, python3, ${python3:Depends}
Recommends: libpetsc3.14-dev-examples, ksh | mksh | pdksh | zsh
Suggests: petsc64-dev, petsc3.14-doc, libluminate-dev
Description: Static libraries, shared links, header files for 64-bit PETSc
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package provides the development files for building applications
using PETSc 3.14 with real numbers, 64-bit indexing, and 64-bit LAPACK/BLAS.
Package: libpetsc64i64b-real3.14
Architecture: any
Multi-Arch: same
Section: libs
Provides: libpetsc64i64b-3.14
Pre-Depends: ${misc:Pre-Depends}
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Shared libraries for version 3.14 of 64-bit PETSc
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package contains the PETSc 3.14 shared library for real numbers,
64-bit indexing, and 64-bit LAPACK/BLAS..
.
It provides soname libpetsc-real3.14
Package: libpetsc64-real3.14-dbg
Architecture: any
Multi-Arch: same
Section: debug
Pre-Depends: ${misc:Pre-Depends}
Depends: libpetsc-real3.14-dev (= ${binary:Version}),
libpetsc3.14-dev-common (= ${source:Version}),
${misc:Depends}, ${shlibs:Depends},
python3, ${python3:Depends}
Recommends: libpetsc3.14-dev-examples, ksh | mksh | pdksh | zsh
Provides: petsc64-3.14-dbg
Description: Debugging libraries for PETSc
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package provides the development files and debugging libraries for
debugging applications using PETSc 3.14 with real numbers and 64-bit indexing.
.
Libraries include unstripped symbols, but this package is also built with
internal PETSc debugging activated.
Package: libpetsc64-complex3.14-dev
Architecture: any
Multi-Arch: same
Section: libdevel
Depends: libpetsc64-complex3.14 (= ${binary:Version}),
libpetsc3.14-dev-common (= ${source:Version}),
${MPI:Depends},
libsuitesparse-dev,
libptscotch-dev, libscalapack-mpi-dev,
libmumps64-dev, libfftw3-dev, libfftw3-mpi-dev, libssl-dev,
ocl-icd-opencl-dev | opencl-dev,
gfortran,
libhdf5-mpi-dev (>= 1.8.8), libsuperlu-dev (>= 5.2), libsuperlu-dist-dev,
${misc:Depends}, python3, ${python3:Depends}
Recommends: libpetsc3.14-dev-examples, ksh | mksh | pdksh | zsh
Suggests: petsc64-dev, libpetsc64-complex3.14-dbg (= ${binary:Version}), petsc3.14-doc, libluminate-dev
Description: Development files for 64-bit PETSc with complex numbers
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package provides the development files for building applications
using PETSc 3.14 with support for complex numbers and 64-bit
indexing.
.
Note HYPRE is not supported with PETSc complex.
Package: libpetsc64-complex3.14
Architecture: any
Multi-Arch: same
Section: libs
Pre-Depends: ${misc:Pre-Depends}
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Shared libraries for version 3.14 of 64-bit PETSc with Complex Numbers
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package contains the PETSc 3.14 shared library, supporting
complex numbers and 64-bit indexing.
.
It provides soname libpetsc64-complex3.14
Package: libpetsc64-complex3.14-dbg
Architecture: any
Multi-Arch: same
Section: debug
Pre-Depends: ${misc:Pre-Depends}
Depends: libpetsc64-complex3.14-dev (= ${binary:Version}),
libpetsc3.14-dev-common (= ${source:Version}),
${misc:Depends}, ${shlibs:Depends},
python3, ${python3:Depends}
Recommends: libpetsc3.14-dev-examples, ksh | mksh | pdksh | zsh
Provides: petsc64-complex3.14-dbg
Description: Debugging libraries for 64-bit PETSc with Complex Numbers
PETSc is the "Portable Extensible Toolkit for Scientific
Computation", a suite of data structures and routines for the
scalable (parallel) solution of scientific applications modeled by
partial differential equations. It employs the MPI standard for all
message-passing communication. Several sample scientific
applications, as well as various papers and talks, demonstrate the
features of the PETSc libraries.
.
This package provides the development files and debugging libraries
for debugging applications using PETSc 3.14 with complex number
support and 64-bit indexing.
.
Libraries include unstripped symbols, but this package is also built
with internal PETSc debugging activated.
debian/libpetsc64i64b-real3.14-dev.dirs:
/usr/share/octave/site/m
debian/libpetsc64i64b-real3.14-dev.docs:
debian/README.Debian
debian/libpetsc64i64b-real3.14-dev.fortran-mod:
#! /bin/sh
for modpath in debian/tmp/petsc64b-${PETSC_SONAME_VERSION}-real/${PETSC64B_REAL_DIR_PREFIX}/include/*.mod; do
modfile=$(basename $modpath)
echo ${modpath} ${PETSC64B_REAL_DIR_PREFIX}/include
done
debian/libpetsc64i64b-real3.14-dev.links:
#! /bin/sh
echo usr/lib/${DEB_HOST_MULTIARCH}/libpetsc64i64b_real.so.${PETSC_VERSION} ${PETSC64B_REAL_DIR_PREFIX}/lib/libpetsc64i64b_real.so.${PETSC_VERSION}
for common in include/petsc lib/petsc/bin share; do
echo usr/share/petsc/${PETSC_SONAME_VERSION}/${common} ${PETSC64B_REAL_DIR_PREFIX}/${common}
done
echo ${PETSC64B_REAL_DIR_PREFIX}/lib/pkgconfig/petsc.pc ${PETSC64B_REAL_DIR_PREFIX}/lib/pkgconfig/petsc64.pc
echo ${PETSC64B_REAL_DIR_PREFIX}/lib/pkgconfig/PETSc.pc ${PETSC64B_REAL_DIR_PREFIX}/lib/pkgconfig/PETSc64.pc
debian/libpetsc64i64b-real3.14-dev.lintian-overrides:
# False positive: the copyright notice is somewhat buried in the upstream text
copyright-without-copyright-notice
# common arch-indep files are installed in usr/share/petsc
breakout-link usr/lib/petscdir/petsc* -> usr/share/petsc/*
# link actual libraries in PETSC_DIR to usr/lib/<arch>
breakout-link usr/lib/petscdir/petsc* -> usr/lib/*
debian/libpetsc64i64b-real3.14-dev.postinst:
#!/bin/sh -e
DEB_HOST_MULTIARCH=__DEB_HOST_MULTIARCH__
SONAME=__PETSC_SONAME_VERSION__
PETSC_VERSION=__PETSC_VERSION__
PETSC_ARCH=${DEB_HOST_MULTIARCH}
PETSC_REAL_ARCH=${PETSC_ARCH}-real
PETSC_VERSION_NUMBER=$( echo ${PETSC_VERSION} | sed "s/\.//g" )
PETSC_SONAME_VERSION=__PETSC_SONAME_VERSION__
PETSC64B_NAME=petsc64b-${PETSC_SONAME_VERSION}
PETSC64B_DIR_REAL=/usr/lib/petscdir/${PETSC64B_NAME}/${PETSC_REAL_ARCH}
# Make alternatives links
if [ "$1" = "configure" ]; then
# alternative default petsc (e.g. real or complex)
update-alternatives --install /usr/lib/petsc64b petsc64b ${PETSC64B_DIR_REAL} ${PETSC_VERSION_NUMBER}75 \
--slave /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc64i64b.so libpetsc64i64b.so /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc64i64b_real.so.${PETSC_VERSION} \
--slave /usr/include/petsc64b petsc64binclude ${PETSC64B_DIR_REAL}/include \
--slave /usr/share/octave/site/m/petsc64b petsc64b-octave ${PETSC64B_DIR_REAL}/share/petsc/matlab
# alternative base version of petsc real
update-alternatives --install /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc64i64b_real.so libpetsc64i64b_real.so /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc64i64b_real.so.${PETSC_VERSION} ${PETSC_VERSION_NUMBER}77 \
--slave /usr/lib/petscdir/petsc64b-real petsc64b-real ${PETSC64B_DIR_REAL}
# alternative petsc for this X.Y soname (e.g. real or complex)
update-alternatives --install /usr/lib/petscdir/64b-${SONAME} petsc64b-${SONAME} ${PETSC64B_DIR_REAL} ${PETSC_VERSION_NUMBER}77
fi
#DEBHELPER#
debian/libpetsc64i64b-real3.14-dev.prerm:
#!/bin/sh -e
DEB_HOST_MULTIARCH=__DEB_HOST_MULTIARCH__
SONAME=__PETSC_SONAME_VERSION__
PETSC_VERSION=__PETSC_VERSION__
PETSC_ARCH=${DEB_HOST_MULTIARCH}
PETSC_REAL_ARCH=${PETSC_ARCH}-real
PETSC_SONAME_VERSION=__PETSC_SONAME_VERSION__
PETSC64B_NAME=petsc64b-${PETSC_SONAME_VERSION}
PETSC64B_DIR_REAL=/usr/lib/petscdir/${PETSC64B_NAME}/${PETSC_REAL_ARCH}
# Remove alternatives links
if [ "$1" = "remove" ]; then
update-alternatives --remove petsc64b ${PETSC64B_DIR_REAL}
update-alternatives --remove libpetsc64i64b_real.so /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc64i64b_real.so.${PETSC_VERSION}
# remove general X.Y soname alternatives
update-alternatives --remove petsc64b-${SONAME} ${PETSC64B_DIR_REAL}
fi
#DEBHELPER#
debian/libpetsc64i64b-real3.14.links:
#! /bin/sh
echo usr/lib/${DEB_HOST_MULTIARCH}/libpetsc64i64b_real.so.${PETSC_VERSION} usr/lib/${DEB_HOST_MULTIARCH}/libpetsc64i64b_real.so.${PETSC_SONAME_VERSION}
debian/libpetsc64i64b-real3.14.lintian-overrides:
# libpetsc64.so.X.Y soname links are managed by alternatives (libpetc64.so.X.Y)
ldconfig-symlink-missing-for-shlib usr/lib/*/libpetsc64i64b.so.* usr/lib/*/libpetsc64i64b-real.so.* libpetsc64i64b.so.*
# libpetsc_real.so is handled by alternatives in libpetsc64-realX.Y-dev
dev-pkg-without-shlib-symlink usr/lib/*/libpetsc64i64b_real.so.* usr/lib/*/libpetsc64i64b_real.so
debian/libpetsc64i64b-real3.14.postinst:
#!/bin/sh -e
DEB_HOST_MULTIARCH=__DEB_HOST_MULTIARCH__
PETSC_VERSION=__PETSC_VERSION__
PETSC_VERSION_NUMBER=$( echo ${PETSC_VERSION} | sed "s/\.//g" )
SONAME=__PETSC_SONAME_VERSION__
# Make alternatives links
if [ "$1" = "configure" ]; then
# alternative petsc version (for given soname), real or complex
update-alternatives --install /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc64i64b.so.${SONAME} libpetsc64i64b.so.${SONAME} /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc64i64b_real.so.${PETSC_VERSION} ${PETSC_VERSION_NUMBER}77
fi
#DEBHELPER#
debian/libpetsc64i64b-real3.14.prerm:
#!/bin/sh -e
DEB_HOST_MULTIARCH=__DEB_HOST_MULTIARCH__
PETSC_VERSION=__PETSC_VERSION__
SONAME=__PETSC_SONAME_VERSION__
# Remove alternatives links
if [ "$1" = "remove" ]; then
update-alternatives --remove libpetsc64i64b.so.${SONAME} /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc64i64b_real.so.${PETSC_VERSION}
fi
#DEBHELPER#
More information about the debian-science-maintainers
mailing list