noosfero.spec
4.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
%define writable_dirs articles image_uploads thumbnails
%define cache_dirs javascripts/cache stylesheets/cache
Name: noosfero
Version: 1.3.6+spb4
Release: 1
Summary: Social Networking Platform
Group: Applications/Publishing
License: AGPLv3
URL: http://noosfero.org
Source0: %{name}-%{version}.tar.gz
BuildArch: noarch
BuildRequires: noosfero-deps >= 1.3-3, gettext, po4a
Requires: noosfero-deps, po4a, tango-icon-theme, memcached,crontabs, nodejs
%description
Noosfero is a web platform for social and solidarity economy networks with blog,
e-Porfolios, CMS, RSS, thematic discussion, events agenda and collective
inteligence for solidarity economy in the same system! Get to know, use it,
participate and contribute to this free software project!
%prep
%setup -q
%build
ln -sf /usr/lib/noosfero/Gemfile .
ln -sf /usr/lib/noosfero/Gemfile.lock .
ln -sf /usr/lib/noosfero/.bundle .
ln -sfT /usr/lib/noosfero/vendor/bundle vendor/bundle
bundle exec rake -f Rakefile.release noosfero:translations:compile > build.log 2>&1 || (cat build.log; exit 1)
rm -f build.log Gemfile Gemfile.lock .bundle vendor/bundle
rm -rf tmp log
%install
mkdir -p %{buildroot}/usr/lib/noosfero
# install noosfero tree
cp -r * %{buildroot}/usr/lib/noosfero/
rm %{buildroot}/usr/lib/noosfero/{COPY*,Vagrantfile,*.md,gitignore.example,public/dispatch.fcgi,public/dispatch.cgi,public/dispatch.rb}
# no point in installing debian/ as part of the RPM
rm -rf %{buildroot}/usr/lib/noosfero/debian
# installed plugins should be in /etc
rm -rf %{buildroot}/usr/lib/noosfero/config/plugins
# install config files
mkdir -p %{buildroot}/etc/systemd/system
cat > %{buildroot}/etc/systemd/system/noosfero.service <<EOF
[Unit]
Description=Noosfero service
[Service]
Type=forking
User=noosfero
WorkingDirectory=/usr/lib/noosfero
ExecStart=/usr/lib/noosfero/script/production start
ExecStop=/usr/lib/noosfero/script/production stop
TimeoutSec=300
[Install]
WantedBy=multi-user.target
EOF
mkdir -p %{buildroot}/etc/noosfero/plugins
ln -sf /etc/noosfero/database.yml %{buildroot}/usr/lib/noosfero/config/database.yml
ln -sf /etc/noosfero/unicorn.rb %{buildroot}/usr/lib/noosfero/config/unicorn.rb
mkdir -p %{buildroot}/etc/noosfero/plugins
cp config/plugins/README %{buildroot}/etc/noosfero/plugins
ln -sfT /etc/noosfero/plugins %{buildroot}/usr/lib/noosfero/config/plugins
# symlink needed bits in public/
for dir in %{writable_dirs}; do
ln -sfT /var/lib/noosfero/public/$dir %{buildroot}/usr/lib/noosfero/public/$dir
done
# symlink needed to cache
for dir in %{cache_dirs}; do
ln -sfT /var/lib/noosfero/cache %{buildroot}/usr/lib/noosfero/public/$dir
done
ln -sfT /var/tmp/noosfero %{buildroot}/usr/lib/noosfero/tmp
ln -sfT /var/log/noosfero %{buildroot}/usr/lib/noosfero/log
# default themes
ln -sfT noosfero %{buildroot}/usr/lib/noosfero/public/designs/themes/default
ln -sfT tango %{buildroot}/usr/lib/noosfero/public/designs/icons/default
cat > %{buildroot}/etc/noosfero/unicorn.rb <<EOF
listen "127.0.0.1:3000"
worker_processes `nproc`.to_i
EOF
cat > %{buildroot}/etc/noosfero/database.yml <<EOF
production:
adapter: postgresql
encoding: unicode
database: noosfero_production
username: noosfero
host: localhost
port: 5432
EOF
mkdir -p %{buildroot}/etc/default
cat > %{buildroot}/etc/default/noosfero <<EOF
NOOSFERO_DIR="/usr/lib/noosfero"
NOOSFERO_USER="noosfero"
NOOSFERO_DATA_DIR="/var/lib/noosfero"
EOF
%pre
if [ $1 -gt 1 ]; then
echo 'Stopping noosfero'
systemctl stop noosfero
fi
%post
groupadd noosfero || true
if ! id noosfero; then
adduser noosfero --system -g noosfero --shell /bin/sh --home-dir /usr/lib/noosfero
fi
for dir in %{writable_dirs}; do
mkdir -p /var/lib/noosfero/public/$dir
done
mkdir -p /var/lib/noosfero/cache
mkdir -p /var/lib/noosfero/cache
mkdir -p /var/log/noosfero/
mkdir -p /var/tmp/noosfero/
chown -R noosfero:root /var/tmp/noosfero
chown -R noosfero:root /var/log/noosfero
chown -R noosfero:noosfero /var/lib/noosfero
/etc/init.d/noosfero setup
cd /usr/lib/noosfero/
if [ -x /usr/bin/postgres ]; then
if [ `systemctl is-active postgresql`!="active" ]; then
postgresql-setup initdb || true
systemctl start postgresql
fi
su postgres -c "createuser noosfero -S -d -R"
su noosfero -c "createdb noosfero_production"
cd /usr/lib/noosfero/
su noosfero -c "RAILS_ENV=production bundle exec rake db:schema:load"
su noosfero -c "RAILS_ENV=production SCHEMA=/dev/null bundle exec rake db:migrate"
su noosfero -c "RAILS_ENV=production bundle exec rake db:data:minimal"
fi
if [ $1 -gt 1 ]; then
echo 'Starting noosfero'
systemctl daemon-reload
systemctl start noosfero &
fi
%preun
service noosfero stop
chkconfig --del noosfero
%files
/usr/lib/noosfero
/etc/systemd/system/noosfero.service
/etc/noosfero/plugins/README
%config(noreplace) /etc/default/noosfero
%config(noreplace) /etc/noosfero/database.yml
%config(noreplace) /etc/noosfero/unicorn.rb
%doc