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.

418make project distribution file 418  (346)  419
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 409, distclean 401b, html 375, pdf 374b, project-distribution 419, and ps 373b.
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.

419make project distribution file 418+   (346)  418
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 418.

Uses allprosefiles.list 403, fileslist 435, LIBRARYVERSION 362, PERL 427b, PROJECTNAME 124, projectname 124, and release-date 412b.