Przeglądaj źródła

build for `universal` architecture on macos

Jeffrey Morgan 1 rok temu
rodzic
commit
c75cafdb58
6 zmienionych plików z 24 dodań i 12 usunięć
  1. 3 1
      app/README.md
  2. 4 1
      app/forge.config.ts
  3. 4 3
      app/package-lock.json
  4. 5 4
      app/package.json
  5. 7 0
      scripts/build.sh
  6. 1 3
      scripts/publish.sh

+ 3 - 1
app/README.md

@@ -7,12 +7,14 @@ This app builds upon Ollama to provide a desktop experience for running models.
 First, build the `ollama` binary:
 
 ```
-make -C ..
+cd ..
+go build .
 ```
 
 Then run the desktop app with `npm start`:
 
 ```
+cd app
 npm install
 npm start
 ```

+ 4 - 1
app/forge.config.ts

@@ -18,7 +18,7 @@ const config: ForgeConfig = {
     asar: true,
     icon: './assets/icon.icns',
     extraResource: [
-      '../ollama',
+      '../dist/ollama',
       path.join(__dirname, './assets/iconTemplate.png'),
       path.join(__dirname, './assets/iconTemplate@2x.png'),
       path.join(__dirname, './assets/iconUpdateTemplate.png'),
@@ -42,6 +42,9 @@ const config: ForgeConfig = {
           },
         }
       : {}),
+    osxUniversal: {
+      x64ArchFiles: '**/ollama',
+    },
   },
   rebuildConfig: {},
   makers: [new MakerSquirrel({}), new MakerZIP({}, ['darwin'])],

+ 4 - 3
app/package-lock.json

@@ -32,6 +32,7 @@
         "@electron-forge/plugin-auto-unpack-natives": "^6.2.1",
         "@electron-forge/plugin-webpack": "^6.2.1",
         "@electron-forge/publisher-github": "^6.2.1",
+        "@electron/universal": "^1.4.1",
         "@svgr/webpack": "^8.0.1",
         "@types/chmodr": "^1.0.0",
         "@types/node": "^20.4.0",
@@ -3328,9 +3329,9 @@
       }
     },
     "node_modules/@electron/universal": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.3.4.tgz",
-      "integrity": "sha512-BdhBgm2ZBnYyYRLRgOjM5VHkyFItsbggJ0MHycOjKWdFGYwK97ZFXH54dTvUWEfha81vfvwr5On6XBjt99uDcg==",
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.4.1.tgz",
+      "integrity": "sha512-lE/U3UNw1YHuowNbTmKNs9UlS3En3cPgwM5MI+agIgr/B1hSze9NdOP0qn7boZaI9Lph8IDv3/24g9IxnJP7aQ==",
       "dev": true,
       "dependencies": {
         "@electron/asar": "^3.2.1",

+ 5 - 4
app/package.json

@@ -6,10 +6,10 @@
   "main": ".webpack/main",
   "scripts": {
     "start": "electron-forge start",
-    "package": "electron-forge package",
-    "package:sign": "SIGN=1 electron-forge package",
-    "make": "electron-forge make",
-    "make:sign": "SIGN=1 electron-forge make",
+    "package": "electron-forge package --arch universal",
+    "package:sign": "SIGN=1 electron-forge package --arch universal",
+    "make": "electron-forge make --arch universal",
+    "make:sign": "SIGN=1 electron-forge make --arch universal",
     "publish": "SIGN=1 electron-forge publish",
     "lint": "eslint --ext .ts,.tsx .",
     "format": "prettier --check . --ignore-path .gitignore",
@@ -32,6 +32,7 @@
     "@electron-forge/plugin-auto-unpack-natives": "^6.2.1",
     "@electron-forge/plugin-webpack": "^6.2.1",
     "@electron-forge/publisher-github": "^6.2.1",
+    "@electron/universal": "^1.4.1",
     "@svgr/webpack": "^8.0.1",
     "@types/chmodr": "^1.0.0",
     "@types/node": "^20.4.0",

+ 7 - 0
scripts/build.sh

@@ -0,0 +1,7 @@
+#!/bin/bash
+
+mkdir -p dist
+CGO_ENABLED=1 GOARCH=arm64 go build -o dist/ollama_arm64
+CGO_ENABLED=1 GOARCH=amd64 go build -o dist/ollama_amd64
+lipo -create -output dist/ollama dist/ollama_arm64 dist/ollama_amd64
+npm run --prefix app make:sign

+ 1 - 3
scripts/publish.sh

@@ -10,9 +10,7 @@ fi
 OS=$(go env GOOS)
 ARCH=$(go env GOARCH)
 
-go build .
-
-npm --prefix app run make:sign
+./script/build.sh
 
 # Create a new tag if it doesn't exist.
 if ! git rev-parse v$VERSION >/dev/null 2>&1; then