mirror of
https://github.com/Project-OSS-Revival/alien.git
synced 2026-04-24 14:00:17 +00:00
Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ab9218809 | ||
|
|
9c28b11e6c | ||
|
|
e14d223117 | ||
|
|
f456bbf8b6 | ||
|
|
78734c0523 | ||
|
|
f680d3af91 | ||
|
|
5b605e1960 | ||
|
|
cbf330f982 | ||
|
|
bcd8dae206 | ||
|
|
edcd96f80f | ||
|
|
c21645ddfa | ||
|
|
0f8fa0df54 | ||
|
|
2a84d6e8ec | ||
|
|
66a1247dfd | ||
|
|
e921e1417f | ||
|
|
d15598e944 | ||
|
|
ee792cb76c | ||
|
|
ecabe240bc | ||
|
|
b2421b584a | ||
|
|
7893ffb4ed |
@@ -317,6 +317,7 @@ sub prep {
|
||||
my $line=<$changelog>;
|
||||
if ($line=~/^[^ ]+\s+\(([^)]+)\)\s/) {
|
||||
my $version=$1;
|
||||
$version=~s/\s+//; # ensure no whitespace
|
||||
if ($version=~/(.*)-(.*)/) {
|
||||
$version=$1;
|
||||
$this->release($2);
|
||||
@@ -334,10 +335,14 @@ sub prep {
|
||||
print OUT $this->name." (".$this->version."-".$this->release.") experimental; urgency=low\n";
|
||||
print OUT "\n";
|
||||
print OUT " * Converted from .".$this->origformat." format to .deb by alien version $Alien::Version\n";
|
||||
print OUT " \n";
|
||||
if (defined $this->changelogtext) {
|
||||
my $ct=$this->changelogtext;
|
||||
$ct=~s/^/ /gm;
|
||||
print OUT $ct."\n";
|
||||
}
|
||||
print OUT "\n";
|
||||
print OUT " -- ".$this->username." <".$this->email."> ".$this->date."\n";
|
||||
print OUT "\n";
|
||||
print OUT $this->changelogtext."\n" if defined $this->changelogtext;
|
||||
close OUT;
|
||||
|
||||
# Control file.
|
||||
@@ -679,7 +684,7 @@ sub email {
|
||||
close MAILNAME;
|
||||
}
|
||||
if (!$mailname) {
|
||||
$mailname=$this->runpipe(1, "hostname -f");
|
||||
$mailname=$this->runpipe(1, "hostname");
|
||||
chomp $mailname;
|
||||
}
|
||||
return "$login\@$mailname";
|
||||
@@ -734,7 +739,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;
|
||||
}
|
||||
@@ -750,7 +755,7 @@ sub postinst {
|
||||
return "$firstline\n$permscript\n$rest";
|
||||
}
|
||||
|
||||
=cut
|
||||
=back
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -239,6 +239,9 @@ sub unpack {
|
||||
while (<GETPERMS>) {
|
||||
chomp;
|
||||
my ($mode, $owner, $group, $file) = split(/ /, $_, 4);
|
||||
|
||||
next if -l "$workdir/$file";
|
||||
|
||||
$mode = $mode & 07777; # remove filetype
|
||||
my $uid = getpwnam($owner);
|
||||
if (! defined $uid || $uid != 0) {
|
||||
@@ -258,12 +261,10 @@ sub unpack {
|
||||
if (defined($owninfo{$file}) && ($mode & 07000 > 0)) {
|
||||
$modeinfo{$file} = sprintf "%lo", $mode;
|
||||
}
|
||||
next unless -e "$workdir/$file"; # skip broken links
|
||||
if ($> == 0) {
|
||||
$this->do("chown", "$uid:$gid", "$workdir/$file")
|
||||
|| die "failed chowning $file to $uid\:$gid\: $!";
|
||||
}
|
||||
next if -l "$workdir/$file"; # skip links
|
||||
$this->do("chmod", sprintf("%lo", $mode), "$workdir/$file")
|
||||
|| die "failed changing mode of $file to $mode\: $!";
|
||||
}
|
||||
@@ -418,7 +419,9 @@ sub build {
|
||||
}
|
||||
|
||||
$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");
|
||||
if ($?) {
|
||||
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 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 +497,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;
|
||||
|
||||
@@ -358,6 +358,8 @@ sub release {
|
||||
}
|
||||
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Joey Hess <joey@kitenet.net>
|
||||
|
||||
@@ -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,9 +97,9 @@ sub scan {
|
||||
my ($basename)=('/'.$file)=~m#^/?.*/(.*?)$#;
|
||||
|
||||
# Strip out any tar extentions.
|
||||
$basename=~s/\.(tgz|tar\.(gz|Z))$//;
|
||||
$basename=~s/$tarext//;
|
||||
|
||||
if ($basename=~m/(.*)-(.*?[0-9]+.*)/) {
|
||||
if ($basename=~m/([\w-]+)-([0-9\.?]+).*/) {
|
||||
$this->name($1);
|
||||
$this->version($2);
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
61
debian/changelog
vendored
61
debian/changelog
vendored
@@ -1,3 +1,64 @@
|
||||
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
|
||||
|
||||
* 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.
|
||||
* Improve parsing of tgz filenames, to avoid confusion when the filename
|
||||
includes the package type (ie, "noarch"). Patch from Andrej Ricnik-Bay.
|
||||
* When generating a debian changelog file, work around bug #478925 by
|
||||
including the alien changelog text inside the debian changelog entry.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Thu, 01 May 2008 15:40:34 -0400
|
||||
|
||||
alien (8.71) unstable; urgency=low
|
||||
|
||||
* Deal with rpms that relocate ie, /usr into /usr/local, and don't
|
||||
|
||||
2
debian/compat
vendored
2
debian/compat
vendored
@@ -1 +1 @@
|
||||
4
|
||||
7
|
||||
|
||||
4
debian/control
vendored
4
debian/control
vendored
@@ -1,9 +1,9 @@
|
||||
Source: alien
|
||||
Section: admin
|
||||
Priority: optional
|
||||
Build-Depends: debhelper (>= 4)
|
||||
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/
|
||||
|
||||
|
||||
2
debian/docs
vendored
Normal file
2
debian/docs
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
README
|
||||
gendiff.txt
|
||||
43
debian/rules
vendored
43
debian/rules
vendored
@@ -1,47 +1,20 @@
|
||||
#!/usr/bin/make -f
|
||||
%:
|
||||
dh $@
|
||||
|
||||
build: build-stamp
|
||||
build-stamp:
|
||||
dh_testdir
|
||||
perl Makefile.PL
|
||||
$(MAKE)
|
||||
override_dh_auto_test:
|
||||
# simple smoke test
|
||||
./alien.pl -V
|
||||
touch build-stamp
|
||||
|
||||
clean:
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
rm -f build-stamp
|
||||
perl Makefile.PL
|
||||
if [ -e Makefile ]; then $(MAKE) realclean; fi
|
||||
dh_clean
|
||||
|
||||
binary-arch: build
|
||||
|
||||
binary-indep: build
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_clean -k
|
||||
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
|
||||
# Why does it make this empty directory? Sigh.
|
||||
rm -rf debian/alien/usr/lib
|
||||
dh_installdocs README gendiff.txt
|
||||
dh_installexamples
|
||||
dh_installchangelogs
|
||||
dh_compress
|
||||
dh_fixperms
|
||||
dh_perl
|
||||
dh_installdeb
|
||||
dh_gencontrol
|
||||
dh_md5sums
|
||||
dh_builddeb
|
||||
|
||||
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
|
||||
.PHONY: build clean binary-indep binary-arch binary
|
||||
|
||||
Reference in New Issue
Block a user