Git commit failed with mbedtls/framework
ZHANG Yuntian
yt at radxa.com
Sun Jan 26 08:13:46 CET 2025
Hi Tom,
On 2025/1/25 02:23, Tom Rini wrote:
> On Fri, Jan 24, 2025 at 02:05:28PM +0800, ZHANG Yuntian wrote:
>> Hi Tom,
>>
>> On 2024/11/19 01:18, Tom Rini wrote:
>>> On Mon, Nov 18, 2024 at 12:16:18PM -0500, Raymond Mao wrote:
>>>> Hi Tom,
>>>>
>>>> On Mon, 18 Nov 2024 at 11:41, Tom Rini <trini at konsulko.com> wrote:
>>>>
>>>>> On Mon, Nov 18, 2024 at 11:27:06AM -0500, Raymond Mao wrote:
>>>>>> Hi Tom,
>>>>>>
>>>>>> On Mon, 18 Nov 2024 at 10:37, Tom Rini <trini at konsulko.com> wrote:
>>>>>>
>>>>>>> On Mon, Nov 18, 2024 at 10:24:32AM -0500, Raymond Mao wrote:
>>>>>>>> Hi Tony,
>>>>>>>>
>>>>>>>> On Sat, 16 Nov 2024 at 02:39, Tony Dinh <mibodhi at gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Hi Raymond,
>>>>>>>>>
>>>>>>>>> On Fri, Nov 15, 2024 at 1:55 PM Raymond Mao <
>>>>> raymond.mao at linaro.org>
>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> Hi Tony and Tom,
>>>>>>>>>>
>>>>>>>>>> On Fri, 15 Nov 2024 at 16:35, Tony Dinh <mibodhi at gmail.com>
>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> Hi Tom,
>>>>>>>>>>> Hi Raymond,
>>>>>>>>>>>
>>>>>>>>>>> On Fri, Nov 15, 2024 at 1:09 PM Raymond Mao <
>>>>> raymond.mao at linaro.org
>>>>>>>>
>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> Hi Tony
>>>>>>>>>>>>
>>>>>>>>>>>> On Fri, 15 Nov 2024 at 15:32, Tony Dinh <mibodhi at gmail.com>
>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Tom,
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Fri, Nov 15, 2024 at 11:27 AM Tony Dinh <
>>>>> mibodhi at gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi Tom,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Fri, Nov 15, 2024 at 6:17 AM Tom Rini <
>>>>> trini at konsulko.com>
>>>>>>>>> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Thu, Nov 14, 2024 at 08:26:33PM -0800, Tony Dinh
>>>>> wrote:
>>>>>>>>>>>>>>>> Hi Tom,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I am on 2025.01-rc2, and I am trying to commit some
>>>>> files.
>>>>>>> The
>>>>>>>>> error
>>>>>>>>>>>>>>>> seems to indicate this framework directory might need
>>>>> some
>>>>>>>>>>>>>>>> modification. Did I miss something?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> error: 'lib/mbedtls/external/mbedtls/framework' does
>>>>> not
>>>>>>> have
>>>>>>>>> a commit
>>>>>>>>>>>>>>>> checked out
>>>>>>>>>>>>>>>> fatal: updating files failed
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> That's odd. You didn't happen to try out some of the
>>>>> previous
>>>>>>>>> lwIP
>>>>>>>>>>>>>>> iterations on that tree did you?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> No, I did not. The tree is clean with "make mrproper" and
>>>>> on
>>>>>>> the
>>>>>>>>>>>>>> master branch. I just did a git pull and worked on it.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I went and looked at
>>>>> https://github.com/Mbed-TLS/mbedtls.git.
>>>>>>> The
>>>>>>>>>>>>>> framework directory is pointing to a specific commit.
>>>>>>>>>>>>>> framework @ 3867faa
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I'll stash and repeat it on another clean tree.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I have the same commit error on a brand new tree.
>>>>>>>>>>>>>
>>>>>>>>>>>> I think you are talking about the test framework of MbedTLS's
>>>>>>>>> original testsuite,
>>>>>>>>>>>> am I right?
>>>>>>>>>>>> MbedTLS was ported into U-Boot as a git subtree and that
>>>>>>> framework is
>>>>>>>>> a git
>>>>>>>>>>>> submodule of original MbedTLS repo which was not included in
>>>>> the
>>>>>>>>> porting
>>>>>>>>>>>> of U-Boot since U-Boot has its own testsuite.
>>>>>>>>>>>
>>>>>>>>>>> Here is what I found.
>>>>>>>>>>>
>>>>>>>>>>> git clone https://github.com/u-boot/u-boot.git
>>>>> u-boot-master-test
>>>>>>>>>>> cd /usr/src/u-boot-master-test/
>>>>>>>>>>> patch -p1 <
>>>>>>> ../builds-u-boot-marvell/sheevaplug/sheevaplug_bootstd.patch
>>>>>>>>>>> git add .
>>>>>>>>>>> git commit . -m "arm: kirkwood: Enable bootstd and remove jffs2
>>>>> for
>>>>>>>>>>> Sheevaplug board" -e
>>>>>>>>>>>
>>>>>>>>>>> The git commit above gave out this error:
>>>>>>>>>>>
>>>>>>>>>>> error: 'lib/mbedtls/external/mbedtls/framework' does not have a
>>>>>>> commit
>>>>>>>>>>> checked out
>>>>>>>>>>> fatal: updating files failed
>>>>>>>>>>>
>>>>>>>>>>> So I tried to commit only the specific files, and it works OK.
>>>>>>>>>>>
>>>>>>>>>>> git commit configs/sheevaplug_defconfig
>>>>> include/configs/sheevaplug.h
>>>>>>>>>>> -m "arm: kirkwood: Enable bootstd and remove jffs2 for
>>>>> Sheevaplug
>>>>>>>>>>> board" -e
>>>>>>>>>>> [master 47de8cff2d] arm: kirkwood: Enable bootstd and remove
>>>>> jffs2
>>>>>>> for
>>>>>>>>>>> Sheevaplug board
>>>>>>>>>>> 2 files changed, 17 insertions(+), 19 deletions(-)
>>>>>>>>>>>
>>>>>>>>>>> I think it must be what Raymond said above. So perhaps during
>>>>> Tom's
>>>>>>> PR
>>>>>>>>>>> pull, the framework directory was created. But "git commit ."
>>>>> does
>>>>>>> not
>>>>>>>>>>> like the empty lib/mbedtls/external/mbedtls/framework directory.
>>>>>>>>>>>
>>>>>>>>>> Under the native MbedTLS git repo, by default it has a
>>>>> "framework"
>>>>>>>>> pointing to
>>>>>>>>>> its git submodule.
>>>>>>>>>> Maybe we should mark it in the gitignore.
>>>>>>>>>
>>>>>>>>> I've tried .gitignore but could not make it work (my Gitfu is
>>>>> pretty
>>>>>>>>> lousy). Can you suggest how that should be done?
>>>>>>>>>
>>>>>>>>> You can use the command without the '.' : git commit -m
>>>>> "<commit_msg>",
>>>>>>>> this
>>>>>>>> should work.
>>>>>>>>
>>>>>>>> @Tom Rini <trini at konsulko.com> Shall we remove both
>>>>>>>> "lib/mbedtls/external/mbedtls/.gitmodules" and
>>>>>>>> "lib/mbedtls/external/mbedtls/framework"? I can submit a patch if you
>>>>>>> agree.
>>>>>>>
>>>>>>> Can we do that and not make a problem for the next resync?
>>>>>>>
>>>>>>> Hmmm, no, this cannot be pulled back to the MbedTLS upstream so still a
>>>>>> problem
>>>>>> when resync.
>>>>>> Another option is to include that git submodule into the U-Boot project,
>>>>>> this needs
>>>>>> to revert the commit of introducing the library and redo the git subtree
>>>>>> after the
>>>>>> submodule is updated, but it does not seem to be a good choice as we
>>>>> don't
>>>>>> use
>>>>>> that test framework in U-Boot at all.
>>>>>> Right now I don't have a perfect solution, maybe we can accept using git
>>>>>> commit
>>>>>> without the '.'?
>>>>>
>>>>> Hmm. Maybe we just delete the .gitmodules / directory and it shouldn't
>>>>> be too hard to deal with on updates. I have to do some small fixups with
>>>>> the device tree ones anyhow sometimes.
>>>>>
>>>>> How about checking and deleting this in the subtree update script?
>>>> Then we can skip manually doing this each time.
>>>> I can make a patch for it if you feel fine.
>>>
>>> Lets worry about that if it's a problem when we resync next.
>>
>> I'm currently working with Jonas Karlman's Rockchip fork[1] which is based
>> on a416d9e680718de1c76c4196e1db77e3ca07662f. The fork is included as a git
>> submodule so we can provide distro packaging[2] that are unrelated to
>> U-Boot. We build our package with GitHub Action, and this issue currently
>> blocks us from checking out the code at all with the following workflow
>> snippet:
>>
>> - name: Checkout
>> uses: actions/checkout at v4
>> with:
>> submodules: recursive
>>
>> Related error logs are here:
>>
>> |> Fetching submodules
>> /usr/bin/git submodule sync --recursive
>> /usr/bin/git -c protocol.version=2 submodule update --init --force
>> --recursive
>> Submodule 'src/rkbin' (https://github.com/rockchip-linux/rkbin.git)
>> registered for path 'src/rkbin'
>> Submodule 'src/u-boot' (https://github.com/Kwiboo/u-boot-rockchip.git)
>> registered for path 'src/u-boot'
>> Cloning into '/home/runner/work/u-boot-kwiboo/u-boot-kwiboo/src/rkbin'...
>> Cloning into '/home/runner/work/u-boot-kwiboo/u-boot-kwiboo/src/u-boot'...
>> Submodule path 'src/rkbin': checked out
>> '0f8ac860f0479da56a1decae207ddc99e289f2e2'
>> Submodule path 'src/u-boot': checked out
>> 'f3231571f4f9c3f72dcb6458aaa2de2462c605df'
>> Error: fatal: No url found for submodule path
>> 'src/u-boot/lib/mbedtls/external/mbedtls/framework' in .gitmodules
>> Error: fatal: Failed to recurse into submodule path 'src/u-boot'
>> Error: The process '/usr/bin/git' failed with exit code 128
>>
>> This issue potentially breaks all projects who include the recent U-Boot as
>> a git submodule in their GitHub Workflow.
>>
>> 1: https://github.com/Kwiboo/u-boot-rockchip/tree/rk3528-2025.04-wip
>> 2: https://github.com/radxa-pkg/u-boot-kwiboo/actions
>
> What if instead of "submodules: recursive" you use a run statement?
> https://github.com/marketplace/actions/checkout-submodules
>
We can certainly work around it in many different ways. But the point is
that U-Boot is currently a broken repository in regard to git submodule
operations, and require special treatments to integrate with existing
pipelines. This was not the case before.
--
Best regards,
ZHANG, Yuntian
Operating System Developer
Radxa Computer (Shenzhen) Co., Ltd
Shenzhen, China
More information about the U-Boot
mailing list