#!/usr/bin/perl $md5=shift; $move=shift; @extrabon=qw( java jdk jre jdk-src jdk-docs apache-ant duktape u-boot-tools mtd-utils vboot-utils watchdog klettres ktuberling dtc nbd x11vnc icedtea-web libcroco pyserial xr819-firmware perl-mod_perl perl-DBD-SQLite perl-Text-Iconv silo #15.0_packages: cbindgen nodejs #15.0_ppc: llvm9 #x86_specific_packages: isapnptools kernel-generic-smp kernel-huge-smp kernel-modules-smp btmgr dip libpng14 xf86-video-geode #current_update: #llvm13lib #llvm14lib #kernel_modules_still_to_update_to_new_all-in-one package: kernel-modules #want_to_keep_reiserfsprogs: reiserfsprogs #mips/mipsel_still_have_mozj128: mozjs128 #keep_kdewebkit_for_compatibility_without_qtwebkit: #qt5-webkit_kdewebkit ); foreach(@extrabon) { $extrabon{$_}=1; } sub pkgbase { my $pkg=shift; my $i; if(($i=rindex($pkg,"/"))>=0) { $pkg=substr($pkg,$i+1); } $pkg=~s/\.t[gblx][tz]$//; return($pkg); } sub package_name { my $pkg=shift; my $pkgn; $_=pkgbase($pkg); ($pkgn)=m/(.+)-.+?-.+?-.+?/; if(length($pkgn)==0) { $pkgn=$_; } return($pkgn); } if(!-f $md5) { # Check if it a symlink print "ERROR: you must provide MD5 file\n"; exit 1; } %pkgs=(); $count=0; if(open(F,$md5)) { while() { chop; if(m/t.z$/) { $pkgs{package_name($_)}++; $count++; } } close(F); } if($count<1000) { print "SOMETHING wrong: find only $count packages in MD5 file. Please check.\n"; exit 2; } if(-d "xap") { $system=0; if(!open(F,"find . -name '*.txz' | grep -vE 'old_packages|^\\./temp'|")) { print "Cannot get package list ($!): please check\n"; exit(3); } } else { $system=1; if(!open(F,"\\ls -rt /var/log/packages/|")) { print "Cannot get package list from /var/log/packages/ ($!): please check\n"; exit(3); } } while() { chop; if(1) { $fullfile=$_; $pkg=package_name($_); if(!defined($extrabon{$pkg}) && !defined($pkgs{$pkg})) { if($system) { print "$pkg\n"; } else { print "$fullfile\n"; } } } } close(F);