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]

Reply via email to