Giter VIP home page Giter VIP logo

zeromq-prebuilt's Introduction

zeromq-prebuilt

Build Status

Builds zeromq on Azure Pipelines for multiple platforms, used by the Jupyter Extension for VS Code.

Details

Reads config.json to determine which repo to clone and which tag to check out. If the build was triggered by a tag, each job will package the build outputs and publish them as pipeline artifacts, and the last job will upload those artifacts to the Github release. The Github release is consumed by the Jupyter Extension.

  • zeromq.js is patched, see patch.js file for details
  • As and when a new release of zeromq.js has been published, we will need to
    • Update the config.json file to point to the new upstream release
    • Update the patches accordingly
    • Update the build pipeline (if necessary, e.g. if there are new dependencies that need to be installed)

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

  • Use pnpm 7.33.6 when udpating the pnpm lock files

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

zeromq-prebuilt's People

Contributors

deepak1556 avatar donjayamanne avatar microsoftopensource avatar rzhao271 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

zeromq-prebuilt's Issues

Testing of binaries

  • Windows 32 bit
  • Windows 64 bit (@DonJayamanne machine)
  • Linux arm musl
  • Linux arm64 glibc (@DonJayamanne , Ubuntu container in docker in Mac M1)
  • Linux arm64 musl
    • Note: this was never supported even in zeromq.js binaries
    • @DonJayamanne, fail in Alpine in docker in Mac M1
    • @deepak1556 mentioned that the binaries are actually x86_64
      See errors here when attempting to load these binaries
      warn 03:53:53.069: Exception while attempting zmq : Error relocating /home/vscode/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2023.3.100/out/node_modules/zeromq/prebuilds/linux-arm64/node.napi.musl.node: unsupported relocation type 7
  • Linux x64 glibc (@DonJayamanne, Ubuntu container in docker in Windows)
  • Linux x64 musl (@DonJayamanne, Alpine container in docker in Windows)
  • Mac arm64 @DonJayamanne M1
  • Mac intel

Integrate with pipeline templates from vscode-engineering

As part of aligning core extensions that rely on native modules to have similar glibc constraints as core, I will be adding template steps that configures the C++ toolchain in the vscode-engineering repo.

In its current state this repo will not be able to benefit from the above change, one idea discussed with @joaomoreno was to use the upstream zeromq.js project directly in the jupyter extension so that module files get built as expected. But I now realized this is a no go, although the patch changes are minimal the blocker would be upstream zeromq already publishes prebuilds and we cannot override them to force rebuild in the jupyter extension.

So now coming to the other alternative, the vscode-engineering repo also contains templates for building and publishing npm packages https://github.com/microsoft/vscode-engineering/wiki/NPM-Packages-Build-and-Publish. I will also add the compiler configuration to those templates as well. I see that the npm package https://github.com/microsoft/vscode-zeromq currently downloads the prebuilts from this repo github releases and replaces them for the prebuilds from the upstream zeromq project during postinstall step in the jupyter extension project. I suggest the following path instead,

  1. Merge microsoft/zeromq-prebuilt and microsoft/vscode-zeromq into a single npm package that builds, publishes the vscode specific prebuilds to npm
  2. The combined repo uses the npm pipeline templates from the vscode-engineering repo
  3. Jupyter extension will depend on this new npm package that will still replace the prebuilds from upstream zeromq as part of postinstall step.

Only difference between now and the proposed solution, prebuilds are published to npm rather than github releases and sharing the pipeline templates allows to get the glibc compatibility free of cost.

What are you thoughts on this @DonJayamanne and let me know if you have alternate ideas.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.