pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/mk/scripts Add a script that can be used to scan for N...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/35c28b055632
branches:  trunk
changeset: 515341:35c28b055632
user:      dmcmahill <dmcmahill%pkgsrc.org@localhost>
date:      Sat Jul 01 11:11:21 2006 +0000

description:
Add a script that can be used to scan for NO_BIN_ON_FTP packages using
the cache files left by the README.html generation.  This is indended
to be used to monitor a ftp server, not for generating a file list for
uploading to a ftp server.

diffstat:

 mk/scripts/binpkg-scan |  163 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 163 insertions(+), 0 deletions(-)

diffs (167 lines):

diff -r 16b4981a3464 -r 35c28b055632 mk/scripts/binpkg-scan
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/mk/scripts/binpkg-scan    Sat Jul 01 11:11:21 2006 +0000
@@ -0,0 +1,163 @@
+#!/usr/bin/awk -f
+# $NetBSD: binpkg-scan,v 1.1 2006/07/01 11:11:21 dmcmahill Exp $: genreadme.awk,v 1.22 2006/04/15 15:00:24 salo Exp $
+#
+# Copyright (c) 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Dan McMahill.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+#    must display the following acknowledgement:
+#        This product includes software developed by the NetBSD
+#        Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+#    contributors may be used to endorse or promote products derived
+#    from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+
+# Scans for packages with NO_BIN_ON_FTP set.  This script makes use of the
+# cache files generated as part of the README.html generation.  This makes
+# this scan run quite fast when you have a very large binary packages collection.
+#
+# Usage:
+#
+# binpkg-scan PACKAGES=/usr/pkgsrc/packages /dev/null
+#
+
+# Global variables
+#-----------------
+#                
+# notify - if set to 1, something will be set in the output script to make it
+#          easy to detect and an automatic email can be sent to notify a person
+#          that some cleanup is required.
+#
+#
+
+BEGIN {
+       printf("#!/bin/sh\n#\n\n");
+       printf("# Starting scan for NO_BIN_ON_FTP packages\n\n");
+       notify = 0;
+}
+
+
+END {
+
+#      printf("Making sure binary package cache file is up to date...\n");
+#      cmd = sprintf("%s AWK=%s CMP=%s FIND=%s GREP=%s PKG_INFO=\"%s\" PKG_SUFX=%s SED=%s SORT=%s %s/mk/scripts/binpkg-cache --packages %s",
+#              SETENV, AWK, CMP, FIND, GREP, PKG_INFO, PKG_SUFX, SED, SORT, PKGSRCDIR, PACKAGES);
+#      if (debug) printf("\nExecute:  %s\n",cmd);
+#      rc = system(cmd);
+       rc = 0;
+
+       if (rc != 0 && rc != 2) {
+         printf("\n**** WARNING ****\n") > "/dev/stderr";
+         printf("Command: %s\nfailed.", cmd) > "/dev/stderr";
+         printf("**** ------- ****\n") > "/dev/stderr";
+         exit(1);
+       }
+       
+       if (rc == 2) {
+         printf("\n**** WARNING ****\n") > "/dev/stderr";
+         printf("* No binary packages directory found\n") > "/dev/stderr";
+         printf("* List of binary packages will not be generated\n") > "/dev/stderr";
+         printf("**** ------- ****\n") > "/dev/stderr";
+         exit(0);
+       }
+
+       printf("# Loading binary package cache file...\n\n");
+       load_cache_file( PACKAGES "/.pkgcache" );
+       printf("\n");
+
+       for(pkg in noftp_list) {
+               printf("# NO_BIN_ON_FTP (%s) = %s\nrm %s/%s\n\n",
+                       pkgpath_list[pkg], noftp_list[pkg], PACKAGES, pkg);
+       }
+
+       if( notify ) {
+               printf("\n# NOTIFY a person that this script should be run\n\n");
+       }
+}
+
+function fatal_check_file(file, cmd){
+       cmd="test -f " file ;
+       if (debug) printf("Execute:  %s\n",cmd);
+       if (system(cmd) != 0) {
+               printf("**** FATAL ****\nRequired file %s does not exist\n",
+                      file) > "/dev/stderr";
+               printf("**** ------- ****\n") > "/dev/stderr";
+               close("/dev/stderr");
+               exit(1);
+       }
+}
+
+
+function load_cache_file( file, pkgfile, noftp, pkgpath, wk, rx ) {
+  printf("#    * %s\n", file);
+  fatal_check_file( file );
+
+  # read the cache file
+  while( getline < file ) {
+
+    # if this line points to another cache file, then recursively
+    # load it
+    if( $0 ~ /^pkgcache_cachefile/ ) {
+      if( debug ) printf("# Found pkgcache_cachefile line.\n");
+      load_cache_file( $2 );
+    } else if( $0 ~/^pkgcache_begin /) {
+      pkgfile = $2;
+      if( debug ) printf("# Starting %s\n", pkgfile);
+      pkgpath = "unknown";
+      noftp = "unknown";
+    } else if( $0 ~/^PKGPATH=/ ) {
+      pkgpath = $0;
+      gsub(/PKGPATH=[ \t]*/, "", pkgpath);
+    } else if( $0 ~/^NO_BIN_ON_FTP=/ ) {
+      noftp = $0;
+      gsub(/NO_BIN_ON_FTP=[ \t]*/, "", noftp);
+    } else if( $0 ~/^pkgcache_end /) {
+      if( debug ) printf("# %s, NO_BIN_ON_FTP=%s, PKGPATH=%s\n",
+                        pkgfile, noftp, pkpath);
+
+      if(noftp == "") {
+       if( debug ) printf("# %s, NOT restricted\n", pkgfile);
+      } else if( noftp == "unknown" ) {
+       printf("# UNKNOWN value for NO_BIN_ON_FTP: %s/%s\n", PACKAGES, pkgfile);
+       notify = 1;
+      } else {
+       noftp_list[pkgfile] = noftp;
+       pkgpath_list[pkgfile] = pkgpath;
+       notify = 1;
+      }
+
+
+    } else {
+      # skip this line
+    }
+  }
+
+  # close the cache file
+  close( file );
+}
+
+



Home | Main Index | Thread Index | Old Index