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
66 Requires: php-pear-HTTP_WebDAV_Server
68 # BuildRequires: sed, perl
70 Provides: gforge = %{version}
73 FusionForge provides many tools to aid collaboration in a
74 development project, such as bug-tracking, task management,
75 mailing-lists, SCM repository, forums, support request helper,
76 web/FTP hosting, release management, etc. All these services are
77 integrated into one web site and managed through a web interface.
79 %package plugin-aselectextauth
80 Summary: A-select external authentication for FusionForge
81 Group: Development/Tools
82 Requires: %{name} >= %{version}, php, postgresql
83 %description plugin-aselectextauth
84 A system plugin for authenticating users in fusionforge. A-Select is a framework
85 where users can be authenticated by several means with Authentication
88 %package plugin-cvssyncmail
89 Summary: Provides email notifications of changes to CVS repositories
90 Group: Development/Tools
91 Requires: %{name} >= %{version}, %{name}-scmcvs, python, php
92 %description plugin-cvssyncmail
93 This plugin adds the capability to notify users of changes to CVS repositories
96 %package plugin-cvstracker
97 Summary: Links CVS log messages to trackers and tasks.
98 Group: Development/Tools
99 Requires: %{name} >= %{version}, %{name}-scmcvs, php, postgresql
100 %description plugin-cvstracker
101 This is a fusionforge plugin that allows linking CVS log messages to
102 trackers and tasks. It will review all commits in a project and search for
103 specific string to know which task or tracker is related.
105 %package plugin-externalsearch
106 Summary: external search plugin for FusionForge
107 Group: Development/Tools
108 Requires: %{name} >= %{version}, php
109 %description plugin-externalsearch
110 This plugin adds a new search engine to your FusionForge site. It allows
111 your users to search your FusionForge site through external search engines
112 which have indexed it. You can define search engines you want to use in
113 the configuration file.
115 %package plugin-forumml
116 Summary: Mailman to forums plugin for FusionForge
117 Group: Development/Tools
118 Requires: %{name} >= %{version}, php
119 %description plugin-forumml
120 ForumML integes mailing lists as forums in FusionForge
122 %package plugin-fckeditor
123 Summary: FCKEditor plugin for FusionForge
124 Group: Development/Tools
125 Requires: %{name} >= %{version}, php
126 %description plugin-fckeditor
127 FCKEditor is a WYSIWYG text editor that displays within a web browser.
129 %package plugin-gravatar
130 Summary: Gravatar plugin for FusionForge
131 Group: Development/Tools
132 Requires: %{name} >= %{version}, php
133 %description plugin-gravatar
134 This plugin adds faces images to FusionForge users using the gravatar service.
136 %package plugin-hudson
137 Summary: Hudson continous integration plugin for FusionForge
138 Group: Development/Tools
139 Requires: %{name} >= %{version}, php
140 %description plugin-hudson
141 This plugin adds hudson integration to FusionForge.
143 %package plugin-ldapextauth
144 Summary: external LDAP authentication for FusionForge plugin
145 Group: Development/Tools
146 Requires: %{name} >= %{version}, php
147 %description plugin-ldapextauth
148 This plugin provides LDAP authentication capability for FusionForge.
150 %package plugin-mantis
151 Summary: MantisBT plugin for FusionForge
152 Group: Development/Tools
153 Requires: %{name} >= %{version}, php
154 %description plugin-mantis
155 A plugin to use the MantisBT web-based bug tracking system with FusionForge.
157 %package plugin-mediawiki
158 Summary: Mediawiki plugin for FusionForge
159 Group: Development/Tools
160 Requires: %{name} >= %{version}, php, mediawiki
161 %description plugin-mediawiki
162 This is a plugin to integrate MediaWiki within FusionForge.
164 %package plugin-online_help
165 Summary: online_help plugin for FusionForge
166 Group: Development/Tools
167 Requires: %{name} >= %{version}, php
168 %description plugin-online_help
169 This is a online_help plugin within FusionForge.
172 Summary: OSLC plugin for FusionForge
173 Group: Development/Tools
174 Requires: %{name} >= %{version}, php, php-ZendFramework > 1.10
175 %description plugin-oslc
176 OSLC-CM compatible plugin for FusionForge tracker system.
177 OSLC-CM is a standard specification for APIs in Change Management
178 applications. It is based on Web technologies such as REST, RDF, or AJAX.
179 This package provides an OSLC-CM V2 compatible plugin for FusionForge
182 %package plugin-projects_hierarchy
183 Summary: projects_hierarchy plugin for FusionForge
184 Group: Development/Tools
185 Requires: %{name} >= %{version}, php
186 %description plugin-projects_hierarchy
187 This is a projects_hierarchy plugin within FusionForge.
189 %package plugin-quota_management
190 Summary: quota_management plugin for FusionForge
191 Group: Development/Tools
192 Requires: %{name} >= %{version}, php
193 %description plugin-quota_management
194 This is a quota_management plugin within FusionForge.
196 %package plugin-scmarch
197 Summary: Arch version control plugin for FusionForge
198 Group: Development/Tools
199 Requires: %{name} >= %{version}, php, arch
200 %description plugin-scmarch
201 This is a plugin to integrate Arch version control system with FusionForge
203 %package plugin-scmbzr
204 Summary: Bazaar version control plugin for FusionForge
205 Group: Development/Tools
206 Requires: %{name} >= %{version}, php, bazaar
207 %description plugin-scmbzr
208 This is a plugin to integrate Bazaar version control system with FusionForge
210 %package plugin-scmdarcs
211 Summary: DARCS version control plugin for FusionForge
212 Group: Development/Tools
213 Requires: %{name} >= %{version}, php, darcs
214 %description plugin-scmdarcs
215 This is a plugin to integrate DARCS version control system with FusionForge
217 %package plugin-scmgit
218 Summary: Git version control plugin for FusionForge
219 Group: Development/Tools
220 Requires: %{name} >= %{version}, php, git, gitweb
221 %description plugin-scmgit
222 This is a plugin to integrate Git version control system with FusionForge
224 %package plugin-scmhg
225 Summary: Mercurial (hg) version control plugin for FusionForge
226 Group: Development/Tools
227 Requires: %{name} >= %{version}, php, hg
228 %description plugin-scmhg
229 This is a plugin to integrate Mercurial (hg) version control system with FusionForge
231 %package plugin-scmccase
232 Summary: Clear Case plugin for FusionForge
233 Group: Development/Tools
234 Requires: %{name} >= %{version}, php
235 %description plugin-scmccase
236 This is the Clear Case plugin for FusionForge. It creats Clear Case repositories
237 for projects within FusionForge.
239 %package plugin-scmcvs
240 Summary: CVS plugin for FusionForge
241 Group: Development/Tools
242 Requires: %{name} >= %{version}, php, cvs
243 %description plugin-scmcvs
244 FusionForge is a web-based Collaborative Development Environment offering
245 easy access to CVS, mailing lists, bug tracking, message
246 boards/forums, task management, permanent file archival, and total
247 web-based administration.
249 This RPM installs SCM CVS plugin for FusionForge and provides CVS support
252 It also provides a specific version of CVSWeb wrapped in FusionForge.
254 %package plugin-scmsvn
255 Summary: Subversion plugin for FusionForge
256 Group: Development/Tools
257 Requires: %{name} >= %{version}, php, subversion
258 %description plugin-scmsvn
259 This RPM installs SCM SVN plugin for FusionForge and provides svn support
262 %package plugin-svncommitemail
263 Summary: subversion commit email plugin for FusionForge
264 Group: Development/Tools
265 Requires: %{name} >= %{version}, php, subversion, perl, %{name}-scmsvn >= %{version}
266 %description plugin-svncommitemail
267 This RPM installs subversion commit email notification plugin for FusionForge.
269 %package plugin-svntracker
270 Summary: SVNTracker plugin for FusionForge
271 Group: Development/Tools
272 Requires: %{name} >= %{version}, php, subversion, perl, postgresql, %{name}-scmsvn >= %{version}
273 %description plugin-svntracker
274 SVNTracker plugin allows linking SVN log messages to Trackers and tasks.
275 It will review all commits in a project and search for a specific string
276 to know which task or tracker is related.
278 %package plugin-blocks
279 Summary: Blocks plugin for FusionForge
280 Group: Development/Tools
281 Requires: %{name} >= %{version}
282 %description plugin-blocks
283 HTML blocks plugin for FusionForge.
285 %package plugin-extratabs
286 Summary: extratabs plugin for FusionForge
287 Group: Development/Tools
288 Requires: %{name} >= %{version}
289 %description plugin-extratabs
290 HTML extratabs plugin for FusionForge.
293 Summary: Wiki plugin for FusionForge
294 Group: Development/Tools
295 Requires: %{name} >= %{version}, php, postgresql
296 %description plugin-wiki
297 Wiki plugin for FusionForge. Allows for one wiki per project, integrated search,
298 page edits displayed on activity tab, and multi-project wiki preferences.
300 %package plugin-projectlabels
301 Summary: Labels plugin for FusionForge
302 Group: Development/Tools
303 Requires: %{name} >= %{version}, php, postgresql
304 %description plugin-projectlabels
305 Project Labels plugin for FusionForge.
307 %package plugin-contribtracker
308 Summary: contribtracker plugin for FusionForge
309 Group: Development/Tools
310 Requires: %{name} >= %{version}, php, postgresql
311 %description plugin-contribtracker
312 contribtracker plugin for FusionForge.
314 %package plugin-globalsearch
315 Summary: globalsearch plugin for FusionForge
316 Group: Development/Tools
317 Requires: %{name} >= %{version}, php, postgresql
318 %description plugin-globalsearch
319 globalsearch plugin for FusionForge.
321 %package plugin-mailman
322 Summary: Mailman plugin for FusionForge
323 Group: Development/Tools
324 Requires: %{name} >= %{version}, php
325 %description plugin-mailman
326 Mailman plugin for FusionForge.
328 %package plugin-mantisbt
329 Summary: mantisbt plugin for FusionForge
330 Group: Development/Tools
331 Requires: %{name} >= %{version}, php, postgresql
332 %description plugin-mantisbt
333 mantisbt plugin for FusionForge.
342 # empty build section
345 %{__rm} -rf $RPM_BUILD_ROOT
347 # creating required directories
348 %{__install} -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d
349 %{__install} -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/cron.d
350 %{__install} -m 755 -d $RPM_BUILD_ROOT/bin
351 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_DIR}
352 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_DIR}/lib
353 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_CONF_DIR}
354 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.d
355 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.conf.d
356 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/config.ini.d
357 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/plugins
358 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_LANG_DIR}
359 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}
360 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/upload
361 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/scmtarballs
362 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/scmsnapshots
363 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/homedirs
364 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/dumps
365 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/chroot/scmrepos/svn
366 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/chroot/scmrepos/cvs
367 %{__install} -m 755 -d $RPM_BUILD_ROOT/home/groups
368 # mock mediawiki directory because we symlink GForge skin to Monobook
369 %{__install} -m 755 -d $RPM_BUILD_ROOT/usr/share/mediawiki/skins
371 # we define a search and replace function, we'll be using this a lot
372 # to fix several parts of the installation
375 /usr/bin/find . -type f | xargs grep -l ${1} | xargs %{__sed} -i -e "s+${1}+${2}+g"
378 # we need to fix up the fusionforge-install-3-db.php script to ref %{FORGE_DIR}
379 search_and_replace "/opt/gforge" "%{FORGE_DIR}"
382 %{__cp} -a * $RPM_BUILD_ROOT/%{FORGE_DIR}/
384 # create project vhost space symlink
385 %{__ln_s} /home/groups $RPM_BUILD_ROOT/%{FORGE_VAR_LIB}/homedirs/groups
386 # install restricted shell for cvs accounts
387 %{__cp} -a plugins/scmcvs/bin/cvssh.pl $RPM_BUILD_ROOT/bin/
389 # Fix configuration files entries (various sys_* variables)
390 %{__cp} -a etc/local.inc.example $RPM_BUILD_ROOT/%{FORGE_CONF_DIR}/local.inc
391 %{__sed} -i -e "s!/path/to/gforge!%{FORGE_DIR}!g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
392 %{__sed} -i -e "s!/path/to/jpgraph!/var/www/jpgraph-1.19!g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
393 %{__sed} -i -e "s/\$sys_dbname=.*/\$sys_dbname='%{dbname}';/g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
394 %{__sed} -i -e "s/\$sys_dbuser=.*/\$sys_dbuser='%{dbuser}';/g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
395 %{__sed} -i -e "s/\$sys_apache_user=.*/\$sys_apache_user='%{httpduser}';/g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
396 %{__sed} -i -e "s/\$sys_apache_group=.*/\$sys_apache_group='%{httpdgroup}';/g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
397 %{__sed} -i -e "s|\$sys_plugins_path=.*|\$sys_plugins_path=\"%{FORGE_DIR}/plugins\";|g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
398 %{__sed} -i -e "s|\$sys_upload_dir=.*|\$sys_upload_dir=\"\$sys_var_path/upload\";|g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
399 %{__sed} -i -e "s|\$sys_urlroot=.*|\$sys_urlroot=\"%{FORGE_DIR}/www\";|g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/local.inc
401 # Replace sys_localinc, sys_gfdbname, sys_gfdbuser
402 %{__cp} -a etc/httpd.secrets.example $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.secrets
403 %{__sed} -i -e "s|sys_localinc.*$|sys_localinc %{FORGE_CONF_DIR}/local.inc|g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.secrets
404 %{__sed} -i -e "s|sys_gfdbname.*$|sys_gfdbname %{dbname}|g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.secrets
405 %{__sed} -i -e "s|sys_gfdbuser.*$|sys_gfdbname %{dbuser}|g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.secrets
407 # Apache configuration file
408 %{__cp} -a etc/gforge-httpd.conf.example $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/gforge.conf
409 %{__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
410 # install fusionforge crontab
411 %{__install} -m 644 packaging/cron.d/cron.fusionforge $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/%{name}
413 %{__install} -m 644 deb-specific/sqlhelper.pm $RPM_BUILD_ROOT%{FORGE_DIR}/lib/sqlhelper.pm
415 # Install locale files in Redhat standard location
416 %{__cp} -a locales/* $RPM_BUILD_ROOT/%{FORGE_LANG_DIR}/
418 %{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/utils/fusionforge-shell-postgresql.spec
420 %{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/COPYING.php
421 %{__rm} -fr $RPM_BUILD_ROOT/%{FORGE_DIR}/packaging
422 %{__rm} -fr $RPM_BUILD_ROOT/%{FORGE_DIR}/deb-specific
423 %{__rm} -fr $RPM_BUILD_ROOT/%{FORGE_DIR}/rpm-specific
424 %{__rm} -fr $RPM_BUILD_ROOT/%{FORGE_DIR}/plugins/*/packaging
425 %{__rm} -fr $RPM_BUILD_ROOT/%{FORGE_DIR}/plugins/*/*.spec
428 %{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/*.ini $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/config.ini.d/
429 %{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/cron.d/* $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/
430 %{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/httpd.d/* $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/
431 %{__cp} -rp $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/plugins/* $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/plugins/
432 %{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/README
434 # plugin: aselectextauth
436 # plugin: cvssyncmail
439 # delete stuff that is clearly outdated/obsolete so we don't package this and confuse others
440 %{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/cvstracker/httpd.conf
441 %{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/cvstracker/Makefile
442 %{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/cvstracker/rpm-specific
444 # plugin: externalsearch
449 %{__ln_s} ../../plugins/forumml/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/forumml
452 %{__ln_s} ../../plugins/hudson/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/hudson
454 # plugin: ldapextauth
455 %{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/ldapextauth/rpm-specific
460 # create symlink for apache configuration for mediawiki plugin
461 ## first, delete the php_admin_value include_path
462 %{__sed} -i -e "/^.*php_admin_value[[:space:]]*include_path.*/d" $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/etc/httpd.d/61plugin-mediawiki
463 %{__ln_s} %{FORGE_DIR}/plugins/mediawiki/etc/httpd.d/61plugin-mediawiki $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.d/03mediawiki.conf
464 # this is pre-activated, so create the config symlink
465 #%{__ln_s} %{FORGE_DIR}/plugins/mediawiki/etc/plugins/mediawiki $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/plugins/mediawiki
466 # create symlinks to use MonoBook as the GForge skin
467 %{__ln_s} monobook $RPM_BUILD_ROOT/usr/share/mediawiki/skins/gforge
468 %{__ln_s} MonoBook.deps.php $RPM_BUILD_ROOT/usr/share/mediawiki/skins/GForge.deps.php
469 %{__ln_s} MonoBook.php $RPM_BUILD_ROOT/usr/share/mediawiki/skins/GForge.php
470 # sort out the GForge skin files and remove obsolete code
471 %{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/mediawiki-skin
472 %{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/usr/share/gforge
473 %{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/usr/share/mediawiki/skins
474 # insert our own LocalSettings.php
475 #%{__cp} -f %{SOURCE2} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/usr/share/mediawiki/LocalSettings.php
476 # insert our own README file
477 %{__cp} -f %{SOURCE1} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/README.jlbond
479 # plugin: online_help
481 # plugin: projects_hierarchy
483 # plugin: quota_management
492 %{__ln_s} ../../plugins/scmcvs $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/scmcvs
493 %{__install} -m 644 plugins/scmcvs/cron.d/%{name}-plugin-scmcvs $RPM_BUILD_ROOT%{_sysconfdir}/cron.d
498 # this is pre-activated, so create the config symlink
499 %{__ln_s} ../../plugins/scmsvn/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/scmsvn
502 %{__ln_s} ../../plugins/scmgit/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/scmgit
503 %{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/scmgit/www/cgi-bin
504 %{__ln_s} /usr/share/gitweb/gitweb.cgi $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/scmgit/www/cgi-bin/gitweb.cgi
505 %{__ln_s} /usr/share/gitweb/static/gitweb.css $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/scmgit/www/gitweb.css
506 %{__ln_s} /usr/share/gitweb/static/gitweb.js $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/scmgit/www/gitweb.js
510 # plugin: svncommitemail
514 %{__install} -m 644 plugins/svntracker/rpm-specific/cron.d/gforge-plugin-svntracker $RPM_BUILD_ROOT%{_sysconfdir}/cron.d
517 %{__ln_s} ../../plugins/blocks/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/blocks
520 %{__ln_s} ../../plugins/extratabs/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/extratabs
523 %{__ln_s} ../plugins/wiki/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/wiki
526 %{__ln_s} ../../plugins/oslc/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/oslc
528 # plugin: projectlabels
529 %{__ln_s} ../../plugins/projectlabels/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/projectlabels
531 # plugin: contribtracker
532 %{__ln_s} ../../plugins/contribtracker/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/contribtracker
534 # plugin: globalsearch
535 %{__ln_s} ../../plugins/globalsearch/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/globalsearch
538 %{__ln_s} ../../plugins/mailman/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/mailman
541 %{__ln_s} ../../plugins/mantisbt/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/mantisbt
543 ### END OF PLUGIN SETUP ###
546 # we will need postgresql to be running. we start it, even if it already is running
547 # this won't hurt anything, just ensure we have a running database
548 /sbin/service postgresql start >>/var/log/%{name}-install.log 2>&1
550 if [ "$1" -eq "1" ]; then
551 # setup user/group for gforge
552 if [ `/usr/bin/getent passwd | /bin/cut -d: -f1 | /bin/grep -c %{gfuser}` -eq 0 ] ; then
553 echo "Did not find existing fusionforge user. Adding fusionforge group and user..." >>/var/log/%{name}-install.log 2>&1
554 /usr/sbin/groupadd -r %{gfgroup}
555 /usr/sbin/useradd -r -g %{gfgroup} -d %{FORGE_DIR} -s /bin/bash -c "FusionForge User" %{gfuser}
560 if [ "$1" -eq "1" ]; then
561 # check to see if the database already exists. if not, we proceed to create it.
562 # if so, we print a warning message.
563 echo "\q" | su - postgres -c "/usr/bin/psql %{dbname}" 1>/dev/null 2>&1
565 if [ $ret -ne 0 ] ; then
567 FFORGE_USER=%{dbuser}
568 FFORGE_ADMIN_USER=%{fforge_admin}
569 FFORGE_ADMIN_PASSWORD=%{fforge_passwd}
570 export FFORGE_DB FFORGE_USER FFORGE_ADMIN_USER FFORGE_ADMIN_PASSWORD
571 /usr/bin/php %{FORGE_DIR}/fusionforge-install-3-db.php >>/var/log/%{name}-install.log 2>&1
573 echo "Database %{dbname} already exists. Will not proceed with database setup." >>/var/log/%{name}-install.log 2>&1
574 echo "Please see %{FORGE_DIR}/fusionforge-install-3-db.php and run it manually" >>/var/log/%{name}-install.log 2>&1
575 echo "if deemed necessary." >>/var/log/%{name}-install.log 2>&1
578 /usr/bin/php %{FORGE_DIR}/db/upgrade-db.php >>/var/log/%{name}-install.log 2>&1
579 /usr/bin/php %{FORGE_DIR}/fusionforge-install-4-config.php >>/var/log/%{name}-install.log 2>&1
581 HOSTNAME=`hostname -f`
582 %{__sed} -i -e "s!gforge.company.com!$HOSTNAME!g" %{FORGE_CONF_DIR}/local.inc
583 %{__sed} -i -e "s!gforge.company.com!$HOSTNAME!g" /etc/httpd/conf.d/gforge.conf
585 /etc/init.d/httpd restart >/dev/null 2>&1
587 chkconfig postgresql on >/dev/null 2>&1
589 # generate random hash for session_key
590 HASH=$(/bin/dd if=/dev/urandom bs=32 count=1 2>/dev/null | /usr/bin/sha1sum | cut -c1-40)
591 %{__sed} -i -e "s/sys_session_key = 'foobar'/sys_session_key = '$HASH'/g" %{FORGE_CONF_DIR}/local.inc
593 # add noreply mail alias
594 echo "noreply: /dev/null" >> /etc/aliases
595 /usr/bin/newaliases >/dev/null 2>&1
597 # display message about default admin account
599 echo "You can now connect to your FusionForge installation using:"
601 echo " http://$HOSTNAME/"
603 echo "The default fusionforge administrator account and password is:"
605 echo "Account Name = %{fforge_admin}"
606 echo "Password = %{fforge_passwd}"
607 #echo "Please change it to something appropriate upon initial login."
608 # give user a few seconds to read the message
611 /usr/bin/php %{FORGE_DIR}/db/upgrade-db.php >>/var/log/%{name}-upgrade.log 2>&1
617 if [ "$1" -eq "0" ]; then
619 if [ `/usr/bin/getent passwd | /bin/cut -d: -f1 | /bin/grep -c %{gfuser}` -ne 0 ] ; then
620 echo "Removing fusionforge user..."
621 /usr/sbin/userdel %{gfuser}
624 if [ `/usr/bin/getent group | /bin/cut -d: -f1 | /bin/grep -c %{gfuser}` -ne 0 ] ; then
625 echo "Removing fusionforge group..."
626 /usr/sbin/groupdel %{gfgroup}
630 %post plugin-aselectextauth
631 /usr/bin/psql -U %{dbuser} %{dbname} -f %{FORGE_DIR}/plugins/aselectextauth/db/install_aselectextauth.psql
633 %preun plugin-aselectextauth
634 /usr/bin/psql -U %{dbuser} %{dbname} -f %{FORGE_DIR}/plugins/aselectextauth/db/uninstall_aselectextauth.psql
637 [ "$RPM_BUILD_ROOT" != "/" ] && %{__rm} -rf $RPM_BUILD_ROOT
640 %defattr(-, root, root)
641 %doc AUTHORS* CHANGES COPYING INSTALL* NEWS README*
643 %attr(0660, %{httpduser}, gforge) %config(noreplace) %{FORGE_CONF_DIR}/local.inc
644 %attr(0640, %{httpduser}, %{httpdgroup}) %config(noreplace) %{_sysconfdir}/httpd/conf.d/gforge.conf
645 %attr(0644, root, root) %{_sysconfdir}/cron.d/%{name}
646 %attr(0775, %{httpduser}, %{httpdgroup}) %dir %{FORGE_VAR_LIB}/upload
647 %attr(755, root, %{httpdgroup}) %dir %{FORGE_DIR}
648 # Files under %{FORGE_DIR}
649 %{FORGE_DIR}/AUTHORS*
652 %{FORGE_DIR}/INSTALL*
655 %{FORGE_DIR}/fusionforge.spec
656 %{FORGE_DIR}/fusionforge-install*
657 %{FORGE_DIR}/gforge-restricted.sh
658 %{FORGE_DIR}/install.sh
659 %{FORGE_DIR}/install-common.inc
660 # Directories under %{FORGE_DIR}
664 %{FORGE_DIR}/cronjobs
668 %{FORGE_DIR}/image-sources
672 %{FORGE_DIR}/translations
675 %dir %{FORGE_DIR}/www
676 # files under %{FORGE_DIR}/www
677 %{FORGE_DIR}/www/*.php
678 %{FORGE_DIR}/www/users
679 %{FORGE_DIR}/www/favicon.ico
680 %{FORGE_DIR}/www/projects
681 # directories under %{FORGE_DIR}/www
682 %{FORGE_DIR}/www/account
683 %{FORGE_DIR}/www/activity
684 %{FORGE_DIR}/www/admin
685 %{FORGE_DIR}/www/developer
686 %{FORGE_DIR}/www/docman
687 %{FORGE_DIR}/www/export
688 %{FORGE_DIR}/www/forum
690 %{FORGE_DIR}/www/images
691 %{FORGE_DIR}/www/include
692 %{FORGE_DIR}/www/jscook
694 %{FORGE_DIR}/www/mail
697 %{FORGE_DIR}/www/news
698 %{FORGE_DIR}/www/people
700 %{FORGE_DIR}/www/project
701 %{FORGE_DIR}/www/register
702 %{FORGE_DIR}/www/reporting
704 %{FORGE_DIR}/www/scripts
705 %{FORGE_DIR}/www/search
706 %{FORGE_DIR}/www/snippet
707 %{FORGE_DIR}/www/soap
708 %{FORGE_DIR}/www/softwaremap
709 %{FORGE_DIR}/www/squal
710 %{FORGE_DIR}/www/stats
711 %{FORGE_DIR}/www/survey
712 %{FORGE_DIR}/www/tabber
713 %{FORGE_DIR}/www/themes
715 %{FORGE_DIR}/www/tracker
716 %{FORGE_DIR}/www/trove
717 %{FORGE_DIR}/www/widgets
718 #%{FORGE_DIR}/www/plugins/online_help
719 #%{FORGE_DIR}/www/plugins/projects_hierarchy
720 #%{FORGE_DIR}/www/plugins/quota_management
721 %dir %{FORGE_DIR}/plugins
722 %{FORGE_DIR}/plugins/env.inc.php
723 #%{FORGE_DIR}/plugins/online_help
724 #%{FORGE_DIR}/plugins/projects_hierarchy
725 #%{FORGE_DIR}/plugins/quota_management
727 %dir %{FORGE_CONF_DIR}
728 %config(noreplace) %{FORGE_CONF_DIR}/httpd.secrets
729 %dir %{FORGE_CONF_DIR}/httpd.d
730 %dir %attr(0775,root,%{httpdgroup}) %{FORGE_CONF_DIR}/plugins
731 %dir %{FORGE_VAR_LIB}/scmtarballs
732 %dir %{FORGE_VAR_LIB}/scmsnapshots
733 %dir %{FORGE_VAR_LIB}/dumps
734 %{FORGE_VAR_LIB}/homedirs
738 %files plugin-aselectextauth
739 %{FORGE_DIR}/plugins/aselectextauth
741 %files plugin-cvssyncmail
742 %{FORGE_DIR}/plugins/cvssyncmail
744 %files plugin-cvstracker
745 %{FORGE_DIR}/plugins/cvstracker
746 %{FORGE_DIR}/www/plugins/cvstracker
747 %attr(-,%{httpduser},%{httpdgroup}) %{FORGE_CONF_DIR}/plugins/cvstracker
749 %files plugin-externalsearch
750 %config(noreplace) %{FORGE_CONF_DIR}/plugins/externalsearch/
751 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/externalsearch.ini
752 %{FORGE_DIR}/plugins/externalsearch
754 %files plugin-fckeditor
755 %{FORGE_DIR}/plugins/fckeditor
756 %{FORGE_DIR}/www/plugins/fckeditor
758 %files plugin-forumml
759 %{FORGE_DIR}/plugins/forumml
760 %{FORGE_DIR}/www/plugins/forumml
762 %files plugin-gravatar
763 %{FORGE_DIR}/plugins/gravatar
766 %config(noreplace) %{FORGE_CONF_DIR}/plugins/hudson/
767 %{_sysconfdir}/httpd/conf.d/62plugin-hudson
768 %{FORGE_DIR}/plugins/hudson
769 %{FORGE_DIR}/www/plugins/hudson
771 %files plugin-ldapextauth
772 %config(noreplace) %{FORGE_CONF_DIR}/plugins/ldapextauth/
773 %{FORGE_DIR}/plugins/ldapextauth
776 %config(noreplace) %{FORGE_CONF_DIR}/plugins/mantis/
777 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/mantis.ini
778 %{FORGE_DIR}/plugins/mantis
779 %{FORGE_DIR}/www/plugins/mantis
781 %files plugin-mediawiki
782 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/mediawiki.ini
783 %config(noreplace) %{FORGE_CONF_DIR}/httpd.d/03mediawiki.conf
784 %{_sysconfdir}/httpd/conf.d/61plugin-mediawiki
785 %{FORGE_DIR}/plugins/mediawiki/
786 %{FORGE_DIR}/www/plugins/mediawiki
787 /usr/share/mediawiki/skins/gforge
788 /usr/share/mediawiki/skins/GForge.deps.php
789 /usr/share/mediawiki/skins/GForge.php
791 %files plugin-online_help
792 %{FORGE_DIR}/plugins/online_help
793 %{FORGE_DIR}/www/plugins/online_help
796 %config(noreplace) %{FORGE_CONF_DIR}/plugins/oslc/
797 %{_sysconfdir}/httpd/conf.d/plugin-oslc.inc
798 %{FORGE_DIR}/plugins/oslc
799 %{FORGE_DIR}/www/plugins/oslc
801 %files plugin-projects_hierarchy
802 %{FORGE_DIR}/plugins/projects_hierarchy
803 %{FORGE_DIR}/www/plugins/projects_hierarchy
805 %files plugin-quota_management
806 %{FORGE_DIR}/plugins/quota_management
807 %{FORGE_DIR}/www/plugins/quota_management
809 %files plugin-scmarch
810 %config(noreplace) %{FORGE_CONF_DIR}/plugins/scmarch/
811 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmarch.ini
812 %{FORGE_DIR}/plugins/scmarch
815 %config(noreplace) %{FORGE_CONF_DIR}/plugins/scmbzr/
816 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmbzr.ini
817 %{FORGE_DIR}/plugins/scmbzr
819 %files plugin-scmdarcs
820 %config(noreplace) %{FORGE_CONF_DIR}/plugins/scmdarcs/
821 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmdarcs.ini
822 %{FORGE_DIR}/plugins/scmdarcs
825 %config(noreplace) %{FORGE_CONF_DIR}/plugins/scmgit/
826 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmgit.ini
827 %{FORGE_DIR}/plugins/scmgit
828 %{FORGE_DIR}/www/plugins/scmgit
831 %config(noreplace) %{FORGE_CONF_DIR}/plugins/scmhg/
832 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmhg.ini
833 %{FORGE_DIR}/plugins/scmhg
835 %files plugin-scmccase
836 %config(noreplace) %{FORGE_CONF_DIR}/plugins/scmccase/
837 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmccase.ini
838 %{FORGE_DIR}/plugins/scmccase
841 %config(noreplace) %{FORGE_CONF_DIR}/plugins/scmcvs/
842 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmcvs.ini
843 %{_sysconfdir}/cron.d/%{name}-plugin-scmcvs
844 %{_sysconfdir}/httpd/conf.d/30virtualcvs
845 %{_sysconfdir}/httpd/conf.d/31virtualcvs.ssl
846 %{FORGE_DIR}/plugins/scmcvs
847 %{FORGE_DIR}/www/plugins/scmcvs
848 %{FORGE_VAR_LIB}/chroot/scmrepos/cvs
851 %config(noreplace) %{FORGE_CONF_DIR}/plugins/scmsvn/
852 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmsvn.ini
853 %{FORGE_DIR}/plugins/scmsvn
854 %{FORGE_DIR}/www/plugins/scmsvn
855 %{FORGE_VAR_LIB}/chroot/scmrepos/svn
857 %files plugin-svncommitemail
858 %{FORGE_DIR}/plugins/svncommitemail
860 %files plugin-svntracker
861 %config(noreplace) %{FORGE_CONF_DIR}/plugins/svntracker/
862 %{_sysconfdir}/cron.d/gforge-plugin-svntracker
863 %{FORGE_DIR}/plugins/svntracker
864 %{FORGE_DIR}/www/plugins/svntracker
867 %config(noreplace) %{FORGE_CONF_DIR}/plugins/blocks/
868 %config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/blocks.ini
869 %{FORGE_DIR}/plugins/blocks
870 %{FORGE_DIR}/www/plugins/blocks
872 %files plugin-extratabs
873 %{FORGE_DIR}/plugins/extratabs
874 %{FORGE_DIR}/www/plugins/extratabs
877 %config(noreplace) %{FORGE_CONF_DIR}/plugins/wiki/
878 %{_sysconfdir}/cron.d/cron.wiki
879 %{_sysconfdir}/httpd/conf.d/03wiki.conf
880 %{FORGE_DIR}/plugins/wiki
881 %{FORGE_DIR}/www/wiki
883 %files plugin-projectlabels
884 %{FORGE_DIR}/plugins/projectlabels
885 %{FORGE_DIR}/www/plugins/projectlabels
887 %files plugin-contribtracker
888 %{FORGE_DIR}/plugins/contribtracker
889 %{FORGE_DIR}/www/plugins/contribtracker
891 %files plugin-globalsearch
892 %{FORGE_DIR}/plugins/globalsearch
893 %{FORGE_DIR}/www/plugins/globalsearch
895 %files plugin-mailman
896 %config(noreplace) %{FORGE_CONF_DIR}/plugins/mailman/
897 %{_sysconfdir}/httpd/conf.d/62plugin-list-mailman
898 %{_sysconfdir}/httpd/conf.d/200list.vhost
899 %{_sysconfdir}/httpd/conf.d/20list
900 %{_sysconfdir}/httpd/conf.d/20zlist.vhost
901 %{_sysconfdir}/httpd/conf.d/21list.vhost.ssl
902 %{FORGE_DIR}/plugins/mailman
903 %{FORGE_DIR}/www/plugins/mailman
905 %files plugin-mantisbt
906 %config(noreplace) %{FORGE_CONF_DIR}/plugins/mantisbt/
907 %{FORGE_DIR}/plugins/mantisbt
908 %{FORGE_DIR}/www/plugins/mantisbt
911 * Fri May 28 2010 - Alain Peyrat <aljeux@free.fr> - 5.0.50-1
912 - Ported to 5.1 tree.
913 - Reworked logic with rights on configuration files.
914 - Adapted to changes like scm refactoring.
915 - Adapted to changes to .ini configuration file.
916 - Lots of new plugins added.
918 * Tue May 13 2010 - Bond Masuda <bond.masuda@JLBond.com> - 4.8.3-2
919 - fixed plugin symlinks and plugin directory permissions
920 - patched mediawiki, webcalendar plugins
921 - patch to fix various references to global variables
922 - add symlinks to use mediawiki Monobook skin as GForge
923 - patch to replace ereg_replace() with preg_replace()
924 - added jpgraph symlink
925 - setup httpd.secrets
926 - delete obsolete mediawiki plugin code
928 * Fri Apr 16 2010 - Bond Masuda <bond.masuda@JLBond.com> - 4.8.3-1
929 - My first packaging of fusionforge 4.8.3-1 and plugins