--- /dev/null
--- /dev/null
++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
--- /dev/null
--- /dev/null
++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).
--- /dev/null
--- /dev/null
++mshr (2019.2.0~git20230811.ff54a68+dfsg1-3) unstable; urgency=medium
++
++ * Upload to unstable
++
++ -- Francesco Ballarin <francesco.ballarin@unicatt.it> 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 <francesco.ballarin@unicatt.it> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> Tue, 21 May 2019 14:11:59 +0800
++
++mshr (2019.1.0+dfsg1-1) experimental; urgency=medium
++
++ * New upstream release (official).
++
++ -- Drew Parsons <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <dparsons@debian.org> 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 <johannr@simula.no> 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 <johannr@simula.no> 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 <johannr@simula.no> 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 <dparsons@debian.org> Fri, 20 May 2016 08:23:26 +0800
--- /dev/null
--- /dev/null
++Source: mshr
++Section: math
++Priority: optional
++Maintainer: Debian Science Team <debian-science-maintainers@lists.alioth.debian.org>
++Uploaders:
++ Johannes Ring <johannr@simula.no>,
++ Drew Parsons <dparsons@debian.org>,
++ Francesco Ballarin <francesco.ballarin@unicatt.it>
++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.6.2
++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).
--- /dev/null
--- /dev/null
++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 <benjamik@simula.no>
++Contributors:
++ Anders Logg <logg@chalmers.se>
++ Joachim B Haga
++ Johannes Ring <johannr@simula.no>
++ Lars Magnus Valnes
++ Garth N. Wells <gnw20@cam.ac.uk>
++Files-Excluded: 3rdparty/CGAL 3rdparty/tetgen1.5.0
++
++Files: *
++Copyright: © 2012-2017 Benjamin Kehlet <benjamik@simula.no>
++ 2012-2015 Anders Logg <logg@chalmers.se>
++ 2012 Johannes Ring <johannr@simula.no>
++ 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 <benjamik@simula.no>
++ 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 <johannr@simula.no>,
++ 2016 Drew Parsons <dparsons@debian.org>
++License: GPL-2+
++ /usr/share/common-licenses/GPL-2
--- /dev/null
--- /dev/null
++README.rst
--- /dev/null
--- /dev/null
++usr/include/mshr
++usr/include/mshr.h
++usr/lib/*/cmake/mshr
--- /dev/null
--- /dev/null
++usr/lib/**/*.so
++usr/bin/mshrable
--- /dev/null
--- /dev/null
++debian/mshrable.1
--- /dev/null
--- /dev/null
++usr/lib/**/lib*.so.*
--- /dev/null
--- /dev/null
++#!/bin/sh
++echo "debian/tmp64/usr/lib/**/libmshr64*.so.* usr/lib/${DEB_HOST_MULTIARCH}"
--- /dev/null
--- /dev/null
++debian/README.Debian
--- /dev/null
--- /dev/null
++#!/bin/sh
++echo "debian/tmp64/usr/lib/**/libmshr64*.so usr/lib/${DEB_HOST_MULTIARCH}"
--- /dev/null
--- /dev/null
++# 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);
--- /dev/null
--- /dev/null
++.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
--- /dev/null
--- /dev/null
++<!doctype refentry PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [
++ <!ENTITY dhfirstname "<firstname>Drew</firstname>">
++ <!ENTITY dhsurname "<surname>Parsons</surname>">
++ <!-- Please adjust the date whenever revising the manpage. -->
++ <!ENTITY dhdate "<date>19 May, 2016</date>">
++ <!ENTITY dhsection "<manvolnum>1</manvolnum>">
++ <!ENTITY dhemail "<email>dparsons@debian.org</email>">
++ <!ENTITY dhusername "Drew Parsons">
++ <!ENTITY dhucpackage "<refentrytitle>MSHRABLE</refentrytitle>">
++ <!ENTITY dhpackage "mshrable">
++
++ <!ENTITY debian "<productname>Debian GNU/Linux</productname>">
++ <!ENTITY gnu "<acronym>GNU</acronym>">
++]>
++
++<!-- generate the man page with "docbook-to-man mshrable.sgml > mshrable.1" -->
++
++<refentry>
++ <docinfo>
++ <address>
++ &dhemail;
++ </address>
++ <author>
++ &dhfirstname;
++ &dhsurname;
++ </author>
++ <copyright>
++ <year>2001</year>
++ <holder>&dhusername;</holder>
++ </copyright>
++ &dhdate;
++ </docinfo>
++ <refmeta>
++ &dhucpackage;
++
++ &dhsection;
++ </refmeta>
++ <refnamediv>
++ <refname>&dhpackage;</refname>
++
++ <refpurpose>Generate mesh from surface file</refpurpose>
++ </refnamediv>
++ <refsynopsisdiv>
++ <cmdsynopsis>
++ <command>&dhpackage;</command>
++ <arg>-f <replaceable>FILE</replaceable></arg>
++ </cmdsynopsis>
++ </refsynopsisdiv>
++
++ <refsect1>
++ <title>DESCRIPTION</title>
++
++ <para><command>&dhpackage;</command> 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.
++ </para>
++</refsect1>
++
++<refsect1>
++ <title>OPTIONS</title>
++<para>
++ <variablelist>
++ <varlistentry>
++ <term>-o [--outfile] <replaceable>arg</replaceable></term>
++ <listitem>
++ <para>
++ Filename of generated Dolfin mesh.
++ </para>
++ </listitem>
++ </varlistentry>
++
++ <varlistentry>
++ <term>-r [--resolution] <replaceable>arg (=15)</replaceable></term>
++ <listitem>
++ <para>
++ Resolution of result mesh.
++ </para>
++ </listitem>
++ </varlistentry>
++
++ <varlistentry>
++ <term>-s [--stats]</term>
++ <listitem>
++ <para>
++ Write some statistics of the mesh to stdout.
++ </para>
++ </listitem>
++ </varlistentry>
++
++ <varlistentry>
++ <term>--polyout <replaceable>arg</replaceable></term>
++ <listitem>
++ <para>
++ Write the polyhedron to .poly which Tetgen can read
++ (and do not create a mesh).
++ </para>
++ </listitem>
++ </varlistentry>
++
++ <varlistentry>
++ <term>--polystats</term>
++ <listitem>
++ <para>
++ Write statistics of polyhedron (and do not create a
++ mesh).
++ </para>
++ </listitem>
++ </varlistentry>
++
++ <varlistentry>
++ <term>-b [--backend] <replaceable>arg (=cgal)</replaceable></term>
++ <listitem>
++ <para>
++ Use 3D mesh generation backend [tetgen|cgal].
++ </para>
++ </listitem>
++ </varlistentry>
++
++ <varlistentry>
++ <term>--degenerate_tolerance <replaceable>arg (=9.9999999999999998e-13)</replaceable></term>
++ <listitem>
++ <para>
++ Tolerance for considering a facet as degenerate. Set
++ to 0 to not remove degenerate facets.
++ </para>
++ </listitem>
++ </varlistentry>
++
++ <varlistentry>
++ <term>--check-mesh</term>
++ <listitem>
++ <para>
++ Check consistency of output mesh (most for debugging/testing.
++ </para>
++ </listitem>
++ </varlistentry>
++
++ <varlistentry>
++ <term>-v [--verbose]</term>
++ <listitem>
++ <para>
++ Output more information about what is going on.
++ </para>
++ </listitem>
++ </varlistentry>
++
++ <varlistentry>
++ <term>-h [--help]</term>
++ <listitem>
++ <para>
++ write help message.
++ </para>
++ </listitem>
++ </varlistentry>
++ </variablelist>
++</para>
++</refsect1>
++
++ <refsect1>
++ <title>SEE ALSO</title>
++
++ <para>dolfin-convert (1), dolfin-order (1)</para>
++ </refsect1>
++ <refsect1>
++ <title>AUTHOR</title>
++ <para><command>&dhpackage;</command> was written by Benjamin
++ Kehlet <email>benjamik@simula.no</email>. This man page was written by
++ &dhusername; &dhemail;.
++ </para>
++
++
++ <!-- <para>Permission is granted to copy, distribute and/or modify
++ this document under the terms of the <acronym>GNU</acronym> Free
++ Documentation License, Version 1.1 or any later version
++ published by the Free Software Foundation; with no Invariant
++ Sections, no Front-Cover Texts and no Back-Cover Texts. A copy
++ of the license can be found under
++ <filename>/usr/share/common-licenses/FDL</filename>.</para> -->
++
++ </refsect1>
++</refentry>
++
++<!-- Keep this comment at the end of the file
++Local variables:
++mode: sgml
++sgml-omittag:t
++sgml-shorttag:t
++sgml-minimize-attributes:nil
++sgml-always-quote-attributes:t
++sgml-indent-step:2
++sgml-indent-data:t
++sgml-parent-document:nil
++sgml-default-dtd-file:nil
++sgml-exposed-tags:nil
++sgml-local-catalogs:nil
++sgml-local-ecat-files:nil
++End:
++-->
++
--- /dev/null
--- /dev/null
++--- 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<Point_2>(&*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<Segment_2>(&*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<Exact_Point_3>(&*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<InexactPoint_2>(&*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<InexactSegment_2>(&*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<Point_3>(&*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<Segment_3>(&*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<Point_3>(&*result))
+++ Point_3 p;
+++ Segment_3 s;
+++ Triangle_3 t;
+++ std::vector<Point_3> 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<Segment_3>(&*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<Triangle_3>(&*result))
+++ else if (CGAL::assign(t, result))
++ return true;
++- else if (const std::vector<Point_3>* v = boost::get<std::vector<Point_3> >(&*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<Point_3>(&*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<Segment_3>(&*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<Segment_3>(&*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<Point_3>(&*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<Triangle_3>(&*result))
+++ else if (CGAL::assign(t, result))
++ {
++- ss << "Triangle: " << *t << std::endl;
+++ ss << "Triangle: " << t << std::endl;
++ }
++ else
++ {
--- /dev/null
--- /dev/null
++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
--- /dev/null
--- /dev/null
++test_controls.diff
++lib_rename.patch
++CGAL_6_compatibility.diff
--- /dev/null
--- /dev/null
++--- /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)
--- /dev/null
--- /dev/null
++usr/lib/python3*/*-packages/*
--- /dev/null
--- /dev/null
++demo/python/*
--- /dev/null
--- /dev/null
++debian/mshr.pth usr/lib/python3/dist-packages/
--- /dev/null
--- /dev/null
++debian/README.Debian
--- /dev/null
--- /dev/null
++#!/bin/sh
++echo "debian/tmp64/usr/lib/python3*/dist-packages/* usr/lib/python3/dist-packages"
--- /dev/null
--- /dev/null
++#!/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)
--- /dev/null
--- /dev/null
++3.0 (quilt)
--- /dev/null
--- /dev/null
++Tests: test-mshr-python
++Depends: python3-mshr,
++ python3-pytest
++
++Tests: test-mshr64-python,
++Depends: python3-mshr64-real,
++ python3-mshr,
++ python3-pytest
--- /dev/null
--- /dev/null
++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
--- /dev/null
--- /dev/null
++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
--- /dev/null
--- /dev/null
++version=3
++opts=dversionmangle=s/\+dfsg\d*$//,repacksuffix=+dfsg1 \
++https://bitbucket.org/fenics-project/mshr/downloads/mshr-(.*)\.tar\.gz