@@ -209,7 +209,7 @@ check_prerequisites() {
209209# Check if image exists in registry
210210image_exists_in_registry () {
211211 local instance_id=" $1 "
212- local image_name=" ${GHCR_REGISTRY} .${instance_id} :${VERSION} "
212+ local image_name=" ${GHCR_REGISTRY} .${instance_id,, } :${VERSION} "
213213
214214 if [[ " $DRY_RUN " == " true" ]]; then
215215 return 1 # In dry run, assume images don't exist
@@ -223,6 +223,138 @@ image_exists_in_registry() {
223223 fi
224224}
225225
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+ }
226358
227359# Build and upload a single instance image
228360process_instance () {
@@ -235,6 +367,18 @@ process_instance() {
235367 local base_commit=$( echo " $instance_data " | jq -r ' .base_commit' )
236368 local dockerfile=$( echo " $instance_data " | jq -r ' .Dockerfile' )
237369
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+
238382 log_info " Processing instance: $instance_id ($language )"
239383
240384 # Check if image already exists and skip if requested
@@ -244,7 +388,7 @@ process_instance() {
244388 fi
245389
246390 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,, } "
248392
249393 # Create temporary directory for this instance
250394 local temp_dir=$( mktemp -d)
@@ -298,12 +442,12 @@ process_instance() {
298442 log_success " Pushed $instance_id to registry"
299443
300444 # 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"
302446 echo " $settings_url " >> package_settings_urls.txt
303447
304448 # Note about manual visibility setting
305449 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"
307451 else
308452 log_info " DRY RUN: Would tag and push $instance_id "
309453 fi
@@ -332,6 +476,10 @@ export -f log_success
332476export -f log_warning
333477export -f log_error
334478export -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
335483export GHCR_REGISTRY VERSION DRY_RUN REPO_PATH SKIP_EXISTING GH_PAT
336484export RED GREEN YELLOW BLUE NC
337485export SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd) "
@@ -430,6 +578,10 @@ $(declare -f log_success)
430578$( declare -f log_warning)
431579$( declare -f log_error)
432580$( 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)
433585export GHCR_REGISTRY="$GHCR_REGISTRY "
434586export VERSION="$VERSION "
435587export DRY_RUN="$DRY_RUN "
0 commit comments