<p>neels <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-dev/+/25738">View Change</a></p><div style="white-space:pre-wrap">Approvals:
pespin: Looks good to me, but someone else must approve
fixeria: Looks good to me, but someone else must approve
neels: Looks good to me, approved
</div><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, 15 insertions(+), 1 deletion(-)<br><br></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 c36b5ff..7c780a5 100755</span><br><span>--- a/gen_makefile.py</span><br><span>+++ b/gen_makefile.py</span><br><span>@@ -110,6 +110,9 @@</span><br><span> parser.add_argument('-g', '--build-debug', dest='build_debug', default=False, action='store_true',</span><br><span> help='''set 'CFLAGS=-g' when calling src/configure''')</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>@@ -193,6 +196,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>@@ -200,6 +204,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>@@ -209,6 +214,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>@@ -234,6 +240,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>@@ -252,6 +264,7 @@</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> cflags='CFLAGS=-g ' if args.build_debug 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>@@ -328,7 +341,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}{build_debug}</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}{build_debug}{auto_distclean}</span><br><span> </span><br><span> '''.format(</span><br><span> script=os.path.relpath(sys.argv[0], make_dir),</span><br><span>@@ -345,6 +358,7 @@</span><br><span> make_check='' if args.make_check else " \\\n\t\t--no-make-check",</span><br><span> docker_cmd=f' \\\n\t\t--docker-cmd "{args.docker_cmd}"' if args.docker_cmd else '',</span><br><span> build_debug=f' \\\n\t\t--build-debug' if args.build_debug 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: 2 </div>
<div style="display:none"> Gerrit-Owner: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>