From: Francesco Ballarin Date: Sun, 3 Nov 2024 14:45:53 +0000 (+0000) Subject: Import mshr_2019.2.0~git20230811.ff54a68+dfsg1-4.debian.tar.xz X-Git-Tag: archive/raspbian/2019.2.0_git20230811.ff54a68+dfsg1-4+rpi1^2~4^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=8193e124a40f1610547cce72031056df58dd7e7a;p=mshr.git Import mshr_2019.2.0~git20230811.ff54a68+dfsg1-4.debian.tar.xz [dgit import tarball mshr 2019.2.0~git20230811.ff54a68+dfsg1-4 mshr_2019.2.0~git20230811.ff54a68+dfsg1-4.debian.tar.xz] --- 8193e124a40f1610547cce72031056df58dd7e7a diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..9cca603 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,12 @@ +include: + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml + +reprotest: + allow_failure: true + +blhc: + allow_failure: true + +piuparts: + allow_failure: true diff --git a/README.Debian b/README.Debian new file mode 100644 index 0000000..b78682b --- /dev/null +++ b/README.Debian @@ -0,0 +1,33 @@ +64-bit Mshr/Dolfin +------------- + +64-bit support is provided by python3-mshr64-real and libmshr64-dev. + +64-bit here refers to 64-bit indexing provided by a 64-bit build of +PETSc, allowing handling of larger systems (larger meshes) with more +than 2 billion degress of freedom. It is provided in Dolfin by the +python3-dolfin64-real and libdolfin64-dev packages (libdolfin64.so). + +This is activated by setting PETSC_DIR and SLEPC_DIR to appropriate paths, +e.g. + PETSC_DIR=/usr/lib/petsc64 + SLEPC_DIR=/usr/lib/slepc64 + +Depending on usage you may also need to specific the dolfin libname +extension ("64") to link to libdolfin64.so rather than libdolfin.so. +This is controlled via DOLFIN_LIB_NAME_EXT. Likewise, linking with +libmshr64.so is facilitated via MSHR_LIB_NAME_EXT. +For cmake (C++ applications), set the cmake variable + cmake -DMSHR_LIB_NAME_EXT=64 -DDOLFIN_LIB_NAME_EXT=64 +For python, set it as an environment variable + MSHR_LIB_NAME_EXT=64 DOLFIN_LIB_NAME_EXT=64 python3 + +Each of PETSC_DIR (SLEPC_DIR), MSHR_LIB_NAME_EXT and +DOLFIN_LIB_NAME_EXT need to be set to ensure the program links to +libpetsc64_*.so, libmshr64.so and libdolfin64.so, and not their 32-bit +counterparts. + +python3-mshr is now a base package providing a mshr.pth pointing by +default at the preferred PETSc installation provided by +python3-mshr-real (for PETSC_DIR=/usr/lib/petsc +SLEPC_DIR=/usr/lib/slepc). diff --git a/changelog b/changelog new file mode 100644 index 0000000..f054986 --- /dev/null +++ b/changelog @@ -0,0 +1,416 @@ +mshr (2019.2.0~git20230811.ff54a68+dfsg1-4) unstable; urgency=medium + + * Bump Standards-Version to 4.7.0 + * Force rebuild against OpenMPI 5. Closes: #1086299. + + -- Francesco Ballarin Sun, 03 Nov 2024 14:45:53 +0000 + +mshr (2019.2.0~git20230811.ff54a68+dfsg1-3) unstable; urgency=medium + + * Upload to unstable + + -- Francesco Ballarin Sun, 06 Oct 2024 13:52:13 +0000 + +mshr (2019.2.0~git20230811.ff54a68+dfsg1-2exp1) experimental; urgency=medium + + * Add Francesco Ballarin to uploaders + * Add patch CGAL_6_compatibility.diff for compatibility with CGAL 6: + - bump minum required CGAL version to 6 in cmake + - require C++17 standard in cmake + - replace boost::get and assignment to a local variable with CGAL::assign + Closes: #1074116 + * Build-Depends on libcgal-dev >= 6.0~ + + -- Francesco Ballarin Tue, 25 Jun 2024 12:40:24 +0000 + +mshr (2019.2.0~git20230811.ff54a68+dfsg1-1) unstable; urgency=medium + + [ Bas Couwenberg ] + * Drop unused libproj-dev (build) dependency. + + [ Drew Parsons ] + * New upstream snapshot. + - applies debian patches: + fix_mesh3_internal.patch + enable_CGAL5_CXX14.patch + build_CGAL5.patch + build_CGAL5.6.patch + + -- Drew Parsons Mon, 05 Feb 2024 20:10:04 +0100 + +mshr (2019.2.0~git20200924.c27eb18+dfsg1-10) unstable; urgency=medium + + * update debian patch build_CGAL5.6.patch for backwards compatibility + - apply named parameters one-by-one + - check CGAL version when calling has_Has_features + + -- Drew Parsons Thu, 10 Aug 2023 16:23:24 +0200 + +mshr (2019.2.0~git20200924.c27eb18+dfsg1-9) unstable; urgency=medium + + * make mshr.pth more robust with respect to PETSc installation. + Use default path if petscconf.h can't be found. Closes: #1000950. + * debian patch build_CGAL5.6.patch fixes build for CGAL 5.6. + Named parameters can only be set in CGAL functions. + Closes: #1043307 + * Standards-Version: 4.6.2 + + -- Drew Parsons Thu, 10 Aug 2023 03:47:17 +0200 + +mshr (2019.2.0~git20200924.c27eb18+dfsg1-8) unstable; urgency=medium + + [ Debian Janitor ] + * Remove constraints unnecessary since buster (oldstable): + + Build-Depends: Drop versioned constraint on cmake, libcgal-dev and + python3-pybind11. + + libmshr-dev-common: Drop versioned constraint on cmake in Depends. + + -- Drew Parsons Sat, 22 Jul 2023 15:18:42 +0200 + +mshr (2019.2.0~git20200924.c27eb18+dfsg1-7) unstable; urgency=medium + + * drop PETSC_ARCH from mshr.pth. It is only used for local build + dirs, not in full installation, and interferes with python + initialization when PETSc is in the middle of an ABI upgrade. + + -- Drew Parsons Fri, 12 Nov 2021 22:37:14 +0100 + +mshr (2019.2.0~git20200924.c27eb18+dfsg1-6) unstable; urgency=medium + + * Standards-Version: 4.6.0 + + -- Drew Parsons Sat, 23 Oct 2021 21:09:15 +0200 + +mshr (2019.2.0~git20200924.c27eb18+dfsg1-5) unstable; urgency=medium + + * include PETSC_ARCH in mshr.pth to prevent mshr from interfering + with new PETSc builds. mshr.pth checks + $PETSC_DIR/$PETSC_ARCH/include/petscconf.h + * fix parenthesis in python3-mshr description. Closes: #976011. + * Standards-Version: 4.5.1 + + -- Drew Parsons Wed, 13 Jan 2021 10:55:53 +1100 + +mshr (2019.2.0~git20200924.c27eb18+dfsg1-4) unstable; urgency=medium + + * fix quotes in i386 test condition. + + -- Drew Parsons Wed, 18 Nov 2020 03:46:38 +0800 + +mshr (2019.2.0~git20200924.c27eb18+dfsg1-3) unstable; urgency=medium + + * skip python unit test test-meshes on i386. + mshr.UnitSphereMesh() hangs on i386. Use mshr.Sphere() instead + (cf. deathstar demo). Closes: #974561. + + -- Drew Parsons Tue, 17 Nov 2020 17:37:30 +0800 + +mshr (2019.2.0~git20200924.c27eb18+dfsg1-2) unstable; urgency=medium + + * install python modules in /usr/lib/mshr or /usr/lib/mshr64, not + under PETSC_DIR. mshr does not use PETSc directly, but mshr.pth + uses $PETSC_DIR/include/petscconf.h to select standard or 64-bit + build. + + -- Drew Parsons Sun, 15 Nov 2020 13:37:22 +0800 + +mshr (2019.2.0~git20200924.c27eb18+dfsg1-1) unstable; urgency=medium + + * New upstream snapshot. + * mark libmshr-dev-common and libmshr64-dev as Multi-Arch: same + + -- Drew Parsons Mon, 05 Oct 2020 00:15:24 +0800 + +mshr (2019.2.0~git20200213.8895485+dfsg1-4) unstable; urgency=medium + + * build against latest dolfin in unstable. Closes: #969635. + * libmshr-dev-common Replaces, Breaks: libmshr-dev (<< ...-3). + Closes: #970141. + + -- Drew Parsons Sun, 13 Sep 2020 02:10:27 +0800 + +mshr (2019.2.0~git20200213.8895485+dfsg1-3) experimental; urgency=medium + + * build 64 bit packages (supporting 64-bit dolfin) + python3-mshr64, libmshr64-dev, libmshr64-2019.2 + - debian patch lib_rename.patch enables setting of soname to + mshr64 rather than mshr (setting LIB_NAME_EXT in cmake, + and MSHR_LIB_NAME_EXT in mshrConfig.cmake for client programs, + cmake -DMSHR_LIB_NAME_EXT=64 to invoke libmshr64) + Also uses DOLFIN_LIB_NAME_EXT=64 to link libdolfin64.so + - place common header files in libmshr-dev-common + - Build-Depends: libdolfin64-dev (>= 2019.2.0~git20200218.027d9cc-15) + (to ensure DOLFIN_LIB_NAME_EXT is available) + - activate 64-bit build with environment variables (see README.Debian) + PETSC_DIR=/usr/lib/petsc64 SLEPC_DIR=/usr/lib/slepc64 + MSHR_LIB_NAME_EXT=64 DOLFIN_LIB_NAME_EXT=64 + + -- Drew Parsons Sun, 30 Aug 2020 07:44:11 +0800 + +mshr (2019.2.0~git20200213.8895485+dfsg1-2) unstable; urgency=medium + + * python3-mshr Depends: python3-dolfin-real + (rather than common python3-dolfin) + * debhelper compatibility level 13 + + -- Drew Parsons Tue, 04 Aug 2020 01:21:17 +0800 + +mshr (2019.2.0~git20200213.8895485+dfsg1-1) unstable; urgency=medium + + * New upstream snapshot. + - applies debian patches: + build_CGAL_4.14.patch + build_python.patch + cmake_config_in_lib.patch + demos_update.patch + depython_main_build.patch + pybind11_register.patch + + -- Drew Parsons Tue, 21 Apr 2020 14:41:30 +0800 + +mshr (2019.2.0~git20190418.010d802+dfsg1-1) experimental; urgency=medium + + * new upstream snapshot (2019.2) + * Standards-Version: 4.5.0 + * add debian patches: + - enable_CGAL5_CXX14.patch enables build with CGAL 5 + and builds with C++14 since std::enable_if is required by CGAL 5 + - build_CGAL5.patch updates to CGAL 5 API + - pybind11_register.patch registers CSGCGALDomain3D::num_holes for + python module, enabling test-fuzzypointmap.py to pass + (update test_controls.patch) + + -- Drew Parsons Sat, 01 Feb 2020 16:44:38 +0800 + +mshr (2019.1.0+dfsg1-7) unstable; urgency=medium + + * Standards-Version: 4.5.0 + * add debian patches: + - enable_CGAL5_CXX14.patch enables build with CGAL 5 + and builds with C++14 since std::enable_if is required by CGAL 5 + - build_CGAL5.patch updates to CGAL 5 API + - pybind11_register.patch registers CSGCGALDomain3D::num_holes for + python module, enabling test-fuzzypointmap.py to pass + (update test_controls.patch) + + -- Drew Parsons Sat, 01 Feb 2020 17:14:19 +0800 + +mshr (2019.1.0+dfsg1-6) unstable; urgency=medium + + * stop building mips64el, mipsel with debug symbols. + They are too fragile, often failing to build from source. + + -- Drew Parsons Mon, 21 Oct 2019 18:46:59 +0800 + +mshr (2019.1.0+dfsg1-5) unstable; urgency=medium + + * Standards-Version: 4.4.1 + * relax pybind11 dependency. pybind11 follows semantic versioning, + so should be backwards compatible with minor and patch version + updates. + + -- Drew Parsons Sun, 20 Oct 2019 19:23:41 +0800 + +mshr (2019.1.0+dfsg1-4) unstable; urgency=medium + + * build with dh --no-parallel to reduce memory requirements + (to aid builds on mips,mipsel,ubuntu). Closes: #934244. + + -- Drew Parsons Sat, 10 Aug 2019 11:14:22 +0800 + +mshr (2019.1.0+dfsg1-3) unstable; urgency=medium + + * Standards-Version: 4.4.0 + * debian patch build_CGAL_4.14.patch enables build against CGAL 4.14 + * debian/control: remove ancient-python-version-field 3.5 + + -- Drew Parsons Mon, 05 Aug 2019 17:50:52 +0800 + +mshr (2019.1.0+dfsg1-2) experimental; urgency=medium + + * update debian/copyright + - Benjamin Kehlet's dates are 2012-2017 + - acknowledge Joachim B Haga and Lars Magnus Valnes + - list contributing authors under Files: * + - mark files licensed under LGPL-3+ + + -- Drew Parsons Tue, 21 May 2019 14:11:59 +0800 + +mshr (2019.1.0+dfsg1-1) experimental; urgency=medium + + * New upstream release (official). + + -- Drew Parsons Thu, 25 Apr 2019 23:33:14 +0800 + +mshr (2019.1.0+dfsg1~2018.1.0-1) experimental; urgency=medium + + * Dummy upstream release using 2018.1.0 code to build against + dolfin 2019.1. + * Standards-Version: 4.3.0 + * debhelper compatibility level 12 + - skip dh_dwz since debug symbols have been switched off + (since 2018.1.0+dfsg1-5) + * Include debug symbols if build will be successful, only omit -g for + arches blacklisted in ARCH_NO_DEBUG_SYMBOLS + + -- Drew Parsons Thu, 28 Mar 2019 18:25:51 +0800 + +mshr (2018.1.0+dfsg1-7) unstable; urgency=medium + + * Debian patch fix_mesh3_internal.patch updates namespace for + Mesh_3::internal::C3t3_initializer (CGAL 4.13). Closes: #911814. + + -- Drew Parsons Fri, 26 Oct 2018 11:45:58 +0800 + +mshr (2018.1.0+dfsg1-6) unstable; urgency=medium + + * apply strict versioned depends on pybind11, + python3-mshr Depends: pybind11 (>= 2.2.4), pybind11 (<= 2.2.5) + + -- Drew Parsons Tue, 25 Sep 2018 04:04:24 +0800 + +mshr (2018.1.0+dfsg1-5) unstable; urgency=medium + + * strip -g from dpkg-buildflags to reduce memory requirements of the + build (needed to build on Debian 32 bit and on ubuntu) + * Standards-Version: 4.2.1 + + -- Drew Parsons Tue, 04 Sep 2018 21:25:48 +0800 + +mshr (2018.1.0+dfsg1-4) unstable; urgency=medium + + * fix debian/tests: demos are now provided by python3-mshr + + -- Drew Parsons Sat, 11 Aug 2018 22:42:56 +0800 + +mshr (2018.1.0+dfsg1-3) unstable; urgency=medium + + * run autopkgtest on demos from mshr-demos package + - install demos in /usr/share/doc/mshr-demos/examples + * mark libmshr2018.1 as Multi-Arch: same + * drop mshr-demos (FTBFS on i386 interferes with package migration) + and install demos with python3-mshr. + + -- Drew Parsons Sat, 11 Aug 2018 02:47:12 +0800 + +mshr (2018.1.0+dfsg1-2) unstable; urgency=medium + + * Upload to unstable. Closes: #905369. + * Standards-Version: 4.2.0 + * Build-Depends: python3-setuptools + * Add debian/tests (autopkgtest) + - debian patch test_controls.diff provides test.py scripts + + -- Drew Parsons Sat, 04 Aug 2018 13:31:48 +0800 + +mshr (2018.1.0+dfsg1-1exp1) experimental; urgency=medium + + * New upstream release. + - debian patches applied upstream: + cgal_4.12.patch + tetgen_define_TETLIBRARY.patch + use_system_cgal_tetgen.patch + - removes python2 support (python-mshr is dropped) + - uses pybind11 instead of swig + * debian patch cmake_config_in_lib.patch places cmake config files + in lib not share, since MSHR_LIBRARIES_DIRS is arch-specific. + * apply dpkg-buildflags CXXFLAGS to cmake build (for hardening and + debug symbols) + * remove CGAL and tetgen licences from debian/copyright (these + 3rdParty sources have been removed from the source tarball) + * Standards-Version: 4.1.5 + * Build-Depends: python3-all-dev (i.e. add python3.7 support) + + -- Drew Parsons Tue, 10 Jul 2018 13:07:08 +0800 + +mshr (2017.2.0+dfsg1-1) unstable; urgency=medium + + * Upload mshr without embedded CGAL and tetgen code. Closes: #824716. + * debian/copyright Files-Excluded: 3rdparty/CGAL 3rdparty/tetgen1.5.0 + CGAL and tetgen are provided by their own packages, so exclude + them from mshr to save space. + * Debian patch cgal_4.12.patch builds against CGAL 4.12. + * Build against system CGAL and tetgen. + Thanks Johannes Ring (upstream branch + johannr/optional-use-system-packages, applied as Debian patch + use_system_cgal_tetgen.patch) + - Build-Depends: libcgal-dev (>= 4.12), libtet1.5-dev. + - debian patch tetgen_define_TETLIBRARY.patch ensures tetgen + library API is used (defines TETLIBRARY) + * Build-Depends: cmake (>= 3.5) + * Standards-Version: 4.1.4 + * Debian patch demos_update.patch keeps extrude demo running + + -- Drew Parsons Wed, 23 May 2018 03:10:08 +0800 + +mshr (2017.2.0-1) UNRELEASED; urgency=medium + + * Team upload. + * New upstream version. + * Standards-Version: 4.1.3 + * debhelper compatibility level 11 + + -- Drew Parsons Thu, 25 Jan 2018 16:59:08 +0800 + +mshr (2017.1.0-2) UNRELEASED; urgency=medium + + * Team upload. + * Standards-Version: 4.1.2 + * Provide python3 support in python3-mshr + + -- Drew Parsons Tue, 12 Dec 2017 14:56:09 +0800 + +mshr (2017.1.0-1) UNRELEASED; urgency=medium + + * Team upload. + + [ Johannes Ring ] + * New upstream release. + - Move debian/libmshr2016.2.install > debian/libmshr2017.1.install. + - Update package name for new SONAME 2017.1 (libmshr2016.2 -> + libmshr2017.1). + - Bump minimum required version of libdolfin-dev, python-ffc, + python-dolfin and dolfin-bin from 2016.2.0 to 2017.1.0. + + [ Drew Parsons ] + * Standards-Version: 4.1.0 + * debhelper compatibility level 10 + + -- Johannes Ring Thu, 11 May 2017 13:04:50 +0200 + +mshr (2016.2.0-1) UNRELEASED; urgency=medium + + * New upstream release. + - Move debian/libmshr2016.1.install > debian/libmshr2016.2.install. + - Update package name for new SONAME 2016.2 (libmshr2016.1 -> + libmshr2016.2). + - Bump minimum required version of libdolfin-dev, python-ffc, + python-dolfin and dolfin-bin from 2016.1.0 to 2016.2.0. + + -- Johannes Ring Fri, 02 Dec 2016 15:22:32 +0100 + +mshr (2016.1.0-2) UNRELEASED; urgency=medium + + * New upstream release. + * debian/control: + - Update package name for new SONAME 2016.1 (libmshr1.6 -> + libmshr2016.1). + - Bump minimum required version of libdolfin-dev, python-ffc, + python-dolfin and dolfin-bin from 1.6.0 to 2016.1.0. + - Add libproj-dev to Build-Depends and to Depends for binary package + libmshr-dev. + * Move debian/libmshr1.6.install -> debian/libmshr2016.1.install. + * Remove patch (fixed upstream). + * debian/rules: Add -fpermissive to CXX flags. + + -- Johannes Ring Fri, 02 Dec 2016 15:20:19 +0100 + +mshr (1.6.0-1) unstable; urgency=low + + [ Johannes Ring ] + * Initial release (Closes: #824716) + + [ Drew Parsons ] + * Team upload. + + -- Drew Parsons Fri, 20 May 2016 08:23:26 +0800 diff --git a/control b/control new file mode 100644 index 0000000..07506d5 --- /dev/null +++ b/control @@ -0,0 +1,165 @@ +Source: mshr +Section: math +Priority: optional +Maintainer: Debian Science Team +Uploaders: + Johannes Ring , + Drew Parsons , + Francesco Ballarin +Build-Depends: debhelper-compat (= 13), + python3-all-dev, + dh-python, + python3-setuptools, + cmake, + python3-pybind11, + libmpfr-dev, + libgmp-dev, + libcgal-dev (>= 6.0~), + libtet1.5-dev, + libdolfin-dev (>= 2019.2), + libdolfin64-dev (>= 2019.2.0~git20200218.027d9cc-16), + python3-ffc (>= 2019.2), + python3-numpy, + python3-petsc4py, + python3-slepc4py, + python3-petsc4py-real, + python3-slepc4py-real, + python3-petsc4py-64-real, + python3-slepc4py-64-real +Standards-Version: 4.7.0 +Homepage: http://fenicsproject.org +Vcs-Git: https://salsa.debian.org/science-team/fenics/mshr.git +Vcs-Browser: https://salsa.debian.org/science-team/fenics/mshr + +Package: libmshr2019.2 +Section: libs +Architecture: any +Multi-Arch: same +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Shared libraries for mshr + mshr generates simplicial DOLFIN meshes in 2D and 3D from geometries + described by Constructive Solid Geometry (CSG) or from surface files, + utilizing CGAL and Tetgen as mesh generation backends. + . + This package contains the shared libraries. + +Package: libmshr-dev +Section: libdevel +Architecture: any +Depends: libmshr2019.2 (= ${binary:Version}), + libmshr-dev-common (= ${binary:Version}), + libdolfin-dev (>= ${fenics:Upstream-Version}), + ${shlibs:Depends}, + ${misc:Depends} +Description: Shared links and header files for mshr + mshr generates simplicial DOLFIN meshes in 2D and 3D from geometries + described by Constructive Solid Geometry (CSG) or from surface files, + utilizing CGAL and Tetgen as mesh generation backends. + . + This package contains the development files, and also the + utility program mshrable. + +Package: libmshr-dev-common +Section: libdevel +Architecture: any +Multi-Arch: same +Depends: python3-ffc (>= ${fenics:Upstream-Version}), + cmake, + ${misc:Depends} +Recommends: libmshr-dev (= ${binary:Version}) | libmshr64-dev (= ${binary:Version}) +Replaces: libmshr-dev (<< 2019.2.0~git20200213.8895485+dfsg1-3) +Breaks: libmshr-dev (<< 2019.2.0~git20200213.8895485+dfsg1-3) +Description: Shared links and header files for mshr + mshr generates simplicial DOLFIN meshes in 2D and 3D from geometries + described by Constructive Solid Geometry (CSG) or from surface files, + utilizing CGAL and Tetgen as mesh generation backends. + . + This package contains the common headers and development files. + +Package: python3-mshr +Section: python +Architecture: all +Depends: libmshr-dev (>= ${source:Version}), + python3-mshr-real | python3-mshr64-real, + python3-dolfin (>= ${fenics:Upstream-Version}), + dolfin-bin (>= ${fenics:Upstream-Version}), + python3, + ${python3:Depends}, + ${misc:Depends} +Description: Python 3 interface for mshr + mshr generates simplicial DOLFIN meshes in 2D and 3D from geometries + described by Constructive Solid Geometry (CSG) or from surface files, + utilizing CGAL and Tetgen as mesh generation backends. + . + This package contains the common Python 3 interface for mshr, and examples + and demo programs. + . + This is the base package depending on specific mshr builds. By + default mshr is built against dolfin using the preferred version of PETSc in + /usr/lib/petsc (with 32-bit indexing), but the alternative version + (64-bit PETSc) can be selected by setting the environment variable PETSC_DIR. + +Package: python3-mshr-real +Section: python +Architecture: any +Depends: libmshr2019.2 (= ${binary:Version}), + python3-dolfin-real (>= ${fenics:Upstream-Version}), + python3-pybind11 (>= ${pybind11:Upstream-Version}), python3-pybind11 (<< ${pybind11:Next-Upstream-Version}), + ${python3:Depends}, + ${shlibs:Depends}, + ${misc:Depends} +Recommends: python3-mshr +Description: Python 3 interface for mshr + mshr generates simplicial DOLFIN meshes in 2D and 3D from geometries + described by Constructive Solid Geometry (CSG) or from surface files, + utilizing CGAL and Tetgen as mesh generation backends. + . + This package contains the Python 3 interface for mshr. + +Package: libmshr64-2019.2 +Section: libs +Architecture: any +Multi-Arch: same +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Shared libraries for mshr with 64-bit indexing + mshr generates simplicial DOLFIN meshes in 2D and 3D from geometries + described by Constructive Solid Geometry (CSG) or from surface files, + utilizing CGAL and Tetgen as mesh generation backends. + . + This package contains the shared libraries with support for + 64-bit indexing (libdolfin64 and PETSc-64). + +Package: libmshr64-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Depends: libmshr64-2019.2 (= ${binary:Version}), + libmshr-dev-common (= ${binary:Version}), + libdolfin64-dev (>= ${fenics:Upstream-Version}), + ${shlibs:Depends}, + ${misc:Depends} +Description: Shared links and header files for mshr with 64-bit indexing + mshr generates simplicial DOLFIN meshes in 2D and 3D from geometries + described by Constructive Solid Geometry (CSG) or from surface files, + utilizing CGAL and Tetgen as mesh generation backends. + . + This package contains the development files with support for + 64-bit indexing (libdolfin64 and PETSc-64). + +Package: python3-mshr64-real +Section: python +Architecture: any +Depends: libmshr64-2019.2 (= ${binary:Version}), + python3-dolfin64-real (>= ${fenics:Upstream-Version}), + python3-pybind11 (>= ${pybind11:Upstream-Version}), python3-pybind11 (<< ${pybind11:Next-Upstream-Version}), + ${python3:Depends}, + ${shlibs:Depends}, + ${misc:Depends} +Recommends: python3-mshr +Description: Python 3 interface for mshr with 64-bit indexing + mshr generates simplicial DOLFIN meshes in 2D and 3D from geometries + described by Constructive Solid Geometry (CSG) or from surface files, + utilizing CGAL and Tetgen as mesh generation backends. + . + This package contains the Python 3 interface for mshr with support for + 64-bit indexing (libdolfin64 and PETSc-64). diff --git a/copyright b/copyright new file mode 100644 index 0000000..cf462f5 --- /dev/null +++ b/copyright @@ -0,0 +1,37 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: mshr +Source: https://bitbucket.org/fenics-project/mshr +Comment: Lead Author: Benjamin Kehlet +Contributors: + Anders Logg + Joachim B Haga + Johannes Ring + Lars Magnus Valnes + Garth N. Wells +Files-Excluded: 3rdparty/CGAL 3rdparty/tetgen1.5.0 + +Files: * +Copyright: © 2012-2017 Benjamin Kehlet + 2012-2015 Anders Logg + 2012 Johannes Ring + 2012 Joachim B Haga + 2016 Lars Magnus Valnes +License: GPL-3+ + +Files: test/test.cpp test/test2.cpp test/test-csggeometries.cpp + demo/python/icecream.py +Copyright: 2012-2017 Benjamin Kehlet + 2012 Anders Logg, Johannes Ring, Joachim B Haga +License: LGPL-3+ + +License: GPL-3+ + /usr/share/common-licenses/GPL-3 + +License: LGPL-3+ + /usr/share/common-licenses/LGPL-3 + +Files: debian/* +Copyright: © 2015 Johannes Ring , + 2016 Drew Parsons +License: GPL-2+ + /usr/share/common-licenses/GPL-2 diff --git a/docs b/docs new file mode 100644 index 0000000..a1320b1 --- /dev/null +++ b/docs @@ -0,0 +1 @@ +README.rst diff --git a/libmshr-dev-common.install b/libmshr-dev-common.install new file mode 100644 index 0000000..62f9b82 --- /dev/null +++ b/libmshr-dev-common.install @@ -0,0 +1,3 @@ +usr/include/mshr +usr/include/mshr.h +usr/lib/*/cmake/mshr diff --git a/libmshr-dev.install b/libmshr-dev.install new file mode 100644 index 0000000..1edef27 --- /dev/null +++ b/libmshr-dev.install @@ -0,0 +1,2 @@ +usr/lib/**/*.so +usr/bin/mshrable diff --git a/libmshr-dev.manpages b/libmshr-dev.manpages new file mode 100644 index 0000000..60ad814 --- /dev/null +++ b/libmshr-dev.manpages @@ -0,0 +1 @@ +debian/mshrable.1 diff --git a/libmshr2019.2.install b/libmshr2019.2.install new file mode 100644 index 0000000..8755c99 --- /dev/null +++ b/libmshr2019.2.install @@ -0,0 +1 @@ +usr/lib/**/lib*.so.* diff --git a/libmshr64-2019.2.install b/libmshr64-2019.2.install new file mode 100755 index 0000000..4336ff4 --- /dev/null +++ b/libmshr64-2019.2.install @@ -0,0 +1,2 @@ +#!/bin/sh +echo "debian/tmp64/usr/lib/**/libmshr64*.so.* usr/lib/${DEB_HOST_MULTIARCH}" diff --git a/libmshr64-dev.docs b/libmshr64-dev.docs new file mode 100644 index 0000000..e174728 --- /dev/null +++ b/libmshr64-dev.docs @@ -0,0 +1 @@ +debian/README.Debian diff --git a/libmshr64-dev.install b/libmshr64-dev.install new file mode 100755 index 0000000..98292a9 --- /dev/null +++ b/libmshr64-dev.install @@ -0,0 +1,2 @@ +#!/bin/sh +echo "debian/tmp64/usr/lib/**/libmshr64*.so usr/lib/${DEB_HOST_MULTIARCH}" diff --git a/mshr.pth b/mshr.pth new file mode 100644 index 0000000..e8ba8bf --- /dev/null +++ b/mshr.pth @@ -0,0 +1,3 @@ +# access mshr module from either /usr/lib/mshr or /usr/lib/mshr64 depending on whether petsc or petsc64 is used (controlled by PETSC_DIR). +# petsc64 build identified by "#define PETSC_USE_64BIT_INDICES 1" in $PETSC_DIR/include/petscconf.h +import sys, os, pathlib; petsc_dir = '/usr/lib/petsc'; petsc_dir = os.getenv('PETSC_DIR') or petsc_dir; petsc_conf=os.path.join(petsc_dir,'include/petscconf.h'); bit64='64' if os.path.isfile(petsc_conf) and '#define PETSC_USE_64BIT_INDICES 1' in open(petsc_conf).read() else ''; mshr_dir='/usr/lib/mshr{}/python3/dist-packages'.format(bit64); mshr_dir in sys.path or sys.path.append(mshr_dir); diff --git a/mshrable.1 b/mshrable.1 new file mode 100644 index 0000000..336f2f8 --- /dev/null +++ b/mshrable.1 @@ -0,0 +1,61 @@ +.TH "MSHRABLE" "1" +.SH "NAME" +mshrable \(em Generate mesh from surface file +.SH "SYNOPSIS" +.PP +\fBmshrable\fR [\-f \fIFILE\fR] +.SH "DESCRIPTION" +.PP +\fBmshrable\fR generates a mesh from a +surface file. It uses mshr, which is the mesh generation +component of FEniCS. It generates simplicial DOLFIN meshes in 2D +and 3D from geometries described by Constructive Solid Geometry +(CSG) or from surface files, utilizing CGAL and Tetgen as mesh +generation backends. + +.SH "OPTIONS" +.PP + +.IP "\-o [\-\-outfile] \fIarg\fR" 10 +Filename of generated Dolfin mesh. + +.IP "\-r [\-\-resolution] \fIarg (=15)\fR" 10 +Resolution of result mesh. + +.IP "\-s [\-\-stats]" 10 +Write some statistics of the mesh to stdout. + +.IP "\-\-polyout \fIarg\fR" 10 +Write the polyhedron to .poly which Tetgen can read +(and do not create a mesh). + +.IP "\-\-polystats" 10 +Write statistics of polyhedron (and do not create a +mesh). + +.IP "\-b [\-\-backend] \fIarg (=cgal)\fR" 10 +Use 3D mesh generation backend [tetgen|cgal]. + +.IP "\-\-degenerate_tolerance \fIarg (=9.9999999999999998e-13)\fR" 10 +Tolerance for considering a facet as degenerate. Set +to 0 to not remove degenerate facets. + +.IP "\-\-check-mesh" 10 +Check consistency of output mesh (most for debugging/testing. + +.IP "\-v [\-\-verbose]" 10 +Output more information about what is going on. + +.IP "\-h [\-\-help]" 10 +write help message. + +.SH "SEE ALSO" +.PP +dolfin-convert (1), dolfin-order (1) +.SH "AUTHOR" +.PP +\fBmshrable\fR was written by Benjamin +Kehlet benjamik@simula.no. This man page was written by +Drew Parsons dparsons@debian.org. + +.\" created by instant / docbook-to-man diff --git a/mshrable.sgml b/mshrable.sgml new file mode 100644 index 0000000..a7c8f4a --- /dev/null +++ b/mshrable.sgml @@ -0,0 +1,202 @@ +Drew"> + Parsons"> + + 19 May, 2016"> + 1"> + dparsons@debian.org"> + + MSHRABLE"> + + + Debian GNU/Linux"> + GNU"> +]> + + + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2001 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + Generate mesh from surface file + + + + &dhpackage; + -f FILE + + + + + DESCRIPTION + + &dhpackage; generates a mesh from a + surface file. It uses mshr, which is the mesh generation + component of FEniCS. It generates simplicial DOLFIN meshes in 2D + and 3D from geometries described by Constructive Solid Geometry + (CSG) or from surface files, utilizing CGAL and Tetgen as mesh + generation backends. + + + + + OPTIONS + + + + -o [--outfile] arg + + + Filename of generated Dolfin mesh. + + + + + + -r [--resolution] arg (=15) + + + Resolution of result mesh. + + + + + + -s [--stats] + + + Write some statistics of the mesh to stdout. + + + + + + --polyout arg + + + Write the polyhedron to .poly which Tetgen can read + (and do not create a mesh). + + + + + + --polystats + + + Write statistics of polyhedron (and do not create a + mesh). + + + + + + -b [--backend] arg (=cgal) + + + Use 3D mesh generation backend [tetgen|cgal]. + + + + + + --degenerate_tolerance arg (=9.9999999999999998e-13) + + + Tolerance for considering a facet as degenerate. Set + to 0 to not remove degenerate facets. + + + + + + --check-mesh + + + Check consistency of output mesh (most for debugging/testing. + + + + + + -v [--verbose] + + + Output more information about what is going on. + + + + + + -h [--help] + + + write help message. + + + + + + + + + SEE ALSO + + dolfin-convert (1), dolfin-order (1) + + + AUTHOR + &dhpackage; was written by Benjamin + Kehlet benjamik@simula.no. This man page was written by + &dhusername; &dhemail;. + + + + + + +
+ + + diff --git a/patches/CGAL_6_compatibility.diff b/patches/CGAL_6_compatibility.diff new file mode 100644 index 0000000..58fb78c --- /dev/null +++ b/patches/CGAL_6_compatibility.diff @@ -0,0 +1,236 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -14,7 +14,7 @@ + # CGAL setup + option(USE_SYSTEM_CGAL "Do not build CGAL, but use an existing build instead." OFF) + if (USE_SYSTEM_CGAL) +- find_package(CGAL 5 CONFIG REQUIRED) ++ find_package(CGAL 6 CONFIG REQUIRED) + endif() + + # Borrow some cmake modules from cgal +@@ -43,8 +43,8 @@ + ENDFOREACH (value2) + ENDMACRO(LIST_CONTAINS) + +-# Use C++14 to support std:enable_if used by CGAL 5 +-set(CMAKE_CXX_STANDARD 14) ++# Use C++17 as required by CGAL 6 ++set(CMAKE_CXX_STANDARD 17) + + # Boost + # This is workaround to avoid that find_package(Boost) +@@ -161,7 +161,7 @@ + ) + + # CMAKE_CXX_STANDARD is ignored ;( Need to set standard manually here. +-set_property(TARGET mshr PROPERTY CXX_STANDARD 14) ++set_property(TARGET mshr PROPERTY CXX_STANDARD 17) + + # install library + install(TARGETS mshr +@@ -181,7 +181,7 @@ + ) + + # CMAKE_CXX_STANDARD is ignored ;( Need to set standard manually here. +-set_property(TARGET mshrable PROPERTY CXX_STANDARD 14) ++set_property(TARGET mshrable PROPERTY CXX_STANDARD 17) + + # install app + install(TARGETS mshrable +--- a/python/setup.py ++++ b/python/setup.py +@@ -36,8 +36,8 @@ + include_dirs=include_dirs, + library_dirs=config['mshr']['lib_dirs'].split(";"), + libraries=config['mshr']['libs'].split(";"), +- extra_compile_args=['-std=c++14'], +- language='c++14') ++ extra_compile_args=['-std=c++17'], ++ language='c++17') + + + setup(name = 'mshr', +--- a/src/CSGCGALDomain2D.cpp ++++ b/src/CSGCGALDomain2D.cpp +@@ -109,35 +109,37 @@ + auto ii = CGAL::intersection(r, *eit); + if (ii) + { +- if (const Point_2* pt = boost::get(&*ii)) ++ Point_2 pt; ++ Segment_2 s; ++ if (CGAL::assign(pt, ii)) + { +- const FT squared_distance = CGAL::squared_distance(source, *pt); ++ const FT squared_distance = CGAL::squared_distance(source, pt); + if (squared_distance < min_squared_distance) + { +- closest = *pt; ++ closest = pt; + min_squared_distance = squared_distance; + } + } +- else if (const Segment_2* s = boost::get(&*ii)) ++ else if (CGAL::assign(s, ii)) + { + // If the intersection is a segment, an edge in the polygon is paralell + // to the ray. Simply check both the source and the target point of the + // segment. + + { +- const FT squared_distance = CGAL::squared_distance(source, s->source()); ++ const FT squared_distance = CGAL::squared_distance(source, s.source()); + if (squared_distance < min_squared_distance) + { +- closest = s->source(); ++ closest = s.source(); + min_squared_distance = squared_distance; + } + } + + { +- const FT squared_distance = CGAL::squared_distance(source, s->target()); ++ const FT squared_distance = CGAL::squared_distance(source, s.target()); + if (squared_distance < min_squared_distance) + { +- closest = s->target(); ++ closest = s.target(); + min_squared_distance = squared_distance; + } + } +--- a/src/CSGCGALDomain3D.cpp ++++ b/src/CSGCGALDomain3D.cpp +@@ -1727,9 +1727,10 @@ + auto result = intersection(t, ray); + if(result) + { +- if (const Exact_Point_3* p = boost::get(&*result)) ++ Exact_Point_3 p; ++ if (CGAL::assign(p, result)) + { +- points.insert(*p); ++ points.insert(p); + } + } + } +--- a/src/Polyhedron_utils.h ++++ b/src/Polyhedron_utils.h +@@ -1057,7 +1057,9 @@ + + if (intersection) + { +- if (boost::get(&*intersection)) ++ InexactPoint_2 pt; ++ InexactSegment_2 s; ++ if (CGAL::assign(pt, intersection)) + { + if (j != i+1 && i != (j+1)%vertices.size()) + { +@@ -1067,7 +1069,7 @@ + return false; + } + } +- else if (boost::get(&*intersection)) ++ else if (CGAL::assign(s, intersection)) + { + std::cout << "Intersects in segment" << std::endl; + return false; +@@ -1730,14 +1732,16 @@ + if (!result) + return false; + +- if (const Point_3* p = boost::get(&*result)) ++ Point_3 p; ++ Segment_3 s_; ++ if (CGAL::assign(p, result)) + { +- if (*p == t[0] || *p == t[1] || *p == t[2]) ++ if (p == t[0] || p == t[1] || p == t[2]) + return false; + else + return true; + } +- else if (const Segment_3* s_ = boost::get(&*result)) ++ else if (CGAL::assign(s_, result)) + { + if ( (s.source() == t[0] || s.source() == t[1] || s.source() == t[2]) && + (s.target() == t[0] || s.target() == t[1] || s.target() == t[2]) ) +@@ -1769,7 +1773,11 @@ + if (!result) + return false; + +- if (const Point_3* p = boost::get(&*result)) ++ Point_3 p; ++ Segment_3 s; ++ Triangle_3 t; ++ std::vector v; ++ if (CGAL::assign(p, result)) + { + if (t1[0] == t2[0] || t1[0] == t2[1] || t1[0] == t2[2] || + t1[1] == t2[0] || t1[1] == t2[1] || t1[1] == t2[2] || +@@ -1778,7 +1786,7 @@ + else + return true; + } +- else if (const Segment_3* s = boost::get(&*result)) ++ else if (CGAL::assign(s, result)) + { + std::size_t common_vertices = 0; + if (t1[0] == t2[0] || t1[0] == t2[1] || t1[0] == t2[2]) +@@ -1795,9 +1803,9 @@ + else + return true; + } +- else if (const Triangle_3* t = boost::get(&*result)) ++ else if (CGAL::assign(t, result)) + return true; +- else if (const std::vector* v = boost::get >(&*result)) ++ else if (CGAL::assign(v, result)) + return true; + + dolfin_assert(false); +@@ -2382,11 +2390,13 @@ + auto result = CGAL::intersection(t, s); + dolfin_assert(result); + +- if (const Point_3* p = boost::get(&*result)) ++ Point_3 p; ++ Segment_3 s; ++ if (CGAL::assign(p, result)) + { +- dolfin_assert(*p == s.source() || *p == s.target()); ++ dolfin_assert(p == s.source() || p == s.target()); + } +- else if (const Segment_3* s = boost::get(&*result)) ++ else if (CGAL::assign(s, result)) + { + return true; + } +@@ -2438,17 +2448,20 @@ + const auto result = CGAL::intersection(t1, t2); + + dolfin_assert(result); +- if (const Segment_3* s = boost::get(&*result)) ++ Segment_3 s; ++ Point_3 p; ++ Triangle_3 t; ++ if (CGAL::assign(s, result)) + { +- ss << "Segment: " << *s << std::endl; ++ ss << "Segment: " << s << std::endl; + } +- else if (const Point_3* p = boost::get(&*result)) ++ else if (CGAL::assign(p, result)) + { +- ss << "Point: " << *p << std::endl; ++ ss << "Point: " << p << std::endl; + } +- else if (const Triangle_3* t = boost::get(&*result)) ++ else if (CGAL::assign(t, result)) + { +- ss << "Triangle: " << *t << std::endl; ++ ss << "Triangle: " << t << std::endl; + } + else + { diff --git a/patches/lib_rename.patch b/patches/lib_rename.patch new file mode 100644 index 0000000..5bc8165 --- /dev/null +++ b/patches/lib_rename.patch @@ -0,0 +1,99 @@ +Index: mshr/CMakeLists.txt +=================================================================== +--- mshr.orig/CMakeLists.txt 2020-10-05 00:07:03.341164950 +0800 ++++ mshr/CMakeLists.txt 2020-10-05 00:09:55.459354628 +0800 +@@ -90,6 +90,7 @@ + include_directories(BEFORE ${EXTERNAL_INCLUDE_DIRS}) + add_definitions("${EXTERNAL_DEFINITIONS}") + ++set(DOLFIN_LIB_NAME_EXT ${LIB_NAME_EXT}) + find_package(DOLFIN REQUIRED) + include(${DOLFIN_USE_FILE}) + +@@ -127,6 +128,7 @@ + set(MSHR_LIBRARY_PROPERTIES ${MSHR_LIBRARY_PROPERTIES} + VERSION ${MSHR_LIBRARY_VERSION} + SOVERSION ${MSHR_VERSION_MAJOR}.${MSHR_VERSION_MINOR} ++ OUTPUT_NAME "mshr${LIB_NAME_EXT}" + ) + endif() + set_target_properties(mshr PROPERTIES ${MSHR_LIBRARY_PROPERTIES}) +Index: mshr/mshrConfig.cmake.in +=================================================================== +--- mshr.orig/mshrConfig.cmake.in 2020-10-05 00:07:03.341164950 +0800 ++++ mshr/mshrConfig.cmake.in 2020-10-05 00:07:03.337164993 +0800 +@@ -12,4 +12,4 @@ + set(mshr_EXTERNAL_LIBRARIES "@CONF_EXTERNAL_LIBRARIES@") + set(mshr_CXX_DEFINITIONS "@CONF_CXX_DEFINITIONS@") + set(mshr_CXX_FLAGS "@CONF_CXX_FLAGS@") +-set(mshr_LIBRARIES mshr) ++set(mshr_LIBRARIES mshr${MSHR_LIB_NAME_EXT}) +Index: mshr/python/setup.py +=================================================================== +--- mshr.orig/python/setup.py 2020-10-05 00:07:03.341164950 +0800 ++++ mshr/python/setup.py 2020-10-05 00:07:03.337164993 +0800 +@@ -6,15 +6,24 @@ + + + # Call cmake to generate json file with include and link information about dolfin and pybind11 +-if not os.path.isfile(os.path.join("build", "config.json")) : +- if not os.path.exists("build") : +- os.mkdir("build") ++MSHR_LIB_NAME_EXT = os.environ.get('MSHR_LIB_NAME_EXT') or '' ++DOLFIN_LIB_NAME_EXT = os.environ.get('DOLFIN_LIB_NAME_EXT') or '' ++config_dir="build" + MSHR_LIB_NAME_EXT ++if not os.path.isfile(os.path.join(config_dir, "config.json")) : ++ if not os.path.exists(config_dir) : ++ os.mkdir(config_dir) + cmake_command=["cmake", os.getcwd()] + if os.environ.get('CMAKE_PREFIX_PATH'): + cmake_command.extend(['-DCMAKE_PREFIX_PATH={}'.format(os.environ['CMAKE_PREFIX_PATH'])]) +- subprocess.check_call(cmake_command, cwd=os.path.abspath("build")) ++ if MSHR_LIB_NAME_EXT: ++ cmake_command.extend(['-DMSHR_LIB_NAME_EXT={}'.format(MSHR_LIB_NAME_EXT)]) ++ if DOLFIN_LIB_NAME_EXT: ++ cmake_command.extend(['-DDOLFIN_LIB_NAME_EXT={}'.format(DOLFIN_LIB_NAME_EXT)]) ++ elif MSHR_LIB_NAME_EXT: ++ cmake_command.extend(['-DDOLFIN_LIB_NAME_EXT={}'.format(MSHR_LIB_NAME_EXT)]) ++ subprocess.check_call(cmake_command, cwd=os.path.abspath(config_dir)) + +-with open(os.path.join("build", "config.json"), 'r') as infile : ++with open(os.path.join(config_dir, "config.json"), 'r') as infile : + config = json.load(infile) + + include_dirs = config["pybind11"]["include_dirs"].split(";") + \ +Index: mshr/python/cmake/Findmshr.cmake +=================================================================== +--- mshr.orig/python/cmake/Findmshr.cmake 2020-10-05 00:07:03.341164950 +0800 ++++ mshr/python/cmake/Findmshr.cmake 2020-10-05 00:07:03.337164993 +0800 +@@ -20,7 +20,7 @@ + find_path(mshr_INCLUDE_DIR mshr.h + DOC "The mshr include directory") + +-set(mshr_NAMES ${mshr_NAMES} libmshr mshr) ++set(mshr_NAMES ${mshr_NAMES} libmshr${MSHR_LIB_NAME_EXT} mshr${MSHR_LIB_NAME_EXT}) + find_library(mshr_LIBRARY NAMES ${mshr_NAMES} + DOC "The mshr library") + +@@ -39,7 +39,7 @@ + set( mshr_FOUND 1 ) + # use by setuptools.Extension, mshr_LIBRARIES must be in a form that appends to -l + # i.e. mshr not libmshr.so +- set( mshr_LIBRARIES "mshr" ) ++ set( mshr_LIBRARIES "mshr${MSHR_LIB_NAME_EXT}" ) + get_filename_component( mshr_LIBRARIES_DIRS ${mshr_LIBRARY} DIRECTORY ) + set( mshr_INCLUDE_DIRS ${mshr_INCLUDE_DIR} ) + else() +Index: mshr/mshr-config.cmake.in +=================================================================== +--- mshr.orig/mshr-config.cmake.in 2020-10-05 00:07:03.341164950 +0800 ++++ mshr/mshr-config.cmake.in 2020-10-05 00:07:03.337164993 +0800 +@@ -12,6 +12,6 @@ + set(MSHR_EXTERNAL_LIBRARIES "@CONF_EXTERNAL_LIBRARIES@") + set(MSHR_CXX_DEFINITIONS "@CONF_CXX_DEFINITIONS@") + set(MSHR_CXX_FLAGS "@CONF_CXX_FLAGS@") +-set(MSHR_LIBRARIES mshr) ++set(MSHR_LIBRARIES mshr${MSHR_LIB_NAME_EXT}) + + set(MSHR_USE_FILE "${MSHR_CMAKE_DIR}/use-mshr.cmake") +\ No newline at end of file diff --git a/patches/series b/patches/series new file mode 100644 index 0000000..16c4b6f --- /dev/null +++ b/patches/series @@ -0,0 +1,3 @@ +test_controls.diff +lib_rename.patch +CGAL_6_compatibility.diff diff --git a/patches/test_controls.diff b/patches/test_controls.diff new file mode 100644 index 0000000..063ef2f --- /dev/null +++ b/patches/test_controls.diff @@ -0,0 +1,63 @@ +--- /dev/null ++++ b/demo/python/test.py +@@ -0,0 +1,27 @@ ++import os ++import pathlib ++import subprocess ++import sys ++import pytest ++ ++ ++# Get directory of this file ++dir_path = pathlib.Path(__file__).resolve().parent ++ ++# Build list of demo programs ++demos = [] ++for subdir in ['.']: ++ p = pathlib.Path(dir_path, subdir) ++ demo_files = list(p.glob('*.py')) ++ for f in demo_files: ++ demos.append((f.parent, f.name)) ++ ++ ++@pytest.mark.parametrize("path,name", demos) ++def test_demos(path, name): ++ ++ # Run in serial ++ ret = subprocess.run([sys.executable, name], ++ cwd=str(path), ++ env={**os.environ, 'MPLBACKEND': 'agg'}, ++ check=True) +--- /dev/null ++++ b/test/test.py +@@ -0,0 +1,30 @@ ++import os ++import pathlib ++import subprocess ++import sys ++import pytest ++ ++ ++# Get directory of this file ++dir_path = pathlib.Path(__file__).resolve().parent ++ ++# Build list of demo programs ++tests = [] ++for subdir in ['.']: ++ p = pathlib.Path(dir_path, subdir) ++ test_files = list(p.glob('**/*.py')) ++ for f in test_files: ++ tests.append((f.parent, f.name)) ++ ++ ++# remove tests that are known to break ++tests = [d for d in tests if d[1] not in ''] ++ ++ ++@pytest.mark.parametrize("path,name", tests) ++def test_demos(path, name): ++ ++ ret = subprocess.run([sys.executable, name], ++ cwd=str(path), ++ env={**os.environ, 'MPLBACKEND': 'agg'}, ++ check=True) diff --git a/python3-mshr-real.install b/python3-mshr-real.install new file mode 100644 index 0000000..7aadc9c --- /dev/null +++ b/python3-mshr-real.install @@ -0,0 +1 @@ +usr/lib/python3*/*-packages/* diff --git a/python3-mshr.examples b/python3-mshr.examples new file mode 100644 index 0000000..4b02f7b --- /dev/null +++ b/python3-mshr.examples @@ -0,0 +1 @@ +demo/python/* diff --git a/python3-mshr.install b/python3-mshr.install new file mode 100644 index 0000000..a362828 --- /dev/null +++ b/python3-mshr.install @@ -0,0 +1 @@ +debian/mshr.pth usr/lib/python3/dist-packages/ diff --git a/python3-mshr64-real.docs b/python3-mshr64-real.docs new file mode 100644 index 0000000..e174728 --- /dev/null +++ b/python3-mshr64-real.docs @@ -0,0 +1 @@ +debian/README.Debian diff --git a/python3-mshr64-real.install b/python3-mshr64-real.install new file mode 100755 index 0000000..7bdc526 --- /dev/null +++ b/python3-mshr64-real.install @@ -0,0 +1,2 @@ +#!/bin/sh +echo "debian/tmp64/usr/lib/python3*/dist-packages/* usr/lib/python3/dist-packages" diff --git a/rules b/rules new file mode 100755 index 0000000..d4888a2 --- /dev/null +++ b/rules @@ -0,0 +1,157 @@ +#!/usr/bin/make -f + +include /usr/share/dpkg/architecture.mk + +MSHR_HOME = $(CURDIR)/$(DEB_SRCDIR) +USCAN_DESTDIR := $(CURDIR) +PY3VERS := $(shell py3versions --requested debian/control | tac -s' ') +PYVERS = $(PY3VERS) + +DEB_VERSION := $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ') +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.*$$//p') + +FENICS_RELEASE_VERSION=$(DEB_STRIPPED_UPSTREAM_VERSION) +FENICS_MAJOR_VERSION=$(shell echo $(FENICS_RELEASE_VERSION) | sed "s/^\([^.]*\)\..*$$/\1/") +FENICS_MINOR_VERSION=$(shell echo $(FENICS_RELEASE_VERSION) | sed "s/^\([^.]*\)\.\([^.]*\)\..*$$/\2/") +FENICS_VERSION=$(FENICS_MAJOR_VERSION).$(FENICS_MINOR_VERSION) +FENICS_NEXT_VERSION=$(FENICS_MAJOR_VERSION).$(shell echo $$(( $(FENICS_MINOR_VERSION) + 1 )) ) + +# dolfin depends on the pybind11 version it was built against, +# if pybind11.h will be used in C++ code fragments in python scripts. +# But pybind11 follows semantic versioning, so should have backwards compatibility +# with minor and patch version updates. +# Extract pybind11 version from pybind11-dev +PYBIND11_DEB_VERSION=$(shell dpkg -s pybind11-dev | awk '/Version:/ {print $$2}') +# extract the current pybind11 version X.Y.Z (drop epoch and debian package version) +PYBIND11_UPSTREAM_VERSION=$(shell echo $(PYBIND11_DEB_VERSION) | sed "s/^.[^:]*://; s/-[^-]*$$//") +PYBIND11_X_VERSION=$(shell echo $(PYBIND11_UPSTREAM_VERSION) | sed "s/^\([^.]*\).*/\1/") +PYBIND11_X_Y_VERSION=$(shell echo $(PYBIND11_UPSTREAM_VERSION) | sed "s/^\(.*\)\.\([^.]*\)$$/\1/") +PYBIND11_VERSION=$(PYBIND11_X_Y_VERSION) +PYBIND11_NEXT_VERSION=$(shell echo $$(( $(PYBIND11_X_VERSION) + 1 )) ) + +# extract PETSc version from petsc-dev +PETSC_DEB_VERSION=$(shell dpkg -s petsc-dev | awk '/Version:/ {print $2}') +# extract the current PETSc version +PETSC_UPSTREAM_VERSION=$(shell pkg-config --modversion PETSc) +# "Major" version is the first number in the upstream version (major.minor.release) +PETSC_MAJOR_VERSION=$(shell echo $(PETSC_UPSTREAM_VERSION) | sed "s/^\([^.]*\)\..*$$/\1/") +# "Minor" version is the second number in the upstream version (major.minor.release) +PETSC_MINOR_VERSION=$(shell echo $(PETSC_UPSTREAM_VERSION) | sed "s/^\([^.]*\)\.\([^.]*\)\..*$$/\2/") +PETSC_VERSION=$(PETSC_MAJOR_VERSION).$(PETSC_MINOR_VERSION) +PETSC_VERSION_NEXT=$(shell echo $(PETSC_MAJOR_VERSION).$$(($(PETSC_MINOR_VERSION)+1))) + +SLEPC_UPSTREAM_VERSION=$(shell pkg-config --modversion SLEPc) +# SLEPc version must match PETSc +SLEPC_VERSION=$(PETSC_VERSION) +SLEPC_VERSION_NEXT=$(PETSC_VERSION_NEXT) + +PETSC_DIR=/usr/lib/petscdir/petsc$(PETSC_VERSION)/$(DEB_HOST_MULTIARCH)-real +SLEPC_DIR=/usr/lib/slepcdir/slepc$(SLEPC_VERSION)/$(DEB_HOST_MULTIARCH)-real + +PETSC64_DIR=/usr/lib/petscdir/petsc64-$(PETSC_VERSION)/$(DEB_HOST_MULTIARCH)-real +SLEPC64_DIR=/usr/lib/slepcdir/slepc64-$(SLEPC_VERSION)/$(DEB_HOST_MULTIARCH)-real + +BUILDDIR = obj-$(DEB_HOST_GNU_TYPE) +BUILDDIR_64 = obj-$(DEB_HOST_GNU_TYPE)-64 + +MSHR_LIBDIR = /usr/lib/mshr +MSHR64_LIBDIR = /usr/lib/mshr64 + +# some arches (mostly 32 bit) don't provide enough memory to build with debug symbols +ARCH_NO_DEBUG_SYMBOLS := armhf i386 mips64el mipsel hppa m68k powerpc x32 +ifeq ($(findstring $(DEB_BUILD_ARCH),$(ARCH_NO_DEBUG_SYMBOLS)),) + MSHR_BUILDFLAGS := $(shell dpkg-buildflags --get CXXFLAGS ) +else +# remove -g from build flags on weak arches + MSHR_BUILDFLAGS := $(shell dpkg-buildflags --get CXXFLAGS | sed 's/-g //' ) +endif + +CMAKE_OPTS := \ + -D CMAKE_BUILD_TYPE:STRING=Release \ + -D BUILD_SHARED_LIBS:BOOL=ON \ + -D USE_SYSTEM_CGAL:BOOL=ON \ + -D USE_SYSTEM_TETGEN:BOOL=ON \ + -D ENABLE_MSHRABLE:BOOL=ON \ + -D CMAKE_SKIP_RPATH:BOOL=ON \ + -D CMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=OFF \ + -D INSTALL_LIB_DIR:PATH=lib/$(DEB_BUILD_MULTIARCH) \ + -D CMAKE_CXX_FLAGS:STRING="-fpermissive $(MSHR_BUILDFLAGS)" \ + $(MSHR_HOME) + +ifeq (,$(DISTRIBUTION)) + DISTRIBUTION := $(shell dpkg-parsechangelog --format rfc822 | sed -ne "s/^Distribution: //p") +endif + +ifneq ($(DISTRIBUTION),$(findstring $(DISTRIBUTION),"squeeze wheezy lucid maverick natty oneiric precise quantal raring saucy trusty")) + DISTRIBUTION := sid +endif + +%: + dh $@ --buildsystem=cmake \ + --with python3 \ + --no-parallel + +override_dh_auto_clean: + dh_auto_clean + rm -rf python/build* + rm -rf python/mshr.egg-info + rm -rf debian/tmp64 + rm -rf $(BUILDDIR) $(BUILDDIR_64) + +override_dh_auto_configure: + PETSC_DIR=$(PETSC_DIR) SLEPC_DIR=$(SLEPC_DIR) dh_auto_configure --builddir=$(BUILDDIR) -- $(CMAKE_OPTS) + PETSC_DIR=$(PETSC64_DIR) SLEPC_DIR=$(SLEPC64_DIR) dh_auto_configure --builddir=$(BUILDDIR_64) -- $(CMAKE_OPTS) -DLIB_NAME_EXT="64" -DDOLFIN_LIB_NAME_EXT="64" + +override_dh_auto_build: + PETSC_DIR=$(PETSC_DIR) SLEPC_DIR=$(SLEPC_DIR) dh_auto_build --builddir=$(BUILDDIR) + PETSC_DIR=$(PETSC64_DIR) SLEPC_DIR=$(SLEPC64_DIR) dh_auto_build --builddir=$(BUILDDIR_64) + +override_dh_auto_install: + dh_auto_install --builddir=$(BUILDDIR) --destdir=debian/tmp + dh_auto_install --builddir=$(BUILDDIR_64) --destdir=debian/tmp64 + set -e; \ + for v in $(PYVERS); do \ + cd python; \ + PETSC_DIR=$(PETSC_DIR) SLEPC_DIR=$(SLEPC_DIR) \ + CMAKE_PREFIX_PATH=$(CURDIR)/debian/tmp/usr \ + $$v setup.py build --build-base=$(CURDIR)/python/build-$$v install --root=$(CURDIR)/debian/tmp --install-layout=deb; \ + PETSC_DIR=$(PETSC64_DIR) SLEPC_DIR=$(SLEPC64_DIR) \ + CMAKE_PREFIX_PATH=$(CURDIR)/debian/tmp64/usr MSHR_LIB_NAME_EXT="64" DOLFIN_LIB_NAME_EXT="64" \ + $$v setup.py build --build-base=$(CURDIR)/python/build64-$$v install --root=$(CURDIR)/debian/tmp64 --install-layout=deb; \ + cd ..; \ + done + dh_numpy3 + +override_dh_python3-arch: + dh_python3 -a + dh_numpy3 -a + mkdir -p debian/python3-mshr-real/$(MSHR_LIBDIR) + mv debian/python3-mshr-real/usr/lib/python3 debian/python3-mshr-real/$(MSHR_LIBDIR) + mkdir -p debian/python3-mshr64-real/$(MSHR64_LIBDIR) + mv debian/python3-mshr64-real/usr/lib/python3 debian/python3-mshr64-real/$(MSHR64_LIBDIR) + +override_dh_gencontrol: + dh_gencontrol -- -Vfenics:Upstream-Version=$(FENICS_VERSION) \ + -Vpybind11:Upstream-Version=$(PYBIND11_VERSION) -Vpybind11:Next-Upstream-Version=$(PYBIND11_NEXT_VERSION) + +# debug symbols (-g) have been switched off in CMAKE_OPTS for some arches, so no point building dbgsym packages +override_dh_strip: + case " $(ARCH_NO_DEBUG_SYMBOLS) " in \ + *\ $(DEB_HOST_ARCH)\ *) dh_strip --no-automatic-dbgsym;; \ + *) dh_strip;; \ + esac + +override_dh_dwz: + case " $(ARCH_NO_DEBUG_SYMBOLS) " in \ + *\ $(DEB_HOST_ARCH)\ *) echo "skipping dh_dwz since debug symbols (-g) have been switched off for $(DEB_HOST_ARCH)";; \ + *) dh_dwz;; \ + esac + +#override_dh_shlibdeps: +# dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info + +.PHONY: get-orig-source +get-orig-source: + uscan --force-download --verbose --destdir $(USCAN_DESTDIR) diff --git a/source/format b/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/tests/control b/tests/control new file mode 100644 index 0000000..88d3984 --- /dev/null +++ b/tests/control @@ -0,0 +1,8 @@ +Tests: test-mshr-python +Depends: python3-mshr, + python3-pytest + +Tests: test-mshr64-python, +Depends: python3-mshr64-real, + python3-mshr, + python3-pytest diff --git a/tests/test-mshr-python b/tests/test-mshr-python new file mode 100644 index 0000000..f2929b0 --- /dev/null +++ b/tests/test-mshr-python @@ -0,0 +1,13 @@ +DEB_HOST_ARCH=$( dpkg-architecture --query DEB_HOST_ARCH ) +if [ "${DEB_HOST_ARCH}" = "i386" ]; then + # skip test-meshes, which hangs on i386 + PYTEST_KEY="-k 'not test-meshes'" +fi + +echo "=== python unit tests ===" +eval python3 -m pytest -v "${PYTEST_KEY}" test/test.py + +echo "=== python demo tests ===" +DEMO_TEST_DIR=$AUTOPKGTEST_TMP +cp -r /usr/share/doc/python3-mshr/examples ${DEMO_TEST_DIR} +python3 -m pytest -v ${DEMO_TEST_DIR}/examples/test.py diff --git a/tests/test-mshr64-python b/tests/test-mshr64-python new file mode 100644 index 0000000..f241d6a --- /dev/null +++ b/tests/test-mshr64-python @@ -0,0 +1,19 @@ +export PETSC_DIR=/usr/lib/petsc64 +export SLEPC_DIR=/usr/lib/slepc64 + +export MSHR_LIB_NAME_EXT=64 +export DOLFIN_LIB_NAME_EXT=64 + +DEB_HOST_ARCH=$( dpkg-architecture --query DEB_HOST_ARCH ) +if [ "${DEB_HOST_ARCH}" = "i386" ]; then + # skip test-meshes, which hangs on i386 + PYTEST_KEY="-k 'not test-meshes'" +fi + +echo "=== python unit tests for 64-bit build ===" +eval python3 -m pytest -v "${PYTEST_KEY}" test/test.py + +echo "=== python demo tests for 64-bit build ===" +DEMO_TEST_DIR=$AUTOPKGTEST_TMP +cp -r /usr/share/doc/python3-mshr/examples ${DEMO_TEST_DIR} +python3 -m pytest -v ${DEMO_TEST_DIR}/examples/test.py diff --git a/watch b/watch new file mode 100644 index 0000000..0bfb33d --- /dev/null +++ b/watch @@ -0,0 +1,3 @@ +version=3 +opts=dversionmangle=s/\+dfsg\d*$//,repacksuffix=+dfsg1 \ +https://bitbucket.org/fenics-project/mshr/downloads/mshr-(.*)\.tar\.gz