Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vscode rust devcontainer: cargo build resulting in "failed to link or copy #13905

Open
dss010101 opened this issue May 11, 2024 · 5 comments
Open
Labels
A-filesystem Area: issues with filesystems C-bug Category: bug O-windows OS: Windows S-needs-info Status: Needs more info, such as a reproduction or more background for a feature request.

Comments

@dss010101
Copy link

dss010101 commented May 11, 2024

Problem

Im not sure if should be reaching out here or vscode for help on this...but i will start here and let me know if im int he wrong location..

i have built a vs code devcontainer based on mcr.microsoft.com/devcontainers/rust:1-1-bullseye, running under Docker Desktop on windows 11. I am able to run a basic example using this without any dependencies

i have the following structure (Note: the target and Cargo.lock do not exist until after i attempt a cargo build:

enter image description here

My toml looks like this:

[package]
name = "aipg_client"
version = "0.1.0"
edition = "2021"

#[dependencies]
#tokio-postgres = "0.7.10"

when i do Cargo build or run from command line, i see this:

vscode ➜ /workspaces/aipg_client $ cargo clean
     Removed 19 files, 3.7MiB total
vscode ➜ /workspaces/aipg_client $ cargo build
   Compiling aipg_client v0.1.0 (/workspaces/aipg_client)
warning: error copying object file `/workspaces/aipg_client/target/debug/deps/aipg_client-29a466bd116893b1.2wavitxjlghb5boo.rcgu.o` to incremental directory as `/workspaces/aipg_client/target/debug/incremental/aipg_client-cn2ostj37iq8/s-gw2y4x6qjv-d1xpw0-working/2wavitxjlghb5boo.o`: Operation not permitted (os error 1)

warning: error copying object file `/workspaces/aipg_client/target/debug/deps/aipg_client-29a466bd116893b1.340xt2kclbcozwj5.rcgu.o` to incremental directory as `/workspaces/aipg_client/target/debug/incremental/aipg_client-cn2ostj37iq8/s-gw2y4x6qjv-d1xpw0-working/340xt2kclbcozwj5.o`: Operation not permitted (os error 1)

warning: error copying object file `/workspaces/aipg_client/target/debug/deps/aipg_client-29a466bd116893b1.3nlg3iffbximniu8.rcgu.o` to incremental directory as `/workspaces/aipg_client/target/debug/incremental/aipg_client-cn2ostj37iq8/s-gw2y4x6qjv-d1xpw0-working/3nlg3iffbximniu8.o`: Operation not permitted (os error 1)

warning: error copying object file `/workspaces/aipg_client/target/debug/deps/aipg_client-29a466bd116893b1.57xak5150to06626.rcgu.o` to incremental directory as `/workspaces/aipg_client/target/debug/incremental/aipg_client-cn2ostj37iq8/s-gw2y4x6qjv-d1xpw0-working/57xak5150to06626.o`: Operation not permitted (os error 1)

warning: error copying object file `/workspaces/aipg_client/target/debug/deps/aipg_client-29a466bd116893b1.ele9p2lo4vgyfma.rcgu.o` to incremental directory as `/workspaces/aipg_client/target/debug/incremental/aipg_client-cn2ostj37iq8/s-gw2y4x6qjv-d1xpw0-working/ele9p2lo4vgyfma.o`: Operation not permitted (os error 1)

warning: error copying object file `/workspaces/aipg_client/target/debug/deps/aipg_client-29a466bd116893b1.eyyxtxgek58rknf.rcgu.o` to incremental directory as `/workspaces/aipg_client/target/debug/incremental/aipg_client-cn2ostj37iq8/s-gw2y4x6qjv-d1xpw0-working/eyyxtxgek58rknf.o`: Operation not permitted (os error 1)

warning: `aipg_client` (bin "aipg_client") generated 6 warnings
error: failed to link or copy `/workspaces/aipg_client/target/debug/deps/aipg_client-29a466bd116893b1` to `/workspaces/aipg_client/target/debug/aipg_client`

Caused by:
  Operation not permitted (os error 1)

i checked these folders and they are all r/w.
What am i doing wrong?

Steps

  1. Create a vscode dev container: CTRL+SHIFT+P -> devcontainer:new -> rust
  2. Note: i jused a Dockerfile + Docker Compose along with .devcontainer.json. but the issue is reproducible with just a .devcontainer.json file
  3. Install rust analyzer extension in the container
  4. from bash terminal: cargo new test
  5. run cargo build twice

Possible Solution(s)

I dont know yet

Notes

No response

Version

rustc 1.78.0 (9b00956e5 2024-04-29)
cargo 1.78.0 (54d8815 2024-03-26)

vscode ➜ /workspaces/aipg_client $ cargo -vV
cargo 1.78.0 (54d8815 2024-03-26)
release: 1.78.0
commit-hash: 54d8815
commit-date: 2024-03-26
host: x86_64-unknown-linux-gnu
libgit2: 1.7.2 (sys:0.18.2 vendored)
libcurl: 8.6.0-DEV (sys:0.4.72+curl-8.6.0 vendored ssl:OpenSSL/1.1.1w)
ssl: OpenSSL 1.1.1w 11 Sep 2023
os: Debian 11 (bullseye) [64-bit]

vscode ➜ /workspaces/aipg_client $ cat /etc/debian_version
11.9
docker desktop v4.29.0
No response

@dss010101 dss010101 added C-bug Category: bug S-triage Status: This issue is waiting on initial triage. labels May 11, 2024
@weihanglo
Copy link
Member

Could you fill in each section of the issue template? A clear minimal reproducible example helps debugging. Also, please provide the output of cargo -vV which is the version info.

@weihanglo weihanglo added S-needs-info Status: Needs more info, such as a reproduction or more background for a feature request. and removed S-triage Status: This issue is waiting on initial triage. labels May 11, 2024
@dss010101
Copy link
Author

though i dont know if its relevant here i are my docker file and docker-compose:
docker file:

FROM mcr.microsoft.com/devcontainers/rust:1-1-bullseye as aipg_client_base
ENV TZ=America/New_York

ARG ENV
ARG USER_ID
ARG GROUP_ID
ARG USER_NAME
ARG APP_HOME="/apps/aipg_client_base"
RUN echo "env: $ENV, user: $USER_NAME, user_id: $USER_ID, app_home: $APP_HOME"

RUN apt-get update && apt-get -y install acl iputils-ping less libpq-dev nano postgresql-client sudo

RUN groupadd -g $GROUP_ID -o $USER_NAME
RUN useradd -m -s /bin/bash -u $USER_ID -g $GROUP_ID $USER_NAME

FROM aipg_client_base as aipg_client_local


#attempt at handling this target folder issue...
RUN mkdir -p /workspaces/aipg_client/target
RUN chown -R vscode:vscode /workspaces/aipg_client/target
RUN chmod -R 777 /workspaces/aipg_client/target

docker-compose:

networks:
  aipg_client_net:
    driver: bridge

services:
  aipg_client:
    container_name: aipg_client_${ENV}
    image: "aipg_client:${VERSION}"
    build:
      context: ..
      dockerfile: .devcontainer/Dockerfile
      target: aipg_client_local
      args:
        ENV: ${ENV:-local}
        USER_ID: ${USER_ID:-1000}
        GROUP_ID: ${GROUP_ID:-1000}
        USER_NAME: ${USER_NAME}
      shm_size: '2gb'
    env_file:
      - ./.env
    volumes:
      - ../..:/workspaces
      - ~/.ssh:/home/${USER_NAME}/.ssh
      - //var/run/docker.sock:/var/run/docker.sock
    command: sleep infinity
    shm_size: 0.94gb
    ports: 
      - "${SVC_PORT}:5000"    
    networks:
      - aipg_client_net

.env file:

VERSION=local
ENV=local
USER_ID=197609
#USER_ID=1001
GROUP_ID=1000
USER_NAME=user1
SVC_PORT=6000

@dss010101
Copy link
Author

Could you fill in each section of the issue template? A clear minimal reproducible example helps debugging. Also, please provide the output of cargo -vV which is the version info.

done..let me know what else is needed. ive also added the dockerfile and docker-compose file im using.

@dss010101
Copy link
Author

dss010101 commented May 11, 2024

As per this discussion: https://stackoverflow.com/questions/72448053/rust-incremental-build-not-working-in-vscode-devcontainer

if i add a .cargo/config.toml with the target anywhere outside my project workspace, it seems to work fine

[build]
target-dir = "/tmp/target"

But why? this of course isn't helpful given that that path outside the workspace is ephemeral storage

@weihanglo weihanglo added O-windows OS: Windows A-filesystem Area: issues with filesystems labels May 13, 2024
@dss010101
Copy link
Author

Anyone with any advice on how to go about resolving this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-filesystem Area: issues with filesystems C-bug Category: bug O-windows OS: Windows S-needs-info Status: Needs more info, such as a reproduction or more background for a feature request.
Projects
None yet
Development

No branches or pull requests

2 participants