1414from commoncode .fileutils import delete
1515from commoncode .paths import split
1616
17+ TRACE = False
1718logger = logging .getLogger (__name__ )
18- # un-comment these lines to enable logging
19- import sys
20- logging .basicConfig (level = logging .DEBUG , stream = sys .stdout )
21- logger .setLevel (logging .DEBUG )
19+ if TRACE :
20+ import sys
21+ logging .basicConfig (level = logging .DEBUG , stream = sys .stdout )
22+ logger .setLevel (logging .DEBUG )
2223
2324"""
2425Utilities to handle image and layer archives and recreate proper rootfs
@@ -64,7 +65,7 @@ def rebuild_rootfs(img, target_dir):
6465 deletions = []
6566
6667 for layer_num , layer in enumerate (img .layers ):
67- logger .debug (
68+ if TRACE : logger .debug (
6869 f'Extracting layer { layer_num } - { layer .layer_id } '
6970 f'tarball: { layer .archive_location } '
7071 )
@@ -73,26 +74,26 @@ def rebuild_rootfs(img, target_dir):
7374 # Note that we are not preserving any special file and any file permission
7475 extracted_loc = tempfile .mkdtemp ('container_inspector-docker' )
7576 layer .extract (extracted_location = extracted_loc )
76- logger .debug (f' Extracted layer to: { extracted_loc } ' )
77+ if TRACE : logger .debug (f' Extracted layer to: { extracted_loc } ' )
7778
7879 # 2. find whiteouts in that layer.
7980 whiteouts = list (find_whiteouts (extracted_loc ))
80- logger .debug (' Merging extracted layers and applying unionfs whiteouts' )
81- logger .debug (' Whiteouts:\n ' + ' \n ' .join (map (repr , whiteouts )))
81+ if TRACE : logger .debug (' Merging extracted layers and applying unionfs whiteouts' )
82+ if TRACE : logger .debug (' Whiteouts:\n ' + ' \n ' .join (map (repr , whiteouts )))
8283
8384 # 3. remove whiteouts in the previous layer stack (e.g. the WIP rootfs)
8485 for whiteout_marker_loc , whiteable_path in whiteouts :
85- logger .debug (f' Deleting dir or file with whiteout marker: { whiteout_marker_loc } ' )
86+ if TRACE : logger .debug (f' Deleting dir or file with whiteout marker: { whiteout_marker_loc } ' )
8687 whiteable_loc = os .path .join (target_dir , whiteable_path )
8788 delete (whiteable_loc )
8889 # also delete the whiteout marker file
8990 delete (whiteout_marker_loc )
9091 deletions .append (whiteable_loc )
9192
9293 # 4. finall copy/overwrite the extracted layer over the WIP rootfs
93- logger .debug (f' Moving extracted layer from: { extracted_loc } to: { target_dir } ' )
94+ if TRACE : logger .debug (f' Moving extracted layer from: { extracted_loc } to: { target_dir } ' )
9495 copytree (extracted_loc , target_dir )
95- logger .debug (f' Moved layer to: { target_dir } ' )
96+ if TRACE : logger .debug (f' Moved layer to: { target_dir } ' )
9697 delete (extracted_loc )
9798
9899 return deletions
@@ -227,27 +228,27 @@ def find_root(
227228
228229 ``walker`` is a callable behaving like ``os.walk()`` and is used for testing.
229230 """
230- logger .debug (
231+ if TRACE : logger .debug (
231232 f'find_root: location={ location !r} , max_depth={ max_depth !r} , '
232233 f'root_paths={ root_paths !r} , min_paths={ min_paths !r} '
233234 )
234235 depth = 0
235236 for top , dirs , files in walker (location ):
236- logger .debug (f' find_root: top={ top !r} , dirs={ dirs !r} , files={ files !r} ' )
237+ if TRACE : logger .debug (f' find_root: top={ top !r} , dirs={ dirs !r} , files={ files !r} ' )
237238 if max_depth :
238239 depth = compute_path_depth (location , top )
239- logger .debug (f' find_root: top depth={ depth !r} ' )
240+ if TRACE : logger .debug (f' find_root: top depth={ depth !r} ' )
240241 if depth > max_depth :
241- logger .debug (
242+ if TRACE : logger .debug (
242243 f' find_root: max_depth={ max_depth !r} , '
243244 f'depth={ depth !r} returning None' )
244245 return
245246
246247 matches = len (set (dirs + files ) & root_paths )
247- logger .debug (f' find_root: top={ top !r} , matches={ matches !r} ' )
248+ if TRACE : logger .debug (f' find_root: top={ top !r} , matches={ matches !r} ' )
248249
249250 if matches >= min_paths :
250- logger .debug (f' find_root: matches >= min_paths: returning { top !r} ' )
251+ if TRACE : logger .debug (f' find_root: matches >= min_paths: returning { top !r} ' )
251252 return top
252253
253- logger .debug (f'find_root: noting found: returning None' )
254+ if TRACE : logger .debug (f'find_root: noting found: returning None' )
0 commit comments