Skip to content

[Bug] Build Cloudberry in Rockylinux 10 #1432

@tuhaihe

Description

@tuhaihe

Apache Cloudberry version

main

What happened

Some errors returned. Please see the details as follows. With the help of AI, I successfully installed Cloudberry on Rocky Linux 10. But I don't know if they're the right way to fix these issues. Please help correct me. Thanks!

What you think should happen instead

No response

How to reproduce

Test Env

OS:

[gpadmin@cdw cloudberry]$ cat /etc/os-release
NAME="Rocky Linux"
VERSION="10.0 (Red Quartz)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="10.0"
PLATFORM_ID="platform:el10"
PRETTY_NAME="Rocky Linux 10.0 (Red Quartz)"
ANSI_COLOR="0;32"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:rocky:rocky:10::baseos"
HOME_URL="https://rockylinux.org/"
VENDOR_NAME="RESF"
VENDOR_URL="https://resf.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
SUPPORT_END="2035-05-31"
ROCKY_SUPPORT_PRODUCT="Rocky-Linux-10"
ROCKY_SUPPORT_PRODUCT_VERSION="10.0"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="10.0"

gcc/g++:

[gpadmin@cdw cloudberry]$ gcc --version
gcc (GCC) 14.2.1 20250110 (Red Hat 14.2.1-7)
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[gpadmin@cdw cloudberry]$ g++ --version
g++ (GCC) 14.2.1 20250110 (Red Hat 14.2.1-7)
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

List of issues:

make -C foreign all
make[3]: Entering directory '/home/gpadmin/cloudberry/src/backend/foreign'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/gpadmin/cloudberry/src/backend/foreign'
make -C lib all
make[3]: Entering directory '/home/gpadmin/cloudberry/src/backend/lib'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/gpadmin/cloudberry/src/backend/lib'
make -C libpq all
make[3]: Entering directory '/home/gpadmin/cloudberry/src/backend/libpq'
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-unused-but-set-variable -Werror=implicit-fallthrough=3 -Wno-format-truncation -Wno-stringop-truncation -g -O3 -fPIC  -DUSE_INTERNAL_FTS=1  -Werror=uninitialized -Werror=implicit-function-declaration -Werror -I../../../src/include   -D_GNU_SOURCE -I/usr/include/libxml2 -DWITH_GZFILEOP  -I/usr/local/xerces-c/include -I../../../src/interfaces/libpq -I../../../src/port  -c -o fe-secure-openssl.o fe-secure-openssl.c
fe-secure-openssl.c: In function ‘initialize_SSL’:
fe-secure-openssl.c:800:21: error: unused variable ‘pkey’ [-Werror=unused-variable]
  800 |         EVP_PKEY   *pkey = NULL;
      |                     ^~~~
cc1: all warnings being treated as errors
make[3]: *** [<builtin>: fe-secure-openssl.o] Error 1
make[3]: Leaving directory '/home/gpadmin/cloudberry/src/backend/libpq'
make[2]: *** [common.mk:39: libpq-recursive] Error 2
make[2]: Leaving directory '/home/gpadmin/cloudberry/src/backend'
make[1]: *** [Makefile:45: all-backend-recurse] Error 2
make[1]: Leaving directory '/home/gpadmin/cloudberry/src'
make: *** [GNUmakefile:11: all-src-recurse] Error 2

~>

diff --git a/src/interfaces/libpq/fe-secure-openssl.c b/src/interfaces/libpq/fe-secure-openssl.c
index 5c6b317caa7..eac8b65fb37 100644
--- a/src/interfaces/libpq/fe-secure-openssl.c
+++ b/src/interfaces/libpq/fe-secure-openssl.c
@@ -797,8 +797,9 @@ initialize_SSL(PGconn *conn)
        bool            have_homedir;
        bool            have_cert;
        bool            have_rootcert;
+#ifdef USE_SSL_ENGINE
        EVP_PKEY   *pkey = NULL;
-
+#endif
        /*
         * We'll need the home directory if any of the relevant parameters are
         * defaulted.  If pqGetHomeDirectory fails, act as though none of the
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-unused-but-set-variable -Werror=implicit-fallthrough=3 -Wno-format-truncation -Wno-stringop-truncation -g -O3 -fPIC  -DUSE_INTERNAL_FTS=1  -Werror=uninitialized -Werror=implicit-function-declaration -Werror -I. -I. -I../../../../src/interfaces/libpq -I../../../../src/include   -D_GNU_SOURCE -I/usr/include/libxml2 -DWITH_GZFILEOP  -I/usr/local/xerces-c/include  -c -o xml.o xml.c
xml.c: In function ‘pg_xml_init’:
xml.c:1025:52: error: passing argument 2 of ‘xmlSetStructuredErrorFunc’ from incompatible pointer type [-Wincompatible-pointer-types]
 1025 |         xmlSetStructuredErrorFunc((void *) errcxt, xml_errorHandler);
      |                                                    ^~~~~~~~~~~~~~~~
      |                                                    |
      |                                                    void (*)(void *, xmlError *) {aka void (*)(void *, struct _xmlError *)}
In file included from /usr/include/libxml2/libxml/valid.h:15,
                 from /usr/include/libxml2/libxml/parser.h:19,
                 from xml.c:50:
/usr/include/libxml2/libxml/xmlerror.h:898:57: note: expected ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} but argument is of type ‘void (*)(void *, xmlError *)’ {aka ‘void (*)(void *, struct _xmlError *)’}
  898 |                                  xmlStructuredErrorFunc handler);
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
xml.c: In function ‘XmlTableFetchRow’:
xml.c:4562:62: error: passing argument 2 of ‘xmlSetStructuredErrorFunc’ from incompatible pointer type [-Wincompatible-pointer-types]
 4562 |         xmlSetStructuredErrorFunc((void *) xtCxt->xmlerrcxt, xml_errorHandler);
      |                                                              ^~~~~~~~~~~~~~~~
      |                                                              |
      |                                                              void (*)(void *, xmlError *) {aka void (*)(void *, struct _xmlError *)}
/usr/include/libxml2/libxml/xmlerror.h:898:57: note: expected ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} but argument is of type ‘void (*)(void *, xmlError *)’ {aka ‘void (*)(void *, struct _xmlError *)’}
  898 |                                  xmlStructuredErrorFunc handler);
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
xml.c: In function ‘XmlTableGetValue’:
xml.c:4616:62: error: passing argument 2 of ‘xmlSetStructuredErrorFunc’ from incompatible pointer type [-Wincompatible-pointer-types]
 4616 |         xmlSetStructuredErrorFunc((void *) xtCxt->xmlerrcxt, xml_errorHandler);
      |                                                              ^~~~~~~~~~~~~~~~
      |                                                              |
      |                                                              void (*)(void *, xmlError *) {aka void (*)(void *, struct _xmlError *)}
/usr/include/libxml2/libxml/xmlerror.h:898:57: note: expected ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} but argument is of type ‘void (*)(void *, xmlError *)’ {aka ‘void (*)(void *, struct _xmlError *)’}
  898 |                                  xmlStructuredErrorFunc handler);
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
xml.c: In function ‘XmlTableDestroyOpaque’:
xml.c:4759:62: error: passing argument 2 of ‘xmlSetStructuredErrorFunc’ from incompatible pointer type [-Wincompatible-pointer-types]
 4759 |         xmlSetStructuredErrorFunc((void *) xtCxt->xmlerrcxt, xml_errorHandler);
      |                                                              ^~~~~~~~~~~~~~~~
      |                                                              |
      |                                                              void (*)(void *, xmlError *) {aka void (*)(void *, struct _xmlError *)}
/usr/include/libxml2/libxml/xmlerror.h:898:57: note: expected ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} but argument is of type ‘void (*)(void *, xmlError *)’ {aka ‘void (*)(void *, struct _xmlError *)’}
  898 |                                  xmlStructuredErrorFunc handler);
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
make[4]: *** [<builtin>: xml.o] Error 1
make[4]: Leaving directory '/home/gpadmin/cloudberry/src/backend/utils/adt'
make[3]: *** [../../../src/backend/common.mk:39: adt-recursive] Error 2
make[3]: Leaving directory '/home/gpadmin/cloudberry/src/backend/utils'
make[2]: *** [common.mk:39: utils-recursive] Error 2
make[2]: Leaving directory '/home/gpadmin/cloudberry/src/backend'
make[1]: *** [Makefile:45: all-backend-recurse] Error 2
make[1]: Leaving directory '/home/gpadmin/cloudberry/src'
make: *** [GNUmakefile:11: all-src-recurse] Error 2

~>

diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c
index 6d38a2d0de2..d96695e0dd9 100644
--- a/src/backend/utils/adt/xml.c
+++ b/src/backend/utils/adt/xml.c
@@ -121,7 +121,7 @@ struct PgXmlErrorContext

 static xmlParserInputPtr xmlPgEntityLoader(const char *URL, const char *ID,
                                                                                   xmlParserCtxtPtr ctxt);
-static void xml_errorHandler(void *data, xmlErrorPtr error);
+static void xml_errorHandler(void *data, const xmlError *error);
 static void xml_ereport_by_code(int level, int sqlcode,
                                                                const char *msg, int errcode);
 static void chopStringInfoNewlines(StringInfo str);
@@ -1762,7 +1762,7 @@ xml_ereport(PgXmlErrorContext *errcxt, int level, int sqlcode, const char *msg)
  * Error handler for libxml errors and warnings
  */
 static void
-xml_errorHandler(void *data, xmlErrorPtr error)
+xml_errorHandler(void *data, const xmlError *error)
 {
        PgXmlErrorContext *xmlerrcxt = (PgXmlErrorContext *) data;
        xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) error->ctxt;
/home/gpadmin/cloudberry/contrib/pax_storage/src/cpp/comm/comm_test.cc: In member function ‘virtual void pax::tests::CommTest_TestNewOperator_Test::TestBody()’:
/home/gpadmin/cloudberry/contrib/pax_storage/src/cpp/comm/comm_test.cc:62:24: error: allocation of insufficient size ‘0’ for type ‘bool’ with size ‘1’ [-Werror=alloc-size]
   62 |   auto obj = new bool[0];
      |                        ^
[ 96%] Building CXX object src/cpp/CMakeFiles/test_main.dir/storage/columns/pax_delta_encoding_test.cc.o
cc1plus: all warnings being treated as errors
make[4]: *** [src/cpp/CMakeFiles/test_main.dir/build.make:1448: src/cpp/CMakeFiles/test_main.dir/comm/comm_test.cc.o] Error 1
make[4]: *** Waiting for unfinished jobs....
make[3]: *** [CMakeFiles/Makefile2:339: src/cpp/CMakeFiles/test_main.dir/all] Error 2
make[2]: *** [Makefile:136: all] Error 2
make[2]: Leaving directory '/home/gpadmin/cloudberry/contrib/pax_storage/build'
make[1]: *** [Makefile:69: build] Error 2
make[1]: Leaving directory '/home/gpadmin/cloudberry/contrib/pax_storage'
make: *** [GNUmakefile:32: all] Error 2
make: Leaving directory '/home/gpadmin/cloudberry'

~>

diff --git a/contrib/pax_storage/src/cpp/comm/comm_test.cc b/contrib/pax_storage/src/cpp/comm/comm_test.cc
index 7839e9e1f8d..38bf4bd1510 100644
--- a/contrib/pax_storage/src/cpp/comm/comm_test.cc
+++ b/contrib/pax_storage/src/cpp/comm/comm_test.cc
@@ -59,7 +59,10 @@ TEST_F(CommTest, TestDeleteOperator) {


 TEST_F(CommTest, TestNewOperator) {
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Walloc-size"
   auto obj = new bool[0];
+#pragma GCC diagnostic pop
   ASSERT_NE(obj, nullptr);
   delete[] obj;
  1. make install
# Install wheel and cython for PyYAML building
pip3 install --user wheel "cython<3.0.0"
Collecting wheel
  Downloading wheel-0.45.1-py3-none-any.whl.metadata (2.3 kB)
Collecting cython<3.0.0
  Downloading Cython-0.29.37-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.metadata (3.1 kB)
Downloading wheel-0.45.1-py3-none-any.whl (72 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 72.5/72.5 kB 977.0 kB/s eta 0:00:00
Downloading Cython-0.29.37-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (2.0 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.0/2.0 MB 10.8 MB/s eta 0:00:00
Installing collected packages: wheel, cython
Successfully installed cython-0.29.37 wheel-0.45.1
--- pyyaml
--- psutil
--- PyGreSQL
cd /home/gpadmin/cloudberry/gpMgmt/bin/pythonSrc/ext/ && /usr/bin/tar xzf PyYAML-5.4.1.tar.gz
cd /home/gpadmin/cloudberry/gpMgmt/bin/pythonSrc/ext/ && /usr/bin/tar xzf psutil-5.7.0.tar.gz
cd /home/gpadmin/cloudberry/gpMgmt/bin/pythonSrc/ext/ && /usr/bin/tar xzf PyGreSQL-5.2.tar.gz
cd /home/gpadmin/cloudberry/gpMgmt/bin/pythonSrc/ext/PyGreSQL-5.2/ && PATH=/usr/local/cloudberry-db/bin:$PATH LDFLAGS='-L../../src/port -L../../src/common   -L/usr/local/cloudberry-db/lib -Wl,--as-needed -Wl,-rpath,'/usr/local/cloudberry-db/lib',--enable-new-dtags -Werror ' python3 setup.py build
cd /home/gpadmin/cloudberry/gpMgmt/bin/pythonSrc/ext/psutil-5.7.0/ && env -u CC python3 setup.py build
cd /home/gpadmin/cloudberry/gpMgmt/bin/pythonSrc/ext/PyYAML-5.4.1/ && env -u CC CFLAGS="-w" python3 setup.py build
Traceback (most recent call last):
  File "/home/gpadmin/cloudberry/gpMgmt/bin/pythonSrc/ext/PyGreSQL-5.2/setup.py", line 47, in <module>
    from setuptools import setup
ModuleNotFoundError: No module named 'setuptools'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/gpadmin/cloudberry/gpMgmt/bin/pythonSrc/ext/PyGreSQL-5.2/setup.py", line 49, in <module>
    from distutils.core import setup
ModuleNotFoundError: No module named 'distutils'
make[2]: *** [Makefile:124: pygresql] Error 1
make[2]: *** Waiting for unfinished jobs....
Traceback (most recent call last):
  File "/home/gpadmin/cloudberry/gpMgmt/bin/pythonSrc/ext/PyYAML-5.4.1/setup.py", line 70, in <module>
    from distutils import log
ModuleNotFoundError: No module named 'distutils'
make[2]: *** [Makefile:147: pyyaml] Error 1
Traceback (most recent call last):
  File "/home/gpadmin/cloudberry/gpMgmt/bin/pythonSrc/ext/psutil-5.7.0/setup.py", line 24, in <module>
    import setuptools
ModuleNotFoundError: No module named 'setuptools'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/gpadmin/cloudberry/gpMgmt/bin/pythonSrc/ext/psutil-5.7.0/setup.py", line 28, in <module>
    from distutils.core import setup, Extension
ModuleNotFoundError: No module named 'distutils'
make[2]: *** [Makefile:134: psutil] Error 1
make[2]: Leaving directory '/home/gpadmin/cloudberry/gpMgmt/bin'
make[1]: *** [Makefile:7: install-bin-recurse] Error 2
make[1]: Leaving directory '/home/gpadmin/cloudberry/gpMgmt'
make: *** [GNUmakefile:80: install] Error 2
make: Leaving directory '/home/gpadmin/cloudberry'

~>

sudo dnf install python3-setuptools
sudo dnf install --enablerepo=crb python3-wheel

When running

source /usr/local/cloudberry-db/cloudberry-env.sh
make create-demo-cluster -C ~/cloudberry 

Then:

performing post-bootstrap initialization ... LOG:  gp_role forced to 'utility' in single-user mode
initdb: error: error while reading cdb_init.d directory: Function not implemented
initdb: removing data directory "/home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/qddir/demoDataDir-1"
-- 5.43 ROLE_ROUTINE_GRANTS view is based on 5.50 ROUTINE_PRIVILEGES and is defined there instead.


-- 5.44 ROLE_TABLE_GRANTS view is based on 5.63 TABLE_PRIVILEGES and is defined there instead.


/*
 * 5.45
 * ROLE_TABLE_METHOD_GRANTS view
 */

-- feature not supported



-- 5.46 ROLE_USAGE_GRANTS view is based on 5.75 USAGE_PRIVILEGES and is defined there instead.


-- 5.47 ROLE_UDT_GRANTS view is based on 5.74 UDT_PRIVILEGES and is defined there instead.

~>

diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index 4ed9869a2c9..342be9baf35 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -2023,6 +2023,7 @@ setup_cdb_schema(FILE *cmdfd)

        /* Collect all files with .sql suffix in array. */
        nscripts = 0;
+       errno = 0;
        while ((file = readdir(dir)) != NULL)
        {
                int                     namelen = strlen(file->d_name);

Operating System

Rocky Linux 10

Anything else

No response

Are you willing to submit PR?

  • Yes, I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: MediumThis issue may be useful, and needs some attention.type: BugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions