From 5963dc3704ff861be574fb538b8da35ddab0a093 Mon Sep 17 00:00:00 2001 From: zhangsz Date: Sat, 8 Mar 2025 16:24:27 +0800 Subject: [PATCH] feat: get arch and os from env --- bin/build.sh | 116 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 101 insertions(+), 15 deletions(-) diff --git a/bin/build.sh b/bin/build.sh index 379cab1..9f644a1 100755 --- a/bin/build.sh +++ b/bin/build.sh @@ -21,14 +21,21 @@ usage() { echo "Usage: $0 [ocs|scp|ussdgw|cproxy|goproxy] [Option] " echo echo "Build OCS package, option as follow:" - echo " ocs|scp|ussdgw, ocs: OCS package build by dpkg" - echo " scp: SCP package build by dpkg" - echo " ussdgw: USSD Gateway package, build by dpkg" + echo " ocs|scp|ussdgw, ocs: OCS package build by dpkg" + echo " scp: SCP package build by dpkg" + echo " ussdgw: USSD Gateway package, build by dpkg" echo echo " Option:" echo " -t [norfolk|cook|pncc|zed] Build binary tag, only for ocs, default is pncc" echo " -h, --help Display this help and exit" - echo + echo " cproxy|goproxy, cproxy: C RestProxy package build by dpkg" + echo " goproxy: Golang RestProxy package build by dpkg" + echo + echo "Example:" + echo " $0 ocs -t pncc" + echo " $0 scp -t zed " + echo " $0 cproxy" + echo " $0 goproxy" exit 1 } @@ -66,6 +73,73 @@ while getopts "t:h" option; do esac done +# Get the output of uname -a +uname_a=$(uname -a) +# Extract hardware architecture +if [[ $uname_a =~ "x86_64" ]]; then + deb_arch=amd64 + rpm_arch=x86_64 + rel_arch=amd64 +elif [[ $uname_a =~ "aarch64" ]]; then + deb_arch=arm64 + rpm_arch=aarch64 + rel_arch=arm64 + echo "ARM64 is not supported" + exit 1 +else + echo "Unsupported hardware architecture" + exit 1 +fi + +get_os_info() { + if [ -f /etc/os-release ]; then + . /etc/os-release + echo $ID + else + echo "unknown" + fi +} + +get_os_version() { + if [ -f /etc/os-release ]; then + . /etc/os-release + echo $VERSION_ID + else + echo "unknown" + fi +} + +os_version=$(get_os_version) +case $(get_os_info) in + ubuntu|debian) + if [[ "$os_version" == "22.04" ]]; then + rel_os=ub22 + elif [[ "$os_version" == "12.04" ]]; then + rel_os=ub12 + else + echo "Unsupported Ubuntu version: $os_version" + exit 1 + fi + pkg_ext=deb + ;; + centos|rhel) + rel_os=ct8 + pkg_ext=rpm + echo "CentOS/RHEL is not supported" + exit 1 + ;; + openEuler) + rel_os=oe20 + pkg_ext=rpm + echo "openEuler is not supported" + exit 1 + ;; + *) + echo "Unsupported OS" + exit 1 + ;; +esac + make_ocs_bin() { cd $src_ocs_dir @@ -75,7 +149,7 @@ make_ocs_bin() if [ -z $bin_tag ]; then bin_tag="pncc" fi - echo -n "make $bin_tag ... " + echo -n "make $bin_tag $pkg_type ... " make ${bin_tag} 1>make.log 2>&1 if [ $? -ne 0 ]; then echo "failed" @@ -92,6 +166,14 @@ make_cproxy_bin() echo -n "make clean ... " make clean 1>/dev/null 2>&1 echo "done" + echo -n "configure third lib ... " + make 3rdlib_config 1>make.log 2>&1 + if [ $? -ne 0 ]; then + echo "failed" + echo "Please refer to make.log for details" + exit 1 + fi + echo "done" echo -n "make c restproxy ... " make 1>make.log 2>&1 if [ $? -ne 0 ]; then @@ -139,7 +221,7 @@ pre_ocs_build() mkdir -p $deb_build_dir/lib/systemd/system mkdir -p $deb_build_dir/usr/local/agt/etc/tariff - release_dir=$release_root/ocs/amd64 + release_dir=$release_root/ocs/$rel_arch mkdir -p $release_dir } @@ -152,7 +234,7 @@ pre_scp_build() mkdir -p $deb_build_dir/usr/local/scp/tools mkdir -p $deb_build_dir/lib/systemd/system - release_dir=$release_root/scp/amd64 + release_dir=$release_root/scp/$rel_arch mkdir -p $release_dir } @@ -165,7 +247,7 @@ pre_ussdgw_build() mkdir -p $deb_build_dir/usr/local/ussdgw/tools mkdir -p $deb_build_dir/lib/systemd/system - release_dir=$release_root/ussdgw/amd64 + release_dir=$release_root/ussdgw/$rel_arch mkdir -p $release_dir } @@ -178,7 +260,7 @@ pre_cproxy_build() mkdir -p $deb_build_dir/usr/local/restproxy/log mkdir -p $deb_build_dir/lib/systemd/system - release_dir=$release_root/cproxy/amd64 + release_dir=$release_root/cproxy/$rel_arch mkdir -p $release_dir } @@ -191,7 +273,7 @@ pre_goproxy_build() mkdir -p $deb_build_dir/usr/local/restproxy/log mkdir -p $deb_build_dir/lib/systemd/system - release_dir=$release_root/goproxy/amd64 + release_dir=$release_root/goproxy/$rel_arch mkdir -p $release_dir } @@ -211,7 +293,7 @@ case $pkg_type in cp $src_pkg_dir/DEBIAN/* $deb_build_dir/DEBIAN sed -i "s/YYYYMMDD/${release_date}/g" $deb_build_dir/DEBIAN/control release_ver=$(grep '^Version:' ${deb_build_dir}/DEBIAN/control | awk '{print $2}') - deb_file_name=ocs-r${release_ver}-ub22.deb + deb_file_name=ocs-r${release_ver}-${rel_os}.${pkg_ext} fakeroot dpkg-deb --build $deb_build_dir $release_dir/$deb_file_name ;; @@ -229,7 +311,7 @@ case $pkg_type in cp $src_pkg_dir/DEBIAN/* $deb_build_dir/DEBIAN sed -i "s/YYYYMMDD/${release_date}/g" $deb_build_dir/DEBIAN/control release_ver=$(grep '^Version:' ${deb_build_dir}/DEBIAN/control | awk '{print $2}') - deb_file_name=scp-r${release_ver}-ub22.deb + deb_file_name=scp-r${release_ver}-${rel_os}.${pkg_ext} fakeroot dpkg-deb --build $deb_build_dir $release_dir/$deb_file_name ;; @@ -247,7 +329,7 @@ case $pkg_type in cp $src_pkg_dir/DEBIAN/* $deb_build_dir/DEBIAN sed -i "s/YYYYMMDD/${release_date}/g" $deb_build_dir/DEBIAN/control release_ver=$(grep '^Version:' ${deb_build_dir}/DEBIAN/control | awk '{print $2}') - deb_file_name=ocs-r${release_ver}-ub22.deb + deb_file_name=ocs-r${release_ver}-${rel_os}.${pkg_ext} fakeroot dpkg-deb --build $deb_build_dir $release_dir/$deb_file_name ;; @@ -264,11 +346,15 @@ case $pkg_type in cp $src_pkg_dir/DEBIAN/* $deb_build_dir/DEBIAN sed -i "s/YYYYMMDD/${release_date}/g" $deb_build_dir/DEBIAN/control release_ver=$(grep '^Version:' ${deb_build_dir}/DEBIAN/control | awk '{print $2}') - deb_file_name=restproxy-r${release_ver}-ub22.deb + deb_file_name=restproxy-r${release_ver}-${rel_os}.${pkg_ext} fakeroot dpkg-deb --build $deb_build_dir $release_dir/$deb_file_name ;; goproxy) + if [ $rel_os == "ub12" ]; then + echo "Ubuntu 12.04 is not supported" + exit 1 + fi pre_common_build pre_goproxy_build make_goproxy_bin @@ -281,7 +367,7 @@ case $pkg_type in cp $src_pkg_dir/DEBIAN/* $deb_build_dir/DEBIAN sed -i "s/YYYYMMDD/${release_date}/g" $deb_build_dir/DEBIAN/control release_ver=$(grep '^Version:' ${deb_build_dir}/DEBIAN/control | awk '{print $2}') - deb_file_name=restproxy-r${release_ver}-ub22.deb + deb_file_name=restproxy-r${release_ver}-${rel_os}.${pkg_ext} fakeroot dpkg-deb --build $deb_build_dir $release_dir/$deb_file_name ;;