Subject: Re: povray: Fails to build (_Pragma errors)

From: Ivan Vilata i Balaguer <[email-masked]>
Date: Mon, 7 Feb 2022 23:43:18 +0100

Ivan Vilata i Balaguer (2022-01-26 22:57:18 +0100) wrote:

> Ivan Vilata i Balaguer (2022-01-17 20:58:40 +0100) wrote:
> 
> > Hi!  When trying to upgrade package `povray 3.7.0.8` from Guix commit
> > `404f6953` to that of commit `4a943cfd`, the build fails showing errors like
> > these: […]
> 
> I found what looks like the same issue reported in
> <https://github.com/POV-Ray/povray/issues/438>.
> 
> As a commenter suggested, I succeeded to build the package using Boost 1.78,
> […]  BTW, this is where I think they fixed the Boost issue for 1.78:
> <https://github.com/boostorg/math/pull/676/files>

So I tried to create a patch (attached) which just drops the fixed version of
`header_deprecated.hpp` from Boost 1.78 [1] in Povray's `source` directory,
since that include path has priority over the profile's Boost one during
build.  I tried building with:

    $ guix build povray --with-patch=povray=./povray-fix-boost-1.77-math-tools-pragma.patch
    […]
    /gnu/store/mp687jry3rb96ff3jbaijibz4klhjicd-povray-3.7.0.8

So it built successfully.

[1]: https://github.com/boostorg/math/blob/boost-1.78.0/include/boost/math/tools/header_deprecated.hpp

Thus, the patch may be applied until Boost is upgraded to 1.78, at which point
it can be removed.

Thanks!

-- 
Ivan Vilata i Balaguer -- https://elvil.net/
diff -Nur povray-3.7.0.8-checkout.orig/source/boost/math/tools/header_deprecated.hpp povray-3.7.0.8-checkout.new/source/boost/math/tools/header_deprecated.hpp
--- povray-3.7.0.8-checkout.orig/source/boost/math/tools/header_deprecated.hpp	1970-01-01 01:00:00.000000000 +0100
+++ povray-3.7.0.8-checkout.new/source/boost/math/tools/header_deprecated.hpp	2022-02-07 21:13:43.531100547 +0100
@@ -0,0 +1,27 @@
+//  (C) Copyright Matt Borland 2021.
+//  Use, modification and distribution are subject to the
+//  Boost Software License, Version 1.0. (See accompanying file
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_MATH_TOOLS_HEADER_DEPRECATED
+#define BOOST_MATH_TOOLS_HEADER_DEPRECATED
+
+#ifndef BOOST_MATH_STANDALONE
+
+#   include <boost/config/header_deprecated.hpp>
+#   define BOOST_MATH_HEADER_DEPRECATED(expr) BOOST_HEADER_DEPRECATED(expr)
+
+#else
+
+#   ifdef _MSC_VER
+// Expands to "This header is deprecated; use expr instead."
+#       define BOOST_MATH_HEADER_DEPRECATED(expr) __pragma("This header is deprecated; use " expr " instead.")
+#   else // GNU, Clang, Intel, IBM, etc.
+// Expands to "This header is deprecated use expr instead"
+#       define BOOST_MATH_HEADER_DEPRECATED_MESSAGE(expr) _Pragma(#expr)
+#       define BOOST_MATH_HEADER_DEPRECATED(expr) BOOST_MATH_HEADER_DEPRECATED_MESSAGE(message "This header is deprecated use " expr " instead")
+#   endif
+
+#endif // BOOST_MATH_STANDALONE
+
+#endif // BOOST_MATH_TOOLS_HEADER_DEPRECATED