119 Commits
8.73 ... master

Author SHA1 Message Date
Syed-Shahrukh-OSSRevival
4d8ec3bf09 Updated readme, fixes #10 2026-01-20 16:09:28 +05:00
Anton Farygin
decc4d75c8 fix: handle spaces in working directory path
Buildroot in spec file doesn't support spaces in some RPM versions
(ALT Linux). Removed it from spec since --buildroot is already passed
on command line. Also quoted cd argument.
2025-12-25 12:51:36 +05:00
Anton Farygin
de7aa3b0f8 fix: handle Description field with empty first line
Some packages (e.g. vk-messenger.deb) have Description with text
starting on the next line:

  Description:
   Actual description text here

The regex required at least one character after colon, causing
summary to be empty. This broke conversion to RPM with error
"Empty tag: Summary".

Now uses first line of extended description as summary when the
initial Description line is empty.
2025-12-25 12:49:40 +05:00
Anton Farygin
5836229bae fix: Escape percent signs in plaintext scripts for RPM spec
Scripts (preinst, postinst, prerm, postrm) may contain literal '%'
characters (e.g., in printf format strings). When these scripts are
written directly into the RPM spec file, rpmbuild interprets '%' as
the start of a macro, causing build failures.
2025-12-23 23:51:55 +05:00
Anton Farygin
8bba6dfdc5 fix: restore tar fallback when makepkg is not available
Commit 32f04ae removed the tar fallback in Tgz::build(), requiring
/sbin/makepkg (Slackware-specific) for --to-tgz conversion. This broke
alien on all non-Slackware systems.

Restore the fallback using the same method as the original makepkg
script.

Fixes: https://github.com/Project-OSS-Revival/alien/issues/4
2025-12-23 18:54:23 +05:00
Syed-Shahrukh-OSSRevival
04a9c4fa04 Copied debian/changelog to Changelog #3.
* To make the ChangeLog generic removed debian specific information from each version header.
 * Updated the Makefile.PL to utilize the new ChangeLog file for the version number.
2025-12-23 08:03:27 +05:00
Armando
9a6bf8f390 Fixed arch subroutine in Tgz.pm as it was causing issues when converting deb to tgz. 2025-10-08 15:43:52 +05:00
Armando
32f04aed12 feat: Implement slack-desc handling for Slackware packages This commit introduces the following changes:
1.  **Modified `scan` method in `Alien/Package/Tgz.pm`:**
    - The method now attempts to read and parse `install/slack-desc` from input .tgz packages.
    - If found, the package's description and summary are populated from `slack-desc`.
    - Fallback to existing behavior if `slack-desc` is not present.

2.  **Modified `prep` method in `Alien/Package/Tgz.pm`:**
    - When creating a .tgz package, an `install/slack-desc` file is now generated.
    - This file is populated using the package's summary and description, formatted according to Slackware standards.
    - A helper function `_format_slack_desc` was added to handle the formatting logic.

3.  **Modified `build` method in `Alien/Package/Tgz.pm`:**
    - When creating a .tgz package, `makepkg` is now used.
	- Package is now named according to Slackware standard naming scheme.
2025-10-08 15:43:52 +05:00
Armando
ab603a11e0 Added support for zstd archives. Fixes "Unknown control member!" error with some deb packags. 2025-10-08 15:43:48 +05:00
Syed-Shahrukh-OSSRevival
b3bc197956 Removed debian directory from imported sources https://salsa.debian.org/debian/alien 2025-10-01 17:37:47 +05:00
Marcos Talau
ee8794614c Renamed debian/tests/convert_deb_to_rpm.sh to debian/tests/convert-deb-to-rpm.sh 2024-11-24 22:07:23 -03:00
Daniel Costa
c4c8e3bc4a debian/changelog: Update 2024-11-24 21:33:28 -03:00
Daniel Costa
c6b123e40f debian/tests/control:
Create autopkgtest
2024-11-24 21:32:24 -03:00
Daniel Costa
c83906446f debian/changelog: Update 2024-11-24 20:00:52 -03:00
Daniel Costa
6a2e53bc63 debian/salsa-ci.yml: Add
to provide CI tests for Salsa
2024-11-24 19:49:31 -03:00
Bastian Germann
ccd0532208 Upload to unstable 2024-06-22 19:42:42 +00:00
Bastian Germann
3985359d47 d/copyright: Remove trailing whitespace 2024-06-22 19:39:08 +00:00
Alois Klink
385b2066d3 Map arm64 in deb to aarch64 in rpm
This fixes conversion of arm64 debian packages.

See #985808, which was the bug for doing it in the opposite direction.
2024-06-22 19:37:54 +00:00
Debian Janitor
b65f2d6974 Update standards version to 4.6.2, no changes needed.
Changes-By: lintian-brush
Fixes: lintian: out-of-date-standards-version
See-also: https://lintian.debian.org/tags/out-of-date-standards-version.html
2023-01-07 06:13:42 +00:00
Debian Janitor
2989545da6 debian/copyright: use spaces rather than tabs to start continuation lines.
Changes-By: lintian-brush
Fixes: lintian: tab-in-license-text
See-also: https://lintian.debian.org/tags/tab-in-license-text.html
2023-01-07 06:13:35 +00:00
Jelmer Vernooij
3e7874e029 releasing package alien version 8.95.6 2022-05-25 18:54:06 +01:00
Jelmer Vernooij
919146ea09 Mention QA Upload. 2022-05-25 18:54:06 +01:00
Boyuan Yang
7179500cf8 Merge branch 'scrub-obsolete' into 'master'
Remove unnecessary constraints

See merge request debian/alien!4
2021-10-14 04:28:04 +00:00
Debian Janitor
f0fe4f6c80 Remove constraints unnecessary since buster
* alien: Drop versioned constraint on rpm in Depends.

Changes-By: deb-scrub-obsolete
2021-10-13 06:51:08 +00:00
Boyuan Yang
922b06bf8d Prepare new upload. 2021-08-22 01:29:46 -04:00
Boyuan Yang
b235b51c36 Bump Standards-Version to 4.6.0. 2021-08-22 01:14:55 -04:00
Boyuan Yang
3e46c56693 Alien/Package/Deb.pm: Do not fail when dh_usrlocal complains
When dh_usrlocal returns nonzero, continue and print a warning
information. This allows the generated deb package to install
files under /usr/local/.
2021-08-22 01:13:25 -04:00
Boyuan Yang
80877786d3 Prepare new upload. 2021-04-07 12:20:23 -04:00
Boyuan Yang
0de126bcfb Let alien recognize aarch64->arm64. (Closes: #985808) 2021-04-07 12:13:57 -04:00
Boyuan Yang
3f13d15dfd Fix incorrect filepath (Closes: #985835) 2021-04-07 12:12:13 -04:00
Boyuan Yang
f66dbb457b Fix incorrect debian/rules template. (Closes: #983492) 2021-04-07 12:09:23 -04:00
Boyuan Yang
a5a16d572f Revert "debian/control: Bump Standard-Version to 4.5.1."
This reverts commit 18e40eeabb.
2021-04-07 12:08:05 -04:00
Boyuan Yang
18e40eeabb debian/control: Bump Standard-Version to 4.5.1. 2021-04-07 12:07:16 -04:00
Adrian Bunk
1a98232df6 Import Debian version 8.95.3
alien (8.95.3) unstable; urgency=medium
.
  * QA upload.
  * Upload to unstable.
2021-04-07 12:05:10 -04:00
Jelmer Vernooij
648de61a5d Merge branch 'scrub-obsolete' into 'master'
Remove unnecessary constraints

See merge request debian/alien!1
2021-03-03 17:28:58 +00:00
Jenkins
0a70fe5858 Remove constraints unnecessary since stretch.
* alien: Drop versioned constraint on debhelper, rpm in Depends.

Changes-By: deb-scrub-obsolete
2021-02-14 15:04:11 +00:00
Thiago da Silva Gracini
e2eb7e0026 Import Debian version 8.95.2
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.
2020-11-11 23:10:13 +00:00
Boyuan Yang
9b5622f8f2 Deb.pm: Use dh sequencer in rules file; bump debhelper requirement to 10+ 2020-03-29 00:07:47 -04:00
Boyuan Yang
88a0008668 Rpm.pm: Do not ship conflicting dirs (Closes: #759533)
See also: https://sourceforge.net/p/alien-pkg-convert/tickets/1/

Generated RPM packages provides directories that conflict with
the "filesystem" package. As a result, do not ship commonly-used
directories.

Patch provided by woob in the above ticket webpage.
2020-03-28 23:50:17 -04:00
Boyuan Yang
a7be498dca debian/changelog: Document changes in Vcs-* fields 2020-03-28 23:45:30 -04:00
Boyuan Yang
f11a007797 debian/control,compat: Minor fixes 2020-03-28 23:40:53 -04:00
Fabiano Antunes
9f53b73b58 Import Debian version 8.95
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).

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)
2020-03-28 23:37:19 -04:00
Joey Hess
bb351ddbc8 Alien needs a new maintainer, both in Debian and upstream. 2014-11-07 17:26:20 -04:00
Joey Hess
3572ac62b9 foo 2014-08-31 14:16:51 -07:00
Joey Hess
6443b942ab prep 2014-08-31 14:16:33 -07:00
Joey Hess
919297f3d1 Remove suggests for lsb-rpm, which no longer exists. Closes: #756873 2014-08-02 19:20:25 -04:00
Joey Hess
22709da70e prep 2014-06-13 12:04:21 -04:00
Joey Hess
06ae0587ac prep release 2014-06-13 12:04:01 -04:00
Joey Hess
c1b64b0c48 Support other deb data.tar compression schemes in fallback code. Closes: #718364 Thanks, Guillem Jover 2014-05-18 12:21:01 -04:00
Guillem Jover
93ad8ae367 Update deb support in fallback code
Add support for control.tar, control.tar.xz, data.tar, data.tar.xz,
data.tar.bz2 (deprecated) and data.tar.lzma (deprecated), so that the
fallback code is in line with current dpkg-deb.

The deprecated members are supported because there might be such binary
packages laying around.
2014-05-18 12:20:18 -04:00
Joey Hess
d3750a8156 prep release 2014-02-27 12:00:21 -04:00
Joey Hess
7a1afcfb97 prep release 2014-02-27 11:59:27 -04:00
Joey Hess
2999238f34 Add conversion from ppc64le (rpm) to ppc64el (deb). 2014-02-26 13:09:32 -04:00
Joey Hess
887717f304 changelog 2014-01-17 14:05:43 -04:00
Teemu Ikonen
9cb511802b Add --target=<arch> option for setting architecture. 2014-01-17 14:05:05 -04:00
Krzysztof Opasiak
6f5a303f3b Treat armv7l as an alias to armel architecture.
There are some OS like Tizne which use rpm's and build
them for armv7l architecture. In debain nomenclature
this architecture is armel, so armv7l should be
an alias to armel.

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
2013-12-10 12:36:17 -04:00
Joey Hess
92933477e6 need to check in these files to use dgit
These files appear in the tarball, so dgit requires they be in git. hmm.
2013-08-26 01:06:39 -04:00
Joey Hess
53751ccbbf Merge remote-tracking branch 'remotes/dgit/dgit/sid' 2013-08-26 00:59:39 -04:00
Joey Hess
41fc0d549f prep release (with dgit!) 2013-08-26 00:48:28 -04:00
Joey Hess
b1bd50cc90 Handle whitespace in path to RPMs. Closes: #719776 (Thanks, Christopher Huhn) 2013-08-15 11:10:46 +02:00
Christopher Huhn
dd38b4e86d Correctly handle RPMs with whitespace in their path 2013-08-15 11:09:22 +02:00
Joey Hess
7aee419bd2 Correct man page to say RPMBUILDOPT (not RPMBUILDOPTS). Closes: #701106 2013-02-21 17:05:03 -04:00
Joey Hess
db4ea6fa4a releasing version 8.88 2012-08-09 14:45:24 -04:00
Joey Hess
f545de15f5 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.

# imported from the archive
2012-08-09 14:44:49 -04:00
Joey Hess
2fb28d27d2 Ensure that version numbers begin with well, a number, when building a deb, otherwise dpkg-deb will refuse to build it. 2012-08-09 14:14:59 -04:00
Joey Hess
363deec1c6 releasing version 8.87 2012-04-05 13:54:58 -04:00
Joey Hess
b69f536367 Fix adding of postinst script to deb, containing rpm permissions fixups code. Closes: #667651 2012-04-05 13:51:24 -04:00
Joey Hess
f717997da1 Use lsb-rpmbuild, not lsb-rpm. Closes: #667044
Note that lsb-rpm has been dropped from rpm in Debian unstable. So
this changes nothing really; it already fell back to rpmbuild.

And I can find no mention of either lsb-rpm or lsb-rpmbuild in the LSB
spec, although I didn't look very hard.
2012-04-04 13:36:18 -04:00
Joey Hess
3faa48b23f update copyright format url 2012-02-25 10:43:13 -04:00
Joey Hess
e745cde2a0 releasing version 8.86 2011-11-12 13:14:11 -04:00
Joey Hess
5e4e122d58 Filter out illegal characters in version number when building a deb. Closes: #648531 2011-11-12 13:12:25 -04:00
Joey Hess
873c3606f3 typo 2011-09-29 21:31:38 -04:00
Joey Hess
7640cb99d4 releasing version 8.85 2011-06-19 15:51:33 -04:00
Joey Hess
585fc93270 Avoid breaking on spaces in filenames. Closes: #618636
The runpipe interface is not a good one, it would be better to use
something that does not expose to the shell.

As a quick fix, quote filenames in runpipe calls. Too bad if you have a
quote character in a file though. Later need to find a better interface
or do full shell escaping.
2011-06-11 13:00:34 -04:00
Joey Hess
5b49be4d3d releasing version 8.84 2011-04-15 14:14:38 -04:00
Joey Hess
2dee87ca02 add bug closure 2011-04-15 14:13:11 -04:00
Joey Hess
5c6bf645b5 DEP5 2011-01-13 18:48:08 -04:00
Joey Hess
1ca19300b4 Squash an uninitialized value when creating a deb. 2011-01-06 13:49:40 -04:00
Joey Hess
9b37ec8545 Silence error message when deleting build tree after making an rpm, if rpmbuild has already deleted it. 2011-01-06 13:47:37 -04:00
Joey Hess
143131c8c0 releasing version 8.83 2010-09-09 08:25:35 -04:00
Joey Hess
0d765b965d Correct handling of arch all packages in deb arch check. Closes: #596209 2010-09-09 08:24:54 -04:00
Joey Hess
efeddebd32 releasing version 8.82 2010-08-30 17:09:52 -04:00
Joey Hess
3a44b767ac Print a nice error message when attempting to build a deb from a package of an unsupported architecture. Closes: #592625 2010-08-30 17:02:26 -04:00
Joey Hess
291db35466 use dpkg-mergechangelog 2010-05-24 11:12:33 -04:00
Joey Hess
66b2a2a226 debhelper updates
* Use debhelper compat level v7 when building packages. All changes
  since v4 seem safe for alien's generated rules files.
* Use dh_prep instead of deprecated dh_clean -k.
2010-05-23 18:56:57 -04:00
Joey Hess
574490fb79 releasing version 8.81 2010-05-17 21:02:47 -04:00
Joey Hess
e7e9f10486 Support RPMs containing ghost files.
(Patch by Ben Webb, who would get his patches applied quicker if he actually communicated them to the program's author.)
2010-05-17 20:54:30 -04:00
Joey Hess
a320ae144c Fix precedence problem that prevented alien from preserving permissions of suid/sgid binaries that are not owned by root.
(Patch by Duane Waddle, on a bug tracking system I don't frequent, that was
about the "expire" it 4 days from now. We got lucky Duane, but please use
the Debian BTS next time!)
2010-05-17 20:48:54 -04:00
Joey Hess
f6529d9be0 Suggest lzma. If not installed, alien will still fail to decompress RPMs using it, but will support most rpms, which are not. 2010-05-17 20:27:12 -04:00
Joey Hess
38bf42863d Support extracting lzma compressed RPMs. (Patch by unnamed person on some bug tracking system I don't frequent.) 2010-05-17 20:24:19 -04:00
Joey Hess
b4bdd3818d Avoid uninitialized value warning when debian/rules fails to run due to alien being run in a noexec directory. Closes: #579216
* Avoid uninitialized value warning when debian/rules fails to run
  due to alien being run in a noexec directory. Closes: #579216
* Prevent DESTROY stomping on alien's exit code sometimes.
2010-04-28 11:30:44 -04:00
Joey Hess
7e84fd2a26 releasing version 8.80 2010-04-18 15:46:21 -04:00
Joey Hess
55edc3f59a typo 2010-04-18 15:44:14 -04:00
Joey Hess
cc5ff87ef6 changelog 2010-04-18 15:27:56 -04:00
Joey Hess
e75140dc5f Fix empty field fix, to take into account that "0" is a false value
Instead, avoid populating fields with empty strings if rpm fails to
get a field value, either due to not knowing the field, or due to the
field not being set.
2010-04-18 15:27:03 -04:00
Alexey Khoroshilov
2f50988983 RPM Copyright tag has been deprecated in favour of License tag since rpm 4.0 2010-04-18 15:17:25 -04:00
Alexey Khoroshilov
6049930109 Fix if conditions in sanity checks: if a field was not found it is defined, but it is empty 2010-04-18 15:17:12 -04:00
Joey Hess
f581595af6 remove NOTES section 2009-12-14 13:42:59 -05:00
Joey Hess
72599080d2 reorder --scripts 2009-12-14 13:26:48 -05:00
Joey Hess
166d384024 releasing version 8.79 2009-12-01 13:28:15 -05:00
Joey Hess
140075f2d6 Depend on the new rpm2cpio package. Closes: #559061 2009-12-01 13:24:37 -05:00
Joey Hess
7ade57f401 fix 2009-11-20 17:33:08 -05:00
Joey Hess
577e2b11e2 Removed all built-in patches for converting specific packages (j2sdk, jdk, lgtoclnt, motif) with alien. These were out of date, and not maintained. Alien will not include such patches going forward. 2009-11-20 17:32:09 -05:00
Joey Hess
72bd91a7f4 Modify -g and -s to support running on multiple packages at once. Closes: #554404 2009-11-04 12:54:28 -05:00
Joey Hess
dc38bbb9e1 Typo. Closes: #554379 2009-11-04 12:08:52 -05:00
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
Joey Hess
0f8fa0df54 pod fixes 2009-02-15 19:56:50 -05:00
Joey Hess
2a84d6e8ec true slackware packages unlikely, so generalize messages 2009-01-14 13:39:14 -05:00
Joey Hess
66a1247dfd Support bzipped and uncompressed tar files, using tar's auto-compression detection. (Requires gnu tar 1.14.91) 2009-01-14 13:37:06 -05:00
24 changed files with 1491 additions and 2484 deletions

2
.gitignore vendored
View File

@@ -1,2 +0,0 @@
alien.lsm
alien.spec

View File

@@ -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
@@ -331,20 +331,27 @@ package was unpacked, it is time now to wipe out the temporary directory.
sub DESTROY { sub DESTROY {
my $this=shift; my $this=shift;
my $exitcode=$?;
return if (! defined $this->unpacked_tree || $this->unpacked_tree eq ''); return if (! defined $this->unpacked_tree || $this->unpacked_tree eq '');
# This should never happen, but it pays to check. # This should never happen, but it pays to check.
if ($this->unpacked_tree eq '/') { if ($this->unpacked_tree eq '/') {
die "alien internal error: unpacked_tree is set to '/'. Please file a bug report!"; die "alien internal error: unpacked_tree is set to '/'. Please file a bug report!";
} }
# Just in case some dir perms are too screwed up for rm to work and if (-d $this->unpacked_tree) {
# we're not running as root. NB: can't use xargs # Just in case some dir perms are too screwed up for
$this->do('find', $this->unpacked_tree, '-type', 'd', # rm to work and we're not running as root. NB: can't
'-exec', 'chmod', '755', '{}', ';'); # use xargs
$this->do('find', $this->unpacked_tree, '-type', 'd',
'-exec', 'chmod', '755', '{}', ';');
$this->do('rm', '-rf', $this->unpacked_tree) $this->do('rm', '-rf', $this->unpacked_tree)
or die "unable to delete temporary directory '".$this->unpacked_tree."': $!"; or die "unable to delete temporary directory '".$this->unpacked_tree."': $!";
$this->unpacked_tree(''); $this->unpacked_tree('');
}
$?=$exitcode;
} }
=item AUTOLOAD =item AUTOLOAD

View File

@@ -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
@@ -110,13 +115,33 @@ sub test {
return map { s/\n//; $_ } return map { s/\n//; $_ }
grep { grep {
! /unknown-section alien/ ! /unknown-section alien/
} $this->runpipe(1, "lintian $deb"); } $this->runpipe(1, "lintian '$deb'");
} }
else { else {
return "lintian not available, so not testing"; return "lintian not available, so not testing";
} }
} }
=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
@@ -130,7 +155,7 @@ sub getcontrolfile {
my $file=$this->filename; my $file=$this->filename;
if ($this->have_dpkg_deb) { if ($this->have_dpkg_deb) {
return $this->runpipe(1, "dpkg-deb --info $file $controlfile 2>/dev/null"); return $this->runpipe(1, "dpkg-deb --info '$file' $controlfile 2>/dev/null");
} }
else { else {
# Solaris tar doesn't support O # Solaris tar doesn't support O
@@ -139,14 +164,65 @@ sub getcontrolfile {
return "(mkdir /tmp/tar_out.$$ &&". return "(mkdir /tmp/tar_out.$$ &&".
" cd /tmp/tar_out.$$ &&". " cd /tmp/tar_out.$$ &&".
" 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.zst') {
$controlcomp = 'zstd -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.zst') {
$datacomp = 'zstd -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.
@@ -178,19 +254,27 @@ sub scan {
for (my $i=0; $i <= $#control; $i++) { for (my $i=0; $i <= $#control; $i++) {
$_ = $control[$i]; $_ = $control[$i];
chomp; chomp;
if (/^(\w.*?):\s+(.*)/) { if (/^(\w.*?):\s*(.*)/) {
# Really old debs might have oddly capitalized # Really old debs might have oddly capitalized
# field names. # field names.
$field=ucfirst(lc($1)); $field=ucfirst(lc($1));
if (exists $fieldtrans{$field}) { if (exists $fieldtrans{$field}) {
$field=$fieldtrans{$field}; $field=$fieldtrans{$field};
$this->$field($2); my $value = $2;
# Only set field if value is non-empty.
# For Description, empty first line means
# the actual text starts on next line.
$this->$field($value) if length $value;
} }
} }
elsif (/^ / && $field eq 'summary') { elsif (/^ / && $field eq 'summary') {
# Handle extended description. # Handle extended description.
s/^ //g; s/^ //g;
$_="" if $_ eq "."; $_="" if $_ eq ".";
# If summary is empty, use first line of extended description
if (!defined $this->summary || !length $this->summary) {
$this->summary($_);
}
$description.="$_\n"; $description.="$_\n";
} }
} }
@@ -209,15 +293,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 +328,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: $!";
} }
@@ -307,7 +393,7 @@ sub prep {
or die "patch error: $!"; or die "patch error: $!";
# Look for .rej files. # Look for .rej files.
die "patch failed with .rej files; giving up" die "patch failed with .rej files; giving up"
if $this->runpipe(1, "find $dir -name \"*.rej\""); if $this->runpipe(1, "find '$dir' -name \"*.rej\"");
$this->do('find', '.', '-name', '*.orig', '-exec', 'rm', '{}', ';'); $this->do('find', '.', '-name', '*.orig', '-exec', 'rm', '{}', ';');
$this->do("chmod", 755, "$dir/debian/rules"); $this->do("chmod", 755, "$dir/debian/rules");
@@ -317,6 +403,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);
@@ -382,6 +469,11 @@ sub prep {
close OUT; close OUT;
} }
# Use debhelper v7
open (OUT, ">$dir/debian/compat") || die "$dir/debian/compat: $!";
print OUT "10\n";
close OUT;
# A minimal rules file. # A minimal rules file.
open (OUT, ">$dir/debian/rules") || die "$dir/debian/rules: $!"; open (OUT, ">$dir/debian/rules") || die "$dir/debian/rules: $!";
my $fixpermscomment = $this->fixperms ? "" : "#"; my $fixpermscomment = $this->fixperms ? "" : "#";
@@ -389,72 +481,56 @@ sub prep {
#!/usr/bin/make -f #!/usr/bin/make -f
# debian/rules for alien # debian/rules for alien
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
# Use v4 compatability mode, so ldconfig gets added to maint scripts.
export DH_COMPAT=4
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_clean -k -d
dh_installdirs
dh_installdocs override_dh_auto_install:
dh_installchangelogs 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 override_dh_usrlocal:
dh_makeshlibs -dh_usrlocal || printf "Your package seems to be installing files into /usr/local/, which could be buggy. Will continue anyway.\\n"
dh_installdeb
-dh_shlibdeps override_dh_fixperms:
dh_gencontrol $fixpermscomment dh_fixperms
dh_md5sums
dh_builddeb override_dh_shlibdeps:
-dh_shlibdeps
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary
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.
@@ -488,12 +564,26 @@ Build a deb.
sub build { sub build {
my $this=shift; my $this=shift;
# Detect architecture mismatch and abort with a comprehensible
# error message.
my $arch=$this->arch;
if ($arch ne 'all') {
my $ret=system("dpkg-architecture", "-i".$arch);
if ($ret != 0) {
die $this->filename." is for architecture ".$this->arch." ; the package cannot be built on this system"."\n";
}
}
chdir $this->unpacked_tree; chdir $this->unpacked_tree;
my $log=$this->runpipe(1, "debian/rules binary 2>&1"); my $log=$this->runpipe(1, "debian/rules binary 2>&1");
if ($?) { chdir "..";
my $err=$?;
if ($err) {
if (! defined $log) {
die "Package build failed; could not run generated debian/rules file.\n";
}
die "Package build failed. Here's the log:\n", $log; die "Package build failed. Here's the log:\n", $log;
} }
chdir "..";
return $this->name."_".$this->version."-".$this->release."_".$this->arch.".deb"; return $this->name."_".$this->version."-".$this->release."_".$this->arch.".deb";
} }
@@ -528,7 +618,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
@@ -582,12 +672,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 $_;
} }
@@ -683,7 +774,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";
@@ -713,32 +804,52 @@ 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 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\/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;
} }
@@ -754,7 +865,7 @@ sub postinst {
return "$firstline\n$permscript\n$rest"; return "$firstline\n$permscript\n$rest";
} }
=cut =back
=head1 AUTHOR =head1 AUTHOR

View File

@@ -30,7 +30,7 @@ sub checkfile {
my $this=shift; my $this=shift;
my $file=shift; my $file=shift;
return unless $file =~ m/^lsb-.*\.rpm$/; return unless $file =~ m/^lsb-.*\.rpm$/;
my @deps=$this->runpipe(1, "LANG=C rpm -qp -R $file"); my @deps=$this->runpipe(1, "LANG=C rpm -qp -R '$file'");
return 1 if grep { s/\s+//g; $_ eq 'lsb' } @deps; return 1 if grep { s/\s+//g; $_ eq 'lsb' } @deps;
return; return;
} }
@@ -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;
} }
} }

View File

@@ -327,6 +327,8 @@ sub build {
return $name; return $name;
} }
=back
=head1 AUTHOR =head1 AUTHOR
Mark Hershberger <mah@everybody.org> Mark Hershberger <mah@everybody.org>

View File

@@ -8,7 +8,9 @@ Alien::Package::Rpm - an object that represents a rpm package
package Alien::Package::Rpm; package Alien::Package::Rpm;
use strict; use strict;
use base qw(Alien::Package); use Exporter qw(import);
our @EXPORT_OK = qw(arch);
use base qw(Alien::Package Exporter);
=head1 DESCRIPTION =head1 DESCRIPTION
@@ -31,7 +33,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 +46,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
@@ -76,13 +78,15 @@ sub scan {
POSTIN => 'postinst', POSTIN => 'postinst',
PREUN => 'prerm', PREUN => 'prerm',
POSTUN => 'postrm', POSTUN => 'postrm',
LICENSE => 'copyright',
); );
# Use --queryformat to pull out all the fields we need. # Use --queryformat to pull out all the fields we need.
foreach my $field (qw{NAME VERSION RELEASE ARCH CHANGELOGTEXT foreach my $field (qw{NAME VERSION RELEASE ARCH CHANGELOGTEXT
SUMMARY DESCRIPTION COPYRIGHT PREFIXES}, SUMMARY DESCRIPTION PREFIXES},
keys(%fieldtrans)) { keys(%fieldtrans)) {
my $value=$this->runpipe(0, "LANG=C rpm -qp --queryformat \%{$field} $file"); my $value=$this->runpipe(0, "LANG=C rpm -qp --queryformat \%{$field} '$file'");
next if $? || $value eq '(none)';
my $key; my $key;
if (exists $fieldtrans{$field}) { if (exists $fieldtrans{$field}) {
$key=$fieldtrans{$field}; $key=$fieldtrans{$field};
@@ -90,21 +94,20 @@ sub scan {
else { else {
$key=lc($field); $key=lc($field);
} }
$value='' if $value eq '(none)';
$this->$key($value); $this->$key($value);
} }
# Get the conffiles list. # Get the conffiles list.
$this->conffiles([map { chomp; $_ } $this->runpipe(0, "LANG=C rpm -qcp $file")]); $this->conffiles([map { chomp; $_ } $this->runpipe(0, "LANG=C rpm -qcp '$file'")]);
if (defined $this->conffiles->[0] && if (defined $this->conffiles->[0] &&
$this->conffiles->[0] eq '(contains no files)') { $this->conffiles->[0] eq '(contains no files)') {
$this->conffiles([]); $this->conffiles([]);
} }
$this->binary_info(scalar $this->runpipe(0, "rpm -qpi $file")); $this->binary_info(scalar $this->runpipe(0, "rpm -qpi '$file'"));
# Get the filelist. # Get the filelist.
$this->filelist([map { chomp; $_ } $this->runpipe(0, "LANG=C rpm -qpl $file")]); $this->filelist([map { chomp; $_ } $this->runpipe(0, "LANG=C rpm -qpl '$file'")]);
if (defined $this->filelist->[0] && if (defined $this->filelist->[0] &&
$this->filelist->[0] eq '(contains no files)') { $this->filelist->[0] eq '(contains no files)') {
$this->filelist([]); $this->filelist([]);
@@ -122,12 +125,18 @@ sub scan {
$this->summary('Converted RPM package'); $this->summary('Converted RPM package');
} }
} }
unless (defined $this->copyright) {
$this->copyright('unknown');
}
unless (defined $this->description) { unless (defined $this->description) {
$this->description($this->summary); $this->description($this->summary);
} }
unless (defined $this->copyright) {
# Older rpms have no licence tag, but have a copyright.
$this->copyright($this->runpipe(0, "LANG=C rpm -qp --queryformat \%{COPYRIGHT} '$file'"));
# Fallback.
if (! $this->copyright) {
$this->copyright('unknown');
}
}
if (! defined $this->release || ! defined $this->version || if (! defined $this->release || ! defined $this->version ||
! defined $this->name) { ! defined $this->name) {
die "Error querying rpm file"; die "Error querying rpm file";
@@ -152,7 +161,13 @@ sub unpack {
$this->SUPER::unpack(@_); $this->SUPER::unpack(@_);
my $workdir=$this->unpacked_tree; my $workdir=$this->unpacked_tree;
$this->do("rpm2cpio ".$this->filename." | (cd $workdir; cpio --extract --make-directories --no-absolute-filenames --preserve-modification-time) 2>&1") # Check if we need to use lzma to uncompress the cpio archive
my $decomp='';
if ($this->do("rpm2cpio '".$this->filename."' | lzma -t -q > /dev/null 2>&1")) {
$decomp = 'lzma -d -q |';
}
$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
@@ -161,7 +176,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." | 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;
@@ -171,7 +186,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'");
} }
} }
@@ -235,10 +250,13 @@ 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);
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) {
@@ -255,17 +273,20 @@ sub unpack {
} }
$gid=0; $gid=0;
} }
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 # Note that ghost files exist in the metadata but not
if ($> == 0) { # in the cpio archive, so check that the file exists
$this->do("chown", "$uid:$gid", "$workdir/$file") # before trying to access it
|| die "failed chowning $file to $uid\:$gid\: $!"; if (-e "$workdir/$file") {
if ($> == 0) {
$this->do("chown", "$uid:$gid", "$workdir/$file")
|| die "failed chowning $file to $uid\:$gid\: $!";
}
$this->do("chmod", sprintf("%lo", $mode), "$workdir/$file")
|| die "failed changing mode of $file to $mode\: $!";
} }
next if -l "$workdir/$file"; # skip links
$this->do("chmod", sprintf("%lo", $mode), "$workdir/$file")
|| die "failed changing mode of $file to $mode\: $!";
} }
$this->owninfo(\%owninfo); $this->owninfo(\%owninfo);
$this->modeinfo(\%modeinfo); $this->modeinfo(\%modeinfo);
@@ -283,35 +304,167 @@ 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}) {
# Unquote any escaped characters in filenames - needed for if (! grep(m:^\Q$fn\E$:,@standard_dirs)) {
# non ascii characters. (eg. iso_8859-1 latin set) # Unquote any escaped characters in filenames - needed for
if ($fn =~ /\\/) { # non ascii characters. (eg. iso_8859-1 latin set)
$fn=eval qq{"$fn"}; if ($fn =~ /\\/) {
} $fn=eval qq{"$fn"};
}
# Note all filenames are quoted in case they contain # Note all filenames are quoted in case they contain
# spaces. # spaces.
if ($fn =~ m:/$:) { if ($fn =~ m:/$:) {
$filelist.=qq{%dir "$fn"\n}; $filelist.=qq{%dir "$fn"\n};
} }
elsif (grep(m:^\Q$fn\E$:,@conffiles)) { # it's a conffile elsif (grep(m:^\Q$fn\E$:,@conffiles)) { # it's a conffile
$filelist.=qq{%config "$fn"\n}; $filelist.=qq{%config "$fn"\n};
} }
else { # normal file else { # normal file
$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";
open (OUT, ">$spec") || die "$spec: $!"; open (OUT, ">$spec") || die "$spec: $!";
my $pwd=`pwd`; # Note: Buildroot is passed via --buildroot command line option
chomp $pwd; # to handle paths with spaces correctly
print OUT "Buildroot: $pwd/$dir\n"; # must be absolute dirname
print OUT "Name: ".$this->name."\n"; print OUT "Name: ".$this->name."\n";
print OUT "Version: ".$this->version."\n"; print OUT "Version: ".$this->version."\n";
print OUT "Release: ".$this->release."\n"; print OUT "Release: ".$this->release."\n";
@@ -329,22 +482,22 @@ sub prep {
if ($this->usescripts) { if ($this->usescripts) {
if ($this->preinst) { if ($this->preinst) {
print OUT "\%pre\n"; print OUT "\%pre\n";
print OUT $this->preinst."\n"; print OUT escape_percents($this->preinst)."\n";
print OUT "\n"; print OUT "\n";
} }
if ($this->postinst) { if ($this->postinst) {
print OUT "\%post\n"; print OUT "\%post\n";
print OUT $this->postinst."\n"; print OUT escape_percents($this->postinst)."\n";
print OUT "\n"; print OUT "\n";
} }
if ($this->prerm) { if ($this->prerm) {
print OUT "\%preun\n"; print OUT "\%preun\n";
print OUT $this->prerm."\n"; print OUT escape_percents($this->prerm)."\n";
print OUT "\n"; print OUT "\n";
} }
if ($this->postrm) { if ($this->postrm) {
print OUT "\%postun\n"; print OUT "\%postun\n";
print OUT $this->postrm."\n"; print OUT escape_percents($this->postrm)."\n";
print OUT "\n"; print OUT "\n";
} }
} }
@@ -373,7 +526,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
@@ -405,7 +558,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
@@ -418,7 +571,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;
@@ -458,16 +613,21 @@ 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.
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,14 +649,16 @@ 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;
} }
$this->{$script} = shift if @_; $this->{$script} = shift if @_;
return $this->{$script};
# get # get
return unless defined wantarray; # optimization return unless defined wantarray; # optimization
@@ -532,12 +694,17 @@ sub prerm {
my $this=shift; my $this=shift;
$this->_script_helper('prerm', @_); $this->_script_helper('prerm', @_);
} }
sub escape_percents {
my $s=shift;
$s =~ s/\%/\%\%/g;
return $s;
}
=item arch =item arch
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
@@ -580,9 +747,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;
} }
@@ -602,6 +780,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
} }

View File

@@ -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
@@ -166,7 +166,7 @@ sub scan {
# Read in the file list. # Read in the file list.
my @filelist; my @filelist;
# FIXME: support gzip files too! # FIXME: support gzip files too!
foreach ($this->runpipe(0, "bzip2 -d < $file | tar -tf -")) { foreach ($this->runpipe(0, "bzip2 -d < '$file' | tar -tf -")) {
chomp; chomp;
s:^\./:/:; s:^\./:/:;
$_="/$_" unless m:^/:; $_="/$_" unless m:^/:;
@@ -179,7 +179,7 @@ sub scan {
$this->distribution('Stampede'); $this->distribution('Stampede');
$this->origformat('slp'); $this->origformat('slp');
$this->changelogtext(''); $this->changelogtext('');
$this->binary_info($this->runpipe(0, "ls -l $file")); $this->binary_info($this->runpipe(0, "ls -l '$file'"));
return 1; return 1;
} }
@@ -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
@@ -358,6 +358,8 @@ sub release {
} }
=back
=head1 AUTHOR =head1 AUTHOR
Joey Hess <joey@kitenet.net> Joey Hess <joey@kitenet.net>

View File

@@ -9,10 +9,15 @@ Alien::Package::Tgz - an object that represents a tgz package
package Alien::Package::Tgz; package Alien::Package::Tgz;
use strict; use strict;
use base qw(Alien::Package); use base qw(Alien::Package);
use Cwd qw(abs_path);
use Alien::Package::Rpm qw(arch);
my $tarext=qr/\.(?:tgz|tar(?:\.(?:gz|Z|z|bz|bz2))?|taz)$/;
=head1 DESCRIPTION =head1 DESCRIPTION
This is an object class that represents a tgz package, as used in Slackware. 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. It is derived from Alien::Package.
=head1 CLASS DATA =head1 CLASS DATA
@@ -41,7 +46,7 @@ use constant scripttrans => {
=item checkfile =item checkfile
Detect tgz files by their extention. Detect tgz files by their extension.
=cut =cut
@@ -49,7 +54,7 @@ sub checkfile {
my $this=shift; my $this=shift;
my $file=shift; my $file=shift;
return $file =~ m/.*\.(?:tgz|tar\.(?:gz|Z|z)|taz)$/; return $file =~ m/$tarext$/;
} }
=item install =item install
@@ -92,8 +97,8 @@ 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/\.(tgz|tar\.(gz|Z))$//; $basename=~s/$tarext//;
if ($basename=~m/([\w-]+)-([0-9\.?]+).*/) { if ($basename=~m/([\w-]+)-([0-9\.?]+).*/) {
$this->name($1); $this->name($1);
@@ -106,20 +111,104 @@ sub scan {
$this->arch('all'); $this->arch('all');
$this->summary("Converted Slackware tgz package"); # Attempt to extract slack-desc
$this->description($this->summary); my $slack_desc_content = $this->runpipe(1, "tar Oxf '$file' install/slack-desc 2>/dev/null");
my $pkg_name = $this->name(); # Get package name early
if ($slack_desc_content && $slack_desc_content =~ /\S/) {
my @slack_lines = split /\n/, $slack_desc_content;
# Default values if parsing fails or parts are missing
my $default_summary_text = "Package from tgz file (slack-desc found)";
my $default_description_text = "Package from tgz file (slack-desc found)";
$this->summary($default_summary_text);
$this->description($default_description_text);
my $summary_parsed_successfully = 0;
if (@slack_lines) {
my $first_line = $slack_lines[0]; # Peek at first line
# Try to parse summary from the first line using the strict format
if ($first_line =~ /^\Q$pkg_name\E: \Q$pkg_name\E \((.+)\)\s*$/) {
my $summary_candidate = $1;
if ($summary_candidate =~ /\S/) { # Check if captured summary is not just whitespace
$this->summary($summary_candidate);
$this->description($summary_candidate); # Initial guess for description
shift @slack_lines; # Consume the line as it was successfully parsed
$summary_parsed_successfully = 1;
}
}
}
# Description Parsing from remaining lines (or all lines if summary parse failed)
my @description_parts;
my $expected_prefix_regex = qr/^\Q$pkg_name\E: /; # $pkg_name: <text>
my $paragraph_break_regex = qr/^\Q$pkg_name\E:$/; # $pkg_name:
foreach my $line (@slack_lines) {
if ($line =~ $paragraph_break_regex) {
push @description_parts, ""; # Paragraph break
} elsif ((my $desc_content = $line) =~ s/$expected_prefix_regex//) {
# Prefix was stripped, $desc_content now holds the rest
push @description_parts, $desc_content;
} else {
# Line does not match strict format, ignore it for description.
# This handles cases where the first line was not a valid summary
# and is now being re-evaluated here but doesn't fit description format either.
}
}
if (@description_parts) {
my $parsed_description = join("\n", @description_parts);
# Remove leading/trailing empty lines from the final description block
$parsed_description =~ s/^\n+//;
$parsed_description =~ s/\n+$/\n/; # Keep single trailing newline if content, or make it one if many
$parsed_description =~ s/\s+$//; # Trim trailing whitespace overall, including last newline if it was just that
if ($parsed_description =~ /\S/) {
$this->description($parsed_description);
# If summary is still the generic default, but we have a description,
# try to set summary from the first line of this description.
if ($this->summary() eq $default_summary_text) {
my ($first_desc_line) = split /\n/, $parsed_description;
if ($first_desc_line && length($first_desc_line) < 100 && $first_desc_line =~ /\S/) {
$this->summary($first_desc_line);
}
}
} else {
# Description parts were found but resulted in an empty string (e.g. only paragraph markers)
# Revert to summary if summary was good, or default if summary was also default.
if ($summary_parsed_successfully) {
$this->description($this->summary());
} else {
$this->description($default_description_text); # Keep default
}
}
} elsif (!$summary_parsed_successfully) {
# No description parts AND summary was not parsed successfully means slack-desc was
# present but entirely unparsable or empty after the first line (if any).
# Summary and Description remain $default_summary_text.
}
# If summary was parsed but no description lines, description is already set to summary.
} else {
# Original behavior if slack-desc is not found or empty
$this->summary("Converted tgz package");
$this->description($this->summary);
}
$this->copyright('unknown'); $this->copyright('unknown');
$this->release(1); $this->release(1);
$this->distribution("Slackware"); $this->distribution("Slackware/tarball");
$this->group("unknown"); $this->group("unknown");
$this->origformat('tgz'); $this->origformat('tgz');
$this->changelogtext(''); $this->changelogtext('');
$this->binary_info($this->runpipe(0, "ls -l $file")); $this->binary_info($this->runpipe(0, "ls -l '$file'"));
# Now figure out the conffiles. Assume anything in etc/ is a # Now figure out the conffiles. Assume anything in etc/ is a
# conffile. # conffile.
my @conffiles; my @conffiles;
open (FILELIST,"tar zvtf $file | grep etc/ |") || open (FILELIST,"tar vtf $file | grep etc/ |") ||
die "getting filelist: $!"; die "getting filelist: $!";
while (<FILELIST>) { while (<FILELIST>) {
# Make sure it's a normal file. This is looking at the # Make sure it's a normal file. This is looking at the
@@ -136,7 +225,7 @@ sub scan {
# Now get the whole filelist. We have to add leading /'s to the # Now get the whole filelist. We have to add leading /'s to the
# filenames. We have to ignore all files under /install/ # filenames. We have to ignore all files under /install/
my @filelist; my @filelist;
open (FILELIST, "tar ztf $file |") || open (FILELIST, "tar tf $file |") ||
die "getting filelist: $!"; die "getting filelist: $!";
while (<FILELIST>) { while (<FILELIST>) {
chomp; chomp;
@@ -148,7 +237,7 @@ sub scan {
# Now get the scripts. # Now get the scripts.
foreach my $script (keys %{scripttrans()}) { 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; return 1;
@@ -163,9 +252,9 @@ Unpack tgz.
sub unpack { sub unpack {
my $this=shift; my $this=shift;
$this->SUPER::unpack(@_); $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: $!"; or die "Unpacking of '$file' failed: $!";
# Delete the install directory that has slackware info in it. # Delete the install directory that has slackware info in it.
$this->do("cd ".$this->unpacked_tree."; rm -rf ./install"); $this->do("cd ".$this->unpacked_tree."; rm -rf ./install");
@@ -173,6 +262,161 @@ sub unpack {
return 1; return 1;
} }
# Helper function for _format_slack_desc
sub _format_slack_desc_section {
my ($pkgname, $text_content, $num_target_lines, $max_total_line_length) = @_;
my $line_prefix_with_space = "$pkgname: ";
my $line_prefix_no_space = "$pkgname:";
# Max length for the actual content, after the prefix
my $max_content_len = $max_total_line_length - length($line_prefix_with_space);
# Ensure max_content_len is somewhat reasonable if pkgname is very long
$max_content_len = 10 if $max_content_len < 10;
my @formatted_lines;
$text_content = "" if !defined $text_content; # Ensure defined
my @segments = split /\n/, $text_content;
# If text_content was empty, split results in one empty segment.
# If text_content ended with \n, split might produce an extra empty segment.
# We want to preserve intentional paragraph breaks (empty segments from \n\n).
# Special case: if text_content is completely empty, segments will be [""]
# and num_target_lines is 1, it should produce one "$pkgname:" line.
# If text_content is non-empty but results in no words (e.g. " \n "),
# it should also be handled gracefully.
SEGMENT: foreach my $segment (@segments) {
last SEGMENT if scalar(@formatted_lines) >= $num_target_lines;
# Trim whitespace from segment. If it becomes empty, it's a paragraph break.
$segment =~ s/^\s+|\s+$//g;
if ($segment eq "") {
push @formatted_lines, $line_prefix_no_space;
next SEGMENT;
}
my @words = split /\s+/, $segment;
next SEGMENT if !@words; # Should not happen if segment was non-empty after trim
my $current_line_buffer = ""; # Holds content part of the line
WORD: foreach my $word (@words) {
if (scalar(@formatted_lines) >= $num_target_lines && $current_line_buffer eq "") {
# Already filled target lines and current buffer for this segment is empty
last SEGMENT;
}
# Check if a single word itself is too long
if (length($word) > $max_content_len) {
# If buffer has content, push it first
if ($current_line_buffer ne "") {
last SEGMENT if scalar(@formatted_lines) >= $num_target_lines;
push @formatted_lines, $line_prefix_with_space . $current_line_buffer;
$current_line_buffer = "";
}
# Push the long word, truncated, on its own line
last SEGMENT if scalar(@formatted_lines) >= $num_target_lines;
push @formatted_lines, $line_prefix_with_space . substr($word, 0, $max_content_len);
# The rest of the word is lost, as per typical shell script behavior (often implicit)
# Or, decide if $word should become the remainder: $word = substr($word, $max_content_len); and re-evaluate
# For now, simply truncating and moving to next word in input.
# Given the spec, it's more about fitting, so a very long word will just fill one line.
next WORD; # Move to next word, current long word handled.
}
if ($current_line_buffer eq "") {
$current_line_buffer = $word;
} else {
my $potential_line = $current_line_buffer . " " . $word;
if (length($potential_line) <= $max_content_len) {
$current_line_buffer = $potential_line;
} else {
last SEGMENT if scalar(@formatted_lines) >= $num_target_lines;
push @formatted_lines, $line_prefix_with_space . $current_line_buffer;
$current_line_buffer = $word;
}
}
}# end WORD loop
# Push any remaining content in buffer for the current segment
if ($current_line_buffer ne "") {
last SEGMENT if scalar(@formatted_lines) >= $num_target_lines;
push @formatted_lines, $line_prefix_with_space . $current_line_buffer;
}
} # end SEGMENT loop
# Pad with "$pkgname:" or truncate to meet exactly $num_target_lines
while (scalar(@formatted_lines) < $num_target_lines) {
push @formatted_lines, $line_prefix_no_space;
}
if (scalar(@formatted_lines) > $num_target_lines) {
@formatted_lines = @formatted_lines[0 .. $num_target_lines - 1];
}
return @formatted_lines;
}
sub _format_slack_desc {
my $this = shift;
my $pkgname = $this->name() || "unknown"; # Should usually be defined
my $summary = $this->summary();
my $description = $this->description();
my $homepage_url = ""; # Fixed as per requirement
# Ensure summary is a single, trimmed line
$summary = "" if !defined $summary;
$summary =~ s/\n.*//s; # Keep only the first line
$summary =~ s/^\s+|\s+$//g; # Trim whitespace
$summary = "No summary" if $summary eq "";
$description = "" if !defined $description;
# Newlines in description are paragraph separators, handled by _format_slack_desc_section
my $screen_width = 72 + length($pkgname);
my $ruler_header = "# HOW TO EDIT THIS FILE:\n# The \"handy ruler\" below makes it easier to edit a package description.\n# Line up the first '|' above the ':' following the base package name, and\n# the '|' on the right side marks the last column you can put a character in.\n# You must make exactly 11 lines for the formatting to be correct. It's also\n# customary to leave one space after the ':' except on otherwise blank lines.\n\n";
my $ruler_gap = ' ' x length($pkgname);
my $ruler_base = $ruler_gap . "|-----handy-ruler--";
# Screen width is total, ruler includes the final '|', so -1 from screen_width for filling
my $ruler_fill_count = $screen_width - 1 - length($ruler_base);
$ruler_fill_count = 0 if $ruler_fill_count < 0; # Ensure not negative
my $ruler_line = $ruler_base . ('-' x $ruler_fill_count) . '|';
my $complete_ruler_block = $ruler_header . $ruler_line . "\n";
# Section 1: Summary (1 line)
# The format "$pkgname ($summary)" is part of the text_content for this section
my $summary_content_for_section = "$pkgname ($summary)";
my @summary_section = _format_slack_desc_section($pkgname, $summary_content_for_section, 1, $screen_width);
# Section 2: Empty line (1 line)
# This is effectively an empty paragraph
my @empty_section = _format_slack_desc_section($pkgname, "", 1, $screen_width);
# Ensure it's just "$pkgname:" as per spec for empty lines
$empty_section[0] = "$pkgname:" if @empty_section;
# Section 3: Description (8 lines)
my @description_section = _format_slack_desc_section($pkgname, $description, 8, $screen_width);
# Section 4: Homepage (1 line)
my @homepage_section = _format_slack_desc_section($pkgname, $homepage_url, 1, $screen_width);
# Ensure it's just "$pkgname:" if homepage_url is empty
if ($homepage_url eq "" && @homepage_section) {
$homepage_section[0] = "$pkgname:";
}
my $all_content_lines = join("\n", @summary_section, @empty_section, @description_section, @homepage_section);
return $complete_ruler_block . $all_content_lines . "\n";
}
=item prep =item prep
Adds a populated install directory to the build tree. Adds a populated install directory to the build tree.
@@ -182,16 +426,41 @@ Adds a populated install directory to the build tree.
sub prep { 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!";
my $install_dir = $dir."/install";
my $install_made=0; my $install_made=0;
# Check if install directory already exists (e.g. from unpacking)
if (-d $install_dir) {
$install_made = 1;
}
# Generate and write slack-desc if description is meaningful
my $description = $this->description();
my $summary = $this->summary();
if (defined $description && $description =~ /\S/ && $description ne "Converted tgz package" && $description ne $summary) {
my $slack_desc_content = $this->_format_slack_desc();
if ($slack_desc_content && $slack_desc_content =~ /\S/) {
if (!$install_made) {
mkdir($install_dir, 0755)
|| die "unable to mkdir $install_dir: $!";
$install_made=1;
}
my $slack_desc_path = $install_dir."/slack-desc";
open (SLACKDESC, ">$slack_desc_path") || die "Unable to open $slack_desc_path for writing: $!";
print SLACKDESC $slack_desc_content;
close SLACKDESC;
chmod(0644, $slack_desc_path) || $this->warn("Could not chmod $slack_desc_path: $!");
}
}
if ($this->usescripts) { if ($this->usescripts) {
foreach my $script (keys %{scripttrans()}) { foreach my $script (keys %{scripttrans()}) {
my $data=$this->$script(); my $data=$this->$script();
my $out=$this->unpacked_tree."/install/".${scripttrans()}{$script}; my $out=$install_dir."/".${scripttrans()}{$script};
next if ! defined $data || $data =~ m/^\s*$/; next if ! defined $data || $data =~ m/^\s*$/;
if (!$install_made) { if (!$install_made) {
mkdir($this->unpacked_tree."/install", 0755) mkdir($install_dir, 0755)
|| die "unable to mkdir ".$this->unpacked_tree."/install: $!"; || die "unable to mkdir $install_dir: $!";
$install_made=1; $install_made=1;
} }
open (OUT, ">$out") || die "$out: $!"; open (OUT, ">$out") || die "$out: $!";
@@ -210,14 +479,26 @@ Build a tgz.
sub build { sub build {
my $this=shift; my $this=shift;
my $tgz=$this->name."-".$this->version.".tgz"; my $arch = Alien::Package::Rpm::arch($this, @_);
my $tgz=$this->name."-".$this->version."-".$arch."-1_alien.tgz";
$this->do("cd ".$this->unpacked_tree."; tar czf ../$tgz .") if (-x "/sbin/makepkg") {
or die "Package build failed"; my $v=$Alien::Package::verbose;
$Alien::Package::verbose=2;
$this->do("cd ".$this->unpacked_tree."; makepkg -l y -c n ../$tgz .")
or die "Unable to make pkg";
$Alien::Package::verbose=$v;
}
else {
# Fallback to plain tar when makepkg is not available
# Use same method as makepkg: strip ./ prefix via sed to match Slackware format
$this->do("cd ".$this->unpacked_tree."; find ./ | LC_COLLATE=C sort | sed '2,\$s,^\\./,,' | tar --no-recursion -T - -czf ../$tgz")
or die "Package build failed";
}
return $tgz; return $tgz;
} }
=back
=head1 AUTHOR =head1 AUTHOR
Joey Hess <joey@kitenet.net> Joey Hess <joey@kitenet.net>

File diff suppressed because it is too large Load Diff

View File

@@ -15,24 +15,15 @@ sub MY::libscan {
sub MY::postamble { sub MY::postamble {
return q{ return q{
VER=$(shell perl -e '$$_=<>;print m/\((.*?)\)/'<debian/changelog) VER=$(shell perl -e '$$_=<>;print m/\((.*?)\)/'<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
cp -f patches/*.diff $(PREFIX)/share/alien/patches/
-rm -f $(PREFIX)/share/alien/patches/*.gz
gzip -qf9 $(PREFIX)/share/alien/patches/*
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
} }

4
README
View File

@@ -51,8 +51,8 @@ Note:
Programs that use alien: Programs that use alien:
I know of one program that acts as a frontend to alien - kpackviewer is a I know of one program that acts as a frontend to alien - kpackviewer is a
package viewer that can convert between package formats by using alien. Its package viewer that can convert between package formats by using alien. Can
homepage is at http://www.momentus.com.br/users/hook/kpackviewer.html be downloaded from https://download.kde.org/Attic/stable/stable/apps/KDE1.x/utils/kpackviewer-0.70.tar.gz
Corel also appears to have (or had) something in Corel linux that Corel also appears to have (or had) something in Corel linux that
uses alien. uses alien.

14
alien.lsm Normal file
View 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

View File

@@ -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
@@ -67,6 +67,9 @@ standard linux directory tree. Do NOT run B<alien> on tar files with source
code in them, unless you want this source code to be installed in your root code in them, unless you want this source code to be installed in your root
directory when you install the package! directory when you install the package!
When using B<alien> to convert a tgz package, all files in /etc in are assumed
to be configuration files.
=item pkg =item pkg
To manipulate packages in the Solaris pkg format (which is really the SV To manipulate packages in the Solaris pkg format (which is really the SV
@@ -127,35 +130,6 @@ Like B<-g>, but do not generate the packagename.orig directory. This is only
useful when you are very low on disk space and are generating a debian useful when you are very low on disk space and are generating a debian
package. package.
=item B<--patch=>I<patch>
Specify the patch to be used instead of automatically looking the patch up
in B</var/lib/alien>. This has no effect unless a debian package is being
built.
=item B<--anypatch>
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;
older patches may not necessarily work with newer packages.
=item B<--nopatch>
Do not use any patch files.
=item B<--description=>I<desc>
Specifiy a description for the package. This only has an effect when
converting from the tgz package format, which lacks descriptions.
=item B<--version=>I<version>
Specifiy a version for the package. This only has an effect when
converting from the tgz package format, which may lack version
information.
Note that without an argument, this displays the version of B<alien> instead.
=item B<-c>, B<--scripts> =item B<-c>, B<--scripts>
Try to convert the scripts that are meant to be run when the Try to convert the scripts that are meant to be run when the
@@ -166,6 +140,35 @@ and check to see what they do before using this option.
This is enabled by default when converting from lsb packages. This is enabled by default when converting from lsb packages.
=item B<--patch=>I<patch>
Specify the patch to be used instead of automatically looking the patch up
in B</var/lib/alien>. This has no effect unless a debian package is being
built.
=item B<--anypatch>
Be less strict about which patch file is used, perhaps attempting to use a patch
file for an older version of the package. This is not guaranteed to always work;
older patches may not necessarily work with newer packages.
=item B<--nopatch>
Do not use any patch files.
=item B<--description=>I<desc>
Specify a description for the package. This only has an effect when
converting from the tgz package format, which lacks descriptions.
=item B<--version=>I<version>
Specify a version for the package. This only has an effect when
converting from the tgz package format, which may lack version
information.
Note that without an argument, this displays the version of B<alien> instead.
=item B<-T>, B<--test> =item B<-T>, B<--test>
Test the generated packages. Currently this is only supported for debian Test the generated packages. Currently this is only supported for debian
@@ -190,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
@@ -239,11 +246,11 @@ all 4 package formats.
=head1 ENVIRONMENT =head1 ENVIRONMENT
B<alien> recognizes the following environemnt variables: 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.
@@ -258,14 +265,6 @@ included in generated debian packages.
=back =back
=head1 NOTES
When using B<alien> to convert a tgz package, all files in /etc in are assumed
to be configuration files.
If B<alien> is not run as root, the files in the generated package will have
incorrect owners and permissions.
=head1 AUTHOR =head1 AUTHOR
B<alien> was written by Christoph Lameter, B<<clameter@debian.org>>. B<alien> was written by Christoph Lameter, B<<clameter@debian.org>>.
@@ -335,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.
@@ -349,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
@@ -371,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() },
@@ -451,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) {
@@ -513,7 +518,7 @@ foreach my $file (@ARGV) {
# Make sure $package does not wipe out the # Make sure $package does not wipe out the
# directory when it is destroyed. # directory when it is destroyed.
$package->unpacked_tree(''); $package->unpacked_tree('');
exit; next;
} }
my $newfile=$package->build; my $newfile=$package->build;

34
alien.spec Normal file
View 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

1
debian/compat vendored
View File

@@ -1 +0,0 @@
7

21
debian/control vendored
View File

@@ -1,21 +0,0 @@
Source: alien
Section: admin
Priority: optional
Build-Depends: debhelper (>= 7)
Maintainer: Joey Hess <joeyh@debian.org>
Standards-Version: 3.7.3
Vcs-Git: git://git.kitenet.net/alien
Homepage: http://kitenet.net/~joey/code/alien/
Package: alien
Architecture: all
Section: admin
Depends: debhelper (>= 3), ${misc:Depends}, ${perl:Depends}, rpm (>= 2.4.4-2), dpkg-dev, make, cpio
Suggests: patch, bzip2, lsb-rpm, lintian
Description: convert and install rpm and other packages
Alien allows you to convert LSB, Red Hat, Stampede and Slackware Packages
into Debian packages, which can be installed with dpkg.
.
It can also generate packages of any of the other formats.
.
This is a tool only suitable for binary packages.

35
debian/copyright vendored
View File

@@ -1,35 +0,0 @@
This is a program originally written by Christoph Lameter
<clameter@debian.org>.
Deb to rpm conversion code was taken from the Martian program by
Randolph Chung <randolph@tausq.org>.
The Solaris pkg code was written by Mark A. Hershberger
<mah@everybody.org>.
This program is now maintained by Joey Hess <joeyh@debian.org>.
Copyright 1996, 1997 Christoph Lameter
Portions copyright 1997 Randolph Chung
Portions copyright 2001 Mark A. Hershberger
Copyright 1997-2007 Joey Hess
License:
alien 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 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, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
On Debian systems, the complete text of the GPL can be found in
/usr/share/common-licenses/GPL.

2
debian/docs vendored
View File

@@ -1,2 +0,0 @@
README
gendiff.txt

21
debian/rules vendored
View File

@@ -1,21 +0,0 @@
#!/usr/bin/make -f
%:
dh $@
build:
dh build
# simple smoke test
./alien.pl -V
binary-indep: build
dh install --before 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
# Not intended for use by anyone except the author.
announcedir:
@echo ${HOME}/src/joeywiki/code/alien/news
binary: binary-indep binary-arch

View File

@@ -1,393 +0,0 @@
--- j2sdk-1.4.2_05.orig/debian/dirs
+++ j2sdk-1.4.2_05/debian/dirs
@@ -0,0 +1,4 @@
+usr/share/doc
+usr/share/man
+usr/lib/netscape/plugins-libc6
+usr/lib/mozilla/plugins
--- j2sdk-1.4.2_05.orig/debian/control
+++ j2sdk-1.4.2_05/debian/control
@@ -0,0 +1,24 @@
+Source: j2sdk
+Section: non-free/devel
+Priority: optional
+Maintainer: Gerald Turner <gturner@unzane.com>
+
+Package: j2sdk1.4
+Architecture: i386
+Depends: ${shlibs:Depends}
+Provides: java-common, java-virtual-machine, java-runtime, java2-runtime, java-browser-plugin, java-compiler, java2-compiler, j2sdk1.4, j2re1.4
+Suggests: mozilla-browser (>= 1.2.1-10) | netscape
+Description: Java(TM) 2 SDK, Standard Edition, Sun Microsystems(TM)
+ The Java(TM) 2 SDK is a development environment for building
+ applications, applets, and components that can be deployed on the
+ Java platform.
+ .
+ The Java(TM) 2 SDK software includes tools useful for developing and
+ testing programs written in the Java programming language and running
+ on the Java platform. These tools are designed to be used from the
+ command line. Except for appletviewer, these tools do not provide a
+ graphical user interface.
+ .
+ This package has been converted from a rpm package by alien version
+ 8.46 using a special diff file to help make the package conform to
+ debian policy written by Gerald Turner.
--- j2sdk-1.4.2_05.orig/debian/prerm
+++ j2sdk-1.4.2_05/debian/prerm
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+case "`uname -m`" in
+ i[3-7]86 | ia32 | ia64)
+ ARCH=i386
+ ;;
+ sparc*)
+ ARCH=sparc
+ ;;
+ *)
+ ARCH="`uname -m`"
+ ;;
+esac
+
+if [ $1 = remove ]
+then
+ for i in appletviewer extcheck idlj jar jarsigner java java-rmi.cgi javac \
+ javadoc javah javap jdb keytool kinit klist ktab native2ascii \
+ orbd policytool rmic rmid rmiregistry serialver servertool \
+ tnameserv HtmlConverter
+ do
+ update-alternatives --remove $i /usr/lib/j2sdk-1.4.2/bin/$i
+ done
+
+ for i in ControlPanel
+ do
+ update-alternatives --remove $i /usr/lib/j2sdk-1.4.2/jre/bin/$i
+ done
+
+ update-alternatives \
+ --remove \
+ javaplugin.so \
+ /usr/lib/j2sdk-1.4.2/jre/plugin/${ARCH}/ns4/libjavaplugin.so
+
+ update-alternatives \
+ --remove \
+ javaplugin_oji.so \
+ /usr/lib/j2sdk-1.4.2/jre/plugin/${ARCH}/ns610-gcc32/libjavaplugin_oji.so
+fi
--- j2sdk-1.4.2_05.orig/debian/rules
+++ j2sdk-1.4.2_05/debian/rules
@@ -0,0 +1,99 @@
+#!/usr/bin/make -f
+# debian/rules for alien
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# Use v4 compatability mode, so ldconfig gets added to maint scripts.
+export DH_COMPAT=4
+
+PACKAGE=$(shell dh_listpackages)
+
+JAVA_HOME := debian/$(PACKAGE)/usr/lib/j2sdk-1.4.2
+MAN_DIR := debian/$(PACKAGE)/usr/share/man
+
+build:
+ dh_testdir
+
+clean:
+ dh_testdir
+ dh_testroot
+ dh_clean
+
+binary-indep: build
+
+binary-arch: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+# Copy the packages's files.
+ find . -maxdepth 1 -mindepth 1 -not -name debian -print0 | \
+ xargs -0 -r -i cp -a {} debian/$(PACKAGE)
+
+#
+# If you need to move files around in debian/$(PACKAGE) or do some
+# binary patching, do it here
+#
+
+# Move RPM contents to a proper debian/blackdown directory
+ mv debian/$(PACKAGE)/usr/java/j2sdk1.4.2_05 $(JAVA_HOME)
+ rmdir debian/$(PACKAGE)/usr/java
+
+# Move man pages to /usr/share/man
+ mv $(JAVA_HOME)/man/* $(MAN_DIR)
+ rmdir $(JAVA_HOME)/man
+
+# Move Japanese man pages further
+ rm $(MAN_DIR)/ja
+ mv $(MAN_DIR)/ja_JP.eucJP $(MAN_DIR)/ja
+ for i in `find $(MAN_DIR) -type f` ; \
+ do mv $$i `echo $$i | sed 's/\.\([^.]*\)$$/.j2sdk-1_4_2.\1/'` ; \
+ done
+
+# Unpack tripple compressed jars that showed up in 1.4.2
+ if [ -x $(JAVA_HOME)/lib/unpack ] ; then \
+ for i in `find $(JAVA_HOME) -name \*.pack` ; do \
+ $(JAVA_HOME)/lib/unpack \
+ $$i `dirname $$i`/`basename $$i .pack`.jar ; \
+ done ; \
+ fi
+
+# Fix ControlPanel shell script incompatibilities
+ if [ -f $(JAVA_HOME)/jre/bin/ControlPanel ] ; then \
+ sed "s/\/usr\/bin\/ls/\/bin\/ls/g; \
+ s/expr \(.*\) : '^/expr \1 : '/;" \
+ $(JAVA_HOME)/jre/bin/ControlPanel \
+ > $(JAVA_HOME)/jre/bin/ControlPanel.tmp ; \
+ mv $(JAVA_HOME)/jre/bin/ControlPanel.tmp \
+ $(JAVA_HOME)/jre/bin/ControlPanel ; \
+ chmod 755 $(JAVA_HOME)/jre/bin/ControlPanel ; \
+ fi
+
+# Include optional documentation
+ if [ -f ../j2sdk-1_4_2-doc.zip ] ; then \
+ unzip -q -d debian/$(PACKAGE)/usr/share/doc \
+ ../j2sdk-1_4_2-doc.zip ; \
+ mv debian/$(PACKAGE)/usr/share/doc/docs \
+ debian/$(PACKAGE)/usr/share/doc/$(PACKAGE) ; \
+ else \
+ echo j2sdk-1_4_2-doc.zip not found, skipping documentation ; \
+ fi
+
+ dh_installdocs
+ dh_installchangelogs
+
+# This has been known to break on some wacky binaries.
+# dh_strip
+ dh_compress
+ dh_fixperms
+ dh_makeshlibs
+ dh_installdeb
+ -dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary
--- j2sdk-1.4.2_05.orig/debian/changelog
+++ j2sdk-1.4.2_05/debian/changelog
@@ -0,0 +1,86 @@
+j2sdk (2:1.4.2_05-1) unstable; urgency=low
+
+ * New upstream release
+
+ -- Gerald Turner <gturner@unzane.com> Fri, 01 Oct 2004 10:01:53 -0700
+
+j2sdk (2:1.4.2_03-1) experimental; urgency=low
+
+ * New upstream release
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Mon, 19 Jan 2004 12:33:32 -0800
+
+j2sdk (2:1.4.2-1) experimental; urgency=low
+
+ * Fix ControlPanel shell script incompatibilities. Closes: #200731
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Thu, 10 Jul 2003 09:59:23 -0700
+
+j2sdk (1:1.4.2-1) experimental; urgency=low
+
+ * alien echoes the wrong filename, "j2sdk_1.4.2-1_i386.deb generated",
+ and fails to install when using the -i option. Reverted package name
+ j2sdk1.4 to j2sdk. Changed package version to 1 and use an epoch.
+ Closes: #199992
+ * The intent of the j2sdk1.4 package rename was so that that multiple
+ j2sdk versions could be installed simultaneously (i.e. j2sdk1.3).
+ This is no longer possible using this patch.
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Sun, 6 Jul 2003 13:39:31 -0700
+
+j2sdk (1.4.2-6) experimental; urgency=low
+
+ * New upstream release
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Mon, 30 Jun 2003 15:46:47 -0700
+
+j2sdk (1.4.1_02-5) experimental; urgency=low
+
+ * New upstream release
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Fri, 14 Mar 2003 14:43:45 -0800
+
+j2sdk (1.4.1_01-4) experimental; urgency=low
+
+ * New upstream release
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Tue, 14 Jan 2003 17:03:09 -0800
+
+j2sdk (1.4.1-3) experimental; urgency=low
+
+ * New upstream release
+ * Detection and installation of j2sdk-1_4_1-doc.zip (must be downloaded
+ and copied to the same directory where alien is executed)
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Wed, 2 Oct 2002 16:41:24 -0700
+
+j2sdk (1.4.1-2) experimental; urgency=low
+
+ * Added java-common Depends
+ * Added java-virtual-machine, java2-runtime, java-compiler, and
+ java2-compiler Provides
+ * Added netscape and mozilla Suggests
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Thu, 23 Aug 2002 09:07:09 -0700
+
+j2sdk (1.4.1-1) experimental; urgency=low
+
+ * New upstream release
+ * Detection and installation of j2sdk-1_4_1-rc-doc.zip (must be downloaded
+ and copied to the same directory where alien is executed)
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Thu, 22 Aug 2002 16:22:33 -0700
+
+j2sdk (1.4.0_01-1) experimental; urgency=low
+
+ * New upstream release
+ * Detection and installation of j2sdk-1_4_0-doc.zip (must be downloaded
+ and copied to the same directory where alien is executed)
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Thu, 22 Aug 2002 15:44:54 -0700
+
+j2sdk (1.4.0-1) experimental; urgency=low
+
+ * Converted from .rpm format to .deb
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Wed, 22 May 2002 12:46:34 -0700
--- j2sdk-1.4.2_05.orig/debian/postinst
+++ j2sdk-1.4.2_05/debian/postinst
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+case "`uname -m`" in
+ i[3-7]86 | ia32 | ia64)
+ ARCH=i386
+ ;;
+ sparc*)
+ ARCH=sparc
+ ;;
+ *)
+ ARCH="`uname -m`"
+ ;;
+esac
+
+if [ $1 = configure ]
+then
+ for i in appletviewer extcheck idlj jar jarsigner java java-rmi.cgi javac \
+ javadoc javah javap jdb keytool kinit klist ktab native2ascii \
+ orbd policytool rmic rmid rmiregistry serialver servertool \
+ tnameserv HtmlConverter
+ do
+ if [ -e /usr/share/man/man1/$i.j2sdk-1_4_2.1.gz ]
+ then
+ if [ -e /usr/share/man/ja/man1/$i.j2sdk-1_4_2.1.gz ]
+ then
+ update-alternatives \
+ --install \
+ /usr/bin/$i \
+ $i \
+ /usr/lib/j2sdk-1.4.2/bin/$i \
+ 1425 \
+ --slave \
+ /usr/share/man/man1/$i.1.gz \
+ $i.1.gz \
+ /usr/share/man/man1/$i.j2sdk-1_4_2.1.gz \
+ --slave \
+ /usr/share/man/ja/man1/$i.1.gz \
+ $i.ja.1.gz \
+ /usr/share/man/ja/man1/$i.j2sdk-1_4_2.1.gz
+ else
+ update-alternatives \
+ --install \
+ /usr/bin/$i \
+ $i \
+ /usr/lib/j2sdk-1.4.2/bin/$i \
+ 1425 \
+ --slave \
+ /usr/share/man/man1/$i.1.gz \
+ $i.1.gz \
+ /usr/share/man/man1/$i.j2sdk-1_4_2.1.gz
+ fi
+ else
+ update-alternatives \
+ --install \
+ /usr/bin/$i \
+ $i \
+ /usr/lib/j2sdk-1.4.2/bin/$i \
+ 1425
+ fi
+ done
+
+ for i in ControlPanel
+ do
+ update-alternatives \
+ --install \
+ /usr/bin/$i \
+ $i \
+ /usr/lib/j2sdk-1.4.2/jre/bin/$i \
+ 1425
+ done
+
+ update-alternatives \
+ --install \
+ /usr/lib/netscape/plugins-libc6/javaplugin.so \
+ javaplugin.so \
+ /usr/lib/j2sdk-1.4.2/jre/plugin/${ARCH}/ns4/libjavaplugin.so \
+ 1425
+
+ update-alternatives \
+ --install \
+ /usr/lib/mozilla/plugins/javaplugin_oji.so \
+ javaplugin_oji.so \
+ /usr/lib/j2sdk-1.4.2/jre/plugin/${ARCH}/ns610-gcc32/libjavaplugin_oji.so \
+ 1425
+fi
--- j2sdk-1.4.2_05.orig/debian/copyright
+++ j2sdk-1.4.2_05/debian/copyright
@@ -0,0 +1,35 @@
+This package was debianized by the alien program by converting
+a binary .rpm package on Mon, 19 Jan 2004 12:33:32 -0800
+
+Copyright: 1994-2001 Sun Microsystems, Inc.
+
+Information from the binary package:
+Name : j2sdk Relocations: (not relocateable)
+Version : 1.4.2_03 Vendor: Sun Microsystems
+Release : fcs Build Date: Tue Nov 18 17:08:10 2003
+Install date: (not installed) Build Host: localhost.localdomain
+Group : Development/Tools Source RPM: j2sdk-1.4.2_03-fcs.src.rpm
+Size : 65744430 License: 1994-2001 Sun Microsystems, Inc.
+Packager : Java Software <j2se-comments@java.sun.com>
+URL : http://java.sun.com/linux
+Summary : Java(TM) 2 Software Development Kit, Standard Edition
+Description :
+The Java 2 SDK, Standard Edition includes the Java
+Virtual Machine, core class libraries and tools used
+by programmers to develop Java software applets and
+applications. The SDK also provides the foundation
+for IDE (Integrated Development Environment) tools
+such as Sun's Forte for Java, Community Edition,
+the Java(TM) 2 Platform, Enterprise Edition (J2EE),
+Java-based application servers and more.
+The Java 2 Software Development Kit, SDK, is a
+development environment for building applications,
+applets, and components that can be deployed on
+the Java platform. The Java 2 SDK software includes
+tools useful for developing and testing programs
+written in the Java programming language and running
+on the Java platform. These tools are designed to
+be used from the command line. Except for
+appletviewer, these tools do not provide a
+graphical user interface.
+

View File

@@ -1,420 +0,0 @@
--- jdk-1.5.0.orig/debian/dirs
+++ jdk-1.5.0/debian/dirs
@@ -0,0 +1,4 @@
+usr/share/doc
+usr/share/man
+usr/lib/netscape/plugins-libc6
+usr/lib/mozilla/plugins
--- jdk-1.5.0.orig/debian/control
+++ jdk-1.5.0/debian/control
@@ -0,0 +1,24 @@
+Source: jdk
+Section: non-free/devel
+Priority: optional
+Maintainer: Gerald Turner <gturner@unzane.com>
+
+Package: jdk1.5
+Architecture: i386
+Depends: ${shlibs:Depends}
+Provides: java-common, java-virtual-machine, java-runtime, java2-runtime, java-browser-plugin, java-compiler, java2-compiler, j2sdk1.4, j2re1.4
+Suggests: mozilla-browser (>= 1.2.1-10)
+Description: Java(TM) 2 SDK, Standard Edition, Sun Microsystems(TM)
+ The Java(TM) 2 SDK is a development environment for building
+ applications, applets, and components that can be deployed on the
+ Java platform.
+ .
+ The Java(TM) 2 SDK software includes tools useful for developing and
+ testing programs written in the Java programming language and running
+ on the Java platform. These tools are designed to be used from the
+ command line. Except for appletviewer, these tools do not provide a
+ graphical user interface.
+ .
+ This package has been converted from a rpm package by alien version
+ 8.46 using a special diff file to help make the package conform to
+ debian policy written by Gerald Turner.
--- jdk-1.5.0.orig/debian/prerm
+++ jdk-1.5.0/debian/prerm
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+case "`uname -m`" in
+ i[3-7]86 | ia32 | ia64)
+ ARCH=i386
+ ;;
+ sparc*)
+ ARCH=sparc
+ ;;
+ *)
+ ARCH="`uname -m`"
+ ;;
+esac
+
+if [ $1 = remove ]
+then
+ for i in appletviewer ControlPanel extcheck HtmlConverter idlj jar \
+ jarsigner java javac javadoc javah javap java-rmi.cgi javaws \
+ jconsole jdb jinfo jmap jps jsadebugd jstack jstat jstatd \
+ keytool kinit klist ktab native2ascii orbd pack200 policytool \
+ rmic rmid rmiregistry serialver servertool tnameserv unpack200
+ do
+ update-alternatives --remove $i /usr/lib/j2sdk-1.5.0/bin/$i
+ done
+
+ for i in apt
+ do
+ update-alternatives --remove j$i /usr/lib/j2sdk-1.5.0/bin/$i
+ done
+
+ update-alternatives \
+ --remove \
+ javaplugin_oji.so \
+ /usr/lib/j2sdk-1.5.0/jre/plugin/${ARCH}/ns7/libjavaplugin_oji.so
+fi
--- jdk-1.5.0.orig/debian/rules
+++ jdk-1.5.0/debian/rules
@@ -0,0 +1,108 @@
+#!/usr/bin/make -f
+# debian/rules for alien
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# Use v4 compatability mode, so ldconfig gets added to maint scripts.
+export DH_COMPAT=4
+
+PACKAGE=$(shell dh_listpackages)
+
+JAVA_HOME := debian/$(PACKAGE)/usr/lib/j2sdk-1.5.0
+MAN_DIR := debian/$(PACKAGE)/usr/share/man
+
+build:
+ dh_testdir
+
+clean:
+ dh_testdir
+ dh_testroot
+ dh_clean
+
+binary-indep: build
+
+binary-arch: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+# Copy the packages's files.
+ find . -maxdepth 1 -mindepth 1 -not -name debian -print0 | \
+ xargs -0 -r -i cp -a {} debian/$(PACKAGE)
+
+#
+# If you need to move files around in debian/$(PACKAGE) or do some
+# binary patching, do it here
+#
+
+# Move RPM contents to a proper debian/blackdown directory
+ mv debian/$(PACKAGE)/usr/java/jdk1.5.0 $(JAVA_HOME)
+ rmdir debian/$(PACKAGE)/usr/java
+
+# Move man pages to /usr/share/man
+ mv $(JAVA_HOME)/man/* $(MAN_DIR)
+ rmdir $(JAVA_HOME)/man
+
+# Move Japanese man pages further
+ rm $(MAN_DIR)/ja
+ mv $(MAN_DIR)/ja_JP.eucJP $(MAN_DIR)/ja
+ for i in `find $(MAN_DIR) -type f` ; \
+ do mv $$i `echo $$i | sed 's/\.\([^.]*\)$$/.j2sdk-1_5_0.\1/'` ; \
+ done
+
+# Unpack tripple compressed jars that showed up in 1.4.2
+ if [ -x $(JAVA_HOME)/bin/unpack200 ] ; then \
+ for i in `find $(JAVA_HOME) -name \*.pack` ; do \
+ $(JAVA_HOME)/bin/unpack200 \
+ $$i `dirname $$i`/`basename $$i .pack`.jar ; \
+ done ; \
+ fi
+
+# Fix ControlPanel shell script incompatibilities
+ if [ -f $(JAVA_HOME)/bin/ControlPanel ] ; then \
+ sed "s/\/usr\/bin\/ls/\/bin\/ls/g; \
+ s/expr \(.*\) : '^/expr \1 : '/;" \
+ $(JAVA_HOME)/bin/ControlPanel \
+ > $(JAVA_HOME)/bin/ControlPanel.tmp ; \
+ mv $(JAVA_HOME)/bin/ControlPanel.tmp \
+ $(JAVA_HOME)/bin/ControlPanel ; \
+ chmod 755 $(JAVA_HOME)/bin/ControlPanel ; \
+ fi
+ if [ -f $(JAVA_HOME)/jre/bin/ControlPanel ] ; then \
+ sed "s/\/usr\/bin\/ls/\/bin\/ls/g; \
+ s/expr \(.*\) : '^/expr \1 : '/;" \
+ $(JAVA_HOME)/jre/bin/ControlPanel \
+ > $(JAVA_HOME)/jre/bin/ControlPanel.tmp ; \
+ mv $(JAVA_HOME)/jre/bin/ControlPanel.tmp \
+ $(JAVA_HOME)/jre/bin/ControlPanel ; \
+ chmod 755 $(JAVA_HOME)/jre/bin/ControlPanel ; \
+ fi
+
+# Include optional documentation
+ if [ -f ../jdk-1_5_0-doc.zip ] ; then \
+ unzip -q -d debian/$(PACKAGE)/usr/share/doc \
+ ../jdk-1_5_0-doc.zip ; \
+ mv debian/$(PACKAGE)/usr/share/doc/docs \
+ debian/$(PACKAGE)/usr/share/doc/$(PACKAGE) ; \
+ else \
+ echo jdk-1_5_0-doc.zip not found, skipping documentation ; \
+ fi
+
+ dh_installdocs
+ dh_installchangelogs
+
+# This has been known to break on some wacky binaries.
+# dh_strip
+ dh_compress
+ dh_fixperms
+ dh_makeshlibs
+ dh_installdeb
+ -dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary
--- jdk-1.5.0.orig/debian/changelog
+++ jdk-1.5.0/debian/changelog
@@ -0,0 +1,92 @@
+jdk (1.5.0-1) unstable; urgency=low
+
+ * New upstream release
+
+ -- Gerald Turner <gturner@unzane.com> Fri, 01 Oct 2004 14:19:16 -0700
+
+j2sdk (2:1.4.2_05-1) experimental; urgency=low
+
+ * New upstream release
+
+ -- Gerald Turner <gturner@unzane.com> Fri, 01 Oct 2004 10:01:53 -0700
+
+j2sdk (2:1.4.2_03-1) experimental; urgency=low
+
+ * New upstream release
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Mon, 19 Jan 2004 12:33:32 -0800
+
+j2sdk (2:1.4.2-1) experimental; urgency=low
+
+ * Fix ControlPanel shell script incompatibilities. Closes: #200731
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Thu, 10 Jul 2003 09:59:23 -0700
+
+j2sdk (1:1.4.2-1) experimental; urgency=low
+
+ * alien echoes the wrong filename, "j2sdk_1.4.2-1_i386.deb generated",
+ and fails to install when using the -i option. Reverted package name
+ j2sdk1.4 to j2sdk. Changed package version to 1 and use an epoch.
+ Closes: #199992
+ * The intent of the j2sdk1.4 package rename was so that that multiple
+ j2sdk versions could be installed simultaneously (i.e. j2sdk1.3).
+ This is no longer possible using this patch.
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Sun, 6 Jul 2003 13:39:31 -0700
+
+j2sdk (1.4.2-6) experimental; urgency=low
+
+ * New upstream release
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Mon, 30 Jun 2003 15:46:47 -0700
+
+j2sdk (1.4.1_02-5) experimental; urgency=low
+
+ * New upstream release
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Fri, 14 Mar 2003 14:43:45 -0800
+
+j2sdk (1.4.1_01-4) experimental; urgency=low
+
+ * New upstream release
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Tue, 14 Jan 2003 17:03:09 -0800
+
+j2sdk (1.4.1-3) experimental; urgency=low
+
+ * New upstream release
+ * Detection and installation of j2sdk-1_4_1-doc.zip (must be downloaded
+ and copied to the same directory where alien is executed)
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Wed, 2 Oct 2002 16:41:24 -0700
+
+j2sdk (1.4.1-2) experimental; urgency=low
+
+ * Added java-common Depends
+ * Added java-virtual-machine, java2-runtime, java-compiler, and
+ java2-compiler Provides
+ * Added netscape and mozilla Suggests
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Thu, 23 Aug 2002 09:07:09 -0700
+
+j2sdk (1.4.1-1) experimental; urgency=low
+
+ * New upstream release
+ * Detection and installation of j2sdk-1_4_1-rc-doc.zip (must be downloaded
+ and copied to the same directory where alien is executed)
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Thu, 22 Aug 2002 16:22:33 -0700
+
+j2sdk (1.4.0_01-1) experimental; urgency=low
+
+ * New upstream release
+ * Detection and installation of j2sdk-1_4_0-doc.zip (must be downloaded
+ and copied to the same directory where alien is executed)
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Thu, 22 Aug 2002 15:44:54 -0700
+
+j2sdk (1.4.0-1) experimental; urgency=low
+
+ * Converted from .rpm format to .deb
+
+ -- Gerald Turner <gturner@newedgenetworks.com> Wed, 22 May 2002 12:46:34 -0700
--- jdk-1.5.0.orig/debian/postinst
+++ jdk-1.5.0/debian/postinst
@@ -0,0 +1,111 @@
+#!/bin/sh
+
+case "`uname -m`" in
+ i[3-7]86 | ia32 | ia64)
+ ARCH=i386
+ ;;
+ sparc*)
+ ARCH=sparc
+ ;;
+ *)
+ ARCH="`uname -m`"
+ ;;
+esac
+
+if [ $1 = configure ]
+then
+ for i in appletviewer ControlPanel extcheck HtmlConverter idlj jar \
+ jarsigner java javac javadoc javah javap java-rmi.cgi javaws \
+ jconsole jdb jinfo jmap jps jsadebugd jstack jstat jstatd \
+ keytool kinit klist ktab native2ascii orbd pack200 policytool \
+ rmic rmid rmiregistry serialver servertool tnameserv unpack200
+ do
+ if [ -e /usr/share/man/man1/$i.j2sdk-1_5_0.1.gz ]
+ then
+ if [ -e /usr/share/man/ja/man1/$i.j2sdk-1_5_0.1.gz ]
+ then
+ update-alternatives \
+ --install \
+ /usr/bin/$i \
+ $i \
+ /usr/lib/j2sdk-1.5.0/bin/$i \
+ 1500 \
+ --slave \
+ /usr/share/man/man1/$i.1.gz \
+ $i.1.gz \
+ /usr/share/man/man1/$i.j2sdk-1_5_0.1.gz \
+ --slave \
+ /usr/share/man/ja/man1/$i.1.gz \
+ $i.ja.1.gz \
+ /usr/share/man/ja/man1/$i.j2sdk-1_5_0.1.gz
+ else
+ update-alternatives \
+ --install \
+ /usr/bin/$i \
+ $i \
+ /usr/lib/j2sdk-1.5.0/bin/$i \
+ 1500 \
+ --slave \
+ /usr/share/man/man1/$i.1.gz \
+ $i.1.gz \
+ /usr/share/man/man1/$i.j2sdk-1_5_0.1.gz
+ fi
+ else
+ update-alternatives \
+ --install \
+ /usr/bin/$i \
+ $i \
+ /usr/lib/j2sdk-1.5.0/bin/$i \
+ 1500
+ fi
+ done
+
+ for i in apt
+ do
+ if [ -e /usr/share/man/man1/$i.j2sdk-1_5_0.1.gz ]
+ then
+ if [ -e /usr/share/man/ja/man1/$i.j2sdk-1_5_0.1.gz ]
+ then
+ update-alternatives \
+ --install \
+ /usr/bin/j$i \
+ j$i \
+ /usr/lib/j2sdk-1.5.0/bin/$i \
+ 1500 \
+ --slave \
+ /usr/share/man/man1/j$i.1.gz \
+ j$i.1.gz \
+ /usr/share/man/man1/$i.j2sdk-1_5_0.1.gz \
+ --slave \
+ /usr/share/man/ja/man1/j$i.1.gz \
+ j$i.ja.1.gz \
+ /usr/share/man/ja/man1/$i.j2sdk-1_5_0.1.gz
+ else
+ update-alternatives \
+ --install \
+ /usr/bin/j$i \
+ j$i \
+ /usr/lib/j2sdk-1.5.0/bin/$i \
+ 1500 \
+ --slave \
+ /usr/share/man/man1/j$i.1.gz \
+ j$i.1.gz \
+ /usr/share/man/man1/$i.j2sdk-1_5_0.1.gz
+ fi
+ else
+ update-alternatives \
+ --install \
+ /usr/bin/j$i \
+ j$i \
+ /usr/lib/j2sdk-1.5.0/bin/$i \
+ 1500
+ fi
+ done
+
+ update-alternatives \
+ --install \
+ /usr/lib/mozilla/plugins/javaplugin_oji.so \
+ javaplugin_oji.so \
+ /usr/lib/j2sdk-1.5.0/jre/plugin/${ARCH}/ns7/libjavaplugin_oji.so \
+ 1500
+fi
--- jdk-1.5.0.orig/debian/copyright
+++ jdk-1.5.0/debian/copyright
@@ -0,0 +1,25 @@
+This package was debianized by the alien program by converting
+a binary .rpm package on Fri, 1 Oct 2004 10:18:23 -0700
+
+Copyright: Sun Microsystems Binary Code License (BCL)
+
+Information from the binary package:
+Name : jdk Relocations: /usr/java
+Version : 1.5.0 Vendor: Sun Microsystems, Inc.
+Release : fcs Build Date: Wed 15 Sep 2004 06:18:37 AM PDT
+Install date: (not installed) Build Host: tiger-linux
+Group : Development/Tools Source RPM: jdk-1.5.0-fcs.src.rpm
+Size : 80132114 License: Sun Microsystems Binary Code License (BCL)
+Packager : Java Software <j2se-comments@java.sun.com>
+URL : http://java.sun.com/
+Summary : Java(TM) 2 Platform Standard Edition Development Kit
+Description :
+The Java 2 Platform Standard Edition Development Kit (JDK) includes both the
+runtime environment (Java virtual machine, the Java platform classes and
+supporting files) and development tools (compilers, debuggers, tool libraries
+and other tools).
+
+The JDK is a development environment for building applications, applets and
+components that can be deployed with the Java 2 Platform Standard Edition
+Runtime Environment.
+

View File

@@ -1,145 +0,0 @@
--- lgtoclnt-7.1.2.orig/debian/copyright
+++ lgtoclnt-7.1.2/debian/copyright
@@ -0,0 +1,20 @@
+This package was debianized by the alien program by converting
+a binary .rpm package on Wed, 13 Oct 2004 10:49:10 -0400
+
+Copyright: commercial
+
+Information from the binary package:
+Name : lgtoclnt Relocations: /usr
+Version : 7.1.2 Vendor: LEGATO Software, a Division of EMC
+Release : 1 Build Date: Fri Jun 4 06:13:15 2004
+Install date: (not installed) Build Host: azzurro.legato.com
+Group : Utilities Source RPM: lgtoclnt-7.1.2-1.src.rpm
+Size : 34958741 License: commercial
+Packager : Support support@legato.com
+URL : http://www.legato.com
+Summary : LEGATO NetWorker Client for Linux Platforms
+Description :
+LEGATO's NetWorker client is a set of programs that manage automated
+backups to and directed retrievals from a LEGATO NetWorker server across
+the network.
+
--- lgtoclnt-7.1.2.orig/debian/dirs
+++ lgtoclnt-7.1.2/debian/dirs
@@ -0,0 +1 @@
+etc
--- lgtoclnt-7.1.2.orig/debian/lgtoclnt.networker.init
+++ lgtoclnt-7.1.2/debian/lgtoclnt.networker.init
@@ -0,0 +1,27 @@
+#!/bin/sh
+case $1 in
+'start')
+ (echo 'starting NetWorker daemons:') > /dev/console
+ if [ -f /usr/sbin/nsrexecd ]; then
+ (/usr/sbin/nsrexecd) > /dev/console 2>&1
+ (echo ' nsrexecd') > /dev/console
+ (echo '') > /dev/console
+ fi
+ if [ -f /usr/sbin/nsrd ]; then
+ (/usr/sbin/nsrd) > /dev/console 2>&1
+ (echo ' nsrd') > /dev/console
+ (echo '') > /dev/console
+ fi
+;;
+'stop')
+ (echo 'stopping NetWorker daemons:') > /dev/console
+ if [ -f /usr/sbin/nsr_shutdown ]; then
+ (/usr/sbin/nsr_shutdown -a -q&) > /dev/console 2>&1
+ (echo ' nsr_shutdown -a -q') > /dev/console
+ (echo '') > /dev/console
+ fi
+;;
+*)
+ echo "usage: `basename $0` {start|stop}"
+;;
+esac
--- lgtoclnt-7.1.2.orig/debian/control
+++ lgtoclnt-7.1.2/debian/control
@@ -0,0 +1,14 @@
+Source: lgtoclnt
+Section: non-free/admin
+Priority: extra
+Maintainer: Clint Adams <schizo@debian.org>
+
+Package: lgtoclnt
+Architecture: i386
+Depends: ${shlibs:Depends}
+Description: LEGATO NetWorker Client for Linux Platforms
+ LEGATO's NetWorker client is a set of programs that manage automated
+ backups to and directed retrievals from a LEGATO NetWorker server across
+ the network.
+ .
+ (Converted from a rpm package by alien version 8.47.)
--- lgtoclnt-7.1.2.orig/debian/changelog
+++ lgtoclnt-7.1.2/debian/changelog
@@ -0,0 +1,10 @@
+lgtoclnt (7.1.2-2) experimental; urgency=low
+
+ * Converted from .rpm format to .deb
+ by alien version 8.47
+ * Moved app-defaults to /etc/X11.
+ * Re-added init script.
+
+ -- Clint Adams <schizo@debian.org> Wed, 13 Oct 2004 10:49:10 -0400
+
+Initial deployment.
--- lgtoclnt-7.1.2.orig/debian/rules
+++ lgtoclnt-7.1.2/debian/rules
@@ -0,0 +1,55 @@
+#!/usr/bin/make -f
+# debian/rules for alien
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# Use v3 compatability mode, so ldconfig gets added to maint scripts.
+export DH_COMPAT=4
+
+PACKAGE=$(shell dh_listpackages)
+
+build:
+ dh_testdir
+
+clean:
+ dh_testdir
+ dh_testroot
+ dh_clean -d
+
+binary-indep: build
+
+binary-arch: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k -d
+ dh_installdirs
+
+ dh_installdocs
+ dh_installchangelogs
+
+# Copy the packages's files.
+ find . -maxdepth 1 -mindepth 1 -not -name debian -print0 | \
+ xargs -0 -r -i cp -a {} debian/$(PACKAGE)
+
+ mv debian/$(PACKAGE)/usr/lib/X11 debian/$(PACKAGE)/etc
+
+#
+# If you need to move files around in debian/$(PACKAGE) or do some
+# binary patching, do it here
+#
+
+ dh_installinit --name=networker --update-rcd-params="defaults 95 5"
+# This has been known to break on some wacky binaries.
+# dh_strip
+ dh_compress
+# dh_fixperms
+ dh_makeshlibs
+ dh_installdeb
+ -dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary

View File

@@ -1,381 +0,0 @@
--- motif-devel-2.1.10.orig/debian/changelog-template
+++ motif-devel-2.1.10/debian/changelog-template
@@ -0,0 +1,31 @@
+#PACKAGE# (#VERS#-7) unstable; urgency=low
+
+ * Disabled dh_undocumented.
+ * Removed dh_suidregister.
+
+ -- Andreas Voegele <andreas.voegele@gmx.de> Tue, 16 Jan 2001 11:58:56 +0100
+
+#PACKAGE# (#VERS#-6) unstable; urgency=low
+
+ * Depends on xlibs-dev.
+
+ -- Andreas Voegele <andreas.voegele@gmx.de> Sat, 9 Dec 2000 12:27:50 +0100
+
+#PACKAGE# (#VERS#-5) unstable; urgency=low
+
+ * Made mxterm use libncurses.so.5 instead of libtermcap.so.2.
+
+ -- Andreas Voegele <andreas.voegele@gmx.de> Mon, 3 Jan 2000 10:04:26 +0100
+
+#PACKAGE# (#VERS#-4) unstable; urgency=low
+
+ * Converted from RPM binary format to Debian.
+ * Added *.so symlinks.
+ * Added mxmkmf.
+ * Enabled dh_undocumented and dh_fixperms.
+
+ -- Andreas Voegele <andreas.voegele@gmx.de> Tue, 16 Nov 1999 19:31:18 +0100
+
+Local variables:
+mode: debian-changelog
+End:
--- motif-devel-2.1.10.orig/debian/control
+++ motif-devel-2.1.10/debian/control
@@ -0,0 +1,14 @@
+Source: motif-devel
+Section: non-free/x11
+Priority: extra
+Build-Depends: debhelper, motif
+Maintainer: Andreas Voegele <andreas.voegele@gmx.de>
+Standards-Version: 3.1.1
+
+Package: motif-devel
+Architecture: any
+Depends: motif (= ${Source-Version}), libc6-dev, xlibs-dev
+Conflicts: lesstif-bin, lesstif-dev, lesstif-dbg, lesstif1, lesstifg, openmotif, openmotif-devel
+Description: Development files for the Motif toolkit
+ This is the Motif development environment. It includes the static
+ libraries and header files necessary to build Motif based applications.
--- motif-devel-2.1.10.orig/debian/copyright
+++ motif-devel-2.1.10/debian/copyright
@@ -0,0 +1,150 @@
+This is the prepackaged version of Metro Link Motif. It was debianized
+by the alien program by converting a binary RPM package.
+
+Metro Link's web site can be found at http://www.metrolink.com/
+
+METRO LINK WARRANTY AND LICENSE AGREEMENT
+
+READ THESE LICENSE TERMS BEFORE OPENING THE SOFTWARE PACKAGE.
+OPENING THE SOFTWARE PACKAGE INDICATES YOUR ACCEPTANCE OF THIS LICENSE.
+IF YOU DO NOT AGREE TO THESE LICENSE TERMS, RETURN THE SOFTWARE PACKAGE
+UNOPENED (ALONG WITH ALL ASSOCIATED WRITTEN PRODUCT MATERIALS) AND
+WITHIN THE WARRANTY PERIOD TO THE DEALER FROM WHOM YOU OBTAINED IT
+FOR A FULL REFUND.
+
+This License is an agreement between you and METRO LINK INCORPORATED
+(hereafter "ML").
+
+1. LICENSE GRANT
+
+Subject to the terms set forth in this License, you may use the
+enclosed computer product ("SOFTWARE"), including all associated
+software documentation furnished with this package, solely for your
+internal business purposes in the country in which the Software was
+furnished to you and on a single computer system (i.e. single or
+multiple CPU system in the same physical cabinet).
+
+NFS mounting of programs or clients is not permitted.
+
+
+2. COPYRIGHT AND TITLE.
+
+The Software and its copyrights are owned by ML or its suppliers.
+The Software is protected by United States copyright laws and
+international treaty provisions. Therefore, you must treat the
+Software like any other copyrighted material (e.g., a book or musical
+recording) except that you may either (a) make one (1) copy of the
+Software solely for backup purposes or (b) transfer the Software to
+a single hard disk provided you keep the original solely for backup
+or archival purposes. You must reproduce and include the copyright
+notice on the backup copy. You may not copy the written materials.
+
+
+3. RESTRICTED USE.
+
+You may not rent or lease the Software, and you may not reverse engineer,
+decompile, or disassemble the Software. Furthermore, certain components
+of the Software are licensed for use exclusively with hardware supplied
+by specific manufacturers, and you may not modify the Software so that
+it will operate with hardware supplied by alternate manufacturers.
+
+
+4. ADAPTATIONS
+
+Any part of the Software that you merge with other software is still
+property of ML. In the event this License is terminated, you may not
+use part of the Software even if it has been merged with other software.
+You agree to take reasonable steps to protect ML's Software from theft
+or use contrary to this License.
+
+
+5. LIMITED 30-DAY WARRANTIES.
+
+ML warrants to you (the original Licensee) for thirty (30) days from
+the date of delivery to you of the Software, as evidenced by a copy
+of your license purchase receipt ( the Warranty Period"), that the
+Software shall be in operable condition as described in the documentation
+provided with the product code, and that the media upon which the
+Software is furnished to you will be free from defects in material and
+workmanship under normal use. FOR WARRANTY ASSISTANCE, YOU MAY EITHER
+RETURN THE SOFTWARE TO THE DEALER FROM WHICH YOU PURCHASED THE LICENSE,
+OR CONTACT THAT DEALER (WHOSE NAME AND ADDRESS IS SET FORTH ON THE BOX
+CONTAINING THIS WARRANTY), OR CONTACT ML AT THE ADDRESS STATED ON THIS
+LICENSE, ATTN: CUSTOMER SERVICE DEPARTMENT. This warranty allocates
+risks of product failure between you and ML.
+
+
+6. NO OTHER WARRANTIES.
+
+The agents, employees, distributors, and dealers of ML are not
+authorized to make modifications to this warranty, nor are additional
+warranties binding on ML. Accordingly, additional statements such as
+dealer advertising or presentations, whether oral or written, do not
+constitute warranties by ML and should not be relied upon as a limited
+warranty of ML.
+
+ML AND ITS SUPPLIERS MAKE NO OTHER REPRESENTATIONS, CONDITIONS, OR
+WARRANTIES, EXPRESSED OR IMPLIED. ANY IMPLIED WARRANTY OR CONDITION OF
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE IS LIMITED IN
+DURATION TO THE WARRANTY PERIOD. SOME STATES DO NOT ALLOW LIMITATIONS
+ON HOW LONG AN IMPLIED WARRANTY LASTS, SO THE ABOVE LIMITATIONS MAY NOT
+APPLY TO YOU. THIS WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS AND YOU MAY
+ALSO HAVE OTHER LEGAL RIGHTS WHICH VARY FROM STATE TO STATE.
+
+
+7. CUSTOMER REMEDIES
+
+YOUR SOLE AND EXCLUSIVE REMEDY AND ML'S SOLE LIABILITY HEREUNDER
+SHALL BE, UPON YOUR RETURN OF THE SOFTWARE TO ML WITH THE RECEIPT
+WITHIN THE WARRANTY PERIOD, AT ML'S OPTION, REPLACEMENT OR REPAIR
+OF SOFTWARE THAT DOES NOT MEET ML'S LIMITED WARRANTY OR A REFUND OF
+THE SOFTWARE'S PURCHASE PRICE. ML'S SUPPLIERS SHALL NOT BE HELD TO
+ANY LIABILITY FOR ANY DAMAGES SUFFERED OR INCURRED BY YOU. IN NO EVENT
+SHALL ML OR ITS SUPPLIERS BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY
+INCIDENTAL, COLLATERAL, SPECIAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
+WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, LOSS OF CUSTOMERS,
+LOSS OF GOOD WILL, WORK STOPPAGE, DATA LOSS, COMPUTER FAILURE OR
+MALFUNCTION, CLAIMS BY ANY PARTY OTHER THAN YOU, OR ANY OR ALL OTHER
+SIMILAR DAMAGES OR LOSS EVEN IF ML, ITS SUPPLIERS, OR ITS AGENT HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT
+ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL
+DAMAGES, SO THE ABOVE LIMITATIONS OR EXCLUSION MAY NOT APPLY TO YOU.
+
+ML shall have no liability or responsibility for Software altered,
+modified, or converted by you or a third party, damages resulting
+from accident, abuse, or misapplication, or for problems due to the
+malfunction of your equipment or software not supplied by ML.
+
+
+8. TERMINATION
+
+This License is in effect until terminated and terminates without
+notice from ML if you fail to comply with any of its provisions.
+Upon termination you shall either destroy the Software and all copies
+or portions thereof or return the Software and all copies as portions
+thereof to ML.
+
+
+9. GENERAL
+
+This License is governed by the laws of the State of Florida. This
+License represents the entire statement of the understandings and
+agreements among the parties.
+
+
+10. U.S. GOVERNMENT RESTRICTED RIGHTS
+
+This Software and documentation is provided with RESTRICTED RIGHTS.
+Use, duplication, or disclosure by the Government is subject to
+restrictions as set forth in subparagraph (c)(1)(ii) of the Rights
+in Technical Data and Computer FAR 52.227-14 (Alternate III) or the
+Software clause at DFAR 252.227-7013. Contractor/manufacturer is
+METRO LINK INCORPORATED, 4711 North Powerline Road, Fort Lauderdale,
+FL 33309.
+
+Metro Link Motif Complete!, Metro Link Motif, Metro-X, Metro
+Extreme 3D, Metro OpenGL, Metro-Xv, and Metro-XIE are trademarks
+of Metro Link Incorporated.
+
+XRT, XRT/graph, XRT/field, XRT/gear, XRT/3d, and XRT/table are
+trademarks of KL Group Incorporated.
--- motif-devel-2.1.10.orig/debian/rules
+++ motif-devel-2.1.10/debian/rules
@@ -0,0 +1,87 @@
+#!/usr/bin/make -f
+# debian/rules that uses debhelper and alien
+# GNU copyright 1997 by Joey Hess.
+
+SHELL = /bin/sh
+
+package := $(shell basename `pwd` | sed 's/-[0-9].*//')
+version := $(shell basename `pwd` | tr -cd '[0-9.]')
+major := $(word 1,$(subst ., ,$(version)))
+minor := $(word 2,$(subst ., ,$(version)))
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# This is the debhelper compatability version to use.
+export DH_COMPAT=1
+
+motif-version:
+ sed -e 's/#PACKAGE#/$(package)/' -e 's/#VERS#/$(version)/' debian/changelog-template >debian/changelog
+
+build: motif-version
+ dh_testdir
+
+clean: motif-version
+ dh_testdir
+ dh_testroot
+ dh_clean
+
+# Build architecture-independent files here.
+binary-indep: build
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build
+# dh_testversion
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+ tar -cf - --exclude=debian --exclude='./usr/doc' . | tar -xpf - -C debian/tmp
+#
+# If you need to move files around in debian/tmp or do some
+# binary patching ... Insert it here
+#
+ -ln -fs libMrm.so.$(major).$(minor) debian/tmp/usr/X11R6/lib/libMrm.so
+ -ln -fs libUil.so.$(major).$(minor) debian/tmp/usr/X11R6/lib/libUil.so
+ -ln -fs libXm.so.$(major).$(minor) debian/tmp/usr/X11R6/lib/libXm.so
+# Move /usr/X11R6/lib/X11/app-defaults to /etc/X11/app-defaults.
+ @if [ -d debian/tmp/usr/X11R6/lib/X11/app-defaults ]; then \
+ echo "Moving /usr/X11R6/lib/X11/app-defaults to /etc/X11/app-defaults"; \
+ [ -d debian/tmp/etc/X11 ] || mkdir -p debian/tmp/etc/X11; \
+ mv debian/tmp/usr/X11R6/lib/X11/app-defaults debian/tmp/etc/X11; \
+ fi
+# Install mxmkmf.
+ @if [ ! -e debian/tmp/usr/X11R6/bin/mxmkmf ]; then \
+ echo "Installing mxmkmf"; \
+ install -m 0755 debian/mxmkmf debian/tmp/usr/X11R6/bin/mxmkmf; \
+ fi
+# Copy documentation.
+ @if [ -d usr/doc ]; then \
+ echo "Copying documentation"; \
+ mkdir -p debian/tmp/usr/share/doc/$(package); \
+ cp -a usr/doc/*/* debian/tmp/usr/share/doc/$(package); \
+ fi
+ dh_installdocs
+ dh_installexamples
+ dh_installmenu
+# dh_installinit
+# dh_installcron
+# dh_installmanpages
+# dh_undocumented
+ dh_installchangelogs
+ dh_strip
+ dh_compress
+ dh_fixperms
+ dh_installdeb
+ -dh_shlibdeps
+ dh_gencontrol
+# dh_makeshlibs
+ dh_md5sums
+ dh_builddeb
+
+source diff:
+ @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary motif-version
--- motif-devel-2.1.10.orig/debian/mxmkmf
+++ motif-devel-2.1.10/debian/mxmkmf
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+# $XFree86$
+#
+# make a Makefile from an Imakefile from inside or outside the sources
+#
+# $XConsortium: xmkmf.cpp /main/22 1996/09/28 16:17:05 rws $
+
+usage="usage: $0 [-a] [top_of_sources_pathname [current_directory]]"
+
+configdirspec="-I/usr/X11R6/lib/X11/config"
+topdir=
+curdir=.
+do_all=
+imake_defines="-DProjectRulesFile=<Motif.rules.metro> -DProjectTmplFile=<Motif.tmpl.metro>"
+
+while [ $# -gt 0 ]
+do
+ case "$1" in
+ -D*)
+ imake_defines="$imake_defines $1"
+ shift
+ ;;
+ -a)
+ do_all="yes"
+ shift
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+case $# in
+ 0) ;;
+ 1) topdir=$1 ;;
+ 2) topdir=$1 curdir=$2 ;;
+ *) echo "$usage" 1>&2; exit 1 ;;
+esac
+
+case "$topdir" in
+ -*) echo "$usage" 1>&2; exit 1 ;;
+esac
+
+if [ -f Makefile ]; then
+ echo mv -f Makefile Makefile.bak
+ mv -f Makefile Makefile.bak
+fi
+
+if [ "$topdir" = "" ]; then
+ args="-DUseInstalled "$configdirspec
+else
+ args="-I$topdir/config/cf -DTOPDIR=$topdir -DCURDIR=$curdir"
+fi
+
+echo imake $imake_defines $args
+case "$do_all" in
+yes)
+ imake $imake_defines $args &&
+ echo "make Makefiles" &&
+ make Makefiles &&
+ echo "make includes" &&
+ make includes &&
+ echo "make depend" &&
+ make depend
+ ;;
+*)
+ imake $imake_defines $args
+ ;;
+esac
--- motif-devel-2.1.10.orig/debian/dirs
+++ motif-devel-2.1.10/debian/dirs
@@ -0,0 +1,2 @@
+usr/X11R6/bin
+usr/X11R6/lib
--- motif-devel-2.1.10.orig/debian/README.Debian
+++ motif-devel-2.1.10/debian/README.Debian
@@ -0,0 +1,6 @@
+Motif for Debian
+----------------
+
+Please use mxmkmf instead of xmkmf to build Motif programs.
+
+ -- Andreas Voegele <andreas.voegele@gmx.de> Tue, 16 Nov 1999 19:31:18 +0100

View File

@@ -1,508 +0,0 @@
--- motif-2.1.10.orig/debian/control
+++ motif-2.1.10/debian/control
@@ -0,0 +1,18 @@
+Source: motif
+Section: non-free/x11
+Priority: extra
+Build-Depends: debhelper
+Maintainer: Andreas Voegele <andreas.voegele@gmx.de>
+Standards-Version: 3.1.1
+
+Package: motif
+Architecture: any
+Depends: libc6, xlibs
+Conflicts: lesstif-bin, lesstif-dev, lesstif-dbg, lesstif1, lesstifg, openmotif, openmotif-devel, suidmanager (<< 0.50)
+Provides: x-window-manager
+Suggests: menu
+Description: Runtime libraries and executables for the Motif toolkit
+ This package contains:
+ - The Motif shared libraries, needed to run applications which are
+ `dynamically linked' with Motif.
+ - The popular Motif Window Manager, `mwm'.
--- motif-2.1.10.orig/debian/copyright
+++ motif-2.1.10/debian/copyright
@@ -0,0 +1,150 @@
+This is the prepackaged version of Metro Link Motif. It was debianized
+by the Alien program by converting a binary RPM package.
+
+Metro Link's web site can be found at http://www.metrolink.com/
+
+METRO LINK WARRANTY AND LICENSE AGREEMENT
+
+READ THESE LICENSE TERMS BEFORE OPENING THE SOFTWARE PACKAGE.
+OPENING THE SOFTWARE PACKAGE INDICATES YOUR ACCEPTANCE OF THIS LICENSE.
+IF YOU DO NOT AGREE TO THESE LICENSE TERMS, RETURN THE SOFTWARE PACKAGE
+UNOPENED (ALONG WITH ALL ASSOCIATED WRITTEN PRODUCT MATERIALS) AND
+WITHIN THE WARRANTY PERIOD TO THE DEALER FROM WHOM YOU OBTAINED IT
+FOR A FULL REFUND.
+
+This License is an agreement between you and METRO LINK INCORPORATED
+(hereafter "ML").
+
+1. LICENSE GRANT
+
+Subject to the terms set forth in this License, you may use the
+enclosed computer product ("SOFTWARE"), including all associated
+software documentation furnished with this package, solely for your
+internal business purposes in the country in which the Software was
+furnished to you and on a single computer system (i.e. single or
+multiple CPU system in the same physical cabinet).
+
+NFS mounting of programs or clients is not permitted.
+
+
+2. COPYRIGHT AND TITLE.
+
+The Software and its copyrights are owned by ML or its suppliers.
+The Software is protected by United States copyright laws and
+international treaty provisions. Therefore, you must treat the
+Software like any other copyrighted material (e.g., a book or musical
+recording) except that you may either (a) make one (1) copy of the
+Software solely for backup purposes or (b) transfer the Software to
+a single hard disk provided you keep the original solely for backup
+or archival purposes. You must reproduce and include the copyright
+notice on the backup copy. You may not copy the written materials.
+
+
+3. RESTRICTED USE.
+
+You may not rent or lease the Software, and you may not reverse engineer,
+decompile, or disassemble the Software. Furthermore, certain components
+of the Software are licensed for use exclusively with hardware supplied
+by specific manufacturers, and you may not modify the Software so that
+it will operate with hardware supplied by alternate manufacturers.
+
+
+4. ADAPTATIONS
+
+Any part of the Software that you merge with other software is still
+property of ML. In the event this License is terminated, you may not
+use part of the Software even if it has been merged with other software.
+You agree to take reasonable steps to protect ML's Software from theft
+or use contrary to this License.
+
+
+5. LIMITED 30-DAY WARRANTIES.
+
+ML warrants to you (the original Licensee) for thirty (30) days from
+the date of delivery to you of the Software, as evidenced by a copy
+of your license purchase receipt ( the Warranty Period"), that the
+Software shall be in operable condition as described in the documentation
+provided with the product code, and that the media upon which the
+Software is furnished to you will be free from defects in material and
+workmanship under normal use. FOR WARRANTY ASSISTANCE, YOU MAY EITHER
+RETURN THE SOFTWARE TO THE DEALER FROM WHICH YOU PURCHASED THE LICENSE,
+OR CONTACT THAT DEALER (WHOSE NAME AND ADDRESS IS SET FORTH ON THE BOX
+CONTAINING THIS WARRANTY), OR CONTACT ML AT THE ADDRESS STATED ON THIS
+LICENSE, ATTN: CUSTOMER SERVICE DEPARTMENT. This warranty allocates
+risks of product failure between you and ML.
+
+
+6. NO OTHER WARRANTIES.
+
+The agents, employees, distributors, and dealers of ML are not
+authorized to make modifications to this warranty, nor are additional
+warranties binding on ML. Accordingly, additional statements such as
+dealer advertising or presentations, whether oral or written, do not
+constitute warranties by ML and should not be relied upon as a limited
+warranty of ML.
+
+ML AND ITS SUPPLIERS MAKE NO OTHER REPRESENTATIONS, CONDITIONS, OR
+WARRANTIES, EXPRESSED OR IMPLIED. ANY IMPLIED WARRANTY OR CONDITION OF
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE IS LIMITED IN
+DURATION TO THE WARRANTY PERIOD. SOME STATES DO NOT ALLOW LIMITATIONS
+ON HOW LONG AN IMPLIED WARRANTY LASTS, SO THE ABOVE LIMITATIONS MAY NOT
+APPLY TO YOU. THIS WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS AND YOU MAY
+ALSO HAVE OTHER LEGAL RIGHTS WHICH VARY FROM STATE TO STATE.
+
+
+7. CUSTOMER REMEDIES
+
+YOUR SOLE AND EXCLUSIVE REMEDY AND ML'S SOLE LIABILITY HEREUNDER
+SHALL BE, UPON YOUR RETURN OF THE SOFTWARE TO ML WITH THE RECEIPT
+WITHIN THE WARRANTY PERIOD, AT ML'S OPTION, REPLACEMENT OR REPAIR
+OF SOFTWARE THAT DOES NOT MEET ML'S LIMITED WARRANTY OR A REFUND OF
+THE SOFTWARE'S PURCHASE PRICE. ML'S SUPPLIERS SHALL NOT BE HELD TO
+ANY LIABILITY FOR ANY DAMAGES SUFFERED OR INCURRED BY YOU. IN NO EVENT
+SHALL ML OR ITS SUPPLIERS BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY
+INCIDENTAL, COLLATERAL, SPECIAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
+WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, LOSS OF CUSTOMERS,
+LOSS OF GOOD WILL, WORK STOPPAGE, DATA LOSS, COMPUTER FAILURE OR
+MALFUNCTION, CLAIMS BY ANY PARTY OTHER THAN YOU, OR ANY OR ALL OTHER
+SIMILAR DAMAGES OR LOSS EVEN IF ML, ITS SUPPLIERS, OR ITS AGENT HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT
+ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL
+DAMAGES, SO THE ABOVE LIMITATIONS OR EXCLUSION MAY NOT APPLY TO YOU.
+
+ML shall have no liability or responsibility for Software altered,
+modified, or converted by you or a third party, damages resulting
+from accident, abuse, or misapplication, or for problems due to the
+malfunction of your equipment or software not supplied by ML.
+
+
+8. TERMINATION
+
+This License is in effect until terminated and terminates without
+notice from ML if you fail to comply with any of its provisions.
+Upon termination you shall either destroy the Software and all copies
+or portions thereof or return the Software and all copies as portions
+thereof to ML.
+
+
+9. GENERAL
+
+This License is governed by the laws of the State of Florida. This
+License represents the entire statement of the understandings and
+agreements among the parties.
+
+
+10. U.S. GOVERNMENT RESTRICTED RIGHTS
+
+This Software and documentation is provided with RESTRICTED RIGHTS.
+Use, duplication, or disclosure by the Government is subject to
+restrictions as set forth in subparagraph (c)(1)(ii) of the Rights
+in Technical Data and Computer FAR 52.227-14 (Alternate III) or the
+Software clause at DFAR 252.227-7013. Contractor/manufacturer is
+METRO LINK INCORPORATED, 4711 North Powerline Road, Fort Lauderdale,
+FL 33309.
+
+Metro Link Motif Complete!, Metro Link Motif, Metro-X, Metro
+Extreme 3D, Metro OpenGL, Metro-Xv, and Metro-XIE are trademarks
+of Metro Link Incorporated.
+
+XRT, XRT/graph, XRT/field, XRT/gear, XRT/3d, and XRT/table are
+trademarks of KL Group Incorporated.
--- motif-2.1.10.orig/debian/rules
+++ motif-2.1.10/debian/rules
@@ -0,0 +1,113 @@
+#!/usr/bin/make -f
+# debian/rules that uses debhelper and alien
+# GNU copyright 1997 by Joey Hess.
+
+SHELL = /bin/sh
+
+package := $(shell basename `pwd` | sed 's/-[0-9].*//')
+version := $(shell basename `pwd` | tr -cd '[0-9.]')
+major := $(word 1,$(subst ., ,$(version)))
+minor := $(word 2,$(subst ., ,$(version)))
+
+mwmrc := etc/X11/mwm/system.mwmrc
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# This is the debhelper compatability version to use.
+export DH_COMPAT=1
+
+motif-version:
+ sed -e 's/#PACKAGE#/$(package)/' -e 's/#VERS#/$(version)/' debian/changelog-template >debian/changelog
+
+build: motif-version
+ dh_testdir
+
+clean: motif-version
+ dh_testdir
+ dh_testroot
+ dh_clean debian/conffiles debian/menu
+
+# Build architecture-independent files here.
+binary-indep: build
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build
+# dh_testversion
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+ tar -cf - --exclude=debian --exclude='./usr/doc' --exclude='*.so.?' --exclude='*.so' . | tar -xpf - -C debian/tmp
+#
+# If you need to move files around in debian/tmp or do some
+# binary patching ... Insert it here
+#
+ -ln -fs libMrm.so.$(major).$(minor) debian/tmp/usr/X11R6/lib/libMrm.so.$(major)
+ -ln -fs libUil.so.$(major).$(minor) debian/tmp/usr/X11R6/lib/libUil.so.$(major)
+ -ln -fs libXm.so.$(major).$(minor) debian/tmp/usr/X11R6/lib/libXm.so.$(major)
+# Move system.mwmrc to /etc/X11/mwm/system.mwmrc.
+ @mwmrc=`find debian/tmp -name system.mwmrc -type f -printf '%P\t' | cut -f1`; \
+ if [ "$$mwmrc" != $(mwmrc) ]; then \
+ echo "Moving /$$mwmrc to $(mwmrc)"; \
+ mv debian/tmp/$$mwmrc debian/tmp/$(mwmrc); \
+ dh_link $(mwmrc) $$mwmrc; \
+ fi
+# Move /usr/X11R6/lib/X11/app-defaults to /etc/X11/app-defaults.
+ @if [ -d debian/tmp/usr/X11R6/lib/X11/app-defaults ]; then \
+ echo "Moving /usr/X11R6/lib/X11/app-defaults to /etc/X11/app-defaults"; \
+ mv debian/tmp/usr/X11R6/lib/X11/app-defaults debian/tmp/etc/X11; \
+ fi
+# Install the menu method and /etc/X11/mwm/system.mwmrc-menu.
+ @echo "Installing menu method"
+ @sed -e 's/#PACKAGE#/$(package)/' debian/menu-template >debian/menu
+ @install -m 0755 debian/mwm-menumethod debian/tmp/etc/menu-methods
+ @cp debian/etcmwmrc debian/tmp/$(mwmrc)-menu
+ @echo "include-menu-defs" >>debian/tmp/$(mwmrc)-menu
+# Find the configuration files.
+ @echo "Looking for configuration files"
+ @echo "/$(mwmrc)-menu" >debian/conffiles
+ @find debian/tmp/etc -name system.fpanelrc -type f -printf '/etc/%P\n' >>debian/conffiles
+ @if [ -d debian/tmp/etc/X11/app-defaults ]; then \
+ find debian/tmp/etc/X11/app-defaults -type f -printf '/etc/X11/app-defaults/%P\n' >>debian/conffiles; \
+ fi
+# Fix mxterm.
+ @if [ -f debian/tmp/usr/X11R6/bin/mxterm ]; then \
+ echo "Fixing mxterm"; \
+ perl -pi -e 's/libtermcap\.so\.2/libncurses.so.5/' debian/tmp/usr/X11R6/bin/mxterm; \
+ fi
+# Copy documentation.
+ @if [ -d usr/doc ]; then \
+ echo "Copying documentation"; \
+ mkdir -p debian/tmp/usr/share/doc/$(package); \
+ cp -a usr/doc/*/* debian/tmp/usr/share/doc/$(package); \
+ fi
+ dh_installwm --priority=40 mwm
+ dh_installdocs
+ dh_installexamples
+ dh_installmenu
+# dh_installinit
+# dh_installcron
+# dh_installmanpages
+# dh_undocumented
+ dh_installchangelogs
+ dh_strip
+ dh_compress
+ dh_fixperms
+ @if [ -f debian/tmp/usr/X11R6/bin/mxterm ]; then \
+ chown root:utmp debian/tmp/usr/X11R6/bin/mxterm; \
+ chmod 2755 debian/tmp/usr/X11R6/bin/mxterm; \
+ fi
+ dh_installdeb
+# -dh_shlibdeps
+ dh_gencontrol
+ dh_makeshlibs
+ dh_md5sums
+ dh_builddeb
+
+source diff:
+ @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary motif-version
--- motif-2.1.10.orig/debian/mwm-menumethod
+++ motif-2.1.10/debian/mwm-menumethod
@@ -0,0 +1,30 @@
+#!/usr/sbin/install-menu
+# -*- mode: shell-script; -*-
+#I need menu-1!
+#
+#NOTE: the first line of this script _must_ be
+# equal to "#!/usr/sbin/install-menu", otherwise update-menus
+# will feed this script old-compat-mode data.
+#
+#More info: /usr/share/doc/menu/README.
+#
+compat="menu-1"
+
+!include menu.h
+
+function mwmcommon($c)=\
+ "\t\"" title() "\"\tf.exec \"" replacewith($c,"\"","'") " &\"\n"
+
+supported
+ x11 =mwmcommon($command)
+ text=mwmcommon(term())
+endsupported
+startmenu= "Menu \"" $section "\"\n{\n\t\"" \
+ ifelse(title(),title(),"Debian") "\"\tf.title\n"
+endmenu= "}\n"
+submenutitle=" \"" title() "\" f.menu \"" $section "\"\n"
+genmenu= "menudefs.hook"
+rcfile= "system.mwmrc"
+examplercfile="system.mwmrc-menu"
+rootprefix= "/etc/X11/mwm/"
+userprefix= "/.mwm/"
--- motif-2.1.10.orig/debian/etcmwmrc
+++ motif-2.1.10/debian/etcmwmrc
@@ -0,0 +1,103 @@
+!!
+!! Root Menu Description
+!!
+
+Menu DefaultRootMenu
+{
+ "Root Menu" f.title
+ "Debian" f.menu "/Debian"
+ "New Window" f.exec "x-terminal-emulator &"
+ "Shuffle Up" f.circle_up
+ "Shuffle Down" f.circle_down
+ "Refresh" f.refresh
+ "Pack Icons" f.pack_icons
+! "Toggle Behavior..." f.set_behavior
+ no-label f.separator
+ "Restart..." f.restart
+ "Quit..." f.quit_mwm
+}
+
+!!
+!! Default Window Menu
+!!
+Menu DefaultWindowMenu
+{
+ "Make Pinned" f.toggle_pin_state
+ no-label f.separator
+ Restore _R Alt<Key>F5 f.restore
+ Move _M Alt<Key>F7 f.move
+ Size _S Alt<Key>F8 f.resize
+ Minimize _n Alt<Key>F9 f.minimize
+ Maximize _x Alt<Key>F10 f.maximize
+ Raise _a Alt<Key>F2 f.raise
+ Lower _L Alt<Key>F3 f.lower
+ no-label f.separator
+ Close _C Alt<Key>F4 f.kill
+}
+
+
+!!
+!! Default Key Bindings
+!!
+Keys DefaultKeyBindings
+{
+ Shift<Key>Escape window|icon f.post_wmenu
+ Alt<Key>space window|icon f.post_wmenu
+ Alt<Key>Tab root|icon|window f.next_key
+ Alt Shift<Key>Tab root|icon|window f.prev_key
+ Alt<Key>Escape root|icon|window f.circle_down
+ Alt Shift<Key>Escape root|icon|window f.circle_up
+ Alt Shift Ctrl<Key>exclam root|icon|window f.set_behavior
+ Alt<Key>F6 window f.next_key transient
+ Alt Shift<Key>F6 window f.prev_key transient
+ Shift<Key>F10 icon f.post_wmenu
+ Alt Shift<Key>Delete root|icon|window f.restart
+}
+
+!!
+!! Button Binding Description(s)
+!!
+!! These can be used anywhere
+!!
+Buttons DefaultButtonBindings
+{
+ <Btn1Down> icon|frame f.raise
+ <Btn3Down> icon|frame f.post_wmenu
+ <Btn3Down> root f.menu DefaultRootMenu
+}
+
+!!
+!! These are some example bindings that you might use if your
+!! keyboardFocusPolicy is "explicit". Note that to use these, you'll
+!! have to change the Mwm*buttonBindings resource in Mwm to
+!! ExplicitButtonBindings instead of DefaultButtonBindings.
+!!
+Buttons ExplicitButtonBindings
+{
+ <Btn1Down> frame|icon f.raise
+ <Btn3Down> frame|icon f.post_wmenu
+ <Btn3Down> root f.menu DefaultRootMenu
+! <Btn1Up> icon f.restore
+ Alt<Btn1Down> window|icon f.lower
+! Alt<Btn2Down> window|icon f.resize
+! Alt<Btn3Down> window|icon f.move
+}
+
+!! These are some example bindings that you might use if your
+!! keyboardFocusPolicy is "pointer". Note that to use these, you'll
+!! have to change the Mwm*buttonBindings resource in Mwm to
+!! PointerButtonBindings instead of DefaultButtonBindings.
+!!
+Buttons PointerButtonBindings
+{
+ <Btn1Down> frame|icon f.raise
+ <Btn3Down> frame|icon f.post_wmenu
+ <Btn3Down> root f.menu DefaultRootMenu
+ <Btn1Down> window f.raise
+! <Btn1Up> icon f.restore
+ Alt<Btn1Down> window|icon f.lower
+! Alt<Btn2Down> window|icon f.resize
+! Alt<Btn3Down> window|icon f.move
+}
+
+!include-menu-defs
--- motif-2.1.10.orig/debian/dirs
+++ motif-2.1.10/debian/dirs
@@ -0,0 +1,4 @@
+etc/X11/mwm
+etc/menu-methods
+usr/X11R6/bin
+usr/X11R6/lib
--- motif-2.1.10.orig/debian/changelog-template
+++ motif-2.1.10/debian/changelog-template
@@ -0,0 +1,37 @@
+#PACKAGE# (#VERS#-7) unstable; urgency=low
+
+ * Mwm is registered with dh_installwm.
+ * Disabled dh_undocumented.
+ * Removed dh_suidregister.
+ * The virtual package `x-terminal-emulator' is no longer provided since
+ Metro Link's latest Motif release doesn't contain mxterm anymore.
+
+ -- Andreas Voegele <andreas.voegele@gmx.de> Tue, 16 Jan 2001 12:17:38 +0100
+
+#PACKAGE# (#VERS#-6) unstable; urgency=low
+
+ * Moved app-defaults directory to /etc/X11.
+ * Depends on xlibs.
+
+ -- Andreas Voegele <andreas.voegele@gmx.de> Sat, 9 Dec 2000 08:45:11 +0100
+
+#PACKAGE# (#VERS#-5) unstable; urgency=low
+
+ * Made mxterm use libncurses.so.5 instead of libtermcap.so.2.
+
+ -- Andreas Voegele <andreas.voegele@gmx.de> Mon, 3 Jan 2000 09:50:03 +0100
+
+#PACKAGE# (#VERS#-4) unstable; urgency=low
+
+ * Converted from RPM binary format to Debian.
+ * Removed *.so symlinks.
+ * Made mxterm use libncurses.so.4 instead of libtermcap.so.2.
+ * Enabled dh_undocumented, dh_fixperms and dh_strip.
+ * Added menu file and menu method.
+ * Added maintainer scripts.
+
+ -- Andreas Voegele <andreas.voegele@gmx.de> Tue, 16 Nov 1999 19:31:03 +0100
+
+Local variables:
+mode: debian-changelog
+End:
--- motif-2.1.10.orig/debian/postinst
+++ motif-2.1.10/debian/postinst
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+if [ "$1" = "configure" ]; then
+ ldconfig
+fi
+
+#DEBHELPER#
--- motif-2.1.10.orig/debian/README.Debian
+++ motif-2.1.10/debian/README.Debian
@@ -0,0 +1,10 @@
+Motif for Debian
+----------------
+
+For compatibility with Lesstif the Motif window manager configuration
+file system.mwmrc is placed in /etc/X11/mwm on Debian systems.
+
+If the `menu' package is installed, system.mwmrc is automatically
+generated from /etc/X11/mwm/system.mwmrc-menu.
+
+ -- Andreas Voegele <andreas.voegele@gmx.de> Tue, 16 Nov 1999 19:31:03 +0100
--- motif-2.1.10.orig/debian/menu-template
+++ motif-2.1.10/debian/menu-template
@@ -0,0 +1,6 @@
+?package(#PACKAGE#):\
+ needs="wm"\
+ section="WindowManagers"\
+ title="Mwm"\
+ longtitle="Motif window manager"\
+ command="/usr/X11R6/bin/mwm"