11 Commits
8.74 ... 8.78

Author SHA1 Message Date
Joey Hess
6ab9218809 releasing version 8.78 2009-07-08 13:55:16 -04:00
Pavel Roskin
9c28b11e6c Fix support for recent versions of rpm
Recent versions of rpm (such as 4.7.0) ignore the buildroot setting in
the spec file.  Use the --buildroot option to ensure the correct
buildroot is used.
2009-07-08 13:52:49 -04:00
Joey Hess
e14d223117 releasing version 8.77 2009-07-06 13:40:58 -04:00
Joey Hess
f456bbf8b6 In rpm permission fixup code, avoid processing symlinks since that would result in the file the link points to being "fixed". Closes: #535586 2009-07-06 13:35:03 -04:00
Joey Hess
78734c0523 Don't allow whitespace in package version when parsing debian/changelog. 2009-06-17 13:07:18 -04:00
Joey Hess
f680d3af91 releasing version 8.76 2009-06-08 13:24:25 -04:00
Joey Hess
5b605e1960 Fix bash shebang and recognise bash scripts as editable shell scripts when converting to deb. Closes: #532330 (Thanks, Bruce Stephens) 2009-06-08 13:22:30 -04:00
Joey Hess
cbf330f982 Avoid using hostname -f for portability to unix systems, such as Solaris, where any options _set_ the hostname. 2009-05-29 13:03:17 -04:00
Joey Hess
bcd8dae206 releasing version 8.75 2009-05-06 17:24:21 -04:00
Joey Hess
edcd96f80f 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 2009-05-06 17:20:44 -04:00
Joey Hess
c21645ddfa Simplified rules file. 2009-02-27 20:20:37 -05:00
5 changed files with 63 additions and 18 deletions

View File

@@ -317,6 +317,7 @@ sub prep {
my $line=<$changelog>; my $line=<$changelog>;
if ($line=~/^[^ ]+\s+\(([^)]+)\)\s/) { if ($line=~/^[^ ]+\s+\(([^)]+)\)\s/) {
my $version=$1; my $version=$1;
$version=~s/\s+//; # ensure no whitespace
if ($version=~/(.*)-(.*)/) { if ($version=~/(.*)-(.*)/) {
$version=$1; $version=$1;
$this->release($2); $this->release($2);
@@ -683,7 +684,7 @@ sub email {
close MAILNAME; close MAILNAME;
} }
if (!$mailname) { if (!$mailname) {
$mailname=$this->runpipe(1, "hostname -f"); $mailname=$this->runpipe(1, "hostname");
chomp $mailname; chomp $mailname;
} }
return "$login\@$mailname"; return "$login\@$mailname";
@@ -738,7 +739,7 @@ sub postinst {
return $postinst unless %$owninfo; return $postinst unless %$owninfo;
my ($firstline, $rest)=split(/\n/, $postinst, 2); 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"; print STDERR "warning: unable to add ownership fixup code to postinst as the postinst is not a shell script!\n";
return $postinst; return $postinst;
} }

View File

@@ -239,6 +239,9 @@ sub unpack {
while (<GETPERMS>) { while (<GETPERMS>) {
chomp; chomp;
my ($mode, $owner, $group, $file) = split(/ /, $_, 4); my ($mode, $owner, $group, $file) = split(/ /, $_, 4);
next if -l "$workdir/$file";
$mode = $mode & 07777; # remove filetype $mode = $mode & 07777; # remove filetype
my $uid = getpwnam($owner); my $uid = getpwnam($owner);
if (! defined $uid || $uid != 0) { if (! defined $uid || $uid != 0) {
@@ -258,12 +261,10 @@ sub unpack {
if (defined($owninfo{$file}) && ($mode & 07000 > 0)) { if (defined($owninfo{$file}) && ($mode & 07000 > 0)) {
$modeinfo{$file} = sprintf "%lo", $mode; $modeinfo{$file} = sprintf "%lo", $mode;
} }
next unless -e "$workdir/$file"; # skip broken links
if ($> == 0) { if ($> == 0) {
$this->do("chown", "$uid:$gid", "$workdir/$file") $this->do("chown", "$uid:$gid", "$workdir/$file")
|| die "failed chowning $file to $uid\:$gid\: $!"; || die "failed chowning $file to $uid\:$gid\: $!";
} }
next if -l "$workdir/$file"; # skip links
$this->do("chmod", sprintf("%lo", $mode), "$workdir/$file") $this->do("chmod", sprintf("%lo", $mode), "$workdir/$file")
|| die "failed changing mode of $file to $mode\: $!"; || die "failed changing mode of $file to $mode\: $!";
} }
@@ -418,7 +419,9 @@ sub build {
} }
$opts.=" $ENV{RPMBUILDOPT}" if exists $ENV{RPMBUILDOPT}; $opts.=" $ENV{RPMBUILDOPT}" if exists $ENV{RPMBUILDOPT};
my $command="cd $dir; $buildcmd -bb $opts ".$this->name."-".$this->version."-".$this->release.".spec"; my $pwd=`pwd`;
chomp $pwd;
my $command="cd $dir; $buildcmd --buildroot=$pwd/$dir -bb $opts ".$this->name."-".$this->version."-".$this->release.".spec";
my $log=$this->runpipe(1, "$command 2>&1"); my $log=$this->runpipe(1, "$command 2>&1");
if ($?) { if ($?) {
die "Package build failed. Here's the log of the command ($command):\n", $log; die "Package build failed. Here's the log of the command ($command):\n", $log;
@@ -463,11 +466,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 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. 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 When setting a value, we do some mangling too. Rpm maintainer scripts
are typically shell scripts, but often lack the leading #!/bin/sh are typically shell scripts, but often lack the leading shebang line.
This can confuse dpkg, so add the #!/bin/sh if it looks like there This can confuse dpkg, so add the shebang if it looks like there
is no shebang magic already in place. 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 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 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. adding code to the script to set RPM_INSTALL_PREFIX.
@@ -489,9 +497,10 @@ sub _script_helper {
my $value=shift; my $value=shift;
if (length $value and $value !~ m/^#!\s*\//) { if (length $value and $value !~ m/^#!\s*\//) {
$value="#!/bin/sh\n$prefixcode$value"; $value="#!/bin/bash\n$prefixcode$value";
} }
else { else {
$value=~s@^#!\s*/bin/sh(\s)@#!/bin/bash$1@;
$value=~s/\n/\n$prefixcode/s; $value=~s/\n/\n$prefixcode/s;
} }
$this->{$script} = $value; $this->{$script} = $value;

36
debian/changelog vendored
View File

@@ -1,3 +1,39 @@
alien (8.78) unstable; urgency=low
* Add support for rpm 4.7.0, which ignores the buildroot setting in the
spec file, by passing --buildroot. (Thanks, Pavel Roskin)
-- Joey Hess <joeyh@debian.org> Wed, 08 Jul 2009 13:53:05 -0400
alien (8.77) unstable; urgency=low
* Don't allow whitespace in package version when parsing debian/changelog.
* In rpm permission fixup code, avoid processing symlinks since that
would result in the file the link points to being "fixed". Closes: #535586
-- Joey Hess <joeyh@debian.org> Mon, 06 Jul 2009 13:37:01 -0400
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 alien (8.74) unstable; urgency=low
* Support bzipped and uncompressed tar files, using tar's auto-compression * Support bzipped and uncompressed tar files, using tar's auto-compression

4
debian/control vendored
View File

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

13
debian/rules vendored
View File

@@ -2,20 +2,19 @@
%: %:
dh $@ dh $@
build: override_dh_auto_test:
dh build
# simple smoke test # simple smoke test
./alien.pl -V ./alien.pl -V
binary-indep: build override_dh_auto_install:
dh install --before dh_auto_install
$(MAKE) pure_install INSTALLDIRS=vendor \ $(MAKE) pure_install INSTALLDIRS=vendor \
PREFIX=$(shell pwd)/debian/alien/$(shell perl -MConfig -e 'print $$Config{prefix}') \ PREFIX=$(shell pwd)/debian/alien/$(shell perl -MConfig -e 'print $$Config{prefix}') \
VARPREFIX=$(shell pwd)/debian/alien 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. # Not intended for use by anyone except the author.
announcedir: announcedir:
@echo ${HOME}/src/joeywiki/code/alien/news @echo ${HOME}/src/joeywiki/code/alien/news
binary: binary-indep binary-arch