mirror of https://github.com/ansible/ansible.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.3 KiB
Python
52 lines
1.3 KiB
Python
#!/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()
|