summaryrefslogtreecommitdiff
path: root/tools/install.sh
AgeCommit message (Collapse)AuthorLines
2024-02-03install.sh: avoid creating symlinks with restricted permissionsTim Cuthbertson-0/+2
Linux and most systems do not have symlink permissions, but some systems, including MacOS, do, and creation of the symlink with umask set to 0777 makes the symlink inaccessible on such systems. clear umask when making a symlink so that the behavior is uniform.
2014-01-15fix system breakage window during make install due to permissionsRich Felker-2/+1
install.sh was wrongly waiting until after atomically replacing the old file to set the correct permissions on the new file. in the case of the dynamic linker, this would cause a dynamic-linked chmod command not to run (due to missing executable permissions on the dynamic linker) and thus leave the system in an unusable state. even if chmod is static-linked, the old behavior had a race window where dynamic-linked programs could fail to run.
2013-12-03fix mv usage in install.sh to avoid bogus interactive promptingRich Felker-1/+1
2013-08-17replace system's install command with a shell scriptRich Felker-0/+65
the historical (non-standardized) install command is really inappropriate for installing binaries/libraries on a system that utilizes memory-mapped executable files. rather than replacing an existing file atomically, it overwrites the existing file. this can cause running programs to see a partially-modified version of the file, resulting in unpredictable behavior, or SIGBUS. a MAP_COPY mode for mmap would get around this problem, but Linux lacks MAP_COPY. the shell script added with this commit works around the problem by writing temporary files and moving them into place. unlike the historical install utility, it also support a -l option for installing a symbolic link atomically, via the same method.