[50870] trunk/dports/graphics/vtk-devel/Portfile

Ryan Schmidt ryandesign at macports.org
Tue May 12 00:04:06 PDT 2009


On May 11, 2009, at 20:59, dweber at macports.org wrote:

> Revision: 50870
>           http://trac.macports.org/changeset/50870
> Author:   dweber at macports.org
> Date:     2009-05-11 18:59:13 -0700 (Mon, 11 May 2009)
> Log Message:
> -----------
> bug-fix for py26 library path; currently working on database support
>
> Modified Paths:
> --------------
>     trunk/dports/graphics/vtk-devel/Portfile
>
> Modified: trunk/dports/graphics/vtk-devel/Portfile
> ===================================================================
> --- trunk/dports/graphics/vtk-devel/Portfile	2009-05-12 01:57:43  
> UTC (rev 50869)
> +++ trunk/dports/graphics/vtk-devel/Portfile	2009-05-12 01:59:13  
> UTC (rev 50870)
> @@ -38,7 +38,7 @@
>  build.type      gnu
>  build.dir       ${workpath}/${distname}-build
>
> -# Using this dummy stage to inspect MacPorts variables (using  
> 'port -d fetch vtk-devel')
> +# Using this dummy stage to inspect macport variables (using 'port  
> -d fetch vtk-devel')
>  #fetch { system "echo ${distfiles} && echo ${checksums}" }
>
>  post-extract {
> @@ -344,11 +344,11 @@
>
>  # --- Language wrappers: java, python, tcl
>  #
> -# VTK has its own language parser, it doesn't depend on swig or  
> cableswig (as
> +# VTK has it's own language parser, it doesn't depend on swig or  
> cableswig (as
>  # of May 2009).  Since the VTK CVS repository and source  
> distributions include
>  # the output of byacc and flex, there is no need for a dependency  
> on these
>  # to build VTK.  If that were to change at some point, use byacc  
> and not bison,
> -# i.e.: depends_build-append port:byacc port:flex
> +# ie: depends_build-append port:byacc port:flex
>
>
>  variant java description {java wrapper} {
> @@ -358,7 +358,7 @@
>          -DVTK_WRAP_JAVA:BOOL=ON
>      #
>      # All of the following were detected automatically by cmake.   
> They use the
> -    # system java framework.  To replace them with a MacPorts  
> java, reset
> +    # system java framework.  To replace them with a macports  
> java, reset
>      # these variables and add the required dependencies.
>      #
>      #JAVA_ARCHIVE:FILEPATH=/usr/bin/jar
> @@ -376,7 +376,7 @@
>  # that may require separate ports because the build and install  
> process for vtk
>  # can only work with one at a time.  The build is a lengthy  
> process and there
>  # may be no easy way to short-circuit it with a dependency on a  
> prior binary
> -# install of vtk.  If there are separate ports of vtk for  
> different versions of
> +# install of vtk.  If there are seperate ports of vtk for  
> different versions of
>  # python, each port will incur a lengthy build process.  Moreover,  
> it's not
>  # clear that the install process can be specifically selected for  
> python only,
>  # without also installing all of vtk.  For that reason, it may be  
> best to avoid

The above part of your commit undid the changes I made in r50785 and  
r50786. I redid them in r50880. Please be careful to look at the diff  
before you commit and make sure every change listed is in fact one  
you intend to make with that commit.


> @@ -387,6 +387,16 @@
>  # py25 variant could disappear.  Likewise py26 could disappear if  
> vtk works in
>  # python 3.x
>
> +# Note: currently vtkpython depends on libutil and finds it in:
> +# // Utility library needed for vtkpython
> +# PYTHON_UTIL_LIBRARY:FILEPATH=/usr/lib/libutil.dylib
> +# I don't see a macport for libutil.  If one arises, it should  
> become a
> +# dependency for any python variant.
> +#
> +#// Extra libraries to link when linking to python (such as "z"  
> for zlib).  Separate multiple libraries with semicolons.
> +#PYTHON_EXTRA_LIBS:STRING=
> +#
> +
>  variant py25 conflicts py26 requires shared description {python  
> 2.5 wrapper} {
>      set pyver        2.5
>      set python       python${pyver}
> @@ -444,7 +454,7 @@
>      configure.args-append \
>          -DVTK_WRAP_PYTHON:BOOL=ON \
>          -DVTK_NO_PYTHON_THREADS:BOOL=OFF \
> -        -DPYTHON_INCLUDE_PATH:FILEPATH=${prefix}/Library/ 
> Frameworks/Python.framework/Headers \
> +        -DPYTHON_INCLUDE_PATH:FILEPATH=${prefix}/Library/ 
> Frameworks/Python.framework/Versions/${pyver}/Headers \
>          -DPYTHON_LIBRARY:FILEPATH=${prefix}/lib/lib${python}.dylib \
>          -DPYTHON_DEBUG_LIBRARY:FILEPATH=${prefix}/lib/lib$ 
> {python}.dylib \
>          -DPYTHON_EXECUTABLE:FILEPATH=${prefix}/bin/${python} \
> @@ -518,35 +528,67 @@
>
>  # --- Database variants
>
> -#
> -#variant mysql description {build the MySQL driver for  
> vtkSQLDatabase} {
> -#    depends_lib-append \
> -#        port:mysql5
> -#    configure.args-append \
> -#        -DVTK_USE_MYSQL:BOOL=ON
> -#        #MYSQL_INCLUDE_DIRECTORIES
> -#        #MYSQL_LIBRARY
> -#}
> -#
> -#
> -#variant pgsql description {build the PostgreSQL driver for  
> vtkSQLDatabase} {
> -#    depends_lib-append \
> -#        port:libpqxx
> -#    configure.args-append \
> -#        -DVTK_USE_POSTGRES:BOOL=ON
> -#        #POSTGRES_INCLUDE_DIRECTORIES
> -#        #POSTGRES_LIBRARIES
> -#}
> -#
> -#
> -#variant odbc description {build the ODBC database interface} {
> -#    depends_lib-append \
> -#        port:unixODBC
> -#    configure.args-append \
> -#        -DVTK_USE_ODBC:BOOL=ON
> -#}
>
> +variant mysql5 description {build the MySQL driver for  
> vtkSQLDatabase} {
> +    # Find the directory containing mysql.h
> +    set includePath [exec ${prefix}/bin/mysql_config5 --include]
> +    set includePath [exec ${prefix}/bin/mysql_config5 --include]
> +    set includePath [string trim ${includePath} -I ]
> +    #if [ exec find $includePath -name "mysql.h" ]
> +    set libs [exec ${prefix}/bin/mysql_config5 --libs]
> +    set libIdx [lsearch -regex $libs "${prefix}/lib/mysql"]
> +    set libPath [lindex $libs $libIdx]
> +    set libPath [string trim ${libPath} -L ]
> +    set libFile [exec find ${libPath} -name "libmysqlclient.dylib"]

Note that you shouldn't call mysql_config5 here, because mysql5 might  
not yet be installed. If it is not, an error will occur, because  
variants are evaluated before dependencies are computed.


$ sudo port deactivate mysql5
Password:
--->  Deactivating mysql5
$ port install vtk-devel +mysql5
Error: Error executing mysql5: couldn't execute "/mp/bin/ 
mysql_config5": no such file or directory
Error: Unable to open port: Error evaluating variants
$


To fix this, all the above and the configure.args-append below can be  
moved into a pre-configure block in this variant. I made this change  
in r50884.


> +    depends_build-append \
> +        path:bin/mysql_config5:mysql5
> +    depends_lib-append \
> +        port:mysql5 \
> +        port:zlib

Adding something to depends_lib is the same as adding it to  
depends_build and depends_run. Therefore there's no need to add  
mysql5 to depends_build since it's already in depends_lib. The  
preferred dependency style to use is the path: one, not the port:  
one, so that mysql5-devel could also satisfy the dependency. I fixed  
this in r50881.


> +    configure.args-append \
> +        -DVTK_USE_MYSQL:BOOL=ON \
> +        -DMYSQL_INCLUDE_DIRECTORIES:PATH=${includePath} \
> +        -DMYSQL_LIBRARY:FILEPATH=${libFile} \
> +        -DMYSQL_EXTRA_LIBRARIES:FILEPATH=${prefix}/lib/libz.dylib
> +        # A URL for a MySQL server of the form
> +        # mysql://[[username[:password]@]hostname[:port]]/[dbname]
> +        #VTK_MYSQL_TEST_URL:STRING=
> +}
>
> +
> +variant pgsql83 description {build the PostgreSQL 8.3 driver for  
> vtkSQLDatabase} {
> +    set pgconf [exec ${prefix}/lib/postgresql83/bin/pg_config ]
> +    set includeIdx [lsearch -regex ${pgconf} "^INCLUDEDIR"]
> +    set includePath [lindex ${pgconf} [expr ${includeIdx} + 2]]
> +    set libIdx [lsearch -regex $pgconf "^LIBDIR"]
> +    set libPath [lindex $pgconf [expr $libIdx + 2]]
> +    set libFile [exec find ${libPath} -name "libpq.dylib"]
> +    depends_build-append \
> +        path:lib/postgresql83/bin/pg_config:postgresql83
> +    depends_lib-append \
> +        port:postgresql83
> +    configure.args-append \
> +        -DVTK_USE_POSTGRES:BOOL=ON \
> +        -DPOSTGRES_INCLUDE_DIRECTORIES:PATH=${includePath} \
> +        -DPOSTGRES_LIBRARIES:FILEPATH=${libFile}
> +        #// A URL for a PostgreSQL server of the form
> +        #// psql://[[username[:password]@]hostname[:port]]/[dbname]
> +        #VTK_PSQL_TEST_URL:STRING=
> +}

The same comments as for the mysql5 variant apply to the pgsql83  
variant and were also fixed by r50884 and r50881.


> +
> +
> +variant odbc description {build the ODBC database interface} {
> +    depends_lib-append \
> +        port:unixODBC
> +    configure.args-append \
> +        -DVTK_USE_ODBC:BOOL=ON \
> +        -DODBC_INCLUDE_DIRECTORIES:PATH=/opt/local/include \
> +        -DODBC_LIBRARY:FILEPATH=/opt/local/lib/libodbc.dylib
> +        #// A data source name (DSN) for an ODBC database  
> connection to use for testing.
> +        #-DVTK_ODBC_TEST_DSN:STRING=
> +}

/opt/local should not be hardcoded. I changed this to ${prefix} in  
r50883.





More information about the macports-dev mailing list