3
5
Fork
You've already forked xut
3

WIP: feat: shlibs-development #35

Draft
zenobit wants to merge 6 commits from oSoWoSo/xut:shlibs-development into master
pull from: oSoWoSo/xut:shlibs-development
merge into: mobinmob:master
mobinmob:master
mobinmob:template_list_cache
mobinmob:find_repodir_caching
mobinmob:unique_repodir_names
mobinmob:mobinmob-patch-1
mobinmob:yet_another_touch
mobinmob:mdocs
mobinmob:moar_fixes
mobinmob:seperate_build_preparation
mobinmob:root_check
mobinmob:ls_to_list_dirs
mobinmob:CONF_WORKDIR.override
mobinmob:safety_portability_fixes
mobinmob:fix_updates
mobinmob:fixes_and_find
mobinmob:get_key_from_template
mobinmob:v.0.3
mobinmob:v.0.2
mobinmob:dev
mobinmob:manyrepos
Contributor
Copy link

Still work in progress
Just to show you, maybe you can help me with it

Last commit made it worst

Still work in progress Just to show you, maybe you can help me with it Last commit made it worst

Are you using a specific repo to test or do you have test data somewhere? It will help to see how it breaks.
I expect shlib handling to be the most complex operation in xut. That is because you need to have a strategy and also check for everything...
I may have some time much later today.

Are you using a specific repo to test or do you have test data somewhere? It will help to see _how_ it breaks. I expect shlib handling to be the most complex operation in `xut`. That is because you need to have a strategy and also check for everything... I may have some time much later today.
Author
Contributor
Copy link
additional_repos="https://github.com/oSoWoSo/void-hyprland https://codeberg.org/RotaryBoot58/vpim https://codeberg.org/mobinmob/66-voidlinux https://github.com/dani-77/d77void-pkgs https://codeberg.org/cereus-linux/cereus-pkgs" Not specialy choosed for testing but trying with that PS: https://github.com/dani-77/d77void-pkgs is big as void-packages so without it it takes much shorter time
zenobit force-pushed shlibs-development from ce8bf26913 to a3d8306c69 2025年10月23日 22:30:25 +02:00 Compare
Author
Contributor
Copy link

For us good approach to implement shlibs in abyss-packages etc
Is use two files instead of one

  • shlibs-remove - to remove older package mention from void-packages shlibs (should contain exact lines like are in void's shlibs)
  • shlibs-add - to add new packages and changed lines (aka everything what changed)

But that doesn't solve if repo keep same (changed) shlibs as void

For us good approach to implement shlibs in abyss-packages etc Is use two files instead of one - shlibs-remove - to remove older package mention from void-packages shlibs (should contain exact lines like are in void's shlibs) - shlibs-add - to add new packages and changed lines (aka everything what changed) But that doesn't solve if repo keep same (changed) shlibs as void

I believe the solution is to not try to do the impossible 🙂
Because trying to support w/e shlibs anyone can provide is a dead end. I will try to finally release this weekend, with fixed/revised template list update and maybe shlib enabled only for abyss-packages.

I believe the solution is to not try to do the impossible 🙂 Because trying to support w/e shlibs anyone can provide is a dead end. I will try to finally release this weekend, with fixed/revised template list update and maybe shlib enabled only for abyss-packages.
zenobit force-pushed shlibs-development from a3d8306c69 to 724d3a3f35 2025年11月27日 20:52:35 +01:00 Compare

@zenobit wrote in #35 (comment):

For us good approach to implement shlibs in abyss-packages etc Is use two files instead of one

  • shlibs-remove - to remove older package mention from void-packages shlibs (should contain exact lines like are in void's shlibs)
  • shlibs-add - to add new packages and changed lines (aka everything what changed)

But that doesn't solve if repo keep same (changed) shlibs as void

Unfortunatelly we do need to implement some policy...
I tried to find a suitable and sane policy that will be implemented in the abyss-packages repo and then propose to others. It is not possible to make anything sensible without third-party repo cooperation. I ended up with the following:

  1. If a repos has a common/shlibs file, it should be considered.
  2. In order to merge, the repo owner must provide a provide_shlibs.
  3. The file should have a space- or newline-separated list of sonames.
  4. Only lines that contain sonames that are in the provide_shlibs files are to be merged.

Per-entry merge should procceed if:

  1. Soname is included in provide_shlibs.
  2. Soname version is the same as in the common/shlibs of the $defaultRepo but package name is different.
  3. Soname version is newer than in the common/shlibs of the $defaultRepo.
  4. Soname does not exist in the common/shlibs of the $defaultRepo.

Pros:

  • Simple policy to implement for other repos (add a single file, easy to automate).
  • Simple policy to describe and document for users.
  • Make extremelly clear that a repo is compatible with xut - a file in the root dir is a pretty clear indication. I am more than happy to work with other repos in order to achieve this...

Cons:

  • Not exactly straightforward code (I have some, need to test...).
  • Not practical to implement in anything other than awk.
  • It does not account for repos that have conflicting shlibs between them - I am not sure that can be solved, at least without adding a lot of complexity.
@zenobit wrote in https://codeberg.org/mobinmob/xut/pulls/35#issuecomment-8260731: > For us good approach to implement shlibs in abyss-packages etc Is use two files instead of one > > * shlibs-remove - to remove older package mention from void-packages shlibs (should contain exact lines like are in void's shlibs) > * shlibs-add - to add new packages and changed lines (aka everything what changed) > > But that doesn't solve if repo keep same (changed) shlibs as void Unfortunatelly we do need to implement some policy... I tried to find a suitable and sane policy that will be implemented in the abyss-packages repo and then propose to others. It is not possible to make anything sensible without third-party repo cooperation. I ended up with the following: 1. If a repos has a `common/shlibs` file, it should be considered. 2. In order to merge, the repo owner must provide a `provide_shlibs`. 3. The file should have a space- or newline-separated list of **sonames**. 4. Only lines that contain sonames that are in the `provide_shlibs` files are to be merged. Per-entry merge should procceed if: 1. Soname is included in `provide_shlibs`. 2. Soname version is the same as in the common/shlibs of the $defaultRepo but package name is different. 3. Soname version is newer than in the common/shlibs of the $defaultRepo. 4. Soname does not exist in the common/shlibs of the $defaultRepo. Pros: - Simple policy to implement for other repos (add a single file, easy to automate). - Simple policy to describe and document for users. - Make extremelly clear that a repo is compatible with xut - a file in the root dir is a pretty clear indication. I am more than happy to work with other repos in order to achieve this... Cons: - Not exactly straightforward code (I have some, need to test...). - Not practical to implement in anything other than awk. - It does not account for repos that have conflicting shlibs between them - I am not sure that can be solved, at least without adding a lot of complexity.
This pull request has changes conflicting with the target branch.
  • xut
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u shlibs-development:oSoWoSo-shlibs-development
git switch oSoWoSo-shlibs-development

Merge

Merge the changes and update on Forgejo.
git switch master
git merge --no-ff oSoWoSo-shlibs-development
git switch oSoWoSo-shlibs-development
git rebase master
git switch master
git merge --ff-only oSoWoSo-shlibs-development
git switch oSoWoSo-shlibs-development
git rebase master
git switch master
git merge --no-ff oSoWoSo-shlibs-development
git switch master
git merge --squash oSoWoSo-shlibs-development
git switch master
git merge --ff-only oSoWoSo-shlibs-development
git switch master
git merge oSoWoSo-shlibs-development
git push origin master
Sign in to join this conversation.
No reviewers
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
mobinmob/xut!35
Reference in a new issue
mobinmob/xut
No description provided.
Delete branch "oSoWoSo/xut:shlibs-development"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?