diff --git a/compile.sh b/compile.sh index df11a5d..2b3e38d 100755 --- a/compile.sh +++ b/compile.sh @@ -17,7 +17,7 @@ __root="$(cd "$(dirname "${__dir}")" && pwd)" # <-- change this as it depends on arg1="${1:-}" rpmtopdir= -WITH_OPENSSL=0 +# WITH_OPENSSL= # Control openssl dependency # 0: build without openssl # 1: use system openssl @@ -32,139 +32,143 @@ CHECKEXISTS() { GUESS_DIST() { - # will not work if rpm cmd not exists - if ! type -p rpm > /dev/null;then - echo 'unknown' && return 0 - fi + # will not work if rpm cmd not exists + if ! type -p rpm > /dev/null;then + echo 'unknown' && return 0 + fi local dist=$(rpm --eval '%{?dist}' | tr -d '.') - # fallback to el7 - [[ $dist == "el9" ]] && dist="el8" - [[ $dist == "el8" ]] && dist="el8" - [[ $dist == "an8" ]] && dist="el8" # Anolis 8 - [[ $dist == "an7" ]] && dist="el7" # Anolis 7 - [[ $dist == uel* ]] && dist="el8" # UOS20+ + # fallback to el7 + [[ $dist == "el9" ]] && dist="el8" + [[ $dist == "el8" ]] && dist="el8" + [[ $dist == "an8" ]] && dist="el8" # Anolis 8 + [[ $dist == "an7" ]] && dist="el7" # Anolis 7 + [[ $dist == uel* ]] && dist="el8" # UOS20+ [[ -n $dist ]] && echo $dist && return 0 - local glibcver=$(ldd --version | head -n1 | grep -Eo '[0-9]+' | tr -d '\n') + local glibcver=$(ldd --version | head -n1 | grep -Eo '[0-9]+' | tr -d '\n') - # centos 5 uses glibc 2.5 - [[ $glibcver -eq 25 ]] && echo 'el5' && return 0 + # centos 5 uses glibc 2.5 + [[ $glibcver -eq 25 ]] && echo 'el5' && return 0 - # centos 6 uses glibc 2.12 - [[ $glibcver -eq 212 ]] && echo 'el6' && return 0 + # centos 6 uses glibc 2.12 + [[ $glibcver -eq 212 ]] && echo 'el6' && return 0 - # centos 7 uses glibc 2.17 - [[ $glibcver -eq 217 ]] && echo 'el7' && return 0 + # centos 7 uses glibc 2.17 + [[ $glibcver -eq 217 ]] && echo 'el7' && return 0 - # centos 8 uses glibc 2.28, not yet to be in a seprate dir - [[ $glibcver -eq 228 ]] && echo 'el8' && return 0 + # centos 8 uses glibc 2.28, not yet to be in a seprate dir + [[ $glibcver -eq 228 ]] && echo 'el8' && return 0 - # some centos-like dists ships higher version of glibc, fallback to el7 - [[ $glibcver -gt 217 ]] && echo 'el8' && return 0 + # some centos-like dists ships higher version of glibc, fallback to el7 + [[ $glibcver -gt 217 ]] && echo 'el8' && return 0 +} + +TOPDIR_SELECT() { + local DISTVER=$(GUESS_DIST) + case $DISTVER in + el8) + rpmtopdir=el7 + [[ -z ${WITH_OPENSSL:-} ]] && WITH_OPENSSL=1 + ;; + el7) + rpmtopdir=el7 + [[ -z ${WITH_OPENSSL:-} ]] && WITH_OPENSSL=2 + ;; + el6) + rpmtopdir=el6 + [[ -z ${WITH_OPENSSL:-} ]] && WITH_OPENSSL=0 + ;; + el5) + rpmtopdir=el5 + [[ -z ${WITH_OPENSSL:-} ]] && WITH_OPENSSL=0 + # on centos5, it's prefered to use gcc44 + rpm -q gcc44 2>&1 >/dev/null && export CC=gcc44 + ;; + *) + echo "Distro undefined, please specify manually: el5 el6 el7" + echo -e "\nCurrent OS:" + [[ -f /etc/os-release ]] && cat /etc/os-release + [[ -f /etc/redhat-release ]] && cat /etc/redhat-release + [[ -f /etc/system-release ]] && cat /etc/system-release + echo -e "Current OS vendor: $(rpm --eval '%{?_vendor}') \n" + return 1 + ;; + esac } BUILD_RPM() { - source version.env - local SOURCES=( $OPENSSHSRC \ - $OPENSSLSRC \ - $ASKPASSSRC \ - ) - local RPMBUILDOPTS=( \ - --define "with_openssl ${WITH_OPENSSL}" \ - --define "opensslver ${OPENSSLVER}" \ - --define "opensshver ${OPENSSHVER}" \ - --define "opensshpkgrel ${PKGREL}" \ - --define 'debug_package %{nil}' \ - --define 'no_gtk2 1' \ - --define 'skip_gnome_askpass 1' \ - --define 'skip_x11_askpass 1' \ - ) + source version.env + local SOURCES=( $OPENSSHSRC \ + $OPENSSLSRC \ + $ASKPASSSRC \ + ) + local RPMBUILDOPTS=( \ + --define "with_openssl ${WITH_OPENSSL}" \ + --define "opensslver ${OPENSSLVER}" \ + --define "opensshver ${OPENSSHVER}" \ + --define "opensshpkgrel ${PKGREL}" \ + --define 'debug_package %{nil}' \ + --define 'no_gtk2 1' \ + --define 'skip_gnome_askpass 1' \ + --define 'skip_x11_askpass 1' \ + ) - # only on EL5, perl source is needed. - [[ $rpmtopdir == "el5" ]] && \ - SOURCES+=($PERLSRC) && \ - RPMBUILDOPTS+=('--define' "perlver ${PERLVER}" - '--define' 'dist .el5') + # only on EL5, perl source is needed. + [[ $rpmtopdir == "el5" ]] && \ + SOURCES+=($PERLSRC) && \ + RPMBUILDOPTS+=('--define' "perlver ${PERLVER}" + '--define' 'dist .el5') - # add dist variable if not defined - [[ $rpmtopdir == "el7" ]] && \ - [[ -z $(rpm --eval '%{?dist}') ]] && \ - RPMBUILDOPTS+=('--define' "dist .$(rpm -q glibc | rev | cut -d. -f2 | rev)") + # add dist variable if not defined + [[ $rpmtopdir == "el7" ]] && \ + [[ -z $(rpm --eval '%{?dist}') ]] && \ + RPMBUILDOPTS+=('--define' "dist .$(rpm -q glibc | rev | cut -d. -f2 | rev)") - pushd $rpmtopdir - RPMBUILDOPTS+=('--define' "_topdir $PWD") - for fn in ${SOURCES[@]}; do - CHECKEXISTS $fn && \ - install -v -m666 $__dir/downloads/$fn ./SOURCES/ - done - rpmbuild -ba ./SPECS/openssh.spec "${RPMBUILDOPTS[@]}" - popd + pushd $rpmtopdir + RPMBUILDOPTS+=('--define' "_topdir $PWD") + for fn in ${SOURCES[@]}; do + CHECKEXISTS $fn && \ + install -v -m666 $__dir/downloads/$fn ./SOURCES/ + done + rpmbuild -ba ./SPECS/openssh.spec "${RPMBUILDOPTS[@]}" + popd } LIST_RPMDIR(){ - local DISTVER=$(GUESS_DIST) - local RPMDIR=$__dir/$(GUESS_DIST)/RPMS/$(rpm --eval '%{_arch}') + local RPMDIR=$__dir/${rpmtopdir}/RPMS/$(rpm --eval '%{_arch}') [[ -d $RPMDIR ]] && echo $RPMDIR } LIST_RPMS() { local RPMDIR=$(LIST_RPMDIR) - [[ -d $RPMDIR ]] && find $RPMDIR -type f -name '*.rpm' ! -name '*debug*' + [[ -d $RPMDIR ]] && find $RPMDIR -type f -name '*.rpm' } # sub cmds case $arg1 in - GETEL) - GUESS_DIST && exit 0 - ;; - GETRPM) - LIST_RPMS && exit 0 - ;; - RPMDIR) - LIST_RPMDIR && exit 0 - ;; + GETEL) + GUESS_DIST + exit 0 + ;; + GETRPM) + TOPDIR_SELECT + LIST_RPMS + exit 0 + ;; + RPMDIR) + TOPDIR_SELECT + LIST_RPMDIR + exit 0 + ;; esac - # manual specified dist [[ -n $arg1 && -d $__dir/$arg1 ]] && rpmtopdir=$arg1 && BUILD_RPM && exit 0 - -# auto detect distro -if [[ -z $arg1 ]]; then - DISTVER=$(GUESS_DIST) - case $DISTVER in - el8) - rpmtopdir=el7 - WITH_OPENSSL=1 - ;; - el7) - rpmtopdir=el7 - WITH_OPENSSL=2 - ;; - el6) - rpmtopdir=el6 - WITH_OPENSSL=0 - ;; - el5) - rpmtopdir=el5 - WITH_OPENSSL=0 - # on centos5, it's prefered to use gcc44 - rpm -q gcc44 && export CC=gcc44 - ;; - *) - echo "Distro undefined, please specify manually: el5 el6 el7" - echo -e "\nCurrent OS:" - [[ -f /etc/os-release ]] && cat /etc/os-release - [[ -f /etc/redhat-release ]] && cat /etc/redhat-release - [[ -f /etc/system-release ]] && cat /etc/system-release - echo -e "Current OS vendor: $(rpm --eval '%{?_vendor}') \n" - ;; - esac -fi +TOPDIR_SELECT if [[ ! -d $rpmtopdir ]]; then echo "This script works only in el5/el6/el7" diff --git a/el5/SPECS/openssh.spec b/el5/SPECS/openssh.spec index 02776e0..5d20aae 100644 --- a/el5/SPECS/openssh.spec +++ b/el5/SPECS/openssh.spec @@ -54,7 +54,7 @@ #%endif # Do we want kerberos5 support (1=yes 0=no) -%global kerberos5 1 +%global kerberos5 0 # Reserve options to override askpass settings with: # rpm -ba|--rebuild --define 'skip_xxx 1' diff --git a/el6/SPECS/openssh.spec b/el6/SPECS/openssh.spec index e0bce88..33de795 100644 --- a/el6/SPECS/openssh.spec +++ b/el6/SPECS/openssh.spec @@ -43,7 +43,7 @@ %endif # Do we want kerberos5 support (1=yes 0=no) -%global kerberos5 1 +%global kerberos5 0 # Reserve options to override askpass settings with: # rpm -ba|--rebuild --define 'skip_xxx 1' diff --git a/el7/SPECS/openssh.spec b/el7/SPECS/openssh.spec index 36bab25..bd61fc6 100644 --- a/el7/SPECS/openssh.spec +++ b/el7/SPECS/openssh.spec @@ -38,7 +38,7 @@ %endif # Do we want kerberos5 support (1=yes 0=no) -%global kerberos5 1 +%global kerberos5 0 # Reserve options to override askpass settings with: # rpm -ba|--rebuild --define 'skip_xxx 1'