osmith has uploaded this change for review.

View Change

gen_makefile: remove --auto-distclean parameter

The purpose of this parameter was to run "make distclean" automatically
if a source directory was already configured for an in-tree build.
osmo-dev always does out-of-tree builds and so ./configure complains:

configure: error: source directory already configured; run "make distclean" there first

--auto-distclean worked most of the time, but not always.

The --autoreconf-in-src-copy (-A) parameter makes this obsolete as it
solves the same problem but with a better method. When -A is set,
autoreconf and configure run in a copy of the source directory which
avoids all conflicts with an in-tree build in the original source
directory without the need to remove artifacts from the in-tree build.
This has been in use by testenv in osmo-ttcn3-hacks for a while and is
working reliably.

Change-Id: I28378e6d2cafd209adcfae6b85a032d73ed14cce
---
M gen_makefile.py
1 file changed, 3 insertions(+), 25 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-dev refs/changes/55/40355/1
diff --git a/gen_makefile.py b/gen_makefile.py
index 1640735..80ecfa0 100755
--- a/gen_makefile.py
+++ b/gen_makefile.py
@@ -116,9 +116,6 @@
parser.add_argument('-g', '--build-debug', dest='build_debug', default=False, action='store_true',
help='''set 'CFLAGS=-g' when calling src/configure''')

-parser.add_argument('-a', '--auto-distclean', action='store_true',
- help='''run "make distclean" automatically if source directory already configured''')
-
parser.add_argument('-i', '--install-prefix', default='/usr/local',
help='''install there instead of /usr/local''')

@@ -252,13 +249,12 @@
touch $@
'''

-def gen_makefile_autoconf(proj, src_proj, src_proj_copy, distclean_cond, update_src_copy_cmd):
+def gen_makefile_autoconf(proj, src_proj, src_proj_copy, update_src_copy_cmd):
buildsystem = projects_buildsystems.get(proj, "autotools")

if buildsystem == "autotools":
return f'''
.make.{proj}.autoconf: .make.{proj}.clone {src_proj}/configure.ac
- if {distclean_cond}; then $(MAKE) {proj}-distclean; fi
@echo "\\n\\n\\n===== $@\\n"
{update_src_copy_cmd}
-rm -f {src_proj_copy}/.version
@@ -272,14 +268,13 @@
assert False, f"unknown buildsystem: {buildsystem}"


-def gen_makefile_configure(proj, deps_installed, distclean_cond, build_proj,
+def gen_makefile_configure(proj, deps_installed, build_proj,
cflags, docker_cmd, build_to_src, configure_opts,
update_src_copy_cmd):
buildsystem = projects_buildsystems.get(proj, "autotools")
if buildsystem == "autotools":
return f'''
.make.{proj}.configure: .make.{proj}.autoconf {deps_installed} $({proj}_configure_files)
- if {distclean_cond}; then $(MAKE) {proj}-distclean .make.{proj}.autoconf; fi
@echo "\\n\\n\\n===== $@\\n"
{update_src_copy_cmd}
-chmod -R ug+w {build_proj}
@@ -308,7 +303,7 @@
else:
assert False, f"unknown buildsystem: {buildsystem}"

-def gen_makefile_build(proj, distclean_cond, build_proj, docker_cmd,
+def gen_makefile_build(proj, build_proj, docker_cmd,
src_proj, update_src_copy_cmd):
buildsystem = projects_buildsystems.get(proj, "autotools")
check = "check" if args.make_check else ""
@@ -316,7 +311,6 @@
if buildsystem == "autotools":
return f'''
.make.{proj}.build: .make.{proj}.configure $({proj}_files)
- if {distclean_cond}; then $(MAKE) {proj}-distclean .make.{proj}.configure; fi
@echo "\\n\\n\\n===== $@\\n"
{update_src_copy_cmd}
{docker_cmd}$(MAKE) -C {build_proj} -j {args.jobs} {check}
@@ -404,14 +398,6 @@
-rm -rf .make.{proj}.*
'''

-def gen_makefile_distclean(proj, src_proj):
- return f'''
-.PHONY: {proj}-distclean
-{proj}-distclean: {proj}-clean
- @echo "\\n\\n\\n===== $@\\n"
- $(MAKE) -C {src_proj} distclean
- '''
-
def is_src_copy_needed(proj):
if not args.autoreconf_in_src_copy:
return False
@@ -456,7 +442,6 @@
else:
configure_opts_str = ''

- distclean_cond = f'[ -e {src_proj}/config.status ]' if args.auto_distclean else 'false'
deps_installed = ' '.join(['.make.%s.install' % d for d in deps])
deps_reinstall = ' '.join(['%s-reinstall' %d for d in deps])
cflags = 'CFLAGS=-g ' if args.build_debug else ''
@@ -490,12 +475,10 @@
{gen_makefile_autoconf(proj,
src_proj,
src_proj_copy,
- distclean_cond,
update_src_copy_cmd)}

{gen_makefile_configure(proj,
deps_installed,
- distclean_cond,
build_proj,
cflags,
docker_cmd,
@@ -504,7 +487,6 @@
update_src_copy_cmd)}

{gen_makefile_build(proj,
- distclean_cond,
build_proj,
docker_cmd,
src_proj_copy,
@@ -520,8 +502,6 @@

{gen_makefile_clean(proj, build_proj)}

-{gen_makefile_distclean(proj, src_proj)}
-
.PHONY: {proj}
{proj}: .make.{proj}.install
'''
@@ -649,8 +629,6 @@
content += f" --push-url {shlex.quote(args.docker_cmd)} \\\n"
if args.build_debug:
content += " --build-debug \\\n"
-if args.auto_distclean:
- content += " --auto-distclean \\\n"
if args.autoreconf_in_src_copy:
content += " --autoreconf-in-src-copy \\\n"
content += " $(NULL)\n"

To view, visit change 40355. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: newchange
Gerrit-Project: osmo-dev
Gerrit-Branch: master
Gerrit-Change-Id: I28378e6d2cafd209adcfae6b85a032d73ed14cce
Gerrit-Change-Number: 40355
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith@sysmocom.de>