/src/clj/backtype/storm/crate/zeromq.clj

http://github.com/nathanmarz/storm-deploy · Clojure · 90 lines · 70 code · 13 blank · 7 comment · 0 complexity · fbfdf3484d85e2f6411b0ddbf6486cb0 MD5 · raw file

  1. (ns backtype.storm.crate.zeromq
  2. (:require
  3. [pallet.action.exec-script :as exec-script]
  4. [pallet.resource.package :as package]
  5. [pallet.resource.remote-directory :as remote-directory]
  6. [pallet.resource.directory :as directory]
  7. [pallet.crate.maven :as maven]
  8. [pallet.crate.git :as git]
  9. [pallet.parameter :as parameter]
  10. [pallet.crate.iptables :as iptables]
  11. ))
  12. (def src-path "/opt/local/zeromq")
  13. (def md5s {})
  14. (defn download-url
  15. "The url for downloading zeromq"
  16. [version]
  17. (format
  18. "http://download.zeromq.org/zeromq-%s.tar.gz"
  19. version))
  20. (defn install
  21. "Install zeromq from source."
  22. [request & {:keys [version] :or {version "2.0.10"}}]
  23. (->
  24. request
  25. (package/packages
  26. :yum ["gcc" "gcc-c++" "glib" "glibc-common" "libuuid-devel"]
  27. :aptitude ["build-essential" "uuid-dev"])
  28. (remote-directory/remote-directory
  29. src-path
  30. :url (download-url version) :md5 (md5s version) :unpack :tar)
  31. (exec-script/exec-checked-script
  32. "Build zeromq"
  33. (cd ~src-path)
  34. ("./configure")
  35. (make)
  36. (make install)
  37. ("/sbin/ldconfig"))
  38. ;;(parameter/assoc-for-target [:zeromq :version] version)
  39. ))
  40. (defn install-jzmq
  41. "Install jzmq from source. You must install zeromq first."
  42. [request & {:keys [version]}]
  43. (->
  44. request
  45. (maven/package)
  46. (git/git)
  47. (package/packages
  48. :yum ["libtool" "pkg-config" "autoconf"]
  49. :aptitude ["libtool" "pkg-config" "autoconf"])
  50. (exec-script/exec-checked-script
  51. "Build jzmq"
  52. (var tmpdir (~directory/make-temp-dir "rf"))
  53. (cd (quoted @tmpdir))
  54. ;; use frozen version of jzmq
  55. (git clone "git://github.com/nathanmarz/jzmq.git")
  56. (cd "jzmq")
  57. (export (str "JAVA_HOME="
  58. @(dirname @(dirname @(dirname @(update-alternatives "--list" java))))))
  59. ("touch src/classdist_noinst.stamp")
  60. (cd "src")
  61. ("CLASSPATH=.:./.:$CLASSPATH javac -d . org/zeromq/ZMQ.java org/zeromq/App.java org/zeromq/ZMQForwarder.java org/zeromq/EmbeddedLibraryTools.java org/zeromq/ZMQQueue.java org/zeromq/ZMQStreamer.java org/zeromq/ZMQException.java")
  62. (cd "..")
  63. ("./autogen.sh")
  64. ("./configure")
  65. (make)
  66. (make install)
  67. ;; (mvn ~(print-str "install:install-file -Dfile=/usr/local/share/java/zmq.jar"
  68. ;; "-DgroupId=org.zeromq"
  69. ;; "-DartifactId=zmq"
  70. ;; (format "-Dversion=%s" version)
  71. ;; "-Dpackaging=jar"))
  72. )))
  73. (defn iptables-accept
  74. "Accept zeromq connections, by default on port 5672"
  75. ([request] (iptables-accept request 5672))
  76. ([request port]
  77. (iptables/iptables-accept-port request port)))