diff --git a/ci/README.md b/ci/README.md index be0e8e4c4fca..6fbdca39800c 100644 --- a/ci/README.md +++ b/ci/README.md @@ -51,6 +51,16 @@ To ensure security and a focused utility, the bot adheres to specific limitation - opened by [@r-ryantm](https://nix-community.github.io/nixpkgs-update/r-ryantm/). - The user attempting to merge is a member of [@NixOS/nixpkgs-maintainers]. - The user attempting to merge is a maintainer of all packages touched by the PR. +- No [committer][@NixOS/nixpkgs-committers] has an outstanding "changes requested" review. + These block both the merge queue and auto-merge, so the bot refuses to merge until the review is addressed or dismissed. + +Once these constraints are met, the bot picks a merge strategy based on the `no PR failures` commit status: + +- CI passing: the PR is added to the merge queue. +- CI unfinished (pending or missing status): the bot enables [Auto Merge], which queues the PR once required checks succeed. + Note that if CI later fails, nothing happens until it is fixed and passes. +- CI already failing (`error`/`failure` status): the bot does not enable Auto Merge, because it would never trigger, and fixing CI requires a new push that invalidates the merge command. + A fresh `@NixOS/nixpkgs-merge-bot merge` comment is needed once CI is green again. ### Approving merge bot changes @@ -104,3 +114,4 @@ This script can also be run locally to print basic test cases. [@NixOS/nixpkgs-ci]: https://github.com/orgs/NixOS/teams/nixpkgs-ci [@NixOS/nixpkgs-core]: https://github.com/orgs/NixOS/teams/nixpkgs-core [RFC 172]: https://github.com/NixOS/rfcs/pull/172 +[Auto Merge]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request diff --git a/ci/github-script/bot.js b/ci/github-script/bot.js index c952499cec54..8e0043d5505c 100644 --- a/ci/github-script/bot.js +++ b/ci/github-script/bot.js @@ -206,20 +206,8 @@ module.exports = async ({ github, context, core, dry }) => { const maintainers = await getMaintainerMap(pull_request.base.ref) - const merge_bot_eligible = await handleMerge({ - github, - context, - core, - log, - dry, - pull_request, - events, - maintainers, - getTeamMembers, - getUser, - }) - // Check for any human reviews other than the PR author, GitHub actions and other GitHub apps. + // `commit { oid }` is needed by handleMerge to verify approvals are against the current head. const reviews = ( await github.graphql( `query($owner: String!, $repo: String!, $pr: Int!) { @@ -231,6 +219,7 @@ module.exports = async ({ github, context, core, dry }) => { reviews(first: 100) { nodes { state + commit { oid } user: author { # Only get users, no bots ... on User { @@ -266,6 +255,20 @@ module.exports = async ({ github, context, core, dry }) => { r.user.id !== pull_request.user?.id, ) + const merge_bot_eligible = await handleMerge({ + github, + context, + core, + log, + dry, + pull_request, + events, + reviews, + maintainers, + getTeamMembers, + getUser, + }) + const approvals = new Set( reviews .filter((review) => review.state === 'APPROVED') diff --git a/ci/github-script/merge.js b/ci/github-script/merge.js index ee861e21187d..180a12b0fe4a 100644 --- a/ci/github-script/merge.js +++ b/ci/github-script/merge.js @@ -2,11 +2,11 @@ const { classify } = require('../supportedBranches.js') function runChecklist({ committers, - events, files, pull_request, log, maintainers, + reviews, user, userIsMaintainer, }) { @@ -27,18 +27,35 @@ function runChecklist({ .reduce((acc, cur) => acc?.intersection(cur) ?? cur) const approvals = new Set( - events + reviews .filter( - ({ event, state, commit_id }) => - event === 'reviewed' && - state === 'approved' && + ({ state, commit }) => + state === 'APPROVED' && // Only approvals for the current head SHA count, otherwise authors could push // bad code between the approval and the merge. - commit_id === pull_request.head.sha, + commit?.oid === pull_request.head.sha, ) - .map(({ user }) => user?.id) - // Some users have been deleted, so filter these out. - .filter(Boolean), + .map(({ user }) => user.id), + ) + + // A "changes requested" review from a committer blocks both the merge queue and + // auto-merge, even if it was made on an older commit (unlike approvals, GitHub does + // not auto-dismiss changes-requested reviews on push). For each committer, take their + // latest actionable review; if it's CHANGES_REQUESTED, they're blocking the PR. + // Dismissed reviews surface as DISMISSED and comment-only follow-ups as COMMENTED, so + // both are skipped naturally β€” the prior actionable review still stands until the + // committer explicitly approves or requests changes again. + const committerReviewState = new Map() + for (const { user, state } of reviews) { + if ( + committers.has(user.id) && + ['APPROVED', 'CHANGES_REQUESTED'].includes(state) + ) { + committerReviewState.set(user.id, state) + } + } + const noBlockingReviews = !Array.from(committerReviewState.values()).includes( + 'CHANGES_REQUESTED', ) const checklist = { @@ -57,6 +74,11 @@ function runChecklist({ pull_request.user.login === 'r-ryantm', }, 'PR is not a draft': !pull_request.draft, + // CI state is intentionally *not* a checklist item: auto-merge exists precisely to + // cover unfinished CI, and an already-failed CI is reported via the merge message + // (see merge() below) rather than a blanket refusal. + 'PR is not blocked by a "changes requested" review from a [committer](https://github.com/orgs/NixOS/teams/nixpkgs-committers).': + noBlockingReviews, } if (user) { @@ -123,6 +145,7 @@ async function handleMerge({ dry, pull_request, events, + reviews, maintainers, getTeamMembers, getUser, @@ -148,6 +171,14 @@ async function handleMerge({ // including an early exit when the first non-by-name file is found. if (files.length >= 100) return false + const noPrFailuresState = ( + await github.rest.repos.listCommitStatusesForRef({ + ...context.repo, + ref: pull_request.head.sha, + per_page: 100, + }) + ).data.find(({ context }) => context === 'no PR failures')?.state + // Only look through comments *after* the latest (force) push. const lastPush = events.findLastIndex( ({ event, sha, commit_id }) => @@ -173,10 +204,12 @@ async function handleMerge({ )), ) + // Returns `{ reaction, messages }`: the reaction to leave on the merge comment and the + // lines to append to the bot's reply. Throws only on an unexpected API error. async function merge() { if (dry) { core.info(`Merging #${pull_number}... (dry)`) - return ['Merge completed (dry)'] + return { reaction: 'ROCKET', messages: ['Merge completed (dry)'] } } // Using GraphQL mutations instead of the REST /merge endpoint, because the latter @@ -197,16 +230,37 @@ async function handleMerge({ { node_id: pull_request.node_id, sha: pull_request.head.sha }, ) log('merge', 'Queued for merge') - return [ - `:heavy_check_mark: [Queued](${resp.enqueuePullRequest.mergeQueueEntry.mergeQueue.url}) for merge (#306934)`, - ] + return { + reaction: 'ROCKET', + messages: [ + `:heavy_check_mark: [Queued](${resp.enqueuePullRequest.mergeQueueEntry.mergeQueue.url}) for merge (#306934)`, + ], + } } catch (e) { log('Enqueuing failed', e.response.errors[0].message) } - // If required status checks are not satisfied, yet, the above will fail. In this case - // we can enable auto-merge. We could also only use auto-merge, but this often gets - // stuck for no apparent reason. + // Enqueuing fails when the required status checks are not satisfied, yet. If CI has + // already failed, enabling auto-merge would be pointless: it would never fire, and + // fixing CI requires a new push, which invalidates this merge command anyway (we only + // act on comments after the latest push). So we don't enable auto-merge and instead + // ask for a fresh command once CI is green again. + if (['error', 'failure'].includes(noPrFailuresState)) { + log('merge', 'CI has failed, not enabling auto-merge') + return { + reaction: 'THUMBS_DOWN', + messages: [ + ':x: Pull Request could not be merged: CI has failed (#305350).', + '', + '> [!TIP]', + '> PRs cannot be merged while CI is failing.', + '> Once CI is passing, comment `@NixOS/nixpkgs-merge-bot merge` again.', + ], + } + } + + // CI has not finished yet, so we enable auto-merge. We could also only use auto-merge, + // but this often gets stuck for no apparent reason. try { await github.graphql( `mutation($node_id: ID!, $sha: GitObjectID) { @@ -219,12 +273,17 @@ async function handleMerge({ { node_id: pull_request.node_id, sha: pull_request.head.sha }, ) log('merge', 'Auto-merge enabled') - return [ - `:heavy_check_mark: Enabled Auto Merge (#306934)`, - '', - '> [!TIP]', - '> Sometimes GitHub gets stuck after enabling Auto Merge. In this case, leaving another approval should trigger the merge.', - ] + return { + reaction: 'ROCKET', + messages: [ + `:heavy_check_mark: Enabled Auto Merge (#306934)`, + '', + '> [!TIP]', + '> [Auto Merge](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request) will queue this PR once required CI checks succeed.', + '> If CI fails instead, fixing it needs a new push, which disables Auto Merge and invalidates this command β€” comment `@NixOS/nixpkgs-merge-bot merge` again once CI is green.', + '> If GitHub gets stuck even though CI passed (it sometimes does), leaving another approval should kick off the merge.', + ], + } } catch (e) { log('Auto Merge failed', e.response.errors[0].message) throw new Error(e.response.errors[0].message) @@ -267,11 +326,11 @@ async function handleMerge({ const { result, eligible, checklist } = runChecklist({ committers, - events, files, pull_request, log, maintainers, + reviews, user: comment.user, userIsMaintainer: await isMaintainer(comment.user.login), }) @@ -308,10 +367,12 @@ async function handleMerge({ } if (result) { - await react('ROCKET') try { - body.push(...(await merge())) + const { reaction, messages } = await merge() + await react(reaction) + body.push(...messages) } catch (e) { + await react('THUMBS_DOWN') // Remove the HTML comment with node_id reference to allow retrying this merge on the next run. body.shift() body.push(`:x: Merge failed with: ${e} (#371492)`) @@ -336,11 +397,11 @@ async function handleMerge({ const { result } = runChecklist({ committers, - events, files, pull_request, log, maintainers, + reviews, }) // Returns a boolean, which indicates whether the PR is merge-bot eligible in principle. diff --git a/ci/treefmt.nix b/ci/treefmt.nix index 2d0a782c7ace..29419056dd77 100644 --- a/ci/treefmt.nix +++ b/ci/treefmt.nix @@ -118,8 +118,6 @@ "--ignore=sema-unused-def-lambda-witharg-arg" "--ignore=sema-unused-def-lambda-witharg-formal" "--ignore=sema-unused-def-let" - # Keep this rule, because we have `lib.or`. - "--ignore=or-identifier" # TODO: remove after outstanding prelude diagnostics issues are fixed: # https://github.com/nix-community/nixd/issues/761 # https://github.com/nix-community/nixd/issues/762 diff --git a/doc/languages-frameworks/javascript.section.md b/doc/languages-frameworks/javascript.section.md index 4e031f7f5f34..0ecb59dd3bb6 100644 --- a/doc/languages-frameworks/javascript.section.md +++ b/doc/languages-frameworks/javascript.section.md @@ -406,6 +406,8 @@ In case you are patching `package.json` or `pnpm-lock.yaml`, make sure to pass ` } ``` +If needed, `dontPnpmConfigure = true;` can be used to fully disable `pnpmConfigHook` without manually removing it from inputs. + #### Dealing with `sourceRoot` {#javascript-pnpm-sourceRoot} If the pnpm project is in a subdirectory, you can just define `sourceRoot` or `setSourceRoot` for `fetchPnpmDeps`. diff --git a/maintainers/github-teams.json b/maintainers/github-teams.json index e61912fb3a8e..b1901f4c40ec 100644 --- a/maintainers/github-teams.json +++ b/maintainers/github-teams.json @@ -556,8 +556,7 @@ "members": { "Ericson2314": 1055245, "peterwaller-arm": 52030119, - "rrbutani": 7833358, - "sternenseemann": 3154475 + "rrbutani": 7833358 }, "name": "LLVM" }, @@ -943,6 +942,7 @@ }, "members": { "andir": 638836, + "leona-ya": 11006031, "pyrox0": 35778371 }, "name": "Security review" @@ -997,6 +997,17 @@ }, "name": "systemd" }, + "test-driver": { + "description": "Maintain the NixOS integration test driver.", + "id": 18201265, + "maintainers": { + "Ma27": 6025220, + "kmein": 10352507, + "tfc": 29044 + }, + "members": {}, + "name": "test-driver" + }, "xen-project": { "description": "Maintain the Xen Project Hypervisor and the related tooling ecosystem. Members listed as \"Maintainers\" are recipients of Xen Security Advisories sent to xsa@nixos.org.", "id": 11127725, diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index a30acd7b9795..055ef818066f 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -25982,6 +25982,12 @@ githubId = 13762043; matrix = "@sophie:nue.soopy.moe"; }; + sophiebsw = { + name = "Sophia"; + email = "nixpkgs@drifter.dev"; + github = "sophiebsw"; + githubId = 4594464; + }; sophronesis = { email = "oleksandr.buzynnyi@gmail.com"; github = "sophronesis"; diff --git a/nixos/modules/services/home-automation/zigbee2mqtt.nix b/nixos/modules/services/home-automation/zigbee2mqtt.nix index 5ec4d037073d..5fe8b3a68db7 100644 --- a/nixos/modules/services/home-automation/zigbee2mqtt.nix +++ b/nixos/modules/services/home-automation/zigbee2mqtt.nix @@ -84,6 +84,7 @@ in StateDirectory = "zigbee2mqtt"; StateDirectoryMode = "0700"; Restart = "on-failure"; + RestartSec = 10; # Hardening CapabilityBoundingSet = ""; diff --git a/pkgs/applications/editors/vscode/extensions/anthropic.claude-code/default.nix b/pkgs/applications/editors/vscode/extensions/anthropic.claude-code/default.nix index f1fb3d074704..794db4af5815 100644 --- a/pkgs/applications/editors/vscode/extensions/anthropic.claude-code/default.nix +++ b/pkgs/applications/editors/vscode/extensions/anthropic.claude-code/default.nix @@ -21,26 +21,26 @@ vscode-utils.buildVscodeMarketplaceExtension (finalAttrs: { sources = { "x86_64-linux" = { arch = "linux-x64"; - hash = "sha256-wFerIcpbXDL0p7DGh19jXuOZyUvbwq2EzlmnLf1fv5M="; + hash = "sha256-/ns84fHAyTY7sSvhUNzq1XQYq2Xy303zs2BxJY8DBVA="; }; "aarch64-linux" = { arch = "linux-arm64"; - hash = "sha256-ubMVyijSI5WWPSsq6wJCk9BABpli9Kgbgn5T+XP8aMA="; + hash = "sha256-U69X5lpeJaeNVL4WWzCUpI6IfbKSJXGpl30AYnx1fBQ="; }; "x86_64-darwin" = { arch = "darwin-x64"; - hash = "sha256-tEQTTcI7pFgJ6S4Lb2XTe5MXxHudyldzTsYpz5OWr5E="; + hash = "sha256-DHE09NtGNOjB0HdBqTKRtDsZXpxb651kiVGhRwO1tBU="; }; "aarch64-darwin" = { arch = "darwin-arm64"; - hash = "sha256-WskmpZBwQt2mSQpvchI5Ca9ZOyN9srVPGHeMULIGRs8="; + hash = "sha256-5YIZVBMsoF0bWP27sVEVHAaAiqvmoSUgdbc8wsqUCLA="; }; }; in { name = "claude-code"; publisher = "anthropic"; - version = "2.1.148"; + version = "2.1.187"; } // sources.${stdenvNoCC.hostPlatform.system} or (throw "Unsupported system ${stdenvNoCC.hostPlatform.system}"); diff --git a/pkgs/applications/networking/browsers/chromium/info.json b/pkgs/applications/networking/browsers/chromium/info.json index bf2bd624c1ea..fc3ece2ce796 100644 --- a/pkgs/applications/networking/browsers/chromium/info.json +++ b/pkgs/applications/networking/browsers/chromium/info.json @@ -823,7 +823,7 @@ } }, "ungoogled-chromium": { - "version": "149.0.7827.155", + "version": "149.0.7827.196", "deps": { "depot_tools": { "rev": "45dedc4c3b87c982fd846b3dc599b233ed3aff90", @@ -835,16 +835,16 @@ "hash": "sha256-oFs7fZAZEs/gQ7X1A4uigo9+Y+iEN9sMMQYwAjEuD04=" }, "ungoogled-patches": { - "rev": "149.0.7827.155-1", - "hash": "sha256-+DviTrU7mdY3YQIIUzFh0DbFKUokQI8+lmQslUZdNSU=" + "rev": "149.0.7827.196-1", + "hash": "sha256-nRcMTP+su+mFP/JkyLBIDrG+dKYhvPANFw0Y8qVWzrA=" }, "npmHash": "sha256-pF0JtwFpPC4/fodbhSJnQKkczA9WlDg4VqEAy9aDVLg=" }, "DEPS": { "src": { "url": "https://chromium.googlesource.com/chromium/src.git", - "rev": "07b52360cc15066f987c910ab34dfbcd4a8778d2", - "hash": "sha256-D9RKH0kzEfaMsCDnFFIGCGLyfhghnGMOLA0XmOa9MtI=", + "rev": "43eb30368c6ca3d14d540487954abb2780aeae3a", + "hash": "sha256-pwSfASgR4SiQTJBERhOVyR8mANYJk67f+u2pmCCW6ko=", "recompress": true }, "src/third_party/clang-format/script": { @@ -914,8 +914,8 @@ }, "src/third_party/angle": { "url": "https://chromium.googlesource.com/angle/angle.git", - "rev": "591ee1999d950f2bc54be89651eb62c8d7925314", - "hash": "sha256-crooDCkJ6voJyDBIUvtjmXnA4xOx7YmGltuf2ulTLIk=" + "rev": "355cc61af2aadd8f0494800325b2bf9908138108", + "hash": "sha256-fgaCyO0oaz90aTaWMHH8ocySA0hXDHsPEl6vtMj4BY0=" }, "src/third_party/angle/third_party/glmark2/src": { "url": "https://chromium.googlesource.com/external/github.com/glmark2/glmark2", @@ -954,8 +954,8 @@ }, "src/third_party/dawn": { "url": "https://dawn.googlesource.com/dawn.git", - "rev": "5f4c5ef509c5ffa65822302341cf9b2ccad471f9", - "hash": "sha256-h+0Gep+RWTTEVoRrXCRDCtHdbYlSYdNK1botahtqUX0=" + "rev": "54b4153cfef88e048f365f99b962478f0087dfe8", + "hash": "sha256-Bv30zz/pCNVzUl+mKCpusWc94poytv9ZFelZIcs+2B8=" }, "src/third_party/dawn/third_party/glfw3/src": { "url": "https://chromium.googlesource.com/external/github.com/glfw/glfw", @@ -1639,8 +1639,8 @@ }, "src/v8": { "url": "https://chromium.googlesource.com/v8/v8.git", - "rev": "6511f6cfab1f24c360d0fb737d205c27da48a623", - "hash": "sha256-Dpe0Z/zjdPlOlqi85c9QSr7rLs7dww+a/BY68B2MTCw=" + "rev": "933ce636c562cd54d68e7f7c93ab5cdffd685fca", + "hash": "sha256-zYArO6QS9nDIVWPINRVaDN1uX8X/wchBDeZHPZnwHYk=" } } } diff --git a/pkgs/build-support/node/fetch-pnpm-deps/pnpm-config-hook.sh b/pkgs/build-support/node/fetch-pnpm-deps/pnpm-config-hook.sh index dc732c3822f8..52e5a3dbbd53 100644 --- a/pkgs/build-support/node/fetch-pnpm-deps/pnpm-config-hook.sh +++ b/pkgs/build-support/node/fetch-pnpm-deps/pnpm-config-hook.sh @@ -126,4 +126,6 @@ pnpmConfigHook() { echo "Finished pnpmConfigHook" } -postConfigureHooks+=(pnpmConfigHook) +if [ -z "${dontPnpmConfigure-}" ]; then + postConfigureHooks+=(pnpmConfigHook) +fi diff --git a/pkgs/by-name/ar/archon-lite/package.nix b/pkgs/by-name/ar/archon-lite/package.nix new file mode 100644 index 000000000000..3e340f2d8e22 --- /dev/null +++ b/pkgs/by-name/ar/archon-lite/package.nix @@ -0,0 +1,33 @@ +{ + lib, + appimageTools, + fetchurl, + nix-update-script, +}: +let + pname = "archon-lite"; + version = "9.3.85"; + src = fetchurl { + url = "https://github.com/RPGLogs/Uploaders-archon-lite/releases/download/v${version}/archon-lite-v${version}.AppImage"; + hash = "sha256-ooNvgbtV6HKgzRLgHZul92NLnEB8oX6fHL6iwfHajVA="; + }; +in +appimageTools.wrapType2 { + inherit pname version src; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Application for uploading MMORPG combat logs"; + homepage = "https://www.archon.gg/download"; + downloadPage = "https://github.com/RPGLogs/Uploaders-archon-lite/releases/tag/v${version}"; + license = lib.licenses.unfree; # no license listed + mainProgram = "archon-lite"; + platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ + hekazu + sophiebsw + ]; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + }; +} diff --git a/pkgs/by-name/ca/cargo-tarpaulin/package.nix b/pkgs/by-name/ca/cargo-tarpaulin/package.nix index 3945643395b6..388845f21469 100644 --- a/pkgs/by-name/ca/cargo-tarpaulin/package.nix +++ b/pkgs/by-name/ca/cargo-tarpaulin/package.nix @@ -12,16 +12,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cargo-tarpaulin"; - version = "0.35.4"; + version = "0.35.5"; src = fetchFromGitHub { owner = "xd009642"; repo = "tarpaulin"; tag = finalAttrs.version; - hash = "sha256-fm9q3VTZh5QKXXw4+t4xngz5gyiZqKpUHShpz0nf2Is="; + hash = "sha256-m822/s9HBKIxAfzgQEBOZeHcHU57MPGOumqlTc55Ro8="; }; - cargoHash = "sha256-4og97E5zdRIO7swsfgh87MdWh4E4onMIcrCb1/KCJEc="; + cargoHash = "sha256-Qo06iUy/1ElEe/gkH23JZLw7AKPkBPw6aLXnvx9Hv4g="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/ca/cargo-zigbuild/package.nix b/pkgs/by-name/ca/cargo-zigbuild/package.nix index 115ef44c1b23..e8327d1ba95f 100644 --- a/pkgs/by-name/ca/cargo-zigbuild/package.nix +++ b/pkgs/by-name/ca/cargo-zigbuild/package.nix @@ -10,16 +10,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cargo-zigbuild"; - version = "0.22.3"; + version = "0.23.0"; src = fetchFromGitHub { owner = "rust-cross"; repo = "cargo-zigbuild"; tag = "v${finalAttrs.version}"; - hash = "sha256-f9jmt3UXniXVeX2NyuRx30DrpRtczLO7ZioNi4TI3Zk="; + hash = "sha256-Y73aPGsrSAZVxNJ1r1lS9uXmfpAwthq6NW4urKS8ab0="; }; - cargoHash = "sha256-7ZQpAePAIqSNiKM8bTAhyx4QyDQda1J8TSnZX0W2tfY="; + cargoHash = "sha256-dt2s18B9RVwEBlun5cegoqfW1KYXFqjdScdc/Q2aDlI="; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/by-name/cl/claude-code/manifest.json b/pkgs/by-name/cl/claude-code/manifest.json index 4017c80574da..d92c820fce8a 100644 --- a/pkgs/by-name/cl/claude-code/manifest.json +++ b/pkgs/by-name/cl/claude-code/manifest.json @@ -1,47 +1,47 @@ { - "version": "2.1.148", - "commit": "650a3d6e4b17f2fd01a8432a7691d9fb147adf8d", - "buildDate": "2026-05-21T23:11:38Z", + "version": "2.1.187", + "commit": "6a53320fad5541a68d79e4b6c53677df77b98e33", + "buildDate": "2026-06-23T17:07:42Z", "platforms": { "darwin-arm64": { "binary": "claude", - "checksum": "f4a1860d3d9b01653dde4183e2f1216ca9e0c1a404dd63caa4edf07c904102aa", - "size": 211584672 + "checksum": "a59a16ba4922adab7a145728f215d042184d349f5f7e72cddb7fc114250a4ce3", + "size": 215994048 }, "darwin-x64": { "binary": "claude", - "checksum": "7c52d8419cc22b8355c6309d4542df32b3f245d1a7c3329a30797244ef3c4629", - "size": 214082320 + "checksum": "7f57b6935b4246d03cb7acee90dc22153083483a267da589c5c920dd04744c36", + "size": 224795776 }, "linux-arm64": { "binary": "claude", - "checksum": "b53c29b1fe003372636048c16d57a74f1ca2c57d8413dd5b14e2ca77710823ed", - "size": 236959368 + "checksum": "b49be8a5e565bf2d45b50d2de62017b25462131acc9425d2fdb98b8f29c9dce2", + "size": 232240864 }, "linux-x64": { "binary": "claude", - "checksum": "3b38836a1801a6397f8431c6a62b127ce47e3e9d103c1a700fca7f9c8ab5f8ac", - "size": 237037264 + "checksum": "bb02fcb33626f8c599d10d8bee38585d4cf8d4225c3b497869dee7454e7bf361", + "size": 234874664 }, "linux-arm64-musl": { "binary": "claude", - "checksum": "06b54aef9989ea379933239c3f2dbee254034523ff67f9a0c8ed31ac6982c077", - "size": 229814104 + "checksum": "972fc2e0bc8104edb593ce7723d4414c0ed8e4df6d90ad26ae48097b1d910478", + "size": 225620168 }, "linux-x64-musl": { "binary": "claude", - "checksum": "ad0077c9ec67ec2eaeee8be7624cc2e55b9e012e1c19154e5b80ef0a47d0e360", - "size": 231431216 + "checksum": "c5a783d13aac71d42324f2e9dcd395c266bd5774951faf0d94855c737024bee3", + "size": 229858704 }, "win32-x64": { "binary": "claude.exe", - "checksum": "1bb46bdb06ef092b0af29cafbfec6ab73251ea34562cfe1d3a5bdf67fe3a5f93", - "size": 232827552 + "checksum": "24964d08c5100bac6071352e5837101b333de1c1afefd2b8b0e7a60db6c0ef5c", + "size": 226329760 }, "win32-arm64": { "binary": "claude.exe", - "checksum": "d86eeb4d84a2bbee253913843a4a507192a37512a2d918a4c91e3f583cb310a5", - "size": 228792992 + "checksum": "04124c0ba09ece85a856de652e84386094c372f002ff767a94d4a43ecf776f96", + "size": 220992160 } } } diff --git a/pkgs/by-name/cl/claude-code/package.nix b/pkgs/by-name/cl/claude-code/package.nix index 62b66ae13082..ccf91a8aab7d 100644 --- a/pkgs/by-name/cl/claude-code/package.nix +++ b/pkgs/by-name/cl/claude-code/package.nix @@ -19,7 +19,7 @@ }: let stdenv = stdenvNoCC; - baseUrl = "https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases"; + baseUrl = "https://downloads.claude.ai/claude-code-releases"; manifest = lib.importJSON ./manifest.json; platformKey = "${stdenv.hostPlatform.node.platform}-${stdenv.hostPlatform.node.arch}"; platformManifestEntry = manifest.platforms.${platformKey}; @@ -92,7 +92,7 @@ stdenv.mkDerivation (finalAttrs: { description = "Agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster"; homepage = "https://github.com/anthropics/claude-code"; downloadPage = "https://claude.com/product/claude-code"; - changelog = "https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md"; + changelog = "https://github.com/anthropics/claude-code/blob/v${finalAttrs.version}/CHANGELOG.md"; license = lib.licenses.unfree; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; platforms = [ diff --git a/pkgs/by-name/cl/claude-code/update.sh b/pkgs/by-name/cl/claude-code/update.sh index 1e2125a74625..fd0e340365a5 100755 --- a/pkgs/by-name/cl/claude-code/update.sh +++ b/pkgs/by-name/cl/claude-code/update.sh @@ -5,7 +5,7 @@ set -euo pipefail cd "$(dirname "${BASH_SOURCE[0]}")" -BASE_URL="https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases" +BASE_URL="https://downloads.claude.ai/claude-code-releases" VERSION="${1:-$(curl -fsSL "$BASE_URL/latest")}" diff --git a/pkgs/by-name/ed/eddie/package.nix b/pkgs/by-name/ed/eddie/package.nix index 977c49caeff9..0054a2a59c73 100644 --- a/pkgs/by-name/ed/eddie/package.nix +++ b/pkgs/by-name/ed/eddie/package.nix @@ -107,7 +107,7 @@ buildDotnetModule (finalAttrs: { cp src/Lib.Platform.Linux.Native/bin/libLib.Platform.Linux.Native.so $out/lib/eddie-ui cp src/App.Forms.Linux.Tray/bin/eddie-tray $out/lib/eddie-ui - ln -s $out/lib/eddie-ui/eddie-cli-elevated $out/lib/eddie/eddie-cli-elevated + cp $out/lib/eddie-ui/eddie-cli-elevated $out/lib/eddie/eddie-cli-elevated ln -s $out/lib/eddie-ui/libLib.Platform.Linux.Native.so $out/lib/eddie/Lib.Platform.Linux.Native.so cp -r src/App.Forms.Linux/bin/*/Release/* $out/lib/eddie-ui diff --git a/pkgs/by-name/el/element-call/missing-hashes.json b/pkgs/by-name/el/element-call/missing-hashes.json deleted file mode 100644 index d07a1b8b2cbd..000000000000 --- a/pkgs/by-name/el/element-call/missing-hashes.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "@esbuild/aix-ppc64@npm:0.25.1": "6de3a364b7f79f21f66d606d4d29c72ef81c741d71ab4bb941c4eabe7b6a809b1340f4dd5c943827005e421912880741320b9617d17fce762d204cfb94175223", - "@esbuild/aix-ppc64@npm:0.27.2": "78d13201fd4d048d19955fc510db508b14b5fc1a38f4ea506469eac65db770c65fc3727df15b087778178fc8e3304df88559a7441d227451efd8a0b1a688a729", - "@esbuild/android-arm64@npm:0.25.1": "716c98ad3220c71cbaedcfa34aa7c877a3fae911938c3776a66600d7f65980e384799a6832a1b9aea96c6d5a8880610f54744bd0813e743c511d44056ef528d6", - "@esbuild/android-arm64@npm:0.27.2": "e8aded79b2f1f8841c082396f7476bee51c056ed468e438fe2ee00b6b73e96acd640d0b8d0cc13e63c972898f6cdd275483c36c562d4186f0efc01881672b08a", - "@esbuild/android-arm@npm:0.25.1": "d2c9e95dd2027f6e14250a90a11136d9ce73a2157a8d104df4a9dd199d3c50cd91f25813536b4776630acb78596bd5a025976962c6d624df7594c32f2d9c1395", - "@esbuild/android-arm@npm:0.27.2": "ac673502cf6672dabb4b82a26bb3cc120402acba1b87a92481c0a37c8fa06847fd16503714bb227f6351d836f6f60c644ab50fda95c896d8eeb3e5ec3af96226", - "@esbuild/android-x64@npm:0.25.1": "92f1bec801b414ecdc4b73adfbb4482f4f2cfba423d33296914fa59ffdafb81facc445a7f65d1eea813c078220a0606f4be02252843bb9039ceb2755f643387c", - "@esbuild/android-x64@npm:0.27.2": "dcf5c84443645af089e3b82421097c0288a4bdebabf231449ddd66e1b48952e5af975bd26954a50be0441605b91cfe779ca2192bc4b02b7b19192a2a86f912f1", - "@esbuild/darwin-arm64@npm:0.25.1": "9c4cd09c0bd8479e27e04e2397edccebae928184c463684490137d2b7ea3171051b66596db229af2ad3e6a911c1c8a9d10b8aed30d11d0aa155ac0d309fd5dd6", - "@esbuild/darwin-arm64@npm:0.27.2": "cf08b03672941acbea8b509db79a7cb9cf8c81b563c75414c87b8c8442cb1178063eaa14b7cd1ae6cae95dba7e1de9343b721a6d19523a5f21c3d1367e3688b7", - "@esbuild/darwin-x64@npm:0.25.1": "31b64c02be9438e175e8b343c52e0bbc7964f08a1b44e0adbfa2a1b229ccd0ad0184cdb8313272b4590298833ea0b197d82a909466caffe90105f8acb30402d0", - "@esbuild/darwin-x64@npm:0.27.2": "5d3207cf85674b01a817c43064525e39b215802a9ecf352d15e92e926c3e549d95b30e127c2d3f8196ac9472ecca87a861d9f270221ee55884c7a6d0aa636fe1", - "@esbuild/freebsd-arm64@npm:0.25.1": "e04018ffd760dd101a5931e0248751bdfca98e3f29be9b41051d55278907f52a3e5ab80c32168e208c2ff287510d6d5b765d3adc841bfd621af7930c10a547e6", - "@esbuild/freebsd-arm64@npm:0.27.2": "45f475fc6ab2f4760155ca2b50c4cf0ea8aef2bfad3ba4548f4547898d3cc785dcfc2ea58a190be3c20c715c771d1d694a9eb6ef5fb6b72d93b6abc94f366b98", - "@esbuild/freebsd-x64@npm:0.25.1": "438215bea2dc716d2c9ffe9b921bbde06e77d96ec0c837fd79f46bc6e195aa50e5f55490228f7433df7aa47810eec5c602a9d9cf956c1794778018632b196f34", - "@esbuild/freebsd-x64@npm:0.27.2": "7fb62475cb9cdf54d22f2fa984ef57f891d05f366143227efd1d28d507a3b1f2c723239b3e22b3ac418467e6284a08eaf6dcf0bfd2a0f1bea06d0ac73c2aa8de", - "@esbuild/linux-arm64@npm:0.25.1": "c839788b6db471f144bc2627a117083c9a50402c76cde2f0e5411faaeb3a5cde4972bb7336b87de67cd0a65d4d5b00759668407a03b5d4ed3130d4984837429a", - "@esbuild/linux-arm64@npm:0.27.2": "89b8e94e2f4e7cf564623bb6b1d2e9ab218c6d4cafed93778fb797b552d3495f08c99e49d9a2573823bc62660353ce4b4cf17a2828359a3437a9caf8da99673b", - "@esbuild/linux-arm@npm:0.25.1": "ecf9fd9028d2166619b9a45161a987eebb6ef3dcb0159a2607ab164c58c26a15cf274e0b1088834c07ef9166349276d595fdad5c42bce8d03a55cb213d947efa", - "@esbuild/linux-arm@npm:0.27.2": "fd7c845a5ee2073ef6c5bc9d914844b48b82006ebf00f5acb98a43f600ee83fda578034ed8eb6f7f462ed4e3ecd8b7c6570a78bb708ee7eb10b93751ab879ad6", - "@esbuild/linux-ia32@npm:0.25.1": "36f208e10a4b778a28a9002338872e52d24dfc18e25d3b41dc53892279c3ee842d76c7b608a30620f128d85344acac0dc86f203f5de7082a21fa2e908c96b68c", - "@esbuild/linux-ia32@npm:0.27.2": "23f67cfbab67aa860d7afa842e29fa75eb16af8577a811c54263fc3a276c05e468d532bcdb118d174624ed76a9e133d2520567937d4ed646caf9dd19aadbae15", - "@esbuild/linux-loong64@npm:0.25.1": "75d95e6ee995c9f2abb202ca430685e5d58fbe9b0b5b01a69b498c9b360d309026d15bae7831de9c0c4f02e45028a92ffb169117c3b56dd1ac7ea8c6ef50628d", - "@esbuild/linux-loong64@npm:0.27.2": "b37e531c91346c7b5d31ce6664a334c391a27c3c9fb282136abf232111575387e9d066abf27f29436afc913270a8e2c2b09c1210fbf87e70f1028685d94ec4de", - "@esbuild/linux-mips64el@npm:0.25.1": "7fc22eb8a7dc9ee743113cb327eef3591bced4753f416f8dd722794a198a053ab6e120b3b13c1bb6cc89cbd02ea502187b1a3c9ebe8187407665c78995153740", - "@esbuild/linux-mips64el@npm:0.27.2": "8b48a6c7dc8f16147c1087b56710685f3b89279498caab6b63cad3db9402308adf633111d773cfe31756d41fe46e895f2c1ece0fc1ed484ab02e92c28357f0c6", - "@esbuild/linux-ppc64@npm:0.25.1": "84f914a776774bf209c5f96a3708e52477e1966b689a880c0256530063bc581125b5cc04b9700f4aa892e7770ba47c5a950a4be9f1bb3ccbe60a500383602156", - "@esbuild/linux-ppc64@npm:0.27.2": "4f207f87bfc1253974e00d3cf27316d3e93b7e51fde46ed618367e62f2875dffd66812acb85e8d2949dffc73eed7b3939a42bb93f40ec8fca4a6988173709dab", - "@esbuild/linux-riscv64@npm:0.25.1": "97f47cd5695686254b58f950ca973df1fcecfebf3bd585629121a65323ffaa7f95cf821392011ee069da492b46fdff771be332c699a438cf123351610e12d621", - "@esbuild/linux-riscv64@npm:0.27.2": "837a0aa03e82a1b853632d153515d68035e57b39ccf730a778311c04e3429aa80f001d990392519a641945501f6ab3af331481eb4551e99718e7cd2ba5862089", - "@esbuild/linux-s390x@npm:0.25.1": "10760a999d432d092a8ebe5f09752ee7e8ea77a1afa5f1adfe7f9ccb5bbf77d6e0da6dce5d1a4a7cd731d89b6075723c2bc0328f446ed129c4b63c6441ba22ae", - "@esbuild/linux-s390x@npm:0.27.2": "426a4b9d9d4c58d61031a412c64c8cfb0db0e38da3cf4dade253c45a46dc539dccee24700e965e66c7c397a65fef765fc43bdc6b3f46d6bc6f289f79c4b6d7d5", - "@esbuild/linux-x64@npm:0.25.1": "4cdb1625726580eb42432878912d5480a0321559ef2c6425c1db55f89f3fe1c35fb03b3adec92c3f52a4db751d7535f23086b80ed7b219d1edbb254ffbe96e68", - "@esbuild/linux-x64@npm:0.27.2": "febde9f6908220698cf72947534eca590c2b5ce8b0c9bc6170649c5f64f7f93808bb9be2caabd7c63068dc68e218741f27a17ffb8826d87fb487a0639888b90f", - "@esbuild/netbsd-arm64@npm:0.25.1": "f2427b094e072d2db7944b1d2a988dd9f17627976a395b941f225aec2d0565da2ea110a845eafae960af08e3eea74eb327e5eb9dbe06dc1e14f4439596c3b47c", - "@esbuild/netbsd-arm64@npm:0.27.2": "1f69c833bfc5d1d7c58f52fca35637df1686a5bff5c15af900c165b2561a809d805201dc8de712fa73c69205e96a078096cd00b00e9ca8fb5cd8741e4ec943b8", - "@esbuild/netbsd-x64@npm:0.25.1": "c8347ecc18b175923a3cbdaef61b64815ffe0cf2cc285f4034337c2df83e78a118ebfdf2ac3a46a8d8a19ce6a0e0605d27d11570d1758ab90074c99047b82fc0", - "@esbuild/netbsd-x64@npm:0.27.2": "29c9cbd018788521145d719013020dfbf744185eaeaff845f0fc925c67630c66743b03486a2531493f79482d2315e910a27a31f89a791e0a9589e04d86d295d7", - "@esbuild/openbsd-arm64@npm:0.25.1": "719812786b4f3ab4471a306c930ab1bf31e9d92f933ea2a34566f07d6269df5058e7d48408127daa197e6fdb21e30697303127d259b76b18936d534619a3eb15", - "@esbuild/openbsd-arm64@npm:0.27.2": "dccfe8ca6c0d648a26a626b5a4caf3325fed90d7ae343db2a86be9af2479391518c02d54470c2690aec23af1359debe7fbf125d979b5ea891a63fe4b206c2d6f", - "@esbuild/openbsd-x64@npm:0.25.1": "21590cbeda028e9b9f8131c54c36bab65a5d5bd5dd4e6bd9f80438045a655e9ac634bb3535a8650b694db267fe23bd2318a59cdec2fae1ba389ed1a00cc0bbe7", - "@esbuild/openbsd-x64@npm:0.27.2": "0bc581af266608ba01c530ec1fe2b475630dbd56538562f8b1748f7044727bd08d0784afa9aee8aa0a2afe843bb0b47572b4c6babb2a9953808d37263d730be1", - "@esbuild/openharmony-arm64@npm:0.27.2": "1f04a6d690bd2ef231801b0c46b40359b4d4451409cf46a865613f3942835e7633286c328c31f3a10065491f314e6c7c47d7a8f79c1a1ec25f59ff46f5765c6f", - "@esbuild/sunos-x64@npm:0.25.1": "e20ce3891d8717fe2cb885d92d16e9409802316eaa91071be5c7d75164d23dbc5a502be3691039051843d94192e8cf43ade61014a8bce298cfc13a8d3ddd85b0", - "@esbuild/sunos-x64@npm:0.27.2": "9543db0acc86a762f9fd708a3226ebc45a1625885532d153928b9d2b0de90b6d78db0f9b77261d345b95c1ba7282ff3ab0fa37932c2dcd9b1c2b7da7cf39cd76", - "@esbuild/win32-arm64@npm:0.25.1": "749a211eae6a47e5ceb71898df668d083bdec2ed762116fea7772824281f793aceb0487946e20ff604d7e102d1fc8538a73f15b476ca36e07f7ddfb601f6dfa1", - "@esbuild/win32-arm64@npm:0.27.2": "2bfe0fef3ace4a5b0f7647168ae21eda9344a8bef4924d60d1ca781b59eb1f7fef0858aef6e2fb8c185638117bfb7dc18c55a700db57799955c8f655eaaf1f44", - "@esbuild/win32-ia32@npm:0.25.1": "bb45fd889d858678ec68114bfc398965ed8d44e46a9517fcd9f7b397101c2cf94d78938a2640f6f2a1fe65de4ae8830fd426cd21a28302bb92333913b3c16c85", - "@esbuild/win32-ia32@npm:0.27.2": "c510d04bc11f11b7bd6bbf0ea28e2ba484e6232b7655b5cc8ccf8276ef7da760d54a79eaef87a1a40a81632a5ec4a9f7bb08f63920e5d145c8a893ae76d93094", - "@esbuild/win32-x64@npm:0.25.1": "e33291b9834095e6460bd20bb15c49361758bf66d28ccffe0c06a1565211c91f668d9cfc0cbd5bd7a5def693fe7272dbe290b08d4eadba29e750c8a9c739f564", - "@esbuild/win32-x64@npm:0.27.2": "d11933a70f9c908e3cd7202071dc23a9dea8afa58a4c2e22a3beab3516d0898345a5ebb2af47ffb2cc7f5d2a6d788ed4681fa7f37e121f1605149f124d632c67", - "@oxc-resolver/binding-android-arm-eabi@npm:11.19.1": "7fe35b00927acc6b1e9abd7cbf001cc4855f697b1a6604f245cf80ecb09628195d724545680b11ee58c462482247017e6d25d3b6074437ac61842ebb2200e925", - "@oxc-resolver/binding-android-arm64@npm:11.19.1": "2074f0f614aac0178d8c879f0a3897aebbe9cce66241bb8db8dd0400bf30db8a322fbcfb3dffd90e4a9f08eb52f32026155094c3515901f9e50f8c8115508bc2", - "@oxc-resolver/binding-darwin-arm64@npm:11.19.1": "43f0ebd467387f508dd13749b67a1b21b81902dfec7c7fdee24df1976942a78171e29e4ef09390dae88181dcdc4ccf08f43ade727c101572fff961b925f79834", - "@oxc-resolver/binding-darwin-x64@npm:11.19.1": "efad8b905d7cab94ddb749a7b486e7606d21a71ba3f2c8bb117e4a7648aa22499663c96819196e0f38830bb87885f147f517147f3117f805f908274086de01f9", - "@oxc-resolver/binding-freebsd-x64@npm:11.19.1": "750c57d8291f8ab8759f68f16b10aa5967879b7f6f432aed838d3e4b3ea25857c3f5dc1fd4677e79de890e79cc5bdf8bc845ab403bc7d9b7d7827c6af11404a3", - "@oxc-resolver/binding-linux-arm-gnueabihf@npm:11.19.1": "d1a71513000f2d7c300c45ac6b0900831e37759fd0df7c92a6cd2c66b87a724a303da7df94ed16fcbba72ccda45766923212c9711edd228b9f97dfa8da38e08a", - "@oxc-resolver/binding-linux-arm-musleabihf@npm:11.19.1": "4f1b757e8e86fbfdb7f8fd43e9684f3fe339e46606d836b509241c9217ae608397c5c4383b45ba9eabc3b6b4664842839037d41a9e49e726e4ef6e75d871904c", - "@oxc-resolver/binding-linux-arm64-gnu@npm:11.19.1": "6b1342772f5f347fe2a25582a8cd60f3814a7a6e4d2bc8e4a140355409df550858b961ce93932e3ce01fd440e7d4b2dd144978cd6372af325a6e2d85e496b4e8", - "@oxc-resolver/binding-linux-arm64-musl@npm:11.19.1": "40b99fcf1401d0f09a701572927bae4305a15705d2bb44003773ca5bb3ea8f28037e1e64fef5525eef314bd6ef348997b36cd521b4023053e0e0873b6700d52f", - "@oxc-resolver/binding-linux-ppc64-gnu@npm:11.19.1": "3581288514ce58eb79c927a03a43667e7e51b67b20be1f2c8343bce07f1fa848b9802f2d12990af73e8dae790d1ac6200611699c5350bd28a06abe3115a98002", - "@oxc-resolver/binding-linux-riscv64-gnu@npm:11.19.1": "1a8e43df91d8e7fec21c3cf816f20f98a0237b202e99d3768e1a9c49d9ddfbf0acea962991c4ae67dea936f3d2031d77bcacd3af615eecacf7828246be79becc", - "@oxc-resolver/binding-linux-riscv64-musl@npm:11.19.1": "a71fd4c5a13d7cb588d341318811d2728d64111878757988b15c2be3199d0e3f9dacb867ca990ec3cc38ff9eeaf9dfdee7aeb23738028031e6303903f0e501c4", - "@oxc-resolver/binding-linux-s390x-gnu@npm:11.19.1": "f4fc6a75967235ab88550b30891eb17a490e5bcfa8e9b2eaad33b3a4e7fd52ca60e6e0df3dbed5ab9bf4cab51bf05725e86e6d3172a46a1a95a928012a2d52bc", - "@oxc-resolver/binding-linux-x64-gnu@npm:11.19.1": "090f364639f4c6c021f345dc182c37c0d8370bc7b7ce5d93c546a49a3188d400a9c030106cba27a8c02dd7044384efc51187cee4f2e617109593e3c237a65509", - "@oxc-resolver/binding-linux-x64-musl@npm:11.19.1": "653779d9f6b78df664667e5f8693741727cd7c3e74831e0642a3ecd84fbfb36d302c1ae38a53cf33cc9516aef7d7f5ff66dacbb5f3701805baefc5785a5d7669", - "@oxc-resolver/binding-openharmony-arm64@npm:11.19.1": "4d88027b1ad55ab8b4820e8ee24c3a23b6ab6731c14da0da3c6b27394657bb54dd09d01085a64884e8f7219f719b48ea2221f0d7c8f10d2e7288c8a5e0b68287", - "@oxc-resolver/binding-wasm32-wasi@npm:11.19.1": "53be10977b68276a5e72be2a6b56361ff5548243aac269b93178a6058b0cf4dc14484a73ee5d0b68be1582982d96d434d97838515d1a9034a901080aef9d1b75", - "@oxc-resolver/binding-win32-arm64-msvc@npm:11.19.1": "f7671ed2e4f73d9f5ec386355fc9d93940c32bccdfbb7a7fb16bdc51e3cc42ed920cf9cd2f72d77c56e4a4a2c9357e53df3ae88b36106fcb363771e47f50e19e", - "@oxc-resolver/binding-win32-ia32-msvc@npm:11.19.1": "d60ccab0778023eb6977636c32d05c2369b54390aa8bdba4da1809323149548359bc546bccd9e5e717310c46e2a742ccd4dbc3f4750789aa97b5f9cef10ddcf7", - "@oxc-resolver/binding-win32-x64-msvc@npm:11.19.1": "bd84616bb214bd3f63531299f5576538f3f63411f95f1fb470fc8d7434c409fa1922bcbe535c4137673ceb3517e61b102e739a06b1963df600b717a954d22b16", - "@parcel/watcher-android-arm64@npm:2.5.1": "f99d569e4f6cf78a1b0097fb9d4682cb201a74370ae440c531da4e1d5021e46141bfcdf8ef708b51a5b9cb1c30f78eea933ce75216d5eeb7b969a2ad27c68e4a", - "@parcel/watcher-darwin-arm64@npm:2.5.1": "973c7ef3c94608da9cd1b20b18b9a7de2fb46fe44553731fe372b640de524491976150d0845f3d5953b74ed8ea469cb8d18a48651d0e5fb82f549a6b46b54f79", - "@parcel/watcher-darwin-x64@npm:2.5.1": "848c5516aed9c36e14751200dbbf57e83c0bd46cdab0932df33db120e66b9596de18eeb98980e319efde84014f67d9e7924d7555383d8ffcefe35c501166b84b", - "@parcel/watcher-freebsd-x64@npm:2.5.1": "cbd2b7884bc92422edabc0c74c3fbc06512bb7300fc137aaff2e96f46f61e5272265a0b5d230acc82a0e777b0c11661f0b8b7f89a9342c0920b752436dd2c750", - "@parcel/watcher-linux-arm-glibc@npm:2.5.1": "f2e1ec14dbb0f85a84a75f55fd7721598694976ba3ad439832b57e558b0d9240cc80ff83053fb8cf7caffb0592d51bb39d325112763ec1734924b49d4ba9c144", - "@parcel/watcher-linux-arm-musl@npm:2.5.1": "83344c7ecda2e79db59d711bcee0c3fa26922989139c031bd762cf3d5bfb191797e22e9ed6072690b822dfd62629623ba4e7eedb3c41930a987fc3d4106000e1", - "@parcel/watcher-linux-arm64-glibc@npm:2.5.1": "562231feb159a294752378bebecc69a2d33366a9d877835844578799f8536398006e0e570849f9e2db04085a3ea82131459cd10fd6b42dea10cd73bd0c9ca13e", - "@parcel/watcher-linux-arm64-musl@npm:2.5.1": "f62db52a90ebbaa29ca9900e6b9bd3fc6e5c650741bbde9a2742cbc332c678b753fc6a596d67659394fd9262aa826463ea667d18cc554bcaaac9e8da1a2a29d0", - "@parcel/watcher-linux-x64-glibc@npm:2.5.1": "425e557991fde5092d6a9e20be71810600415e5fa157dca0b39bd8db86653d3ee7b037305261c8782d1a065f2a64d235e17b57876b26f5bb0dd7a9bdbe364690", - "@parcel/watcher-linux-x64-musl@npm:2.5.1": "4dbb066ba9478c8b8de39e3c1083cbb74f86f03eaf4445603e69909d6c072134644316faa20a2445419b9fe1a8063ade7b5331a5766d807ee0b15b8a70c59a2d", - "@parcel/watcher-win32-arm64@npm:2.5.1": "e015314d6b9b727cbe25eedf963ca8b23bf6d4e78d3c28008bd0d2657940ad54a271330486df3a93a5f1a30f2b8d052d14415b85cc7e7b747c6c73b5dc055628", - "@parcel/watcher-win32-ia32@npm:2.5.1": "920b6ad6a2095aeb9c2d329c5118472a3c14669fa93eaa99aa8050c76c5c2d3d76d92677167ed748c2ac5487c568d5df16d5d94f4bc7c354094fccd8e0d6350c", - "@parcel/watcher-win32-x64@npm:2.5.1": "8f1c8e41ec9f86e4dcd0d4db0a077742d5dcc853f15ea888387183e34e2efcff09fd1cc9ec46fc1121b9ad4ddc0e221283f2ffb23cfd7dbcbb8b03060b461963", - "@rollup/rollup-android-arm-eabi@npm:4.50.1": "fc43d07ffb8be5b65f124a0d9ebbfce82c1126e38747c3c277bca067e188fe9618c0139ef2ec542857700ff2331aff297a7076309aa5e37cb970dd13871ab715", - "@rollup/rollup-android-arm64@npm:4.50.1": "a0ce9ce850a61c79b89b80624444521bdd067863883575448152fb8b7806626acbcf94c14bef42604b6149f50c9907273bbbdda406df6ebddc730195ef43eee1", - "@rollup/rollup-darwin-arm64@npm:4.50.1": "7545f01772f92cd050ce4e60dc1f182fe2eab85217be2eba8d05d971df603ab7fde6531c90472b3c5a0ae1509a1c038f61c14686695b7dd1863eb11192c27832", - "@rollup/rollup-darwin-x64@npm:4.50.1": "3e4eb9799b3c674902c8ea849a72f03f626371622279b95005c3937afabef6673f1ddeff047339a4b2f73670354fc5477f7698d5b1576faee9dc3640ced8d614", - "@rollup/rollup-freebsd-arm64@npm:4.50.1": "d5125df84bb7923185db9f77d096a0b31fd0262e1d28a1abf4372370a1630772edd8f50dfd8bd98de58ebe58a7d4a8034ad2333de6df1daa22d4bab9561c2752", - "@rollup/rollup-freebsd-x64@npm:4.50.1": "219f5206b2f0430b76da61e0c49b311275df6ecb9e7af3baac35b16dcb43f8d6d132b959c8287d8938ed2420e6f1d889a8a562fad4395c49ce24ee475e26476f", - "@rollup/rollup-linux-arm-gnueabihf@npm:4.50.1": "c8136810a86436369bc030d98afcfe53d7a8e1d33152f1c8a86f206213079b364089fc4445ddcfaa375b71868b9b9b58cabc9c3ea0a1b40b64bc5aac421d9a21", - "@rollup/rollup-linux-arm-musleabihf@npm:4.50.1": "61a435947f9d74b8e8618a03ac5e0c82dbc17a77a40b7c088c8f3c77fb571c469d89a440310bd83b054fbb0822487954161b78e7886f51f6418a6b1a45f7c379", - "@rollup/rollup-linux-arm64-gnu@npm:4.50.1": "7e06235ea040781c9a73e377cfeb0f051253f59d7ca56fc9b4f2a615342508779238c713dab3118de504b2ad62f1dafb6f8c97ec0c1fe7d2fc8124f0bdae3f98", - "@rollup/rollup-linux-arm64-musl@npm:4.50.1": "9b874c876de5be7f9290b7858952c6f5014958ef1db83ffe54a14877b12a6a912e34099a9278fbe1c2e23c910c09c6feee90e167b4d748dfb0ae63047062fff4", - "@rollup/rollup-linux-loongarch64-gnu@npm:4.50.1": "2ba32899d57949734db5ac0518656d53d1f54b7e970ac8424f8548364b867d7ee530a7a275af58bf5ac328ac8f12943a706446946b0a2b46a48662d75194cecc", - "@rollup/rollup-linux-ppc64-gnu@npm:4.50.1": "6d34e6737175738a86ec3b6b8d5cecdaa9fff9bf115aec434d15cdad3823afda7dfc68acae97e38256ffdc3ef45080907a980626f20682efe1c2d95e62970e3e", - "@rollup/rollup-linux-riscv64-gnu@npm:4.50.1": "df48c61bff1c47a3b109260c4bf13d0b72d0b18b4dd8b43828844ab81cd09b1c1974d353f8562df3281e0369c4fb0f5fd368f0a59078a58349123cc04e6e5b72", - "@rollup/rollup-linux-riscv64-musl@npm:4.50.1": "c8be03392cacd3b92bed221ea4b92694d8c8779c6e3e91d387cd81b280ebc0b5078b8e617c37ff317f3f05574e2c4b3443dea15c5a82f98f90b48c353aa9e2d1", - "@rollup/rollup-linux-s390x-gnu@npm:4.50.1": "4ae6fa0d82232f34357c85de9d4eb5b6865b547b17587caca7e9fdd06df5081bbff1fde9b193012ee5279b62cd8471e3257ad1c5a3fdaf6f484bb8758c14e756", - "@rollup/rollup-linux-x64-gnu@npm:4.50.1": "1d69c7626091b648547fea9a021fa35423a77b4e51297aa4fb7cf6c2d3492525ff2cef7392f77159eefaf53fcaad7ddbfb28b10bff3b633d756ee86f48445354", - "@rollup/rollup-linux-x64-musl@npm:4.50.1": "35de0d4d070b3d470e4ca08b7f66ca21ba44b71d79e530ecb2e81329edcd9b4ebc10e530008caac2c11b18b8093190bd62b5e5e06652a52097f84148d3228d3f", - "@rollup/rollup-openharmony-arm64@npm:4.50.1": "2721d51beca80da39a36b07b97c34d9a880d371ca69635aac21023774852de9f0ee282972969555b2f6ab31703915d18d7ef880bf13830cf63a463c37e017de8", - "@rollup/rollup-win32-arm64-msvc@npm:4.50.1": "909b72f1c9535ffb443dfa0be72f00662369c2292561f02804bf34d88908ff46ad7fb61284f3b58cc4cf52e046a38001b69f0a4e927dced3933fb4eba3e7e107", - "@rollup/rollup-win32-ia32-msvc@npm:4.50.1": "7454e38f68825ea98812fcc6a130e77968225af1347e3629930cea2cb18a23bf502624e3eafc6c47cb056f9755eb02ff4b2273b65cfa24d00211cee2fbdff080", - "@rollup/rollup-win32-x64-msvc@npm:4.50.1": "dfe41235a62327c50da7fcab7207f22ccc469ba3deabd8e55c1eccb1b45a88f8e7b0e86f8e77403fc938cb208aa652d0a62b531ba2671c6c64db93e45ea2b03b", - "@sentry/cli-darwin@npm:2.50.2": "c3584d15672040bd57f206f767c0fb1636db469337cd4e01cb290b3152ffe369e4ab58ec8f1e25b9198cf378eada0f932b558a426e66b125e053328ef2542c14", - "@sentry/cli-linux-arm64@npm:2.50.2": "6818e4746d1e47f852ecb71ca84ea2cc99ee1615ffd18803fb1edaaa3dd10ec87d02c21c259ce58d02b79d6c4bb6eed8d65762d5ea32c8e103220cb3d8e94d43", - "@sentry/cli-linux-arm@npm:2.50.2": "fcc0fe7b13fa98e3b4669ebe4375211b752b9f455c5caf2c06b31dd25c8d1c8f3e4cb8cb96be4cd10e8ee6aef7d4b0b04927244ede69b2806ca2c9e7fae183de", - "@sentry/cli-linux-i686@npm:2.50.2": "4b914dc15cc1a469f76d496900d8c912a4be1b0c803124aa157b1432d4c35db48e03f8e4fb0d2fa26ed671e85d7d0ebbc470b895b2f137ebe57b8589844743fc", - "@sentry/cli-linux-x64@npm:2.50.2": "b733701b644bfa872a51c88bdb714c029e32d0ca44b46c11c725a3f899739f6a1c15f8468b89631544001092fd7377b48d93628d20e4435b522fa92fba144e67", - "@sentry/cli-win32-arm64@npm:2.50.2": "ec047ae8c71450430151a75f7045752b0d6265805acad211249aeb4d10e36cabf0ba5ef9c6c388e862cc1e3137c78452231cb503891987467ddaad59917fcc46", - "@sentry/cli-win32-i686@npm:2.50.2": "b5e8752fe277aef134e92801a6186f007d1b328ff62caf2449593d7be4a6671df5d78e297be32ca1e5ae3ba61de69457f75d1affb4299d1320a3b7b021e58ee0", - "@sentry/cli-win32-x64@npm:2.50.2": "8d8e9e5210986f2766d1b70dcd1f086ffd3c702d881c52ba554409b004fba0b182a27d7dd6853802b0b21c92e9baf66d405252cf391e1c1b8999cc1ee02d0adf" -} diff --git a/pkgs/by-name/el/element-call/package.nix b/pkgs/by-name/el/element-call/package.nix index be6a7c822c9d..8ae64d5d77ac 100644 --- a/pkgs/by-name/el/element-call/package.nix +++ b/pkgs/by-name/el/element-call/package.nix @@ -2,71 +2,91 @@ lib, stdenv, fetchFromGitHub, - fetchYarnDeps, - git, - yarn-berry, - yarnConfigHook, + pnpm_10, + pnpmConfigHook, + fetchPnpmDeps, nodejs, runCommand, }: +let + pnpm = pnpm_10; + + # Separately build matrix-js-sdk, as upstream expects to 'pnpm i && pnpm build' in the dependency's directory + # Keep this in sync with upstream locked version (likely a stable release, but not always latest) + matrix-js-sdk = stdenv.mkDerivation (finalAttrs: { + pname = "matrix-js-sdk"; + version = "41.8.0-rc.0"; + + src = fetchFromGitHub { + owner = "matrix-org"; + repo = "matrix-js-sdk"; + tag = "v${finalAttrs.version}"; + hash = "sha256-1e6nWeHNAhVynxv2R7GY5NRCBN0BriRjA3zLK0D5O9g="; + }; + + pnpmDeps = fetchPnpmDeps { + inherit (finalAttrs) pname version src; + inherit pnpm; + fetcherVersion = 4; + hash = "sha256-Me76t/wl4HtmbQ+FzUNLEpOM6aYbzTl68tuDSEh+Hq4="; + }; + + nativeBuildInputs = [ + nodejs + pnpmConfigHook + pnpm + ]; + + buildPhase = '' + runHook preBuild + pnpm build + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir $out + cp -r src $out/ + cp -r lib $out/ + cp package.json $out/ + + runHook postInstall + ''; + }); +in stdenv.mkDerivation (finalAttrs: { pname = "element-call"; - version = "0.18.0"; + version = "0.20.2"; src = fetchFromGitHub { owner = "element-hq"; repo = "element-call"; tag = "v${finalAttrs.version}"; - hash = "sha256-/5RkZNf/ErSxNwW0ZfPwF52k3fZzAQAFMmbJ9xM7f74="; + hash = "sha256-paUcZhjcLbJOpQOR8gRpGe0LzSaKtWsTzE1svzQaVZY="; }; - patches = [ - # Remove after updating since project has moved to pnpm - # https://github.com/element-hq/element-call/blob/v0.19.2/package.json#L159 - ./yarn-4.14-support.patch - ]; - - matrixJsSdkRevision = "6e3efef0c5f660df47cf00874927dec1c75cc3cf"; - matrixJsSdkOfflineCache = fetchYarnDeps { - yarnLock = "${finalAttrs.offlineCache}/checkouts/${finalAttrs.matrixJsSdkRevision}/yarn.lock"; - hash = "sha256-YvXmPWHt3qL9z8uap0/faKi5OId6zZ0ISiMT3x6ARx8="; + pnpmDeps = fetchPnpmDeps { + inherit (finalAttrs) pname version src; + inherit pnpm; + fetcherVersion = 4; + hash = "sha256-JOpKxtElmNKepx3W+1LIolcrYrevsCEq7+Aoh0kwZEw="; }; - dontYarnInstallDeps = true; - preConfigure = '' - cp -r $offlineCache writable - chmod u+w -R writable - pushd writable/checkouts/${finalAttrs.matrixJsSdkRevision}/ - mkdir -p .git/{refs,objects} - echo ${finalAttrs.matrixJsSdkRevision} > .git/HEAD - SKIP_YARN_COREPACK_CHECK=1 offlineCache=$matrixJsSdkOfflineCache yarnConfigHook - SKIP_YARN_COREPACK_CHECK=1 yarn build - popd - offlineCache=writable - # The matrix-js-sdk git package checksum in yarn.lock was computed against a - # developer checkout with pre-compiled lib/. nix-prefetch-git stores a bare - # working tree so the repack at build time produces a different zip hash. - # The offline cache is already verified by the FOD hash, so this is safe. - export YARN_CHECKSUM_BEHAVIOR=ignore - ''; - - missingHashes = ./missing-hashes.json; - offlineCache = yarn-berry.fetchYarnBerryDeps { - inherit (finalAttrs) src missingHashes patches; - hash = "sha256-2P4kwccT2WP2SlJJ1biZCRU8O+Y43sGJmfRTUujklUg="; - }; + inherit matrix-js-sdk; nativeBuildInputs = [ - git - yarn-berry.yarnBerryConfigHook - yarnConfigHook nodejs + pnpmConfigHook + pnpm ]; buildPhase = '' runHook preBuild - ${lib.getExe yarn-berry} build + # Instead of making an override, invalidating the pnpm lock, just add the built files in lib right before invoking pnpm build + cp -r ${finalAttrs.matrix-js-sdk}/* node_modules/matrix-js-sdk/ + pnpm build runHook postBuild ''; @@ -79,17 +99,23 @@ stdenv.mkDerivation (finalAttrs: { runHook postInstall ''; - passthru.tests.build = runCommand "${finalAttrs.pname}-test" { } '' - test -f ${finalAttrs.finalPackage}/index.html - test -d ${finalAttrs.finalPackage}/assets - touch $out - ''; + passthru = { + tests.build = runCommand "${finalAttrs.pname}-test" { } '' + test -f ${finalAttrs.finalPackage}/index.html + test -d ${finalAttrs.finalPackage}/assets + touch $out + ''; + inherit (finalAttrs) matrix-js-sdk; + }; meta = { changelog = "https://github.com/element-hq/element-call/releases/tag/${finalAttrs.src.tag}"; homepage = "https://github.com/element-hq/element-call"; description = "Group calls powered by Matrix"; - license = lib.licenses.asl20; - maintainers = with lib.maintainers; [ kilimnik ]; + license = lib.licenses.agpl3Only; + maintainers = with lib.maintainers; [ + bartoostveen + kilimnik + ]; }; }) diff --git a/pkgs/by-name/el/element-call/yarn-4.14-support.patch b/pkgs/by-name/el/element-call/yarn-4.14-support.patch deleted file mode 100644 index bb64eb874448..000000000000 --- a/pkgs/by-name/el/element-call/yarn-4.14-support.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff --git a/.yarnrc.yml b/.yarnrc.yml ---- a/.yarnrc.yml -+++ b/.yarnrc.yml -@@ -1,3 +1,6 @@ - nodeLinker: node-modules - plugins: - - .yarn/plugins/linker.cjs -+approvedGitRepositories: -+ - "**" -+enableScripts: true -diff --git a/yarn.lock b/yarn.lock ---- a/yarn.lock -+++ b/yarn.lock -@@ -2,6 +2,6 @@ - # Manual changes might be lost - proceed with caution! - - __metadata: -- version: 8 -+ version: 9 - cacheKey: 10c0 - diff --git a/pkgs/by-name/el/element-desktop/package.nix b/pkgs/by-name/el/element-desktop/package.nix index 118a37a0023c..1ca0250cacc6 100644 --- a/pkgs/by-name/el/element-desktop/package.nix +++ b/pkgs/by-name/el/element-desktop/package.nix @@ -30,13 +30,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "element-desktop"; - version = "1.12.21"; + version = "1.12.22"; src = fetchFromGitHub { owner = "element-hq"; repo = "element-web"; tag = "v${finalAttrs.version}"; - hash = "sha256-wtMmfNZptCMPp3j6dicEM/80otz20UBQw+HXb8EXJl0="; + hash = "sha256-TtC4KUnaKy/gmh5CbkPTWKCFjdeKvt8esFt3awdkA/g="; }; pnpmDeps = fetchPnpmDeps { @@ -47,7 +47,7 @@ stdenv.mkDerivation (finalAttrs: { ; inherit pnpm; fetcherVersion = 3; - hash = "sha256-OPpJ5XJ0YeidvlT88JwQIKXxbQ40l0xdVH/9uT3La2M="; + hash = "sha256-Cxc2/NpOpkXavDvBgaU6Douud7AO06jt1KjuaLnZh8M="; }; env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; diff --git a/pkgs/by-name/el/element-web-unwrapped/package.nix b/pkgs/by-name/el/element-web-unwrapped/package.nix index ee61fce02654..3cb26541f8c4 100644 --- a/pkgs/by-name/el/element-web-unwrapped/package.nix +++ b/pkgs/by-name/el/element-web-unwrapped/package.nix @@ -25,13 +25,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "element-web"; - version = "1.12.21"; + version = "1.12.22"; src = fetchFromGitHub { owner = "element-hq"; repo = "element-web"; tag = "v${finalAttrs.version}"; - hash = "sha256-wtMmfNZptCMPp3j6dicEM/80otz20UBQw+HXb8EXJl0="; + hash = "sha256-TtC4KUnaKy/gmh5CbkPTWKCFjdeKvt8esFt3awdkA/g="; }; pnpmDeps = fetchPnpmDeps { @@ -39,7 +39,7 @@ stdenv.mkDerivation (finalAttrs: { inherit (finalAttrs) version src; inherit pnpm; fetcherVersion = 3; - hash = "sha256-OPpJ5XJ0YeidvlT88JwQIKXxbQ40l0xdVH/9uT3La2M="; + hash = "sha256-Cxc2/NpOpkXavDvBgaU6Douud7AO06jt1KjuaLnZh8M="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ev/evolution-data-server/hardcode-gsettings.patch b/pkgs/by-name/ev/evolution-data-server/hardcode-gsettings.patch index 9a45269b21f9..c259dd0f1269 100644 --- a/pkgs/by-name/ev/evolution-data-server/hardcode-gsettings.patch +++ b/pkgs/by-name/ev/evolution-data-server/hardcode-gsettings.patch @@ -130,7 +130,7 @@ index 9d986d2..d63902a 100644 g_object_unref (settings); diff --git a/src/addressbook/libedata-book/e-book-meta-backend.c b/src/addressbook/libedata-book/e-book-meta-backend.c -index 60ff97f..8535dec 100644 +index c24a37a..e5cf57e 100644 --- a/src/addressbook/libedata-book/e-book-meta-backend.c +++ b/src/addressbook/libedata-book/e-book-meta-backend.c @@ -148,7 +148,18 @@ ebmb_is_power_saver_enabled (void) @@ -338,7 +338,7 @@ index 94f0769..8de758b 100644 g_clear_object (&settings); diff --git a/src/camel/camel-utils.c b/src/camel/camel-utils.c -index 2c0b6ef..b354332 100644 +index 3de034a..b6732ba 100644 --- a/src/camel/camel-utils.c +++ b/src/camel/camel-utils.c @@ -363,7 +363,19 @@ void @@ -363,10 +363,10 @@ index 2c0b6ef..b354332 100644 G_CALLBACK (mi_user_headers_settings_changed_cb), NULL); G_UNLOCK (mi_user_headers); diff --git a/src/camel/providers/imapx/camel-imapx-server.c b/src/camel/providers/imapx/camel-imapx-server.c -index e605049..9961fea 100644 +index e3f2391..374c72d 100644 --- a/src/camel/providers/imapx/camel-imapx-server.c +++ b/src/camel/providers/imapx/camel-imapx-server.c -@@ -5666,7 +5666,18 @@ camel_imapx_server_do_old_flags_update (CamelFolder *folder) +@@ -5682,7 +5682,18 @@ camel_imapx_server_do_old_flags_update (CamelFolder *folder) if (do_old_flags_update) { GSettings *eds_settings; @@ -507,10 +507,10 @@ index 3738359..f9ce2d9 100644 g_object_unref (settings); diff --git a/src/libedataserver/e-oauth2-service.c b/src/libedataserver/e-oauth2-service.c -index c999d4d..e9cf7c5 100644 +index 9f56da2..f82921a 100644 --- a/src/libedataserver/e-oauth2-service.c +++ b/src/libedataserver/e-oauth2-service.c -@@ -93,7 +93,18 @@ eos_default_guess_can_process (EOAuth2Service *service, +@@ -95,7 +95,18 @@ eos_default_guess_can_process (EOAuth2Service *service, name_len = strlen (name); hostname_len = strlen (hostname); diff --git a/pkgs/by-name/ev/evolution-data-server/package.nix b/pkgs/by-name/ev/evolution-data-server/package.nix index 4a686d1d2775..65178d7ce4cc 100644 --- a/pkgs/by-name/ev/evolution-data-server/package.nix +++ b/pkgs/by-name/ev/evolution-data-server/package.nix @@ -50,7 +50,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "evolution-data-server"; - version = "3.60.1"; + version = "3.60.2"; outputs = [ "out" @@ -59,7 +59,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "mirror://gnome/sources/evolution-data-server/${lib.versions.majorMinor finalAttrs.version}/evolution-data-server-${finalAttrs.version}.tar.xz"; - hash = "sha256-M/ktO4gi66BMMTeWwHeMu2Who4Ry6FftxfmIVMyps0w="; + hash = "sha256-IITb2sOWNxs2XVBMH/RYZrqNyi8SUuXaHT2cM6vcEoY="; }; patches = [ diff --git a/pkgs/by-name/fb/fbida/package.nix b/pkgs/by-name/fb/fbida/package.nix index 36a76bf05353..f899ac7908e5 100644 --- a/pkgs/by-name/fb/fbida/package.nix +++ b/pkgs/by-name/fb/fbida/package.nix @@ -1,91 +1,95 @@ { lib, stdenv, - fetchurl, - libGL, - libjpeg, - libexif, - giflib, - libtiff, - libpng, - libwebp, - libdrm, + fetchFromGitLab, + hexdump, + meson, + ninja, + perl, pkg-config, - freetype, - fontconfig, - which, - imagemagick, - curl, - sane-backends, + giflib, + libdrm, + libexif, + libiconvReal, + libinput, + libtsm, + libwebp, + libxkbcommon, libxpm, - libepoxy, + libxt, + motif, pixman, poppler, - libgbm, - lirc, + udev, }: stdenv.mkDerivation (finalAttrs: { pname = "fbida"; - version = "2.14"; + version = "2.15-1"; - src = fetchurl { - url = "http://dl.bytesex.org/releases/fbida/fbida-${finalAttrs.version}.tar.gz"; - sha256 = "0f242mix20rgsqz1llibhsz4r2pbvx6k32rmky0zjvnbaqaw1dwm"; + __structuredAttrs = true; + strictDeps = true; + + src = fetchFromGitLab { + owner = "kraxel"; + repo = "fbida"; + tag = "fbida-${finalAttrs.version}"; + hash = "sha256-iwJkFynhz3SJ8MRjUsKtQAjPCBvST1ezsxTw2ZCXBag="; }; patches = [ - # Upstream patch to fix build on -fno-common toolchains. - (fetchurl { - name = "no-common.patch"; - url = "https://git.kraxel.org/cgit/fbida/patch/?id=1bb8a8aa29845378903f3c690e17c0867c820da2"; - sha256 = "0n5vqbp8wd87q60zfwdf22jirggzngypc02ha34gsj1rd6pvwahi"; - }) # Prevents using function declaration without explicit parameters. ./function-parameters.patch ]; nativeBuildInputs = [ + hexdump + meson + ninja + perl pkg-config - which ]; + buildInputs = [ - libGL - libexif - libjpeg - libpng giflib - freetype - fontconfig - libtiff - libwebp - imagemagick - curl - sane-backends libdrm + libexif + libiconvReal + libinput + libtsm + libwebp + libxkbcommon libxpm - libepoxy + libxt + motif pixman poppler - lirc - libgbm + udev ]; + patchPhase = '' + runHook prePatch + + patchShebangs scripts/*.pl + patchShebangs scripts/*.sh + + sed -i -E \ + -e '/^jpeg_run[[:space:]]*=.*$/d' \ + -e "/^jpeg_ver[[:space:]]*=.*$/c\\jpeg_ver = '62'" \ + meson.build + + runHook postPatch + ''; + makeFlags = [ - "prefix=$(out)" - "verbose=yes" - "STRIP=" - "JPEG_VER=62" + "HOST=nix" ]; - postPatch = '' - sed -e 's@ cpp\>@ gcc -E -@' -i GNUmakefile - sed -e 's@$(HAVE_LINUX_FB_H)@yes@' -i GNUmakefile - ''; - meta = { description = "Image viewing and manipulation programs including fbi, fbgs, ida, exiftran and thumbnail.cgi"; homepage = "https://www.kraxel.org/blog/linux/fbida/"; + downloadPage = "https://gitlab.com/kraxel/fbida/"; + changelog = "https://gitlab.com/kraxel/fbida/-/blob/${finalAttrs.src.tag}/Changes?ref_type=tags"; license = lib.licenses.gpl2; maintainers = with lib.maintainers; [ pSub ]; platforms = lib.platforms.linux; diff --git a/pkgs/by-name/gd/gdm/package.nix b/pkgs/by-name/gd/gdm/package.nix index a84f733c3345..6495cdc457d8 100644 --- a/pkgs/by-name/gd/gdm/package.nix +++ b/pkgs/by-name/gd/gdm/package.nix @@ -44,7 +44,7 @@ in stdenv.mkDerivation (finalAttrs: { pname = "gdm"; - version = "50.0"; + version = "50.1"; outputs = [ "out" @@ -53,7 +53,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "mirror://gnome/sources/gdm/${lib.versions.major finalAttrs.version}/gdm-${finalAttrs.version}.tar.xz"; - hash = "sha256-ZG9T1o8tLRRxRv+uuFBH3ti4E9yxwQTY8Ow2ymCetb8="; + hash = "sha256-dwFZNzUSGSQQ9BK10MRnjsFXPxrks5yB/nWGH+iJAXQ="; }; mesonFlags = [ diff --git a/pkgs/by-name/gn/gnome-control-center/package.nix b/pkgs/by-name/gn/gnome-control-center/package.nix index 6fdf165b7ec8..d4d1d2eeaa6e 100644 --- a/pkgs/by-name/gn/gnome-control-center/package.nix +++ b/pkgs/by-name/gn/gnome-control-center/package.nix @@ -77,11 +77,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "gnome-control-center"; - version = "50.1"; + version = "50.2"; src = fetchurl { url = "mirror://gnome/sources/gnome-control-center/${lib.versions.major finalAttrs.version}/gnome-control-center-${finalAttrs.version}.tar.xz"; - hash = "sha256-64MkkdCI5PdCbopZKxBCikWlc2wL/+IQXFHExow6Ud0="; + hash = "sha256-tWvriHuUMumAp1e5juydMdiWlev/tHkbPDvUeWI6kmE="; }; patches = [ diff --git a/pkgs/by-name/gn/gnome-session/package.nix b/pkgs/by-name/gn/gnome-session/package.nix index f1f41e7ea312..2ae9f47e8790 100644 --- a/pkgs/by-name/gn/gnome-session/package.nix +++ b/pkgs/by-name/gn/gnome-session/package.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "gnome-session"; # Also bump ./ctl.nix when bumping major version. - version = "50.0"; + version = "50.1"; outputs = [ "out" @@ -36,7 +36,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "mirror://gnome/sources/gnome-session/${lib.versions.major finalAttrs.version}/gnome-session-${finalAttrs.version}.tar.xz"; - hash = "sha256-vncIzZ0mDhrBg4FTE9u2ILGHbq1bo5zn6i5tx629ckY="; + hash = "sha256-Yom2r6RNPkyZnOV2H/iywQujCfVflCXysT+YIIyB9vs="; }; patches = [ diff --git a/pkgs/by-name/gn/gnome-shell/package.nix b/pkgs/by-name/gn/gnome-shell/package.nix index bede5d2d751e..94315515d002 100644 --- a/pkgs/by-name/gn/gnome-shell/package.nix +++ b/pkgs/by-name/gn/gnome-shell/package.nix @@ -73,7 +73,7 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "gnome-shell"; - version = "50.1"; + version = "50.2"; outputs = [ "out" @@ -82,7 +82,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "mirror://gnome/sources/gnome-shell/${lib.versions.major finalAttrs.version}/gnome-shell-${finalAttrs.version}.tar.xz"; - hash = "sha256-G0d2AXLBTz9O3Rya/zZfTeRVg1F78PgN9NOsvU5MspQ="; + hash = "sha256-UyFUIOUO/dTQYRultZ4Qy0yJ+j9R4q3f2Vyt4GGgmik="; }; patches = [ diff --git a/pkgs/by-name/gn/gnome-software/package.nix b/pkgs/by-name/gn/gnome-software/package.nix index 52b81eec1fce..c89227c58930 100644 --- a/pkgs/by-name/gn/gnome-software/package.nix +++ b/pkgs/by-name/gn/gnome-software/package.nix @@ -48,11 +48,11 @@ in stdenv.mkDerivation (finalAttrs: { pname = "gnome-software"; - version = "50.1"; + version = "50.2"; src = fetchurl { url = "mirror://gnome/sources/gnome-software/${lib.versions.major finalAttrs.version}/gnome-software-${finalAttrs.version}.tar.xz"; - hash = "sha256-aWfu/sadUdNNIAWFye3+JPFRgD5J7ZKEo9dO2w5TQKg="; + hash = "sha256-ysroXVfkbRj0p8j+M0vzXIwY51uKZvrVbgzioA4c/j8="; }; patches = [ diff --git a/pkgs/by-name/gn/gnome-text-editor/package.nix b/pkgs/by-name/gn/gnome-text-editor/package.nix index ffafb849bb03..8c8fb7beaaaf 100644 --- a/pkgs/by-name/gn/gnome-text-editor/package.nix +++ b/pkgs/by-name/gn/gnome-text-editor/package.nix @@ -23,11 +23,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "gnome-text-editor"; - version = "50.0"; + version = "50.1"; src = fetchurl { url = "mirror://gnome/sources/gnome-text-editor/${lib.versions.major finalAttrs.version}/gnome-text-editor-${finalAttrs.version}.tar.xz"; - hash = "sha256-ncKZ2k2qCFQjtdSNtZ8AIa1V50FDpcuKsuX/4Xln9Fs="; + hash = "sha256-9oA2sJ03j6qIO/6Tbkecb/NwJ8L/7RAdr5Et9wxR0OY="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/gn/gnome-user-docs/package.nix b/pkgs/by-name/gn/gnome-user-docs/package.nix index 246b3cd0420c..6327615c371b 100644 --- a/pkgs/by-name/gn/gnome-user-docs/package.nix +++ b/pkgs/by-name/gn/gnome-user-docs/package.nix @@ -11,11 +11,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "gnome-user-docs"; - version = "50.0"; + version = "50.2"; src = fetchurl { url = "mirror://gnome/sources/gnome-user-docs/${lib.versions.major finalAttrs.version}/gnome-user-docs-${finalAttrs.version}.tar.xz"; - hash = "sha256-6OIzJBhMfphcUE8F9tnGNCDJqdH2Tv3l2iqBEjYHL3g="; + hash = "sha256-g0hj2RYYmuE/clYr6B04FyMuE20NN+w3aBERH/oVlUI="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/gn/gnome-user-share/package.nix b/pkgs/by-name/gn/gnome-user-share/package.nix index 1cc81d060b58..e5043acb06d8 100644 --- a/pkgs/by-name/gn/gnome-user-share/package.nix +++ b/pkgs/by-name/gn/gnome-user-share/package.nix @@ -26,11 +26,11 @@ in stdenv.mkDerivation (finalAttrs: { pname = "gnome-user-share"; - version = "48.2"; + version = "48.3"; src = fetchurl { url = "mirror://gnome/sources/gnome-user-share/${lib.versions.major finalAttrs.version}/gnome-user-share-${finalAttrs.version}.tar.xz"; - hash = "sha256-Ayho1Ar4UIC6Thi6XatGwOZj7H5DiUnwgsgFeV9ivwY="; + hash = "sha256-oE1IP0mz92naj/Xi0/y/++rztsa3HYLSoqYju0seDdQ="; }; cargoDeps = rustPlatform.fetchCargoVendor { diff --git a/pkgs/by-name/gr/grafana/package.nix b/pkgs/by-name/gr/grafana/package.nix index 19e9c093ff56..c7ad9b9f092a 100644 --- a/pkgs/by-name/gr/grafana/package.nix +++ b/pkgs/by-name/gr/grafana/package.nix @@ -21,7 +21,7 @@ buildGoModule (finalAttrs: { pname = "grafana"; - version = "13.0.2"; + version = "13.0.3"; subPackages = [ "pkg/cmd/grafana" @@ -33,7 +33,7 @@ buildGoModule (finalAttrs: { owner = "grafana"; repo = "grafana"; rev = "v${finalAttrs.version}"; - hash = "sha256-knalINdJPFrvj6HNxWPV6wu6TSkrRvgkZjOnECOsWwU="; + hash = "sha256-HOTArHAoqhyKiqJf0Py2JMiMBloSgNDnVPDcKWlnY3I="; }; patches = [ @@ -55,12 +55,12 @@ buildGoModule (finalAttrs: { # Since this is not a dependency attribute the buildPackages has to be specified. offlineCache = buildPackages.yarn-berry_4-fetcher.fetchYarnBerryDeps { inherit (finalAttrs) src missingHashes patches; - hash = "sha256-NXDXmed2TsMQS99breDt0Ky6X2ZyuWkJ5KyKz5Apkt8="; + hash = "sha256-pYuNW74ghHmBVzRcfXTXROjxo2FmsxmkTUbJpEFMkow="; }; disallowedRequisites = [ finalAttrs.offlineCache ]; - vendorHash = "sha256-rFGwtplr+n0qgIulycNQ5L/lh4ZFoHCrYeIfbb+e/h4="; + vendorHash = "sha256-dVu95a6xc7fEK3epeY0ZzF4IUT+WhozAmSDicYoIL4A="; # Grafana seems to just set it to the latest version available # nowadays. diff --git a/pkgs/by-name/gu/gupnp-av/package.nix b/pkgs/by-name/gu/gupnp-av/package.nix index 9ab6982ea828..22422a67b388 100644 --- a/pkgs/by-name/gu/gupnp-av/package.nix +++ b/pkgs/by-name/gu/gupnp-av/package.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "gupnp-av"; - version = "0.14.4"; + version = "0.14.5"; outputs = [ "out" @@ -25,7 +25,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "mirror://gnome/sources/gupnp-av/${lib.versions.majorMinor finalAttrs.version}/gupnp-av-${finalAttrs.version}.tar.xz"; - sha256 = "Idl0sydctdz1uKodmj/IDn7cpwaTX2+9AEx5eHE4+Mc="; + sha256 = "k5GPz1r1Kf2ls9LZ/Dt3zZPfiAZJObgvJJ9Vd9jeHAI="; }; strictDeps = true; diff --git a/pkgs/by-name/ho/homebank/package.nix b/pkgs/by-name/ho/homebank/package.nix index de3635b82153..e7026b74bd4a 100644 --- a/pkgs/by-name/ho/homebank/package.nix +++ b/pkgs/by-name/ho/homebank/package.nix @@ -13,10 +13,10 @@ stdenv.mkDerivation (finalAttrs: { pname = "homebank"; - version = "5.10.1"; + version = "5.10.2"; src = fetchurl { url = "https://www.gethomebank.org/public/sources/homebank-${finalAttrs.version}.tar.gz"; - hash = "sha256-Z1EtMYjqRfkqb5Mm6CnBQq9a1QkwZwLzsEV6GrYR1Co="; + hash = "sha256-8L6v4H6iIVXI+OJneY1usF1uAV1WYLlvs0/eylprxMc="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/kr/krita-unwrapped/package.nix b/pkgs/by-name/kr/krita-unwrapped/package.nix index b2db245af594..039a958e02d6 100644 --- a/pkgs/by-name/kr/krita-unwrapped/package.nix +++ b/pkgs/by-name/kr/krita-unwrapped/package.nix @@ -37,10 +37,10 @@ stdenv.mkDerivation (finalAttrs: { pname = "krita-unwrapped"; - version = "6.0.1"; + version = "6.0.2.1"; src = fetchurl { url = "mirror://kde/stable/krita/${finalAttrs.version}/krita-${finalAttrs.version}.tar.gz"; - hash = "sha256-COddFMgFJh/IIovsFt70cF9unPsBkecb0EzEwOGChIo="; + hash = "sha256-Z1M8sRXewqWYe1r6fdTPjgREuQfNmTSc8dD7ZEVuQPg="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/li/librewolf-unwrapped/librewolf.nix b/pkgs/by-name/li/librewolf-unwrapped/librewolf.nix index 8db148066c60..1e3bf61a2e63 100644 --- a/pkgs/by-name/li/librewolf-unwrapped/librewolf.nix +++ b/pkgs/by-name/li/librewolf-unwrapped/librewolf.nix @@ -37,8 +37,6 @@ rec { cp ${source}/assets/search-config.json services/settings/dumps/main/search-config.json sed -i '/MOZ_SERVICES_HEALTHREPORT/ s/True/False/' browser/moz.configure - sed -i '/# This must remain last./i gkrust_features += ["glean_disable_upload"]\'$'\n' toolkit/library/rust/gkrust-features.mozbuild - cp ${source}/patches/pref-pane/category-librewolf.svg browser/themes/shared/preferences cp ${source}/patches/pref-pane/librewolf.css browser/themes/shared/preferences cp ${source}/patches/pref-pane/librewolf.inc.xhtml browser/components/preferences diff --git a/pkgs/by-name/li/librewolf-unwrapped/src.json b/pkgs/by-name/li/librewolf-unwrapped/src.json index d032717d2235..7995f6b699ea 100644 --- a/pkgs/by-name/li/librewolf-unwrapped/src.json +++ b/pkgs/by-name/li/librewolf-unwrapped/src.json @@ -1,11 +1,11 @@ { - "packageVersion": "152.0.1-2", + "packageVersion": "152.0.2-1", "source": { - "rev": "152.0.1-2", - "hash": "sha256-qr0eO+ucXguTb2QDhbsI9jjlx9fzfZVAI++87UfXcXE=" + "rev": "152.0.2-1", + "hash": "sha256-CgH0HOtNbdoHMZ/MJL/zPK0Gn+e+qqtZjqPDSq63gX8=" }, "firefox": { - "version": "152.0.1", - "hash": "sha512-myWVFI7ZdwQOorIefW7OcPDlP6yblrMRWxE76nbq1sBCL26UsVQCg7Qw/tXo6aIndxpjV78W9W1TCn+ufcdVOg==" + "version": "152.0.2", + "hash": "sha512-5OVM///P1XUerFgXp7dLDvCqQ/wA7yk5fMnfmqUlcrInK5bmA3OnDXEr5NyEkXDY1cG0SfPql4tKso3uGQVrAw==" } } diff --git a/pkgs/by-name/ma/makemkv/package.nix b/pkgs/by-name/ma/makemkv/package.nix index 6d4ffd64d016..b424ee120797 100644 --- a/pkgs/by-name/ma/makemkv/package.nix +++ b/pkgs/by-name/ma/makemkv/package.nix @@ -27,19 +27,19 @@ stdenv.mkDerivation ( "http://www.makemkv.com/download/makemkv-bin-${version}.tar.gz" "http://www.makemkv.com/download/old/makemkv-bin-${version}.tar.gz" ]; - hash = "sha256-we5yCukbJ2p8ib6GEUbFuTRjGDHo1sj0U0BkNXJOkr0="; + hash = "sha256-zuVt4LqlUxq+0WvYYnQtMI13K0q02uFu6GW/dPBKFgg="; }; srcs.oss = fetchurl { urls = [ "http://www.makemkv.com/download/makemkv-oss-${version}.tar.gz" "http://www.makemkv.com/download/old/makemkv-oss-${version}.tar.gz" ]; - hash = "sha256-vIuwhK46q81QPVu5PvwnPgRuT9RmPTmpg2zgwEf+6CM="; + hash = "sha256-hZAGNkjULsKpWLdFc9cCLw9MM05OT+fdU7cMbnSLpFM="; }; in { pname = "makemkv"; - version = "1.18.3"; + version = "1.18.4"; srcs = lib.attrValues finalAttrs.passthru.srcs; sourceRoot = "makemkv-oss-${version}"; diff --git a/pkgs/by-name/ma/mastodon/gemset.nix b/pkgs/by-name/ma/mastodon/gemset.nix index cf3922b1283d..9e0500f11092 100644 --- a/pkgs/by-name/ma/mastodon/gemset.nix +++ b/pkgs/by-name/ma/mastodon/gemset.nix @@ -671,10 +671,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0pbgnd9iavcfxqgh7n77f788a4l6myc9qwgwzbkskvrl9mvgmyq4"; + sha256 = "1clkjg3n7c29c01cykjp6gbnvywjilfanzcrcrazhzf551ssndy6"; type = "gem"; }; - version = "8.3.1"; + version = "8.4.1"; }; childprocess = { dependencies = [ "logger" ]; @@ -741,10 +741,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1aymcakhzl83k77g2f2krz07bg1cbafbcd2ghvwr4lky3rz86mkb"; + sha256 = "1c2i64xsd35vijnb50rxb70g508s0x674xi0qpyyb8jy7bncl4j4"; type = "gem"; }; - version = "1.3.6"; + version = "1.3.7"; }; connection_pool = { groups = [ @@ -1192,10 +1192,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1b930ag8nh99v8n9645ac1wcah9fx0mclbp323q4i1ly9acvkk3k"; + sha256 = "0y7j6yzv07zggic6g0p2v1ivnvkzsbqjnfdl4215qqb6cxz290hq"; type = "gem"; }; - version = "2.14.2"; + version = "2.14.3"; }; faraday-follow_redirects = { dependencies = [ "faraday" ]; @@ -1647,10 +1647,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1994i044vdmzzkyr76g8rpl1fq1532wf0sb21xg5r1ilj5iphmr8"; + sha256 = "0mbjg75bsnpf3mr5ad3425wi2ps9r809gvr8n0n8lv2f3zgcapjh"; type = "gem"; }; - version = "1.14.8"; + version = "1.15.1"; }; i18n-tasks = { dependencies = [ @@ -2408,10 +2408,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1s30b7h7qpyim30m8060xs415mbr3ci7i5hdg09chh1aqfx2qcbq"; + sha256 = "1d9safb4dly6qmc2g06444l0zifby52yy6j1a5fa1g4j3ihm3jah"; type = "gem"; }; - version = "1.19.3"; + version = "1.19.4"; }; omniauth = { dependencies = [ @@ -2943,10 +2943,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "15j85zxs6c8ykis9770ii7m7rbbx5vxkqqk9shqicxamzd4wpafl"; + sha256 = "174v7f6wjkhygpp6dr0vbka03v0h5kxdfkgsilbyi0pf4ihz112y"; type = "gem"; }; - version = "2.14.26"; + version = "2.14.27"; }; parallel = { groups = [ diff --git a/pkgs/by-name/ma/mastodon/source.nix b/pkgs/by-name/ma/mastodon/source.nix index 8c130811aab0..00a99719379d 100644 --- a/pkgs/by-name/ma/mastodon/source.nix +++ b/pkgs/by-name/ma/mastodon/source.nix @@ -5,14 +5,14 @@ patches ? [ ], }: let - version = "4.6.0"; + version = "4.6.1"; in applyPatches { src = fetchFromGitHub { owner = "mastodon"; repo = "mastodon"; rev = "v${version}"; - hash = "sha256-+rvl0+/3Hn9QYKwYT0ZTlP+Ps7y+G+D2Dcu/fEhP79g="; + hash = "sha256-vnFmyLcIeiDHsVxh6BHFjolsGM0n2thOwt3MXrkjEx8="; passthru = { inherit version; yarnHash = "sha256-G1keSWDDpp0vBAOqQI8y8n7bmAeo9Hrdbo7R+cVZQwE="; diff --git a/pkgs/by-name/ma/mattermost/package.nix b/pkgs/by-name/ma/mattermost/package.nix index 7a7c62582070..d241c440c42a 100644 --- a/pkgs/by-name/ma/mattermost/package.nix +++ b/pkgs/by-name/ma/mattermost/package.nix @@ -27,10 +27,10 @@ # # Ensure you also check ../mattermostLatest/package.nix. regex = "^v(11\\.7\\.[0-9]+)$"; - version = "11.7.3"; - srcHash = "sha256-73WGxvdsDZ3v4UJGDDy+nAkT9DFMsGk29ruThwxoclw="; + version = "11.7.4"; + srcHash = "sha256-kO4ntGffvMis7JFZLMpnPdjotPiZ/kJcxeKoMjXAZ3U="; vendorHash = "sha256-XaXqQN20c3DhW2/L0zhTA8dLeRp4MyBxUKpiMVwp/7s="; - npmDepsHash = "sha256-MRH7canRhFtFppKi1eKMqr8JnWenw29689l2GSpXyFU="; + npmDepsHash = "sha256-lqgYZAGCjChGwBKACKKiMRzI2WP0ByanMMIVxo/h8t8="; }, ... }: diff --git a/pkgs/by-name/mu/mutter/package.nix b/pkgs/by-name/mu/mutter/package.nix index f56610f03041..e258f804ac7b 100644 --- a/pkgs/by-name/mu/mutter/package.nix +++ b/pkgs/by-name/mu/mutter/package.nix @@ -1,5 +1,6 @@ { fetchurl, + fetchpatch, runCommand, lib, stdenv, @@ -71,7 +72,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "mutter"; - version = "50.1"; + version = "50.2"; outputs = [ "out" @@ -82,9 +83,18 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "mirror://gnome/sources/mutter/${lib.versions.major finalAttrs.version}/mutter-${finalAttrs.version}.tar.xz"; - hash = "sha256-k0RQLORz94h5Xya0X4uP9TwKNrhnRw1wWhGj7gkRAh4="; + hash = "sha256-/ejfinRlAMUfHJJbUeV8PdhwByM771Yweegx9Tv6O1Y="; }; + patches = [ + # mutter 50.2 spams logs, clutter_input_focus_set_cursor_location + # https://gitlab.gnome.org/GNOME/mutter/-/work_items/4840 + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/mutter/-/commit/f1570318ec3e9a38615eb91708bb71628ab8bcfd.patch"; + hash = "sha256-73GI2DTgoEBUQGa7nTUIur/ZuDHgDu4SwjUWHBRCyuo="; + }) + ]; + mesonFlags = [ "-Degl_device=true" "-Dinstalled_tests=false" # TODO: enable these diff --git a/pkgs/by-name/na/nautilus/package.nix b/pkgs/by-name/na/nautilus/package.nix index d535f9081431..d210135a1d87 100644 --- a/pkgs/by-name/na/nautilus/package.nix +++ b/pkgs/by-name/na/nautilus/package.nix @@ -44,7 +44,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "nautilus"; - version = "50.1"; + version = "50.2.2"; outputs = [ "out" @@ -54,7 +54,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "mirror://gnome/sources/nautilus/${lib.versions.major finalAttrs.version}/nautilus-${finalAttrs.version}.tar.xz"; - hash = "sha256-1ieTuWWXcbZqa24FK1Iin4aN2+wTiKC2ae7wvSESEu4="; + hash = "sha256-4eKF7930LtMN2lsp9/jSQtq0vBQJqQVIY7NnutSzTVo="; }; patches = [ diff --git a/pkgs/by-name/no/nono/package.nix b/pkgs/by-name/no/nono/package.nix index c4bf330111a5..271b2e56ae4c 100644 --- a/pkgs/by-name/no/nono/package.nix +++ b/pkgs/by-name/no/nono/package.nix @@ -13,7 +13,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "nono"; - version = "0.53.0"; + version = "0.61.1"; __darwinAllowLocalNetworking = true; # required for tests @@ -21,9 +21,9 @@ rustPlatform.buildRustPackage (finalAttrs: { owner = "always-further"; repo = "nono"; tag = "v${finalAttrs.version}"; - hash = "sha256-jK3/NDNQkeeCKP2iMIJMCq9lrDZ9ksiEnHhFmrz+gew="; + hash = "sha256-y5oMR5Vawf/1QUj3ACDdqAjKT+Q2gizRfKkal340EP8="; }; - cargoHash = "sha256-OK2vlXYFdjMHqzVR6ZoRn7WEfAUVATGhk32JLoDED5c="; + cargoHash = "sha256-Oy/IqAK5ml1vu0eee+pF5pRjzk0Na/Fb04e1Mx0d924="; nativeBuildInputs = [ pkg-config @@ -81,6 +81,16 @@ rustPlatform.buildRustPackage (finalAttrs: { # panics with "exact-path fallback must not recursively cover descendants" "capability_ext::tests::test_from_profile_allow_file_falls_back_to_exact_directory_when_present" + # nono-cli + # wants access to /var/folders + "sandbox_state::cap_file_validation_tests::test_acceptable_temp_roots_includes_var_folders_on_macos" + "sandbox_state::cap_file_validation_tests::test_validate_rejects_path_outside_temp" + # don't work inside of the /nix dir + # unsure why home is still under /nix with writableTmpDirAsHomeHook + "deprecated_override_deny_flag_emits_single_warning_on_stderr" + "deprecated_override_deny_flag_warning_is_emitted_once_for_multiple_uses" + "override_deny_alias_and_bypass_protection_merge_in_argv_order" + # env_vars # don't work inside of the /nix dir # unsure why home is still under /nix with writableTmpDirAsHomeHook diff --git a/pkgs/by-name/op/openafs/module.nix b/pkgs/by-name/op/openafs/module.nix index 8c88b291b7bd..d9c455f5db41 100644 --- a/pkgs/by-name/op/openafs/module.nix +++ b/pkgs/by-name/op/openafs/module.nix @@ -28,68 +28,15 @@ stdenv.mkDerivation { inherit src; patches = [ - # Linux: Use get_tree_nodev + # Linux: pagevec.h renamed to folio_batch.h (fetchpatch { - url = "https://github.com/openafs/openafs/commit/c02a8f451b48766aa163e729abe40d145751b2dc.patch"; - hash = "sha256-9okSQLV4tW1wjoffQXPneZbu6tTRqrqVPbEOwZmaD+E="; + url = "https://github.com/openafs/openafs/commit/d47c438aec49e417066a7bef00bd82078014f5ea.patch"; + hash = "sha256-LPURZovpl6KbigzP4mNjgHvPlXYKY5Pxh8sj9RT2W08="; }) - # LINUX: Re-dirty folio on writepages recursion + # Linux: Add comment for d_alias configure test (fetchpatch { - url = "https://github.com/openafs/openafs/commit/11849e96820eca64d91742a8c521614e1e99d9fa.patch"; - hash = "sha256-F2MOqEDaj4e0Xj1mvs7v61cutZY3cO22p9iIp2bLiRQ="; - }) - # Linux: Introduce LINUX_WRITE_CACHE_PAGES_USES_FOLIOS - (fetchpatch { - url = "https://github.com/openafs/openafs/commit/63a3503240c06187fa87514e5ea421cece483422.patch"; - hash = "sha256-ZWV8IZ8CeFQaEOamqKfkXuUccSxCRFNkZ7/kxKbEuis="; - }) - # Linux: Avoid write_cache_pages() for ->writepages() - (fetchpatch { - url = "https://gerrit.openafs.org/changes/16704/revisions/d465a07a98c2b0b2c23780571a8fe70c2584473a/patch"; - decode = "base64 -d"; - hash = "sha256-2FOf+o36gbTHm90RxtOI7iXcgb6rv9nh9rSjZzL5O7A="; - }) - # LINUX: Log warning on recursive folio writeback - (fetchpatch { - url = "https://gerrit.openafs.org/changes/16705/revisions/d66ca6372461840c6ecaaa46ec293640c8f22573/patch"; - decode = "base64 -d"; - hash = "sha256-A383wDMkwnGFatBDHUGV8FVqPMjzvhqUnIWrP2C+ym4="; - }) - # Linux: Move afs_root()/afs_fill_super() in osi_vfsops - (fetchpatch { - url = "https://gerrit.openafs.org/changes/16706/revisions/988c70859f1d402022e9342e28f0c5a954760a72/patch"; - decode = "base64 -d"; - hash = "sha256-JsZwGGa7dRT43RIUUY3hYCbbqPObd5bkDOHl9QK/MhE="; - }) - # Linux: Use sockaddr_unsized for socket->ops->bind - (fetchpatch { - url = "https://gerrit.openafs.org/changes/16707/revisions/e6069d6c35e848b5b388f4c47a2ecf0d72420198/patch"; - decode = "base64 -d"; - hash = "sha256-hTRaTqOc0njW/RIsNTrFZ5uWTrQq04Fuh/Sk7K2Q5e4="; - }) - # Linux: Pass 3rd parameter to filemap_alloc_folio() - (fetchpatch { - url = "https://gerrit.openafs.org/changes/16708/revisions/48d2184ec95418cada68b70919b0afd9888bb945/patch"; - decode = "base64 -d"; - hash = "sha256-CSGlXYkkLSHQoWK2xLpUYJDOUP/mlsxkTru2qdmbeQo="; - }) - # Linux: implement aops->migrate_folio - (fetchpatch { - url = "https://gerrit.openafs.org/changes/16709/revisions/2c51471aea08cc495a5d59fee6e651ba58c9d772/patch"; - decode = "base64 -d"; - hash = "sha256-TtcblVczSp8b1bfd0ajWjK2LffAkgYr2+KUL2nEe8hs="; - }) - # Linux: Use set_default_d_op() to set dentry ops - (fetchpatch { - url = "https://gerrit.openafs.org/changes/16729/revisions/6d0a2107fcab28fc4ba64d365133d171b75bd3dc/patch"; - decode = "base64 -d"; - hash = "sha256-OKxR5zzVKSXPzudPl5jc7koObisQMMqq/d9kfrMem/M="; - }) - # Linux: Use __getname()/__putname() to alloc name - (fetchpatch { - url = "https://gerrit.openafs.org/changes/16738/revisions/a1754489f382aabd087f14c325d13a36faa5bf5c/patch"; - decode = "base64 -d"; - hash = "sha256-JizLrwnujybCkcbDIltGfgVtCc5fL3ZxWvgVbI1kKto="; + url = "https://github.com/openafs/openafs/commit/fd157926f08d10afe981d85654395bbf083ea7a3.patch"; + hash = "sha256-gJ+ylIEZwJcpTWc5hmIXS/QcxtICqjaEzZsl2QegjhY="; }) ]; diff --git a/pkgs/by-name/op/openafs/srcs.nix b/pkgs/by-name/op/openafs/srcs.nix index 596198b13cfc..28de72ebe14d 100644 --- a/pkgs/by-name/op/openafs/srcs.nix +++ b/pkgs/by-name/op/openafs/srcs.nix @@ -1,16 +1,16 @@ { fetchurl }: rec { - version = "1.8.15"; + version = "1.8.16"; src = fetchurl { url = "https://www.openafs.org/dl/openafs/${version}/openafs-${version}-src.tar.bz2"; - hash = "sha256-MvEN0kG12LhG5CWrnL8nW1VroYgL9998RZzZ60kFg1U="; + hash = "sha256-7oEnaJdXy9lyOoU6EvrigcnenD6JSkvZAQf7b4UnBGk="; }; srcs = [ src (fetchurl { url = "https://www.openafs.org/dl/openafs/${version}/openafs-${version}-doc.tar.bz2"; - hash = "sha256-kAGRw3T0VdJ/XMqqFjV0Z7gzKbWeyZWEsMsBJ+7ijsE="; + hash = "sha256-F9fyLe5Ofs6Ri4MXlO63wOZmhZuY8FAh2P/aoAX5wiQ="; }) ]; } diff --git a/pkgs/by-name/or/orca/package.nix b/pkgs/by-name/or/orca/package.nix index 6cb77c9b2ed0..d666bd22a269 100644 --- a/pkgs/by-name/or/orca/package.nix +++ b/pkgs/by-name/or/orca/package.nix @@ -31,13 +31,13 @@ python3.pkgs.buildPythonApplication (finalAttrs: { pname = "orca"; - version = "50.1.2"; + version = "50.2"; pyproject = false; src = fetchurl { url = "mirror://gnome/sources/orca/${lib.versions.major finalAttrs.version}/orca-${finalAttrs.version}.tar.xz"; - hash = "sha256-hZK1PfhCOep13aqN7GeSyE0rmft7R6X9kCLGr4ymV6g="; + hash = "sha256-BxRCHN6OxLr0fxjktKErTlxKPP47FhVp4HD+A3cT/QQ="; }; patches = [ diff --git a/pkgs/by-name/pa/palemoon-bin/package.nix b/pkgs/by-name/pa/palemoon-bin/package.nix index fbb903774a53..7de709e66c33 100644 --- a/pkgs/by-name/pa/palemoon-bin/package.nix +++ b/pkgs/by-name/pa/palemoon-bin/package.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "palemoon-bin"; - version = "34.3.0.1"; + version = "34.3.1"; src = finalAttrs.passthru.sources."gtk${if withGTK3 then "3" else "2"}"; @@ -171,11 +171,11 @@ stdenv.mkDerivation (finalAttrs: { { gtk3 = fetchzip { urls = urlRegionVariants "gtk3"; - hash = "sha256-U9OwgiQMVOayt5Krlina2s33wS55HuLN255tkVyQxoY="; + hash = "sha256-PFsdDuer6mbxFrcT0rSADcOxunoJIo3Y6O4NG4R8ygY="; }; gtk2 = fetchzip { urls = urlRegionVariants "gtk2"; - hash = "sha256-Yzr2ovHKFFNIem1PXTaajlxVKXB5frZQ/kfOL+jsmtE="; + hash = "sha256-C48vM0LI6rPSS0wFVnPRlppT4I5EFnWzBFg/Rxw++Bw="; }; }; diff --git a/pkgs/by-name/pa/papers/package.nix b/pkgs/by-name/pa/papers/package.nix index c1a16e039543..2695ea244070 100644 --- a/pkgs/by-name/pa/papers/package.nix +++ b/pkgs/by-name/pa/papers/package.nix @@ -41,7 +41,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "papers"; - version = "50.0"; + version = "50.2"; outputs = [ "out" @@ -51,7 +51,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "mirror://gnome/sources/papers/${lib.versions.major finalAttrs.version}/papers-${finalAttrs.version}.tar.xz"; - hash = "sha256-MBsg60a8ZNbKcuo3F10o2orqT4YT5HG5TDGF5cTRvAU="; + hash = "sha256-rhvc8c1Hy1DJ2EdleEYH+Bxy3xfdbmrZM/6hQXPSufQ="; }; cargoDeps = rustPlatform.fetchCargoVendor { diff --git a/pkgs/by-name/pr/pretix/package.nix b/pkgs/by-name/pr/pretix/package.nix index e1d16cae94db..103f13593b2a 100644 --- a/pkgs/by-name/pr/pretix/package.nix +++ b/pkgs/by-name/pr/pretix/package.nix @@ -51,13 +51,13 @@ let }; pname = "pretix"; - version = "2026.4.3"; + version = "2026.4.4"; src = fetchFromGitHub { owner = "pretix"; repo = "pretix"; tag = "v${version}"; - hash = "sha256-fzM6WlqXH+ehPxHsvzNeM21Vupj0GBYXhFL0tpBp1uY="; + hash = "sha256-aDOI2XZF0n653ZgTtgEOb+JL/R0zDsdHOFvBsQdbwRw="; }; npmDeps = buildNpmPackage { diff --git a/pkgs/by-name/pr/pretix/plugins/mollie/package.nix b/pkgs/by-name/pr/pretix/plugins/mollie/package.nix index df4813bbde40..b17d5d52a534 100644 --- a/pkgs/by-name/pr/pretix/plugins/mollie/package.nix +++ b/pkgs/by-name/pr/pretix/plugins/mollie/package.nix @@ -8,14 +8,14 @@ buildPythonPackage rec { pname = "pretix-mollie"; - version = "2.5.4"; + version = "2.5.6"; pyproject = true; src = fetchFromGitHub { owner = "pretix"; repo = "pretix-mollie"; tag = "v${version}"; - hash = "sha256-lDICcpO8Qod++eM2okq4CJirIBM18zYnbM6Bbwb9e34="; + hash = "sha256-XInwUecuC3sEcRpuS+xa7Gb2Isb18SexbZ2+CcUF7/E="; }; build-system = [ diff --git a/pkgs/by-name/pr/pretix/plugins/pages/package.nix b/pkgs/by-name/pr/pretix/plugins/pages/package.nix index 3b2f61e8e84e..37c32fa5b20c 100644 --- a/pkgs/by-name/pr/pretix/plugins/pages/package.nix +++ b/pkgs/by-name/pr/pretix/plugins/pages/package.nix @@ -8,14 +8,14 @@ buildPythonPackage rec { pname = "pretix-pages"; - version = "1.6.3"; + version = "1.6.4"; pyproject = true; src = fetchFromGitHub { owner = "pretix"; repo = "pretix-pages"; rev = "v${version}"; - hash = "sha256-ZM38zHlFB5013PvoJwm7YC5/wHg2GZWmrhvreXuqNc8="; + hash = "sha256-whpO8aE0VUSrByf3P0JaIoruYbJi8wj4nZo/2tx+XLU="; }; build-system = [ diff --git a/pkgs/by-name/ps/psi-plus/package.nix b/pkgs/by-name/ps/psi-plus/package.nix index e3bd2832f90e..884c83922c32 100644 --- a/pkgs/by-name/ps/psi-plus/package.nix +++ b/pkgs/by-name/ps/psi-plus/package.nix @@ -42,12 +42,12 @@ assert enablePsiMedia -> enablePlugins; stdenv.mkDerivation rec { pname = "psi-plus"; - version = "1.5.2139"; + version = "1.5.2140"; src = fetchFromGitHub { owner = "psi-plus"; repo = "psi-plus-snapshots"; tag = version; - hash = "sha256-wgR809rOtcKvim2gPm9MeiB67pU+EiRktpW5BCJqWs8="; + hash = "sha256-cXgjskHb7Rx4FB+DW/cTlsNtdyWgXN3sBh9WBBCgliA="; }; cmakeFlags = [ diff --git a/pkgs/by-name/ry/rygel/package.nix b/pkgs/by-name/ry/rygel/package.nix index 53e2e425b73a..a22928d51c55 100644 --- a/pkgs/by-name/ry/rygel/package.nix +++ b/pkgs/by-name/ry/rygel/package.nix @@ -38,7 +38,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "rygel"; - version = "45.1"; + version = "45.2"; # TODO: split out lib outputs = [ @@ -48,7 +48,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "mirror://gnome/sources/rygel/${lib.versions.major finalAttrs.version}/rygel-${finalAttrs.version}.tar.xz"; - hash = "sha256-zzhuKA2Or5tmd6L0i6eEhMcqCVVNXFjFHNh/pZRWF8g="; + hash = "sha256-IOV7cLFahl133Dj594arxSxksRH+X5OKYsKNcS3xMx0="; }; patches = [ diff --git a/pkgs/by-name/se/servo/package.nix b/pkgs/by-name/se/servo/package.nix index 1dc10fc3c775..659112af119e 100644 --- a/pkgs/by-name/se/servo/package.nix +++ b/pkgs/by-name/se/servo/package.nix @@ -69,13 +69,13 @@ in rustPlatform.buildRustPackage (finalAttrs: { pname = "servo"; - version = "0.2.0"; + version = "0.3.0"; src = fetchFromGitHub { owner = "servo"; repo = "servo"; tag = "v${finalAttrs.version}"; - hash = "sha256-zZitnAiexoroKx3TMu3sB0KDvIsBcT7Krwa6lJqY4yw="; + hash = "sha256-DfUjByBtDcOShExuBBLSHmgP9CPMSdkovw9QeGRDYaA="; # Breaks reproducibility depending on whether the picked commit # has other ref-names or not, which may change over time, i.e. with # "ref-names: HEAD -> main" as long this commit is the branch HEAD @@ -85,7 +85,7 @@ rustPlatform.buildRustPackage (finalAttrs: { ''; }; - cargoHash = "sha256-hZBI3Vte/FvN7qJy2VGF0LVQIFSWa931BFFbaUfN814="; + cargoHash = "sha256-N0MUtL0HslJHEQUCB0iMbXGdD9hA6GRqcmdSjjhsu8E="; # set `HOME` to a temp dir for write access # Fix invalid option errors during linking (https://github.com/mozilla/nixpkgs-mozilla/commit/c72ff151a3e25f14182569679ed4cd22ef352328) diff --git a/pkgs/by-name/sp/spaceship-prompt/package.nix b/pkgs/by-name/sp/spaceship-prompt/package.nix index e411a473be3c..fb404e7cbcbf 100644 --- a/pkgs/by-name/sp/spaceship-prompt/package.nix +++ b/pkgs/by-name/sp/spaceship-prompt/package.nix @@ -6,13 +6,13 @@ stdenvNoCC.mkDerivation rec { pname = "spaceship-prompt"; - version = "4.22.3"; + version = "4.22.4"; src = fetchFromGitHub { owner = "denysdovhan"; repo = "spaceship-prompt"; rev = "v${version}"; - sha256 = "sha256-v2D8+EwOV5gzzawjgn99WJnYjI9N6bxqbHtTTfNWBNo="; + sha256 = "sha256-BqdD6WwFW8Dtyyh81bQ66jZsJwq7Ck9kCwJpU9+xHtw="; }; strictDeps = true; diff --git a/pkgs/by-name/su/sushi/package.nix b/pkgs/by-name/su/sushi/package.nix index 6bb8f31e72ed..714cf91381a0 100644 --- a/pkgs/by-name/su/sushi/package.nix +++ b/pkgs/by-name/su/sushi/package.nix @@ -26,11 +26,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "sushi"; - version = "50.rc.1"; + version = "50.0"; src = fetchurl { url = "mirror://gnome/sources/sushi/${lib.versions.major finalAttrs.version}/sushi-${finalAttrs.version}.tar.xz"; - hash = "sha256-l6efnH4IsLF2Am7Ux6BDXwYSxMENoz1H4rr6ucYpImM="; + hash = "sha256-qyUXeQjVzMWFaHaageubTzIwZ4bmxzYYGT6/YaEn7gA="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/tm/tmc-cli/package.nix b/pkgs/by-name/tm/tmc-cli/package.nix index 84913922d3d4..83959df50b34 100644 --- a/pkgs/by-name/tm/tmc-cli/package.nix +++ b/pkgs/by-name/tm/tmc-cli/package.nix @@ -9,16 +9,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "tmc-cli"; - version = "1.1.2"; + version = "1.1.3"; src = fetchFromGitHub { owner = "rage"; repo = "tmc-cli-rust"; tag = "v${finalAttrs.version}"; - hash = "sha256-C7X+XTOqquqf/W29+A4wUUl6aDZYLlc5XokkIOrCbp0="; + hash = "sha256-P6jlj9HWZ09vAw7EVT8po49eWGkGv/ppvKwnq06t2A0="; }; - cargoHash = "sha256-2KoHKTN1Jvyvk9ravi0a9D+RIFYa1KmHLJQzKT2iP9A="; + cargoHash = "sha256-YUIEKr1nQij4f/4kOeJq6AgqeQq+U3bOBTJaJM2Bs2Y="; nativeCheckInputs = [ writableTmpDirAsHomeHook diff --git a/pkgs/by-name/ye/yelp/package.nix b/pkgs/by-name/ye/yelp/package.nix index 197b9a79dff1..30b0cbce2796 100644 --- a/pkgs/by-name/ye/yelp/package.nix +++ b/pkgs/by-name/ye/yelp/package.nix @@ -24,11 +24,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "yelp"; - version = "49.0"; + version = "49.1"; src = fetchurl { url = "mirror://gnome/sources/yelp/${lib.versions.major finalAttrs.version}/yelp-${finalAttrs.version}.tar.xz"; - hash = "sha256-5mFOCx9Lpf57jRSb3UJnPwMGVvvc1zaumGBxkZfGNFc="; + hash = "sha256-Pj6U7y0slIfMUQYuOvv6FXjOvSnYDIQ1e21+5tz9inQ="; }; nativeBuildInputs = [ diff --git a/pkgs/development/compilers/openjdk/11/patches/fix-oopdesc-ptr-alignment-ub.patch b/pkgs/development/compilers/openjdk/11/patches/fix-oopdesc-ptr-alignment-ub.patch new file mode 100644 index 000000000000..9fc32990d1ae --- /dev/null +++ b/pkgs/development/compilers/openjdk/11/patches/fix-oopdesc-ptr-alignment-ub.patch @@ -0,0 +1,2622 @@ +From 55ce9f824ab06507e7253e7de6e57c7baac5ae45 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20N=C3=BCrnberger?= + +Date: Thu, 18 Jun 2026 20:21:59 +0200 +Subject: [PATCH] fix undefined behavior in markOop + +A smaller version of https://github.com/openjdk/jdk11u-dev/pull/1284 +to fix https://bugs.openjdk.java.net/browse/JDK-8229258 + +Only fixes x86 and aarch64. Other architectures will not build. + +Co-authored-by: Campbell Jones +Co-authored-by: Reilly Brogan + +--- + src/hotspot/cpu/aarch64/aarch64.ad | 2 +- + .../cpu/aarch64/c1_MacroAssembler_aarch64.cpp | 2 +- + .../cpu/aarch64/templateTable_aarch64.cpp | 2 +- + src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp | 2 +- + src/hotspot/cpu/x86/macroAssembler_x86.cpp | 8 +- + src/hotspot/cpu/x86/templateTable_x86.cpp | 2 +- + src/hotspot/cpu/zero/cppInterpreter_zero.cpp | 2 +- + src/hotspot/share/classfile/altHashing.cpp | 2 +- + .../gc/cms/concurrentMarkSweepGeneration.cpp | 32 +-- + src/hotspot/share/gc/cms/freeChunk.hpp | 8 +- + .../share/gc/cms/parOopClosures.inline.hpp | 4 +- + src/hotspot/share/gc/cms/promotionInfo.cpp | 2 +- + .../share/gc/g1/g1FullGCCompactionPoint.cpp | 4 +- + .../share/gc/g1/g1FullGCMarker.inline.hpp | 2 +- + .../gc/g1/g1FullGCOopClosures.inline.hpp | 4 +- + .../share/gc/g1/g1OopClosures.inline.hpp | 4 +- + .../share/gc/g1/g1ParScanThreadState.cpp | 12 +- + .../gc/g1/g1ParScanThreadState.inline.hpp | 4 +- + .../gc/parallel/psMarkSweepDecorator.cpp | 10 +- + .../gc/parallel/psPromotionManager.inline.hpp | 6 +- + src/hotspot/share/gc/serial/markSweep.cpp | 2 +- + .../share/gc/serial/markSweep.inline.hpp | 10 +- + .../share/gc/shared/preservedMarks.inline.hpp | 2 +- + src/hotspot/share/gc/shared/space.inline.hpp | 6 +- + .../share/gc/shenandoah/shenandoahAsserts.cpp | 2 +- + .../shenandoahForwarding.inline.hpp | 16 +- + .../gc/shenandoah/shenandoahStringDedup.cpp | 6 +- + .../share/interpreter/bytecodeInterpreter.cpp | 18 +- + .../jfr/leakprofiler/chains/bfsClosure.cpp | 4 +- + .../jfr/leakprofiler/chains/dfsClosure.cpp | 2 +- + .../jfr/leakprofiler/chains/edgeStore.cpp | 4 +- + .../jfr/leakprofiler/chains/edgeUtils.cpp | 2 +- + .../chains/objectSampleMarker.hpp | 6 +- + .../leakprofiler/checkpoint/eventEmitter.cpp | 2 +- + .../leakprofiler/utilities/saveRestore.cpp | 8 +- + src/hotspot/share/memory/metaspaceShared.cpp | 2 +- + src/hotspot/share/memory/universe.cpp | 2 +- + src/hotspot/share/memory/virtualspace.cpp | 4 +- + src/hotspot/share/oops/klass.cpp | 2 +- + src/hotspot/share/oops/klass.hpp | 1 + + src/hotspot/share/oops/klass.inline.hpp | 2 +- + src/hotspot/share/oops/markOop.hpp | 62 ++++-- + src/hotspot/share/oops/markOop.inline.hpp | 8 +- + src/hotspot/share/oops/oop.cpp | 4 +- + src/hotspot/share/oops/oop.hpp | 1 + + src/hotspot/share/oops/oop.inline.hpp | 65 +++--- + src/hotspot/share/oops/oopsHierarchy.hpp | 2 - + src/hotspot/share/opto/macro.cpp | 2 +- + src/hotspot/share/prims/jvmtiEnvBase.cpp | 8 +- + src/hotspot/share/prims/jvmtiTagMap.cpp | 10 +- + src/hotspot/share/prims/whitebox.cpp | 2 +- + src/hotspot/share/runtime/basicLock.cpp | 8 +- + src/hotspot/share/runtime/basicLock.hpp | 10 +- + src/hotspot/share/runtime/biasedLocking.cpp | 84 ++++---- + src/hotspot/share/runtime/deoptimization.cpp | 8 +- + src/hotspot/share/runtime/objectMonitor.hpp | 1 + + .../share/runtime/objectMonitor.inline.hpp | 10 +- + src/hotspot/share/runtime/sharedRuntime.cpp | 4 +- + src/hotspot/share/runtime/synchronizer.cpp | 191 +++++++++--------- + src/hotspot/share/runtime/vframe.cpp | 22 +- + src/hotspot/share/runtime/vmStructs.cpp | 4 +- + 69 files changed, 394 insertions(+), 345 deletions(-) + +diff --git a/src/hotspot/cpu/aarch64/aarch64.ad b/src/hotspot/cpu/aarch64/aarch64.ad +index 27ba4e10d..0e7f17588 100644 +--- a/src/hotspot/cpu/aarch64/aarch64.ad ++++ b/src/hotspot/cpu/aarch64/aarch64.ad +@@ -3565,7 +3565,7 @@ encode %{ + // lock. The fast-path monitor unlock code checks for + // markOopDesc::monitor_value so use markOopDesc::unused_mark which has the + // relevant bit set, and also matches ObjectSynchronizer::slow_enter. +- __ mov(tmp, (address)markOopDesc::unused_mark()); ++ __ mov(tmp, (address)markOopDesc::unused_mark().value()); + __ str(tmp, Address(box, BasicLock::displaced_header_offset_in_bytes())); + } + +diff --git a/src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp +index 218113b78..97791fb63 100644 +--- a/src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp ++++ b/src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp +@@ -176,7 +176,7 @@ void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register + ldr(t1, Address(klass, Klass::prototype_header_offset())); + } else { + // This assumes that all prototype bits fit in an int32_t +- mov(t1, (int32_t)(intptr_t)markOopDesc::prototype()); ++ mov(t1, (int32_t)(intptr_t)markOopDesc::prototype().value()); + } + str(t1, Address(obj, oopDesc::mark_offset_in_bytes())); + +diff --git a/src/hotspot/cpu/aarch64/templateTable_aarch64.cpp b/src/hotspot/cpu/aarch64/templateTable_aarch64.cpp +index 6fd216b95..a3c082f49 100644 +--- a/src/hotspot/cpu/aarch64/templateTable_aarch64.cpp ++++ b/src/hotspot/cpu/aarch64/templateTable_aarch64.cpp +@@ -3611,7 +3611,7 @@ void TemplateTable::_new() { + if (UseBiasedLocking) { + __ ldr(rscratch1, Address(r4, Klass::prototype_header_offset())); + } else { +- __ mov(rscratch1, (intptr_t)markOopDesc::prototype()); ++ __ mov(rscratch1, (intptr_t)markOopDesc::prototype().value()); + } + __ str(rscratch1, Address(r0, oopDesc::mark_offset_in_bytes())); + __ store_klass_gap(r0, zr); // zero klass gap for compressed oops +diff --git a/src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp b/src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp +index 25353446f..0e611a18a 100644 +--- a/src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp ++++ b/src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp +@@ -154,7 +154,7 @@ void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register + movptr(Address(obj, oopDesc::mark_offset_in_bytes()), t1); + } else { + // This assumes that all prototype bits fit in an int32_t +- movptr(Address(obj, oopDesc::mark_offset_in_bytes ()), (int32_t)(intptr_t)markOopDesc::prototype()); ++ movptr(Address(obj, oopDesc::mark_offset_in_bytes ()), (int32_t)(intptr_t)markOopDesc::prototype().value()); + } + #ifdef _LP64 + if (UseCompressedClassPointers) { // Take care not to kill klass +diff --git a/src/hotspot/cpu/x86/macroAssembler_x86.cpp b/src/hotspot/cpu/x86/macroAssembler_x86.cpp +index ccde5ec7f..3e8098320 100644 +--- a/src/hotspot/cpu/x86/macroAssembler_x86.cpp ++++ b/src/hotspot/cpu/x86/macroAssembler_x86.cpp +@@ -1556,7 +1556,7 @@ void MacroAssembler::rtm_inflated_locking(Register objReg, Register boxReg, Regi + int owner_offset = OM_OFFSET_NO_MONITOR_VALUE_TAG(owner); + + // Without cast to int32_t a movptr will destroy r10 which is typically obj +- movptr(Address(boxReg, 0), (int32_t)intptr_t(markOopDesc::unused_mark())); ++ movptr(Address(boxReg, 0), (int32_t)intptr_t(markOopDesc::unused_mark().value())); + movptr(boxReg, tmpReg); // Save ObjectMonitor address + + if (RTMRetryCount > 0) { +@@ -1727,7 +1727,7 @@ void MacroAssembler::fast_lock(Register objReg, Register boxReg, Register tmpReg + if (EmitSync & 1) { + // set box->dhw = markOopDesc::unused_mark() + // Force all sync thru slow-path: slow_enter() and slow_exit() +- movptr (Address(boxReg, 0), (int32_t)intptr_t(markOopDesc::unused_mark())); ++ movptr (Address(boxReg, 0), (int32_t)intptr_t(markOopDesc::unused_mark().value())); + cmpptr (rsp, (int32_t)NULL_WORD); + } else { + // Possible cases that we'll encounter in fast_lock +@@ -1879,7 +1879,7 @@ void MacroAssembler::fast_lock(Register objReg, Register boxReg, Register tmpReg + // Invariant: m->_recursions should already be 0, so we don't need to explicitly set it. + // Intentional fall-through into DONE_LABEL ... + } else { +- movptr(Address(boxReg, 0), intptr_t(markOopDesc::unused_mark())); // results in ST-before-CAS penalty ++ movptr(Address(boxReg, 0), intptr_t(markOopDesc::unused_mark().value())); // results in ST-before-CAS penalty + movptr(boxReg, tmpReg); + + // Using a prefetchw helps avoid later RTS->RTO upgrades and cache probes +@@ -1926,7 +1926,7 @@ void MacroAssembler::fast_lock(Register objReg, Register boxReg, Register tmpReg + cmpxchgptr(r15_thread, Address(scrReg, OM_OFFSET_NO_MONITOR_VALUE_TAG(owner))); + // Unconditionally set box->_displaced_header = markOopDesc::unused_mark(). + // Without cast to int32_t movptr will destroy r10 which is typically obj. +- movptr(Address(boxReg, 0), (int32_t)intptr_t(markOopDesc::unused_mark())); ++ movptr(Address(boxReg, 0), (int32_t)intptr_t(markOopDesc::unused_mark().value())); + // Intentional fall-through into DONE_LABEL ... + // Propagate ICC.ZF from CAS above into DONE_LABEL. + #endif // _LP64 +diff --git a/src/hotspot/cpu/x86/templateTable_x86.cpp b/src/hotspot/cpu/x86/templateTable_x86.cpp +index 311a54f1b..785b675cb 100644 +--- a/src/hotspot/cpu/x86/templateTable_x86.cpp ++++ b/src/hotspot/cpu/x86/templateTable_x86.cpp +@@ -4103,7 +4103,7 @@ void TemplateTable::_new() { + __ movptr(Address(rax, oopDesc::mark_offset_in_bytes ()), rbx); + } else { + __ movptr(Address(rax, oopDesc::mark_offset_in_bytes ()), +- (intptr_t)markOopDesc::prototype()); // header ++ (intptr_t)markOopDesc::prototype().value()); // header + __ pop(rcx); // get saved klass back in the register. + } + #ifdef _LP64 +diff --git a/src/hotspot/cpu/zero/cppInterpreter_zero.cpp b/src/hotspot/cpu/zero/cppInterpreter_zero.cpp +index 9331d02ce..04c59d9b6 100644 +--- a/src/hotspot/cpu/zero/cppInterpreter_zero.cpp ++++ b/src/hotspot/cpu/zero/cppInterpreter_zero.cpp +@@ -274,7 +274,7 @@ int CppInterpreter::native_entry(Method* method, intptr_t UNUSED, TRAPS) { + if (method->is_synchronized()) { + monitor = (BasicObjectLock*) istate->stack_base(); + oop lockee = monitor->obj(); +- markOop disp = lockee->mark()->set_unlocked(); ++ markOop disp = lockee->mark().set_unlocked(); + + monitor->lock()->set_displaced_header(disp); + if (lockee->cas_set_mark((markOop)monitor, disp) != disp) { +diff --git a/src/hotspot/share/classfile/altHashing.cpp b/src/hotspot/share/classfile/altHashing.cpp +index 253266c16..d7f3e7090 100644 +--- a/src/hotspot/share/classfile/altHashing.cpp ++++ b/src/hotspot/share/classfile/altHashing.cpp +@@ -55,7 +55,7 @@ + // objects. We don't want to call the synchronizer hash code to install + // this value because it may safepoint. + static intptr_t object_hash(Klass* k) { +- intptr_t hc = k->java_mirror()->mark()->hash(); ++ intptr_t hc = k->java_mirror()->mark().hash(); + return hc != markOopDesc::no_hash ? hc : os::random(); + } + +diff --git a/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp b/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp +index d4e9253ab..a3d91a6aa 100644 +--- a/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp ++++ b/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp +@@ -7773,7 +7773,7 @@ bool CMSCollector::take_from_overflow_list(size_t num, CMSMarkStack* stack) { + const markOop proto = markOopDesc::prototype(); + NOT_PRODUCT(ssize_t n = 0;) + for (oop next; i > 0 && cur != NULL; cur = next, i--) { +- next = oop(cur->mark_raw()); ++ next = oop(cur->mark_raw().to_pointer()); + cur->set_mark_raw(proto); // until proven otherwise + assert(oopDesc::is_oop(cur), "Should be an oop"); + bool res = stack->push(cur); +@@ -7857,8 +7857,8 @@ bool CMSCollector::par_take_from_overflow_list(size_t num, + size_t i = num; + oop cur = prefix; + // Walk down the first "num" objects, unless we reach the end. +- for (; i > 1 && cur->mark_raw() != NULL; cur = oop(cur->mark_raw()), i--); +- if (cur->mark_raw() == NULL) { ++ for (; i > 1 && cur->mark_raw().to_pointer() != NULL; cur = oop(cur->mark_raw().to_pointer()), i--); ++ if (cur->mark_raw().to_pointer() == NULL) { + // We have "num" or fewer elements in the list, so there + // is nothing to return to the global list. + // Write back the NULL in lieu of the BUSY we wrote +@@ -7868,9 +7868,9 @@ bool CMSCollector::par_take_from_overflow_list(size_t num, + } + } else { + // Chop off the suffix and return it to the global list. +- assert(cur->mark_raw() != BUSY, "Error"); +- oop suffix_head = cur->mark_raw(); // suffix will be put back on global list +- cur->set_mark_raw(NULL); // break off suffix ++ assert(cur->mark_raw().to_pointer() != (void*)BUSY, "Error"); ++ oop suffix_head = oop(cur->mark_raw().to_pointer()); // suffix will be put back on global list ++ cur->set_mark_raw(markOop::from_pointer(NULL)); // break off suffix + // It's possible that the list is still in the empty(busy) state + // we left it in a short while ago; in that case we may be + // able to place back the suffix without incurring the cost +@@ -7890,18 +7890,18 @@ bool CMSCollector::par_take_from_overflow_list(size_t num, + // Too bad, someone else sneaked in (at least) an element; we'll need + // to do a splice. Find tail of suffix so we can prepend suffix to global + // list. +- for (cur = suffix_head; cur->mark_raw() != NULL; cur = (oop)(cur->mark_raw())); ++ for (cur = suffix_head; cur->mark_raw().to_pointer() != NULL; cur = (oop)(cur->mark_raw().to_pointer())); + oop suffix_tail = cur; +- assert(suffix_tail != NULL && suffix_tail->mark_raw() == NULL, ++ assert(suffix_tail != NULL && suffix_tail->mark_raw().to_pointer() == NULL, + "Tautology"); + observed_overflow_list = _overflow_list; + do { + cur_overflow_list = observed_overflow_list; + if (cur_overflow_list != BUSY) { + // Do the splice ... +- suffix_tail->set_mark_raw(markOop(cur_overflow_list)); ++ suffix_tail->set_mark_raw(markOop::from_pointer((void*)cur_overflow_list)); + } else { // cur_overflow_list == BUSY +- suffix_tail->set_mark_raw(NULL); ++ suffix_tail->set_mark_raw(markOop::from_pointer(NULL)); + } + // ... and try to place spliced list back on overflow_list ... + observed_overflow_list = +@@ -7917,7 +7917,7 @@ bool CMSCollector::par_take_from_overflow_list(size_t num, + oop next; + NOT_PRODUCT(ssize_t n = 0;) + for (cur = prefix; cur != NULL; cur = next) { +- next = oop(cur->mark_raw()); ++ next = oop(cur->mark_raw().to_pointer()); + cur->set_mark_raw(proto); // until proven otherwise + assert(oopDesc::is_oop(cur), "Should be an oop"); + bool res = work_q->push(cur); +@@ -7936,7 +7936,7 @@ void CMSCollector::push_on_overflow_list(oop p) { + NOT_PRODUCT(_num_par_pushes++;) + assert(oopDesc::is_oop(p), "Not an oop"); + preserve_mark_if_necessary(p); +- p->set_mark_raw((markOop)_overflow_list); ++ p->set_mark_raw(markOop::from_pointer(_overflow_list)); + _overflow_list = p; + } + +@@ -7950,9 +7950,9 @@ void CMSCollector::par_push_on_overflow_list(oop p) { + do { + cur_overflow_list = observed_overflow_list; + if (cur_overflow_list != BUSY) { +- p->set_mark_raw(markOop(cur_overflow_list)); ++ p->set_mark_raw(markOop::from_pointer((void*)cur_overflow_list)); + } else { +- p->set_mark_raw(NULL); ++ p->set_mark_raw(markOop::from_pointer(NULL)); + } + observed_overflow_list = + Atomic::cmpxchg((oopDesc*)p, &_overflow_list, (oopDesc*)cur_overflow_list); +@@ -7985,14 +7985,14 @@ void CMSCollector::preserve_mark_work(oop p, markOop m) { + // Single threaded + void CMSCollector::preserve_mark_if_necessary(oop p) { + markOop m = p->mark_raw(); +- if (m->must_be_preserved(p)) { ++ if (m.must_be_preserved(p)) { + preserve_mark_work(p, m); + } + } + + void CMSCollector::par_preserve_mark_if_necessary(oop p) { + markOop m = p->mark_raw(); +- if (m->must_be_preserved(p)) { ++ if (m.must_be_preserved(p)) { + MutexLockerEx x(ParGCRareEvent_lock, Mutex::_no_safepoint_check_flag); + // Even though we read the mark word without holding + // the lock, we are assured that it will not change +diff --git a/src/hotspot/share/gc/cms/freeChunk.hpp b/src/hotspot/share/gc/cms/freeChunk.hpp +index a48a6dd1f..02bce8602 100644 +--- a/src/hotspot/share/gc/cms/freeChunk.hpp ++++ b/src/hotspot/share/gc/cms/freeChunk.hpp +@@ -62,8 +62,8 @@ class FreeChunk { + FreeChunk* _prev; + FreeChunk* _next; + +- markOop mark() const volatile { return (markOop)_size; } +- void set_mark(markOop m) { _size = (size_t)m; } ++ markOop mark() const volatile { return markOop((uintptr_t)_size); } ++ void set_mark(markOop m) { _size = (size_t)m.value(); } + + public: + NOT_PRODUCT(static const size_t header_size();) +@@ -79,7 +79,7 @@ class FreeChunk { + } + + bool is_free() const volatile { +- LP64_ONLY(if (UseCompressedOops) return mark()->is_cms_free_chunk(); else) ++ LP64_ONLY(if (UseCompressedOops) return mark().is_cms_free_chunk(); else) + return (((intptr_t)_prev) & 0x1) == 0x1; + } + bool cantCoalesce() const { +@@ -100,7 +100,7 @@ class FreeChunk { + debug_only(void* size_addr() const { return (void*)&_size; }) + + size_t size() const volatile { +- LP64_ONLY(if (UseCompressedOops) return mark()->get_size(); else ) ++ LP64_ONLY(if (UseCompressedOops) return mark().get_size(); else ) + return _size; + } + void set_size(size_t sz) { +diff --git a/src/hotspot/share/gc/cms/parOopClosures.inline.hpp b/src/hotspot/share/gc/cms/parOopClosures.inline.hpp +index 609a14868..e73659121 100644 +--- a/src/hotspot/share/gc/cms/parOopClosures.inline.hpp ++++ b/src/hotspot/share/gc/cms/parOopClosures.inline.hpp +@@ -47,7 +47,7 @@ template inline void ParScanWeakRefClosure::do_oop_work(T* p) { + OrderAccess::loadload(); + markOop m = obj->mark_raw(); + oop new_obj; +- if (m->is_marked()) { // Contains forwarding pointer. ++ if (m.is_marked()) { // Contains forwarding pointer. + new_obj = ParNewGeneration::real_forwardee(obj); + } else { + size_t obj_sz = obj->size_given_klass(objK); +@@ -112,7 +112,7 @@ inline void ParScanClosure::do_oop_work(T* p, + OrderAccess::loadload(); + markOop m = obj->mark_raw(); + oop new_obj; +- if (m->is_marked()) { // Contains forwarding pointer. ++ if (m.is_marked()) { // Contains forwarding pointer. + new_obj = ParNewGeneration::real_forwardee(obj); + RawAccess::oop_store(p, new_obj); + log_develop_trace(gc, scavenge)("{%s %s ( " PTR_FORMAT " ) " PTR_FORMAT " -> " PTR_FORMAT " (%d)}", +diff --git a/src/hotspot/share/gc/cms/promotionInfo.cpp b/src/hotspot/share/gc/cms/promotionInfo.cpp +index 971368c12..50bb470d5 100644 +--- a/src/hotspot/share/gc/cms/promotionInfo.cpp ++++ b/src/hotspot/share/gc/cms/promotionInfo.cpp +@@ -95,7 +95,7 @@ void PromotionInfo::track(PromotedObject* trackOop, Klass* klassOfOop) { + // make a copy of header as it may need to be spooled + markOop mark = oop(trackOop)->mark_raw(); + trackOop->clear_next(); +- if (mark->must_be_preserved_for_cms_scavenge(klassOfOop)) { ++ if (mark.must_be_preserved_for_cms_scavenge(klassOfOop)) { + // save non-prototypical header, and mark oop + saveDisplacedHeader(mark); + trackOop->setDisplacedMark(); +diff --git a/src/hotspot/share/gc/g1/g1FullGCCompactionPoint.cpp b/src/hotspot/share/gc/g1/g1FullGCCompactionPoint.cpp +index 76e9e77d7..8dbf7e8cb 100644 +--- a/src/hotspot/share/gc/g1/g1FullGCCompactionPoint.cpp ++++ b/src/hotspot/share/gc/g1/g1FullGCCompactionPoint.cpp +@@ -117,10 +117,10 @@ void G1FullGCCompactionPoint::forward(oop object, size_t size) { + // Make sure object has the correct mark-word set or that it will be + // fixed when restoring the preserved marks. + assert(object->mark_raw() == markOopDesc::prototype_for_object(object) || // Correct mark +- object->mark_raw()->must_be_preserved(object) || // Will be restored by PreservedMarksSet ++ object->mark_raw().must_be_preserved(object) || // Will be restored by PreservedMarksSet + (UseBiasedLocking && object->has_bias_pattern_raw()), // Will be restored by BiasedLocking + "should have correct prototype obj: " PTR_FORMAT " mark: " PTR_FORMAT " prototype: " PTR_FORMAT, +- p2i(object), p2i(object->mark_raw()), p2i(markOopDesc::prototype_for_object(object))); ++ p2i(object), object->mark_raw().value(), markOopDesc::prototype_for_object(object).value()); + } + assert(object->forwardee() == NULL, "should be forwarded to NULL"); + } +diff --git a/src/hotspot/share/gc/g1/g1FullGCMarker.inline.hpp b/src/hotspot/share/gc/g1/g1FullGCMarker.inline.hpp +index 98a2fe7f1..e0976fd5c 100644 +--- a/src/hotspot/share/gc/g1/g1FullGCMarker.inline.hpp ++++ b/src/hotspot/share/gc/g1/g1FullGCMarker.inline.hpp +@@ -51,7 +51,7 @@ inline bool G1FullGCMarker::mark_object(oop obj) { + + // Marked by us, preserve if needed. + markOop mark = obj->mark_raw(); +- if (mark->must_be_preserved(obj) && ++ if (mark.must_be_preserved(obj) && + !G1ArchiveAllocator::is_open_archive_object(obj)) { + preserved_stack()->push(obj, mark); + } +diff --git a/src/hotspot/share/gc/g1/g1FullGCOopClosures.inline.hpp b/src/hotspot/share/gc/g1/g1FullGCOopClosures.inline.hpp +index f19a57846..7e0feaf83 100644 +--- a/src/hotspot/share/gc/g1/g1FullGCOopClosures.inline.hpp ++++ b/src/hotspot/share/gc/g1/g1FullGCOopClosures.inline.hpp +@@ -77,10 +77,10 @@ template inline void G1AdjustClosure::adjust_pointer(T* p) { + if (forwardee == NULL) { + // Not forwarded, return current reference. + assert(obj->mark_raw() == markOopDesc::prototype_for_object(obj) || // Correct mark +- obj->mark_raw()->must_be_preserved(obj) || // Will be restored by PreservedMarksSet ++ obj->mark_raw().must_be_preserved(obj) || // Will be restored by PreservedMarksSet + (UseBiasedLocking && obj->has_bias_pattern_raw()), // Will be restored by BiasedLocking + "Must have correct prototype or be preserved, obj: " PTR_FORMAT ", mark: " PTR_FORMAT ", prototype: " PTR_FORMAT, +- p2i(obj), p2i(obj->mark_raw()), p2i(markOopDesc::prototype_for_object(obj))); ++ p2i(obj), obj->mark_raw().value(), markOopDesc::prototype_for_object(obj).value()); + return; + } + +diff --git a/src/hotspot/share/gc/g1/g1OopClosures.inline.hpp b/src/hotspot/share/gc/g1/g1OopClosures.inline.hpp +index c25491323..81f9e1d0e 100644 +--- a/src/hotspot/share/gc/g1/g1OopClosures.inline.hpp ++++ b/src/hotspot/share/gc/g1/g1OopClosures.inline.hpp +@@ -250,8 +250,8 @@ void G1ParCopyClosure::do_oop_work(T* p) { + if (state.is_in_cset()) { + oop forwardee; + markOop m = obj->mark_raw(); +- if (m->is_marked()) { +- forwardee = (oop) m->decode_pointer(); ++ if (m.is_marked()) { ++ forwardee = (oop) m.decode_pointer(); + } else { + forwardee = _par_scan_state->copy_to_survivor_space(state, obj, m); + } +diff --git a/src/hotspot/share/gc/g1/g1ParScanThreadState.cpp b/src/hotspot/share/gc/g1/g1ParScanThreadState.cpp +index 72a607168..fde1efffc 100644 +--- a/src/hotspot/share/gc/g1/g1ParScanThreadState.cpp ++++ b/src/hotspot/share/gc/g1/g1ParScanThreadState.cpp +@@ -188,8 +188,8 @@ HeapWord* G1ParScanThreadState::allocate_in_next_plab(InCSetState const state, + + InCSetState G1ParScanThreadState::next_state(InCSetState const state, markOop const m, uint& age) { + if (state.is_young()) { +- age = !m->has_displaced_mark_helper() ? m->age() +- : m->displaced_mark_helper()->age(); ++ age = !m.has_displaced_mark_helper() ? m.age() ++ : m.displaced_mark_helper().age(); + if (age < _tenuring_threshold) { + return state; + } +@@ -274,15 +274,15 @@ oop G1ParScanThreadState::copy_to_survivor_space(InCSetState const state, + if (age < markOopDesc::max_age) { + age++; + } +- if (old_mark->has_displaced_mark_helper()) { ++ if (old_mark.has_displaced_mark_helper()) { + // In this case, we have to install the mark word first, + // otherwise obj looks to be forwarded (the old mark word, + // which contains the forward pointer, was copied) + obj->set_mark_raw(old_mark); +- markOop new_mark = old_mark->displaced_mark_helper()->set_age(age); +- old_mark->set_displaced_mark_helper(new_mark); ++ markOop new_mark = old_mark.displaced_mark_helper().set_age(age); ++ old_mark.set_displaced_mark_helper(new_mark); + } else { +- obj->set_mark_raw(old_mark->set_age(age)); ++ obj->set_mark_raw(old_mark.set_age(age)); + } + _age_table.add(age, word_sz); + } else { +diff --git a/src/hotspot/share/gc/g1/g1ParScanThreadState.inline.hpp b/src/hotspot/share/gc/g1/g1ParScanThreadState.inline.hpp +index 10754bafa..78cabd806 100644 +--- a/src/hotspot/share/gc/g1/g1ParScanThreadState.inline.hpp ++++ b/src/hotspot/share/gc/g1/g1ParScanThreadState.inline.hpp +@@ -42,8 +42,8 @@ template void G1ParScanThreadState::do_oop_evac(T* p) { + const InCSetState in_cset_state = _g1h->in_cset_state(obj); + if (in_cset_state.is_in_cset()) { + markOop m = obj->mark_raw(); +- if (m->is_marked()) { +- obj = (oop) m->decode_pointer(); ++ if (m.is_marked()) { ++ obj = (oop) m.decode_pointer(); + } else { + obj = copy_to_survivor_space(in_cset_state, obj, m); + } +diff --git a/src/hotspot/share/gc/parallel/psMarkSweepDecorator.cpp b/src/hotspot/share/gc/parallel/psMarkSweepDecorator.cpp +index eed0fa51b..43c336892 100644 +--- a/src/hotspot/share/gc/parallel/psMarkSweepDecorator.cpp ++++ b/src/hotspot/share/gc/parallel/psMarkSweepDecorator.cpp +@@ -113,8 +113,8 @@ void PSMarkSweepDecorator::precompact() { + const intx interval = PrefetchScanIntervalInBytes; + + while (q < t) { +- assert(oop(q)->mark_raw()->is_marked() || oop(q)->mark_raw()->is_unlocked() || +- oop(q)->mark_raw()->has_bias_pattern(), ++ assert(oop(q)->mark_raw().is_marked() || oop(q)->mark_raw().is_unlocked() || ++ oop(q)->mark_raw().has_bias_pattern(), + "these are the only valid states during a mark sweep"); + if (oop(q)->is_gc_marked()) { + /* prefetch beyond q */ +@@ -259,7 +259,7 @@ bool PSMarkSweepDecorator::insert_deadspace(size_t& allowed_deadspace_words, + if (allowed_deadspace_words >= deadlength) { + allowed_deadspace_words -= deadlength; + CollectedHeap::fill_with_object(q, deadlength); +- oop(q)->set_mark_raw(oop(q)->mark_raw()->set_marked()); ++ oop(q)->set_mark_raw(oop(q)->mark_raw().set_marked()); + assert((int) deadlength == oop(q)->size(), "bad filler object size"); + // Recall that we required "q == compaction_top". + return true; +@@ -350,7 +350,7 @@ void PSMarkSweepDecorator::compact(bool mangle_free_space ) { + q = t; + } else { + // $$$ Funky +- q = (HeapWord*) oop(_first_dead)->mark_raw()->decode_pointer(); ++ q = (HeapWord*) oop(_first_dead)->mark_raw().decode_pointer(); + } + } + +@@ -361,7 +361,7 @@ void PSMarkSweepDecorator::compact(bool mangle_free_space ) { + if (!oop(q)->is_gc_marked()) { + // mark is pointer to next marked oop + debug_only(prev_q = q); +- q = (HeapWord*) oop(q)->mark_raw()->decode_pointer(); ++ q = (HeapWord*) oop(q)->mark_raw().decode_pointer(); + assert(q > prev_q, "we should be moving forward through memory"); + } else { + // prefetch beyond q +diff --git a/src/hotspot/share/gc/parallel/psPromotionManager.inline.hpp b/src/hotspot/share/gc/parallel/psPromotionManager.inline.hpp +index 1ef900783..15c95e3ea 100644 +--- a/src/hotspot/share/gc/parallel/psPromotionManager.inline.hpp ++++ b/src/hotspot/share/gc/parallel/psPromotionManager.inline.hpp +@@ -119,13 +119,13 @@ inline oop PSPromotionManager::copy_to_survivor_space(oop o) { + markOop test_mark = o->mark_raw(); + + // The same test as "o->is_forwarded()" +- if (!test_mark->is_marked()) { ++ if (!test_mark.is_marked()) { + bool new_obj_is_tenured = false; + size_t new_obj_size = o->size(); + + // Find the objects age, MT safe. +- uint age = (test_mark->has_displaced_mark_helper() /* o->has_displaced_mark() */) ? +- test_mark->displaced_mark_helper()->age() : test_mark->age(); ++ uint age = (test_mark.has_displaced_mark_helper() /* o->has_displaced_mark() */) ? ++ test_mark.displaced_mark_helper().age() : test_mark.age(); + + if (!promote_immediately) { + // Try allocating obj in to-space (unless too old) +diff --git a/src/hotspot/share/gc/serial/markSweep.cpp b/src/hotspot/share/gc/serial/markSweep.cpp +index fcc4f40ec..c799afbe5 100644 +--- a/src/hotspot/share/gc/serial/markSweep.cpp ++++ b/src/hotspot/share/gc/serial/markSweep.cpp +@@ -131,7 +131,7 @@ template inline void MarkSweep::follow_root(T* p) { + T heap_oop = RawAccess<>::oop_load(p); + if (!CompressedOops::is_null(heap_oop)) { + oop obj = CompressedOops::decode_not_null(heap_oop); +- if (!obj->mark_raw()->is_marked()) { ++ if (!obj->mark_raw().is_marked()) { + mark_object(obj); + follow_object(obj); + } +diff --git a/src/hotspot/share/gc/serial/markSweep.inline.hpp b/src/hotspot/share/gc/serial/markSweep.inline.hpp +index 25a5a315f..e021d8b17 100644 +--- a/src/hotspot/share/gc/serial/markSweep.inline.hpp ++++ b/src/hotspot/share/gc/serial/markSweep.inline.hpp +@@ -39,9 +39,9 @@ inline void MarkSweep::mark_object(oop obj) { + // some marks may contain information we need to preserve so we store them away + // and overwrite the mark. We'll restore it at the end of markSweep. + markOop mark = obj->mark_raw(); +- obj->set_mark_raw(markOopDesc::prototype()->set_marked()); ++ obj->set_mark_raw(markOopDesc::prototype().set_marked()); + +- if (mark->must_be_preserved(obj)) { ++ if (mark.must_be_preserved(obj)) { + preserve_mark(obj, mark); + } + } +@@ -50,7 +50,7 @@ template inline void MarkSweep::mark_and_push(T* p) { + T heap_oop = RawAccess<>::oop_load(p); + if (!CompressedOops::is_null(heap_oop)) { + oop obj = CompressedOops::decode_not_null(heap_oop); +- if (!obj->mark_raw()->is_marked()) { ++ if (!obj->mark_raw().is_marked()) { + mark_object(obj); + _marking_stack.push(obj); + } +@@ -79,11 +79,11 @@ template inline void MarkSweep::adjust_pointer(T* p) { + oop obj = CompressedOops::decode_not_null(heap_oop); + assert(Universe::heap()->is_in(obj), "should be in heap"); + +- oop new_obj = oop(obj->mark_raw()->decode_pointer()); ++ oop new_obj = oop(obj->mark_raw().decode_pointer()); + + assert(new_obj != NULL || // is forwarding ptr? + obj->mark_raw() == markOopDesc::prototype() || // not gc marked? +- (UseBiasedLocking && obj->mark_raw()->has_bias_pattern()), ++ (UseBiasedLocking && obj->mark_raw().has_bias_pattern()), + // not gc marked? + "should be forwarded"); + +diff --git a/src/hotspot/share/gc/shared/preservedMarks.inline.hpp b/src/hotspot/share/gc/shared/preservedMarks.inline.hpp +index e246a8a5b..42691d63b 100644 +--- a/src/hotspot/share/gc/shared/preservedMarks.inline.hpp ++++ b/src/hotspot/share/gc/shared/preservedMarks.inline.hpp +@@ -31,7 +31,7 @@ + #include "utilities/stack.inline.hpp" + + inline bool PreservedMarks::should_preserve_mark(oop obj, markOop m) const { +- return m->must_be_preserved_for_promotion_failure(obj); ++ return m.must_be_preserved_for_promotion_failure(obj); + } + + inline void PreservedMarks::push(oop obj, markOop m) { +diff --git a/src/hotspot/share/gc/shared/space.inline.hpp b/src/hotspot/share/gc/shared/space.inline.hpp +index ad22b6c42..3732606bc 100644 +--- a/src/hotspot/share/gc/shared/space.inline.hpp ++++ b/src/hotspot/share/gc/shared/space.inline.hpp +@@ -118,7 +118,7 @@ public: + _allowed_deadspace_words -= dead_length; + CollectedHeap::fill_with_object(dead_start, dead_length); + oop obj = oop(dead_start); +- obj->set_mark_raw(obj->mark_raw()->set_marked()); ++ obj->set_mark_raw(obj->mark_raw().set_marked()); + + assert(dead_length == (size_t)obj->size(), "bad filler object size"); + log_develop_trace(gc, compaction)("Inserting object to dead space: " PTR_FORMAT ", " PTR_FORMAT ", " SIZE_FORMAT "b", +@@ -165,8 +165,8 @@ inline void CompactibleSpace::scan_and_forward(SpaceType* space, CompactPoint* c + + while (cur_obj < scan_limit) { + assert(!space->scanned_block_is_obj(cur_obj) || +- oop(cur_obj)->mark_raw()->is_marked() || oop(cur_obj)->mark_raw()->is_unlocked() || +- oop(cur_obj)->mark_raw()->has_bias_pattern(), ++ oop(cur_obj)->mark_raw().is_marked() || oop(cur_obj)->mark_raw().is_unlocked() || ++ oop(cur_obj)->mark_raw().has_bias_pattern(), + "these are the only valid states during a mark sweep"); + if (space->scanned_block_is_obj(cur_obj) && oop(cur_obj)->is_gc_marked()) { + // prefetch beyond cur_obj +diff --git a/src/hotspot/share/gc/shenandoah/shenandoahAsserts.cpp b/src/hotspot/share/gc/shenandoah/shenandoahAsserts.cpp +index 1f8b79d5e..d9ecdc8f7 100644 +--- a/src/hotspot/share/gc/shenandoah/shenandoahAsserts.cpp ++++ b/src/hotspot/share/gc/shenandoah/shenandoahAsserts.cpp +@@ -60,7 +60,7 @@ void ShenandoahAsserts::print_obj(ShenandoahMessageBuffer& msg, oop obj) { + r->print_on(&ss); + + stringStream mw_ss; +- obj->mark()->print_on(&mw_ss); ++ obj->mark().print_on(&mw_ss); + + ShenandoahMarkingContext* const ctx = heap->marking_context(); + +diff --git a/src/hotspot/share/gc/shenandoah/shenandoahForwarding.inline.hpp b/src/hotspot/share/gc/shenandoah/shenandoahForwarding.inline.hpp +index 50d9c5015..4db606bfc 100644 +--- a/src/hotspot/share/gc/shenandoah/shenandoahForwarding.inline.hpp ++++ b/src/hotspot/share/gc/shenandoah/shenandoahForwarding.inline.hpp +@@ -40,8 +40,8 @@ inline HeapWord* ShenandoahForwarding::get_forwardee_raw_unchecked(oop obj) { + // fwdptr. That object is still not forwarded, and we need to return + // the object itself. + markOop mark = obj->mark_raw(); +- if (mark->is_marked()) { +- HeapWord* fwdptr = (HeapWord*) mark->clear_lock_bits(); ++ if (mark.is_marked()) { ++ HeapWord* fwdptr = (HeapWord*) mark.clear_lock_bits().to_pointer(); + if (fwdptr != NULL) { + return fwdptr; + } +@@ -55,8 +55,8 @@ inline oop ShenandoahForwarding::get_forwardee_mutator(oop obj) { + assert(Thread::current()->is_Java_thread(), "Must be a mutator thread"); + + markOop mark = obj->mark_raw(); +- if (mark->is_marked()) { +- HeapWord* fwdptr = (HeapWord*)mark->clear_lock_bits(); ++ if (mark.is_marked()) { ++ HeapWord* fwdptr = (HeapWord*)mark.clear_lock_bits().to_pointer(); + assert(fwdptr != NULL, "Forwarding pointer is never null here"); + return oop(fwdptr); + } else { +@@ -70,13 +70,13 @@ inline oop ShenandoahForwarding::get_forwardee(oop obj) { + } + + inline bool ShenandoahForwarding::is_forwarded(oop obj) { +- return obj->mark_raw()->is_marked(); ++ return obj->mark_raw().is_marked(); + } + + inline oop ShenandoahForwarding::try_update_forwardee(oop obj, oop update) { + markOop old_mark = obj->mark_raw(); +- if (old_mark->is_marked()) { +- return (oop) old_mark->clear_lock_bits(); ++ if (old_mark.is_marked()) { ++ return (oop) old_mark.clear_lock_bits().to_pointer(); + } + + markOop new_mark = markOopDesc::encode_pointer_as_mark(update); +@@ -84,7 +84,7 @@ inline oop ShenandoahForwarding::try_update_forwardee(oop obj, oop update) { + if (prev_mark == old_mark) { + return update; + } else { +- return (oop) prev_mark->clear_lock_bits(); ++ return (oop) prev_mark.clear_lock_bits().to_pointer(); + } + } + +diff --git a/src/hotspot/share/gc/shenandoah/shenandoahStringDedup.cpp b/src/hotspot/share/gc/shenandoah/shenandoahStringDedup.cpp +index edcb7724f..b7c4665b9 100644 +--- a/src/hotspot/share/gc/shenandoah/shenandoahStringDedup.cpp ++++ b/src/hotspot/share/gc/shenandoah/shenandoahStringDedup.cpp +@@ -50,14 +50,14 @@ void ShenandoahStringDedup::enqueue_candidate(oop java_string) { + const markOop mark = java_string->mark(); + + // Having/had displaced header, too risk to deal with them, skip +- if (mark == markOopDesc::INFLATING() || mark->has_displaced_mark_helper()) { ++ if (mark == markOopDesc::INFLATING() || mark.has_displaced_mark_helper()) { + return; + } + + // Increase string age and enqueue it when it rearches age threshold +- markOop new_mark = mark->incr_age(); ++ markOop new_mark = mark.incr_age(); + if (mark == java_string->cas_set_mark(new_mark, mark)) { +- if (mark->age() == StringDeduplicationAgeThreshold) { ++ if (mark.age() == StringDeduplicationAgeThreshold) { + StringDedupQueue::push(ShenandoahWorkerSession::worker_id(), java_string); + } + } +diff --git a/src/hotspot/share/interpreter/bytecodeInterpreter.cpp b/src/hotspot/share/interpreter/bytecodeInterpreter.cpp +index cea137469..3ebdc7714 100644 +--- a/src/hotspot/share/interpreter/bytecodeInterpreter.cpp ++++ b/src/hotspot/share/interpreter/bytecodeInterpreter.cpp +@@ -668,7 +668,7 @@ BytecodeInterpreter::run(interpreterState istate) { + markOop mark = rcvr->mark(); + intptr_t hash = (intptr_t) markOopDesc::no_hash; + // Implies UseBiasedLocking. +- if (mark->has_bias_pattern()) { ++ if (mark.has_bias_pattern()) { + uintptr_t thread_ident; + uintptr_t anticipated_bias_locking_value; + thread_ident = (uintptr_t)istate->thread(); +@@ -730,7 +730,7 @@ BytecodeInterpreter::run(interpreterState istate) { + + // Traditional lightweight locking. + if (!success) { +- markOop displaced = rcvr->mark()->set_unlocked(); ++ markOop displaced = rcvr->mark().set_unlocked(); + mon->lock()->set_displaced_header(displaced); + bool call_vm = UseHeavyMonitors; + if (call_vm || rcvr->cas_set_mark((markOop)mon, displaced) != displaced) { +@@ -854,7 +854,7 @@ BytecodeInterpreter::run(interpreterState istate) { + markOop mark = lockee->mark(); + intptr_t hash = (intptr_t) markOopDesc::no_hash; + // implies UseBiasedLocking +- if (mark->has_bias_pattern()) { ++ if (mark.has_bias_pattern()) { + uintptr_t thread_ident; + uintptr_t anticipated_bias_locking_value; + thread_ident = (uintptr_t)istate->thread(); +@@ -916,7 +916,7 @@ BytecodeInterpreter::run(interpreterState istate) { + + // traditional lightweight locking + if (!success) { +- markOop displaced = lockee->mark()->set_unlocked(); ++ markOop displaced = lockee->mark().set_unlocked(); + entry->lock()->set_displaced_header(displaced); + bool call_vm = UseHeavyMonitors; + if (call_vm || lockee->cas_set_mark((markOop)entry, displaced) != displaced) { +@@ -1794,7 +1794,7 @@ run: + markOop mark = lockee->mark(); + intptr_t hash = (intptr_t) markOopDesc::no_hash; + // implies UseBiasedLocking +- if (mark->has_bias_pattern()) { ++ if (mark.has_bias_pattern()) { + uintptr_t thread_ident; + uintptr_t anticipated_bias_locking_value; + thread_ident = (uintptr_t)istate->thread(); +@@ -1859,7 +1859,7 @@ run: + + // traditional lightweight locking + if (!success) { +- markOop displaced = lockee->mark()->set_unlocked(); ++ markOop displaced = lockee->mark().set_unlocked(); + entry->lock()->set_displaced_header(displaced); + bool call_vm = UseHeavyMonitors; + if (call_vm || lockee->cas_set_mark((markOop)entry, displaced) != displaced) { +@@ -1890,7 +1890,7 @@ run: + BasicLock* lock = most_recent->lock(); + markOop header = lock->displaced_header(); + most_recent->set_obj(NULL); +- if (!lockee->mark()->has_bias_pattern()) { ++ if (!lockee->mark().has_bias_pattern()) { + bool call_vm = UseHeavyMonitors; + // If it isn't recursive we either must swap old header or call the runtime + if (header != NULL || call_vm) { +@@ -3030,7 +3030,7 @@ run: + markOop header = lock->displaced_header(); + end->set_obj(NULL); + +- if (!lockee->mark()->has_bias_pattern()) { ++ if (!lockee->mark().has_bias_pattern()) { + // If it isn't recursive we either must swap old header or call the runtime + if (header != NULL) { + markOop old_header = markOopDesc::encode(lock); +@@ -3105,7 +3105,7 @@ run: + markOop header = lock->displaced_header(); + base->set_obj(NULL); + +- if (!rcvr->mark()->has_bias_pattern()) { ++ if (!rcvr->mark().has_bias_pattern()) { + base->set_obj(NULL); + // If it isn't recursive we either must swap old header or call the runtime + if (header != NULL) { +diff --git a/src/hotspot/share/jfr/leakprofiler/chains/bfsClosure.cpp b/src/hotspot/share/jfr/leakprofiler/chains/bfsClosure.cpp +index e436746e8..d14d67962 100644 +--- a/src/hotspot/share/jfr/leakprofiler/chains/bfsClosure.cpp ++++ b/src/hotspot/share/jfr/leakprofiler/chains/bfsClosure.cpp +@@ -131,7 +131,7 @@ void BFSClosure::closure_impl(const oop* reference, const oop pointee) { + if (!_mark_bits->is_marked(pointee)) { + _mark_bits->mark_obj(pointee); + // is the pointee a sample object? +- if (NULL == pointee->mark()) { ++ if (NULL == pointee->mark().to_pointer()) { + add_chain(reference, pointee); + } + +@@ -148,7 +148,7 @@ void BFSClosure::closure_impl(const oop* reference, const oop pointee) { + + void BFSClosure::add_chain(const oop* reference, const oop pointee) { + assert(pointee != NULL, "invariant"); +- assert(NULL == pointee->mark(), "invariant"); ++ assert(NULL == pointee->mark().to_pointer(), "invariant"); + Edge leak_edge(_current_parent, reference); + _edge_store->put_chain(&leak_edge, _current_parent == NULL ? 1 : _current_frontier_level + 2); + } +diff --git a/src/hotspot/share/jfr/leakprofiler/chains/dfsClosure.cpp b/src/hotspot/share/jfr/leakprofiler/chains/dfsClosure.cpp +index c347901bf..b1a1fca20 100644 +--- a/src/hotspot/share/jfr/leakprofiler/chains/dfsClosure.cpp ++++ b/src/hotspot/share/jfr/leakprofiler/chains/dfsClosure.cpp +@@ -121,7 +121,7 @@ void DFSClosure::closure_impl(const oop* reference, const oop pointee) { + assert(_mark_bits->is_marked(pointee), "invariant"); + + // is the pointee a sample object? +- if (NULL == pointee->mark()) { ++ if (NULL == pointee->mark().to_pointer()) { + add_chain(); + } + +diff --git a/src/hotspot/share/jfr/leakprofiler/chains/edgeStore.cpp b/src/hotspot/share/jfr/leakprofiler/chains/edgeStore.cpp +index ad549f486..b9f09fa9a 100644 +--- a/src/hotspot/share/jfr/leakprofiler/chains/edgeStore.cpp ++++ b/src/hotspot/share/jfr/leakprofiler/chains/edgeStore.cpp +@@ -237,8 +237,8 @@ StoredEdge* EdgeStore::associate_leak_context_with_candidate(const Edge* edge) { + StoredEdge* const leak_context_edge = put(edge->reference()); + oop sample_object = edge->pointee(); + assert(sample_object != NULL, "invariant"); +- assert(NULL == sample_object->mark(), "invariant"); +- sample_object->set_mark(markOop(leak_context_edge)); ++ assert(NULL == sample_object->mark().to_pointer(), "invariant"); ++ sample_object->set_mark(markOop::from_pointer(leak_context_edge)); + return leak_context_edge; + } + +diff --git a/src/hotspot/share/jfr/leakprofiler/chains/edgeUtils.cpp b/src/hotspot/share/jfr/leakprofiler/chains/edgeUtils.cpp +index 699fd4ac4..f4c925004 100644 +--- a/src/hotspot/share/jfr/leakprofiler/chains/edgeUtils.cpp ++++ b/src/hotspot/share/jfr/leakprofiler/chains/edgeUtils.cpp +@@ -36,7 +36,7 @@ + #include "runtime/handles.inline.hpp" + + bool EdgeUtils::is_leak_edge(const Edge& edge) { +- return (const Edge*)edge.pointee()->mark() == &edge; ++ return (const Edge*)edge.pointee()->mark().to_pointer() == &edge; + } + + static bool is_static_field(const oop ref_owner, const InstanceKlass* ik, int offset) { +diff --git a/src/hotspot/share/jfr/leakprofiler/chains/objectSampleMarker.hpp b/src/hotspot/share/jfr/leakprofiler/chains/objectSampleMarker.hpp +index 9a97a373f..2c2616feb 100644 +--- a/src/hotspot/share/jfr/leakprofiler/chains/objectSampleMarker.hpp ++++ b/src/hotspot/share/jfr/leakprofiler/chains/objectSampleMarker.hpp +@@ -45,7 +45,7 @@ class ObjectSampleMarker : public StackObj { + const markOop mark_oop) : _obj(obj), + _mark_oop(mark_oop) {} + public: +- ObjectSampleMarkOop() : _obj(NULL), _mark_oop(NULL) {} ++ ObjectSampleMarkOop() : _obj(NULL), _mark_oop(markOop::zero()) {} + }; + + GrowableArray* _store; +@@ -72,9 +72,9 @@ class ObjectSampleMarker : public StackObj { + // This is an "impossible" state during a safepoint, + // hence we will use it to quickly identify sample objects + // during the reachability search from gc roots. +- assert(NULL == markOopDesc::INFLATING(), "invariant"); ++ assert(NULL == markOopDesc::INFLATING().to_pointer(), "invariant"); + obj->set_mark(markOopDesc::INFLATING()); +- assert(NULL == obj->mark(), "invariant"); ++ assert(NULL == obj->mark().to_pointer(), "invariant"); + } + }; + +diff --git a/src/hotspot/share/jfr/leakprofiler/checkpoint/eventEmitter.cpp b/src/hotspot/share/jfr/leakprofiler/checkpoint/eventEmitter.cpp +index 02d9c2d9c..438f91763 100644 +--- a/src/hotspot/share/jfr/leakprofiler/checkpoint/eventEmitter.cpp ++++ b/src/hotspot/share/jfr/leakprofiler/checkpoint/eventEmitter.cpp +@@ -111,7 +111,7 @@ void EventEmitter::write_event(const ObjectSample* sample, EdgeStore* edge_store + traceid gc_root_id = 0; + const Edge* edge = NULL; + if (SafepointSynchronize::is_at_safepoint()) { +- edge = (const Edge*)(*object_addr)->mark(); ++ edge = (const Edge*)(*object_addr)->mark().to_pointer(); + } + if (edge == NULL) { + // In order to dump out a representation of the event +diff --git a/src/hotspot/share/jfr/leakprofiler/utilities/saveRestore.cpp b/src/hotspot/share/jfr/leakprofiler/utilities/saveRestore.cpp +index 3cfff5a70..14055853e 100644 +--- a/src/hotspot/share/jfr/leakprofiler/utilities/saveRestore.cpp ++++ b/src/hotspot/share/jfr/leakprofiler/utilities/saveRestore.cpp +@@ -27,7 +27,7 @@ + #include "jfr/leakprofiler/utilities/saveRestore.hpp" + #include "oops/oop.inline.hpp" + +-MarkOopContext::MarkOopContext() : _obj(NULL), _mark_oop(NULL) {} ++MarkOopContext::MarkOopContext() : _obj(NULL), _mark_oop(markOop::zero()) {} + + MarkOopContext::MarkOopContext(const oop obj) : _obj(obj), _mark_oop(obj->mark()) { + assert(_obj->mark() == _mark_oop, "invariant"); +@@ -36,9 +36,9 @@ MarkOopContext::MarkOopContext(const oop obj) : _obj(obj), _mark_oop(obj->mark() + // This is an "impossible" state during a safepoint, + // hence we will use it to quickly identify objects + // during the reachability search from gc roots. +- assert(NULL == markOopDesc::INFLATING(), "invariant"); ++ assert(markOop::zero() == markOopDesc::INFLATING(), "invariant"); + _obj->set_mark(markOopDesc::INFLATING()); +- assert(NULL == obj->mark(), "invariant"); ++ assert(markOop::zero() == obj->mark(), "invariant"); + } + + MarkOopContext::~MarkOopContext() { +@@ -48,7 +48,7 @@ MarkOopContext::~MarkOopContext() { + } + } + +-MarkOopContext::MarkOopContext(const MarkOopContext& rhs) : _obj(NULL), _mark_oop(NULL) { ++MarkOopContext::MarkOopContext(const MarkOopContext& rhs) : _obj(NULL), _mark_oop(markOop::zero()) { + swap(const_cast(rhs)); + } + +diff --git a/src/hotspot/share/memory/metaspaceShared.cpp b/src/hotspot/share/memory/metaspaceShared.cpp +index c636ddbe9..b9aa49171 100644 +--- a/src/hotspot/share/memory/metaspaceShared.cpp ++++ b/src/hotspot/share/memory/metaspaceShared.cpp +@@ -1865,7 +1865,7 @@ void MetaspaceShared::dump_open_archive_heap_objects( + } + + unsigned MetaspaceShared::obj_hash(oop const& p) { +- assert(!p->mark()->has_bias_pattern(), ++ assert(!p->mark().has_bias_pattern(), + "this object should never have been locked"); // so identity_hash won't safepoin + unsigned hash = (unsigned)p->identity_hash(); + return hash; +diff --git a/src/hotspot/share/memory/universe.cpp b/src/hotspot/share/memory/universe.cpp +index eab9576bc..933b17676 100644 +--- a/src/hotspot/share/memory/universe.cpp ++++ b/src/hotspot/share/memory/universe.cpp +@@ -1315,7 +1315,7 @@ uintptr_t Universe::verify_mark_mask() { + + uintptr_t Universe::verify_mark_bits() { + intptr_t mask = verify_mark_mask(); +- intptr_t bits = (intptr_t)markOopDesc::prototype(); ++ intptr_t bits = (intptr_t)markOopDesc::prototype().value(); + assert((bits & ~mask) == 0, "no stray header bits"); + return bits; + } +diff --git a/src/hotspot/share/memory/virtualspace.cpp b/src/hotspot/share/memory/virtualspace.cpp +index d67f624ca..691838c70 100644 +--- a/src/hotspot/share/memory/virtualspace.cpp ++++ b/src/hotspot/share/memory/virtualspace.cpp +@@ -628,9 +628,9 @@ ReservedHeapSpace::ReservedHeapSpace(size_t size, size_t alignment, bool large, + initialize(size, alignment, large, NULL, false); + } + +- assert(markOopDesc::encode_pointer_as_mark(_base)->decode_pointer() == _base, ++ assert(markOopDesc::encode_pointer_as_mark(_base).decode_pointer() == _base, + "area must be distinguishable from marks for mark-sweep"); +- assert(markOopDesc::encode_pointer_as_mark(&_base[size])->decode_pointer() == &_base[size], ++ assert(markOopDesc::encode_pointer_as_mark(&_base[size]).decode_pointer() == &_base[size], + "area must be distinguishable from marks for mark-sweep"); + + if (base() != NULL) { +diff --git a/src/hotspot/share/oops/klass.cpp b/src/hotspot/share/oops/klass.cpp +index 4b97cf7eb..cacfaf82f 100644 +--- a/src/hotspot/share/oops/klass.cpp ++++ b/src/hotspot/share/oops/klass.cpp +@@ -682,7 +682,7 @@ void Klass::oop_print_on(oop obj, outputStream* st) { + + if (WizardMode) { + // print header +- obj->mark()->print_on(st); ++ obj->mark().print_on(st); + } + + // print class +diff --git a/src/hotspot/share/oops/klass.hpp b/src/hotspot/share/oops/klass.hpp +index 3ade5867a..9094ff0a9 100644 +--- a/src/hotspot/share/oops/klass.hpp ++++ b/src/hotspot/share/oops/klass.hpp +@@ -28,6 +28,7 @@ + #include "classfile/classLoaderData.hpp" + #include "memory/iterator.hpp" + #include "memory/memRegion.hpp" ++#include "oops/markOop.hpp" + #include "oops/metadata.hpp" + #include "oops/oop.hpp" + #include "oops/oopHandle.hpp" +diff --git a/src/hotspot/share/oops/klass.inline.hpp b/src/hotspot/share/oops/klass.inline.hpp +index 560998057..89917e4f6 100644 +--- a/src/hotspot/share/oops/klass.inline.hpp ++++ b/src/hotspot/share/oops/klass.inline.hpp +@@ -30,7 +30,7 @@ + #include "oops/markOop.hpp" + + inline void Klass::set_prototype_header(markOop header) { +- assert(!header->has_bias_pattern() || is_instance_klass(), "biased locking currently only supported for Java instances"); ++ assert(!header.has_bias_pattern() || is_instance_klass(), "biased locking currently only supported for Java instances"); + _prototype_header = header; + } + +diff --git a/src/hotspot/share/oops/markOop.hpp b/src/hotspot/share/oops/markOop.hpp +index 649217c88..036b42372 100644 +--- a/src/hotspot/share/oops/markOop.hpp ++++ b/src/hotspot/share/oops/markOop.hpp +@@ -101,10 +101,9 @@ class BasicLock; + class ObjectMonitor; + class JavaThread; + +-class markOopDesc: public oopDesc { ++class markOop { + private: +- // Conversion +- uintptr_t value() const { return (uintptr_t) this; } ++ uintptr_t _value; + + public: + // Constants +@@ -117,6 +116,29 @@ class markOopDesc: public oopDesc { + epoch_bits = 2 + }; + ++ explicit markOop(uintptr_t value) : _value(value) {} ++ ++ markOop() { /* uninitialized */} ++ ++ // It is critical for performance that this class be trivially ++ // destructable, copyable, and assignable. ++ ++ static markOop from_pointer(void* ptr) { ++ return markOop((uintptr_t)ptr); ++ } ++ void* to_pointer() const { ++ return (void*)_value; ++ } ++ ++ bool operator==(const markOop& other) const { ++ return _value == other._value; ++ } ++ bool operator!=(const markOop& other) const { ++ return !operator==(other); ++ } ++ // Conversion ++ uintptr_t value() const { return _value; } ++ + // The biased locking code currently requires that the age bits be + // contiguous to the lock bits. + enum { lock_shift = 0, +@@ -164,6 +186,9 @@ class markOopDesc: public oopDesc { + + enum { max_bias_epoch = epoch_mask }; + ++ // Creates a markOop with all bits set to zero. ++ static markOop zero() { return markOop(uintptr_t(0)); } ++ + // Biased Locking accessors. + // These must be checked by all code which calls into the + // ObjectSynchronizer and other code. The biasing is not understood +@@ -224,7 +249,7 @@ class markOopDesc: public oopDesc { + // check for and avoid overwriting a 0 value installed by some + // other thread. (They should spin or block instead. The 0 value + // is transient and *should* be short-lived). +- static markOop INFLATING() { return (markOop) 0; } // inflate-in-progress ++ static markOop INFLATING() { return zero(); } // inflate-in-progress + + // Should this header be preserved during GC? + inline bool must_be_preserved(oop obj_containing_mark) const; +@@ -294,17 +319,17 @@ class markOopDesc: public oopDesc { + markOop copy_set_hash(intptr_t hash) const { + intptr_t tmp = value() & (~hash_mask_in_place); + tmp |= ((hash & hash_mask) << hash_shift); +- return (markOop)tmp; ++ return markOop(tmp); + } + // it is only used to be stored into BasicLock as the + // indicator that the lock is using heavyweight monitor + static markOop unused_mark() { +- return (markOop) marked_value; ++ return markOop(marked_value); + } + // the following two functions create the markOop to be + // stored into object header, it encodes monitor info + static markOop encode(BasicLock* lock) { +- return (markOop) lock; ++ return from_pointer(lock); + } + static markOop encode(ObjectMonitor* monitor) { + intptr_t tmp = (intptr_t) monitor; +@@ -330,7 +355,7 @@ class markOopDesc: public oopDesc { + assert((v & ~age_mask) == 0, "shouldn't overflow age field"); + return markOop((value() & ~age_mask_in_place) | (((uintptr_t)v & age_mask) << age_shift)); + } +- markOop incr_age() const { return age() == max_age ? markOop(this) : set_age(age() + 1); } ++ markOop incr_age() const { return age() == max_age ? markOop(_value) : set_age(age() + 1); } + + // hash operations + intptr_t hash() const { +@@ -353,10 +378,10 @@ class markOopDesc: public oopDesc { + void print_on(outputStream* st) const; + + // Prepare address of oop for placement into mark +- inline static markOop encode_pointer_as_mark(void* p) { return markOop(p)->set_marked(); } ++ inline static markOop encode_pointer_as_mark(void* p) { return from_pointer(p).set_marked(); } + + // Recover address of oop from encoded form used in mark +- inline void* decode_pointer() { if (UseBiasedLocking && has_bias_pattern()) return NULL; return clear_lock_bits(); } ++ inline void* decode_pointer() { if (UseBiasedLocking && has_bias_pattern()) return NULL; return (void*)clear_lock_bits().value(); } + + // These markOops indicate cms free chunk blocks and not objects. + // In 64 bit, the markOop is set to distinguish them from oops. +@@ -375,7 +400,7 @@ class markOopDesc: public oopDesc { + + #ifdef _LP64 + static markOop cms_free_prototype() { +- return markOop(((intptr_t)prototype() & ~cms_mask_in_place) | ++ return markOop(((intptr_t)prototype().value() & ~cms_mask_in_place) | + ((cms_free_chunk_pattern & cms_mask) << cms_shift)); + } + uintptr_t cms_encoding() const { +@@ -389,10 +414,23 @@ class markOopDesc: public oopDesc { + size_t get_size() const { return (size_t)(value() >> size_shift); } + static markOop set_size_and_free(size_t size) { + assert((size & ~size_mask) == 0, "shouldn't overflow size field"); +- return markOop(((intptr_t)cms_free_prototype() & ~size_mask_in_place) | ++ return markOop(((intptr_t)cms_free_prototype().value() & ~size_mask_in_place) | + (((intptr_t)size & size_mask) << size_shift)); + } + #endif // _LP64 + }; + ++// Add an alias for the Desc type to minimize code churn. ++typedef class markOop markOopDesc; ++ ++// Support atomic operations. ++template<> ++struct PrimitiveConversions::Translate : public TrueType { ++ typedef markOop Value; ++ typedef uintptr_t Decayed; ++ ++ static Decayed decay(const Value& x) { return x.value(); } ++ static Value recover(Decayed x) { return Value(x); } ++}; ++ + #endif // SHARE_VM_OOPS_MARKOOP_HPP +diff --git a/src/hotspot/share/oops/markOop.inline.hpp b/src/hotspot/share/oops/markOop.inline.hpp +index 77d2fee0e..f0e042070 100644 +--- a/src/hotspot/share/oops/markOop.inline.hpp ++++ b/src/hotspot/share/oops/markOop.inline.hpp +@@ -39,7 +39,7 @@ inline bool markOopDesc::must_be_preserved_with_bias(oop obj_containing_mark) co + return false; + } + markOop prototype_header = prototype_for_object(obj_containing_mark); +- if (prototype_header->has_bias_pattern()) { ++ if (prototype_header.has_bias_pattern()) { + // Individual instance which has its bias revoked; must return + // true for correctness + return true; +@@ -68,7 +68,7 @@ inline bool markOopDesc::must_be_preserved_with_bias_for_promotion_failure(oop o + // BiasedLocking::preserve_marks() / restore_marks() in the middle + // of a scavenge when a promotion failure has first been detected. + if (has_bias_pattern() || +- prototype_for_object(obj_containing_mark)->has_bias_pattern()) { ++ prototype_for_object(obj_containing_mark).has_bias_pattern()) { + return true; + } + return (!is_unlocked() || !has_no_hash()); +@@ -89,7 +89,7 @@ inline bool markOopDesc::must_be_preserved_with_bias_for_cms_scavenge(Klass* kla + assert(UseBiasedLocking, "unexpected"); + // CMS scavenges preserve mark words in similar fashion to promotion failures; see above + if (has_bias_pattern() || +- klass_of_obj_containing_mark->prototype_header()->has_bias_pattern()) { ++ klass_of_obj_containing_mark->prototype_header().has_bias_pattern()) { + return true; + } + return (!is_unlocked() || !has_no_hash()); +@@ -106,7 +106,7 @@ inline bool markOopDesc::must_be_preserved_for_cms_scavenge(Klass* klass_of_obj_ + inline markOop markOopDesc::prototype_for_object(oop obj) { + #ifdef ASSERT + markOop prototype_header = obj->klass()->prototype_header(); +- assert(prototype_header == prototype() || prototype_header->has_bias_pattern(), "corrupt prototype header"); ++ assert(prototype_header == prototype() || prototype_header.has_bias_pattern(), "corrupt prototype header"); + #endif + return obj->klass()->prototype_header(); + } +diff --git a/src/hotspot/share/oops/oop.cpp b/src/hotspot/share/oops/oop.cpp +index 0470cbbde..ab598d767 100644 +--- a/src/hotspot/share/oops/oop.cpp ++++ b/src/hotspot/share/oops/oop.cpp +@@ -130,7 +130,7 @@ bool oopDesc::is_oop(oop obj, bool ignore_mark_word) { + if (ignore_mark_word) { + return true; + } +- if (obj->mark_raw() != NULL) { ++ if (obj->mark_raw().value() != 0) { + return true; + } + return !SafepointSynchronize::is_at_safepoint(); +@@ -145,7 +145,7 @@ bool oopDesc::is_oop_or_null(oop obj, bool ignore_mark_word) { + // used only for asserts + bool oopDesc::is_unlocked_oop() const { + if (!Universe::heap()->is_in_reserved(this)) return false; +- return mark()->is_unlocked(); ++ return mark().is_unlocked(); + } + #endif // PRODUCT + +diff --git a/src/hotspot/share/oops/oop.hpp b/src/hotspot/share/oops/oop.hpp +index 4430530e5..6311ee908 100644 +--- a/src/hotspot/share/oops/oop.hpp ++++ b/src/hotspot/share/oops/oop.hpp +@@ -28,6 +28,7 @@ + #include "memory/iterator.hpp" + #include "memory/memRegion.hpp" + #include "oops/access.hpp" ++#include "oops/markOop.hpp" + #include "oops/metadata.hpp" + #include "runtime/atomic.hpp" + #include "utilities/macros.hpp" +diff --git a/src/hotspot/share/oops/oop.inline.hpp b/src/hotspot/share/oops/oop.inline.hpp +index 6c631f545..dfeecb9c5 100644 +--- a/src/hotspot/share/oops/oop.inline.hpp ++++ b/src/hotspot/share/oops/oop.inline.hpp +@@ -44,23 +44,24 @@ + // We need a separate file to avoid circular references + + markOop oopDesc::mark() const { +- return HeapAccess::load_at(as_oop(), mark_offset_in_bytes()); ++ uintptr_t v = HeapAccess::load_at(as_oop(), mark_offset_in_bytes()); ++ return markOop(v); + } + + markOop oopDesc::mark_raw() const { +- return _mark; ++ return Atomic::load(&_mark);; + } + + markOop* oopDesc::mark_addr_raw() const { + return (markOop*) &_mark; + } + +-void oopDesc::set_mark(volatile markOop m) { +- HeapAccess::store_at(as_oop(), mark_offset_in_bytes(), m); ++void oopDesc::set_mark(markOop m) { ++ HeapAccess::store_at(as_oop(), mark_offset_in_bytes(), m.value()); + } + +-void oopDesc::set_mark_raw(volatile markOop m) { +- _mark = m; ++void oopDesc::set_mark_raw(markOop m) { ++ Atomic::store(m, &_mark); + } + + void oopDesc::set_mark_raw(HeapWord* mem, markOop m) { +@@ -68,11 +69,12 @@ void oopDesc::set_mark_raw(HeapWord* mem, markOop m) { + } + + void oopDesc::release_set_mark(markOop m) { +- HeapAccess::store_at(as_oop(), mark_offset_in_bytes(), m); ++ HeapAccess::store_at(as_oop(), mark_offset_in_bytes(), m.value()); + } + + markOop oopDesc::cas_set_mark(markOop new_mark, markOop old_mark) { +- return HeapAccess<>::atomic_cmpxchg_at(new_mark, as_oop(), mark_offset_in_bytes(), old_mark); ++ uintptr_t v = HeapAccess<>::atomic_cmpxchg_at(new_mark.value(), as_oop(), mark_offset_in_bytes(), old_mark.value()); ++ return markOop(v); + } + + markOop oopDesc::cas_set_mark_raw(markOop new_mark, markOop old_mark, atomic_memory_order order) { +@@ -318,31 +320,31 @@ inline jdouble oopDesc::double_field(int offset) const { return Hea + inline void oopDesc::double_field_put(int offset, jdouble value) { HeapAccess<>::store_at(as_oop(), offset, value); } + + bool oopDesc::is_locked() const { +- return mark()->is_locked(); ++ return mark().is_locked(); + } + + bool oopDesc::is_unlocked() const { +- return mark()->is_unlocked(); ++ return mark().is_unlocked(); + } + + bool oopDesc::has_bias_pattern() const { +- return mark()->has_bias_pattern(); ++ return mark().has_bias_pattern(); + } + + bool oopDesc::has_bias_pattern_raw() const { +- return mark_raw()->has_bias_pattern(); ++ return mark_raw().has_bias_pattern(); + } + + // Used only for markSweep, scavenging + bool oopDesc::is_gc_marked() const { +- return mark_raw()->is_marked(); ++ return mark_raw().is_marked(); + } + + // Used by scavengers + bool oopDesc::is_forwarded() const { + // The extra heap check is needed since the obj might be locked, in which case the + // mark would point to a stack location and have the sentinel bit cleared +- return mark_raw()->is_marked(); ++ return mark_raw().is_marked(); + } + + // Used by scavengers +@@ -355,7 +357,7 @@ void oopDesc::forward_to(oop p) { + !MetaspaceShared::is_archive_object(p), + "forwarding archive object"); + markOop m = markOopDesc::encode_pointer_as_mark(p); +- assert(m->decode_pointer() == p, "encoding must be reversable"); ++ assert(m.decode_pointer() == p, "encoding must be reversable"); + set_mark_raw(m); + } + +@@ -366,7 +368,7 @@ bool oopDesc::cas_forward_to(oop p, markOop compare, atomic_memory_order order) + assert(Universe::heap()->is_in_reserved(p), + "forwarding to something not in heap"); + markOop m = markOopDesc::encode_pointer_as_mark(p); +- assert(m->decode_pointer() == p, "encoding must be reversable"); ++ assert(m.decode_pointer() == p, "encoding must be reversable"); + return cas_set_mark_raw(m, compare, order) == compare; + } + +@@ -375,10 +377,10 @@ oop oopDesc::forward_to_atomic(oop p, atomic_memory_order order) { + markOop forwardPtrMark = markOopDesc::encode_pointer_as_mark(p); + markOop curMark; + +- assert(forwardPtrMark->decode_pointer() == p, "encoding must be reversable"); ++ assert(forwardPtrMark.decode_pointer() == p, "encoding must be reversable"); + assert(sizeof(markOop) == sizeof(intptr_t), "CAS below requires this."); + +- while (!oldMark->is_marked()) { ++ while (!oldMark.is_marked()) { + curMark = cas_set_mark_raw(forwardPtrMark, oldMark, order); + assert(is_forwarded(), "object should have been forwarded"); + if (curMark == oldMark) { +@@ -396,33 +398,32 @@ oop oopDesc::forward_to_atomic(oop p, atomic_memory_order order) { + // The forwardee is used when copying during scavenge and mark-sweep. + // It does need to clear the low two locking- and GC-related bits. + oop oopDesc::forwardee() const { +- return (oop) mark_raw()->decode_pointer(); ++ return (oop) mark_raw().decode_pointer(); + } + + // Note that the forwardee is not the same thing as the displaced_mark. + // The forwardee is used when copying during scavenge and mark-sweep. + // It does need to clear the low two locking- and GC-related bits. + oop oopDesc::forwardee_acquire() const { +- markOop m = OrderAccess::load_acquire(&_mark); +- return (oop) m->decode_pointer(); ++ return (oop) OrderAccess::load_acquire(&_mark).decode_pointer(); + } + + // The following method needs to be MT safe. + uint oopDesc::age() const { + assert(!is_forwarded(), "Attempt to read age from forwarded mark"); + if (has_displaced_mark_raw()) { +- return displaced_mark_raw()->age(); ++ return displaced_mark_raw().age(); + } else { +- return mark_raw()->age(); ++ return mark_raw().age(); + } + } + + void oopDesc::incr_age() { + assert(!is_forwarded(), "Attempt to increment age of forwarded mark"); + if (has_displaced_mark_raw()) { +- set_displaced_mark_raw(displaced_mark_raw()->incr_age()); ++ set_displaced_mark_raw(displaced_mark_raw().incr_age()); + } else { +- set_mark_raw(mark_raw()->incr_age()); ++ set_mark_raw(mark_raw().incr_age()); + } + } + +@@ -489,25 +490,25 @@ intptr_t oopDesc::identity_hash() { + // Fast case; if the object is unlocked and the hash value is set, no locking is needed + // Note: The mark must be read into local variable to avoid concurrent updates. + markOop mrk = mark(); +- if (mrk->is_unlocked() && !mrk->has_no_hash()) { +- return mrk->hash(); +- } else if (mrk->is_marked()) { +- return mrk->hash(); ++ if (mrk.is_unlocked() && !mrk.has_no_hash()) { ++ return mrk.hash(); ++ } else if (mrk.is_marked()) { ++ return mrk.hash(); + } else { + return slow_identity_hash(); + } + } + + bool oopDesc::has_displaced_mark_raw() const { +- return mark_raw()->has_displaced_mark_helper(); ++ return mark_raw().has_displaced_mark_helper(); + } + + markOop oopDesc::displaced_mark_raw() const { +- return mark_raw()->displaced_mark_helper(); ++ return mark_raw().displaced_mark_helper(); + } + + void oopDesc::set_displaced_mark_raw(markOop m) { +- mark_raw()->set_displaced_mark_helper(m); ++ mark_raw().set_displaced_mark_helper(m); + } + + #endif // SHARE_VM_OOPS_OOP_INLINE_HPP +diff --git a/src/hotspot/share/oops/oopsHierarchy.hpp b/src/hotspot/share/oops/oopsHierarchy.hpp +index d419aa156..f5ae4084b 100644 +--- a/src/hotspot/share/oops/oopsHierarchy.hpp ++++ b/src/hotspot/share/oops/oopsHierarchy.hpp +@@ -40,7 +40,6 @@ typedef juint narrowOop; // Offset instead of address for an oop within a java o + typedef juint narrowKlass; + + typedef void* OopOrNarrowOopStar; +-typedef class markOopDesc* markOop; + + #ifndef CHECK_UNHANDLED_OOPS + +@@ -120,7 +119,6 @@ public: + operator oopDesc* () const volatile { return obj(); } + operator intptr_t* () const { return (intptr_t*)obj(); } + operator PromotedObject* () const { return (PromotedObject*)obj(); } +- operator markOop () const volatile { return markOop(obj()); } + operator address () const { return (address)obj(); } + + // from javaCalls.cpp +diff --git a/src/hotspot/share/opto/macro.cpp b/src/hotspot/share/opto/macro.cpp +index 155c6893e..933adcb3e 100644 +--- a/src/hotspot/share/opto/macro.cpp ++++ b/src/hotspot/share/opto/macro.cpp +@@ -1773,7 +1773,7 @@ PhaseMacroExpand::initialize_object(AllocateNode* alloc, + if (UseBiasedLocking && (length == NULL)) { + mark_node = make_load(control, rawmem, klass_node, in_bytes(Klass::prototype_header_offset()), TypeRawPtr::BOTTOM, T_ADDRESS); + } else { +- mark_node = makecon(TypeRawPtr::make((address)markOopDesc::prototype())); ++ mark_node = makecon(TypeRawPtr::make((address)markOopDesc::prototype().value())); + } + rawmem = make_store(control, rawmem, object, oopDesc::mark_offset_in_bytes(), mark_node, T_ADDRESS); + +diff --git a/src/hotspot/share/prims/jvmtiEnvBase.cpp b/src/hotspot/share/prims/jvmtiEnvBase.cpp +index 093c79042..28ef47815 100644 +--- a/src/hotspot/share/prims/jvmtiEnvBase.cpp ++++ b/src/hotspot/share/prims/jvmtiEnvBase.cpp +@@ -965,16 +965,16 @@ JvmtiEnvBase::get_object_monitor_usage(JavaThread* calling_thread, jobject objec + { + markOop mark = hobj()->mark(); + +- if (!mark->has_monitor()) { ++ if (!mark.has_monitor()) { + // this object has a lightweight monitor + +- if (mark->has_locker()) { +- owner = (address)mark->locker(); // save the address of the Lock word ++ if (mark.has_locker()) { ++ owner = (address)mark.locker(); // save the address of the Lock word + } + // implied else: no owner + } else { + // this object has a heavyweight monitor +- mon = mark->monitor(); ++ mon = mark.monitor(); + + // The owner field of a heavyweight monitor may be NULL for no + // owner, a JavaThread * or it may still be the address of the +diff --git a/src/hotspot/share/prims/jvmtiTagMap.cpp b/src/hotspot/share/prims/jvmtiTagMap.cpp +index 1baa32c33..aa8f5230e 100644 +--- a/src/hotspot/share/prims/jvmtiTagMap.cpp ++++ b/src/hotspot/share/prims/jvmtiTagMap.cpp +@@ -1645,7 +1645,7 @@ class RestoreMarksClosure : public ObjectClosure { + void do_object(oop o) { + if (o != NULL) { + markOop mark = o->mark(); +- if (mark->is_marked()) { ++ if (mark.is_marked()) { + o->init_mark(); + } + } +@@ -1723,23 +1723,23 @@ void ObjectMarker::done() { + // mark an object + inline void ObjectMarker::mark(oop o) { + assert(Universe::heap()->is_in(o), "sanity check"); +- assert(!o->mark()->is_marked(), "should only mark an object once"); ++ assert(!o->mark().is_marked(), "should only mark an object once"); + + // object's mark word + markOop mark = o->mark(); + +- if (mark->must_be_preserved(o)) { ++ if (mark.must_be_preserved(o)) { + _saved_mark_stack->push(mark); + _saved_oop_stack->push(o); + } + + // mark the object +- o->set_mark(markOopDesc::prototype()->set_marked()); ++ o->set_mark(markOopDesc::prototype().set_marked()); + } + + // return true if object is marked + inline bool ObjectMarker::visited(oop o) { +- return o->mark()->is_marked(); ++ return o->mark().is_marked(); + } + + // Stack allocated class to help ensure that ObjectMarker is used +diff --git a/src/hotspot/share/prims/whitebox.cpp b/src/hotspot/share/prims/whitebox.cpp +index 82a811062..29f67a28e 100644 +--- a/src/hotspot/share/prims/whitebox.cpp ++++ b/src/hotspot/share/prims/whitebox.cpp +@@ -1689,7 +1689,7 @@ WB_END + + WB_ENTRY(jboolean, WB_IsMonitorInflated(JNIEnv* env, jobject wb, jobject obj)) + oop obj_oop = JNIHandles::resolve(obj); +- return (jboolean) obj_oop->mark()->has_monitor(); ++ return (jboolean) obj_oop->mark().has_monitor(); + WB_END + + WB_ENTRY(void, WB_ForceSafepoint(JNIEnv* env, jobject wb)) +diff --git a/src/hotspot/share/runtime/basicLock.cpp b/src/hotspot/share/runtime/basicLock.cpp +index 5d69b30ae..2090e4906 100644 +--- a/src/hotspot/share/runtime/basicLock.cpp ++++ b/src/hotspot/share/runtime/basicLock.cpp +@@ -29,8 +29,8 @@ + void BasicLock::print_on(outputStream* st) const { + st->print("monitor"); + markOop moop = displaced_header(); +- if (moop != NULL) +- moop->print_on(st); ++ if (moop.value() != 0) ++ moop.print_on(st); + } + + void BasicLock::move_to(oop obj, BasicLock* dest) { +@@ -62,7 +62,7 @@ void BasicLock::move_to(oop obj, BasicLock* dest) { + // is small (given the support for inflated fast-path locking in the fast_lock, etc) + // we'll leave that optimization for another time. + +- if (displaced_header()->is_neutral()) { ++ if (displaced_header().is_neutral()) { + ObjectSynchronizer::inflate_helper(obj); + // WARNING: We can not put check here, because the inflation + // will not update the displaced header. Once BasicLock is inflated, +@@ -75,6 +75,6 @@ void BasicLock::move_to(oop obj, BasicLock* dest) { + // we can find any flavor mark in the displaced mark. + } + // [RGV] The next line appears to do nothing! +- intptr_t dh = (intptr_t) displaced_header(); ++ intptr_t dh = (intptr_t) displaced_header().value(); + dest->set_displaced_header(displaced_header()); + } +diff --git a/src/hotspot/share/runtime/basicLock.hpp b/src/hotspot/share/runtime/basicLock.hpp +index 68fd6c332..388741734 100644 +--- a/src/hotspot/share/runtime/basicLock.hpp ++++ b/src/hotspot/share/runtime/basicLock.hpp +@@ -26,6 +26,7 @@ + #define SHARE_VM_RUNTIME_BASICLOCK_HPP + + #include "oops/markOop.hpp" ++#include "runtime/atomic.hpp" + #include "runtime/handles.hpp" + + class BasicLock { +@@ -34,8 +35,13 @@ class BasicLock { + private: + volatile markOop _displaced_header; + public: +- markOop displaced_header() const { return _displaced_header; } +- void set_displaced_header(markOop header) { _displaced_header = header; } ++ markOop displaced_header() const { ++ return Atomic::load(&_displaced_header); ++ } ++ ++ void set_displaced_header(markOop header) { ++ Atomic::store(header, &_displaced_header); ++ } + + void print_on(outputStream* st) const; + +diff --git a/src/hotspot/share/runtime/biasedLocking.cpp b/src/hotspot/share/runtime/biasedLocking.cpp +index a324120d8..2c23a4288 100644 +--- a/src/hotspot/share/runtime/biasedLocking.cpp ++++ b/src/hotspot/share/runtime/biasedLocking.cpp +@@ -150,27 +150,27 @@ static GrowableArray* get_or_compute_monitor_info(JavaThread* thre + return info; + } + +-// After the call, *biased_locker will be set to obj->mark()->biased_locker() if biased_locker != NULL, ++// After the call, *biased_locker will be set to obj->mark().biased_locker() if biased_locker != NULL, + // AND it is a living thread. Otherwise it will not be updated, (i.e. the caller is responsible for initialization). + static BiasedLocking::Condition revoke_bias(oop obj, bool allow_rebias, bool is_bulk, JavaThread* requesting_thread, JavaThread** biased_locker) { + markOop mark = obj->mark(); +- if (!mark->has_bias_pattern()) { ++ if (!mark.has_bias_pattern()) { + if (log_is_enabled(Info, biasedlocking)) { + ResourceMark rm; + log_info(biasedlocking)(" (Skipping revocation of object " INTPTR_FORMAT + ", mark " INTPTR_FORMAT ", type %s" + ", requesting thread " INTPTR_FORMAT + " because it's no longer biased)", +- p2i((void *)obj), (intptr_t) mark, ++ p2i((void *)obj), (intptr_t) mark.value(), + obj->klass()->external_name(), + (intptr_t) requesting_thread); + } + return BiasedLocking::NOT_BIASED; + } + +- uint age = mark->age(); +- markOop biased_prototype = markOopDesc::biased_locking_prototype()->set_age(age); +- markOop unbiased_prototype = markOopDesc::prototype()->set_age(age); ++ uint age = mark.age(); ++ markOop biased_prototype = markOopDesc::biased_locking_prototype().set_age(age); ++ markOop unbiased_prototype = markOopDesc::prototype().set_age(age); + + // Log at "info" level if not bulk, else "trace" level + if (!is_bulk) { +@@ -179,9 +179,9 @@ static BiasedLocking::Condition revoke_bias(oop obj, bool allow_rebias, bool is_ + INTPTR_FORMAT ", type %s, prototype header " INTPTR_FORMAT + ", allow rebias %d, requesting thread " INTPTR_FORMAT, + p2i((void *)obj), +- (intptr_t) mark, ++ (intptr_t) mark.value(), + obj->klass()->external_name(), +- (intptr_t) obj->klass()->prototype_header(), ++ (intptr_t) obj->klass()->prototype_header().value(), + (allow_rebias ? 1 : 0), + (intptr_t) requesting_thread); + } else { +@@ -190,14 +190,14 @@ static BiasedLocking::Condition revoke_bias(oop obj, bool allow_rebias, bool is_ + INTPTR_FORMAT " , type %s , prototype header " INTPTR_FORMAT + " , allow rebias %d , requesting thread " INTPTR_FORMAT, + p2i((void *)obj), +- (intptr_t) mark, ++ (intptr_t) mark.value(), + obj->klass()->external_name(), +- (intptr_t) obj->klass()->prototype_header(), ++ (intptr_t) obj->klass()->prototype_header().value(), + (allow_rebias ? 1 : 0), + (intptr_t) requesting_thread); + } + +- JavaThread* biased_thread = mark->biased_locker(); ++ JavaThread* biased_thread = mark.biased_locker(); + if (biased_thread == NULL) { + // Object is anonymously biased. We can get here if, for + // example, we revoke the bias due to an identity hash code +@@ -279,7 +279,7 @@ static BiasedLocking::Condition revoke_bias(oop obj, bool allow_rebias, bool is_ + // Must release storing the lock address for platforms without TSO + // ordering (e.g. ppc). + obj->release_set_mark(markOopDesc::encode(highest_lock)); +- assert(!obj->mark()->has_bias_pattern(), "illegal mark state: stack lock used bias bit"); ++ assert(!obj->mark().has_bias_pattern(), "illegal mark state: stack lock used bias bit"); + // Log at "info" level if not bulk, else "trace" level + if (!is_bulk) { + log_info(biasedlocking)(" Revoked bias of currently-locked object"); +@@ -320,7 +320,7 @@ enum HeuristicsResult { + + static HeuristicsResult update_heuristics(oop o, bool allow_rebias) { + markOop mark = o->mark(); +- if (!mark->has_bias_pattern()) { ++ if (!mark.has_bias_pattern()) { + return HR_NOT_BIASED; + } + +@@ -381,7 +381,7 @@ static BiasedLocking::Condition bulk_revoke_or_rebias_at_safepoint(oop o, + INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s", + (bulk_rebias ? "rebias" : "revoke"), + p2i((void *) o), +- (intptr_t) o->mark(), ++ (intptr_t) o->mark().value(), + o->klass()->external_name()); + + jlong cur_time = os::javaTimeMillis(); +@@ -405,10 +405,10 @@ static BiasedLocking::Condition bulk_revoke_or_rebias_at_safepoint(oop o, + // try to update the epoch -- assume another VM operation came in + // and reset the header to the unbiased state, which will + // implicitly cause all existing biases to be revoked +- if (klass->prototype_header()->has_bias_pattern()) { +- int prev_epoch = klass->prototype_header()->bias_epoch(); +- klass->set_prototype_header(klass->prototype_header()->incr_bias_epoch()); +- int cur_epoch = klass->prototype_header()->bias_epoch(); ++ if (klass->prototype_header().has_bias_pattern()) { ++ int prev_epoch = klass->prototype_header().bias_epoch(); ++ klass->set_prototype_header(klass->prototype_header().incr_bias_epoch()); ++ int cur_epoch = klass->prototype_header().bias_epoch(); + + // Now walk all threads' stacks and adjust epochs of any biased + // and locked objects of this data type we encounter +@@ -418,10 +418,10 @@ static BiasedLocking::Condition bulk_revoke_or_rebias_at_safepoint(oop o, + MonitorInfo* mon_info = cached_monitor_info->at(i); + oop owner = mon_info->owner(); + markOop mark = owner->mark(); +- if ((owner->klass() == k_o) && mark->has_bias_pattern()) { ++ if ((owner->klass() == k_o) && mark.has_bias_pattern()) { + // We might have encountered this object already in the case of recursive locking +- assert(mark->bias_epoch() == prev_epoch || mark->bias_epoch() == cur_epoch, "error in bias epoch adjustment"); +- owner->set_mark(mark->set_bias_epoch(cur_epoch)); ++ assert(mark.bias_epoch() == prev_epoch || mark.bias_epoch() == cur_epoch, "error in bias epoch adjustment"); ++ owner->set_mark(mark.set_bias_epoch(cur_epoch)); + } + } + } +@@ -429,7 +429,7 @@ static BiasedLocking::Condition bulk_revoke_or_rebias_at_safepoint(oop o, + + // At this point we're done. All we have to do is potentially + // adjust the header of the given object to revoke its bias. +- revoke_bias(o, attempt_rebias_of_object && klass->prototype_header()->has_bias_pattern(), true, requesting_thread, NULL); ++ revoke_bias(o, attempt_rebias_of_object && klass->prototype_header().has_bias_pattern(), true, requesting_thread, NULL); + } else { + if (log_is_enabled(Info, biasedlocking)) { + ResourceMark rm; +@@ -450,7 +450,7 @@ static BiasedLocking::Condition bulk_revoke_or_rebias_at_safepoint(oop o, + MonitorInfo* mon_info = cached_monitor_info->at(i); + oop owner = mon_info->owner(); + markOop mark = owner->mark(); +- if ((owner->klass() == k_o) && mark->has_bias_pattern()) { ++ if ((owner->klass() == k_o) && mark.has_bias_pattern()) { + revoke_bias(owner, false, true, requesting_thread, NULL); + } + } +@@ -467,17 +467,17 @@ static BiasedLocking::Condition bulk_revoke_or_rebias_at_safepoint(oop o, + BiasedLocking::Condition status_code = BiasedLocking::BIAS_REVOKED; + + if (attempt_rebias_of_object && +- o->mark()->has_bias_pattern() && +- klass->prototype_header()->has_bias_pattern()) { +- markOop new_mark = markOopDesc::encode(requesting_thread, o->mark()->age(), +- klass->prototype_header()->bias_epoch()); ++ o->mark().has_bias_pattern() && ++ klass->prototype_header().has_bias_pattern()) { ++ markOop new_mark = markOopDesc::encode(requesting_thread, o->mark().age(), ++ klass->prototype_header().bias_epoch()); + o->set_mark(new_mark); + status_code = BiasedLocking::BIAS_REVOKED_AND_REBIASED; + log_info(biasedlocking)(" Rebiased object toward thread " INTPTR_FORMAT, (intptr_t) requesting_thread); + } + +- assert(!o->mark()->has_bias_pattern() || +- (attempt_rebias_of_object && (o->mark()->biased_locker() == requesting_thread)), ++ assert(!o->mark().has_bias_pattern() || ++ (attempt_rebias_of_object && (o->mark().biased_locker() == requesting_thread)), + "bug in bulk bias revocation"); + + return status_code; +@@ -523,13 +523,13 @@ public: + // there is nothing to do and we avoid a safepoint. + if (_obj != NULL) { + markOop mark = (*_obj)()->mark(); +- if (mark->has_bias_pattern()) { ++ if (mark.has_bias_pattern()) { + return true; + } + } else { + for ( int i = 0 ; i < _objs->length(); i++ ) { + markOop mark = (_objs->at(i))()->mark(); +- if (mark->has_bias_pattern()) { ++ if (mark.has_bias_pattern()) { + return true; + } + } +@@ -629,7 +629,7 @@ BiasedLocking::Condition BiasedLocking::revoke_and_rebias(Handle obj, bool attem + // update the heuristics because doing so may cause unwanted bulk + // revocations (which are expensive) to occur. + markOop mark = obj->mark(); +- if (mark->is_biased_anonymously() && !attempt_rebias) { ++ if (mark.is_biased_anonymously() && !attempt_rebias) { + // We are probably trying to revoke the bias of this object due to + // an identity hash code computation. Try to revoke the bias + // without a safepoint. This is possible if we can successfully +@@ -637,15 +637,15 @@ BiasedLocking::Condition BiasedLocking::revoke_and_rebias(Handle obj, bool attem + // the object, meaning that no other thread has raced to acquire + // the bias of the object. + markOop biased_value = mark; +- markOop unbiased_prototype = markOopDesc::prototype()->set_age(mark->age()); ++ markOop unbiased_prototype = markOopDesc::prototype().set_age(mark.age()); + markOop res_mark = obj->cas_set_mark(unbiased_prototype, mark); + if (res_mark == biased_value) { + return BIAS_REVOKED; + } +- } else if (mark->has_bias_pattern()) { ++ } else if (mark.has_bias_pattern()) { + Klass* k = obj->klass(); + markOop prototype_header = k->prototype_header(); +- if (!prototype_header->has_bias_pattern()) { ++ if (!prototype_header.has_bias_pattern()) { + // This object has a stale bias from before the bulk revocation + // for this data type occurred. It's pointless to update the + // heuristics at this point so simply update the header with a +@@ -654,9 +654,9 @@ BiasedLocking::Condition BiasedLocking::revoke_and_rebias(Handle obj, bool attem + // with it. + markOop biased_value = mark; + markOop res_mark = obj->cas_set_mark(prototype_header, mark); +- assert(!obj->mark()->has_bias_pattern(), "even if we raced, should still be revoked"); ++ assert(!obj->mark().has_bias_pattern(), "even if we raced, should still be revoked"); + return BIAS_REVOKED; +- } else if (prototype_header->bias_epoch() != mark->bias_epoch()) { ++ } else if (prototype_header.bias_epoch() != mark.bias_epoch()) { + // The epoch of this biasing has expired indicating that the + // object is effectively unbiased. Depending on whether we need + // to rebias or revoke the bias of this object we can do it +@@ -667,14 +667,14 @@ BiasedLocking::Condition BiasedLocking::revoke_and_rebias(Handle obj, bool attem + if (attempt_rebias) { + assert(THREAD->is_Java_thread(), ""); + markOop biased_value = mark; +- markOop rebiased_prototype = markOopDesc::encode((JavaThread*) THREAD, mark->age(), prototype_header->bias_epoch()); ++ markOop rebiased_prototype = markOopDesc::encode((JavaThread*) THREAD, mark.age(), prototype_header.bias_epoch()); + markOop res_mark = obj->cas_set_mark(rebiased_prototype, mark); + if (res_mark == biased_value) { + return BIAS_REVOKED_AND_REBIASED; + } + } else { + markOop biased_value = mark; +- markOop unbiased_prototype = markOopDesc::prototype()->set_age(mark->age()); ++ markOop unbiased_prototype = markOopDesc::prototype().set_age(mark.age()); + markOop res_mark = obj->cas_set_mark(unbiased_prototype, mark); + if (res_mark == biased_value) { + return BIAS_REVOKED; +@@ -689,8 +689,8 @@ BiasedLocking::Condition BiasedLocking::revoke_and_rebias(Handle obj, bool attem + } else if (heuristics == HR_SINGLE_REVOKE) { + Klass *k = obj->klass(); + markOop prototype_header = k->prototype_header(); +- if (mark->biased_locker() == THREAD && +- prototype_header->bias_epoch() == mark->bias_epoch()) { ++ if (mark.biased_locker() == THREAD && ++ prototype_header.bias_epoch() == mark.bias_epoch()) { + // A thread is trying to revoke the bias of an object biased + // toward it, again likely due to an identity hash code + // computation. We can again avoid a safepoint in this case +@@ -814,7 +814,7 @@ void BiasedLocking::preserve_marks() { + oop owner = mon_info->owner(); + if (owner != NULL) { + markOop mark = owner->mark(); +- if (mark->has_bias_pattern()) { ++ if (mark.has_bias_pattern()) { + _preserved_oop_stack->push(Handle(cur, owner)); + _preserved_mark_stack->push(mark); + } +diff --git a/src/hotspot/share/runtime/deoptimization.cpp b/src/hotspot/share/runtime/deoptimization.cpp +index 7ca0d9154..5f1d44355 100644 +--- a/src/hotspot/share/runtime/deoptimization.cpp ++++ b/src/hotspot/share/runtime/deoptimization.cpp +@@ -1121,14 +1121,14 @@ void Deoptimization::relock_objects(GrowableArray* monitors, JavaT + if (!mon_info->owner_is_scalar_replaced()) { + Handle obj(thread, mon_info->owner()); + markOop mark = obj->mark(); +- if (UseBiasedLocking && mark->has_bias_pattern()) { ++ if (UseBiasedLocking && mark.has_bias_pattern()) { + // New allocated objects may have the mark set to anonymously biased. + // Also the deoptimized method may called methods with synchronization + // where the thread-local object is bias locked to the current thread. +- assert(mark->is_biased_anonymously() || +- mark->biased_locker() == thread, "should be locked to current thread"); ++ assert(mark.is_biased_anonymously() || ++ mark.biased_locker() == thread, "should be locked to current thread"); + // Reset mark word to unbiased prototype. +- markOop unbiased_prototype = markOopDesc::prototype()->set_age(mark->age()); ++ markOop unbiased_prototype = markOopDesc::prototype().set_age(mark.age()); + obj->set_mark(unbiased_prototype); + } + BasicLock* lock = mon_info->lock(); +diff --git a/src/hotspot/share/runtime/objectMonitor.hpp b/src/hotspot/share/runtime/objectMonitor.hpp +index d73c8a947..eba6075a2 100644 +--- a/src/hotspot/share/runtime/objectMonitor.hpp ++++ b/src/hotspot/share/runtime/objectMonitor.hpp +@@ -27,6 +27,7 @@ + + #include "memory/allocation.hpp" + #include "memory/padded.hpp" ++#include "oops/markOop.hpp" + #include "runtime/os.hpp" + #include "runtime/park.hpp" + #include "runtime/perfData.hpp" +diff --git a/src/hotspot/share/runtime/objectMonitor.inline.hpp b/src/hotspot/share/runtime/objectMonitor.inline.hpp +index 951d6472e..abb8cc554 100644 +--- a/src/hotspot/share/runtime/objectMonitor.inline.hpp ++++ b/src/hotspot/share/runtime/objectMonitor.inline.hpp +@@ -25,6 +25,8 @@ + #ifndef SHARE_VM_RUNTIME_OBJECTMONITOR_INLINE_HPP + #define SHARE_VM_RUNTIME_OBJECTMONITOR_INLINE_HPP + ++#include "runtime/atomic.hpp" ++ + inline intptr_t ObjectMonitor::is_entered(TRAPS) const { + if (THREAD == _owner || THREAD->is_lock_owned((address) _owner)) { + return 1; +@@ -33,7 +35,7 @@ inline intptr_t ObjectMonitor::is_entered(TRAPS) const { + } + + inline markOop ObjectMonitor::header() const { +- return _header; ++ return Atomic::load(&_header); + } + + inline volatile markOop* ObjectMonitor::header_addr() { +@@ -42,7 +44,7 @@ inline volatile markOop* ObjectMonitor::header_addr() { + } + + inline void ObjectMonitor::set_header(markOop hdr) { +- _header = hdr; ++ Atomic::store(hdr, &_header); + } + + inline jint ObjectMonitor::count() const { +@@ -58,14 +60,14 @@ inline void* ObjectMonitor::owner() const { + } + + inline void ObjectMonitor::clear() { +- assert(_header, "Fatal logic error in ObjectMonitor header!"); ++ assert(Atomic::load(&_header).value() != 0, "Fatal logic error in ObjectMonitor header!"); + assert(_count == 0, "Fatal logic error in ObjectMonitor count!"); + assert(_waiters == 0, "Fatal logic error in ObjectMonitor waiters!"); + assert(_recursions == 0, "Fatal logic error in ObjectMonitor recursions!"); + assert(_object != NULL, "Fatal logic error in ObjectMonitor object!"); + assert(_owner == 0, "Fatal logic error in ObjectMonitor owner!"); + +- _header = NULL; ++ Atomic::store(markOop::zero(), &_header); + _object = NULL; + } + +diff --git a/src/hotspot/share/runtime/sharedRuntime.cpp b/src/hotspot/share/runtime/sharedRuntime.cpp +index 595ff7495..cee41fcd7 100644 +--- a/src/hotspot/share/runtime/sharedRuntime.cpp ++++ b/src/hotspot/share/runtime/sharedRuntime.cpp +@@ -3080,10 +3080,10 @@ JRT_LEAF(intptr_t*, SharedRuntime::OSR_migration_begin( JavaThread *thread) ) + if (kptr2->obj() != NULL) { // Avoid 'holes' in the monitor array + BasicLock *lock = kptr2->lock(); + // Inflate so the displaced header becomes position-independent +- if (lock->displaced_header()->is_unlocked()) ++ if (lock->displaced_header().is_unlocked()) + ObjectSynchronizer::inflate_helper(kptr2->obj()); + // Now the displaced header is free to move +- buf[i++] = (intptr_t)lock->displaced_header(); ++ buf[i++] = (intptr_t)lock->displaced_header().value(); + buf[i++] = cast_from_oop(kptr2->obj()); + } + } +diff --git a/src/hotspot/share/runtime/synchronizer.cpp b/src/hotspot/share/runtime/synchronizer.cpp +index e7b32723e..2da0b02e9 100644 +--- a/src/hotspot/share/runtime/synchronizer.cpp ++++ b/src/hotspot/share/runtime/synchronizer.cpp +@@ -160,14 +160,14 @@ bool ObjectSynchronizer::quick_notify(oopDesc * obj, Thread * self, bool all) { + if (obj == NULL) return false; // slow-path for invalid obj + const markOop mark = obj->mark(); + +- if (mark->has_locker() && self->is_lock_owned((address)mark->locker())) { ++ if (mark.has_locker() && self->is_lock_owned((address)mark.locker())) { + // Degenerate notify + // stack-locked by caller so by definition the implied waitset is empty. + return true; + } + +- if (mark->has_monitor()) { +- ObjectMonitor * const mon = mark->monitor(); ++ if (mark.has_monitor()) { ++ ObjectMonitor * const mon = mark.monitor(); + assert(mon->object() == obj, "invariant"); + if (mon->owner() != self) return false; // slow-path for IMS exception + +@@ -210,8 +210,8 @@ bool ObjectSynchronizer::quick_enter(oop obj, Thread * Self, + if (obj == NULL) return false; // Need to throw NPE + const markOop mark = obj->mark(); + +- if (mark->has_monitor()) { +- ObjectMonitor * const m = mark->monitor(); ++ if (mark.has_monitor()) { ++ ObjectMonitor * const m = mark.monitor(); + assert(m->object() == obj, "invariant"); + Thread * const owner = (Thread *) m->_owner; + +@@ -273,7 +273,7 @@ void ObjectSynchronizer::fast_enter(Handle obj, BasicLock* lock, + assert(!attempt_rebias, "can not rebias toward VM thread"); + BiasedLocking::revoke_at_safepoint(obj); + } +- assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now"); ++ assert(!obj->mark().has_bias_pattern(), "biases should be revoked by now"); + } + + slow_enter(obj, lock, THREAD); +@@ -283,10 +283,10 @@ void ObjectSynchronizer::fast_exit(oop object, BasicLock* lock, TRAPS) { + markOop mark = object->mark(); + // We cannot check for Biased Locking if we are racing an inflation. + assert(mark == markOopDesc::INFLATING() || +- !mark->has_bias_pattern(), "should not see bias pattern here"); ++ !mark.has_bias_pattern(), "should not see bias pattern here"); + + markOop dhw = lock->displaced_header(); +- if (dhw == NULL) { ++ if (dhw.value() == 0) { + // If the displaced header is NULL, then this exit matches up with + // a recursive enter. No real work to do here except for diagnostics. + #ifndef PRODUCT +@@ -294,10 +294,10 @@ void ObjectSynchronizer::fast_exit(oop object, BasicLock* lock, TRAPS) { + // Only do diagnostics if we are not racing an inflation. Simply + // exiting a recursive enter of a Java Monitor that is being + // inflated is safe; see the has_monitor() comment below. +- assert(!mark->is_neutral(), "invariant"); +- assert(!mark->has_locker() || +- THREAD->is_lock_owned((address)mark->locker()), "invariant"); +- if (mark->has_monitor()) { ++ assert(!mark.is_neutral(), "invariant"); ++ assert(!mark.has_locker() || ++ THREAD->is_lock_owned((address)mark.locker()), "invariant"); ++ if (mark.has_monitor()) { + // The BasicLock's displaced_header is marked as a recursive + // enter and we have an inflated Java Monitor (ObjectMonitor). + // This is a special case where the Java Monitor was inflated +@@ -306,7 +306,7 @@ void ObjectSynchronizer::fast_exit(oop object, BasicLock* lock, TRAPS) { + // Monitor owner's stack and update the BasicLocks because a + // Java Monitor can be asynchronously inflated by a thread that + // does not own the Java Monitor. +- ObjectMonitor * m = mark->monitor(); ++ ObjectMonitor * m = mark.monitor(); + assert(((oop)(m->object()))->mark() == mark, "invariant"); + assert(m->is_entered(THREAD), "invariant"); + } +@@ -315,10 +315,10 @@ void ObjectSynchronizer::fast_exit(oop object, BasicLock* lock, TRAPS) { + return; + } + +- if (mark == (markOop) lock) { ++ if (mark == markOop::from_pointer(lock)) { + // If the object is stack-locked by the current thread, try to + // swing the displaced header from the BasicLock back to the mark. +- assert(dhw->is_neutral(), "invariant"); ++ assert(dhw.is_neutral(), "invariant"); + if (object->cas_set_mark(dhw, mark) == mark) { + TEVENT(fast_exit: release stack-lock); + return; +@@ -338,22 +338,22 @@ void ObjectSynchronizer::fast_exit(oop object, BasicLock* lock, TRAPS) { + // failed in the interpreter/compiler code. + void ObjectSynchronizer::slow_enter(Handle obj, BasicLock* lock, TRAPS) { + markOop mark = obj->mark(); +- assert(!mark->has_bias_pattern(), "should not see bias pattern here"); ++ assert(!mark.has_bias_pattern(), "should not see bias pattern here"); + +- if (mark->is_neutral()) { ++ if (mark.is_neutral()) { + // Anticipate successful CAS -- the ST of the displaced mark must + // be visible <= the ST performed by the CAS. + lock->set_displaced_header(mark); +- if (mark == obj()->cas_set_mark((markOop) lock, mark)) { ++ if (mark == obj()->cas_set_mark(markOop::from_pointer(lock), mark)) { + TEVENT(slow_enter: release stacklock); + return; + } + // Fall through to inflate() ... +- } else if (mark->has_locker() && +- THREAD->is_lock_owned((address)mark->locker())) { +- assert(lock != mark->locker(), "must not re-lock the same lock"); +- assert(lock != (BasicLock*)obj->mark(), "don't relock with same BasicLock"); +- lock->set_displaced_header(NULL); ++ } else if (mark.has_locker() && ++ THREAD->is_lock_owned((address)mark.locker())) { ++ assert(lock != mark.locker(), "must not re-lock the same lock"); ++ assert(lock != (BasicLock*)obj->mark().value(), "don't relock with same BasicLock"); ++ lock->set_displaced_header(markOop::from_pointer(NULL)); + return; + } + +@@ -391,7 +391,7 @@ intptr_t ObjectSynchronizer::complete_exit(Handle obj, TRAPS) { + TEVENT(complete_exit); + if (UseBiasedLocking) { + BiasedLocking::revoke_and_rebias(obj, false, THREAD); +- assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now"); ++ assert(!obj->mark().has_bias_pattern(), "biases should be revoked by now"); + } + + ObjectMonitor* monitor = ObjectSynchronizer::inflate(THREAD, +@@ -406,7 +406,7 @@ void ObjectSynchronizer::reenter(Handle obj, intptr_t recursion, TRAPS) { + TEVENT(reenter); + if (UseBiasedLocking) { + BiasedLocking::revoke_and_rebias(obj, false, THREAD); +- assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now"); ++ assert(!obj->mark().has_bias_pattern(), "biases should be revoked by now"); + } + + ObjectMonitor* monitor = ObjectSynchronizer::inflate(THREAD, +@@ -423,7 +423,7 @@ void ObjectSynchronizer::jni_enter(Handle obj, TRAPS) { + TEVENT(jni_enter); + if (UseBiasedLocking) { + BiasedLocking::revoke_and_rebias(obj, false, THREAD); +- assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now"); ++ assert(!obj->mark().has_bias_pattern(), "biases should be revoked by now"); + } + THREAD->set_current_pending_monitor_is_from_java(false); + ObjectSynchronizer::inflate(THREAD, obj(), inflate_cause_jni_enter)->enter(THREAD); +@@ -438,7 +438,7 @@ void ObjectSynchronizer::jni_exit(oop obj, Thread* THREAD) { + BiasedLocking::revoke_and_rebias(h_obj, false, THREAD); + obj = h_obj(); + } +- assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now"); ++ assert(!obj->mark().has_bias_pattern(), "biases should be revoked by now"); + + ObjectMonitor* monitor = ObjectSynchronizer::inflate(THREAD, + obj, +@@ -479,7 +479,7 @@ ObjectLocker::~ObjectLocker() { + int ObjectSynchronizer::wait(Handle obj, jlong millis, TRAPS) { + if (UseBiasedLocking) { + BiasedLocking::revoke_and_rebias(obj, false, THREAD); +- assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now"); ++ assert(!obj->mark().has_bias_pattern(), "biases should be revoked by now"); + } + if (millis < 0) { + TEVENT(wait - throw IAX); +@@ -502,7 +502,7 @@ int ObjectSynchronizer::wait(Handle obj, jlong millis, TRAPS) { + void ObjectSynchronizer::waitUninterruptibly(Handle obj, jlong millis, TRAPS) { + if (UseBiasedLocking) { + BiasedLocking::revoke_and_rebias(obj, false, THREAD); +- assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now"); ++ assert(!obj->mark().has_bias_pattern(), "biases should be revoked by now"); + } + if (millis < 0) { + TEVENT(wait - throw IAX); +@@ -516,11 +516,11 @@ void ObjectSynchronizer::waitUninterruptibly(Handle obj, jlong millis, TRAPS) { + void ObjectSynchronizer::notify(Handle obj, TRAPS) { + if (UseBiasedLocking) { + BiasedLocking::revoke_and_rebias(obj, false, THREAD); +- assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now"); ++ assert(!obj->mark().has_bias_pattern(), "biases should be revoked by now"); + } + + markOop mark = obj->mark(); +- if (mark->has_locker() && THREAD->is_lock_owned((address)mark->locker())) { ++ if (mark.has_locker() && THREAD->is_lock_owned((address)mark.locker())) { + return; + } + ObjectSynchronizer::inflate(THREAD, +@@ -532,11 +532,11 @@ void ObjectSynchronizer::notify(Handle obj, TRAPS) { + void ObjectSynchronizer::notifyall(Handle obj, TRAPS) { + if (UseBiasedLocking) { + BiasedLocking::revoke_and_rebias(obj, false, THREAD); +- assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now"); ++ assert(!obj->mark().has_bias_pattern(), "biases should be revoked by now"); + } + + markOop mark = obj->mark(); +- if (mark->has_locker() && THREAD->is_lock_owned((address)mark->locker())) { ++ if (mark.has_locker() && THREAD->is_lock_owned((address)mark.locker())) { + return; + } + ObjectSynchronizer::inflate(THREAD, +@@ -583,14 +583,14 @@ static volatile int ForceMonitorScavenge = 0; // Scavenge required and pending + + static markOop ReadStableMark(oop obj) { + markOop mark = obj->mark(); +- if (!mark->is_being_inflated()) { ++ if (!mark.is_being_inflated()) { + return mark; // normal fast-path return + } + + int its = 0; + for (;;) { + markOop mark = obj->mark(); +- if (!mark->is_being_inflated()) { ++ if (!mark.is_being_inflated()) { + return mark; // normal fast-path return + } + +@@ -716,7 +716,7 @@ intptr_t ObjectSynchronizer::FastHashCode(Thread * Self, oop obj) { + // been checked to make sure they can handle a safepoint. The + // added check of the bias pattern is to avoid useless calls to + // thread-local storage. +- if (obj->mark()->has_bias_pattern()) { ++ if (obj->mark().has_bias_pattern()) { + // Handle for oop obj in case of STW safepoint + Handle hobj(Self, obj); + // Relaxing assertion for bug 6320749. +@@ -725,7 +725,7 @@ intptr_t ObjectSynchronizer::FastHashCode(Thread * Self, oop obj) { + "biases should not be seen by VM thread here"); + BiasedLocking::revoke_and_rebias(hobj, false, JavaThread::current()); + obj = hobj(); +- assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now"); ++ assert(!obj->mark().has_bias_pattern(), "biases should be revoked by now"); + } + } + +@@ -744,15 +744,15 @@ intptr_t ObjectSynchronizer::FastHashCode(Thread * Self, oop obj) { + markOop mark = ReadStableMark(obj); + + // object should remain ineligible for biased locking +- assert(!mark->has_bias_pattern(), "invariant"); ++ assert(!mark.has_bias_pattern(), "invariant"); + +- if (mark->is_neutral()) { +- hash = mark->hash(); // this is a normal header ++ if (mark.is_neutral()) { ++ hash = mark.hash(); // this is a normal header + if (hash) { // if it has hash, just return it + return hash; + } + hash = get_next_hash(Self, obj); // allocate a new hash code +- temp = mark->copy_set_hash(hash); // merge the hash code into header ++ temp = mark.copy_set_hash(hash); // merge the hash code into header + // use (machine word version) atomic operation to install the hash + test = obj->cas_set_mark(temp, mark); + if (test == mark) { +@@ -761,19 +761,19 @@ intptr_t ObjectSynchronizer::FastHashCode(Thread * Self, oop obj) { + // If atomic operation failed, we must inflate the header + // into heavy weight monitor. We could add more code here + // for fast path, but it does not worth the complexity. +- } else if (mark->has_monitor()) { +- monitor = mark->monitor(); ++ } else if (mark.has_monitor()) { ++ monitor = mark.monitor(); + temp = monitor->header(); +- assert(temp->is_neutral(), "invariant"); +- hash = temp->hash(); ++ assert(temp.is_neutral(), "invariant"); ++ hash = temp.hash(); + if (hash) { + return hash; + } + // Skip to the following code to reduce code size +- } else if (Self->is_lock_owned((address)mark->locker())) { +- temp = mark->displaced_mark_helper(); // this is a lightweight monitor owned +- assert(temp->is_neutral(), "invariant"); +- hash = temp->hash(); // by current thread, check if the displaced ++ } else if (Self->is_lock_owned((address)mark.locker())) { ++ temp = mark.displaced_mark_helper(); // this is a lightweight monitor owned ++ assert(temp.is_neutral(), "invariant"); ++ hash = temp.hash(); // by current thread, check if the displaced + if (hash) { // header contains hash code + return hash; + } +@@ -792,19 +792,20 @@ intptr_t ObjectSynchronizer::FastHashCode(Thread * Self, oop obj) { + monitor = ObjectSynchronizer::inflate(Self, obj, inflate_cause_hash_code); + // Load displaced header and check it has hash code + mark = monitor->header(); +- assert(mark->is_neutral(), "invariant"); +- hash = mark->hash(); ++ assert(mark.is_neutral(), "invariant"); ++ hash = mark.hash(); + if (hash == 0) { + hash = get_next_hash(Self, obj); +- temp = mark->copy_set_hash(hash); // merge hash code into header +- assert(temp->is_neutral(), "invariant"); +- test = Atomic::cmpxchg(temp, monitor->header_addr(), mark); ++ temp = mark.copy_set_hash(hash); // merge hash code into header ++ assert(temp.is_neutral(), "invariant"); ++ uintptr_t t = Atomic::cmpxchg(temp.value(), (volatile uintptr_t*)monitor->header_addr(), mark.value()); ++ test = markOop(t); + if (test != mark) { + // The only update to the header in the monitor (outside GC) + // is install the hash code. If someone add new usage of + // displaced header, please update this code +- hash = test->hash(); +- assert(test->is_neutral(), "invariant"); ++ hash = test.hash(); ++ assert(test.is_neutral(), "invariant"); + assert(hash != 0, "Trivial unexpected object/monitor header usage."); + } + } +@@ -823,7 +824,7 @@ bool ObjectSynchronizer::current_thread_holds_lock(JavaThread* thread, + Handle h_obj) { + if (UseBiasedLocking) { + BiasedLocking::revoke_and_rebias(h_obj, false, thread); +- assert(!h_obj->mark()->has_bias_pattern(), "biases should be revoked by now"); ++ assert(!h_obj->mark().has_bias_pattern(), "biases should be revoked by now"); + } + + assert(thread == JavaThread::current(), "Can only be called on current thread"); +@@ -832,16 +833,16 @@ bool ObjectSynchronizer::current_thread_holds_lock(JavaThread* thread, + markOop mark = ReadStableMark(obj); + + // Uncontended case, header points to stack +- if (mark->has_locker()) { +- return thread->is_lock_owned((address)mark->locker()); ++ if (mark.has_locker()) { ++ return thread->is_lock_owned((address)mark.locker()); + } + // Contended case, header points to ObjectMonitor (tagged pointer) +- if (mark->has_monitor()) { +- ObjectMonitor* monitor = mark->monitor(); ++ if (mark.has_monitor()) { ++ ObjectMonitor* monitor = mark.monitor(); + return monitor->is_entered(thread) != 0; + } + // Unlocked case, header in place +- assert(mark->is_neutral(), "sanity check"); ++ assert(mark.is_neutral(), "sanity check"); + return false; + } + +@@ -859,10 +860,10 @@ ObjectSynchronizer::LockOwnership ObjectSynchronizer::query_lock_ownership + + // Possible mark states: neutral, biased, stack-locked, inflated + +- if (UseBiasedLocking && h_obj()->mark()->has_bias_pattern()) { ++ if (UseBiasedLocking && h_obj()->mark().has_bias_pattern()) { + // CASE: biased + BiasedLocking::revoke_and_rebias(h_obj, false, self); +- assert(!h_obj->mark()->has_bias_pattern(), ++ assert(!h_obj->mark().has_bias_pattern(), + "biases should be revoked by now"); + } + +@@ -871,23 +872,23 @@ ObjectSynchronizer::LockOwnership ObjectSynchronizer::query_lock_ownership + markOop mark = ReadStableMark(obj); + + // CASE: stack-locked. Mark points to a BasicLock on the owner's stack. +- if (mark->has_locker()) { +- return self->is_lock_owned((address)mark->locker()) ? ++ if (mark.has_locker()) { ++ return self->is_lock_owned((address)mark.locker()) ? + owner_self : owner_other; + } + + // CASE: inflated. Mark (tagged pointer) points to an objectMonitor. + // The Object:ObjectMonitor relationship is stable as long as we're + // not at a safepoint. +- if (mark->has_monitor()) { +- void * owner = mark->monitor()->_owner; ++ if (mark.has_monitor()) { ++ void * owner = mark.monitor()->_owner; + if (owner == NULL) return owner_none; + return (owner == self || + self->is_lock_owned((address)owner)) ? owner_self : owner_other; + } + + // CASE: neutral +- assert(mark->is_neutral(), "sanity check"); ++ assert(mark.is_neutral(), "sanity check"); + return owner_none; // it's unlocked + } + +@@ -899,7 +900,7 @@ JavaThread* ObjectSynchronizer::get_lock_owner(ThreadsList * t_list, Handle h_ob + } else { + BiasedLocking::revoke_and_rebias(h_obj, false, JavaThread::current()); + } +- assert(!h_obj->mark()->has_bias_pattern(), "biases should be revoked by now"); ++ assert(!h_obj->mark().has_bias_pattern(), "biases should be revoked by now"); + } + + oop obj = h_obj(); +@@ -908,13 +909,13 @@ JavaThread* ObjectSynchronizer::get_lock_owner(ThreadsList * t_list, Handle h_ob + markOop mark = ReadStableMark(obj); + + // Uncontended case, header points to stack +- if (mark->has_locker()) { +- owner = (address) mark->locker(); ++ if (mark.has_locker()) { ++ owner = (address) mark.locker(); + } + + // Contended case, header points to ObjectMonitor (tagged pointer) +- if (mark->has_monitor()) { +- ObjectMonitor* monitor = mark->monitor(); ++ if (mark.has_monitor()) { ++ ObjectMonitor* monitor = mark.monitor(); + assert(monitor != NULL, "monitor should be non-null"); + owner = (address) monitor->owner(); + } +@@ -927,7 +928,7 @@ JavaThread* ObjectSynchronizer::get_lock_owner(ThreadsList * t_list, Handle h_ob + // Unlocked case, header in place + // Cannot have assertion since this object may have been + // locked by another thread when reaching here. +- // assert(mark->is_neutral(), "sanity check"); ++ // assert(mark.is_neutral(), "sanity check"); + + return NULL; + } +@@ -1374,10 +1375,10 @@ static void post_monitor_inflate_event(EventJavaMonitorInflate* event, + // Fast path code shared by multiple functions + ObjectMonitor* ObjectSynchronizer::inflate_helper(oop obj) { + markOop mark = obj->mark(); +- if (mark->has_monitor()) { +- assert(ObjectSynchronizer::verify_objmon_isinpool(mark->monitor()), "monitor is invalid"); +- assert(mark->monitor()->header()->is_neutral(), "monitor must record a good object header"); +- return mark->monitor(); ++ if (mark.has_monitor()) { ++ assert(ObjectSynchronizer::verify_objmon_isinpool(mark.monitor()), "monitor is invalid"); ++ assert(mark.monitor()->header().is_neutral(), "monitor must record a good object header"); ++ return mark.monitor(); + } + return ObjectSynchronizer::inflate(Thread::current(), + obj, +@@ -1397,7 +1398,7 @@ ObjectMonitor* ObjectSynchronizer::inflate(Thread * Self, + + for (;;) { + const markOop mark = object->mark(); +- assert(!mark->has_bias_pattern(), "invariant"); ++ assert(!mark.has_bias_pattern(), "invariant"); + + // The mark can be in one of the following states: + // * Inflated - just return +@@ -1407,9 +1408,9 @@ ObjectMonitor* ObjectSynchronizer::inflate(Thread * Self, + // * BIASED - Illegal. We should never see this + + // CASE: inflated +- if (mark->has_monitor()) { +- ObjectMonitor * inf = mark->monitor(); +- assert(inf->header()->is_neutral(), "invariant"); ++ if (mark.has_monitor()) { ++ ObjectMonitor * inf = mark.monitor(); ++ assert(inf->header().is_neutral(), "invariant"); + assert(inf->object() == object, "invariant"); + assert(ObjectSynchronizer::verify_objmon_isinpool(inf), "monitor is invalid"); + return inf; +@@ -1446,7 +1447,7 @@ ObjectMonitor* ObjectSynchronizer::inflate(Thread * Self, + // before or after the CAS(INFLATING) operation. + // See the comments in omAlloc(). + +- if (mark->has_locker()) { ++ if (mark.has_locker()) { + ObjectMonitor * m = omAlloc(Self); + // Optimistically prepare the objectmonitor - anticipate successful CAS + // We do this before the CAS in order to minimize the length of time +@@ -1484,7 +1485,7 @@ ObjectMonitor* ObjectSynchronizer::inflate(Thread * Self, + // drop the lock (restoring the header from the basiclock to the object) + // while inflation is in-progress. This protocol avoids races that might + // would otherwise permit hashCode values to change or "flicker" for an object. +- // Critically, while object->mark is 0 mark->displaced_mark_helper() is stable. ++ // Critically, while object->mark is 0 mark.displaced_mark_helper() is stable. + // 0 serves as a "BUSY" inflate-in-progress indicator. + + +@@ -1492,18 +1493,18 @@ ObjectMonitor* ObjectSynchronizer::inflate(Thread * Self, + // The owner can't die or unwind past the lock while our INFLATING + // object is in the mark. Furthermore the owner can't complete + // an unlock on the object, either. +- markOop dmw = mark->displaced_mark_helper(); +- assert(dmw->is_neutral(), "invariant"); ++ markOop dmw = mark.displaced_mark_helper(); ++ assert(dmw.is_neutral(), "invariant"); + + // Setup monitor fields to proper values -- prepare the monitor + m->set_header(dmw); + +- // Optimization: if the mark->locker stack address is associated ++ // Optimization: if the mark.locker stack address is associated + // with this thread we could simply set m->_owner = Self. + // Note that a thread can inflate an object + // that it has stack-locked -- as might happen in wait() -- directly + // with CAS. That is, we can avoid the xchg-NULL .... ST idiom. +- m->set_owner(mark->locker()); ++ m->set_owner(mark.locker()); + m->set_object(object); + // TODO-FIXME: assert BasicLock->dhw != 0. + +@@ -1520,7 +1521,7 @@ ObjectMonitor* ObjectSynchronizer::inflate(Thread * Self, + if (object->is_instance()) { + ResourceMark rm; + log_debug(monitorinflation)("Inflating object " INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s", +- p2i(object), p2i(object->mark()), ++ p2i(object), object->mark().value(), + object->klass()->external_name()); + } + } +@@ -1540,7 +1541,7 @@ ObjectMonitor* ObjectSynchronizer::inflate(Thread * Self, + // An inflateTry() method that we could call from fast_enter() and slow_enter() + // would be useful. + +- assert(mark->is_neutral(), "invariant"); ++ assert(mark.is_neutral(), "invariant"); + ObjectMonitor * m = omAlloc(Self); + // prepare m for installation - set monitor to initial state + m->Recycle(); +@@ -1571,7 +1572,7 @@ ObjectMonitor* ObjectSynchronizer::inflate(Thread * Self, + if (object->is_instance()) { + ResourceMark rm; + log_debug(monitorinflation)("Inflating object " INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s", +- p2i(object), p2i(object->mark()), ++ p2i(object), object->mark().value(), + object->klass()->external_name()); + } + } +@@ -1623,8 +1624,8 @@ bool ObjectSynchronizer::deflate_monitor(ObjectMonitor* mid, oop obj, + bool deflated; + // Normal case ... The monitor is associated with obj. + guarantee(obj->mark() == markOopDesc::encode(mid), "invariant"); +- guarantee(mid == obj->mark()->monitor(), "invariant"); +- guarantee(mid->header()->is_neutral(), "invariant"); ++ guarantee(mid == obj->mark().monitor(), "invariant"); ++ guarantee(mid->header().is_neutral(), "invariant"); + + if (mid->is_busy()) { + if (ClearResponsibleAtSTW) mid->_Responsible = NULL; +@@ -1639,7 +1640,7 @@ bool ObjectSynchronizer::deflate_monitor(ObjectMonitor* mid, oop obj, + ResourceMark rm; + log_debug(monitorinflation)("Deflating object " INTPTR_FORMAT " , " + "mark " INTPTR_FORMAT " , type %s", +- p2i(obj), p2i(obj->mark()), ++ p2i(obj), obj->mark().value(), + obj->klass()->external_name()); + } + } +diff --git a/src/hotspot/share/runtime/vframe.cpp b/src/hotspot/share/runtime/vframe.cpp +index cca364217..7dfb2e4a2 100644 +--- a/src/hotspot/share/runtime/vframe.cpp ++++ b/src/hotspot/share/runtime/vframe.cpp +@@ -222,7 +222,7 @@ void javaVFrame::print_lock_info_on(outputStream* st, int frame_count) { + if (monitor->owner() != NULL) { + // the monitor is associated with an object, i.e., it is locked + +- markOop mark = NULL; ++ markOop mark = markOop::zero(); + const char *lock_state = "locked"; // assume we have the monitor locked + if (!found_first_monitor && frame_count == 0) { + // If this is the first frame and we haven't found an owned +@@ -231,17 +231,17 @@ void javaVFrame::print_lock_info_on(outputStream* st, int frame_count) { + // an inflated monitor that is first on the monitor list in + // the first frame can block us on a monitor enter. + mark = monitor->owner()->mark(); +- if (mark->has_monitor() && ++ if (mark.has_monitor() && + ( // we have marked ourself as pending on this monitor +- mark->monitor() == thread()->current_pending_monitor() || ++ mark.monitor() == thread()->current_pending_monitor() || + // we are not the owner of this monitor +- !mark->monitor()->is_entered(thread()) ++ !mark.monitor()->is_entered(thread()) + )) { + lock_state = "waiting to lock"; + } else { + // We own the monitor which is not as interesting so + // disable the extra printing below. +- mark = NULL; ++ mark = markOop::zero(); + } + } else if (frame_count != 0) { + // This is not the first frame so we either own this monitor +@@ -250,23 +250,23 @@ void javaVFrame::print_lock_info_on(outputStream* st, int frame_count) { + // numbered frame on the stack, we have to check all the + // monitors on the list for this frame. + mark = monitor->owner()->mark(); +- if (mark->has_monitor() && ++ if (mark.has_monitor() && + ( // we have marked ourself as pending on this monitor +- mark->monitor() == thread()->current_pending_monitor() || ++ mark.monitor() == thread()->current_pending_monitor() || + // we are not the owner of this monitor +- !mark->monitor()->is_entered(thread()) ++ !mark.monitor()->is_entered(thread()) + )) { + lock_state = "waiting to re-lock in wait()"; + } else { + // We own the monitor which is not as interesting so + // disable the extra printing below. +- mark = NULL; ++ mark = markOop::zero(); + } + } + print_locked_object_class_name(st, Handle(THREAD, monitor->owner()), lock_state); +- if (ObjectMonitor::Knob_Verbose && mark != NULL) { ++ if (ObjectMonitor::Knob_Verbose && mark.to_pointer() != NULL) { + st->print("\t- lockbits="); +- mark->print_on(st); ++ mark.print_on(st); + st->cr(); + } + +diff --git a/src/hotspot/share/runtime/vmStructs.cpp b/src/hotspot/share/runtime/vmStructs.cpp +index adce6da6a..b161a6ec1 100644 +--- a/src/hotspot/share/runtime/vmStructs.cpp ++++ b/src/hotspot/share/runtime/vmStructs.cpp +@@ -1285,7 +1285,6 @@ typedef PaddedEnd PaddedObjectMonitor; + declare_type(arrayOopDesc, oopDesc) \ + declare_type(objArrayOopDesc, arrayOopDesc) \ + declare_type(instanceOopDesc, oopDesc) \ +- declare_type(markOopDesc, oopDesc) \ + \ + /**************************************************/ \ + /* MetadataOopDesc hierarchy (NOTE: some missing) */ \ +@@ -1325,7 +1324,6 @@ typedef PaddedEnd PaddedObjectMonitor; + /* Oops */ \ + /********/ \ + \ +- declare_oop_type(markOop) \ + declare_oop_type(objArrayOop) \ + declare_oop_type(oop) \ + declare_oop_type(narrowOop) \ +@@ -1983,6 +1981,8 @@ typedef PaddedEnd PaddedObjectMonitor; + declare_type(BitMapView, BitMap) \ + \ + declare_integer_type(AccessFlags) /* FIXME: wrong type (not integer) */\ ++ declare_integer_type(markOop) \ ++ declare_type(markOopDesc, markOop) \ + declare_toplevel_type(address) /* FIXME: should this be an integer type? */\ + declare_integer_type(BasicType) /* FIXME: wrong type (not integer) */\ + JVMTI_ONLY(declare_toplevel_type(BreakpointInfo)) \ +-- +2.54.0 + diff --git a/pkgs/development/compilers/openjdk/generic.nix b/pkgs/development/compilers/openjdk/generic.nix index 65bed061789e..7d123cb1fdf9 100644 --- a/pkgs/development/compilers/openjdk/generic.nix +++ b/pkgs/development/compilers/openjdk/generic.nix @@ -234,6 +234,9 @@ stdenv.mkDerivation (finalAttrs: { else ./8/patches/swing-use-gtk-jdk8.patch ) + ] + ++ lib.optionals (featureVersion == "11") [ + ./11/patches/fix-oopdesc-ptr-alignment-ub.patch ]; strictDeps = true; diff --git a/pkgs/development/interpreters/python/default.nix b/pkgs/development/interpreters/python/default.nix index 5ce6197655c6..53e73fa79c49 100644 --- a/pkgs/development/interpreters/python/default.nix +++ b/pkgs/development/interpreters/python/default.nix @@ -92,9 +92,9 @@ major = "3"; minor = "15"; patch = "0"; - suffix = "b2"; + suffix = "b3"; }; - hash = "sha256-0U9HSrZ56QvHNLAv9YRHtuyZqCGvYdb/DB2g+G40GnE="; + hash = "sha256-apNa4jSmfmVJiUNzsM/rg2EYLQOyFEIyiulZirdCISc="; inherit passthruFun; }; diff --git a/pkgs/development/rocq-modules/hierarchy-builder/default.nix b/pkgs/development/rocq-modules/hierarchy-builder/default.nix index 84f8c41c91ca..25e0621aab3e 100644 --- a/pkgs/development/rocq-modules/hierarchy-builder/default.nix +++ b/pkgs/development/rocq-modules/hierarchy-builder/default.nix @@ -17,10 +17,12 @@ let in with lib.versions; lib.switch rocq-core.rocq-version [ + (case (range "9.0" "9.2") "1.10.3") (case (range "9.0" "9.1") "1.10.2") (case (range "9.0" "9.1") "1.10.0") (case (range "9.0" "9.1") "1.9.1") ] null; + release."1.10.3".hash = "sha256-y13KxzLulIu39Ci3aMc1cZG4tw3LL2ab7U9snI6jrXc="; release."1.10.2".sha256 = "sha256-Uzni9qrYQP45Tr+JkHs0BuRARwmWSMwA/iHhIzkolxc="; release."1.10.0".sha256 = "sha256-c52nS8I0tia7Q8lZTFJyHVPVabW9xv55m7w6B7y3+e8="; release."1.9.1".sha256 = "sha256-AiS0ezMyfIYlXnuNsVLz1GlKQZzJX+ilkrKkbo0GrF0="; diff --git a/pkgs/development/tools/godot/4.7/default.nix b/pkgs/development/tools/godot/4.7/default.nix new file mode 100644 index 000000000000..81ccf416ba37 --- /dev/null +++ b/pkgs/development/tools/godot/4.7/default.nix @@ -0,0 +1,11 @@ +{ + version = "4.7-stable"; + hash = "sha256-ur9bQ6DTUxeTRqFITAgjpyoOEHgYnjEAQY3sSNNtr0c="; + default = { + exportTemplatesHash = "sha256-lxRFncBxkHwPPV8X1gj69p582iEzH8XTnEUD/6Tpnuw="; + }; + mono = { + exportTemplatesHash = "sha256-TAKguZrZxbwkPC55RoYo2z34k1DZ24/JlZiPadEm4Gk="; + nugetDeps = ./deps.json; + }; +} diff --git a/pkgs/development/tools/godot/4.7/deps.json b/pkgs/development/tools/godot/4.7/deps.json new file mode 100644 index 000000000000..ca271739dfb7 --- /dev/null +++ b/pkgs/development/tools/godot/4.7/deps.json @@ -0,0 +1,1297 @@ +[ + { + "pname": "coverlet.collector", + "version": "6.0.4", + "hash": "sha256-ieiUl7G5pVKQ4V6rxhEe0ehep0/u1RBD3EAI63AQTI0=" + }, + { + "pname": "DiffPlex", + "version": "1.7.2", + "hash": "sha256-Vsn81duAmPIPkR40h5bEz7hgtF5Kt5nAAGhQZrQbqxE=" + }, + { + "pname": "Humanizer.Core", + "version": "2.14.1", + "hash": "sha256-EXvojddPu+9JKgOG9NSQgUTfWq1RpOYw7adxDPKDJ6o=" + }, + { + "pname": "Humanizer.Core", + "version": "2.2.0", + "hash": "sha256-5Q6oRaV8wHPONHreKvB74VjV2FW36mwC3n+05It5vyI=" + }, + { + "pname": "JetBrains.Annotations", + "version": "2019.1.3", + "hash": "sha256-gn2Z7yANT+2tnK+qbOA2PviRf1M1VtvamABGajgGC6E=" + }, + { + "pname": "JetBrains.Lifetimes", + "version": "2024.3.0", + "hash": "sha256-EkSiuJuLJSip+zw9RHdHSLRFOZuCWWWn2zUY3aIqV1s=" + }, + { + "pname": "JetBrains.RdFramework", + "version": "2024.3.0", + "hash": "sha256-JtaT4VWDEqMcZ2Sy3yBTCmBalJ5+Qy9Mf84ns7PE2WE=" + }, + { + "pname": "JetBrains.Rider.PathLocator", + "version": "1.0.12", + "hash": "sha256-4VmTLbDa+KzFCE/pywgzMijLvgwqt9/nSXvLGg4w17g=" + }, + { + "pname": "Microsoft.Bcl.AsyncInterfaces", + "version": "1.1.1", + "hash": "sha256-fAcX4sxE0veWM1CZBtXR/Unky+6sE33yrV7ohrWGKig=" + }, + { + "pname": "Microsoft.Bcl.AsyncInterfaces", + "version": "5.0.0", + "hash": "sha256-bpJjcJSUSZH0GeOXoZI12xUQOf2SRtxG7sZV0dWS5TI=" + }, + { + "pname": "Microsoft.Bcl.AsyncInterfaces", + "version": "7.0.0", + "hash": "sha256-1e031E26iraIqun84ad0fCIR4MJZ1hcQo4yFN+B7UfE=" + }, + { + "pname": "Microsoft.Bcl.Cryptography", + "version": "9.0.10", + "hash": "sha256-mQt77cIDoHaGi+dWmRGMmIcTln3qs+6v95HwinVYqEw=" + }, + { + "pname": "Microsoft.Build", + "version": "15.1.548", + "hash": "sha256-v6rTGfytT6QwXkp97T6vQurVi8oDzZmIOn3/cHYuC6s=" + }, + { + "pname": "Microsoft.Build.Framework", + "version": "15.1.548", + "hash": "sha256-0U6XANGftKOS9Owx1x8hOe5GOdqx2uwQwuAsVHw297g=" + }, + { + "pname": "Microsoft.Build.Locator", + "version": "1.2.6", + "hash": "sha256-Z5wzSnsGbbJe3nvj6kAAv6KhYMK1H3Mktn4ugflpzuY=" + }, + { + "pname": "Microsoft.Build.NoTargets", + "version": "3.7.56", + "hash": "sha256-eL1PHJ2+sAdV7nKeXt02w8xc0s6sVv29pFpDok8JZjE=" + }, + { + "pname": "Microsoft.CodeAnalysis.Analyzer.Testing", + "version": "1.1.2", + "hash": "sha256-NeOzfN/9WiX/GsZicQ+oDUuPrZgrxTcP8w7kszAKaaY=" + }, + { + "pname": "Microsoft.CodeAnalysis.Analyzers", + "version": "1.0.0", + "hash": "sha256-40uYDx51I8gbyvIaCgo8HIsCoe1NjzQ1sCPb96gpeOs=" + }, + { + "pname": "Microsoft.CodeAnalysis.Analyzers", + "version": "3.0.0", + "hash": "sha256-KDbCfsBWSJ5ohEXUKp1s1LX9xA2NPvXE/xVzj68EdC0=" + }, + { + "pname": "Microsoft.CodeAnalysis.Analyzers", + "version": "3.3.2", + "hash": "sha256-pDeaMqX7a01Hp1Qd9P/y/B2rEGAv2eIY0Ld/klBZW5g=" + }, + { + "pname": "Microsoft.CodeAnalysis.Analyzers", + "version": "3.3.4", + "hash": "sha256-qDzTfZBSCvAUu9gzq2k+LOvh6/eRvJ9++VCNck/ZpnE=" + }, + { + "pname": "Microsoft.CodeAnalysis.CodeFix.Testing", + "version": "1.1.2", + "hash": "sha256-6l7tvU19JoNf/OXxKWSeypB13y9PBto0DwqtmHUUGXo=" + }, + { + "pname": "Microsoft.CodeAnalysis.Common", + "version": "1.0.1", + "hash": "sha256-jjWtdrHSISgBF1m94P0DsVbQa4YxKnf2CWRWYHQLTG8=" + }, + { + "pname": "Microsoft.CodeAnalysis.Common", + "version": "3.11.0", + "hash": "sha256-lOW5q1kAAk+Wpweb9TaZ1LztWzAODt9yZKe6SN5rkV8=" + }, + { + "pname": "Microsoft.CodeAnalysis.Common", + "version": "3.8.0", + "hash": "sha256-3G9vSc/gHH7FWgOySLTut1+eEaf3H66qcPOvNPLOx4o=" + }, + { + "pname": "Microsoft.CodeAnalysis.Common", + "version": "4.11.0", + "hash": "sha256-cX/xgM0VmS+Bsu63KZk2ofjFOOy1mzI+CCVEY6kI+Qk=" + }, + { + "pname": "Microsoft.CodeAnalysis.Common", + "version": "4.8.0", + "hash": "sha256-3IEinVTZq6/aajMVA8XTRO3LTIEt0PuhGyITGJLtqz4=" + }, + { + "pname": "Microsoft.CodeAnalysis.CSharp", + "version": "3.11.0", + "hash": "sha256-AVFv1c6eMi5Jc6GXyL2P3WSs9YTOs3hPO7iGq9tZJsA=" + }, + { + "pname": "Microsoft.CodeAnalysis.CSharp", + "version": "4.11.0", + "hash": "sha256-E9jEOjp9g/CFecsc5/QfRKOPXMRpSw0Tf79XsRgL+Mk=" + }, + { + "pname": "Microsoft.CodeAnalysis.CSharp", + "version": "4.8.0", + "hash": "sha256-MmOnXJvd/ezs5UPcqyGLnbZz5m+VedpRfB+kFZeeqkU=" + }, + { + "pname": "Microsoft.CodeAnalysis.CSharp.Analyzer.Testing", + "version": "1.1.2", + "hash": "sha256-AT5AgpmG9yZ8EjFd23ZlWZwC0E7SvzNwe83yAayp3wA=" + }, + { + "pname": "Microsoft.CodeAnalysis.CSharp.Analyzer.Testing.XUnit", + "version": "1.1.2", + "hash": "sha256-zIjddo1+8ZRANO2aJNPCbtDhNyf6RO7gkkyrAuVLk70=" + }, + { + "pname": "Microsoft.CodeAnalysis.CSharp.CodeFix.Testing", + "version": "1.1.2", + "hash": "sha256-aJyBbJwbopYtAY8peCCNBHrqnV93WU+u4K2G2fTvOWQ=" + }, + { + "pname": "Microsoft.CodeAnalysis.CSharp.CodeFix.Testing.XUnit", + "version": "1.1.2", + "hash": "sha256-7VlXQyC/CbEnUY4UDIcAt48mgWSEzHZFXHc6FDhbEa4=" + }, + { + "pname": "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing", + "version": "1.1.2", + "hash": "sha256-WkdcHsqrFQnXEkcuyWPIPybY25QDzpMEem9KflPwFn0=" + }, + { + "pname": "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.XUnit", + "version": "1.1.2", + "hash": "sha256-wYCDZopLucktDQpzACb/BTj+t4arpFuqUEAKxfjLk7U=" + }, + { + "pname": "Microsoft.CodeAnalysis.CSharp.Workspaces", + "version": "3.11.0", + "hash": "sha256-4WQgwOdmKbCMfT2c4K+5ZkErU3zkRboJO0ORHhnUvpo=" + }, + { + "pname": "Microsoft.CodeAnalysis.CSharp.Workspaces", + "version": "4.8.0", + "hash": "sha256-WNzc+6mKqzPviOI0WMdhKyrWs8u32bfGj2XwmfL7bwE=" + }, + { + "pname": "Microsoft.CodeAnalysis.SourceGenerators.Testing", + "version": "1.1.2", + "hash": "sha256-5npL4J8jxcBTmNBT9k3CNeGT0lIWfmWBVXwzEiqRypg=" + }, + { + "pname": "Microsoft.CodeAnalysis.Testing.Verifiers.XUnit", + "version": "1.1.2", + "hash": "sha256-lwRXcej7nA6sa/Ss4HwDBgiMG3NTBx9peiLxn4l0Wrk=" + }, + { + "pname": "Microsoft.CodeAnalysis.Workspaces.Common", + "version": "1.0.1", + "hash": "sha256-/SYPkq5LhOoEWi+rcBZDyQL2U0cQk2YrykNJODrRLVs=" + }, + { + "pname": "Microsoft.CodeAnalysis.Workspaces.Common", + "version": "3.11.0", + "hash": "sha256-mkJ/pkf7x7kQ2NngYl8yOlEwJIEjphL84KyUC5vEKh4=" + }, + { + "pname": "Microsoft.CodeAnalysis.Workspaces.Common", + "version": "3.8.0", + "hash": "sha256-3D7xV3V1WsUU9OMMEOj+z9GouCDKXSBC4Z/Szs/OcWE=" + }, + { + "pname": "Microsoft.CodeAnalysis.Workspaces.Common", + "version": "4.8.0", + "hash": "sha256-X8R4SpWVO/gpip5erVZf5jCCx8EX3VzIRtNrQiLDIoM=" + }, + { + "pname": "Microsoft.CodeCoverage", + "version": "18.0.0", + "hash": "sha256-1RNxheCYASMusDC48BXtaO3MhnInw15JVfjfLM1VMGA=" + }, + { + "pname": "Microsoft.Composition", + "version": "1.0.27", + "hash": "sha256-G/3p3zxOWC8HqLt7Ll5cqN7507F6N/G6G/HzKazQRdE=" + }, + { + "pname": "Microsoft.NET.Test.Sdk", + "version": "18.0.0", + "hash": "sha256-9iW+9mvMeZgDXwSoR08bnvRNsN4jT8OVWcjq3lcE+cs=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "1.0.1", + "hash": "sha256-mZotlGZqtrqDSoBrZhsxFe6fuOv5/BIo0w2Z2x0zVAU=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "1.1.0", + "hash": "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "2.0.0", + "hash": "sha256-IEvBk6wUXSdyCnkj6tHahOJv290tVVT8tyemYcR0Yro=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "2.1.2", + "hash": "sha256-gYQQO7zsqG+OtN4ywYQyfsiggS2zmxw4+cPXlK+FB5Q=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "5.0.0", + "hash": "sha256-LIcg1StDcQLPOABp4JRXIs837d7z0ia6+++3SF3jl1c=" + }, + { + "pname": "Microsoft.NETCore.Targets", + "version": "1.0.1", + "hash": "sha256-lxxw/Gy32xHi0fLgFWNj4YTFBSBkjx5l6ucmbTyf7V4=" + }, + { + "pname": "Microsoft.NETCore.Targets", + "version": "1.1.0", + "hash": "sha256-0AqQ2gMS8iNlYkrD+BxtIg7cXMnr9xZHtKAuN4bjfaQ=" + }, + { + "pname": "Microsoft.NETFramework.ReferenceAssemblies", + "version": "1.0.0", + "hash": "sha256-6faPQ4jaFY3OGGVk3lZKW+DEZaIOBZ/wHqbiDTsRR1k=" + }, + { + "pname": "Microsoft.NETFramework.ReferenceAssemblies.net461", + "version": "1.0.0", + "hash": "sha256-oS7sUMzKBkLmhggqbI6eBqb1OPAipH0TDTaDaBixcwM=" + }, + { + "pname": "Microsoft.TestPlatform.ObjectModel", + "version": "18.0.0", + "hash": "sha256-O/ivHdoIO+q1n0byJ9OZO4quOqACOD3K3Qm00wfhuZk=" + }, + { + "pname": "Microsoft.TestPlatform.TestHost", + "version": "18.0.0", + "hash": "sha256-qAIX2Rqxrnh1xaYRjCbkkvvMm407oyKihqyVjURX5wY=" + }, + { + "pname": "Microsoft.VisualStudio.Composition", + "version": "16.1.8", + "hash": "sha256-yFT4t3Uk31R5EPdAxxsTAmRuiv58MlYoYL4JT1ywlHQ=" + }, + { + "pname": "Microsoft.VisualStudio.Composition.NetFxAttributes", + "version": "16.1.8", + "hash": "sha256-FFemIG+m8RWUPo5W+kCHPh5Yn4fGS+tpjGiQTcT0sAE=" + }, + { + "pname": "Microsoft.VisualStudio.SolutionPersistence", + "version": "1.0.52", + "hash": "sha256-KZGPtOXe6Hv8RrkcsgoLKTRyaCScIpQEa2NhNB3iOXw=" + }, + { + "pname": "Microsoft.VisualStudio.Validation", + "version": "15.0.82", + "hash": "sha256-7JFaA/HZHVjsEtTh/iHDRLi5RcuA39KKvvCkuI4JQFc=" + }, + { + "pname": "Microsoft.Win32.Primitives", + "version": "4.0.1", + "hash": "sha256-B4t5El/ViBdxALMcpZulewc4j/3SIXf71HhJWhm4Ctk=" + }, + { + "pname": "Microsoft.Win32.Primitives", + "version": "4.3.0", + "hash": "sha256-mBNDmPXNTW54XLnPAUwBRvkIORFM7/j0D0I2SyQPDEg=" + }, + { + "pname": "Microsoft.Win32.Registry", + "version": "4.0.0", + "hash": "sha256-M/06F/Z2wTHCh4pZOgtCjUGLD1FJXEJKCmzOeFMl7uo=" + }, + { + "pname": "Microsoft.Win32.Registry", + "version": "5.0.0", + "hash": "sha256-9kylPGfKZc58yFqNKa77stomcoNnMeERXozWJzDcUIA=" + }, + { + "pname": "NETStandard.Library", + "version": "1.6.1", + "hash": "sha256-iNan1ix7RtncGWC9AjAZ2sk70DoxOsmEOgQ10fXm4Pw=" + }, + { + "pname": "NETStandard.Library", + "version": "2.0.3", + "hash": "sha256-Prh2RPebz/s8AzHb2sPHg3Jl8s31inv9k+Qxd293ybo=" + }, + { + "pname": "Newtonsoft.Json", + "version": "13.0.1", + "hash": "sha256-K2tSVW4n4beRPzPu3rlVaBEMdGvWSv/3Q1fxaDh4Mjo=" + }, + { + "pname": "Newtonsoft.Json", + "version": "13.0.3", + "hash": "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc=" + }, + { + "pname": "NuGet.Common", + "version": "6.3.4", + "hash": "sha256-GDzEyx9/wdVOUAri94uoDjChmfDnBhI90nBfzoHarts=" + }, + { + "pname": "NuGet.Configuration", + "version": "6.3.4", + "hash": "sha256-qXIONIKcCIXJUmNJQs7MINQ18qIEUByTtW5xsORoZoc=" + }, + { + "pname": "NuGet.Frameworks", + "version": "6.12.1", + "hash": "sha256-GGpkbas+PNLx35vvr3nyAVz5lY/aeoMx6qjmT368Lpg=" + }, + { + "pname": "NuGet.Frameworks", + "version": "6.3.4", + "hash": "sha256-zqogus3HXQYSiqfnhVH2jd2VZXa+uTsmaw/uwD8dlgY=" + }, + { + "pname": "NuGet.Packaging", + "version": "6.3.4", + "hash": "sha256-1LKM5vgfNKn8v2LcqialwmcynACISR57q13n7I2lQbU=" + }, + { + "pname": "NuGet.Protocol", + "version": "6.3.4", + "hash": "sha256-j3L4bDzM+0/U4dm9q914DNpOzPpOPWhaolfOFKosdAQ=" + }, + { + "pname": "NuGet.Resolver", + "version": "6.3.4", + "hash": "sha256-rXYXgdJMtwne3skk4jMgqyZlwh3QCTX9hIHvvXafxUM=" + }, + { + "pname": "NuGet.Versioning", + "version": "6.3.4", + "hash": "sha256-6CMYVQeGfXu+xner3T3mgl/iQfXiYixoHizmrNA6bvQ=" + }, + { + "pname": "ReflectionAnalyzers", + "version": "0.1.22-dev", + "hash": "sha256-NA/pyCCzzIewVr6IfZtFQjR5lOBnBdSzYj5SzgsBFvw=" + }, + { + "pname": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-LXUPLX3DJxsU1Pd3UwjO1PO9NM2elNEDXeu2Mu/vNps=" + }, + { + "pname": "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-qeSqaUI80+lqw5MK4vMpmO0CZaqrmYktwp6L+vQAb0I=" + }, + { + "pname": "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-SrHqT9wrCBsxILWtaJgGKd6Odmxm8/Mh7Kh0CUkZVzA=" + }, + { + "pname": "runtime.native.System", + "version": "4.0.0", + "hash": "sha256-bmaM0ovT4X4aqDJOR255Yda/u3fmHZskU++lMnsy894=" + }, + { + "pname": "runtime.native.System", + "version": "4.3.0", + "hash": "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y=" + }, + { + "pname": "runtime.native.System.IO.Compression", + "version": "4.1.0", + "hash": "sha256-085JrZxNEwIHdBWKKKFsh1JzpF0AblvrUsz5T8kH4jQ=" + }, + { + "pname": "runtime.native.System.IO.Compression", + "version": "4.3.0", + "hash": "sha256-DWnXs4vlKoU6WxxvCArTJupV6sX3iBbZh8SbqfHace8=" + }, + { + "pname": "runtime.native.System.Net.Http", + "version": "4.3.0", + "hash": "sha256-c556PyheRwpYhweBjSfIwEyZHnAUB8jWioyKEcp/2dg=" + }, + { + "pname": "runtime.native.System.Security.Cryptography.Apple", + "version": "4.3.0", + "hash": "sha256-2IhBv0i6pTcOyr8FFIyfPEaaCHUmJZ8DYwLUwJ+5waw=" + }, + { + "pname": "runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-Jy01KhtcCl2wjMpZWH+X3fhHcVn+SyllWFY8zWlz/6I=" + }, + { + "pname": "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-wyv00gdlqf8ckxEdV7E+Ql9hJIoPcmYEuyeWb5Oz3mM=" + }, + { + "pname": "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-zi+b4sCFrA9QBiSGDD7xPV27r3iHGlV99gpyVUjRmc4=" + }, + { + "pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple", + "version": "4.3.0", + "hash": "sha256-serkd4A7F6eciPiPJtUyJyxzdAtupEcWIZQ9nptEzIM=" + }, + { + "pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-gybQU6mPgaWV3rBG2dbH6tT3tBq8mgze3PROdsuWnX0=" + }, + { + "pname": "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-VsP72GVveWnGUvS/vjOQLv1U80H2K8nZ4fDAmI61Hm4=" + }, + { + "pname": "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-4yKGa/IrNCKuQ3zaDzILdNPD32bNdy6xr5gdJigyF5g=" + }, + { + "pname": "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-HmdJhhRsiVoOOCcUvAwdjpMRiyuSwdcgEv2j9hxi+Zc=" + }, + { + "pname": "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-pVFUKuPPIx0edQKjzRon3zKq8zhzHEzko/lc01V/jdw=" + }, + { + "pname": "System.AppContext", + "version": "4.1.0", + "hash": "sha256-v6YfyfrKmhww+EYHUq6cwYUMj00MQ6SOfJtcGVRlYzs=" + }, + { + "pname": "System.AppContext", + "version": "4.3.0", + "hash": "sha256-yg95LNQOwFlA1tWxXdQkVyJqT4AnoDc+ACmrNvzGiZg=" + }, + { + "pname": "System.Buffers", + "version": "4.3.0", + "hash": "sha256-XqZWb4Kd04960h4U9seivjKseGA/YEIpdplfHYHQ9jk=" + }, + { + "pname": "System.Buffers", + "version": "4.5.1", + "hash": "sha256-wws90sfi9M7kuCPWkv1CEYMJtCqx9QB/kj0ymlsNaxI=" + }, + { + "pname": "System.Collections", + "version": "4.0.11", + "hash": "sha256-puoFMkx4Z55C1XPxNw3np8nzNGjH+G24j43yTIsDRL0=" + }, + { + "pname": "System.Collections", + "version": "4.3.0", + "hash": "sha256-afY7VUtD6w/5mYqrce8kQrvDIfS2GXDINDh73IjxJKc=" + }, + { + "pname": "System.Collections.Concurrent", + "version": "4.0.12", + "hash": "sha256-zIEM7AB4SyE9u6G8+o+gCLLwkgi6+3rHQVPdn/dEwB8=" + }, + { + "pname": "System.Collections.Concurrent", + "version": "4.3.0", + "hash": "sha256-KMY5DfJnDeIsa13DpqvyN8NkReZEMAFnlmNglVoFIXI=" + }, + { + "pname": "System.Collections.Immutable", + "version": "1.1.36", + "hash": "sha256-x/UyLEyveCYI+JAWo9xallSPbl78dIVuW2pGqgTY/C0=" + }, + { + "pname": "System.Collections.Immutable", + "version": "1.2.0", + "hash": "sha256-FQ3l+ulbLSPhQ0JcQCC4D4SzjTnHsRqcOj56Ywy7pMo=" + }, + { + "pname": "System.Collections.Immutable", + "version": "5.0.0", + "hash": "sha256-GdwSIjLMM0uVfE56VUSLVNgpW0B//oCeSFj8/hSlbM8=" + }, + { + "pname": "System.Collections.Immutable", + "version": "7.0.0", + "hash": "sha256-9an2wbxue2qrtugYES9awshQg+KfJqajhnhs45kQIdk=" + }, + { + "pname": "System.Collections.Immutable", + "version": "8.0.0", + "hash": "sha256-F7OVjKNwpqbUh8lTidbqJWYi476nsq9n+6k0+QVRo3w=" + }, + { + "pname": "System.Collections.NonGeneric", + "version": "4.0.1", + "hash": "sha256-jdCVXmGOsJ+2F0xAagCkiMZ91SGAm9iOhO2u4ksmKaU=" + }, + { + "pname": "System.ComponentModel.Composition", + "version": "4.5.0", + "hash": "sha256-xxeZs1zIkhl2ZXU8CaOtCkMX1N290IK7bbHYeEKD0aQ=" + }, + { + "pname": "System.Composition", + "version": "1.0.31", + "hash": "sha256-wcQEG6MCRa1S03s3Yb3E3tfsIBZid99M7WDhcb48Qik=" + }, + { + "pname": "System.Composition", + "version": "7.0.0", + "hash": "sha256-YjhxuzuVdAzRBHNQy9y/1ES+ll3QtLcd2o+o8wIyMao=" + }, + { + "pname": "System.Composition.AttributedModel", + "version": "1.0.31", + "hash": "sha256-u+XnXfj6LQ3OXwrb9KqHRW4a/a9yHzLrJOXwDQ1a/sY=" + }, + { + "pname": "System.Composition.AttributedModel", + "version": "7.0.0", + "hash": "sha256-3s52Dyk2J66v/B4LLYFBMyXl0I8DFDshjE+sMjW4ubM=" + }, + { + "pname": "System.Composition.Convention", + "version": "1.0.31", + "hash": "sha256-GQWo1YDyQ3r2OMcKW+GbR3BbZNIAdwK79XAfinNj+AE=" + }, + { + "pname": "System.Composition.Convention", + "version": "7.0.0", + "hash": "sha256-N4MkkBXSQkcFKsEdcSe6zmyFyMmFOHmI2BNo3wWxftk=" + }, + { + "pname": "System.Composition.Hosting", + "version": "1.0.31", + "hash": "sha256-fg9BIY+zWtiEBIJefYP2lKHDYa4r/vtPTr3ZI8e0K7g=" + }, + { + "pname": "System.Composition.Hosting", + "version": "7.0.0", + "hash": "sha256-7liQGMaVKNZU1iWTIXvqf0SG8zPobRoLsW7q916XC3M=" + }, + { + "pname": "System.Composition.Runtime", + "version": "1.0.31", + "hash": "sha256-mqfxjAnVyE1YCgXMOcV34IWhYFnvXVKjMo9Y/d3yDuo=" + }, + { + "pname": "System.Composition.Runtime", + "version": "7.0.0", + "hash": "sha256-Oo1BxSGLETmdNcYvnkGdgm7JYAnQmv1jY0gL0j++Pd0=" + }, + { + "pname": "System.Composition.TypedParts", + "version": "1.0.31", + "hash": "sha256-w9ApcUJr7jYP4Vf5+efIIqoWmr5v9R56W4uC0n8KktQ=" + }, + { + "pname": "System.Composition.TypedParts", + "version": "7.0.0", + "hash": "sha256-6ZzNdk35qQG3ttiAi4OXrihla7LVP+y2fL3bx40/32s=" + }, + { + "pname": "System.Console", + "version": "4.0.0", + "hash": "sha256-jtZfT/TpJtLisV/y5Mk3IfCpE79zwhBYXtyGP9jC3Xo=" + }, + { + "pname": "System.Console", + "version": "4.3.0", + "hash": "sha256-Xh3PPBZr0pDbDaK8AEHbdGz7ePK6Yi1ZyRWI1JM6mbo=" + }, + { + "pname": "System.Diagnostics.Contracts", + "version": "4.0.1", + "hash": "sha256-Mq2MU+80m+zqhe92JazEIDi4rsgk8MHg3yjNYlObzXg=" + }, + { + "pname": "System.Diagnostics.Debug", + "version": "4.0.11", + "hash": "sha256-P+rSQJVoN6M56jQbs76kZ9G3mAWFdtF27P/RijN8sj4=" + }, + { + "pname": "System.Diagnostics.Debug", + "version": "4.3.0", + "hash": "sha256-fkA79SjPbSeiEcrbbUsb70u9B7wqbsdM9s1LnoKj0gM=" + }, + { + "pname": "System.Diagnostics.DiagnosticSource", + "version": "4.3.0", + "hash": "sha256-OFJRb0ygep0Z3yDBLwAgM/Tkfs4JCDtsNhwDH9cd1Xw=" + }, + { + "pname": "System.Diagnostics.FileVersionInfo", + "version": "4.0.0", + "hash": "sha256-Yy94jPhDXF2QHOF7qTmqKkn1048K9xkKryuBeDzsu+g=" + }, + { + "pname": "System.Diagnostics.Process", + "version": "4.1.0", + "hash": "sha256-OgW6ogQ+oYADYS0PHmwXdhrOKQJpqXlwzSvmfjTLNBg=" + }, + { + "pname": "System.Diagnostics.Tools", + "version": "4.3.0", + "hash": "sha256-gVOv1SK6Ape0FQhCVlNOd9cvQKBvMxRX9K0JPVi8w0Y=" + }, + { + "pname": "System.Diagnostics.TraceSource", + "version": "4.0.0", + "hash": "sha256-cCjdPU7ow91HGf1hBIOLJMQGO6pNmF+N+5/Z38XJh9U=" + }, + { + "pname": "System.Diagnostics.Tracing", + "version": "4.1.0", + "hash": "sha256-JA0jJcLbU3zh52ub3zweob2EVHvxOqiC6SCYHrY5WbQ=" + }, + { + "pname": "System.Diagnostics.Tracing", + "version": "4.3.0", + "hash": "sha256-hCETZpHHGVhPYvb4C0fh4zs+8zv4GPoixagkLZjpa9Q=" + }, + { + "pname": "System.Dynamic.Runtime", + "version": "4.0.11", + "hash": "sha256-qWqFVxuXioesVftv2RVJZOnmojUvRjb7cS3Oh3oTit4=" + }, + { + "pname": "System.Formats.Asn1", + "version": "5.0.0", + "hash": "sha256-9nL3dN4w/dZ49W1pCkTjRqZm6Dh0mMVExNungcBHrKs=" + }, + { + "pname": "System.Formats.Asn1", + "version": "9.0.10", + "hash": "sha256-hPvY9hKsDEbNyyzaaMImebYTQWLWD/AOjtru+a4NsIc=" + }, + { + "pname": "System.Globalization", + "version": "4.0.11", + "hash": "sha256-rbSgc2PIEc2c2rN6LK3qCREAX3DqA2Nq1WcLrZYsDBw=" + }, + { + "pname": "System.Globalization", + "version": "4.3.0", + "hash": "sha256-caL0pRmFSEsaoeZeWN5BTQtGrAtaQPwFi8YOZPZG5rI=" + }, + { + "pname": "System.Globalization.Calendars", + "version": "4.3.0", + "hash": "sha256-uNOD0EOVFgnS2fMKvMiEtI9aOw00+Pfy/H+qucAQlPc=" + }, + { + "pname": "System.Globalization.Extensions", + "version": "4.3.0", + "hash": "sha256-mmJWA27T0GRVuFP9/sj+4TrR4GJWrzNIk2PDrbr7RQk=" + }, + { + "pname": "System.IO", + "version": "4.1.0", + "hash": "sha256-V6oyQFwWb8NvGxAwvzWnhPxy9dKOfj/XBM3tEC5aHrw=" + }, + { + "pname": "System.IO", + "version": "4.3.0", + "hash": "sha256-ruynQHekFP5wPrDiVyhNiRIXeZ/I9NpjK5pU+HPDiRY=" + }, + { + "pname": "System.IO.Compression", + "version": "4.1.0", + "hash": "sha256-UT4KEfJNZOk7b4X0AqLFUsqfHu6myVH/BhbRKYc+1Uc=" + }, + { + "pname": "System.IO.Compression", + "version": "4.3.0", + "hash": "sha256-f5PrQlQgj5Xj2ZnHxXW8XiOivaBvfqDao9Sb6AVinyA=" + }, + { + "pname": "System.IO.Compression.ZipFile", + "version": "4.3.0", + "hash": "sha256-WQl+JgWs+GaRMeiahTFUbrhlXIHapzcpTFXbRvAtvvs=" + }, + { + "pname": "System.IO.FileSystem", + "version": "4.0.1", + "hash": "sha256-4VKXFgcGYCTWVXjAlniAVq0dO3o5s8KHylg2wg2/7k0=" + }, + { + "pname": "System.IO.FileSystem", + "version": "4.3.0", + "hash": "sha256-vNIYnvlayuVj0WfRfYKpDrhDptlhp1pN8CYmlVd2TXw=" + }, + { + "pname": "System.IO.FileSystem.Primitives", + "version": "4.0.1", + "hash": "sha256-IpigKMomqb6pmYWkrlf0ZdpILtRluX2cX5sOKVW0Feg=" + }, + { + "pname": "System.IO.FileSystem.Primitives", + "version": "4.3.0", + "hash": "sha256-LMnfg8Vwavs9cMnq9nNH8IWtAtSfk0/Fy4s4Rt9r1kg=" + }, + { + "pname": "System.IO.Pipelines", + "version": "5.0.1", + "hash": "sha256-2zT5uBiyYm+jLIoJppIKJttTtpcMNKxd7Li0QEVjbv8=" + }, + { + "pname": "System.IO.Pipelines", + "version": "7.0.0", + "hash": "sha256-W2181khfJUTxLqhuAVRhCa52xZ3+ePGOLIPwEN8WisY=" + }, + { + "pname": "System.IO.Pipes", + "version": "4.0.0", + "hash": "sha256-6qMAD6DCZ5c1wswLWi1msqwu8GwI8un1RzjpUhzbrjs=" + }, + { + "pname": "System.Linq", + "version": "4.1.0", + "hash": "sha256-ZQpFtYw5N1F1aX0jUK3Tw+XvM5tnlnshkTCNtfVA794=" + }, + { + "pname": "System.Linq", + "version": "4.3.0", + "hash": "sha256-R5uiSL3l6a3XrXSSL6jz+q/PcyVQzEAByiuXZNSqD/A=" + }, + { + "pname": "System.Linq.Expressions", + "version": "4.1.0", + "hash": "sha256-7zqB+FXgkvhtlBzpcZyd81xczWP0D3uWssyAGw3t7b4=" + }, + { + "pname": "System.Linq.Expressions", + "version": "4.3.0", + "hash": "sha256-+3pvhZY7rip8HCbfdULzjlC9FPZFpYoQxhkcuFm2wk8=" + }, + { + "pname": "System.Linq.Parallel", + "version": "4.0.1", + "hash": "sha256-TV1F3KYFipPmPnWFjX6hOZQNFsG2m729EdgPSFzqY0Q=" + }, + { + "pname": "System.Memory", + "version": "4.5.4", + "hash": "sha256-3sCEfzO4gj5CYGctl9ZXQRRhwAraMQfse7yzKoRe65E=" + }, + { + "pname": "System.Memory", + "version": "4.5.5", + "hash": "sha256-EPQ9o1Kin7KzGI5O3U3PUQAZTItSbk9h/i4rViN3WiI=" + }, + { + "pname": "System.Net.Http", + "version": "4.3.0", + "hash": "sha256-UoBB7WPDp2Bne/fwxKF0nE8grJ6FzTMXdT/jfsphj8Q=" + }, + { + "pname": "System.Net.Primitives", + "version": "4.0.11", + "hash": "sha256-2YSijNhCdw/ZU2yfH7vE+ReA8pgxRCXPnWr+ab36v4M=" + }, + { + "pname": "System.Net.Primitives", + "version": "4.3.0", + "hash": "sha256-MY7Z6vOtFMbEKaLW9nOSZeAjcWpwCtdO7/W1mkGZBzE=" + }, + { + "pname": "System.Net.Sockets", + "version": "4.1.0", + "hash": "sha256-muK7oXIX7ykqhXskuUt0KX6Hzg5VogJhUS0JiOB2BY0=" + }, + { + "pname": "System.Net.Sockets", + "version": "4.3.0", + "hash": "sha256-il7dr5VT/QWDg/0cuh+4Es2u8LY//+qqiY9BZmYxSus=" + }, + { + "pname": "System.Numerics.Vectors", + "version": "4.4.0", + "hash": "sha256-auXQK2flL/JpnB/rEcAcUm4vYMCYMEMiWOCAlIaqu2U=" + }, + { + "pname": "System.ObjectModel", + "version": "4.0.12", + "hash": "sha256-MudZ/KYcvYsn2cST3EE049mLikrNkmE7QoUoYKKby+s=" + }, + { + "pname": "System.ObjectModel", + "version": "4.3.0", + "hash": "sha256-gtmRkWP2Kwr3nHtDh0yYtce38z1wrGzb6fjm4v8wN6Q=" + }, + { + "pname": "System.Reflection", + "version": "4.1.0", + "hash": "sha256-idZHGH2Yl/hha1CM4VzLhsaR8Ljo/rV7TYe7mwRJSMs=" + }, + { + "pname": "System.Reflection", + "version": "4.3.0", + "hash": "sha256-NQSZRpZLvtPWDlvmMIdGxcVuyUnw92ZURo0hXsEshXY=" + }, + { + "pname": "System.Reflection.Emit", + "version": "4.0.1", + "hash": "sha256-F1MvYoQWHCY89/O4JBwswogitqVvKuVfILFqA7dmuHk=" + }, + { + "pname": "System.Reflection.Emit", + "version": "4.3.0", + "hash": "sha256-5LhkDmhy2FkSxulXR+bsTtMzdU3VyyuZzsxp7/DwyIU=" + }, + { + "pname": "System.Reflection.Emit.ILGeneration", + "version": "4.0.1", + "hash": "sha256-YG+eJBG5P+5adsHiw/lhJwvREnvdHw6CJyS8ZV4Ujd0=" + }, + { + "pname": "System.Reflection.Emit.ILGeneration", + "version": "4.3.0", + "hash": "sha256-mKRknEHNls4gkRwrEgi39B+vSaAz/Gt3IALtS98xNnA=" + }, + { + "pname": "System.Reflection.Emit.Lightweight", + "version": "4.0.1", + "hash": "sha256-uVvNOnL64CPqsgZP2OLqNmxdkZl6Q0fTmKmv9gcBi+g=" + }, + { + "pname": "System.Reflection.Emit.Lightweight", + "version": "4.3.0", + "hash": "sha256-rKx4a9yZKcajloSZHr4CKTVJ6Vjh95ni+zszPxWjh2I=" + }, + { + "pname": "System.Reflection.Extensions", + "version": "4.0.1", + "hash": "sha256-NsfmzM9G/sN3H8X2cdnheTGRsh7zbRzvegnjDzDH/FQ=" + }, + { + "pname": "System.Reflection.Extensions", + "version": "4.3.0", + "hash": "sha256-mMOCYzUenjd4rWIfq7zIX9PFYk/daUyF0A8l1hbydAk=" + }, + { + "pname": "System.Reflection.Metadata", + "version": "1.0.21", + "hash": "sha256-0yqDWxwaw57YQ5dl8qdo+2o6VvG8qKp4il093uWWAUs=" + }, + { + "pname": "System.Reflection.Metadata", + "version": "1.3.0", + "hash": "sha256-a/RQr++mSsziWaOTknicfIQX/zJrwPFExfhK6PM0tfg=" + }, + { + "pname": "System.Reflection.Metadata", + "version": "5.0.0", + "hash": "sha256-Wo+MiqhcP9dQ6NuFGrQTw6hpbJORFwp+TBNTq2yhGp8=" + }, + { + "pname": "System.Reflection.Metadata", + "version": "7.0.0", + "hash": "sha256-GwAKQhkhPBYTqmRdG9c9taqrKSKDwyUgOEhWLKxWNPI=" + }, + { + "pname": "System.Reflection.Metadata", + "version": "8.0.0", + "hash": "sha256-dQGC30JauIDWNWXMrSNOJncVa1umR1sijazYwUDdSIE=" + }, + { + "pname": "System.Reflection.Primitives", + "version": "4.0.1", + "hash": "sha256-SFSfpWEyCBMAOerrMCOiKnpT+UAWTvRcmoRquJR6Vq0=" + }, + { + "pname": "System.Reflection.Primitives", + "version": "4.3.0", + "hash": "sha256-5ogwWB4vlQTl3jjk1xjniG2ozbFIjZTL9ug0usZQuBM=" + }, + { + "pname": "System.Reflection.TypeExtensions", + "version": "4.1.0", + "hash": "sha256-R0YZowmFda+xzKNR4kKg7neFoE30KfZwp/IwfRSKVK4=" + }, + { + "pname": "System.Reflection.TypeExtensions", + "version": "4.3.0", + "hash": "sha256-4U4/XNQAnddgQIHIJq3P2T80hN0oPdU2uCeghsDTWng=" + }, + { + "pname": "System.Resources.ResourceManager", + "version": "4.0.1", + "hash": "sha256-cZ2/3/fczLjEpn6j3xkgQV9ouOVjy4Kisgw5xWw9kSw=" + }, + { + "pname": "System.Resources.ResourceManager", + "version": "4.3.0", + "hash": "sha256-idiOD93xbbrbwwSnD4mORA9RYi/D/U48eRUsn/WnWGo=" + }, + { + "pname": "System.Runtime", + "version": "4.1.0", + "hash": "sha256-FViNGM/4oWtlP6w0JC0vJU+k9efLKZ+yaXrnEeabDQo=" + }, + { + "pname": "System.Runtime", + "version": "4.3.0", + "hash": "sha256-51813WXpBIsuA6fUtE5XaRQjcWdQ2/lmEokJt97u0Rg=" + }, + { + "pname": "System.Runtime.CompilerServices.Unsafe", + "version": "4.5.3", + "hash": "sha256-lnZMUqRO4RYRUeSO8HSJ9yBHqFHLVbmenwHWkIU20ak=" + }, + { + "pname": "System.Runtime.CompilerServices.Unsafe", + "version": "4.7.1", + "hash": "sha256-UvyoDV8O0oY3HPG1GbA56YVdvwTGEfjYR5gW1O7IK4U=" + }, + { + "pname": "System.Runtime.CompilerServices.Unsafe", + "version": "5.0.0", + "hash": "sha256-neARSpLPUzPxEKhJRwoBzhPxK+cKIitLx7WBYncsYgo=" + }, + { + "pname": "System.Runtime.CompilerServices.Unsafe", + "version": "6.0.0", + "hash": "sha256-bEG1PnDp7uKYz/OgLOWs3RWwQSVYm+AnPwVmAmcgp2I=" + }, + { + "pname": "System.Runtime.Extensions", + "version": "4.1.0", + "hash": "sha256-X7DZ5CbPY7jHs20YZ7bmcXs9B5Mxptu/HnBUvUnNhGc=" + }, + { + "pname": "System.Runtime.Extensions", + "version": "4.3.0", + "hash": "sha256-wLDHmozr84v1W2zYCWYxxj0FR0JDYHSVRaRuDm0bd/o=" + }, + { + "pname": "System.Runtime.Handles", + "version": "4.0.1", + "hash": "sha256-j2QgVO9ZOjv7D1het98CoFpjoYgxjupuIhuBUmLLH7w=" + }, + { + "pname": "System.Runtime.Handles", + "version": "4.3.0", + "hash": "sha256-KJ5aXoGpB56Y6+iepBkdpx/AfaJDAitx4vrkLqR7gms=" + }, + { + "pname": "System.Runtime.InteropServices", + "version": "4.1.0", + "hash": "sha256-QceAYlJvkPRJc/+5jR+wQpNNI3aqGySWWSO30e/FfQY=" + }, + { + "pname": "System.Runtime.InteropServices", + "version": "4.3.0", + "hash": "sha256-8sDH+WUJfCR+7e4nfpftj/+lstEiZixWUBueR2zmHgI=" + }, + { + "pname": "System.Runtime.InteropServices.RuntimeInformation", + "version": "4.0.0", + "hash": "sha256-5j53amb76A3SPiE3B0llT2XPx058+CgE7OXL4bLalT4=" + }, + { + "pname": "System.Runtime.InteropServices.RuntimeInformation", + "version": "4.3.0", + "hash": "sha256-MYpl6/ZyC6hjmzWRIe+iDoldOMW1mfbwXsduAnXIKGA=" + }, + { + "pname": "System.Runtime.Loader", + "version": "4.0.0", + "hash": "sha256-gE5/ehU3Qq5phhSxGuPmSv1DFVQeiyl1/+YyrO+I7lI=" + }, + { + "pname": "System.Runtime.Numerics", + "version": "4.3.0", + "hash": "sha256-P5jHCgMbgFMYiONvzmaKFeOqcAIDPu/U8bOVrNPYKqc=" + }, + { + "pname": "System.Security.AccessControl", + "version": "4.5.0", + "hash": "sha256-AFsKPb/nTk2/mqH/PYpaoI8PLsiKKimaXf+7Mb5VfPM=" + }, + { + "pname": "System.Security.AccessControl", + "version": "5.0.0", + "hash": "sha256-ueSG+Yn82evxyGBnE49N4D+ngODDXgornlBtQ3Omw54=" + }, + { + "pname": "System.Security.Cryptography.Algorithms", + "version": "4.3.0", + "hash": "sha256-tAJvNSlczYBJ3Ed24Ae27a55tq/n4D3fubNQdwcKWA8=" + }, + { + "pname": "System.Security.Cryptography.Cng", + "version": "4.3.0", + "hash": "sha256-u17vy6wNhqok91SrVLno2M1EzLHZm6VMca85xbVChsw=" + }, + { + "pname": "System.Security.Cryptography.Cng", + "version": "5.0.0", + "hash": "sha256-nOJP3vdmQaYA07TI373OvZX6uWshETipvi5KpL7oExo=" + }, + { + "pname": "System.Security.Cryptography.Csp", + "version": "4.3.0", + "hash": "sha256-oefdTU/Z2PWU9nlat8uiRDGq/PGZoSPRgkML11pmvPQ=" + }, + { + "pname": "System.Security.Cryptography.Encoding", + "version": "4.3.0", + "hash": "sha256-Yuge89N6M+NcblcvXMeyHZ6kZDfwBv3LPMDiF8HhJss=" + }, + { + "pname": "System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-DL+D2sc2JrQiB4oAcUggTFyD8w3aLEjJfod5JPe+Oz4=" + }, + { + "pname": "System.Security.Cryptography.Pkcs", + "version": "9.0.10", + "hash": "sha256-Hgs2WRGyiDDc8HcQOoP4Yi0eM3N892AkvVUTLD1MQx8=" + }, + { + "pname": "System.Security.Cryptography.Primitives", + "version": "4.3.0", + "hash": "sha256-fnFi7B3SnVj5a+BbgXnbjnGNvWrCEU6Hp/wjsjWz318=" + }, + { + "pname": "System.Security.Cryptography.ProtectedData", + "version": "4.4.0", + "hash": "sha256-Ri53QmFX8I8UH0x4PikQ1ZA07ZSnBUXStd5rBfGWFOE=" + }, + { + "pname": "System.Security.Cryptography.X509Certificates", + "version": "4.3.0", + "hash": "sha256-MG3V/owDh273GCUPsGGraNwaVpcydupl3EtPXj6TVG0=" + }, + { + "pname": "System.Security.Permissions", + "version": "4.5.0", + "hash": "sha256-Fa6dX6Gyse1A/RBoin8cVaHQePbfBvp6jjWxUXPhXKQ=" + }, + { + "pname": "System.Security.Principal", + "version": "4.0.1", + "hash": "sha256-9wBgPnJfFOtrhKZ7wDXZ4q12GklQ49Ka02/9v7Frf9k=" + }, + { + "pname": "System.Security.Principal.Windows", + "version": "4.5.0", + "hash": "sha256-BkUYNguz0e4NJp1kkW7aJBn3dyH9STwB5N8XqnlCsmY=" + }, + { + "pname": "System.Security.Principal.Windows", + "version": "5.0.0", + "hash": "sha256-CBOQwl9veFkrKK2oU8JFFEiKIh/p+aJO+q9Tc2Q/89Y=" + }, + { + "pname": "System.Text.Encoding", + "version": "4.0.11", + "hash": "sha256-PEailOvG05CVgPTyKLtpAgRydlSHmtd5K0Y8GSHY2Lc=" + }, + { + "pname": "System.Text.Encoding", + "version": "4.3.0", + "hash": "sha256-GctHVGLZAa/rqkBNhsBGnsiWdKyv6VDubYpGkuOkBLg=" + }, + { + "pname": "System.Text.Encoding.CodePages", + "version": "4.5.1", + "hash": "sha256-PIhkv59IXjyiuefdhKxS9hQfEwO9YWRuNudpo53HQfw=" + }, + { + "pname": "System.Text.Encoding.CodePages", + "version": "7.0.0", + "hash": "sha256-eCKTVwumD051ZEcoJcDVRGnIGAsEvKpfH3ydKluHxmo=" + }, + { + "pname": "System.Text.Encoding.Extensions", + "version": "4.0.11", + "hash": "sha256-+kf7J3dEhgCbnCM5vHYlsTm5/R/Ud0Jr6elpHm922iI=" + }, + { + "pname": "System.Text.Encoding.Extensions", + "version": "4.3.0", + "hash": "sha256-vufHXg8QAKxHlujPHHcrtGwAqFmsCD6HKjfDAiHyAYc=" + }, + { + "pname": "System.Text.RegularExpressions", + "version": "4.1.0", + "hash": "sha256-x6OQN6MCN7S0fJ6EFTfv4rczdUWjwuWE9QQ0P6fbh9c=" + }, + { + "pname": "System.Text.RegularExpressions", + "version": "4.3.0", + "hash": "sha256-VLCk1D1kcN2wbAe3d0YQM/PqCsPHOuqlBY1yd2Yo+K0=" + }, + { + "pname": "System.Threading", + "version": "4.0.11", + "hash": "sha256-mob1Zv3qLQhQ1/xOLXZmYqpniNUMCfn02n8ZkaAhqac=" + }, + { + "pname": "System.Threading", + "version": "4.3.0", + "hash": "sha256-ZDQ3dR4pzVwmaqBg4hacZaVenQ/3yAF/uV7BXZXjiWc=" + }, + { + "pname": "System.Threading.Channels", + "version": "7.0.0", + "hash": "sha256-Cu0gjQsLIR8Yvh0B4cOPJSYVq10a+3F9pVz/C43CNeM=" + }, + { + "pname": "System.Threading.Overlapped", + "version": "4.0.1", + "hash": "sha256-CAWZlavcuBQHs+kaSX9CmkpHF7wC8rFrug3XPb5KJzo=" + }, + { + "pname": "System.Threading.Tasks", + "version": "4.0.11", + "hash": "sha256-5SLxzFg1df6bTm2t09xeI01wa5qQglqUwwJNlQPJIVs=" + }, + { + "pname": "System.Threading.Tasks", + "version": "4.3.0", + "hash": "sha256-Z5rXfJ1EXp3G32IKZGiZ6koMjRu0n8C1NGrwpdIen4w=" + }, + { + "pname": "System.Threading.Tasks.Dataflow", + "version": "4.6.0", + "hash": "sha256-YYrT3GRzVBdendxt8FUDCnOBJi0nw/CJ9VrzcPJWLSg=" + }, + { + "pname": "System.Threading.Tasks.Extensions", + "version": "4.0.0", + "hash": "sha256-+YdcPkMhZhRbMZHnfsDwpNbUkr31X7pQFGxXYcAPZbE=" + }, + { + "pname": "System.Threading.Tasks.Extensions", + "version": "4.3.0", + "hash": "sha256-X2hQ5j+fxcmnm88Le/kSavjiGOmkcumBGTZKBLvorPc=" + }, + { + "pname": "System.Threading.Tasks.Extensions", + "version": "4.5.4", + "hash": "sha256-owSpY8wHlsUXn5xrfYAiu847L6fAKethlvYx97Ri1ng=" + }, + { + "pname": "System.Threading.Thread", + "version": "4.0.0", + "hash": "sha256-7EtSJuKqcW107FYA5Ko9NFXEWUPIzNDtlfKaQV2pvb8=" + }, + { + "pname": "System.Threading.ThreadPool", + "version": "4.0.10", + "hash": "sha256-/fowWjM/0ZZFC1Rwu0i5N71iRxV2JOd3jQV2Jn0wuTk=" + }, + { + "pname": "System.Threading.Timer", + "version": "4.3.0", + "hash": "sha256-pmhslmhQhP32TWbBzoITLZ4BoORBqYk25OWbru04p9s=" + }, + { + "pname": "System.Xml.ReaderWriter", + "version": "4.0.11", + "hash": "sha256-haZAFFQ9Sl2DhfvEbdx2YRqKEoxNMU5STaqpMmXw0zA=" + }, + { + "pname": "System.Xml.ReaderWriter", + "version": "4.3.0", + "hash": "sha256-QQ8KgU0lu4F5Unh+TbechO//zaAGZ4MfgvW72Cn1hzA=" + }, + { + "pname": "System.Xml.XDocument", + "version": "4.3.0", + "hash": "sha256-rWtdcmcuElNOSzCehflyKwHkDRpiOhJJs8CeQ0l1CCI=" + }, + { + "pname": "System.Xml.XmlDocument", + "version": "4.0.1", + "hash": "sha256-gdoFrPo54v1LjkBF79f8EvtltVVjHz9ZI9kc5ve0GkY=" + }, + { + "pname": "System.Xml.XPath", + "version": "4.0.1", + "hash": "sha256-lQCoK2M51SGRuGjfiuIW26Y2goABY2RLE6cZ4816WDo=" + }, + { + "pname": "System.Xml.XPath.XmlDocument", + "version": "4.0.1", + "hash": "sha256-bK9AfAYrdSipdRbmo8Rk7394ku92UFNe2TEQF5+k/lA=" + }, + { + "pname": "xunit", + "version": "2.9.3", + "hash": "sha256-BPrpSbjlIB7PoH+ocCusqMDrMZgRQZSzeTeJzHK/I9c=" + }, + { + "pname": "xunit.abstractions", + "version": "2.0.3", + "hash": "sha256-0D1y/C34iARI96gb3bAOG8tcGPMjx+fMabTPpydGlAM=" + }, + { + "pname": "xunit.analyzers", + "version": "1.18.0", + "hash": "sha256-DOgamLnfi9Ua5IDm3JVm9MaOFbSSbmq5l8j2NPO3qd0=" + }, + { + "pname": "xunit.assert", + "version": "2.3.0", + "hash": "sha256-lN+NiUEQoHWmoamUjvsNt2PVhHXYeHJHjHRk1BTs6R8=" + }, + { + "pname": "xunit.assert", + "version": "2.9.3", + "hash": "sha256-vHYOde8bd10pOmr7iTAYNtPlqHzsJl4x3t1DDuYdDCA=" + }, + { + "pname": "xunit.core", + "version": "2.9.3", + "hash": "sha256-qkVQ8Jw/LZWmxirkPOwiry7bvZn3IuaRzu/sp2H8anw=" + }, + { + "pname": "xunit.extensibility.core", + "version": "2.9.3", + "hash": "sha256-mcpVX+m0R7F0ev9CaBnbai9gtu4GVcqijEuRqe89D0g=" + }, + { + "pname": "xunit.extensibility.execution", + "version": "2.9.3", + "hash": "sha256-2rxMs2Dt4cAcmOFMwP5Yd3RpP0BnmiL8cXlKysXY0jw=" + }, + { + "pname": "xunit.runner.visualstudio", + "version": "3.1.5", + "hash": "sha256-O5657884QGldszsEWQFCDRTXViFBmZ4GGC+4iU+usSQ=" + } +] diff --git a/pkgs/development/tools/godot/common.nix b/pkgs/development/tools/godot/common.nix index f2d068f68adc..86eae65f33ac 100644 --- a/pkgs/development/tools/godot/common.nix +++ b/pkgs/development/tools/godot/common.nix @@ -99,7 +99,15 @@ let dottedVersion = lib.replaceStrings [ "-" ] [ "." ] version + lib.optionalString withMono ".mono"; - harfbuzz-icu = harfbuzz.override { withIcu = true; }; + harfbuzz-raster = harfbuzz.override { + withRaster = lib.versionAtLeast version "4.7"; + withCairo = lib.versionAtLeast version "4.7"; + }; + + harfbuzz-icu = harfbuzz-raster.override { + withIcu = true; + harfbuzz = harfbuzz-raster; + }; mkTarget = target: @@ -341,6 +349,8 @@ let ); attrs = finalAttrs: { + __structuredAttrs = true; + pname = "godot${suffix}"; inherit version; @@ -400,10 +410,16 @@ let dotnet restore modules/mono/editor/Godot.NET.Sdk/Godot.NET.Sdk.sln ''; - # darwin needs $HOME/.cache/clang/ModuleCache - preBuild = lib.optionalString stdenv.hostPlatform.isDarwin '' - export HOME=$(mktemp -d) - ''; + # Godot 4.7 with system HarfBuzz needs explicit raster linkage, but should be resolved with 4.7.1. + # See https://github.com/godotengine/godot/pull/120568 + preBuild = + lib.optionalString (!withBuiltins && lib.versionAtLeast version "4.7") '' + export NIX_LDFLAGS="$NIX_LDFLAGS -lharfbuzz-raster" + '' + # darwin needs $HOME/.cache/clang/ModuleCache. + + lib.optionalString stdenv.hostPlatform.isDarwin '' + export HOME=$(mktemp -d) + ''; # From: https://github.com/godotengine/godot/blob/4.2.2-stable/SConstruct sconsFlags = mkSconsFlagsFromAttrSet ( @@ -645,7 +661,7 @@ let # when building the mono editor, we need to build the assemblies # before generating the bundle + lib.optionalString stdenv.hostPlatform.isDarwin '' - scons $sconsFlags generate_bundle=yes + scons "''${sconsFlags[@]}" generate_bundle=yes '' ); @@ -675,8 +691,18 @@ let --replace-fail "Godot Engine" "Godot Engine ${ lib.versions.majorMinor version + lib.optionalString withMono " (Mono)" }" - cp icon.svg "$out/share/icons/hicolor/scalable/apps/godot.svg" - cp icon.png "$out/share/icons/godot.png" + ${ + if lib.versionOlder version "4.7" then + '' + cp icon.svg "$out/share/icons/hicolor/scalable/apps/godot.svg" + cp icon.png "$out/share/icons/godot.png" + '' + else + '' + cp misc/logo/icon.svg "$out/share/icons/hicolor/scalable/apps/godot.svg" + cp misc/logo/icon.png "$out/share/icons/godot.png" + '' + } '' + lib.optionalString withMono '' cp -r bin/GodotSharp "$out"/libexec/ diff --git a/pkgs/development/tools/godot/default.nix b/pkgs/development/tools/godot/default.nix index 6e1277a8f2ec..de9d6cf563ff 100644 --- a/pkgs/development/tools/godot/default.nix +++ b/pkgs/development/tools/godot/default.nix @@ -61,6 +61,7 @@ rec { godotPackages_4_4 = mkGodotPackages "4.4"; godotPackages_4_5 = mkGodotPackages "4.5"; godotPackages_4_6 = mkGodotPackages "4.6"; + godotPackages_4_7 = mkGodotPackages "4.7"; godotPackages_4 = godotPackages_4_6; godotPackages = godotPackages_4; @@ -76,6 +77,9 @@ rec { godot_4_6 = godotPackages_4_6.godot; godot_4_6-mono = godotPackages_4_6.godot-mono; godot_4_6-export-templates-bin = godotPackages_4_6.export-templates-bin; + godot_4_7 = godotPackages_4_7.godot; + godot_4_7-mono = godotPackages_4_7.godot-mono; + godot_4_7-export-templates-bin = godotPackages_4_7.export-templates-bin; godot_4 = godotPackages_4.godot; godot_4-mono = godotPackages_4.godot-mono; godot_4-export-templates-bin = godotPackages_4.export-templates-bin; diff --git a/pkgs/development/tools/godot/export-templates-bin.nix b/pkgs/development/tools/godot/export-templates-bin.nix index d6fe6890c281..642af51dc9e8 100644 --- a/pkgs/development/tools/godot/export-templates-bin.nix +++ b/pkgs/development/tools/godot/export-templates-bin.nix @@ -14,6 +14,8 @@ # https://docs.godotengine.org/en/stable/tutorials/export/exporting_projects.html#export-templates let self = stdenvNoCC.mkDerivation { + __structuredAttrs = true; + pname = "godot-export-templates${lib.optionalString withMono "-mono"}-bin"; version = version; @@ -26,6 +28,8 @@ let unzip ]; + strictDeps = true; + unpackPhase = '' runHook preUnpack unzip -q "$src" diff --git a/pkgs/development/web/nodejs/v26.nix b/pkgs/development/web/nodejs/v26.nix index 500d00eaaef0..3be4bfbc98f9 100644 --- a/pkgs/development/web/nodejs/v26.nix +++ b/pkgs/development/web/nodejs/v26.nix @@ -23,13 +23,16 @@ let [ ]; in buildNodejs { - version = "26.3.1"; - sha256 = "979b9b8308a8d2d4a27c662ed50448c85f970c0fd4f5ce8b98e8da78c441f2bc"; + version = "26.4.0"; + sha256 = "9eceb3621024069d91035b5471d2ebe86aa04d22dbeba72a782eaf36ff9183ac"; patches = ( if (stdenv.hostPlatform.emulatorAvailable buildPackages) then [ - ./configure-emulator.patch + (fetchpatch2 { + url = "https://github.com/nodejs/node/commit/b087e922bde7bfd0cb4b7340bb473ddbbb84ee85.patch?full_index=1"; + hash = "sha256-338rkBx2OAKyaelFj6jePU+shl+KTAl29a8KBItbDqc="; + }) ] else [ diff --git a/pkgs/os-specific/linux/kernel/build.nix b/pkgs/os-specific/linux/kernel/build.nix index ac191a3ba149..91340c212afd 100644 --- a/pkgs/os-specific/linux/kernel/build.nix +++ b/pkgs/os-specific/linux/kernel/build.nix @@ -80,8 +80,7 @@ lib.makeOverridable ( # Whether to utilize the controversial import-from-derivation feature to parse the config allowImportFromDerivation ? false, - # ignored - features ? null, + features ? { }, lib ? lib_, stdenv ? stdenv_, }: @@ -530,6 +529,9 @@ lib.makeOverridable ( inherit isZen withRust + # Forwarded into passthru so features survive kernel.override() call chains + # used by the NixOS module system (see boot.kernelPackages apply in kernel.nix). + features ; baseVersion = lib.head (lib.splitString "-rc" version); kernelOlder = lib.versionOlder baseVersion; diff --git a/pkgs/servers/nextcloud/default.nix b/pkgs/servers/nextcloud/default.nix index 34a708f9ef84..392485f78891 100644 --- a/pkgs/servers/nextcloud/default.nix +++ b/pkgs/servers/nextcloud/default.nix @@ -53,14 +53,14 @@ let in { nextcloud32 = generic { - version = "32.0.11"; - hash = "sha256-vvIY5Yeczhy/0Q0gfVG1iiYPGQ1U/VcZkx7coMWdRiQ="; + version = "32.0.12"; + hash = "sha256-rxWPclccjhXim8E2wjqSEYjOHVZoVQAK2U+JuAqPGAw="; packages = nextcloud32Packages; }; nextcloud33 = generic { - version = "33.0.5"; - hash = "sha256-7Ua5HY2k4fAjTQGIslvulEj6LzAYh+WygBPmtUfW3Mo="; + version = "33.0.6"; + hash = "sha256-eRghpVAplE3gQxnPyvysSujn71a0zR78JjG/MLedFt4="; packages = nextcloud33Packages; }; diff --git a/pkgs/servers/nextcloud/packages/32.json b/pkgs/servers/nextcloud/packages/32.json index 359ec5d6ec96..2ac439f8d728 100644 --- a/pkgs/servers/nextcloud/packages/32.json +++ b/pkgs/servers/nextcloud/packages/32.json @@ -1,8 +1,8 @@ { "bookmarks": { - "hash": "sha256-wf3t7qwxFAJBnPP3PYfa3Q/LrUaoONY47/So2w2fDww=", - "url": "https://github.com/nextcloud/bookmarks/releases/download/v16.2.1/bookmarks-16.2.1.tar.gz", - "version": "16.2.1", + "hash": "sha256-8F+sNG/+M8Ed/q5dcxW95KS5ZBNsEeZNR0P2OIe/HqQ=", + "url": "https://github.com/nextcloud/bookmarks/releases/download/v16.2.2/bookmarks-16.2.2.tar.gz", + "version": "16.2.2", "description": "- πŸ“‚ Sort bookmarks into folders\n- 🏷 Add tags and personal notes\n- ☠ Find broken links and duplicates\n- πŸ“² Synchronize with all your browsers and devices\n- πŸ“” Store archived versions of your links in case they are depublished\n- πŸ” Full-text search on site contents\n- πŸ‘ͺ Share bookmarks with other users, groups and teams or via public links\n- βš› Generate RSS feeds of your collections\n- πŸ“ˆ Stats on how often you access which links\n- πŸ”’ Automatic backups of your bookmarks collection\n- πŸ’Ό Built-in Dashboard widgets for frequent and recent links\n\nRequirements:\n - PHP extensions:\n - intl: *\n - mbstring: *\n - when using MySQL, use at least v8.0", "homepage": "https://github.com/nextcloud/bookmarks", "licenses": [ @@ -30,9 +30,9 @@ ] }, "collectives": { - "hash": "sha256-ul8DRAOna5gCS9v0HhqFGdh/fFv6weG5x8ZMZjTLjhM=", - "url": "https://github.com/nextcloud/collectives/releases/download/v4.4.1/collectives-4.4.1.tar.gz", - "version": "4.4.1", + "hash": "sha256-/MGwV78AAzsoAvI11JeodQsbiMZs1J58NzsGrEIv5EA=", + "url": "https://github.com/nextcloud/collectives/releases/download/v4.4.2/collectives-4.4.2.tar.gz", + "version": "4.4.2", "description": "Your space to collaboratively write and organize. Collectives is designed for groups and communities\nto structure shared knowledge and cultivate trust.\n\n* **πŸ‘₯ Non-hierarchical at its core**: Each collective is backed by a\n [Nextcloud Team](https://docs.nextcloud.com/server/latest/user_manual/en/groupware/contacts.html#teams) - its\n content is owned by the group, not a single user.\n* **πŸ“ Collaborative page editing** thanks to the [Text app](https://github.com/nextcloud/text).\n* **πŸ”€ Well-known [Markdown](https://en.wikipedia.org/wiki/Markdown) syntax** for page formatting.\n* **πŸ”Ž Full-text search** to find content straight away.", "homepage": "https://collectives.cloud/", "licenses": [ @@ -80,9 +80,9 @@ ] }, "deck": { - "hash": "sha256-t/9nWA3e2WBkMjevWMpzmhjBY8OaQS4nwryto4WJwtw=", - "url": "https://github.com/nextcloud-releases/deck/releases/download/v1.16.6/deck-v1.16.6.tar.gz", - "version": "1.16.6", + "hash": "sha256-InDmm6aj8y8qfZ7i765XJIh4q0vsTlVtxA6n0E6rll0=", + "url": "https://github.com/nextcloud-releases/deck/releases/download/v1.16.7/deck-v1.16.7.tar.gz", + "version": "1.16.7", "description": "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- πŸ“₯ Add your tasks to cards and put them in order\n- πŸ“„ Write down additional notes in Markdown\n- πŸ”– Assign labels for even better organization\n- πŸ‘₯ Share with your team, friends or family\n- πŸ“Ž Attach files and embed them in your Markdown description\n- πŸ’¬ Discuss with your team using comments\n- ⚑ Keep track of changes in the activity stream\n- πŸš€ Get your project organized", "homepage": "https://github.com/nextcloud/deck", "licenses": [ @@ -140,9 +140,9 @@ ] }, "gpoddersync": { - "hash": "sha256-9BcXVauZWFlmlXtnwdSo5xISbhhssa7ao5ulKpziOnU=", - "url": "https://github.com/thrillfall/nextcloud-gpodder/releases/download/3.16.0/gpoddersync.tar.gz", - "version": "3.16.0", + "hash": "sha256-V4iJr1p5uqxdrvE50bjyNTiHdsZATewaBXKQ8Ma0dHg=", + "url": "https://github.com/thrillfall/nextcloud-gpodder/releases/download/3.17.0/gpoddersync.tar.gz", + "version": "3.17.0", "description": "Expose GPodder API to sync podcast consumer apps like AntennaPod", "homepage": "https://github.com/thrillfall/nextcloud-gpodder", "licenses": [ @@ -210,9 +210,9 @@ ] }, "mail": { - "hash": "sha256-K6sJ3XJOq9MoO0lGgqn3iBYuDqqhOMeHWD1DLVY5HaU=", - "url": "https://github.com/nextcloud-releases/mail/releases/download/v5.10.1/mail-v5.10.1.tar.gz", - "version": "5.10.1", + "hash": "sha256-GkLTk3Q1mSUGhU6lsNHmHGkwW6u4XoDCOj405vi8xuY=", + "url": "https://github.com/nextcloud-releases/mail/releases/download/v5.10.3/mail-v5.10.3.tar.gz", + "version": "5.10.3", "description": "**πŸ’Œ A mail app for Nextcloud**\n\n- **πŸš€ Integration with other Nextcloud apps!** Currently Contacts, Calendar & Files – more to come.\n- **πŸ“₯ Multiple mail accounts!** Personal and company account? No problem, and a nice unified inbox. Connect any IMAP account.\n- **πŸ”’ Send & receive encrypted mails!** Using the great [Mailvelope](https://mailvelope.com) browser extension.\n- **πŸ™ˆ We’re not reinventing the wheel!** Based on the great [Horde](https://www.horde.org) libraries.\n- **πŸ“¬ Want to host your own mail server?** We do not have to reimplement this as you could set up [Mail-in-a-Box](https://mailinabox.email)!\n\n## Ethical AI Rating\n\n### Priority Inbox\n\nPositive:\n* The software for training and inferencing of this model is open source.\n* The model is created and trained on-premises based on the user's own data.\n* The training data is accessible to the user, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Thread Summaries (opt-in)\n\n**Rating:** 🟒/🟑/🟠/πŸ”΄\n\nThe rating depends on the installed text processing backend. See [the rating overview](https://docs.nextcloud.com/server/latest/admin_manual/ai/index.html) for details.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).", "homepage": "https://github.com/nextcloud/mail#readme", "licenses": [ @@ -290,9 +290,9 @@ ] }, "onlyoffice": { - "hash": "sha256-+phzZA410n9QQsba26OUf7XR+x24XMnmHamhqsqlcVo=", - "url": "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v9.14.0/onlyoffice.tar.gz", - "version": "9.14.0", + "hash": "sha256-sMgBVVAv6n6TlrvcndzRLc1xPJ6eA4hYBqDpiDabW1k=", + "url": "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v9.14.2/onlyoffice.tar.gz", + "version": "9.14.2", "description": "The ONLYOFFICE app for Nextcloud brings powerful document editing and collaboration tools directly to your Nextcloud environment. With this integration, you can seamlessly create, edit, and co-author text documents, spreadsheets, presentations, and PDFs, as well as build and fill out PDF forms.\n\nCollaborate with your team in real time, make use of Track Changes, version history, comments, integrated chat, and more. Work together on files with federated cloud sharing. Flexible access permissions allow you to control who can view, edit, or comment, ensuring secure role-based collaboration tailored to your needs. Documents can also be protected with watermarks, password settings, and encryption for added security.\n\nThe app offers support for over 50 file formats, including DOCX, XLSX, PPTX, PDF, RTF, TXT, CSV, ODT, ODS, ODP, EPUB, FB2, HTML, HWP, HWPX, Pages, Numbers, Keynote, etc. Seamless desktop and mobile app integration means you'll have access to your Nextcloud files wherever you go.\n\nFurthermore, you can seamlessly connect any AI assistant, including local ones, directly to the editors to work faster and more efficient. This allows you to leverage various AI models for tasks like chatbot interactions, translations, OCR, and more.\n\nWhether you’re working with internal teams or external collaborators, the ONLYOFFICE app for Nextcloud enhances productivity, simplifies workflows, and ensures your files remain secure.", "homepage": "https://www.onlyoffice.com", "licenses": [ @@ -410,9 +410,9 @@ ] }, "tasks": { - "hash": "sha256-I5QdNavgv74FSuXwFWNz/++LOY9Z8kNZhEKf2k118L8=", - "url": "https://github.com/nextcloud/tasks/releases/download/v0.17.1/tasks.tar.gz", - "version": "0.17.1", + "hash": "sha256-nJFU65dthPRWd/SClKM/suZdYU3ic3QsIcXiPzUkQ6c=", + "url": "https://github.com/nextcloud/tasks/releases/download/v0.18.0/tasks.tar.gz", + "version": "0.18.0", "description": "Once enabled, a new Tasks menu will appear in your Nextcloud apps menu. From there you can add and delete tasks, edit their title, description, start and due dates and mark them as important. Tasks can be shared between users. Tasks can be synchronized using CalDav (each task list is linked to an Nextcloud calendar, to sync it to your local client: Thunderbird, Evolution, KDE Kontact, iCal … - just add the calendar as a remote calendar in your client). You can download your tasks as ICS files using the download button for each calendar.", "homepage": "https://github.com/nextcloud/tasks/", "licenses": [ diff --git a/pkgs/servers/nextcloud/packages/33.json b/pkgs/servers/nextcloud/packages/33.json index 9e0de83486d2..f8118f92fa10 100644 --- a/pkgs/servers/nextcloud/packages/33.json +++ b/pkgs/servers/nextcloud/packages/33.json @@ -1,8 +1,8 @@ { "bookmarks": { - "hash": "sha256-wf3t7qwxFAJBnPP3PYfa3Q/LrUaoONY47/So2w2fDww=", - "url": "https://github.com/nextcloud/bookmarks/releases/download/v16.2.1/bookmarks-16.2.1.tar.gz", - "version": "16.2.1", + "hash": "sha256-8F+sNG/+M8Ed/q5dcxW95KS5ZBNsEeZNR0P2OIe/HqQ=", + "url": "https://github.com/nextcloud/bookmarks/releases/download/v16.2.2/bookmarks-16.2.2.tar.gz", + "version": "16.2.2", "description": "- πŸ“‚ Sort bookmarks into folders\n- 🏷 Add tags and personal notes\n- ☠ Find broken links and duplicates\n- πŸ“² Synchronize with all your browsers and devices\n- πŸ“” Store archived versions of your links in case they are depublished\n- πŸ” Full-text search on site contents\n- πŸ‘ͺ Share bookmarks with other users, groups and teams or via public links\n- βš› Generate RSS feeds of your collections\n- πŸ“ˆ Stats on how often you access which links\n- πŸ”’ Automatic backups of your bookmarks collection\n- πŸ’Ό Built-in Dashboard widgets for frequent and recent links\n\nRequirements:\n - PHP extensions:\n - intl: *\n - mbstring: *\n - when using MySQL, use at least v8.0", "homepage": "https://github.com/nextcloud/bookmarks", "licenses": [ @@ -30,9 +30,9 @@ ] }, "collectives": { - "hash": "sha256-ul8DRAOna5gCS9v0HhqFGdh/fFv6weG5x8ZMZjTLjhM=", - "url": "https://github.com/nextcloud/collectives/releases/download/v4.4.1/collectives-4.4.1.tar.gz", - "version": "4.4.1", + "hash": "sha256-/MGwV78AAzsoAvI11JeodQsbiMZs1J58NzsGrEIv5EA=", + "url": "https://github.com/nextcloud/collectives/releases/download/v4.4.2/collectives-4.4.2.tar.gz", + "version": "4.4.2", "description": "Your space to collaboratively write and organize. Collectives is designed for groups and communities\nto structure shared knowledge and cultivate trust.\n\n* **πŸ‘₯ Non-hierarchical at its core**: Each collective is backed by a\n [Nextcloud Team](https://docs.nextcloud.com/server/latest/user_manual/en/groupware/contacts.html#teams) - its\n content is owned by the group, not a single user.\n* **πŸ“ Collaborative page editing** thanks to the [Text app](https://github.com/nextcloud/text).\n* **πŸ”€ Well-known [Markdown](https://en.wikipedia.org/wiki/Markdown) syntax** for page formatting.\n* **πŸ”Ž Full-text search** to find content straight away.", "homepage": "https://collectives.cloud/", "licenses": [ @@ -80,9 +80,9 @@ ] }, "deck": { - "hash": "sha256-n0q700fSmqZ9tvsfSquXwh4ujtiBsW3wUaLnohu1MFg=", - "url": "https://github.com/nextcloud-releases/deck/releases/download/v1.17.3/deck-v1.17.3.tar.gz", - "version": "1.17.3", + "hash": "sha256-DVSFbea5d0CL3bdpO8iOBYXKHSbXCQ8oLHi5YkPbCI4=", + "url": "https://github.com/nextcloud-releases/deck/releases/download/v1.17.4/deck-v1.17.4.tar.gz", + "version": "1.17.4", "description": "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- πŸ“₯ Add your tasks to cards and put them in order\n- πŸ“„ Write down additional notes in Markdown\n- πŸ”– Assign labels for even better organization\n- πŸ‘₯ Share with your team, friends or family\n- πŸ“Ž Attach files and embed them in your Markdown description\n- πŸ’¬ Discuss with your team using comments\n- ⚑ Keep track of changes in the activity stream\n- πŸš€ Get your project organized", "homepage": "https://github.com/nextcloud/deck", "licenses": [ @@ -90,13 +90,13 @@ ] }, "end_to_end_encryption": { - "hash": "sha256-+krBgynHh8sz6HZrpHsrRQRc/NedD6fW5jEwPrz8Vas=", - "url": "https://github.com/nextcloud-releases/end_to_end_encryption/releases/download/v2.1.1/end_to_end_encryption-v2.1.1.tar.gz", - "version": "2.1.1", + "hash": "sha256-Z6MyXz//LNVy7Mt+yFbHIY5zGEMfsdwnAEDFsIcrs1M=", + "url": "https://github.com/nextcloud-releases/end_to_end_encryption/releases/download/v2.2.0/end_to_end_encryption-v2.2.0.tar.gz", + "version": "2.2.0", "description": "## **End-to-End Encryption**\n\n### For End Users\n\n**Protect your most sensitive files with strong encryption.**\n\nThe End-to-End Encryption app gives you complete control over your data privacy.\nWith this app, you can encrypt specific folders so that only you (and those you trust) can access their contents.\nYour files are encrypted on your device before they reach the server, ensuring that no oneβ€”not even the server administratorβ€”can read them.\n\n**Benefits:**\n- πŸ”’ **True privacy**: Files are encrypted on your device and can only be decrypted by you\n- πŸ“± **Works across all platforms**: Fully supported on desktop, Android, iOS clients, and as you wish even in the browser\n- 🎯 **Selective encryption**: Choose which folders to encrypt\n- πŸ›‘οΈ **Secure sharing**: Share encrypted files with other users or even secure public upload using the encrypted file drop\n\n---\n\n### For Administrators\n\n**Enterprise-ready end-to-end encryption infrastructure for your Nextcloud instance.**\n\nThis app provides all the necessary server-side APIs and infrastructure to enable End-to-End encryption (E2EE) for your users.\nIt ensures that encrypted data remains secure throughout its lifecycle on your server.\n\n**Technical highlights:**\n- πŸ” **Complete API suite**: Provides all client-side APIs needed for E2EE implementation\n- πŸ”’ **Secure FileDrop integration**: Enables secure file sharing with encryption\n- πŸ›‘οΈ **Zero-knowledge architecture**: Server never has access to encryption keys\n- βš™οΈ **Group restrictions**: Limit app usage to specific user groups if needed\n- πŸ”„ **Background job management**: Automatic rollback handling for failed operations\n\n### Setup\nThis application provides the server-side infrastructure for end-to-end encryption, but it requires client support to function.\nTo enable end-to-end encryption, users will need to install the corresponding client-side app on their devices (desktop, Android, iOS) or use the web client.\n\nUsing the web interface, after enabling it in the personal settings, allows you to encrypt files and folders directly in the browser,\nproviding a seamless experience without needing additional software. But also requires some kind of trust in the server as the code is delivered by the server and could be manipulated.\n\nOnce enable through clients or the web interface, you can create encrypted folders and upload or move files into them.\nThe clients and the web interface will handle the encryption and decryption processes automatically.\n\n⚠️ This comes with some limitations and caveats, as only normal file operations can be handled.\nMeaning that some apps in the web interface do not work with encrypted files.", "homepage": "https://github.com/nextcloud/end_to_end_encryption", "licenses": [ - "agpl" + "AGPL-3.0-or-later" ] }, "files_automatedtagging": { @@ -140,9 +140,9 @@ ] }, "gpoddersync": { - "hash": "sha256-9BcXVauZWFlmlXtnwdSo5xISbhhssa7ao5ulKpziOnU=", - "url": "https://github.com/thrillfall/nextcloud-gpodder/releases/download/3.16.0/gpoddersync.tar.gz", - "version": "3.16.0", + "hash": "sha256-V4iJr1p5uqxdrvE50bjyNTiHdsZATewaBXKQ8Ma0dHg=", + "url": "https://github.com/thrillfall/nextcloud-gpodder/releases/download/3.17.0/gpoddersync.tar.gz", + "version": "3.17.0", "description": "Expose GPodder API to sync podcast consumer apps like AntennaPod", "homepage": "https://github.com/thrillfall/nextcloud-gpodder", "licenses": [ @@ -210,9 +210,9 @@ ] }, "mail": { - "hash": "sha256-K6sJ3XJOq9MoO0lGgqn3iBYuDqqhOMeHWD1DLVY5HaU=", - "url": "https://github.com/nextcloud-releases/mail/releases/download/v5.10.1/mail-v5.10.1.tar.gz", - "version": "5.10.1", + "hash": "sha256-GkLTk3Q1mSUGhU6lsNHmHGkwW6u4XoDCOj405vi8xuY=", + "url": "https://github.com/nextcloud-releases/mail/releases/download/v5.10.3/mail-v5.10.3.tar.gz", + "version": "5.10.3", "description": "**πŸ’Œ A mail app for Nextcloud**\n\n- **πŸš€ Integration with other Nextcloud apps!** Currently Contacts, Calendar & Files – more to come.\n- **πŸ“₯ Multiple mail accounts!** Personal and company account? No problem, and a nice unified inbox. Connect any IMAP account.\n- **πŸ”’ Send & receive encrypted mails!** Using the great [Mailvelope](https://mailvelope.com) browser extension.\n- **πŸ™ˆ We’re not reinventing the wheel!** Based on the great [Horde](https://www.horde.org) libraries.\n- **πŸ“¬ Want to host your own mail server?** We do not have to reimplement this as you could set up [Mail-in-a-Box](https://mailinabox.email)!\n\n## Ethical AI Rating\n\n### Priority Inbox\n\nPositive:\n* The software for training and inferencing of this model is open source.\n* The model is created and trained on-premises based on the user's own data.\n* The training data is accessible to the user, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Thread Summaries (opt-in)\n\n**Rating:** 🟒/🟑/🟠/πŸ”΄\n\nThe rating depends on the installed text processing backend. See [the rating overview](https://docs.nextcloud.com/server/latest/admin_manual/ai/index.html) for details.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).", "homepage": "https://github.com/nextcloud/mail#readme", "licenses": [ @@ -290,9 +290,9 @@ ] }, "onlyoffice": { - "hash": "sha256-ktKopFpHmtRulOQN3XO5BW5QyhURhOv+G77dSn6Nv08=", - "url": "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v10.1.0/onlyoffice.tar.gz", - "version": "10.1.0", + "hash": "sha256-QaohaMbw7bncBqreb5W8XngzqqwqALnsGgT494xfr/E=", + "url": "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v10.1.2/onlyoffice.tar.gz", + "version": "10.1.2", "description": "The ONLYOFFICE app for Nextcloud brings powerful document editing and collaboration tools directly to your Nextcloud environment. With this integration, you can seamlessly create, edit, and co-author text documents, spreadsheets, presentations, and PDFs, as well as build and fill out PDF forms.\n\nCollaborate with your team in real time, make use of Track Changes, version history, comments, integrated chat, and more. Work together on files with federated cloud sharing. Flexible access permissions allow you to control who can view, edit, or comment, ensuring secure role-based collaboration tailored to your needs. Documents can also be protected with watermarks, password settings, and encryption for added security.\n\nThe app offers support for over 50 file formats, including DOCX, XLSX, PPTX, PDF, RTF, TXT, CSV, ODT, ODS, ODP, EPUB, FB2, HTML, HWP, HWPX, Pages, Numbers, Keynote, etc. Seamless desktop and mobile app integration means you'll have access to your Nextcloud files wherever you go.\n\nFurthermore, you can seamlessly connect any AI assistant, including local ones, directly to the editors to work faster and more efficient. This allows you to leverage various AI models for tasks like chatbot interactions, translations, OCR, and more.\n\nWhether you’re working with internal teams or external collaborators, the ONLYOFFICE app for Nextcloud enhances productivity, simplifies workflows, and ensures your files remain secure.", "homepage": "https://www.onlyoffice.com", "licenses": [ @@ -410,9 +410,9 @@ ] }, "tasks": { - "hash": "sha256-I5QdNavgv74FSuXwFWNz/++LOY9Z8kNZhEKf2k118L8=", - "url": "https://github.com/nextcloud/tasks/releases/download/v0.17.1/tasks.tar.gz", - "version": "0.17.1", + "hash": "sha256-nJFU65dthPRWd/SClKM/suZdYU3ic3QsIcXiPzUkQ6c=", + "url": "https://github.com/nextcloud/tasks/releases/download/v0.18.0/tasks.tar.gz", + "version": "0.18.0", "description": "Once enabled, a new Tasks menu will appear in your Nextcloud apps menu. From there you can add and delete tasks, edit their title, description, start and due dates and mark them as important. Tasks can be shared between users. Tasks can be synchronized using CalDav (each task list is linked to an Nextcloud calendar, to sync it to your local client: Thunderbird, Evolution, KDE Kontact, iCal … - just add the calendar as a remote calendar in your client). You can download your tasks as ICS files using the download button for each calendar.", "homepage": "https://github.com/nextcloud/tasks/", "licenses": [ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index fbd4553085ab..b100486f0c2a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2267,6 +2267,7 @@ with pkgs; godotPackages_4_4 godotPackages_4_5 godotPackages_4_6 + godotPackages_4_7 godotPackages_4 godotPackages godot_4_3 @@ -2281,6 +2282,9 @@ with pkgs; godot_4_6 godot_4_6-mono godot_4_6-export-templates-bin + godot_4_7 + godot_4_7-mono + godot_4_7-export-templates-bin godot_4 godot_4-mono godot_4-export-templates-bin diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 3d328cff97a7..56b1538124da 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -22082,6 +22082,12 @@ with self; url = "mirror://cpan/authors/id/I/IS/ISHIGAKI/Module-CPANTS-Analyse-1.02.tar.gz"; hash = "sha256-nhFzm5zQi6LXWllzfx+yl/RYA/KJBjxcdZv8eP1Rbns="; }; + + # Fails with 'symlinks not listed in MANIFEST is not ignored for a non-local distribution' + postPatch = '' + rm -f t/analyse/manifest.t + ''; + propagatedBuildInputs = [ ArchiveAnyLite ArrayDiff