#!/usr/bin/env perl # # make_gpt_dist - adapted from GPT's make_gpt_dist script # # Create a GPT source package after deriving the necessary build files. # # # You can define the source directory and package names to suit your needs. It's # important to remember that GPT needs the source package name to be similar to # the name of the package as defined in the package metadata (pkg_data_src.gpt). # # Failing to do this correctly will not affect bundle-creation, but will affect # globus-build's ability to select and untar the correct package corresponding # to the name gpt-bundle gives in its 'packaging_list'. # $srcdirname = "gsi_openssh-3.6-src"; $srcpkgname = $srcdirname; # # uncomment when we've got a better place to get the current version from # # determine gpt version number # #open (CFG, 'packaging_tools/configure.in'); # #my $version; #for () { # if (m!AM_INIT_AUTOMAKE\(\w+,([^,\)]+)!) { # $version = $1; # $version =~ s!\s+!!g; # } #} # # test to make sure we're okay to # o create/use the $srcdirname directories # o create the source package # if ( (!defined($srcdirname)) || length($srcdirname) le 0 ) { printf("\$srcdirname must be defined to a usable value!\n"); die; } if ( (!defined($srcpkgname)) || length($srcpkgname) le 0 ) { printf("\$srcpkgname must be defined to a usable value!\n"); die; } if ( -e "../$srcdirname" ) { printf("found existing '../$srcdirname'... please remove before continuing\n"); die; } if ( -e "./$srcdirname" ) { printf("found existing './$srcdirname'... please remove before continuing\n"); die; } if ( -e "./$srcpkgname.tar" ) { printf("found existing './$srcpkgname.tar'... please remove before continuing\n"); die; } if ( -e "./$srcpkgname.tar.gz" ) { printf("found existing './$srcpkgname.tar.gz'... please remove before continuing\n"); die; } # # prep the source directory by creating a temp directory containing all of the # required files. # printf("copying files into source directory...\n"); system("mkdir ../$srcdirname")==0 or die "Unable to create ../$srcdirname: $?"; system("cp -rf * ../$srcdirname")==0 or die "Unable to copy . into ../$srcdirname: $?"; system("mv ../$srcdirname ./$srcdirname")==0 or die "Unable to move $srcdirname from ../ to ./: $?"; chdir("./$srcdirname"); # # remove any 'unnecessary' files from the source directory. # printf("pruning source directory of extraneous files...\n"); system("rm -rf `find . -name CVS -print`")==0 or die "Unable to remove cvs directories: $?"; # # Originally, we were going to include the MD5 sums in the Announcement # file. Among other virtues, this complicated the process of distributing # the Announcement to users since it would get included in the package # itself. We decided to keep the announcement in the package, and got # around the Catch-22 by not including MD5 sums in that file. # # So, keep this line commented!: # system("rm -f Announcement.txt")==0 or die "Unable to remove Announcement.txt: $?"; # # # run the standard development tools to get the necessary derived files. # printf("running make distprep...\n"); system("make -f Makefile.in distprep")==0 or die "Could not run make distprep: $?"; if ( ! -e "configure" ) { printf("'make distprep' failed to create configure.\n"); printf("Check PATH for autoreconf.\n"); die; } chdir("../"); # # create the source package from the source directory. # printf("creating source tarball '$srcpkgname.tar.gz'...\n"); system("tar -cf ./$srcpkgname.tar ./$srcdirname")==0 or die "Unable to create $srcpkgname.tar: $?"; system("gzip -f ./$srcpkgname.tar")==0 or die "Unable to gzip $srcpkgname.tar: $?"; printf("cleaning up after myself...\n"); system("rm -rf ./$srcdirname")==0 or die "Unable to remove ./$srcdirname: $?"; # # done. # printf("done.\n");