From d72b43041ad8e3b77d83d37ea390973141694b19 Mon Sep 17 00:00:00 2001 From: Gerhard Gonter <ggonter@gmail.com> Date: Tue, 9 Aug 2022 17:40:45 +0200 Subject: [PATCH] debian package building (or hacking) --- build_deb.sh | 12 ++++++++ debian/control | 14 +++++++++ debian/debian-binary | 1 + scripts/mkdeb.pl | 72 ++++++++++++++++++++++++++++++++++++++++---- 4 files changed, 93 insertions(+), 6 deletions(-) create mode 100755 build_deb.sh create mode 100644 debian/control create mode 100644 debian/debian-binary diff --git a/build_deb.sh b/build_deb.sh new file mode 100755 index 0000000..94e1332 --- /dev/null +++ b/build_deb.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +echo 'increment the version number, when necessary!' +epoch=0 +version=0.1-1 +pkgdir=tmp/stage/libgg-aix-pm-perl/$epoch/$version + +scripts/pmlnk.pm --copy --target $pkgdir/data/usr/share/perl5 . +mkdir $pkgdir/control +cp debian/control $pkgdir/control +cp debian/debian-binary $pkgdir +scripts/mkdeb.pl $pkgdir diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..79a5553 --- /dev/null +++ b/debian/control @@ -0,0 +1,14 @@ +Package: libgg-aix-pm-perl +Version: 0.1-1 +Architecture: all +Maintainer: Gerhard Gonter <ggonter@gmail.com> +Original-Maintainer: Gerhard Gonter <ggonter@gmail.com> +Installed-Size: 629 +Depends: perl +Section: perl +Priority: optional +Homepage: http://aix-pm.sourceforge.net/ +Description: Perl modules from the aix-pm collection + The AIX:: name space plus more. Perl modules that deal with AIX specific + issues. A slowly evolving EMC CLARiiON monitoring tool belongs to the + "plus more" part. diff --git a/debian/debian-binary b/debian/debian-binary new file mode 100644 index 0000000..cd5ac03 --- /dev/null +++ b/debian/debian-binary @@ -0,0 +1 @@ +2.0 diff --git a/scripts/mkdeb.pl b/scripts/mkdeb.pl index b6eb47e..1cc1eac 100755 --- a/scripts/mkdeb.pl +++ b/scripts/mkdeb.pl @@ -2,6 +2,9 @@ use strict; +use Data::Dumper; +$Data::Dumper::Indent= 1; + my $pkg_base= $ENV{PKGBASE} || '~/tmp/pkg'; while (my $arg= shift (@ARGV)) @@ -36,17 +39,26 @@ sub mk_package my $pkg_name= shift; my $pkg_epoch= shift; my $pkg_version= shift; - - my $deb= '../../../'. $pkg_name . '-'; - $deb .= $pkg_epoch.':' if ($pkg_epoch > 0); - $deb .= $pkg_version .'.deb'; - print __LINE__, " deb=[$deb]\n"; + my $pkg_arch= shift; chdir($base) or die "base not found [$base]"; chdir($pkg_name) or die "pkg_name not found [$pkg_name]"; chdir($pkg_epoch) or die "pkg_epoch not found [$pkg_epoch]"; chdir($pkg_version) or die "pkg_version not found [$pkg_version]"; + my $ctrl= Debian::Package::Control->read_control_file ('control/control'); + print __LINE__, " ctrl: ", Dumper($ctrl); + unless (defined ($pkg_arch)) + { + $pkg_arch= $ctrl->{fields}->{Architecture}->{value} || 'all'; + } + + my $deb= '../../../'. $pkg_name . '_'; + # my $deb= $pkg_name . '-'; + $deb .= $pkg_epoch.':' if ($pkg_epoch > 0); + $deb .= $pkg_version . '_' . $pkg_arch .'.deb'; + print __LINE__, " deb=[$deb]\n"; + # mk_md5sums(); unlink('control.tar.xz'); unlink('data.tar.xz'); @@ -57,7 +69,8 @@ sub mk_package cmd(qw(xz -zv control.tar data.tar)); - # the ar file must contain these fils in this order + # the ar file must contain these fils in this order and should be wiped before + unlink($deb); cmd('ar', 'rcSv', $deb, 'debian-binary'); cmd('ar', 'rcSv', $deb, 'control.tar.xz'); cmd('ar', 'rcSv', $deb, 'data.tar.xz'); @@ -78,3 +91,50 @@ sub mk_md5sums # chdir('..'); } +package Debian::Package::Control; + +sub read_control_file +{ + my $class= shift; + my $fnm= shift; + + open (FI, '<:utf8', $fnm) or die "can't read control file [$fnm]"; + my @segments; + my $segment; + my %fields; + while (<FI>) + { + chop; + print __LINE__, " l=[$_] segment=[$segment]\n"; + if ($_ =~ m/^#/) + { + if (defined ($segment) && $segment->{type} eq 'comment') + { + push (@{$segment->{lines}} => $_); + } + else + { + $segment= { type => 'comment', lines => [ $_ ] }; + push (@segments, $segment); + } + } + elsif ($_ =~ m#^ #) + { + die 'invalid continuation' unless (defined ($segment)); + push (@{$segment->{lines}} => $_); + } + elsif ($_ =~ m#^([A-Z][\w\-_]+): *(.+)#) + { + my ($field, $value)= ($1, $2); + print __LINE__, " field=[$field] value=[$value]\n"; + $segment= { type => 'field', field => $field, value => $value, lines => [ $_ ] }; + push (@segments, $segment); + $fields{$field}= $segment; + } + } + close(FI); + + my $res= { fields => \%fields, segments => \@segments }; + bless ($res, $class); +} + -- GitLab