| Patrick Williams | b48b7b4 | 2016-08-17 15:04:38 -0500 | [diff] [blame^] | 1 | BPV ?= "${PV}" | 
 | 2 |  | 
 | 3 | DEPENDS += " \ | 
 | 4 |     ruby-native \ | 
 | 5 | " | 
 | 6 | RDEPENDS_${PN} += " \ | 
 | 7 |     ruby \ | 
 | 8 | " | 
 | 9 |  | 
 | 10 | def get_rubyversion(p): | 
 | 11 |     import re | 
 | 12 |     from os.path import isfile | 
 | 13 |     import subprocess | 
 | 14 |     found_version = "SOMETHING FAILED!" | 
 | 15 |  | 
 | 16 |     cmd = "%s/ruby" % p | 
 | 17 |  | 
 | 18 |     if not isfile(cmd): | 
 | 19 |        return found_version | 
 | 20 |  | 
 | 21 |     version = subprocess.Popen([cmd, "--version"], stdout=subprocess.PIPE).communicate()[0] | 
 | 22 |      | 
 | 23 |     r = re.compile("ruby ([0-9]+\.[0-9]+\.[0-9]+)*") | 
 | 24 |     m = r.match(version) | 
 | 25 |     if m: | 
 | 26 |         found_version = m.group(1) | 
 | 27 |  | 
 | 28 |     return found_version | 
 | 29 |  | 
 | 30 | def get_rubygemslocation(p): | 
 | 31 |     import re | 
 | 32 |     from os.path import isfile | 
 | 33 |     import subprocess | 
 | 34 |     found_loc = "SOMETHING FAILED!" | 
 | 35 |  | 
 | 36 |     cmd = "%s/gem" % p | 
 | 37 |  | 
 | 38 |     if not isfile(cmd): | 
 | 39 |        return found_loc | 
 | 40 |  | 
 | 41 |     loc = subprocess.Popen([cmd, "env"], stdout=subprocess.PIPE).communicate()[0] | 
 | 42 |  | 
 | 43 |     r = re.compile(".*\- (/usr.*/ruby/gems/.*)") | 
 | 44 |     for line in loc.split('\n'): | 
 | 45 |         m = r.match(line) | 
 | 46 |         if m: | 
 | 47 |             found_loc = m.group(1) | 
 | 48 |             break | 
 | 49 |  | 
 | 50 |     return found_loc | 
 | 51 |  | 
 | 52 | def get_rubygemsversion(p): | 
 | 53 |     import re | 
 | 54 |     from os.path import isfile | 
 | 55 |     import subprocess | 
 | 56 |     found_version = "SOMETHING FAILED!" | 
 | 57 |  | 
 | 58 |     cmd = "%s/gem" % p | 
 | 59 |  | 
 | 60 |     if not isfile(cmd): | 
 | 61 |        return found_version | 
 | 62 |  | 
 | 63 |     version = subprocess.Popen([cmd, "env", "gemdir"], stdout=subprocess.PIPE).communicate()[0] | 
 | 64 |      | 
 | 65 |     r = re.compile(".*([0-9]+\.[0-9]+\.[0-9]+)$") | 
 | 66 |     m = r.match(version) | 
 | 67 |     if m: | 
 | 68 |         found_version = m.group(1) | 
 | 69 |  | 
 | 70 |     return found_version | 
 | 71 |  | 
 | 72 | RUBY_VERSION ?= "${@get_rubyversion("${STAGING_BINDIR_NATIVE}")}" | 
 | 73 | RUBY_GEM_DIRECTORY ?= "${@get_rubygemslocation("${STAGING_BINDIR_NATIVE}")}" | 
 | 74 | RUBY_GEM_VERSION ?= "${@get_rubygemsversion("${STAGING_BINDIR_NATIVE}")}" | 
 | 75 |  | 
 | 76 | export GEM_HOME = "${STAGING_DIR_NATIVE}/usr/lib/ruby/gems/${RUBY_GEM_VERSION}" | 
 | 77 |  | 
 | 78 | RUBY_BUILD_GEMS ?= "${BPN}.gemspec" | 
 | 79 | RUBY_INSTALL_GEMS ?= "${BPN}-${BPV}.gem" | 
 | 80 |  | 
 | 81 | RUBY_COMPILE_FLAGS ?= 'LANG="en_US.UTF-8" LC_ALL="en_US.UTF-8"' | 
 | 82 |  | 
 | 83 | ruby_do_compile() { | 
 | 84 | 	for gem in ${RUBY_BUILD_GEMS}; do | 
 | 85 | 		${RUBY_COMPILE_FLAGS} gem build $gem | 
 | 86 | 	done | 
 | 87 | } | 
 | 88 |  | 
 | 89 |  | 
 | 90 | ruby_do_install() { | 
 | 91 | 	for gem in ${RUBY_INSTALL_GEMS}; do | 
 | 92 | 		gem install --ignore-dependencies --local --env-shebang --install-dir ${D}/${libdir}/ruby/gems/${RUBY_GEM_VERSION}/ $gem | 
 | 93 | 	done | 
 | 94 |  | 
 | 95 | 	# create symlink from the gems bin directory to /usr/bin | 
 | 96 | 	for i in ${D}/${libdir}/ruby/gems/${RUBY_GEM_VERSION}/bin/*; do | 
 | 97 | 		if [ -e "$i" ]; then | 
 | 98 | 			if [ ! -d ${D}/${bindir} ]; then mkdir -p ${D}/${bindir}; fi | 
 | 99 | 			b=`basename $i` | 
 | 100 | 			ln -sf ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/bin/$b ${D}/${bindir}/$b | 
 | 101 | 		fi | 
 | 102 | 	done | 
 | 103 | } | 
 | 104 |  | 
 | 105 | EXPORT_FUNCTIONS do_compile do_install | 
 | 106 |  | 
 | 107 | PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-dev" | 
 | 108 |  | 
 | 109 | FILES_${PN}-dbg += " \ | 
 | 110 |         ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/gems/*/*/.debug \ | 
 | 111 |         ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/gems/*/*/*/.debug \ | 
 | 112 |         ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/gems/*/*/*/*/.debug \ | 
 | 113 |         ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/gems/*/*/*/*/*/.debug \ | 
 | 114 |         ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/extensions/*/*/.debug \ | 
 | 115 |         ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/extensions/*/*/*/.debug \ | 
 | 116 |         ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/extensions/*/*/*/*/.debug \ | 
 | 117 |         ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/extensions/*/*/*/*/*/.debug \ | 
 | 118 |         " | 
 | 119 |  | 
 | 120 | FILES_${PN} += " \ | 
 | 121 |         ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/gems \ | 
 | 122 |         ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/cache \ | 
 | 123 |         ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/bin \ | 
 | 124 |         ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/specifications \ | 
 | 125 |         ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/build_info \ | 
 | 126 |         ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/extensions \ | 
 | 127 |         " | 
 | 128 |  | 
 | 129 | FILES_${PN}-doc += " \ | 
 | 130 |         ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/doc \ | 
 | 131 |         " |