source: ProjectBuilder/projects/fossology/pbconf/trunk/fossology/rpm/fossology.spec@ 700

Last change on this file since 700 was 700, checked in by Bruno Cornec, 15 years ago

Except one remaining issue to fix with postgresql conf, this fossology setup creates a nice rpm for centos 5

File size: 7.0 KB
Line 
1#
2# $Id$
3#
4
5Name: PBREALPKG
6Version: PBVER
7Release: PBTAGPBSUF
8License: PBLIC
9Group: PBGRP
10Url: PBURL
11Source: PBREPO/PBSRC
12#PBPATCHSRC
13BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(id -u -n)
14Requires: postgresql php php-pear php-pgsql libxml2 binutils bzip2 cpio mkisofs poppler-utils rpm tar unzip gzip httpd which PBDEP
15BuildRequires: postgresql-devel libxml2 gcc make perl PBBUILDDEP
16Summary: FOSSology is a licenses exploration tool
17Summary(fr): FOSSology est un outil d'exploration de licenses
18
19%package devel
20Summary: Devel part of FOSSology (a licenses exploration tool)
21Summary(fr): Partie dedévelopment de FOSSology, outil d'exploration de licenses
22Group: PBGRP
23
24%description
25PBDESC
26
27%description -l fr
28FOSSology est un outil d'exploration de licenses
29
30%description devel
31Devel part.
32PBDESC
33
34%description -l fr devel
35Partie développement de FOSSology, outil d'exploration de licenses
36
37%prep
38%setup -q
39#PBPATCHCMD
40
41%build
42make SYSCONFDIR=%{_sysconfdir}
43#make %{?_smp_mflags} SYSCONFDIR=%{_sysconfdir}
44
45%install
46%{__rm} -rf $RPM_BUILD_ROOT
47make DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_usr} SYSCONFDIR=%{_sysconfdir} LOCALSTATEDIR=%{_var} LIBDIR=%{_libdir} install
48mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/httpd/conf.d
49cat > $RPM_BUILD_ROOT/%{_sysconfdir}/httpd/conf.d/PBPROJ.conf << EOF
50Alias /repo/ /usr/share/PBPROJ/www/
51<Directory "/usr/share/PBPROJ/www">
52 AllowOverride None
53 Options FollowSymLinks MultiViews
54 Order allow,deny
55 Allow from all
56 # uncomment to turn on php error reporting
57 #php_flag display_errors on
58 #php_value error_reporting 2039
59</Directory>
60EOF
61cp utils/fo-cleanold $RPM_BUILD_ROOT/%{_usr}/lib/PBPROJ/
62
63#rm -f $RPM_BUILD_ROOT/%{_sysconfdir}/default/PBPROJ
64
65%clean
66%{__rm} -rf $RPM_BUILD_ROOT
67
68%files
69%defattr(-,root,root)
70%doc ChangeLog
71%doc COPYING COPYING.LGPL HACKING README INSTALL INSTALL.multi LICENSE
72#AUTHORS NEWS
73%config(noreplace) %{_sysconfdir}/httpd/conf.d/*.conf
74%config(noreplace) %{_sysconfdir}/cron.d/*
75%config(noreplace) %{_sysconfdir}/PBPROJ/*
76%dir %{_sysconfdir}/PBPROJ
77%dir %{_usr}/lib/PBPROJ
78%dir %{_datadir}/PBPROJ
79%{_sysconfdir}/init.d/*
80%{_usr}/lib/PBPROJ/*
81%{_datadir}/PBPROJ/*
82%{_bindir}/*
83%{_mandir}/man1/*
84
85%files devel
86%{_includedir}/*
87%{_libdir}/*.a
88
89%post
90# Adjust the kernel shmmax (described in detail in section 2.1.3)
91echo 512000000 > /proc/sys/kernel/shmmax
92grep -q kernel.shmmax /etc/sysctl.conf
93if [ $? -eq 0 ]; then
94 perl -pi -e "s/^[#\s]*kernel.shmmax\s*=.*/kernel.shmmax=512000000/" /etc/sysctl.conf
95else
96 echo "kernel.shmmax=512000000" >> /etc/sysctl.conf
97fi
98
99# Adjust postgresql config (described in detail in section 2.1.4) for Fossology
100PGCONF=/var/lib/pgsql/data/postgresql.conf
101if [ ! -f $PGCONF ]; then
102 cp /usr/share/pgsql/postgresql.conf.sample $PGCONF
103fi
104grep -qw listen_addresses $PGCONF
105if [ $? -eq 0 ]; then
106 perl -pi -e "s/^[#\s]*listen_addresses.*=.*/listen_addresses = '*'/" $PGCONF
107else
108 echo "listen_addresses = '*'" >> $PGCONF
109fi
110grep -qw max_connections $PGCONF
111if [ $? -eq 0 ]; then
112 perl -pi -e "s/^[#\s]*max_connections.*=.*/max_connections = 50/" $PGCONF
113else
114 echo "max_connections = 50" >> $PGCONF
115fi
116grep -qw shared_buffers $PGCONF
117if [ $? -eq 0 ]; then
118 perl -pi -e "s/^[#\s]*shared_buffers.*=.*/shared_buffers = 32768/" $PGCONF
119else
120 echo "shared_buffers = 32768" >> $PGCONF
121fi
122grep -qw work_mem $PGCONF
123if [ $? -eq 0 ]; then
124 perl -pi -e "s/^[#\s]*work_mem.*=.*/work_mem = 10240/" $PGCONF
125else
126 echo "work_mem = 10240" >> $PGCONF
127fi
128# min max_fsm_relations*16, 6 bytes each
129grep -qw max_fsm_pages $PGCONF
130if [ $? -eq 0 ]; then
131 perl -pi -e "s/^[#\s]*max_fsm_pages.*=.*/max_fsm_pages = 100000/" $PGCONF
132else
133 echo "max_fsm_pages = 100000" >> $PGCONF
134fi
135grep -qw fsync $PGCONF
136if [ $? -eq 0 ]; then
137 perl -pi -e "s/^[#\s]*fsync.*=.*/fsync = off/" $PGCONF
138else
139 echo "fsync = off" >> $PGCONF
140fi
141# recover from partial page writes
142grep -qw full_page_writes $PGCONF
143if [ $? -eq 0 ]; then
144 perl -pi -e "s/^[#\s]*full_page_writes.*=.*/full_page_writes = off/" $PGCONF
145else
146 echo "full_page_writes = off" >> $PGCONF
147fi
148grep -qw commit_delay $PGCONF
149if [ $? -eq 0 ]; then
150 perl -pi -e "s/^[#\s]*commit_delay.*=.*/commit_delay = 1000/" $PGCONF
151else
152 echo "commit_delay = 1000" >> $PGCONF
153fi
154grep -qw effective_cache_size $PGCONF
155if [ $? -eq 0 ]; then
156 perl -pi -e "s/^[#\s]*effective_cache_size.*=.*/effective_cache_size = 25000/" $PGCONF
157else
158 echo "effective_cache_size = 25000" >> $PGCONF
159fi
160# -1 is disabled, 0 logs all statements
161grep -qw log_min_duration_statement $PGCONF
162if [ $? -eq 0 ]; then
163 perl -pi -e "s/^[#\s]*log_min_duration_statement.*=.*/log_min_duration_statement = -1/" $PGCONF
164else
165 echo "log_min_duration_statement = -1" >> $PGCONF
166fi
167# prepend a time stamp to all log entries
168grep -qw log_line_prefix $PGCONF
169if [ $? -eq 0 ]; then
170 perl -pi -e "s/^[#\s]*log_line_prefix.*=.*/log_line_prefix = '%t %h %c'/" $PGCONF
171else
172 echo "log_line_prefix = '%t %h %c'" >> $PGCONF
173fi
174
175# Check postgresql is running
176LANGUAGE=C /etc/init.d/postgresql status 2>&1 | grep -q stop
177if [ $? -eq 0 ]; then
178 /etc/init.d/postgresql start
179fi
180chkconfig --add postgresql
181
182cat >> /var/lib/pgsql/data/pg_hba.conf << EOF
183# Added for FOSSology connection
184# Local connections
185local all all md5
186# IPv4 local connections:
187host all all 127.0.0.1/32 md5
188EOF
189# reload doesn't seem to work here :-(
190/etc/init.d/postgresql restart
191
192# Adjust PHP config (described in detail in section 2.1.5)
193grep -qw memory_limit PBPHPINI
194if [ $? -eq 0 ]; then
195 perl -pi -e "s/^[#\s]*memory_limit.*=.*/memory_limit = 702M/" PBPHPINI
196else
197 echo "memory_limit = 702M" >> PBPHPINI
198fi
199grep -qw post_max_size PBPHPINI
200if [ $? -eq 0 ]; then
201 perl -pi -e "s/^[#\s]*post_max_size.*=.*/post_max_size = 702M/" PBPHPINI
202else
203 echo "post_max_size = 702M" >> PBPHPINI
204fi
205grep -qw upload_max_filesize PBPHPINI
206if [ $? -eq 0 ]; then
207 perl -pi -e "s/^[#\s]*upload_max_filesize.*=.*/upload_max_filesize = 702M/" PBPHPINI
208else
209 echo "upload_max_filesize = 702M" >> PBPHPINI
210fi
211grep -qw allow_call_time_pass_reference PBPHPINI
212if [ $? -eq 0 ]; then
213 perl -pi -e "s/^[#\s]*allow_call_time_pass_reference.*=.*/allow_call_time_pass_reference = On/" PBPHPINI
214else
215 echo "allow_call_time_pass_reference = On" >> PBPHPINI
216fi
217
218# Add apache config for fossology (described in detail in section 2.1.6) - done in install
219# Run the postinstall script
220/usr/lib/PBPROJ/fo-postinstall
221
222# Adds user httpd to fossy group
223perl -pi -e 's/^fossy:x:([0-9]+):/fossy:x:$1:httpd/' /etc/group
224
225# httpd
226LANGUAGE=C /etc/init.d/httpd status 2>&1 | grep -q stop
227if [ $? -eq 0 ]; then
228 /etc/init.d/httpd start
229else
230 /etc/init.d/httpd reload
231fi
232chkconfig --add httpd
233
234# Test that things are installed correctly
235/usr/lib/PBPROJ/fossology-scheduler -t
236if [ $? -ne 0 ]; then
237 exit -1
238fi
239
240chkconfig --add PBPROJ
241/etc/init.d/PBPROJ start
242
243%preun
244# If FOSSology is running, stop it before removing.
245/etc/init.d/PBPROJ stop
246chkconfig --del PBPROJ 2>&1 > /dev/null
247
248# We should do some cleanup here (fossy account ...)
249/usr/lib/PBPROJ/fo-cleanold
250
251%changelog
252PBLOG
Note: See TracBrowser for help on using the repository browser.