| /* | |
| * Licensed to the Apache Software Foundation (ASF) under one | |
| * or more contributor license agreements. See the NOTICE file | |
| * distributed with this work for additional information | |
| * regarding copyright ownership. The ASF licenses this file | |
| * to you under the Apache License, Version 2.0 (the | |
| * "License"); you may not use this file except in compliance | |
| * with the License. You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, | |
| * software distributed under the License is distributed on an | |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| * KIND, either express or implied. See the License for the | |
| * specific language governing permissions and limitations | |
| * under the License. | |
| */ | |
| // Adapted from Apache Iceberg C++ | |
| // https://github.com/apache/iceberg-cpp/blob/v0.2.0/.devcontainer/devcontainer.json.template | |
| // Default Paimon C++ Dev Container. | |
| // On Apple Silicon hosts this runs as native aarch64 Linux (fast). | |
| // For x86_64 verification, use the variant under .devcontainer/x86_64/. | |
| { | |
| "name": "Paimon CPP Dev Container", | |
| "build": { | |
| "dockerfile": "Dockerfile" | |
| }, | |
| "runArgs": [ | |
| "--ulimit=core=-1", | |
| "--cap-add=SYS_ADMIN", | |
| "--cap-add=SYS_PTRACE", | |
| "--cap-add=PERFMON", | |
| "--security-opt", | |
| "seccomp=unconfined", | |
| "--privileged" | |
| ], | |
| "features": { | |
| "ghcr.io/devcontainers/features/rust:1": { | |
| "version": "stable", | |
| "profile": "default" | |
| } | |
| }, | |
| "mounts": [ | |
| "source=${localEnv:HOME}/.ssh,target=/home/paimon/.ssh,type=bind,readonly", | |
| "source=paimon-cargo-registry,target=/home/paimon/.cargo/registry,type=volume", | |
| "source=paimon-cargo-git,target=/home/paimon/.cargo/git,type=volume", | |
| "source=paimon-rust-target,target=${containerWorkspaceFolder}/crates/lance_ffi/target,type=volume", | |
| "source=paimon-build,target=${containerWorkspaceFolder}/build,type=volume", | |
| "source=paimon-ccache,target=/home/paimon/.ccache,type=volume" | |
| ], | |
| "postCreateCommand": "sudo chown -R paimon:paimon ${containerWorkspaceFolder}/build ${containerWorkspaceFolder}/crates/lance_ffi/target /home/paimon/.ccache /home/paimon/.cargo/registry /home/paimon/.cargo/git 2>/dev/null || true; cargo install cbindgen --locked || true; rustup component add rust-src rust-analyzer clippy rustfmt || true", | |
| "customizations": { | |
| "vscode": { | |
| "extensions": [ | |
| "eamodio.gitlens", | |
| "rust-lang.rust-analyzer", | |
| "vadimcn.vscode-lldb", | |
| "llvm-vs-code-extensions.vscode-clangd", | |
| "ms-vscode.cmake-tools", | |
| "twxs.cmake" | |
| ], | |
| "settings": { | |
| "editor.formatOnSave": true, | |
| "rust-analyzer.linkedProjects": [ | |
| "crates/lance_ffi/Cargo.toml" | |
| ] | |
| } | |
| } | |
| } | |
| } |