Rakefile.cross in pg-0.12.0 vs Rakefile.cross in pg-0.12.1
- old
+ new
@@ -8,15 +8,15 @@
require 'rake/extensioncompiler'
MISCDIR = BASEDIR + 'misc'
NUM_CPUS = if File.exist?('/proc/cpuinfo')
- File.read('/proc/cpuinfo').scan('processor').length
+ File.read('/proc/cpuinfo').scan('processor').length
elsif RUBY_PLATFORM.include?( 'darwin' )
- `system_profiler SPHardwareDataType | grep 'Cores' | awk '{print $5}'`.chomp
+ `system_profiler SPHardwareDataType | grep 'Cores' | awk '{print $5}'`.chomp
else
- 1
+ 1
end
# Cross-compilation constants
OPENSSL_VERSION = ENV['OPENSSL_VERSION'] || '1.0.0e'
POSTGRESQL_VERSION = ENV['POSTGRESQL_VERSION'] || '9.1.1'
@@ -27,11 +27,11 @@
# Static OpenSSL build vars
STATIC_OPENSSL_BUILDDIR = STATIC_BUILDDIR + "openssl-#{OPENSSL_VERSION}"
OPENSSL_SOURCE_URI =
- URI( "http://www.openssl.org/source/openssl-#{OPENSSL_VERSION}.tar.gz" )
+ URI( "http://www.openssl.org/source/openssl-#{OPENSSL_VERSION}.tar.gz" )
OPENSSL_TARBALL = STATIC_SOURCESDIR + File.basename( OPENSSL_SOURCE_URI.path )
OPENSSL_MAKEFILE = STATIC_OPENSSL_BUILDDIR + 'Makefile'
LIBSSLEAY32 = STATIC_OPENSSL_BUILDDIR + 'libssleay32.a'
LIBEAY32 = STATIC_OPENSSL_BUILDDIR + 'libeay32.a'
@@ -39,13 +39,13 @@
OPENSSL_PATCHES = Rake::FileList[ MISCDIR + "openssl-#{OPENSSL_VERSION}.*.patch" ]
# Static PostgreSQL build vars
STATIC_POSTGRESQL_BUILDDIR = STATIC_BUILDDIR + "postgresql-#{POSTGRESQL_VERSION}"
POSTGRESQL_SOURCE_URI = begin
- uristring = "http://ftp9.us.postgresql.org/pub/mirrors/postgresql/source/" +
- "v%s/postgresql-%s.tar.bz2" % [ POSTGRESQL_VERSION, POSTGRESQL_VERSION ]
- URI( uristring )
+ uristring = "http://ftp9.us.postgresql.org/pub/mirrors/postgresql/source/" +
+ "v%s/postgresql-%s.tar.bz2" % [ POSTGRESQL_VERSION, POSTGRESQL_VERSION ]
+ URI( uristring )
end
POSTGRESQL_TARBALL = STATIC_SOURCESDIR + File.basename( POSTGRESQL_SOURCE_URI.path )
STATIC_POSTGRESQL_SRCDIR = STATIC_POSTGRESQL_BUILDDIR + 'src'
STATIC_POSTGRESQL_LIBDIR = STATIC_POSTGRESQL_SRCDIR + 'interfaces/libpq'
@@ -54,27 +54,32 @@
POSTGRESQL_GLOBAL_MAKEFILE = STATIC_POSTGRESQL_SRCDIR + 'Makefile.global'
POSTGRESQL_SHLIB_MAKEFILE = STATIC_POSTGRESQL_SRCDIR + 'Makefile.shlib'
POSTGRESQL_SHLIB_MF_ORIG = STATIC_POSTGRESQL_SRCDIR + 'Makefile.shlib.orig'
POSTGRESQL_LIB = STATIC_POSTGRESQL_LIBDIR + 'libpq.a'
-CROSS_PREFIX = Rake::ExtensionCompiler.mingw_host
+CROSS_PREFIX = begin
+ Rake::ExtensionCompiler.mingw_host
+rescue => err
+ $stderr.puts "Cross-compilation disabled -- %s" % [ err.message ]
+ 'unknown'
+end
# clean intermediate files and folders
CLEAN.include( STATIC_BUILDDIR.to_s )
ENV['RUBY_CC_VERSION'] ||= '1.8.7:1.9.3'
def download(url, save_to)
- part = save_to+".part"
- sh "wget #{url.to_s.inspect} -O #{part.inspect} || curl #{url.to_s.inspect} -o #{part.inspect}"
- FileUtils.mv part, save_to
+ part = save_to+".part"
+ sh "wget #{url.to_s.inspect} -O #{part.inspect} || curl #{url.to_s.inspect} -o #{part.inspect}"
+ FileUtils.mv part, save_to
end
def run(*args)
- sh *args
+ sh *args
end
#####################################################################
### C R O S S - C O M P I L A T I O N - T A S K S
#####################################################################
@@ -87,66 +92,66 @@
#
directory STATIC_OPENSSL_BUILDDIR.to_s
# openssl source file should be stored there
file OPENSSL_TARBALL => STATIC_SOURCESDIR do |t|
- download( OPENSSL_SOURCE_URI, t.name )
+ download( OPENSSL_SOURCE_URI, t.name )
end
# Extract the openssl builds
file STATIC_OPENSSL_BUILDDIR => OPENSSL_TARBALL do |t|
- puts "extracting %s to %s" % [ OPENSSL_TARBALL, STATIC_OPENSSL_BUILDDIR.parent ]
- STATIC_OPENSSL_BUILDDIR.mkpath
- run 'tar', '-xzf', OPENSSL_TARBALL.to_s, '-C', STATIC_OPENSSL_BUILDDIR.parent.to_s
- OPENSSL_MAKEFILE.unlink if OPENSSL_MAKEFILE.exist?
+ puts "extracting %s to %s" % [ OPENSSL_TARBALL, STATIC_OPENSSL_BUILDDIR.parent ]
+ STATIC_OPENSSL_BUILDDIR.mkpath
+ run 'tar', '-xzf', OPENSSL_TARBALL.to_s, '-C', STATIC_OPENSSL_BUILDDIR.parent.to_s
+ OPENSSL_MAKEFILE.unlink if OPENSSL_MAKEFILE.exist?
- OPENSSL_PATCHES.each do |patchfile|
- puts " applying patch #{patchfile}..."
- run 'patch', '-Np1', '-d', STATIC_OPENSSL_BUILDDIR.to_s,
- '-i', File.expand_path( patchfile, BASEDIR )
- end
+ OPENSSL_PATCHES.each do |patchfile|
+ puts " applying patch #{patchfile}..."
+ run 'patch', '-Np1', '-d', STATIC_OPENSSL_BUILDDIR.to_s,
+ '-i', File.expand_path( patchfile, BASEDIR )
+ end
end
CMD_PRELUDE = [
- 'env',
- "CC=#{CROSS_PREFIX}-gcc",
- "CFLAGS=-DDSO_WIN32",
- "AR=#{CROSS_PREFIX}-ar",
- "RANLIB=#{CROSS_PREFIX}-ranlib"
+ 'env',
+ "CC=#{CROSS_PREFIX}-gcc",
+ "CFLAGS=-DDSO_WIN32",
+ "AR=#{CROSS_PREFIX}-ar",
+ "RANLIB=#{CROSS_PREFIX}-ranlib"
]
# generate the makefile in a clean build location
file OPENSSL_MAKEFILE => STATIC_OPENSSL_BUILDDIR do |t|
- Dir.chdir( STATIC_OPENSSL_BUILDDIR ) do
- cmd = CMD_PRELUDE.dup
- cmd << "./Configure" << 'mingw'
+ Dir.chdir( STATIC_OPENSSL_BUILDDIR ) do
+ cmd = CMD_PRELUDE.dup
+ cmd << "./Configure" << 'mingw'
- run( *cmd )
- end
+ run( *cmd )
+ end
end
desc "compile static openssl libraries"
task :openssl_libs => [ LIBSSLEAY32, LIBEAY32 ]
task :compile_static_openssl => OPENSSL_MAKEFILE do |t|
- Dir.chdir( STATIC_OPENSSL_BUILDDIR ) do
- cmd = CMD_PRELUDE.dup
- cmd << 'make' << "-j#{NUM_CPUS}" << 'build_libs'
+ Dir.chdir( STATIC_OPENSSL_BUILDDIR ) do
+ cmd = CMD_PRELUDE.dup
+ cmd << 'make' << "-j#{NUM_CPUS}" << 'build_libs'
- run( *cmd )
- end
+ run( *cmd )
+ end
end
desc "compile static #{LIBEAY32}"
file LIBEAY32 => :compile_static_openssl do |t|
- FileUtils.cp( STATIC_OPENSSL_BUILDDIR + 'libcrypto.a', LIBEAY32.to_s )
+ FileUtils.cp( STATIC_OPENSSL_BUILDDIR + 'libcrypto.a', LIBEAY32.to_s )
end
desc "compile static #{LIBSSLEAY32}"
file LIBSSLEAY32 => :compile_static_openssl do |t|
- FileUtils.cp( STATIC_OPENSSL_BUILDDIR + 'libssl.a', LIBSSLEAY32.to_s )
+ FileUtils.cp( STATIC_OPENSSL_BUILDDIR + 'libssl.a', LIBSSLEAY32.to_s )
end
#
@@ -155,80 +160,80 @@
directory STATIC_POSTGRESQL_BUILDDIR.to_s
# postgresql source file should be stored there
file POSTGRESQL_TARBALL => STATIC_SOURCESDIR do |t|
- download( POSTGRESQL_SOURCE_URI, t.name )
+ download( POSTGRESQL_SOURCE_URI, t.name )
end
# Extract the postgresql sources
file STATIC_POSTGRESQL_BUILDDIR => POSTGRESQL_TARBALL do |t|
- puts "extracting %s to %s" % [ POSTGRESQL_TARBALL, STATIC_POSTGRESQL_BUILDDIR.parent ]
- STATIC_POSTGRESQL_BUILDDIR.mkpath
- run 'tar', '-xjf', POSTGRESQL_TARBALL.to_s, '-C', STATIC_POSTGRESQL_BUILDDIR.parent.to_s
- mv POSTGRESQL_SHLIB_MAKEFILE, POSTGRESQL_SHLIB_MF_ORIG
+ puts "extracting %s to %s" % [ POSTGRESQL_TARBALL, STATIC_POSTGRESQL_BUILDDIR.parent ]
+ STATIC_POSTGRESQL_BUILDDIR.mkpath
+ run 'tar', '-xjf', POSTGRESQL_TARBALL.to_s, '-C', STATIC_POSTGRESQL_BUILDDIR.parent.to_s
+ mv POSTGRESQL_SHLIB_MAKEFILE, POSTGRESQL_SHLIB_MF_ORIG
end
# generate the makefile in a clean build location
file POSTGRESQL_GLOBAL_MAKEFILE => [ STATIC_POSTGRESQL_BUILDDIR, :openssl_libs ] do |t|
- options = [
- '--target=i386-mingw32',
- "--host=#{Rake::ExtensionCompiler.mingw_host}",
- '--with-openssl',
- '--without-zlib',
- '--disable-shared',
- ]
+ options = [
+ '--target=i386-mingw32',
+ "--host=#{Rake::ExtensionCompiler.mingw_host}",
+ '--with-openssl',
+ '--without-zlib',
+ '--disable-shared',
+ ]
- Dir.chdir( STATIC_POSTGRESQL_BUILDDIR ) do
- configure_path = STATIC_POSTGRESQL_BUILDDIR + 'configure'
- cmd = [ configure_path.to_s, *options ]
- cmd << "CFLAGS=-L#{STATIC_OPENSSL_BUILDDIR}"
- cmd << "LDFLAGS=-L#{STATIC_OPENSSL_BUILDDIR}"
- cmd << "LDFLAGS_SL=-L#{STATIC_OPENSSL_BUILDDIR}"
- cmd << "LIBS=-lwsock32 -lws2_32 -lgdi32"
- cmd << "CPPFLAGS=-I#{STATIC_OPENSSL_BUILDDIR}/include"
+ Dir.chdir( STATIC_POSTGRESQL_BUILDDIR ) do
+ configure_path = STATIC_POSTGRESQL_BUILDDIR + 'configure'
+ cmd = [ configure_path.to_s, *options ]
+ cmd << "CFLAGS=-L#{STATIC_OPENSSL_BUILDDIR}"
+ cmd << "LDFLAGS=-L#{STATIC_OPENSSL_BUILDDIR}"
+ cmd << "LDFLAGS_SL=-L#{STATIC_OPENSSL_BUILDDIR}"
+ cmd << "LIBS=-lwsock32 -lws2_32 -lgdi32"
+ cmd << "CPPFLAGS=-I#{STATIC_OPENSSL_BUILDDIR}/include"
- run( *cmd )
- end
+ run( *cmd )
+ end
end
# patch the Makefile.shlib -- depend on the build dir so it's only
# rewritten if the tarball is re-extracted.
file POSTGRESQL_SHLIB_MAKEFILE => POSTGRESQL_SHLIB_MF_ORIG do |t|
- tf = Tempfile.new( POSTGRESQL_SHLIB_MAKEFILE.basename )
- POSTGRESQL_SHLIB_MF_ORIG.open( File::RDONLY ) do |ifh|
- ifh.each_line do |line|
- tf.print( line.sub(/^(\s*haslibarule\s*=\s*yes)/, "# \\1 ") )
- end
- end
- tf.close
+ tf = Tempfile.new( POSTGRESQL_SHLIB_MAKEFILE.basename )
+ POSTGRESQL_SHLIB_MF_ORIG.open( File::RDONLY ) do |ifh|
+ ifh.each_line do |line|
+ tf.print( line.sub(/^(\s*haslibarule\s*=\s*yes)/, "# \\1 ") )
+ end
+ end
+ tf.close
- FileUtils.mv( tf.path, t.name, :verbose => $puts )
+ FileUtils.mv( tf.path, t.name, :verbose => $puts )
end
# make libpq.a
task POSTGRESQL_LIB => [ POSTGRESQL_GLOBAL_MAKEFILE, POSTGRESQL_SHLIB_MAKEFILE ] do |t|
- Dir.chdir( POSTGRESQL_LIB.dirname ) do
- sh 'make', "-j#{NUM_CPUS}", POSTGRESQL_LIB.basename.to_s, 'PORTNAME=win32'
- end
+ Dir.chdir( POSTGRESQL_LIB.dirname ) do
+ sh 'make', "-j#{NUM_CPUS}", POSTGRESQL_LIB.basename.to_s, 'PORTNAME=win32'
+ end
end
#desc 'compile static libpg.a'
task :static_libpq => POSTGRESQL_LIB
desc 'cross compile pg for win32'
task :cross do
- ENV['CROSS_COMPILING'] = 'yes'
+ ENV['CROSS_COMPILING'] = 'yes'
end
task :cross => [ :mingw32, :static_libpq ]
task :mingw32 do
- # Use Rake::ExtensionCompiler helpers to find the proper host
- unless Rake::ExtensionCompiler.mingw_host then
- warn "You need to install mingw32 cross compile functionality to be able to continue."
- warn "Please refer to your distribution/package manager documentation about installation."
- fail
- end
+ # Use Rake::ExtensionCompiler helpers to find the proper host
+ unless Rake::ExtensionCompiler.mingw_host then
+ warn "You need to install mingw32 cross compile functionality to be able to continue."
+ warn "Please refer to your distribution/package manager documentation about installation."
+ fail
+ end
end