files.sort()
+ # Save files that need to be removed after they were packaged.
+ files_to_be_removed = []
+
for file_real in files:
file_tar = file_real[len(self.env.chrootPath(self.env.buildroot)) + 1:]
+ if not os.path.exists(file_real):
+ logging.warning("This file has vanished unexpectedly: %s" % file_real)
+ continue
+
tar.add(file_real, arcname=file_tar, recursive=False)
- if not os.path.isdir(file_real):
+
+ # Mark file for deletion, and add symlinks on top of list.
+ if os.path.islink(file_real):
+ files_to_be_removed.insert(0, file_real)
+ elif not os.path.isdir(file_real):
+ files_to_be_removed.append(file_real)
+
+ # Remove all files afterwards, because tarfile has some kind of trouble
+ # when a symlink points into nirvana.
+ for file_real in files_to_be_removed:
+ if os.path.exists(file_real):
os.unlink(file_real)
# Dump all files that are in the archive.