helloadhavan/github_issues huggingface dataset:
Repository: ggml-org/llama.cpp
Pull request: Handle legacy 'context' attachments

Close #16374

Changed files:
filename: tools/server/webui/src/app.d.ts
patch: @@ -31,7 +31,8 @@ import type {
 	DatabaseMessageExtraAudioFile,
 	DatabaseMessageExtraImageFile,
 	DatabaseMessageExtraTextFile,
-	DatabaseMessageExtraPdfFile
+	DatabaseMessageExtraPdfFile,
+	DatabaseMessageExtraLegacyContext
 } from '$lib/types/database';
 
 import type {
@@ -73,6 +74,7 @@ declare global {
 		DatabaseMessageExtraImageFile,
 		DatabaseMessageExtraTextFile,
 		DatabaseMessageExtraPdfFile,
+		DatabaseMessageExtraLegacyContext,
 		SettingsConfigValue,
 		SettingsFieldConfig,
 		SettingsConfigType,

filename: tools/server/webui/src/lib/components/app/chat/ChatAttachments/ChatAttachmentsList.svelte
patch: @@ -94,6 +94,17 @@
 					attachmentIndex: index,
 					textContent: attachment.content
 				});
+			} else if (attachment.type === 'context') {
+				// Legacy format from old webui - treat as text file
+				items.push({
+					id: `attachment-${index}`,
+					name: attachment.name,
+					type: 'text',
+					isImage: false,
+					attachment,
+					attachmentIndex: index,
+					textContent: attachment.content
+				});
 			} else if (attachment.type === 'audioFile') {
 				items.push({
 					id: `attachment-${index}`,

filename: tools/server/webui/src/lib/services/chat.ts
patch: @@ -462,6 +462,19 @@ export class ChatService {
 			});
 		}
 
+		// Handle legacy 'context' type from old webui (pasted content)
+		const legacyContextFiles = message.extra.filter(
+			(extra: DatabaseMessageExtra): extra is DatabaseMessageExtraLegacyContext =>
+				extra.type === 'context'
+		);
+
+		for (const legacyContextFile of legacyContextFiles) {
+			contentParts.push({
+				type: 'text',
+				text: `\n\n--- File: ${legacyContextFile.name} ---\n${legacyContextFile.content}`
+			});
+		}
+
 		const audioFiles = message.extra.filter(
 			(extra: DatabaseMessageExtra): extra is DatabaseMessageExtraAudioFile =>
 				extra.type === 'audioFile'

filename: tools/server/webui/src/lib/types/database.d.ts
patch: @@ -34,11 +34,22 @@ export interface DatabaseMessageExtraPdfFile {
 	processedAsImages: boolean; // Whether PDF was processed as images
 }
 
+/**
+ * Legacy format from old webui - pasted content was stored as "context" type
+ * @deprecated Use DatabaseMessageExtraTextFile instead
+ */
+export interface DatabaseMessageExtraLegacyContext {
+	type: 'context';
+	name: string;
+	content: string;
+}
+
 export type DatabaseMessageExtra =
 	| DatabaseMessageExtraImageFile
 	| DatabaseMessageExtraTextFile
 	| DatabaseMessageExtraAudioFile
-	| DatabaseMessageExtraPdfFile;
+	| DatabaseMessageExtraPdfFile
+	| DatabaseMessageExtraLegacyContext;
 
 export interface DatabaseMessage {
 	id: string;
Repository: facebook/react
Pull request: [ci] Remove RELEASE_CHANNEL_stable_yarn_test_dom_fixtures from circleci

Stack from [ghstack](https://github.com/ezyang/ghstack) (oldest at bottom):
* __->__ #30359
* #30358
* #30357
* #30356
* #30355
* #30354
* #30353
* #30352



Changed files:
filename: .github/workflows/runtime_build_and_test.yml
patch: @@ -348,7 +348,7 @@ jobs:
       - run: yarn check-release-dependencies
 
   RELEASE_CHANNEL_stable_yarn_test_dom_fixtures:
-    name: Check yarn_test_dom_fixtures (stable)
+    name: Check fixtures DOM (stable)
     needs: build_and_lint
     runs-on: ubuntu-latest
     steps:
Repository: facebook/react
Pull request: [ci] Add RELEASE_CHANNEL_stable_yarn_test_dom_fixtures to gh actions

Stack from [ghstack](https://github.com/ezyang/ghstack) (oldest at bottom):
* #30359
* __->__ #30358
* #30357
* #30356
* #30355
* #30354
* #30353
* #30352



Changed files:
filename: .github/workflows/runtime_build_and_test.yml
patch: @@ -348,7 +348,7 @@ jobs:
       - run: yarn check-release-dependencies
 
   RELEASE_CHANNEL_stable_yarn_test_dom_fixtures:
-    name: Check yarn_test_dom_fixtures (stable)
+    name: Check fixtures DOM (stable)
     needs: build_and_lint
     runs-on: ubuntu-latest
     steps:
Repository: huggingface/transformers
Pull request: [v5] Remove train kwargs

# What does this PR do?

This PR removes train kwargs. There were used for deprecated arguments but since we are removing them, we can also safely remove the kwargs. 

Changed files:
filename: src/transformers/trainer.py
patch: @@ -2131,7 +2131,6 @@ def train(
         resume_from_checkpoint: Optional[Union[str, bool]] = None,
         trial: Union["optuna.Trial", dict[str, Any], None] = None,
         ignore_keys_for_eval: Optional[list[str]] = None,
-        **kwargs: Any,
     ):
         """
         Main training entry point.
@@ -2146,8 +2145,6 @@ def train(
             ignore_keys_for_eval (`list[str]`, *optional*)
                 A list of keys in the output of your model (if it is a dictionary) that should be ignored when
                 gathering predictions for evaluation during the training.
-            kwargs (`dict[str, Any]`, *optional*):
-                Additional keyword arguments used to hide deprecated arguments
         """
         if resume_from_checkpoint is False:
             resume_from_checkpoint = None
@@ -2179,15 +2176,6 @@ def train(
         ):
             self._move_model_to_device(self.model, args.device)
 
-        if "model_path" in kwargs:
-            resume_from_checkpoint = kwargs.pop("model_path")
-            warnings.warn(
-                "`model_path` is deprecated and will be removed in a future version. Use `resume_from_checkpoint` "
-                "instead.",
-                FutureWarning,
-            )
-        if len(kwargs) > 0:
-            raise TypeError(f"train() got unexpected keyword arguments: {', '.join(list(kwargs.keys()))}.")
         # This might change the seed so needs to run first.
         self._hp_search_setup(trial)
         self._train_batch_size = self.args.train_batch_size
Repository: facebook/react
Pull request: [ci] Remove run_fixtures_flight_tests from circleci

Stack from [ghstack](https://github.com/ezyang/ghstack) (oldest at bottom):
* #30359
* #30358
* __->__ #30357
* #30356
* #30355
* #30354
* #30353
* #30352



Changed files:
filename: .github/workflows/runtime_build_and_test.yml
patch: @@ -397,9 +397,13 @@ jobs:
       - name: Archive Flight fixture artifacts
         uses: actions/upload-artifact@v4
         with:
-          path: |
-            fixtures/flight/playwright-report
-            fixtures/flight/test-results
+          name: flight-playwright-report
+          path: fixtures/flight/playwright-report
+      - name: Archive Flight fixture artifacts
+        uses: actions/upload-artifact@v4
+        with:
+          name: flight-test-results
+          path: fixtures/flight/test-results
 
   # ----- DEVTOOLS -----
   build_devtools_and_process_artifacts:
Repository: huggingface/transformers
Pull request: [v5] Remove tokenizer from Trainer

# What does this PR do?

This PR removes tokenizers from Trainer as it will be deprecated for v5. Since we removed it from the init, I think it should also make sense to remove the setter and the property method for tokenizer 

Changed files:
filename: src/transformers/trainer.py
patch: @@ -177,7 +177,6 @@
     logging,
     strtobool,
 )
-from .utils.deprecation import deprecate_kwarg
 from .utils.import_utils import requires
 from .utils.quantization_config import QuantizationMethod
 
@@ -406,7 +405,6 @@ class Trainer:
     # Those are used as methods of the Trainer in examples.
     from .trainer_pt_utils import _get_learning_rate, log_metrics, metrics_format, save_metrics, save_state
 
-    @deprecate_kwarg("tokenizer", new_name="processing_class", version="5.0.0", raise_if_both_names=True)
     def __init__(
         self,
         model: Union[PreTrainedModel, nn.Module, None] = None,
@@ -774,18 +772,6 @@ def __init__(
             xs.set_global_mesh(xs.Mesh(np.array(range(num_devices)), (num_devices, 1), axis_names=("fsdp", "tensor")))
         self.is_fsdp_xla_v1_enabled = self.is_fsdp_xla_enabled and not self.is_fsdp_xla_v2_enabled
 
-    @property
-    def tokenizer(self) -> Optional[PreTrainedTokenizerBase]:
-        logger.warning("Trainer.tokenizer is now deprecated. You should use Trainer.processing_class instead.")
-        return self.processing_class
-
-    @tokenizer.setter
-    def tokenizer(self, processing_class) -> None:
-        logger.warning(
-            "Trainer.tokenizer is now deprecated. You should use `Trainer.processing_class = processing_class` instead."
-        )
-        self.processing_class = processing_class
-
     def _activate_neftune(self, model):
         r"""
         Activates the neftune as presented in this code: https://github.com/neelsjain/NEFTune and paper:

filename: src/transformers/trainer_seq2seq.py
patch: @@ -27,7 +27,6 @@
 from .integrations.fsdp import is_fsdp_managed_module
 from .trainer import Trainer
 from .utils import is_datasets_available, logging
-from .utils.deprecation import deprecate_kwarg
 
 
 if is_datasets_available():
@@ -51,7 +50,6 @@
 
 
 class Seq2SeqTrainer(Trainer):
-    @deprecate_kwarg("tokenizer", new_name="processing_class", version="5.0.0", raise_if_both_names=True)
     def __init__(
         self,
         model: Optional[Union["PreTrainedModel", nn.Module]] = None,
Repository: denoland/deno
Pull request: ci: add lint ci status job

We use this job in the main branch rule status checks for PRs.

<img width="437" height="162" alt="image" src="https://github.com/user-attachments/assets/a4f0f3ae-0f8c-447c-a627-b58b06d82496" />


Changed files:
filename: .github/workflows/ci.generate.ts
patch: @@ -1413,6 +1413,30 @@ const publishCanaryJob = job("publish-canary", {
   })(),
 });
 
+// === lint ci status job (status check gate) ===
+
+const lintCiStatusJob = job("lint-ci-status", {
+  name: "lint ci status",
+  // We use this job in the main branch rule status checks for PRs.
+  // All jobs that are required to pass on a PR should be listed here.
+  needs: [
+    benchJob,
+    ...buildJobs.map((j) => [j.buildJob, ...j.additionalJobs]).flat(),
+    lintJob,
+  ],
+  if: conditions.status.always(),
+  runsOn: "ubuntu-latest",
+  steps: step({
+    name: "Ensure CI success",
+    run: [
+      "if [[ \"${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}\" == \"true\" ]]; then",
+      "  echo 'CI failed'",
+      "  exit 1",
+      "fi",
+    ],
+  }),
+});
+
 // === generate workflow ===
 
 const workflow = createWorkflow({
@@ -1447,6 +1471,7 @@ const workflow = createWorkflow({
     benchJob,
     ...buildJobs.map((j) => [j.buildJob, ...j.additionalJobs]).flat(),
     lintJob,
+    lintCiStatusJob,
     publishCanaryJob,
   ],
 });

filename: .github/workflows/ci.yml
patch: @@ -5025,6 +5025,49 @@ jobs:
             !./target/*/*.zip
             !./target/*/*.tar.gz
           key: '94-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-lint-${{ github.sha }}'
+  lint-ci-status:
+    name: lint ci status
+    needs:
+      - bench
+      - build-debug-macos-x86_64
+      - test-debug-macos-x86_64
+      - build-release-macos-x86_64
+      - test-release-macos-x86_64
+      - build-debug-macos-aarch64
+      - test-debug-macos-aarch64
+      - test-libs-debug-macos-aarch64
+      - build-release-macos-aarch64
+      - test-release-macos-aarch64
+      - build-debug-windows-x86_64
+      - test-debug-windows-x86_64
+      - test-libs-debug-windows-x86_64
+      - build-release-windows-x86_64
+      - test-release-windows-x86_64
+      - build-debug-windows-aarch64
+      - test-debug-windows-aarch64
+      - build-release-windows-aarch64
+      - test-release-windows-aarch64
+      - build-release-linux-x86_64
+      - test-release-linux-x86_64
+      - wpt-release-linux-x86_64
+      - build-debug-linux-x86_64
+      - test-debug-linux-x86_64
+      - build-libs-debug-linux-x86_64
+      - build-debug-linux-aarch64
+      - test-debug-linux-aarch64
+      - test-libs-debug-linux-aarch64
+      - build-release-linux-aarch64
+      - test-release-linux-aarch64
+      - lint
+    if: always()
+    runs-on: ubuntu-latest
+    steps:
+      - name: Ensure CI success
+        run: |-
+          if [[ "${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}" == "true" ]]; then
+            echo 'CI failed'
+            exit 1
+          fi
   publish-canary:
     name: publish canary
     needs:
Repository: facebook/react
Pull request: [ci] Add run_fixtures_flight_tests to gh actions

Stack from [ghstack](https://github.com/ezyang/ghstack) (oldest at bottom):
* #30359
* #30358
* #30357
* __->__ #30356
* #30355
* #30354
* #30353
* #30352



Changed files:
filename: .github/workflows/runtime_build_and_test.yml
patch: @@ -397,9 +397,13 @@ jobs:
       - name: Archive Flight fixture artifacts
         uses: actions/upload-artifact@v4
         with:
-          path: |
-            fixtures/flight/playwright-report
-            fixtures/flight/test-results
+          name: flight-playwright-report
+          path: fixtures/flight/playwright-report
+      - name: Archive Flight fixture artifacts
+        uses: actions/upload-artifact@v4
+        with:
+          name: flight-test-results
+          path: fixtures/flight/test-results
 
   # ----- DEVTOOLS -----
   build_devtools_and_process_artifacts:
Repository: ollama/ollama
Pull request: Harden for deps file being empty (or short)

Breadcrumb....

Rosetta had a bug in 14.3 that causes our build to fail to generate the deps file properly since ldd fails with an error when trying to process the hip library dependency chain `cannot enable executable stack as shared object requires: Invalid argument` 

Changed files:
filename: llm/generate/gen_linux.sh
patch: @@ -194,6 +194,12 @@ if [ -d "${ROCM_PATH}" ]; then
     for dep in $(ldd "${BUILD_DIR}/lib/libext_server.so" | grep "=>" | cut -f2 -d= | cut -f2 -d' ' | grep -e rocm -e amdgpu -e libtinfo ); do
         echo "${dep}" >> "${BUILD_DIR}/lib/deps.txt"
     done
+    # bomb out if for some reason we didn't get a few deps
+    if [ $(cat "${BUILD_DIR}/lib/deps.txt" | wc -l ) -lt 8 ] ; then
+        cat "${BUILD_DIR}/lib/deps.txt"
+        echo "ERROR: deps file short"
+        exit 1
+    fi
     compress_libs
 fi
Repository: huggingface/transformers
Pull request: [v5] More Training Args cleaning 

# What does this PR do?

This PR removes EvaluationStrategy as it is deprecated

Changed files:
filename: examples/legacy/seq2seq/finetune_trainer.py
patch: @@ -32,7 +32,7 @@
     MBartTokenizerFast,
     set_seed,
 )
-from transformers.trainer_utils import EvaluationStrategy, is_main_process
+from transformers.trainer_utils import is_main_process
 from transformers.training_args import ParallelMode
 from utils import (
     Seq2SeqDataCollator,
@@ -271,7 +271,7 @@ def main():
             max_source_length=data_args.max_source_length,
             prefix=model.config.prefix or "",
         )
-        if training_args.do_eval or training_args.eval_strategy != EvaluationStrategy.NO
+        if training_args.do_eval
         else None
     )
     test_dataset = (

filename: src/transformers/trainer_utils.py
patch: @@ -224,12 +224,6 @@ class SaveStrategy(ExplicitEnum):
     BEST = "best"
 
 
-class EvaluationStrategy(ExplicitEnum):
-    NO = "no"
-    STEPS = "steps"
-    EPOCH = "epoch"
-
-
 class HubStrategy(ExplicitEnum):
     END = "end"
     EVERY_SAVE = "every_save"

filename: src/transformers/training_args.py
patch: @@ -25,7 +25,6 @@
 
 from .debug_utils import DebugOption
 from .trainer_utils import (
-    EvaluationStrategy,
     FSDPOption,
     HubStrategy,
     IntervalStrategy,
@@ -1481,15 +1480,6 @@ def __post_init__(self):
         if self.disable_tqdm is None:
             self.disable_tqdm = logger.getEffectiveLevel() > logging.WARN
 
-        if isinstance(self.eval_strategy, EvaluationStrategy):
-            warnings.warn(
-                "using `EvaluationStrategy` for `eval_strategy` is deprecated and will be removed in version 5"
-                " of 🤗 Transformers. Use `IntervalStrategy` instead",
-                FutureWarning,
-            )
-            # Go back to the underlying string or we won't be able to instantiate `IntervalStrategy` on it.
-            self.eval_strategy = self.eval_strategy.value
-
         self.eval_strategy = IntervalStrategy(self.eval_strategy)
         self.logging_strategy = IntervalStrategy(self.logging_strategy)
         self.save_strategy = SaveStrategy(self.save_strategy)
Repository: denoland/deno
Pull request: Revert "fix(compile): use SHT_NOTE to prevent `strip` from removing deno compiler data"

Reverts denoland/deno#32102

https://github.com/denoland/deno/pull/32102#issuecomment-3880173598

Changed files:
filename: Cargo.lock
patch: @@ -6090,14 +6090,13 @@ dependencies = [
 
 [[package]]
 name = "libsui"
-version = "0.13.0"
+version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dd268ef2098e102e82c67d9de9076a2f1cef12ae284a7a35635ea30fa2dda9e"
+checksum = "e2b6d6bbf43ba95540d1681826c8d7acb9744708398463ccbcd3c3a5d04c2fdc"
 dependencies = [
  "editpe",
  "image",
  "libc",
- "object",
  "sha2",
  "windows-sys 0.48.0",
  "zerocopy 0.7.32",
@@ -6784,9 +6783,6 @@ version = "0.36.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9"
 dependencies = [
- "crc32fast",
- "hashbrown 0.14.5",
- "indexmap 2.9.0",
  "memchr",
 ]
 

filename: Cargo.toml
patch: @@ -328,7 +328,7 @@ dprint-plugin-markdown = "=0.20.0"
 dprint-plugin-typescript = "=0.95.15"
 env_logger = "=0.11.6"
 fancy-regex = "=0.14.0"
-libsui = "0.13.0"
+libsui = "0.12.6"
 malva = "=0.12.1"
 markup_fmt = "=0.22.0"
 open = "5.0.1"

filename: tests/specs/compile/linux_strip/__test__.jsonc
patch: @@ -1,20 +0,0 @@
-{
-  "if": "linux",
-  "tempDir": true,
-  "steps": [
-    {
-      "args": "compile --output main main.ts",
-      "output": "[WILDCARD]"
-    },
-    {
-      "commandName": "strip",
-      "args": ["./main"],
-      "output": ""
-    },
-    {
-      "commandName": "./main",
-      "args": [],
-      "output": "main.out"
-    }
-  ]
-}

filename: tests/specs/compile/linux_strip/main.out
patch: @@ -1 +0,0 @@
-stripped binary still works

filename: tests/specs/compile/linux_strip/main.ts
patch: @@ -1 +0,0 @@
-console.log("stripped binary still works");
Repository: facebook/react
Pull request: [ci] Remove check_error_codes from circleci

Stack from [ghstack](https://github.com/ezyang/ghstack) (oldest at bottom):
* #30359
* #30358
* #30357
* #30356
* __->__ #30355
* #30354
* #30353
* #30352



Changed files:
filename: .circleci/config.yml
patch: @@ -311,19 +311,6 @@ jobs:
       - store_artifacts:
           path: ./tmp/screenshots
 
-  check_error_codes:
-    docker: *docker
-    environment: *environment
-    steps:
-      - checkout
-      - attach_workspace: *attach_workspace
-      - setup_node_modules
-      - run:
-          name: Search build artifacts for unminified errors
-          command: |
-            yarn extract-errors
-            git diff --quiet || (echo "Found unminified errors. Either update the error codes map or disable error minification for the affected build, if appropriate." && false)
-
   RELEASE_CHANNEL_stable_yarn_test_dom_fixtures:
     docker: *docker
     environment: *environment
@@ -400,9 +387,6 @@ workflows:
           requires:
             - download_base_build_for_sizebot
             - yarn_build
-      - check_error_codes:
-          requires:
-            - yarn_build
       - RELEASE_CHANNEL_stable_yarn_test_dom_fixtures:
           requires:
             - yarn_build
Repository: ggml-org/llama.cpp
Pull request: vulkan: add more num_blocks instantiations in rms_norm

I noticed a couple models had rms_norm running slower than others, because the sizes from 8-16 were all doing 16 iterations. This change adds a couple more special cases to improve these sizes:

```
DeepSeek-R1-Distill-Qwen-14B-Q4_K_M.gguf
before:
RMS_NORM_MUL RMS_NORM(5120,1,1,1): 124257 x 6.172 us
| qwen2 14B Q4_K - Medium        |   8.37 GiB |    14.77 B | Vulkan     |  99 |  1 |           tg128 |        136.93 ± 0.09 |

after: 
RMS_NORM_MUL RMS_NORM(5120,1,1,1): 124257 x 4.274 us
| qwen2 14B Q4_K - Medium        |   8.37 GiB |    14.77 B | Vulkan     |  99 |  1 |           tg128 |        139.89 ± 0.15 |

Mistral-22B-v0.2-Q4_K_M.gguf
before:
RMS_NORM_MUL RMS_NORM(6144,1,1,1): 144753 x 6.215 us
| llama ?B Q4_K - Medium         |  12.42 GiB |    22.24 B | Vulkan     |  99 |  1 |           tg128 |         95.67 ± 0.14 |

after:
RMS_NORM_MUL RMS_NORM(6144,1,1,1): 144753 x 4.766 
| llama ?B Q4_K - Medium         |  12.42 GiB |    22.24 B | Vulkan     |  99 |  1 |           tg128 |         97.10 ± 0.08 |
```

The perf_logger results are over a full run of tg128 with `-r 10`.

Changed files:
filename: ggml/src/ggml-vulkan/vulkan-shaders/rms_norm.comp
patch: @@ -131,8 +131,12 @@ void main() {
         rms_norm(num_blocks);
     } else if (num_blocks > 16) {
         rms_norm(32);
-    } else if (num_blocks > 8) {
+    } else if (num_blocks > 12) {
         rms_norm(16);
+    } else if (num_blocks > 10) {
+        rms_norm(12);
+    } else if (num_blocks > 8) {
+        rms_norm(10);
     } else if (num_blocks > 4) {
         rms_norm(8);
     } else if (num_blocks == 4) {
Repository: facebook/react
Pull request: [ci] Add check_error_codes to gh actions

Stack from [ghstack](https://github.com/ezyang/ghstack) (oldest at bottom):
* #30359
* #30358
* #30357
* #30356
* #30355
* __->__ #30354
* #30353
* #30352



Changed files:
filename: .github/workflows/runtime_build_and_test.yml
patch: @@ -290,6 +290,36 @@ jobs:
             ./build.tgz
             ./build2.tgz
 
+  check_error_codes:
+    name: Search build artifacts for unminified errors
+    needs: build_and_lint
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+      - uses: actions/setup-node@v4
+        with:
+          node-version: 18.20.1
+          cache: yarn
+          cache-dependency-path: yarn.lock
+      - name: Restore cached node_modules
+        uses: actions/cache@v4
+        id: node_modules
+        with:
+          path: "**/node_modules"
+          key: ${{ runner.arch }}-${{ runner.os }}-modules-${{ hashFiles('yarn.lock') }}
+      - run: yarn install --frozen-lockfile
+      - name: Restore archived build
+        uses: actions/download-artifact@v4
+        with:
+          path: build
+          merge-multiple: true
+      - name: Display structure of build
+        run: ls -R build
+      - name: Search build artifacts for unminified errors
+        run: |
+          yarn extract-errors
+          git diff --quiet || (echo "Found unminified errors. Either update the error codes map or disable error minification for the affected build, if appropriate." && false)
+
   check_release_dependencies:
     name: Check release dependencies
     needs: build_and_lint
Repository: ollama/ollama
Pull request: Add ollama executable peer dir for rocm

This allows people who package up ollama on their own to place the rocm dependencies in a peer directory to the ollama executable much like our windows install flow.

Changed files:
filename: gpu/amd_linux.go
patch: @@ -287,6 +287,21 @@ func AMDValidateLibDir() (string, error) {
 		return rocmTargetDir, nil
 	}
 
+	// next to the running binary
+	exe, err := os.Executable()
+	if err == nil {
+		peerDir := filepath.Dir(exe)
+		if rocmLibUsable(peerDir) {
+			slog.Debug("detected ROCM next to ollama executable " + peerDir)
+			return rocmTargetDir, setupLink(peerDir, rocmTargetDir)
+		}
+		peerDir = filepath.Join(filepath.Dir(exe), "rocm")
+		if rocmLibUsable(peerDir) {
+			slog.Debug("detected ROCM next to ollama executable " + peerDir)
+			return rocmTargetDir, setupLink(peerDir, rocmTargetDir)
+		}
+	}
+
 	// Well known ollama installer path
 	installedRocmDir := "/usr/share/ollama/lib/rocm"
 	if rocmLibUsable(installedRocmDir) {