Skip to content

Commit

Permalink
[versions.mk] Make path to SUBMODULES.json based on srcdir (mono#3314)
Browse files Browse the repository at this point in the history
Since acceptance-tests/Makefile (and llvm/Makefile) include scripts/submodules/versions.mk which evals versions.py which looks
for a SUBMODULES.json file in the current working directory we got confusing error messages if the build directory is not the src dir:

```
Traceback (most recent call last):
  File "../../mono/scripts/submodules/versions.py", line 22, in <module>
    submodules = json.load(open(CONFIG_FILE))
IOError: [Errno 2] No such file or directory: 'SUBMODULES.json'
```

Instead we now pass the path to SUBMODULES.json as a variable to versions.py and set it based on $(top_srcdir) so it works
even for out-of-tree builds.
  • Loading branch information
akoeplinger authored and vargaz committed Jul 21, 2016
1 parent 6357991 commit d8d1fe6
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 27 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ obj/
[Rr]elease*/
Ankh.NoLoad
*.gpState
.vscode/

# Tooling
_ReSharper*/
Expand Down
1 change: 1 addition & 0 deletions acceptance-tests/versions.mk
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
.PHONY: validate-versions reset-versions

SUBMODULES_CONFIG_FILE = $(top_srcdir)/acceptance-tests/SUBMODULES.json
include $(top_srcdir)/scripts/submodules/versions.mk

$(eval $(call ValidateVersionTemplate,roslyn,ROSLYN))
Expand Down
1 change: 1 addition & 0 deletions llvm/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

LLVM_PATH=llvm

SUBMODULES_CONFIG_FILE = $(top_srcdir)/llvm/SUBMODULES.json
include $(top_srcdir)/scripts/submodules/versions.mk

$(eval $(call ValidateVersionTemplate,llvm,LLVM))
Expand Down
25 changes: 12 additions & 13 deletions scripts/submodules/versions.mk
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
#
# This is a python script and a set of make targets to implement support for conditional submodules
# There should be a SUBMODULES.json file which contains information about the submodules.
# Set the SUBMODULES_CONFIG_FILE make variable to the srcdir path of a SUBMODULES.json file which contains information about the submodules.
#

CONFIG=SUBMODULES.json
SCRIPT=$(top_srcdir)/scripts/submodules/versions.py

# usage $(call ValidateVersionTemplate (name,MAKEFILE VAR,repo name))
# usage $(call ValidateVersionTemplate (mono,MONO,mono))

define ValidateVersionTemplate
#$(eval REPOSITORY_$(2):=$(shell test -z $(3) && echo $(1) || echo "$(3)"))
#$(eval DIRECTORY_$(2):=$(shell python $(SCRIPT) get-dir $(1)))
#$(eval DIRECTORY_$(2):=$(shell python $(SCRIPT) $(SUBMODULES_CONFIG_FILE) get-dir $(1)))
#$(eval DIRECTORY_$(2):=$(shell test -z $(DIRECTORY_$(2)) && echo $(1) || echo $(DIRECTORY_$(2))))
#$(eval MODULE_$(2):=$(shell python $(SCRIPT) get-url $(1)))
#$(eval NEEDED_$(2)_VERSION:=$(shell python $(SCRIPT) get-rev $(1)))
#$(eval $(2)_BRANCH_AND_REMOTE:=$(shell python $(SCRIPT) get-remote-branch $(1)))
#$(eval MODULE_$(2):=$(shell python $(SCRIPT) $(SUBMODULES_CONFIG_FILE) get-url $(1)))
#$(eval NEEDED_$(2)_VERSION:=$(shell python $(SCRIPT) $(SUBMODULES_CONFIG_FILE) get-rev $(1)))
#$(eval $(2)_BRANCH_AND_REMOTE:=$(shell python $(SCRIPT) $(SUBMODULES_CONFIG_FILE) get-remote-branch $(1)))

#$(eval $(2)_VERSION:=$$$$(shell cd $($(2)_PATH) 2>/dev/null && git rev-parse HEAD ))

Expand Down Expand Up @@ -107,17 +106,17 @@ reset:

__bump-version-%:
@if [ "$(REV)" = "" ]; then echo "Usage: make bump-version-$* REV=<ref>"; exit 1; fi
python $(SCRIPT) set-rev $* $(REV)
@if [ "$(COMMIT)" = "1" ]; then echo "[submodules] Bump $* to pick up $(REV)." | git commit -F - $(CONFIG); fi
python $(SCRIPT) $(SUBMODULES_CONFIG_FILE) set-rev $* $(REV)
@if [ "$(COMMIT)" = "1" ]; then echo "[submodules] Bump $* to pick up $(REV)." | git commit -F - $(SUBMODULES_CONFIG_FILE); fi

__bump-branch-%:
@if [ "$(BRANCH)" = "" ]; then echo "Usage: make bump-branch-$* BRANCH=<branch> REMOTE_BRANCH=<remote branch>"; exit 1; fi
@if [ "$(REMOTE_BRANCH)" == "" ]; then echo "Usage: make bump-branch-$* BRANCH=<branch> REMOTE_BRANCH=<remote branch>"; exit 1; fi
python $(SCRIPT) set-branch $* $(BRANCH)
python $(SCRIPT) set-remote-branch $* $(REMOTE_BRANCH)
@if [ "$(COMMIT)" = "1" ]; then echo "[submodules] Bump $* to switch to $(BRANCH) $(REMOTE BRANCH)." | git commit -F - $(CONFIG); fi
python $(SCRIPT) $(SUBMODULES_CONFIG_FILE) set-branch $* $(BRANCH)
python $(SCRIPT) $(SUBMODULES_CONFIG_FILE) set-remote-branch $* $(REMOTE_BRANCH)
@if [ "$(COMMIT)" = "1" ]; then echo "[submodules] Bump $* to switch to $(BRANCH) $(REMOTE BRANCH)." | git commit -F - $(SUBMODULES_CONFIG_FILE); fi

__bump-current-version-%:
REV=$(shell cd $(ACCEPTANCE_TESTS_PATH)/$* && git log -1 --pretty=format:%H); \
python $(SCRIPT) set-rev $* $$REV; \
if [ "$(COMMIT)" = "1" ]; then echo "[submodules] Bump $* to pick up $$REV:" | git commit -F - $(CONFIG); fi
python $(SCRIPT) $(SUBMODULES_CONFIG_FILE) set-rev $* $$REV; \
if [ "$(COMMIT)" = "1" ]; then echo "[submodules] Bump $* to pick up $$REV:" | git commit -F - $(SUBMODULES_CONFIG_FILE); fi
28 changes: 14 additions & 14 deletions scripts/submodules/versions.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,38 +12,38 @@ def find_module(submodules, name):
sys.exit(1)


if len(sys.argv) < 2:
print("Usage: versions.py <command>")
if len(sys.argv) < 3:
print("Usage: versions.py <path to SUBMODULES.json> <command>")
sys.exit(1)

CONFIG_FILE = "SUBMODULES.json"
command = sys.argv[1]
CONFIG_FILE = sys.argv[1]
command = sys.argv[2]

submodules = json.load(open(CONFIG_FILE))

if command == "get-rev":
mod = find_module(submodules, sys.argv[2])
mod = find_module(submodules, sys.argv[3])
print(mod["rev"])
elif command == "get-url":
mod = find_module(submodules, sys.argv[2])
mod = find_module(submodules, sys.argv[3])
print(mod["url"])
elif command == "get-dir":
mod = find_module(submodules, sys.argv[2])
mod = find_module(submodules, sys.argv[3])
print(mod["directory"])
elif command == "get-remote-branch":
mod = find_module(submodules, sys.argv[2])
mod = find_module(submodules, sys.argv[3])
print(mod["remote-branch"])
elif command == "set-rev":
mod = find_module(submodules, sys.argv[2])
mod["rev"] = sys.argv[3]
mod = find_module(submodules, sys.argv[3])
mod["rev"] = sys.argv[4]
json.dump(submodules, open(CONFIG_FILE, "w"), indent = 2)
elif command == "set-branch":
mod = find_module(submodules, sys.argv[2])
mod["branch"] = sys.argv[3]
mod = find_module(submodules, sys.argv[3])
mod["branch"] = sys.argv[4]
json.dump(submodules, open(CONFIG_FILE, "w"), indent = 2)
elif command == "set-remote-branch":
mod = find_module(submodules, sys.argv[2])
mod["remote-branch"] = sys.argv[3]
mod = find_module(submodules, sys.argv[3])
mod["remote-branch"] = sys.argv[4]
json.dump(submodules, open(CONFIG_FILE, "w"), indent = 2)
elif command == "cat":
print(json.dumps(submodules, indent = 2))
Expand Down

0 comments on commit d8d1fe6

Please sign in to comment.