You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bigtop.apache.org by se...@apache.org on 2022/09/12 01:46:01 UTC
[bigtop] branch master updated: BIGTOP-3797: Support parent directory configuration for Kafka rpm build script (#996)
This is an automated email from the ASF dual-hosted git repository.
sekikn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bigtop.git
The following commit(s) were added to refs/heads/master by this push:
new 17e88a3a BIGTOP-3797: Support parent directory configuration for Kafka rpm build script (#996)
17e88a3a is described below
commit 17e88a3a884c8eaece63da8e6b35d25171a98921
Author: Zhiguo Wu <wu...@apache.org>
AuthorDate: Mon Sep 12 09:45:56 2022 +0800
BIGTOP-3797: Support parent directory configuration for Kafka rpm build script (#996)
* BIGTOP-3797: Support parent directory configuration for Kafka rpm build script
* fix conf symlink dir not found
---
bigtop-packages/src/common/kafka/install_kafka.sh | 69 ++++++++++++++++-------
bigtop-packages/src/rpm/kafka/SPECS/kafka.spec | 66 ++++++++++++++--------
2 files changed, 91 insertions(+), 44 deletions(-)
diff --git a/bigtop-packages/src/common/kafka/install_kafka.sh b/bigtop-packages/src/common/kafka/install_kafka.sh
index 3c05ed81..94f83404 100644
--- a/bigtop-packages/src/common/kafka/install_kafka.sh
+++ b/bigtop-packages/src/common/kafka/install_kafka.sh
@@ -28,7 +28,12 @@ usage: $0 <options>
Optional options:
--doc-dir=DIR path to install docs into [/usr/share/doc/kafka]
--lib-dir=DIR path to install Kafka home [/usr/lib/kafka]
- --installed-lib-dir=DIR path where lib-dir will end up on target system
+ --var-dir=DIR path to install Kafka home [/var/lib/kafka]
+ --bin-dir=DIR path to install bins [/usr/bin]
+ --man-dir=DIR path to install mans [/usr/share/man]
+ --conf-dist-dir=DIR path to install conf dist dir [/etc/kafka/conf.dist]
+ --etc-default=DIR path to bigtop default dir [/etc/default]
+ --lib-zookeeper-dir=DIR path to Zookeeper home [/usr/lib/zookeeper]
--examples-dir=DIR path to install examples [doc-dir/examples]
... [ see source for more similar options ]
"
@@ -41,7 +46,12 @@ OPTS=$(getopt \
-l 'prefix:' \
-l 'doc-dir:' \
-l 'lib-dir:' \
- -l 'installed-lib-dir:' \
+ -l 'var-dir:' \
+ -l 'bin-dir:' \
+ -l 'man-dir:' \
+ -l 'conf-dist-dir:' \
+ -l 'etc-default:' \
+ -l 'lib-zookeeper-dir:' \
-l 'source-dir:' \
-l 'examples-dir:' \
-l 'build-dir:' -- "$@")
@@ -68,6 +78,24 @@ while true ; do
--lib-dir)
LIB_DIR=$2 ; shift 2
;;
+ --var-dir)
+ VAR_DIR=$2 ; shift 2
+ ;;
+ --bin-dir)
+ BIN_DIR=$2 ; shift 2
+ ;;
+ --man-dir)
+ MAN_DIR=$2 ; shift 2
+ ;;
+ --conf-dist-dir)
+ CONF_DIST_DIR=$2 ; shift 2
+ ;;
+ --etc-default)
+ ETC_DEFAULT=$2 ; shift 2
+ ;;
+ --lib-zookeeper-dir)
+ LIB_ZOOKEEPER_DIR=$2 ; shift 2
+ ;;
--examples-dir)
EXAMPLES_DIR=$2 ; shift 2
;;
@@ -89,26 +117,28 @@ for var in PREFIX BUILD_DIR SOURCE_DIR; do
fi
done
-MAN_DIR=${MAN_DIR:-/usr/share/man/man1}
+MAN_DIR=${MAN_DIR:-/usr/share/man}/man1
DOC_DIR=${DOC_DIR:-/usr/share/doc/kafka}
LIB_DIR=${LIB_DIR:-/usr/lib/kafka}
+VAR_DIR=${VAR_DIR:-/var/lib/kafka}
+BIN_DIR=${BIN_DIR:-/usr/bin}
+ETC_DEFAULT=${ETC_DEFAULT:-/etc/default}
+LIB_ZOOKEEPER_DIR=${LIB_ZOOKEEPER_DIR:-/usr/lib/zookeeper}
EXAMPLES_DIR=${EXAMPLES_DIR:-$DOC_DIR/examples}
-CONF_DIR=${CONF_DIR:-/etc/kafka/conf.dist}
-KAFKA_HOME=${KAFKA_HOME:-/usr/lib/kafka}
-ETC_KAFKA_DIR=${ETC_KAFKA_DIR:-/etc/kafka}
-BIN_DIR=/usr/bin
-INSTALLED_KAFKA_DIR=${LIB_DIR}
+
+CONF_DIR=/etc/kafka/conf
+CONF_DIST_DIR=${CONF_DIST_DIR:-/etc/kafka/conf.dist}
install -d -m 0755 $PREFIX/$LIB_DIR
install -d -m 0755 $PREFIX/$DOC_DIR
install -d -m 0755 $PREFIX/$EXAMPLES_DIR
-install -d -m 0755 $PREFIX/var/lib/kafka/
+install -d -m 0755 $PREFIX/$VAR_DIR
install -d -m 0755 $PREFIX/var/log/kafka/
install -d -m 0755 $PREFIX/var/run/kafka/
# Create the data directory.
-install -d -m 0755 $PREFIX/var/lib/kafka/data
+install -d -m 0755 $PREFIX/$VAR_DIR/data
# Unzip binary tarball contents to lib directory.
for jar in `ls ${BUILD_DIR}/build/kafka*.tgz | grep -v 'site-docs'`; do
@@ -145,30 +175,31 @@ do
# Autodetect JAVA_HOME if not defined
. /usr/lib/bigtop-utils/bigtop-detect-javahome
-exec $INSTALLED_KAFKA_DIR/bin/$file "\$@"
+exec $LIB_DIR/bin/$file "\$@"
EOF
chmod 755 $wrapper
done
# Copy in the configuration files
-install -d -m 0755 $PREFIX/$CONF_DIR
-cp -a ${BUILD_DIR}/config/{tools-log4j.properties,server.properties,log4j.properties} $PREFIX/$CONF_DIR/
+install -d -m 0755 $PREFIX/etc/kafka
+install -d -m 0755 $PREFIX/$CONF_DIST_DIR
+cp -a ${BUILD_DIR}/config/{tools-log4j.properties,server.properties,log4j.properties} $PREFIX/$CONF_DIST_DIR/
# BIGTOP-1886
-sed -i -e "s|=log-cleaner.log|=$\{kafka.logs.dir\}/log-cleaner.log|" $PREFIX/$CONF_DIR/log4j.properties
-ln -s ${ETC_KAFKA_DIR}/conf $PREFIX/$LIB_DIR/config
+sed -i -e "s|=log-cleaner.log|=$\{kafka.logs.dir\}/log-cleaner.log|" $PREFIX/$CONF_DIST_DIR/log4j.properties
+ln -s $CONF_DIR $PREFIX/$LIB_DIR/config
# Creating symlink to /var/log/kafka
ln -s /var/log/kafka ${PREFIX}/$LIB_DIR/logs
# Removing zookeeper*.jar from under libs and dropping a symlink in place
rm -f ${PREFIX}/${LIB_DIR}/libs/zookeeper-*.jar
-ln -sf /usr/lib/zookeeper/zookeeper.jar ${PREFIX}/${LIB_DIR}/libs/
+ln -sf $LIB_ZOOKEEPER_DIR/zookeeper.jar ${PREFIX}/${LIB_DIR}/libs/
# BIGTOP-3712
-ln -s /usr/lib/zookeeper/zookeeper-jute.jar ${PREFIX}/${LIB_DIR}/libs/
+ln -s $LIB_ZOOKEEPER_DIR/zookeeper-jute.jar ${PREFIX}/${LIB_DIR}/libs/
# Copy in the defaults file
-install -d -m 0755 ${PREFIX}/etc/default
-cp ${SOURCE_DIR}/kafka.default ${PREFIX}/etc/default/kafka
+install -d -m 0755 $PREFIX/$ETC_DEFAULT
+cp ${SOURCE_DIR}/kafka.default $PREFIX/$ETC_DEFAULT/kafka
cp ${BUILD_DIR}/{LICENSE,NOTICE} ${PREFIX}/${LIB_DIR}/
diff --git a/bigtop-packages/src/rpm/kafka/SPECS/kafka.spec b/bigtop-packages/src/rpm/kafka/SPECS/kafka.spec
index b94df51b..a5442f8e 100644
--- a/bigtop-packages/src/rpm/kafka/SPECS/kafka.spec
+++ b/bigtop-packages/src/rpm/kafka/SPECS/kafka.spec
@@ -14,30 +14,38 @@
# limitations under the License.
%define kafka_name kafka
-%define lib_kafka /usr/lib/%{kafka_name}
-%define var_lib_kafka /var/lib/%{kafka_name}
-%define var_run_kafka /var/run/%{kafka_name}
-%define var_log_kafka /var/log/%{kafka_name}
-%define bin_kafka /usr/lib/%{kafka_name}/bin
-%define etc_kafka /etc/%{kafka_name}
-%define config_kafka %{etc_kafka}/conf
-%define bin /usr/bin
-%define man_dir /usr/share/man
+
+%define etc_default %{parent_dir}/etc/default
+
+%define usr_lib_kafka %{parent_dir}/usr/lib/%{kafka_name}
+%define var_lib_kafka %{parent_dir}/var/lib/%{kafka_name}
+%define etc_kafka_conf_dist %{parent_dir}/etc/%{kafka_name}/conf.dist
+
+%define usr_lib_zookeeper %{parent_dir}/usr/lib/zookeeper
+
+%define bin_dir %{parent_dir}/%{_bindir}
+%define man_dir %{parent_dir}/%{_mandir}
+%define doc_dir %{parent_dir}/%{_docdir}
+
+# No prefix directory
+%define np_var_run_kafka /var/run/%{kafka_name}
+%define np_var_log_kafka /var/log/%{kafka_name}
+%define np_etc_kafka /etc/%{kafka_name}
%if %{!?suse_version:1}0
-%define doc_kafka %{_docdir}/%{kafka_name}-%{kafka_version}
+%define doc_kafka %{doc_dir}/%{kafka_name}-%{kafka_version}
%define alternatives_cmd alternatives
%global initd_dir %{_sysconfdir}/rc.d/init.d
%else
-# Only tested on openSUSE 11.4. le'ts update it for previous release when confirmed
+# Only tested on openSUSE 11.4. let's update it for previous release when confirmed
%if 0%{suse_version} > 1130
%define suse_check \# Define an empty suse_check for compatibility with older sles
%endif
%define alternatives_cmd update-alternatives
-%define doc_kafka %{_docdir}/%{kafka_name}-%{kafka_version}
+%define doc_kafka %{doc_dir}/%{kafka_name}-%{kafka_version}
%global initd_dir %{_sysconfdir}/rc.d
%define __os_install_post \
@@ -103,14 +111,21 @@ bash $RPM_SOURCE_DIR/do-component-build
%install
%__rm -rf $RPM_BUILD_ROOT
-%__install -d -m 0755 $RPM_BUILD_ROOT/etc/default/
-%__install -m 0644 %{SOURCE6} $RPM_BUILD_ROOT/etc/default/%{kafka_name}
+%__install -d -m 0755 $RPM_BUILD_ROOT/%{etc_default}
+%__install -m 0644 %{SOURCE6} $RPM_BUILD_ROOT/%{etc_default}/%{kafka_name}
bash $RPM_SOURCE_DIR/install_kafka.sh \
- --build-dir=`pwd` \
+ --build-dir=`pwd` \
--source-dir=$RPM_SOURCE_DIR \
- --prefix=$RPM_BUILD_ROOT \
- --doc-dir=%{doc_kafka} \
+ --prefix=$RPM_BUILD_ROOT \
+ --doc-dir=%{doc_kafka} \
+ --lib-dir=%{usr_lib_kafka} \
+ --var-dir=%{var_lib_kafka} \
+ --bin-dir=%{bin_dir} \
+ --man-dir=%{man_dir} \
+ --conf-dist-dir=%{etc_kafka_conf_dist} \
+ --etc-default=%{etc_default} \
+ --lib-zookeeper-dir=%{usr_lib_zookeeper}
# Generate the init script
init_file=$RPM_BUILD_ROOT/%{initd_dir}/%{kafka_name}-server
@@ -125,11 +140,11 @@ getent group kafka >/dev/null || groupadd -r kafka
getent passwd kafka >/dev/null || useradd -c "Kafka" -s /sbin/nologin -g kafka -r -d %{var_lib_kafka} kafka 2> /dev/null || :
%post
-%{alternatives_cmd} --install %{config_kafka} %{kafka_name}-conf %{config_kafka}.dist 30
+%{alternatives_cmd} --install %{np_etc_kafka}/conf %{kafka_name}-conf %{etc_kafka_conf_dist} 30
%preun
if [ "$1" = 0 ]; then
- %{alternatives_cmd} --remove %{kafka_name}-conf %{config_kafka}.dist || :
+ %{alternatives_cmd} --remove %{kafka_name}-conf %{etc_kafka_conf_dist} || :
fi
/sbin/service %{kafka_name}-server status > /dev/null 2>&1
@@ -163,12 +178,13 @@ fi
%files
%defattr(-,root,root,755)
-%{bin}/*
-%config(noreplace) %{config_kafka}.dist
-%config(noreplace) /etc/default/kafka
-%attr(0755,kafka,kafka) %{lib_kafka}
+%{bin_dir}/*
+%config(noreplace) %{etc_kafka_conf_dist}
+%config(noreplace) %{etc_default}/kafka
+%attr(0755,kafka,kafka) %{np_etc_kafka}
+%attr(0755,kafka,kafka) %{usr_lib_kafka}
%attr(0755,kafka,kafka) %docdir %{doc_kafka}
%attr(0755,kafka,kafka) %{var_lib_kafka}
-%attr(0755,kafka,kafka) %{var_run_kafka}
-%attr(0755,kafka,kafka) %{var_log_kafka}
+%attr(0755,kafka,kafka) %{np_var_run_kafka}
+%attr(0755,kafka,kafka) %{np_var_log_kafka}
%doc %{doc_kafka}