mirror of
https://github.com/Project-OSS-Revival/alien.git
synced 2026-04-25 14:00:17 +00:00
Compare commits
62 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ee8794614c | ||
|
|
c4c8e3bc4a | ||
|
|
c6b123e40f | ||
|
|
c83906446f | ||
|
|
6a2e53bc63 | ||
|
|
ccd0532208 | ||
|
|
3985359d47 | ||
|
|
385b2066d3 | ||
|
|
b65f2d6974 | ||
|
|
2989545da6 | ||
|
|
3e7874e029 | ||
|
|
919146ea09 | ||
|
|
7179500cf8 | ||
|
|
f0fe4f6c80 | ||
|
|
922b06bf8d | ||
|
|
b235b51c36 | ||
|
|
3e46c56693 | ||
|
|
80877786d3 | ||
|
|
0de126bcfb | ||
|
|
3f13d15dfd | ||
|
|
f66dbb457b | ||
|
|
a5a16d572f | ||
|
|
18e40eeabb | ||
|
|
1a98232df6 | ||
|
|
648de61a5d | ||
|
|
0a70fe5858 | ||
|
|
e2eb7e0026 | ||
|
|
9b5622f8f2 | ||
|
|
88a0008668 | ||
|
|
a7be498dca | ||
|
|
f11a007797 | ||
|
|
9f53b73b58 | ||
|
|
bb351ddbc8 | ||
|
|
3572ac62b9 | ||
|
|
6443b942ab | ||
|
|
919297f3d1 | ||
|
|
22709da70e | ||
|
|
06ae0587ac | ||
|
|
c1b64b0c48 | ||
|
|
93ad8ae367 | ||
|
|
d3750a8156 | ||
|
|
7a1afcfb97 | ||
|
|
2999238f34 | ||
|
|
887717f304 | ||
|
|
9cb511802b | ||
|
|
6f5a303f3b | ||
|
|
92933477e6 | ||
|
|
53751ccbbf | ||
|
|
41fc0d549f | ||
|
|
b1bd50cc90 | ||
|
|
dd38b4e86d | ||
|
|
7aee419bd2 | ||
|
|
db4ea6fa4a | ||
|
|
f545de15f5 | ||
|
|
2fb28d27d2 | ||
|
|
363deec1c6 | ||
|
|
b69f536367 | ||
|
|
f717997da1 | ||
|
|
3faa48b23f | ||
|
|
e745cde2a0 | ||
|
|
5e4e122d58 | ||
|
|
873c3606f3 |
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -1 +0,0 @@
|
|||||||
debian/changelog merge=dpkg-mergechangelogs
|
|
||||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,2 +0,0 @@
|
|||||||
alien.lsm
|
|
||||||
alien.spec
|
|
||||||
@@ -62,7 +62,7 @@ The package's maintainer.
|
|||||||
|
|
||||||
=item depends
|
=item depends
|
||||||
|
|
||||||
The package's dependancies. Only dependencies that should exist on all
|
The package's dependencies. Only dependencies that should exist on all
|
||||||
target distributions can be put in here though (ie: lsb).
|
target distributions can be put in here though (ie: lsb).
|
||||||
|
|
||||||
=item group
|
=item group
|
||||||
@@ -173,7 +173,7 @@ sub install {
|
|||||||
=item test
|
=item test
|
||||||
|
|
||||||
Test a package file. The filename is passed, should return an array of lines
|
Test a package file. The filename is passed, should return an array of lines
|
||||||
of test results. Child classses may implement this.
|
of test results. Child classes may implement this.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ Alien::Package::Deb - an object that represents a deb package
|
|||||||
package Alien::Package::Deb;
|
package Alien::Package::Deb;
|
||||||
use strict;
|
use strict;
|
||||||
use base qw(Alien::Package);
|
use base qw(Alien::Package);
|
||||||
|
use List::Util qw(first);
|
||||||
|
|
||||||
=head1 DESCRIPTION
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
@@ -23,6 +24,10 @@ Alien::Package.
|
|||||||
|
|
||||||
Set to a true value if dpkg-deb is available.
|
Set to a true value if dpkg-deb is available.
|
||||||
|
|
||||||
|
=item deb_member_list
|
||||||
|
|
||||||
|
Set to the list of member names in the deb package.
|
||||||
|
|
||||||
=item dirtrans
|
=item dirtrans
|
||||||
|
|
||||||
After the build stage, set to a hash reference of the directories we moved
|
After the build stage, set to a hash reference of the directories we moved
|
||||||
@@ -66,7 +71,7 @@ sub init {
|
|||||||
|
|
||||||
=item checkfile
|
=item checkfile
|
||||||
|
|
||||||
Detect deb files by their extention.
|
Detect deb files by their extension.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
@@ -117,6 +122,26 @@ sub test {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=item get_deb_member_list
|
||||||
|
|
||||||
|
Helper method. Pass it the name of the deb and it will return the list of
|
||||||
|
ar members.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub get_deb_member_list {
|
||||||
|
my $this=shift;
|
||||||
|
my $file=$this->filename;
|
||||||
|
my $members=$this->deb_member_list;
|
||||||
|
|
||||||
|
unless (defined $members) {
|
||||||
|
$members = [ map { chomp; $_ } $this->runpipe(1, "ar -t '$file'") ];
|
||||||
|
$this->deb_member_list($members);
|
||||||
|
}
|
||||||
|
|
||||||
|
return @{$members};
|
||||||
|
}
|
||||||
|
|
||||||
=item getcontrolfile
|
=item getcontrolfile
|
||||||
|
|
||||||
Helper method. Pass it the name of a control file, and it will pull it out
|
Helper method. Pass it the name of a control file, and it will pull it out
|
||||||
@@ -142,11 +167,58 @@ sub getcontrolfile {
|
|||||||
" tar xf - './$file' &&".
|
" tar xf - './$file' &&".
|
||||||
" cat '$file'; cd /; rm -rf /tmp/tar_out.$$)";
|
" cat '$file'; cd /; rm -rf /tmp/tar_out.$$)";
|
||||||
}
|
}
|
||||||
my $getcontrol = "ar -p '$file' control.tar.gz | gzip -dc | ".tar_out($controlfile)." 2>/dev/null";
|
my $controlcomp;
|
||||||
|
my $controlmember = first { /^control\.tar/ }
|
||||||
|
$this->get_deb_member_list;
|
||||||
|
if (! defined $controlmember) {
|
||||||
|
die 'Cannot find control member!';
|
||||||
|
} elsif ($controlmember eq 'control.tar.gz') {
|
||||||
|
$controlcomp = 'gzip -dc';
|
||||||
|
} elsif ($controlmember eq 'control.tar.xz') {
|
||||||
|
$controlcomp = 'xz -dc';
|
||||||
|
} elsif ($controlmember eq 'control.tar') {
|
||||||
|
$controlcomp = 'cat';
|
||||||
|
} else {
|
||||||
|
die 'Unknown control member!';
|
||||||
|
}
|
||||||
|
my $getcontrol = "ar -p '$file' $controlmember | $controlcomp | ".tar_out($controlfile)." 2>/dev/null";
|
||||||
return $this->runpipe(1, $getcontrol);
|
return $this->runpipe(1, $getcontrol);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=item get_datamember_cmd
|
||||||
|
|
||||||
|
Helper method. Pass it the name of the deb and it will return the raw
|
||||||
|
command needed to extract the data.tar member.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub get_datamember_cmd {
|
||||||
|
my $this=shift;
|
||||||
|
my $file=$this->filename;
|
||||||
|
|
||||||
|
my $datacomp;
|
||||||
|
my $datamember = first { /^data\.tar/ }
|
||||||
|
$this->get_deb_member_list;
|
||||||
|
if (! defined $datamember) {
|
||||||
|
die 'Cannot find data member!';
|
||||||
|
} elsif ($datamember eq 'data.tar.gz') {
|
||||||
|
$datacomp = 'gzip -dc';
|
||||||
|
} elsif ($datamember eq 'data.tar.bz2') {
|
||||||
|
$datacomp = 'bzip2 -dc';
|
||||||
|
} elsif ($datamember eq 'data.tar.xz') {
|
||||||
|
$datacomp = 'xz -dc';
|
||||||
|
} elsif ($datamember eq 'data.tar.lzma') {
|
||||||
|
$datacomp = 'xz -dc';
|
||||||
|
} elsif ($datamember eq 'data.tar') {
|
||||||
|
$datacomp = 'cat';
|
||||||
|
} else {
|
||||||
|
die 'Unknown data member!';
|
||||||
|
}
|
||||||
|
|
||||||
|
return "ar -p '$file' $datamember | $datacomp";
|
||||||
|
}
|
||||||
|
|
||||||
=item scan
|
=item scan
|
||||||
|
|
||||||
Implement the scan method to read a deb file.
|
Implement the scan method to read a deb file.
|
||||||
@@ -209,15 +281,15 @@ sub scan {
|
|||||||
|
|
||||||
# Read in the list of all files.
|
# Read in the list of all files.
|
||||||
# Note that tar doesn't supply a leading '/', so we have to add that.
|
# Note that tar doesn't supply a leading '/', so we have to add that.
|
||||||
my @filelist;
|
my $datamember_cmd;
|
||||||
if ($this->have_dpkg_deb) {
|
if ($this->have_dpkg_deb) {
|
||||||
@filelist=map { chomp; s:\./::; "/$_" }
|
$datamember_cmd = "dpkg-deb --fsys-tarfile '$file'";
|
||||||
$this->runpipe(0, "dpkg-deb --fsys-tarfile '$file' | tar tf -");
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@filelist=map { chomp; s:\./::; "/$_" }
|
$datamember_cmd = $this->get_datamember_cmd($file);
|
||||||
$this->runpipe(0, "ar -p '$file' data.tar.gz | gzip -dc | tar tf -");
|
|
||||||
}
|
}
|
||||||
|
my @filelist=map { chomp; s:\./::; "/$_" }
|
||||||
|
$this->runpipe(0, "$datamember_cmd | tar tf -");
|
||||||
$this->filelist(\@filelist);
|
$this->filelist(\@filelist);
|
||||||
|
|
||||||
# Read in the scripts, if any.
|
# Read in the scripts, if any.
|
||||||
@@ -244,7 +316,9 @@ sub unpack {
|
|||||||
or die "Unpacking of '$file' failed: $!";
|
or die "Unpacking of '$file' failed: $!";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$this->do("ar -p $file data.tar.gz | gzip -dc | (cd ".$this->unpacked_tree."; tar xpf -)")
|
my $datamember_cmd = $this->get_datamember_cmd($file);
|
||||||
|
|
||||||
|
$this->do("$datamember_cmd | (cd ".$this->unpacked_tree."; tar xpf -)")
|
||||||
or die "Unpacking of '$file' failed: $!";
|
or die "Unpacking of '$file' failed: $!";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -385,7 +459,7 @@ sub prep {
|
|||||||
|
|
||||||
# Use debhelper v7
|
# Use debhelper v7
|
||||||
open (OUT, ">$dir/debian/compat") || die "$dir/debian/compat: $!";
|
open (OUT, ">$dir/debian/compat") || die "$dir/debian/compat: $!";
|
||||||
print OUT "7\n";
|
print OUT "10\n";
|
||||||
close OUT;
|
close OUT;
|
||||||
|
|
||||||
# A minimal rules file.
|
# A minimal rules file.
|
||||||
@@ -397,64 +471,54 @@ sub prep {
|
|||||||
|
|
||||||
PACKAGE=\$(shell dh_listpackages)
|
PACKAGE=\$(shell dh_listpackages)
|
||||||
|
|
||||||
build:
|
%:
|
||||||
dh_testdir
|
dh \$\@
|
||||||
|
|
||||||
clean:
|
override_dh_clean:
|
||||||
dh_testdir
|
|
||||||
dh_testroot
|
|
||||||
dh_clean -d
|
dh_clean -d
|
||||||
|
|
||||||
binary-indep: build
|
override_dh_auto_configure:
|
||||||
|
|
||||||
binary-arch: build
|
override_dh_auto_build:
|
||||||
dh_testdir
|
|
||||||
dh_testroot
|
|
||||||
dh_prep
|
|
||||||
dh_installdirs
|
|
||||||
|
|
||||||
dh_installdocs
|
|
||||||
dh_installchangelogs
|
|
||||||
|
|
||||||
|
override_dh_auto_install:
|
||||||
|
mkdir -p debian/\$(PACKAGE)
|
||||||
# Copy the packages's files.
|
# Copy the packages's files.
|
||||||
find . -maxdepth 1 -mindepth 1 -not -name debian -print0 | \\
|
find . -maxdepth 1 -mindepth 1 -not -name debian -print0 | \\
|
||||||
xargs -0 -r -i cp -a {} debian/\$(PACKAGE)
|
sed -e s#'./'##g | \\
|
||||||
|
xargs -0 -r -i cp -a ./{} debian/\$(PACKAGE)/{}
|
||||||
#
|
#
|
||||||
# If you need to move files around in debian/\$(PACKAGE) or do some
|
# If you need to move files around in debian/\$(PACKAGE) or do some
|
||||||
# binary patching, do it here
|
# binary patching, do it here
|
||||||
#
|
#
|
||||||
|
|
||||||
|
override_dh_strip:
|
||||||
# This has been known to break on some wacky binaries.
|
# This has been known to break on some wacky binaries.
|
||||||
# dh_strip
|
# dh_strip
|
||||||
dh_compress
|
|
||||||
$fixpermscomment dh_fixperms
|
|
||||||
dh_makeshlibs
|
|
||||||
dh_installdeb
|
|
||||||
-dh_shlibdeps
|
|
||||||
dh_gencontrol
|
|
||||||
dh_md5sums
|
|
||||||
dh_builddeb
|
|
||||||
|
|
||||||
binary: binary-indep binary-arch
|
override_dh_usrlocal:
|
||||||
.PHONY: build clean binary-indep binary-arch binary
|
-dh_usrlocal || printf "Your package seems to be installing files into /usr/local/, which could be buggy. Will continue anyway.\\n"
|
||||||
|
|
||||||
|
override_dh_fixperms:
|
||||||
|
$fixpermscomment dh_fixperms
|
||||||
|
|
||||||
|
override_dh_shlibdeps:
|
||||||
|
-dh_shlibdeps
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
close OUT;
|
close OUT;
|
||||||
$this->do("chmod", 755, "$dir/debian/rules");
|
$this->do("chmod", 755, "$dir/debian/rules");
|
||||||
|
|
||||||
# Save any scripts.
|
|
||||||
if ($this->usescripts) {
|
if ($this->usescripts) {
|
||||||
foreach my $script (qw{postinst postrm preinst prerm}) {
|
foreach my $script (qw{postinst postrm preinst prerm}) {
|
||||||
my $data=$this->$script();
|
$this->savescript($script, $this->$script());
|
||||||
next unless defined $data;
|
|
||||||
next if $data =~ m/^\s*$/;
|
|
||||||
open (OUT,">$dir/debian/$script") ||
|
|
||||||
die "$dir/debian/$script: $!";
|
|
||||||
print OUT $data;
|
|
||||||
close OUT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
# There may be a postinst with permissions fixups even when
|
||||||
|
# scripts are disabled.
|
||||||
|
$this->savescript("postinst", undef);
|
||||||
|
}
|
||||||
|
|
||||||
my %dirtrans=( # Note: no trailing slashes on these directory names!
|
my %dirtrans=( # Note: no trailing slashes on these directory names!
|
||||||
# Move files to FHS-compliant locations, if possible.
|
# Move files to FHS-compliant locations, if possible.
|
||||||
@@ -542,7 +606,7 @@ sub cleantree {
|
|||||||
|
|
||||||
Set/get package name.
|
Set/get package name.
|
||||||
|
|
||||||
Always returns the packge name in lowercase with all invalid characters
|
Always returns the package name in lowercase with all invalid characters
|
||||||
rmoved. The name is however, stored unchanged.
|
rmoved. The name is however, stored unchanged.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
@@ -596,12 +660,13 @@ sub version {
|
|||||||
# get
|
# get
|
||||||
return unless defined wantarray; # optimization
|
return unless defined wantarray; # optimization
|
||||||
$_=$this->{version};
|
$_=$this->{version};
|
||||||
# Make sure the version contains digets.
|
# Make sure the version contains a digit at the start, as required
|
||||||
unless (/[0-9]/) {
|
# by dpkg-deb.
|
||||||
# Drat. Well, add some. dpkg-deb won't work
|
unless (/^[0-9]/) {
|
||||||
# on a version w/o numbers!
|
$_="0".$_;
|
||||||
return $_."0";
|
|
||||||
}
|
}
|
||||||
|
# filter out some characters not allowed in debian versions
|
||||||
|
s/[^-.+~:A-Za-z0-9]//g; # see lib/dpkg/parsehelp.c parseversion
|
||||||
return $_;
|
return $_;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -727,30 +792,50 @@ sub username {
|
|||||||
return $username;
|
return $username;
|
||||||
}
|
}
|
||||||
|
|
||||||
=item postinst
|
=item savescript
|
||||||
|
|
||||||
Returns the postinst. This may include generated shell code to set owners
|
Saves script to debian directory.
|
||||||
and groups from the owninfo field, and update modes from the modeinfo field.
|
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub postinst {
|
sub savescript {
|
||||||
my $this=shift;
|
my $this=shift;
|
||||||
|
my $script=shift;
|
||||||
|
my $data=shift;
|
||||||
|
|
||||||
if (@_) {
|
if ($script eq 'postinst') {
|
||||||
$this->{postinst}=shift;
|
$data=$this->gen_postinst($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $dir=$this->unpacked_tree;
|
||||||
|
|
||||||
|
return unless defined $data;
|
||||||
|
next if $data =~ m/^\s*$/;
|
||||||
|
open (OUT,">$dir/debian/$script") ||
|
||||||
|
die "$dir/debian/$script: $!";
|
||||||
|
print OUT $data;
|
||||||
|
close OUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
=item gen_postinst
|
||||||
|
|
||||||
|
Modifies or creates a postinst. This may include generated shell code to set
|
||||||
|
owners and groups from the owninfo field, and update modes from the modeinfo
|
||||||
|
field.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub gen_postinst {
|
||||||
|
my $this=shift;
|
||||||
|
my $postinst=shift;
|
||||||
|
|
||||||
my $owninfo = $this->owninfo;
|
my $owninfo = $this->owninfo;
|
||||||
my $modeinfo = $this->modeinfo;
|
my $modeinfo = $this->modeinfo;
|
||||||
my $postinst = $this->{postinst};
|
return $postinst unless ref $owninfo && %$owninfo;
|
||||||
return $postinst unless ref $owninfo;
|
|
||||||
|
|
||||||
# If there is no postinst, let's make one up..
|
# If there is no postinst, let's make one up..
|
||||||
$postinst="#!/bin/sh\n" unless defined $postinst && length $postinst;
|
$postinst="#!/bin/sh\n" unless defined $postinst && length $postinst;
|
||||||
|
|
||||||
return $postinst unless %$owninfo;
|
|
||||||
|
|
||||||
my ($firstline, $rest)=split(/\n/, $postinst, 2);
|
my ($firstline, $rest)=split(/\n/, $postinst, 2);
|
||||||
if ($firstline !~ m/^#!\s*\/bin\/(ba)?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";
|
||||||
|
|||||||
@@ -96,8 +96,8 @@ sub revert {
|
|||||||
|
|
||||||
=item build
|
=item build
|
||||||
|
|
||||||
Uses the parent's build method. If a lsb-rpm is available, uses it to build
|
Uses the parent's build method. If a lsb-rpmbuild is available, uses it to
|
||||||
the package.
|
build the package.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
@@ -105,8 +105,8 @@ sub build {
|
|||||||
my $this=shift;
|
my $this=shift;
|
||||||
my $buildcmd=shift || 'rpmbuild';
|
my $buildcmd=shift || 'rpmbuild';
|
||||||
foreach (split(/:/,$ENV{PATH})) {
|
foreach (split(/:/,$ENV{PATH})) {
|
||||||
if (-x "$_/lsb-rpm") {
|
if (-x "$_/lsb-rpmbuild") {
|
||||||
$buildcmd='lsb-rpm';
|
$buildcmd='lsb-rpmbuild';
|
||||||
last;
|
last;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ Relocatable rpm packages have a prefixes field.
|
|||||||
|
|
||||||
=item checkfile
|
=item checkfile
|
||||||
|
|
||||||
Detect rpm files by their extention.
|
Detect rpm files by their extension.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ sub checkfile {
|
|||||||
|
|
||||||
=item install
|
=item install
|
||||||
|
|
||||||
Install a rpm. If RPMINSTALLOPT is set in the environement, the options in
|
Install a rpm. If RPMINSTALLOPT is set in the environment, the options in
|
||||||
it are passed to rpm on its command line.
|
it are passed to rpm on its command line.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
@@ -161,11 +161,11 @@ sub unpack {
|
|||||||
|
|
||||||
# Check if we need to use lzma to uncompress the cpio archive
|
# Check if we need to use lzma to uncompress the cpio archive
|
||||||
my $decomp='';
|
my $decomp='';
|
||||||
if ($this->do("rpm2cpio ".$this->filename." | lzma -t -q > /dev/null 2>&1")) {
|
if ($this->do("rpm2cpio '".$this->filename."' | lzma -t -q > /dev/null 2>&1")) {
|
||||||
$decomp = 'lzma -d -q |';
|
$decomp = 'lzma -d -q |';
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->do("rpm2cpio ".$this->filename." | (cd $workdir; $decomp cpio --extract --make-directories --no-absolute-filenames --preserve-modification-time) 2>&1")
|
$this->do("rpm2cpio '".$this->filename."' | (cd $workdir; $decomp cpio --extract --make-directories --no-absolute-filenames --preserve-modification-time) 2>&1")
|
||||||
or die "Unpacking of '".$this->filename."' failed";
|
or die "Unpacking of '".$this->filename."' failed";
|
||||||
|
|
||||||
# cpio does not necessarily store all parent directories in an
|
# cpio does not necessarily store all parent directories in an
|
||||||
@@ -174,7 +174,7 @@ sub unpack {
|
|||||||
# Find those directories and make them mode 755, which is more
|
# Find those directories and make them mode 755, which is more
|
||||||
# reasonable.
|
# reasonable.
|
||||||
my %seenfiles;
|
my %seenfiles;
|
||||||
open (RPMLIST, "rpm2cpio ".$this->filename." | $decomp cpio -it --quiet |")
|
open (RPMLIST, "rpm2cpio '".$this->filename."' | $decomp cpio -it --quiet |")
|
||||||
or die "File list of '".$this->filename."' failed";
|
or die "File list of '".$this->filename."' failed";
|
||||||
while (<RPMLIST>) {
|
while (<RPMLIST>) {
|
||||||
chomp;
|
chomp;
|
||||||
@@ -184,7 +184,7 @@ sub unpack {
|
|||||||
foreach my $file (`cd $workdir; find ./`) {
|
foreach my $file (`cd $workdir; find ./`) {
|
||||||
chomp $file;
|
chomp $file;
|
||||||
if (! $seenfiles{$file} && -d "$workdir/$file" && ! -l "$workdir/$file") {
|
if (! $seenfiles{$file} && -d "$workdir/$file" && ! -l "$workdir/$file") {
|
||||||
$this->do("chmod 755 $workdir/$file");
|
$this->do("chmod 755 '$workdir/$file'");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,7 +248,7 @@ sub unpack {
|
|||||||
# postinst.
|
# postinst.
|
||||||
my %owninfo = ();
|
my %owninfo = ();
|
||||||
my %modeinfo = ();
|
my %modeinfo = ();
|
||||||
open (GETPERMS, 'rpm --queryformat \'[%{FILEMODES} %{FILEUSERNAME} %{FILEGROUPNAME} %{FILENAMES}\n]\' -qp '.$this->filename.' |');
|
open (GETPERMS, 'rpm --queryformat \'[%{FILEMODES} %{FILEUSERNAME} %{FILEGROUPNAME} %{FILENAMES}\n]\' -qp \''.$this->filename.'\' |');
|
||||||
while (<GETPERMS>) {
|
while (<GETPERMS>) {
|
||||||
chomp;
|
chomp;
|
||||||
my ($mode, $owner, $group, $file) = split(/ /, $_, 4);
|
my ($mode, $owner, $group, $file) = split(/ /, $_, 4);
|
||||||
@@ -302,10 +302,142 @@ sub prep {
|
|||||||
my $this=shift;
|
my $this=shift;
|
||||||
my $dir=$this->unpacked_tree || die "The package must be unpacked first!";
|
my $dir=$this->unpacked_tree || die "The package must be unpacked first!";
|
||||||
|
|
||||||
|
# Exclude standard system directories
|
||||||
|
# This list is adapted from the rpmlint source code
|
||||||
|
my @standard_dirs = (
|
||||||
|
"/",
|
||||||
|
"/bin/",
|
||||||
|
"/boot/",
|
||||||
|
"/etc/",
|
||||||
|
"/etc/X11/",
|
||||||
|
"/etc/opt/",
|
||||||
|
"/etc/profile.d/",
|
||||||
|
"/etc/skel/",
|
||||||
|
"/etc/xinetd.d/",
|
||||||
|
"/home/",
|
||||||
|
"/lib/",
|
||||||
|
"/lib/modules/",
|
||||||
|
"/lib64/",
|
||||||
|
"/media/",
|
||||||
|
"/mnt/",
|
||||||
|
"/mnt/cdrom/",
|
||||||
|
"/mnt/disk/",
|
||||||
|
"/mnt/floppy/",
|
||||||
|
"/opt/",
|
||||||
|
"/proc/",
|
||||||
|
"/root/",
|
||||||
|
"/run/",
|
||||||
|
"/sbin/",
|
||||||
|
"/selinux/",
|
||||||
|
"/srv/",
|
||||||
|
"/sys/",
|
||||||
|
"/tmp/",
|
||||||
|
"/usr/",
|
||||||
|
"/usr/X11R6/",
|
||||||
|
"/usr/X11R6/bin/",
|
||||||
|
"/usr/X11R6/doc/",
|
||||||
|
"/usr/X11R6/include/",
|
||||||
|
"/usr/X11R6/lib/",
|
||||||
|
"/usr/X11R6/lib64/",
|
||||||
|
"/usr/X11R6/man/",
|
||||||
|
"/usr/X11R6/man/man1/",
|
||||||
|
"/usr/X11R6/man/man2/",
|
||||||
|
"/usr/X11R6/man/man3/",
|
||||||
|
"/usr/X11R6/man/man4/",
|
||||||
|
"/usr/X11R6/man/man5/",
|
||||||
|
"/usr/X11R6/man/man6/",
|
||||||
|
"/usr/X11R6/man/man7/",
|
||||||
|
"/usr/X11R6/man/man8/",
|
||||||
|
"/usr/X11R6/man/man9/",
|
||||||
|
"/usr/X11R6/man/mann/",
|
||||||
|
"/usr/bin/",
|
||||||
|
"/usr/bin/X11/",
|
||||||
|
"/usr/etc/",
|
||||||
|
"/usr/games/",
|
||||||
|
"/usr/include/",
|
||||||
|
"/usr/lib/",
|
||||||
|
"/usr/lib/X11/",
|
||||||
|
"/usr/lib/games/",
|
||||||
|
"/usr/lib/gcc-lib/",
|
||||||
|
"/usr/lib/menu/",
|
||||||
|
"/usr/lib64/",
|
||||||
|
"/usr/lib64/gcc-lib/",
|
||||||
|
"/usr/local/",
|
||||||
|
"/usr/local/bin/",
|
||||||
|
"/usr/local/doc/",
|
||||||
|
"/usr/local/etc/",
|
||||||
|
"/usr/local/games/",
|
||||||
|
"/usr/local/info/",
|
||||||
|
"/usr/local/lib/",
|
||||||
|
"/usr/local/lib64/",
|
||||||
|
"/usr/local/man/",
|
||||||
|
"/usr/local/man/man1/",
|
||||||
|
"/usr/local/man/man2/",
|
||||||
|
"/usr/local/man/man3/",
|
||||||
|
"/usr/local/man/man4/",
|
||||||
|
"/usr/local/man/man5/",
|
||||||
|
"/usr/local/man/man6/",
|
||||||
|
"/usr/local/man/man7/",
|
||||||
|
"/usr/local/man/man8/",
|
||||||
|
"/usr/local/man/man9/",
|
||||||
|
"/usr/local/man/mann/",
|
||||||
|
"/usr/local/sbin/",
|
||||||
|
"/usr/local/share/",
|
||||||
|
"/usr/local/share/man/",
|
||||||
|
"/usr/local/share/man/man1/",
|
||||||
|
"/usr/local/share/man/man2/",
|
||||||
|
"/usr/local/share/man/man3/",
|
||||||
|
"/usr/local/share/man/man4/",
|
||||||
|
"/usr/local/share/man/man5/",
|
||||||
|
"/usr/local/share/man/man6/",
|
||||||
|
"/usr/local/share/man/man7/",
|
||||||
|
"/usr/local/share/man/man8/",
|
||||||
|
"/usr/local/share/man/man9/",
|
||||||
|
"/usr/local/share/man/mann/",
|
||||||
|
"/usr/local/src/",
|
||||||
|
"/usr/sbin/",
|
||||||
|
"/usr/share/",
|
||||||
|
"/usr/share/dict/",
|
||||||
|
"/usr/share/doc/",
|
||||||
|
"/usr/share/icons/",
|
||||||
|
"/usr/share/info/",
|
||||||
|
"/usr/share/man/",
|
||||||
|
"/usr/share/man/man1/",
|
||||||
|
"/usr/share/man/man2/",
|
||||||
|
"/usr/share/man/man3/",
|
||||||
|
"/usr/share/man/man4/",
|
||||||
|
"/usr/share/man/man5/",
|
||||||
|
"/usr/share/man/man6/",
|
||||||
|
"/usr/share/man/man7/",
|
||||||
|
"/usr/share/man/man8/",
|
||||||
|
"/usr/share/man/man9/",
|
||||||
|
"/usr/share/man/mann/",
|
||||||
|
"/usr/share/misc/",
|
||||||
|
"/usr/src/",
|
||||||
|
"/usr/tmp/",
|
||||||
|
"/var/",
|
||||||
|
"/var/cache/",
|
||||||
|
"/var/db/",
|
||||||
|
"/var/lib/",
|
||||||
|
"/var/lib/games/",
|
||||||
|
"/var/lib/misc/",
|
||||||
|
"/var/lib/rpm/",
|
||||||
|
"/var/local/",
|
||||||
|
"/var/log/",
|
||||||
|
"/var/mail/",
|
||||||
|
"/var/nis/",
|
||||||
|
"/var/opt/",
|
||||||
|
"/var/preserve/",
|
||||||
|
"/var/spool/",
|
||||||
|
"/var/spool/mail/",
|
||||||
|
"/var/tmp/"
|
||||||
|
);
|
||||||
|
|
||||||
# Place %config in front of files that are conffiles.
|
# Place %config in front of files that are conffiles.
|
||||||
my @conffiles = @{$this->conffiles};
|
my @conffiles = @{$this->conffiles};
|
||||||
my $filelist;
|
my $filelist;
|
||||||
foreach my $fn (@{$this->filelist}) {
|
foreach my $fn (@{$this->filelist}) {
|
||||||
|
if (! grep(m:^\Q$fn\E$:,@standard_dirs)) {
|
||||||
# Unquote any escaped characters in filenames - needed for
|
# Unquote any escaped characters in filenames - needed for
|
||||||
# non ascii characters. (eg. iso_8859-1 latin set)
|
# non ascii characters. (eg. iso_8859-1 latin set)
|
||||||
if ($fn =~ /\\/) {
|
if ($fn =~ /\\/) {
|
||||||
@@ -324,6 +456,7 @@ sub prep {
|
|||||||
$filelist.=qq{"$fn"\n};
|
$filelist.=qq{"$fn"\n};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# Write out the spec file.
|
# Write out the spec file.
|
||||||
my $spec="$dir/".$this->name."-".$this->version."-".$this->release.".spec";
|
my $spec="$dir/".$this->name."-".$this->version."-".$this->release.".spec";
|
||||||
@@ -392,7 +525,7 @@ sub cleantree {
|
|||||||
|
|
||||||
=item build
|
=item build
|
||||||
|
|
||||||
Build a rpm. If RPMBUILDOPT is set in the environement, the options in
|
Build a rpm. If RPMBUILDOPT is set in the environment, the options in
|
||||||
it are passed to rpm on its command line.
|
it are passed to rpm on its command line.
|
||||||
|
|
||||||
An optional parameter, if passed, can be used to specify the program to use
|
An optional parameter, if passed, can be used to specify the program to use
|
||||||
@@ -424,7 +557,7 @@ sub build {
|
|||||||
$opts="--buildarch ".$this->arch;
|
$opts="--buildarch ".$this->arch;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
# Presumably we're delaing with rpm 3.0 or above, which
|
# Presumably we're dealing with rpm 3.0 or above, which
|
||||||
# doesn't output rpmdir in any format I'd care to try to
|
# doesn't output rpmdir in any format I'd care to try to
|
||||||
# parse. Instead, rpm is now of a late enough version to
|
# parse. Instead, rpm is now of a late enough version to
|
||||||
# notice the %define's in the spec file, that will make the
|
# notice the %define's in the spec file, that will make the
|
||||||
@@ -479,7 +612,7 @@ sub version {
|
|||||||
|
|
||||||
Set/get script fields.
|
Set/get script fields.
|
||||||
|
|
||||||
When retrieving a value, we have to do some truely sick mangling. Since
|
When retrieving a value, we have to do some truly sick mangling. Since
|
||||||
debian/slackware scripts can be anything -- perl programs or binary files
|
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.
|
||||||
@@ -564,7 +697,7 @@ sub prerm {
|
|||||||
|
|
||||||
Set/get arch field. When the arch field is set, some sanitizing is done
|
Set/get arch field. When the arch field is set, some sanitizing is done
|
||||||
first to convert it to the debian format used internally. When it's
|
first to convert it to the debian format used internally. When it's
|
||||||
retreived it's converted back to rpm form from the internal form.
|
retrieved it's converted back to rpm form from the internal form.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
@@ -607,9 +740,20 @@ sub arch {
|
|||||||
# Treat armv4l as arm.
|
# Treat armv4l as arm.
|
||||||
$arch='arm';
|
$arch='arm';
|
||||||
}
|
}
|
||||||
|
elsif ($arch eq 'armv7l') {
|
||||||
|
# Treat armv7l as armel.
|
||||||
|
$arch='armel';
|
||||||
|
}
|
||||||
|
elsif ($arch eq 'aarch64') {
|
||||||
|
# Treat aarch64 as arm64.
|
||||||
|
$arch='arm64';
|
||||||
|
}
|
||||||
elsif ($arch eq 'parisc') {
|
elsif ($arch eq 'parisc') {
|
||||||
$arch='hppa';
|
$arch='hppa';
|
||||||
}
|
}
|
||||||
|
elsif ($arch eq 'ppc64le') {
|
||||||
|
$arch='ppc64el';
|
||||||
|
}
|
||||||
|
|
||||||
$this->{arch}=$arch;
|
$this->{arch}=$arch;
|
||||||
}
|
}
|
||||||
@@ -629,6 +773,12 @@ sub arch {
|
|||||||
elsif ($arch eq 'all') {
|
elsif ($arch eq 'all') {
|
||||||
$arch='noarch';
|
$arch='noarch';
|
||||||
}
|
}
|
||||||
|
elsif ($arch eq 'arm64') {
|
||||||
|
$arch='aarch64';
|
||||||
|
}
|
||||||
|
elsif ($arch eq 'ppc64el') {
|
||||||
|
$arch='ppc64le';
|
||||||
|
}
|
||||||
|
|
||||||
return $arch
|
return $arch
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ character, I=unsigned integer.)
|
|||||||
=item footer_version
|
=item footer_version
|
||||||
|
|
||||||
What package format are we up to now? (Lowest one this is still
|
What package format are we up to now? (Lowest one this is still
|
||||||
compatable with.)
|
compatible with.)
|
||||||
|
|
||||||
=item archtrans
|
=item archtrans
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ Holds the slp package format version of the slp file.
|
|||||||
|
|
||||||
=item checkfile
|
=item checkfile
|
||||||
|
|
||||||
Detect slp files by their extention.
|
Detect slp files by their extension.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
@@ -270,7 +270,7 @@ Set/get conffiles.
|
|||||||
|
|
||||||
When the conffiles are set, the format used by slp (a colon-delimited list)
|
When the conffiles are set, the format used by slp (a colon-delimited list)
|
||||||
is turned into the real list that is used internally. The list is changed
|
is turned into the real list that is used internally. The list is changed
|
||||||
back into slp's internal format when it is retreived.
|
back into slp's internal format when it is retrieved.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
@@ -291,7 +291,7 @@ Set/get copyright.
|
|||||||
|
|
||||||
When the copyright is set, the number used by slp is changed into a textual
|
When the copyright is set, the number used by slp is changed into a textual
|
||||||
description. This is changed back into a number when the value is
|
description. This is changed back into a number when the value is
|
||||||
retreived.
|
retrieved.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
@@ -315,7 +315,7 @@ Set/get arch.
|
|||||||
|
|
||||||
When the arch is set, the number used by slp is changed into a textual
|
When the arch is set, the number used by slp is changed into a textual
|
||||||
description. This is changed back into a number when the value is
|
description. This is changed back into a number when the value is
|
||||||
retreived.
|
retrieved.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
@@ -341,7 +341,7 @@ sub arch {
|
|||||||
|
|
||||||
Set/get release version.
|
Set/get release version.
|
||||||
|
|
||||||
When the release version is retreived, it is converted to an unsigned
|
When the release version is retrieved, it is converted to an unsigned
|
||||||
integer, as is required by the slp package format.
|
integer, as is required by the slp package format.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ use constant scripttrans => {
|
|||||||
|
|
||||||
=item checkfile
|
=item checkfile
|
||||||
|
|
||||||
Detect tgz files by their extention.
|
Detect tgz files by their extension.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
@@ -96,7 +96,7 @@ sub scan {
|
|||||||
# Get basename of the filename.
|
# Get basename of the filename.
|
||||||
my ($basename)=('/'.$file)=~m#^/?.*/(.*?)$#;
|
my ($basename)=('/'.$file)=~m#^/?.*/(.*?)$#;
|
||||||
|
|
||||||
# Strip out any tar extentions.
|
# Strip out any tar extensions.
|
||||||
$basename=~s/$tarext//;
|
$basename=~s/$tarext//;
|
||||||
|
|
||||||
if ($basename=~m/([\w-]+)-([0-9\.?]+).*/) {
|
if ($basename=~m/([\w-]+)-([0-9\.?]+).*/) {
|
||||||
|
|||||||
@@ -19,17 +19,11 @@ VER=$(shell perl -e '$$_=<>;print m/\((.*?)\)/'<debian/changelog)
|
|||||||
|
|
||||||
all:: extra_build
|
all:: extra_build
|
||||||
clean:: extra_build
|
clean:: extra_build
|
||||||
install:: extra_install
|
|
||||||
pure_install:: extra_install
|
|
||||||
|
|
||||||
extra_build:
|
extra_build:
|
||||||
perl -i -pe "s/\@version\@/$(VER)/g" <alien.lsm.in >alien.lsm
|
perl -i -pe "s/\@version\@/$(VER)/g" <alien.lsm.in >alien.lsm
|
||||||
perl -i -pe "s/\@version\@/$(VER)/g" <alien.spec.in >alien.spec
|
perl -i -pe "s/\@version\@/$(VER)/g" <alien.spec.in >alien.spec
|
||||||
|
|
||||||
extra_install:
|
|
||||||
install -d $(PREFIX)/share/alien/patches \
|
|
||||||
$(VARPREFIX)/var/lib/alien
|
|
||||||
|
|
||||||
alien:
|
alien:
|
||||||
perl -pe '$$_="" if /use lib/; $$_="our \$$Version=\"$(VER)\";\n" if /VERSION_AUTOREPLACE/' alien.pl > alien
|
perl -pe '$$_="" if /use lib/; $$_="our \$$Version=\"$(VER)\";\n" if /VERSION_AUTOREPLACE/' alien.pl > alien
|
||||||
}
|
}
|
||||||
|
|||||||
14
alien.lsm
Normal file
14
alien.lsm
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
Begin3
|
||||||
|
Title: alien
|
||||||
|
Version: 8.95.2
|
||||||
|
Entered-date: 31MAR97
|
||||||
|
Description: Alien converts Slackware .tgz packages, Red Hat .rpm packages,
|
||||||
|
Debian .deb packages, and Stampede .slp packages. It can
|
||||||
|
convert from any of the formats to any other format. It works
|
||||||
|
only on binary packages. It also support LSB packages.
|
||||||
|
Keywords: debian dpkg deb red hat redhat rpm slackware tgz stampede slp convert package LSB
|
||||||
|
Author: joey@kitenet.net
|
||||||
|
Primary-site: sunsite.unc.edu /pub/Linux/utils/package
|
||||||
|
80 alien-8.95.2.tar.gz
|
||||||
|
Copying-policy: GPL
|
||||||
|
End
|
||||||
22
alien.pl
22
alien.pl
@@ -37,7 +37,7 @@ installed.
|
|||||||
|
|
||||||
=item lsb
|
=item lsb
|
||||||
|
|
||||||
Unlike the other package formats, B<alien> can handle the depenendencies of
|
Unlike the other package formats, B<alien> can handle the dependencies of
|
||||||
lsb packages if the destination package format supports dependencies. Note
|
lsb packages if the destination package format supports dependencies. Note
|
||||||
that this means that the package generated from a lsb package will depend on
|
that this means that the package generated from a lsb package will depend on
|
||||||
a package named "lsb" -- your distribution should provide a package by that
|
a package named "lsb" -- your distribution should provide a package by that
|
||||||
@@ -149,7 +149,7 @@ built.
|
|||||||
=item B<--anypatch>
|
=item B<--anypatch>
|
||||||
|
|
||||||
Be less strict about which patch file is used, perhaps attempting to use a patch
|
Be less strict about which patch file is used, perhaps attempting to use a patch
|
||||||
file for an older verson of the package. This is not guaranteed to always work;
|
file for an older version of the package. This is not guaranteed to always work;
|
||||||
older patches may not necessarily work with newer packages.
|
older patches may not necessarily work with newer packages.
|
||||||
|
|
||||||
=item B<--nopatch>
|
=item B<--nopatch>
|
||||||
@@ -158,12 +158,12 @@ Do not use any patch files.
|
|||||||
|
|
||||||
=item B<--description=>I<desc>
|
=item B<--description=>I<desc>
|
||||||
|
|
||||||
Specifiy a description for the package. This only has an effect when
|
Specify a description for the package. This only has an effect when
|
||||||
converting from the tgz package format, which lacks descriptions.
|
converting from the tgz package format, which lacks descriptions.
|
||||||
|
|
||||||
=item B<--version=>I<version>
|
=item B<--version=>I<version>
|
||||||
|
|
||||||
Specifiy a version for the package. This only has an effect when
|
Specify a version for the package. This only has an effect when
|
||||||
converting from the tgz package format, which may lack version
|
converting from the tgz package format, which may lack version
|
||||||
information.
|
information.
|
||||||
|
|
||||||
@@ -193,6 +193,10 @@ some things to mess with their permissions and owners to the degree this does,
|
|||||||
so it defaults to off. This can only be used when converting to debian
|
so it defaults to off. This can only be used when converting to debian
|
||||||
packages.
|
packages.
|
||||||
|
|
||||||
|
=item B<--target=>I<architecture>
|
||||||
|
|
||||||
|
Force the architecture of the generated package to the given string.
|
||||||
|
|
||||||
=item B<-v>, B<--verbose>
|
=item B<-v>, B<--verbose>
|
||||||
|
|
||||||
Be verbose: Display each command B<alien> runs in the process of converting a
|
Be verbose: Display each command B<alien> runs in the process of converting a
|
||||||
@@ -246,7 +250,7 @@ B<alien> recognizes the following environment variables:
|
|||||||
|
|
||||||
=over 4
|
=over 4
|
||||||
|
|
||||||
=item RPMBUILDOPTS
|
=item RPMBUILDOPT
|
||||||
|
|
||||||
Options to pass to rpm when it is building a package.
|
Options to pass to rpm when it is building a package.
|
||||||
|
|
||||||
@@ -330,6 +334,7 @@ Usage: alien [options] file [...]
|
|||||||
-i, --install Install generated package.
|
-i, --install Install generated package.
|
||||||
-g, --generate Generate build tree, but do not build package.
|
-g, --generate Generate build tree, but do not build package.
|
||||||
-c, --scripts Include scripts in package.
|
-c, --scripts Include scripts in package.
|
||||||
|
--target=<arch> Set architecture of the generated package.
|
||||||
-v, --verbose Display each command alien runs.
|
-v, --verbose Display each command alien runs.
|
||||||
--veryverbose Be verbose, and also display output of run commands.
|
--veryverbose Be verbose, and also display output of run commands.
|
||||||
-k, --keep-version Do not change version of generated package.
|
-k, --keep-version Do not change version of generated package.
|
||||||
@@ -344,7 +349,7 @@ EOF
|
|||||||
# Start by processing the parameters.
|
# Start by processing the parameters.
|
||||||
my (%destformats, $generate, $install, $single, $scripts, $patchfile,
|
my (%destformats, $generate, $install, $single, $scripts, $patchfile,
|
||||||
$nopatch, $tgzdescription, $tgzversion, $keepversion, $fixperms,
|
$nopatch, $tgzdescription, $tgzversion, $keepversion, $fixperms,
|
||||||
$test, $anypatch);
|
$test, $anypatch, $target);
|
||||||
my $versionbump=1;
|
my $versionbump=1;
|
||||||
|
|
||||||
# Bundling is nice anyway, and it is required or Getopt::Long will confuse
|
# Bundling is nice anyway, and it is required or Getopt::Long will confuse
|
||||||
@@ -366,6 +371,7 @@ GetOptions(
|
|||||||
"patch=s" => \$patchfile,
|
"patch=s" => \$patchfile,
|
||||||
"nopatch" => \$nopatch,
|
"nopatch" => \$nopatch,
|
||||||
"anypatch" => \$anypatch,
|
"anypatch" => \$anypatch,
|
||||||
|
"target=s" => \$target,
|
||||||
"description=s" => \$tgzdescription,
|
"description=s" => \$tgzdescription,
|
||||||
"V" => \&version,
|
"V" => \&version,
|
||||||
"version:s" => sub { length $_[1] ? $tgzversion=$_[1] : version() },
|
"version:s" => sub { length $_[1] ? $tgzversion=$_[1] : version() },
|
||||||
@@ -446,6 +452,10 @@ foreach my $file (@ARGV) {
|
|||||||
die "Unknown type of package, $file.\n";
|
die "Unknown type of package, $file.\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($target) {
|
||||||
|
$package->arch($target);
|
||||||
|
}
|
||||||
|
|
||||||
if (! $package->usescripts && $package->scripts) {
|
if (! $package->usescripts && $package->scripts) {
|
||||||
$package->usescripts($scripts);
|
$package->usescripts($scripts);
|
||||||
if (! $scripts) {
|
if (! $scripts) {
|
||||||
|
|||||||
34
alien.spec
Normal file
34
alien.spec
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
Summary: Install Debian, Slackware, and Stampede packages with rpm.
|
||||||
|
Name: alien
|
||||||
|
Packager: Joey Hess <joey@kitenet.net>
|
||||||
|
Version: 8.95.2
|
||||||
|
Release: 1
|
||||||
|
Source: ftp://kitenet.net/pub/code/debian/alien_8.95.2.tar.gz
|
||||||
|
License: GPL
|
||||||
|
Group: Utilities/File
|
||||||
|
Buildroot: /tmp/alien-8.95.2.build
|
||||||
|
Requires: perl
|
||||||
|
BuildArchitectures: noarch
|
||||||
|
|
||||||
|
%description
|
||||||
|
Alien allows you to convert Debian, Slackware, and Stampede Packages into Red
|
||||||
|
Hat packages, which can be installed with rpm.
|
||||||
|
|
||||||
|
It can also generate Slackware, Debian and Stampede packages.
|
||||||
|
|
||||||
|
This is a tool only suitable for binary packages.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -n alien
|
||||||
|
rm -rf /tmp/alien-8.95.2.build
|
||||||
|
|
||||||
|
%install
|
||||||
|
perl Makefile.PL PREFIX=$RPM_BUILD_ROOT/usr
|
||||||
|
make
|
||||||
|
make pure_install VARPREFIX=$RPM_BUILD_ROOT
|
||||||
|
find $RPM_BUILD_ROOT -not -type d -printf "/%%P\n" | \
|
||||||
|
sed '/\/man\//s/$/\*/' > manifest
|
||||||
|
|
||||||
|
%files -f manifest
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%doc debian/changelog GPL README alien.lsm
|
||||||
181
debian/changelog
vendored
181
debian/changelog
vendored
@@ -1,3 +1,184 @@
|
|||||||
|
alien (8.95.8) unstable; urgency=medium
|
||||||
|
|
||||||
|
* QA upload.
|
||||||
|
* debian/salsa-ci.yml: Add to provide CI tests for Salsa.
|
||||||
|
* debian/tests/*: Create autopkgtest.
|
||||||
|
|
||||||
|
-- Daniel Alber Costa <danielrodrc@gmail.com> Sun, 24 Nov 2024 21:32:45 -0300
|
||||||
|
|
||||||
|
alien (8.95.7) unstable; urgency=medium
|
||||||
|
|
||||||
|
* QA upload.
|
||||||
|
* debian/copyright: use spaces rather than tabs to start continuation lines.
|
||||||
|
* Update standards version to 4.6.2, no changes needed.
|
||||||
|
|
||||||
|
[ Alois Klink ]
|
||||||
|
* Alien/Package/Rpm.pm: Map arm64 in deb to aarch64 in rpm.
|
||||||
|
This fixes conversion of arm64 deb packages.
|
||||||
|
|
||||||
|
-- Bastian Germann <bage@debian.org> Sat, 22 Jun 2024 19:41:24 +0000
|
||||||
|
|
||||||
|
alien (8.95.6) unstable; urgency=medium
|
||||||
|
|
||||||
|
* QA upload.
|
||||||
|
|
||||||
|
[ Debian Janitor ]
|
||||||
|
* Remove constraints unnecessary since buster:
|
||||||
|
+ alien: Drop versioned constraint on rpm in Depends.
|
||||||
|
|
||||||
|
-- Jelmer Vernooij <jelmer@debian.org> Wed, 25 May 2022 18:54:06 +0100
|
||||||
|
|
||||||
|
alien (8.95.5) unstable; urgency=medium
|
||||||
|
|
||||||
|
* QA upload.
|
||||||
|
* Alien/Package/Deb.pm: Do not fail when dh_usrlocal returns
|
||||||
|
with nonzero value. A warning (shown in --veryverbose)
|
||||||
|
is generated instead. (Closes: #992188)
|
||||||
|
|
||||||
|
-- Boyuan Yang <byang@debian.org> Sun, 22 Aug 2021 01:14:58 -0400
|
||||||
|
|
||||||
|
alien (8.95.4) unstable; urgency=high
|
||||||
|
|
||||||
|
* QA upload.
|
||||||
|
* Alien/Package/Deb.pm: Fix incorrect debian/rules template by
|
||||||
|
properly escaping special characters (dh \$\@ instead of dh $@).
|
||||||
|
Closes: #983492.
|
||||||
|
* Alien/Package/Deb.pm: Fix incorrect file installation path.
|
||||||
|
This fixes the bug in manual override_dh_auto_install that files
|
||||||
|
are placed under / instead of /usr/ (default prefix).
|
||||||
|
Closes: #985835.
|
||||||
|
* Alien/Package/Rpm.pm: Also map aarch64 in rpm to arm64 in deb.
|
||||||
|
This fixes conversion of aarch64 rpm packages.
|
||||||
|
Closes: #985808.
|
||||||
|
|
||||||
|
-- Boyuan Yang <byang@debian.org> Wed, 07 Apr 2021 12:15:06 -0400
|
||||||
|
|
||||||
|
alien (8.95.3) unstable; urgency=medium
|
||||||
|
|
||||||
|
* QA upload.
|
||||||
|
* Upload to unstable.
|
||||||
|
|
||||||
|
-- Adrian Bunk <bunk@debian.org> Thu, 11 Feb 2021 22:02:09 +0200
|
||||||
|
|
||||||
|
alien (8.95.2) experimental; urgency=medium
|
||||||
|
|
||||||
|
* QA upload.
|
||||||
|
* debian/control:
|
||||||
|
+ Bump debhelper compat to v13.
|
||||||
|
+ Included Rules-Requires-Root: no
|
||||||
|
* debian/changelog:
|
||||||
|
+ Removed trailing-whitespaces.
|
||||||
|
* alien.pl:
|
||||||
|
+ Fixed some misspelled words.
|
||||||
|
* Alien/Package.pm:
|
||||||
|
+ Fixed misspelled word.
|
||||||
|
* Alien/Package/Rpm.pm:
|
||||||
|
+ Fixed misspeled word.
|
||||||
|
* debian/rules:
|
||||||
|
+ Added a "nocheck" check on override_dh_auto_test.
|
||||||
|
|
||||||
|
-- Thiago da Silva Gracini <tsgracini@outlook.com> Sun, 01 Nov 2020 15:35:34 -0300
|
||||||
|
|
||||||
|
alien (8.95.1) experimental; urgency=medium
|
||||||
|
|
||||||
|
* QA upload.
|
||||||
|
* Rebuild source and binary package.
|
||||||
|
* debian/control:
|
||||||
|
+ Bump debhelper compat to v12.
|
||||||
|
+ Bump Standards-Version to 4.5.0.
|
||||||
|
+ Update Vcs-* fields to use git packaging repo under Salsa
|
||||||
|
Debian group.
|
||||||
|
* Rpm.pm: Do not ship conflicting dirs. (Closes: #759533)
|
||||||
|
* Deb.pm:
|
||||||
|
+ Use dh sequencer when generating deb packages.
|
||||||
|
+ Bump supported debhelper compatibility level to v10.
|
||||||
|
|
||||||
|
-- Boyuan Yang <byang@debian.org> Tue, 31 Mar 2020 10:52:19 -0400
|
||||||
|
|
||||||
|
alien (8.95) unstable; urgency=medium
|
||||||
|
|
||||||
|
* QA upload.
|
||||||
|
* debian/control:
|
||||||
|
- Bumped Standards-Version to 3.9.6.
|
||||||
|
- Removed duplicated section field.
|
||||||
|
* debian/copyright:
|
||||||
|
- Replaced protocol from http to https in the Format field.
|
||||||
|
- Included authors' e-mail addresses.
|
||||||
|
- Replaced GPL-2+ license reference by actual GPL-2+ license.
|
||||||
|
* debian/source/format: Created as 3.0 (native).
|
||||||
|
|
||||||
|
-- Fabiano Antunes <fabianoantunes@itgen.com.br> Thu, 10 Sep 2015 17:09:04 -0300
|
||||||
|
|
||||||
|
alien (8.94) unstable; urgency=medium
|
||||||
|
|
||||||
|
* QA upload.
|
||||||
|
* Fix "FTBFS with perl 5.22 in experimental (MakeMaker changes)":
|
||||||
|
remove override_dh_auto_install in debian/rules, and
|
||||||
|
use DESTDIR in Makefile.PL.
|
||||||
|
(Closes: #792371)
|
||||||
|
|
||||||
|
-- gregor herrmann <gregoa@debian.org> Sat, 25 Jul 2015 21:24:15 +0200
|
||||||
|
|
||||||
|
alien (8.93) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Alien needs a new maintainer, both in Debian and upstream.
|
||||||
|
|
||||||
|
-- Joey Hess <joeyh@debian.org> Fri, 07 Nov 2014 17:25:47 -0400
|
||||||
|
|
||||||
|
alien (8.92) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Remove suggests for lsb-rpm, which no longer exists.
|
||||||
|
Closes: #756873
|
||||||
|
|
||||||
|
-- Joey Hess <joeyh@debian.org> Sun, 31 Aug 2014 14:16:23 -0700
|
||||||
|
|
||||||
|
alien (8.91) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Support other deb data.tar compression schemes in fallback code.
|
||||||
|
Closes: #718364
|
||||||
|
Thanks, Guillem Jover
|
||||||
|
|
||||||
|
-- Joey Hess <joeyh@debian.org> Fri, 13 Jun 2014 12:03:54 -0400
|
||||||
|
|
||||||
|
alien (8.90) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Add --target=<arch> option for setting architecture. Closes: #260948
|
||||||
|
(Thanks, Teemu Ikonen)
|
||||||
|
* Add conversion from ppc64le (rpm) to ppc64el (deb).
|
||||||
|
* debhelper v9
|
||||||
|
|
||||||
|
-- Joey Hess <joeyh@debian.org> Thu, 27 Feb 2014 11:59:07 -0400
|
||||||
|
|
||||||
|
alien (8.89) unstable; urgency=low
|
||||||
|
|
||||||
|
* Correct man page to say RPMBUILDOPT (not RPMBUILDOPTS). Closes: #701106
|
||||||
|
* Handle whitespace in path to RPMs. Closes: #719776
|
||||||
|
(Thanks, Christopher Huhn)
|
||||||
|
|
||||||
|
-- Joey Hess <joeyh@debian.org> Thu, 22 Aug 2013 21:53:44 -0400
|
||||||
|
|
||||||
|
alien (8.88) unstable; urgency=low
|
||||||
|
|
||||||
|
* Ensure that version numbers begin with well, a number, when building a
|
||||||
|
deb, otherwise dpkg-deb will refuse to build it.
|
||||||
|
|
||||||
|
-- Joey Hess <joeyh@debian.org> Thu, 09 Aug 2012 14:44:49 -0400
|
||||||
|
|
||||||
|
alien (8.87) unstable; urgency=low
|
||||||
|
|
||||||
|
* Use lsb-rpmbuild, not lsb-rpm. Closes: #667044
|
||||||
|
* Fix adding of postinst script to deb, containing rpm permissions
|
||||||
|
fixups code. Closes: #667651
|
||||||
|
|
||||||
|
-- Joey Hess <joeyh@debian.org> Thu, 05 Apr 2012 13:53:29 -0400
|
||||||
|
|
||||||
|
alien (8.86) unstable; urgency=low
|
||||||
|
|
||||||
|
* Filter out illegal characters in version number when building a deb.
|
||||||
|
Closes: #648531
|
||||||
|
|
||||||
|
-- Joey Hess <joeyh@debian.org> Sat, 12 Nov 2011 13:12:35 -0400
|
||||||
|
|
||||||
alien (8.85) unstable; urgency=low
|
alien (8.85) unstable; urgency=low
|
||||||
|
|
||||||
* Avoid breaking on spaces in filenames. Closes: #618636
|
* Avoid breaking on spaces in filenames. Closes: #618636
|
||||||
|
|||||||
1
debian/compat
vendored
1
debian/compat
vendored
@@ -1 +0,0 @@
|
|||||||
7
|
|
||||||
22
debian/control
vendored
22
debian/control
vendored
@@ -1,17 +1,25 @@
|
|||||||
Source: alien
|
Source: alien
|
||||||
Section: admin
|
Section: admin
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Build-Depends: debhelper (>= 7.0.50)
|
Build-Depends: debhelper-compat (= 13)
|
||||||
Maintainer: Joey Hess <joeyh@debian.org>
|
Maintainer: Debian QA Group <packages@qa.debian.org>
|
||||||
Standards-Version: 3.9.2
|
Standards-Version: 4.6.2
|
||||||
Vcs-Git: git://git.kitenet.net/alien
|
Rules-Requires-Root: no
|
||||||
|
Vcs-Git: https://salsa.debian.org/debian/alien.git
|
||||||
|
Vcs-Browser: https://salsa.debian.org/debian/alien
|
||||||
Homepage: http://kitenet.net/~joey/code/alien/
|
Homepage: http://kitenet.net/~joey/code/alien/
|
||||||
|
|
||||||
Package: alien
|
Package: alien
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Section: admin
|
Depends: debhelper (>= 10),
|
||||||
Depends: debhelper (>= 7), ${misc:Depends}, ${perl:Depends}, rpm (>= 2.4.4-2), dpkg-dev, make, cpio, rpm2cpio
|
${misc:Depends},
|
||||||
Suggests: patch, bzip2, lsb-rpm, lintian, lzma
|
${perl:Depends},
|
||||||
|
rpm,
|
||||||
|
dpkg-dev,
|
||||||
|
make,
|
||||||
|
cpio,
|
||||||
|
rpm2cpio
|
||||||
|
Suggests: patch, bzip2, lintian, lzma
|
||||||
Description: convert and install rpm and other packages
|
Description: convert and install rpm and other packages
|
||||||
Alien allows you to convert LSB, Red Hat, Stampede and Slackware Packages
|
Alien allows you to convert LSB, Red Hat, Stampede and Slackware Packages
|
||||||
into Debian packages, which can be installed with dpkg.
|
into Debian packages, which can be installed with dpkg.
|
||||||
|
|||||||
37
debian/copyright
vendored
37
debian/copyright
vendored
@@ -1,13 +1,34 @@
|
|||||||
Format: http://dep.debian.net/deps/dep5/
|
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
Source: native package
|
Source: native package
|
||||||
|
|
||||||
Files: *
|
Files: *
|
||||||
Copyright:
|
Copyright: 1996-1997 Christoph Lameter <clameter@debian.org>
|
||||||
1996, 1997 Christoph Lameter
|
1997 Randolph Chung <rc42@cornell.edu>
|
||||||
1997 Randolph Chung
|
2001 Mark A. Hershberger <mah@everybody.org>
|
||||||
2001 Mark A. Hershberger
|
1997-2011 Joey Hess <joeyh@debian.org>
|
||||||
1997-2011 Joey Hess
|
|
||||||
License: GPL-2+
|
License: GPL-2+
|
||||||
On Debian systems, the complete text of the GPL can be found in
|
|
||||||
/usr/share/common-licenses/GPL.
|
|
||||||
|
|
||||||
|
Files: debian/*
|
||||||
|
Copyright: 1996-1997 Christoph Lameter <clameter@debian.org>
|
||||||
|
1997 Randolph Chung <rc42@cornell.edu>
|
||||||
|
2001 Mark A. Hershberger <mah@everybody.org>
|
||||||
|
1997-2011 Joey Hess <joeyh@debian.org>
|
||||||
|
2015 Fabiano Antunes <fabianoantunes@itgen.com.br>
|
||||||
|
License: GPL-2+
|
||||||
|
|
||||||
|
License: GPL-2+
|
||||||
|
This package 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 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
.
|
||||||
|
This package 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 <https://www.gnu.org/licenses/>
|
||||||
|
.
|
||||||
|
On Debian systems, the complete text of the GNU General
|
||||||
|
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
|
||||||
|
|||||||
7
debian/rules
vendored
7
debian/rules
vendored
@@ -3,13 +3,10 @@
|
|||||||
dh $@
|
dh $@
|
||||||
|
|
||||||
override_dh_auto_test:
|
override_dh_auto_test:
|
||||||
# simple smoke test
|
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
|
||||||
./alien.pl -V
|
./alien.pl -V
|
||||||
|
endif
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
override_dh_auto_clean:
|
override_dh_auto_clean:
|
||||||
# distclean moans about MANIFEST, this is quieter
|
# distclean moans about MANIFEST, this is quieter
|
||||||
|
|||||||
3
debian/salsa-ci.yml
vendored
Normal file
3
debian/salsa-ci.yml
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
include:
|
||||||
|
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/debian.yml
|
||||||
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
3.0 (native)
|
||||||
5
debian/tests/control
vendored
Normal file
5
debian/tests/control
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
Test-Command: alien --help 2>&1 | grep "^Usage: alien"
|
||||||
|
Restrictions: allow-stderr, superficial
|
||||||
|
|
||||||
|
Tests: convert-deb-to-rpm.sh
|
||||||
|
Restrictions: allow-stderr, superficial
|
||||||
5
debian/tests/convert-deb-to-rpm.sh
vendored
Normal file
5
debian/tests/convert-deb-to-rpm.sh
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
cp debian/tests/data/* $AUTOPKGTEST_TMP
|
||||||
|
cd $AUTOPKGTEST_TMP
|
||||||
|
|
||||||
|
alien --to-rpm *
|
||||||
BIN
debian/tests/data/libmnl0_1.0.5-3_amd64.deb
vendored
Normal file
BIN
debian/tests/data/libmnl0_1.0.5-3_amd64.deb
vendored
Normal file
Binary file not shown.
Reference in New Issue
Block a user