summaryrefslogtreecommitdiff
path: root/dh_elpa
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2015-07-12 08:54:07 +0200
committerDavid Bremner <david@tethera.net>2015-07-12 22:45:14 +0200
commit321c4fb956e7bed1feb218f8266aeb45d4441a06 (patch)
tree422e1a1c6c0dc7f5e0e67478eedde6fec011d49e /dh_elpa
parent054fd3bdac9847a4008cc9ec447a83e5fb83dd55 (diff)
Initial support for multiple-file packages
Still no byte compilation, and grotesque amounts of output
Diffstat (limited to 'dh_elpa')
-rwxr-xr-xdh_elpa29
1 files changed, 28 insertions, 1 deletions
diff --git a/dh_elpa b/dh_elpa
index c122f48..be68a1f 100755
--- a/dh_elpa
+++ b/dh_elpa
@@ -1,5 +1,9 @@
#!/usr/bin/perl
+use strict;
+use Cwd qw{ getcwd };
+use File::Temp qw{ tempdir };
+
use Debian::Debhelper::Dh_Lib;
init();
@@ -12,6 +16,10 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
my $file=pkgfile($package,"elpa");
my @files;
+
+ # Call isnative because it sets $dh{VERSION}
+ # as a side effect.
+ isnative($package);
if ($file) {
@files=filearray($file, ".");
}
@@ -20,10 +28,29 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
push @files, @ARGV;
}
+ my $pkg_file;
if (scalar(@files) == 1) {
$pkg_file=$files[0];
} else {
- die("multifile packages unimplimented");
+ # TODO: add CLEANUP when somewhat debugged.
+ my $tempdir = tempdir();
+ my $version = $dh{VERSION} or die "version not found!";
+ $version =~ s/-[^-]+//; # strip Debian version
+ my $pkg_dir = "$package-$version";
+
+ $pkg_file = "$tempdir/$pkg_dir.tar";
+ mkdir "$tempdir/$pkg_dir" or die "$!";
+
+ # copy files into tempdir, flattening hierarchy
+ # TODO: do this more correctly
+ foreach my $el_file (@files) {
+ doit("cp", "-a", $el_file, "$tempdir/$pkg_dir");
+ }
+
+ my $cwd = getcwd();
+ chdir $tempdir or die "$!";
+ doit("tar","cf",$pkg_file,$pkg_dir);
+ chdir $cwd or die "$!";
}
doit(qw{emacs -batch -Q -l package},