Merge pull request #4794 from janhq/fix/appimage-could-not-load-model

fix: app image - could not load model
This commit is contained in:
David 2025-03-11 13:42:47 +07:00 committed by GitHub
commit c000f75593
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -4,11 +4,12 @@ import {
getJanDataFolderPath,
log,
} from '@janhq/core/node'
import { mkdir, readdir, symlink } from 'fs/promises'
import { mkdir, readdir, symlink, cp } from 'fs/promises'
import { existsSync } from 'fs'
/**
* Create symlink to each variant for the default bundled version
* If running in AppImage environment, copy files instead of creating symlinks
*/
const symlinkEngines = async () => {
const sourceEnginePath = path.join(
@ -23,6 +24,8 @@ const symlinkEngines = async () => {
'cortex.llamacpp'
)
const variantFolders = await readdir(sourceEnginePath)
const isAppImage = !!process.env.APPIMAGE
for (const variant of variantFolders) {
const targetVariantPath = path.join(
sourceEnginePath,
@ -39,10 +42,25 @@ const symlinkEngines = async () => {
recursive: true,
}).catch((error) => log(JSON.stringify(error)))
await symlink(targetVariantPath, symlinkVariantPath, 'junction').catch(
(error) => log(JSON.stringify(error))
)
console.log(`Symlink created: ${targetVariantPath} -> ${symlinkEnginePath}`)
// Skip if already exists
if (existsSync(symlinkVariantPath)) {
console.log(`Target already exists: ${symlinkVariantPath}`)
continue
}
if (isAppImage) {
// Copy files for AppImage environments instead of symlinking
await cp(targetVariantPath, symlinkVariantPath, { recursive: true }).catch(
(error) => log(JSON.stringify(error))
)
console.log(`Files copied: ${targetVariantPath} -> ${symlinkVariantPath}`)
} else {
// Create symlink for other environments
await symlink(targetVariantPath, symlinkVariantPath, 'junction').catch(
(error) => log(JSON.stringify(error))
)
console.log(`Symlink created: ${targetVariantPath} -> ${symlinkVariantPath}`)
}
}
}