diff --git a/README.md b/README.md index f3e7505..259e183 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ import { create } from '@emscripten-forge/mambajs'; const yml = ` channels: - - https://prefix.dev/emscripten-forge-dev + - https://prefix.dev/emscripten-forge-3x - https://prefix.dev/conda-forge dependencies: - python=3.11 @@ -297,7 +297,7 @@ npx lerna version --no-private Mambajs is designed primarily for WebAssembly/Emscripten environments but can work in Node.js for lock file manipulation. **Default Platform**: `emscripten-wasm32` -**Default Channels**: `emscripten-forge` (https://prefix.dev/emscripten-forge-dev), `conda-forge` (https://prefix.dev/conda-forge) +**Default Channels**: `emscripten-forge` (https://prefix.dev/emscripten-forge-3x), `conda-forge` (https://prefix.dev/conda-forge) ## License diff --git a/packages/mambajs-core/src/helper.ts b/packages/mambajs-core/src/helper.ts index 677c7cf..dd827ad 100644 --- a/packages/mambajs-core/src/helper.ts +++ b/packages/mambajs-core/src/helper.ts @@ -4,6 +4,7 @@ import { DEFAULT_CHANNELS, DEFAULT_CHANNELS_INFO, ILock, + ILogger, ISolvedPackage, TSharedLibs } from './types'; @@ -468,8 +469,13 @@ export function getCondaMetaFile( } export function formatChannels( - channels?: string[] + channels?: string[], + logger?: ILogger ): Pick { + if (!logger) { + logger = console; + } + if (!channels || !channels.length) { throw new Error('No channels specified'); } @@ -520,6 +526,17 @@ export function formatChannels( return; } + if (channel === 'emscripten-forge') { + logger.warn('emscripten-forge channel alias is deprecated. Please use https://prefix.dev/emscripten-forge-3x explicitely.') + channel = 'https://prefix.dev/emscripten-forge-3x'; + } + + if (channel === 'https://prefix.dev/emscripten-forge') { + const error = 'https://prefix.dev/emscripten-forge channel does not exist. Please use https://prefix.dev/emscripten-forge-3x or https://prefix.dev/emscripten-forge-4x explicitely.'; + logger.error(error) + throw new Error(error); + } + // If it's one of the default channels and it's not included yet, add it const asDefaultChannel = getDefaultChannel(channel); if ( diff --git a/packages/mambajs-core/src/types.ts b/packages/mambajs-core/src/types.ts index 1afc866..2cf2cb0 100644 --- a/packages/mambajs-core/src/types.ts +++ b/packages/mambajs-core/src/types.ts @@ -21,17 +21,27 @@ export type ISolvedPipPackages = ILock['pipPackages']; export const DEFAULT_PLATFORM: ILock['platform'] = 'emscripten-wasm32'; export const DEFAULT_CHANNELS: ILock['channels'] = [ - 'emscripten-forge', + 'emscripten-forge-4x', 'conda-forge' ]; export const DEFAULT_CHANNELS_INFO: ILock['channelInfo'] = { - 'emscripten-forge': [ + 'emscripten-forge-4x': [ { - url: 'https://prefix.dev/emscripten-forge-dev', + url: 'https://prefix.dev/emscripten-forge-4x', protocol: 'https' }, { - url: 'https://repo.prefix.dev/emscripten-forge-dev', + url: 'https://repo.prefix.dev/emscripten-forge-4x', + protocol: 'https' + } + ], + 'emscripten-forge-3x': [ + { + url: 'https://prefix.dev/emscripten-forge-3x', + protocol: 'https' + }, + { + url: 'https://repo.prefix.dev/emscripten-forge-3x', protocol: 'https' } ], diff --git a/packages/mambajs/src/index.ts b/packages/mambajs/src/index.ts index 112dd55..0a45d48 100644 --- a/packages/mambajs/src/index.ts +++ b/packages/mambajs/src/index.ts @@ -162,7 +162,7 @@ export async function install( if (channels?.length) { // Merge existing channels with new ones - const newChannels = formatChannels(channels); + const newChannels = formatChannels(channels, logger); for (const channel of newChannels.channels) { if (!env.channels.includes(channel)) { diff --git a/packages/mambajs/src/solver.ts b/packages/mambajs/src/solver.ts index b05182a..594eb4d 100644 --- a/packages/mambajs/src/solver.ts +++ b/packages/mambajs/src/solver.ts @@ -60,7 +60,7 @@ export const solveConda = async (options: ISolveOptions): Promise => { if (typeof ymlOrSpecs === 'string') { const ymlData = parseEnvYml(ymlOrSpecs); specs = ymlData.specs; - formattedChannels = formatChannels(ymlData.channels); + formattedChannels = formatChannels(ymlData.channels, logger); } else { installedCondaPackages = currentLock?.packages ?? {}; formattedChannels = currentLock!; diff --git a/unittests/tests/conda/test-cpp.ts b/unittests/tests/conda/test-cpp.ts index d45dc7d..4385763 100644 --- a/unittests/tests/conda/test-cpp.ts +++ b/unittests/tests/conda/test-cpp.ts @@ -6,7 +6,7 @@ const logger = new TestLogger(); const yml = ` channels: - - https://prefix.dev/emscripten-forge-dev + - https://prefix.dev/emscripten-forge-3x - https://prefix.dev/conda-forge dependencies: - xeus-cpp diff --git a/unittests/tests/conda/test-solver.ts b/unittests/tests/conda/test-solver.ts index d871500..967aae4 100644 --- a/unittests/tests/conda/test-solver.ts +++ b/unittests/tests/conda/test-solver.ts @@ -6,7 +6,7 @@ const logger = new TestLogger(); const yml = ` channels: - - https://prefix.dev/emscripten-forge-dev + - https://prefix.dev/emscripten-forge-3x - https://prefix.dev/conda-forge dependencies: - pandas diff --git a/unittests/tests/conda/test-virtual-packages.ts b/unittests/tests/conda/test-virtual-packages.ts index 93222c1..a626bed 100644 --- a/unittests/tests/conda/test-virtual-packages.ts +++ b/unittests/tests/conda/test-virtual-packages.ts @@ -6,7 +6,7 @@ const logger = new TestLogger(); let yml = ` channels: - - https://prefix.dev/emscripten-forge-dev + - https://prefix.dev/emscripten-forge-3x - https://prefix.dev/conda-forge dependencies: # click requires __unix diff --git a/unittests/tests/format/test-format.ts b/unittests/tests/format/test-format.ts index 38c8eca..77552f0 100644 --- a/unittests/tests/format/test-format.ts +++ b/unittests/tests/format/test-format.ts @@ -6,7 +6,7 @@ const logger = new TestLogger(); const yml = ` channels: - - https://prefix.dev/emscripten-forge-dev + - https://prefix.dev/emscripten-forge-3x - https://prefix.dev/conda-forge dependencies: - pandas diff --git a/unittests/tests/mixed/test-create-channel-alias.ts b/unittests/tests/mixed/test-create-channel-alias.ts index 4924d12..e8419ba 100644 --- a/unittests/tests/mixed/test-create-channel-alias.ts +++ b/unittests/tests/mixed/test-create-channel-alias.ts @@ -38,4 +38,7 @@ create({yml, logger}).then(async result => { expect(condaPackages['ipycanvas'].version).toEqual('0.13.2'); expect(pipPackages['bqplot'].version).toEqual('0.12.42'); + + // Channel alias is deprecated + expect(logger.warnings).toInclude('deprecated'); }); diff --git a/unittests/tests/mixed/test-create-emscripten-4x.ts b/unittests/tests/mixed/test-create-emscripten-4x.ts index 2909768..8783f42 100644 --- a/unittests/tests/mixed/test-create-emscripten-4x.ts +++ b/unittests/tests/mixed/test-create-emscripten-4x.ts @@ -42,7 +42,7 @@ create({yml, logger}).then(async env => { expect(condaPackages['ipycanvas'].version).toEqual('0.13.2'); // Make sure channels haven't changed - expect(env.channels).toEqual(['https://repo.prefix.dev/emscripten-forge-4x', 'conda-forge']); + expect(env.channels).toEqual(['emscripten-forge-4x', 'conda-forge']); // Make sure we keep the emscripten version expect(condaPackages['emscripten-abi'].version[0]).toEqual('4'); diff --git a/unittests/tests/mixed/test-create.ts b/unittests/tests/mixed/test-create.ts index d9ab48c..9caa07f 100644 --- a/unittests/tests/mixed/test-create.ts +++ b/unittests/tests/mixed/test-create.ts @@ -6,7 +6,7 @@ const logger = new TestLogger(); const yml = ` channels: - - https://prefix.dev/emscripten-forge-dev + - https://prefix.dev/emscripten-forge-3x - https://prefix.dev/conda-forge dependencies: - pandas diff --git a/unittests/tests/mixed/test-install.ts b/unittests/tests/mixed/test-install.ts index f0567c7..3307b0c 100644 --- a/unittests/tests/mixed/test-install.ts +++ b/unittests/tests/mixed/test-install.ts @@ -6,7 +6,7 @@ const logger = new TestLogger(); const yml = ` channels: - - https://prefix.dev/emscripten-forge-dev + - https://prefix.dev/emscripten-forge-3x - https://prefix.dev/conda-forge dependencies: - pandas diff --git a/unittests/tests/mixed/test-install2.ts b/unittests/tests/mixed/test-install2.ts index 945a4dd..a4db3b3 100644 --- a/unittests/tests/mixed/test-install2.ts +++ b/unittests/tests/mixed/test-install2.ts @@ -6,7 +6,7 @@ const logger = new TestLogger(); const yml = ` channels: - - https://repo.prefix.dev/emscripten-forge-dev + - https://repo.prefix.dev/emscripten-forge-3x - https://repo.prefix.dev/conda-forge dependencies: - pandas diff --git a/unittests/tests/mixed/test-remove.ts b/unittests/tests/mixed/test-remove.ts index bd95359..d29f30c 100644 --- a/unittests/tests/mixed/test-remove.ts +++ b/unittests/tests/mixed/test-remove.ts @@ -7,7 +7,7 @@ const logger = new TestLogger(); const yml = ` channels: - - https://prefix.dev/emscripten-forge-dev + - https://prefix.dev/emscripten-forge-3x - https://prefix.dev/conda-forge dependencies: - pandas diff --git a/unittests/tests/mixed/test-solver.ts b/unittests/tests/mixed/test-solver.ts index d939799..e349795 100644 --- a/unittests/tests/mixed/test-solver.ts +++ b/unittests/tests/mixed/test-solver.ts @@ -6,7 +6,7 @@ const logger = new TestLogger(); const yml = ` channels: - - https://prefix.dev/emscripten-forge-dev + - https://prefix.dev/emscripten-forge-3x - https://prefix.dev/conda-forge dependencies: - pandas