
On Fri, 8 Sept 2023 at 19:59, Tom Rini trini@konsulko.com wrote:
On Fri, Sep 08, 2023 at 07:53:05PM +0600, Maxim Uvarov wrote:
Before apply these patches it is needed to create lwIP merge into
U-Boot:
git subtree add --prefix net/lwip/lwip-external
https://git.savannah.nongnu.org/git/lwip.git master --squash
or create git submodule, depends how it's more easy to maintain external library.
So, I think we're going to go with subtree. Please work out how to integrate the above in to the build process automatically (and such that we can maintain it via upgrades moving forward).
-- Tom
I did not find a good way to friend git format-patch, git am and subtree. And now with using subtree I can provide my thoughts, in general I do not see any big advantages with maintaining subtree code.
Problem is that:
1. subtree does some root reset. So rebase looks like: label onto
# Branch acbc0469a49de7055141cc730aa9c728e61b6de2-2
reset [new root]
pick acbc0469a4 Squashed 'net/lwip/lwip-external/' content from commit 84fde1ebbf label acbc0469a49de7055141cc730aa9c728e61b6de2-2
reset onto
merge -C ec4a128c8d acbc0469a49de7055141cc730aa9c728e61b6de2-2 # Merge commit 'acbc0469a49de7055141cc730aa9c728e61b6de2' as 'net/lwip/lwip-external' pick 739681a6f5 net/lwip: add doc/develop/net_lwip.rst
pick f0ecab85e0 net/lwip: integrate lwIP library
2. if --rebase-merges option was not provided to rebase, then rebase will omit subtree directory and try to apply rebase patches to root directory. I.e. in current case squashed commit for lwip, will be applied to uboot root directory instead of ./net/lwip/lwip-external.
3. due to broken rebases without --rebase-merges more likely things like git bisect also will not work.
4. change in subtree code ./net/lwip/lwip-external/../something.c will create a git commit which looks like a standard U-Boot commit. I.e. path starts with ./net/lwip/lwip-external/
5. lwip maintains code with a mailing list. So we don't need to push subtree git somewhere to create a pull request.
6. I rechecked the latest edk2 and they use submodules now. (openssl, libfdt, berkeley-softfloat-3 and others).
7. dynamic download also looks horrible for me. I.e. create subtree in Makefile on compilation process. I think maintaining that will give you a bunch of problems. I think we should not touch git structure after cloning.
So what I can here suggest: 1. lwip source code is 9.4M. If we compare all code it will be 564M in total. So just having 1 commit witn copy of lwip library will work here.
or
2. use git submodules. Size of the project will be lower. Submodule will not allow you to use local changes. I.e. change needs to be merged into the upstream project and then you can update git HEAD for the submodule.
or
3. inside u-boot.git create branch lib-lwip and clone lwip repo there. Then use git submoule to connect this branch as a folder to the main U-Boot code.
BR, Maxim.