require mono_1.2.5.inc DEPENDS = "mono-native mono-mcs-intermediate glib-2.0 perl-native" PR = "r2" SRC_URI += "file://configure.patch;patch=1 \ file://genmdesc-cpp.patch;patch=1" # Per http://www.mono-project.com/Mono:ARM EXTRA_OECONF += " --disable-mcs-build " # Instead, get the mcs tree from a different build (see mono-mcs-intermediate) do_install_prepend() { install -d ${D} pushd ${D} tar -xzf ${STAGING_DIR}/share/mono-mcs/mono-mcs-${PV}.tar.gz popd } do_install_append() { # mono-mcs-intermediate builds and installs jay (a Yacc for Java and C#), # however, jay is not being cross-compiled and thus only # available for the buildhost architecture, so remove it # entirely pushd ${D} rm -rf ./usr/share/man/man1/jay.1 ./usr/share/jay \ ./usr/share/jay/README.jay \ ./usr/bin/jay popd # Not packaged with the default rules and apparently # not used for anything rm -rf ${D}${datadir}/mono-1.0/mono/cil/cil-opcodes.xml } inherit mono PACKAGES = "${@" ".join([e["name"] for e in mono_get_file_table(bb.data.getVar('PV', d, 1), d) if e.has_key("name")])}" FILES_mono-doc_append = " /usr/share/libgc-mono/ " FILES_mono = "" # Apparently this gets ignored, so I'm setting it again below ALLOW_EMPTY_mono = "1" RDEPENDS_mono = "mono-common mono-jit" FILES_mono-runtime = "" ALLOW_EMPTY_mono-runtime = "1" RDEPENDS_mono-runtime = "mono-jit mono-gac" RDEPENDS_mono-jit = "mono-common" FILES_libmono-dev = "/usr/lib/libmono.la /usr/lib/libmono-profiler-cov.la /usr/lib/libmono-profiler-aot.la \ /usr/lib/libMonoPosixHelper.la /usr/lib/libMonoSupportW.la" FILES_libmono-dbg = "/usr/lib/.debug/libmono*.so.* /usr/lib/.debug/libikvm-native.so \ /usr/lib/.debug/libMonoPosixHelper.so /usr/lib/.debug/libMonoSupportW.so" python populate_packages_prepend () { def fillin_packages(): # A lot of this code can probably be replaced with less code and some # calls to do_split_packages import bb, sys, os, glob, commands PV = bb.data.getVar('PV', d, 1) file_table = mono_get_file_table(PV, d) packages_to_add = [] D = bb.data.getVar('D', d, 1) if not D: return D = D + "/" def classify_files(files): normal, dev, dbg, doc = [], [], [], [] for filename in files: if filename.endswith(".mdb"): dbg.append(filename) elif os.path.basename( os.path.dirname( filename ) ) == ".debug": dbg.append(filename) elif filename.endswith(".pc"): dev.append(filename) else: normal.append(filename) return normal, dev, dbg, doc def will_strip(filename): # From package.bbclass function runstrip pathprefix = "export PATH=%s; " % bb.data.getVar('PATH', d, 1) ret, result = commands.getstatusoutput("%sfile '%s'" % (pathprefix, filename)) if "not stripped" in result: return True else: return False def append(name, value): oldvalue = bb.data.getVar(name, d, 1) or "" newvalue = " ".join([oldvalue, value]) bb.data.setVar(name, newvalue, d) already_covered = [] for package in file_table: pn = package["name"] if package.has_key("patterns"): files = [] for pattern in package["patterns"]: matching = glob.glob( D + pattern ) for filename in matching: if os.path.isdir(filename): for dirpath, dirnames, filenames in os.walk(filename): for f in filenames: debugname = os.path.join(dirpath, ".debug", f) fullname = os.path.join(dirpath, f) files.append(fullname) if will_strip(fullname): files.append(debugname) else: files.append(filename) # Remove the D prefix files = [ e[len(D):] for e in files ] # Remove files that have already been placed in other packages files = [ e for e in files if not e in already_covered ] already_covered.extend( files ) if pn.endswith("-dev") or pn.endswith("-dbg") or pn.endswith("-doc"): normal, dev, dbg, doc = files, [], [], [] else: normal, dev, dbg, doc = classify_files(files) for extension, filelist in [ ("",normal), ("-dev", dev), ("-dbg", dbg), ("-doc", doc)]: if len(filelist) > 0: packagename = pn + extension append("FILES_%s" % packagename, " ".join(filelist)) bb.debug(2, "%s\n\t%s" %( packagename, "\n\t".join( filelist ) )) if not packagename in packages_to_add: packages_to_add.append(packagename) else: packages_to_add.append(pn) # mono is just a stub package bb.data.setVar("FILES_mono", "", d) bb.data.setVar("PACKAGES", " ".join(packages_to_add), d) fillin_packages() }