Ticket #19834: boost-1.39.0.diff

File boost-1.39.0.diff, 13.1 KB (added by nox@…, 15 years ago)

My own attempt to update Boost Portfile

  • files/libs-random-build-Jamfile.v2

     
     1# Copyright (c) 2006 Tiziano Mueller
     2#
     3# Use, modification and distribution of the file is subject to the
     4# Boost Software License, Version 1.0.
     5# (See at http://www.boost.org/LICENSE_1_0.txt)
     6
     7
     8project boost/random
     9        : source-location ../ ;
     10
     11SOURCES = random_device ;
     12
     13lib boost_random
     14        : $(SOURCES).cpp
     15        : <link>shared:<define>BOOST_RANDOM_DYN_LINK=1 ;
  • files/patch-configure.diff

     
    1 --- configure.orig      2008-04-29 14:46:53.000000000 -0400
    2 +++ configure   2008-12-07 13:24:30.000000000 -0500
    3 @@ -9,7 +9,11 @@
    4  
    5  BJAM=""
    6  TOOLSET=""
    7 -BJAM_CONFIG=""
    8 +BJAM_CONFIG="__MACPORTS_BJAM_CONFIG__"
    9 +# Handle MACOSX_DEPLOYMENT_TARGET
    10 +if test "x$MACOSX_DEPLOYMENT_TARGET" != x; then
    11 +    BJAM_CONFIG="$BJAM_CONFIG macosx-version=$MACOSX_DEPLOYMENT_TARGET"
    12 +fi
    13  BUILD=""
    14  PREFIX=/usr/local
    15  EPREFIX=
  • files/patch-libs-mpi-build-Jamfile.v2.diff

     
     1--- libs/mpi/build/Jamfile.v2.orig      2009-06-11 01:57:28.000000000 +0200
     2+++ libs/mpi/build/Jamfile.v2   2009-06-11 01:57:28.000000000 +0200
     3@@ -99,6 +99,7 @@
     4         <link>shared:<define>BOOST_PYTHON_DYN_LINK=1   
     5         <link>shared
     6         <variant>release   
     7+       <threading>multi
     8       ;
     9   }
     10 }
  • files/patch-libs-random-random_device.cpp.diff

     
     1--- libs/random/random_device.cpp.orig  2009-06-11 15:27:21.000000000 +0200
     2+++ libs/random/random_device.cpp       2009-06-11 15:28:01.000000000 +0200
     3@@ -22,7 +22,7 @@
     4 #endif
     5 
     6 
     7-#if defined(__linux__) || defined (__FreeBSD__)
     8+#if defined(__linux__) || defined (__FreeBSD__) || defined(__APPLE__)
     9 
     10 // the default is the unlimited capacity device, using some secure hash
     11 // try "/dev/random" for blocking when the entropy pool has drained
  • Portfile

     
    33PortSystem 1.0
    44
    55name                    boost
    6 version                 1.38.0
     6version                 1.39.0
    77categories              devel
    88maintainers             gmail.com:sanchom
    99description             Collection of portable C++ source libraries
    10 long_description        Boost provides free portable peer-reviewed C++ \
     10long_description        Boost provides free portable peer-reviewed C++ \
    1111                        libraries. The emphasis is on portable libraries \
    1212                        which work well with the C++ Standard Library.
    1313homepage                http://www.boost.org
    1414master_sites            sourceforge
    15 distname                ${name}_[strsed ${version} {g/[.]/_/}]
     15distname                ${name}_[join [split ${version} .] _]
    1616use_bzip2               yes
    17 checksums               md5 5eca2116d39d61382b8f8235915cb267 \
    18                         sha1 b32ff8133b0a38a74553c0d33cb1d70b3ce2d8f1 \
    19                         rmd160 1d7eb126151e4363ecd5617082cd45674f1352be
     17checksums               md5     a17281fd88c48e0d866e1a12deecbcc0 \
     18                        sha1    6af42f74ab24ccc51589a025593bad298c8adde8 \
     19                        rmd160  4962256b48fa8563bf373b8bed97cc8655206a51
    2020platforms               darwin
    2121use_parallel_build      yes
    2222
    23 # not autoconf
    24 universal_variant       no
     23patchfiles              patch-libs-random-random_device.cpp.diff
    2524
    26 patchfiles              patch-configure.diff
     25post-extract {
     26        file mkdir ${worksrcpath}/libs/random/build
     27        copy ${filesdir}/libs-random-build-Jamfile.v2 ${worksrcpath}/libs/random/build/Jamfile.v2
     28}
    2729
    2830depends_build           path:bin/bjam:boost-jam
    2931depends_lib             port:zlib port:bzip2
    3032
    31 build.env-append        BZIP2_INCLUDE=${prefix}/include BZIP2_LIBPATH=${prefix}/lib \
    32                         ZLIB_INCLUDE=${prefix}/include ZLIB_LIBPATH=${prefix}/lib
    33 destroot.env-append     BZIP2_INCLUDE=${prefix}/include BZIP2_LIBPATH=${prefix}/lib \
    34                         ZLIB_INCLUDE=${prefix}/include ZLIB_LIBPATH=${prefix}/lib
    35 
    36 platform darwin 9 {
    37         depends_build-append    port:gmake
    38         build.cmd               gmake
     33configure {
     34        reinplace -E "s|-install_name \"|&${prefix}/lib/|" \
     35                ${worksrcpath}/tools/build/v2/tools/darwin.jam
     36        touch ${worksrcpath}/user-config.jam
    3937}
    4038
    41 post-patch {
    42         # --layout=system
    43         #     (don't put compiler name or version number in the libraries;
    44         #      don't put version number in the include directory)
    45         #     [default: off]
    46         #
    47         # link=shared,static (build static and dynamic libraries)
    48         #     [default: link=shared,static]
    49         #
    50         # runtime-link=shared,static
    51         #     (link to static and shared C and C++ runtime (e.g. use -lstdc++-static))
    52         #     static runtime-link libraries are of the form *-s.a or -sd.a
    53         #     [default: runtime-link=shared]
    54         #
    55         # threading=single,multi
    56         #     (build single- and multi-threaded libraries)
    57         #     multi-threaded libraries are of the form of *-mt.dylib, -mt-d.dylib, *-mt.a, *-mt-s.a, *-mt-d.a, or *-mt-ds.a
    58         #     [default: threading=multi]
    59         #
    60         # debug release
    61         #     (buil debug and release versions of libraries)
    62         #     debug libraries are of the form *-d.dylib, *-d.a, or *-ds.a
    63         #     [default: release]
    64         #
    65         set bjam_config "--layout=system link=shared,static runtime-link=shared,static"
    66         if { [variant_isset st] } {
    67                 append bjam_config " threading=single,multi"
    68         }
    69         if { [variant_isset debug] } {
    70                 append bjam_config " debug release"
    71         }
    72         reinplace "s|__MACPORTS_BJAM_CONFIG__|${bjam_config}|" ${worksrcpath}/configure
    73 }
     39build.cmd               bjam [portbuild::build_getmakejobs]
     40build.target
     41build.args              --toolset=darwin \
     42                        --debug-configuration \
     43                        --ignore-site-config \
     44                        --user-config=user-config.jam \
     45                        --without-python \
     46                        --without-mpi \
     47                        -sBZIP2_INCLUDE=${prefix}/include \
     48                        -sBZIP2_LIBPATH=${prefix}/lib \
     49                        -sZLIB_INCLUDE=${prefix}/include \
     50                        -sZLIB_LIBPATH=${prefix}/lib
    7451
    75 post-configure {
    76         # Ensure that the correct compiler is used
    77         reinplace "s|using darwin ;|using darwin : : ${configure.cxx} ;|" ${worksrcpath}/user-config.jam
     52destroot.cmd            bjam
     53destroot.destdir        --prefix=${destroot}${prefix}
     54
     55pre-destroot {
     56        eval destroot.args      ${build.args}
    7857}
    7958
    80 platform darwin {
    81         post-destroot {
    82                 # ensure the identification name of the dynamic libraries agree
    83                 # with their final destination path (not the destroot path that
    84                 # they've just been installed to)
    85                 foreach lib [glob -directory ${destroot}${prefix}/lib/ *.dylib] {
    86                         set libtail [file tail ${lib}]
    87                         system "install_name_tool -id ${prefix}/lib/${libtail} ${lib}"
    88                 }
     59set pythons_suffixes {24 25 26}
    8960
    90                 # set the install_name for every library referenced by another library
    91                 # to include the final destination path as well
    92                 foreach lib [glob -tails -directory ${destroot}${prefix}/lib/ *.dylib] {
    93                         set installed_name ${prefix}/lib/${lib}
    94                         foreach lib2 [glob -directory ${destroot}${prefix}/lib/ *.dylib *.so] {
    95                                 system "install_name_tool -change ${lib} ${installed_name} ${lib2}"
    96                         }
    97                 }
     61set pythons_ports {}
     62foreach s ${pythons_suffixes} {
     63        lappend pythons_ports python${s}
     64}
    9865
    99                 # mpi.so needs to be in a specific directory for Python to find it
    100                 if { [file exists ${destroot}${prefix}/lib/mpi.so] } {
    101                         if { [variant_isset python24] } {
    102                                 set spkg ${prefix}/lib/python2.4/site-packages
    103                         } elseif { [variant_isset python25] } {
    104                                 set spkg ${prefix}/lib/python2.5/site-packages
    105                         } elseif { [variant_isset python26] } {
    106                                 set spkg ${frameworks_dir}/Python.framework/Versions/2.6/lib/python2.6/site-packages
    107                         }
    108 
    109                         set sodir ${spkg}/boost
    110                         xinstall -m 755 -d ${destroot}${sodir}
    111                         touch ${destroot}${sodir}/__init__.py
    112                         system "install_name_tool -id ${sodir}/mpi.so ${destroot}${prefix}/lib/mpi.so"
    113                         move ${destroot}${prefix}/lib/mpi.so ${destroot}${sodir}/mpi.so
     66proc python_dir {} {
     67        global pythons_suffixes
     68        foreach s ${pythons_suffixes} {
     69                if {[variant_isset python${s}]} {
     70                        set p python[string index ${s} 0].[string index ${s} 1]
     71                        return [exec ${p} -c "import sys; print sys.prefix"]/lib/${p}/site-packages
    11472                }
    11573        }
     74        error "Python support not enabled."
    11675}
    11776
    118 destroot.destdir        prefix=${destroot}${prefix}
    119 
    120 configure.args          --without-libraries=python --without-icu --with-bjam=${prefix}/bin/bjam
    121 
    122 variant python24 description {build python 2.4 support} conflicts python25 python26 {
    123         set pyversion           2.4
    124         depends_lib-append      port:python[strsed ${pyversion} {g/[.]//}]
    125 
    126         configure.args-delete   --without-libraries=python
    127         configure.args-append   --with-python=${prefix}/bin/python${pyversion}
     77proc write_jam s {
     78        global worksrcpath
     79        set config [open ${worksrcpath}/user-config.jam a]
     80        puts ${config} ${s}
     81        close ${config}
    12882}
    12983
    130 variant python25 description {build python 2.5 support} conflicts python24 python26 {
    131         set pyversion           2.5
    132         depends_lib-append      port:python[strsed ${pyversion} {g/[.]//}]
     84foreach s ${pythons_suffixes} {
     85        set p python${s}
     86        set v [string index ${s} 0].[string index ${s} 1]
     87        set i [lsearch -exact ${pythons_ports} ${p}]
     88        set c [lreplace ${pythons_ports} ${i} ${i}]
     89        eval [subst {
     90                variant ${p} description "Build Boost.Python for Python ${v}" conflicts ${c} {
     91                        depends_lib-append      port:${p}
     92                        build.args-delete       --without-python
    13393
    134         configure.args-delete   --without-libraries=python
    135         configure.args-append   --with-python=${prefix}/bin/python${pyversion}
     94                        post-configure {
     95                                write_jam "using python : : ${prefix}/bin/python${v} ;"
     96                        }
     97                }
     98        }]
    13699}
    137100
    138 variant python26 description {build python 2.6 support} conflicts python24 python25 {
    139         set pyversion           2.6
    140         depends_lib-append      port:python[strsed ${pyversion} {g/[.]//}]
    141 
    142         configure.args-delete   --without-libraries=python
    143         configure.args-append   --with-python=${prefix}/bin/python${pyversion}
    144 }
    145 
    146 variant icu description {enable Unicode/ICU support in Regex} {
     101variant icu description {Enable Unicode support in Boost.Regex through ICU} {
    147102        depends_lib-append      port:icu
    148 
    149         configure.args-delete   --without-icu
    150         configure.args-append   --with-icu=${prefix}
     103        build.args-append       -sICU_PATH=${prefix}
    151104}
    152105
    153 variant graphml description {enable GraphML support} {
     106variant graphml description {Enable GraphML support in Boost.Graph} {
    154107        depends_lib-append      port:expat
    155 
    156         build.env-append            EXPAT_INCLUDE=${prefix}/include EXPAT_LIBPATH=${prefix}/lib
    157         destroot.env-append         EXPAT_INCLUDE=${prefix}/include EXPAT_LIBPATH=${prefix}/lib
     108        build.args-append       -sEXPAT_INCLUDE=${prefix}/include \
     109                                -sEXPAT_LIBPATH=${prefix}/lib
    158110}
    159111
    160 variant openmpi description {build mpi support} {
     112variant openmpi description {Build Boost.MPI} {
    161113        depends_lib-append      port:openmpi
     114        build.args-delete       --without-mpi
    162115
    163     post-configure {
    164         set config [open ${worksrcpath}/user-config.jam a]
    165         puts ${config} "\nusing mpi : ${prefix}/bin/openmpicxx ;"
    166         close ${config}
    167     }
     116        post-configure {
     117                write_jam "using mpi : ${prefix}/bin/openmpic++ : : ${prefix}/bin/openmpirun ;"
     118        }
     119
     120        if {![catch python_dir]} {
     121                if {[variant_isset st]} {
     122                        patchfiles-append       patch-libs-mpi-build-Jamfile.v2.diff
     123                }
     124
     125                post-destroot {
     126                        set site_packages [python_dir]
     127                        xinstall -d ${destroot}${site_packages}/boost
     128                        xinstall -m 644 ${worksrcpath}/libs/mpi/build/__init__.py \
     129                                ${destroot}${site_packages}/boost
     130
     131                        set l ${site_packages}/boost/mpi.so
     132                        move ${destroot}${prefix}/lib/mpi.so ${destroot}${l}
     133                        system "install_name_tool -id ${l} ${destroot}${l}"
     134                }
     135        }
    168136}
    169137
    170 variant docs description {install documentation} {
    171     post-destroot {
    172         # Install HTML documentation
    173         xinstall -d ${destroot}${prefix}/share/doc/${name}
    174         xinstall -W ${worksrcpath} index.htm index.html boost.css rst.css boost.png \
    175             ${destroot}${prefix}/share/doc/${name}
    176         file copy ${worksrcpath}/doc ${destroot}${prefix}/share/doc/${name}
    177         file copy ${worksrcpath}/more ${destroot}${prefix}/share/doc/${name}
    178         file copy ${worksrcpath}/tools ${destroot}${prefix}/share/doc/${name}
    179         file copy ${worksrcpath}/libs ${destroot}${prefix}/share/doc/${name}
    180         file copy ${worksrcpath}/wiki ${destroot}${prefix}/share/doc/${name}
    181     }
     138variant debug description {Build debug libraries} {
     139        build.args-append       variant=debug,release
    182140}
    183141
    184 variant debug description {build debug libraries} {}
     142variant doc description {Install documentation} {
     143        post-destroot {
     144                set docdir ${prefix}/share/doc/${name}-${version}
     145                xinstall -d ${destroot}${docdir}
     146                set l [expr [string length ${worksrcpath}] + 1]
     147                fs-traverse f [glob -directory ${worksrcpath} *] {
     148                        set dest ${destroot}${docdir}/[string range ${f} ${l} end]
     149                        if {[file isdirectory ${f}]} {
     150                                xinstall -d ${dest}
     151                        } elseif {[lsearch -exact {css htm html png svg} [string range [file extension ${f}] 1 end]] != -1} {
     152                                xinstall -m 644 ${f} ${dest}
     153                        }
     154                }
     155        }
     156}
    185157
    186 variant st description {build single-threaded libraries} {}
     158variant st description {Build single-threaded libraries} {
     159        build.args-append       threading=single,multi
     160}
     161
     162variant universal {
     163        # TODO: Handle 64 bits adressing.
     164        build.args-append       architecture=combined
     165}