Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ lib, stdenv, fetchurl, fetchpatch, pkg-config, file, zip, wxGTK32, gtk3 2, contribPlugins ? false, hunspell, gamin, boost, wrapGAppsHook 3}: 4 5stdenv.mkDerivation rec { 6 name = "${pname}-${lib.optionalString contribPlugins "full-"}${version}"; 7 version = "20.03"; 8 pname = "codeblocks"; 9 10 src = fetchurl { 11 url = "mirror://sourceforge/codeblocks/Sources/${version}/codeblocks-${version}.tar.xz"; 12 sha256 = "1idaksw1vacmm83krxh5zlb12kad3dkz9ixh70glw1gaibib7vhm"; 13 }; 14 15 nativeBuildInputs = [ pkg-config file zip wrapGAppsHook ]; 16 buildInputs = [ wxGTK32 gtk3 ] 17 ++ lib.optionals contribPlugins [ hunspell gamin boost ]; 18 enableParallelBuilding = true; 19 patches = [ 20 ./writable-projects.patch 21 ./fix-clipboard-flush.patch 22 # Fix build on non-x86 machines 23 (fetchpatch { 24 name = "remove-int3.patch"; 25 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/d76c015c456561d2c7987935a5f4dc6c0932b0c4.patch"; 26 sha256 = "sha256-dpH33vGf2aNdYTeLwxglYDNbvwoY2bGSG6YFRyoGw+A="; 27 }) 28 (fetchpatch { 29 name = "remove-pragmas.patch"; 30 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/966949d5ab7f3cb86e2a2c7ef4e853ee209b5a1a.patch"; 31 sha256 = "sha256-XjejjGOvDk3gl1/n9R69XATGLj5n7tOZNyG8vIlwfyg="; 32 }) 33 # Fix build with GCC 11 34 (fetchpatch { 35 name = "use-gcc11-openfilelist.patch"; 36 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/a5ea6ff7ff301d739d3dc8145db1578f504ee4ca.patch"; 37 sha256 = "sha256-kATaLej8kJf4xm0VicHfRetOepX8O9gOhwdna0qylvQ="; 38 }) 39 (fetchpatch { 40 name = "use-gcc11-ccmanager.patch"; 41 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/04b7c50fb8c6a29b2d84579ee448d2498414d855.patch"; 42 sha256 = "sha256-VPy/M6IvNBxUE4hZRbLExFm0DJf4gmertrqrvsXQNz4="; 43 }) 44 # Fix build with wxGTK 3.1.5 45 (fetchpatch { 46 name = "use-wxgtk315.patch"; 47 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/2345b020b862ec855038dd32a51ebb072647f28d.patch"; 48 sha256 = "sha256-RRjwZA37RllnG8cJdBEnASpEd8z0+ru96fjntO42OvU="; 49 }) 50 (fetchpatch { 51 name = "fix-taskbar-icons.patch"; 52 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/40eb88e3f2b933f19f9933e06c8d0899c54f5e25.patch"; 53 hash = "sha256-Gj5gtxX5QNYAeF+QrPS/bBHLLEmflSxUHSLUK3GSs0I="; 54 }) 55 (fetchpatch { 56 name = "fix-warnings.patch"; 57 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/56ac0396fad7a5b4bbb40bb8c4b5fe1755078aef.patch"; 58 excludes = [ "src/src/environmentsettingsdlg.h" ]; 59 hash = "sha256-tl4rF9iAf1TzCIbKhVFqcxvr1IiPdwqLYZg0SY5BJ7I="; 60 }) 61 (fetchpatch { 62 name = "fix-getstring.patch"; 63 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/dbdf5c5ea9e3161233f0588a7616b7e4fedc7870.patch"; 64 sha256 = "sha256-DrEMFluN8vs0LERa7ULGshl7HdejpsuvXAMjIr/K1fQ="; 65 }) 66 # Fix build with wxGTK 3.1.6 67 (fetchpatch { 68 name = "remove-code-for-old-wx-1.patch"; 69 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/8035dfdff321754819f79e3165401aa59bd8c7f7.patch"; 70 hash = "sha256-Z8Ap03W/XH5VwKFVudJr7rugb0BgI2dKJgQS4yIWbEM="; 71 }) 72 (fetchpatch { 73 name = "remove-code-for-old-wx-2.patch"; 74 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/9a9c6a9d5e3e0f6eff5594ecd61a2222f073be9c.patch"; 75 hash = "sha256-SwYixvbRuXQ+jA1ijmClWkzqzzr0viVuFOAsihGc5dM="; 76 }) 77 (fetchpatch { 78 name = "remove-code-for-old-wx-3.patch"; 79 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/c28746f4887f10e6f9f10eeafae0fb22ecdbf9c7.patch"; 80 hash = "sha256-1lcIiCnY2nBuUsffXC2rdglOE3ccIbogcgTx4M2Ee2I="; 81 }) 82 (fetchpatch { 83 name = "fix-notebookstyles.patch"; 84 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/29315df024251850832583f73e67e515dae10830.patch"; 85 hash = "sha256-Uc1V0eEbNljnN+1Dqb/35MLSSoLjyuRZMTofgcXRyb8="; 86 }) 87 (fetchpatch { 88 name = "fix-regex.patch"; 89 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/46720043319758cb0e798eb23520063583c40eaa.patch"; 90 hash = "sha256-Aix58T0JJcX/7VZukU/9i/nXh9GJywXC3yXEyUZK0js="; 91 }) 92 (fetchpatch { 93 name = "fix-build-with-clang.patch"; 94 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/92cb2239662952e3b59b31e03edd653bb8066e64.patch"; 95 hash = "sha256-XI7JW9Nuueb7muKpaC2icM/CxhrCJtO48cLHK+BVWXI="; 96 }) 97 (fetchpatch { 98 name = "fix-normalize.patch"; 99 url = "https://github.com/archlinux/svntogit-community/raw/458eacb60bc0e71e3d333943cebbc41e75ed0956/trunk/sc_wxtypes-normalize.patch"; 100 hash = "sha256-7wEwDLwuNUWHUwHjFyq74sHiuEha1VexRLEX42rPZSs="; 101 }) 102 # Fix HiDPI 103 (fetchpatch { 104 name = "update-about-dialog.patch"; 105 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/a4aacc92640b587ad049cd6aa68c637e536e9ab5.patch"; 106 hash = "sha256-2S4sVn+Dq5y9xcxCkzQ+WeR+qWxAOLbQUZEnk060RI0="; 107 }) 108 (fetchpatch { 109 name = "add-display-info.patch"; 110 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/f2f127cf5cd97c7da6a957a3f7764cb25cc9017e.patch"; 111 hash = "sha256-C0dVfC0NIHMXfWNlOwjzoGz5tmG2dlnU/EE92Jjebbs="; 112 }) 113 (fetchpatch { 114 name = "fix-hidpi.patch"; 115 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/b2e4f1279804e1d11b71bc75eeb37072c3589296.patch"; 116 hash = "sha256-/Xp6ww9C3V6I67tTA4MrGpSGo3J0MXzFjzQU7RxY84U="; 117 }) 118 ]; 119 preConfigure = "substituteInPlace ./configure --replace /usr/bin/file ${file}/bin/file"; 120 postConfigure = lib.optionalString stdenv.isLinux "substituteInPlace libtool --replace ldconfig ${stdenv.cc.libc.bin}/bin/ldconfig"; 121 configureFlags = [ "--enable-pch=no" ] ++ lib.optionals contribPlugins [ 122 ("--with-contrib-plugins" + lib.optionalString stdenv.isDarwin "=all,-FileManager,-NassiShneiderman") 123 "--with-boost-libdir=${boost}/lib" 124 ]; 125 postInstall = lib.optionalString stdenv.isDarwin '' 126 ln -s $out/lib/codeblocks/plugins $out/share/codeblocks/plugins 127 ''; 128 129 meta = with lib; { 130 maintainers = [ maintainers.linquize ]; 131 platforms = platforms.all; 132 description = "The open source, cross platform, free C, C++ and Fortran IDE"; 133 longDescription = 134 '' 135 Code::Blocks is a free C, C++ and Fortran IDE built to meet the most demanding needs of its users. 136 It is designed to be very extensible and fully configurable. 137 Finally, an IDE with all the features you need, having a consistent look, feel and operation across platforms. 138 ''; 139 homepage = "http://www.codeblocks.org"; 140 license = licenses.gpl3; 141 }; 142}