Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 7 Apr 2015 18:55:52 +0000 (UTC)
From:      Steve Wills <swills@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r383532 - in head/science/rubygem-netcdf: . files
Message-ID:  <201504071855.t37ItqGj089227@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: swills
Date: Tue Apr  7 18:55:52 2015
New Revision: 383532
URL: https://svnweb.freebsd.org/changeset/ports/383532

Log:
  science/rubygem-netcdf: fix build with newer ruby-gems

Modified:
  head/science/rubygem-netcdf/Makefile
  head/science/rubygem-netcdf/files/patch-extconf.rb   (contents, props changed)

Modified: head/science/rubygem-netcdf/Makefile
==============================================================================
--- head/science/rubygem-netcdf/Makefile	Tue Apr  7 18:36:33 2015	(r383531)
+++ head/science/rubygem-netcdf/Makefile	Tue Apr  7 18:55:52 2015	(r383532)
@@ -3,7 +3,7 @@
 
 PORTNAME=	netcdf
 PORTVERSION=	0.6.6.1
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	science rubygems
 MASTER_SITES=	RG
 DISTNAME=	ruby-${PORTNAME}-${PORTVERSION}
@@ -21,6 +21,4 @@ USE_RUBYGEMS=	yes
 GEM_NAME=	${DISTNAME}
 RUBYGEM_AUTOPLIST=	yes
 
-BROKEN=		Does not build with new devel/ruby-gems
-
 .include <bsd.port.mk>

Modified: head/science/rubygem-netcdf/files/patch-extconf.rb
==============================================================================
--- head/science/rubygem-netcdf/files/patch-extconf.rb	Tue Apr  7 18:36:33 2015	(r383531)
+++ head/science/rubygem-netcdf/files/patch-extconf.rb	Tue Apr  7 18:55:52 2015	(r383532)
@@ -1,12 +1,231 @@
---- extconf.rb.orig	Thu Jun 23 09:20:15 2005
-+++ extconf.rb	Tue Jan 17 13:36:39 2006
-@@ -105,9 +105,6 @@
+--- extconf.rb.orig	2015-02-16 19:09:00.954071000 +0000
++++ extconf.rb	2015-02-16 19:10:17.025178000 +0000
+@@ -1,14 +1,30 @@
+-require "rubygems" unless defined?(Gem)
+ require "mkmf"
++require "rubygems" unless defined?(Gem)
+ 
+-hoge = Gem::GemPathSearcher.new.find("narray")
+-narray_fullname = hoge.full_name
+-narray_installpath = hoge.installation_path
+-narray_include = "#{narray_installpath}/gems/#{narray_fullname}/"
+-narray_lib = "#{narray_installpath}/gems/#{narray_fullname}/"
++ar = ARGV.grep( /^--with-netcdf-version=/ )
++if ar.length > 0
++  ncversion = ar[0].sub(/^--with-netcdf-version=/,"")
++else
++  ncversion = nil
++end
+ 
+-dir_config('narray',narray_include,narray_lib)
+-dir_config('netcdf','/usr/local')
++if Gem.respond_to?(:find_files)
++  require "rbconfig"
++  so = RbConfig::CONFIG["DLEXT"]
++  narray_include = File.expand_path(File.dirname(Gem.find_files("narray.h")[0]))
++  narray_lib = File.expand_path(File.dirname(Gem.find_files("narray." + so)[0]))
++else
++  gem_home=(`gem environment GEM_HOME`).chomp
++  narray_dir = Dir.glob("#{gem_home}/gems/narray-*").sort[-1]
++  if narray_dir
++    narray_include = narray_lib = narray_dir
++  else
++    narray_include = narray_lib = [ $sitearchdir, $vendorarchdir]
++  end
++end
++dir_config('narray', narray_include, narray_lib)
++
++dir_config('netcdf', '/usr/local')
+ 
+ if ( ! ( have_header("narray.h") && have_header("narray_config.h") ) ) then
+ print <<EOS
+@@ -22,66 +38,26 @@
+    exit(-1)
+ end
+ 
+-if xsystem("ncdap-config --libs")
+-  libncdods = "nc-dap"
+-  cflags = `ncdap-config --cflags`.gsub(/\n/, " ")
+-  libs = `ncdap-config --libs`.gsub(/\n/, " ")
+-  prefix_dods = `ncdap-config --prefix`.gsub(/\n/, "")
+-elsif xsystem("opendap-config --libs")
+-  libncdods = "nc-dods"
+-  cflags = `opendap-config --cflags`.gsub(/\n/, " ")
+-  libs = `opendap-config --libs-nc`.gsub(/\n/, " ")
+-  prefix_dods = `opendap-config --prefix`.gsub(/\n/, "")
+-end
+-
+-if File.directory?("/usr/include/netcdf")  #-- for Vine linux
+-  cflags = "-I/usr/include/netcdf"
+-  libs = "-L/usr/lib"
+-  $CFLAGS += ' ' + cflags
+-  $LOCAL_LIBS += ' ' + libs
+-end
+- 
+-if (enable_config('opendap',true) && ( xsystem("opendap-config --libs") ||
+-                                       xsystem("ncdap-config --libs") ) )
+-
+-  dir_config(libncdods,prefix_dods)
+-
+-  if (!have_library(libncdods))
+-    print <<-EOS
+-    ** ERROR ** Library not found: nc-dods (OPeNDAP/DODS-enabled NetCDF lib)
+-    Install it, or run extconf.rb with option --disable-opendap.
+-                                              ^^^^^^^^^^^^^^^^^
+-    EOS
+-    exit(-1)
++unless  ncversion 
++  # configure netcdf version
++  if xsystem("nc-config --version")
++    ncversion = `nc-config --version`.chomp!.sub!(/^n.* /i,"") # rm "netCDF "
++    ncversion.sub!(/^([^\.]+\.[^\.]+\.[^\.]+).+$/,'\1') # e.g. 4.2.1.1 -> 4.2.1
+   else
+-    print <<-EOS
+-    ** Message **  Compiling with OPeNDAP/DODS-enabled NetCDF library.
+- 
+-    This is because the command opendap-config is found in your system.
+-    If you want to use the ordinary (non-DODS) version of NetCDF,
+-    run extconf.rb with option --disable-opendap.
+-                               ^^^^^^^^^^^^^^^^^
+-    EOS
++    ncversion = "3.0.0"   # assume version 3 (only for compilation)
++      # For compilation, there is no difference among subversions of netcdf 3
+   end
++end
+ 
+-  $CFLAGS += ' '+cflags
+-  $LOCAL_LIBS += ' ' + libs
++ncver0 = ncversion[0..0]  # "3" or "4"
++ncver = ncversion.gsub(/\./,'')
++unless /^\d\d\d$/ =~ ncver   # 3 digits
++  raise("Invalid netcdf version: #{ncversion}. Use --with-netcdf-version=") 
++end
++$CFLAGS += ' -DNCVER='+ncver
+ 
+-  # non portable treatments: should be improved (by Horinouchi)
+-  CONFIG['LDSHARED'].sub!(/gcc/,'g++')
+-  $LIBS.sub!(/-lc\s/,'') ; $LIBS.sub!(/-lc$/,'')
+-  print <<-EOS
+-    ** Warning **  non-portable treatments are made, 
+-    which was sucessfull redhat linux 9:
+-     * gcc was replaced with g++ in CONFIG['LDSHARED']
+-     * -lc library was removed if in $LIBS 
+-
+-  EOS
+-  #  p '@@@'
+-  #  ary = []
+-  #  CONFIG.each{|k,v| ary.push([k,v])}
+-  #  ary.sort.each{|x| p x}
+-else
++case ncver0
++when "4"
+   if xsystem("nc-config --libs") # for NetCDF 4
+     cflags = `nc-config --cflags`.gsub(/\n/, " ")
+     libs = `nc-config --libs`.gsub(/\n/, " ")
+@@ -91,23 +67,82 @@
+     $CFLAGS += ' ' + cflags
+     $LOCAL_LIBS += ' ' + libs
+   end
+-  if ( ! ( have_header("netcdf.h") && have_library("netcdf") ) )then
+-    print <<-EOS
+-    ** configure error **  
+-       Header netcdf.h or the compiled netcdf library is not found. 
+-       If you have the library installed under /netcdfdir (that is, netcdf.h is
+-       in /netcdfdir/include and the library in /netcdfdir/lib/),
+-       try the following:
++when "3"
++  # for NetCDF 3, which needs external libraries for OpenDAP
++  if xsystem("ncdap-config --libs")
++    libncdods = "nc-dap"
++    cflags = `ncdap-config --cflags`.gsub(/\n/, " ")
++    libs = `ncdap-config --libs`.gsub(/\n/, " ")
++    prefix_dods = `ncdap-config --prefix`.gsub(/\n/, "")
++  elsif xsystem("opendap-config --libs")
++    libncdods = "nc-dods"
++    cflags = `opendap-config --cflags`.gsub(/\n/, " ")
++    libs = `opendap-config --libs-nc`.gsub(/\n/, " ")
++    prefix_dods = `opendap-config --prefix`.gsub(/\n/, "")
++  end
++  if (enable_config('opendap',true) && ( xsystem("opendap-config --libs") ||
++                                         xsystem("ncdap-config --libs") ) )
++
++    dir_config(libncdods,prefix_dods)
+ 
+-       % ruby extconf.rb --with-netcdf-dir=/netcdfdir
++    if (!have_library(libncdods))
++      print <<-EOS
++      ** ERROR ** Library not found: nc-dods (OPeNDAP/DODS-enabled NetCDF lib)
++      Install it, or run extconf.rb with option --disable-opendap.
++                                                ^^^^^^^^^^^^^^^^^
++      EOS
++      exit(-1)
++    else
++      print <<-EOS
++      ** Message **  Compiling with OPeNDAP/DODS-enabled NetCDF library.
++
++      This is because the command opendap-config is found in your system.
++      If you want to use the ordinary (non-DODS) version of NetCDF,
++      run extconf.rb with option --disable-opendap.
++                                 ^^^^^^^^^^^^^^^^^
++      EOS
++    end
++
++    $CFLAGS += ' '+cflags
++    $LOCAL_LIBS += ' ' + libs
++
++    # non portable treatments: should be improved (by Horinouchi)
++    CONFIG['LDSHARED'].sub!(/gcc/,'g++')
++    $LIBS.sub!(/-lc\s/,'') ; $LIBS.sub!(/-lc$/,'')
++    print <<-EOS
++      ** Warning **  non-portable treatments are made, 
++      which was sucessfull redhat linux 9:
++       * gcc was replaced with g++ in CONFIG['LDSHARED']
++       * -lc library was removed if in $LIBS 
+ 
+-       Alternatively, you can specify the two directory separately
+-       with --with-netcdf-include and --with-netcdf-lib.
+     EOS
+-    exit(-1)
++    #  p '@@@'
++    #  ary = []
++    #  CONFIG.each{|k,v| ary.push([k,v])}
++    #  ary.sort.each{|x| p x}
++  else
++    if ( ! ( have_header("netcdf.h") && have_library("netcdf") ) )then
++      print <<-EOS
++      ** configure error **  
++         Header netcdf.h or the compiled netcdf library is not found. 
++         If you have the library installed under /netcdfdir (that is, netcdf.h is
++         in /netcdfdir/include and the library in /netcdfdir/lib/),
++         try the following:
++
++         % ruby extconf.rb --with-netcdf-dir=/netcdfdir
++
++         Alternatively, you can specify the two directory separately
++         with --with-netcdf-include and --with-netcdf-lib.
++      EOS
++      exit(-1)
++    end
+   end
++else
++  raise "Netcdf version #{ncver0} is not supported"
+ end
+ 
++
++
+ if /cygwin|mingw/ =~ RUBY_PLATFORM
+    have_library("narray") || raise("ERROR: narray library is not found")
+ end
+@@ -128,9 +163,9 @@
        newmkfl.puts("")         
        newmkfl.puts("test: all")            # insert the "test" target
        newmkfl.puts("\t\t@cd test && ruby test.rb && echo 'test did not fail :-p (please ignore the warnings)' && cd ..") 
 -   when /lib\/netcdf/
 -      line = line.chomp! + "/"
 -      newmkfl.puts(line)
++#   when /lib\/netcdf/
++#      line = line.chomp! + "/"
++#      newmkfl.puts(line)
     else
        newmkfl.puts(line)
     end



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201504071855.t37ItqGj089227>