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/30 09:24:19 UTC

[bigtop] branch master updated: BIGTOP-3823: Support parent directory configuration for HBase rpm build script (#1021)

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 9e0ea07a BIGTOP-3823: Support parent directory configuration for HBase rpm build script (#1021)
9e0ea07a is described below

commit 9e0ea07a03ced8b2188871d08045a0b627776120
Author: Zhiguo Wu <wu...@apache.org>
AuthorDate: Fri Sep 30 17:24:14 2022 +0800

    BIGTOP-3823: Support parent directory configuration for HBase rpm build script (#1021)
---
 bigtop-packages/src/common/hbase/install_hbase.sh |  74 +++++++------
 bigtop-packages/src/deb/hbase/rules               |   2 +-
 bigtop-packages/src/rpm/hbase/SPECS/hbase.spec    | 120 ++++++++++++----------
 3 files changed, 111 insertions(+), 85 deletions(-)

diff --git a/bigtop-packages/src/common/hbase/install_hbase.sh b/bigtop-packages/src/common/hbase/install_hbase.sh
index 5ed601e2..049f7122 100755
--- a/bigtop-packages/src/common/hbase/install_hbase.sh
+++ b/bigtop-packages/src/common/hbase/install_hbase.sh
@@ -26,10 +26,12 @@ usage: $0 <options>
 
   Optional options:
      --doc-dir=DIR               path to install docs into [/usr/share/doc/hbase]
-     --lib-dir=DIR               path to install hbase home [/usr/lib/hbase]
-     --installed-lib-dir=DIR     path where lib-dir will end up on target system
      --bin-dir=DIR               path to install bins [/usr/bin]
-     --examples-dir=DIR          path to install examples [doc-dir/examples]
+     --lib-dir=DIR               path to install hbase home [/usr/lib/hbase]
+     --man-dir=DIR               path to install mans [/usr/share/man]
+     --etc-default=DIR           path to bigtop default dir [/etc/default]
+     --etc-hbase=DIR             path to install hbase conf [/etc/hbase]
+     --lib-zookeeper-dir=DIR     path to Zookeeper home [/usr/lib/zookeeper]
      ... [ see source for more similar options ]
   "
   exit 1
@@ -40,11 +42,12 @@ OPTS=$(getopt \
   -o '' \
   -l 'prefix:' \
   -l 'doc-dir:' \
-  -l 'lib-dir:' \
-  -l 'installed-lib-dir:' \
   -l 'bin-dir:' \
-  -l 'examples-dir:' \
-  -l 'conf-dir:' \
+  -l 'lib-dir:' \
+  -l 'man-dir:' \
+  -l 'etc-default:' \
+  -l 'etc-hbase:' \
+  -l 'lib-zookeeper-dir:' \
   -l 'build-dir:' -- "$@")
 
 if [ $? != 0 ] ; then
@@ -63,20 +66,23 @@ while true ; do
         --doc-dir)
         DOC_DIR=$2 ; shift 2
         ;;
+        --bin-dir)
+        BIN_DIR=$2 ; shift 2
+        ;;
         --lib-dir)
         LIB_DIR=$2 ; shift 2
         ;;
-        --installed-lib-dir)
-        INSTALLED_LIB_DIR=$2 ; shift 2
+        --man-dir)
+        MAN_DIR=$2 ; shift 2
         ;;
-        --bin-dir)
-        BIN_DIR=$2 ; shift 2
+        --etc-default)
+        ETC_DEFAULT=$2 ; shift 2
         ;;
-        --examples-dir)
-        EXAMPLES_DIR=$2 ; shift 2
+        --etc-hbase)
+        ETC_HBASE=$2 ; shift 2
         ;;
-        --conf-dir)
-        CONF_DIR=$2 ; shift 2
+        --lib-zookeeper-dir)
+        LIB_ZOOKEEPER_DIR=$2 ; shift 2
         ;;
         --)
         shift ; break
@@ -96,20 +102,26 @@ for var in PREFIX BUILD_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/hbase}
 LIB_DIR=${LIB_DIR:-/usr/lib/hbase}
+BIN_DIR=${BIN_DIR:-/usr/bin}
+ETC_DEFAULT=${ETC_DEFAULT:-/etc/default}
+LIB_ZOOKEEPER_DIR=${LIB_ZOOKEEPER_DIR:-/usr/lib/zookeeper}
+
+ETC_HBASE=${ETC_HBASE:-/etc/hbase}
+# No prefix
+NP_ETC_HBASE=/etc/hbase
 
-BIN_DIR=${BIN_DIR:-/usr/lib/hbase/bin}
 ETC_DIR=${ETC_DIR:-/etc/hbase}
-CONF_DIR=${CONF_DIR:-${ETC_DIR}/conf.dist}
 THRIFT_DIR=${THRIFT_DIR:-${LIB_DIR}/include/thrift}
 
 install -d -m 0755 $PREFIX/$LIB_DIR
 install -d -m 0755 $PREFIX/$LIB_DIR/lib
 install -d -m 0755 $PREFIX/$DOC_DIR
-install -d -m 0755 $PREFIX/$BIN_DIR
-install -d -m 0755 $PREFIX/$ETC_DIR
+install -d -m 0755 $PREFIX/$LIB_DIR/bin
+install -d -m 0755 $PREFIX/$NP_ETC_HBASE
+install -d -m 0755 $PREFIX/$ETC_HBASE
 install -d -m 0755 $PREFIX/$MAN_DIR
 install -d -m 0755 $PREFIX/$THRIFT_DIR
 
@@ -119,19 +131,19 @@ cp -a $BUILD_DIR/docs/* $PREFIX/$DOC_DIR
 cp $BUILD_DIR/*.txt $PREFIX/$DOC_DIR/
 cp -a $BUILD_DIR/hbase-webapps $PREFIX/$LIB_DIR
 
-cp -a $BUILD_DIR/conf $PREFIX/$CONF_DIR
-cp -a $BUILD_DIR/bin/* $PREFIX/$BIN_DIR
+cp -a $BUILD_DIR/conf $PREFIX/$ETC_HBASE/conf.dist
+cp -a $BUILD_DIR/bin/* $PREFIX/$LIB_DIR/bin
 # Purge scripts that don't work with packages
 for file in rolling-restart.sh graceful_stop.sh local-regionservers.sh \
             master-backup.sh regionservers.sh zookeepers.sh hbase-daemons.sh \
             start-hbase.sh stop-hbase.sh local-master-backup.sh ; do
-  rm -f $PREFIX/$BIN_DIR/$file
+  rm -f $PREFIX/$LIB_DIR/bin/$file
 done
 
 cp $BUILD_DIR/../hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift $PREFIX/$THRIFT_DIR/hbase1.thrift
 cp $BUILD_DIR/../hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift $PREFIX/$THRIFT_DIR/hbase2.thrift
 
-ln -s $ETC_DIR/conf $PREFIX/$LIB_DIR/conf
+ln -s $NP_ETC_HBASE/conf $PREFIX/$LIB_DIR/conf
 
 # Make a symlink of hbase.jar to hbase-version.jar
 pushd `pwd`
@@ -142,27 +154,27 @@ do
 done
 popd
 
-wrapper=$PREFIX/usr/bin/hbase
+wrapper=$PREFIX/$BIN_DIR/hbase
 mkdir -p `dirname $wrapper`
 cat > $wrapper <<EOF
 #!/bin/bash
 
-BIGTOP_DEFAULTS_DIR=\${BIGTOP_DEFAULTS_DIR-/etc/default}
+BIGTOP_DEFAULTS_DIR=\${BIGTOP_DEFAULTS_DIR-$ETC_DEFAULT}
 [ -n "\${BIGTOP_DEFAULTS_DIR}" -a -r \${BIGTOP_DEFAULTS_DIR}/hbase ] && . \${BIGTOP_DEFAULTS_DIR}/hbase
 
 # Autodetect JAVA_HOME if not defined
 . /usr/lib/bigtop-utils/bigtop-detect-javahome
 
 export HADOOP_CONF=\${HADOOP_CONF:-/etc/hadoop/conf}
-export ZOOKEEPER_HOME=\${ZOOKEEPER_HOME:-/usr/lib/zookeeper}
+export ZOOKEEPER_HOME=\${ZOOKEEPER_HOME:-$LIB_ZOOKEEPER_DIR}
 export HBASE_CLASSPATH=\$HADOOP_CONF:\$HADOOP_HOME/*:\$HADOOP_HOME/lib/*:\$ZOOKEEPER_HOME/*:\$HBASE_CLASSPATH
 
-exec /usr/lib/hbase/bin/hbase "\$@"
+exec $LIB_DIR/bin/hbase "\$@"
 EOF
 chmod 755 $wrapper
 
-install -d -m 0755 $PREFIX/usr/bin
+install -d -m 0755 $PREFIX/$BIN_DIR
 
-rm -f $PREFIX/$CONF_DIR/*.cmd
-rm -f $PREFIX/$BIN_DIR/*.cmd
+rm -f $PREFIX/$ETC_HBASE/conf.dist/*.cmd
+rm -f $PREFIX/$LIB_DIR/bin/*.cmd
 
diff --git a/bigtop-packages/src/deb/hbase/rules b/bigtop-packages/src/deb/hbase/rules
index 20b54166..0c6166c1 100755
--- a/bigtop-packages/src/deb/hbase/rules
+++ b/bigtop-packages/src/deb/hbase/rules
@@ -39,7 +39,7 @@ override_dh_auto_install:
 	cp debian/hbase.default debian/${hbase_pkg_name}/etc/default/${hbase_pkg_name}
 	bash -x debian/install_hbase.sh \
 		--build-dir=build \
-		--conf-dir=/etc/hbase/conf.dist \
+		--etc-hbase=/etc/hbase \
 		--doc-dir=usr/share/doc/${hbase_pkg_name}-doc \
 		--prefix=debian/tmp
 	mkdir -p debian/tmp/etc/security/limits.d
diff --git a/bigtop-packages/src/rpm/hbase/SPECS/hbase.spec b/bigtop-packages/src/rpm/hbase/SPECS/hbase.spec
index b7ba4829..a7008ef2 100644
--- a/bigtop-packages/src/rpm/hbase/SPECS/hbase.spec
+++ b/bigtop-packages/src/rpm/hbase/SPECS/hbase.spec
@@ -12,20 +12,28 @@
 # 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.
-%define etc_hbase_conf %{_sysconfdir}/%{name}/conf
-%define etc_hbase_conf_dist %{etc_hbase_conf}.dist
-%define hbase_home /usr/lib/%{name}
-%define bin_hbase %{hbase_home}/bin
-%define lib_hbase %{hbase_home}/lib
-%define conf_hbase %{hbase_home}/conf
-%define logs_hbase %{hbase_home}/logs
-%define pids_hbase %{hbase_home}/pids
-%define webapps_hbase %{hbase_home}/hbase-webapps
-%define man_dir %{_mandir}
+
+%define etc_default %{parent_dir}/etc/default
+
+%define usr_lib_hbase %{parent_dir}/usr/lib/%{name}
+%define var_lib_hbase %{parent_dir}/var/lib/%{name}
+%define etc_hbase %{parent_dir}/etc/%{name}
+
+%define usr_lib_hadoop %{parent_dir}/usr/lib/hadoop
+%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_log_hbase /var/log/%{name}
+%define np_var_run_hbase /var/run/%{name}
+%define np_etc_hbase /etc/%{name}
+
 %define hbase_username hbase
 %define hbase_services master regionserver thrift thrift2 rest
-%define hadoop_home /usr/lib/hadoop
-%define zookeeper_home /usr/lib/zookeeper
+
 
 %if  %{?suse_version:1}0
 
@@ -44,7 +52,7 @@
     /usr/lib/rpm/brp-compress ; \
     %{nil}
 
-%define doc_hbase %{_docdir}/%{name}
+%define doc_hbase %{doc_dir}/%{name}
 %global initd_dir %{_sysconfdir}/rc.d
 %define alternatives_cmd update-alternatives
 
@@ -68,7 +76,7 @@
 %endif
 
 
-%define doc_hbase %{_docdir}/%{name}-%{hbase_version}
+%define doc_hbase %{doc_dir}/%{name}-%{hbase_version}
 %global initd_dir %{_sysconfdir}/rc.d/init.d
 %define alternatives_cmd alternatives
 
@@ -276,25 +284,30 @@ env HBASE_VERSION=%{version} bash %{SOURCE1}
 %__rm -rf $RPM_BUILD_ROOT
 bash %{SOURCE2} \
 	--build-dir=build \
-        --doc-dir=%{doc_hbase} \
-        --conf-dir=%{etc_hbase_conf_dist} \
+    --man-dir=%{man_dir} \
+    --bin-dir=%{bin_dir} \
+    --doc-dir=%{doc_hbase} \
+    --lib-dir=%{usr_lib_hbase} \
+    --etc-default=%{etc_default} \
+    --etc-hbase=%{etc_hbase} \
+    --lib-zookeeper-dir=%{usr_lib_zookeeper} \
 	--prefix=$RPM_BUILD_ROOT
 
 %__install -d -m 0755 $RPM_BUILD_ROOT/%{initd_dir}/
 
-%__install -d -m 0755 $RPM_BUILD_ROOT/etc/default/
-%__install -m 0644 %{SOURCE5} $RPM_BUILD_ROOT/etc/default/%{name}
+%__install -d -m 0755 $RPM_BUILD_ROOT/%{etc_default}/
+%__install -m 0644 %{SOURCE5} $RPM_BUILD_ROOT/%{etc_default}/%{name}
 
 %__install -d -m 0755 $RPM_BUILD_ROOT/etc/security/limits.d
 %__install -m 0644 %{SOURCE6} $RPM_BUILD_ROOT/etc/security/limits.d/%{name}.nofiles.conf
 
-%__install -d  -m 0755  %{buildroot}/%{_localstatedir}/log/%{name}
-ln -s %{_localstatedir}/log/%{name} %{buildroot}/%{logs_hbase}
+%__install -d  -m 0755  %{buildroot}/%{np_var_log_hbase}
+ln -s %{np_var_log_hbase} %{buildroot}/%{usr_lib_hbase}/logs
 
-%__install -d  -m 0755  %{buildroot}/%{_localstatedir}/run/%{name}
-ln -s %{_localstatedir}/run/%{name} %{buildroot}/%{pids_hbase}
+%__install -d  -m 0755  %{buildroot}/%{np_var_run_hbase}
+ln -s %{np_var_run_hbase} %{buildroot}/%{usr_lib_hbase}/pids
 
-%__install -d  -m 0755  %{buildroot}/%{_localstatedir}/lib/%{name}
+%__install -d  -m 0755  %{buildroot}/%{var_lib_hbase}
 
 for service in %{hbase_services}
 do
@@ -315,36 +328,36 @@ do
     chmod 755 $init_file
 done
 
-%__install -d -m 0755 $RPM_BUILD_ROOT/usr/bin
+%__install -d -m 0755 $RPM_BUILD_ROOT/%{bin_dir}
 
 # Pull zookeeper and hadoop from their packages
-rm -f $RPM_BUILD_ROOT/%{lib_hbase}/{hadoop,zookeeper,slf4j-log4j12-}*.jar
-ln -f -s %{zookeeper_home}/zookeeper.jar $RPM_BUILD_ROOT/%{lib_hbase}
-
-ln -f -s %{hadoop_home}/client/hadoop-annotations.jar $RPM_BUILD_ROOT/%{lib_hbase}
-ln -f -s %{hadoop_home}/client/hadoop-auth.jar $RPM_BUILD_ROOT/%{lib_hbase}
-ln -f -s %{hadoop_home}/client/hadoop-common.jar $RPM_BUILD_ROOT/%{lib_hbase}
-ln -f -s %{hadoop_home}/client/hadoop-hdfs.jar $RPM_BUILD_ROOT/%{lib_hbase}
-ln -f -s %{hadoop_home}/client/hadoop-mapreduce-client-app.jar $RPM_BUILD_ROOT/%{lib_hbase}
-ln -f -s %{hadoop_home}/client/hadoop-mapreduce-client-common.jar $RPM_BUILD_ROOT/%{lib_hbase}
-ln -f -s %{hadoop_home}/client/hadoop-mapreduce-client-core.jar $RPM_BUILD_ROOT/%{lib_hbase}
-ln -f -s %{hadoop_home}/client/hadoop-mapreduce-client-jobclient.jar $RPM_BUILD_ROOT/%{lib_hbase}
-ln -f -s %{hadoop_home}/client/hadoop-mapreduce-client-shuffle.jar $RPM_BUILD_ROOT/%{lib_hbase}
-ln -f -s %{hadoop_home}/client/hadoop-yarn-api.jar $RPM_BUILD_ROOT/%{lib_hbase}
-ln -f -s %{hadoop_home}/client/hadoop-yarn-client.jar $RPM_BUILD_ROOT/%{lib_hbase}
-ln -f -s %{hadoop_home}/client/hadoop-yarn-common.jar $RPM_BUILD_ROOT/%{lib_hbase}
-ln -f -s %{hadoop_home}/client/hadoop-yarn-server-common.jar $RPM_BUILD_ROOT/%{lib_hbase}
+rm -f $RPM_BUILD_ROOT/%{usr_lib_hbase}/lib/{hadoop,zookeeper,slf4j-log4j12-}*.jar
+ln -f -s %{usr_lib_zookeeper}/zookeeper.jar $RPM_BUILD_ROOT/%{usr_lib_hbase}/lib
+
+ln -f -s %{usr_lib_hadoop}/client/hadoop-annotations.jar $RPM_BUILD_ROOT/%{usr_lib_hbase}/lib
+ln -f -s %{usr_lib_hadoop}/client/hadoop-auth.jar $RPM_BUILD_ROOT/%{usr_lib_hbase}/lib
+ln -f -s %{usr_lib_hadoop}/client/hadoop-common.jar $RPM_BUILD_ROOT/%{usr_lib_hbase}/lib
+ln -f -s %{usr_lib_hadoop}/client/hadoop-hdfs.jar $RPM_BUILD_ROOT/%{usr_lib_hbase}/lib
+ln -f -s %{usr_lib_hadoop}/client/hadoop-mapreduce-client-app.jar $RPM_BUILD_ROOT/%{usr_lib_hbase}/lib
+ln -f -s %{usr_lib_hadoop}/client/hadoop-mapreduce-client-common.jar $RPM_BUILD_ROOT/%{usr_lib_hbase}/lib
+ln -f -s %{usr_lib_hadoop}/client/hadoop-mapreduce-client-core.jar $RPM_BUILD_ROOT/%{usr_lib_hbase}/lib
+ln -f -s %{usr_lib_hadoop}/client/hadoop-mapreduce-client-jobclient.jar $RPM_BUILD_ROOT/%{usr_lib_hbase}/lib
+ln -f -s %{usr_lib_hadoop}/client/hadoop-mapreduce-client-shuffle.jar $RPM_BUILD_ROOT/%{usr_lib_hbase}/lib
+ln -f -s %{usr_lib_hadoop}/client/hadoop-yarn-api.jar $RPM_BUILD_ROOT/%{usr_lib_hbase}/lib
+ln -f -s %{usr_lib_hadoop}/client/hadoop-yarn-client.jar $RPM_BUILD_ROOT/%{usr_lib_hbase}/lib
+ln -f -s %{usr_lib_hadoop}/client/hadoop-yarn-common.jar $RPM_BUILD_ROOT/%{usr_lib_hbase}/lib
+ln -f -s %{usr_lib_hadoop}/client/hadoop-yarn-server-common.jar $RPM_BUILD_ROOT/%{usr_lib_hbase}/lib
 
 %pre
 getent group hbase 2>/dev/null >/dev/null || /usr/sbin/groupadd -r hbase
 getent passwd hbase 2>&1 > /dev/null || /usr/sbin/useradd -c "HBase" -s /sbin/nologin -g hbase -r -d /var/lib/hbase hbase 2> /dev/null || :
 
 %post
-%{alternatives_cmd} --install %{etc_hbase_conf} %{name}-conf %{etc_hbase_conf_dist} 30
+%{alternatives_cmd} --install %{np_etc_hbase}/conf %{name}-conf %{etc_hbase}/conf.dist 30
 
 %preun
 if [ "$1" = 0 ]; then
-        %{alternatives_cmd} --remove %{name}-conf %{etc_hbase_conf_dist} || :
+        %{alternatives_cmd} --remove %{name}-conf %{etc_hbase}/conf.dist || :
 fi
 
 
@@ -353,20 +366,21 @@ fi
 #######################
 %files 
 %defattr(-,hbase,hbase)
-%{logs_hbase}
-%{pids_hbase}
-%dir %{_localstatedir}/log/hbase
-%dir %{_localstatedir}/run/hbase
-%dir %{_localstatedir}/lib/hbase
+%{usr_lib_hbase}/logs
+%{usr_lib_hbase}/pids
+%dir %{np_var_log_hbase}
+%dir %{np_var_run_hbase}
+%dir %{var_lib_hbase}
+%dir %{np_etc_hbase}
 
 %defattr(-,root,root)
-%config(noreplace) %{_sysconfdir}/default/hbase
+%config(noreplace) %{etc_default}/hbase
 %config(noreplace) /etc/security/limits.d/hbase.nofiles.conf
-%{hbase_home}
-%{hbase_home}/hbase-*.jar
-%{webapps_hbase}
-/usr/bin/hbase
-%config(noreplace) %{etc_hbase_conf_dist}
+%{usr_lib_hbase}
+%{usr_lib_hbase}/hbase-*.jar
+%{usr_lib_hbase}/hbase-webapps
+%{bin_dir}/hbase
+%config(noreplace) %{etc_hbase}/conf.dist
 
 %files doc
 %defattr(-,root,root)