11 Commits
8.72 ... 8.76

8 changed files with 77 additions and 26 deletions

View File

@@ -683,7 +683,7 @@ sub email {
close MAILNAME;
}
if (!$mailname) {
$mailname=$this->runpipe(1, "hostname -f");
$mailname=$this->runpipe(1, "hostname");
chomp $mailname;
}
return "$login\@$mailname";
@@ -738,7 +738,7 @@ sub postinst {
return $postinst unless %$owninfo;
my ($firstline, $rest)=split(/\n/, $postinst, 2);
if ($firstline !~ m/^#!\s*\/bin\/sh/) {
if ($firstline !~ m/^#!\s*\/bin\/(ba)?sh/) {
print STDERR "warning: unable to add ownership fixup code to postinst as the postinst is not a shell script!\n";
return $postinst;
}
@@ -754,7 +754,7 @@ sub postinst {
return "$firstline\n$permscript\n$rest";
}
=cut
=back
=head1 AUTHOR

View File

@@ -262,7 +262,7 @@ sub prep {
# grep {/^\./} readdir DIR;
# closedir DIR;
$this->do("cd $dir; find . -print | pkgproto > ./prototype")
$this->do("cd $dir; find . -print | sed -e '/.\\/prototype\$/d' | pkgproto > ./prototype")
|| die "error during pkgproto: $!\n";
open(PKGPROTO, ">>$dir/prototype")
@@ -327,6 +327,8 @@ sub build {
return $name;
}
=back
=head1 AUTHOR
Mark Hershberger <mah@everybody.org>

View File

@@ -463,11 +463,16 @@ debian/slackware scripts can be anything -- perl programs or binary files
-- and rpm is limited to only shell scripts, we need to encode the files
and add a scrap of shell script to make it unextract and run on the fly.
When setting a value, we do some mangling too. Rpm maitainer scripts
are typically shell scripts, but often lack the leading #!/bin/sh
This can confuse dpkg, so add the #!/bin/sh if it looks like there
When setting a value, we do some mangling too. Rpm maintainer scripts
are typically shell scripts, but often lack the leading shebang line.
This can confuse dpkg, so add the shebang if it looks like there
is no shebang magic already in place.
Additionally, it's not uncommon for rpm maintainer scripts to contain
bashisms, which can be triggered when they are ran on systems where /bin/sh
is not bash. To work around this, the shebang line of the scripts is
changed to use bash.
Also, if the rpm is relocatable, the script could refer to
RPM_INSTALL_PREFIX, which is set by rpm at run time. Deal with this by
adding code to the script to set RPM_INSTALL_PREFIX.
@@ -489,9 +494,10 @@ sub _script_helper {
my $value=shift;
if (length $value and $value !~ m/^#!\s*\//) {
$value="#!/bin/sh\n$prefixcode$value";
$value="#!/bin/bash\n$prefixcode$value";
}
else {
$value=~s@^#!\s*/bin/sh(\s)@#!/bin/bash$1@;
$value=~s/\n/\n$prefixcode/s;
}
$this->{$script} = $value;

View File

@@ -358,6 +358,8 @@ sub release {
}
=back
=head1 AUTHOR
Joey Hess <joey@kitenet.net>

View File

@@ -9,10 +9,14 @@ Alien::Package::Tgz - an object that represents a tgz package
package Alien::Package::Tgz;
use strict;
use base qw(Alien::Package);
use Cwd qw(abs_path);
my $tarext=qr/\.(?:tgz|tar(?:\.(?:gz|Z|z|bz|bz2))?|taz)$/;
=head1 DESCRIPTION
This is an object class that represents a tgz package, as used in Slackware.
It also allows conversion of raw tar files.
It is derived from Alien::Package.
=head1 CLASS DATA
@@ -49,7 +53,7 @@ sub checkfile {
my $this=shift;
my $file=shift;
return $file =~ m/.*\.(?:tgz|tar\.(?:gz|Z|z)|taz)$/;
return $file =~ m/$tarext$/;
}
=item install
@@ -93,7 +97,7 @@ sub scan {
my ($basename)=('/'.$file)=~m#^/?.*/(.*?)$#;
# Strip out any tar extentions.
$basename=~s/\.(tgz|tar\.(gz|Z))$//;
$basename=~s/$tarext//;
if ($basename=~m/([\w-]+)-([0-9\.?]+).*/) {
$this->name($1);
@@ -106,11 +110,11 @@ sub scan {
$this->arch('all');
$this->summary("Converted Slackware tgz package");
$this->summary("Converted tgz package");
$this->description($this->summary);
$this->copyright('unknown');
$this->release(1);
$this->distribution("Slackware");
$this->distribution("Slackware/tarball");
$this->group("unknown");
$this->origformat('tgz');
$this->changelogtext('');
@@ -119,7 +123,7 @@ sub scan {
# Now figure out the conffiles. Assume anything in etc/ is a
# conffile.
my @conffiles;
open (FILELIST,"tar zvtf $file | grep etc/ |") ||
open (FILELIST,"tar vtf $file | grep etc/ |") ||
die "getting filelist: $!";
while (<FILELIST>) {
# Make sure it's a normal file. This is looking at the
@@ -136,7 +140,7 @@ sub scan {
# Now get the whole filelist. We have to add leading /'s to the
# filenames. We have to ignore all files under /install/
my @filelist;
open (FILELIST, "tar ztf $file |") ||
open (FILELIST, "tar tf $file |") ||
die "getting filelist: $!";
while (<FILELIST>) {
chomp;
@@ -148,7 +152,7 @@ sub scan {
# Now get the scripts.
foreach my $script (keys %{scripttrans()}) {
$this->$script(scalar $this->runpipe(1, "tar Oxzf $file install/${scripttrans()}{$script} 2>/dev/null"));
$this->$script(scalar $this->runpipe(1, "tar Oxf $file install/${scripttrans()}{$script} 2>/dev/null"));
}
return 1;
@@ -163,9 +167,9 @@ Unpack tgz.
sub unpack {
my $this=shift;
$this->SUPER::unpack(@_);
my $file=$this->filename;
my $file=abs_path($this->filename);
$this->do("cat $file | (cd ".$this->unpacked_tree."; tar zxpf -)")
$this->do("cd ".$this->unpacked_tree."; tar xpf $file")
or die "Unpacking of '$file' failed: $!";
# Delete the install directory that has slackware info in it.
$this->do("cd ".$this->unpacked_tree."; rm -rf ./install");
@@ -218,6 +222,8 @@ sub build {
return $tgz;
}
=back
=head1 AUTHOR
Joey Hess <joey@kitenet.net>

36
debian/changelog vendored
View File

@@ -1,3 +1,39 @@
alien (8.76) unstable; urgency=low
* Avoid using hostname -f for portability to unix systems,
such as Solaris, where any options _set_ the hostname.
* Fix bash shebang and recognise bash scripts as editable
shell scripts when converting to deb. Closes: #532330
(Thanks, Bruce Stephens)
-- Joey Hess <joeyh@debian.org> Mon, 08 Jun 2009 13:22:35 -0400
alien (8.75) unstable; urgency=low
* Simplified rules file.
* Modify maintainer scripts from rpm files to use /bin/bash rather
than /bin/sh. Many such scripts are only tested on systems where /bin/sh
is bash, and contain bashisms, which can cause trouble when converting
the rpm to be used on eg, the Debian family of distributions, where
/bin/sh can legitimatly be dash. Closes: #495971
-- Joey Hess <joeyh@debian.org> Wed, 06 May 2009 17:22:02 -0400
alien (8.74) unstable; urgency=low
* Support bzipped and uncompressed tar files, using tar's auto-compression
detection. (Requires gnu tar 1.14.91)
* pod fixes
-- Joey Hess <joeyh@debian.org> Sun, 15 Feb 2009 19:51:54 -0500
alien (8.73) unstable; urgency=low
* Fix pkg generation to not include /prototype in all packages.
(Kim Bisgaard)
-- Joey Hess <joeyh@debian.org> Sun, 26 Oct 2008 23:43:47 -0400
alien (8.72) unstable; urgency=low
* Use debhelper 7, rules file minimisation.

4
debian/control vendored
View File

@@ -1,9 +1,9 @@
Source: alien
Section: admin
Priority: optional
Build-Depends: debhelper (>= 7)
Build-Depends: debhelper (>= 7.0.50)
Maintainer: Joey Hess <joeyh@debian.org>
Standards-Version: 3.7.3
Standards-Version: 3.8.1
Vcs-Git: git://git.kitenet.net/alien
Homepage: http://kitenet.net/~joey/code/alien/

13
debian/rules vendored
View File

@@ -2,20 +2,19 @@
%:
dh $@
build:
dh build
override_dh_auto_test:
# simple smoke test
./alien.pl -V
binary-indep: build
dh install --before dh_auto_install
override_dh_auto_install:
$(MAKE) pure_install INSTALLDIRS=vendor \
PREFIX=$(shell pwd)/debian/alien/$(shell perl -MConfig -e 'print $$Config{prefix}') \
VARPREFIX=$(shell pwd)/debian/alien
dh install --after dh_auto_install
override_dh_auto_clean:
# distclean moans about MANIFEST, this is quieter
if [ -e Makefile ]; then $(MAKE) realclean; fi
# Not intended for use by anyone except the author.
announcedir:
@echo ${HOME}/src/joeywiki/code/alien/news
binary: binary-indep binary-arch