diff --git a/pkgs/development/libraries/thrift/default.nix b/pkgs/development/libraries/thrift/default.nix index e1129d25ef4..191f9da99d1 100644 --- a/pkgs/development/libraries/thrift/default.nix +++ b/pkgs/development/libraries/thrift/default.nix @@ -15,6 +15,11 @@ stdenv.mkDerivation { enableParallelBuilding = true; + # Fixes build error: /lib/libfl.so: undefined reference to `yylex'. + # Patch exists in upstream git repo, so it can be removed on the next version + # bump. + patches = [ ./yylex.patch ]; + # Workaround to make the python wrapper not drop this package: # pythonFull.override { extraLibs = [ thrift ]; } pythonPath = []; diff --git a/pkgs/development/libraries/thrift/yylex.patch b/pkgs/development/libraries/thrift/yylex.patch new file mode 100644 index 00000000000..3700bc6a436 --- /dev/null +++ b/pkgs/development/libraries/thrift/yylex.patch @@ -0,0 +1,23 @@ +Fixes build error: + + /lib/libfl.so: undefined reference to `yylex' + +The same patch exists in upstream thrift git repo, commit +ec8daae71004b3c2346bf12b2d74e52ed0815337 +"THRIFT-2386: Thrift refuses to link yylex". +diff --git a/compiler/cpp/src/main.h b/compiler/cpp/src/main.h +index 87af5f6..27285f5 100644 +--- a/compiler/cpp/src/main.h ++++ b/compiler/cpp/src/main.h +@@ -28,8 +28,9 @@ + /** + * Defined in the flex library + */ +- +-int yylex(void); ++extern "C" { ++ int yylex(void); ++} + + int yyparse(void); +