UNPKG

react-native-node-api

Version:
61 lines (60 loc) 2.66 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.linkAndroidDir = linkAndroidDir; const strict_1 = __importDefault(require("node:assert/strict")); const node_fs_1 = __importDefault(require("node:fs")); const node_path_1 = __importDefault(require("node:path")); const path_utils_1 = require("../path-utils"); const link_modules_1 = require("./link-modules"); const ANDROID_ARCHITECTURES = [ "arm64-v8a", "armeabi-v7a", "x86_64", "x86", ]; async function linkAndroidDir({ incremental, modulePath, naming, platform, }) { const libraryName = (0, path_utils_1.getLibraryName)(modulePath, naming); const outputPath = (0, link_modules_1.getLinkedModuleOutputPath)(platform, modulePath, naming); if (incremental && node_fs_1.default.existsSync(outputPath)) { const moduleModified = (0, path_utils_1.getLatestMtime)(modulePath); const outputModified = (0, path_utils_1.getLatestMtime)(outputPath); if (moduleModified < outputModified) { return { originalPath: modulePath, libraryName, outputPath, skipped: true, }; } } await node_fs_1.default.promises.rm(outputPath, { recursive: true, force: true }); await node_fs_1.default.promises.cp(modulePath, outputPath, { recursive: true }); for (const arch of ANDROID_ARCHITECTURES) { const archPath = node_path_1.default.join(outputPath, arch); if (!node_fs_1.default.existsSync(archPath)) { // Skip missing architectures continue; } const libraryDirents = await node_fs_1.default.promises.readdir(archPath, { withFileTypes: true, }); (0, strict_1.default)(libraryDirents.length === 1, "Expected exactly one library file"); const [libraryDirent] = libraryDirents; (0, strict_1.default)(libraryDirent.isFile(), "Expected a library file"); const libraryPath = node_path_1.default.join(libraryDirent.parentPath, libraryDirent.name); await node_fs_1.default.promises.rename(libraryPath, node_path_1.default.join(archPath, `lib${libraryName}.so`)); } await node_fs_1.default.promises.rm(node_path_1.default.join(outputPath, path_utils_1.MAGIC_FILENAME), { recursive: true, }); // TODO: Update the DT_NEEDED entry in the .so files return { originalPath: modulePath, outputPath, libraryName, skipped: false, }; }