Opened 10 years ago
Closed 10 years ago
#35 closed defect (invalid)
git: commands implemented as shell scripts fail
Reported by: | dmik | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | Version: | ||
Severity: | Keywords: | ||
Cc: |
Description
An attempt to use any command implemented as a shell script (e.g. git submodule
or even git pull
fails with the following message):
trace: exec: 'git-pull' trace: run_command: 'git-pull' fatal: cannot exec 'git-pull': Invalid executable file format
There are actually two things for git-pull
in git-core
: : git-pull.sh
(which is a shell script) and git-pull.exe
(which is a symlink to git-pull
). I recall that these .exe
symlinks are created so that LIBC exec could recognize the file as an executable and then find the right file by following the symlink and then start it with the right shell after finding out it's a shell script. But this logic seems to break at some stage. I need to check why. The git-pull
command is pretty much critical and must work.
Note that this applies to git 2.0.0 (built from the dmik branch ATM).
It turned out that I had a broken symlink /@unixroot/usr/bin/sh that pointed nowhere instead of /@unixroot/usr/bin/sh.exe and that was the cause (took some time to figure out). The easiest way to fix the symlink is to do
yum reinstall ash
. I'm afraid it comes broken with eCS 2.2 Beta II and we should perhaps inform the builders about one more broken file (we had several in the past already).BTW, while working on that I realized that LIBC needs a small fix, see: http://trac.netlabs.org/libc/ticket/300. With this fix missing, we have to create a bunch of
.exe
symlinks in git that point to its extension-less shell scripts (lgit-submodule
,git-pull
etc.). Once the fix is in, these symlinks may be removed from distribution.