home *** CD-ROM | disk | FTP | other *** search
- #!/usr/bin/perl
-
- # tcl.req - a simple makedepends like script for tcl.
-
- # I plan to rewrite this in C so that perl is not required by RPM at
- # build time.
-
- # by Ken Estes Mail.com kestes@staff.mail.com
-
- use File::Basename;
-
- if ("@ARGV") {
- foreach (@ARGV) {
- process_file($_);
- }
- } else {
-
- # notice we are passed a list of filenames NOT as common in unix the
- # contents of the file.
-
- foreach (<>) {
- process_file($_);
- }
- }
-
-
- foreach $module (sort keys %require) {
- print "tcl($module)\n";
- }
-
- exit 0;
-
-
-
- sub process_file {
-
- my ($file) = @_;
- chomp $file;
-
- open(FILE, "<$file")||
- die("$0: Could not open file: '$file' : $!\n");
-
- while (<FILE>) {
-
- # Each keyword can appear multiple times. Don't
- # bother with datastructures to store these strings,
- # if we need to print it print it now.
-
- if ( m/^\s*\$RPM_Requires\s*=\s*["'](.*)['"]/i) {
- foreach $_ (spit(/\s+/, $1)) {
- print "$_\n";
- }
- }
-
- s/\#.*//;
-
- # Each keyword can appear multiple times. Don't
- # bother with datastructures to store these strings,
- # if we need to print it print it now.
-
- if ( m/^\s*\$RPM_Requires\s*=\s*["'](.*)['"]/i) {
- foreach $_ (spit(/\s+/, $1))
- print "$_\n";
- }
-
-
- # we wish to capture these source statements:
-
- # source "$PATH/lib/util.tcl"
- # source "comconf.tcl"
- # if {[catch {source $env(CONTROL_PANEL_LIB_DIR)/bindings.tcl}] != 0} {
-
- # quick check to see if the complex regexps could possibly match.
- # This should speed things up.
-
- (m/source/) || next;
-
- # note we include parethesis and '$' and '\' in the pattern
-
- if (
- (m!source\s+([\'\"])?([0-9A-Za-z/._\-\\\(\)\$]+)!)
- ) {
-
- my ($module) = $2;
-
- # If there is some interpolation of variables,
- # see if taking the basename will give us the filename.
-
- ($module =~ m/\$/) &&
- ($module = basename($module));
-
- ($module =~ m/\$/) ||
- ($require{$module}=1);
- }
- }
-
- close(FILE)||
- die("$0: Could not close file: '$file' : $!\n");
-
- return ;
- }
-