Naive concatenation of $LD_LIBRARY_PATH can result in an empty
colon-delimited segment; this tells glibc to load libraries from the
current directory, which is definitely wrong, and may be a security
vulnerability if the current directory is untrusted. (See #67234, for
example.) Fix this throughout the tree.
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
The build was fixed in two ways, by both this patch and a substitution.
Let's keep the substitition instead of the patch as the patches may disappear.
This reverts commit ccc8c73ea0.
because it's ancient, it relies on ancient APIs that Apple has deprecated
for literally years. Our new CoreFoundation cleanup means those APIs are no longer here, so let's kill the functionality. Eventually support for it
got removed from upstream too, so it's not as if we're doing anything too
awful here.
* Implement libGL as a symlink package which uses libraries from libglvnd and
headers from Mesa (since ones from libglvnd are outdated).
* Use libGL_driver.driverLink treewide; add FHS paths where possible.
Since keeping `installPhase = ""` to signify "use the default installPhase" will
be surprising, this deletes the installPhase and rebuilds qt4 on all platforms.
Fixes #30238
qmake needs uic to extract dependency information from .ui files. In -fast mode
qmake generates Makefiles for each subproject after the previous subproject is
built, and by the time it encounters subprojects with .ui files, uic is
available to provide dependency information. In -no-fast mode qmake builds
subprojects in the same order, but generates all Makefiles beforehand, without
uic, and they miss dependencies.
Previously the last of these commands:
```
make -j sub-tools-bootstrap
make -j sub-uic sub-moc sub-rcc
make -C tools/designer/src/lib .obj/release-shared/moc_qtgradientviewdialog.o
```
failed with this error:
```
In file included from .uic/release-shared/ui_qtgradientviewdialog.h:63:0,
from .moc/release-shared/../../../../../shared/qtgradienteditor/qtgradientviewdialog.h:47,
from .moc/release-shared/moc_qtgradientviewdialog.cpp:9:
../../../shared/qtgradienteditor/qtgradientview.h:47:31: fatal error: ui_qtgradientview.h: No such file or directory
```
because uic did not ensure that the build of moc_qtgradientviewdialog.o happens
after the build of moc_qtgradientview.o.
Certain tools, e.g. compilers, are customarily prefixed with the name of
their target platform so that multiple builds can be used at once
without clobbering each other on the PATH. I was using identifiers named
`prefix` for this purpose, but that conflicts with the standard use of
`prefix` to mean the directory where something is installed. To avoid
conflict and confusion, I renamed those to `targetPrefix`.
Packages get --host and --target by default, but can explicitly request
any subset to be passed as needed. See docs for more info.
rustc: Avoid hash breakage by using the old (ignored)
dontSetConfigureCross when not cross building