1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
#!/usr/bin/perl
# Copyright © 2022 Felix Lechner <felix.lechner@lease-up.com>
#
# based on a shell script library by John Goerzen
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
use v5.20;
use warnings;
use utf8;
use Const::Fast;
use Cwd;
use Unicode::UTF8 qw(encode_utf8);
use Debian::Debhelper::Buildsystem::Haskell::Recipes qw(
run
run_quiet
init_hs_env
installable_hc
installable_type
hc_htmldir
);
use Debian::Debhelper::Dh_Lib;
const my $DOT => q{.};
const my $SEMICOLON => q{;};
init(
options => {
'source-dir=s' => \$dh{SOURCE_DIR},
});
init_hs_env();
die encode_utf8('Need CABAL_PACKAGE to install HTML documentation.')
unless length $ENV{CABAL_PACKAGE};
for my $installable (@{ $dh{DOPACKAGES} }) {
my $type = installable_type($installable);
next if ($type ne 'doc');
my $compiler = installable_hc($installable) || $ENV{DEB_DEFAULT_COMPILER};
my $htmldir = hc_htmldir($compiler, $ENV{CABAL_PACKAGE});
my $source = $dh{SOURCE_DIR} || 'debian/tmp';
next
unless -e "$source/$htmldir";
my $savedir = Cwd::getcwd;
chdir($source)
or die encode_utf8("Cannot change folder to $source");
run(
'find',"./$htmldir",
qw{ ! -name *.haddock ! -type d},
qw{-exec install -D --mode=644},
'{}',"$savedir/debian/$installable/{}",$SEMICOLON
);
chdir($savedir)
or warn encode_utf8("Cannot change folder to $savedir");
my $installed = run_quiet(
'find',
"$source/$htmldir",
qw{ ! -name *.haddock ! -type d},
qw{-print0},
);
my @installed_files = split(/\0/, $installed);
log_installed_files($installable, @installed_files);
if ($ENV{DEB_ENABLE_HOOGLE} eq 'yes') {
# We cannot just invoke dh_link here because that acts on
# either libghc-*-dev or all the binary packages, neither of
# which is desirable (see dh_link (1)). So we just create a
# (policy-compliant) symlink ourselves
my $target= "debian/$installable/$htmldir/$ENV{CABAL_PACKAGE}.txt";
if (-e $target) {
my $hoogle = "usr/lib/$compiler-doc/hoogle/";
my $name = "debian/$installable/$hoogle$installable.txt";
run(qw{mkdir --parents}, dirname($name));
run(qw{ln --symbolic --relative --no-target-directory},
$target, $name);
}
}
}
exit;
=head1 NAME
dh_haskell_install_htmldocs - Haskell install helper
=head1 SYNOPSIS
B<dh_haskell_install_htmldocs> [S<I<debhelper options>>]
=head1 DESCRIPTION
dh_haskell_install_htmldocs is a Debhelper program that helps with installing files
when building Haskell libraries.
=head1 SEE ALSO
L<debhelper(7)>
=head1 AUTHOR
John Goerzen <jgoerzen@complete.org>
Based on ideas in dh_python by Josselin Mouette <joss@debian.org>
=cut
# Local Variables:
# indent-tabs-mode: nil
# cperl-indent-level: 4
# End:
# vim: syntax=perl sw=4 sts=4 sr et
|