28.14 Producing a Release Distribution of the Project Files

This section describes how to produce a distribution file that just contains the project files without any ALLPROSE files. It should be enough to distribute your project through that file and to give just somewhere the version number of ALLPROSE.

The installation process would then be

gunzip -c allprose-x.y.z.tar.gz | tar xpvf  
mv allprose-x.y.z project-a.b.c  
gunzip -c project-a.b.c.tar.gz | tar xpvf

The following code just puts a release-date at the first line of the ChangeLog file, then writes a manifest file, and hands over to the tgz.% target given in Section28.13.

The files that go into the distribution are the files listed in files.list minus the ALLPROSE files given through allprosefiles.list plus the manifest.myalps plus the Makefile.

423make project distribution file 423  (350)  424
checked-project-distribution:
        $(MAKE) distclean ps checklog
        $(MAKE) distclean pdf checklog
        $(MAKE) distclean html checklog
        $(MAKE) distclean project-distribution

Defines:
checked-project-distribution, never used.

Uses checklog 414, distclean 406b, html 380, pdf 379b, project-distribution 424, and ps 378b.
ToDo 19 Need to make the project distribution more open. For example, introduce a variable NONNOWEBFILES that could be modified in Makefile.def.nw.

Search for LICENSE and GPL in the root directory.

The Perl part in the following chunk, computes the filenames that appear in files.list, but not in allprosefiles.list.

424make project distribution file 423+   (350)  423
project-distribution: allprosefiles.list fileslist release-date
        @echo "Creating $(PROJECTNAME) distribution..."
        echo manifest.$(projectname) > manifest.$(projectname)
        echo Makefile               >> manifest.$(projectname)
        $(PERL) \
            -e ’$$allprosefiles=$$ARGV[0];’\
            -e ’$$files=$$ARGV[1]; %A=();’\
            -e ’open(SF, $$allprosefiles);’\
            -e ’while (<SF>) {chomp; $$A{$$_}=1;}’\
            -e ’close SF;’\
            -e ’open(SF, $$files);’\
            -e ’while (<SF>) {chomp;’\
            -e ’    if (! ($$A{"$$_.nw"}==1)) {print "$$_.nw\n"}’\
            -e ’}’\
            -e ’close SF;’\
          allprosefiles.list files.list >> manifest.$(projectname)
        $(MAKE) VERSION=$(LIBRARYVERSION) tgz.$(projectname)

Defines:
project-distribution, used in chunk 423.

Uses allprosefiles.list 408, fileslist 439, LIBRARYVERSION 366, PERL 431b, PROJECTNAME 127, projectname 127, and release-date 417b.