/components/server/src/ome/services/sharing/make_data.py

https://github.com/will-moore/openmicroscopy
Python | 111 lines | 85 code | 15 blank | 11 comment | 7 complexity | ade562e796218f5cc19e7af6935b1210 MD5 | raw file
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. :author: Josh Moore <josh@glencoesoftware.com>
  5. Generator script for producing the ome.services.sharing.data classes
  6. Copyright (c) 2008, Glencoe Software, Inc.
  7. See LICENSE for details.
  8. """
  9. import sys
  10. import os
  11. import subprocess
  12. import time
  13. import glob
  14. def readlink(file=sys.argv[0]):
  15. import stat
  16. file = sys.argv[0]
  17. while stat.S_ISLNK(os.lstat(file)[stat.ST_MODE]):
  18. target = os.readlink(file)
  19. if target[0] != "/":
  20. file = os.path.join(os.path.dirname(file), target)
  21. else:
  22. file = target
  23. file = os.path.abspath(file)
  24. return file
  25. exe = readlink()
  26. shr = os.path.join(exe, os.pardir)
  27. shr = os.path.normpath(shr)
  28. dat = os.path.join(shr, "data")
  29. src = os.path.join(shr, os.pardir, os.pardir, os.pardir)
  30. src = os.path.normpath(src)
  31. top = os.path.join(src, os.pardir, os.pardir, os.pardir)
  32. rep = os.path.join(top, "lib", "repository")
  33. rep = os.path.normpath(rep)
  34. def call(cmd, cwd="."):
  35. rc = subprocess.call(cmd, shell=True, cwd=cwd)
  36. if rc != 0:
  37. print "Halting..."
  38. sys.exit(rc)
  39. def clean(dir=dat):
  40. if os.path.exists(dat):
  41. print "Removing %s. Cancel now if necessary. Waiting 5 seconds." \
  42. % dat
  43. time.sleep(5)
  44. ls = os.listdir(dat)
  45. for file in ls:
  46. print "Removing %s" % file
  47. os.remove(os.path.join(dat, file))
  48. os.rmdir(dat)
  49. def slice(dir=dat):
  50. os.mkdir(dat)
  51. README = open(os.path.join(dat, "README.txt"), "w")
  52. README.write("""
  53. THE FILES IN THIS DIRECTORY ARE GENERATE
  54. AND WILL BE AUTOMATICALLY DELETED
  55. """)
  56. README.flush()
  57. README.close()
  58. call("""slice2freezej \
  59. --dict ome.services.sharing.data.ShareMap,\
  60. long,ome::services::sharing::data::ShareData \
  61. --dict-index ome.services.sharing.data.ShareMap,id \
  62. --dict-index ome.services.sharing.data.ShareMap,owner \
  63. --output-dir %s Share.ice""" % src)
  64. call("""slice2freezej \
  65. --dict ome.services.sharing.data.ShareItems,\
  66. long,ome::services::sharing::data::ShareItem \
  67. --dict-index ome.services.sharing.data.ShareItems,type \
  68. --dict-index ome.services.sharing.data.ShareItems,share \
  69. --output-dir %s Share.ice""" % src)
  70. call("""slice2java --output-dir %s Share.ice""" % src)
  71. def compile(dir=dat):
  72. proc = subprocess.Popen(
  73. "slice2java --version",
  74. stdout=subprocess.PIPE,
  75. stderr=subprocess.PIPE,
  76. shell=True)
  77. version = proc.communicate()[1].strip()
  78. pat = "%s/ice*%s.jar" % (rep, version)
  79. cp = ":".join(glob.glob(pat))
  80. javac_cmd = "javac -target 1.7 -cp "
  81. javac_cmd += ("%s %s/*.java""" % (cp, dat))
  82. print javac_cmd
  83. call(javac_cmd, cwd=src)
  84. jar_cmd = "jar cvf "
  85. jar_cmd += ("%s/lib/repository/omero-shares-%s.jar " % (top, version))
  86. jar_cmd += ("ome/services/sharing/data/*.java ")
  87. jar_cmd += ("ome/services/sharing/data/*.class")
  88. call(jar_cmd, cwd=src)
  89. if __name__ == "__main__":
  90. clean()
  91. slice()
  92. compile()
  93. print "Be sure to run for all supported Ice versions"