build: use async version
This commit is contained in:
@@ -2,7 +2,7 @@ import path from "path";
|
||||
import { GeneralVariable, LLVMVariable, command, variable } from "lyc/commands/cmake";
|
||||
import { SYSROOT_PREFIX, projectRoot } from "lyc/environment";
|
||||
import { PackageTask, buildPackage } from "./build";
|
||||
import { checkedSpawnSync } from "lyc/cli";
|
||||
import { promisifySpawn } from "lyc/cli";
|
||||
import os from "os";
|
||||
import { SpawnOptions, spawn } from "child_process";
|
||||
|
||||
@@ -39,29 +39,29 @@ export function llvmPackages(src: string, installPrefix: string): PackageTask[]
|
||||
cwd: src,
|
||||
};
|
||||
|
||||
const mkBuildPhase = (build: string) => {
|
||||
checkedSpawnSync(cmake, ["--build", build], spawnOptions);
|
||||
};
|
||||
const mkBuildPhase = (build: string) => (async () => {
|
||||
await promisifySpawn(spawn(cmake, ["--build", build], spawnOptions));
|
||||
});
|
||||
|
||||
const mkInstallPhase = (build: string) => {
|
||||
checkedSpawnSync(cmake, ["--build", build, "--target", "install"], spawnOptions);
|
||||
};
|
||||
const mkInstallPhase = (build: string) => (async () => {
|
||||
await promisifySpawn(spawn(cmake, ["--build", build, "--target", "install"], spawnOptions));
|
||||
});
|
||||
|
||||
function mkLLVMPackage(): PackageTask {
|
||||
const build = path.join(LLVM_BUILD, "llvm");
|
||||
return {
|
||||
name: "llvm",
|
||||
patchPhase: () => {
|
||||
patchPhase: async () => {
|
||||
// Apply llvm omp patch
|
||||
checkedSpawnSync("git",
|
||||
await promisifySpawn(spawn("git",
|
||||
[
|
||||
"apply",
|
||||
path.resolve(projectRoot, "assets", "omp.diff"),
|
||||
], spawnOptions);
|
||||
], spawnOptions));
|
||||
},
|
||||
configurePhase: () => {
|
||||
configurePhase: async () => {
|
||||
// Configure
|
||||
checkedSpawnSync(cmake, command({
|
||||
await promisifySpawn(spawn(cmake, command({
|
||||
definitions: variable({
|
||||
...llvmVar,
|
||||
...general,
|
||||
@@ -70,10 +70,10 @@ export function llvmPackages(src: string, installPrefix: string): PackageTask[]
|
||||
// LLVM cmake root is under /llvm directory
|
||||
pathToSource: path.join(src, "llvm"),
|
||||
pathToBuild: build,
|
||||
}), spawnOptions);
|
||||
}), spawnOptions));
|
||||
},
|
||||
buildPhase: () => mkBuildPhase(build),
|
||||
installPhase: () => mkInstallPhase(build),
|
||||
buildPhase: mkBuildPhase(build),
|
||||
installPhase: mkInstallPhase(build),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -81,11 +81,11 @@ export function llvmPackages(src: string, installPrefix: string): PackageTask[]
|
||||
const build = path.join(LLVM_BUILD, "libpgmath");
|
||||
return {
|
||||
name: "libpgmath",
|
||||
configurePhase: () => {
|
||||
checkedSpawnSync(rm, ["-rf", build], spawnOptions);
|
||||
configurePhase: async () => {
|
||||
await promisifySpawn(spawn(rm, ["-rf", build], spawnOptions));
|
||||
|
||||
// Configure libpgmath.
|
||||
checkedSpawnSync(cmake, command({
|
||||
await promisifySpawn(spawn(cmake, command({
|
||||
definitions: variable({
|
||||
...general,
|
||||
...{
|
||||
@@ -98,10 +98,10 @@ export function llvmPackages(src: string, installPrefix: string): PackageTask[]
|
||||
generator: "Ninja",
|
||||
pathToSource: path.join(src, "cflang", "runtime", "libpgmath"),
|
||||
pathToBuild: build,
|
||||
}), spawnOptions);
|
||||
}), spawnOptions));
|
||||
},
|
||||
buildPhase: () => mkBuildPhase(build),
|
||||
installPhase: () => mkInstallPhase(build),
|
||||
buildPhase: mkBuildPhase(build),
|
||||
installPhase: mkInstallPhase(build),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -109,11 +109,11 @@ export function llvmPackages(src: string, installPrefix: string): PackageTask[]
|
||||
const build = path.join(LLVM_BUILD, "cflang");
|
||||
return {
|
||||
name: "cflang",
|
||||
configurePhase: () => {
|
||||
checkedSpawnSync(rm, ["-rf", build], spawnOptions);
|
||||
configurePhase: async () => {
|
||||
await promisifySpawn(spawn(rm, ["-rf", build], spawnOptions));
|
||||
|
||||
// Configure cflang.
|
||||
checkedSpawnSync(cmake, command({
|
||||
await promisifySpawn(spawn(cmake, command({
|
||||
definitions: variable({
|
||||
...llvmVar,
|
||||
...general,
|
||||
@@ -132,23 +132,29 @@ export function llvmPackages(src: string, installPrefix: string): PackageTask[]
|
||||
generator: "Unix Makefiles",
|
||||
pathToSource: path.join(src, "cflang"),
|
||||
pathToBuild: build,
|
||||
}), spawnOptions);
|
||||
}), spawnOptions));
|
||||
},
|
||||
buildPhase: () => mkBuildPhase(build),
|
||||
installPhase: () => mkInstallPhase(build),
|
||||
buildPhase: mkBuildPhase(build),
|
||||
installPhase: mkInstallPhase(build),
|
||||
};
|
||||
}
|
||||
|
||||
return [mkLLVMPackage(), mkLibpgmathPackage(), mkCflangPackage()];
|
||||
|
||||
}
|
||||
|
||||
} export function buildLLVMHash(src: string, rev: string) {
|
||||
export async function buildLLVMHash(src: string, rev: string) {
|
||||
// Checkout a git rev in some git repo.
|
||||
checkedSpawnSync("git", ["checkout", rev], { stdio: "inherit", cwd: src });
|
||||
checkedSpawnSync("git", ["reset", "--hard", "HEAD"], { stdio: "inherit", cwd: src });
|
||||
await promisifySpawn(spawn("git", ["checkout", rev], { stdio: "inherit", cwd: src }));
|
||||
await promisifySpawn(spawn("git", ["reset", "--hard", "HEAD"], { stdio: "inherit", cwd: src }));
|
||||
|
||||
const llvmInstall = path.join(src, "local", "installed");
|
||||
|
||||
llvmPackages(src, path.join(llvmInstall, rev))
|
||||
.forEach(buildPackage);
|
||||
|
||||
const packages = llvmPackages(src, path.join(llvmInstall, rev));
|
||||
|
||||
// Packages must be built in-order.
|
||||
for (const pkg of packages) {
|
||||
await buildPackage(pkg);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user