From 829517df64ee64ba6b4d8885906ae0992cc6efb6 Mon Sep 17 00:00:00 2001 From: karlchenofhell Date: Sat, 14 Oct 2006 16:34:20 +0000 Subject: [PATCH] - added ant support for rpms - added spec file for rpm generation RPMs can be built via 'ant rpm' and will be placed in RELEASES git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@2776 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- build.xml | 13 ++ yacy-svn-3.spec | 327 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 340 insertions(+) create mode 100644 yacy-svn-3.spec diff --git a/build.xml b/build.xml index 5e49d7b68..2073e2fdd 100644 --- a/build.xml +++ b/build.xml @@ -181,6 +181,7 @@ + @@ -730,4 +731,16 @@ + + + + + + + + + + diff --git a/yacy-svn-3.spec b/yacy-svn-3.spec new file mode 100644 index 000000000..b10f06d44 --- /dev/null +++ b/yacy-svn-3.spec @@ -0,0 +1,327 @@ +# Author: Franz Brauße +# Date: 14.10.2006 +# based on the spec-file of 0.48-3 +# Distributed under the terms of the GNU General Public Licens v2 + +Summary: P2P search engine, web-crawler and proxy +Name: yacy +Version: @REPL_VERSION@_@REPL_REVISION_NR@ +Release: 3 +Copyright: GPL +Group: Application/Internet +Source0: svn://svn.berlios.de/yacy/trunk +URL: http://www.yacy.net/yacy/ +Requires: bash +Requires: sudo +Requires: coreutils +Requires: util-linux +Requires: grep +Requires: sed +Requires: wget +Requires: jre >= 1.4.2 +BuildArch: noarch +BuildRoot: @REPL_YACY_ROOT_DIR@/RELEASE/BUILD + +%description +YaCy is a Java-based peer-2-peer search engine. + +It contains a proxy which gathers all the web-pages +you retrieve with it. All private data stays private and +is not indexed or processed in any way. Furthermore +you'll get a individual .yacy-domain which makes you +independant of the traditional DNS system. + +Also included in YaCy is a Wiki, a P2P-message-system, a +Blog and a bookmark management system. YaCy can be configured +to set special limits for proxy-users i.e. a maximum quota or +online-time. + +%package libx +Summary: Addon package containing parsers, etc. +License: GPL +Group: Application/Internet +Requires: yacy + +%description libx +This package contains the following parsers: +OpenDocument V2, MimeType, Rich Text Format, Word Document, +vCard, rpm, Bzip2, Acrobat Portable Document, RSS/Atom Feed, +Zip, tar, Power Point, gzip + +Additionally it allows port forwarding via secure channel, +seed uploading via SCP and provides a SOAP API. + +%prep # nothing to be done here, ant already prepared everything nicely for us + +%build # ant did this for us as well... such a nice tool + +%pre +# check whether group 'yacy' already exists, if not it will be created +#if ! getent group yacy >> /dev/null; then +# echo "adding group yacy" +# groupadd -r yacy +#fi +# check whether user 'yacy' already exists, if not it will be created +if ! getent passwd yacy >> /dev/null; then + echo "adding user yacy" + useradd yacy -p `dd count=1 if=/dev/urandom status=noxfer 2> /dev/null | md5sum | cut -c0-15` -r +fi + +%install +cd ../.. +rm -rf $RPM_BUILD_ROOT + +# define directories yacy will use +YACYCDIR="/usr/share/yacy" # all the other shit +YACYDDIR="/usr/share/doc/yacy" # documentation +YACYLDIR="/usr/lib/yacy" # classes / jars +DATADIR="/var/lib/yacy" # DB, SETTINGS, WORK, etc. - all in DATA +LOGDIR="/var/log/yacy" # logs of yacy, basically DATA/LOG + +install -d ${RPM_BUILD_ROOT}{$YACYCDIR,$YACYDDIR,$YACYLDIR/libx,$DATADIR,$LOGDIR} + +# copy all other files +cp -r htroot locales ranking skins ${RPM_BUILD_ROOT}$YACYCDIR/ +cp -r classes lib libx ${RPM_BUILD_ROOT}$YACYLDIR/ +cp -r doc ${RPM_BUILD_ROOT}$YACYDDIR/ + +cp *.sh build.properties superseed.txt httpd.mime yacy.badwords.example yacy.init yacy.logging yacy.stopwords* yacy.yellow ${RPM_BUILD_ROOT}$YACYCDIR/ +cp AUTHORS COPYRIGHT ChangeLog gpl.txt readme.txt ${RPM_BUILD_ROOT}$YACYDDIR/ + +install -m 744 *.sh ${RPM_BUILD_ROOT}$YACYCDIR/ # start/stop/kill scripts +rm -r `find ${RPM_BUILD_ROOT}/ -type d -name '.svn'` # delete unwanted .svn-folders + +# location for init-script +install -d ${RPM_BUILD_ROOT}/etc/init.d/ + +%post +# link DATA- and LOG-directories to YaCy-folder +ln -s /usr/lib/yacy/classes /usr/share/yacy/classes # classes linken +ln -s /usr/lib/yacy/lib /usr/share/yacy/lib # lib linken +ln -s /usr/lib/yacy/libx /usr/share/yacy/libx # libx linken + +ln -s /var/lib/yacy /usr/share/yacy/DATA # DATA linken +echo "created link /usr/share/yacy/DATA -> /var/lib/yacy" # user-feedback + +if [ ! -L /var/lib/yacy/LOG ]; then + ln -s /var/log/yacy /var/lib/yacy/LOG # LOG linken + echo "created link /var/lib/yacy/LOG -> /var/log/yacy" # user-feedback +fi + +if [ ! -e /var/lib/yacy/SETTINGS ]; then + mkdir /var/lib/yacy/SETTINGS; + chown yacy /var/lib/yacy/SETTINGS; +fi +if [ ! -e /etc/yacy ]; then ln -s /var/lib/yacy/SETTINGS /etc/yacy; fi # SETTINGS linken + +chown yacy -R /var/lib/yacy +chown yacy -R /var/log/yacy +chmod -R 750 /var/lib/yacy +chmod -R 750 /var/log/yacy +chmod +x /usr/share/yacy/startYACY.sh +chmod +x /usr/share/yacy/stopYACY.sh +chmod +x /usr/share/yacy/killYACY.sh + +## language check - not wanted +#LNG="" +#LNT="" +#if [ ! -z $LC_TYPE ]; then LNT=${LC_TYPE%_*}; fi +#if [ ! -z $LANG ]; then LNT=${LANG%_*}; fi +#if [ $LNT == de -o $LNT == it -o $LNT == sk ]; then # translation exists +# # test whether settings-directory exists +# if [ ! -d /var/lib/yacy/SETTINGS ]; then mkdir /var/lib/yacy/SETTINGS; chown yacy:root /var/lib/yacy/SETTINGS; fi +# echo "htLocaleSelection=$LNT.lng" >> /var/lib/yacy/SETTINGS/httpProxy.conf +# chown yacy:root /var/lib/yacy/SETTINGS/httpProxy.conf +#fi + + +# we need an init-script +cat > /etc/init.d/yacy < +# Date: 14.10.2006 +# License: Distributed under the terms of the GNU General Public Licens v2 +# This file belongs to the YaCy RPM package + +# TODO +# - save PID when started in debug-mode + +### BEGIN INIT INFO +# Provides: yacy +# Required-Start: $network +# Required-Stop: $network +# Default-Start: 3 5 +# Default-Stop: +# Description: yacy is a distributed search engine +# config-file is /etc/yacy/httpProxy.conf +### END INIT INFO + +YACY_HOME="/usr/share/yacy" +DATA_HOME="/var/lib/yacy" +PID_FILE="/var/run/yacy.pid" + +JAVA=\`which java\ 2> /dev/null\` +if [ ! -x "\$JAVA" ]; then + echo "The 'java' command is not executable." + echo "Either you have not installed java or it is not in your PATH" + #Cron supports setting the path in + #echo "Has this script been invoked by CRON?" + #echo "if so, please set PATH in the crontab, or set the correct path in the variable in this script." + if [ \$1 == "stop" -a \$2 == "--force" ]; then exit 0; else exit 1; fi +fi + +# get arguments for java +if [ -f \$DATA_HOME/SETTINGS/httpProxy.conf ]; then + i=\`grep javastart_Xmx \$DATA_HOME/SETTINGS/httpProxy.conf\`; + JAVA_MAX="-\${i#javastart_Xmx=}"; + i=\`grep javastart_Xms \$DATA_HOME/SETTINGS/httpProxy.conf\`; + JAVA_MIN="-\${i#javastart_Xms=}"; +fi + +CLASSPATH="\$YACY_HOME/classes:." +for N in \$YACY_HOME/lib/*.jar; do CLASSPATH="\$CLASSPATH:\$N"; done +if [ -d \$YACY_HOME/libx ]; then + for N in \$YACY_HOME/libx/*.jar; do CLASSPATH="\$CLASSPATH:\$N"; done +fi + +ME=\$0 +if [ "\$1" = "restart" ]; then + shift + \$ME stop + \$ME start \$* + exit 0 +fi + +WTF=\$1; shift +if [ "\$1" == "--max" ]; then JAVA_MAX="-Xmx\$2"; shift; shift; fi +if [ "\$1" == "--min" ]; then JAVA_MIN="-Xms\$2"; shift; shift; fi +if [ "\$1" == "--nice" ]; then NICE="nice -n \$2"; shift; shift; fi +if [ "\$1" == "--debug" ]; then DEBUG="-d"; shift; fi +shift +cd \$YACY_HOME + +if [ "\$JAVA_MAX" == "-" ]; then JAVA_MAX=""; fi +if [ "\$JAVA_MIN" == "-" ]; then JAVA_MIN=""; fi + +case "\$WTF" in + start) + if [ -e \$PID_FILE ]; then + echo "YaCy seems to be running. If not, delete the file \$PID_FILE." + exit 1 + fi + echo -n "Starting YaCy... " + CMD="sudo -u yacy \$NICE \$JAVA -Djava.awt.headless=true \$JAVA_MAX \$JAVA_MIN -classpath \$CLASSPATH yacy \$* & pid=\\\$!; echo \\\$pid > \$PID_FILE" + if [ \$DEBUG ]; then + \$CMD + else + eval \$CMD &> /dev/null + fi + echo "done" + exit 0 + ;; + stop) + echo "Shutting down YaCy, please be patient. Waiting maximal 60 seconds before killing the process... " + \$YACY_HOME/stopYACY.sh + if [ ! -e \$PID_FILE ]; then + echo "PID-file not found: YaCy doesn't appear to be running. You eventually have to kill the process yourself." + exit 1 + else + pid=\`cat \$PID_FILE\` + fi + i=0 + while test -d /proc/\$pid; do + sleep 2; + i=\$[i+2]; + if [ \$i -ge 60 ]; then + echo -n "Now killing: "; + kill -9 \$pid; + echo "done" + break; + fi + done + rm \$PID_FILE + exit 0 + ;; + status) + echo -n "YaCy is " + if [ ! -e \$PID_FILE -o ! -d /proc/`cat \$PID_FILE` ]; then + echo -n "not " + fi + echo "running." + exit 0 + ;; + kill) + echo -n "Killing YaCy: " + kill -9 \`cat \$PID_FILE\` + rm \$PID_FILE + echo "done" + exit 0 + ;; + *) + echo "Usage: /etc/init.d/yacy {start|restart} [--max RAM] [--min RAM] [--nice LEVEL] [--debug] [YACY_ARGUMENTS]" + echo " {stop|kill|status}" + echo "" + echo " --max RAM[{k|M|G}] Maximum RAM YaCy may use" + echo " --min RAM[{k|M|G}] Initial RAM YaCY shall use" + echo " --nice LEVEL Enter desired nice-level of YaCy-process" + echo " --debug Active mode, process will not be backgrounded" + exit 1 + ;; +esac +EOF +#chmod +x /etc/init.d/yacy +chmod 744 /etc/init.d/yacy + +%preun +if [ -x /etc/init.d/yacy ]; then /etc/init.d/yacy stop --force; fi + +%postun +rm -r /usr/share/yacy +rm -r /usr/lib/yacy +rm -r /usr/share/doc/yacy +if [ -e /etc/init.d/yacy ]; then rm -f /etc/init.d/yacy; fi +if [ `getent passwd yacy` ]; then userdel yacy &> /dev/null; fi + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%attr(750,yacy,root) %config %dir /var/lib/yacy/ +%attr(750,yacy,root) %dir /var/log/yacy/ +%defattr(644,root,root,755) +/usr/share/yacy/* +/usr/lib/yacy/lib/* +/usr/lib/yacy/classes/* +/usr/share/doc/yacy/* + +%files libx +#%dir /usr/lib/yacy/libx +/usr/lib/yacy/libx/* +#/usr/lib/yacy/classes/de/anomic/plasma/parser/bzip/bzipParser.class +#/usr/lib/yacy/classes/de/anomic/plasma/parser/doc/docParser.class +#/usr/lib/yacy/classes/de/anomic/plasma/parser/gzip/gzipParser.class +#/usr/lib/yacy/classes/de/anomic/plasma/parser/mimeType/mimeTypeParser.class +#/usr/lib/yacy/classes/de/anomic/plasma/parser/mimeType/odtDetector.class +#/usr/lib/yacy/classes/de/anomic/plasma/parser/mimeType/rssDetector.class +#/usr/lib/yacy/classes/de/anomic/plasma/parser/odt/odtParser.class +#/usr/lib/yacy/classes/de/anomic/plasma/parser/pdf/pdfParser.class +#/usr/lib/yacy/classes/de/anomic/plasma/parser/ppt/pptParser.class +#/usr/lib/yacy/classes/de/anomic/plasma/parser/rpm/rpmParser.class +#/usr/lib/yacy/classes/de/anomic/plasma/parser/rss/rssParser.class +#/usr/lib/yacy/classes/de/anomic/plasma/parser/rtf/rtfParser.class +#/usr/lib/yacy/classes/de/anomic/plasma/parser/tar/tarParser.class +#/usr/lib/yacy/classes/de/anomic/plasma/parser/vcf/vcfParser.class +#/usr/lib/yacy/classes/de/anomic/plasma/parser/zip/zipParser.class +#/usr/lib/yacy/classes/de/anomic/server/portForwarding/sch/* +#/usr/lib/yacy/classes/de/anomic/server/portForwarding/serverPortForwarding.class +#/usr/lib/yacy/classes/de/anomic/server/portForwarding/upnp/* +#/usr/lib/yacy/classes/de/anomic/soap/* +#/usr/lib/yacy/classes/de/anomic/soap/services/* +#/usr/lib/yacy/classes/de/anomic/yacy/seedUpload/* + +%changelog +* Sat Oct 14 2006 Franz Brauße +- initial spec file based on yacy-0.48-3.spec +- some adaptions for build with ant +