From 3117b99363c29a94ba96e671fe3f5edb54aed2e2 Mon Sep 17 00:00:00 2001 From: Prasanna Loganathar Date: Thu, 27 Jul 2023 09:16:31 +0800 Subject: [PATCH 1/6] Add solc to depends --- configure.ac | 11 +++++---- depends/config.site.in | 3 ++- depends/packages/packages.mk | 2 +- depends/packages/solc.mk | 45 ++++++++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 depends/packages/solc.mk diff --git a/configure.ac b/configure.ac index 75a71ff88d..be4dd9b0dd 100644 --- a/configure.ac +++ b/configure.ac @@ -1376,16 +1376,17 @@ AC_SUBST(PROTOC_INCLUDE_DIR) dnl If the host and build triplets are the same, we keep this empty RUST_HOST=`$ac_abs_confdir/make.sh get_rust_triplet "$build"` -if test $? != 0; then -AC_MSG_ERROR("unsupported build system") +if test "x$?" != "x0"; then + AC_MSG_ERROR("unsupported build system") fi +dnl If the host and build triplets are the same, we keep this empty RUST_TARGET=`$ac_abs_confdir/make.sh get_rust_triplet "$host"` -if test $? != 0; then -AC_MSG_ERROR("unsupported host target") +if test "x$?" != "x0"; then + AC_MSG_ERROR("unsupported target system") fi -if test x$RUST_HOST = x$RUST_TARGET; then +if test "x$RUST_HOST" = "x$RUST_TARGET"; then RUST_TARGET= RUST_HOST= fi diff --git a/depends/config.site.in b/depends/config.site.in index d1cb20a14d..4084205ba2 100644 --- a/depends/config.site.in +++ b/depends/config.site.in @@ -25,7 +25,7 @@ if test x@host_os@ = xdarwin; then PORT=no fi -PATH=$depends_prefix/native/bin:$PATH +PATH=$depends_prefix/bin/:$depends_prefix/native/bin:$PATH PKG_CONFIG="`which pkg-config` --static" # These two need to remain exported because pkg-config does not see them @@ -79,5 +79,6 @@ if test -n "@LDFLAGS@"; then LDFLAGS="@LDFLAGS@ $LDFLAGS" fi +export SOLC=${depends_prefix}/bin/solc export PROTOC=${depends_prefix}/bin/protoc export PROTOC_INCLUDE_DIR=${depends_prefix}/include diff --git a/depends/packages/packages.mk b/depends/packages/packages.mk index b2aa878ef8..9781b86bc0 100644 --- a/depends/packages/packages.mk +++ b/depends/packages/packages.mk @@ -1,4 +1,4 @@ -packages := boost libevent protobuf +packages := boost libevent protobuf solc rapidcheck_packages = rapidcheck wallet_packages = bdb diff --git a/depends/packages/solc.mk b/depends/packages/solc.mk new file mode 100644 index 0000000000..ee113173e6 --- /dev/null +++ b/depends/packages/solc.mk @@ -0,0 +1,45 @@ +package=solc +$(package)_version=0.8.20 +$(package)_download_path=https://github.com/ethereum/solidity/releases/download/v$($(package)_version)/ +$(package)_file_ext= + +# NOTE: solc gets invoked on the BUILD OS during compile. So, we don't +# care about HOST OS, unlike all other dependencies. +# That is: solc is run on the BUILD OS, not targeted to run on the +# HOST OS. + +ifeq ($(build_os)-$(build_arch),linux-x86_64) + $(package)_file_name=solc-static-linux + $(package)_sha256_hash=0479d44fdf9c501c25337fdc540419f1593b884a87b47f023da4f1c700fda782 +endif +ifeq ($(build_os),darwin) + $(package)_file_name=solc-macos + $(package)_sha256_hash=fc329945e0068e4e955d0a7b583776dc8d25e72ab657a044618a7ce7dd0519aa +endif +ifeq ($(build_os),windows) + $(package)_file_name=solc-windows.exe + $(package)_sha256_hash=a0fa8eb77805c530cfb6962f400643dbe83991387d27b319efd6b89482061946 + $(package)_file_ext=.exe +endif + +$(package)_target_name=$(package)$($(package)_file_ext) + + +ifeq ($($(package)_file_name),) + $(error Unsupported build platform: $(BUILD)) +endif + +define $(package)_extract_cmds + mkdir -p $$($(package)_extract_dir) && echo "$$($(package)_sha256_hash) $$($(package)_source)" > $$($(package)_extract_dir)/.$$($(package)_file_name).hash && $(build_SHA256SUM) -c $$($(package)_extract_dir)/.$$($(package)_file_name).hash && cp $$($(package)_source) $(package) +endef + +define $(package)_set_vars + $(package)_ROOT="$($(package)_staging_dir)/$(host_prefix)/bin" +endef + +define $(package)_build_cmds + mkdir -p $($(package)_ROOT) && \ + chmod +x $($(package)_target_name) && \ + mv $($(package)_target_name) $($(package)_ROOT) +endef + From 91c9a9e2ff58140a36e34e777ee3ae31b31222dd Mon Sep 17 00:00:00 2001 From: Prasanna Loganathar Date: Thu, 27 Jul 2023 09:44:34 +0800 Subject: [PATCH 2/6] Cleanup pkg ext and naming further --- depends/packages/solc.mk | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/depends/packages/solc.mk b/depends/packages/solc.mk index ee113173e6..8fbecc3574 100644 --- a/depends/packages/solc.mk +++ b/depends/packages/solc.mk @@ -22,15 +22,14 @@ ifeq ($(build_os),windows) $(package)_file_ext=.exe endif -$(package)_target_name=$(package)$($(package)_file_ext) - - ifeq ($($(package)_file_name),) $(error Unsupported build platform: $(BUILD)) endif define $(package)_extract_cmds - mkdir -p $$($(package)_extract_dir) && echo "$$($(package)_sha256_hash) $$($(package)_source)" > $$($(package)_extract_dir)/.$$($(package)_file_name).hash && $(build_SHA256SUM) -c $$($(package)_extract_dir)/.$$($(package)_file_name).hash && cp $$($(package)_source) $(package) + mkdir -p $$($(package)_extract_dir) && \ + echo "$$($(package)_sha256_hash) $$($(package)_source)" > $$($(package)_extract_dir)/.$$($(package)_file_name).hash && \ + $(build_SHA256SUM) -c $$($(package)_extract_dir)/.$$($(package)_file_name).hash endef define $(package)_set_vars @@ -39,7 +38,6 @@ endef define $(package)_build_cmds mkdir -p $($(package)_ROOT) && \ - chmod +x $($(package)_target_name) && \ - mv $($(package)_target_name) $($(package)_ROOT) + chmod +x $($(package)_source) && \ + cp $($(package)_source) $($(package)_ROOT)/$(package)$($(package)_file_ext) endef - From e7374e47d3f4db68eda509d2f6c1a4d995a0e502 Mon Sep 17 00:00:00 2001 From: Prasanna Loganathar Date: Thu, 27 Jul 2023 10:13:13 +0800 Subject: [PATCH 3/6] Remove solc win branch on depends --- depends/config.site.in | 2 +- depends/packages/solc.mk | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/depends/config.site.in b/depends/config.site.in index 4084205ba2..cee77c1117 100644 --- a/depends/config.site.in +++ b/depends/config.site.in @@ -25,7 +25,7 @@ if test x@host_os@ = xdarwin; then PORT=no fi -PATH=$depends_prefix/bin/:$depends_prefix/native/bin:$PATH +PATH=$depends_prefix/native/bin:$PATH PKG_CONFIG="`which pkg-config` --static" # These two need to remain exported because pkg-config does not see them diff --git a/depends/packages/solc.mk b/depends/packages/solc.mk index 8fbecc3574..b4a2a66e0a 100644 --- a/depends/packages/solc.mk +++ b/depends/packages/solc.mk @@ -1,7 +1,6 @@ package=solc $(package)_version=0.8.20 $(package)_download_path=https://github.com/ethereum/solidity/releases/download/v$($(package)_version)/ -$(package)_file_ext= # NOTE: solc gets invoked on the BUILD OS during compile. So, we don't # care about HOST OS, unlike all other dependencies. @@ -16,11 +15,6 @@ ifeq ($(build_os),darwin) $(package)_file_name=solc-macos $(package)_sha256_hash=fc329945e0068e4e955d0a7b583776dc8d25e72ab657a044618a7ce7dd0519aa endif -ifeq ($(build_os),windows) - $(package)_file_name=solc-windows.exe - $(package)_sha256_hash=a0fa8eb77805c530cfb6962f400643dbe83991387d27b319efd6b89482061946 - $(package)_file_ext=.exe -endif ifeq ($($(package)_file_name),) $(error Unsupported build platform: $(BUILD)) @@ -39,5 +33,5 @@ endef define $(package)_build_cmds mkdir -p $($(package)_ROOT) && \ chmod +x $($(package)_source) && \ - cp $($(package)_source) $($(package)_ROOT)/$(package)$($(package)_file_ext) + cp $($(package)_source) $($(package)_ROOT)/$(package) endef From dcf6a7a3155ff95f87832a0f65a2f526ce72c429 Mon Sep 17 00:00:00 2001 From: Prasanna Loganathar Date: Thu, 27 Jul 2023 10:15:18 +0800 Subject: [PATCH 4/6] chmod on target, instead of pkg --- depends/packages/solc.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/depends/packages/solc.mk b/depends/packages/solc.mk index b4a2a66e0a..9d0eefd750 100644 --- a/depends/packages/solc.mk +++ b/depends/packages/solc.mk @@ -32,6 +32,6 @@ endef define $(package)_build_cmds mkdir -p $($(package)_ROOT) && \ - chmod +x $($(package)_source) && \ - cp $($(package)_source) $($(package)_ROOT)/$(package) + cp $($(package)_source) $($(package)_ROOT)/$(package) && \ + chmod +x $($(package)_ROOT)/$(package) endef From 5511d1ad083a3b20bbc39ea6638cf19251c447ab Mon Sep 17 00:00:00 2001 From: Prasanna Loganathar Date: Thu, 27 Jul 2023 10:19:14 +0800 Subject: [PATCH 5/6] Update depends/packages/solc.mk --- depends/packages/solc.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/depends/packages/solc.mk b/depends/packages/solc.mk index 9d0eefd750..90063d73d4 100644 --- a/depends/packages/solc.mk +++ b/depends/packages/solc.mk @@ -11,6 +11,9 @@ ifeq ($(build_os)-$(build_arch),linux-x86_64) $(package)_file_name=solc-static-linux $(package)_sha256_hash=0479d44fdf9c501c25337fdc540419f1593b884a87b47f023da4f1c700fda782 endif + +# Note: solc only provides binaries for darwin amd64, however since rosetta is +# expected to be present, this should work through emulation without additional config. ifeq ($(build_os),darwin) $(package)_file_name=solc-macos $(package)_sha256_hash=fc329945e0068e4e955d0a7b583776dc8d25e72ab657a044618a7ce7dd0519aa From 54a9bbe799d4006e48fcfa3d742cb98148170570 Mon Sep 17 00:00:00 2001 From: Shoham Chakraborty Date: Thu, 27 Jul 2023 11:34:54 +0800 Subject: [PATCH 6/6] Rename variable to SOLC_PATH, reexport variable in Rust build --- configure.ac | 1 + depends/config.site.in | 2 +- lib/Makefile.am | 4 +++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index be4dd9b0dd..ce3f0841e9 100644 --- a/configure.ac +++ b/configure.ac @@ -1373,6 +1373,7 @@ AC_SUBST(HAVE_MM_PREFETCH) AC_SUBST(HAVE_STRONG_GETAUXVAL) AC_SUBST(PROTOC) AC_SUBST(PROTOC_INCLUDE_DIR) +AC_SUBST(SOLC_PATH) dnl If the host and build triplets are the same, we keep this empty RUST_HOST=`$ac_abs_confdir/make.sh get_rust_triplet "$build"` diff --git a/depends/config.site.in b/depends/config.site.in index cee77c1117..8cad978599 100644 --- a/depends/config.site.in +++ b/depends/config.site.in @@ -79,6 +79,6 @@ if test -n "@LDFLAGS@"; then LDFLAGS="@LDFLAGS@ $LDFLAGS" fi -export SOLC=${depends_prefix}/bin/solc +export SOLC_PATH=${depends_prefix}/bin/solc export PROTOC=${depends_prefix}/bin/protoc export PROTOC_INCLUDE_DIR=${depends_prefix}/include diff --git a/lib/Makefile.am b/lib/Makefile.am index c8d9998910..1aac6d0747 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -43,8 +43,10 @@ endif export PKG_CONFIG_PATH PKGCONFIG_LIBDIR PYTHONPATH # Export protoc vars export PROTOC PROTOC_INCLUDE_DIR +# Export solc path +export SOLC_PATH -# Ensure nested autotools calls by cargo don't end up in unexpected places +# Ensure nested autotools calls by cargo don't end up in unexpected places unexport DESTDIR export RUST_BACKTRACE=1