Skip to content

Commit

Permalink
Can run test on mimic image
Browse files Browse the repository at this point in the history
  • Loading branch information
impactaky committed Jan 6, 2024
1 parent 3eb2986 commit 7917785
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 11 deletions.
24 changes: 18 additions & 6 deletions docker/arm64-jammy.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -36,17 +36,22 @@ FROM ubuntu:22.04 as host-stage1
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
binutils \
ca-certificates \
patchelf \
wget \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists
COPY --from=mimic-lib /mimic-lib/build/libmimic-cross.so /usr/lib/x86_64-linux-gnu/
RUN mkdir -p /mimic-cross/bin/
COPY --from=mimic-lib /deno/deno /mimic-cross/bin/deno
COPY --from=mimic-lib /deno/deno /mimic-cross/bin/mimic-deno
RUN arch > /mimic-cross/arch

COPY host /mimic-cross/host
RUN mkdir -p /mimic-cross/internal/bin
RUN ln -s ../../../usr/bin/objdump /mimic-cross/internal/bin
RUN ln -s ../../../usr/bin/patchelf /mimic-cross/internal/bin

# COPY host /mimic-cross/host

# =======================================================================

Expand All @@ -69,10 +74,10 @@ RUN gcc -shared -o libhello.so hello.c \
ENV MIMIC_TEST_DATA_PATH=/test
RUN mkdir -p /test/deploy

COPY mimic-cross.deno /mimic-cross.deno
WORKDIR /mimic-cross.deno
ENV PATH="/mimic-cross/bin:$PATH"
RUN deno cache config/*.test.ts src/*.test.ts
# COPY mimic-cross.deno /mimic-cross.deno
# WORKDIR /mimic-cross.deno
# ENV PATH="/mimic-cross/bin:$PATH"
# RUN mimic-deno cache config/*.test.ts src/*.test.ts

# =======================================================================

Expand All @@ -82,6 +87,13 @@ COPY --from=host-stage1 / /mimic-cross/host
COPY mimic-cross.deno /mimic-cross/mimic-cross.deno
RUN /mimic-cross/mimic-cross.deno/setup.sh

COPY --from=mimic-test-host /test /test
ENV MIMIC_TEST_DATA_PATH=/test

COPY mimic-cross.deno /mimic-cross.deno
WORKDIR /mimic-cross.deno
ENV PATH="/mimic-cross/host/mimic-cross/bin:$PATH"
RUN mimic-deno cache config/*.test.ts src/*.test.ts

# =======================================================================

Expand Down
4 changes: 3 additions & 1 deletion mimic-cross.deno/config/config.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import { assertEquals } from "std/assert/mod.ts";

Deno.test("config", async () => {
const testConfig = {
hostRoot: "/host",
hostRoot: "/mimic-cross/host",
};
assertEquals(config.hostRoot, "/mimic-cross/host");
assertEquals(config.internalBin, "/mimic-cross/internal");
const configPath = $.path("/mimic-cross/config.json");
await configPath.writeJson(testConfig);
await loadConfig();
assertEquals(config.hostRoot, "/host");
assertEquals(config.internal, "/mimic-cross/internal");
await configPath.remove();
});
1 change: 1 addition & 0 deletions mimic-cross.deno/config/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import $ from "daxex/mod.ts";

export let config = {
hostRoot: "/mimic-cross/host",
internalBin: "/mimic-cross/host/mimic-cross/internal/bin",
};

export async function loadConfig() {
Expand Down
4 changes: 3 additions & 1 deletion mimic-cross.deno/src/deploy.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@ import $ from "daxex/mod.ts";
import { mimicDeploy, readRunpath } from "./deploy.ts";
import { assert, assertEquals } from "std/assert/mod.ts";
import { PathRef } from "dax/mod.ts";
import { config } from "config/config.ts";

const testDataPath = $.path(Deno.env.get("MIMIC_TEST_DATA_PATH")!);
const deployDir = testDataPath.join("deploy");

async function checkNeeded(path: PathRef, needed: string): Promise<boolean> {
const commandOut = await $`patchelf --print-needed ${path}`.lines();
const commandOut =
await $`${config.internalBin}/patchelf --print-needed ${path}`.lines();
for (const line of commandOut) {
if (line == needed) return true;
}
Expand Down
7 changes: 4 additions & 3 deletions mimic-cross.deno/src/deploy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ import { PathRef } from "dax/mod.ts";
import { config } from "config/config.ts";

export async function readRunpath(path: PathRef): Promise<string | undefined> {
return (await $`objdump -x ${path}`.stderr("null").noThrow()
return (await $`${config.internalBin}/objdump -x ${path}`.stderr("null")
.noThrow()
.apply((l) => {
const e = $.split(l);
if (e[0] != "RUNPATH") return;
Expand All @@ -15,7 +16,7 @@ export async function readRunpath(path: PathRef): Promise<string | undefined> {
export async function mimicDeploy(src: PathRef, dst: PathRef) {
const deployBin = dst.join(src.basename());
await src.copyFile(deployBin);
await $`patchelf --add-needed libmimic-cross.so ${deployBin}`;
await $`${config.internalBin}/patchelf --add-needed libmimic-cross.so ${deployBin}`;

const runpath = await readRunpath(deployBin);
if (!runpath) return;
Expand All @@ -31,7 +32,7 @@ export async function mimicDeploy(src: PathRef, dst: PathRef) {
":/",
`:${config.hostRoot}/`,
);
await $`/usr/bin/patchelf --set-rpath ${newRunpath} ${deployBin}`;
await $`${config.internalBin}/patchelf --set-rpath ${newRunpath} ${deployBin}`;
await $.path("./target.log").appendText(
`add ${config.hostRoot} prefix to RUNPATH in ${deployBin}\n`,
);
Expand Down

0 comments on commit 7917785

Please sign in to comment.