英文:
Golang testing with dynamic linking for Kafka on M1 chip
问题
我正在尝试为我在新的M1 Mac上使用Golang / Kafka进行的一个 poc 编写一些单元测试。我正在使用来自confluent的官方Golang Kafka库:
"github.com/confluentinc/confluent-kafka-go/kafka"
显然,这个包依赖于一个尚未为M1构建的 librdkafka
。对于构建,有一个解决方法在这里,大致如下:
% brew install librdkafka openssl zstd
% PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@3/lib/pkgconfig"
% go build -tags dynamic *yadda yadda yadda*
这对于构建/运行是可以的。不幸的是,对于测试似乎不起作用。在描述解决方法的链接中,使用 go test -tags dynamic ./...
似乎可以工作,但在我的情况下,测试运行似乎没有读取导出的 PKG_CONFIG_PATH:
% go test -tags dynamic ./... -v
# pkg-config --cflags -- rdkafka
Package libcrypto was not found in the pkg-config search path.
Perhaps you should add the directory containing `libcrypto.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libcrypto', required by 'rdkafka', not found
pkg-config: exit status 1
FAIL smartAC/shared [build failed]
尽管该环境变量在我的 shell 中已设置:
% echo $PKG_CONFIG_PATH
/opt/homebrew/opt/openssl@3/lib/pkgconfig
有没有什么技巧可以让 go test
工具看到这个环境变量?
英文:
I'm trying to write some unit tests for a poc I'm doing in Golang / Kafka on a new M1 Mac. I'm using the official Golang Kafka libs from confluent:
"github.com/confluentinc/confluent-kafka-go/kafka"
Apparently, this package has a dependency on a librdkafka
which is not built for M1 (yet?). For the build, there is a work around here, which goes something like this:
% brew install librdkafka openssl zstd
% PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@3/lib/pkgconfig"
% go build -tags dynamic *yadda yadda yadda*
This is fine for build/run. Unfortunately, it doesn't seem to work for tests. In the link describing the workaround, using go test -tags dynamic ./...
seems to work, but in my case the test run doesn't seem to read the exported PKG_CONFIG_PATH:
% go test -tags dynamic ./... -v
# pkg-config --cflags -- rdkafka
Package libcrypto was not found in the pkg-config search path.
Perhaps you should add the directory containing `libcrypto.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libcrypto', required by 'rdkafka', not found
pkg-config: exit status 1
FAIL smartAC/shared [build failed]
Even though that env var is set, at least in my shell:
% echo $PKG_CONFIG_PATH
/opt/homebrew/opt/openssl@3/lib/pkgconfig
Is there some trick to get go test tool to see the env var?
答案1
得分: 4
好的,以下是翻译好的内容:
好的,没关系。我解决了这个问题...在我的~/.zshrc文件中,我没有导出PKG_CONFIG_PATH,所以我将它改成了:
PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@3/lib/pkgconfig"
改成了:
export PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@3/lib/pkgconfig"
这样似乎可以工作了。我保留这个问题,以防对其他像我这样的新手有所帮助 :-).
英文:
Ok, never mind. I sorted this... in my ~/.zshrc I wasn't exporting the PKG_CONFIG_PATH, so I changed this:
PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@3/lib/pkgconfig"
to this:
export PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@3/lib/pkgconfig"
Which seems to work. Leaving the question up, just in case it might help some other noob like me :-).
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论