@@ -209,7 +209,7 @@ check_prerequisites() {
209
209
# Check if image exists in registry
210
210
image_exists_in_registry () {
211
211
local instance_id=" $1 "
212
- local image_name=" ${GHCR_REGISTRY} .${instance_id} :${VERSION} "
212
+ local image_name=" ${GHCR_REGISTRY} .${instance_id,, } :${VERSION} "
213
213
214
214
if [[ " $DRY_RUN " == " true" ]]; then
215
215
return 1 # In dry run, assume images don't exist
@@ -223,6 +223,138 @@ image_exists_in_registry() {
223
223
fi
224
224
}
225
225
226
+ # Fix poetry version in langchain instances
227
+ fix_poetry_version () {
228
+ local dockerfile=" $1 "
229
+ local instance_id=" $2 "
230
+
231
+ local langchain_instances=(
232
+ " langchain-ai__langchain-6456"
233
+ " langchain-ai__langchain-6483"
234
+ " langchain-ai__langchain-6765"
235
+ )
236
+
237
+ if [[ " ${langchain_instances[@]} " =~ " ${instance_id} " ]]; then
238
+ log_info " Applying poetry version fix for $instance_id " >&2
239
+ # Update the dockerfile to replace "https://install.python-poetry.org |" with "https://install.python-poetry.org | POETRY_VERSION=1.8.3"
240
+ dockerfile=$( echo " $dockerfile " | sed ' s|https://install.python-poetry.org \||https://install.python-poetry.org \| POETRY_VERSION=1.8.3|' )
241
+ fi
242
+
243
+ echo " $dockerfile "
244
+ }
245
+
246
+ # Fix poetry version in langchain instances
247
+ fix_huggingface_model_downloads () {
248
+ local dockerfile=" $1 "
249
+ local instance_id=" $2 "
250
+
251
+ local hf_instances=(
252
+ " huggingface__transformers-16661"
253
+ " huggingface__transformers-17082"
254
+ )
255
+
256
+ if [[ " ${hf_instances[@]} " =~ " ${instance_id} " ]]; then
257
+ log_info " Applying Hugging Face model download fix for $instance_id " >&2
258
+ # Update the dockerfile to add URL fix
259
+ dockerfile=$( echo " $dockerfile " | sed ' /COPY . ./a\RUN sed -i ' \' ' s|http_get(url_to_download|http_get("https://huggingface.co" + url_to_download|' \' ' src/transformers/utils/hub.py' )
260
+ fi
261
+
262
+ echo " $dockerfile "
263
+ }
264
+
265
+ # Fix pkg-config missing issue for PyAV build in transformers instances
266
+ fix_pkg_config_dockerfile () {
267
+ local dockerfile=" $1 "
268
+ local instance_id=" $2 "
269
+
270
+ # List of instance IDs that need pkg-config fix (from failed_instances.txt)
271
+ local pkg_config_instances=(
272
+ " huggingface__transformers-25358"
273
+ " huggingface__transformers-25765"
274
+ " huggingface__transformers-25884"
275
+ " huggingface__transformers-26164"
276
+ " huggingface__transformers-27463"
277
+ " huggingface__transformers-27561"
278
+ " huggingface__transformers-27717"
279
+ " huggingface__transformers-28010"
280
+ " huggingface__transformers-28517"
281
+ " huggingface__transformers-28522"
282
+ " huggingface__transformers-28535"
283
+ " huggingface__transformers-28563"
284
+ " huggingface__transformers-28940"
285
+ )
286
+
287
+ # Check if this instance needs the fix
288
+ local needs_fix=false
289
+ for pkg_config_instance in " ${pkg_config_instances[@]} " ; do
290
+ if [[ " $instance_id " == " $pkg_config_instance " ]]; then
291
+ needs_fix=true
292
+ break
293
+ fi
294
+ done
295
+
296
+ if [[ " $needs_fix " == " true" ]]; then
297
+ log_info " Applying av version fix for $instance_id " >&2
298
+ # Add pkg-config and pyav dependencies
299
+ dockerfile=$( echo " $dockerfile " | sed ' s/build-essential/build-essential pkg-config libavformat-dev libavcodec-dev libavdevice-dev libavutil-dev libswscale-dev libswresample-dev libavfilter-dev/' )
300
+ # Pre-install av==10.0.0 and modify setup.py to use compatible version
301
+ dockerfile=$( echo " $dockerfile " | sed ' /# Install PyTorch and other dependencies/i\
302
+ # Temporarily modify setup.py to replace the problematic av==9.2.0 requirement with av==10.0.0\
303
+ RUN sed -i ' \' ' s/\"av==9.2.0\",/\"av==10.0.0\",/g' \' ' setup.py\
304
+ ' )
305
+ fi
306
+
307
+ echo " $dockerfile "
308
+ }
309
+
310
+ # Fix Debian Buster EOL issues for specific instances
311
+ fix_debian_buster_dockerfile () {
312
+ local dockerfile=" $1 "
313
+ local instance_id=" $2 "
314
+
315
+ # List of instance IDs that need Debian Buster archive fix
316
+ local buster_instances=(
317
+ " angular__angular-37561"
318
+ " coder__code-server-4597"
319
+ " coder__code-server-4678"
320
+ " coder__code-server-4923"
321
+ " coder__code-server-5633"
322
+ " coder__code-server-6115"
323
+ " coder__code-server-6225"
324
+ " coder__code-server-6423"
325
+ " huggingface__transformers-6744"
326
+ " huggingface__transformers-7075"
327
+ " huggingface__transformers-7272"
328
+ " huggingface__transformers-7562"
329
+ " huggingface__transformers-8435"
330
+ " microsoft__vscode-118226"
331
+ " microsoft__vscode-122796"
332
+ " microsoft__vscode-123112"
333
+ " microsoft__vscode-124621"
334
+ " microsoft__vscode-127257"
335
+ " microsoft__vscode-128931"
336
+ " microsoft__vscode-130088"
337
+ " microsoft__vscode-132041"
338
+ " microsoft__vscode-178291"
339
+ )
340
+
341
+ # Check if this instance needs the fix
342
+ local needs_fix=false
343
+ for buster_instance in " ${buster_instances[@]} " ; do
344
+ if [[ " $instance_id " == " $buster_instance " ]]; then
345
+ needs_fix=true
346
+ break
347
+ fi
348
+ done
349
+
350
+ if [[ " $needs_fix " == " true" ]]; then
351
+ log_info " Applying Debian Buster archive fix for $instance_id " >&2
352
+ # Replace debian repositories with archive repositories before apt-get commands
353
+ echo " $dockerfile " | sed ' s|RUN apt-get update|RUN sed -i "s/deb.debian.org/archive.debian.org/g" /etc/apt/sources.list \&\& sed -i "s/security.debian.org/archive.debian.org/g" /etc/apt/sources.list \&\& apt-get update|g'
354
+ else
355
+ echo " $dockerfile "
356
+ fi
357
+ }
226
358
227
359
# Build and upload a single instance image
228
360
process_instance () {
@@ -235,6 +367,18 @@ process_instance() {
235
367
local base_commit=$( echo " $instance_data " | jq -r ' .base_commit' )
236
368
local dockerfile=$( echo " $instance_data " | jq -r ' .Dockerfile' )
237
369
370
+ # Apply pkg-config fix if needed
371
+ dockerfile=$( fix_pkg_config_dockerfile " $dockerfile " " $instance_id " )
372
+
373
+ # Apply Debian Buster fix if needed
374
+ dockerfile=$( fix_debian_buster_dockerfile " $dockerfile " " $instance_id " )
375
+
376
+ # Apply poetry lock file fix if needed
377
+ dockerfile=$( fix_poetry_version " $dockerfile " " $instance_id " )
378
+
379
+ # Apply HF URL fix
380
+ dockerfile=$( fix_huggingface_model_downloads " $dockerfile " " $instance_id " )
381
+
238
382
log_info " Processing instance: $instance_id ($language )"
239
383
240
384
# Check if image already exists and skip if requested
@@ -244,7 +388,7 @@ process_instance() {
244
388
fi
245
389
246
390
local local_image_name=" polybench_${language,,} _${instance_id,,} "
247
- local remote_image_name=" ${GHCR_REGISTRY} .${instance_id} "
391
+ local remote_image_name=" ${GHCR_REGISTRY} .${instance_id,, } "
248
392
249
393
# Create temporary directory for this instance
250
394
local temp_dir=$( mktemp -d)
@@ -298,12 +442,12 @@ process_instance() {
298
442
log_success " Pushed $instance_id to registry"
299
443
300
444
# Add URL to package settings file for batch processing
301
- local settings_url=" https://github.com/users/${GH_USERNAME} /packages/container/swe-polybench.eval.x86_64.${instance_id} /settings"
445
+ local settings_url=" https://github.com/users/${GH_USERNAME} /packages/container/swe-polybench.eval.x86_64.${instance_id,, } /settings"
302
446
echo " $settings_url " >> package_settings_urls.txt
303
447
304
448
# Note about manual visibility setting
305
449
log_warning " Package uploaded as private. To make it public, visit:"
306
- log_warning " https://github.com/users/${GH_USERNAME} /packages/container/swe-polybench.eval.x86_64.${instance_id} /settings"
450
+ log_warning " https://github.com/users/${GH_USERNAME} /packages/container/swe-polybench.eval.x86_64.${instance_id,, } /settings"
307
451
else
308
452
log_info " DRY RUN: Would tag and push $instance_id "
309
453
fi
@@ -332,6 +476,10 @@ export -f log_success
332
476
export -f log_warning
333
477
export -f log_error
334
478
export -f image_exists_in_registry
479
+ export -f fix_pkg_config_dockerfile
480
+ export -f fix_debian_buster_dockerfile
481
+ export -f fix_poetry_version
482
+ export -f fix_huggingface_model_downloads
335
483
export GHCR_REGISTRY VERSION DRY_RUN REPO_PATH SKIP_EXISTING GH_PAT
336
484
export RED GREEN YELLOW BLUE NC
337
485
export SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd) "
@@ -430,6 +578,10 @@ $(declare -f log_success)
430
578
$( declare -f log_warning)
431
579
$( declare -f log_error)
432
580
$( declare -f image_exists_in_registry)
581
+ $( declare -f fix_pkg_config_dockerfile)
582
+ $( declare -f fix_debian_buster_dockerfile)
583
+ $( declare -f fix_poetry_version)
584
+ $( declare -f fix_huggingface_model_downloads)
433
585
export GHCR_REGISTRY="$GHCR_REGISTRY "
434
586
export VERSION="$VERSION "
435
587
export DRY_RUN="$DRY_RUN "
0 commit comments