Release.
[safe/jmp/vzgot] / Makefile
1 #--------------------------------------------------------------------
2 #to make Mentor executable
3 #--------------------------------------------------------------------
4 #variable checking
5 #devbase est fait sur le nom de dieux goth
6 #Odin,Gaus,Donar,Volla,Phol
7 ORIG?="montreal"
8 ifeq ("$(ORIG)","mercier")
9 export DEVBASE=odin
10 endif
11 ifeq ("$(ORIG)","longueuil")
12 export DEVBASE=gaus
13 endif
14 #defining devbase
15 DEVDIR=`(cd /home/safe ; pwd)`/safetst/$(DEVBASE)
16 #--------------------------------------------------------------------
17 dev     :  fclean chkmake
18            @ $(MAKE) $(NCPU) -s fdebug
19
20 devprod :  fclean chkmake
21            @ $(MAKE) $(NCPU) -s fprod
22
23 chkmake :  Makefile.inc Makefile
24            @ $(MAKE) -s  fclean
25            @ touch chkmake
26
27 fclean  :  clean
28            @ for i in $(PRIVDIRS) ;                             \
29              do                                                 \
30              echo "Doing now \"$$i clean\"" ;                   \
31              $(MAKE) -s  -C $$i clean ;                         \
32              done                       
33            @ rm -fr $(RPMDIR)/SOURCES/$(APLR)*.tgz              \
34                     $(APPNAME)*.src.rpm                         \
35                     $(APPNAME)*.*.x86_64.rpm                    \
36                     $(APPNAME)*.*.i386.rpm
37
38 fdebug  :  
39            @ $(MAKE) -s debug
40            @ for i in $(PRIVDIRS) ;                             \
41              do                                                 \
42              echo "Doing: $$i debug" ;                          \
43              $(MAKE) -s -C $$i debug ;                          \
44              done                       
45
46 fprod   :  
47            @ $(MAKE) -s prod
48            @ for i in $(PRIVDIRS) ;                             \
49              do                                                 \
50              echo "Doing: $$i prod" ;                           \
51              $(MAKE) -s -C $$i prod ;                           \
52              done                       
53
54 #--------------------------------------------------------------------
55 #to test application localy
56 vzboot  :  dev
57            @ $(MAKE) ACTION="boot cont" vzgotry
58         
59 vzgotry :  
60            - exec app/$(APPNAME) -b $(DEVDIR) -v -f -d9 $(ACTION)
61
62 #--------------------------------------------------------------------
63 #to save the current distribution
64 sauve   :  fclean
65            @ echo "starting RCS process"
66            @ support/sauver $(SRC)
67            @ for i in $(ALLDIRS) ; \
68              do  \
69              $(MAKE) -s -C $$i $@ ; \
70              done
71            @ echo "RCS process completed"
72 #--------------------------------------------------------------------
73 #creation d'un band de test
74 devbase :
75            @ (                                                  \
76              if [ -z $(DEVBASE) ] ; then                        \
77                echo "DEVBASE environment variable is missing" ; \
78              else                                               \
79                echo "Starting to build devbase \"$(DEVBASE)\"" ;\
80                $(MAKE) -s devil ;                               \
81              fi                                                 \
82              )
83
84 devil   :
85            @ $(MAKE) -s fclean fdebug 
86            @ echo "Creating \"$(DEVBASE)\" test executable"; 
87            @ (                                                  \
88              if [ -d $(DEVDIR) ] ; then                         \
89                rm -fr $(DEVDIR)/* ;                             \
90              else                                               \
91                mkdir $(DEVDIR) ;                                \
92              fi ;                                               \
93              )
94            @ #creating basic prexisting system directory        
95            @ mkdir -p                                           \
96                 $(DEVDIR)/$(VZDIR)/cont/.oldroot                \
97                 $(DEVDIR)/$(VZDIR)/cont/rootfs                  \
98                 $(DEVDIR)/usr/bin                               \
99                 $(DEVDIR)/var/tmp                               \
100                 $(DEVDIR)/var/lock/$(APPNAME)                   \
101                 $(DEVDIR)/tmp
102            @ echo "\"$(DEVBASE)\" now ready"
103
104 #--------------------------------------------------------------------
105 #to make a full distribution
106
107 distrib :  fclean rpm
108            $(MAKE) dorpm_distrib
109 #--------------------------------------------------------------------
110 #to test application
111 xtest   :  rpm
112            @ ssh -q -Y -t $(XTSTSYS) sudo                               \
113                 rm -f ~safe/rpmbuild/RPMS/i586/$(APPNAME)*.i586.rpm
114            @ ssh -q -Y -t $(XTSTSYS) sudo                               \
115                 rm -f ~safe/$(APPNAME)*.src.rpm
116            @ scp -q $(APPNAME)*.src.rpm $(XTSTSYS):
117            @ ssh -Y -t $(XTSTSYS)                               \
118                 "rpmbuild --rebuild $(APPNAME)*.src.rpm"
119            @ ssh -Y -t $(XTSTSYS) sudo                          \
120                 rpm -Uhv ~safe/rpmbuild/RPMS/i586/$(APPNAME)*.i586.rpm
121
122 test    :  binary
123            @ ssh safe@$(TSTSYS).safe.ca                                 \
124                 "rm -fr $(APPNAME)-*.x86_64.rpm"
125            @ scp -q                                             \
126                 $(RPMDIR)/RPMS/x86_64/$(APPNAME)-*.x86_64.rpm   \
127                 safe@$(TSTSYS).safe.ca:
128             @ ssh -Y -t safe@$(TSTSYS).safe.ca sudo             \
129                 rpm -Uhv ~safe/$(APPNAME)-*.x86_64.rpm
130
131 binary  :  rpm  
132            @ echo "Making RPM binary"
133            @ rm -fr $(RPMDIR)/RPMS/x86_64/$(APPNAME)-*.x86_64.rpm
134            @ rm -fr $(APPNAME)-*.x86_64.rpm
135            @ rpm --quiet -Uhv $(APLR)*.src.rpm  > /dev/null
136            @ rpmbuild                                           \
137                 --ba                                            \
138                 --quiet                                         \
139                 --rebuild                                       \
140                 $(RPMDIR)/SPECS/$(APPNAME).spec
141            @ cp $(RPMDIR)/RPMS/x86_64/$(APPNAME)-*.x86_64.rpm . 
142            @ echo "RPM binary completed"
143
144
145 rpmlint :  binary
146            @ rpmlint $(APPNAME)-*.x86_64.rpm 
147
148 release :  binary
149            @ ssh $(FTPSITE).safe.ca                             \
150                 mkdir -p /var/ftp/pub/linux/vzgot/archives
151            @ ssh $(FTPSITE).safe.ca                             \
152                 mv /var/ftp/pub/linux/vzgot/*.rpm               \
153                    /var/ftp/pub/linux/vzgot/archives
154            @ scp -p support/{README,QUICK-START}                \
155                 $(APPNAME)-*.rpm                                \
156                 $(FTPSITE).safe.ca:/var/ftp/pub/linux/vzgot
157            @ grep -v '^[#.*]' Changes   |                       \
158                 ssh $(FTPSITE).safe.ca                          \
159                    "cat - > /var/ftp/pub/linux/vzgot/Changes"
160 #--------------------------------------------------------------------
161 #to make the RPM SRC file
162 rpm     :
163            @ echo "Making RPM src"
164            @ $(MAKE) -s vztar
165            @ rm -fr                                             \
166                 $(RPMDIR)/SOURCES/$(APLR)*.tgz                  \
167                 $(APPNAME)*.src.rpm
168            @ mv $(APLR).tgz $(RPMDIR)/SOURCES
169            @ rpmbuild -bs                                       \
170                 --quiet                                         \
171                 --define "_topdir /home/jmp/RPM"                \
172                 support/$(APPNAME).spec > /dev/null 2>&1
173            @ mv $(RPMDIR)/SRPMS/$(APLR)*.src.rpm .
174            @ echo "RPM src completed"
175         
176 vztar   :
177            @ rm -fr $(APLR).tgz
178            @ mkdir -p                                           \
179                 $(APLR)/conf                                    \
180                 $(APLR)/lib                                     \
181                 $(APLR)/app                                     \
182                 $(APLR)/cgroup.d                                \
183                 $(APLR)/etc                                     \
184                 $(APLR)/etc/sysconfig                           \
185                 $(APLR)/etc/snmp                                \
186                 $(APLR)/shell
187            @ #copying version, build_date and info file
188            @ date > $(APLR)/$(APLR).build_date
189            @ #adding RPM data
190            @ cp -ap RPM $(APLR)
191            @ #adding group information
192            @ cp -ap cgroup.d/devices.* $(APLR)/cgroup.d
193            @ #adding application sources
194            @ cp -a lib/{*.c,*.h} $(APLR)/lib
195            @ cp -a app/*.c $(APLR)/app
196            @ cp -a shell/vzgot.* $(APLR)/shell
197            @ #adding configuration file
198            @ cp -a support/vzgot_config $(APLR)/conf
199            @ cp -a support/vzgot_list $(APLR)/conf
200            @ cp -a support/redhat_init.sh $(APLR)/conf
201            @ cp -a support/{README,QUICK-START} $(APLR)
202            @ grep -v '^[#.*]' Changes > $(APLR)/Changes
203            @ cp -a etc/{users,groups,sudoers} $(APLR)/etc
204            @ cp -a etc/{resolv.conf,shadow} $(APLR)/etc
205            @ cp -a etc/iptables $(APLR)/etc/sysconfig
206            @ cp -a etc/snmpd.conf $(APLR)/etc/snmp
207            @ #adding construction file
208            @ cp -a Makefile.inc  $(APLR)/Makefile
209            @ @ cp -a lib/Makefile.inc $(APLR)/lib/Makefile
210            @ @ cp -a app/Makefile.inc $(APLR)/app/Makefile
211            @ tar zcf $(APLR).tgz $(APLR)
212            @ rm -fr $(APLR)
213
214 #--------------------------------------------------------------------
215 togit   :  fclean
216            @ git add .
217            @ git clean -f -q
218            @ echo "Ready for \"git commit -a\""
219
220 #--------------------------------------------------------------------
221 SRC     =                                                       \
222            Changes                                              \
223            Makefile.inc
224
225 ALLDIRS =                                                       \
226           $(SUBDIRS)                                            \
227           etc cgroup.d shell support
228
229
230 PROG=   $(APPNAME)
231
232 VZDIR=/var/lib/vzgot
233 #--------------------------------------------------------------------
234 include ./Makefile.inc
235 include /etc/saferepo/Makefile.dorpm
236 #--------------------------------------------------------------------
237 #rpm definitions
238 RPMDIR  =       ~/RPM
239 TSTSYS  =       Sorel
240 XTSTSYS =       192.219.254.58
241 FTPSITE =       ftploc
242 #====================================================================
243 .PHONY: sauve binary rpm rpmlint chkmake togit
244 #--------------------------------------------------------------------