Closed hunterhogan closed 4 months ago
I realized I didn't show the directory structure for the static build.
DIR *.* /ALD /B /S>symlinks_dir_static.txt
C:\apps\media-autobuild_suite\build\ffmpeg-git\build-static-64bit\src
C:\apps\media-autobuild_suite\build\ffmpeg-git\build-static-64bit\src\build-static-64bit\src
...
C:\apps\media-autobuild_suite\build\ffmpeg-git\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src\build-static-64bit\src
Also 783 characters long (including the terminator) symlinks_dir_static.txt
.\build\ffmpeg-git\configure
reads
# find source path
if test -f configure; then
source_path=.
elif test -f src/configure; then
source_path=src
else
source_path=$(cd $(dirname "$0"); pwd)
case "$source_path" in
*[[:blank:]]*) die "Out of tree builds are impossible with whitespace in source path." ;;
esac
test -e "$source_path/config.h" &&
die "Out of tree builds are impossible with config.h in source dir."
fi
config.log
reads source_path=/build/ffmpeg-git
.\build\ffmpeg-git\configure
reads
if [ "$source_path" != "." ] && [ "$source_path" != "src" ] && ([ ! -d src ] || [ -L src ]) && [ -e "$link_name/test_file" ]; then
# create link to source path
[ -e src ] && rm src
$ln_s "$source_path" src
source_link=src
else
# creating directory links doesn't work
# fall back to using the full source path
source_link="$source_path"
fi
I'm very unsure, but I think in the last block of code, this $ln_s "$source_path" src
could do:
src
./build/ffmpeg-git
. So if the current directory were ./build/ffmpeg-git/build-static-64bit
, then src
would be in ./build/ffmpeg-git/build-static-64bit
with a target of ./build/ffmpeg-git
.
(I'm feeling faint: recursion is hard.)
Should be closed with https://github.com/m-ab-s/media-autobuild_suite/commit/e9fc1af2098bd3740b5391c658dc01e501b81d68 as it no longer uses glslang for libplacebo
The nominal error is ffmpegSHARED failing to compile because libplacebo is missing. Logs attached.
I was curious if the same problem would happen with only a static build. It does. Logs attached.
If I comment out libplacebo
#--enable-libplacebo
fromffmpeg_options.txt
, everything compiles.By luck, I noticed that
.\build\ffmpeg-git\build-shared-64bit\src
is a shortcut[^1] not a directory. Even worse, the target of the shortcut is two directories above the shortcut,.\build\ffmpeg-git\
. At least within the Windows file system, this creates a recursive reference, so my logical file structure includes the following paths.[^2] (See also, symlinks_dir.txt, attached.)Including the base path where I installed MABS, the last path is 783 characters long. To add another recursion would require 23 characters, which would total 806 characters. Windows/DOS has character limits to the total path length, but off the top of my head, I don't know the limit for this precise situation in Windows Server 2019.
Microsoft Windows [Version 10.0.17763.4851]
Nevertheless, ~806 is odd[^4] but not inconsistent with my experience.[^3]I suspect that the use of a shortcut in MABS is unintentional. I searched the all MABS subdirectories: shortcuts are rare and there aren't any other shortcuts for directories. See attached.
I used grepWin on all subdirectories from the MABS root to search for "CreateShortcut". I didn't see anything suspicious. The only result that I think was written by MABS is in
media-autobuild_suite.bat
of course.echo.Set link = Shell.CreateShortcut("%instdir%\mintty.lnk"^)
Now, I am at the limit of my ability to troubleshoot this efficiently, therefore, I am opening this ticket. I suspect that someone who knows the MABS code will know exactly were to look.
I also suspect that some other open tickets referring to libplacebo and vulkan are related to this issue. But since I couldn't find an open issue that mentioned this exact problem, I opened a new ticket so things didn't get confusing. #2499 #2399 Perhaps this recursion is causing some of the other
ERROR: library not found using pkg-config
.(I'm still learning to use git and GitHub for documentation, so I have probably missed some opportunities to improve these notes.)
logs_shared.zip logs_static.zip symlinks.txt symlinks_dir.txt [^1]: SYMLINK, symbolic link, or reparse point. [^2]: I don't know mintty, so I can't be sure that it uses the Windows file system. It is theoretically possible that mintty does not resolve the shortcut recursively. [^3]: Experience from a long time ago. A+ in 1998. MCSE 2000. MCSA 2003/XP. [^4]: The "classic" limit was 256 + drive letter + colon + backslash + terminator = 260. I would have expected to see a limit closer to a power of 2, such as 1024 or 32,768, but whatever.