diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2012-09-24 10:15:50 +0000 |
---|---|---|
committer | Lorry <lorry@roadtrain.codethink.co.uk> | 2012-09-26 13:46:46 +0000 |
commit | 485b97be9f2f2abf5a40923b5fd85f75714a8c02 (patch) | |
tree | ca05cb0ecf3828d909a898c3e5805804a0aff5f8 /util | |
download | perl-dbd-sqlite-tarball-master.tar.gz |
Imported from /srv/lorry/lorry-area/perl-dbd-sqlite-tarball/DBD-SQLite-1.38_01.tar.gz.HEADDBD-SQLite-1.38_01masterbaserock/morph
Diffstat (limited to 'util')
-rw-r--r-- | util/getsqlite.pl | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/util/getsqlite.pl b/util/getsqlite.pl new file mode 100644 index 0000000..f3795a0 --- /dev/null +++ b/util/getsqlite.pl @@ -0,0 +1,80 @@ +#!/usr/bin/perl + +use strict; +use FindBin; +use File::Spec::Functions ':ALL'; +use LWP::Simple qw(getstore); +use ExtUtils::Command; + +chdir(catdir($FindBin::Bin, updir())) or die "Failed to change to the dist root"; + +my $version = shift || die "Usage: getsqlite.pl <version>\n"; + +# The http://www.sqlite.org/sqlite-amalgamation-$version.tar.gz name format changed starting with 3.7.4 +# We will let user specify any SQLite version in either the old or new format, and normalize. +my @version_parts; +if ($version =~ m/^[0-9](?:\.[0-9]+){0,3}$/) { + # $version is X.Y+.Z+.W+ style used for SQLite <= 3.7.3 + @version_parts = map { (0 + $_) } (split /\./, $version); +} +elsif ($version =~ m/^[0-9](?:[0-9]{2}){0,3}$/) { + # $version is XYYZZWW style used for SQLite >= 3.7.4 + @version_parts = map { 0 + $_ } ((substr $version, 0, 1), ((substr $version, 1) =~ m/[0-9]{2}/g)); +} +else { + die "improper <version> format for [$version]\n"; +} +my $version_as_num = sprintf( q{%u%02u%02u%02u}, @version_parts ); +my $version_dotty = join '.', ($version_parts[3] ? @version_parts : @version_parts[0..2]); +my $is_pre_30704_style = ($version_as_num < 3070400); +my $version_for_url = $is_pre_30704_style ? $version_dotty : $version_as_num; + + +my $url_to_download = q{http://www.sqlite.org/sqlite-} + . ($is_pre_30704_style ? q{amalgamation} : q{autoconf}) + . qq{-$version_for_url.tar.gz}; +print("downloading $url_to_download\n"); +my $rv = getstore( + $url_to_download, + "sqlite.tar.gz", +); +die "Failed to download" if $rv != 200; +print("done\n"); + +rm_rf('sqlite') || rm_rf("sqlite-$version_dotty") || rm_rf("sqlite-amalgamation-$version_dotty"); +xsystem("tar zxvf sqlite.tar.gz"); +chdir("sqlite") || chdir("sqlite-$version_dotty") || chdir("sqlite-amalgamation-$version_dotty") || chdir("sqlite-autoconf-$version") || chdir("sqlite-autoconf-$version_as_num") +|| die "SQLite directory not found."; + + + +# extract fts3_tokenizer.h from the amalgamation, because this is needed +# for compiling dbdimp.c +open my $amalg, "sqlite3.c" or die $!; +open my $fts3_tok, ">", "fts3_tokenizer.h" or die $!; + +for (<$amalg>) { + print $fts3_tok $_ if m{^/\*+ Begin file fts3_tokenizer\.h} + ... m{^/\*+ End of fts3_tokenizer\.h}; +} +close $amalg; +close $fts3_tok; + +xsystem("cp sqlite3.c ../"); +xsystem("cp sqlite3.h ../"); +xsystem("cp sqlite3ext.h ../"); +xsystem("cp fts3_tokenizer.h ../"); + +exit(0); + + +sub xsystem { + local $, = ", "; + print("@_\n"); + my $ret = system(@_); + if ($ret != 0) { + die "system(@_) failed: $?"; + } +} + + |