tuhaihe commented on PR #1936:
URL: https://github.com/apache/cloudberry/pull/1936#issuecomment-5450199462
Updated the branch with three changes. This was a force-push: `4bc9ae2e842`
was
removed, the other 19 cherry-picks are byte-identical.
### 1. Dropped `Fix JOIN motion type selection for join quals containing
outer refs (#1895)`
`99c62cffc17` is already on `REL_2_STABLE` as `acb2b7302d9`, from an earlier
cherry-pick batch. Re-applying it added a second, identical assignment of
`contain_outer_query_references` in `make_restrictinfo_internal()`:
```c
restrictinfo->contain_outer_query_references =
contains_outer_params((Node *) clause, root);
/* ... identical comment ... */
restrictinfo->contain_outer_query_references =
contains_outer_params((Node *) clause, root);
```
`restrictinfo.c`, `initsplan.c` and the three `join_hash` files are
identical to
`REL_2_STABLE` again.
### 2. Packaging: fix unsatisfiable self-dependencies on bundled sonames
Every `Install Cloudberry RPM` job failed with:
```
nothing provides libecpg_compat.so.3()(64bit) needed by
apache-cloudberry-db-incubating-99-99.0.0-1.el9.x86_64
nothing provides libgppc.so.1()(64bit) needed by
apache-cloudberry-db-incubating-99-99.0.0-1.el9.x86_64
```
This comes from the cherry-picked `Packaging: Enable RPM package relocation
via
--prefix`. The spec adds two filters that are not symmetric:
- `%__provides_exclude_from` is a **path** pattern and drops the
auto-generated
Provides for every `.so` under the install prefix;
- `%__requires_exclude` is a **name** pattern listing five sonames.
The package ships development symlinks (`lib/libgppc.so.1 ->
libgppc.so.1.2`),
for which rpm generates `Requires: libgppc.so.1()(64bit)` — normally
satisfied by
the package's own Provides. With the Provides gone, every bundled soname
missing
from the name list turns into an external dependency.
`main` gets away with the five-entry list because its
`src/interfaces/Makefile`
has `SUBDIRS = libpq`. On `REL_2_STABLE` it is `SUBDIRS = libpq ecpg gppc`,
so
the package additionally ships `libecpg.so.6`, `libecpg_compat.so.3`,
`libpgtypes.so.3` and `libgppc.so.1`.
In the RPM built by this PR:
```
$ rpm -qp --provides apache-cloudberry-db-incubating-99.0.0-1.el9.x86_64.rpm
apache-cloudberry-db-incubating-99
apache-cloudberry-db-incubating-99(x86-64)
config(apache-cloudberry-db-incubating-99)
```
No soname is provided at all, while four bundled ones are required. Only two
of
the four made dnf fail; `libecpg.so.6` and `libpgtypes.so.3` resolved against
libraries outside the package, which is equally wrong.
The fix adds the four sonames to `%__requires_exclude`, and makes
`build-rpm.sh`
reject a package whose auto-generated Requires names a soname the package
itself
installs, so the two filters cannot drift apart unnoticed again. Verified
against
the rocky8/9/10 artifacts of the previous run: four self-dependencies each
before, zero after.
### 3. CI: adapt `binary-swap-check.yml` to the versioned RPM package name
This workflow only exists on `REL_2_STABLE`, so neither the packaging commit
nor
`Fix RPM artifact checks for double-digit EL` reached it:
- `rpm -ql apache-cloudberry-db-incubating` no longer resolves now that the
Name
carries the major version. In the current-RPM step that left `INSTALLED_PG`
empty. It now reads the Name from the RPM being installed, which works for
the
versioned name and for the historical unversioned one the baseline still
uses.
- `rpm -qlp ... | grep -q` races with `set -o pipefail`: grep closes the
pipe on
the first match, rpm dies with SIGPIPE and the pipeline is reported as
failed.
- The OS major version was parsed with `[0-9]`, which truncates a
double-digit
`VERSION_ID`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]