dashpay / dash

Dash - Reinventing Cryptocurrency
https://www.dash.org
MIT License
1.49k stars 1.2k forks source link

Dash Core sometimes thinks it's libdashbls #5270

Open PastaPastaPasta opened 1 year ago

PastaPastaPasta commented 1 year ago
image

See above, I think this is due to conflicting defines, and the bls one sometime coming up on top.

kwvg commented 1 year ago

Not reproducible on Ubuntu 20.04.5 LTS, built on 6e00fd06059dfb40a3313dc06c62a26ae6beb1cf, after running git clean -dfx using --disable-ccache

Dash-Qt RPC console

PastaPastaPasta commented 1 year ago

Disabling ccache did resolve the issue.. I may clear my ccache and see what happens in the future

PastaPastaPasta commented 1 year ago

Closing now as I can't reproduce locally

knst commented 1 year ago

hm.... I see strange warning while compiling core sometime:

In file included from ./crypto/common.h:9,
                 from ./script/script.h:9,
                 from ./primitives/transaction.h:10,
                 from ./compressor.h:10,
                 from ./coins.h:9,
                 from ./evo/creditpool.h:8:
./config/bitcoin-config.h:381: note: this is the location of the previous definition
  381 | #define PACKAGE_BUGREPORT "https://github.com/dashpay/dash/issues"
      | 
./dashbls/depends/relic/include/relic_conf.h:497: warning: "PACKAGE_NAME" redefined
  497 | #define PACKAGE_NAME "libdashbls"
      | 
./config/bitcoin-config.h:384: note: this is the location of the previous definition
  384 | #define PACKAGE_NAME "Dash Core"
      | 
./dashbls/depends/relic/include/relic_conf.h:500: warning: "PACKAGE_STRING" redefined
  500 | #define PACKAGE_STRING "libdashbls 1.2.4"
      | 
./config/bitcoin-config.h:387: note: this is the location of the previous definition
  387 | #define PACKAGE_STRING "Dash Core 20.0.0"
      | 
./dashbls/depends/relic/include/relic_conf.h:503: warning: "PACKAGE_TARNAME" redefined
  503 | #define PACKAGE_TARNAME "libdashbls"
      | 
./config/bitcoin-config.h:390: note: this is the location of the previous definition
  390 | #define PACKAGE_TARNAME "dashcore"
      | 
./dashbls/depends/relic/include/relic_conf.h:506: warning: "PACKAGE_URL" redefined
  506 | #define PACKAGE_URL ""
      | 
./config/bitcoin-config.h:393: note: this is the location of the previous definition
  393 | #define PACKAGE_URL "https://dash.org/"
      | 
./dashbls/depends/relic/include/relic_conf.h:509: warning: "PACKAGE_VERSION" redefined
  509 | #define PACKAGE_VERSION "1.2.4"
      | 
./config/bitcoin-config.h:396: note: this is the location of the previous definition
  396 | #define PACKAGE_VERSION "20.0.0"
      | 

I may assume that issue is reproduced for me. The last line of src/dashbls/configure.ac is:

sed -i.old 's/PACKAGE/DASHBLS/g' depends/relic/include/relic_conf.h

and it seems that sometimes it doesn't run or fails somehow. Not sure about steps to reproduce it though.

kwvg commented 1 year ago

Could you paste your build flags if possible?

knst commented 1 year ago
./configure --prefix=$(pwd)/depends/x86_64-pc-linux-gnu --enable-suppress-external-warnings

nothing special atm, but may be it was something specific in the past such as sanitizer, it's an old copy of repo.

knst commented 1 year ago

https://www.oreilly.com/library/view/autotools/9781593272067/ch04s08.html

Finally, we come to the AC_OUTPUT macro, which expands, within configure, into shell code that generates the config.status script based on the data specified in the previous macro expansions. All other macros must be used before AC_OUTPUT is expanded, or they will be of little value to your generated configure script. (Additional shell script may be placed in configure.ac after AC_OUTPUT, but it will not affect the configuration or file generation performed by config.status.)

Consider adding shell echo or print statements after AC_OUTPUT to tell the user how the build system is configured based on the specified command-line options. You can also use these statements to tell the user about additional useful targets for make

It means that sed that is doing substitution for relic_conf.h is run only once but afterwards is used cached script from config.status and sed is not called again.