Giter VIP home page Giter VIP logo

crates-build-env's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

crates-build-env's Issues

Missing dependency request: libgmsh

Hello,

I am writing a Rust wrapper around the Gmsh SDK, a tool used for CAD and mesh generation.
http://gmsh.info/

Documentation builds fail since the libgmsh library isn't installed by default:
https://docs.rs/crate/gmsh-sys/0.1.0/builds/186306

I believe this image is based on Stretch, but libgmsh only started exposing this stable API after version 4, and I think the Stretch version won't work since it's too old (v2.15)

In Buster, this library is here: https://packages.debian.org/buster/libgmsh4.1

Would it be possible to include a compatible libgmsh version in this container?

Thank you very much for your time.

Max Orok

Add requisite dependencies for building crates on Windows

This is meant to be an ongoing tracking issue. If anyone observes a crate failing to build due to a missing dependency, post it here.

Libraries should be added to vc-packages.txt and will be automatically installed via vcpkg. Executables should be installed via choco-packages.txt.

  • freetype (required by jjjjw.rust_elmish_rocket)
  • pkgconfig (required by curl-sys)
  • libgit2
  • libmysql (mysqlclient required by astaupb.wp_posts_api)
  • libsndfile
  • libusb (required by libusb-sys)
  • opencl (required by ocl)
  • portaudio (required by weresocool-0.1.0)
  • SDL2-image (required by ruscur.phase)
  • python (3, named python.exe) (required by shaderc-sys)
  • clang (required by wepoll-sys-1.0.3)
  • curl
  • cmake (required by shaderc-sys)
  • libsodium
  • libssh2
  • libpq
  • ninja (required by shaderc-sys)
  • openal (required by Tethik.beepr)
  • openssl (required by rust-openssl)
  • portmidi (required by diaschisma.mimi)
  • sdl2 (required by Ade-AWD.Foxxy)
  • sqlite3

Crates which depend on old versions of `gcc` (now `cc`) do not build on Windows

The pkg_config utility is nominally cross-platform, so successfully building crates which use it--usually via a utility crate like pkg-config-rs--should be feasible. However, such crates don't currently build (e.g. tcod-sys). This will probably not be as simple as installing pkg_config via a package manager, but that is a good start.

The actual issue is that older versions of the gcc crate did not emit the /Fo flag to tell cl.exe where to put object files created during compilation, and thus object files are created in the working directory. These object files are cleaned up after compilation, so this usually doesn't matter, but since the working directory (which contains the crate's source code) is mounted read-only in the container, cl.exe can't create them. Curiously, this only results in an error when the linker goes looking for the object file, not when cl.exe tries to write it.

I don't think there's a good work-around besides mounting the working directory as read/write instead of read-only. I think this is probably not worth it, but I'll let @pietroalbini have the final word.

Apply `sort` to packages.txt, and apply sort check step in CI

Maybe a bit too "nit-picky", but when i added packages for #66, and applied sort packages.txt > out.txt, and then copy-pasted contents of that file into the old one, my VCS diff showed a lot more packages being shuffled around than i was expected.

Maybe add this pre-requisite step into the project's CI? To check if the file has been sorted correctly, to also avoid duplicates and the like.

The current file is pseudo-hand-sorted, which may not be useful when the actual goal is to have a sorted file.

Install libvpx

Affected crates: libvpx-native-sys, env-libvpx-sys, vpx-encode, encode-webm-video-frames
Ubuntu 20.04 packages to install: libvpx-dev

Missing dependency request: libelektra

Can you add libelektra-dev to the system dependencies?

This is for the Rust bindings for libelektra, specifically for the elektra and elektra-sys crates. elektra-sys uses rust-bindgen to generate the bindings from the header file in the above mentioned package. If it's not present then documentation for the elektra crate won't build.

I ran the docker image as suggested in the blog post and installed the package. The documentation then built sucessfully.

Thanks!

Building vncserver missing dependencies libvncserver-dev

Building crate vncserver failed.

[INFO] [stderr]   thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Failure { command: "\"pkg-config\" \"--libs\"
 \"--cflags\" \"libvncserver\"", output: Output { status: ExitStatus(ExitStatus(256)), stdout: "", stderr: "Package libvncserver was not 
found in the pkg-config search path.\nPerhaps you should add the directory containing `libvncserver.pc\'\nto the 
PKG_CONFIG_PATH environment variable\nNo package \'libvncserver\' found\n" } }', build.rs:9:65

Missing libvncserver-dev

Affected crates: vncserver
Ubuntu 20.04 packages to install: libvncserver-dev

Missing WASI SDK support

Affected crates: quickjs-wasm-sys, quickjs-wasm-rs, javy, javy-apis

The four crates above need access to a WASI SDK to compile some vendored C source code to the wasm32-wasi target. Unfortunately I can't find an Ubuntu package for the WASI SDK. There is a wasi-libc package but that's not sufficient since Clang also requires an additional runtime archive file to be installed and that archive file is not part of an Ubuntu package.

From https://github.com/WebAssembly/wasi-sdk:

One could also use a standard Clang installation, build a sysroot from the sources mentioned above, and compile with --target=wasm32-wasi --sysroot=/path/to/sysroot. In this scenario, one would also need the libclang_rt.builtins-wasm32.a objects available separately in the release downloads which must be extracted into $CLANG_INSTALL_DIR/$CLANG_VERSION/lib/wasi/.

The compiled WASI SDK is also too large to vendor given cargo's size limits on crates.

I'm not sure how to proceed.

libopencv-dev

opencv and all the crates using it could use libopencv-dev to make DocTest work.

Affected crates: opencv, realsense-rust, rust_drone_follow, abow, cv-convert, nokhwa, podo-std-eye, eorst, printimg, arc_lib, checkerboard, dlib-face-recognition-cv, f-trak, tangram-vision-sdk, softmount, shutter and my own libstacker

They also needs clang and libclang-dev but I assume those packages are already installed. already installed.

Failed build log.
Ubuntu 20.04 packages to install: libopencv-dev

CI Builds fail on Azure Pipelines since 2020-03-23

It seems the action using Azure Pipelines is failing because

An image label with the label win1803 does not exist.

Earlier faillure gave the more verbose message

This job was blocked because it uses a Microsoft hosted agent (win1803) that was removed on March 23rd, 2020.  See https://aka.ms/blocked-hosted-agent for more information.

Missing musl-gcc

Affected crates: uapi - fails to cross-compile to x86_64-unknown-linux-musl
Ubuntu 18.04 packages to install: musl-tools

Distro upgrade policy

Currently it's documented that the images are built using Ubuntu 20.04, which is the most recent Ubuntu LTS. It would be good to have the upgrade policy for this clarified, is the intent to track Ubuntu LTS', or if someone put in the effort to do an upgrade would moving to newer non-LTS versions be acceptable?

This affects crates that rely on more modern system dependencies, e.g. rust-lang/docs.rs#1198, 20.04 is only shipping libcapstone3 while 21.04 has upgraded to libcapstone4. If we wait till the next LTS release then it's going to be another year till it's possible to build the documentation for falcon.

Put `cl.exe` and `link.exe` on `PATH` on Windows?

The vast majority of crates use the cc crate for building native libraries. However, a few want the compiler and/or linker on the PATH (see https://github.com/blt/mond). This seems pretty standard coming from the UNIX world, but the normal workflow on Windows seems to be sourcing a vcvars.bat file before you build something. I'm not sure if this should be the crate's responsibility or ours. This is complicated by the fact that powershell doesn't have a source equivalent, so one has to do a contrived workaround to permanently save the configuration in vcvars.bat.

`libunwind-14-dev` breaks `libunwind` on Linux

I am attempting to add a package to the linux image.

During the process of building the image (with libc++-dev and libc++abi-dev added to packages.txt), I get an error saying:

#6 302.5 Some packages could not be installed. This may mean that you have
#6 302.5 requested an impossible situation or if you are using the unstable
#6 302.5 distribution that some required packages have not yet been created
#6 302.5 or been moved out of Incoming.
#6 302.5 The following information may help to resolve the situation:
#6 302.5 
#6 302.5 The following packages have unmet dependencies:
#6 302.6  libunwind-14-dev : Breaks: libunwind-dev
#6 302.6 E: Unable to correct problems, you have held broken packages.

I have seen on a thread on some other forum that Ubuntu 22.04 has issues with libunwind-14

Please advise on what action is needed, I am a bit lost...

Add libical

Affected crates: libical, libical-sys
Ubuntu 18.04 packages to install: libical-dev

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.