diff --git a/cassandra-3.9-scripts.patch b/cassandra-3.9-scripts.patch index 48ec1ec..d0d11d1 100644 --- a/cassandra-3.9-scripts.patch +++ b/cassandra-3.9-scripts.patch @@ -1,6 +1,17 @@ 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 2016-10-17 11:03:56.085746811 +0200 ++++ cassandra-cassandra-3.9new/bin/cassandra 2017-01-19 09:56:18.434768566 +0100 +@@ -120,8 +120,8 @@ + 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" + fi + + # Special-case path variables. @@ -188,7 +188,7 @@ props="$3" class="$4" @@ -12,8 +23,13 @@ diff -ur cassandra-cassandra-3.9/bin/cassandra cassandra-cassandra-3.9new/bin/ca 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 2016-10-17 11:03:56.085746811 +0200 -@@ -14,63 +14,27 @@ ++++ cassandra-cassandra-3.9new/bin/cassandra.in.sh 2017-01-19 08:20:05.664813737 +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 # limitations under the License. @@ -24,7 +40,7 @@ diff -ur cassandra-cassandra-3.9/bin/cassandra.in.sh cassandra-cassandra-3.9new/ # The directory where Cassandra's configs live (required) if [ "x$CASSANDRA_CONF" = "x" ]; then - CASSANDRA_CONF="$CASSANDRA_HOME/conf" -+ CASSANDRA_CONF="/etc" ++ CASSANDRA_CONF="/etc/cassandra" fi -# This can be the path to a jar file, or a directory containing the @@ -40,7 +56,8 @@ 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="/var/lib/cassandra" ++cassandra_storagedir="$HOME/cassandra" # The java classpath (required) -CLASSPATH="$CASSANDRA_CONF:$cassandra_bin" @@ -49,7 +66,7 @@ diff -ur cassandra-cassandra-3.9/bin/cassandra.in.sh cassandra-cassandra-3.9new/ -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 primitive 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 ) ++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 ) -# JSR223 - collect all JSR223 engines' jars -for jsr223jar in "$CASSANDRA_HOME"/lib/jsr223/*/*.jar; do @@ -81,12 +98,35 @@ diff -ur cassandra-cassandra-3.9/bin/cassandra.in.sh cassandra-cassandra-3.9new/ - JAVA_AGENT="$JAVA_AGENT -javaagent:$CASSANDRA_HOME/lib/jamm-0.3.0.jar" + JAVA_AGENT="$JAVA_AGENT -javaagent:`build-classpath jamm`" fi -- + -# Added sigar-bin to the java.library.path CASSANDRA-7838 -JAVA_OPTS="$JAVA_OPTS:-Djava.library.path=$CASSANDRA_HOME/lib/sigar-bin" ++java_ver_output=`"${JAVA:-java}" -version 2>&1` ++jvm=`echo "$java_ver_output" | grep -A 1 'version' | awk 'NR==2 {print $1}'` ++case "$jvm" in ++ OpenJDK) ++ # this will be "64-Bit" or "32-Bit" ++ JVM_ARCH=`echo "$java_ver_output" | awk 'NR==3 {print $2}'` ++ ;; ++ "Java(TM)") ++ # this will be "64-Bit" or "32-Bit" ++ JVM_ARCH=`echo "$java_ver_output" | awk 'NR==3 {print $3}'` ++ ;; ++ *) ++ # Help fill in other JVM values ++ JVM_ARCH=unknown ++ ;; ++esac ++ ++# Added libsigar.so to the java.library.path CASSANDRA-7838 ++if [ "$JVM_ARCH" = "64-Bit" ]; then ++ JVM_OPTS="$JVM_OPTS -Djava.library.path=/usr/lib64:/usr/lib64/sigar" ++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 2016-10-17 11:03:56.086746819 +0200 ++++ cassandra-cassandra-3.9new/bin/cqlsh.py 2017-01-03 12:24:13.745199335 +0100 @@ -1,4 +1,4 @@ -#!/bin/sh +#!/usr/bin/python @@ -114,8 +154,41 @@ diff -ur cassandra-cassandra-3.9/bin/cqlsh.py cassandra-cassandra-3.9new/bin/cql 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 2016-10-17 11:03:56.086746819 +0200 -@@ -121,8 +121,8 @@ ++++ cassandra-cassandra-3.9new/conf/cassandra-env.sh 2017-01-19 08:20:57.977239726 +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 +@@ -88,21 +89,17 @@ + + # Determine the sort of JVM we'll be running on. + java_ver_output=`"${JAVA:-java}" -version 2>&1` +-jvmver=`echo "$java_ver_output" | grep '[openjdk|java] version' | awk -F'"' 'NR==1 {print $2}' | cut -d\- -f1` +-JVM_VERSION=${jvmver%_*} +-JVM_PATCH_VERSION=${jvmver#*_} ++jvmver=`echo "$java_ver_output" | grep '[openjdk|java] version' | awk -F'"' 'NR==1 {print $2}'` ++tmp=(${jvmver//_/ }) ++JVM_VERSION="${tmp[0]}" ++JVM_PATCH_VERSION="${tmp[1]}" + +-if [ "$JVM_VERSION" \< "1.8" ] ; then ++if [ "$JVM_VERSION" \< "1.8" ] || [ "$JVM_PATCH_VERSION" -lt 40 ] ; then + echo "Cassandra 3.0 and later require Java 8u40 or later." + exit 1; + fi + +-if [ "$JVM_VERSION" \< "1.8" ] && [ "$JVM_PATCH_VERSION" -lt 40 ] ; then +- echo "Cassandra 3.0 and later require Java 8u40 or later." +- exit 1; +-fi +- +-jvm=`echo "$java_ver_output" | grep -A 1 'java version' | awk 'NR==2 {print $1}'` ++jvm=`echo "$java_ver_output" | grep -A 1 'version' | awk 'NR==2 {print $1}'` + case "$jvm" in + OpenJDK) + JVM_VENDOR=OpenJDK +@@ -121,8 +118,8 @@ ;; esac @@ -126,7 +199,7 @@ diff -ur cassandra-cassandra-3.9/conf/cassandra-env.sh cassandra-cassandra-3.9ne # Here we create the arguments that will get passed to the jvm when # starting cassandra. -@@ -207,7 +207,7 @@ +@@ -207,7 +204,7 @@ JVM_OPTS="$JVM_OPTS -XX:CompileCommandFile=$CASSANDRA_CONF/hotspot_compiler" # add the jamm javaagent @@ -135,15 +208,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 -@@ -288,7 +288,12 @@ +@@ -288,7 +285,12 @@ # Cassandra uses SIGAR to capture OS metrics CASSANDRA-7838 # for SIGAR we have to set the java.library.path # to the location of the native libraries. -JVM_OPTS="$JVM_OPTS -Djava.library.path=$CASSANDRA_HOME/lib/sigar-bin" +if [ "$JVM_ARCH" = "64-Bit" ]; then -+ JVM_OPTS="$JVM_OPTS -Djava.library.path=/usr/lib64/sigar" ++ JVM_OPTS="$JVM_OPTS -Djava.library.path=/usr/lib64:/usr/lib64/sigar" +else -+ JVM_OPTS="$JVM_OPTS -Djava.library.path=/usr/lib/sigar" ++ JVM_OPTS="$JVM_OPTS -Djava.library.path=/usr/lib:/usr/lib/sigar" +fi + @@ -151,7 +224,7 @@ diff -ur cassandra-cassandra-3.9/conf/cassandra-env.sh cassandra-cassandra-3.9ne 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 2016-10-17 11:03:56.086746819 +0200 ++++ cassandra-cassandra-3.9new/tools/bin/cassandra-stress 2017-01-03 12:24:13.745199335 +0100 @@ -49,6 +49,8 @@ exit 1 fi @@ -163,7 +236,7 @@ diff -ur cassandra-cassandra-3.9/tools/bin/cassandra-stress cassandra-cassandra- -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 2016-10-17 11:03:56.086746819 +0200 ++++ cassandra-cassandra-3.9new/tools/bin/cassandra-stressd 2017-01-03 12:24:13.745199335 +0100 @@ -50,6 +50,8 @@ exit 1 fi diff --git a/cassandra.spec b/cassandra.spec index e1d6c2c..1a3b854 100644 --- a/cassandra.spec +++ b/cassandra.spec @@ -4,10 +4,12 @@ %global allocated_gid 143 %global allocated_uid 143 +%global cqlsh_version 5.0.1 + Name: %{?scl_prefix}cassandra Version: 3.9 -Release: 1%{?dist} -Summary: OpenSource database Apache Cassandra +Release: 2%{?dist} +Summary: OpenSource database for high-scale application # Apache (v2.0) BSD (3 clause): # ./src/java/org/apache/cassandra/utils/vint/VIntCoding.java License: ASL 2.0 and BSD @@ -45,9 +47,12 @@ Patch5: %{pkg_name}-%{version}-slf4j.patch # https://github.com/apache/cassandra/commit/8f0d5a295d34972ef719574df4aa1b59bf9e8478 Patch6: %{pkg_name}-%{version}-remove-primitive.patch +#BuildArchitectures: noarch + %{?scl:Requires: %scl_runtime} Requires(pre): shadow-utils -%{?systemd_requires} +Requires: %{?scl_prefix}sigar +%{?systemd_ordering} BuildRequires: systemd BuildRequires: %{?scl_prefix_maven}maven-local BuildRequires: %{?scl_prefix_java_common}ant @@ -71,6 +76,8 @@ BuildRequires: %{?scl_prefix}HdrHistogram BuildRequires: %{?scl_prefix}sigar-java BuildRequires: %{?scl_prefix}jackson BuildRequires: %{?scl_prefix}antlr3-tool +BuildRequires: %{?scl_prefix}caffeine +BuildRequires: %{?scl_prefix}hppc # using high-scale-lib from stephenc, no Cassandra original #BuildRequires: mvn(com.boundary:high-scale-lib) BuildRequires: %{?scl_prefix}high-scale-lib @@ -97,8 +104,6 @@ BuildRequires: %{?scl_prefix}lz4-java BuildRequires: %{?scl_prefix}snappy-java BuildRequires: %{?scl_prefix}ohc BuildRequires: %{?scl_prefix}ohc-core-j8 -BuildRequires: %{?scl_prefix}hppc -BuildRequires: %{?scl_prefix}caffeine # the SCL version of the package depends on rh-maven33 collection #%{?scl:Requires: %%scl_require rh-maven33} @@ -112,11 +117,9 @@ BuildRequires: %{?scl_prefix}caffeine 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 -will automatically repartition as machines are added / removed from the cluster. +will automatically re-partition as machines are added/removed from the cluster. Row store means that like relational databases, Cassandra organizes data by rows and columns. The Cassandra Query Language (CQL) is a close relative of SQL. -Database Pure Java Driver. It was developed specifically as a lightweight -JDBC connector for use with MySQL and MariaDB database servers. %package parent Summary: Parent POM for %{pkg_name} @@ -136,19 +139,18 @@ question based on a Thrift IDL file describing the service. %package clientutil Summary: Client utilities for %{pkg_name} Requires: %{pkg_name} = %{version}-%{release} -Requires: python-cassandra-driver %description clientutil Utilities usable by client for %{pkg_name} # source codes of cqlshlib are not python3 compatible, therefore using python2 %package python2-cqlshlib -Summary: Commandline interface for %{name} +Summary: Commandline interface for %{pkg_name} BuildRequires: python2-devel BuildRequires: Cython Requires: %{name} = %{version}-%{release} -Requires: python-cassandra-driver -Provides: cqlsh +Requires: python2-cassandra-driver +Provides: cqlsh = %{cqlsh_version} %{?python_provide:%python_provide python2-cqlshlib} %description python2-cqlshlib @@ -190,11 +192,22 @@ find -name "*.bat" -print -delete find -name "*.pyc" -print -delete find -name "*py.class" -print -delete +# copy pom files +mkdir build +cp -p %{SOURCE4} build/%{pkg_name}-%{version}.pom +cp -p %{SOURCE5} build/%{pkg_name}-thrift-%{version}.pom +cp -p %{SOURCE6} build/%{pkg_name}-clientutil-%{version}.pom +cp -p %{SOURCE7} build/%{pkg_name}-%{version}-parent.pom + # remove hadoop rm src/java/org/apache/cassandra/client/RingCache.java rm -r src/java/org/apache/cassandra/hadoop 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 # build jar repositories for dependencies build-jar-repository lib antlr3 @@ -278,13 +291,6 @@ build-jar-repository lib javax.inject # remove primitive patch %patch6 -p1 -# copy pom files -mkdir build -cp -p %{SOURCE4} build/%{pkg_name}-%{version}.pom -cp -p %{SOURCE5} build/%{pkg_name}-thrift-%{version}.pom -cp -p %{SOURCE6} build/%{pkg_name}-clientutil-%{version}.pom -cp -p %{SOURCE7} build/%{pkg_name}-%{version}-parent.pom - %{?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 @@ -312,9 +318,9 @@ popd %install %{?scl:scl enable %{scl_maven} %{scl} - << "EOF"} %mvn_artifact build/%{pkg_name}-%{version}-parent.pom -%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 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 %mvn_install -J build/javadoc/ @@ -332,12 +338,12 @@ mkdir -p %{buildroot}%{_sharedstatedir}/%{pkg_name} mkdir -p %{buildroot}%{_localstatedir}/log/%{pkg_name} 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}%{_bindir}/%{pkg_name}.in.sh -install -p -D -m 755 conf/%{pkg_name}-env.sh %{buildroot}%{_sysconfdir}/%{pkg_name}-env.sh -install -p -D -m 644 conf/%{pkg_name}.yaml %{buildroot}%{_sysconfdir}/%{pkg_name}.yaml -install -p -D -m 644 conf/jvm.options %{buildroot}%{_sysconfdir}/jvm.options -install -p -D -m 644 conf/logback-tools.xml %{buildroot}%{_sysconfdir}/logback-tools.xml -install -p -D -m 644 conf/logback.xml %{buildroot}%{_sysconfdir}/logback.xml +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/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 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 @@ -384,14 +390,14 @@ exit 0 %doc README.asc CHANGES.txt NEWS.txt %license LICENSE.txt NOTICE.txt %dir %attr(755, %{pkg_name}, root) %{_sharedstatedir}/%{pkg_name} -%dir %attr(750, %{pkg_name}, root) %{_localstatedir}/log/%{pkg_name} -%attr(755, root, root) %{_bindir}/%{pkg_name} -%attr(755, root, root) %{_bindir}/%{pkg_name}.in.sh -%config(noreplace) %{_sysconfdir}/%{pkg_name}-env.sh -%config(noreplace) %{_sysconfdir}/%{pkg_name}.yaml -%config(noreplace) %{_sysconfdir}/jvm.options -%config(noreplace) %{_sysconfdir}/logback-tools.xml -%config(noreplace) %{_sysconfdir}/logback.xml +%dir %attr(755, %{pkg_name}, root) %{_localstatedir}/log/%{pkg_name} +%{_bindir}/%{pkg_name} +%{_datadir}/%{pkg_name}/%{pkg_name}.in.sh +%{_datadir}/%{pkg_name}/%{pkg_name}-env.sh +%config(noreplace) %{_sysconfdir}/%{pkg_name}/%{pkg_name}.yaml +%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}/logrotate.d/%{pkg_name} %{_unitdir}/%{pkg_name}d.service @@ -428,11 +434,14 @@ exit 0 %license LICENSE.txt NOTICE.txt %attr(755, root, root) %{_bindir}/%{pkg_name}-stress %attr(755, root, root) %{_bindir}/%{pkg_name}-stressd -%attr(755, root, root) %{_bindir}/%{pkg_name}.in.sh +%{_datadir}/%{pkg_name}/%{pkg_name}.in.sh %files javadoc -f .mfiles-javadoc %license LICENSE.txt NOTICE.txt %changelog +* Wed Jan 18 2017 Tomas Repik - 3.9-2 +- fix paths so that one could run the server + * Thu Dec 01 2016 Tomas Repik - 3.9-1 - initial package