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 )