Find which dependency uses cgo - go

I'm getting the following error when I compile my Go binary locally and then run it on my docker container:
my-server: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by my-server)
my-server: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by my-server)
Everything works fine if I set CGO_ENABLED=0 when compiling. None of my code uses glibc, so I'm just curious which of my dependencies is pulling it in. Is there any way to query which dependency requires this?

which of my dependencies is pulling it in
Running LD_DEBUG=files my-server |& grep 'needed by' will produce lines similar to:
2310307: file=libtinfo.so.6 [0]; needed by ... [0]
2310307: file=libc.so.6 [0]; needed by ... [0]
which should answer your question.

Related

Getting error: no matching version `^2.0.0` found for package `codec`?

Question
I'm new to Substrate and going through Add a Pallet to Your Runtime. At first, running the command cargo check -p node-template-runtime gave me error
error: failed to parse manifest at `/Users/bashar/work/substrate/start/substrate-node-template/pallets/template/Cargo.toml`
Caused by:
feature `rename-dependency` is required
consider adding `cargo-features = ["rename-dependency"]` to the manifest
I added it and then I started getting this error:
error: no matching version `^2.0.0` found for package `codec`
location searched: registry `https://github.com/rust-lang/crates.io-index`
versions found: 0.0.0
required by package `frame-benchmarking-cli v3.0.0`
... which is depended on by `node-template v3.0.0 (/Users/bashar/work/substrate/start/substrate-node-template/node)`
I tried modifying the codec version to 2.0.1 with no luck. My setup
rustup 1.23.1
rustc 1.50.0
cargo 1.30.0
Any idea what I'm doing wrong?
UPDATE
I went back to the Create Your First Substrate Chain, which this tutorial is built on, started from scratch, which the Pallet tutorial is based on. And this time, after cloning the repository for first tutorial, cargo build --release failed with the same error feature rename-dependency is required.
This built fine the first time before I moved to the second tutorial. Which makes me think maybe a recent Mac update ruined something? I even tried uninstalling Rust and re-installing it, then installing a new template. Same thing

How to fix library dependence in a conan package

I am trying to install qt/5.14.2 with conan.
Using
qt/5.14.2#bincrafters/stable
I receive
ERROR: libpq/11.5: Error in package_info() method, line 211
self.cpp_info.components["pq"].requires.append("zlib::zlib")
AttributeError: 'Component' object has no attribute 'requires'
OK, there is a bug in libpq/11.5
I am trying to downgrade to
libpq/11.4#bincrafters/stable
ERROR: Conflict in qt/5.14.2#bincrafters/stable:
'qt/5.14.2#bincrafters/stable' requires 'zlib/1.2.11' while 'libpq/11.4#bincrafters/stable' requires 'zlib/1.2.11#conan/stable'.
To fix this conflict you need to override the package 'zlib' in your root package.
BTW:
Why is it not enough to require the correct version of the library, and requiring the same repository? (and require two different repositories in two different packages for the same dependence)
OK, I attempted
zlib/1.2.11#bincrafters/stable
WARN: libpq/11.4#bincrafters/stable: requirement zlib/1.2.11#conan/stable overridden by your conanfile to zlib/1.2.11#bincrafters/stable
zlib/1.2.11#bincrafters/stable: Not found in local cache, looking in remotes...
zlib/1.2.11#bincrafters/stable: Trying with 'conan-center'...
zlib/1.2.11#bincrafters/stable: Trying with 'minres'...
zlib/1.2.11#bincrafters/stable: Trying with 'bincrafters'...
ERROR: Failed requirement 'zlib/1.2.11#bincrafters/stable' from 'libpq/11.4#bincrafters/stable'
ERROR: Unable to find 'zlib/1.2.11#bincrafters/stable' in remotes
Finally, I arrived at
libpq/11.4#bincrafters/stable
zlib/1.2.11#conan/stable
qt/5.14.2#bincrafters/stable
After this, it looks like it was oK:
Installing (downloading, building) binaries...
qt/5.14.2#bincrafters/stable: Retrieving package 93c70de10405da9f2d5a1f42b8c299ca7af869d2 from remote 'bincrafters'
Downloading conanmanifest.txt
Downloading conaninfo.txt
Downloading conan_package.tgz
....qt/5.14.2#bincrafters/stable: Package installed 93c70de10405da9f2d5a1f42b8c299ca7af869d2
qt/5.14.2#bincrafters/stable: Downloaded package revision 0
However, the install fails with
CMake was unable to find Qt5, put qmake in your path or set
QTDIR/QT_QMAKE_EXECUTABLE.
The package is downloaded, I see all components in the corresponding subdirectory in my home directory. However, unlike the other components, it is not installed, before CMake attempts to find it.
What do I wrong?
In case of any strange behavior of conan, upgrade! For me, switch 1.24.0 -> 1.28.1 with configs clean up fixed the same problem with libpq/11.5

Error (object._d_arraysetlengthTImpl not found) while building D project on MacOS

I was trying to build existing Dlang project on my home Mac. But I am getting this error. I haven't find anything about it.
$ dub build
Running pre-generate commands for vibe-d:tls...
Performing "debug" build using dmd for x86_64.
tinyendian 0.2.0: target for configuration "library" is up to date.
dyaml 0.8.0: building configuration "library"...
/Library/D/dmd/src/phobos/std/uni.d(935,32): Error: object._d_arraysetlengthTImpl not found. The current runtime does not support resizing arrays, or the runtime is corrupt.
/Library/D/dmd/src/phobos/std/uni.d(968,32): Error: object._d_arraysetlengthTImpl not found. The current runtime does not support resizing arrays, or the runtime is corrupt.
/Library/D/dmd/src/phobos/std/uni.d(4064,18): Error: template instance std.uni.MultiArray!(BitPacked!(uint, 13LU), BitPacked!(bool, 1LU)).MultiArray.length!0LU error instantiating
/Library/D/dmd/src/phobos/std/uni.d(4312,37): instantiated from here: TrieBuilder!(bool, dchar, 1114112, sliceBits!(8LU, 21LU), sliceBits!(0LU, 8LU))
/Library/D/dmd/src/phobos/std/regex/internal/ir.d(26,14): instantiated from here: CodepointSetTrie!(13, 8)
/Library/D/dmd/src/phobos/std/uni.d(935,32): Error: object._d_arraysetlengthTImpl not found. The current runtime does not support resizing arrays, or the runtime is corrupt.
/Library/D/dmd/src/phobos/std/uni.d(968,32): Error: object._d_arraysetlengthTImpl not found. The current runtime does not support resizing arrays, or the runtime is corrupt.
/Library/D/dmd/src/phobos/std/uni.d(4064,18): Error: template instance std.uni.MultiArray!(BitPacked!(uint, 13LU), BitPacked!(bool, 1LU)).MultiArray.length!1LU error instantiating
/Library/D/dmd/src/phobos/std/uni.d(4312,37): instantiated from here: TrieBuilder!(bool, dchar, 1114112, sliceBits!(8LU, 21LU), sliceBits!(0LU, 8LU))
/Library/D/dmd/src/phobos/std/regex/internal/ir.d(26,14): instantiated from here: CodepointSetTrie!(13, 8)
dmd failed with exit code 1.
Can somebody pls help?
I am using these:
MacOS 10.15.4
DMD64 v2.091.1
DUB 1.20.1
Thx to Adam D. Ruppe.
It looks like there was a problem with previously installed version of dmd.
Solved by:
brew uninstall dub
brew uninstall dmd
delete /Library/D directory
brew install dmd
brew install dub

Error while running make command using Fabric 1.0.6 after all the 15 steps

I am installing fabric in a custom path $HOME//gopath/src/github.com/hyperledger/fabric using the make command but after installing all the 15 steps, I am getting the following error
Step 15/15 : LABEL org.hyperledger.fabric.version=1.0.2 org.hyperledger.fabric.base.version=0.3.2
---> Running in ed05a67810db
Removing intermediate container ed05a67810db
---> 99b4b0b28957
Successfully built 99b4b0b28957
Successfully tagged hyperledger/fabric-javaenv:latest
docker tag hyperledger/fabric-javaenv hyperledger/fabric-javaenv:x86_64-1.0.2
build/bin/peer
CGO_CFLAGS=" " GOBIN=/root/gopath/src/github.com/hyperledger/fabric/build/bin go install -tags "" -ldflags "-X github.com/hyperledger/fabric/common/metadata.Version=1.0.2 -X github.com/hyperledger/fabric/common/metadata.BaseVersion=0.3.2 -X github.com/hyperledger/fabric/common/metadata.BaseDockerLabel=org.hyperledger.fabric -X github.com/hyperledger/fabric/common/metadata.DockerNamespace=hyperledger -X github.com/hyperledger/fabric/common/metadata.BaseDockerNamespace=hyperledger" github.com/hyperledger/fabric/peer
go build github.com/hyperledger/fabric/vendor/github.com/miekg/pkcs11: invalid flag in #cgo LDFLAGS: -Wl,--no-as-needed
Makefile:227: recipe for target 'build/bin/peer' failed
make: *** [build/bin/peer] Error 1
Docker version 17.12.0-ce, build c97c6d6
docker-compose version 1.18.0, build 8dd22a9
go version go1.9.4 linux/amd64
OS : Ubuntu 16.04
I have set the following path also
$ mkdir $HOME/gopath
$ export GOPATH=$HOME/gopath
$ export GOROOT=$HOME/go
$ export PATH=$PATH:$GOROOT/bin
Jira Link: https://jira.hyperledger.org/browse/FAB-2218 which I have already done
It is a known issue in go 1.9.4:
https://github.com/golang/go/issues/23739
While go people are fixing it, you can manually whitelist the flags before starting make:
$ export CGO_LDFLAGS_ALLOW='-Wl,--no-as-needed'
$ make
Alternatively you can just downgrade to go 1.9.3
as far as I know you don't need to build the fabric itself.
You just need to have sources in the gopath, as your chaincode will need this, when you are building your chaincode for the blockchain itself.
In addition you will probably also need to install the fabric-ca for your chaincode to build successfully, if you use the certificate-stuff.
This is sufficient to check if you installed fabric correctly:
cd $GOPATH/src/github.com/hyperledger/fabric
make unit-test
Keep going if this works.
I found this confusing at first as well ;)
I'd assume you switch to golang 1.9.4 or greater hence I belive this actually related to following issue, to solve it you need to update vendor dependencies:
govendor fetch github.com/hyperledger/fabric/vendor/github.com/miekg/pkcs11
Next continue to build binaries and run tests.

'BOOST_ASIO_OS_DEF' not declared error while buiding R Studio on ppc64le

I could use some help here.
I encountered the following "'BOOST_ASIO_OS_DEF' was not declared in this scope" error whiling trying to build R Studio on Ubuntu 16.04 LTS, ppc64le.
Googling did not produced much help. Can someone help me out, pls ?
The rstudio version is the lastest one from the github, and boost stuff was installed both from apt repository and from running dependencies/common/install-boost script, which is included in rstudio source code.
$ wget https://github.com/rstudio/rstudio/archive/master.zip
~/files/rstudio-master/build$ cmake .. -DRSTUDIO_TARGET=Server
-DCMAKE_BUILD_TYPE=Release ~/files/rstudio-master/build$ make all ...
BUILD SUCCESSFUL Total time: 5 minutes 50 seconds [ 0%] Built target
gwt_build [ 1%] Building CXX object
src/cpp/core/CMakeFiles/rstudio-core.dir/file_lock/FileLock.cpp.o In
file included from
/opt/rstudio-tools/boost/boost_1_50_0/include/boost/asio/ip/detail/endpoint.hpp:138:0,
from /opt/rstudio-tools/boost/boost_1_50_0/include/boost/asio/ip/basic_endpoint.hpp:20,
from /opt/rstudio-tools/boost/boost_1_50_0/include/boost/asio.hpp:53,
from /home/u0017496/files/rstudio-master/src/cpp/core/include/core/FileLock.hpp:28,
from /home/u0017496/files/rstudio-master/src/cpp/core/file_lock/FileLock.cpp:16:
/usr/include/boost/asio/ip/detail/impl/endpoint.ipp: In constructor
'boost::asio::ip::detail::endpoint::endpoint()':
/usr/include/boost/asio/ip/detail/impl/endpoint.ipp:38:50: error:
'BOOST_ASIO_OS_DEF' was not declared in this scope
data_.v4.sin_family = BOOST_ASIO_OS_DEF(AF_INET);
^ /usr/include/boost/asio/ip/detail/impl/endpoint.ipp: In constructor
'boost::asio::ip::detail::endpoint::endpoint(int, short unsigned
int)': /usr/include/boost/asio/ip/detail/impl/endpoint.ipp:47:42:
error: 'BOOST_ASIO_OS_DEF' was not declared in this scope if
(family == BOOST_ASIO_OS_DEF(AF_INET))
^
...
I just had the same problem on Debian Stretch.
It may originate from having boost already installed in another version. After removing the boost version previously installed via apt and deleting /opt/rstudio-tools, then running the install-dependencies script again, the error was gone.
(To be fair however, I should add that now I get errors related to boost and openssl.)

Resources