<p>osmith has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-dev/+/25738">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gen_makefile.py: add --auto-distclean<br><br>Add a new option that avoids stopping the build with:<br>  configure: error: source directory already configured; run "make distclean" there first<br><br>I run into this frequently, when e.g. running './configure; make release'<br>inside Osmocom repositories and then attempting to build them with<br>osmo-dev. It is annoying as it does not fail immediatelly, and I need to<br>manually go to the source directories where it failed, run 'make<br>distclean' and then attempt to build again. Then it may fail on another<br>directory with the same problem.<br><br>Check for config.status, as that is also what ./configure checks for<br>before printing the error.<br><br>Change-Id: Iac71333e8c5da8dee4e8f34e2af8db12d2c08021<br>---<br>M gen_makefile.py<br>1 file changed, 16 insertions(+), 2 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/38/25738/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/gen_makefile.py b/gen_makefile.py</span><br><span>index 5fa3e26..58d6024 100755</span><br><span>--- a/gen_makefile.py</span><br><span>+++ b/gen_makefile.py</span><br><span>@@ -107,6 +107,9 @@</span><br><span> parser.add_argument('--docker-cmd',</span><br><span>     help='''prefix configure/make/make install calls with this command (used by ttcn3.sh)''')</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+parser.add_argument('-a', '--auto-distclean', action='store_true',</span><br><span style="color: hsl(120, 100%, 40%);">+    help='''run "make distclean" automatically if source directory already configured''')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> args = parser.parse_args()</span><br><span> </span><br><span> class listdict(dict):</span><br><span>@@ -190,6 +193,7 @@</span><br><span>   touch $@</span><br><span> </span><br><span> .make.{proj}.autoconf: .make.{proj}.clone {src_proj}/configure.ac</span><br><span style="color: hsl(120, 100%, 40%);">+     if {distclean_cond}; then $(MAKE) {proj}-distclean; fi</span><br><span>       @echo -e "\n\n\n===== $@\n"</span><br><span>        -rm -f {src_proj}/.version</span><br><span>   cd {src_proj}; autoreconf -fi</span><br><span>@@ -197,6 +201,7 @@</span><br><span>  touch $@</span><br><span>     </span><br><span> .make.{proj}.configure: .make.{proj}.autoconf {deps_installed} $({proj}_configure_files)</span><br><span style="color: hsl(120, 100%, 40%);">+  if {distclean_cond}; then $(MAKE) {proj}-distclean .make.{proj}.autoconf; fi</span><br><span>         @echo -e "\n\n\n===== $@\n"</span><br><span>        -chmod -R ug+w {build_proj}</span><br><span>  -rm -rf {build_proj}</span><br><span>@@ -206,6 +211,7 @@</span><br><span>   touch $@</span><br><span> </span><br><span> .make.{proj}.build: .make.{proj}.configure $({proj}_files)</span><br><span style="color: hsl(120, 100%, 40%);">+    if {distclean_cond}; then $(MAKE) {proj}-distclean .make.{proj}.configure; fi</span><br><span>        @echo -e "\n\n\n===== $@\n"</span><br><span>        {docker_cmd}$(MAKE) -C {build_proj} -j {jobs} {check}</span><br><span>        sync</span><br><span>@@ -231,6 +237,12 @@</span><br><span>  -chmod -R ug+w {build_proj}</span><br><span>  -rm -rf {build_proj}</span><br><span>         -rm -rf .make.{proj}.*</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.PHONY: {proj}-distclean</span><br><span style="color: hsl(120, 100%, 40%);">+{proj}-distclean: {proj}-clean</span><br><span style="color: hsl(120, 100%, 40%);">+    @echo -e "\n\n\n===== $@\n"</span><br><span style="color: hsl(120, 100%, 40%);">+ $(MAKE) -C {src_proj} distclean</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> '''.format(</span><br><span>     url=url,</span><br><span>     push_url=push_url or url,</span><br><span>@@ -248,6 +260,7 @@</span><br><span>     sudo_ldconfig='' if ldconfig_without_sudo else 'sudo ',</span><br><span>     check='check' if make_check else '',</span><br><span>     docker_cmd=f'{args.docker_cmd} ' if args.docker_cmd else '',</span><br><span style="color: hsl(120, 100%, 40%);">+    distclean_cond=f'[ -e {make_to_src_proj}/config.status ]' if args.auto_distclean else 'false'</span><br><span>     )</span><br><span> </span><br><span> </span><br><span>@@ -324,7 +337,7 @@</span><br><span>                 -o {makefile} \</span><br><span>              -s {src_dir} \</span><br><span>               -b {build_dir} \</span><br><span style="color: hsl(0, 100%, 40%);">-                -u "{url}"{push_url}{sudo_make_install}{no_ldconfig}{ldconfig_without_sudo}{make_check}{docker_cmd}</span><br><span style="color: hsl(120, 100%, 40%);">+         -u "{url}"{push_url}{sudo_make_install}{no_ldconfig}{ldconfig_without_sudo}{make_check}{docker_cmd}{auto_distclean}</span><br><span> </span><br><span> '''.format(</span><br><span>     script=os.path.relpath(sys.argv[0], make_dir),</span><br><span>@@ -339,7 +352,8 @@</span><br><span>     no_ldconfig=' \\\n\t\t-L' if args.no_ldconfig else '',</span><br><span>     ldconfig_without_sudo=' \\\n\t\t--ldconfig-without-sudo' if args.ldconfig_without_sudo else '',</span><br><span>     make_check='' if args.make_check else " \\\n\t\t--no-make-check",</span><br><span style="color: hsl(0, 100%, 40%);">-    docker_cmd=f' \\\n\t\t--docker-cmd "{args.docker_cmd}"' if args.docker_cmd else ''</span><br><span style="color: hsl(120, 100%, 40%);">+    docker_cmd=f' \\\n\t\t--docker-cmd "{args.docker_cmd}"' if args.docker_cmd else '',</span><br><span style="color: hsl(120, 100%, 40%);">+    auto_distclean=' \\\n\t\t--auto-distclean' if args.auto_distclean else ''</span><br><span>     ))</span><br><span> </span><br><span>   # convenience target: clone all repositories first</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-dev/+/25738">change 25738</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/+/25738"/><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: Iac71333e8c5da8dee4e8f34e2af8db12d2c08021 </div>
<div style="display:none"> Gerrit-Change-Number: 25738 </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>