build-tools.scm 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571
  1. ;;; GNU Guix --- Functional package management for GNU
  2. ;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
  3. ;;; Copyright © 2017 Corentin Bocquillon <corentin@nybble.fr>
  4. ;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
  5. ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
  6. ;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
  7. ;;; Copyright © 2018, 2020 Marius Bakke <mbakke@fastmail.com>
  8. ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
  9. ;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
  10. ;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
  11. ;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com>
  12. ;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org>
  13. ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
  14. ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
  15. ;;; Copyright © 2021 qblade <qblade@protonmail.com>
  16. ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
  17. ;;;
  18. ;;; This file is part of GNU Guix.
  19. ;;;
  20. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  21. ;;; under the terms of the GNU General Public License as published by
  22. ;;; the Free Software Foundation; either version 3 of the License, or (at
  23. ;;; your option) any later version.
  24. ;;;
  25. ;;; GNU Guix is distributed in the hope that it will be useful, but
  26. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  27. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  28. ;;; GNU General Public License for more details.
  29. ;;;
  30. ;;; You should have received a copy of the GNU General Public License
  31. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  32. (define-module (gnu packages build-tools)
  33. #:use-module ((guix licenses) #:prefix license:)
  34. #:use-module (guix utils)
  35. #:use-module (guix packages)
  36. #:use-module (guix download)
  37. #:use-module (guix git-download)
  38. #:use-module (guix build-system cmake)
  39. #:use-module (gnu packages)
  40. #:use-module (gnu packages adns)
  41. #:use-module (gnu packages base)
  42. #:use-module (gnu packages bash)
  43. #:use-module (gnu packages check)
  44. #:use-module (gnu packages compression)
  45. #:use-module (gnu packages cpp)
  46. #:use-module (gnu packages linux)
  47. #:use-module (gnu packages logging)
  48. #:use-module (gnu packages lua)
  49. #:use-module (gnu packages package-management)
  50. #:use-module (gnu packages pcre)
  51. #:use-module (gnu packages pkg-config)
  52. #:use-module (gnu packages pretty-print)
  53. #:use-module (gnu packages protobuf)
  54. #:use-module (gnu packages python)
  55. #:use-module (gnu packages python-crypto)
  56. #:use-module (gnu packages python-web)
  57. #:use-module (gnu packages python-xyz)
  58. #:use-module (gnu packages regex)
  59. #:use-module (gnu packages rpc)
  60. #:use-module (gnu packages sqlite)
  61. #:use-module (gnu packages tls)
  62. #:use-module (gnu packages ninja)
  63. #:use-module (guix build-system gnu)
  64. #:use-module (guix build-system python))
  65. (define-public bam
  66. (package
  67. (name "bam")
  68. (version "0.5.1")
  69. (source (origin
  70. ;; do not use auto-generated tarballs
  71. (method git-fetch)
  72. (uri (git-reference
  73. (url "https://github.com/matricks/bam")
  74. (commit (string-append "v" version))))
  75. (file-name (git-file-name name version))
  76. (sha256
  77. (base32
  78. "13br735ig7lygvzyfd15fc2rdygrqm503j6xj5xkrl1r7w2wipq6"))))
  79. (build-system gnu-build-system)
  80. (arguments
  81. `(#:make-flags `(,(string-append "CC=" ,(cc-for-target))
  82. ,(string-append "INSTALL_PREFIX="
  83. (assoc-ref %outputs "out")))
  84. #:test-target "test"
  85. #:phases
  86. (modify-phases %standard-phases
  87. (delete 'configure))))
  88. (native-inputs
  89. `(("python" ,python-2)))
  90. (inputs
  91. (list lua))
  92. (home-page "https://matricks.github.io/bam/")
  93. (synopsis "Fast and flexible build system")
  94. (description "Bam is a fast and flexible build system. Bam uses Lua to
  95. describe the build process. It takes its inspiration for the script files
  96. from scons. While scons focuses on being 100% correct when building, bam
  97. makes a few sacrifices to acquire fast full and incremental build times.")
  98. (license license:bsd-3)))
  99. (define-public bear
  100. (package
  101. (name "bear")
  102. (version "3.0.17")
  103. (source
  104. (origin
  105. (method git-fetch)
  106. (uri (git-reference
  107. (url "https://github.com/rizsotto/Bear")
  108. (commit version)))
  109. (file-name (git-file-name name version))
  110. (sha256
  111. (base32 "0klbk99qphibrp2944w8gn6x1dwwgrbm7f2bh530wjp5h3bpkr45"))))
  112. (build-system cmake-build-system)
  113. (arguments
  114. `(#:phases (modify-phases %standard-phases
  115. (add-after 'unpack 'disable-TEST_BEFORE_INSTALL
  116. (lambda _
  117. (substitute* "CMakeLists.txt"
  118. ;; Delete the matching line—and comment out the next.
  119. ((".*TEST_(BEFORE_INSTALL|COMMAND).*") "#"))))
  120. (add-before 'check 'set-build-environment
  121. (lambda _
  122. (setenv "CC" "gcc")))
  123. (replace 'check
  124. ;; TODO: Test configuration is incomplete.
  125. (lambda* (#:key tests? #:allow-other-keys)
  126. (when tests?
  127. (invoke "ctest")))))))
  128. (inputs
  129. `(("c-ares" ,c-ares)
  130. ("fmt" ,fmt)
  131. ("grpc" ,grpc)
  132. ("json-modern-cxx" ,json-modern-cxx)
  133. ("protobuf" ,protobuf)
  134. ("python" ,python-wrapper)
  135. ("re2" ,re2)
  136. ("spdlog" ,spdlog)))
  137. (native-inputs
  138. `(("abseil-cpp" ,abseil-cpp)
  139. ("googletest" ,googletest)
  140. ("openssl" ,openssl)
  141. ("pkg-config" ,pkg-config)
  142. ("python-lit" ,python-lit)
  143. ("zlib" ,zlib)))
  144. (home-page "https://github.com/rizsotto/Bear")
  145. (synopsis "Tool for generating a compilation database")
  146. (description "A JSON compilation database is used in the Clang project to
  147. provide information on how a given compilation unit is processed. With this,
  148. it is easy to re-run the compilation with alternate programs. Bear is used to
  149. generate such a compilation database.")
  150. (license license:gpl3+)))
  151. (define-public bmake
  152. (package
  153. (name "bmake")
  154. (version "20211212")
  155. (source
  156. (origin
  157. (method url-fetch)
  158. (uri (string-append
  159. "http://www.crufty.net/ftp/pub/sjg/bmake-" version ".tar.gz"))
  160. (sha256
  161. (base32 "17lywks7fy5538vwyyvbvxcq5mgnd5si7f2qgw85sgqj7mdr4xdd"))))
  162. (build-system gnu-build-system)
  163. (inputs
  164. (list bash-minimal))
  165. (native-inputs
  166. (list coreutils))
  167. (arguments
  168. `(#:tests? #f ; test during build
  169. #:phases
  170. (modify-phases %standard-phases
  171. (add-after 'configure 'fix-test ; fix from nixpkgs
  172. (lambda _
  173. (substitute* "unit-tests/unexport-env.mk"
  174. (("PATH=\t/bin:/usr/bin:/sbin:/usr/sbin")
  175. "PATH := ${PATH}"))))
  176. (add-after 'configure 'remove-fail-tests
  177. (lambda _
  178. (substitute* "unit-tests/Makefile"
  179. (("cmd-interrupt") "")
  180. (("varmod-localtime") "")))))
  181. #:configure-flags
  182. (list
  183. (string-append
  184. "--with-defshell=" (assoc-ref %build-inputs "bash") "/bin/bash")
  185. (string-append
  186. "--with-default-sys-path=" (assoc-ref %outputs "out") "/share/mk"))
  187. #:make-flags
  188. (list "INSTALL=install"))) ;; use coreutils install
  189. (home-page "http://www.crufty.net/help/sjg/bmake.htm")
  190. (synopsis "BSD's make")
  191. (description
  192. "bmake is a program designed to simplify the maintenance of other
  193. programs. Its input is a list of specifications as to the files upon which
  194. programs and other files depend.")
  195. (license license:bsd-3)))
  196. (define-public gn
  197. (let ((commit "e327ffdc503815916db2543ec000226a8df45163")
  198. (revision "1819")) ;as returned by `git describe`, used below
  199. (package
  200. (name "gn")
  201. (version (git-version "0.0" revision commit))
  202. (home-page "https://gn.googlesource.com/gn")
  203. (source (origin
  204. (method git-fetch)
  205. (uri (git-reference (url home-page) (commit commit)))
  206. (sha256
  207. (base32
  208. "0kvlfj3www84zp1vmxh76x8fdjm9hyk8lkh2vdsidafpmm75fphr"))
  209. (file-name (git-file-name name version))))
  210. (build-system gnu-build-system)
  211. (arguments
  212. `(#:phases (modify-phases %standard-phases
  213. (add-before 'configure 'set-build-environment
  214. (lambda _
  215. (setenv "CC" "gcc") (setenv "CXX" "g++")
  216. (setenv "AR" "ar")))
  217. (replace 'configure
  218. (lambda _
  219. (invoke "python" "build/gen.py"
  220. "--no-last-commit-position")))
  221. (add-after 'configure 'create-last-commit-position
  222. (lambda _
  223. ;; Create "last_commit_position.h" to avoid a dependency
  224. ;; on 'git' (and the checkout..).
  225. (call-with-output-file "out/last_commit_position.h"
  226. (lambda (port)
  227. (format port
  228. (string-append
  229. "#define LAST_COMMIT_POSITION_NUM ~a\n"
  230. "#define LAST_COMMIT_POSITION \"~a (~a)\"\n")
  231. ,revision ,revision ,(string-take commit 8))))))
  232. (replace 'build
  233. (lambda _
  234. (invoke "ninja" "-C" "out" "gn"
  235. "-j" (number->string (parallel-job-count)))))
  236. (replace 'check
  237. (lambda* (#:key tests? #:allow-other-keys)
  238. (if tests?
  239. (begin
  240. (invoke "ninja" "-C" "out" "gn_unittests"
  241. "-j" (number->string (parallel-job-count)))
  242. (invoke "./out/gn_unittests"))
  243. (format #t "test suite not run~%"))))
  244. (replace 'install
  245. (lambda* (#:key outputs #:allow-other-keys)
  246. (let ((out (assoc-ref outputs "out")))
  247. (install-file "out/gn" (string-append out "/bin"))))))))
  248. (native-inputs
  249. `(("ninja" ,ninja)
  250. ("python" ,python-wrapper)))
  251. (synopsis "Generate Ninja build files")
  252. (description
  253. "GN is a tool that collects information about a project from @file{.gn}
  254. files and generates build instructions for the Ninja build system.")
  255. ;; GN is distributed as BSD-3, but bundles some files from ICU using the
  256. ;; X11 license.
  257. (license (list license:bsd-3 license:x11)))))
  258. (define-public meson
  259. (package
  260. (name "meson")
  261. (version "0.60.3")
  262. (source (origin
  263. (method url-fetch)
  264. (uri (string-append "https://github.com/mesonbuild/meson/"
  265. "releases/download/" version "/meson-"
  266. version ".tar.gz"))
  267. (sha256
  268. (base32
  269. "13mrrizg4vl6n5k7fz6amyafnn3i097dcarr552qc0ca6nlmzjl7"))
  270. (patches (search-patches
  271. "meson-allow-dirs-outside-of-prefix.patch"))))
  272. (build-system python-build-system)
  273. (arguments
  274. `(;; FIXME: Tests require many additional inputs and patching many
  275. ;; hard-coded file system locations in "run_unittests.py".
  276. #:tests? #f
  277. #:phases (modify-phases %standard-phases
  278. ;; Meson calls the various executables in out/bin through the
  279. ;; Python interpreter, so we cannot use the shell wrapper.
  280. (replace 'wrap
  281. (lambda* (#:key outputs inputs #:allow-other-keys)
  282. (let ((python-version
  283. (python-version (assoc-ref inputs "python")))
  284. (output (assoc-ref outputs "out")))
  285. (substitute* (string-append output "/bin/meson")
  286. (("# EASY-INSTALL-ENTRY-SCRIPT")
  287. (format #f "\
  288. import sys
  289. sys.path.insert(0, '~a/lib/python~a/site-packages')
  290. # EASY-INSTALL-ENTRY-SCRIPT"
  291. output python-version)))))))))
  292. (inputs (list python-wrapper ninja))
  293. (home-page "https://mesonbuild.com/")
  294. (synopsis "Build system designed to be fast and user-friendly")
  295. (description
  296. "The Meson build system is focused on user-friendliness and speed.
  297. It can compile code written in C, C++, Fortran, Java, Rust, and other
  298. languages. Meson provides features comparable to those of the
  299. Autoconf/Automake/make combo. Build specifications, also known as @dfn{Meson
  300. files}, are written in a custom domain-specific language (@dfn{DSL}) that
  301. resembles Python.")
  302. (license license:asl2.0)))
  303. ;;; This older Meson variant is kept for now for gtkmm and others that may
  304. ;;; have problems with 0.60.
  305. (define-public meson-0.59
  306. (package/inherit meson
  307. (version "0.59.4")
  308. (source (origin
  309. (method url-fetch)
  310. (uri (string-append "https://github.com/mesonbuild/meson/"
  311. "releases/download/" version "/meson-"
  312. version ".tar.gz"))
  313. (sha256
  314. (base32
  315. "117cm8794h291lca1wljz1pwnzidgbvrpg3mw3np6ksma368hyd7"))
  316. (patches (search-patches
  317. "meson-allow-dirs-outside-of-prefix.patch"))))))
  318. (define-public premake4
  319. (package
  320. (name "premake")
  321. (version "4.3")
  322. (source (origin
  323. (method url-fetch)
  324. (uri (string-append "mirror://sourceforge/premake/Premake/"
  325. version "/premake-" version "-src.zip"))
  326. (sha256
  327. (base32
  328. "1017rd0wsjfyq2jvpjjhpszaa7kmig6q1nimw76qx3cjz2868lrn"))))
  329. (build-system gnu-build-system)
  330. (native-inputs
  331. (list unzip)) ; for unpacking the source
  332. (arguments
  333. `(#:make-flags (list (string-append "CC=" ,(cc-for-target)))
  334. #:tests? #f ; No test suite
  335. #:phases
  336. (modify-phases %standard-phases
  337. (delete 'configure)
  338. (add-after 'unpack 'enter-source
  339. (lambda _ (chdir "build/gmake.unix") #t))
  340. (replace 'install
  341. (lambda* (#:key outputs #:allow-other-keys)
  342. (install-file "../../bin/release/premake4"
  343. (string-append (assoc-ref outputs "out") "/bin"))
  344. #t)))))
  345. (synopsis "Portable software build tool")
  346. (description "@code{premake4} is a command line utility that reads a
  347. scripted definition of a software project and outputs @file{Makefile}s or
  348. other lower-level build files.")
  349. (home-page "https://premake.github.io")
  350. (license license:bsd-3)))
  351. (define-public premake5
  352. (package
  353. (inherit premake4)
  354. (version "5.0.0-alpha15")
  355. (source (origin
  356. (method url-fetch)
  357. (uri (string-append "https://github.com/premake/premake-core/"
  358. "releases/download/v" version
  359. "/premake-" version "-src.zip"))
  360. (sha256
  361. (base32
  362. "0lyxfyqxyhjqsb3kmx1fyrxinb26i68hb7w7rg8lajczrgkmc3w8"))))
  363. (arguments
  364. (substitute-keyword-arguments (package-arguments premake4)
  365. ((#:phases phases)
  366. `(modify-phases ,phases
  367. (replace 'enter-source
  368. (lambda _ (chdir "build/gmake2.unix") #t))
  369. (replace 'install
  370. (lambda* (#:key outputs #:allow-other-keys)
  371. (install-file "../../bin/release/premake5"
  372. (string-append (assoc-ref outputs "out") "/bin"))
  373. #t))))))
  374. (description "@code{premake5} is a command line utility that reads a
  375. scripted definition of a software project and outputs @file{Makefile}s or
  376. other lower-level build files.")))
  377. (define-public tup
  378. (package
  379. (name "tup")
  380. (version "0.7.9")
  381. (source (origin
  382. (method url-fetch)
  383. (uri (string-append "http://gittup.org/tup/releases/tup-v"
  384. version ".tar.gz"))
  385. (sha256
  386. (base32
  387. "0gnd2598xqgwihdkfkx7qn0q6p4n7npam1fy83mp7s04zwj99syc"))
  388. (patches (search-patches "tup-unbundle-dependencies.patch"))
  389. (modules '((guix build utils)))
  390. (snippet
  391. '(begin
  392. ;; NOTE: Tup uses a slightly modified Lua, so it cannot be
  393. ;; unbundled. See: src/lula/tup-lua.patch
  394. (delete-file-recursively "src/pcre")
  395. (delete-file-recursively "src/sqlite3")
  396. #t))))
  397. (build-system gnu-build-system)
  398. (arguments
  399. `(#:phases
  400. (modify-phases %standard-phases
  401. ;; There is a bootstrap script, but it doesn't do what you think - it
  402. ;; builds tup.
  403. (delete 'bootstrap)
  404. (replace 'configure
  405. (lambda _
  406. (substitute* "src/tup/link.sh"
  407. (("`git describe`") ,version))
  408. (with-output-to-file "tup.config"
  409. (lambda _
  410. (format #t "CONFIG_TUP_USE_SYSTEM_SQLITE=y~%")))
  411. #t))
  412. (delete 'check)
  413. (replace 'build
  414. (lambda _
  415. ;; Based on bootstrap-nofuse.sh, but with a detour to patch-shebang.
  416. (invoke "./build.sh")
  417. (invoke "./build/tup" "init")
  418. (invoke "./build/tup" "generate" "--verbose" "build-nofuse.sh")
  419. (patch-shebang "build-nofuse.sh")
  420. (invoke "./build-nofuse.sh")))
  421. (replace 'install
  422. (lambda* (#:key outputs #:allow-other-keys)
  423. (let* ((outdir (assoc-ref outputs "out"))
  424. (ftdetect (string-append outdir
  425. "/share/vim/vimfiles/ftdetect")))
  426. (install-file "tup" (string-append outdir "/bin"))
  427. (install-file "tup.1" (string-append outdir "/share/man/man1"))
  428. (install-file "contrib/syntax/tup.vim"
  429. (string-append outdir "/share/vim/vimfiles/syntax"))
  430. (mkdir-p ftdetect)
  431. (with-output-to-file (string-append ftdetect "/tup.vim")
  432. (lambda _
  433. (display "au BufNewFile,BufRead Tupfile,*.tup setf tup")))
  434. #t))))))
  435. (inputs
  436. (list fuse pcre
  437. `(,pcre "bin") ; pcre-config
  438. sqlite))
  439. (native-inputs
  440. (list pkg-config))
  441. (home-page "http://gittup.org/tup/")
  442. (synopsis "Fast build system that's hard to get wrong")
  443. (description "Tup is a generic build system based on a directed acyclic
  444. graphs of commands to be executed. Tup instruments your build to detect the
  445. exact dependencies of the commands, allowing you to take advantage of ideal
  446. parallelism during incremental builds, and detecting any situations where
  447. a build worked by accident.")
  448. (license license:gpl2)))
  449. (define-public osc
  450. (package
  451. (name "osc")
  452. (version "0.172.0")
  453. (source
  454. (origin
  455. (method git-fetch)
  456. (uri (git-reference
  457. (url "https://github.com/openSUSE/osc")
  458. (commit version)))
  459. (file-name (git-file-name name version))
  460. (sha256
  461. (base32 "1sqdnkka3c6b6hwnrmlwrgy7w62cp8raq8mph9pgd2lydzzbvwlp"))))
  462. (build-system python-build-system)
  463. (arguments
  464. `(#:phases
  465. (modify-phases %standard-phases
  466. (add-after 'install 'fix-filename
  467. (lambda* (#:key outputs #:allow-other-keys)
  468. (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
  469. ;; Main osc tool is renamed in spec file, not setup.py, let's
  470. ;; do that too.
  471. (rename-file
  472. (string-append bin "osc-wrapper.py")
  473. (string-append bin "osc"))
  474. #t))))))
  475. (native-inputs
  476. (list python-chardet))
  477. (inputs
  478. (list python-m2crypto python-pycurl rpm)) ; for python-rpm
  479. (home-page "https://github.com/openSUSE/osc")
  480. (synopsis "Open Build Service command line tool")
  481. (description "@command{osc} is a command line interface to the Open Build
  482. Service. It allows you to checkout, commit, perform reviews etc. The vast
  483. majority of the OBS functionality is available via commands and the rest can
  484. be reached via direct API calls.")
  485. (license license:gpl2+)))
  486. (define-public compiledb
  487. (package
  488. (name "compiledb")
  489. (version "0.10.1")
  490. (source
  491. (origin
  492. (method url-fetch)
  493. (uri (pypi-uri "compiledb" version))
  494. (sha256
  495. (base32 "0vlngsdxfakyl8b7rnvn8h3l216lhbrrydr04yhy6kd03zflgfq6"))))
  496. (build-system python-build-system)
  497. (arguments
  498. `(#:phases
  499. (modify-phases %standard-phases
  500. (add-after 'unpack 'no-compat-shim-dependency
  501. ;; shutilwhich is only needed for python 3.3 and earlier
  502. (lambda _
  503. (substitute* "setup.py" (("^ *'shutilwhich'\n") ""))
  504. (substitute* "compiledb/compiler.py" (("shutilwhich") "shutil")))))))
  505. (propagated-inputs
  506. (list python-bashlex python-click))
  507. (native-inputs
  508. (list python-pytest))
  509. (home-page
  510. "https://github.com/nickdiego/compiledb")
  511. (synopsis
  512. "Generate Clang JSON Compilation Database files for make-based build systems")
  513. (description
  514. "@code{compiledb} provides a @code{make} python wrapper script which,
  515. besides executing the make build command, updates the JSON compilation
  516. database file corresponding to that build, resulting in a command-line
  517. interface similar to Bear.")
  518. (license license:gpl3)))
  519. (define-public build
  520. (package
  521. (name "build")
  522. (version "0.3.10")
  523. (source
  524. (origin
  525. (method url-fetch)
  526. (uri (string-append "https://www.codesynthesis.com/download/"
  527. "build/" (version-major+minor version)
  528. "/build-" version ".tar.bz2"))
  529. (sha256
  530. (base32 "1lx5rpnmsbip43zpp0a57sl5rm7pjb0y6i2si6rfglfp4p9d3z76"))))
  531. (build-system gnu-build-system)
  532. (arguments
  533. `(#:make-flags (list (string-append "install_prefix=" %output))
  534. #:tests? #f
  535. #:phases (modify-phases %standard-phases
  536. (delete 'build)
  537. (delete 'configure))))
  538. (home-page "https://www.codesynthesis.com/projects/build/")
  539. (synopsis "Massively-parallel build system implemented on top of GNU make")
  540. (description "Build is a massively-parallel software build system
  541. implemented on top of GNU Make, designed with the following tasks in mind:
  542. @itemize
  543. @item configuration
  544. @item building
  545. @item testing
  546. @item installation
  547. @end itemize
  548. Build has features such as:
  549. @itemize
  550. @item Position-independent makefiles.
  551. @item Non-recursive multi-makefile include-based structure.
  552. @item Leaf makefiles are full-fledged GNU makefiles, not just variable definitions.
  553. @item Complete dependency graph.
  554. @item Inter-project dependency tracking.
  555. @item Extensible language/compiler framework.
  556. @end itemize")
  557. (license license:gpl2+)))