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}