helloadhavan/github_issues huggingface dataset:
Repository: denoland/deno
Pull request: fix(ext/node): map BadResource error to the corresponding node error

Allows https://github.com/nodejs/node/blob/v24.2.0/test/parallel/test-fs-stat-bigint.js test to pass

Changed files:
filename: ext/node/polyfills/_fs/_fs_fstat.ts
patch: @@ -12,6 +12,7 @@ import {
   Stats,
 } from "ext:deno_node/_fs/_fs_stat.ts";
 import { FsFile } from "ext:deno_fs/30_fs.js";
+import { denoErrorToNodeError } from "ext:deno_node/internal/errors.ts";
 
 export function fstat(fd: number, callback: statCallback): void;
 export function fstat(
@@ -43,7 +44,7 @@ export function fstat(
 
   new FsFile(fd, Symbol.for("Deno.internal.FsFile")).stat().then(
     (stat) => callback(null, CFISBIS(stat, options.bigint)),
-    (err) => callback(err),
+    (err) => callback(denoErrorToNodeError(err, { syscall: "fstat" })),
   );
 }
 
@@ -60,8 +61,13 @@ export function fstatSync(
   fd: number,
   options?: statOptions,
 ): Stats | BigIntStats {
-  const origin = new FsFile(fd, Symbol.for("Deno.internal.FsFile")).statSync();
-  return CFISBIS(origin, options?.bigint || false);
+  try {
+    const origin = new FsFile(fd, Symbol.for("Deno.internal.FsFile"))
+      .statSync();
+    return CFISBIS(origin, options?.bigint || false);
+  } catch (err) {
+    throw denoErrorToNodeError(err, { syscall: "fstat" });
+  }
 }
 
 export function fstatPromise(fd: number): Promise<Stats>;

filename: ext/node/polyfills/internal/errors.ts
patch: @@ -65,6 +65,7 @@ import {
   codeMap,
   errorMap,
   mapSysErrnoToUvErrno,
+  UV_EBADF,
 } from "ext:deno_node/internal_binding/uv.ts";
 import { assert } from "ext:deno_node/_util/asserts.ts";
 import { isWindows } from "ext:deno_node/_util/os.ts";
@@ -2669,6 +2670,13 @@ interface UvExceptionContext {
   dest?: string;
 }
 export function denoErrorToNodeError(e: Error, ctx: UvExceptionContext) {
+  if (ObjectPrototypeIsPrototypeOf(Deno.errors.BadResource.prototype, e)) {
+    return uvException({
+      errno: UV_EBADF,
+      ...ctx,
+    });
+  }
+
   const errno = extractOsErrorNumberFromErrorMessage(e);
   if (typeof errno === "undefined") {
     return e;

filename: tests/node_compat/config.toml
patch: @@ -481,6 +481,7 @@
 "parallel/test-fs-realpath-buffer-encoding.js" = {}
 "parallel/test-fs-rename-type-check.js" = {}
 "parallel/test-fs-rmdir-type-check.js" = {}
+"parallel/test-fs-stat-bigint.js" = {}
 "parallel/test-fs-statfs.js" = {}
 "parallel/test-fs-stream-fs-options.js" = {}
 "parallel/test-fs-stream-options.js" = {}
Repository: facebook/react
Pull request: Expose extra internals in FB build of react-dom/unstable-new-scheduler

The Facebook build of React DOM uses a forked entry point that exposes additional secret internals. I didn't account for this when I added the react-dom/unstable-new-scheduler build, so the extra internals are currently missing. This commit adds them.

Changed files:
filename: packages/react-dom/unstable-new-scheduler.fb.js
patch: @@ -0,0 +1,14 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+'use strict';
+
+const ReactDOMFB = require('./src/client/ReactDOMFB');
+
+// TODO: decide on the top-level export form.
+// This is hacky but makes it work with both Rollup and Jest.
+module.exports = ReactDOMFB.default || ReactDOMFB;
Repository: ollama/ollama
Pull request: fix(client): trim trailing slash

Also sets different default ports when scheme is in OLLAMA_HOST and is either `http` or `https`.

e.g. `OLLAMA_HOST=https://example.com` will now use port 443 instead of 11434.

Resolves #910 

Changed files:
filename: api/client.go
patch: @@ -44,14 +44,24 @@ func checkError(resp *http.Response, body []byte) error {
 }
 
 func ClientFromEnvironment() (*Client, error) {
+	defaultPort := "11434"
+
 	scheme, hostport, ok := strings.Cut(os.Getenv("OLLAMA_HOST"), "://")
-	if !ok {
+	switch {
+	case !ok:
 		scheme, hostport = "http", os.Getenv("OLLAMA_HOST")
+	case scheme == "http":
+		defaultPort = "80"
+	case scheme == "https":
+		defaultPort = "443"
 	}
 
+	// trim trailing slashes
+	hostport = strings.TrimRight(hostport, "/")
+
 	host, port, err := net.SplitHostPort(hostport)
 	if err != nil {
-		host, port = "127.0.0.1", "11434"
+		host, port = "127.0.0.1", defaultPort
 		if ip := net.ParseIP(strings.Trim(hostport, "[]")); ip != nil {
 			host = ip.String()
 		} else if hostport != "" {

filename: api/client_test.go
patch: @@ -0,0 +1,43 @@
+package api
+
+import "testing"
+
+func TestClientFromEnvironment(t *testing.T) {
+	type testCase struct {
+		value  string
+		expect string
+		err    error
+	}
+
+	testCases := map[string]*testCase{
+		"empty":                      {value: "", expect: "http://127.0.0.1:11434"},
+		"only address":               {value: "1.2.3.4", expect: "http://1.2.3.4:11434"},
+		"only port":                  {value: ":1234", expect: "http://:1234"},
+		"address and port":           {value: "1.2.3.4:1234", expect: "http://1.2.3.4:1234"},
+		"scheme http and address":    {value: "http://1.2.3.4", expect: "http://1.2.3.4:80"},
+		"scheme https and address":   {value: "https://1.2.3.4", expect: "https://1.2.3.4:443"},
+		"scheme, address, and port":  {value: "https://1.2.3.4:1234", expect: "https://1.2.3.4:1234"},
+		"hostname":                   {value: "example.com", expect: "http://example.com:11434"},
+		"hostname and port":          {value: "example.com:1234", expect: "http://example.com:1234"},
+		"scheme http and hostname":   {value: "http://example.com", expect: "http://example.com:80"},
+		"scheme https and hostname":  {value: "https://example.com", expect: "https://example.com:443"},
+		"scheme, hostname, and port": {value: "https://example.com:1234", expect: "https://example.com:1234"},
+		"trailing slash":             {value: "example.com/", expect: "http://example.com:11434"},
+		"trailing slash port":        {value: "example.com:1234/", expect: "http://example.com:1234"},
+	}
+
+	for k, v := range testCases {
+		t.Run(k, func(t *testing.T) {
+			t.Setenv("OLLAMA_HOST", v.value)
+
+			client, err := ClientFromEnvironment()
+			if err != v.err {
+				t.Fatalf("expected %s, got %s", v.err, err)
+			}
+
+			if client.base.String() != v.expect {
+				t.Fatalf("expected %s, got %s", v.expect, client.base.String())
+			}
+		})
+	}
+}
Repository: nodejs/node
Pull request: dns: set timeout to 1000ms when timeout <= 0

c-ares set `timeout` to  DEFAULT_TIMEOUT(2000ms) When timeout is <= 0, so we should schedule timer every 1000ms.
```c
if (optmask & ARES_OPT_TIMEOUTMS) {
    /* Apparently some integrations were passing -1 to tell c-ares to use
     * the default instead of just omitting the optmask */
    if (options->timeout <= 0) {
      optmask &= ~(ARES_OPT_TIMEOUTMS);
    } else {
      channel->timeout = (unsigned int)options->timeout;
    }
}

if (channel->timeout == 0) {
  channel->timeout = DEFAULT_TIMEOUT;
}
```
cc @jasnell 
- [x] `make -j4 test` (UNIX), or `vcbuild test` (Windows) passes
- [x] tests and/or benchmarks are included
- [x] documentation is changed or added
- [x] commit message follows [commit guidelines](https://github.com/nodejs/node/blob/master/doc/guides/contributing/pull-requests.md#commit-message-guidelines)


Changed files:
filename: src/cares_wrap.cc
patch: @@ -902,8 +902,7 @@ void ChannelWrap::StartTimer() {
     return;
   }
   int timeout = timeout_;
-  if (timeout == 0) timeout = 1;
-  if (timeout < 0 || timeout > 1000) timeout = 1000;
+  if (timeout <= 0 || timeout > 1000) timeout = 1000;
   uv_timer_start(timer_handle_, AresTimeout, timeout, timeout);
 }
Repository: ollama/ollama
Pull request: fix docker build annotations


Changed files:
filename: readline/term_bsd.go
patch: @@ -1,4 +1,4 @@
-// go build darwin dragonfly freebsd netbsd openbsd
+//go:build darwin || freebsd || netbsd || openbsd
 package readline
 
 import (

filename: readline/term_linux.go
patch: @@ -1,3 +1,4 @@
+//go:build linux || solaris
 package readline
 
 import (
Repository: vercel/next.js
Pull request: Fetch tag before reset for create-release-branch

This ensures we can reset to the tag even if we didn't clone deep enough to include the tag in history 

x-ref: https://github.com/vercel/next.js/actions/runs/17214240270/job/48833696068#step:10:20

Changed files:
filename: scripts/create-release-branch.js
patch: @@ -39,6 +39,10 @@ async function main() {
     stdio: 'inherit',
     shell: true,
   })
+  await execa(`git fetch origin ${tagName}`, {
+    stdio: 'inherit',
+    shell: true,
+  })
   await execa(`git reset --hard ${tagName}`, {
     stdio: 'inherit',
     shell: true,
Repository: ggml-org/llama.cpp
Pull request: common : move gpt-oss reasoning processing to init params

A bit of clean up.

Move assignment of the `thinking` field to `common_chat_params_init_gpt_oss()`, since it is gpt-oss specific.

ref: https://github.com/ggml-org/llama.cpp/pull/16934#issuecomment-3477910335

Changed files:
filename: common/chat.cpp
patch: @@ -313,7 +313,6 @@ json common_chat_msgs_to_json_oaicompat(const std::vector<common_chat_msg> & msg
         }
         if (!msg.reasoning_content.empty()) {
             jmsg["reasoning_content"] = msg.reasoning_content;
-            jmsg["thinking"] = msg.reasoning_content; // gpt-oss
         }
         if (!msg.tool_name.empty()) {
             jmsg["name"] = msg.tool_name;
@@ -1810,7 +1809,23 @@ static void common_chat_parse_deepseek_v3_1(common_chat_msg_parser & builder) {
 
 static common_chat_params common_chat_params_init_gpt_oss(const common_chat_template & tmpl, const struct templates_params & inputs) {
     common_chat_params data;
-    auto prompt = apply(tmpl, inputs);
+
+    // Copy reasoning to the "thinking" field as expected by the gpt-oss template
+    auto adjusted_messages = json::array();
+    for (const auto & msg : inputs.messages) {
+        auto has_reasoning_content = msg.contains("reasoning_content") && msg.at("reasoning_content").is_string();
+        auto has_tool_calls = msg.contains("tool_calls") && msg.at("tool_calls").is_array();
+
+        if (has_reasoning_content && has_tool_calls) {
+            auto adjusted_message = msg;
+            adjusted_message["thinking"] = msg.at("reasoning_content");
+            adjusted_messages.push_back(adjusted_message);
+        } else {
+            adjusted_messages.push_back(msg);
+        }
+    }
+
+    auto prompt = apply(tmpl, inputs, /* messages_override= */ adjusted_messages);
 
     // Check if we need to replace the return token with end token during
     // inference and without generation prompt. For more details see:
Repository: electron/electron
Pull request: fix: remove obsoleted `--inspect-brk` logic

#### Description of Change

Closes https://github.com/electron/electron/issues/46491.
Refs https://github.com/nodejs/node/pull/55679

Removes logic made redundant in https://github.com/nodejs/node/pull/55679/files.

#### Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->

- [x] PR description included and stakeholders cc'd
- [x] `npm test` passes
- [x] [PR release notes](https://github.com/electron/clerk/blob/main/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/main/README.md#examples).

#### Release Notes

Notes: Fixed an issue with `--inspect-brk`  failing in packaged apps.

Changed files:
filename: lib/browser/init.ts
patch: @@ -218,7 +218,6 @@ if (packagePath) {
   } else {
     // Call appCodeLoaded before just for safety, it doesn't matter here as _load is synchronous
     appCodeLoaded!();
-    process._firstFileName = Module._resolveFilename(path.join(packagePath, mainStartupScript), null, false);
     Module._load(path.join(packagePath, mainStartupScript), Module, true);
   }
 } else {

filename: patches/node/chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch
patch: @@ -7,24 +7,6 @@ This allows embedders to tell Node.js what the first "real" file is  when
 they use themselves as the entry point. We should try to upstream some form
 of this.
 
-diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js
-index 9b5772fe9b8babbb892c7a5ec79258472da55a76..3568fd6ea0816f62d97d46f5d497bb1b23bf4e25 100644
---- a/lib/internal/modules/cjs/loader.js
-+++ b/lib/internal/modules/cjs/loader.js
-@@ -1555,6 +1555,13 @@ Module.prototype._compile = function(content, filename, format) {
-   this[kIsExecuting] = true;
-   if (this[kIsMainSymbol] && getOptionValue('--inspect-brk')) {
-     const { callAndPauseOnStart } = internalBinding('inspector');
-+    // process._firstFileName is used by Embedders to tell node what
-+    // the first "real" file is when they use themselves as the entry
-+    // point
-+    if (process._firstFileName) {
-+      resolvedArgv = process._firstFileName;
-+      delete process._firstFileName;
-+    }
-     result = callAndPauseOnStart(compiledWrapper, thisValue, exports,
-                                  require, module, filename, dirname,
-                                  process, localGlobal, localBuffer);
 diff --git a/lib/internal/process/pre_execution.js b/lib/internal/process/pre_execution.js
 index d1c05d1717cdc825c4e48885c963c9ed65bcf51c..278665921c5160ff10b3178db27d4df319fab6b3 100644
 --- a/lib/internal/process/pre_execution.js

filename: typings/internal-ambient.d.ts
patch: @@ -255,7 +255,6 @@ declare namespace NodeJS {
     once(event: 'document-end', listener: () => any): this;
 
     // Additional properties
-    _firstFileName?: string;
     _serviceStartupScript: string;
     _getOrCreateArchive?: (path: string) => NodeJS.AsarArchive | null;
Repository: facebook/react
Pull request: Store entire build directory as CI artifacts

Updates the Circle CI config to store Facebook bundles as build artifacts. We already do this for our npm packages.

**Update:** Might as well store entire `build/` directory

Changed files:
filename: .circleci/config.yml
patch: @@ -44,4 +44,7 @@ jobs:
           path: ./node_modules.tgz
 
       - store_artifacts:
-          path: ./scripts/error-codes/codes.json
\ No newline at end of file
+          path: ./build.tgz
+
+      - store_artifacts:
+          path: ./scripts/error-codes/codes.json

filename: scripts/circleci/pack_and_store_artifact.sh
patch: @@ -2,10 +2,14 @@
 
 set -e
 
+# Compress build directory into a single tarball for easy download
+tar -zcvf ./build.tgz ./build
+
 # NPM pack all modules to ensure we archive the correct set of files
-for dir in ./build/node_modules/* ; do
+cd ./build/node_modules
+for dir in ./* ; do
   npm pack "$dir"
 done
 
-# Wrap everything in a single zip file for easy download by the publish script
-tar -zcvf ./node_modules.tgz ./*.tgz
\ No newline at end of file
+# Compress packed modules into a single tarball for easy download by the publish script
+tar -zcvf ../../node_modules.tgz ./*.tgz
Repository: vercel/next.js
Pull request: Update Rspack development test manifest

This auto-generated PR updates the development integration test manifest used when testing Rspack.

Changed files:
filename: test/rspack-dev-tests-manifest.json
patch: @@ -3547,7 +3547,7 @@
       "app-dir static/dynamic handling useSearchParams client should have empty search params on force-static"
     ],
     "flakey": [],
-    "runtimeError": false
+    "runtimeError": true
   },
   "test/e2e/app-dir/app-validation/validation.test.ts": {
     "passed": [
Repository: vercel/next.js
Pull request: Update Rspack production test manifest

This auto-generated PR updates the production integration test manifest used when testing Rspack.

Changed files:
filename: test/rspack-build-tests-manifest.json
patch: @@ -20394,11 +20394,10 @@
   },
   "test/production/pnpm-support/index.test.ts": {
     "passed": [
-      "pnpm support should build with dependencies installed via pnpm"
-    ],
-    "failed": [
+      "pnpm support should build with dependencies installed via pnpm",
       "pnpm support should execute client-side JS on each page in output: \"standalone\""
     ],
+    "failed": [],
     "pending": [],
     "flakey": [],
     "runtimeError": false
Repository: electron/electron
Pull request: fix: `NativeWindow.window_id()` returns same value for all windows

Backport of #46562

See that PR for details.


Notes: Fixed ElectronAccessibilityUI bug.

Changed files:
filename: shell/browser/native_window.cc
patch: @@ -94,8 +94,6 @@ gfx::Size GetExpandedWindowSize(const NativeWindow* window, gfx::Size size) {
 NativeWindow::NativeWindow(const gin_helper::Dictionary& options,
                            NativeWindow* parent)
     : widget_(std::make_unique<views::Widget>()), parent_(parent) {
-  ++next_id_;
-
   options.Get(options::kFrame, &has_frame_);
   options.Get(options::kTransparent, &transparent_);
   options.Get(options::kEnableLargerThanScreen, &enable_larger_than_screen_);
@@ -816,9 +814,6 @@ void NativeWindow::HandlePendingFullscreenTransitions() {
   SetFullScreen(next_transition);
 }
 
-// static
-int32_t NativeWindow::next_id_ = 0;
-
 bool NativeWindow::IsTranslucent() const {
   // Transparent windows are translucent
   if (transparent()) {

filename: shell/browser/native_window.h
patch: @@ -407,7 +407,7 @@ class NativeWindow : public base::SupportsUserData,
   NativeWindow* parent() const { return parent_; }
   bool is_modal() const { return is_modal_; }
 
-  int32_t window_id() const { return next_id_; }
+  int32_t window_id() const { return window_id_; }
 
   void add_child_window(NativeWindow* child) {
     child_windows_.push_back(child);
@@ -470,7 +470,8 @@ class NativeWindow : public base::SupportsUserData,
  private:
   std::unique_ptr<views::Widget> widget_;
 
-  static int32_t next_id_;
+  static inline int32_t next_id_ = 0;
+  const int32_t window_id_ = ++next_id_;
 
   // The content view, weak ref.
   raw_ptr<views::View> content_view_ = nullptr;
Repository: denoland/deno
Pull request: fix(ext/node): omit `smi` from `zlib.crc32` op function

Closes #30636

Changed files:
filename: ext/node/ops/zlib/mod.rs
patch: @@ -923,15 +923,15 @@ impl BrotliDecoder {
 }
 
 #[op2(fast)]
-pub fn op_zlib_crc32_string(#[string] data: &str, #[smi] value: u32) -> u32 {
+pub fn op_zlib_crc32_string(#[string] data: &str, value: u32) -> u32 {
   // SAFETY: `data` is a valid buffer.
   unsafe {
     zlib::crc32(value as c_ulong, data.as_ptr(), data.len() as u32) as u32
   }
 }
 
 #[op2(fast)]
-pub fn op_zlib_crc32(#[buffer] data: &[u8], #[smi] value: u32) -> u32 {
+pub fn op_zlib_crc32(#[buffer] data: &[u8], value: u32) -> u32 {
   // SAFETY: `data` is a valid buffer.
   unsafe {
     zlib::crc32(value as c_ulong, data.as_ptr(), data.len() as u32) as u32

filename: tests/unit_node/zlib_test.ts
patch: @@ -252,6 +252,14 @@ Deno.test("crc32 doesn't overflow", () => {
   assertEquals(checksum, 1466848669);
 });
 
+Deno.test("crc32 large input", () => {
+  let checkSum = 0xffffffff;
+  for (let i = 0; i < 2 ** 16; i++) {
+    checkSum = crc32("", checkSum);
+  }
+  assertEquals(checkSum, 0xffffffff);
+});
+
 Deno.test("BrotliCompress", async () => {
   const deffered = Promise.withResolvers<void>();
   // @ts-ignore: BrotliCompress is not typed
Repository: denoland/deno
Pull request: fix(tunnel): prevent auth subprocess loop with tasks


Changed files:
filename: cli/main.rs
patch: @@ -672,7 +672,14 @@ async fn resolve_flags_and_init(
     .map(|files| files.iter().map(PathBuf::from).collect());
   load_env_variables_from_env_files(env_file_paths.as_ref(), flags.log_level);
 
-  if deno_lib::args::has_flag_env_var("DENO_CONNECTED") {
+  if deno_lib::args::has_flag_env_var("DENO_CONNECTED")
+    && matches!(
+      flags.subcommand,
+      DenoSubcommand::Run { .. }
+        | DenoSubcommand::Serve { .. }
+        | DenoSubcommand::Task { .. }
+    )
+  {
     flags.tunnel = true;
   }
Repository: ollama/ollama
Pull request: update faq

Resolves #885 

Changed files:
filename: docs/faq.md
patch: @@ -18,16 +18,44 @@ If you're running `ollama serve` directly, the logs will be printed to the conso
 
 ## How can I expose the Ollama server?
 
+Ollama binds to 127.0.0.1 port 11434 by default. Change the bind address with the `OLLAMA_HOST` environment variable.
+
+Ollama allows cross origin requests from `127.0.0.1` and `0.0.0.0` by default. Add additional origins with the `OLLAMA_ORIGINS` environment variable:
+
+On macOS:
+
 ```bash
 OLLAMA_HOST=0.0.0.0:11435 ollama serve
 ```
 
-By default, Ollama allows cross origin requests from `127.0.0.1` and `0.0.0.0`. To support more origins, you can use the `OLLAMA_ORIGINS` environment variable:
-
 ```bash
 OLLAMA_ORIGINS=http://192.168.1.1:*,https://example.com ollama serve
 ```
 
+On Linux:
+
+Create a `systemd` drop-in directory and set `Environment=OLLAMA_HOST` and/or `Environment=OLLAMA_ORIGINS`
+
+```bash
+mkdir -p /etc/systemd/system/ollama.service.d
+echo "[Service]" >>/etc/systemd/system/ollama.service.d/environment.conf
+```
+
+```bash
+echo "Environment=OLLAMA_HOST=0.0.0.0:11434" >>/etc/systemd/system/ollama.service.d/environment.conf
+```
+
+```bash
+echo "Environment=OLLAMA_ORIGINS=http://129.168.1.1:*,https://example.com" >>/etc/systemd/system/ollama.service.d/environment.conf
+```
+
+Reload `systemd` and restart Ollama.
+
+```bash
+systemctl daemon-reload
+systemctl restart ollama
+```
+
 ## Where are models stored?
 
 - macOS: Raw model data is stored under `~/.ollama/models`.
Repository: ggml-org/llama.cpp
Pull request: devops: fix failing s390x docker build

ref: https://github.com/ggml-org/llama.cpp/pull/16774#issuecomment-3471894254

This PR uses the `-DGGML_NATIVE=OFF -DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=ON` compile flags introduced in #16774 to build s390x docker images. Also, fixes https://github.com/ggml-org/llama.cpp/actions/runs/18962560883/job/54152829325.

Note that this PR depends on #16774 to run correctly in Docker. Build will work fine but won't run.

Changed files:
filename: .devops/s390x.Dockerfile
patch: @@ -24,8 +24,9 @@ RUN --mount=type=cache,target=/root/.ccache \
         -DCMAKE_C_COMPILER_LAUNCHER=ccache \
         -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
         -DLLAMA_BUILD_TESTS=OFF \
-        -DGGML_BACKEND_DL=OFF \
         -DGGML_NATIVE=OFF \
+        -DGGML_BACKEND_DL=ON \
+        -DGGML_CPU_ALL_VARIANTS=ON \
         -DGGML_BLAS=ON \
         -DGGML_BLAS_VENDOR=OpenBLAS && \
     cmake --build build --config Release -j $(nproc) && \
@@ -103,6 +104,7 @@ FROM base AS light
 WORKDIR /llama.cpp/bin
 
 # Copy llama.cpp binaries and libraries
+COPY --from=collector /llama.cpp/bin/*.so /llama.cpp/bin
 COPY --from=collector /llama.cpp/bin/llama-cli /llama.cpp/bin
 
 ENTRYPOINT [ "/llama.cpp/bin/llama-cli" ]
@@ -116,6 +118,7 @@ ENV LLAMA_ARG_HOST=0.0.0.0
 WORKDIR /llama.cpp/bin
 
 # Copy llama.cpp binaries and libraries
+COPY --from=collector /llama.cpp/bin/*.so /llama.cpp/bin
 COPY --from=collector /llama.cpp/bin/llama-server /llama.cpp/bin
 
 EXPOSE 8080

filename: docs/docker.md
patch: @@ -7,9 +7,9 @@
 ## Images
 We have three Docker images available for this project:
 
-1. `ghcr.io/ggml-org/llama.cpp:full`: This image includes both the main executable file and the tools to convert LLaMA models into ggml and convert into 4-bit quantization. (platforms: `linux/amd64`, `linux/arm64`)
-2. `ghcr.io/ggml-org/llama.cpp:light`: This image only includes the main executable file. (platforms: `linux/amd64`, `linux/arm64`)
-3. `ghcr.io/ggml-org/llama.cpp:server`: This image only includes the server executable file. (platforms: `linux/amd64`, `linux/arm64`)
+1. `ghcr.io/ggml-org/llama.cpp:full`: This image includes both the main executable file and the tools to convert LLaMA models into ggml and convert into 4-bit quantization. (platforms: `linux/amd64`, `linux/arm64`, `linux/s390x`)
+2. `ghcr.io/ggml-org/llama.cpp:light`: This image only includes the main executable file. (platforms: `linux/amd64`, `linux/arm64`, `linux/s390x`)
+3. `ghcr.io/ggml-org/llama.cpp:server`: This image only includes the server executable file. (platforms: `linux/amd64`, `linux/arm64`, `linux/s390x`)
 
 Additionally, there the following images, similar to the above: