mirror of https://github.com/ansible/ansible.git
Add link check to `make sdist`.
This will cause `make sdist` to fail on platforms which create hard links of symbolic links as regular files, such as MacOS (Darwin). This prevents accidental creation of an sdist tarball without the necessary symbolic links.pull/46939/head
parent
e43869cca9
commit
19c0511f57
@ -0,0 +1,51 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
"""Checks for link behavior required for sdist to retain symlinks."""
|
||||||
|
|
||||||
|
from __future__ import (absolute_import, division, print_function)
|
||||||
|
|
||||||
|
__metaclass__ = type
|
||||||
|
|
||||||
|
import os
|
||||||
|
import platform
|
||||||
|
import shutil
|
||||||
|
import sys
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""Main program entry point."""
|
||||||
|
temp_dir = tempfile.mkdtemp()
|
||||||
|
|
||||||
|
target_path = os.path.join(temp_dir, 'file.txt')
|
||||||
|
symlink_path = os.path.join(temp_dir, 'symlink.txt')
|
||||||
|
hardlink_path = os.path.join(temp_dir, 'hardlink.txt')
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open(target_path, 'w'):
|
||||||
|
pass
|
||||||
|
|
||||||
|
os.symlink(target_path, symlink_path)
|
||||||
|
os.link(symlink_path, hardlink_path)
|
||||||
|
|
||||||
|
if not os.path.islink(symlink_path):
|
||||||
|
abort('Symbolic link not created.')
|
||||||
|
|
||||||
|
if not os.path.islink(hardlink_path):
|
||||||
|
# known issue on MacOS (Darwin)
|
||||||
|
abort('Hard link of symbolic link created as a regular file.')
|
||||||
|
finally:
|
||||||
|
shutil.rmtree(temp_dir)
|
||||||
|
|
||||||
|
|
||||||
|
def abort(reason):
|
||||||
|
"""
|
||||||
|
:type reason: str
|
||||||
|
"""
|
||||||
|
sys.exit('ERROR: %s\n'
|
||||||
|
'This will prevent symbolic links from being preserved in the resulting tarball.\n'
|
||||||
|
'Aborting creation of sdist on platform: %s'
|
||||||
|
% (reason, platform.system()))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
Loading…
Reference in New Issue