Files
spacedrive/scripts/machineId.mjs
Vítor Vasconcellos f229877c4b [ENG-1054] libheif for Linux (plus fixes) + Webp update (#1405)
* Move postinstall script to a preprep script
 - Fix libheif crate failing to build with our libheif
 - Rework CI due to postinstall to preprep changes

* Linux heif build script + Update webp

* Fix ctrl+c/ctrl+v bug

* Improve libheif linux script
 - Add support for linux aarch64
 - Add CI workflow to build libheif for linux
 - Some other misc fixes

* Fix libheif CI requires sudo

* Fix wrong path for libheif build.rs override in Windows

* Fix wrong path manipulations in libheif build script

* 🤦

* Use ubuntu-latest in libheif action
 - Specify glib version in target triple to support old distros
 - Fix libheif artifact publishing

* Fix artifact upload path again

* Add musl support for libheif
 - Remove unused files from libheif artifact
 - Add setup logic for libheif in postinstall script

* Build libheif for linux as a shared lib

* Fix meson not building the correct arch
 - Add logic to get git branch from githubs CI env vars

* libheif finnaly works on linux
 - Make spacedrive binary rpath point to where appimage and deb expects our libs to be
 - Add some logic to tauri.js to convince tauri to bundle our shared libs
 - Work-around appimage bundling step breaking sometimes
 - Add logic to handle sigint in tauri.js to ensure we clean up after ourselves
 - Rename postinstall.mjs to setup.mjs
 - Add logic to setup.mjs to point our dev build to our shared libs in linux

* Fix windows dekstop dev
 - Rename setup.mjs to preprep.mjs

* test cache-factory

* Fix preprep script not parsing the cross compilation target triple and always using the host info to download dependencies
 - Fix action env vars not being correctly passed
 - Remove possibility to pass multiple targests to rust action

* Don't compile mobile crates on desktop targets

* Remove cache-factory pull_request trigger

* remove patched tauri cli

* Use git plumbing command to get remote branch name
 - Fallback to reading .git/HEAD if remote name was not retrieved

* fix type

---------

Co-authored-by: Brendan Allan <brendonovich@outlook.com>
2023-10-03 17:31:33 +00:00

61 lines
1.4 KiB
JavaScript

import { exec as execCb } from 'node:child_process';
import * as os from 'node:os';
import { env } from 'node:process';
import { promisify } from 'node:util';
const __debug = env.NODE_ENV === 'debug';
let libc = 'glibc';
if (os.type() === 'Linux') {
try {
const exec = promisify(execCb);
if ((await exec('ldd /bin/ls')).stdout.includes('musl')) {
libc = 'musl';
}
} catch (error) {
if (__debug) {
console.warn(`Failed to check libc type`);
console.error(error);
}
}
}
const OS_TYPE = {
darwin: 'Darwin',
windows: 'Windows_NT',
linux: 'Linux'
};
export function getMachineId() {
let machineId;
/**
* Possible TARGET_TRIPLE:
* x86_64-apple-darwin
* aarch64-apple-darwin
* x86_64-pc-windows-msvc
* aarch64-pc-windows-msvc
* x86_64-unknown-linux-gnu
* x86_64-unknown-linux-musl
* aarch64-unknown-linux-gnu
* aarch64-unknown-linux-musl
* armv7-unknown-linux-gnueabihf
*/
if (env.TARGET_TRIPLE) {
const target = env.TARGET_TRIPLE.split('-');
const osType = OS_TYPE[target[2]];
if (!osType) throw new Error(`Unknown OS type: ${target[2]}`);
if (!target[0]) throw new Error(`Unknown machine type: ${target[0]}`);
machineId = [osType, target[0]];
if (machineId[0] === 'Linux') machineId.push(target[3].includes('musl') ? 'musl' : 'glibc');
} else {
// Current machine identifiers
machineId = [os.type(), os.machine()];
if (machineId[0] === 'Linux') machineId.push(libc);
}
return machineId;
}