Skip to content

Conversation

@alexey-tikhonov
Copy link
Member

This PR merges path_utils, collection, refarray, and basicobjects into the ini_config library.
refarray's API is still exposed (via ini_config lib) intentionally as it's used by ini_config public API.
API of other libs and parts of ini_config API are made private.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request correctly consolidates several sub-packages into the ini_config library, which simplifies the build system and package structure. The changes in Makefile.am and the RPM spec file are mostly on the right track. However, I've identified a few issues that could break the build or introduce inconsistencies. Specifically, configure.ac references m4 macros that have been removed, the RPM spec file retains global definitions for some merged libraries, and there's an inconsistency in how internal headers are handled in Makefile.am. I've provided detailed comments and suggestions to address these points.

@SSSD SSSD deleted a comment from gemini-code-assist bot Jan 30, 2026
@alexey-tikhonov
Copy link
Member Author

/gemini review

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request successfully consolidates the path_utils, collection, refarray, and basicobjects sub-packages into the ini_config library. The changes are extensive, touching the build system, packaging, and symbol visibility, but they appear to be correctly and carefully implemented. The public API has been cleaned up by making many symbols internal, and the refarray API is intentionally kept public as described. The use of Obsoletes in the RPM spec file is a good practice that will ensure a smooth upgrade path for users. The library versioning has been updated correctly to reflect the ABI changes. Overall, this is a solid refactoring that improves the structure of the project. I have not found any high or critical issues in these changes.

@@ -1,46 +1,5 @@
INI_CONFIG_1.1.0 {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi,

is there a reason to just jump to 1.4.0 and not to 2.0.0?

bye,
Sumit

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you think it would fit better I don't object.
My grounds were like "no new features introduced".

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you think it would fit better I don't object. My grounds were like "no new features introduced".

Hi,

I'm not quite sure here, but I think removed interfaces might be more important in this respect. If I understand it correctly if the 1.4.0 version can be used as a drop-in replacement for 1.1.0 i.e. binaries compiles against 1.1.0 will still work, using 1.4.0 is ok. But if a recompilation is needed then 2.0.0 would be better.

bye,
Sumit

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

@sumit-bose
Copy link
Contributor

Hi,

the rpm build is successful but has the following warnings:

RPM build warnings:
    line 19: It's not recommended to have unversioned Obsoletes: Obsoletes: libpath_utils
    line 20: It's not recommended to have unversioned Obsoletes: Obsoletes: libpath_utils-devel
    line 21: It's not recommended to have unversioned Obsoletes: Obsoletes: libcollection
    line 22: It's not recommended to have unversioned Obsoletes: Obsoletes: libcollection-devel
    line 23: It's not recommended to have unversioned Obsoletes: Obsoletes: libbasicobjects
    line 24: It's not recommended to have unversioned Obsoletes: Obsoletes: libbasicobjects-devel
    line 25: It's not recommended to have unversioned Obsoletes: Obsoletes: libref_array
    line 26: It's not recommended to have unversioned Obsoletes: Obsoletes: libref_array-devel
    line 108: It's not recommended to have unversioned Obsoletes: Obsoletes: libpath_utils
    line 109: It's not recommended to have unversioned Obsoletes: Obsoletes: libpath_utils-devel
    line 110: It's not recommended to have unversioned Obsoletes: Obsoletes: libcollection
    line 111: It's not recommended to have unversioned Obsoletes: Obsoletes: libcollection-devel
    line 112: It's not recommended to have unversioned Obsoletes: Obsoletes: libbasicobjects
    line 113: It's not recommended to have unversioned Obsoletes: Obsoletes: libbasicobjects-devel
    line 114: It's not recommended to have unversioned Obsoletes: Obsoletes: libref_array
    line 115: It's not recommended to have unversioned Obsoletes: Obsoletes: libref_array-devel
    line 125: It's not recommended to have unversioned Obsoletes: Obsoletes: libpath_utils
    line 126: It's not recommended to have unversioned Obsoletes: Obsoletes: libpath_utils-devel
    line 127: It's not recommended to have unversioned Obsoletes: Obsoletes: libcollection
    line 128: It's not recommended to have unversioned Obsoletes: Obsoletes: libcollection-devel
    line 129: It's not recommended to have unversioned Obsoletes: Obsoletes: libbasicobjects
    line 130: It's not recommended to have unversioned Obsoletes: Obsoletes: libbasicobjects-devel
    line 131: It's not recommended to have unversioned Obsoletes: Obsoletes: libref_array
    line 132: It's not recommended to have unversioned Obsoletes: Obsoletes: libref_array-devel
    File listed twice: /usr/share/doc/libini_config-devel/html
    File listed twice: /usr/share/doc/libini_config-devel/html/annotated.html
    File listed twice: /usr/share/doc/libini_config-devel/html/classes.html
    File listed twice: /usr/share/doc/libini_config-devel/html/clipboard.js
    File listed twice: /usr/share/doc/libini_config-devel/html/cookie.js
    File listed twice: /usr/share/doc/libini_config-devel/html/doxygen.css
    File listed twice: /usr/share/doc/libini_config-devel/html/doxygen.svg
    File listed twice: /usr/share/doc/libini_config-devel/html/doxygen_crawl.html
    File listed twice: /usr/share/doc/libini_config-devel/html/dynsections.js
    File listed twice: /usr/share/doc/libini_config-devel/html/files.html
    File listed twice: /usr/share/doc/libini_config-devel/html/functions.html
    File listed twice: /usr/share/doc/libini_config-devel/html/functions_vars.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__accesscheck.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__augment.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__bomType.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__collisionflags.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__errorlevel.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__ini__core.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__ini__mod.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__ini__section__and__attr.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__ini__value.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__insflags.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__mergesec.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__metacollect.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__onesecvalue.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__parseerr.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__parseflags.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__ref__array.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__searchmode.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__structures.html
    File listed twice: /usr/share/doc/libini_config-devel/html/group__twosecvalue.html
    File listed twice: /usr/share/doc/libini_config-devel/html/index.html
    File listed twice: /usr/share/doc/libini_config-devel/html/ini__configmod_8h_source.html
    File listed twice: /usr/share/doc/libini_config-devel/html/ini__configobj_8h_source.html
    File listed twice: /usr/share/doc/libini_config-devel/html/jquery.js
    File listed twice: /usr/share/doc/libini_config-devel/html/menu.js
    File listed twice: /usr/share/doc/libini_config-devel/html/menudata.js
    File listed twice: /usr/share/doc/libini_config-devel/html/navtree.css
    File listed twice: /usr/share/doc/libini_config-devel/html/ref__array_8h_source.html
    File listed twice: /usr/share/doc/libini_config-devel/html/search
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_0.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_1.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_10.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_11.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_2.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_3.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_4.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_5.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_6.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_7.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_8.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_9.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_a.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_b.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_c.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_d.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_e.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/all_f.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/classes_0.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/classes_1.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/enums_0.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/enums_1.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/enums_2.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/enumvalues_0.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/enumvalues_1.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/functions_0.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_0.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_1.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_10.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_2.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_3.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_4.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_5.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_6.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_7.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_8.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_9.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_a.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_b.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_c.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_d.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_e.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/groups_f.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/pages_0.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/pages_1.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/pages_2.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/pages_3.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/search.css
    File listed twice: /usr/share/doc/libini_config-devel/html/search/search.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/searchdata.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/typedefs_0.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/variables_0.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/variables_1.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/variables_2.js
    File listed twice: /usr/share/doc/libini_config-devel/html/search/variables_3.js
    File listed twice: /usr/share/doc/libini_config-devel/html/structaccess__check.html
    File listed twice: /usr/share/doc/libini_config-devel/html/structini__validator.html
    File listed twice: /usr/share/doc/libini_config-devel/html/tabs.css
    File listed twice: /usr/share/doc/libini_config-devel/html/topics.html

bye,
Sumit

@alexey-tikhonov
Copy link
Member Author

It's not recommended to have unversioned Obsoletes:

This I will fix.

File listed twice:

Hm... is it new..?

@sumit-bose
Copy link
Contributor

It's not recommended to have unversioned Obsoletes:

This I will fix.

File listed twice:

Hm... is it new..?

I do not see those messages when doing make prerelease-rpms with master.

@alexey-tikhonov alexey-tikhonov force-pushed the merge-ini_config branch 3 times, most recently from 0570e15 to a891398 Compare February 2, 2026 13:12
@alexey-tikhonov
Copy link
Member Author

It's not recommended to have unversioned Obsoletes:

This I will fix.

Fixed.

@alexey-tikhonov
Copy link
Member Author

File listed twice:

Hm... is it new..?

I do not see those messages when doing make prerelease-rpms with master.

I "fixed" this but Doxygen docs for 'refarray' API are now lost...

@sumit-bose
Copy link
Contributor

File listed twice:

Hm... is it new..?

I do not see those messages when doing make prerelease-rpms with master.

I "fixed" this but Doxygen docs for 'refarray' API are now lost...

diff --git a/ini/ini_config.cfg.doxy.in b/ini/ini_config.cfg.doxy.in
index 8ec29e8..f8c1dd9 100644
--- a/ini/ini_config.cfg.doxy.in
+++ b/ini/ini_config.cfg.doxy.in
@@ -578,7 +578,7 @@ WARN_LOGFILE           =
 # directories like "/usr/src/myproject". Separate the files or directories
 # with spaces.
 
-INPUT                  = @srcdir@/ini_configobj.h @srcdir@/ini_configmod.h
+INPUT                  = @srcdir@/ini_configobj.h @srcdir@/ini_configmod.h ../refarray
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is

might be able to bring it back.

Only leave public what is (or might be potentially) used by
SSSD and gssproxy.

This bumps both .so major version and 'INI_CONFIG_' symbols version.
@alexey-tikhonov
Copy link
Member Author

-INPUT = @srcdir@/ini_configobj.h @srcdir@/ini_configmod.h
+INPUT = @srcdir@/ini_configobj.h @srcdir@/ini_configmod.h ../refarray

Thank you. This seems to work.

Fixed and also changed a note about 'ini_config.h': deprecated -> removed.

Copy link
Contributor

@sumit-bose sumit-bose left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi,

thank you for the cleanups and the general consolidation, I have no further comments, ACK.

bye,
Sumit

and don't expose its API
and don't expose its API
and don't expose its API
API is still exposted.
in the description of 'ini_config' package as well
Copy link

@thalman thalman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK, thanks

@alexey-tikhonov alexey-tikhonov merged commit 46a0edb into SSSD:master Feb 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants