{"version":3,"file":"wine.js","sourceRoot":"","sources":["../../src/toolsets/wine.ts"],"names":[],"mappings":"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","sourcesContent":["import { exists, InvalidConfigurationError, resolveEnvToolsetPath, sanitizeDirPath } from \"builder-util\"\nimport * as path from \"path\"\nimport { ToolsetConfig } from \"../configuration\"\nimport { downloadBuilderToolset } from \"../util/electronGet\"\n\nconst wineToolsChecksums: Record<Exclude<ToolsetConfig[\"wine\"], null | undefined>, Record<string, string>> = {\n  \"0.0.0\": {\n    \"wine-4.0.1-mac.7z\": \"1baac808a67975b68b9226beea7b64ad0acc3e598a4b45c25bb5d2ae8cac655e\",\n  },\n  \"1.0.1\": {\n    \"wine-11.0-darwin-x86_64.tar.xz\": \"0a4a43867ef225c70ed8d4198aaba24a55cb0e52e5d67b0ac99563e6351a3c61\",\n    \"wine-11.0-linux-x86_64.tar.xz\": \"d8cf95442957b75c07166540142c96d8f7be6a68a572cc656194e7b42e8a0f13\",\n  },\n}\n\nexport async function getWineToolset(wine: ToolsetConfig[\"wine\"]): Promise<{ execPath: string; env: Record<string, string> }> {\n  if (process.platform === \"win32\") {\n    throw new InvalidConfigurationError(`Wine toolset is not supported on Windows, but got: ${wine}`)\n  }\n\n  const defaultEnv = { WINEDEBUG: \"-all,err+all\", WINEDLLOVERRIDES: \"winemenubuilder.exe=d\" }\n\n  const envPath = await resolveEnvToolsetPath(\"ELECTRON_BUILDER_WINE_TOOLSET_DIR\", \"directory\")\n  if (envPath != null) {\n    // Probe for the wine binary: modern bundles ship bin/wine; legacy bundles (e.g. wine-4.0.1-mac) ship bin/wine64.\n    const wineExecSubPath = (await exists(path.join(envPath, \"bin\", \"wine\"))) ? \"bin/wine\" : \"bin/wine64\"\n    const { execPath, winePrefix, wineLibPath } = await createWineEnvironment(envPath, wineExecSubPath)\n\n    return {\n      execPath,\n      env: {\n        ...defaultEnv,\n        WINEPREFIX: winePrefix,\n        DYLD_FALLBACK_LIBRARY_PATH: [wineLibPath, process.env.DYLD_FALLBACK_LIBRARY_PATH].filter(Boolean).join(path.delimiter),\n        LD_LIBRARY_PATH: [wineLibPath, process.env.LD_LIBRARY_PATH].filter(Boolean).join(path.delimiter),\n      },\n    }\n  }\n\n  const useSystemWine = process.env.USE_SYSTEM_WINE === \"true\"\n  const isLegacy = wine === \"0.0.0\" || wine == null\n  const isLegacyOnLinux = isLegacy && process.platform === \"linux\"\n\n  if (useSystemWine || isLegacyOnLinux) {\n    return { execPath: \"wine\", env: defaultEnv }\n  }\n\n  const pkgConfig = () => {\n    if (isLegacy) {\n      return {\n        releaseName: \"wine-4.0.1-mac\",\n        filenameWithExt: \"wine-4.0.1-mac.7z\",\n        checksums: wineToolsChecksums[\"0.0.0\"],\n        execPath: path.join(\"bin\", \"wine64\"),\n      }\n    }\n    const filenameWithExt = process.platform === \"darwin\" ? \"wine-11.0-darwin-x86_64.tar.xz\" : \"wine-11.0-linux-x86_64.tar.xz\"\n    return {\n      releaseName: `wine@${wine}`,\n      filenameWithExt,\n      checksums: wineToolsChecksums[wine],\n      execPath: path.join(\"bin\", \"wine\"),\n    }\n  }\n\n  const pkg = pkgConfig()\n  const toolsetPath = await downloadBuilderToolset({\n    releaseName: pkg.releaseName,\n    filenameWithExt: pkg.filenameWithExt,\n    checksums: pkg.checksums,\n    githubOrgRepo: \"electron-userland/electron-builder-binaries\",\n  })\n\n  const { execPath, winePrefix, wineLibPath } = await createWineEnvironment(toolsetPath, pkg.execPath)\n  return {\n    execPath,\n    env: {\n      ...defaultEnv,\n      WINEPREFIX: winePrefix,\n      DYLD_FALLBACK_LIBRARY_PATH: [wineLibPath, process.env.DYLD_FALLBACK_LIBRARY_PATH].filter(Boolean).join(path.delimiter),\n      LD_LIBRARY_PATH: [wineLibPath, process.env.LD_LIBRARY_PATH].filter(Boolean).join(path.delimiter),\n    },\n  }\n\n  async function createWineEnvironment(toolsetPath: string, execSubPath: string) {\n    const sanitizedWinePath = sanitizeDirPath(toolsetPath)\n\n    const execPath = path.resolve(sanitizedWinePath, execSubPath)\n    const winePrefix = path.resolve(sanitizedWinePath, \"wine-home\")\n\n    for (const p of [execPath, winePrefix]) {\n      if (!(await exists(p))) {\n        throw new InvalidConfigurationError(`Wine toolset at \"${toolsetPath}\" is missing expected path: ${p}`)\n      }\n    }\n\n    // Modern bundles ship a `lib` dir; the legacy wine-4.0.1-mac bundle ships `lib64` instead.\n    let wineLibPath: string | null = null\n    for (const libDir of [\"lib\", \"lib64\"]) {\n      const candidate = path.resolve(sanitizedWinePath, libDir)\n      if (await exists(candidate)) {\n        wineLibPath = candidate\n        break\n      }\n    }\n    if (wineLibPath == null) {\n      throw new InvalidConfigurationError(`Wine toolset at \"${toolsetPath}\" is missing expected library directory (lib or lib64)`)\n    }\n\n    return { execPath, winePrefix, wineLibPath }\n  }\n}\n"]}