Skip to content

Commit

Permalink
[build] Support cross-platform electrs build
Browse files Browse the repository at this point in the history
  • Loading branch information
dagurval committed Apr 18, 2019
1 parent af6b008 commit 3aae0af
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 6 deletions.
6 changes: 3 additions & 3 deletions Makefile.am
Expand Up @@ -4,7 +4,7 @@

ACLOCAL_AMFLAGS = -I build-aux/m4
SUBDIRS = src
.PHONY: deploy FORCE
.PHONY: deploy FORCE electrs

GZIP_ENV="-9n"
export PYTHONPATH
Expand Down Expand Up @@ -218,8 +218,8 @@ endif
check-formatting:
$(MAKE) -C src $@

electrs: ${PWD}/src/electrs
$(top_srcdir)/contrib/electrs/build_electrs.py --dst=${PWD}/src
electrs:
$(top_srcdir)/contrib/electrs/build_electrs.py --dst=${PWD}/src --target=$(host)

dist_noinst_SCRIPTS = autogen.sh

Expand Down
22 changes: 19 additions & 3 deletions contrib/electrs/build_electrs.py
Expand Up @@ -19,6 +19,8 @@
action = "store_true")
parser.add_argument('--dst', help='Where to copy produced binary',
default=os.path.join(ROOT_DIR, "src"))
parser.add_argument('--target', help='Target platform (e.g. x86_64-pc-linux-gnu)',
default="x86_64-unknown-linux-gnu")
args = parser.parse_args()

level = logging.DEBUG if args.verbose else logging.INFO
Expand Down Expand Up @@ -104,16 +106,30 @@ def cargo_run(args):
if rc != 0:
bail("cargo failed with return code %s", rc)

def get_target(makefile_target):
# Try to map target passed from makefile to the equalent in rust
# To see supported targets, run: rustc --print target-list
target_map = {
'x86_64-pc-linux-gnu' : 'x86_64-unknown-linux-gnu',
'i686-pc-linux-gnu' : 'i686-unknown-linux-gnu'
}
if makefile_target in target_map:
return target_map[makefile_target]
logging.warn("Target %s is not mapped, passing it rust and hoping it works"
% makefile_target)
return makefile_target


check_dependencies()

if not os.path.exists(ELECTRS_DIR):
clone_repo()
verify_repo(args.allow_modified)

cargo_run(["build", "--release"])
cargo_run(["test", "--release"])
cargo_run(["build", "--release", "--target=%s" % get_target(args.target)])
cargo_run(["test", "--release", "--target=%s" % get_target(args.target)])

src = os.path.join(ELECTRS_DIR, "target", "release", "electrs")
src = os.path.join(ELECTRS_DIR, "target", get_target(args.target), "release", "electrs")
logging.info("Copying %s to %s", src, args.dst)
shutil.copy(src, args.dst)

Expand Down

0 comments on commit 3aae0af

Please sign in to comment.