From e2d7b1150cb91787b909588dc07ce807a918f89f Mon Sep 17 00:00:00 2001 From: Jamie Magee Date: Wed, 28 Jan 2026 14:02:31 -0800 Subject: [PATCH] microsoft-identity-broker: 2.0.1 -> 2.5.0 Version 2.5.0 is a complete rewrite from Java to native binaries. Package changes: - Switch from Java/JNI wrapper to autoPatchelfHook for native ELF binaries - Update dependencies for the new native implementation (webkitgtk, gtk3, libsecret, p11-kit, etc.) - Add versionSuffix to handle upstream's new naming convention (e.g., 2.5.0-noble) Update script changes: - Scrape the pool directory HTML instead of Packages.gz, which Microsoft stopped updating - Switch from Ubuntu 22.04 to 24.04 package repository - Handle version suffixes in the new filename format --- .../mi/microsoft-identity-broker/package.nix | 110 ++++++++---------- .../mi/microsoft-identity-broker/update.sh | 39 +++---- 2 files changed, 63 insertions(+), 86 deletions(-) diff --git a/pkgs/by-name/mi/microsoft-identity-broker/package.nix b/pkgs/by-name/mi/microsoft-identity-broker/package.nix index 55e854c1cb75..8d18feca9dac 100644 --- a/pkgs/by-name/mi/microsoft-identity-broker/package.nix +++ b/pkgs/by-name/mi/microsoft-identity-broker/package.nix @@ -3,95 +3,81 @@ lib, fetchurl, dpkg, - openjdk11, - jnr-posix, - makeWrapper, - zip, + autoPatchelfHook, nixosTests, - bash, + dbus, + util-linux, + curl, + openssl, + libx11, + webkitgtk_4_1, + gtk3, + zlib, + pango, + harfbuzz, + atk, + cairo, + gdk-pixbuf, + libsoup_3, glib, - libxtst, - alsa-lib, + libsecret, + p11-kit, }: stdenv.mkDerivation rec { pname = "microsoft-identity-broker"; - version = "2.0.1"; + version = "2.5.0"; src = fetchurl { - url = "https://packages.microsoft.com/ubuntu/24.04/prod/pool/main/m/microsoft-identity-broker/microsoft-identity-broker_${version}_amd64.deb"; - hash = "sha256-JheJnsu1ZxJbcpt0367FqfHVdwWWvPem2fm0i8s7MGE="; + url = "https://packages.microsoft.com/ubuntu/24.04/prod/pool/main/m/microsoft-identity-broker/microsoft-identity-broker_${version}-noble_amd64.deb"; + hash = "sha256-zid9kjjz3mBfJFfiYUoqlIyQSsR041JN3Ib+JFSSEbE="; }; nativeBuildInputs = [ dpkg - makeWrapper - openjdk11 - zip + autoPatchelfHook ]; buildInputs = [ + dbus + util-linux + curl + openssl + libx11 + webkitgtk_4_1 + gtk3 + zlib + pango + harfbuzz + atk + cairo + gdk-pixbuf + libsoup_3 glib - libxtst - alsa-lib + libsecret + p11-kit + stdenv.cc.cc.lib ]; - buildPhase = '' - runHook preBuild - rm opt/microsoft/identity-broker/lib/jnr-posix-3.1.4.jar - runHook postBuild - ''; - installPhase = '' runHook preInstall - mkdir -p $out/lib/microsoft-identity-broker - cp -a opt/microsoft/identity-broker/lib/* $out/lib/microsoft-identity-broker - cp -a usr/* $out - for jar in $out/lib/microsoft-identity-broker/*.jar; do - classpath="$classpath:$jar" - done - classpath="$classpath:${jnr-posix}/share/java/jnr-posix-${jnr-posix.version}.jar" mkdir -p $out/bin - makeWrapper ${openjdk11}/bin/java $out/bin/microsoft-identity-broker \ - --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath buildInputs}" \ - --add-flags "-classpath $classpath" \ - --add-flags "-Xmx256m -Xss256k -XX:+UseParallelGC -XX:ParallelGCThreads=1" \ - --add-flags "-verbose" \ - --add-flags "-Djava.net.useSystemProxies=true" \ - --add-flags "com.microsoft.identity.broker.service.IdentityBrokerService" - - makeWrapper ${openjdk11}/bin/java $out/bin/microsoft-identity-device-broker \ - --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath buildInputs}" \ - --add-flags "-classpath $classpath" \ - --add-flags "-Xmx256m -Xss256k -XX:+UseParallelGC -XX:ParallelGCThreads=1" \ - --add-flags "-verbose" \ - --add-flags "-Djava.net.useSystemProxies=true" \ - --add-flags "com.microsoft.identity.broker.service.DeviceBrokerService" + cp -a opt/microsoft/identity-broker/bin/* $out/bin/ + cp -a usr/* $out/ runHook postInstall ''; postInstall = '' - substituteInPlace \ - $out/lib/systemd/user/microsoft-identity-broker.service \ - $out/lib/systemd/system/microsoft-identity-device-broker.service \ - $out/share/dbus-1/system-services/com.microsoft.identity.devicebroker1.service \ - $out/share/dbus-1/services/com.microsoft.identity.broker1.service \ - --replace \ - ExecStartPre=sh \ - ExecStartPre=${bash}/bin/sh \ - --replace \ - ExecStartPre=!sh \ - ExecStartPre=!${bash}/bin/sh \ - --replace \ - /opt/microsoft/identity-broker/bin/microsoft-identity-broker \ - $out/bin/microsoft-identity-broker \ - --replace \ + substituteInPlace $out/lib/systemd/system/microsoft-identity-device-broker.service \ + --replace-fail \ /opt/microsoft/identity-broker/bin/microsoft-identity-device-broker \ - $out/bin/microsoft-identity-device-broker \ - --replace \ - /usr/lib/jvm/java-11-openjdk-amd64 \ - ${openjdk11} + $out/bin/microsoft-identity-device-broker + + substituteInPlace $out/share/dbus-1/services/com.microsoft.identity.broker1.service \ + --replace-fail \ + /opt/microsoft/identity-broker/bin/microsoft-identity-broker \ + $out/bin/microsoft-identity-broker ''; passthru = { diff --git a/pkgs/by-name/mi/microsoft-identity-broker/update.sh b/pkgs/by-name/mi/microsoft-identity-broker/update.sh index ecd363cfc409..56685910aa71 100755 --- a/pkgs/by-name/mi/microsoft-identity-broker/update.sh +++ b/pkgs/by-name/mi/microsoft-identity-broker/update.sh @@ -1,30 +1,21 @@ #! /usr/bin/env nix-shell -#! nix-shell -i bash -p curl gzip dpkg common-updater-scripts +#! nix-shell -i bash -p curl common-updater-scripts -index_file=$(curl -sL https://packages.microsoft.com/ubuntu/22.04/prod/dists/jammy/main/binary-amd64/Packages.gz | gzip -dc) +set -euo pipefail -latest_version="0" +# Scrape the pool directory since Microsoft doesn't keep Packages.gz up to date +pool_url="https://packages.microsoft.com/ubuntu/24.04/prod/pool/main/m/microsoft-identity-broker/" +pool_listing=$(curl -sL "$pool_url") -echo "$index_file" | while read -r line; do - if [[ "$line" =~ ^Package:[[:space:]]*(.*) ]]; then - Package="${BASH_REMATCH[1]}" - fi - if [[ "$line" =~ ^Version:[[:space:]]*(.*) ]]; then - Version="${BASH_REMATCH[1]}" - fi - if [[ "$line" =~ ^SHA256:[[:space:]]*(.*) ]]; then - SHA256="${BASH_REMATCH[1]}" - fi +# Extract version from filenames like: microsoft-identity-broker_2.5.0-noble_amd64.deb +latest_version=$(echo "$pool_listing" \ + | grep -oP 'microsoft-identity-broker_\K[0-9]+\.[0-9]+\.[0-9]+' \ + | sort -V \ + | tail -n1) - if ! [[ "$line" ]] && [[ "${Package}" == "microsoft-identity-broker" ]]; then - if ( dpkg --compare-versions ${Version} gt ${latest_version} ); then - latest_version="${Version}" - sri_hash=$(nix-hash --to-sri --type sha256 "$SHA256") +if [[ -z "$latest_version" ]]; then + echo "Failed to find any versions" >&2 + exit 1 +fi - echo $latest_version $sri_hash - fi - - Package="" - Version="" - fi -done | tail -n 1 | (read version hash; update-source-version microsoft-identity-broker $version $hash) +update-source-version microsoft-identity-broker "$latest_version" --file="$(dirname "$0")/package.nix"