Couchbase-Client
view release on metacpan or search on metacpan
build_libraries.pl view on Meta::CPAN
#!/usr/bin/perl
use strict;
use warnings;
use Cwd qw(getcwd);
use File::Basename qw(fileparse);
use Log::Fu;
use File::Spec;
use Dir::Self qw(:static);
use Config;
use File::Path qw(mkpath rmtree);
use Getopt::Long;
GetOptions(
"build-prefix=s" => \my $BuildPrefix,
"install-prefix=s" => \my $InstallPrefix,
'env-cppflags=s' => \my $ENV_CPPFLAGS,
'env-ldflags=s' => \my $ENV_LDFLAGS,
'env-libs=s' => \my $ENV_LIBS,
'rpath=s' => \my $RPATH,
'have-java' => \my $HAVE_JAVA,
);
use lib __DIR__;
use PLCB_ConfUtil;
require 'PLCB_Config.pm';
my $plcb_conf = do 'PLCB_Config.pm' or die "Cannot find configuration";
my $BUILD_SILENT = "> /dev/null";
if($ENV{PLCB_BUILD_NOISY}) {
$BUILD_SILENT = "";
}
my $RUN_TESTS = 1;
if(exists $ENV{PLCB_RUN_TESTS}) {
$RUN_TESTS = $ENV{PLCB_RUN_TESTS};
}
if($^O =~ /solaris/) {
print STDERR "Tests disabled on solaris\n";
$RUN_TESTS = 0;
}
my %DEPS = map { ( $_, $_ ) } @ARGV;
sub runcmd {
my $cmd = join(" ", @_);
print STDERR "[EXECUTING]:\n\t$cmd\n";
unless(system($cmd . " $BUILD_SILENT") == 0) {
print STDERR "Command $cmd failed\n";
printf STDERR ("CPPFLAGS=%s\nLDFLAGS=%s\n", $ENV{CPPFLAGS}, $ENV{LDFLAGS});
printf STDERR ("LD_RUN_PATH=%s\n", $ENV{LD_RUN_PATH});
printf STDERR ("LIBS=%s\n", $ENV{LIBS});
die "";
}
}
sub lib_2_tarball {
my $lib = shift;
my $release = $plcb_conf->{uc($lib) . "_RELEASE"};
my $name = "$lib-$release.tar.gz";
}
sub tarball_2_dir {
my $tarball = shift;
runcmd("tar xzf $tarball");
my $filename = fileparse($tarball, qr/\.tar\..*/);
return $filename;
}
################################################################################
################################################################################
### Tarball Names ###
################################################################################
################################################################################
my $LIBVBUCKET_TARBALL = lib_2_tarball('libvbucket');
my $LIBCOUCHBASE_TARBALL = lib_2_tarball('libcouchbase');
my $LIBEVENT_TARBALL = lib_2_tarball('libevent');
################################################################################
################################################################################
### Target Directory Structure ###
################################################################################
################################################################################
my $TOPLEVEL = PLCB_ConfUtil::get_toplevel_dir();
my $INST_DIR = $BuildPrefix;
my $INCLUDE_PATH = File::Spec->catfile($INST_DIR, 'include');
my $LIB_PATH = File::Spec->catfile($INST_DIR, 'lib');
chdir $TOPLEVEL;
mkpath($INST_DIR);
mkpath($INCLUDE_PATH);
mkpath($LIB_PATH);
$ENV{PKG_CONFIG_PATH} .= ":"
. File::Spec->catfile($INST_DIR, 'lib', 'pkgconfig');
#$ENV{CC} = $Config{cc};
$ENV{LD_RUN_PATH} .= ":$RPATH";
$ENV{LD_LIBRARY_PATH} .= ":" . $ENV{LD_RUN_PATH};
$ENV{CPPFLAGS} .= $ENV_CPPFLAGS;
$ENV{LIBS} .= $ENV_LIBS;
my $MAKEPROG = $ENV{MAKE};
if(!$MAKEPROG) {
if(system("gmake --version") == 0) {
$MAKEPROG = "gmake";
} else {
$MAKEPROG = "make";
}
( run in 2.539 seconds using v1.01-cache-2.11-cpan-d7f47b0818f )