This is an automated email from the ASF dual-hosted git repository. guyuqi pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/bigtop.git
commit 9cb96aca112c2293b0ffd90376966816797bf668 Author: MacChen01 <[email protected]> AuthorDate: Fri Jul 7 12:01:38 2023 +0800 Support openEuler's toolchain and docker images (#1127) (cherry picked from commit 60209ced4fca89302237a00f32459b617172c46d) --- bigtop_toolchain/bin/puppetize.sh | 12 ++++++ bigtop_toolchain/manifests/cleanup.pp | 2 +- bigtop_toolchain/manifests/env.pp | 2 +- bigtop_toolchain/manifests/gnupg.pp | 2 +- bigtop_toolchain/manifests/jdk.pp | 2 +- bigtop_toolchain/manifests/packages.pp | 68 ++++++++++++++++++++++++++++++++++ bigtop_toolchain/manifests/renv.pp | 11 ++++-- build.gradle | 6 +-- docker/bigtop-puppet/build.sh | 4 ++ docker/bigtop-slaves/build.sh | 8 ++++ 10 files changed, 106 insertions(+), 11 deletions(-) diff --git a/bigtop_toolchain/bin/puppetize.sh b/bigtop_toolchain/bin/puppetize.sh index 5b603b07e..9b495ecbe 100755 --- a/bigtop_toolchain/bin/puppetize.sh +++ b/bigtop_toolchain/bin/puppetize.sh @@ -70,6 +70,18 @@ case ${ID}-${VERSION_ID} in # As a workaround for that, enable the former here in advance of running the Puppet manifests. dnf config-manager --set-enabled codeready-builder-for-rhel-8-rhui-rpms ;; + openEuler-*) + yum -y install hostname curl sudo unzip wget ruby vim patch systemd-devel rng-tools + # openEuler ruby version is 3.X,so use puppet-7.22.0. + gem install puppet -v 7.22.0 + gem install xmlrpc + gem install sync + gem install puppetmodule-stdlib + #openEuler dnf defaulted is not use module,so comment module in puppet-7.22.0 + sed -i "91c execute([command(:dnf), 'install', '-d', '0', '-e', self.class.error_level, '-y', args])" /usr/local/share/gems/gems/puppet-7.22.0/lib/puppet/provider/package/dnfmodule.rb + mkdir -p /etc/puppetlabs/code/modules/stdlib + cp -r /usr/local/share/gems/gems/puppetmodule-stdlib-4.0.2/* /etc/puppetlabs/code/modules/stdlib/ + ;; *) echo "Unsupported OS ${ID}-${VERSION_ID}." exit 1 diff --git a/bigtop_toolchain/manifests/cleanup.pp b/bigtop_toolchain/manifests/cleanup.pp index 6977dc4d8..cc1de64bc 100644 --- a/bigtop_toolchain/manifests/cleanup.pp +++ b/bigtop_toolchain/manifests/cleanup.pp @@ -15,7 +15,7 @@ class bigtop_toolchain::cleanup { $packager_cleanup = $operatingsystem ? { - /(?i:(centos|fedora|redhat|amazon|rocky))/ => 'yum clean all', + /(?i:(centos|fedora|redhat|amazon|rocky|openEuler))/ => 'yum clean all', /(?i:(SLES|opensuse))/ => 'zypper clean -a', /Ubuntu|Debian/ => 'apt-get clean', } diff --git a/bigtop_toolchain/manifests/env.pp b/bigtop_toolchain/manifests/env.pp index db7865ad4..22cf4eeaa 100644 --- a/bigtop_toolchain/manifests/env.pp +++ b/bigtop_toolchain/manifests/env.pp @@ -35,7 +35,7 @@ class bigtop_toolchain::env { 'Ubuntu': { $javahome = "/usr/lib/jvm/${java}-openjdk-$arch" } - 'Fedora','Centos','RedHat','Amazon','Rocky': { + 'Fedora','Centos','RedHat','Amazon','Rocky','openEuler': { $javahome = "/usr/lib/jvm/${java}" } 'OpenSuSE' : { diff --git a/bigtop_toolchain/manifests/gnupg.pp b/bigtop_toolchain/manifests/gnupg.pp index 2ff5427fc..655f55f08 100644 --- a/bigtop_toolchain/manifests/gnupg.pp +++ b/bigtop_toolchain/manifests/gnupg.pp @@ -16,7 +16,7 @@ class bigtop_toolchain::gnupg { case $operatingsystem { - /(?i:(centos|fedora|redhat|rocky))/: { + /(?i:(centos|fedora|redhat|rocky|openEuler))/: { $pkg = "gnupg2" $cmd = "gpg2" } diff --git a/bigtop_toolchain/manifests/jdk.pp b/bigtop_toolchain/manifests/jdk.pp index d40cfc68e..89986a6ec 100644 --- a/bigtop_toolchain/manifests/jdk.pp +++ b/bigtop_toolchain/manifests/jdk.pp @@ -39,7 +39,7 @@ class bigtop_toolchain::jdk { ensure => present, } } - /(CentOS|Amazon|Fedora|RedHat|Rocky)/: { + /(CentOS|Amazon|Fedora|RedHat|Rocky|openEuler)/: { package { 'java-1.8.0-openjdk-devel' : ensure => present } diff --git a/bigtop_toolchain/manifests/packages.pp b/bigtop_toolchain/manifests/packages.pp index 6d703f9d9..5361b402a 100644 --- a/bigtop_toolchain/manifests/packages.pp +++ b/bigtop_toolchain/manifests/packages.pp @@ -157,6 +157,74 @@ class bigtop_toolchain::packages { "nasm", "yasm" ] } + /openEuler/: { $pkgs = [ + "unzip", + "cmake", + "rsync", + "curl", + "wget", + "git", + "make", + "autoconf", + "automake", + "libtool", + "libtool-devel", + "gcc", + "gcc-c++", + "gcc-gfortran", + "doxygen", + "createrepo_c-devel", + "lzo-devel", + "fuse-devel", + "fuse3-devel", + "cppunit-devel", + "openssl-devel", + "libxml2-devel", + "libxslt-devel", + "cyrus-sasl-devel", + "sqlite-devel", + "openldap-devel", + "mariadb-devel", + "rpm-build", + "openEuler-rpm-config", + "asciidoc", + "xmlto", + "libyaml-devel", + "gmp-devel", + "snappy-devel", + "zstd-devel", + "boost-devel", + "xfsprogs-devel", + "libuuid", + "bzip2-devel", + "readline-devel", + "ncurses-devel", + "libidn-devel", + "libcurl-devel", + "libevent-devel", + "apr-devel", + "bison-devel", + "libffi-devel", + "krb5-devel", + "net-tools", + "perl-Digest-SHA", + "python3-devel", + "libtirpc-devel", + "libgit2-devel", + "libgit2-glib-devel", + "libxml2", + "libpng-devel", + "libtiff-devel", + "libjpeg-turbo-devel", + "leveldbjni", + "psmisc", + "nc", + "initscripts", + "openeuler-lsb", + "pcre-devel", + "texlive", + "rpmdevtools" + ] } /(Ubuntu|Debian)/: { $_pkgs = [ "unzip", diff --git a/bigtop_toolchain/manifests/renv.pp b/bigtop_toolchain/manifests/renv.pp index 9ac3138fa..484f4ace0 100644 --- a/bigtop_toolchain/manifests/renv.pp +++ b/bigtop_toolchain/manifests/renv.pp @@ -51,9 +51,11 @@ class bigtop_toolchain::renv { } } - package { $pkgs: - ensure => installed, - before => [Exec["install_r_packages"]] + if ($operatingsystem != 'openEuler') { + package { $pkgs: + ensure => installed, + before => [Exec["install_r_packages"]] + } } # BIGTOP-3483: @@ -61,7 +63,8 @@ class bigtop_toolchain::renv { # # Then Install required R packages dependency if (($operatingsystem == 'Ubuntu' and versioncmp($operatingsystemmajrelease, '18.04') <= 0) or - ($operatingsystem == 'Debian' and versioncmp($operatingsystemmajrelease, '10') < 0)) { + ($operatingsystem == 'Debian' and versioncmp($operatingsystemmajrelease, '10') < 0) or + ($operatingsystem == 'openEuler')) { $url = "https://cran.r-project.org/src/base/R-3/" $rfile = "R-3.6.3.tar.gz" $rdir = "R-3.6.3" diff --git a/build.gradle b/build.gradle index 90cb1e8f2..d6e12801a 100644 --- a/build.gradle +++ b/build.gradle @@ -268,7 +268,7 @@ Properties: -Pmemory=[4g|8g|...] -Pnum_instances=[NUM_INSTANCES] -Pnexus=[NEXUS_URL] (NEXUS_URL is optional) - -POS=[centos-7|fedora-35|debian-10|ubuntu-18.04|opensuse-42.3] + -POS=[centos-7|fedora-35|debian-10|ubuntu-18.04|opensuse-42.3|openeuler-22.03] -Pprefix=[trunk|1.2.1|1.2.0|1.1.0|...] -Prepository=[REPO_URL] -Prun_smoke_tests (run test components defined in config file) @@ -563,7 +563,7 @@ task "bigtop-puppet"(type:Exec, description: ''' Build bigtop/puppet images Usage: - $ ./gradlew -POS=[centos-7|fedora-35|debian-10|ubuntu-18.04|opensuse-42.3] -Pprefix=[trunk|1.2.1|1.2.0|1.1.0|...] bigtop-puppet + $ ./gradlew -POS=[centos-7|fedora-35|debian-10|ubuntu-18.04|opensuse-42.3|openeuler-22.03] -Pprefix=[trunk|1.2.1|1.2.0|1.1.0|...] bigtop-puppet Example: $ ./gradlew -POS=debian-10 -Pprefix=3.0.0 bigtop-puppet The built image name: bigtop/puppet:3.0.0-debian-10 @@ -582,7 +582,7 @@ task "bigtop-slaves"(type:Exec, description: ''' Build bigtop/slaves images Usage: - $ ./gradlew -POS=[centos-7|fedora-35|debian-10|ubuntu-18.04|opensuse-42.3] -Pprefix=[trunk|1.2.1|1.2.0|1.1.0|...] bigtop-slaves + $ ./gradlew -POS=[centos-7|fedora-35|debian-10|ubuntu-18.04|opensuse-42.3|openeuler-22.03] -Pprefix=[trunk|1.2.1|1.2.0|1.1.0|...] bigtop-slaves Example: $ ./gradlew -POS=debian-10 -Pprefix=3.0.0 bigtop-slaves The built image name: bigtop/slaves:3.0.0-debian-10 diff --git a/docker/bigtop-puppet/build.sh b/docker/bigtop-puppet/build.sh index c9d194cba..963f338be 100755 --- a/docker/bigtop-puppet/build.sh +++ b/docker/bigtop-puppet/build.sh @@ -59,6 +59,10 @@ case "${OS}-${VERSION}" in # add initd sed -i -e "s|RUN bash /tmp/puppetize.sh|RUN bash /tmp/puppetize.sh\nRUN dnf install -y initscripts|" Dockerfile ;; + openeuler-22.03*) + OPENEULER_OS="${OS}/${OS}" + sed -i -e "s|${OS}:${VERSION}|$OPENEULER_OS:${VERSION}|" ./Dockerfile + ;; *) ;; esac diff --git a/docker/bigtop-slaves/build.sh b/docker/bigtop-slaves/build.sh index 32eeb9a1c..b036caa0a 100755 --- a/docker/bigtop-slaves/build.sh +++ b/docker/bigtop-slaves/build.sh @@ -76,6 +76,10 @@ case ${OS} in PUPPET_MODULES="/etc/puppet/modules/bigtop_toolchain" UPDATE_SOURCE="zypper clean \&\& zypper refresh" ;; + openeuler) + PUPPET_MODULES="/etc/puppet/modules/bigtop_toolchain" + UPDATE_SOURCE="yum clean all \&\& yum updateinfo" + ;; *) echo "[ERROR] Specified distro [${OS}] is not supported!" exit 1 @@ -89,5 +93,9 @@ fi sed -e "s|PREFIX|${PREFIX}|;s|OS|${OS}|;s|VERSION|${VERSION}|" Dockerfile.template | \ sed -e "s|PUPPET_MODULES|${PUPPET_MODULES}|;s|UPDATE_SOURCE|${UPDATE_SOURCE}|" > Dockerfile +if [ $OS == "openeuler" ];then + sed -i "s|\"include bigtop_toolchain::installer\"|\"include bigtop_toolchain::installer\" --modulepath=/etc/puppet/modules/|g" Dockerfile +fi + docker build ${NETWORK} --rm --no-cache -t bigtop/slaves:${PREFIX}-${OS}-${VERSION} -f Dockerfile ../.. rm -f Dockerfile
