CSS-Sass

 view release on metacpan or  search on metacpan

Build.PL  view on Meta::CPAN

        my $tag;
        require File::Slurp;
        @files = grep { m/.pm$/i } split /\r?\n/, `git ls-files`;
        for(my $i = 0; $i < scalar(@ARGV) - 1; $i++) {
            if ($ARGV[$i] eq "versionize") {
                $tag = $ARGV[$i+1]; last;
            }
        }
        unless ($tag) {
            $tag = `git describe --abbrev=0 --always --tag`;
            $tag =~ s/(?:\A\s+|\Av|\s+\z)//g;
            unless ( $tag =~ m/(\d+\.\d+\.)(\d+)(?:\-|\z)/ )
            { die "tag <$tag> invalid (\\d+.\\d+.\\d+)\n"; }
            # increment patch level
            else { $tag = $1 . ($2 + 1); }
        }
        $tag =~ s/(?:\A\s+|\Av|\s+\z)//g;
        print "update *.pm with new version <$tag>\n";
        unless ( $tag =~ m/(\d+\.\d+\.)(\d+)(?:\-|\z)/ )
        { die "tag <$tag> invalid (\\d+.\\d+.\\d+)\n"; }
        foreach my $filename (@files) {
            my $data = File::Slurp::read_file($filename, { 'binmode' => ':raw' });
            if ($data =~ s/$re_version/our \$VERSION = \"v$tag\";/i) {
                next if $tag eq $1;
                print "  update version $filename (was $1)\n";
                File::Slurp::write_file($filename, { 'binmode' => ':raw' }, $data);
            }
        }
    } else {
      die "git directory not found";
    }
}

SUBCLASS

my $cover = $ARGV[0] && $ARGV[0] eq "cover=1" ? 1 : 0;

# create compile flags to include the libsass version (escape correctly)
my $version = ($^O ne "MSWin32") ? qq( -DLIBSASS_VERSION=\\"$libsass_version\\") :
                                   qq( -DLIBSASS_VERSION=\\"\\\\\\"$libsass_version\\\\\\"\\");

my %config = (
    module_name         => 'CSS::Sass',
    license             => 'MIT',
    dist_author         => [q{David Caldwell <david@porkrind.org>},
                            q{Marcel Greter <perl-libsass@ocbnet.ch>}],
    dist_version_from   => 'lib/CSS/Sass.pm',
    release_status      => 'stable',
    create_license      => 0,
    configure_requires => {
        'Module::Build' => 0,
        'File::chdir' => 0,
        'File::Slurp' => 0,
    },
    build_requires => {
        'Test::More' => 0,
        'File::chdir' => 0,
    },
    test_requires => {
        'File::chdir' => 0,
        'Test::Differences' => 0,
    },
    requires => {
        'perl' => '5.008',
        'File::chdir' => 0,
        'File::Slurp' => 0,
        'List::MoreUtils' => 0,
    },
    meta_merge => {
      resources => {
        repository  => 'https://github.com/sass/CSS-Sass',
      },
    },
    add_to_cleanup     => [ 'CSS-Sass-*' ],
    extra_compiler_flags => ($cover ? ' -O0 -fprofile-arcs -ftest-coverage' : '') . ' -Wall' . $version,
    $Config{cc} eq 'clang' ? (
        # clang has a bunch of asinine warnings on by default:
        extra_compiler_flags => '-Wno-parentheses -Wno-tautological-compare -Wno-unused-value' .
                                ($cover ? ' -O0 -fprofile-arcs -ftest-coverage' : '') . $version,
    ) : (),
    extra_cpp_compiler_flags => [ '-std=c++0x' ],
    extra_linker_flags => ($cover ? '-lgcov -fprofile-arcs -ftest-coverage' : ''),
    c_source => { 'libsass' => [ sort qw(
        ast.cpp sass2scss.cpp node.cpp sass_util.cpp remove_placeholders.cpp json.cpp
        base64vlq.cpp bind.cpp constants.cpp context.cpp contextualize.cpp plugins.cpp
        error_handling.cpp eval.cpp expand.cpp cencode.c functions.cpp inspect.cpp
        extend.cpp file.cpp output.cpp parser.cpp prelexer.cpp emitter.cpp position.cpp
        sass.cpp sass_interface.cpp sass_functions.cpp sass_values.cpp sass_context.cpp
        source_map.cpp to_c.cpp to_string.cpp units.cpp utf8_string.cpp util.cpp cssize.cpp
        contextualize_eval.cpp listize.cpp lexer.cpp
    ) ]
    },
    config => { ld => 'c++' }, # Need to link with a C++ linker since libsass is C++ (even though the .xs file is not)
);

my $builder = Module::Build::Custom->new(%config);

$builder->create_build_script();



( run in 0.848 second using v1.01-cache-2.11-cpan-df04353d9ac )