summaryrefslogtreecommitdiff
path: root/dh_elpa
diff options
context:
space:
mode:
authorDavid Bremner <bremner@debian.org>2015-10-28 22:38:13 -0300
committerDavid Bremner <bremner@debian.org>2015-10-28 22:44:27 -0300
commitb32d18a72b6222a70a8d3db21887a36ccd2d5ecc (patch)
treeb127c3a2974ac3889516f86a9560a6accfe8738f /dh_elpa
parentb3f546e393916c25fad8b7fd74457961a7507b0e (diff)
release 0.0.16: add misc:Built-Using substvar
also depend on perl, while we're at it.
Diffstat (limited to 'dh_elpa')
-rwxr-xr-xdh_elpa247
1 files changed, 0 insertions, 247 deletions
diff --git a/dh_elpa b/dh_elpa
deleted file mode 100755
index b921cb9..0000000
--- a/dh_elpa
+++ /dev/null
@@ -1,247 +0,0 @@
-#!/usr/bin/perl
-
-=head1 NAME
-
-dh_elpa - install emacs lisp packages into package build directories
-
-=cut
-
-use strict;
-use Cwd qw{ getcwd };
-use File::Temp qw{tempfile};
-use IO::Handle;
-use File::Path;
-
-use Debian::Debhelper::Dh_Lib;
-
-=head1 SYNOPSIS
-
-B<dh_elpa> [S<I<debhelper options>>] [S<I<pkg-file>>]
-
-=head1 DESCRIPTION
-
-B<dh_elpa> is a debhelper program that is responsible for installing
-elpa style emacs lisp packages into package build directories.
-
-=head1 FILES
-
-=over 4
-
-=item debian/I<package>.elpa
-
-List of files to be installed into I<package> as an elpa package.
-
-=back
-
-=cut
-
-init(options => {
- "byte-compile!" => \$dh{BYTECOMPILE},
-});
-
-=head1 OPTIONS
-
-=over 4
-
-=item B<--byte-compile>, B<--no-byte-compile>
-
-Enable (default) or disable byte compilation of installed emacs lisp
-files. Disabling byte compilation changes the destination directory
-to one that is found by the emacs package system.
-
-=back
-
-=cut
-
-sub doit_quietly {
- my ($handle,$tmpfile) = tempfile(UNLINK=>1);
- my $exitcode;
-
- verbose_print(escape_shell(@_));
- open (CPERR,">&STDERR") or error "$!";
- open (CPOUT,">&STDOUT") or error "$!";
- STDOUT->fdopen($handle,'w');
- STDERR->fdopen($handle,'w');
- my $ret=doit_noerror(@_);
- STDOUT->fdopen(\*CPOUT,'w');
- STDERR->fdopen(\*CPERR,'w');
-
- if (!$ret){
- $exitcode=$?;
- seek $handle, 0, 0 or error "$!";
- print while (<$handle>);
- my $command=join(" ",@_);
- error("$command returned exit code ".($exitcode >> 8));
- }
-
-}
-
-# simplified version of private sub autoscript_sed in Dh_Lib
-sub sed_file {
- my ($sed, $infile, $outfile) = @_;
-
- open(IN, $infile) or die "$infile: $!";
- open(OUT, ">>$outfile") or die "$outfile: $!";
- while (<IN>) { $sed->(); print OUT }
- close(OUT) or die "$outfile: $!";
- close(IN) or die "$infile: $!";
-}
-
-sub read_package_desc {
- my ($descdir, $package) = @_;
- my %desc = ();
-
- my $descfile="${descdir}/${package}.desc";
-
- my $fh;
-
- open $fh,'<', $descfile or
- error "failed to open $descfile";
-
- while (<$fh>) {
- if (m/([^:]+):\s*(.*)\s*$/) {
- $desc{$1} = $2;
- }
- }
- return \%desc;
-}
-
-my $templatedir = "/usr/share/debhelper/dh_elpa/emacsen-common";
-
-sub maybe_install_helper{
- my ($package,$piece, $mode, $desc)=@_;
- my $file=pkgfile($package,"emacsen-$piece");
-
- my $tmp=tmpdir($package);
- my $ecdest="$tmp/usr/lib/emacsen-common/packages";
- my $target="$ecdest/$piece/$package";
- # if there is file, leave it for dh_installemacsen
- if ($file eq '') {
- if (! -d "$ecdest/$piece") {
- doit("install","-d","$ecdest/$piece");
- }
- unlink $target; # ignore errors
-
- my $elpapackage = $desc->{'ELPA-Name'} or
- error "elpa package name not found";
-
- my $elpaversion = $desc->{'ELPA-Version'} or
- error "elpa version not found";
-
- sed_file (sub {s/#ELPAPACKAGE#/$elpapackage/;
- s/#ELPAVERSION#/$elpaversion/; },
- "$templatedir/$piece", $target);
- chmod oct($mode), $target;
- }
-}
-
-$dh{BYTECOMPILE} = 1 unless defined($dh{BYTECOMPILE});
-
-my $elpadir;
-
-my $dhelpadir="/usr/share/emacs/site-lisp/elpa";
-
-# TODO: do we really need a seperate elpa-src hierarchy?
-if ($dh{BYTECOMPILE}) {
- $elpadir="/usr/share/emacs/site-lisp/elpa-src";
-} else {
- $elpadir=$dhelpadir;
-}
-
-PACKAGE:
-foreach my $package (@{$dh{DOPACKAGES}}) {
-
- my $tmp=tmpdir($package);
- my $file=pkgfile($package,"elpa");
-
- my $elpapkg=$package;
- # TODO do this more sanely or at least allow an override
- $elpapkg =~ s/^elpa-//;
- verbose_print("Using elpa package name $elpapkg");
-
- my @files;
-
- # Call isnative because it sets $dh{VERSION}
- # as a side effect.
- isnative($package);
- if ($file) {
- @files=filearray($file, ".");
- scalar(@files) == 1 || grep { m/\b${elpapkg}-pkg.el$/ } @files or
- error "missing ${elpapkg}-pkg.el";
- }
- if (($package eq $dh{FIRSTPACKAGE} || $dh{PARAMS_ALL})
- && @ARGV) {
- push @files, @ARGV;
- }
-
- next PACKAGE if (scalar(@files) == 0);
-
- my $pkg_file;
- my $cwd = getcwd();
- my $tempdir = "${cwd}/debian/.debhelper/elpa";
-
- File::Path::rmtree $tempdir ||
- error "cleaning $tempdir";
-
- File::Path::make_path $tempdir ||
- error "creating $tempdir";
-
- if (scalar(@files) == 1) {
- my $pkg_file=$files[0];
-
- doit_quietly(qw{emacs -batch -Q -l package},
- '--eval',"(add-to-list 'package-directory-list \"$dhelpadir\")",
- '--eval',"(add-to-list 'package-directory-list \"$elpadir\")",
- qw{-f package-initialize -l dh-elpa.el},
- qw{-f dhelpa-batch-install-file}, "$tmp/$elpadir", $pkg_file, $tempdir);
- } else {
- my $stagedir = "$tempdir/$elpapkg";
- File::Path::make_path $stagedir ||
- error "creating $stagedir";
-
- # copy files into stagedir, flattening hierarchy
- # TODO: do this more correctly
- foreach my $el_file (@files) {
- doit("cp", "-a", $el_file, "$stagedir");
- }
-
- doit_quietly(qw{emacs -batch -Q -l package},
- '--eval',"(add-to-list 'package-directory-list \"$dhelpadir\")",
- '--eval',"(add-to-list 'package-directory-list \"$elpadir\")",
- qw{-f package-initialize -l dh-elpa.el},
- qw{-f dhelpa-batch-install-directory},
- "$tmp/$elpadir", $stagedir, $tempdir);
-
- }
- if ($dh{BYTECOMPILE}) {
- my $desc = read_package_desc ($tempdir,$elpapkg);
-
- addsubstvar($package,'misc:Depends','emacsen-common');
- maybe_install_helper($package, 'compat', '0644', $desc);
- maybe_install_helper($package, 'install', '0755', $desc);
- maybe_install_helper($package, 'remove', '0755', $desc);
-
- if (! $dh{NOSCRIPTS}) {
- autoscript($package,"postinst","postinst-emacsen",
- "s/#PACKAGE#/$package/");
- autoscript($package,"prerm","prerm-emacsen",
- "s/#PACKAGE#/$package/");
- }
- }
-
-}
-
-=head1 EXAMPLES
-
-Here is an example of using the helper in a dh(1) style debian/rules
-
-=over 4
-
-override_dh_install:
- dh_install
- dh_elpa
-
-=back
-
-=cut
-