tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Incorrect Boost::headers.INTERFACE_INCLUDE_DIRECTORIES



On Sunday  8 Feb 2026, at 14:40, Thomas Klausner wrote:
> I don't know the codebase either. Reading a bit, I found that
> the scripts are generated by probably generated by boost-jam, see
> work/boost_1_90_0/tools/boost_install/boost-install.jam

Ok, thanks for the hint!
I got some kind of fix, not sure what is wrong extactly though.

For some reason, without the first attached patch
(boost-install-dirs.jam), "stage-includedir" is set the BOOST_ROOT
variable corresponding to the staging directory (WRKSRC/stage) without
the "include" subdir. This messes up the generated config files as the
include dir is computed relative to the staged cmake config file. Just
removing this bit makes the stage-includedir correct. I don't think
this can have an impact since no headers are installed in the staged
install dir anyway.

> but they embed the working directory, so they need fixing either way.

While here, I stumbled accross the weird rules in boost-install.jam
which generates those references to WRKSRC. Seems fine to drop this, as
this is anyway broken. See second patch (boost-install.jam).

Note that I tested this with pkgsrc-2025Q3 (boot-1.87.0) only, I don't
have a quick access to pkgsrc-current. I guess it won't be too
different for boost-1.90.0, but tell me if you have issues testing this.

For some reason, without this patch, "stage-includedir" is set the BOOST_ROOT
variable corresponding to the staging directory (WRKSRC/stage) without the
"include" subdir. This messes up the cmake *-config.cmake files generated
during the staged build.

--- tools/boost_install/boost-install-dirs.jam~	2026-02-08 15:15:36.607376751 +0100
+++ tools/boost_install/boost-install-dirs.jam	2026-02-08 17:01:24.597759778 +0100
@@ -69,10 +69,6 @@
         ld = [ path.root [ path.make $(ld) ] [ path.pwd ] ] ;
         return $(ld) ;
     }
-    else if [ modules.peek boostcpp : BOOST_ROOT ]
-    {
-        return [ path.make [ modules.peek boostcpp : BOOST_ROOT ] ] ;
-    }
     else
     {
         local stagedir = [ stagedir ] ;
path.is-rooted $(cmakedir) is always true in pkgsrc but generates references to
the working directory. This is useless anyway so it seems fine to drop this.

--- tools/boost_install/boost-install.jam~	2026-02-08 15:15:36.607376751 +0100
+++ tools/boost_install/boost-install.jam	2026-02-08 17:08:33.462957338 +0100
@@ -797,7 +797,7 @@
         "get_filename_component(_BOOST_CMAKEDIR \"${CMAKE_CURRENT_LIST_DIR}/../\" REALPATH)"
         : true ;
 
-    if [ path.is-rooted $(cmakedir) ]
+    if ""
     {
         local cmakedir-native = [ path-native-fwd $(cmakedir) ] ;
 


Home | Main Index | Thread Index | Old Index