[deal.ii] 02/02: Cherry-pick part of upstream fix for a build failure with new PETSc

Graham Inggs ginggs at moszumanska.debian.org
Wed Aug 24 15:01:55 UTC 2016


This is an automated email from the git hooks/post-receive script.

ginggs pushed a commit to branch master
in repository deal.ii.

commit 7e89fea90e5c61931da1aad8c23cfec2c11c0d3f
Author: Graham Inggs <ginggs at debian.org>
Date:   Wed Aug 24 15:50:13 2016 +0200

    Cherry-pick part of upstream fix for a build failure with new PETSc
---
 debian/changelog                 |   2 +
 debian/patches/petsc_3.7.0.patch | 162 +++++++++++++++++++++++++++++++++++++++
 debian/patches/series            |   1 +
 3 files changed, 165 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 7cfa241..ef1e60f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,8 @@
 deal.ii (8.4.1-3) UNRELEASED; urgency=medium
 
   * Limit parallel builds to 2 processes
+  * Cherry-pick part of upstream fix for a build failure with new PETSc,
+    thanks Gianfranco Costamagna
 
  -- Graham Inggs <ginggs at debian.org>  Wed, 24 Aug 2016 15:41:03 +0200
 
diff --git a/debian/patches/petsc_3.7.0.patch b/debian/patches/petsc_3.7.0.patch
new file mode 100644
index 0000000..6d96e58
--- /dev/null
+++ b/debian/patches/petsc_3.7.0.patch
@@ -0,0 +1,162 @@
+From b31f9715d09aea1a1a97a48cfbe4ef86baf59b8a Mon Sep 17 00:00:00 2001
+From: David Wells <wellsd2 at rpi.edu>
+Date: Thu, 7 Jul 2016 05:50:59 -0400
+Subject: [PATCH] Fix compilation with PETSc 3.7.0.
+
+---
+ include/deal.II/lac/petsc_compatibility.h | 55 +++++++++++++++++++++++++++++++
+ source/lac/petsc_precondition.cc          | 43 ++++++++++++------------
+ 5 files changed, 94 insertions(+), 30 deletions(-)
+ create mode 100644 include/deal.II/lac/petsc_compatibility.h
+
+--- /dev/null
++++ b/include/deal.II/lac/petsc_compatibility.h
+@@ -0,0 +1,55 @@
++// ---------------------------------------------------------------------
++//
++// Copyright (C) 2016 by the deal.II authors
++//
++// This file is part of the deal.II library.
++//
++// The deal.II library is free software; you can use it, redistribute
++// it, and/or modify it under the terms of the GNU Lesser General
++// Public License as published by the Free Software Foundation; either
++// version 2.1 of the License, or (at your option) any later version.
++// The full text of the license can be found in the file LICENSE at
++// the top level of the deal.II distribution.
++//
++// ---------------------------------------------------------------------
++
++/*
++ * Rather than using ifdefs everywhere, try to wrap older versions of PETSc
++ * functions in one place.
++ */
++#ifndef dealii__petsc_compatibility_h
++#define dealii__petsc_compatibility_h
++
++#include <deal.II/base/config.h>
++
++#ifdef DEAL_II_WITH_PETSC
++
++#include <petscconf.h>
++#include <petscpc.h>
++
++#include <string>
++
++DEAL_II_NAMESPACE_OPEN
++
++namespace PETScWrappers
++{
++  /**
++   * Set an option in the global PETSc database. This function just wraps
++   * PetscOptionsSetValue with a version check (the signature of this function
++   * changed in PETSc 3.7.0).
++   */
++  inline void set_option_value (const std::string &name,
++                                const std::string &value)
++  {
++#if DEAL_II_PETSC_VERSION_LT(3, 7, 0)
++    PetscOptionsSetValue (name.c_str (), value.c_str ());
++#else
++    PetscOptionsSetValue (NULL, name.c_str (), value.c_str ());
++#endif
++  }
++}
++
++DEAL_II_NAMESPACE_CLOSE
++
++#endif // DEAL_II_WITH_PETSC
++#endif // dealii__petsc_compatibility_h
+--- a/source/lac/petsc_precondition.cc
++++ b/source/lac/petsc_precondition.cc
+@@ -18,6 +18,7 @@
+ #ifdef DEAL_II_WITH_PETSC
+ 
+ #  include <deal.II/base/utilities.h>
++#  include <deal.II/lac/petsc_compatibility.h>
+ #  include <deal.II/lac/petsc_matrix_base.h>
+ #  include <deal.II/lac/petsc_vector_base.h>
+ #  include <deal.II/lac/petsc_solver.h>
+@@ -487,32 +488,32 @@
+     AssertThrow (ierr == 0, ExcPETScError(ierr));
+ 
+     if (additional_data.output_details)
+-      PetscOptionsSetValue("-pc_hypre_boomeramg_print_statistics","1");
++      {
++        set_option_value("-pc_hypre_boomeramg_print_statistics", "1");
++      }
+ 
+-    PetscOptionsSetValue("-pc_hypre_boomeramg_agg_nl",
+-                         Utilities::int_to_string(
+-                           additional_data.aggressive_coarsening_num_levels
+-                         ).c_str());
++    set_option_value("-pc_hypre_boomeramg_agg_nl",
++                     Utilities::to_string(additional_data.aggressive_coarsening_num_levels));
+ 
+     std::stringstream ssStream;
+     ssStream << additional_data.max_row_sum;
+-    PetscOptionsSetValue("-pc_hypre_boomeramg_max_row_sum", ssStream.str().c_str());
++    set_option_value("-pc_hypre_boomeramg_max_row_sum", ssStream.str());
+ 
+     ssStream.str(""); // empty the stringstream
+     ssStream << additional_data.strong_threshold;
+-    PetscOptionsSetValue("-pc_hypre_boomeramg_strong_threshold", ssStream.str().c_str());
++    set_option_value("-pc_hypre_boomeramg_strong_threshold", ssStream.str());
+ 
+     if (additional_data.symmetric_operator)
+       {
+-        PetscOptionsSetValue("-pc_hypre_boomeramg_relax_type_up", "symmetric-SOR/Jacobi");
+-        PetscOptionsSetValue("-pc_hypre_boomeramg_relax_type_down", "symmetric-SOR/Jacobi");
+-        PetscOptionsSetValue("-pc_hypre_boomeramg_relax_type_coarse", "Gaussian-elimination");
++        set_option_value("-pc_hypre_boomeramg_relax_type_up", "symmetric-SOR/Jacobi");
++        set_option_value("-pc_hypre_boomeramg_relax_type_down", "symmetric-SOR/Jacobi");
++        set_option_value("-pc_hypre_boomeramg_relax_type_coarse", "Gaussian-elimination");
+       }
+     else
+       {
+-        PetscOptionsSetValue("-pc_hypre_boomeramg_relax_type_up", "SOR/Jacobi");
+-        PetscOptionsSetValue("-pc_hypre_boomeramg_relax_type_down", "SOR/Jacobi");
+-        PetscOptionsSetValue("-pc_hypre_boomeramg_relax_type_coarse", "Gaussian-elimination");
++        set_option_value("-pc_hypre_boomeramg_relax_type_up", "SOR/Jacobi");
++        set_option_value("-pc_hypre_boomeramg_relax_type_down", "SOR/Jacobi");
++        set_option_value("-pc_hypre_boomeramg_relax_type_coarse", "Gaussian-elimination");
+       }
+ 
+     ierr = PCSetFromOptions (pc);
+@@ -588,7 +589,9 @@
+     AssertThrow (ierr == 0, ExcPETScError(ierr));
+ 
+     if (additional_data.output_details)
+-      PetscOptionsSetValue("-pc_hypre_parasails_logging","1");
++      {
++        set_option_value("-pc_hypre_parasails_logging","1");
++      }
+ 
+     Assert ((additional_data.symmetric == 0 ||
+              additional_data.symmetric == 1 ||
+@@ -622,20 +625,18 @@
+                 ExcMessage("ParaSails parameter symmetric can only be equal to 0, 1, 2!"));
+       };
+ 
+-    PetscOptionsSetValue("-pc_hypre_parasails_sym",ssStream.str().c_str());
++    set_option_value("-pc_hypre_parasails_sym",ssStream.str());
+ 
+-    PetscOptionsSetValue("-pc_hypre_parasails_nlevels",
+-                         Utilities::int_to_string(
+-                           additional_data.n_levels
+-                         ).c_str());
++    set_option_value ("-pc_hypre_parasails_nlevels",
++                      Utilities::to_string(additional_data.n_levels));
+ 
+     ssStream.str(""); // empty the stringstream
+     ssStream << additional_data.threshold;
+-    PetscOptionsSetValue("-pc_hypre_parasails_thresh", ssStream.str().c_str());
++    set_option_value("-pc_hypre_parasails_thresh", ssStream.str());
+ 
+     ssStream.str(""); // empty the stringstream
+     ssStream << additional_data.filter;
+-    PetscOptionsSetValue("-pc_hypre_parasails_filter", ssStream.str().c_str());
++    set_option_value("-pc_hypre_parasails_filter", ssStream.str());
+ 
+     ierr = PCSetFromOptions (pc);
+     AssertThrow (ierr == 0, ExcPETScError(ierr));
diff --git a/debian/patches/series b/debian/patches/series
index 29b8835..a7c77e3 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
 allow_different_slepc_petsc_versions.patch
 use_fPIC_instead_of_fpic.patch
+petsc_3.7.0.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/deal.ii.git



More information about the debian-science-commits mailing list