|
7 | 7 | import argparse
|
8 | 8 | from distutils.dir_util import copy_tree
|
9 | 9 | import yaml
|
10 |
| - |
11 |
| - |
12 |
| -class folded_unicode(str): |
13 |
| - pass |
14 |
| - |
15 |
| - |
16 |
| -class literal_unicode(str): |
17 |
| - pass |
18 |
| - |
19 |
| - |
20 |
| -def folded_unicode_representer(dumper, data): |
21 |
| - return dumper.represent_scalar("tag:yaml.org,2002:str", data, style=">") |
22 |
| - |
23 |
| - |
24 |
| -def literal_unicode_representer(dumper, data): |
25 |
| - return dumper.represent_scalar("tag:yaml.org,2002:str", data, style="|") |
26 |
| - |
27 |
| - |
28 |
| -yaml.add_representer(folded_unicode, folded_unicode_representer) |
29 |
| -yaml.add_representer(literal_unicode, literal_unicode_representer) |
30 |
| - |
31 |
| - |
32 |
| -azure_linux_script = literal_unicode("""\ |
33 |
| -export CI=azure |
34 |
| -export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME |
35 |
| -export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) |
36 |
| -.scripts/run_docker_build.sh""") |
37 |
| - |
38 |
| -azure_osx_script = literal_unicode(r"""\ |
39 |
| -export CI=azure |
40 |
| -export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME |
41 |
| -export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) |
42 |
| -.scripts/build_osx.sh""") |
43 |
| - |
44 |
| -azure_osx_arm64_script = literal_unicode(r"""\ |
45 |
| -export CI=azure |
46 |
| -export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME |
47 |
| -export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) |
48 |
| -.scripts/build_osx_arm64.sh""") |
49 |
| - |
50 |
| -azure_win_preconfig_script = literal_unicode("""\ |
51 |
| -set "CI=azure" |
52 |
| -call %CONDA%\\condabin\\conda_hook.bat |
53 |
| -call %CONDA%\\condabin\\conda.bat activate base |
54 |
| -
|
55 |
| -:: 2 cores available on Appveyor workers: https://www.appveyor.com/docs/build-environment/#build-vm-configurations |
56 |
| -:: CPU_COUNT is passed through conda build: https://github.com/conda/conda-build/pull/1149 |
57 |
| -set CPU_COUNT=2 |
58 |
| -
|
59 |
| -set PYTHONUNBUFFERED=1 |
60 |
| -
|
61 |
| -conda config --set show_channel_urls true |
62 |
| -conda config --set auto_update_conda false |
63 |
| -conda config --set add_pip_as_python_dependency false |
64 |
| -
|
65 |
| -call setup_x64 |
66 |
| -
|
67 |
| -:: Set the conda-build working directory to a smaller path |
68 |
| -if "%CONDA_BLD_PATH%" == "" ( |
69 |
| - set "CONDA_BLD_PATH=C:\\bld\\" |
70 |
| -) |
71 |
| -
|
72 |
| -:: Remove some directories from PATH |
73 |
| -set "PATH=%PATH:C:\\ProgramData\\Chocolatey\\bin;=%" |
74 |
| -set "PATH=%PATH:C:\\Program Files (x86)\\sbt\\bin;=%" |
75 |
| -set "PATH=%PATH:C:\\Rust\\.cargo\\bin;=%" |
76 |
| -set "PATH=%PATH:C:\\Program Files\\Git\\usr\\bin;=%" |
77 |
| -set "PATH=%PATH:C:\\Program Files\\Git\\cmd;=%" |
78 |
| -set "PATH=%PATH:C:\\Program Files\\Git\\mingw64\\bin;=%" |
79 |
| -set "PATH=%PATH:C:\\Program Files (x86)\\Subversion\\bin;=%" |
80 |
| -set "PATH=%PATH:C:\\Program Files\\CMake\\bin;=%" |
81 |
| -set "PATH=%PATH:C:\\Program Files\\OpenSSL\\bin;=%" |
82 |
| -set "PATH=%PATH:C:\\Strawberry\\c\\bin;=%" |
83 |
| -set "PATH=%PATH:C:\\Strawberry\\perl\\bin;=%" |
84 |
| -set "PATH=%PATH:C:\\Strawberry\\perl\\site\\bin;=%" |
85 |
| -set "PATH=%PATH:c:\\tools\\php;=%" |
86 |
| -
|
87 |
| -:: On azure, there are libcrypto*.dll & libssl*.dll under |
88 |
| -:: C:\\Windows\\System32, which should not be there (no vendor dlls in windows folder). |
89 |
| -:: They would be found before the openssl libs of the conda environment, so we delete them. |
90 |
| -if defined CI ( |
91 |
| - DEL C:\\Windows\\System32\\libcrypto-1_1-x64.dll || (Echo Ignoring failure to delete C:\\Windows\\System32\\libcrypto-1_1-x64.dll) |
92 |
| - DEL C:\\Windows\\System32\\libssl-1_1-x64.dll || (Echo Ignoring failure to delete C:\\Windows\\System32\\libssl-1_1-x64.dll) |
93 |
| -) |
94 |
| -
|
95 |
| -:: Make paths like C:\\hostedtoolcache\\windows\\Ruby\\2.5.7\\x64\\bin garbage |
96 |
| -set "PATH=%PATH:ostedtoolcache=%" |
97 |
| -
|
98 |
| -mkdir "%CONDA%\\etc\\conda\\activate.d" |
99 |
| -
|
100 |
| -echo set "CONDA_BLD_PATH=%CONDA_BLD_PATH%" > "%CONDA%\\etc\\conda\\activate.d\\conda-forge-ci-setup-activate.bat" |
101 |
| -echo set "CPU_COUNT=%CPU_COUNT%" >> "%CONDA%\\etc\\conda\\activate.d\\conda-forge-ci-setup-activate.bat" |
102 |
| -echo set "PYTHONUNBUFFERED=%PYTHONUNBUFFERED%" >> "%CONDA%\\etc\\conda\\activate.d\\conda-forge-ci-setup-activate.bat" |
103 |
| -echo set "PATH=%PATH%" >> "%CONDA%\\etc\\conda\\activate.d\\conda-forge-ci-setup-activate.bat" |
104 |
| -
|
105 |
| -conda info |
106 |
| -conda config --show-sources |
107 |
| -conda list --show-channel-urls |
108 |
| -""") |
109 |
| - |
110 |
| -azure_win_script = literal_unicode("""\ |
111 |
| -setlocal EnableExtensions EnableDelayedExpansion |
112 |
| -call %CONDA%\\condabin\\conda_hook.bat |
113 |
| -call %CONDA%\\condabin\\conda.bat activate base |
114 |
| -
|
115 |
| -set "FEEDSTOCK_ROOT=%cd%" |
116 |
| -
|
117 |
| -call conda config --append channels defaults |
118 |
| -call conda config --add channels conda-forge |
119 |
| -call conda config --add channels robostack |
120 |
| -call conda config --set channel_priority strict |
121 |
| -
|
122 |
| -:: conda remove --force m2-git |
123 |
| -
|
124 |
| -C:\\Miniconda\\python.exe -m pip install git+https://github.com/mamba-org/boa.git@master |
125 |
| -if errorlevel 1 exit 1 |
126 |
| -
|
127 |
| -for %%X in (%CURRENT_RECIPES%) do ( |
128 |
| - echo "BUILDING RECIPE %%X" |
129 |
| - cd %FEEDSTOCK_ROOT%\\recipes\\%%X\\ |
130 |
| - copy %FEEDSTOCK_ROOT%\\conda_build_config.yaml .\\conda_build_config.yaml |
131 |
| - boa build . |
132 |
| - if errorlevel 1 exit 1 |
133 |
| -) |
134 |
| -
|
135 |
| -anaconda -t %ANACONDA_API_TOKEN% upload "C:\\bld\\win-64\\*.tar.bz2" --force |
136 |
| -if errorlevel 1 exit 1 |
137 |
| -""") |
| 10 | +import requests |
138 | 11 |
|
139 | 12 | parsed_args = None
|
140 | 13 |
|
141 | 14 |
|
142 | 15 | def parse_command_line(argv):
|
143 | 16 | parser = argparse.ArgumentParser(
|
144 |
| - description="Conda recipe Azure pipeline generator for ROS packages" |
| 17 | + description="Conda recipe Dot graphic generator for ROS packages" |
145 | 18 | )
|
146 | 19 |
|
147 | 20 | default_dir = "./recipes"
|
@@ -173,52 +46,6 @@ def parse_command_line(argv):
|
173 | 46 | parsed_args = arguments
|
174 | 47 | return arguments
|
175 | 48 |
|
176 |
| - |
177 |
| -def normalize_name(s): |
178 |
| - s = s.replace("-", "_") |
179 |
| - return re.sub("[^a-zA-Z0-9_]+", "", s) |
180 |
| - |
181 |
| - |
182 |
| -def batch_stages(stages, max_batch_size=5): |
183 |
| - with open("vinca.yaml", "r") as vinca_yaml: |
184 |
| - vinca_conf = yaml.safe_load(vinca_yaml) |
185 |
| - |
186 |
| - # this reduces the number of individual builds to try to save some time |
187 |
| - stage_lengths = [len(s) for s in stages] |
188 |
| - merged_stages = [] |
189 |
| - curr_stage = [] |
190 |
| - build_individually = vinca_conf.get("build_in_own_azure_stage", []) |
191 |
| - |
192 |
| - def chunks(lst, n): |
193 |
| - """Yield successive n-sized chunks from lst.""" |
194 |
| - for i in range(0, len(lst), n): |
195 |
| - yield lst[i:i + n] |
196 |
| - i = 0 |
197 |
| - while i < len(stages): |
198 |
| - for build_individually_pkg in build_individually: |
199 |
| - if build_individually_pkg in stages[i]: |
200 |
| - merged_stages.append([[build_individually_pkg]]) |
201 |
| - stages[i].remove(build_individually_pkg) |
202 |
| - |
203 |
| - if stage_lengths[i] < max_batch_size and len(curr_stage) + stage_lengths[i] < max_batch_size: |
204 |
| - # merge with previous stage |
205 |
| - curr_stage += stages[i] |
206 |
| - else: |
207 |
| - if len(curr_stage): |
208 |
| - merged_stages.append([curr_stage]) |
209 |
| - curr_stage = [] |
210 |
| - if stage_lengths[i] < max_batch_size: |
211 |
| - curr_stage += stages[i] |
212 |
| - else: |
213 |
| - # split this stage into multiple |
214 |
| - merged_stages.append(list(chunks(stages[i], max_batch_size))) |
215 |
| - i += 1 |
216 |
| - if len(curr_stage): |
217 |
| - merged_stages.append([curr_stage]) |
218 |
| - return merged_stages |
219 |
| - |
220 |
| -import requests |
221 |
| - |
222 | 49 | def get_skip_existing(vinca_conf, platform):
|
223 | 50 | fn = vinca_conf.get("skip_existing")
|
224 | 51 | repodatas = []
|
|
0 commit comments