diff --git a/pkgs/by-name/op/openscad/boost-1.89.patch b/pkgs/by-name/op/openscad/boost-1.89.patch new file mode 100644 index 000000000000..9b01fbcd24cb --- /dev/null +++ b/pkgs/by-name/op/openscad/boost-1.89.patch @@ -0,0 +1,65 @@ +diff --git a/features/boost.prf b/features/boost.prf +index 518d08b8f..4e092f6e7 100644 +--- a/features/boost.prf ++++ b/features/boost.prf +@@ -17,7 +17,7 @@ CONFIG(mingw-cross-env)|CONFIG(mingw-cross-env-shared) { + DEFINES += BOOST_STATIC + DEFINES += Boost_USE_STATIC_LIBS + } +- BOOST_LINK_FLAGS = -lboost_thread_win32-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_system-mt -lboost_regex-mt -lboost_chrono-mt ++ BOOST_LINK_FLAGS = -lboost_thread_win32-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_regex-mt -lboost_chrono-mt + } + + # MSYS2 +@@ -25,7 +25,7 @@ isEmpty(BOOST_LINK_FLAGS):win32-g++ { + DEFINES += BOOST_STATIC + DEFINES += BOOST_THREAD_USE_LIB + DEFINES += Boost_USE_STATIC_LIBS +- BOOST_LINK_FLAGS = -lboost_thread-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_system-mt -lboost_regex-mt ++ BOOST_LINK_FLAGS = -lboost_thread-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_regex-mt + } + + # check for OPENSCAD_LIBDIR + multithread +@@ -33,10 +33,10 @@ isEmpty(BOOST_LINK_FLAGS) { + OPENSCAD_LIBDIR = $$(OPENSCAD_LIBRARIES) + !isEmpty(OPENSCAD_LIBDIR) { + exists($$OPENSCAD_LIBDIR/lib/libboost*thread-mt*) { +- BOOST_LINK_FLAGS = -lboost_thread-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_system-mt -lboost_regex-mt ++ BOOST_LINK_FLAGS = -lboost_thread-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_regex-mt + } else { + exists($$OPENSCAD_LIBDIR/lib/libboost*thread*) { +- BOOST_LINK_FLAGS = -lboost_thread -lboost_program_options -lboost_filesystem -lboost_system -lboost_regex ++ BOOST_LINK_FLAGS = -lboost_thread -lboost_program_options -lboost_filesystem -lboost_regex + } + } + } +@@ -47,10 +47,10 @@ isEmpty(BOOST_LINK_FLAGS) { + BOOST_DIR = $$(BOOSTDIR) + !isEmpty(BOOST_DIR) { + exists($$BOOST_DIR/lib/libboost*thread-mt*) { +- BOOST_LINK_FLAGS = -lboost_thread-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_system-mt -lboost_regex-mt ++ BOOST_LINK_FLAGS = -lboost_thread-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_regex-mt + } else { + exists($$BOOST_DIR/lib/libboost*thread*) { +- BOOST_LINK_FLAGS = -lboost_thread -lboost_program_options -lboost_filesystem -lboost_system -lboost_regex ++ BOOST_LINK_FLAGS = -lboost_thread -lboost_program_options -lboost_filesystem -lboost_regex + } + } + } +@@ -64,14 +64,14 @@ isEmpty(BOOST_LINK_FLAGS) { + BMT_TEST4 = /usr/local/lib/libboost*thread-mt* # homebrew + BMT_TEST5 = /opt/local/lib/libboost*thread-mt* # macports + exists($$BMT_TEST1)|exists($$BMT_TEST2)|exists($$BMT_TEST3)|exists($$BMT_TEST4)|exists($$BMT_TEST5) { +- BOOST_LINK_FLAGS = -lboost_thread-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_system-mt -lboost_regex-mt ++ BOOST_LINK_FLAGS = -lboost_thread-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_regex-mt + } + } + } + + isEmpty(BOOST_LINK_FLAGS) { + unix|macx { +- BOOST_LINK_FLAGS = -lboost_thread -lboost_program_options -lboost_filesystem -lboost_system -lboost_regex ++ BOOST_LINK_FLAGS = -lboost_thread -lboost_program_options -lboost_filesystem -lboost_regex + } + } + diff --git a/pkgs/by-name/op/openscad/package.nix b/pkgs/by-name/op/openscad/package.nix index cde2b79f3020..324baf21b85e 100644 --- a/pkgs/by-name/op/openscad/package.nix +++ b/pkgs/by-name/op/openscad/package.nix @@ -32,16 +32,17 @@ cairo, openscad, runCommand, + versionCheckHook, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "openscad"; version = "2021.01"; src = fetchFromGitHub { owner = "openscad"; repo = "openscad"; - rev = "${pname}-${version}"; + rev = "${finalAttrs.pname}-${finalAttrs.version}"; sha256 = "sha256-2tOLqpFt5klFPxHNONnHVzBKEFWn4+ufx/MU+eYbliA="; }; @@ -84,6 +85,9 @@ stdenv.mkDerivation rec { sed -i 's/& / \&/g;s/\*\*/\0 /g;s/^\(.\) /\1\t/' "$out" ''; }) + # unfortunately the archlinux patch does not apply cleanly + # source: https://gitlab.archlinux.org/archlinux/packaging/packages/openscad/-/raw/ecc27e16ae6fee51c6806690d76f9ba326af79c1/boost-1.89.patch + ./boost-1.89.patch ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ # ref. https://github.com/openscad/openscad/pull/4013 merged upstream @@ -116,6 +120,7 @@ stdenv.mkDerivation rec { libsForQt5.qmake libsForQt5.wrapQtAppsHook wrapGAppsHook3 + versionCheckHook ]; buildInputs = [ @@ -149,7 +154,7 @@ stdenv.mkDerivation rec { ++ lib.optional spacenavSupport libspnav; qmakeFlags = [ - "VERSION=${version}" + "VERSION=${finalAttrs.version}" "LIB3MF_INCLUDEPATH=${lib3mf.dev}/include/lib3mf/Bindings/Cpp" "LIB3MF_LIBPATH=${lib3mf}/lib" ] @@ -165,6 +170,8 @@ stdenv.mkDerivation rec { make objects/parser.cxx ''; + doInstallCheck = true; + postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' mkdir $out/Applications mv $out/bin/*.app $out/Applications @@ -201,9 +208,9 @@ stdenv.mkDerivation rec { passthru.tests = { lib3mf_support = - runCommand "${pname}-lib3mf-support-test" + runCommand "${finalAttrs.pname}-lib3mf-support-test" { - nativeBuildInputs = [ openscad ]; + nativeBuildInputs = [ finalAttrs.finalPackage ]; } '' echo "cube([1, 1, 1]);" | openscad -o cube.3mf - @@ -211,4 +218,4 @@ stdenv.mkDerivation rec { mv cube-import.3mf $out ''; }; -} +})