11"Set defaults for the pip-compile command to run it under Bazel"
22
33import os
4+ import re
45import sys
56from pathlib import Path
67from shutil import copyfile
@@ -26,19 +27,17 @@ def _select_golden_requirements_file(
2627 return requirements_txt
2728
2829
29- def _fix_up_requirements_in_path (
30- resolved_requirements_in , requirements_in , output_file
31- ):
30+ def _fix_up_requirements_in_path (absolute_prefix , output_file ):
3231 """Fix up references to the input file inside of the generated requirements file.
3332
3433 We don't want fully resolved, absolute paths in the generated requirements file.
3534 The paths could differ for every invocation. Replace them with a predictable path.
3635 """
3736 output_file = Path (output_file )
38- fixed_requirements_text = output_file .read_text (). replace (
39- resolved_requirements_in , requirements_in
40- )
41- output_file .write_text (fixed_requirements_text )
37+ contents = output_file .read_text ()
38+ contents = contents . replace ( absolute_prefix , "" )
39+ contents = re . sub ( r"\\(?!(\n|\r\n))" , "/" , contents )
40+ output_file .write_text (contents )
4241
4342
4443if __name__ == "__main__" :
@@ -58,9 +57,11 @@ def _fix_up_requirements_in_path(
5857 requirements_windows = parse_str_none (sys .argv .pop (1 ))
5958 update_target_label = sys .argv .pop (1 )
6059
61- # The requirements_in file could be generated. We need to get the path to it before we change
62- # directory into the workspace directory.
63- resolved_requirements_in = str (Path (requirements_in ).resolve ())
60+ # The requirements_in file could be generated, so we will need to remove the
61+ # absolute prefixes in the locked requirements output file.
62+ requirements_in_path = Path (requirements_in )
63+ resolved_requirements_in = str (requirements_in_path .resolve ())
64+ absolute_prefix = resolved_requirements_in [: - len (str (requirements_in_path ))]
6465
6566 # Before loading click, set the locale for its parser.
6667 # If it leaks through to the system setting, it may fail:
@@ -116,17 +117,17 @@ def _fix_up_requirements_in_path(
116117 sys .argv .append ("--generate-hashes" )
117118 sys .argv .append ("--output-file" )
118119 sys .argv .append (requirements_txt if UPDATE else requirements_out )
119- sys .argv .append (resolved_requirements_in )
120+ sys .argv .append (
121+ requirements_in if requirements_in_path .exists () else resolved_requirements_in
122+ )
120123
121124 if UPDATE :
122125 print ("Updating " + requirements_txt )
123126 try :
124127 cli ()
125128 except SystemExit as e :
126129 if e .code == 0 :
127- _fix_up_requirements_in_path (
128- resolved_requirements_in , requirements_in , requirements_txt
129- )
130+ _fix_up_requirements_in_path (absolute_prefix , requirements_txt )
130131 raise
131132 else :
132133 # cli will exit(0) on success
@@ -145,9 +146,7 @@ def _fix_up_requirements_in_path(
145146 )
146147 sys .exit (1 )
147148 elif e .code == 0 :
148- _fix_up_requirements_in_path (
149- resolved_requirements_in , requirements_in , requirements_out
150- )
149+ _fix_up_requirements_in_path (absolute_prefix , requirements_out )
151150 golden_filename = _select_golden_requirements_file (
152151 requirements_txt ,
153152 requirements_linux ,
0 commit comments