#!/usr/bin/env python3 
 | 
# 
 | 
# SPDX-License-Identifier: GPL-2.0-only 
 | 
# 
 | 
# Allow copying of $1 to $2 but if files in $1 disappear during the copy operation, 
 | 
# don't error. 
 | 
# Also don't error if $1 disappears. 
 | 
# 
 | 
  
 | 
import sys 
 | 
import os 
 | 
import shutil 
 | 
  
 | 
def copytree(src, dst, symlinks=False, ignore=None): 
 | 
    """Based on shutil.copytree""" 
 | 
    names = os.listdir(src) 
 | 
    try: 
 | 
        os.makedirs(dst) 
 | 
    except OSError:  
 | 
        # Already exists 
 | 
        pass 
 | 
    errors = [] 
 | 
    for name in names: 
 | 
        srcname = os.path.join(src, name) 
 | 
        dstname = os.path.join(dst, name) 
 | 
        try: 
 | 
            d = dstname 
 | 
            if os.path.isdir(dstname): 
 | 
                d = os.path.join(dstname, os.path.basename(srcname)) 
 | 
            if os.path.exists(d): 
 | 
                continue 
 | 
            try: 
 | 
                os.link(srcname, dstname) 
 | 
            except OSError: 
 | 
                shutil.copy2(srcname, dstname) 
 | 
        # catch the Error from the recursive copytree so that we can 
 | 
        # continue with other files 
 | 
        except shutil.Error as err: 
 | 
            errors.extend(err.args[0]) 
 | 
        except EnvironmentError as why: 
 | 
            errors.append((srcname, dstname, str(why))) 
 | 
    try: 
 | 
        shutil.copystat(src, dst) 
 | 
    except OSError as why: 
 | 
        errors.extend((src, dst, str(why))) 
 | 
    if errors: 
 | 
        raise shutil.Error(errors) 
 | 
  
 | 
try: 
 | 
    copytree(sys.argv[1], sys.argv[2]) 
 | 
except shutil.Error: 
 | 
   pass 
 | 
except OSError: 
 | 
   pass 
 |