NetBSD/pkgsrc-wip de490bbbun TODO Makefile

bun: start on 1.4.0

but I'm going to stop here too, since this wants a lot of
vendored crates that are not part of the source tarball
DeltaFile
+546-3bun/distinfo
+183-0bun/cargo-depends.mk
+5-6bun/Makefile
+4-0bun/TODO
+738-94 files

LLVM/project 91a0ba8clang/lib/DependencyScanning ModuleDepCollector.cpp, clang/lib/Frontend CompilerInstance.cpp CompilerInvocation.cpp

[clang][modules] Add `-fmodules-ignore-search-path=<path>` (#217061)

This introduces the search-path counterpart to
`-fmodules-ignore-macro=<macro>`. The named header search `<path>` is
dropped from the context hash of every module and physically removed
from every module-build invocation, and kept only for the translation
unit itself.

The motivating case is a build system that hands every compile a
per-target header search directory (e.g. Xcode's `DerivedSources`) even
though no modules include anything from it. Under
`-fmodules-strict-context-hash` those directories feed every module's
context hash, so an SDK module like Foundation is rebuilt once per
target rather than just once. Ignoring the directories for modules lets
those builds share a single module cache while the TUs that really do
need them keep working.

This only works right when no module needs the path: a lookup that would
have resolved through an ignored path simply fails, exactly as ignoring

    [6 lines not shown]
DeltaFile
+194-0clang/test/ClangScanDeps/modules-ignore-search-path-optimize-args.c
+112-0clang/test/ClangScanDeps/modules-context-hash-ignore-search-path.c
+91-0clang/test/Modules/modules-ignore-search-path.c
+20-1clang/lib/Frontend/CompilerInvocation.cpp
+12-0clang/lib/DependencyScanning/ModuleDepCollector.cpp
+11-0clang/lib/Frontend/CompilerInstance.cpp
+440-15 files not shown
+463-411 files

NetBSD/pkgsrc-wip eab3870. TODO

TODO: + tor-browser-15.0.20.
DeltaFile
+1-1TODO
+1-11 files

LLVM/project c2230d1clang/lib/Serialization ModuleManager.cpp

[clang][modules] Cache failures for explicit modules (#215968)

Explicit module files are a (binary) input to the compilation. Just like
any other input file they are expected to not change during compilation.
There's no reason to disable failure caching in the `FileManager` for
them.
DeltaFile
+2-2clang/lib/Serialization/ModuleManager.cpp
+2-21 files

LLVM/project 8c7c7d1clang/lib/Serialization ASTReader.cpp

[clang][modules] Cache failed stats of additional module maps (#215964)

The additional module maps stored in PCMs are just regular input files
that are not expected to change during compilation. There's no reason to
disable failure caching in the `FileManager` for them.
DeltaFile
+1-1clang/lib/Serialization/ASTReader.cpp
+1-11 files

LLVM/project fdd53b9llvm/test/Analysis/ScalarEvolution exit-count-greater-than.ll

[SCEV] Add tests for backedge-taken count of loops exiting on (U|S)GT. (#217721)

Tests for https://github.com/llvm/llvm-project/issues/217537.
DeltaFile
+242-0llvm/test/Analysis/ScalarEvolution/exit-count-greater-than.ll
+242-01 files

LLVM/project 948d280clang/lib/Driver/ToolChains Clang.cpp, clang/test/CodeGenCUDA offload_via_llvm_math.cu

add math functions
DeltaFile
+252-0clang/test/CodeGenCUDA/offload_via_llvm_math.cu
+137-0offload/languages/include/kernel/LanguageMath.h
+71-36clang/lib/Driver/ToolChains/Clang.cpp
+105-0offload/test/offloading/language/math.cpp
+12-0clang/test/Driver/gpu-libc.c
+3-0offload/languages/include/hip/hip_runtime.h
+580-362 files not shown
+584-368 files

Linux/linux cf62c70arch/x86/include/asm elf.h

Merge tag 'execve-v7.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux

Pull execve update from Kees Cook:

 - x86/elf: Correct comment for STACK_RND_MASK() (Lorenzo Stoakes)

* tag 'execve-v7.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
  x86/elf: Correct comment for STACK_RND_MASK()
DeltaFile
+1-1arch/x86/include/asm/elf.h
+1-11 files

LLVM/project 7198b3fllvm/include/llvm/IR ModuleSummaryIndex.h DebugProgramInstruction.h

[IR] Remove dead declarations (#217701)

handleChangedLocation: The corresponding function definition was
removed on January 16, 2024 in commit
d499df02a2508641d67918d7dc41b2e01a4a4114.

noRenameOnPromotion: Added on February 28, 2026 in commit
3e05ab6322cbf2a96362dcacb5907ba519fe552d without a corresponding
function definition.
DeltaFile
+0-4llvm/include/llvm/IR/DebugProgramInstruction.h
+0-2llvm/include/llvm/IR/ModuleSummaryIndex.h
+0-62 files

OPNSense/core 09c8df5src/opnsense/mvc/app/controllers/OPNsense/Interfaces/Api AssignmentController.php, src/opnsense/mvc/app/models/OPNsense/Interfaces NetworkInterface.php

mvc: style
DeltaFile
+0-1src/opnsense/scripts/interfaces/apply_pending_if_changes.php
+0-1src/opnsense/mvc/app/models/OPNsense/Interfaces/NetworkInterface.php
+0-1src/opnsense/mvc/app/models/OPNsense/Interfaces/FieldTypes/GatewayField.php
+0-1src/opnsense/mvc/app/controllers/OPNsense/Interfaces/Api/AssignmentController.php
+0-44 files

LLVM/project a97afdeflang/lib/Lower/OpenMP Clauses.cpp, flang/lib/Parser openmp-parsers.cpp parse-tree.cpp

[flang][OpenMP] Switch SOURCE/SINK to use modifier infrastructure (#217644)

They are instances of the dependence-type modifier in the spec. Putting
them into the modifier infrastructure in the compiler will remove the
need for them to be validated by hand in the future.
DeltaFile
+48-17flang/lib/Semantics/check-omp-structure.cpp
+26-22flang/test/Parser/OpenMP/ordered-depend.f90
+26-21flang/test/Parser/OpenMP/doacross-clause.f90
+19-17flang/lib/Lower/OpenMP/Clauses.cpp
+6-10flang/lib/Parser/parse-tree.cpp
+9-5flang/lib/Parser/openmp-parsers.cpp
+134-928 files not shown
+163-10714 files

FreeNAS/freenas f615128src/middlewared/middlewared/plugins disk.py

Remove product_type usage from disk management
DeltaFile
+2-2src/middlewared/middlewared/plugins/disk.py
+2-21 files

FreeNAS/freenas 374f62dsrc/middlewared/middlewared/pytest/unit/utils test_entitlements.py, src/middlewared/middlewared/utils/entitlements engine.py matrix.py

Make the feature matrix cells self-describing

This commit adds changes to explain what a Vector row means, since it was six bare int fields: a class docstring covering why field order is COLUMNS order, which half of a row a system reads and why Minis fall on the CE side, and the non-obvious part - that a license which omits a feature's key revokes the bare unlicensed grant rather than being a superset of it. Each cell also gets a one-line docstring naming the population it governs.

Every Vector literal is now built by keyword too, so a row names its columns instead of leaving the reader to count cells against COLUMNS, and the trailing comments that were standing in for those names are dropped. No cell value changes.
DeltaFile
+24-24src/middlewared/middlewared/utils/entitlements/matrix.py
+23-0src/middlewared/middlewared/utils/entitlements/engine.py
+9-9src/middlewared/middlewared/pytest/unit/utils/test_entitlements.py
+56-333 files

FreeNAS/freenas 25803bfsrc/middlewared/middlewared/api/v26_0_0 system_product.py, src/middlewared/middlewared/pytest/unit/plugins/truenas test_entitlements_api.py

Remove LTS as a licensed feature

This commit adds changes to drop LTS from the entitlement engine, since the key never acquired a consumer: it carried a matrix row but no policy entry, so nothing ever resolved for it and system.feature_enabled answered it only by reading the raw license list and bypassing the policy entirely. The matching vocabulary removal lands in truenas_license, and the unit suite pins the two together so neither can move alone.
DeltaFile
+3-4src/middlewared/middlewared/pytest/unit/plugins/truenas/test_entitlements_api.py
+1-1src/middlewared/middlewared/api/v26_0_0/system_product.py
+0-1src/middlewared/middlewared/utils/entitlements/matrix.py
+4-63 files

FreeNAS/freenas 79565c2src/middlewared/middlewared/plugins/jbof crud.py, src/middlewared/middlewared/pytest/unit/utils test_entitlements.py test_license_legacy_utils.py

Remove JBOF as a licensed feature

This commit adds changes to drop JBOF from the entitlement engine entirely, since shelf ownership is a quantity that lives in the license enclosure counts and a boolean feature key cannot express it. jbof.licensed goes back to reading those counts directly, and the addhw injection bucket that existed only to synthesise the key goes with it.

The system serial check that used to sit alongside that count stays removed, which is deliberate: the enclosure counts are enough on their own.
DeltaFile
+0-75src/middlewared/middlewared/pytest/unit/utils/test_license_legacy_utils.py
+2-62tests/api2/test_jbof.py
+0-41src/middlewared/middlewared/pytest/unit/utils/test_entitlements.py
+0-12src/middlewared/middlewared/plugins/jbof/crud.py
+0-10src/middlewared/middlewared/utils/license/legacy.py
+0-9src/middlewared/middlewared/utils/entitlements/policy.py
+2-2093 files not shown
+3-2129 files

FreeNAS/freenas 08dacb5src/middlewared/middlewared/plugins/kmip update.py, src/middlewared/middlewared/pytest/unit/utils test_license_info_wire.py test_entitlements.py

Gate KMIP through the entitlement engine

This commit adds changes to gate KMIP key management through the entitlement engine. KMIP had no license check at all until now, so the key is injected into every legacy license to make sure no existing licensee loses key management on upgrade.

Only the enable transition is gated. Disabling KMIP is how escrowed ZFS and SED keys are pulled back to the local database, so a system that loses the entitlement must still be able to turn it off and recover its keys.
DeltaFile
+9-0src/middlewared/middlewared/plugins/kmip/update.py
+5-0src/middlewared/middlewared/utils/license/legacy.py
+5-0src/middlewared/middlewared/pytest/unit/utils/test_license_legacy_utils.py
+4-0src/middlewared/middlewared/pytest/unit/utils/test_entitlements.py
+2-0src/middlewared/middlewared/utils/entitlements/policy.py
+1-0src/middlewared/middlewared/pytest/unit/utils/test_license_info_wire.py
+26-01 files not shown
+27-07 files

FreeNAS/freenas ef24d97src/middlewared/middlewared/pytest/unit/utils test_hardware_probe.py test_hardware_classify.py, src/middlewared/middlewared/utils/hardware classify.py types.py

Record the detected HA platform on HardwareInfo

This commit adds changes to carry the HARDWARE half of detect_platform through classification onto HardwareInfo, with an is_ha_capable predicate reading MANUAL as "not one half of an HA pair", so that question can be answered off the same cached probe everything else already asks. The field is required rather than defaulted, because the only sensible default is MANUAL and every site that forgot to pass it would silently receive the not-HA-capable answer.

is_ha_capable is deliberately not hardware_class.is_appliance, which is true of every iX appliance including the single-controller ones. Nothing reads the new field yet, so no behaviour moves.
DeltaFile
+41-0src/middlewared/middlewared/pytest/unit/utils/test_hardware_classify.py
+21-0src/middlewared/middlewared/utils/hardware/types.py
+8-0src/middlewared/middlewared/pytest/unit/utils/test_hardware_probe.py
+1-0src/middlewared/middlewared/utils/hardware/classify.py
+71-04 files

FreeNAS/freenas 3fdcbecsrc/middlewared/middlewared/pytest/unit/utils test_license_legacy_utils.py, src/middlewared/middlewared/utils/license legacy.py

Ignore legacy licenses issued for freenas models

This commit adds changes to drop a legacy license whose model is freenas prefixed, so a FreeNAS Certified or FreeNAS Mini blob no longer normalizes into a LicenseInfo at all and the system reads as unlicensed. Those units bought none of the functionality the injection below hands out, there is no useful subset to inject for them instead, and the rejection is deliberately silent.

With freenas models rejected outright the enterprise only injection condition could only ever exclude a legacy blob carrying no model at all, so the two injection buckets collapse into one. That does hand a model less blob the SMB fastpath and Veeam flags it did not get before, which is accepted -- such a license cannot exist in the field without stable/26 already tripping over it in product_type.
DeltaFile
+95-51src/middlewared/middlewared/pytest/unit/utils/test_license_legacy_utils.py
+65-71src/middlewared/middlewared/utils/license/legacy.py
+160-1222 files

FreeNAS/freenas 92b1e2dsrc/freenas/usr/local/libexec disable-rootfs-protection, src/middlewared/middlewared/plugins/system product.py

Key product type off hardware rather than the license

This commit adds changes to make system.product_type a pure hardware question — enterprise now means iX hardware excluding Minis, with no license input at all, matching how the entitlement engine already classifies systems. The process-wide product type memo and its reset on license upload go away with it, and disable-rootfs-protection asks the hardware directly so the gate still works with middlewared stopped.

The sudo audit gate in sudoers.mako moved onto the etc render context because a module level get_entitlement call cannot be mocked from integration tests, and the five test files still importing the removed product_type helper are fixed. Those mocks were already inert — the gates they targeted key off fips_available now — so this drops dead fixtures rather than preserving anything.
DeltaFile
+49-52tests/stig/test_01_stig.py
+4-19src/middlewared/middlewared/plugins/system/product.py
+10-12src/freenas/usr/local/libexec/disable-rootfs-protection
+13-7tests/api2/test_audit_sudo.py
+1-11tests/api2/test_root_session_alert.py
+1-8tests/directory_services/test_activedirectory_idmap.py
+78-1094 files not shown
+85-12110 files

FreeNAS/freenas 07d2319tests/api2/zfs_tier test_smoke.py conftest.py

Gate the zfs.tier tests on the ZFSTIER entitlement

This commit fixes an issue where three tests under tests/api2/zfs_tier still called system.is_enterprise after it was removed, so the module scoped pool fixture errored and took the rest of the directory with it. They now ask the engine for ZFSTIER, which is the question zfs.tier.update itself asks.

The old predicate was wrong in both directions anyway. ZFSTIER grants on the two key columns whichever hardware side you are on, so an appliance licensed without the key used to build a six disk pool and then fail, while a CE box whose licence carried the key skipped a test it should have been running.
DeltaFile
+14-10tests/api2/zfs_tier/test_config.py
+10-4tests/api2/zfs_tier/conftest.py
+4-4tests/api2/zfs_tier/test_smoke.py
+28-183 files

FreeNAS/freenas 0b3e291src/middlewared/middlewared/pytest/unit test_integration_entitlement_mocks.py entitlements.py, src/middlewared/middlewared/pytest/unit/plugins test_kmip_update.py test_support.py

Drive consumer entitlement tests through the live engine

This commit adds changes to replace the canned entitlement stubs in the consumer unit tests with a shared helper that points truenas.entitlements.check and .feature at the live policy over synthesized EntitlementFacts. Those tests used to hand the gate an answer and then assert it came back, so none of them could fail on a wrong POLICY row, a flipped vector cell or a missing legacy injection; the test now owns only the facts and the verdict is the engine's.

Also covers the seams around the engine that nothing touched before: the DMI to HardwareClass to check_entitlement join, including the first direct assertion of is_appliance, which is what picks the half of the matrix a machine reads; the legacy injection set, derived from production rather than hand-copied and pinned separately so the swap does not go tautological; the KMIP enable-transition carve-out that keeps a system which lost the entitlement able to disable KMIP and recover its escrowed keys; support ticket routing across all six columns, with the outbound request made structurally impossible; and a scan of tests/ that catches an integration mock naming a feature POLICY no longer carries, which today degrades to no mock at all with nothing logged.
DeltaFile
+166-0src/middlewared/middlewared/pytest/unit/plugins/test_support.py
+105-32src/middlewared/middlewared/pytest/unit/utils/test_license_legacy_utils.py
+111-0src/middlewared/middlewared/pytest/unit/entitlements.py
+100-0src/middlewared/middlewared/pytest/unit/test_integration_entitlement_mocks.py
+96-0src/middlewared/middlewared/pytest/unit/plugins/test_kmip_update.py
+72-0src/middlewared/middlewared/pytest/unit/utils/test_hardware_entitlement_seam.py
+650-329 files not shown
+710-26615 files

FreeNAS/freenas 2fb4fa7src/middlewared/middlewared/api/base/handler version.py, src/middlewared/middlewared/pytest/unit/api/handler/version test_adapt_nested_model_dict.py

Adapt dict of model fields when converting between API versions

This commit fixes an issue where a field declared as dict[str, Model] was never version adapted, so an older client silently got the raw payload back rather than a converted one. The new clause has to come after the single nested model check because both shapes are a plain dict at runtime, and reversing them feeds map values into the model adapter.
DeltaFile
+202-0src/middlewared/middlewared/pytest/unit/api/handler/version/test_adapt_nested_model_dict.py
+15-2src/middlewared/middlewared/api/base/handler/version.py
+217-22 files

FreeNAS/freenas a8176d5src/middlewared/middlewared/pytest/unit/utils test_entitlements.py, src/middlewared/middlewared/utils/entitlements __init__.py legacy.py

Flip SED onto its matrix vector

This commit adds changes to bind SED to its product-matrix vector instead of the transitional legacy shim, which was the last live LegacyRule. The shim required the feature key in every column while the matrix grants SED on iX hardware alone and on any licensed system, so this widens access rather than withdrawing it - no existing system loses SED, and no key injection is needed because all four license-present columns already grant.

Worth noting stable/26 gates SED on a v2 daemon license with no legacy fallback, so every legacy-licensed system in the field currently reads as unlicensed for SED even if it bought the bit. This restores those systems.

The LegacyRule kind, its dispatch branch and the legacy module all stay put for whatever needs a shim next; only the SED binding moves. The docstrings that promised to delete them once the last feature flipped have been corrected to match.
DeltaFile
+40-5src/middlewared/middlewared/pytest/unit/utils/test_entitlements.py
+5-6src/middlewared/middlewared/utils/entitlements/policy.py
+5-1src/middlewared/middlewared/utils/entitlements/legacy.py
+3-2src/middlewared/middlewared/utils/entitlements/__init__.py
+53-144 files

FreeNAS/freenas 050d6d5src/middlewared/middlewared/plugins/webshare sharing.py, src/middlewared/middlewared/pytest/unit/utils test_license_legacy_utils.py test_entitlements.py

Gate Webshare through the entitlement engine

This commit adds changes to gate Webshare through the entitlement engine. Webshare had no license check at all until now, so the key is injected into every legacy license to make sure no existing licensee loses their shares on upgrade.

Enforcement is set-time only, on share creation and on the service config. An update that leaves a share disabled is let through without the entitlement, so a system that has lost it can still turn a share off rather than having to delete it. Existing shares keep serving, since nothing re-reads the entitlement after the fact.

Note the WebUI currently hides Webshare from Enterprise systems and shows it to Community Edition, which is the inverse of this gate. That needs a matching change on the UI side before the two agree.
DeltaFile
+15-2tests/api2/test_sharing_path_resolution_hooks.py
+13-1tests/api2/test_webshare_homedir.py
+10-0src/middlewared/middlewared/plugins/webshare/sharing.py
+6-2src/middlewared/middlewared/pytest/unit/utils/test_entitlements.py
+5-0src/middlewared/middlewared/utils/license/legacy.py
+5-0src/middlewared/middlewared/pytest/unit/utils/test_license_legacy_utils.py
+54-53 files not shown
+58-59 files

FreeNAS/freenas 6500881src/middlewared/middlewared/plugins/failover_ detect_utils.py, src/middlewared/middlewared/pytest/unit/utils test_hardware_classify.py test_hardware_probe.py

Fold platform detection into the hardware package

This commit adds changes to move detect_platform into middlewared.utils.hardware and have the classifier consult it first, so the QEMU and bhyve rules live in one place rather than two copies that can drift apart. The function is moved verbatim; MANUAL is not treated as an answer and falls through to the chassis tag, so R-series, Z-series, Minis and whiteboxes classify exactly as they did before.

One population changes: a QEMU virtual machine stamped as an HA node now classifies as IXKVM even when its chassis tag names a Mini, so it lands in the appliance column instead of the Mini one. detect_platform also picks up its first test coverage, having had none.
DeltaFile
+325-0src/middlewared/middlewared/pytest/unit/utils/test_hardware_detect.py
+144-0src/middlewared/middlewared/utils/hardware/detect.py
+1-125src/middlewared/middlewared/plugins/failover_/detect_utils.py
+82-39src/middlewared/middlewared/pytest/unit/utils/test_hardware_probe.py
+69-35src/middlewared/middlewared/pytest/unit/utils/test_hardware_classify.py
+29-40src/middlewared/middlewared/utils/hardware/probe.py
+650-2397 files not shown
+715-27913 files

FreeNAS/freenas 30bd60csrc/middlewared/middlewared/pytest/unit/utils test_get_license.py, src/middlewared/middlewared/utils/license __init__.py

Make fallback codes stricter
DeltaFile
+19-11src/middlewared/middlewared/pytest/unit/utils/test_get_license.py
+2-9src/middlewared/middlewared/utils/license/__init__.py
+21-202 files

FreeNAS/freenas 0400af8src/middlewared/middlewared/plugins/system product.py, src/middlewared/middlewared/pytest/unit test_ha_panic.py

Key HA capability off the hardware probe

This commit adds changes to answer system.is_ha_capable and ha_panic's HA check from the cached hardware probe rather than from failover.hardware and a second open-coded MANUAL comparison, so one rule lives in one place. The value is unchanged: both paths read the HARDWARE half of the same cached detect_platform, and the 28 callers of system.is_ha_capable are untouched.

failover.hardware stays for the callers that want the platform codename rather than the boolean.
DeltaFile
+27-0src/middlewared/middlewared/pytest/unit/plugins/test_system_product.py
+19-0src/middlewared/middlewared/pytest/unit/test_ha_panic.py
+4-6src/middlewared/middlewared/scripts/ha_panic.py
+2-2src/middlewared/middlewared/plugins/system/product.py
+52-84 files

FreeNAS/freenas dd8658asrc/middlewared/middlewared/plugins/failover_ fenced.py, src/middlewared/middlewared/plugins/update_ profile_.py

Remove various usages of product_type
DeltaFile
+0-13src/middlewared/middlewared/test/integration/assets/product.py
+0-5src/middlewared/middlewared/plugins/failover_/fenced.py
+2-1src/middlewared/middlewared/plugins/update_/profile_.py
+2-193 files

FreeNAS/freenas c1be6cfsrc/middlewared/middlewared/plugins/catalog config.py, src/middlewared/middlewared/pytest/unit/utils test_entitlements.py

Gate the enterprise apps train through the entitlement engine

This commit adds changes to gate the enterprise application train on its matrix vector instead of product_type. The vector only grants on iX hardware holding the key, so licensed Minis, keyed whiteboxes and HA-capable systems with no license stop having the train pinned for them -- they can still select it by hand, since preferred_trains only filters what app.available browses.

Legacy injection stays enterprise-only on purpose: the vector's community-side key cell is zero, so injecting the key into every legacy license would move a holder from one denying cell to another. The TRUENAS-R check sitting next to the gate was dead as well, because failover.hardware can never return a value with that prefix.
DeltaFile
+46-0src/middlewared/middlewared/pytest/unit/utils/test_entitlements.py
+12-13src/middlewared/middlewared/plugins/catalog/config.py
+3-0src/middlewared/middlewared/utils/license/legacy.py
+1-0src/middlewared/middlewared/utils/entitlements/policy.py
+1-0src/middlewared/middlewared/utils/entitlements/engine.py
+63-135 files

FreeNAS/freenas 9fb97besrc/middlewared setup.cfg, src/middlewared/middlewared/utils/entitlements engine.py

Give HardwareClass an is_appliance predicate

This commit adds changes to move the appliance-vs-not test onto HardwareClass itself so the entitlement engine stops open-coding the TRUENAS_HW comparison, and to declare the hardware, entitlement and license package layerings as import-linter contracts.
DeltaFile
+31-0src/middlewared/setup.cfg
+3-7src/middlewared/middlewared/utils/entitlements/engine.py
+9-0src/middlewared/middlewared/utils/hardware/types.py
+43-73 files