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()
|