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, liberation-fonts
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 #update sys_path_to_jpgraph in gforge.conf if you remove this line
59 #Requires: /var/www/jpgraph/jpgraph.php
60 #Requires: libnss-pgsql >= 1.4
63 Requires: htmlpurifier >= 4.0.0
66 Requires: /usr/bin/newaliases
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: Bazaar version control plugin for FusionForge
219 Group: Development/Tools
220 Requires: %{name} >= %{version}, php, git
221 %description plugin-scmgit
222 This is a plugin to integrate Bazaar 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/\$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 # create symlink for jpgraph
418 %{__ln_s} /usr/share/jpgraph $RPM_BUILD_ROOT%{FORGE_DIR}/jpgraph
420 %{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/utils/fusionforge-shell-postgresql.spec
422 %{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/COPYING.php
423 %{__rm} -fr $RPM_BUILD_ROOT/%{FORGE_DIR}/packaging
424 %{__rm} -fr $RPM_BUILD_ROOT/%{FORGE_DIR}/deb-specific
425 %{__rm} -fr $RPM_BUILD_ROOT/%{FORGE_DIR}/rpm-specific
426 %{__rm} -fr $RPM_BUILD_ROOT/%{FORGE_DIR}/plugins/*/packaging
427 %{__rm} -fr $RPM_BUILD_ROOT/%{FORGE_DIR}/plugins/*/*.spec
430 %{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/*.ini $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/config.ini.d/
431 %{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/cron.d/* $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/
432 %{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/httpd.d/* $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/
433 %{__cp} -rp $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/plugins/* $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/plugins/
434 %{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/README
436 # plugin: aselectextauth
438 # plugin: cvssyncmail
441 # delete stuff that is clearly outdated/obsolete so we don't package this and confuse others
442 %{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/cvstracker/httpd.conf
443 %{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/cvstracker/Makefile
444 %{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/cvstracker/rpm-specific
446 # plugin: externalsearch
451 %{__ln_s} ../../plugins/forumml $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/forumml
454 %{__ln_s} ../../plugins/hudson $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/hudson
456 # plugin: ldapextauth
457 %{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/ldapextauth/rpm-specific
462 # create symlink for apache configuration for mediawiki plugin
463 ## first, delete the php_admin_value include_path
464 %{__sed} -i -e "/^.*php_admin_value[[:space:]]*include_path.*/d" $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/etc/httpd.d/61plugin-mediawiki
465 %{__ln_s} %{FORGE_DIR}/plugins/mediawiki/etc/httpd.d/61plugin-mediawiki $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.d/03mediawiki.conf
466 # this is pre-activated, so create the config symlink
467 #%{__ln_s} %{FORGE_DIR}/plugins/mediawiki/etc/plugins/mediawiki $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/plugins/mediawiki
468 # create symlinks to use MonoBook as the GForge skin
469 %{__ln_s} monobook $RPM_BUILD_ROOT/usr/share/mediawiki/skins/gforge
470 %{__ln_s} MonoBook.deps.php $RPM_BUILD_ROOT/usr/share/mediawiki/skins/GForge.deps.php
471 %{__ln_s} MonoBook.php $RPM_BUILD_ROOT/usr/share/mediawiki/skins/GForge.php
472 # sort out the GForge skin files and remove obsolete code
473 %{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/mediawiki-skin
474 %{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/usr/share/gforge
475 %{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/usr/share/mediawiki/skins
476 # insert our own LocalSettings.php
477 #%{__cp} -f %{SOURCE2} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/usr/share/mediawiki/LocalSettings.php
478 # insert our own README file
479 %{__cp} -f %{SOURCE1} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/README.jlbond
481 # plugin: online_help
483 # plugin: projects_hierarchy
485 # plugin: quota_management
494 %{__ln_s} ../../plugins/scmcvs $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/scmcvs
495 %{__install} -m 644 plugins/scmcvs/cron.d/%{name}-plugin-scmcvs $RPM_BUILD_ROOT%{_sysconfdir}/cron.d
500 # this is pre-activated, so create the config symlink
501 %{__ln_s} ../../plugins/scmsvn $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/scmsvn
504 %{__ln_s} ../../plugins/scmgit $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/scmgit
508 # plugin: svncommitemail
512 %{__install} -m 644 plugins/svntracker/rpm-specific/cron.d/gforge-plugin-svntracker $RPM_BUILD_ROOT%{_sysconfdir}/cron.d
515 %{__ln_s} ../../plugins/blocks/www/ $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/blocks
518 %{__ln_s} ../../plugins/extratabs/www/ $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/extratabs
521 %{__ln_s} ../plugins/wiki/www/ $RPM_BUILD_ROOT%{FORGE_DIR}/www/wiki
524 %{__ln_s} ../../plugins/oslc/www/ $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/oslc
526 # plugin: projectlabels
527 %{__ln_s} ../../plugins/projectlabels/www/ $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/projectlabels
529 # plugin: contribtracker
530 %{__ln_s} ../../plugins/contribtracker/www/ $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/contribtracker
532 # plugin: globalsearch
533 %{__ln_s} ../../plugins/globalsearch/www/ $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/globalsearch
536 %{__ln_s} ../../plugins/mailman/www/ $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/mailman
539 %{__ln_s} ../../plugins/mantisbt/www/ $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/mantisbt
541 ### END OF PLUGIN SETUP ###
544 # we will need postgresql to be running. we start it, even if it already is running
545 # this won't hurt anything, just ensure we have a running database
546 /sbin/service postgresql start >>/var/log/%{name}-install.log 2>&1
548 if [ "$1" -eq "1" ]; then
549 # setup user/group for gforge
550 if [ `/usr/bin/getent passwd | /bin/cut -d: -f1 | /bin/grep -c %{gfuser}` -eq 0 ] ; then
551 echo "Did not find existing fusionforge user. Adding fusionforge group and user..." >>/var/log/%{name}-install.log 2>&1
552 /usr/sbin/groupadd -r %{gfgroup}
553 /usr/sbin/useradd -r -g %{gfgroup} -d %{FORGE_DIR} -s /bin/bash -c "FusionForge User" %{gfuser}
558 if [ "$1" -eq "1" ]; then
559 # check to see if the database already exists. if not, we proceed to create it.
560 # if so, we print a warning message.
561 echo "\q" | su - postgres -c "/usr/bin/psql %{dbname}" 1>/dev/null 2>&1
563 if [ $ret -ne 0 ] ; then
565 FFORGE_USER=%{dbuser}
566 FFORGE_ADMIN_USER=%{fforge_admin}
567 FFORGE_ADMIN_PASSWORD=%{fforge_passwd}
568 export FFORGE_DB FFORGE_USER FFORGE_ADMIN_USER FFORGE_ADMIN_PASSWORD
569 /usr/bin/php %{FORGE_DIR}/fusionforge-install-3-db.php >>/var/log/%{name}-install.log 2>&1
571 echo "Database %{dbname} already exists. Will not proceed with database setup." >>/var/log/%{name}-install.log 2>&1
572 echo "Please see %{FORGE_DIR}/fusionforge-install-3-db.php and run it manually" >>/var/log/%{name}-install.log 2>&1
573 echo "if deemed necessary." >>/var/log/%{name}-install.log 2>&1
576 /usr/bin/php %{FORGE_DIR}/db/upgrade-db.php >>/var/log/%{name}-install.log 2>&1
577 /usr/bin/php %{FORGE_DIR}/fusionforge-install-4-config.php >>/var/log/%{name}-install.log 2>&1
579 HOSTNAME=`hostname -f`
580 %{__sed} -i -e "s!gforge.company.com!$HOSTNAME!g" %{FORGE_CONF_DIR}/local.inc
581 %{__sed} -i -e "s!gforge.company.com!$HOSTNAME!g" /etc/httpd/conf.d/gforge.conf
583 /etc/init.d/httpd restart >/dev/null 2>&1
585 chkconfig postgresql on >/dev/null 2>&1
587 # generate random hash for session_key
588 HASH=$(/bin/dd if=/dev/urandom bs=32 count=1 2>/dev/null | /usr/bin/sha1sum | cut -c1-40)
589 %{__sed} -i -e "s/sys_session_key = 'foobar'/sys_session_key = '$HASH'/g" %{FORGE_CONF_DIR}/local.inc
591 # add noreply mail alias
592 echo "noreply: /dev/null" >> /etc/aliases
593 /usr/bin/newaliases >/dev/null 2>&1
595 # display message about default admin account
597 echo "You can now connect to your FusionForge installation using:"
599 echo " http://$HOSTNAME/"
601 echo "The default fusionforge administrator account and password is:"
603 echo "Account Name = %{fforge_admin}"
604 echo "Password = %{fforge_passwd}"
605 #echo "Please change it to something appropriate upon initial login."
606 # give user a few seconds to read the message
609 /usr/bin/php %{FORGE_DIR}/db/upgrade-db.php >>/var/log/%{name}-upgrade.log 2>&1
615 if [ "$1" -eq "0" ]; then
617 if [ `/usr/bin/getent passwd | /bin/cut -d: -f1 | /bin/grep -c %{gfuser}` -ne 0 ] ; then
618 echo "Removing fusionforge user..."
619 /usr/sbin/userdel %{gfuser}
622 if [ `/usr/bin/getent group | /bin/cut -d: -f1 | /bin/grep -c %{gfuser}` -ne 0 ] ; then
623 echo "Removing fusionforge group..."
624 /usr/sbin/groupdel %{gfgroup}
628 %post plugin-aselectextauth
629 /usr/bin/psql -U %{dbuser} %{dbname} -f %{FORGE_DIR}/plugins/aselectextauth/db/install_aselectextauth.psql
631 %preun plugin-aselectextauth
632 /usr/bin/psql -U %{dbuser} %{dbname} -f %{FORGE_DIR}/plugins/aselectextauth/db/uninstall_aselectextauth.psql
635 [ "$RPM_BUILD_ROOT" != "/" ] && %{__rm} -rf $RPM_BUILD_ROOT
638 %defattr(-, root, root)
639 %doc AUTHORS* CHANGES COPYING INSTALL* NEWS README*
641 %attr(0660, %{httpduser}, gforge) %config(noreplace) %{FORGE_CONF_DIR}/local.inc
642 %attr(0640, %{httpduser}, %{httpdgroup}) %config(noreplace) %{_sysconfdir}/httpd/conf.d/gforge.conf
643 %attr(0644, root, root) %{_sysconfdir}/cron.d/%{name}
644 %attr(0775, %{httpduser}, %{httpdgroup}) %dir %{FORGE_VAR_LIB}/upload
645 %attr(755, root, %{httpdgroup}) %dir %{FORGE_DIR}
646 # Files under %{FORGE_DIR}
647 %{FORGE_DIR}/AUTHORS*
650 %{FORGE_DIR}/INSTALL*
653 %{FORGE_DIR}/fusionforge.spec
654 %{FORGE_DIR}/fusionforge-install*
655 %{FORGE_DIR}/gforge-restricted.sh
656 %{FORGE_DIR}/install.sh
657 %{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/62plugin-oslc
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