Mon, 28 Jan 2013 17:37:18 +0100
Correct socket error reporting improvement with IPv6 portable code,
after helpful recommendation by Saúl Ibarra Corretgé on OSips devlist.
michael@20 | 1 | ## |
michael@20 | 2 | ## bacula.spec -- OpenPKG RPM Package Specification |
michael@578 | 3 | ## Copyright (c) 2000-2012 OpenPKG Foundation e.V. <http://openpkg.net/> |
michael@20 | 4 | ## |
michael@20 | 5 | ## Permission to use, copy, modify, and distribute this software for |
michael@20 | 6 | ## any purpose with or without fee is hereby granted, provided that |
michael@20 | 7 | ## the above copyright notice and this permission notice appear in all |
michael@20 | 8 | ## copies. |
michael@20 | 9 | ## |
michael@20 | 10 | ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED |
michael@20 | 11 | ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
michael@20 | 12 | ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
michael@20 | 13 | ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR |
michael@20 | 14 | ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
michael@20 | 15 | ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
michael@20 | 16 | ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
michael@20 | 17 | ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
michael@20 | 18 | ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
michael@20 | 19 | ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
michael@20 | 20 | ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
michael@20 | 21 | ## SUCH DAMAGE. |
michael@20 | 22 | ## |
michael@20 | 23 | |
michael@20 | 24 | # package information |
michael@20 | 25 | Name: bacula |
michael@20 | 26 | Summary: Network Backup Tool |
michael@20 | 27 | URL: http://www.bacula.org/ |
michael@20 | 28 | Vendor: Kern Sibbald |
michael@20 | 29 | Packager: OpenPKG Foundation e.V. |
michael@20 | 30 | Distribution: OpenPKG Community |
michael@20 | 31 | Class: PLUS |
michael@20 | 32 | Group: System |
michael@20 | 33 | License: GPL |
michael@578 | 34 | Version: 5.2.10 |
michael@579 | 35 | Release: 20120800 |
michael@20 | 36 | |
michael@20 | 37 | # package options |
michael@20 | 38 | %option with_server yes |
michael@20 | 39 | %option with_ssl yes |
michael@20 | 40 | %option with_wrap no |
michael@20 | 41 | %option with_dvd no |
michael@20 | 42 | %option with_mtx no |
michael@20 | 43 | %option with_python no |
michael@577 | 44 | %option with_db_sqlite no |
michael@577 | 45 | %option with_db_pgsql no |
michael@577 | 46 | %option with_db_mysql no |
michael@577 | 47 | |
michael@577 | 48 | # package option sanity check |
michael@577 | 49 | %if "%{with_db_sqlite}" == "no" && "%{with_db_mysql}" == "no" && "%{with_db_pgsql}" == "no" |
michael@577 | 50 | %undefine with_db_sqlite |
michael@577 | 51 | %define with_db_sqlite yes |
michael@577 | 52 | %endif |
michael@20 | 53 | |
michael@20 | 54 | # list of sources |
michael@20 | 55 | Source0: http://switch.dl.sourceforge.net/bacula/bacula-%{version}.tar.gz |
michael@20 | 56 | Source1: rc.bacula |
michael@20 | 57 | Source2: bexec.sh |
michael@20 | 58 | Patch0: bacula.patch |
michael@20 | 59 | |
michael@20 | 60 | # build information |
michael@578 | 61 | BuildPreReq: OpenPKG, openpkg >= 20100101, make, gcc, gcc::with_cxx = yes |
michael@578 | 62 | PreReq: OpenPKG, openpkg >= 20100101 |
michael@678 | 63 | BuildPreReq: ncurses, readline, zlib, lzo |
michael@678 | 64 | PreReq: ncurses, readline, zlib, lzo |
michael@20 | 65 | %if "%{with_ssl}" == "yes" |
michael@579 | 66 | BuildPreReq: openssl >= 0.9.8, openssl::with_threads = yes |
michael@579 | 67 | PreReq: openssl >= 0.9.8, openssl::with_threads = yes |
michael@20 | 68 | %endif |
michael@20 | 69 | %if "%{with_wrap}" == "yes" |
michael@20 | 70 | BuildPreReq: tcpwrappers |
michael@20 | 71 | PreReq: tcpwrappers |
michael@20 | 72 | %endif |
michael@577 | 73 | %if "%{with_db_sqlite}" == "yes" |
michael@20 | 74 | BuildPreReq: sqlite |
michael@20 | 75 | PreReq: sqlite |
michael@20 | 76 | %endif |
michael@577 | 77 | %if "%{with_db_mysql}" == "yes" |
michael@20 | 78 | BuildPreReq: mysql |
michael@20 | 79 | PreReq: mysql |
michael@20 | 80 | %endif |
michael@577 | 81 | %if "%{with_db_pgsql}" == "yes" |
michael@20 | 82 | BuildPreReq: postgresql |
michael@20 | 83 | PreReq: postgresql |
michael@20 | 84 | %endif |
michael@20 | 85 | %if "%{with_dvd}" == "yes" |
michael@20 | 86 | BuildPreReq: dvdrw-tools |
michael@20 | 87 | PreReq: dvdrw-tools |
michael@20 | 88 | %endif |
michael@20 | 89 | %if "%{with_mtx}" == "yes" |
michael@20 | 90 | BuildPreReq: mtx |
michael@20 | 91 | PreReq: mtx |
michael@20 | 92 | %endif |
michael@20 | 93 | %if "%{with_python}" == "yes" || "%{with_dvd}" == "yes" |
michael@20 | 94 | BuildPreReq: python |
michael@20 | 95 | PreReq: python |
michael@20 | 96 | %endif |
michael@20 | 97 | |
michael@20 | 98 | %description |
michael@20 | 99 | Bacula is a set of computer programs that permit you (or the system |
michael@20 | 100 | administrator) to manage backup, recovery, and verification of |
michael@20 | 101 | computer data across a network of computers of different kinds. In |
michael@20 | 102 | technical terms, it is a network client/server based backup program. |
michael@20 | 103 | Bacula is relatively easy to use and efficient, while offering many |
michael@20 | 104 | advanced storage management features that make it easy to find and |
michael@20 | 105 | recover lost or damaged files. |
michael@20 | 106 | |
michael@20 | 107 | %track |
michael@20 | 108 | prog bacula = { |
michael@20 | 109 | version = %{version} |
michael@577 | 110 | url = http://sourceforge.net/projects/bacula/files/ |
michael@20 | 111 | regex = bacula-(\d+\.\d*[02468]\.\d+)\.tar\.gz |
michael@20 | 112 | } |
michael@20 | 113 | |
michael@20 | 114 | %prep |
michael@20 | 115 | %setup -q |
michael@20 | 116 | %patch -p0 |
michael@20 | 117 | rm -f src/lib/tcpd.h |
michael@650 | 118 | %{l_shtool} subst \ |
michael@650 | 119 | -e 's;\( *\$(LDFLAGS)\)\(.*-L\.\.\/findlib\);\2\1;g' \ |
michael@650 | 120 | -e 's;\( *\$(LDFLAGS)\)\(.*-L\.\.\/cats\);\2\1;g' \ |
michael@650 | 121 | -e 's;\( *\$(LDFLAGS)\)\(.*-L\.\.\/lib\);\2\1;g' \ |
michael@650 | 122 | src/stored/Makefile.in \ |
michael@650 | 123 | src/console/Makefile.in \ |
michael@650 | 124 | src/dird/Makefile.in \ |
michael@650 | 125 | src/filed/Makefile.in \ |
michael@650 | 126 | src/tools/Makefile.in \ |
michael@650 | 127 | src/tray-monitor/Makefile.in \ |
michael@20 | 128 | |
michael@20 | 129 | %build |
michael@20 | 130 | # generate a random director password |
michael@579 | 131 | #password=`tr -dc A-Za-z0-9 </dev/urandom | head -c 33` |
michael@579 | 132 | password=`%{l_openssl} rand -base64 33` |
michael@20 | 133 | |
michael@20 | 134 | # for the same reason remove version informations from config files |
michael@20 | 135 | %{l_shtool} subst \ |
michael@20 | 136 | -e "s;For Bacula release @VERSION@ .*;;" \ |
michael@20 | 137 | `find . -name "*.conf.in"` |
michael@20 | 138 | |
michael@579 | 139 | # help specific platforms find fdatasync(3) |
michael@579 | 140 | libs="" |
michael@579 | 141 | case "%{l_platform -t}" in |
michael@579 | 142 | *-sunos* ) libs="-lrt" ;; |
michael@579 | 143 | esac |
michael@579 | 144 | |
michael@20 | 145 | # use localhost as default host |
michael@20 | 146 | %{l_shtool} subst \ |
michael@20 | 147 | -e 's;hostname=.*;hostname=localhost;g' \ |
michael@20 | 148 | configure |
michael@20 | 149 | |
michael@651 | 150 | # warning use of libtool(1) is defective in the case of static building. |
michael@651 | 151 | # http://www.bacula.org/en/dev-manual/main/main/New_Features_in_5_2_1.html#SECTION006110000000000000000 |
michael@20 | 152 | # configure |
michael@20 | 153 | LIBS= |
michael@20 | 154 | case "%{l_platform -t}" in |
michael@579 | 155 | *-sunos*) LIBS="-ldl" ;; |
michael@20 | 156 | esac |
michael@20 | 157 | CC="%{l_cc}" \ |
michael@20 | 158 | CFLAGS="%{l_cflags -O}" \ |
michael@579 | 159 | CPPFLAGS="%{l_cppflags ncurses}" \ |
michael@578 | 160 | LDFLAGS="%{l_ldflags} $LIBS" \ |
michael@20 | 161 | ./configure \ |
michael@20 | 162 | --prefix=%{l_prefix} \ |
michael@20 | 163 | --with-dir-user=%{l_rusr} \ |
michael@20 | 164 | --with-dir-group=%{l_rgrp} \ |
michael@20 | 165 | --with-sd-user=%{l_rusr} \ |
michael@20 | 166 | --with-sd-group=%{l_rgrp} \ |
michael@20 | 167 | --with-fd-user=%{l_susr} \ |
michael@20 | 168 | --with-fd-group=%{l_sgrp} \ |
michael@20 | 169 | --with-dir-password="$password" \ |
michael@20 | 170 | --with-fd-password="$password" \ |
michael@20 | 171 | --with-sd-password="$password" \ |
michael@20 | 172 | --with-mon-dir-password="$password" \ |
michael@20 | 173 | --with-mon-fd-password="$password" \ |
michael@20 | 174 | --with-mon-sd-password="$password" \ |
michael@20 | 175 | --disable-conio \ |
michael@20 | 176 | --enable-readline \ |
michael@20 | 177 | --with-readline=%{l_prefix} \ |
michael@20 | 178 | %if "%{with_server}" != "yes" |
michael@20 | 179 | --enable-client-only \ |
michael@20 | 180 | %endif |
michael@20 | 181 | %if "%{with_ssl}" == "yes" |
michael@20 | 182 | --with-openssl=%{l_prefix} \ |
michael@20 | 183 | %endif |
michael@20 | 184 | %if "%{with_wrap}" == "yes" |
michael@20 | 185 | --with-tcp-wrappers=yes \ |
michael@20 | 186 | %endif |
michael@577 | 187 | %if "%{with_db_sqlite}" == "yes" |
michael@20 | 188 | --with-sqlite3=%{l_prefix} \ |
michael@20 | 189 | %endif |
michael@577 | 190 | %if "%{with_db_mysql}" == "yes" |
michael@20 | 191 | --with-mysql=%{l_prefix} \ |
michael@20 | 192 | %endif |
michael@577 | 193 | %if "%{with_db_pgsql}" == "yes" |
michael@20 | 194 | --with-postgresql=%{l_prefix} \ |
michael@20 | 195 | %endif |
michael@20 | 196 | %if "%{with_python}" == "yes" || "%{with_dvd}" == "yes" |
michael@20 | 197 | --with-python=%{l_prefix} \ |
michael@20 | 198 | %endif |
michael@20 | 199 | --sysconfdir=%{l_prefix}/etc/bacula \ |
michael@20 | 200 | --mandir=%{l_prefix}/man \ |
michael@20 | 201 | --with-scriptdir=%{l_prefix}/libexec/bacula \ |
michael@20 | 202 | --with-working-dir=%{l_prefix}/var/bacula \ |
michael@20 | 203 | --with-pid-dir=%{l_prefix}/var/bacula/run \ |
michael@20 | 204 | --with-subsys-dir=%{l_prefix}/var/bacula/run/subsys \ |
michael@579 | 205 | --with-archivedir=/tmp \ |
michael@579 | 206 | --with-sbin-perm=0755 \ |
michael@649 | 207 | --disable-libtool \ |
michael@20 | 208 | --disable-nls |
michael@20 | 209 | |
michael@20 | 210 | # build |
michael@20 | 211 | %{l_make} %{l_mflags -O} |
michael@20 | 212 | |
michael@20 | 213 | %install |
michael@20 | 214 | # create installation hierarchy |
michael@20 | 215 | %{l_shtool} mkdir -f -p -m 755 \ |
michael@20 | 216 | $RPM_BUILD_ROOT%{l_prefix}/bin \ |
michael@20 | 217 | $RPM_BUILD_ROOT%{l_prefix}/sbin \ |
michael@20 | 218 | $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula \ |
michael@20 | 219 | $RPM_BUILD_ROOT%{l_prefix}/etc/bacula \ |
michael@20 | 220 | $RPM_BUILD_ROOT%{l_prefix}/etc/bacula/clients \ |
michael@20 | 221 | $RPM_BUILD_ROOT%{l_prefix}/etc/bacula/scripts \ |
michael@20 | 222 | $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \ |
michael@20 | 223 | $RPM_BUILD_ROOT%{l_prefix}/var/bacula \ |
michael@20 | 224 | $RPM_BUILD_ROOT%{l_prefix}/var/bacula/run \ |
michael@20 | 225 | $RPM_BUILD_ROOT%{l_prefix}/var/bacula/run/subsys \ |
michael@20 | 226 | $RPM_BUILD_ROOT%{l_prefix}/man/man1 \ |
michael@578 | 227 | $RPM_BUILD_ROOT%{l_prefix}/man/man8 \ |
michael@578 | 228 | $RPM_BUILD_ROOT%{l_prefix}/share/bacula/examples \ |
michael@578 | 229 | $RPM_BUILD_ROOT%{l_prefix}/share/bacula/examples/default-config |
michael@20 | 230 | |
michael@20 | 231 | # install |
michael@20 | 232 | %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT |
michael@20 | 233 | |
michael@20 | 234 | # strip down installation |
michael@579 | 235 | strip $RPM_BUILD_ROOT%{l_prefix}/sbin/* 2>/dev/null || true |
michael@20 | 236 | ( cd $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula && |
michael@578 | 237 | for unwanted in bconsole startmysql stopmysql; do |
michael@20 | 238 | rm -f $unwanted |
michael@20 | 239 | done |
michael@20 | 240 | ) || exit $? |
michael@649 | 241 | ( cd $RPM_BUILD_ROOT%{l_prefix}/man/man1 |
michael@649 | 242 | rm -f bacula-bwxconsole.1 bacula-tray-monitor.1 bat.1 |
michael@649 | 243 | ) || exit $? |
michael@20 | 244 | |
michael@20 | 245 | # install additional files |
michael@20 | 246 | %{l_shtool} install -c -m 754 %{l_value -s -a} \ |
michael@20 | 247 | %{SOURCE bexec.sh} $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula/bexec |
michael@20 | 248 | |
michael@579 | 249 | ## wrap binaries to avoid specifying '-c' on each run |
michael@579 | 250 | #( cd $RPM_BUILD_ROOT%{l_prefix}/sbin |
michael@579 | 251 | # for bin in bacula-dir bacula-fd bacula-sd \ |
michael@579 | 252 | # bconsole bcopy bextract bls bscan dbcheck \ |
michael@579 | 253 | # tray-monitor wx-console; do |
michael@579 | 254 | # if [ -x $bin ]; then |
michael@579 | 255 | # mv $bin $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula |
michael@579 | 256 | # ln $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula/bexec ./$bin |
michael@579 | 257 | # fi |
michael@579 | 258 | # done |
michael@579 | 259 | #) || exit $? |
michael@20 | 260 | |
michael@579 | 261 | # install runcommand script |
michael@20 | 262 | %{l_shtool} install -c -m 755 %{l_value -s -a} \ |
michael@20 | 263 | -e 's,@with_server@,%{with_server},g' \ |
michael@20 | 264 | %{SOURCE rc.bacula} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ |
michael@20 | 265 | |
michael@20 | 266 | # determine installation files |
michael@20 | 267 | %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ |
michael@20 | 268 | %{l_files_std} \ |
michael@578 | 269 | '%attr(700,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/bacula' \ |
michael@578 | 270 | '%attr(700,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/bacula/run' \ |
michael@578 | 271 | '%attr(700,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/bacula/run/subsys' \ |
michael@20 | 272 | '%attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/libexec/bacula/dvd-handler' \ |
michael@20 | 273 | '%attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/libexec/bacula/mtx-changer' \ |
michael@578 | 274 | %if "%{with_server}" == "yes" |
michael@578 | 275 | '%attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/libexec/bacula/make_catalog_backup' \ |
michael@578 | 276 | '%attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/libexec/bacula/delete_catalog_backup'\ |
michael@656 | 277 | '%config(noreplace) %attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/etc/bacula/bacula-dir.conf' \ |
michael@656 | 278 | '%config(noreplace) %attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/etc/bacula/bacula-sd.conf' \ |
michael@656 | 279 | %endif |
michael@656 | 280 | '%config(noreplace) %attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/etc/bacula/bacula-fd.conf' \ |
michael@656 | 281 | '%config(noreplace) %attr(-,%{l_musr},%{l_rgrp}) %{l_prefix}/etc/bacula/bconsole.conf' \ |
michael@579 | 282 | '%attr(750,%{l_musr},%{l_rgrp}) %{l_prefix}/etc/bacula/clients' \ |
michael@579 | 283 | '%attr(750,%{l_musr},%{l_rgrp}) %{l_prefix}/etc/bacula/scripts' |
michael@20 | 284 | |
michael@20 | 285 | %files -f files |
michael@20 | 286 | |
michael@20 | 287 | %clean |
michael@20 | 288 | |
michael@20 | 289 | %post |
michael@20 | 290 | # create initial database |
michael@579 | 291 | %if "%{with_server}" == "yes" |
michael@20 | 292 | if [ ! -f $RPM_INSTALL_PREFIX/var/bacula/bacula.db ]; then |
michael@20 | 293 | $RPM_INSTALL_PREFIX/libexec/bacula/make_bacula_tables |
michael@20 | 294 | chmod 600 $RPM_INSTALL_PREFIX/var/bacula/bacula.db |
michael@20 | 295 | chown %{l_rusr}:%{l_rgrp} $RPM_INSTALL_PREFIX/var/bacula/bacula.db |
michael@20 | 296 | fi |
michael@579 | 297 | %endif |
michael@20 | 298 | |
michael@20 | 299 | # after upgrade, restart service |
michael@20 | 300 | [ $1 -eq 2 ] || exit 0 |
michael@20 | 301 | eval `%{l_rc} bacula status 2>/dev/null` |
michael@20 | 302 | [ ".$bacula_active" = .yes ] && %{l_rc} bacula restart |
michael@20 | 303 | exit 0 |
michael@20 | 304 | |
michael@20 | 305 | %preun |
michael@20 | 306 | # before erase, stop service and remove working files |
michael@20 | 307 | [ $1 -eq 0 ] || exit 0 |
michael@20 | 308 | %{l_rc} bacula stop 2>/dev/null |
michael@20 | 309 | rm -rf $RPM_INSTALL_PREFIX/var/bacula/* |
michael@20 | 310 | exit 0 |
michael@20 | 311 |