<p>osmith has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-dev/+/25098">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gen_makefile.py: add make rules for all projects<br><br>Allow to easily build any Osmocom project in a build directory generated<br>by osmo-dev, even if it is not listed in the specified .deps file. This<br>avoids the need to set up a new build directory and build common<br>dependencies (e.g. libosmocore) again.<br><br>All rules that act on multiple projects (default make target "all",<br>"clone", "clean" "all-install") will still only take the selected<br>projects into account.<br><br>The idea is to extend deps.all on demand. Currently it contains<br>everything from 3G+2G.deps plus:<br>- osmo-bts<br>- osmo-gbproxy<br>- osmo-pcap<br>- osmo-pcu<br><br>Change-Id: Ibb932f36a9f97d6e9f3d69f4ce63b738fbb640fe<br>---<br>M 2G.deps<br>M 3G+2G.deps<br>A all.deps<br>M gen_makefile.py<br>4 files changed, 59 insertions(+), 10 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-dev refs/changes/98/25098/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/2G.deps b/2G.deps</span><br><span>index c090b6e..2d0745b 100644</span><br><span>--- a/2G.deps</span><br><span>+++ b/2G.deps</span><br><span>@@ -1,3 +1,4 @@</span><br><span style="color: hsl(120, 100%, 40%);">+# Note: Add new projects to all.deps too</span><br><span> # project        build these first</span><br><span> libosmocore</span><br><span> libosmo-abis        libosmocore</span><br><span>diff --git a/3G+2G.deps b/3G+2G.deps</span><br><span>index b4372fd..7f9009e 100644</span><br><span>--- a/3G+2G.deps</span><br><span>+++ b/3G+2G.deps</span><br><span>@@ -1,3 +1,4 @@</span><br><span style="color: hsl(120, 100%, 40%);">+# Note: Add new projects to all.deps too</span><br><span> # project       build these first</span><br><span> libosmocore</span><br><span> libosmo-abis        libosmocore</span><br><span>diff --git a/all.deps b/all.deps</span><br><span>new file mode 100644</span><br><span>index 0000000..7685ed5</span><br><span>--- /dev/null</span><br><span>+++ b/all.deps</span><br><span>@@ -0,0 +1,26 @@</span><br><span style="color: hsl(120, 100%, 40%);">+# List of *all* Osmocom projects that one might want to build with osmo-dev.</span><br><span style="color: hsl(120, 100%, 40%);">+# Make targets get created for these projects, even if they are not in the</span><br><span style="color: hsl(120, 100%, 40%);">+# .deps file passed to gen_makefile.py, so they can be conveniently built from</span><br><span style="color: hsl(120, 100%, 40%);">+# any build dir generated by osmo-dev.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# project       build these first</span><br><span style="color: hsl(120, 100%, 40%);">+libasn1c</span><br><span style="color: hsl(120, 100%, 40%);">+libosmo-abis       libosmocore</span><br><span style="color: hsl(120, 100%, 40%);">+libosmo-netif      libosmo-abis</span><br><span style="color: hsl(120, 100%, 40%);">+libosmo-sccp      libosmo-netif</span><br><span style="color: hsl(120, 100%, 40%);">+libosmocore</span><br><span style="color: hsl(120, 100%, 40%);">+libsmpp34</span><br><span style="color: hsl(120, 100%, 40%);">+osmo-bsc libosmo-sccp osmo-mgw</span><br><span style="color: hsl(120, 100%, 40%);">+osmo-bts libosmocore, libosmo-abis</span><br><span style="color: hsl(120, 100%, 40%);">+osmo-gbproxy libosmocore</span><br><span style="color: hsl(120, 100%, 40%);">+osmo-ggsn  libosmocore</span><br><span style="color: hsl(120, 100%, 40%);">+osmo-hlr   libosmo-abis</span><br><span style="color: hsl(120, 100%, 40%);">+osmo-iuh  libosmo-sccp libasn1c</span><br><span style="color: hsl(120, 100%, 40%);">+osmo-mgw libosmo-netif</span><br><span style="color: hsl(120, 100%, 40%);">+osmo-msc osmo-iuh osmo-mgw libsmpp34 osmo-hlr</span><br><span style="color: hsl(120, 100%, 40%);">+osmo-pcap libosmocore</span><br><span style="color: hsl(120, 100%, 40%);">+osmo-pcu   libosmocore</span><br><span style="color: hsl(120, 100%, 40%);">+osmo-sgsn  osmo-iuh osmo-ggsn osmo-hlr</span><br><span style="color: hsl(120, 100%, 40%);">+osmo-sip-connector libosmocore</span><br><span style="color: hsl(120, 100%, 40%);">+osmo-smlc  libosmo-sccp</span><br><span style="color: hsl(120, 100%, 40%);">+osmo-trx  libosmocore</span><br><span>diff --git a/gen_makefile.py b/gen_makefile.py</span><br><span>index ad42978..fb81aac 100755</span><br><span>--- a/gen_makefile.py</span><br><span>+++ b/gen_makefile.py</span><br><span>@@ -148,7 +148,9 @@</span><br><span>     return {}</span><br><span>   return dict(read_projects_deps(path))</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-def gen_make(proj, deps, configure_opts, jobs, make_dir, src_dir, build_dir, url, push_url, sudo_make_install, no_ldconfig, ldconfig_without_sudo, make_check):</span><br><span style="color: hsl(120, 100%, 40%);">+def gen_make(proj, deps, configure_opts, jobs, make_dir, src_dir, build_dir,</span><br><span style="color: hsl(120, 100%, 40%);">+             url, push_url, sudo_make_install, no_ldconfig,</span><br><span style="color: hsl(120, 100%, 40%);">+             ldconfig_without_sudo, make_check, deps_file):</span><br><span>   src_proj = os.path.join(src_dir, proj)</span><br><span>   if proj == 'openbsc':</span><br><span>     src_proj = os.path.join(src_proj, 'openbsc')</span><br><span>@@ -165,7 +167,7 @@</span><br><span>     configure_opts_str = ''</span><br><span> </span><br><span>   return r'''</span><br><span style="color: hsl(0, 100%, 40%);">-### {proj} ###</span><br><span style="color: hsl(120, 100%, 40%);">+### {proj} ({deps_file}) ###</span><br><span> </span><br><span> {proj}_configure_files := $(shell find {src_proj} -name "Makefile.am" -or -name "*.in" -and -not -name "Makefile.in" -and -not -name "config.h.in" )</span><br><span> {proj}_files := $(shell find {src_proj} -name "*.[hc]" -or -name "*.py" -or -name "*.cpp" -or -name "*.tpl" -or -name "*.map")</span><br><span>@@ -228,6 +230,7 @@</span><br><span>     src_proj=make_to_src_proj,</span><br><span>     build_proj=make_to_build_proj,</span><br><span>     build_to_src=build_to_src,</span><br><span style="color: hsl(120, 100%, 40%);">+    deps_file=deps_file,</span><br><span>     deps_installed=' '.join(['.make.%s.install' % d for d in deps]),</span><br><span>     deps_reinstall=' '.join(['%s-reinstall' %d for d in deps]),</span><br><span>     configure_opts=configure_opts_str,</span><br><span>@@ -312,13 +315,31 @@</span><br><span> </span><br><span>   out.write('all-install: \\\n\t' + ' \\\n\t'.join([ '.make.%s.install' % p for p, d in projects_deps ]) + '\n\n')</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  for proj, deps in projects_deps:</span><br><span style="color: hsl(0, 100%, 40%);">-    all_config_opts = []</span><br><span style="color: hsl(0, 100%, 40%);">-    all_config_opts.extend(configure_opts.get('ALL') or [])</span><br><span style="color: hsl(0, 100%, 40%);">-    all_config_opts.extend(configure_opts.get(proj) or [])</span><br><span style="color: hsl(0, 100%, 40%);">-    out.write(gen_make(proj, deps, all_config_opts, args.jobs,</span><br><span style="color: hsl(0, 100%, 40%);">-                       make_dir, args.src_dir, build_dir, args.url, args.push_url,</span><br><span style="color: hsl(0, 100%, 40%);">-                       args.sudo_make_install, args.no_ldconfig,</span><br><span style="color: hsl(0, 100%, 40%);">-                       args.ldconfig_without_sudo, args.make_check))</span><br><span style="color: hsl(120, 100%, 40%);">+  # iterate over projects in the selected projects_deps file (e.g. 2G.deps)</span><br><span style="color: hsl(120, 100%, 40%);">+  # first, then iterate over all projects (all.deps) and add missing ones. this</span><br><span style="color: hsl(120, 100%, 40%);">+  # allows overriding projects and dependencies in the selected file, but also</span><br><span style="color: hsl(120, 100%, 40%);">+  # having make rules for all projects available to quickly build them without</span><br><span style="color: hsl(120, 100%, 40%);">+  # setting up a new build directory first.</span><br><span style="color: hsl(120, 100%, 40%);">+  projects = [x[0] for x in projects_deps]</span><br><span style="color: hsl(120, 100%, 40%);">+  for is_all in [False, True]:</span><br><span style="color: hsl(120, 100%, 40%);">+    deps_file = args.projects_and_deps_file</span><br><span style="color: hsl(120, 100%, 40%);">+    proj_deps = projects_deps</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    if is_all:</span><br><span style="color: hsl(120, 100%, 40%);">+      deps_file = "all.deps"</span><br><span style="color: hsl(120, 100%, 40%);">+      deps_file_path = os.path.join(os.path.dirname(__file__), deps_file)</span><br><span style="color: hsl(120, 100%, 40%);">+      proj_deps = read_projects_deps(deps_file_path)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    for proj, deps in proj_deps:</span><br><span style="color: hsl(120, 100%, 40%);">+      if is_all and proj in projects:</span><br><span style="color: hsl(120, 100%, 40%);">+        continue</span><br><span style="color: hsl(120, 100%, 40%);">+      all_config_opts = []</span><br><span style="color: hsl(120, 100%, 40%);">+      all_config_opts.extend(configure_opts.get('ALL') or [])</span><br><span style="color: hsl(120, 100%, 40%);">+      all_config_opts.extend(configure_opts.get(proj) or [])</span><br><span style="color: hsl(120, 100%, 40%);">+      out.write(gen_make(proj, deps, all_config_opts, args.jobs,</span><br><span style="color: hsl(120, 100%, 40%);">+                         make_dir, args.src_dir, build_dir, args.url, args.push_url,</span><br><span style="color: hsl(120, 100%, 40%);">+                         args.sudo_make_install, args.no_ldconfig,</span><br><span style="color: hsl(120, 100%, 40%);">+                         args.ldconfig_without_sudo, args.make_check,</span><br><span style="color: hsl(120, 100%, 40%);">+                         deps_file))</span><br><span> </span><br><span> # vim: expandtab tabstop=2 shiftwidth=2</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-dev/+/25098">change 25098</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-dev/+/25098"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-dev </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ibb932f36a9f97d6e9f3d69f4ce63b738fbb640fe </div>
<div style="display:none"> Gerrit-Change-Number: 25098 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>