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

Symbolic Link Support Broken in Windows ARM64 #4707

Closed
1 task done
ElectricalBoy opened this issue Nov 25, 2023 · 7 comments · Fixed by #4718
Closed
1 task done

Symbolic Link Support Broken in Windows ARM64 #4707

ElectricalBoy opened this issue Nov 25, 2023 · 7 comments · Fixed by #4718

Comments

@ElectricalBoy
Copy link

ElectricalBoy commented Nov 25, 2023

  • I was not able to find an open or closed issue matching what I'm seeing

Setup

  • Which version of Git for Windows are you using? Is it 32-bit or 64-bit?
$ git --version --build-options

git version 2.43.0.windows.1
cpu: aarch64
built from commit: 4b968f3ea3b32a7bc50846bab49f3f381841d297
sizeof-long: 4
sizeof-size_t: 8
shell-path: /bin/sh
feature: fsmonitor--daemon

Also occurred in the ARM64 build of GfW 2.42.0.windows.1

  • Which version of Windows are you running? Vista, 7, 8, 10? Is it 32-bit or 64-bit?

    Windows 11 23H2 (build 22631.2428)

  • What options did you set as part of the installation? Or did you choose the defaults?

Editor Option: VisualStudioCode
Custom Editor Path: 
Default Branch Option: main
Path Option: Cmd
SSH Option: ExternalOpenSSH
Tortoise Option: false
CURL Option: WinSSL
CRLF Option: CRLFAlways
Bash Terminal Option: ConHost
Git Pull Behavior Option: FFOnly
Use Credential Manager: Enabled
Performance Tweaks FSCache: Enabled
Enable Symlinks: Enabled
Enable Pseudo Console Support: Disabled
Enable FSMonitor: Disabled
  • Any other interesting things about your environment that might be related to the issue you're seeing?

    • Device used: Surface Pro X (SQ1)
    • Developer mode enabled in Windows (for symlink permission)
    • ARM64 build by @dennisameling used
    • Issue not present in x64 build of GfW
    • Creating symlinks in Windows on ARM (via mklink in cmd) works without issues

Details

  • Which terminal/shell are you running Git from? e.g Bash/CMD/PowerShell/other

    Windows Powershell

  • What commands did you run to trigger this issue? If you can provide a Minimal, Complete, and Verifiable example this will help us understand the issue.

    1. Clone https://github.com/ElectricalBoy/symlink-test
    2. cd to the cloned repository
    3. Run git config --local -l and observe output.
    4. Run git config core.symlinks true (Reason described below)
    5. Perform a hard reset (via git reset --hard) to ElectricalBoy/symlink-test@5c18b50
      (Last commit with no symlink in the reproducer repository)
    6. Run git pull
  • What did you expect to occur after running these commands?

  • What actually happened instead?

    • With x64 build of GfW: As expected in both steps 3 and 7
    • With ARM64 build of GfW:
      • At step 3: core.symlinks=false entry present
      • At step 7:
        error: unable to create symlink bar.txt: Permission denied
        error: unable to create symlink dir/bar2.txt: Permission denied
        
  • If the problem was occurring with a specific repository, can you provide the URL to that repository to help us with testing?

    N/A - occurs in all repositories. See above for the link to the reproducer.

  • Workarounds found so far:

    • Do not use symlinks in repositories (not ideal, but okay)
    • Disable symlinks entirely, i.e., set core.symlinks to false (also not ideal, but okay)
    • Use WSL and the upstream Git inside it (works, but requires virtualization running)
@dscho
Copy link
Member

dscho commented Nov 25, 2023

@ElectricalBoy
Copy link
Author

Have you enabled Developer Mode?

Yup, and it's already mentioned in the issue description above. 😄

@dscho
Copy link
Member

dscho commented Nov 25, 2023

Have you enabled Developer Mode?

Yup, and it's already mentioned in the issue description above. 😄

Right, I only spotted the "Permission denied" and didn't look further, sorry.

I wonder, though, whether in the ARM build specifically, we somehow do not get the benefit of this code. If that flag is somehow not set, that would explain that "Permission denied" error.

@ElectricalBoy
Copy link
Author

ElectricalBoy commented Nov 26, 2023

Right, I only spotted the "Permission denied" and didn't look further, sorry.

No worries! :)

I wonder, though, whether in the ARM build specifically, we somehow do not get the benefit of this code. If that flag is somehow not set, that would explain that "Permission denied" error.

Two questions:

  • Is that code connected (and/or related) to the behavior of GfW silently inserting core.symlinks=false to the local Git config when it "thinks" that it is needed? As mentioned in my issue description above, this is one of the abnormal outcomes I have observed (see step 3 of my MCVE above).
  • Would there be a way for me to locally test your hypothesis?

@rimrul
Copy link
Member

rimrul commented Nov 29, 2023

Is that code connected (and/or related) to the behavior of GfW silently inserting core.symlinks=false to the local Git config when it "thinks" that it is needed? As mentioned in my issue description above, this is one of the abnormal outcomes I have observed (see step 3 of my MCVE above).

That is pretty standard git behaviour. git clone detects the same failure that leads to the error message in step 7 of the MVCE and sets core.symlinks accordingly.

That code is related in that it sets the relevant SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE flag for symlink creation in developer mode.

core.symlinks

[...]

The default is true, except git-clone[1] or git-init[1] will probe and set core.symlinks false if appropriate when the repository is created.

The relevant excerpt from https://git-scm.com/docs/git-config#Documentation/git-config.txt-coresymlinks

@rimrul
Copy link
Member

rimrul commented Nov 29, 2023

Have you enabled Developer Mode?

Yup, and it's already mentioned in the issue description above. 😄

Right, I only spotted the "Permission denied" and didn't look further, sorry.

I wonder, though, whether in the ARM build specifically, we somehow do not get the benefit of this code. If that flag is somehow not set, that would explain that "Permission denied" error.

That hunch seems to be correct. GetVersion() seems to return 0x23F00206, while we expect it to be ≥ 0x3A7C0000.

@rimrul
Copy link
Member

rimrul commented Nov 29, 2023

I think I found something. /mingw64/bin/git.exe contains 2 copies of compat/win32/git.manifest, while /clangarm64/bin/git.exe has only 1.

rimrul added a commit to rimrul/git that referenced this issue Dec 2, 2023
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand. This also
helps our GCC based toolchain understand that we only want one copy
embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This fixes git-for-windows#4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
rimrul added a commit to rimrul/git that referenced this issue Dec 2, 2023
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystem to pick up the
manifest file from git.rc instead of having to explicitly specify it in
contrib/buildsystems/Generators/Vcxproj.pm

This fixes git-for-windows#4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
rimrul added a commit to rimrul/git that referenced this issue Dec 6, 2023
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes git-for-windows#4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
dscho added a commit that referenced this issue Dec 7, 2023
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
git-for-windows-ci pushed a commit that referenced this issue Dec 7, 2023
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
git-for-windows-ci pushed a commit that referenced this issue Dec 7, 2023
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
git-for-windows-ci pushed a commit that referenced this issue Dec 7, 2023
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
git-for-windows-ci pushed a commit that referenced this issue Dec 7, 2023
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
git-for-windows-ci pushed a commit that referenced this issue Dec 7, 2023
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
git-for-windows-ci pushed a commit that referenced this issue Dec 7, 2023
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
git-for-windows-ci pushed a commit that referenced this issue Dec 7, 2023
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
git-for-windows-ci pushed a commit that referenced this issue Dec 7, 2023
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
dscho pushed a commit that referenced this issue Dec 10, 2023
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
dscho added a commit that referenced this issue Dec 10, 2023
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
dscho pushed a commit that referenced this issue Dec 10, 2023
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
dscho added a commit that referenced this issue Dec 10, 2023
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
dscho pushed a commit that referenced this issue Dec 10, 2023
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
dscho added a commit that referenced this issue Dec 10, 2023
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
git-for-windows-ci pushed a commit that referenced this issue Dec 11, 2023
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
git-for-windows-ci pushed a commit that referenced this issue Dec 11, 2023
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
git-for-windows-ci pushed a commit that referenced this issue Dec 11, 2023
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
git-for-windows-ci pushed a commit that referenced this issue Oct 25, 2024
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
git-for-windows-ci pushed a commit that referenced this issue Oct 25, 2024
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
git-for-windows-ci pushed a commit that referenced this issue Oct 30, 2024
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
git-for-windows-ci pushed a commit that referenced this issue Oct 30, 2024
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
git-for-windows-ci pushed a commit that referenced this issue Nov 1, 2024
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
git-for-windows-ci pushed a commit that referenced this issue Nov 1, 2024
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
git-for-windows-ci pushed a commit that referenced this issue Nov 6, 2024
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
git-for-windows-ci pushed a commit that referenced this issue Nov 6, 2024
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
dscho pushed a commit that referenced this issue Nov 22, 2024
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
dscho added a commit that referenced this issue Nov 22, 2024
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
dscho pushed a commit that referenced this issue Nov 22, 2024
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
dscho added a commit that referenced this issue Nov 22, 2024
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
dscho pushed a commit that referenced this issue Nov 22, 2024
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
dscho added a commit that referenced this issue Nov 22, 2024
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
dscho pushed a commit that referenced this issue Nov 22, 2024
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
dscho added a commit that referenced this issue Nov 22, 2024
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
dscho pushed a commit that referenced this issue Nov 22, 2024
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
dscho added a commit that referenced this issue Nov 22, 2024
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
git-for-windows-ci pushed a commit that referenced this issue Nov 25, 2024
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
git-for-windows-ci pushed a commit that referenced this issue Nov 25, 2024
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
git-for-windows-ci pushed a commit that referenced this issue Nov 25, 2024
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
git-for-windows-ci pushed a commit that referenced this issue Nov 25, 2024
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
git-for-windows-ci pushed a commit that referenced this issue Nov 25, 2024
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
git-for-windows-ci pushed a commit that referenced this issue Nov 25, 2024
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
git-for-windows-ci pushed a commit that referenced this issue Nov 25, 2024
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
git-for-windows-ci pushed a commit that referenced this issue Nov 25, 2024
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
dscho pushed a commit to dscho/git that referenced this issue Nov 25, 2024
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes git-for-windows#4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
dscho added a commit to dscho/git that referenced this issue Nov 25, 2024
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes git-for-windows#4707
git-for-windows-ci pushed a commit that referenced this issue Nov 25, 2024
winuser.h contains the definition of RT_MANIFEST that our LLVM based
toolchain needs to understand that we want to embed
compat/win32/git.manifest as an application manifest. It currently just
embeds it as additional data that Windows doesn't understand.

This also helps our GCC based toolchain understand that we only want one
copy embedded. It currently embeds one working assembly manifest and one
nearly identical, but useless copy as additional data.

This also teaches our Visual Studio based buildsystems to pick up the
manifest file from git.rc. This means we don't have to explicitly specify
it in contrib/buildsystems/Generators/Vcxproj.pm anymore. Slightly
counter-intuitively this also means we have to explicitly tell Cmake
not to embed a default manifest.

This fixes #4707

Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
git-for-windows-ci pushed a commit that referenced this issue Nov 25, 2024
Teach our ARM64 based builds to embed the manifest file correctly.

This fixes #4707
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 a pull request may close this issue.

3 participants