rework installation process to use git rev info
[bse.git] / Makefile
1 VERSION=0.19
2 DISTNAME=bse-$(VERSION)
3 DISTBUILD=$(DISTNAME)
4 DISTTAR=../$(DISTNAME).tar
5 DISTTGZ=$(DISTTAR).gz
6 WEBBASE=/home/httpd/html/bse
7
8 MODULES=$(shell grep cgi-bin/.*\.pm MANIFEST | sed -e '/^\#/d' -e 's/[ \t].*// -e /^site\/cgi-bin\/modules\/BSE\/Modules\.pm$/d' )
9
10 help:
11         @echo make dist - build the tar.gz file and copy to distribution directory
12         @echo make 'archive - build the tar.gz (in the parent directory)'
13         @echo make clean - delete generated files
14         @echo make distdir - build distribution directory
15         @echo make docs - build documentation
16         @echo make testup - upgrade an installation
17
18 # this target needs to be modified so that the output directory includes
19 # the release number
20 dist: cleantree $(DISTTGZ)
21         cp $(DISTTGZ) $(WEBBASE)/dists/
22         cp site/docs/bse.html $(WEBBASE)/relnotes/bse-$(VERSION).html
23         cp site/docs/*.html $(WEBBASE)/docs
24         git tag -m "$(VERSION) release" r$(VERSION)
25
26 # make sure everything is committed
27 cleantree:
28         if grep -q 'perl.*-d:ptkdb' site/cgi-bin/*.pl site/cgi-bin/admin/*.pl ; \
29           then echo '***' The debugger is still enabled ; \
30           exit 1; \
31         fi
32         test -z "`git status -s`" || ( echo "Uncommitted files in the tree"; exit 1 )
33
34 archive: $(DISTTGZ)
35
36 $(DISTTGZ): distdir
37         if [ -e $(DISTTGZ) ] ; \
38           then echo $(DISTTGZ) already exists ; \
39                exit 1 ; \
40         fi
41         tar cf $(DISTTAR) $(DISTBUILD)
42         -perl -MExtUtils::Command -e rm_rf $(DISTBUILD)
43         gzip $(DISTTAR)
44
45 #       tar czf $(DISTFILE) -C .. bse --exclude '*~' --exclude '*,v' --exclude 'pod2html-*cache'
46
47 # recent ExtUtils::Manifest don't copy the executable bit, fix that here
48
49 distdir: docs dbinfo version modversion
50         -perl -MExtUtils::Command -e rm_rf $(DISTBUILD)
51         perl -MExtUtils::Manifest=manicopy,maniread -e "manicopy(maniread(), '$(DISTBUILD)')"
52         mkdir $(DISTBUILD)/site/htdocs/shop
53         find $(DISTBUILD) -type f | xargs chmod u+w
54         for i in `cat MANIFEST` ; do if [ -x $$i ] ; then chmod a+x $(DISTBUILD)/$$i ; fi ; done
55
56 clean:
57         -perl -MExtUtils::Command -e rm_f site/htdocs/index.html site/htdocs/shop/*.html site/htdocs/a/*.html
58         -cd site/htdocs/images ; \
59         for i in *.gif ; do \
60           if [ $$i != trans_pixel.gif ] ; then \
61             rm $$i ; \
62           fi ; \
63         done
64         -perl -MExtUtils::Command -e rm_f site/htdocs/images/*.jpg
65         -perl -MExtUtils::Command -e rm_rf $(DISTBUILD)
66
67 docs: INSTALL.txt INSTALL.html otherdocs
68
69 INSTALL.txt: INSTALL.pod
70         pod2text <INSTALL.pod >INSTALL.txt
71
72 INSTALL.html: INSTALL.pod
73         pod2html --infile=INSTALL.pod --outfile=INSTALL.html
74         -rm pod2html-dircache pod2html-itemcache pod2htmd.tmp pod2htmi.tmp
75
76 otherdocs:
77         cd site/docs ; make all
78
79 dbinfo: site/util/mysql.str
80
81 site/util/mysql.str: schema/bse.sql
82         perl schema/mysql_build.pl >site/util/mysql.str
83
84 version: site/cgi-bin/modules/BSE/Version.pm
85
86 site/cgi-bin/modules/BSE/Version.pm: Makefile
87         perl site/util/bse_mkgitversion.pl $(VERSION) site/cgi-bin/modules/BSE/Version.pm
88
89 modversion: site/cgi-bin/modules/BSE/Modules.pm
90
91 site/cgi-bin/modules/BSE/Modules.pm: $(MODULES) site/util/make_versions.pl
92         perl site/util/make_versions.pl site/cgi-bin/modules/BSE/Modules.pm
93
94 # this is very rough
95 testinst: distdir
96         perl localinst.perl $(DISTBUILD)
97         perl -MExtUtils::Command -e rm_rf $(DISTBUILD)
98         cd `perl -lne 'do { print $$1; exit; } if /^base_dir\s*=\s*(.*)/' test.cfg`/util ; perl loaddata.pl ../data/db
99
100 testup: checkver distdir
101         perl localinst.perl $(DISTBUILD) leavedb
102         perl -MExtUtils::Command -e rm_rf $(DISTBUILD)
103         cd `perl -lne 'do { print $$1; exit; } if /^base_dir\s*=\s*(.*)/' test.cfg`/util ; perl upgrade_mysql.pl -b ; perl loaddata.pl ../data/db
104
105 checkver:
106         if [ -d .git ] ; then perl site/util/check_versions.pl ; fi
107
108 TEST_FILES=t/*.t
109
110 test: testup
111         perl -MTest::Harness=runtests -Isite/cgi-bin/modules -It -e 'runtests @ARGV' $(TEST_FILES)
112
113 manicheck:
114         perl -MExtUtils::Manifest=manicheck -e 'manicheck()'
115
116 filecheck:
117         perl -MExtUtils::Manifest=filecheck -e 'filecheck()'
118
119 manifest:
120         perl -MExtUtils::Manifest=mkmanifest -e mkmanifest