summaryrefslogtreecommitdiff
path: root/databases
diff options
context:
space:
mode:
authorKurt Jaeger <pi@FreeBSD.org>2020-05-02 19:48:32 +0000
committerKurt Jaeger <pi@FreeBSD.org>2020-05-02 19:48:32 +0000
commita7404fb865c3e7ede2b5e74dd9ebce71a266a746 (patch)
tree09d2a1386b78ff42c6b1619a18f58435fc2146b5 /databases
parentnew port: net/py-wsdd, web service discovery host daemon (diff)
New port: databases/cassandra4: Highly scalable distributed database
Apache Cassandra is a free and open-source distributed database. It is a Java-based, highly scalable, eventually consistent, wide column store. Cassandra database clusters are masterless with no single point of failure. Replication can be configured across multiple data centers. Originally influenced by Dynamo and BigTable, Cassandra was initially developed at and open sourced by Facebook before becoming a top-level Apache project. The CQL query language offers SQL-like data access and management. Drivers are available for a number of languages. This is an ALPHA version! It is not intended for production use. WWW: https://cassandra.apache.org/ PR: 246081 Submitted by: Angelo Polo <language.devel@gmail.com> Reviewed by: yuri
Notes
Notes: svn path=/head/; revision=533701
Diffstat (limited to 'databases')
-rw-r--r--databases/Makefile1
-rw-r--r--databases/cassandra3/Makefile2
-rw-r--r--databases/cassandra4/Makefile160
-rw-r--r--databases/cassandra4/distinfo7
-rw-r--r--databases/cassandra4/files/cassandra.in42
-rw-r--r--databases/cassandra4/files/patch-bin_cassandra20
-rw-r--r--databases/cassandra4/files/patch-build.xml222
-rw-r--r--databases/cassandra4/files/patch-conf_cassandra-env.sh11
-rw-r--r--databases/cassandra4/files/patch-conf_cassandra.yaml68
-rw-r--r--databases/cassandra4/files/patch-doc_Makefile23
-rw-r--r--databases/cassandra4/files/patch-doc_gen-nodetool-docs.py20
-rw-r--r--databases/cassandra4/files/patch-src_java_org_apache_cassandra_config_Config.java11
-rw-r--r--databases/cassandra4/files/patch-src_java_org_apache_cassandra_db_commitlog_MemoryMappedSegment.java11
-rw-r--r--databases/cassandra4/files/patch-src_java_org_apache_cassandra_service_NativeTransportService.java18
-rw-r--r--databases/cassandra4/files/patch-src_java_org_apache_cassandra_service_StartupChecks.java18
-rw-r--r--databases/cassandra4/files/patch-src_java_org_apache_cassandra_utils_FastByteOperations.java108
-rw-r--r--databases/cassandra4/files/patch-src_java_org_apache_cassandra_utils_NativeLibrary.java14
-rw-r--r--databases/cassandra4/files/patch-test_conf_cassandra.yaml10
-rw-r--r--databases/cassandra4/pkg-descr16
-rw-r--r--databases/cassandra4/pkg-message12
-rw-r--r--databases/cassandra4/pkg-plist214
21 files changed, 1008 insertions, 0 deletions
diff --git a/databases/Makefile b/databases/Makefile
index 072b892765c7..6dfd8a5fbad4 100644
--- a/databases/Makefile
+++ b/databases/Makefile
@@ -32,6 +32,7 @@
SUBDIR += c3p0
SUBDIR += cassandra-cpp-driver
SUBDIR += cassandra3
+ SUBDIR += cassandra4
SUBDIR += casstcl
SUBDIR += cayley
SUBDIR += cdb
diff --git a/databases/cassandra3/Makefile b/databases/cassandra3/Makefile
index 5edb66d7c762..f3b0fc91b98a 100644
--- a/databases/cassandra3/Makefile
+++ b/databases/cassandra3/Makefile
@@ -26,6 +26,8 @@ USE_JAVA= yes
USE_ANT= yes
USE_RC_SUBR= cassandra
+CONFLICTS= cassandra4
+
JAVA_VERSION= 1.8
JAVA_VENDOR= openjdk
diff --git a/databases/cassandra4/Makefile b/databases/cassandra4/Makefile
new file mode 100644
index 000000000000..29345d305ef4
--- /dev/null
+++ b/databases/cassandra4/Makefile
@@ -0,0 +1,160 @@
+# $FreeBSD$
+
+PORTNAME= cassandra
+DISTVERSION= 4.0-alpha4
+CATEGORIES= databases java
+MASTER_SITES= APACHE/cassandra/${DISTVERSION}:apache \
+ https://repo1.maven.org/maven2/com/github/luben/zstd-jni/1.4.4-9/:maven \
+ LOCAL/pi:repo
+PKGNAMESUFFIX= 4
+DISTNAME= apache-${PORTNAME}-${DISTVERSION}-src
+DISTFILES= ${DISTNAME}.tar.gz:apache \
+ zstd-jni-1.4.4-9-freebsd_amd64.jar:maven \
+ apache-${PORTNAME}-${DISTVERSION}-repo.tar.gz:repo
+EXTRACT_ONLY= ${DISTNAME}.tar.gz \
+ apache-${PORTNAME}-${DISTVERSION}-repo.tar.gz
+
+MAINTAINER= language.devel@gmail.com
+COMMENT= Highly scalable distributed database
+
+LICENSE= APACHE20
+LICENSE_FILE= ${WRKSRC}/LICENSE.txt
+
+RUN_DEPENDS= snappyjava>=0:archivers/snappy-java \
+ netty>0:java/netty
+
+USES= python:3.7
+USE_JAVA= yes
+USE_ANT= yes
+USE_RC_SUBR= cassandra
+TEST_TARGET= test
+
+CONFLICTS= cassandra3
+
+JAVA_VERSION= 8 11
+JAVA_VENDOR= openjdk
+
+REINPLACE_ARGS= -i ''
+SUB_LIST= JAVA_HOME=${JAVA_HOME}
+
+USERS= cassandra
+GROUPS= cassandra
+
+DATADIR= ${JAVASHAREDIR}/${PORTNAME}
+BUILD_DIST_DIR= ${WRKSRC}/build/dist
+REPO_DIR= ${WRKDIR}/repository
+
+CONFIG_FILES= cassandra-env.sh \
+ cassandra-jaas.config \
+ cassandra-rackdc.properties \
+ cassandra-topology.properties \
+ cassandra.yaml \
+ commitlog_archiving.properties \
+ hotspot_compiler \
+ logback-tools.xml \
+ logback.xml \
+ jvm8-clients.options \
+ jvm8-server.options \
+ jvm11-clients.options \
+ jvm11-server.options \
+ jvm-clients.options \
+ jvm-server.options
+
+SCRIPT_FILES= cassandra \
+ nodetool \
+ sstableloader \
+ sstablescrub \
+ sstableupgrade \
+ sstableutil \
+ sstableverify
+
+PLIST_SUB= DISTVERSION=${DISTVERSION}
+
+OPTIONS_DEFINE= SIGAR DOCS
+OPTIONS_DEFAULT= SIGAR
+OPTIONS_SUB= yes
+
+SIGAR_DESC= Use SIGAR to collect system information
+SIGAR_RUN_DEPENDS= java-sigar>=1.6.4:java/sigar
+
+DOCS_BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sphinx>0:textproc/py-sphinx@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}sphinx_rtd_theme>0:textproc/py-sphinx_rtd_theme@${PY_FLAVOR}
+
+PORTDOCS= *
+
+do-build:
+ @${DO_NADA} # Do nothing: Prevent USE_ANT from running a default build target.
+
+do-build-DOCS-on:
+ cd ${WRKSRC} && ${SETENV} CASSANDRA_LOG_DIR=${WRKDIR}/gen-doc-log ${ANT} -Dmaven.repo.local=${REPO_DIR} -Dlocalm2=${REPO_DIR} ${USEJDK11} -Dpycmd=${PYTHON_CMD} -Dpyver=${PYTHON_VER} freebsd-stage-doc
+
+do-build-DOCS-off:
+ cd ${WRKSRC} && ${ANT} -Dmaven.repo.local=${REPO_DIR} -Dlocalm2=${REPO_DIR} ${USEJDK11} freebsd-stage
+
+post-build:
+.for f in ${SCRIPT_FILES}
+ @${REINPLACE_CMD} -e 's|/usr/share/cassandra|${DATADIR}/bin|' ${BUILD_DIST_DIR}/bin/${f}
+.endfor
+ @${REINPLACE_CMD} -e 's|\`dirname "\$$\0"\`/..|${DATADIR}|' ${BUILD_DIST_DIR}/bin/cassandra.in.sh
+ @${REINPLACE_CMD} -e 's|\$$\CASSANDRA_HOME/lib/sigar-bin|${JAVAJARDIR}|' ${BUILD_DIST_DIR}/bin/cassandra.in.sh
+ @${REINPLACE_CMD} -e 's|\$$\CASSANDRA_HOME/lib/sigar-bin|${JAVAJARDIR}|' ${BUILD_DIST_DIR}/conf/cassandra-env.sh
+ @${REINPLACE_CMD} -e 's|\$$\CASSANDRA_HOME/conf|${ETCDIR}|' ${BUILD_DIST_DIR}/bin/cassandra.in.sh
+.for f in ${CONFIG_FILES}
+ @${MV} ${BUILD_DIST_DIR}/conf/${f} ${BUILD_DIST_DIR}/conf/${f}.sample
+.endfor
+ @${RM} ${BUILD_DIST_DIR}/lib/licenses/sigar*
+ @${RMDIR} ${BUILD_DIST_DIR}/lib/sigar-bin
+ @${RM} ${BUILD_DIST_DIR}/lib/zstd-jni*
+ @${RM} ${BUILD_DIST_DIR}/lib/licenses/zstd-jni*
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${DATADIR}
+.for f in CHANGES LICENSE NEWS NOTICE
+ cd ${BUILD_DIST_DIR} && ${INSTALL_DATA} ${f}.txt ${STAGEDIR}${DATADIR}/
+.endfor
+.for d in lib pylib tools
+ cd ${BUILD_DIST_DIR} && ${COPYTREE_SHARE} ${d} ${STAGEDIR}${DATADIR}/ "! -path '*/bin/*'"
+.endfor
+ ${MKDIR} ${STAGEDIR}${ETCDIR}
+ cd ${BUILD_DIST_DIR}/conf && ${COPYTREE_SHARE} . ${STAGEDIR}${ETCDIR}/
+ cd ${BUILD_DIST_DIR} && ${COPYTREE_BIN} bin ${STAGEDIR}${DATADIR}
+ cd ${BUILD_DIST_DIR} && ${INSTALL_DATA} bin/cassandra.in.sh ${STAGEDIR}${DATADIR}/bin/
+ cd ${BUILD_DIST_DIR} && ${COPYTREE_BIN} tools/bin ${STAGEDIR}${DATADIR}/
+ cd ${BUILD_DIST_DIR} && ${INSTALL_DATA} tools/bin/cassandra.in.sh ${STAGEDIR}${DATADIR}/tools/bin/
+.for f in ${SCRIPT_FILES}
+ ${RLN} ${STAGEDIR}${DATADIR}/bin/${f} ${STAGEDIR}${PREFIX}/bin/${f}
+.endfor
+ ${RLN} ${STAGEDIR}${DATADIR}/bin/cqlsh ${STAGEDIR}${PREFIX}/bin/cqlsh
+ ${LN} -s ${JAVAJARDIR}/snappy-java.jar ${STAGEDIR}${DATADIR}/lib/snappy-java.jar
+
+do-test:
+ @cd ${WRKSRC} && ${ANT} -Dmaven.repo.local=${REPO_DIR} -Dlocalm2=${REPO_DIR} ${USEJDK11} -Dstagedlib=${STAGEDIR}${DATADIR}/lib test
+
+.include <bsd.port.pre.mk>
+
+.if ${JAVA_PORT_VERSION} == 11
+USEJDK11= -Duse.jdk11=true
+.endif
+
+.if ${ARCH} == amd64
+PLIST_SUB+= AMD64ONLY=""
+.else
+PLIST_SUB+= AMD64ONLY="@comment "
+.endif
+
+post-install:
+ ${LN} -s ${JAVAJARDIR}/netty.jar ${STAGEDIR}${DATADIR}/lib/netty.jar
+.if ${ARCH} == amd64
+ ${CP} ${DISTDIR}/zstd-jni-1.4.4-9-freebsd_amd64.jar ${STAGEDIR}${DATADIR}/lib/
+.endif
+
+post-install-DOCS-on:
+ ${MKDIR} ${STAGEDIR}${DOCSDIR}
+.for d in doc javadoc
+ cd ${BUILD_DIST_DIR} && ${COPYTREE_SHARE} ${d} ${STAGEDIR}${DOCSDIR}/
+.endfor
+
+post-install-SIGAR-on:
+ ${LN} -s ${JAVAJARDIR}/sigar.jar ${STAGEDIR}${DATADIR}/lib/sigar.jar
+
+.include <bsd.port.post.mk>
diff --git a/databases/cassandra4/distinfo b/databases/cassandra4/distinfo
new file mode 100644
index 000000000000..511df62ee2fb
--- /dev/null
+++ b/databases/cassandra4/distinfo
@@ -0,0 +1,7 @@
+TIMESTAMP = 1587819246
+SHA256 (apache-cassandra-4.0-alpha4-src.tar.gz) = 8f62238ac1f19fc2ab91c1f88981a46ded3b5e30ed7421266682cf81942b5856
+SIZE (apache-cassandra-4.0-alpha4-src.tar.gz) = 45311406
+SHA256 (zstd-jni-1.4.4-9-freebsd_amd64.jar) = 97d20ae4ad56aad81d0f11cc4da21f6036bedc26f9908e4c2cc5998aa2dfcf4d
+SIZE (zstd-jni-1.4.4-9-freebsd_amd64.jar) = 521330
+SHA256 (apache-cassandra-4.0-alpha4-repo.tar.gz) = 6becab355e49fcddcd8b35e61febf39105d7a42574488ea91775bbd0b34d750b
+SIZE (apache-cassandra-4.0-alpha4-repo.tar.gz) = 74348796
diff --git a/databases/cassandra4/files/cassandra.in b/databases/cassandra4/files/cassandra.in
new file mode 100644
index 000000000000..7e174e8a2d82
--- /dev/null
+++ b/databases/cassandra4/files/cassandra.in
@@ -0,0 +1,42 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+# PROVIDE: cassandra
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Be sure to configure full settings in %%ETCDIR%% prior to enabling daemon.
+#
+# Add the following lines to /etc/rc.conf or /etc/.conf.local to
+# enable the Cassandra daemon:
+# cassandra_enable: Set to "YES" to enable the daemon.
+# cassandra_user: The user under which to run the daemon.
+# Defaults to "cassandra".
+
+. /etc/rc.subr
+
+name=cassandra
+rcvar=cassandra_enable
+desc="Cassandra daemon"
+
+load_rc_config $name
+
+: ${cassandra_enable:=NO}
+: ${cassandra_user:=cassandra}
+
+command=%%PREFIX%%/bin/cassandra
+command_args="-p /var/run/cassandra/cassandra.pid >/dev/null 2>/dev/null"
+start_precmd="${name}_prestart"
+
+procname=%%JAVA_HOME%%/bin/java
+pidfile=/var/run/cassandra/cassandra.pid
+
+cassandra_prestart()
+{
+ export JAVA_HOME=%%JAVA_HOME%%
+ install -d -o ${cassandra_user} /var/run/cassandra
+ install -d -o ${cassandra_user} /var/log/cassandra
+}
+
+run_rc_command "$1"
diff --git a/databases/cassandra4/files/patch-bin_cassandra b/databases/cassandra4/files/patch-bin_cassandra
new file mode 100644
index 000000000000..40ea8dcd46d8
--- /dev/null
+++ b/databases/cassandra4/files/patch-bin_cassandra
@@ -0,0 +1,20 @@
+--- bin/cassandra.orig 2020-04-10 22:29:25 UTC
++++ bin/cassandra
+@@ -31,7 +31,7 @@
+ # JVM_OPTS -- Additional arguments to the JVM for heap size, etc
+ # JVM_ON_OUT_OF_MEMORY_ERROR_OPT -- The OnOutOfMemoryError JVM option if specified
+ # CASSANDRA_CONF -- Directory containing Cassandra configuration files.
+-# CASSANDRA_LOG_DIR -- Directory containing logs(default: $CASSANDRA_HOME/logs).
++# CASSANDRA_LOG_DIR -- Directory containing logs(default: /var/log/cassandra).
+ #
+ # As a convenience, a fragment of shell is sourced in order to set one or
+ # more of these variables. This so-called `include' can be placed in a
+@@ -116,7 +116,7 @@ if [ -f "$CASSANDRA_CONF/cassandra-env.sh" ]; then
+ fi
+
+ if [ -z "$CASSANDRA_LOG_DIR" ]; then
+- CASSANDRA_LOG_DIR=$CASSANDRA_HOME/logs
++ CASSANDRA_LOG_DIR=/var/log/cassandra
+ fi
+
+ # Special-case path variables.
diff --git a/databases/cassandra4/files/patch-build.xml b/databases/cassandra4/files/patch-build.xml
new file mode 100644
index 000000000000..27dcfdd59da6
--- /dev/null
+++ b/databases/cassandra4/files/patch-build.xml
@@ -0,0 +1,222 @@
+--- build.xml.orig 2020-04-10 22:29:25 UTC
++++ build.xml
+@@ -23,6 +23,7 @@
+ <property file="build.properties" />
+ <property file="build.properties.default" />
+ <property name="debuglevel" value="source,lines,vars"/>
++ <property name="pycmd" value="python"/>
+
+ <!-- default version and SCM information -->
+ <property name="base.version" value="4.0-alpha4"/>
+@@ -75,14 +76,14 @@
+ <condition property="version" value="${base.version}">
+ <isset property="release"/>
+ </condition>
+- <property name="version" value="${base.version}-SNAPSHOT"/>
++ <property name="version" value="${base.version}"/>
+ <property name="version.properties.dir"
+ value="${build.src.resources}/org/apache/cassandra/config/" />
+ <property name="final.name" value="${ant.project.name}-${version}"/>
+
+ <!-- details of what version of Maven ANT Tasks to fetch -->
+ <property name="maven-ant-tasks.version" value="2.1.3" />
+- <property name="maven-ant-tasks.local" value="${user.home}/.m2/repository/org/apache/maven/maven-ant-tasks"/>
++ <property name="maven-ant-tasks.local" value="${localm2}/org/apache/maven/maven-ant-tasks"/>
+ <property name="maven-ant-tasks.url"
+ value="https://repo.maven.apache.org/maven2/org/apache/maven/maven-ant-tasks" />
+ <!-- details of how and which Maven repository we publish to -->
+@@ -241,7 +242,7 @@
+ </path>
+ <path id="cassandra.classpath.test">
+ <file file="${build.dir}/${final.name}.jar"/> <!-- we need the jar for tests and benchmarks (multi-version jar) -->
+- <fileset dir="${build.lib}">
++ <fileset dir="${stagedlib}">
+ <include name="**/*.jar" />
+ <exclude name="**/*-sources.jar"/>
+ <exclude name="**/ant-*.jar"/>
+@@ -262,6 +263,7 @@
+ bottom="Copyright &amp;copy; 2009-2020 The Apache Software Foundation"
+ useexternalfile="yes" encoding="UTF-8"
+ maxmemory="256m">
++ <arg value="${jdk11-javac-exports}"/>
+ <filesets/>
+ </javadoc>
+ </sequential>
+@@ -379,8 +381,7 @@
+ <artifact:dependencies pathId="wikitext.classpath">
+ <dependency groupId="com.datastax.wikitext" artifactId="wikitext-core-ant" version="1.3"/>
+ <dependency groupId="org.fusesource.wikitext" artifactId="textile-core" version="1.3"/>
+- <remoteRepository refid="central"/>
+- <remoteRepository refid="apache"/>
++ <localRepository path="${localm2}"/>
+ </artifact:dependencies>
+ <taskdef classpathref="wikitext.classpath" resource="wikitexttasks.properties" />
+ <wikitext-to-html markupLanguage="Textile">
+@@ -393,6 +394,8 @@
+ <target name="gen-doc" depends="maven-ant-tasks-init" description="Generate documentation" unless="ant.gen-doc.skip">
+ <exec executable="make" osfamily="unix" dir="${doc.dir}">
+ <arg value="html"/>
++ <arg value="PYTHON_CMD=${pycmd}"/>
++ <arg value="PYTHON_VER=${pyver}"/>
+ </exec>
+ <exec executable="cmd" osfamily="dos" dir="${doc.dir}">
+ <arg value="/c"/>
+@@ -435,10 +438,6 @@
+ description="Initialize Maven ANT Tasks">
+ <typedef uri="antlib:org.apache.maven.artifact.ant" classpathref="maven-ant-tasks.classpath" />
+
+- <!-- define the remote repositories we use -->
+- <artifact:remoteRepository id="central" url="${artifact.remoteRepository.central}"/>
+- <artifact:remoteRepository id="apache" url="${artifact.remoteRepository.apache}"/>
+-
+ <macrodef name="install">
+ <attribute name="pomFile"/>
+ <attribute name="file"/>
+@@ -842,16 +841,14 @@
+ filesetId="build-dependency-jars"
+ cacheDependencyRefs="true"
+ dependencyRefsBuildFile="${build.dir}/build-dependencies.xml">
+- <remoteRepository refid="central"/>
+- <remoteRepository refid="apache"/>
++ <localRepository path="${localm2}"/>
+ </artifact:dependencies>
+ <!-- retrieve -source.jar artifacts using the reference-pom with the artifacts that have these -->
+ <artifact:dependencies pomRefId="build-deps-pom-sources"
+ sourcesFilesetId="build-dependency-sources"
+ cacheDependencyRefs="true"
+ dependencyRefsBuildFile="${build.dir}/build-dependencies-sources.xml">
+- <remoteRepository refid="central"/>
+- <remoteRepository refid="apache"/>
++ <localRepository path="${localm2}"/>
+ </artifact:dependencies>
+ <copy todir="${build.dir.lib}/jars">
+ <fileset refid="build-dependency-jars"/>
+@@ -864,7 +861,7 @@
+ <!-- code coverage tools -->
+ <artifact:dependencies pomRefId="coverage-deps-pom"
+ filesetId="coverage-dependency-jars">
+- <remoteRepository refid="central"/>
++ <localRepository path="${localm2}"/>
+ </artifact:dependencies>
+ <copy todir="${build.dir.lib}/jars">
+ <fileset refid="coverage-dependency-jars"/>
+@@ -893,8 +890,7 @@
+ sourcesFilesetId="test-dependency-sources"
+ cacheDependencyRefs="true"
+ dependencyRefsBuildFile="${build.dir}/test-dependencies.xml">
+- <remoteRepository refid="apache"/>
+- <remoteRepository refid="central"/>
++ <localRepository path="${localm2}"/>
+ </artifact:dependencies>
+ <copy todir="${test.lib}/jars">
+ <fileset refid="test-dependency-jars"/>
+@@ -1217,6 +1213,86 @@
+ </copy>
+ </target>
+
++ <!-- FreeBSD for staging -->
++ <target name="freebsd-stage" depends="jar"
++ description="Create Cassandra directory structure for staging">
++ <mkdir dir="${dist.dir}"/>
++ <copy todir="${dist.dir}/lib">
++ <fileset dir="${build.lib}">
++ <exclude name="sigar*.jar"/>
++ <exclude name="sigar-bin/*"/>
++ <exclude name="snappy*.jar"/>
++ <exclude name="netty-all*.jar"/>
++ <exclude name="ohc*.jar"/>
++ <exclude name="licenses/snappy*.txt"/>
++ <exclude name="licenses/netty-4*.txt"/>
++ <exclude name="licenses/ohc*.txt"/>
++ </fileset>
++ <fileset dir="${build.dir}">
++ <include name="${final.name}.jar" />
++ </fileset>
++ </copy>
++ <copy todir="${dist.dir}/bin">
++ <fileset dir="bin">
++ <exclude name="*.bat" />
++ <exclude name="*.ps1" />
++ <exclude name="*.orig" />
++ </fileset>
++ </copy>
++ <copy todir="${dist.dir}/conf">
++ <fileset dir="conf">
++ <exclude name="*.ps1" />
++ <exclude name="*.orig" />
++ </fileset>
++ </copy>
++ <copy todir="${dist.dir}/pylib">
++ <fileset dir="pylib">
++ <include name="**" />
++ <exclude name="**/*.pyc" />
++ </fileset>
++ </copy>
++ <copy todir="${dist.dir}/">
++ <fileset dir="${basedir}">
++ <include name="*.txt" />
++ </fileset>
++ </copy>
++ <copy todir="${dist.dir}/tools/bin">
++ <fileset dir="${basedir}/tools/bin">
++ <exclude name="*.bat" />
++ <exclude name="*.ps1" />
++ <exclude name="*.orig" />
++ </fileset>
++ </copy>
++ <copy todir="${dist.dir}/tools/">
++ <fileset dir="${basedir}/tools/">
++ <include name="*.yaml"/>
++ </fileset>
++ </copy>
++ <copy todir="${dist.dir}/tools/lib">
++ <fileset dir="${build.dir}/tools/lib/">
++ <include name="*.jar" />
++ </fileset>
++ </copy>
++ </target>
++
++ <target name="freebsd-stage-doc" depends="freebsd-stage,javadoc,gen-doc"
++ description="Create Cassandra directory structure for staging, including docs">
++ <copy todir="${dist.dir}/javadoc">
++ <fileset dir="${javadoc.dir}"/>
++ </copy>
++ <copy todir="${dist.dir}/doc">
++ <fileset dir="doc">
++ <include name="cql3/CQL.html" />
++ <include name="cql3/CQL.css" />
++ <include name="SASI.md" />
++ </fileset>
++ </copy>
++ <copy todir="${dist.dir}/doc/html">
++ <fileset dir="doc" />
++ <globmapper from="build/html/*" to="*"/>
++ </copy>
++ </target>
++
+ <!-- creates release tarballs -->
+ <target name="artifacts" depends="_artifacts-init"
+ description="Create Cassandra release artifacts">
+@@ -1923,8 +1999,8 @@
+ <exec executable="nproc" outputproperty="cores.count" os="Linux,SunOS,Solaris" failifexecutionfails="false">
+ <arg value="--all"/>
+ </exec>
+- <!-- support for Mac OS X -->
+- <exec executable="sysctl" outputproperty="cores.count" os="Mac,Mac OS X,Darwin" failifexecutionfails="false">
++ <!-- support for Mac OS X and FreeBSD -->
++ <exec executable="sysctl" outputproperty="cores.count" os="Mac,Mac OS X,Darwin,FreeBSD" failifexecutionfails="false">
+ <arg value="-n"/>
+ <arg value="hw.ncpu"/>
+ </exec>
+@@ -1944,6 +2020,11 @@
+ <exec executable="sysctl" outputproperty="mem.size" os="Mac,Mac OS X,Darwin" failifexecutionfails="false">
+ <arg value="-n"/>
+ <arg value="hw.memsize"/>
++ </exec>
++ <!-- support for FreeBSD -->
++ <exec executable="sysctl" outputproperty="mem.size" os="FreeBSD" failifexecutionfails="false">
++ <arg value="-n"/>
++ <arg value="hw.physmem"/>
+ </exec>
+ <echo message="Mem size : ${mem.size}"/>
+ </target>
diff --git a/databases/cassandra4/files/patch-conf_cassandra-env.sh b/databases/cassandra4/files/patch-conf_cassandra-env.sh
new file mode 100644
index 000000000000..729beb6c99c6
--- /dev/null
+++ b/databases/cassandra4/files/patch-conf_cassandra-env.sh
@@ -0,0 +1,11 @@
+--- conf/cassandra-env.sh.orig 2020-01-30 17:34:31 UTC
++++ conf/cassandra-env.sh
+@@ -88,7 +88,7 @@ calculate_heap_sizes()
+
+ # Sets the path where logback and GC logs are written.
+ if [ "x$CASSANDRA_LOG_DIR" = "x" ] ; then
+- CASSANDRA_LOG_DIR="$CASSANDRA_HOME/logs"
++ CASSANDRA_LOG_DIR="/var/log/cassandra"
+ fi
+
+ #GC log path has to be defined here because it needs to access CASSANDRA_HOME
diff --git a/databases/cassandra4/files/patch-conf_cassandra.yaml b/databases/cassandra4/files/patch-conf_cassandra.yaml
new file mode 100644
index 000000000000..38a298b7ecdc
--- /dev/null
+++ b/databases/cassandra4/files/patch-conf_cassandra.yaml
@@ -0,0 +1,68 @@
+--- conf/cassandra.yaml.orig 2020-01-30 17:34:31 UTC
++++ conf/cassandra.yaml
+@@ -76,7 +76,7 @@ max_hints_delivery_threads: 2
+
+ # Directory where Cassandra should store hints.
+ # If not set, the default directory is $CASSANDRA_HOME/data/hints.
+-# hints_directory: /var/lib/cassandra/hints
++hints_directory: /var/db/cassandra/hints
+
+ # How often hints should be flushed from the internal buffers to disk.
+ # Will *not* trigger fsync.
+@@ -203,13 +203,13 @@ partitioner: org.apache.cassandra.dht.Murmur3Partition
+ # directories are specified, Cassandra will spread data evenly across
+ # them by partitioning the token ranges.
+ # If not set, the default directory is $CASSANDRA_HOME/data/data.
+-# data_file_directories:
+-# - /var/lib/cassandra/data
++data_file_directories:
++ - /var/db/cassandra/data
+
+ # commit log. when running on magnetic HDD, this should be a
+ # separate spindle than the data directories.
+ # If not set, the default directory is $CASSANDRA_HOME/data/commitlog.
+-# commitlog_directory: /var/lib/cassandra/commitlog
++commitlog_directory: /var/db/cassandra/commitlog
+
+ # Enable / disable CDC functionality on a per-node basis. This modifies the logic used
+ # for write path allocation rejection (standard: never reject. cdc: reject Mutation
+@@ -220,7 +220,7 @@ cdc_enabled: false
+ # segment contains mutations for a CDC-enabled table. This should be placed on a
+ # separate spindle than the data directories. If not set, the default directory is
+ # $CASSANDRA_HOME/data/cdc_raw.
+-# cdc_raw_directory: /var/lib/cassandra/cdc_raw
++cdc_raw_directory: /var/db/cassandra/cdc_raw
+
+ # Policy for data disk failures:
+ #
+@@ -312,20 +312,12 @@ key_cache_save_period: 14400
+
+ # Row cache implementation class name. Available implementations:
+ #
+-# org.apache.cassandra.cache.OHCProvider
+-# Fully off-heap row cache implementation (default).
+-#
+ # org.apache.cassandra.cache.SerializingCacheProvider
+ # This is the row cache implementation availabile
+ # in previous releases of Cassandra.
+-# row_cache_class_name: org.apache.cassandra.cache.OHCProvider
++# row_cache_class_name: org.apache.cassandra.cache.SerializingCacheProvider
+
+ # Maximum size of the row cache in memory.
+-# Please note that OHC cache implementation requires some additional off-heap memory to manage
+-# the map structures and some in-flight memory during operations before/after cache entries can be
+-# accounted against the cache capacity. This overhead is usually small compared to the whole capacity.
+-# Do not specify more memory that the system can afford in the worst usual situation and leave some
+-# headroom for OS block level cache. Do never allow your system to swap.
+ #
+ # Default value is 0, to disable row caching.
+ row_cache_size_in_mb: 0
+@@ -372,7 +364,7 @@ counter_cache_save_period: 7200
+
+ # saved caches
+ # If not set, the default directory is $CASSANDRA_HOME/data/saved_caches.
+-# saved_caches_directory: /var/lib/cassandra/saved_caches
++saved_caches_directory: /var/db/cassandra/saved_caches
+
+ # commitlog_sync may be either "periodic", "group", or "batch."
+ #
diff --git a/databases/cassandra4/files/patch-doc_Makefile b/databases/cassandra4/files/patch-doc_Makefile
new file mode 100644
index 000000000000..b47ccff34712
--- /dev/null
+++ b/databases/cassandra4/files/patch-doc_Makefile
@@ -0,0 +1,23 @@
+--- doc/Makefile.orig 2020-01-30 17:34:31 UTC
++++ doc/Makefile
+@@ -3,7 +3,7 @@
+
+ # You can set these variables from the command line.
+ SPHINXOPTS =
+-SPHINXBUILD = sphinx-build
++SPHINXBUILD = sphinx-build-${PYTHON_VER}
+ PAPER =
+ BUILDDIR = build
+
+@@ -17,9 +17,9 @@ I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) s
+ YAML_DOC_INPUT=../conf/cassandra.yaml
+ YAML_DOC_OUTPUT=source/configuration/cassandra_config_file.rst
+
+-MAKE_CASSANDRA_YAML = python convert_yaml_to_rst.py $(YAML_DOC_INPUT) $(YAML_DOC_OUTPUT)
++MAKE_CASSANDRA_YAML = ${PYTHON_CMD} convert_yaml_to_rst.py $(YAML_DOC_INPUT) $(YAML_DOC_OUTPUT)
+
+-GENERATE_NODETOOL_DOCS = python gen-nodetool-docs.py
++GENERATE_NODETOOL_DOCS = ${PYTHON_CMD} gen-nodetool-docs.py
+
+ WEB_SITE_PRESENCE_FILE='source/.build_for_website'
+
diff --git a/databases/cassandra4/files/patch-doc_gen-nodetool-docs.py b/databases/cassandra4/files/patch-doc_gen-nodetool-docs.py
new file mode 100644
index 000000000000..4a07e5d17672
--- /dev/null
+++ b/databases/cassandra4/files/patch-doc_gen-nodetool-docs.py
@@ -0,0 +1,20 @@
+--- doc/gen-nodetool-docs.py.orig 2020-04-10 22:29:25 UTC
++++ doc/gen-nodetool-docs.py
+@@ -57,7 +57,7 @@ def create_rst(command):
+ cmdName = command.group(0).strip()
+ cmdFilename = outdir + "/" + cmdName + ".txt"
+ rstFilename = outdir + "/" + cmdName + ".rst"
+- with open(cmdFilename, "w+") as cmdFile:
++ with open(cmdFilename, "w+b") as cmdFile:
+ proc = Popen([nodetool, "help", cmdName], stdin=PIPE, stdout=PIPE)
+ (out, err) = proc.communicate()
+ cmdFile.write(out)
+@@ -76,7 +76,7 @@ with open(outdir + "/nodetool.rst", "w+") as output:
+ output.write(command)
+
+ # create the command usage pages
+-with open(helpfilename, "rw+") as helpfile:
++with open(helpfilename, "r+") as helpfile:
+ for commandLine in helpfile:
+ command = command_re.match(commandLine)
+ create_rst(command)
diff --git a/databases/cassandra4/files/patch-src_java_org_apache_cassandra_config_Config.java b/databases/cassandra4/files/patch-src_java_org_apache_cassandra_config_Config.java
new file mode 100644
index 000000000000..371b489d73ad
--- /dev/null
+++ b/databases/cassandra4/files/patch-src_java_org_apache_cassandra_config_Config.java
@@ -0,0 +1,11 @@
+--- src/java/org/apache/cassandra/config/Config.java.orig 2020-01-30 17:34:32 UTC
++++ src/java/org/apache/cassandra/config/Config.java
+@@ -289,7 +289,7 @@ public class Config
+ public volatile int key_cache_save_period = 14400;
+ public volatile int key_cache_keys_to_save = Integer.MAX_VALUE;
+
+- public String row_cache_class_name = "org.apache.cassandra.cache.OHCProvider";
++ public String row_cache_class_name = "org.apache.cassandra.cache.SerializingCacheProvider";
+ public long row_cache_size_in_mb = 0;
+ public volatile int row_cache_save_period = 0;
+ public volatile int row_cache_keys_to_save = Integer.MAX_VALUE;
diff --git a/databases/cassandra4/files/patch-src_java_org_apache_cassandra_db_commitlog_MemoryMappedSegment.java b/databases/cassandra4/files/patch-src_java_org_apache_cassandra_db_commitlog_MemoryMappedSegment.java
new file mode 100644
index 000000000000..f70f7674b3ae
--- /dev/null
+++ b/databases/cassandra4/files/patch-src_java_org_apache_cassandra_db_commitlog_MemoryMappedSegment.java
@@ -0,0 +1,11 @@
+--- src/java/org/apache/cassandra/db/commitlog/MemoryMappedSegment.java.orig 2019-10-24 16:42:10 UTC
++++ src/java/org/apache/cassandra/db/commitlog/MemoryMappedSegment.java
+@@ -90,7 +90,7 @@ public class MemoryMappedSegment extends CommitLogSegm
+ {
+ throw new FSWriteError(e, getPath());
+ }
+- NativeLibrary.trySkipCache(fd, startMarker, nextMarker, logFile.getAbsolutePath());
++// NativeLibrary.trySkipCache(fd, startMarker, nextMarker, logFile.getAbsolutePath());
+ }
+
+ @Override
diff --git a/databases/cassandra4/files/patch-src_java_org_apache_cassandra_service_NativeTransportService.java b/databases/cassandra4/files/patch-src_java_org_apache_cassandra_service_NativeTransportService.java
new file mode 100644
index 000000000000..ddc683881057
--- /dev/null
+++ b/databases/cassandra4/files/patch-src_java_org_apache_cassandra_service_NativeTransportService.java
@@ -0,0 +1,18 @@
+--- src/java/org/apache/cassandra/service/NativeTransportService.java.orig 2020-04-01 19:54:51 UTC
++++ src/java/org/apache/cassandra/service/NativeTransportService.java
+@@ -143,12 +143,15 @@ public class NativeTransportService
+ */
+ public static boolean useEpoll()
+ {
++ /*
+ final boolean enableEpoll = Boolean.parseBoolean(System.getProperty("cassandra.native.epoll.enabled", "true"));
+
+ if (enableEpoll && !Epoll.isAvailable() && NativeLibrary.osType == NativeLibrary.OSType.LINUX)
+ logger.warn("epoll not available", Epoll.unavailabilityCause());
+
+ return enableEpoll && Epoll.isAvailable();
++ */
++ return false; // Epoll is only available for Linux. Prevent warning given that we otherwise pass ourselves off as Linux.
+ }
+
+ /**
diff --git a/databases/cassandra4/files/patch-src_java_org_apache_cassandra_service_StartupChecks.java b/databases/cassandra4/files/patch-src_java_org_apache_cassandra_service_StartupChecks.java
new file mode 100644
index 000000000000..20617d41048a
--- /dev/null
+++ b/databases/cassandra4/files/patch-src_java_org_apache_cassandra_service_StartupChecks.java
@@ -0,0 +1,18 @@
+--- src/java/org/apache/cassandra/service/StartupChecks.java.orig 2020-01-30 17:34:32 UTC
++++ src/java/org/apache/cassandra/service/StartupChecks.java
+@@ -262,7 +262,14 @@ public class StartupChecks
+ {
+ public void execute()
+ {
+- SigarLibrary.instance.warnIfRunningInDegradedMode();
++ try {
++ @SuppressWarnings("unused")
++ Class<?> loadMe = org.hyperic.sigar.SigarException.class;
++
++ SigarLibrary.instance.warnIfRunningInDegradedMode();
++ } catch (NoClassDefFoundError e) {
++ logger.info("Could not initialize SIGAR library: SIGAR option not selected during install or jar no longer available.");
++ }
+ }
+ };
+
diff --git a/databases/cassandra4/files/patch-src_java_org_apache_cassandra_utils_FastByteOperations.java b/databases/cassandra4/files/patch-src_java_org_apache_cassandra_utils_FastByteOperations.java
new file mode 100644
index 000000000000..8ccde2695304
--- /dev/null
+++ b/databases/cassandra4/files/patch-src_java_org_apache_cassandra_utils_FastByteOperations.java
@@ -0,0 +1,108 @@
+--- src/java/org/apache/cassandra/utils/FastByteOperations.java.orig 2020-03-30 16:37:37 UTC
++++ src/java/org/apache/cassandra/utils/FastByteOperations.java
+@@ -191,6 +191,20 @@ public class FastByteOperations
+
+ static final boolean BIG_ENDIAN = ByteOrder.nativeOrder().equals(ByteOrder.BIG_ENDIAN);
+
++ private static byte unsafeGetByte(Object o, long offset)
++ {
++ return o == null
++ ? theUnsafe.getByte(offset)
++ : theUnsafe.getByte(o, offset);
++ }
++
++ private static long unsafeGetLong(Object o, long offset)
++ {
++ return o == null
++ ? theUnsafe.getLong(offset)
++ : theUnsafe.getLong(o, offset);
++ }
++
+ public int compare(byte[] buffer1, int offset1, int length1, byte[] buffer2, int offset2, int length2)
+ {
+ return compareTo(buffer1, BYTE_ARRAY_BASE_OFFSET + offset1, length1,
+@@ -214,7 +228,7 @@ public class FastByteOperations
+ else
+ {
+ obj1 = null;
+- offset1 = theUnsafe.getLong(buffer1, DIRECT_BUFFER_ADDRESS_OFFSET) + position1;
++ offset1 = unsafeGetLong(buffer1, DIRECT_BUFFER_ADDRESS_OFFSET) + position1;
+ }
+
+ return compareTo(obj1, offset1, length1, buffer2, BYTE_ARRAY_BASE_OFFSET + offset2, length2);
+@@ -230,7 +244,7 @@ public class FastByteOperations
+ if (src.hasArray())
+ System.arraycopy(src.array(), src.arrayOffset() + srcPosition, trg, trgPosition, length);
+ else
+- copy(null, srcPosition + theUnsafe.getLong(src, DIRECT_BUFFER_ADDRESS_OFFSET), trg, trgPosition, length);
++ copy(null, srcPosition + unsafeGetLong(src, DIRECT_BUFFER_ADDRESS_OFFSET), trg, trgPosition, length);
+ }
+
+ public void copy(ByteBuffer srcBuf, int srcPosition, ByteBuffer trgBuf, int trgPosition, int length)
+@@ -245,7 +259,7 @@ public class FastByteOperations
+ else
+ {
+ src = null;
+- srcOffset = theUnsafe.getLong(srcBuf, DIRECT_BUFFER_ADDRESS_OFFSET);
++ srcOffset = unsafeGetLong(srcBuf, DIRECT_BUFFER_ADDRESS_OFFSET);
+ }
+ copy(src, srcOffset + srcPosition, trgBuf, trgPosition, length);
+ }
+@@ -255,7 +269,7 @@ public class FastByteOperations
+ if (trgBuf.hasArray())
+ copy(src, srcOffset, trgBuf.array(), trgBuf.arrayOffset() + trgPosition, length);
+ else
+- copy(src, srcOffset, null, trgPosition + theUnsafe.getLong(trgBuf, DIRECT_BUFFER_ADDRESS_OFFSET), length);
++ copy(src, srcOffset, null, trgPosition + unsafeGetLong(trgBuf, DIRECT_BUFFER_ADDRESS_OFFSET), length);
+ }
+
+ public static void copy(Object src, long srcOffset, byte[] trg, int trgPosition, int length)
+@@ -263,7 +277,7 @@ public class FastByteOperations
+ if (length <= MIN_COPY_THRESHOLD)
+ {
+ for (int i = 0 ; i < length ; i++)
+- trg[trgPosition + i] = theUnsafe.getByte(src, srcOffset + i);
++ trg[trgPosition + i] = unsafeGetByte(src, srcOffset + i);
+ }
+ else
+ {
+@@ -302,7 +316,7 @@ public class FastByteOperations
+ else
+ {
+ obj1 = null;
+- offset1 = theUnsafe.getLong(buffer1, DIRECT_BUFFER_ADDRESS_OFFSET);
++ offset1 = unsafeGetLong(buffer1, DIRECT_BUFFER_ADDRESS_OFFSET);
+ }
+ offset1 += buffer1.position();
+ length1 = buffer1.remaining();
+@@ -325,7 +339,7 @@ public class FastByteOperations
+ else
+ {
+ obj2 = null;
+- offset2 = theUnsafe.getLong(buffer, DIRECT_BUFFER_ADDRESS_OFFSET);
++ offset2 = unsafeGetLong(buffer, DIRECT_BUFFER_ADDRESS_OFFSET);
+ }
+ int length2 = limit - position;
+ offset2 += position;
+@@ -358,8 +372,8 @@ public class FastByteOperations
+ int wordComparisons = minLength & ~7;
+ for (int i = 0; i < wordComparisons ; i += Longs.BYTES)
+ {
+- long lw = theUnsafe.getLong(buffer1, memoryOffset1 + i);
+- long rw = theUnsafe.getLong(buffer2, memoryOffset2 + i);
++ long lw = unsafeGetLong(buffer1, memoryOffset1 + i);
++ long rw = unsafeGetLong(buffer2, memoryOffset2 + i);
+
+ if (lw != rw)
+ {
+@@ -372,8 +386,8 @@ public class FastByteOperations
+
+ for (int i = wordComparisons ; i < minLength ; i++)
+ {
+- int b1 = theUnsafe.getByte(buffer1, memoryOffset1 + i) & 0xFF;
+- int b2 = theUnsafe.getByte(buffer2, memoryOffset2 + i) & 0xFF;
++ int b1 = unsafeGetByte(buffer1, memoryOffset1 + i) & 0xFF;
++ int b2 = unsafeGetByte(buffer2, memoryOffset2 + i) & 0xFF;
+ if (b1 != b2)
+ return b1 - b2;
+ }
diff --git a/databases/cassandra4/files/patch-src_java_org_apache_cassandra_utils_NativeLibrary.java b/databases/cassandra4/files/patch-src_java_org_apache_cassandra_utils_NativeLibrary.java
new file mode 100644
index 000000000000..ae94061399e2
--- /dev/null
+++ b/databases/cassandra4/files/patch-src_java_org_apache_cassandra_utils_NativeLibrary.java
@@ -0,0 +1,14 @@
+--- src/java/org/apache/cassandra/utils/NativeLibrary.java.orig 2020-01-30 17:34:32 UTC
++++ src/java/org/apache/cassandra/utils/NativeLibrary.java
+@@ -141,7 +141,10 @@ public final class NativeLibrary
+ else if (osName.contains("windows"))
+ return WINDOWS;
+
+- logger.warn("the current operating system, {}, is unsupported by cassandra", osName);
++ if (osName.contains("bsd"))
++ logger.warn("the current operating system, {}, is fantastic, though not officially supported by cassandra", osName);
++ else
++ logger.warn("the current operating system, {}, is unsupported by cassandra", osName);
+ if (osName.contains("aix"))
+ return AIX;
+ else
diff --git a/databases/cassandra4/files/patch-test_conf_cassandra.yaml b/databases/cassandra4/files/patch-test_conf_cassandra.yaml
new file mode 100644
index 000000000000..8cdaf3180e12
--- /dev/null
+++ b/databases/cassandra4/files/patch-test_conf_cassandra.yaml
@@ -0,0 +1,10 @@
+--- test/conf/cassandra.yaml.orig 2018-03-06 21:24:02 UTC
++++ test/conf/cassandra.yaml
+@@ -40,7 +40,6 @@ server_encryption_options:
+ incremental_backups: true
+ concurrent_compactors: 4
+ compaction_throughput_mb_per_sec: 0
+-row_cache_class_name: org.apache.cassandra.cache.OHCProvider
+ row_cache_size_in_mb: 16
+ enable_user_defined_functions: true
+ enable_scripted_user_defined_functions: true
diff --git a/databases/cassandra4/pkg-descr b/databases/cassandra4/pkg-descr
new file mode 100644
index 000000000000..b2767ece8c58
--- /dev/null
+++ b/databases/cassandra4/pkg-descr
@@ -0,0 +1,16 @@
+Apache Cassandra is a free and open-source distributed database.
+It is a Java-based, highly scalable, eventually consistent, wide
+column store. Cassandra database clusters are masterless with no
+single point of failure. Replication can be configured across
+multiple data centers.
+
+Originally influenced by Dynamo and BigTable, Cassandra was initially
+developed at and open sourced by Facebook before becoming a top-level
+Apache project.
+
+The CQL query language offers SQL-like data access and management.
+Drivers are available for a number of languages.
+
+This is an ALPHA version! It is not intended for production use.
+
+WWW: https://cassandra.apache.org/
diff --git a/databases/cassandra4/pkg-message b/databases/cassandra4/pkg-message
new file mode 100644
index 000000000000..37224b063199
--- /dev/null
+++ b/databases/cassandra4/pkg-message
@@ -0,0 +1,12 @@
+[
+{ type: install
+ message: <<EOM
+Entries for this machine's hostname may need to be set in /etc/hosts
+if you get a "Local host name unknown" exception on startup
+(see https://issues.apache.org/jira/browse/CASSANDRA-2380):
+
+ ::1 localhost localhost.your.domain your-host-name
+ 127.0.0.1 localhost localhost.your.domain your-host-name
+EOM
+}
+]
diff --git a/databases/cassandra4/pkg-plist b/databases/cassandra4/pkg-plist
new file mode 100644
index 000000000000..9ef0751234db
--- /dev/null
+++ b/databases/cassandra4/pkg-plist
@@ -0,0 +1,214 @@
+%%DATADIR%%/bin/cassandra
+%%DATADIR%%/bin/cassandra.in.sh
+%%DATADIR%%/bin/cqlsh
+%%DATADIR%%/bin/cqlsh.py
+%%DATADIR%%/bin/debug-cql
+%%DATADIR%%/bin/nodetool
+%%DATADIR%%/bin/sstableloader
+%%DATADIR%%/bin/sstablescrub
+%%DATADIR%%/bin/sstableupgrade
+%%DATADIR%%/bin/sstableutil
+%%DATADIR%%/bin/sstableverify
+%%DATADIR%%/bin/stop-server
+%%DATADIR%%/CHANGES.txt
+%%DATADIR%%/lib/airline-0.8.jar
+%%DATADIR%%/lib/antlr-runtime-3.5.2.jar
+%%DATADIR%%/lib/apache-cassandra-%%DISTVERSION%%.jar
+%%DATADIR%%/lib/asm-7.1.jar
+%%DATADIR%%/lib/caffeine-2.3.5.jar
+%%DATADIR%%/lib/cassandra-driver-core-3.6.0-shaded.jar
+%%DATADIR%%/lib/cassandra-driver-internal-only-3.21.0.post0-05fb2c8d.zip
+%%DATADIR%%/lib/chronicle-bytes-1.16.3.jar
+%%DATADIR%%/lib/chronicle-core-1.16.4.jar
+%%DATADIR%%/lib/chronicle-queue-4.16.3.jar
+%%DATADIR%%/lib/chronicle-threads-1.16.0.jar
+%%DATADIR%%/lib/chronicle-wire-1.16.1.jar
+%%DATADIR%%/lib/commons-cli-1.1.jar
+%%DATADIR%%/lib/commons-codec-1.9.jar
+%%DATADIR%%/lib/commons-lang3-3.1.jar
+%%DATADIR%%/lib/commons-math3-3.2.jar
+%%DATADIR%%/lib/concurrent-trees-2.4.0.jar
+%%DATADIR%%/lib/ecj-4.6.1.jar
+%%DATADIR%%/lib/futures-2.1.6-py2.py3-none-any.zip
+%%DATADIR%%/lib/geomet-0.1.0.zip
+%%DATADIR%%/lib/guava-27.0-jre.jar
+%%DATADIR%%/lib/HdrHistogram-2.1.9.jar
+%%DATADIR%%/lib/high-scale-lib-1.0.6.jar
+%%DATADIR%%/lib/hppc-0.8.1.jar
+%%DATADIR%%/lib/j2objc-annotations-1.3.jar
+%%DATADIR%%/lib/jackson-annotations-2.9.5.jar
+%%DATADIR%%/lib/jackson-core-2.9.5.jar
+%%DATADIR%%/lib/jackson-databind-2.9.5.jar
+%%DATADIR%%/lib/jamm-0.3.2.jar
+%%DATADIR%%/lib/javax.inject.jar
+%%DATADIR%%/lib/jbcrypt-0.3m.jar
+%%DATADIR%%/lib/jcl-over-slf4j-1.7.25.jar
+%%DATADIR%%/lib/jcommander-1.30.jar
+%%DATADIR%%/lib/jctools-core-1.2.1.jar
+%%DATADIR%%/lib/jflex-1.6.0.jar
+%%DATADIR%%/lib/jna-4.2.2.jar
+%%DATADIR%%/lib/json-simple-1.1.jar
+%%DATADIR%%/lib/jstackjunit-0.0.1.jar
+%%DATADIR%%/lib/jvm-attach-api-1.5.jar
+%%DATADIR%%/lib/licenses/airline-0.8.txt
+%%DATADIR%%/lib/licenses/antlr-runtime-3.5.2.txt
+%%DATADIR%%/lib/licenses/asm-6.2.txt
+%%DATADIR%%/lib/licenses/caffeine-2.3.5.txt
+%%DATADIR%%/lib/licenses/cassandra-driver-3.0.1.txt
+%%DATADIR%%/lib/licenses/chronicle-bytes-1.16.3.txt
+%%DATADIR%%/lib/licenses/chronicle-core-1.16.3-SNAPSHOT.txt
+%%DATADIR%%/lib/licenses/chronicle-queue-4.16.3.txt
+%%DATADIR%%/lib/licenses/chronicle-threads-1.16.0.txt
+%%DATADIR%%/lib/licenses/chronicle-wire-1.16.1.txt
+%%DATADIR%%/lib/licenses/commons-cli-1.1.txt
+%%DATADIR%%/lib/licenses/commons-codec-1.9.txt
+%%DATADIR%%/lib/licenses/commons-lang3-3.1.txt
+%%DATADIR%%/lib/licenses/commons-math3-3.2.txt
+%%DATADIR%%/lib/licenses/compress-lzf-0.8.4.txt
+%%DATADIR%%/lib/licenses/concurrent-trees-2.4.0.txt
+%%DATADIR%%/lib/licenses/ecj-4.6.1.txt
+%%DATADIR%%/lib/licenses/futures-2.1.6.txt
+%%DATADIR%%/lib/licenses/geom-0.1.0.txt
+%%DATADIR%%/lib/licenses/guava-23.3-jre.txt
+%%DATADIR%%/lib/licenses/hdrhistogram-2.1.9.txt
+%%DATADIR%%/lib/licenses/high-scale-lib-1.0.6.txt
+%%DATADIR%%/lib/licenses/hppc-0.5.4.txt
+%%DATADIR%%/lib/licenses/j2objc-annotations-1.3.txt
+%%DATADIR%%/lib/licenses/jackson-annotations-2.9.5.txt
+%%DATADIR%%/lib/licenses/jackson-core-2.9.5.txt
+%%DATADIR%%/lib/licenses/jackson-databind-2.9.5.txt
+%%DATADIR%%/lib/licenses/jamm-0.3.2.txt
+%%DATADIR%%/lib/licenses/javax.inject.txt
+%%DATADIR%%/lib/licenses/jbcrypt-0.3m.txt
+%%DATADIR%%/lib/licenses/jcl-over-slf4j-1.7.25.txt
+%%DATADIR%%/lib/licenses/jctools-core-1.2.1.txt
+%%DATADIR%%/lib/licenses/jflex-1.6.0.txt
+%%DATADIR%%/lib/licenses/jna-4.2.2.txt
+%%DATADIR%%/lib/licenses/joda-time-2.4.txt
+%%DATADIR%%/lib/licenses/json-simple-1.1.txt
+%%DATADIR%%/lib/licenses/jstackjunit-0.0.1.txt
+%%DATADIR%%/lib/licenses/LICENSE-2.0.txt
+%%DATADIR%%/lib/licenses/log4j-over-slf4j-1.7.25.txt
+%%DATADIR%%/lib/licenses/logback-classic-1.2.3.txt
+%%DATADIR%%/lib/licenses/logback-core-1.2.3.txt
+%%DATADIR%%/lib/licenses/lz4-1.4.0.txt
+%%DATADIR%%/lib/licenses/metrics-core-3.1.5.txt
+%%DATADIR%%/lib/licenses/metrics-jvm-3.1.5.txt
+%%DATADIR%%/lib/licenses/metrics-logback-3.1.5.txt
+%%DATADIR%%/lib/licenses/netty-tcnative-2.0.25.txt
+%%DATADIR%%/lib/licenses/psjava-0.1.19.txt
+%%DATADIR%%/lib/licenses/reporter-config-base-3.0.3.txt
+%%DATADIR%%/lib/licenses/reporter-config3-3.0.3.txt
+%%DATADIR%%/lib/licenses/six-1.7.3.txt
+%%DATADIR%%/lib/licenses/slf4j-api-1.7.25.txt
+%%DATADIR%%/lib/licenses/snakeyaml-1.11.txt
+%%DATADIR%%/lib/licenses/snowball-stemmer-1.3.0.581.1.txt
+%%DATADIR%%/lib/licenses/ST4-4.0.8.txt
+%%DATADIR%%/lib/licenses/stream-2.5.2.txt
+%%DATADIR%%/lib/log4j-over-slf4j-1.7.25.jar
+%%DATADIR%%/lib/logback-classic-1.2.3.jar
+%%DATADIR%%/lib/logback-core-1.2.3.jar
+%%DATADIR%%/lib/lz4-java-1.7.1.jar
+%%DATADIR%%/lib/metrics-core-3.1.5.jar
+%%DATADIR%%/lib/metrics-jvm-3.1.5.jar
+%%DATADIR%%/lib/metrics-logback-3.1.5.jar
+%%DATADIR%%/lib/mxdump-0.14.jar
+%%DATADIR%%/lib/netty.jar
+%%DATADIR%%/lib/netty-tcnative-boringssl-static-2.0.25.Final.jar
+%%DATADIR%%/lib/psjava-0.1.19.jar
+%%DATADIR%%/lib/reporter-config-base-3.0.3.jar
+%%DATADIR%%/lib/reporter-config3-3.0.3.jar
+%%DATADIR%%/lib/six-1.12.0-py2.py3-none-any.zip
+%%DATADIR%%/lib/sjk-cli-0.14.jar
+%%DATADIR%%/lib/sjk-core-0.14.jar
+%%DATADIR%%/lib/sjk-json-0.14.jar
+%%DATADIR%%/lib/sjk-stacktrace-0.14.jar
+%%DATADIR%%/lib/slf4j-api-1.7.25.jar
+%%DATADIR%%/lib/snakeyaml-1.11.jar
+%%DATADIR%%/lib/snappy-java.jar
+%%DATADIR%%/lib/snowball-stemmer-1.3.0.581.1.jar
+%%DATADIR%%/lib/ST4-4.0.8.jar
+%%DATADIR%%/lib/stream-2.5.2.jar
+%%AMD64ONLY%%%%DATADIR%%/lib/zstd-jni-1.4.4-9-freebsd_amd64.jar
+%%DATADIR%%/LICENSE.txt
+%%DATADIR%%/NEWS.txt
+%%DATADIR%%/NOTICE.txt
+%%DATADIR%%/pylib/cassandra-cqlsh-tests.sh
+%%DATADIR%%/pylib/cqlshlib/__init__.py
+%%DATADIR%%/pylib/cqlshlib/copyutil.py
+%%DATADIR%%/pylib/cqlshlib/cql3handling.py
+%%DATADIR%%/pylib/cqlshlib/cqlhandling.py
+%%DATADIR%%/pylib/cqlshlib/cqlshhandling.py
+%%DATADIR%%/pylib/cqlshlib/displaying.py
+%%DATADIR%%/pylib/cqlshlib/formatting.py
+%%DATADIR%%/pylib/cqlshlib/helptopics.py
+%%DATADIR%%/pylib/cqlshlib/pylexotron.py
+%%DATADIR%%/pylib/cqlshlib/saferscanner.py
+%%DATADIR%%/pylib/cqlshlib/setup.cfg
+%%DATADIR%%/pylib/cqlshlib/sslhandling.py
+%%DATADIR%%/pylib/cqlshlib/test/__init__.py
+%%DATADIR%%/pylib/cqlshlib/test/ansi_colors.py
+%%DATADIR%%/pylib/cqlshlib/test/basecase.py
+%%DATADIR%%/pylib/cqlshlib/test/cassconnect.py
+%%DATADIR%%/pylib/cqlshlib/test/run_cqlsh.py
+%%DATADIR%%/pylib/cqlshlib/test/test_copyutil.py
+%%DATADIR%%/pylib/cqlshlib/test/test_cql_parsing.py
+%%DATADIR%%/pylib/cqlshlib/test/test_cqlsh_completion.py
+%%DATADIR%%/pylib/cqlshlib/test/test_cqlsh_output.py
+%%DATADIR%%/pylib/cqlshlib/test/test_keyspace_init.cql
+%%DATADIR%%/pylib/cqlshlib/test/winpty.py
+%%DATADIR%%/pylib/cqlshlib/tracing.py
+%%DATADIR%%/pylib/cqlshlib/util.py
+%%DATADIR%%/pylib/cqlshlib/wcwidth.py
+%%DATADIR%%/pylib/Dockerfile.ubuntu.py2
+%%DATADIR%%/pylib/Dockerfile.ubuntu.py3
+%%DATADIR%%/pylib/README.asc
+%%DATADIR%%/pylib/requirements.txt
+%%DATADIR%%/pylib/setup.py
+%%DATADIR%%/tools/bin/auditlogviewer
+%%DATADIR%%/tools/bin/cassandra-stress
+%%DATADIR%%/tools/bin/cassandra-stressd
+%%DATADIR%%/tools/bin/cassandra.in.sh
+%%DATADIR%%/tools/bin/compaction-stress
+%%DATADIR%%/tools/bin/fqltool
+%%DATADIR%%/tools/bin/sstabledump
+%%DATADIR%%/tools/bin/sstableexpiredblockers
+%%DATADIR%%/tools/bin/sstablelevelreset
+%%DATADIR%%/tools/bin/sstablemetadata
+%%DATADIR%%/tools/bin/sstableofflinerelevel
+%%DATADIR%%/tools/bin/sstablerepairedset
+%%DATADIR%%/tools/bin/sstablesplit
+%%DATADIR%%/tools/cqlstress-counter-example.yaml
+%%DATADIR%%/tools/cqlstress-example.yaml
+%%DATADIR%%/tools/cqlstress-insanity-example.yaml
+%%DATADIR%%/tools/cqlstress-lwt-example.yaml
+%%DATADIR%%/tools/lib/fqltool.jar
+%%DATADIR%%/tools/lib/stress.jar
+%%ETCDIR%%/metrics-reporter-config-sample.yaml
+%%ETCDIR%%/README.txt
+%%ETCDIR%%/triggers/README.txt
+%%SIGAR%%%%DATADIR%%/lib/sigar.jar
+@sample %%ETCDIR%%/cassandra-env.sh.sample
+@sample %%ETCDIR%%/cassandra-jaas.config.sample
+@sample %%ETCDIR%%/cassandra-rackdc.properties.sample
+@sample %%ETCDIR%%/cassandra-topology.properties.sample
+@sample %%ETCDIR%%/cassandra.yaml.sample
+@sample %%ETCDIR%%/commitlog_archiving.properties.sample
+@sample %%ETCDIR%%/cqlshrc.sample
+@sample %%ETCDIR%%/hotspot_compiler.sample
+@sample %%ETCDIR%%/jvm-clients.options.sample
+@sample %%ETCDIR%%/jvm-server.options.sample
+@sample %%ETCDIR%%/jvm11-clients.options.sample
+@sample %%ETCDIR%%/jvm11-server.options.sample
+@sample %%ETCDIR%%/jvm8-clients.options.sample
+@sample %%ETCDIR%%/jvm8-server.options.sample
+@sample %%ETCDIR%%/logback-tools.xml.sample
+@sample %%ETCDIR%%/logback.xml.sample
+bin/cassandra
+bin/cqlsh
+bin/nodetool
+bin/sstableloader
+bin/sstablescrub
+bin/sstableupgrade
+bin/sstableutil
+bin/sstableverify