Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions .buildkite/scripts/bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,6 @@ if [[ "$(pwd)" != *"/local-ssd/"* && "$(pwd)" != "/dev/shm"* ]]; then
mkdir -p ./.moon/cache
echo "Extracting moon-cache.tar.gz to ./.moon/cache"
tar -xzf ~/moon-cache.tar.gz -C ./
elif [[ -d ~/.kibana-moon-cache ]]; then
echo "Using ~/.moon/cache as a starting point"
mkdir -p ./.moon/cache
mv ~/.kibana-moon-cache/* ./.moon/cache
fi
fi

Expand Down
1 change: 0 additions & 1 deletion .buildkite/scripts/common/setup_job_env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,6 @@ if [[ "${CI:-}" =~ ^(1|true)$ ]]; then
export MOON_REMOTE_CACHE_TOKEN
export MOON_CACHE=read
fi
export MOON_CACHE=off

PIPELINE_PRE_COMMAND=${PIPELINE_PRE_COMMAND:-".buildkite/scripts/lifecycle/pipelines/$BUILDKITE_PIPELINE_SLUG/pre_command.sh"}
if [[ -f "$PIPELINE_PRE_COMMAND" ]]; then
Expand Down
1 change: 1 addition & 0 deletions .buildkite/scripts/steps/store_cache.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ source .buildkite/scripts/common/util.sh

export MOON_CACHE=write
.buildkite/scripts/bootstrap.sh

echo "--- Archive moon cache"
if [[ ! -d .moon/cache ]]; then
echo "No moon cache directory found, skipping archive"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,10 @@ export async function buildWebpackPackages({ log, quiet, dist }: TaskContext) {

const args = ['kbn', 'build-shared'];
if (quiet) args.push('--quiet');
if (dist) args.push('--dist');
if (dist) {
args.push('--dist');
args.push('--no-cache');
}

await execa('yarn', args, { cwd: REPO_ROOT, stdio });
}
4 changes: 2 additions & 2 deletions src/dev/kbn_pm/src/commands/bootstrap/bootstrap_command.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,8 @@ export const command = {

await Promise.all([
time('prepare webpack bundles for packages', async () => {
log.info('extract relevant versions for packages and pre-build webpack bundles');
await moonRun([':extract-version-dependencies', ':build-webpack'], {
log.info('pre-build webpack bundles');
await moonRun([':build-webpack'], {
pipe: !quiet,
quiet,
noCache: forceInstall,
Expand Down
21 changes: 21 additions & 0 deletions src/dev/yarn/yarn_lock_v1.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,25 @@ shared@~1.2.0:
},
});
});

it('indexes each package alias in a compound yarn.lock header', () => {
const lockfile = `
"@scope/alias@npm:@scope/alias@2.0.1", "plain-name@1 - 2", "plain-name@npm:@scope/alias@2.0.1":
version "2.0.1"
resolved "https://example.invalid/pkg.tgz"
`;

const parsed = parseYarnLock(lockfile);

expect(parsed['plain-name@2.0.1']).toMatchObject({
name: 'plain-name',
requestedVersions: ['1 - 2', 'npm:@scope/alias@2.0.1'],
resolvedVersion: '2.0.1',
});
expect(parsed['@scope/alias@2.0.1']).toMatchObject({
name: '@scope/alias',
requestedVersions: ['npm:@scope/alias@2.0.1'],
resolvedVersion: '2.0.1',
});
});
});
85 changes: 61 additions & 24 deletions src/dev/yarn/yarn_lock_v1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,23 @@ export interface PackageInfo {

const makeKey = (name: string, version: string) => `${name}@${version}`;
const trimQuotes = (str: string) => str.replace(/(^"|"$)/g, '');

/** Splits a yarn.lock header descriptor into [packageName, requestedRangeOrDescriptor]. */
const splitYarnLockDescriptor = (entry: string): [string, string] => {
if (entry.startsWith('@')) {
const versionSeparator = entry.indexOf('@', 1);
if (versionSeparator === -1) {
throw new Error(`Invalid yarn.lock descriptor: ${entry}`);
}
return [entry.slice(0, versionSeparator), entry.slice(versionSeparator + 1)];
}
const at = entry.indexOf('@');
if (at === -1) {
throw new Error(`Invalid yarn.lock descriptor: ${entry}`);
}
return [entry.slice(0, at), entry.slice(at + 1)];
};

const splitDependencyLine = (line: string) => {
const match = line.trim().match(/^(\S+)\s+(.+)$/);

Expand All @@ -44,37 +61,40 @@ export const parseYarnLock = (content: string, focus?: string[]): Record<string,

const header = lines[0].replace(/:$/, '').trim();
const headerEntries = header.split(', ').map(trimQuotes);
const name = headerEntries[0].split(/(?!^)@/)[0];

if (focusSet !== null && !focusSet.has(name)) {
continue;
if (focusSet !== null) {
const anyFocused = headerEntries.some((entry) => {
const [pkgName] = splitYarnLockDescriptor(entry);
return focusSet.has(pkgName);
});
if (!anyFocused) {
continue;
}
}

const requestedVersions = headerEntries.map((entry) => entry.substring(name.length + 1));

const packageInfo: PackageInfo = {
name,
requestedVersions,
};
let resolvedVersion: string | undefined;
let resolvedUrl: string | undefined;
let integrity: string | undefined;
let blockDependencies: { [key: string]: string } | undefined;

for (let i = 1; i < lines.length; i++) {
const line = lines[i].trim();
const [key, value] = line.split(/\s+/, 2).map(trimQuotes);
if (key === 'version') {
packageInfo.resolvedVersion = value;
resolvedVersion = value;
} else if (key === 'resolved') {
packageInfo.resolvedUrl = value;
resolvedUrl = value;
} else if (key === 'integrity') {
packageInfo.integrity = value;
integrity = value;
} else if (key === 'dependencies:' || key === 'optionalDependencies:') {
let depCount = 0;
if (focusSet === null) {
packageInfo.dependencies = packageInfo.dependencies || {};
blockDependencies = blockDependencies || {};
for (let j = i + 1; j < lines.length; j++) {
const depLine = lines[j];
if (!/^\s{4,}\S/.test(depLine)) break;
const [depKey, depVersion] = splitDependencyLine(depLine);
packageInfo.dependencies![depKey] = depVersion;
blockDependencies[depKey] = depVersion;
depCount++;
}
} else {
Expand All @@ -87,18 +107,35 @@ export const parseYarnLock = (content: string, focus?: string[]): Record<string,
}
}

if (!packageInfo.resolvedVersion) {
console.warn(`No resolved version found for package ${name}. Skipping.`);
if (!resolvedVersion) {
console.warn(
`No resolved version found for package block starting with ${headerEntries[0]}. Skipping.`
);
continue;
}
const entryKey = makeKey(name, packageInfo.resolvedVersion!);
if (!packages[entryKey]) {
packages[entryKey] = packageInfo;
} else {
const existing = packages[entryKey];
existing.requestedVersions = Array.from(
new Set([...existing.requestedVersions, ...packageInfo.requestedVersions])
).sort();

for (const headerEntry of headerEntries) {
const [pkgName, requestedVersion] = splitYarnLockDescriptor(headerEntry);
if (focusSet !== null && !focusSet.has(pkgName)) {
continue;
}

const entryKey = makeKey(pkgName, resolvedVersion);
if (!packages[entryKey]) {
packages[entryKey] = {
name: pkgName,
requestedVersions: [requestedVersion],
resolvedVersion,
resolvedUrl,
integrity,
dependencies: blockDependencies ? { ...blockDependencies } : undefined,
};
} else {
const existing = packages[entryKey];
existing.requestedVersions = Array.from(
new Set([...existing.requestedVersions, requestedVersion])
).sort();
}
}
}
return packages;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ tasks:
extract-version-dependencies:
command: node
args:
- $workspaceRoot/scripts/extract_version_dependencies.js
- scripts/extract_version_dependencies.js
- src/platform/packages/private/kbn-ui-shared-deps-npm/version_dependencies.txt
- --collect
- '@babel/runtime'
Expand Down Expand Up @@ -108,7 +108,7 @@ tasks:
args:
- build
deps:
- extract-version-dependencies
- ~:extract-version-dependencies
- '^:build-webpack'
inputs:
- '@group(src)'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ tasks:
extract-version-dependencies:
command: node
args:
- $workspaceRoot/scripts/extract_version_dependencies.js
- scripts/extract_version_dependencies.js
- src/platform/packages/private/kbn-ui-shared-deps-npm/version_dependencies.txt
- '--collect'
- '@babel/runtime'
Expand Down Expand Up @@ -137,7 +137,7 @@ tasks:
args:
- build
deps:
- extract-version-dependencies
- ~:extract-version-dependencies
- ^:build-webpack
inputs:
- '@group(src)'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ tasks:
extract-version-dependencies:
command: node
args:
- $workspaceRoot/scripts/extract_version_dependencies.js
- scripts/extract_version_dependencies.js
- src/platform/packages/private/kbn-ui-shared-deps-src/version_dependencies.txt
- --collect
- '@babel/plugin-transform-numeric-separator'
Expand Down Expand Up @@ -46,7 +46,7 @@ tasks:
args:
- build
deps:
- extract-version-dependencies
- ~:extract-version-dependencies
- '^:build-webpack'
inputs:
- '@group(src)'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ tasks:
extract-version-dependencies:
command: node
args:
- $workspaceRoot/scripts/extract_version_dependencies.js
- scripts/extract_version_dependencies.js
- src/platform/packages/private/kbn-ui-shared-deps-src/version_dependencies.txt
- '--collect'
- '@babel/plugin-transform-numeric-separator'
Expand Down Expand Up @@ -75,7 +75,7 @@ tasks:
args:
- build
deps:
- extract-version-dependencies
- ~:extract-version-dependencies
- ^:build-webpack
inputs:
- '@group(src)'
Expand Down
4 changes: 2 additions & 2 deletions src/platform/packages/shared/kbn-monaco/moon.extend.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ tasks:
extract-version-dependencies:
command: node
args:
- $workspaceRoot/scripts/extract_version_dependencies.js
- scripts/extract_version_dependencies.js
- src/platform/packages/shared/kbn-monaco/version_dependencies.txt
- --collect
- babel-loader
Expand All @@ -34,7 +34,7 @@ tasks:
args:
- build
deps:
- extract-version-dependencies
- ~:extract-version-dependencies
inputs:
- '@group(src)'
- package.json
Expand Down
4 changes: 2 additions & 2 deletions src/platform/packages/shared/kbn-monaco/moon.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ tasks:
extract-version-dependencies:
command: node
args:
- $workspaceRoot/scripts/extract_version_dependencies.js
- scripts/extract_version_dependencies.js
- src/platform/packages/shared/kbn-monaco/version_dependencies.txt
- '--collect'
- babel-loader
Expand All @@ -89,7 +89,7 @@ tasks:
args:
- build
deps:
- extract-version-dependencies
- ~:extract-version-dependencies
inputs:
- '@group(src)'
- package.json
Expand Down
Loading