From 500927d4d2d1332a504290360acdc08a09d81ec5 Mon Sep 17 00:00:00 2001 From: Tomas Repik Date: Jan 31 2017 10:47:41 +0000 Subject: reworked the subpackage structure --- diff --git a/cassandra-3.9-scripts.patch b/cassandra-3.9-scripts.patch index d0d11d1..04ab50a 100644 --- a/cassandra-3.9-scripts.patch +++ b/cassandra-3.9-scripts.patch @@ -1,14 +1,21 @@ -diff -ur cassandra-cassandra-3.9/bin/cassandra cassandra-cassandra-3.9new/bin/cassandra ---- cassandra-cassandra-3.9/bin/cassandra 2016-09-26 16:02:27.000000000 +0200 -+++ cassandra-cassandra-3.9new/bin/cassandra 2017-01-19 09:56:18.434768566 +0100 -@@ -120,8 +120,8 @@ +diff -urN cassandra-3.9/bin/cassandra cassandra-3.9new/bin/cassandra +--- cassandra-3.9/bin/cassandra 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-3.9new/bin/cassandra 2017-01-26 16:47:55.552170907 +0100 +@@ -115,13 +115,13 @@ + NUMACTL="" + fi + +-if [ -z "$CASSANDRA_CONF" -o -z "$CLASSPATH" ]; then +- echo "You must set the CASSANDRA_CONF and CLASSPATH vars" >&2 ++if [ -z "$CASSANDRA_CONF" -o -z "$CLASSPATH" -o -z "$CASSANDRA_HOME" ]; then ++ echo "You must set the CASSANDRA_CONF, CASSANDRA_HOME and CLASSPATH vars" >&2 exit 1 fi -if [ -f "$CASSANDRA_CONF/cassandra-env.sh" ]; then - . "$CASSANDRA_CONF/cassandra-env.sh" -+if [ -f "/usr/share/cassandra/cassandra-env.sh" ]; then -+ . "/usr/share/cassandra/cassandra-env.sh" ++if [ -f "/usr/share/$CASSANDRA_HOME/cassandra-env.sh" ]; then ++ . "/usr/share/$CASSANDRA_HOME/cassandra-env.sh" fi # Special-case path variables. @@ -17,30 +24,30 @@ diff -ur cassandra-cassandra-3.9/bin/cassandra cassandra-cassandra-3.9new/bin/ca class="$4" cassandra_parms="-Dlogback.configurationFile=logback.xml" - cassandra_parms="$cassandra_parms -Dcassandra.logdir=$CASSANDRA_HOME/logs" -+ cassandra_parms="$cassandra_parms -Dcassandra.logdir=/var/log/cassandra" ++ cassandra_parms="$cassandra_parms -Dcassandra.logdir=/var/log/$CASSANDRA_HOME" cassandra_parms="$cassandra_parms -Dcassandra.storagedir=$cassandra_storagedir" if [ "x$pidpath" != "x" ]; then -diff -ur cassandra-cassandra-3.9/bin/cassandra.in.sh cassandra-cassandra-3.9new/bin/cassandra.in.sh ---- cassandra-cassandra-3.9/bin/cassandra.in.sh 2016-09-26 16:02:27.000000000 +0200 -+++ cassandra-cassandra-3.9new/bin/cassandra.in.sh 2017-01-19 08:20:05.664813737 +0100 +diff -urN cassandra-3.9/bin/cassandra.in.sh cassandra-3.9new/bin/cassandra.in.sh +--- cassandra-3.9/bin/cassandra.in.sh 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-3.9new/bin/cassandra.in.sh 2017-01-26 16:52:30.471400690 +0100 @@ -1,3 +1,4 @@ +#!/bin/bash # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information -@@ -14,63 +15,52 @@ - # See the License for the specific language governing permissions and +@@ -15,62 +16,54 @@ # limitations under the License. --if [ "x$CASSANDRA_HOME" = "x" ]; then + if [ "x$CASSANDRA_HOME" = "x" ]; then - CASSANDRA_HOME="`dirname "$0"`/.." --fi -- ++ CASSANDRA_HOME="cassandra" + fi + # The directory where Cassandra's configs live (required) if [ "x$CASSANDRA_CONF" = "x" ]; then - CASSANDRA_CONF="$CASSANDRA_HOME/conf" -+ CASSANDRA_CONF="/etc/cassandra" ++ CASSANDRA_CONF="/etc/$CASSANDRA_HOME" fi -# This can be the path to a jar file, or a directory containing the @@ -56,17 +63,16 @@ diff -ur cassandra-cassandra-3.9/bin/cassandra.in.sh cassandra-cassandra-3.9new/ - -# JAVA_HOME can optionally be set here -#JAVA_HOME=/usr/local/jdk6 -+#cassandra_storagedir="/var/lib/cassandra" -+cassandra_storagedir="$HOME/cassandra" ++cassandra_storagedir="/var/lib/$CASSANDRA_HOME/data" # The java classpath (required) -CLASSPATH="$CASSANDRA_CONF:$cassandra_bin" -+CLASSPATH="$CASSANDRA_CONF:`build-classpath cassandra/cassandra-all`" ++CLASSPATH="$CASSANDRA_CONF" -for jar in "$CASSANDRA_HOME"/lib/*.jar; do - CLASSPATH="$CLASSPATH:$jar" -done -+DEPS=( cassandra/cassandra-all cassandra/cassandra-thrift stringtemplate4 airline antlr3-runtime objectweb-asm/asm cassandra-java-driver/cassandra-driver-core commons-cli commons-codec commons-math3 commons-lang3 compress-lzf concurrent-trees concurrentlinkedhashmap-lru ecj guava high-scale-lib/high-scale-lib hppc jackson/jackson-core-asl jackson/jackson-mapper-asl jBCrypt jflex jna joda-time json_simple libthrift logback/logback-classic logback/logback-core lz4 metrics netty/netty-all ohc/ohc-core metrics-reporter-config/reporter-config metrics-reporter-config/reporter-config-base sigar slf4j/api snakeyaml snappy-java snowball-java stream-lib disruptor-thrift-server javax.inject caffeine ) ++DEPS=( cassandra/cassandra-all metrics slf4j/api guava snakeyaml commons-codec jackson/jackson-mapper-asl jackson/jackson-core-asl netty/netty-all lz4 logback/logback-classic logback/logback-core jna sigar high-scale-lib/high-scale-lib antlr3-runtime concurrentlinkedhashmap-lru commons-lang3 json_simple stream-lib caffeine cassandra/cassandra-thrift libthrift snappy-java jBCrypt ) -# JSR223 - collect all JSR223 engines' jars -for jsr223jar in "$CASSANDRA_HOME"/lib/jsr223/*/*.jar; do @@ -124,9 +130,9 @@ diff -ur cassandra-cassandra-3.9/bin/cassandra.in.sh cassandra-cassandra-3.9new/ +else + JVM_OPTS="$JVM_OPTS -Djava.library.path=/usr/lib:/usr/lib/sigar" +fi -diff -ur cassandra-cassandra-3.9/bin/cqlsh.py cassandra-cassandra-3.9new/bin/cqlsh.py ---- cassandra-cassandra-3.9/bin/cqlsh.py 2016-09-26 16:02:27.000000000 +0200 -+++ cassandra-cassandra-3.9new/bin/cqlsh.py 2017-01-03 12:24:13.745199335 +0100 +diff -urN cassandra-3.9/bin/cqlsh.py cassandra-3.9new/bin/cqlsh.py +--- cassandra-3.9/bin/cqlsh.py 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-3.9new/bin/cqlsh.py 2017-01-25 14:27:45.843304664 +0100 @@ -1,4 +1,4 @@ -#!/bin/sh +#!/usr/bin/python @@ -152,9 +158,74 @@ diff -ur cassandra-cassandra-3.9/bin/cqlsh.py cassandra-cassandra-3.9new/bin/cql from __future__ import with_statement import cmd -diff -ur cassandra-cassandra-3.9/conf/cassandra-env.sh cassandra-cassandra-3.9new/conf/cassandra-env.sh ---- cassandra-cassandra-3.9/conf/cassandra-env.sh 2016-09-26 16:02:27.000000000 +0200 -+++ cassandra-cassandra-3.9new/conf/cassandra-env.sh 2017-01-19 08:20:57.977239726 +0100 +diff -urN cassandra-3.9/bin/nodetool cassandra-3.9new/bin/nodetool +--- cassandra-3.9/bin/nodetool 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-3.9new/bin/nodetool 2017-01-26 16:47:03.016744809 +0100 +@@ -50,15 +50,15 @@ + exit 1 + fi + +-if [ -z "$CASSANDRA_CONF" -o -z "$CLASSPATH" ]; then +- echo "You must set the CASSANDRA_CONF and CLASSPATH vars" >&2 ++if [ -z "$CASSANDRA_CONF" -o -z "$CLASSPATH" -o -z "$CASSANDRA_HOME" ]; then ++ echo "You must set the CASSANDRA_CONF, $CASSANDRA_HOME and CLASSPATH vars" >&2 + exit 1 + fi + + # Run cassandra-env.sh to pick up JMX_PORT +-if [ -f "$CASSANDRA_CONF/cassandra-env.sh" ]; then ++if [ -f "/usr/share/$CASSANDRA_HOME/cassandra-env.sh" ]; then + JVM_OPTS_SAVE=$JVM_OPTS +- . "$CASSANDRA_CONF/cassandra-env.sh" ++ . "/usr/share/$CASSANDRA_HOME/cassandra-env.sh" + JVM_OPTS=$JVM_OPTS_SAVE + fi + +diff -urN cassandra-3.9/bin/nodetool.in.sh cassandra-3.9new/bin/nodetool.in.sh +--- cassandra-3.9/bin/nodetool.in.sh 1970-01-01 01:00:00.000000000 +0100 ++++ cassandra-3.9new/bin/nodetool.in.sh 2017-01-26 16:43:54.866218781 +0100 +@@ -0,0 +1,38 @@ ++# Licensed to the Apache Software Foundation (ASF) under one ++# or more contributor license agreements. See the NOTICE file ++# distributed with this work for additional information ++# regarding copyright ownership. The ASF licenses this file ++# to you under the Apache License, Version 2.0 (the ++# "License"); you may not use this file except in compliance ++# with the License. You may obtain a copy of the License at ++# ++# http://www.apache.org/licenses/LICENSE-2.0 ++# ++# Unless required by applicable law or agreed to in writing, software ++# distributed under the License is distributed on an "AS IS" BASIS, ++# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++# See the License for the specific language governing permissions and ++# limitations under the License. ++ ++if [ "x$CASSANDRA_HOME" = "x" ]; then ++ CASSANDRA_HOME="cassandra" ++fi ++ ++# The directory where Cassandra's configs live (required) ++if [ "x$CASSANDRA_CONF" = "x" ]; then ++ CASSANDRA_CONF="/etc/$CASSANDRA_HOME" ++fi ++ ++# the default location for commitlogs, sstables, and saved caches ++# if not set in cassandra.yaml ++cassandra_storagedir="/var/lib/$CASSANDRA_HOME/data" ++ ++# The java classpath (required) ++CLASSPATH="$CASSANDRA_CONF" ++ ++DEPS=( airline cassandra/cassandra-all guava javax.inject slf4j/api jackson/jackson-mapper-asl jackson/jackson-core-asl logback/logback-classic logback/logback-core commons-lang3 high-scale-lib/high-scale-lib antlr3-runtime metrics concurrentlinkedhashmap-lru snakeyaml commons-codec ) ++ ++for dep in "${DEPS[@]}"; do ++ CLASSPATH="$CLASSPATH:`build-classpath $dep`" ++done ++ +diff -urN cassandra-3.9/conf/cassandra-env.sh cassandra-3.9new/conf/cassandra-env.sh +--- cassandra-3.9/conf/cassandra-env.sh 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-3.9new/conf/cassandra-env.sh 2017-01-25 14:28:12.372505772 +0100 @@ -1,3 +1,4 @@ +#!/bin/bash # Licensed to the Apache Software Foundation (ASF) under one @@ -188,14 +259,12 @@ diff -ur cassandra-cassandra-3.9/conf/cassandra-env.sh cassandra-cassandra-3.9ne case "$jvm" in OpenJDK) JVM_VENDOR=OpenJDK -@@ -121,8 +118,8 @@ - ;; +@@ -122,7 +119,7 @@ esac --#GC log path has to be defined here because it needs to access CASSANDRA_HOME + #GC log path has to be defined here because it needs to access CASSANDRA_HOME -JVM_OPTS="$JVM_OPTS -Xloggc:${CASSANDRA_HOME}/logs/gc.log" -+#GC log path -+JVM_OPTS="$JVM_OPTS -Xloggc:/var/log/cassandra/gc.log" ++JVM_OPTS="$JVM_OPTS -Xloggc:/var/log/$CASSANDRA_HOME/gc.log" # Here we create the arguments that will get passed to the jvm when # starting cassandra. @@ -208,6 +277,15 @@ diff -ur cassandra-cassandra-3.9/conf/cassandra-env.sh cassandra-cassandra-3.9ne # set jvm HeapDumpPath with CASSANDRA_HEAPDUMP_DIR if [ "x$CASSANDRA_HEAPDUMP_DIR" != "x" ]; then +@@ -271,7 +268,7 @@ + ## which delegates to the IAuthenticator configured in cassandra.yaml. See the sample JAAS configuration + ## file cassandra-jaas.config + #JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.remote.login.config=CassandraLogin" +-#JVM_OPTS="$JVM_OPTS -Djava.security.auth.login.config=$CASSANDRA_HOME/conf/cassandra-jaas.config" ++#JVM_OPTS="$JVM_OPTS -Djava.security.auth.login.config=/etc/$CASSANDRA_HOME/cassandra-jaas.config" + + ## Cassandra also ships with a helper for delegating JMX authz calls to the configured IAuthorizer, + ## uncomment this to use it. Requires one of the two authentication options to be enabled @@ -288,7 +285,12 @@ # Cassandra uses SIGAR to capture OS metrics CASSANDRA-7838 # for SIGAR we have to set the java.library.path @@ -222,9 +300,9 @@ diff -ur cassandra-cassandra-3.9/conf/cassandra-env.sh cassandra-cassandra-3.9ne JVM_OPTS="$JVM_OPTS $MX4J_ADDRESS" JVM_OPTS="$JVM_OPTS $MX4J_PORT" -diff -ur cassandra-cassandra-3.9/tools/bin/cassandra-stress cassandra-cassandra-3.9new/tools/bin/cassandra-stress ---- cassandra-cassandra-3.9/tools/bin/cassandra-stress 2016-09-26 16:02:27.000000000 +0200 -+++ cassandra-cassandra-3.9new/tools/bin/cassandra-stress 2017-01-03 12:24:13.745199335 +0100 +diff -urN cassandra-3.9/tools/bin/cassandra-stress cassandra-3.9new/tools/bin/cassandra-stress +--- cassandra-3.9/tools/bin/cassandra-stress 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-3.9new/tools/bin/cassandra-stress 2017-01-25 14:33:56.608115288 +0100 @@ -49,6 +49,8 @@ exit 1 fi @@ -234,9 +312,9 @@ diff -ur cassandra-cassandra-3.9/tools/bin/cassandra-stress cassandra-cassandra- "$JAVA" -server -ea -cp "$CLASSPATH" $JVM_OPTS \ -Dcassandra.storagedir="$cassandra_storagedir" \ -Dlogback.configurationFile=logback-tools.xml \ -diff -ur cassandra-cassandra-3.9/tools/bin/cassandra-stressd cassandra-cassandra-3.9new/tools/bin/cassandra-stressd ---- cassandra-cassandra-3.9/tools/bin/cassandra-stressd 2016-09-26 16:02:27.000000000 +0200 -+++ cassandra-cassandra-3.9new/tools/bin/cassandra-stressd 2017-01-03 12:24:13.745199335 +0100 +diff -urN cassandra-3.9/tools/bin/cassandra-stressd cassandra-3.9new/tools/bin/cassandra-stressd +--- cassandra-3.9/tools/bin/cassandra-stressd 2016-09-26 16:02:27.000000000 +0200 ++++ cassandra-3.9new/tools/bin/cassandra-stressd 2017-01-25 14:34:00.190142443 +0100 @@ -50,6 +50,8 @@ exit 1 fi diff --git a/cassandra.spec b/cassandra.spec index 1a3b854..029dc05 100644 --- a/cassandra.spec +++ b/cassandra.spec @@ -1,15 +1,18 @@ %{?scl:%scl_package cassandra} %{!?scl:%global pkg_name %{name}} -%global allocated_gid 143 -%global allocated_uid 143 +# fedora reserved UID and GID for cassandra +%global gid_uid 143 + +%{!?thrift:%global thrift 0} +%{!?stress:%global stress 0} %global cqlsh_version 5.0.1 Name: %{?scl_prefix}cassandra Version: 3.9 -Release: 2%{?dist} -Summary: OpenSource database for high-scale application +Release: 3%{?dist} +Summary: Client utilities for %{pkg_name} # Apache (v2.0) BSD (3 clause): # ./src/java/org/apache/cassandra/utils/vint/VIntCoding.java License: ASL 2.0 and BSD @@ -19,8 +22,7 @@ Source1: %{pkg_name}.logrotate Source2: %{pkg_name}d.service Source3: %{pkg_name}-tmpfile # pom files are not generated but used are the ones from mavencentral -# because of orphaned mavent-ant-task package doing the work in this case -# failed koji build: http://koji.fedoraproject.org/koji/taskinfo?taskID=15542960 +# because of orphaned maven-ant-task package doing the work in this case Source4: http://central.maven.org/maven2/org/apache/%{pkg_name}/%{pkg_name}-all/%{version}/%{pkg_name}-all-%{version}.pom Source5: http://central.maven.org/maven2/org/apache/%{pkg_name}/%{pkg_name}-thrift/%{version}/%{pkg_name}-thrift-%{version}.pom Source6: http://central.maven.org/maven2/org/apache/%{pkg_name}/%{pkg_name}-clientutil/%{version}/%{pkg_name}-clientutil-%{version}.pom @@ -47,13 +49,22 @@ Patch5: %{pkg_name}-%{version}-slf4j.patch # https://github.com/apache/cassandra/commit/8f0d5a295d34972ef719574df4aa1b59bf9e8478 Patch6: %{pkg_name}-%{version}-remove-primitive.patch +# TODO #BuildArchitectures: noarch -%{?scl:Requires: %scl_runtime} -Requires(pre): shadow-utils -Requires: %{?scl_prefix}sigar -%{?systemd_ordering} -BuildRequires: systemd +Requires: %{pkg_name}-python2-cqlshlib = %{version}-%{release} +Requires: %{pkg_name}-java-libs = %{version}-%{release} +Provides: cqlsh = %{cqlsh_version} + +%description +This package contains all client utilities for %{pkg_name}. These are: +1. Commandline client used to communicate with %{pkg_name} server called cqlsh. +2. Command line interface for managing cluster called nodetool. +3. Tools for using, upgrading, and changing %{pkg_name} SSTables. + +%package java-libs +Summary: Java libraries for %{pkg_name} + BuildRequires: %{?scl_prefix_maven}maven-local BuildRequires: %{?scl_prefix_java_common}ant BuildRequires: %{?scl_prefix_java_common}ecj @@ -105,7 +116,7 @@ BuildRequires: %{?scl_prefix}snappy-java BuildRequires: %{?scl_prefix}ohc BuildRequires: %{?scl_prefix}ohc-core-j8 # the SCL version of the package depends on rh-maven33 collection -#%{?scl:Requires: %%scl_require rh-maven33} +%{?scl:Requires: %%scl_require rh-maven33} # temporarly removed as it is optional # using hadoop-common instead of hadoop-core, no Cassandra original @@ -113,7 +124,21 @@ BuildRequires: %{?scl_prefix}ohc-core-j8 #BuildRequires: hadoop-common #BuildRequires: hadoop-mapreduce -%description +%description java-libs +All the classes required by cassandra server, nodetool, sstable tools +and stress tools. + +%package server +Summary: OpenSource database server for high-scale application + +%{?scl:Requires: %scl_runtime} +Requires(pre): shadow-utils +Requires: %{?scl_prefix}sigar +Requires: %{pkg_name}-java-libs = %{version}-%{release} +%{?systemd_ordering} +BuildRequires: systemd + +%description server Cassandra is a partitioned row store. Rows are organized into tables with a required primary key. Partitioning means that Cassandra can distribute your data across multiple machines in an application-transparent matter. Cassandra @@ -127,6 +152,7 @@ Summary: Parent POM for %{pkg_name} %description parent Parent POM for %{pkg_name}. +%if %thrift %package thrift Summary: Thrift for %{pkg_name} Requires: %{pkg_name} = %{version}-%{release} @@ -135,34 +161,29 @@ Requires: %{pkg_name} = %{version}-%{release} Allows portable (across programming languages) access to the database. Thrift accomplishes this by generated source code for the programming language in question based on a Thrift IDL file describing the service. - -%package clientutil -Summary: Client utilities for %{pkg_name} -Requires: %{pkg_name} = %{version}-%{release} - -%description clientutil -Utilities usable by client for %{pkg_name} +%endif # source codes of cqlshlib are not python3 compatible, therefore using python2 %package python2-cqlshlib -Summary: Commandline interface for %{pkg_name} +Summary: Python cqlsh library for %{pkg_name} BuildRequires: python2-devel BuildRequires: Cython -Requires: %{name} = %{version}-%{release} Requires: python2-cassandra-driver -Provides: cqlsh = %{cqlsh_version} +# optional timestamps in different timezones dependency +Requires: pytz %{?python_provide:%python_provide python2-cqlshlib} %description python2-cqlshlib -Commandline client used to communicate with %{pkg_name} server. +A python library required by the commandline client used to communicate with +%{pkg_name} server. +%if %stress %package stress Summary: Stress testing utility for %{pkg_name} -Requires: %{pkg_name} = %{version}-%{release} %description stress -The cassandra-stress tool is a Java-based stress testing utility -for benchmarking and load testing a Cassandra cluster. +A Java-based stress testing utility for basic benchmarking and load testing a %{pkg_name} cluster. +%endif %package javadoc Summary: Javadoc for %{pkg_name} @@ -206,9 +227,23 @@ rm test/unit/org/apache/cassandra/client/TestRingCache.java rm test/unit/org/apache/cassandra/hadoop/ColumnFamilyInputFormatTest.java # remove hadoop also from pom files %pom_remove_dep -r org.apache.hadoop: build/%{pkg_name}-%{version}.pom + # remove shaded classifier in cassandra driver from pom files %pom_xpath_remove "pom:dependencies/pom:dependency/pom:classifier" build/%{pkg_name}-%{version}.pom +# TRY remove cassandra-java-driver +#%pom_remove_dep -r com.datastax.cassandra:cassandra-driver-core build/%%{pkg_name}-%%{version}.pom +#rm src/java/org/apache/cassandra/cql3/functions/UDFunction.java +#rm src/java/org/apache/cassandra/cql3/functions/UDFContext.java +#rm src/java/org/apache/cassandra/cql3/functions/JavaBasedUDFunction.java +#rm src/java/org/apache/cassandra/cql3/functions/JavaUDF.java +#rm src/java/org/apache/cassandra/cql3/functions/UDFContextImpl.java +#rm src/java/org/apache/cassandra/cql3/functions/UDHelper.java +#rm src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java +#rm src/java/org/apache/cassandra/tools/BulkLoader.java +#rm src/java/org/apache/cassandra/tools/LoaderOptions.java +#rm src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java + # build jar repositories for dependencies build-jar-repository lib antlr3 build-jar-repository lib stringtemplate4 @@ -292,17 +327,21 @@ build-jar-repository lib javax.inject %patch6 -p1 %{?scl:scl enable %{scl_maven} %{scl} - << "EOF"} -# update dependencies that are not correct in the downloaded pom files -%pom_change_dep com.boundary: com.github.stephenc.high-scale-lib: build/%{name}-%{version}.pom -%pom_change_dep com.github.rholder:snowball-stemmer org.tartarus:snowball build/%{name}-thrift-%{version}.pom +# update dependencies in the downloaded pom files to those being actually used +%pom_change_dep com.boundary: com.github.stephenc.high-scale-lib: build/%{pkg_name}-%{version}.pom +%pom_change_dep com.github.rholder:snowball-stemmer org.tartarus:snowball build/%{pkg_name}-thrift-%{version}.pom # remove primitve as a dependency %pom_remove_dep -r :primitive build/%{pkg_name}-thrift-%{version}.pom %mvn_package "org.apache.%{pkg_name}:%{pkg_name}-parent:pom:%{version}" parent +%if %thrift %mvn_package ":%{pkg_name}-thrift" thrift -%mvn_package ":%{pkg_name}-clientutil" clientutil +%endif +%mvn_package ":%{pkg_name}-clientutil" client +%if %stress %mvn_package ":%{pkg_name}-stress" stress +%endif %{?scl:EOF} %build @@ -321,7 +360,9 @@ popd %mvn_artifact build/%{pkg_name}-%{version}.pom build/%{pkg_name}-%{version}.jar %mvn_artifact build/%{pkg_name}-thrift-%{version}.pom build/%{pkg_name}-thrift-%{version}.jar %mvn_artifact build/%{pkg_name}-clientutil-%{version}.pom build/%{pkg_name}-clientutil-%{version}.jar -%mvn_artifact org.apache.cassandra:%{pkg_name}-stress:%{version} build/tools/lib/%{pkg_name}-stress.jar +%if %stress +%mvn_artifact org.apache.%{pkg_name}:%{pkg_name}-stress:%{version} build/tools/lib/%{pkg_name}-stress.jar +%endif %mvn_install -J build/javadoc/ %{?scl:EOF} @@ -331,19 +372,22 @@ pushd pylib %py2_install popd -# create data dir -mkdir -p %{buildroot}%{_sharedstatedir}/%{pkg_name} - -# logs directory plus files +# create data and log dirs +mkdir -p %{buildroot}%{_sharedstatedir}/%{pkg_name}/data mkdir -p %{buildroot}%{_localstatedir}/log/%{pkg_name} + +# install files install -p -D -m 644 "%{SOURCE1}" %{buildroot}%{_sysconfdir}/logrotate.d/%{pkg_name} install -p -D -m 755 bin/%{pkg_name} %{buildroot}%{_bindir}/%{pkg_name} install -p -D -m 755 bin/%{pkg_name}.in.sh %{buildroot}%{_datadir}/%{pkg_name}/%{pkg_name}.in.sh install -p -D -m 755 conf/%{pkg_name}-env.sh %{buildroot}%{_datadir}/%{pkg_name}/%{pkg_name}-env.sh install -p -D -m 644 conf/%{pkg_name}.yaml %{buildroot}%{_sysconfdir}/%{pkg_name}/%{pkg_name}.yaml +install -p -D -m 644 conf/%{pkg_name}-jaas.config %{buildroot}%{_sysconfdir}/%{pkg_name}/%{pkg_name}-jaas.config +install -p -D -m 644 conf/%{pkg_name}-topology.properties %{buildroot}%{_sysconfdir}/%{pkg_name}/%{pkg_name}-topology.properties install -p -D -m 644 conf/jvm.options %{buildroot}%{_sysconfdir}/%{pkg_name}/jvm.options install -p -D -m 644 conf/logback-tools.xml %{buildroot}%{_sysconfdir}/%{pkg_name}/logback-tools.xml install -p -D -m 644 conf/logback.xml %{buildroot}%{_sysconfdir}/%{pkg_name}/logback.xml +install -p -D -m 644 conf/metrics-reporter-config-sample.yaml %{buildroot}%{_sysconfdir}/%{pkg_name}/metrics-reporter-config-sample.yaml install -p -D -m 755 bin/cqlsh.py %{buildroot}%{_bindir}/cqlsh install -p -D -m 755 bin/nodetool %{buildroot}%{_bindir}/nodetool install -p -D -m 755 bin/sstableloader %{buildroot}%{_bindir}/sstableloader @@ -358,88 +402,104 @@ install -p -D -m 755 tools/bin/sstablemetadata %{buildroot}%{_bindir}/sstablemet install -p -D -m 755 tools/bin/sstableofflinerelevel %{buildroot}%{_bindir}/sstableofflinerelevel install -p -D -m 755 tools/bin/sstablerepairedset %{buildroot}%{_bindir}/sstablerepairedset install -p -D -m 755 tools/bin/sstablesplit %{buildroot}%{_bindir}/sstablesplit +%if %stress install -p -D -m 755 tools/bin/%{pkg_name}-stress %{buildroot}%{_bindir}/%{pkg_name}-stress install -p -D -m 755 tools/bin/%{pkg_name}-stressd %{buildroot}%{_bindir}/%{pkg_name}-stressd +%endif # install cassandrad.service install -p -D -m 644 "%{SOURCE2}" %{buildroot}%{_unitdir}/%{pkg_name}d.service -%pre -getent group %{pkg_name} >/dev/null || groupadd -f -g %{allocated_gid} -r %{pkg_name} +%pre server +getent group %{pkg_name} >/dev/null || groupadd -f -g %{gid_uid} -r %{pkg_name} if ! getent passwd %{pkg_name} >/dev/null ; then - if ! getrnt passwd %{allocated_uid} >/dev/null ; then - useradd -r -u %{allocated_uid} -g %{pkg_name} -d %{_sharedstatedir}/%{pkg_name} \ + if ! getrnt passwd %{gid_uid} >/dev/null ; then + useradd -r -u %{gid_uid} -g %{pkg_name} -d %{_sharedstatedir}/%{pkg_name}/data \ -s /sbin/nologin -c "Cassandra Database Server" %{pkg_name} else - useradd -r -g %{pkg_name} -d %{_sharedstatedir}/%{pkg_name} -s /sbin/nologin \ + useradd -r -g %{pkg_name} -d %{_sharedstatedir}/%{pkg_name}/data -s /sbin/nologin \ -c "Cassandra Database Server" %{pkg_name} fi fi exit 0 -%post +%post server %systemd_post %{pkg_name}d.service -%preun +%preun server %systemd_preun %{pkg_name}d.service -%postun +%postun server %systemd_postun_with_restart %{pkg_name}d.service -%files -f .mfiles -%doc README.asc CHANGES.txt NEWS.txt +%files -f .mfiles-client +%doc README.asc CHANGES.txt NEWS.txt conf/cqlshrc.sample %license LICENSE.txt NOTICE.txt -%dir %attr(755, %{pkg_name}, root) %{_sharedstatedir}/%{pkg_name} -%dir %attr(755, %{pkg_name}, root) %{_localstatedir}/log/%{pkg_name} +%attr(755, root, root) %{_bindir}/nodetool +%attr(755, root, root) %{_bindir}/sstableloader +%attr(755, root, root) %{_bindir}/sstablescrub +%attr(755, root, root) %{_bindir}/sstableupgrade +%attr(755, root, root) %{_bindir}/sstableutil +%attr(755, root, root) %{_bindir}/sstableverify +%attr(755, root, root) %{_bindir}/sstabledump +%attr(755, root, root) %{_bindir}/sstableexpiredblockers +%attr(755, root, root) %{_bindir}/sstablelevelreset +%attr(755, root, root) %{_bindir}/sstablemetadata +%attr(755, root, root) %{_bindir}/sstableofflinerelevel +%attr(755, root, root) %{_bindir}/sstablerepairedset +%attr(755, root, root) %{_bindir}/sstablesplit +%attr(755, root, root) %{_bindir}/cqlsh + +%files java-libs -f .mfiles +%license LICENSE.txt NOTICE.txt + +%files server +%license LICENSE.txt NOTICE.txt +%dir %attr(755, root, root) %{_sharedstatedir}/%{pkg_name} +%dir %attr(700, %{pkg_name}, %{pkg_name}) %{_sharedstatedir}/%{pkg_name}/data +%dir %attr(700, %{pkg_name}, %{pkg_name}) %{_localstatedir}/log/%{pkg_name} %{_bindir}/%{pkg_name} %{_datadir}/%{pkg_name}/%{pkg_name}.in.sh %{_datadir}/%{pkg_name}/%{pkg_name}-env.sh +%dir %attr(700, %{pkg_name}, %{pkg_name}) %{_sysconfdir}/%{pkg_name} %config(noreplace) %{_sysconfdir}/%{pkg_name}/%{pkg_name}.yaml +%config(noreplace) %{_sysconfdir}/%{pkg_name}/%{pkg_name}-jaas.config +%config(noreplace) %{_sysconfdir}/%{pkg_name}/%{pkg_name}-topology.properties %config(noreplace) %{_sysconfdir}/%{pkg_name}/jvm.options %config(noreplace) %{_sysconfdir}/%{pkg_name}/logback-tools.xml %config(noreplace) %{_sysconfdir}/%{pkg_name}/logback.xml +%config(noreplace) %{_sysconfdir}/%{pkg_name}/metrics-reporter-config-sample.yaml %config(noreplace) %{_sysconfdir}/logrotate.d/%{pkg_name} %{_unitdir}/%{pkg_name}d.service %files parent -f .mfiles-parent %license LICENSE.txt NOTICE.txt +%if %thrift %files thrift -f .mfiles-thrift %license LICENSE.txt NOTICE.txt - -%files clientutil -f .mfiles-clientutil -%license LICENSE.txt NOTICE.txt -%attr(755, root, root) %{_bindir}/nodetool -%attr(755, root, root) %{_bindir}/sstableloader -%attr(755, root, root) %{_bindir}/sstablescrub -%attr(755, root, root) %{_bindir}/sstableupgrade -%attr(755, root, root) %{_bindir}/sstableutil -%attr(755, root, root) %{_bindir}/sstableverify -%attr(755, root, root) %{_bindir}/sstabledump -%attr(755, root, root) %{_bindir}/sstableexpiredblockers -%attr(755, root, root) %{_bindir}/sstablelevelreset -%attr(755, root, root) %{_bindir}/sstablemetadata -%attr(755, root, root) %{_bindir}/sstableofflinerelevel -%attr(755, root, root) %{_bindir}/sstablerepairedset -%attr(755, root, root) %{_bindir}/sstablesplit +%endif %files python2-cqlshlib -%doc conf/cqlshrc.sample %license LICENSE.txt NOTICE.txt -%attr(755, root, root) %{_bindir}/cqlsh %{python2_sitearch}/cqlshlib %{python2_sitearch}/%{pkg_name}_pylib-0.0.0-py%{python2_version}.egg-info +%if %stress %files stress -f .mfiles-stress %license LICENSE.txt NOTICE.txt %attr(755, root, root) %{_bindir}/%{pkg_name}-stress %attr(755, root, root) %{_bindir}/%{pkg_name}-stressd %{_datadir}/%{pkg_name}/%{pkg_name}.in.sh +%endif %files javadoc -f .mfiles-javadoc %license LICENSE.txt NOTICE.txt %changelog +* Tue Jan 31 2017 Tomas Repik - 3.9-3 +- reworked the subpackage structure + * Wed Jan 18 2017 Tomas Repik - 3.9-2 - fix paths so that one could run the server diff --git a/cassandrad.service b/cassandrad.service index 4d154bd..fef323b 100644 --- a/cassandrad.service +++ b/cassandrad.service @@ -6,7 +6,7 @@ After=syslog.target network.target [Service] Type=forking User=cassandra -EnvironmentFile=/etc/sysconfig/cassandra +EnvironmentFile=-/etc/sysconfig/cassandra ExecStart=/usr/bin/cassandra $OPTIONS [Install]