mirror of
https://github.com/golang/go
synced 2024-09-25 13:30:12 -06:00
cmd/dist: fix superfluous and confusing "binaries ... to be copied or moved" message
Also, to aid debugging cmd/dist, make make.bat support --dist-tool flag. Fixes #3100. R=alex.brainman CC=golang-dev https://golang.org/cl/6637061
This commit is contained in:
parent
e171b97ee6
commit
19dc7bb18f
1
src/cmd/dist/a.h
vendored
1
src/cmd/dist/a.h
vendored
@ -150,3 +150,4 @@ int xstrlen(char*);
|
||||
char* xstrrchr(char*, int);
|
||||
char* xstrstr(char*, char*);
|
||||
char* xworkdir(void);
|
||||
int xsamefile(char*, char*);
|
||||
|
2
src/cmd/dist/build.c
vendored
2
src/cmd/dist/build.c
vendored
@ -1564,7 +1564,7 @@ cmdbanner(int argc, char **argv)
|
||||
"Read and run ./sudo.bash to install the debuggers.\n");
|
||||
}
|
||||
|
||||
if(!streq(goroot_final, goroot)) {
|
||||
if(!xsamefile(goroot_final, goroot)) {
|
||||
xprintf("\n"
|
||||
"The binaries expect %s to be copied or moved to %s\n",
|
||||
goroot, goroot_final);
|
||||
|
7
src/cmd/dist/plan9.c
vendored
7
src/cmd/dist/plan9.c
vendored
@ -742,4 +742,11 @@ xstrrchr(char *p, int c)
|
||||
return strrchr(p, c);
|
||||
}
|
||||
|
||||
// xsamefile returns whether f1 and f2 are the same file (or dir)
|
||||
int
|
||||
xsamefile(char *f1, char *f2)
|
||||
{
|
||||
return streq(f1, f2); // suffice for now
|
||||
}
|
||||
|
||||
#endif // PLAN9
|
||||
|
7
src/cmd/dist/unix.c
vendored
7
src/cmd/dist/unix.c
vendored
@ -727,5 +727,12 @@ xstrrchr(char *p, int c)
|
||||
return strrchr(p, c);
|
||||
}
|
||||
|
||||
// xsamefile returns whether f1 and f2 are the same file (or dir)
|
||||
int
|
||||
xsamefile(char *f1, char *f2)
|
||||
{
|
||||
return streq(f1, f2); // suffice for now
|
||||
}
|
||||
|
||||
#endif // PLAN9
|
||||
#endif // __WINDOWS__
|
||||
|
37
src/cmd/dist/windows.c
vendored
37
src/cmd/dist/windows.c
vendored
@ -925,4 +925,41 @@ xstrrchr(char *p, int c)
|
||||
return nil;
|
||||
}
|
||||
|
||||
// xsamefile returns whether f1 and f2 are the same file (or dir)
|
||||
int
|
||||
xsamefile(char *f1, char *f2)
|
||||
{
|
||||
Rune *ru;
|
||||
HANDLE fd1, fd2;
|
||||
BY_HANDLE_FILE_INFORMATION fi1, fi2;
|
||||
int r;
|
||||
|
||||
// trivial case
|
||||
if(streq(f1, f2))
|
||||
return 1;
|
||||
|
||||
torune(&ru, f1);
|
||||
// refer to ../../pkg/os/stat_windows.go:/sameFile
|
||||
fd1 = CreateFileW(ru, 0, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
|
||||
xfree(ru);
|
||||
if(fd1 == INVALID_HANDLE_VALUE)
|
||||
return 0;
|
||||
torune(&ru, f2);
|
||||
fd2 = CreateFileW(ru, 0, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
|
||||
xfree(ru);
|
||||
if(fd2 == INVALID_HANDLE_VALUE) {
|
||||
CloseHandle(fd1);
|
||||
return 0;
|
||||
}
|
||||
r = GetFileInformationByHandle(fd1, &fi1) != 0 && GetFileInformationByHandle(fd2, &fi2) != 0;
|
||||
CloseHandle(fd2);
|
||||
CloseHandle(fd1);
|
||||
if(r != 0 &&
|
||||
fi1.dwVolumeSerialNumber == fi2.dwVolumeSerialNumber &&
|
||||
fi1.nFileIndexHigh == fi2.nFileIndexHigh &&
|
||||
fi1.nFileIndexLow == fi2.nFileIndexLow)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif // __WINDOWS__
|
||||
|
@ -68,6 +68,9 @@ call env.bat
|
||||
del env.bat
|
||||
echo.
|
||||
|
||||
if x%1==x--dist-tool goto copydist
|
||||
if x%2==x--dist-tool goto copydist
|
||||
|
||||
echo # Building compilers and Go bootstrap tool.
|
||||
set buildall=-a
|
||||
if x%1==x--no-clean set buildall=
|
||||
@ -105,6 +108,11 @@ if x%1==x--no-banner goto nobanner
|
||||
|
||||
goto end
|
||||
|
||||
:copydist
|
||||
mkdir %GOTOOLDIR% 2>NUL
|
||||
copy cmd\dist\dist.exe %GOTOOLDIR%\
|
||||
goto end
|
||||
|
||||
:fail
|
||||
set GOBUILDFAIL=1
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user