From 3ba984c2e1d3604e0bf51dc856da5208e0d93e28 Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Wed, 15 Nov 2023 22:46:02 -0500 Subject: [PATCH] NSPlist: fix build with clang 16 The pre-generated lexer uses the `register` storage class specifier, which is not supported in C++17 (the default for clang 16). Regenerate it for improved compatibility. --- pkgs/development/libraries/NSPlist/default.nix | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/NSPlist/default.nix b/pkgs/development/libraries/NSPlist/default.nix index 680e86dd64ef..0ad160673973 100644 --- a/pkgs/development/libraries/NSPlist/default.nix +++ b/pkgs/development/libraries/NSPlist/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, cmake }: +{ lib, stdenv, fetchFromGitHub, flex, cmake }: stdenv.mkDerivation { pname = "NSPlist"; @@ -11,7 +11,12 @@ stdenv.mkDerivation { sha256 = "0v4yfiwfd08hmh2ydgy6pnmlzjbd96k78dsla9pfd56ka89aw74r"; }; - nativeBuildInputs = [ cmake ]; + nativeBuildInputs = [ flex cmake ]; + + preConfigure = '' + # Regenerate the lexer for improved compatibility with clang 16. + flex -o src/NSPlistLexer.cpp <(tail --lines=+17 src/NSPlistLexer.l) + ''; meta = with lib; { maintainers = with maintainers; [ matthewbauer ];