2 # RPM spec file for FusionForge
4 # Initial work for 4.8 by JL Bond Consulting
5 # Reworked for 5.1 by Alain Peyrat <aljeux@free.fr>
7 # Copyright (C) 2010 Alain Peyrat
9 # TODO: Generate a random password to avoid sites with default pass.
17 %define gfgroup gforge
19 %define httpduser apache
20 %define httpdgroup apache
22 %define fforge_admin fforgeadmin
23 %define fforge_passwd fforgeadmin
25 %define FORGE_DIR %{_datadir}/gforge
26 %define FORGE_CONF_DIR %{_sysconfdir}/gforge
27 %define FORGE_LANG_DIR %{_datadir}/locale
28 %define FORGE_VAR_LIB %{_var}/lib/gforge
30 %define reloadhttpd() /etc/init.d/httpd httpd reload >/dev/null 2>&1
33 Summary: FusionForge Collaborative Development Environment
39 Group: Development/Tools
40 Source0: %{name}-%{version}.tar.bz2
41 Source1: README.mediawiki.jlbond
42 Source2: LocalSettings.php
43 Patch1: fusionforge-4.8.3-mediawiki.patch
44 Patch2: fusionforge-4.8.3-register_globals.patch
45 URL: http://www.fusionforge.org/
46 BuildRoot: %{_tmppath}/%{name}-%{version}-root
47 Packager: Alain Peyrat <aljeux@free.fr>
49 # requirements as derived from fusionforge-install-1-deps.php script
50 Requires: httpd, mod_dav_svn, mod_ssl, php, php-pgsql, php-gd, php-mbstring, mailman
51 Requires: postgresql, postgresql-libs, postgresql-server, postgresql-contrib
52 Requires: postfix, openssh, inetd, which
54 Requires: /bin/sh, /bin/bash
55 Requires: perl, perl-DBI, perl-HTML-Parser, perl-Text-Autoformat, perl-Mail-Sendmail, perl-Sort-Versions
57 Requires: php-jpgraph php-gd
58 Requires: /var/www/jpgraph-1.19/jpgraph.php
59 #Requires: libnss-pgsql >= 1.4
62 Requires: htmlpurifier >= 4.0.0
65 Requires: /usr/bin/newaliases
67 # BuildRequires: sed, perl
69 Provides: gforge = %{version}
72 FusionForge provides many tools to aid collaboration in a
73 development project, such as bug-tracking, task management,
74 mailing-lists, SCM repository, forums, support request helper,
75 web/FTP hosting, release management, etc. All these services are
76 integrated into one web site and managed through a web interface.
78 %package plugin-aselectextauth
79 Summary: A-select external authentication for FusionForge
80 Group: Development/Tools
81 Requires: %{name} >= %{version}, php, postgresql
82 %description plugin-aselectextauth
83 A system plugin for authenticating users in fusionforge. A-Select is a framework
84 where users can be authenticated by several means with Authentication
87 %package plugin-cvssyncmail
88 Summary: Provides email notifications of changes to CVS repositories
89 Group: Development/Tools
90 Requires: %{name} >= %{version}, %{name}-scmcvs, python, php
91 %description plugin-cvssyncmail
92 This plugin adds the capability to notify users of changes to CVS repositories
95 %package plugin-cvstracker
96 Summary: Links CVS log messages to trackers and tasks.
97 Group: Development/Tools
98 Requires: %{name} >= %{version}, %{name}-scmcvs, php, postgresql
99 %description plugin-cvstracker
100 This is a fusionforge plugin that allows linking CVS log messages to
101 trackers and tasks. It will review all commits in a project and search for
102 specific string to know which task or tracker is related.
104 %package plugin-externalsearch
105 Summary: external search plugin for FusionForge
106 Group: Development/Tools
107 Requires: %{name} >= %{version}, php
108 %description plugin-externalsearch
109 This plugin adds a new search engine to your FusionForge site. It allows
110 your users to search your FusionForge site through external search engines
111 which have indexed it. You can define search engines you want to use in
112 the configuration file.
114 %package plugin-forumml
115 Summary: Mailman to forums plugin for FusionForge
116 Group: Development/Tools
117 Requires: %{name} >= %{version}, php
118 %description plugin-forumml
119 ForumML integes mailing lists as forums in FusionForge
121 %package plugin-fckeditor
122 Summary: FCKEditor plugin for FusionForge
123 Group: Development/Tools
124 Requires: %{name} >= %{version}, php
125 %description plugin-fckeditor
126 FCKEditor is a WYSIWYG text editor that displays within a web browser.
128 %package plugin-gravatar
129 Summary: Gravatar plugin for FusionForge
130 Group: Development/Tools
131 Requires: %{name} >= %{version}, php
132 %description plugin-gravatar
133 This plugin adds faces images to FusionForge users using the gravatar service.
135 %package plugin-hudson
136 Summary: Hudson continous integration plugin for FusionForge
137 Group: Development/Tools
138 Requires: %{name} >= %{version}, php
139 %description plugin-hudson
140 This plugin adds hudson integration to FusionForge.
142 %package plugin-ldapextauth
143 Summary: external LDAP authentication for FusionForge plugin
144 Group: Development/Tools
145 Requires: %{name} >= %{version}, php
146 %description plugin-ldapextauth
147 This plugin provides LDAP authentication capability for FusionForge.
149 %package plugin-mantis
150 Summary: MantisBT plugin for FusionForge
151 Group: Development/Tools
152 Requires: %{name} >= %{version}, php
153 %description plugin-mantis
154 A plugin to use the MantisBT web-based bug tracking system with FusionForge.
156 %package plugin-mediawiki
157 Summary: Mediawiki plugin for FusionForge
158 Group: Development/Tools
159 Requires: %{name} >= %{version}, php, mediawiki
160 %description plugin-mediawiki
161 This is a plugin to integrate MediaWiki within FusionForge.
163 %package plugin-online_help
164 Summary: online_help plugin for FusionForge
165 Group: Development/Tools
166 Requires: %{name} >= %{version}, php
167 %description plugin-online_help
168 This is a online_help plugin within FusionForge.
171 Summary: OSLC plugin for FusionForge
172 Group: Development/Tools
173 Requires: %{name} >= %{version}, php, php-ZendFramework > 1.10
174 %description plugin-oslc
175 OSLC-CM compatible plugin for FusionForge tracker system.
176 OSLC-CM is a standard specification for APIs in Change Management
177 applications. It is based on Web technologies such as REST, RDF, or AJAX.
178 This package provides an OSLC-CM V2 compatible plugin for FusionForge
181 %package plugin-projects_hierarchy
182 Summary: projects_hierarchy plugin for FusionForge
183 Group: Development/Tools
184 Requires: %{name} >= %{version}, php
185 %description plugin-projects_hierarchy
186 This is a projects_hierarchy plugin within FusionForge.
188 %package plugin-quota_management
189 Summary: quota_management plugin for FusionForge
190 Group: Development/Tools
191 Requires: %{name} >= %{version}, php
192 %description plugin-quota_management
193 This is a quota_management plugin within FusionForge.
195 %package plugin-scmarch
196 Summary: Arch version control plugin for FusionForge
197 Group: Development/Tools
198 Requires: %{name} >= %{version}, php, arch
199 %description plugin-scmarch
200 This is a plugin to integrate Arch version control system with FusionForge
202 %package plugin-scmbzr
203 Summary: Bazaar version control plugin for FusionForge
204 Group: Development/Tools
205 Requires: %{name} >= %{version}, php, bazaar
206 %description plugin-scmbzr
207 This is a plugin to integrate Bazaar version control system with FusionForge
209 %package plugin-scmdarcs
210 Summary: DARCS version control plugin for FusionForge
211 Group: Development/Tools
212 Requires: %{name} >= %{version}, php, darcs
213 %description plugin-scmdarcs
214 This is a plugin to integrate DARCS version control system with FusionForge
216 %package plugin-scmgit
217 Summary: Git version control plugin for FusionForge
218 Group: Development/Tools
219 Requires: %{name} >= %{version}, php, git, gitweb
220 %description plugin-scmgit
221 This is a plugin to integrate Git version control system with FusionForge
223 %package plugin-scmhg
224 Summary: Mercurial (hg) version control plugin for FusionForge
225 Group: Development/Tools
226 Requires: %{name} >= %{version}, php, hg
227 %description plugin-scmhg
228 This is a plugin to integrate Mercurial (hg) version control system with FusionForge
230 %package plugin-scmccase
231 Summary: Clear Case plugin for FusionForge
232 Group: Development/Tools
233 Requires: %{name} >= %{version}, php
234 %description plugin-scmccase
235 This is the Clear Case plugin for FusionForge. It creats Clear Case repositories
236 for projects within FusionForge.
238 %package plugin-scmcvs
239 Summary: CVS plugin for FusionForge
240 Group: Development/Tools
241 Requires: %{name} >= %{version}, php, cvs
242 %description plugin-scmcvs
243 FusionForge is a web-based Collaborative Development Environment offering
244 easy access to CVS, mailing lists, bug tracking, message
245 boards/forums, task management, permanent file archival, and total
246 web-based administration.
248 This RPM installs SCM CVS plugin for FusionForge and provides CVS support
251 It also provides a specific version of CVSWeb wrapped in FusionForge.
253 %package plugin-scmsvn
254 Summary: Subversion plugin for FusionForge
255 Group: Development/Tools
256 Requires: %{name} >= %{version}, php, subversion
257 %description plugin-scmsvn
258 This RPM installs SCM SVN plugin for FusionForge and provides svn support
261 %package plugin-svncommitemail
262 Summary: subversion commit email plugin for FusionForge
263 Group: Development/Tools
264 Requires: %{name} >= %{version}, php, subversion, perl, %{name}-scmsvn >= %{version}
265 %description plugin-svncommitemail
266 This RPM installs subversion commit email notification plugin for FusionForge.
268 %package plugin-svntracker
269 Summary: SVNTracker plugin for FusionForge
270 Group: Development/Tools
271 Requires: %{name} >= %{version}, php, subversion, perl, postgresql, %{name}-scmsvn >= %{version}
272 %description plugin-svntracker
273 SVNTracker plugin allows linking SVN log messages to Trackers and tasks.
274 It will review all commits in a project and search for a specific string
275 to know which task or tracker is related.
277 %package plugin-blocks
278 Summary: Blocks plugin for FusionForge
279 Group: Development/Tools
280 Requires: %{name} >= %{version}
281 %description plugin-blocks
282 HTML blocks plugin for FusionForge.
284 %package plugin-extratabs
285 Summary: extratabs plugin for FusionForge
286 Group: Development/Tools
287 Requires: %{name} >= %{version}
288 %description plugin-extratabs
289 HTML extratabs plugin for FusionForge.
292 Summary: Wiki plugin for FusionForge
293 Group: Development/Tools
294 Requires: %{name} >= %{version}, php, postgresql
295 %description plugin-wiki
296 Wiki plugin for FusionForge. Allows for one wiki per project, integrated search,
297 page edits displayed on activity tab, and multi-project wiki preferences.
299 %package plugin-projectlabels
300 Summary: Labels plugin for FusionForge
301 Group: Development/Tools
302 Requires: %{name} >= %{version}, php, postgresql
303 %description plugin-projectlabels
304 Project Labels plugin for FusionForge.
306 %package plugin-contribtracker
307 Summary: contribtracker plugin for FusionForge
308 Group: Development/Tools
309 Requires: %{name} >= %{version}, php, postgresql
310 %description plugin-contribtracker
311 contribtracker plugin for FusionForge.
313 %package plugin-globalsearch
314 Summary: globalsearch plugin for FusionForge
315 Group: Development/Tools
316 Requires: %{name} >= %{version}, php, postgresql
317 %description plugin-globalsearch
318 globalsearch plugin for FusionForge.
320 %package plugin-mailman
321 Summary: Mailman plugin for FusionForge
322 Group: Development/Tools
323 Requires: %{name} >= %{version}, php
324 %description plugin-mailman
325 Mailman plugin for FusionForge.
327 %package plugin-mantisbt
328 Summary: mantisbt plugin for FusionForge
329 Group: Development/Tools
330 Requires: %{name} >= %{version}, php, postgresql
331 %description plugin-mantisbt
332 mantisbt plugin for FusionForge.
341 # empty build section
344 %{__rm} -rf $RPM_BUILD_ROOT
346 # creating required directories
347 %{__install} -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d
348 %{__install} -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/cron.d
349 %{__install} -m 755 -d $RPM_BUILD_ROOT/bin
350 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_DIR}
351 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_DIR}/lib
352 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_CONF_DIR}
353 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.d
354 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.conf.d
355 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/config.ini.d
356 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/plugins
357 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_LANG_DIR}
358 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}
359 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/upload
360 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/scmtarballs
361 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/scmsnapshots
362 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/homedirs
363 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/dumps
364 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/chroot/scmrepos/svn
365 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/chroot/scmrepos/cvs
366 %{__install} -m 755 -d $RPM_BUILD_ROOT/home/groups
367 # mock mediawiki directory because we symlink GForge skin to Monobook
368 %{__install} -m 755 -d $RPM_BUILD_ROOT/usr/share/mediawiki/skins
370 # we define a search and replace function, we'll be using this a lot
371 # to fix several parts of the installation
374 /usr/bin/find . -type f | xargs grep -l ${1} | xargs %{__sed} -i -e "s+${1}+${2}+g"
377 # we need to fix up the fusionforge-install-3-db.php script to ref %{FORGE_DIR}
378 search_and_replace "/opt/gforge" "%{FORGE_DIR}"
381 %{__cp} -a * $RPM_BUILD_ROOT/%{FORGE_DIR}/
383 # create project vhost space symlink
384 %{__ln_s} /home/groups $RPM_BUILD_ROOT/%{FORGE_VAR_LIB}/homedirs/groups
385 # install restricted shell for cvs accounts
386 %{__cp} -a plugins/scmcvs/bin/cvssh.pl $RPM_BUILD_ROOT/bin/
388 # Fix configuration files entries (various sys_* variables)
389 %{__cp} -a etc/local.inc.example $RPM_BUILD_ROOT/%{FORGE_CONF_DIR}/local.inc
390 %{__sed} -i -e "s!/path/to/gforge!%{FORGE_DIR}!g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
391 %{__sed} -i -e "s!/path/to/jpgraph!/var/www/jpgraph-1.19!g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
392 %{__sed} -i -e "s/\$sys_dbname=.*/\$sys_dbname='%{dbname}';/g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
393 %{__sed} -i -e "s/\$sys_dbuser=.*/\$sys_dbuser='%{dbuser}';/g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
394 %{__sed} -i -e "s/\$sys_apache_user=.*/\$sys_apache_user='%{httpduser}';/g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
395 %{__sed} -i -e "s/\$sys_apache_group=.*/\$sys_apache_group='%{httpdgroup}';/g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
396 %{__sed} -i -e "s|\$sys_plugins_path=.*|\$sys_plugins_path=\"%{FORGE_DIR}/plugins\";|g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
397 %{__sed} -i -e "s|\$sys_upload_dir=.*|\$sys_upload_dir=\"\$sys_var_path/upload\";|g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
398 %{__sed} -i -e "s|\$sys_urlroot=.*|\$sys_urlroot=\"%{FORGE_DIR}/www\";|g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
400 # Replace sys_localinc, sys_gfdbname, sys_gfdbuser
401 %{__cp} -a etc/httpd.secrets.example $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.secrets
402 %{__sed} -i -e "s|sys_localinc.*$|sys_localinc %{FORGE_CONF_DIR}/local.inc|g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.secrets
403 %{__sed} -i -e "s|sys_gfdbname.*$|sys_gfdbname %{dbname}|g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.secrets
404 %{__sed} -i -e "s|sys_gfdbuser.*$|sys_gfdbname %{dbuser}|g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.secrets
406 # Apache configuration file
407 %{__cp} -a etc/gforge-httpd.conf.example $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/gforge.conf
408 %{__sed} -i -e 's|.*php_value[[:space:]]*include_path.*$|\tphp_value\tinclude_path ".:/usr/share/gforge/www/include:/usr/share/gforge:/etc/gforge:/usr/share/gforge/common:/usr/share/gforge/www:/usr/share/gforge/plugins"|' $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/gforge.conf
409 # install fusionforge crontab
410 %{__install} -m 644 packaging/cron.d/cron.fusionforge $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/%{name}
412 %{__install} -m 644 deb-specific/sqlhelper.pm $RPM_BUILD_ROOT%{FORGE_DIR}/lib/sqlhelper.pm
414 # Install locale files in Redhat standard location
415 %{__cp} -a locales/* $RPM_BUILD_ROOT/%{FORGE_LANG_DIR}/
417 %{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/utils/fusionforge-shell-postgresql.spec
419 %{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/COPYING.php
420 %{__rm} -fr $RPM_BUILD_ROOT/%{FORGE_DIR}/packaging
421 %{__rm} -fr $RPM_BUILD_ROOT/%{FORGE_DIR}/deb-specific
422 %{__rm} -fr $RPM_BUILD_ROOT/%{FORGE_DIR}/rpm-specific
423 %{__rm} -fr $RPM_BUILD_ROOT/%{FORGE_DIR}/plugins/*/packaging
424 %{__rm} -fr $RPM_BUILD_ROOT/%{FORGE_DIR}/plugins/*/*.spec
427 %{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/*.ini $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/config.ini.d/
428 %{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/cron.d/* $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/
429 %{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/httpd.d/* $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/
430 %{__cp} -rp $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/plugins/* $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/plugins/
431 %{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/README
433 # plugin: aselectextauth
435 # plugin: cvssyncmail
438 # delete stuff that is clearly outdated/obsolete so we don't package this and confuse others
439 %{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/cvstracker/httpd.conf
440 %{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/cvstracker/Makefile
441 %{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/cvstracker/rpm-specific
443 # plugin: externalsearch
448 %{__ln_s} ../../plugins/forumml/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/forumml
451 %{__ln_s} ../../plugins/hudson/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/hudson
453 # plugin: ldapextauth
454 %{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/ldapextauth/rpm-specific
459 # create symlink for apache configuration for mediawiki plugin
460 ## first, delete the php_admin_value include_path
461 %{__sed} -i -e "/^.*php_admin_value[[:space:]]*include_path.*/d" $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/etc/httpd.d/61plugin-mediawiki
462 %{__ln_s} %{FORGE_DIR}/plugins/mediawiki/etc/httpd.d/61plugin-mediawiki $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.d/03mediawiki.conf
463 # this is pre-activated, so create the config symlink
464 #%{__ln_s} %{FORGE_DIR}/plugins/mediawiki/etc/plugins/mediawiki $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/plugins/mediawiki
465 # create symlinks to use MonoBook as the GForge skin
466 %{__ln_s} monobook $RPM_BUILD_ROOT/usr/share/mediawiki/skins/gforge
467 %{__ln_s} MonoBook.deps.php $RPM_BUILD_ROOT/usr/share/mediawiki/skins/GForge.deps.php
468 %{__ln_s} MonoBook.php $RPM_BUILD_ROOT/usr/share/mediawiki/skins/GForge.php
469 # sort out the GForge skin files and remove obsolete code
470 %{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/mediawiki-skin
471 %{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/usr/share/gforge
472 %{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/usr/share/mediawiki/skins
473 # insert our own LocalSettings.php
474 #%{__cp} -f %{SOURCE2} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/usr/share/mediawiki/LocalSettings.php
475 # insert our own README file
476 %{__cp} -f %{SOURCE1} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/README.jlbond
478 # plugin: online_help
480 # plugin: projects_hierarchy
482 # plugin: quota_management
491 %{__ln_s} ../../plugins/scmcvs $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/scmcvs
492 %{__install} -m 644 plugins/scmcvs/cron.d/%{name}-plugin-scmcvs $RPM_BUILD_ROOT%{_sysconfdir}/cron.d
497 # this is pre-activated, so create the config symlink
498 %{__ln_s} ../../plugins/scmsvn/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/scmsvn
501 %{__ln_s} ../../plugins/scmgit/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/scmgit
502 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/scmgit/www/cgi-bin
503 %{__ln_s} /usr/share/gitweb/gitweb.cgi $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/scmgit/www/cgi-bin/gitweb.cgi
504 %{__ln_s} /usr/share/gitweb/static/gitweb.css $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/scmgit/www/gitweb.css
505 %{__ln_s} /usr/share/gitweb/static/gitweb.js $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/scmgit/www/gitweb.js
509 # plugin: svncommitemail
513 %{__install} -m 644 plugins/svntracker/rpm-specific/cron.d/gforge-plugin-svntracker $RPM_BUILD_ROOT%{_sysconfdir}/cron.d
516 %{__ln_s} ../../plugins/blocks/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/blocks
519 %{__ln_s} ../../plugins/extratabs/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/extratabs
522 %{__ln_s} ../plugins/wiki/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/wiki
525 %{__ln_s} ../../plugins/oslc/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/oslc
527 # plugin: projectlabels
528 %{__ln_s} ../../plugins/projectlabels/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/projectlabels
530 # plugin: contribtracker
531 %{__ln_s} ../../plugins/contribtracker/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/contribtracker
533 # plugin: globalsearch
534 %{__ln_s} ../../plugins/globalsearch/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/globalsearch
537 %{__ln_s} ../../plugins/mailman/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/mailman
540 %{__ln_s} ../../plugins/mantisbt/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/mantisbt
542 ### END OF PLUGIN SETUP ###
545 # we will need postgresql to be running. we start it, even if it already is running
546 # this won't hurt anything, just ensure we have a running database
547 /sbin/service postgresql start >>/var/log/%{name}-install.log 2>&1
549 if [ "$1" -eq "1" ]; then
550 # setup user/group for gforge
551 if [ `/usr/bin/getent passwd | /bin/cut -d: -f1 | /bin/grep -c %{gfuser}` -eq 0 ] ; then
552 echo "Did not find existing fusionforge user. Adding fusionforge group and user..." >>/var/log/%{name}-install.log 2>&1
553 /usr/sbin/groupadd -r %{gfgroup}
554 /usr/sbin/useradd -r -g %{gfgroup} -d %{FORGE_DIR} -s /bin/bash -c "FusionForge User" %{gfuser}
559 if [ "$1" -eq "1" ]; then
560 # check to see if the database already exists. if not, we proceed to create it.
561 # if so, we print a warning message.
562 echo "\q" | su - postgres -c "/usr/bin/psql %{dbname}" 1>/dev/null 2>&1
564 if [ $ret -ne 0 ] ; then
566 FFORGE_USER=%{dbuser}
567 FFORGE_ADMIN_USER=%{fforge_admin}
568 FFORGE_ADMIN_PASSWORD=%{fforge_passwd}
569 export FFORGE_DB FFORGE_USER FFORGE_ADMIN_USER FFORGE_ADMIN_PASSWORD
570 /usr/bin/php %{FORGE_DIR}/fusionforge-install-3-db.php >>/var/log/%{name}-install.log 2>&1
572 echo "Database %{dbname} already exists. Will not proceed with database setup." >>/var/log/%{name}-install.log 2>&1
573 echo "Please see %{FORGE_DIR}/fusionforge-install-3-db.php and run it manually" >>/var/log/%{name}-install.log 2>&1
574 echo "if deemed necessary." >>/var/log/%{name}-install.log 2>&1
577 /usr/bin/php %{FORGE_DIR}/db/upgrade-db.php >>/var/log/%{name}-install.log 2>&1
578 /usr/bin/php %{FORGE_DIR}/fusionforge-install-4-config.php >>/var/log/%{name}-install.log 2>&1
580 HOSTNAME=`hostname -f`
581 %{__sed} -i -e "s!gforge.company.com!$HOSTNAME!g" %{FORGE_CONF_DIR}/local.inc
582 %{__sed} -i -e "s!gforge.company.com!$HOSTNAME!g" /etc/httpd/conf.d/gforge.conf
584 /etc/init.d/httpd restart >/dev/null 2>&1
586 chkconfig postgresql on >/dev/null 2>&1
588 # generate random hash for session_key
589 HASH=$(/bin/dd if=/dev/urandom bs=32 count=1 2>/dev/null | /usr/bin/sha1sum | cut -c1-40)
590 %{__sed} -i -e "s/sys_session_key = 'foobar'/sys_session_key = '$HASH'/g" %{FORGE_CONF_DIR}/local.inc
592 # add noreply mail alias
593 echo "noreply: /dev/null" >> /etc/aliases
594 /usr/bin/newaliases >/dev/null 2>&1
596 # display message about default admin account
598 echo "You can now connect to your FusionForge installation using:"
600 echo " http://$HOSTNAME/"
602 echo "The default fusionforge administrator account and password is:"
604 echo "Account Name = %{fforge_admin}"
605 echo "Password = %{fforge_passwd}"
606 #echo "Please change it to something appropriate upon initial login."
607 # give user a few seconds to read the message
610 /usr/bin/php %{FORGE_DIR}/db/upgrade-db.php >>/var/log/%{name}-upgrade.log 2>&1
616 if [ "$1" -eq "0" ]; then
618 if [ `/usr/bin/getent passwd | /bin/cut -d: -f1 | /bin/grep -c %{gfuser}` -ne 0 ] ; then
619 echo "Removing fusionforge user..."
620 /usr/sbin/userdel %{gfuser}
623 if [ `/usr/bin/getent group | /bin/cut -d: -f1 | /bin/grep -c %{gfuser}` -ne 0 ] ; then
624 echo "Removing fusionforge group..."
625 /usr/sbin/groupdel %{gfgroup}
629 %post plugin-aselectextauth
630 /usr/bin/psql -U %{dbuser} %{dbname} -f %{FORGE_DIR}/plugins/aselectextauth/db/install_aselectextauth.psql
632 %preun plugin-aselectextauth
633 /usr/bin/psql -U %{dbuser} %{dbname} -f %{FORGE_DIR}/plugins/aselectextauth/db/uninstall_aselectextauth.psql
636 [ "$RPM_BUILD_ROOT" != "/" ] && %{__rm} -rf $RPM_BUILD_ROOT
639 %defattr(-, root, root)
640 %doc AUTHORS* CHANGES COPYING INSTALL* NEWS README*
642 %attr(0660, %{httpduser}, gforge) %config(noreplace) %{FORGE_CONF_DIR}/local.inc
643 %attr(0640, %{httpduser}, %{httpdgroup}) %config(noreplace) %{_sysconfdir}/httpd/conf.d/gforge.conf
644 %attr(0644, root, root) %{_sysconfdir}/cron.d/%{name}
645 %attr(0775, %{httpduser}, %{httpdgroup}) %dir %{FORGE_VAR_LIB}/upload
646 %attr(755, root, %{httpdgroup}) %dir %{FORGE_DIR}
647 # Files under %{FORGE_DIR}
648 %{FORGE_DIR}/AUTHORS*
651 %{FORGE_DIR}/INSTALL*
654 %{FORGE_DIR}/fusionforge.spec
655 %{FORGE_DIR}/fusionforge-install*
656 %{FORGE_DIR}/gforge-restricted.sh
657 %{FORGE_DIR}/install.sh
658 %{FORGE_DIR}/install-common.inc
659 # Directories under %{FORGE_DIR}
663 %{FORGE_DIR}/cronjobs
667 %{FORGE_DIR}/image-sources
671 %{FORGE_DIR}/translations
674 %dir %{FORGE_DIR}/www
675 # files under %{FORGE_DIR}/www
676 %{FORGE_DIR}/www/*.php
677 %{FORGE_DIR}/www/users
678 %{FORGE_DIR}/www/favicon.ico
679 %{FORGE_DIR}/www/projects
680 # directories under %{FORGE_DIR}/www
681 %{FORGE_DIR}/www/account
682 %{FORGE_DIR}/www/activity
683 %{FORGE_DIR}/www/admin
684 %{FORGE_DIR}/www/developer
685 %{FORGE_DIR}/www/docman
686 %{FORGE_DIR}/www/export
687 %{FORGE_DIR}/www/forum
689 %{FORGE_DIR}/www/images
690 %{FORGE_DIR}/www/include
691 %{FORGE_DIR}/www/jscook
693 %{FORGE_DIR}/www/mail
696 %{FORGE_DIR}/www/news
697 %{FORGE_DIR}/www/people
699 %{FORGE_DIR}/www/project
700 %{FORGE_DIR}/www/register
701 %{FORGE_DIR}/www/reporting
703 %{FORGE_DIR}/www/scripts
704 %{FORGE_DIR}/www/search
705 %{FORGE_DIR}/www/snippet
706 %{FORGE_DIR}/www/soap
707 %{FORGE_DIR}/www/softwaremap
708 %{FORGE_DIR}/www/squal
709 %{FORGE_DIR}/www/stats
710 %{FORGE_DIR}/www/survey
711 %{FORGE_DIR}/www/tabber
712 %{FORGE_DIR}/www/themes
714 %{FORGE_DIR}/www/tracker
715 %{FORGE_DIR}/www/trove
716 %{FORGE_DIR}/www/widgets
717 #%{FORGE_DIR}/www/plugins/online_help
718 #%{FORGE_DIR}/www/plugins/projects_hierarchy
719 #%{FORGE_DIR}/www/plugins/quota_management
720 %dir %{FORGE_DIR}/plugins
721 %{FORGE_DIR}/plugins/env.inc.php
722 #%{FORGE_DIR}/plugins/online_help
723 #%{FORGE_DIR}/plugins/projects_hierarchy
724 #%{FORGE_DIR}/plugins/quota_management
726 %dir %{FORGE_CONF_DIR}
727 %config(noreplace) %{FORGE_CONF_DIR}/httpd.secrets
728 %dir %{FORGE_CONF_DIR}/httpd.d
729 %dir %attr(0775,root,%{httpdgroup}) %{FORGE_CONF_DIR}/plugins
730 %dir %{FORGE_VAR_LIB}/scmtarballs
731 %dir %{FORGE_VAR_LIB}/scmsnapshots
732 %dir %{FORGE_VAR_LIB}/dumps
733 %{FORGE_VAR_LIB}/homedirs
737 %files plugin-aselectextauth
738 %{FORGE_DIR}/plugins/aselectextauth
740 %files plugin-cvssyncmail
741 %{FORGE_DIR}/plugins/cvssyncmail
743 %files plugin-cvstracker
744 %{FORGE_DIR}/plugins/cvstracker
745 %{FORGE_DIR}/www/plugins/cvstracker
746 %attr(-,%{httpduser},%{httpdgroup}) %{FORGE_CONF_DIR}/plugins/cvstracker
748 %files plugin-externalsearch
749 %config(noreplace) %{FORGE_CONF_DIR}/plugins/externalsearch/
750 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/externalsearch.ini
751 %{FORGE_DIR}/plugins/externalsearch
753 %files plugin-fckeditor
754 %{FORGE_DIR}/plugins/fckeditor
755 %{FORGE_DIR}/www/plugins/fckeditor
757 %files plugin-forumml
758 %{FORGE_DIR}/plugins/forumml
759 %{FORGE_DIR}/www/plugins/forumml
761 %files plugin-gravatar
762 %{FORGE_DIR}/plugins/gravatar
765 %config(noreplace) %{FORGE_CONF_DIR}/plugins/hudson/
766 %{_sysconfdir}/httpd/conf.d/62plugin-hudson
767 %{FORGE_DIR}/plugins/hudson
768 %{FORGE_DIR}/www/plugins/hudson
770 %files plugin-ldapextauth
771 %config(noreplace) %{FORGE_CONF_DIR}/plugins/ldapextauth/
772 %{FORGE_DIR}/plugins/ldapextauth
775 %config(noreplace) %{FORGE_CONF_DIR}/plugins/mantis/
776 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/mantis.ini
777 %{FORGE_DIR}/plugins/mantis
778 %{FORGE_DIR}/www/plugins/mantis
780 %files plugin-mediawiki
781 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/mediawiki.ini
782 %config(noreplace) %{FORGE_CONF_DIR}/httpd.d/03mediawiki.conf
783 %{_sysconfdir}/httpd/conf.d/61plugin-mediawiki
784 %{FORGE_DIR}/plugins/mediawiki/
785 %{FORGE_DIR}/www/plugins/mediawiki
786 /usr/share/mediawiki/skins/gforge
787 /usr/share/mediawiki/skins/GForge.deps.php
788 /usr/share/mediawiki/skins/GForge.php
790 %files plugin-online_help
791 %{FORGE_DIR}/plugins/online_help
792 %{FORGE_DIR}/www/plugins/online_help
795 %config(noreplace) %{FORGE_CONF_DIR}/plugins/oslc/
796 %{_sysconfdir}/httpd/conf.d/plugin-oslc.inc
797 %{FORGE_DIR}/plugins/oslc
798 %{FORGE_DIR}/www/plugins/oslc
800 %files plugin-projects_hierarchy
801 %{FORGE_DIR}/plugins/projects_hierarchy
802 %{FORGE_DIR}/www/plugins/projects_hierarchy
804 %files plugin-quota_management
805 %{FORGE_DIR}/plugins/quota_management
806 %{FORGE_DIR}/www/plugins/quota_management
808 %files plugin-scmarch
809 %config(noreplace) %{FORGE_CONF_DIR}/plugins/scmarch/
810 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmarch.ini
811 %{FORGE_DIR}/plugins/scmarch
814 %config(noreplace) %{FORGE_CONF_DIR}/plugins/scmbzr/
815 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmbzr.ini
816 %{FORGE_DIR}/plugins/scmbzr
818 %files plugin-scmdarcs
819 %config(noreplace) %{FORGE_CONF_DIR}/plugins/scmdarcs/
820 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmdarcs.ini
821 %{FORGE_DIR}/plugins/scmdarcs
824 %config(noreplace) %{FORGE_CONF_DIR}/plugins/scmgit/
825 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmgit.ini
826 %{FORGE_DIR}/plugins/scmgit
827 %{FORGE_DIR}/www/plugins/scmgit
830 %config(noreplace) %{FORGE_CONF_DIR}/plugins/scmhg/
831 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmhg.ini
832 %{FORGE_DIR}/plugins/scmhg
834 %files plugin-scmccase
835 %config(noreplace) %{FORGE_CONF_DIR}/plugins/scmccase/
836 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmccase.ini
837 %{FORGE_DIR}/plugins/scmccase
840 %config(noreplace) %{FORGE_CONF_DIR}/plugins/scmcvs/
841 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmcvs.ini
842 %{_sysconfdir}/cron.d/%{name}-plugin-scmcvs
843 %{_sysconfdir}/httpd/conf.d/30virtualcvs
844 %{_sysconfdir}/httpd/conf.d/31virtualcvs.ssl
845 %{FORGE_DIR}/plugins/scmcvs
846 %{FORGE_DIR}/www/plugins/scmcvs
847 %{FORGE_VAR_LIB}/chroot/scmrepos/cvs
850 %config(noreplace) %{FORGE_CONF_DIR}/plugins/scmsvn/
851 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmsvn.ini
852 %{FORGE_DIR}/plugins/scmsvn
853 %{FORGE_DIR}/www/plugins/scmsvn
854 %{FORGE_VAR_LIB}/chroot/scmrepos/svn
856 %files plugin-svncommitemail
857 %{FORGE_DIR}/plugins/svncommitemail
859 %files plugin-svntracker
860 %config(noreplace) %{FORGE_CONF_DIR}/plugins/svntracker/
861 %{_sysconfdir}/cron.d/gforge-plugin-svntracker
862 %{FORGE_DIR}/plugins/svntracker
863 %{FORGE_DIR}/www/plugins/svntracker
866 %config(noreplace) %{FORGE_CONF_DIR}/plugins/blocks/
867 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/blocks.ini
868 %{FORGE_DIR}/plugins/blocks
869 %{FORGE_DIR}/www/plugins/blocks
871 %files plugin-extratabs
872 %{FORGE_DIR}/plugins/extratabs
873 %{FORGE_DIR}/www/plugins/extratabs
876 %config(noreplace) %{FORGE_CONF_DIR}/plugins/wiki/
877 %{_sysconfdir}/cron.d/cron.wiki
878 %{_sysconfdir}/httpd/conf.d/03wiki.conf
879 %{FORGE_DIR}/plugins/wiki
880 %{FORGE_DIR}/www/wiki
882 %files plugin-projectlabels
883 %{FORGE_DIR}/plugins/projectlabels
884 %{FORGE_DIR}/www/plugins/projectlabels
886 %files plugin-contribtracker
887 %{FORGE_DIR}/plugins/contribtracker
888 %{FORGE_DIR}/www/plugins/contribtracker
890 %files plugin-globalsearch
891 %{FORGE_DIR}/plugins/globalsearch
892 %{FORGE_DIR}/www/plugins/globalsearch
894 %files plugin-mailman
895 %config(noreplace) %{FORGE_CONF_DIR}/plugins/mailman/
896 %{_sysconfdir}/httpd/conf.d/62plugin-list-mailman
897 %{_sysconfdir}/httpd/conf.d/200list.vhost
898 %{_sysconfdir}/httpd/conf.d/20list
899 %{_sysconfdir}/httpd/conf.d/20zlist.vhost
900 %{_sysconfdir}/httpd/conf.d/21list.vhost.ssl
901 %{FORGE_DIR}/plugins/mailman
902 %{FORGE_DIR}/www/plugins/mailman
904 %files plugin-mantisbt
905 %config(noreplace) %{FORGE_CONF_DIR}/plugins/mantisbt/
906 %{FORGE_DIR}/plugins/mantisbt
907 %{FORGE_DIR}/www/plugins/mantisbt
910 * Fri May 28 2010 - Alain Peyrat <aljeux@free.fr> - 5.0.50-1
911 - Ported to 5.1 tree.
912 - Reworked logic with rights on configuration files.
913 - Adapted to changes like scm refactoring.
914 - Adapted to changes to .ini configuration file.
915 - Lots of new plugins added.
917 * Tue May 13 2010 - Bond Masuda <bond.masuda@JLBond.com> - 4.8.3-2
918 - fixed plugin symlinks and plugin directory permissions
919 - patched mediawiki, webcalendar plugins
920 - patch to fix various references to global variables
921 - add symlinks to use mediawiki Monobook skin as GForge
922 - patch to replace ereg_replace() with preg_replace()
923 - added jpgraph symlink
924 - setup httpd.secrets
925 - delete obsolete mediawiki plugin code
927 * Fri Apr 16 2010 - Bond Masuda <bond.masuda@JLBond.com> - 4.8.3-1
928 - My first packaging of fusionforge 4.8.3-1 and plugins