valkey-io / valkey-glide

An open source Valkey client library that supports Valkey and Redis open source 6.2, 7.0 and 7.2. Valkey GLIDE is designed for reliability, optimized performance, and high-availability, for Valkey and Redis OSS based applications. GLIDE is a multi language client library, written in Rust with programming language bindings, such as Java and Python
Apache License 2.0
260 stars 53 forks source link

Node-Alpine: Initialization Failed #1205

Closed ofirsnb closed 5 months ago

ofirsnb commented 7 months ago

Describe the bug

Seems like the package (Node) cannot be initialized when running under alpine image.

Expected Behavior

Package should be initialized properly.

Current Behavior

When running under alpine image (using official Node images), the code crashes with the error:

 /usr/app/node_modules/@aws/glide-for-redis-linux-arm64/node_modules/glide-rs/index.js:269
        throw loadError
        ^

Error: Cannot find module 'glide-rs-linux-arm64-musl'
Require stack:
- /usr/app/node_modules/@aws/glide-for-redis-linux-arm64/node_modules/glide-rs/index.js
- /usr/app/node_modules/@aws/glide-for-redis-linux-arm64/build-ts/index.js
- /usr/app/node_modules/@aws/glide-for-redis/build-ts/index.js
- /usr/app/dist/index.js

Reproduction Steps

Dockerfile

FROM node:18.19.0-alpine
# FROM node:18.19.0 # non-alpine - works

WORKDIR /usr/app

COPY *.json ./

RUN npm ci

COPY index.ts index.ts

CMD [ "npm", "run", "dev" ]

If you use the node:18.19.0 image instead of node:18.19.0-alpine, it works as expected.

You can use the Demo I pushed here: https://github.com/ofirsnb/node-glide-demo

Possible Solution

If I understand correctly, it's an "issue" with the rs-glide itself, not necessarily your wrapper. Probably it's happening due to missing dependencies, because the alpine is a very slim image. If indeed that's the case, I think the best solution would be to add to the documentation the required dependencies, so we can install them during the docker build.

Additional Information/Context

No response

Client version used

0.3.3, 0.2.0

Redis Version

7.2

OS

Linux

Language

TypeScript

Language Version

5.4.3

Cluster information

No response

Logs

No response

Other information

No response

avifenesh commented 7 months ago

@ofirsnb Hi again :) Thanks for opening the issue. Support for docker env's wasn't planned in the close period, but your issue is an eye opener and it is important. We will try to let it in our plans for GA and look into it. First of all, you can feel free to contribute this feature if you feel like. We would really appreciate it. In any case, can you list your node_moudoles?

ofirsnb commented 7 months ago

Hey @avifenesh :) I understand. Sure I'll try to take a look over the next few days, thank you for being so supportive:) And thanks for your efforts.!

Attaching the node_modules content (in the demo above):

node_modules content ``` ./.package-lock.json ./@aws/glide-for-redis-linux-arm64/.ort.yml ./@aws/glide-for-redis-linux-arm64/DEVELOPER.md ./@aws/glide-for-redis-linux-arm64/README.md ./@aws/glide-for-redis-linux-arm64/THIRD_PARTY_LICENSES_NODE ./@aws/glide-for-redis-linux-arm64/build-ts/index.d.ts ./@aws/glide-for-redis-linux-arm64/build-ts/index.js ./@aws/glide-for-redis-linux-arm64/build-ts/index.js.map ./@aws/glide-for-redis-linux-arm64/build-ts/src/BaseClient.d.ts ./@aws/glide-for-redis-linux-arm64/build-ts/src/BaseClient.js ./@aws/glide-for-redis-linux-arm64/build-ts/src/BaseClient.js.map ./@aws/glide-for-redis-linux-arm64/build-ts/src/Commands.d.ts ./@aws/glide-for-redis-linux-arm64/build-ts/src/Commands.js ./@aws/glide-for-redis-linux-arm64/build-ts/src/Commands.js.map ./@aws/glide-for-redis-linux-arm64/build-ts/src/Errors.d.ts ./@aws/glide-for-redis-linux-arm64/build-ts/src/Errors.js ./@aws/glide-for-redis-linux-arm64/build-ts/src/Errors.js.map ./@aws/glide-for-redis-linux-arm64/build-ts/src/Logger.d.ts ./@aws/glide-for-redis-linux-arm64/build-ts/src/Logger.js ./@aws/glide-for-redis-linux-arm64/build-ts/src/Logger.js.map ./@aws/glide-for-redis-linux-arm64/build-ts/src/ProtobufMessage.d.ts ./@aws/glide-for-redis-linux-arm64/build-ts/src/ProtobufMessage.js ./@aws/glide-for-redis-linux-arm64/build-ts/src/ProtobufMessage.js.map ./@aws/glide-for-redis-linux-arm64/build-ts/src/RedisClient.d.ts ./@aws/glide-for-redis-linux-arm64/build-ts/src/RedisClient.js ./@aws/glide-for-redis-linux-arm64/build-ts/src/RedisClient.js.map ./@aws/glide-for-redis-linux-arm64/build-ts/src/RedisClusterClient.d.ts ./@aws/glide-for-redis-linux-arm64/build-ts/src/RedisClusterClient.js ./@aws/glide-for-redis-linux-arm64/build-ts/src/RedisClusterClient.js.map ./@aws/glide-for-redis-linux-arm64/build-ts/src/Transaction.d.ts ./@aws/glide-for-redis-linux-arm64/build-ts/src/Transaction.js ./@aws/glide-for-redis-linux-arm64/build-ts/src/Transaction.js.map ./@aws/glide-for-redis-linux-arm64/index.ts ./@aws/glide-for-redis-linux-arm64/node_modules/glide-rs/glide-rs.linux-arm64-gnu.node ./@aws/glide-for-redis-linux-arm64/node_modules/glide-rs/index.d.ts ./@aws/glide-for-redis-linux-arm64/node_modules/glide-rs/index.js ./@aws/glide-for-redis-linux-arm64/node_modules/glide-rs/package.json ./@aws/glide-for-redis-linux-arm64/npm/glide/index.ts ./@aws/glide-for-redis-linux-arm64/npm/glide/package.json ./@aws/glide-for-redis-linux-arm64/npm/glide/tsconfig.json ./@aws/glide-for-redis-linux-arm64/package.json ./@aws/glide-for-redis-linux-arm64/package.json.tmpl ./@aws/glide-for-redis-linux-arm64/tsconfig.json ./@aws/glide-for-redis/README.md ./@aws/glide-for-redis/build-ts/index.d.ts ./@aws/glide-for-redis/build-ts/index.js ./@aws/glide-for-redis/build-ts/src/BaseClient.d.ts ./@aws/glide-for-redis/build-ts/src/Commands.d.ts ./@aws/glide-for-redis/build-ts/src/Errors.d.ts ./@aws/glide-for-redis/build-ts/src/Logger.d.ts ./@aws/glide-for-redis/build-ts/src/ProtobufMessage.d.ts ./@aws/glide-for-redis/build-ts/src/RedisClient.d.ts ./@aws/glide-for-redis/build-ts/src/RedisClusterClient.d.ts ./@aws/glide-for-redis/build-ts/src/Transaction.d.ts ./@aws/glide-for-redis/package.json ./@protobufjs/aspromise/LICENSE ./@protobufjs/aspromise/README.md ./@protobufjs/aspromise/index.d.ts ./@protobufjs/aspromise/index.js ./@protobufjs/aspromise/package.json ./@protobufjs/aspromise/tests/index.js ./@protobufjs/base64/LICENSE ./@protobufjs/base64/README.md ./@protobufjs/base64/index.d.ts ./@protobufjs/base64/index.js ./@protobufjs/base64/package.json ./@protobufjs/base64/tests/index.js ./@protobufjs/codegen/LICENSE ./@protobufjs/codegen/README.md ./@protobufjs/codegen/index.d.ts ./@protobufjs/codegen/index.js ./@protobufjs/codegen/package.json ./@protobufjs/codegen/tests/index.js ./@protobufjs/eventemitter/LICENSE ./@protobufjs/eventemitter/README.md ./@protobufjs/eventemitter/index.d.ts ./@protobufjs/eventemitter/index.js ./@protobufjs/eventemitter/package.json ./@protobufjs/eventemitter/tests/index.js ./@protobufjs/fetch/LICENSE ./@protobufjs/fetch/README.md ./@protobufjs/fetch/index.d.ts ./@protobufjs/fetch/index.js ./@protobufjs/fetch/package.json ./@protobufjs/fetch/tests/index.js ./@protobufjs/float/LICENSE ./@protobufjs/float/README.md ./@protobufjs/float/bench/index.js ./@protobufjs/float/bench/suite.js ./@protobufjs/float/index.d.ts ./@protobufjs/float/index.js ./@protobufjs/float/package.json ./@protobufjs/float/tests/index.js ./@protobufjs/inquire/.npmignore ./@protobufjs/inquire/LICENSE ./@protobufjs/inquire/README.md ./@protobufjs/inquire/index.d.ts ./@protobufjs/inquire/index.js ./@protobufjs/inquire/package.json ./@protobufjs/inquire/tests/data/array.js ./@protobufjs/inquire/tests/data/emptyArray.js ./@protobufjs/inquire/tests/data/emptyObject.js ./@protobufjs/inquire/tests/data/object.js ./@protobufjs/inquire/tests/index.js ./@protobufjs/path/LICENSE ./@protobufjs/path/README.md ./@protobufjs/path/index.d.ts ./@protobufjs/path/index.js ./@protobufjs/path/package.json ./@protobufjs/path/tests/index.js ./@protobufjs/pool/.npmignore ./@protobufjs/pool/LICENSE ./@protobufjs/pool/README.md ./@protobufjs/pool/index.d.ts ./@protobufjs/pool/index.js ./@protobufjs/pool/package.json ./@protobufjs/pool/tests/index.js ./@protobufjs/utf8/.npmignore ./@protobufjs/utf8/LICENSE ./@protobufjs/utf8/README.md ./@protobufjs/utf8/index.d.ts ./@protobufjs/utf8/index.js ./@protobufjs/utf8/package.json ./@protobufjs/utf8/tests/data/utf8.txt ./@protobufjs/utf8/tests/index.js ./@types/node/LICENSE ./@types/node/README.md ./@types/node/assert.d.ts ./@types/node/assert/strict.d.ts ./@types/node/async_hooks.d.ts ./@types/node/buffer.d.ts ./@types/node/child_process.d.ts ./@types/node/cluster.d.ts ./@types/node/console.d.ts ./@types/node/constants.d.ts ./@types/node/crypto.d.ts ./@types/node/dgram.d.ts ./@types/node/diagnostics_channel.d.ts ./@types/node/dns.d.ts ./@types/node/dns/promises.d.ts ./@types/node/dom-events.d.ts ./@types/node/domain.d.ts ./@types/node/events.d.ts ./@types/node/fs.d.ts ./@types/node/fs/promises.d.ts ./@types/node/globals.d.ts ./@types/node/globals.global.d.ts ./@types/node/http.d.ts ./@types/node/http2.d.ts ./@types/node/https.d.ts ./@types/node/index.d.ts ./@types/node/inspector.d.ts ./@types/node/module.d.ts ./@types/node/net.d.ts ./@types/node/os.d.ts ./@types/node/package.json ./@types/node/path.d.ts ./@types/node/perf_hooks.d.ts ./@types/node/process.d.ts ./@types/node/punycode.d.ts ./@types/node/querystring.d.ts ./@types/node/readline.d.ts ./@types/node/readline/promises.d.ts ./@types/node/repl.d.ts ./@types/node/stream.d.ts ./@types/node/stream/consumers.d.ts ./@types/node/stream/promises.d.ts ./@types/node/stream/web.d.ts ./@types/node/string_decoder.d.ts ./@types/node/test.d.ts ./@types/node/timers.d.ts ./@types/node/timers/promises.d.ts ./@types/node/tls.d.ts ./@types/node/trace_events.d.ts ./@types/node/tty.d.ts ./@types/node/url.d.ts ./@types/node/util.d.ts ./@types/node/v8.d.ts ./@types/node/vm.d.ts ./@types/node/wasi.d.ts ./@types/node/worker_threads.d.ts ./@types/node/zlib.d.ts ./long/LICENSE ./long/README.md ./long/index.d.ts ./long/index.js ./long/package.json ./long/umd/index.d.ts ./long/umd/index.js ./long/umd/package.json ./minimist/.eslintrc ./minimist/.github/FUNDING.yml ./minimist/.nycrc ./minimist/CHANGELOG.md ./minimist/LICENSE ./minimist/README.md ./minimist/example/parse.js ./minimist/index.js ./minimist/package.json ./minimist/test/all_bool.js ./minimist/test/bool.js ./minimist/test/dash.js ./minimist/test/default_bool.js ./minimist/test/dotted.js ./minimist/test/kv_short.js ./minimist/test/long.js ./minimist/test/num.js ./minimist/test/parse.js ./minimist/test/parse_modified.js ./minimist/test/proto.js ./minimist/test/short.js ./minimist/test/stop_early.js ./minimist/test/unknown.js ./minimist/test/whitespace.js ./npmignore/.editorconfig ./npmignore/.eslintrc ./npmignore/.github/FUNDING.yml ./npmignore/.nycrc ./npmignore/CHANGELOG.md ./npmignore/LICENSE ./npmignore/README.md ./npmignore/bin/npmignore ./npmignore/index.js ./npmignore/package.json ./npmignore/test/index.js ./prettier/LICENSE ./prettier/README.md ./prettier/bin/prettier.cjs ./prettier/doc.d.ts ./prettier/doc.js ./prettier/doc.mjs ./prettier/index.cjs ./prettier/index.d.ts ./prettier/index.mjs ./prettier/internal/cli.mjs ./prettier/package.json ./prettier/plugins/acorn.d.ts ./prettier/plugins/acorn.js ./prettier/plugins/acorn.mjs ./prettier/plugins/angular.d.ts ./prettier/plugins/angular.js ./prettier/plugins/angular.mjs ./prettier/plugins/babel.d.ts ./prettier/plugins/babel.js ./prettier/plugins/babel.mjs ./prettier/plugins/estree.d.ts ./prettier/plugins/estree.js ./prettier/plugins/estree.mjs ./prettier/plugins/flow.d.ts ./prettier/plugins/flow.js ./prettier/plugins/flow.mjs ./prettier/plugins/glimmer.d.ts ./prettier/plugins/glimmer.js ./prettier/plugins/glimmer.mjs ./prettier/plugins/graphql.d.ts ./prettier/plugins/graphql.js ./prettier/plugins/graphql.mjs ./prettier/plugins/html.d.ts ./prettier/plugins/html.js ./prettier/plugins/html.mjs ./prettier/plugins/markdown.d.ts ./prettier/plugins/markdown.js ./prettier/plugins/markdown.mjs ./prettier/plugins/meriyah.d.ts ./prettier/plugins/meriyah.js ./prettier/plugins/meriyah.mjs ./prettier/plugins/postcss.d.ts ./prettier/plugins/postcss.js ./prettier/plugins/postcss.mjs ./prettier/plugins/typescript.d.ts ./prettier/plugins/typescript.js ./prettier/plugins/typescript.mjs ./prettier/plugins/yaml.d.ts ./prettier/plugins/yaml.js ./prettier/plugins/yaml.mjs ./prettier/standalone.d.ts ./prettier/standalone.js ./prettier/standalone.mjs ./protobufjs/LICENSE ./protobufjs/README.md ./protobufjs/dist/light/protobuf.js ./protobufjs/dist/light/protobuf.js.map ./protobufjs/dist/light/protobuf.min.js ./protobufjs/dist/light/protobuf.min.js.map ./protobufjs/dist/minimal/protobuf.js ./protobufjs/dist/minimal/protobuf.js.map ./protobufjs/dist/minimal/protobuf.min.js ./protobufjs/dist/minimal/protobuf.min.js.map ./protobufjs/dist/protobuf.js ./protobufjs/dist/protobuf.js.map ./protobufjs/dist/protobuf.min.js ./protobufjs/dist/protobuf.min.js.map ./protobufjs/ext/debug/README.md ./protobufjs/ext/debug/index.js ./protobufjs/ext/descriptor/README.md ./protobufjs/ext/descriptor/index.d.ts ./protobufjs/ext/descriptor/index.js ./protobufjs/ext/descriptor/test.js ./protobufjs/google/LICENSE ./protobufjs/google/README.md ./protobufjs/google/api/annotations.json ./protobufjs/google/api/annotations.proto ./protobufjs/google/api/http.json ./protobufjs/google/api/http.proto ./protobufjs/google/protobuf/api.json ./protobufjs/google/protobuf/api.proto ./protobufjs/google/protobuf/descriptor.json ./protobufjs/google/protobuf/descriptor.proto ./protobufjs/google/protobuf/source_context.json ./protobufjs/google/protobuf/source_context.proto ./protobufjs/google/protobuf/type.json ./protobufjs/google/protobuf/type.proto ./protobufjs/index.d.ts ./protobufjs/index.js ./protobufjs/light.d.ts ./protobufjs/light.js ./protobufjs/minimal.d.ts ./protobufjs/minimal.js ./protobufjs/package.json ./protobufjs/scripts/postinstall.js ./protobufjs/src/common.js ./protobufjs/src/converter.js ./protobufjs/src/decoder.js ./protobufjs/src/encoder.js ./protobufjs/src/enum.js ./protobufjs/src/field.js ./protobufjs/src/index-light.js ./protobufjs/src/index-minimal.js ./protobufjs/src/index.js ./protobufjs/src/mapfield.js ./protobufjs/src/message.js ./protobufjs/src/method.js ./protobufjs/src/namespace.js ./protobufjs/src/object.js ./protobufjs/src/oneof.js ./protobufjs/src/parse.js ./protobufjs/src/reader.js ./protobufjs/src/reader_buffer.js ./protobufjs/src/root.js ./protobufjs/src/roots.js ./protobufjs/src/rpc.js ./protobufjs/src/rpc/service.js ./protobufjs/src/service.js ./protobufjs/src/tokenize.js ./protobufjs/src/type.js ./protobufjs/src/types.js ./protobufjs/src/typescript.jsdoc ./protobufjs/src/util.js ./protobufjs/src/util/longbits.js ./protobufjs/src/util/minimal.js ./protobufjs/src/verifier.js ./protobufjs/src/wrappers.js ./protobufjs/src/writer.js ./protobufjs/src/writer_buffer.js ./protobufjs/tsconfig.json ./typescript/LICENSE.txt ./typescript/README.md ./typescript/SECURITY.md ./typescript/ThirdPartyNoticeText.txt ./typescript/bin/tsc ./typescript/bin/tsserver ./typescript/lib/cancellationToken.js ./typescript/lib/cs/diagnosticMessages.generated.json ./typescript/lib/de/diagnosticMessages.generated.json ./typescript/lib/es/diagnosticMessages.generated.json ./typescript/lib/fr/diagnosticMessages.generated.json ./typescript/lib/it/diagnosticMessages.generated.json ./typescript/lib/ja/diagnosticMessages.generated.json ./typescript/lib/ko/diagnosticMessages.generated.json ./typescript/lib/lib.d.ts ./typescript/lib/lib.decorators.d.ts ./typescript/lib/lib.decorators.legacy.d.ts ./typescript/lib/lib.dom.asynciterable.d.ts ./typescript/lib/lib.dom.d.ts ./typescript/lib/lib.dom.iterable.d.ts ./typescript/lib/lib.es2015.collection.d.ts ./typescript/lib/lib.es2015.core.d.ts ./typescript/lib/lib.es2015.d.ts ./typescript/lib/lib.es2015.generator.d.ts ./typescript/lib/lib.es2015.iterable.d.ts ./typescript/lib/lib.es2015.promise.d.ts ./typescript/lib/lib.es2015.proxy.d.ts ./typescript/lib/lib.es2015.reflect.d.ts ./typescript/lib/lib.es2015.symbol.d.ts ./typescript/lib/lib.es2015.symbol.wellknown.d.ts ./typescript/lib/lib.es2016.array.include.d.ts ./typescript/lib/lib.es2016.d.ts ./typescript/lib/lib.es2016.full.d.ts ./typescript/lib/lib.es2016.intl.d.ts ./typescript/lib/lib.es2017.d.ts ./typescript/lib/lib.es2017.date.d.ts ./typescript/lib/lib.es2017.full.d.ts ./typescript/lib/lib.es2017.intl.d.ts ./typescript/lib/lib.es2017.object.d.ts ./typescript/lib/lib.es2017.sharedmemory.d.ts ./typescript/lib/lib.es2017.string.d.ts ./typescript/lib/lib.es2017.typedarrays.d.ts ./typescript/lib/lib.es2018.asyncgenerator.d.ts ./typescript/lib/lib.es2018.asynciterable.d.ts ./typescript/lib/lib.es2018.d.ts ./typescript/lib/lib.es2018.full.d.ts ./typescript/lib/lib.es2018.intl.d.ts ./typescript/lib/lib.es2018.promise.d.ts ./typescript/lib/lib.es2018.regexp.d.ts ./typescript/lib/lib.es2019.array.d.ts ./typescript/lib/lib.es2019.d.ts ./typescript/lib/lib.es2019.full.d.ts ./typescript/lib/lib.es2019.intl.d.ts ./typescript/lib/lib.es2019.object.d.ts ./typescript/lib/lib.es2019.string.d.ts ./typescript/lib/lib.es2019.symbol.d.ts ./typescript/lib/lib.es2020.bigint.d.ts ./typescript/lib/lib.es2020.d.ts ./typescript/lib/lib.es2020.date.d.ts ./typescript/lib/lib.es2020.full.d.ts ./typescript/lib/lib.es2020.intl.d.ts ./typescript/lib/lib.es2020.number.d.ts ./typescript/lib/lib.es2020.promise.d.ts ./typescript/lib/lib.es2020.sharedmemory.d.ts ./typescript/lib/lib.es2020.string.d.ts ./typescript/lib/lib.es2020.symbol.wellknown.d.ts ./typescript/lib/lib.es2021.d.ts ./typescript/lib/lib.es2021.full.d.ts ./typescript/lib/lib.es2021.intl.d.ts ./typescript/lib/lib.es2021.promise.d.ts ./typescript/lib/lib.es2021.string.d.ts ./typescript/lib/lib.es2021.weakref.d.ts ./typescript/lib/lib.es2022.array.d.ts ./typescript/lib/lib.es2022.d.ts ./typescript/lib/lib.es2022.error.d.ts ./typescript/lib/lib.es2022.full.d.ts ./typescript/lib/lib.es2022.intl.d.ts ./typescript/lib/lib.es2022.object.d.ts ./typescript/lib/lib.es2022.regexp.d.ts ./typescript/lib/lib.es2022.sharedmemory.d.ts ./typescript/lib/lib.es2022.string.d.ts ./typescript/lib/lib.es2023.array.d.ts ./typescript/lib/lib.es2023.collection.d.ts ./typescript/lib/lib.es2023.d.ts ./typescript/lib/lib.es2023.full.d.ts ./typescript/lib/lib.es5.d.ts ./typescript/lib/lib.es6.d.ts ./typescript/lib/lib.esnext.collection.d.ts ./typescript/lib/lib.esnext.d.ts ./typescript/lib/lib.esnext.decorators.d.ts ./typescript/lib/lib.esnext.disposable.d.ts ./typescript/lib/lib.esnext.full.d.ts ./typescript/lib/lib.esnext.intl.d.ts ./typescript/lib/lib.esnext.object.d.ts ./typescript/lib/lib.esnext.promise.d.ts ./typescript/lib/lib.scripthost.d.ts ./typescript/lib/lib.webworker.asynciterable.d.ts ./typescript/lib/lib.webworker.d.ts ./typescript/lib/lib.webworker.importscripts.d.ts ./typescript/lib/lib.webworker.iterable.d.ts ./typescript/lib/pl/diagnosticMessages.generated.json ./typescript/lib/pt-br/diagnosticMessages.generated.json ./typescript/lib/ru/diagnosticMessages.generated.json ./typescript/lib/tr/diagnosticMessages.generated.json ./typescript/lib/tsc.js ./typescript/lib/tsserver.js ./typescript/lib/tsserverlibrary.d.ts ./typescript/lib/tsserverlibrary.js ./typescript/lib/typesMap.json ./typescript/lib/typescript.d.ts ./typescript/lib/typescript.js ./typescript/lib/typingsInstaller.js ./typescript/lib/watchGuard.js ./typescript/lib/zh-cn/diagnosticMessages.generated.json ./typescript/lib/zh-tw/diagnosticMessages.generated.json ./typescript/package.json ./undici-types/README.md ./undici-types/agent.d.ts ./undici-types/api.d.ts ./undici-types/balanced-pool.d.ts ./undici-types/cache.d.ts ./undici-types/client.d.ts ./undici-types/connector.d.ts ./undici-types/content-type.d.ts ./undici-types/cookies.d.ts ./undici-types/diagnostics-channel.d.ts ./undici-types/dispatcher.d.ts ./undici-types/errors.d.ts ./undici-types/fetch.d.ts ./undici-types/file.d.ts ./undici-types/filereader.d.ts ./undici-types/formdata.d.ts ./undici-types/global-dispatcher.d.ts ./undici-types/global-origin.d.ts ./undici-types/handlers.d.ts ./undici-types/header.d.ts ./undici-types/index.d.ts ./undici-types/interceptors.d.ts ./undici-types/mock-agent.d.ts ./undici-types/mock-client.d.ts ./undici-types/mock-errors.d.ts ./undici-types/mock-interceptor.d.ts ./undici-types/mock-pool.d.ts ./undici-types/package.json ./undici-types/patch.d.ts ./undici-types/pool-stats.d.ts ./undici-types/pool.d.ts ./undici-types/proxy-agent.d.ts ./undici-types/readable.d.ts ./undici-types/webidl.d.ts ./undici-types/websocket.d.ts ```
asafpamzn commented 7 months ago

@Elen-Ghulam , as discussed please estimate the effort and provide ETA.

acarbonetto commented 7 months ago

Thank you @ofirsnb for creating the docker demo.
Next steps: Since the musl library isn't supported yet in npm, we'll have to try and build the library from parts. We'll try and build an alpine docker image with rust and node to build it with.

ofirsnb commented 7 months ago

Thank you very much for your response, @acarbonetto . That sounds good, thanks! Took me a while to understand how the build process works here (using napi), so yeah what you've said was exactly my thought too, Let me know if I can be at your further assistance, thanks!

ofirsnb commented 7 months ago

I managed to compile a working musl binary! Pushed the compiled binary to the demo above, as a POC showing it works. (commit - note that the Docker build copies the binary into the node_modules, for the POC purpose).

Opened a PR with the changes in order to compile a musl binary.

1267

alex-arzola-imp commented 6 months ago

We're making some progress here: Found out we need to install bash and gettext to get further down the build process We also found that the container image we're using is supporting an x64 architecture, as opposed to the one we need which is arm64. We're digging into this issue, since when we pull the Alpine image straight from Docker, we do get an arm64 architecture, but the one in GitHub is x64

alex-arzola-imp commented 6 months ago

Turns out the arm64 is not natively supported by GitHub We are delving into some other GitHub Actions that may enable us to emulate this architecture and get a stable build. Currently, we're trying this action: https://github.com/marketplace/actions/run-on-architecture to see if we can build a successful arm64 artifact