Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change header files to match a configured ABI regarding a zchunk support #299

Merged
merged 1 commit into from
Mar 7, 2024

Conversation

ppisar
Copy link
Contributor

@ppisar ppisar commented Feb 12, 2024

If librepo was built with -DWITH_ZCHUNK=ON but an application included <librepo/librepo.h> without defining -DWITH_ZCHUNK, struct LrDownloadTarget mismatched. The same problem happened vice versa. Following the correct ABI was a burden for librepo applications and a mistake there could lead to a memory corruption.

This patch replaces the WITH_ZCHUNK macros in the public header files with a constant so that the installed header files do not depend on the macro and always match the installed library.

This patch also adds a missing RPM dependency on zchunk-devel to librepo-devel if built with enabled zchunk. (Some header files include <zck.h>.)

An implementation note: CMakeLists.txt appends the header search paths with both a top-level build directory as well as with a librepo subdirectory. The latter is for "util.h" inclusions from the C files, the former is for <librepo/util.h> inclusions from other librepo header files. Without the former a C preprocesor would use already installed <librepo/util.h>. We do not want to infect the being built library with old and possible nonmatching system header files.

Fixes: #298

If librepo was built with -DWITH_ZCHUNK=ON but an application included
<librepo/librepo.h> without defining -DWITH_ZCHUNK, struct
LrDownloadTarget mismatched. The same problem happened vice versa.
Following the correct ABI was a burden for librepo applications and
a mistake there could lead to a memory corruption.

This patch replaces the WITH_ZCHUNK macros in the public header files
with a constant so that the installed header files do not depend on
the macro and always match the installed library.

This patch also adds a missing RPM dependency on zchunk-devel to
librepo-devel if built with enabled zchunk. (Some header files include
<zck.h>.)

An implementation note: CMakeLists.txt appends the header search paths
with both a top-level build directory as well as with a librepo
subdirectory. The latter is for "util.h" inclusions from the C files,
the former is for <librepo/util.h> inclusions from other librepo header
files. Without the former a C preprocesor would use already installed
<librepo/util.h>. We do not want to infect the being built library
with old and possible nonmatching system header files.

Fixes: rpm-software-management#298
@kontura kontura self-assigned this Mar 7, 2024
@kontura
Copy link
Contributor

kontura commented Mar 7, 2024

Thank you!

The failing tests are not related.

@kontura kontura merged commit 66c99da into rpm-software-management:master Mar 7, 2024
4 of 6 checks passed
@ppisar
Copy link
Contributor Author

ppisar commented Mar 8, 2024

After merging this pull request, "dnf/zchunk.feature:141 using mirror wihtout ranges supports and zchunk results in only two GET requests for primary (the first try is with range specified)" scenario from ci-dnf-stack started to fail. I'm investigating it.

@ppisar
Copy link
Contributor Author

ppisar commented Mar 8, 2024

After merging this pull request, "dnf/zchunk.feature:141 using mirror wihtout ranges supports and zchunk results in only two GET requests for primary (the first try is with range specified)" scenario from ci-dnf-stack started to fail. I'm investigating it.

A fix proposed in PR #302.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

WITH_ZCHUNK macro affects ABI
2 participants