Radix cross Linux Build System

Cross-platform build system is designed to build distributions of different operating systems for a set of target devices

39 Commits   2 Branches   2 Tags
Index: rootfs_clean
===================================================================
--- rootfs_clean	(nonexistent)
+++ rootfs_clean	(revision 5)
@@ -0,0 +1,123 @@
+#!/bin/env perl
+
+use FindBin;
+use lib $FindBin::Bin;
+
+use strict;
+use warnings FATAL => 'all';
+
+use File::Basename;
+use Fcntl ':flock';
+use _kxLab;
+
+my $distro = _kxLab::distro_name();
+
+my @arguments;
+my ( $base, $toolchain, $hardware, $flavour );
+my $target_build_dir;
+
+my $curdir     = $ENV{CWD};
+my $removepkg  = $ENV{REMOVE_PACKAGE};
+my $fname      = "";
+my $pkg        = "";
+
+my $pkg_name   = "";
+my $pkg_group  = "";
+my $pkg_dir    = "";
+my $rootfs_dir = "";
+
+sub usage
+{
+  print <<EOF;
+
+Usage: rootfs_clean [options]
+Options:
+   --destination=ROOTFS  - where ROOTFS is a destination directory.
+   --toolchain=TOOLCHAIN - where TOOLCHAIN ia a toolchain name;
+   --hardware=HARDWARE   - where HARDWARE ia a HARDWARE name;
+   --flavour=FLAVOUR     - where FLAVOUR ia a FLAVOUR name.
+
+EOF
+  exit;
+}
+
+foreach ( @ARGV )
+{
+  if( /--destination=(\S*)/ )
+  {
+    $base = $1;
+  }
+  elsif( /--toolchain=(\S*)/ )
+  {
+    $toolchain = $1;
+  }
+  elsif( /--hardware=(\S*)/ )
+  {
+    $hardware = $1;
+  }
+  elsif( /--flavour=(\S*)/ )
+  {
+    $flavour = $1;
+  }
+  elsif( /--help/ )
+  {
+    usage;
+  }
+}
+
+if( ! defined $base      or $base eq "" )      { usage; }
+if( ! defined $toolchain or $toolchain eq "" ) { usage; }
+if( ! defined $hardware  or $hardware eq "" )  { usage; }
+if( ! defined $flavour   or $flavour eq "" )
+{
+  $flavour = "";
+  $target_build_dir = "." . $toolchain . "/" . $hardware;
+}
+else
+{
+  $target_build_dir = "." . $toolchain . "/" . $hardware . "/" . $flavour;
+}
+
+if ( $curdir )
+{
+  $fname = "$curdir/" . $target_build_dir . "/.rootfs";
+}
+else
+{
+  $fname = $target_build_dir . "/.rootfs";
+}
+
+
+open( F, '<', $fname ) or die "Could not open '$fname'";
+
+
+while( <F> )
+{
+  chomp;
+
+  $pkg        = "$base/$_";
+  $pkg_group  = dirname( $pkg ); # extract GROUP if present:
+  $pkg_group  =~ s!/.+/var/log/$distro/packages/!!;
+  $pkg_name   = basename( $pkg );
+  $pkg_dir    = dirname( $pkg );
+  $rootfs_dir = $pkg_dir;
+  $rootfs_dir =~ s!/var/log/$distro/packages.*$!!;
+
+  #####################
+  # LOCK procedure:
+  #
+  #my $lock_fname = _kxLab::build_system_tmpdir()  . "/." . $hardware . ".pkgtool-lock";
+  #open( my $lock_fh, '+>', $lock_fname ) or
+  #  _kxLab::error( "$0: Could not open $lock_fname file: $!" );
+  #flock( $lock_fh, LOCK_EX ) or
+  #  _kxLab::error( "$0: Cannot lock $lock_fname file: $!" );
+
+  _kxLab::system( "$removepkg --ignore-chrefs-errors --root=$rootfs_dir $pkg" );
+
+  #flock( $lock_fh, LOCK_UN ) or
+  #  _kxLab::error( "$0: Cannot unlock $lock_fname file: $!" );
+  #close( $lock_fh );
+  #
+  # UN LOCK procedure.
+  #####################
+}

Property changes on: rootfs_clean
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property