On Thu, 9 Oct 2003, Geert Uytterhoeven wrote:
> On Thu, 9 Oct 2003, Jan-Benedict Glaw wrote:
> > If companies have some kind of scripts or the like they use, I'd really
> > love to see them published. That'd really help all those guys out
> > there:)
>
> Binutils (binutils-2.13.2.1.tar.bz2):
> configure --target=mips-linux --prefix=/wherever/you/want
>
> Gcc (gcc-core-3.2.2.tar.bz2):
> configure --target=mips-linux --prefix=/wherever/you/want
> --enable-languages=c --enable-shared --with-gnu-as --with-gnu-ld
> --with-systemm-zlib --enable-long-long --enable-nls --without-included-gettext
>
> I took the development libraries and includes from Debian:
> libc6-dev_2.2.5-11.2_mips.deb
> libc6_2.2.5-11.2_mips.deb
> zlib1g-dev_1%3a1.1.4-1_mips.deb
> zlib1g_1%3a1.1.4-1_mips.deb
>
> I wrote very simple Perl clones of dpkg and dpkg-deb with just enough
> functionality to get `dpkg-cross -i' working on Solaris. I don't know whether
> I
> can share them, though.
It took me a while, but here they are, wrapped as a Christmas gift! :-)
You also have to take /usr/bin/dpkg-cross from a Debian system and probably
want to hardcode crossbase=/wherever/you/want, unless you're root.
BTW, I'd still really like to have some scripts so I can install (from binary
or from sources) Debian binaries in my home dir on a Red Hat or Solaris box.
Wishful thinking?
--- /dev/null 2003-12-21 17:51:51.000000000 +0100
+++ dpkg 2003-12-28 21:23:47.000000000 +0100
@@ -0,0 +1,29 @@
+#!/usr/bin/perl
+
+#
+# Very simple dpkg clone with just enough functionality to get `dpkg-cross -i'
+# working on Solaris
+#
+# © Copyright 2003 by Geert Uytterhoeven <geert@linux-m68k.org>
+#
+# This file is subject to the terms and conditions of the GNU General Public
+# License.
+#
+
+$progname = $0;
+$progname =~ s@^.*/@@g;
+
+
+$args = join(' ', @ARGV);
+print STDERR "$progname $args...\n";
+
+$arg = shift @ARGV or goto failed;
+if ($arg eq '-i') {
+ $archive = shift @ARGV or goto failed;
+ system("ar -p $archive data.tar.gz | (cd / && tar zxf - )");
+ exit(0);
+}
+
+failed:
+die "$progname $args: failed\n";
+
--- /dev/null 2003-12-21 17:51:51.000000000 +0100
+++ dpkg-deb 2003-12-28 21:23:25.000000000 +0100
@@ -0,0 +1,82 @@
+#!/usr/bin/perl
+
+#
+# Very simple dpkg-deb clone with just enough functionality to get
+# `dpkg-cross -i' working on Solaris
+#
+# © Copyright 2003 by Geert Uytterhoeven <geert@linux-m68k.org>
+#
+# This file is subject to the terms and conditions of the GNU General Public
+# License.
+#
+
+$progname = $0;
+$progname =~ s@^.*/@@g;
+
+
+$args = join(' ', @ARGV);
+
+$arg = shift @ARGV or goto failed;
+if ($arg eq '-f') {
+ # Get package name, version, or architecture
+ $archive = shift @ARGV or goto failed;
+ $field = shift @ARGV or goto failed;
+ ($package, $version, $architecture) = $archive =~ /(.*)_(.*)_(.*).deb/;
+ $package =~ s,.*/,,;
+ if ($field eq 'package') {
+ print "$package\n";
+ exit(0);
+ } elsif ($field eq 'version') {
+ print "$version\n";
+ exit(0);
+ } elsif ($field eq 'architecture') {
+ print "$architecture\n";
+ exit(0);
+ }
+} elsif ($arg eq '-e') {
+ # Extract the contents of control.tar.gz to a specified subdirectory
+ $archive = shift @ARGV or goto failed;
+ $dir = shift @ARGV or goto failed;
+ system("mkdir -p $dir && ar -p $archive control.tar.gz | (cd $dir && tar zxf
- )");
+ exit(0);
+} elsif ($arg eq '--fsys-tarfile') {
+ # Extract the contents of data.tar.gz to stdout
+ $archive = shift @ARGV or goto failed;
+ system("ar -p $archive data.tar.gz | zcat");
+ exit(0);
+} elsif ($arg eq '-I') {
+ # Extract the control file to stdout
+ $archive = shift @ARGV or goto failed;
+ $name = shift @ARGV or goto failed;
+ system("ar -p $archive control.tar.gz | tar Ozxf - ./$name");
+ exit(0);
+} elsif ($arg eq '-b') {
+ $dir1 = shift @ARGV or goto failed;
+ $dir2 = shift @ARGV or goto failed;
+ # Extract package name and version from the control file
+ open(IN, "<$dir1/DEBIAN/control") or die;
+ $line = <IN>;
+ chomp($line);
+ ($package) = $line =~ /^Package: (.*)/;
+ $line = <IN>;
+ chomp($line);
+ ($version) = $line =~ /^Version: (.*)/;
+ close(IN);
+ $name = $package.'_'.$version.'_all.deb';
+ $name =~ s/:/%3a/g;
+ # Create control.tar.gz
+ system("cd $dir1/DEBIAN && tar zcf ../../control.tar.gz .");
+ system("cd $dir1 && rm -rf DEBIAN");
+ # Create data.tar.gz
+ system("cd $dir1 && tar zcf ../data.tar.gz .");
+ # Create debian-binary
+ system("echo '2.0' > $dir1/../debian-binary");
+ # Build a new Debian package
+ system("cd $dir1/.. && ar -r $name debian-binary control.tar.gz
data.tar.gz");
+ system("mv $dir1/../$name $dir2/$name");
+ exit(0);
+}
+
+failed:
+die "$progname $args: failed\n";
+
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
|