added devcontainer files
This commit is contained in:
		
							parent
							
								
									57b3397078
								
							
						
					
					
						commit
						65423b3c94
					
				
							
								
								
									
										43
									
								
								.devcontainer/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								.devcontainer/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,43 @@
 | 
			
		||||
FROM ubuntu:18.04
 | 
			
		||||
 | 
			
		||||
ARG DEBIAN_FRONTEND=noninteractive
 | 
			
		||||
RUN apt-get update -qq \
 | 
			
		||||
    && apt-get install -y \
 | 
			
		||||
# x86_64 / generic packages
 | 
			
		||||
      bash \
 | 
			
		||||
      build-essential \
 | 
			
		||||
      cmake \
 | 
			
		||||
      git \
 | 
			
		||||
      make \
 | 
			
		||||
      python3 \
 | 
			
		||||
      python3-pip \
 | 
			
		||||
      tar \
 | 
			
		||||
      unzip \
 | 
			
		||||
      wget \ 
 | 
			
		||||
      curl \
 | 
			
		||||
# aarch64 packages
 | 
			
		||||
      libffi-dev \
 | 
			
		||||
      libssl-dev \
 | 
			
		||||
      python3-dev \ 
 | 
			
		||||
      rustc \
 | 
			
		||||
    && rm -rf /var/cache/apt/* /var/lib/apt/lists/*;
 | 
			
		||||
 | 
			
		||||
RUN adduser infinitime
 | 
			
		||||
 | 
			
		||||
RUN pip3 install adafruit-nrfutil
 | 
			
		||||
# required for McuBoot
 | 
			
		||||
RUN pip3 install setuptools_rust
 | 
			
		||||
 | 
			
		||||
WORKDIR /opt/
 | 
			
		||||
# build.sh knows how to compile
 | 
			
		||||
COPY build.sh .
 | 
			
		||||
 | 
			
		||||
# Lets get each in a separate docker layer for better downloads
 | 
			
		||||
# GCC
 | 
			
		||||
RUN bash -c "source /opt/build.sh; GetGcc;"
 | 
			
		||||
# NrfSdk
 | 
			
		||||
RUN bash -c "source /opt/build.sh; GetNrfSdk;"
 | 
			
		||||
# McuBoot
 | 
			
		||||
RUN bash -c "source /opt/build.sh; GetMcuBoot;"
 | 
			
		||||
 | 
			
		||||
ENV SOURCES_DIR /workspaces/Pinetime
 | 
			
		||||
							
								
								
									
										78
									
								
								.devcontainer/build.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										78
									
								
								.devcontainer/build.sh
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,78 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
(return 0 2>/dev/null) && SOURCED="true" || SOURCED="false"
 | 
			
		||||
export LC_ALL=C.UTF-8
 | 
			
		||||
export LANG=C.UTF-8
 | 
			
		||||
set -x
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
# Default locations if the var isn't already set
 | 
			
		||||
export TOOLS_DIR="${TOOLS_DIR:=/opt}"
 | 
			
		||||
export SOURCES_DIR="${SOURCES_DIR:=/sources}"
 | 
			
		||||
export BUILD_DIR="${BUILD_DIR:=$SOURCES_DIR/build}"
 | 
			
		||||
export OUTPUT_DIR="${OUTPUT_DIR:=$BUILD_DIR/output}"
 | 
			
		||||
 | 
			
		||||
export BUILD_TYPE=${BUILD_TYPE:=Release}
 | 
			
		||||
export GCC_ARM_VER=${GCC_ARM_VER:="gcc-arm-none-eabi-9-2020-q2-update"}
 | 
			
		||||
export NRF_SDK_VER=${NRF_SDK_VER:="nRF5_SDK_15.3.0_59ac345"}
 | 
			
		||||
 | 
			
		||||
MACHINE="$(uname -m)"
 | 
			
		||||
[[ "$MACHINE" == "arm64" ]] && MACHINE="aarch64"
 | 
			
		||||
 | 
			
		||||
main() {
 | 
			
		||||
  local target="$1"
 | 
			
		||||
 | 
			
		||||
  mkdir -p "$TOOLS_DIR"
 | 
			
		||||
  
 | 
			
		||||
  [[ ! -d "$TOOLS_DIR/$GCC_ARM_VER" ]] && GetGcc
 | 
			
		||||
  [[ ! -d "$TOOLS_DIR/$NRF_SDK_VER" ]] && GetNrfSdk
 | 
			
		||||
  [[ ! -d "$TOOLS_DIR/mcuboot" ]] && GetMcuBoot
 | 
			
		||||
 | 
			
		||||
  mkdir -p "$BUILD_DIR"
 | 
			
		||||
 | 
			
		||||
  CmakeGenerate
 | 
			
		||||
  CmakeBuild $target
 | 
			
		||||
  BUILD_RESULT=$? 
 | 
			
		||||
  if [ "$DISABLE_POSTBUILD" != "true" -a "$BUILD_RESULT" == 0 ]; then
 | 
			
		||||
    source "$BUILD_DIR/post_build.sh"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
GetGcc() {
 | 
			
		||||
  GCC_SRC="$GCC_ARM_VER-$MACHINE-linux.tar.bz"
 | 
			
		||||
  wget -q https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/$GCC_SRC -O - | tar -xj -C $TOOLS_DIR/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
GetMcuBoot() {
 | 
			
		||||
  git clone https://github.com/JuulLabs-OSS/mcuboot.git "$TOOLS_DIR/mcuboot"
 | 
			
		||||
  pip3 install -r "$TOOLS_DIR/mcuboot/scripts/requirements.txt"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
GetNrfSdk() {
 | 
			
		||||
  wget -q "https://developer.nordicsemi.com/nRF5_SDK/nRF5_SDK_v15.x.x/$NRF_SDK_VER.zip" -O /tmp/$NRF_SDK_VER
 | 
			
		||||
  unzip -q /tmp/$NRF_SDK_VER -d "$TOOLS_DIR/"
 | 
			
		||||
  rm /tmp/$NRF_SDK_VER
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CmakeGenerate() {
 | 
			
		||||
  # We can swap the CD and trailing SOURCES_DIR for -B and -S respectively
 | 
			
		||||
  # once we go to newer CMake (Ubuntu 18.10 gives us CMake 3.10)
 | 
			
		||||
  cd "$BUILD_DIR"
 | 
			
		||||
 | 
			
		||||
  cmake -G "Unix Makefiles" \
 | 
			
		||||
    -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
 | 
			
		||||
    -DUSE_OPENOCD=1 \
 | 
			
		||||
    -DARM_NONE_EABI_TOOLCHAIN_PATH="$TOOLS_DIR/$GCC_ARM_VER" \
 | 
			
		||||
    -DNRF5_SDK_PATH="$TOOLS_DIR/$NRF_SDK_VER" \
 | 
			
		||||
    "$SOURCES_DIR"
 | 
			
		||||
  cmake -L -N .
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CmakeBuild() {
 | 
			
		||||
  local target="$1"
 | 
			
		||||
  [[ -n "$target" ]] && target="--target $target"
 | 
			
		||||
  if cmake --build "$BUILD_DIR" --config $BUILD_TYPE $target -- -j$(nproc)
 | 
			
		||||
    then return 0; else return 1; 
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[[ $SOURCED == "false" ]] && main "$@" || echo "Sourced!"
 | 
			
		||||
							
								
								
									
										32
									
								
								.devcontainer/devcontainer.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.devcontainer/devcontainer.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
			
		||||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
 | 
			
		||||
// https://github.com/microsoft/vscode-dev-containers/tree/v0.154.2/containers/cpp
 | 
			
		||||
{
 | 
			
		||||
	// "name": "Pinetime",
 | 
			
		||||
	// "image": "feabhas/pinetime-dev"
 | 
			
		||||
	"build": {
 | 
			
		||||
		"dockerfile": "Dockerfile",
 | 
			
		||||
		// Update 'VARIANT' to pick an Debian / Ubuntu OS version: debian-10, debian-9, ubuntu-20.04, ubuntu-18.04
 | 
			
		||||
		// "args": { "VARIANT": "ubuntu-20.04" }
 | 
			
		||||
	},
 | 
			
		||||
	"runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined"],
 | 
			
		||||
 | 
			
		||||
	// Set *default* container specific settings.json values on container create.
 | 
			
		||||
	"settings": { 
 | 
			
		||||
		"terminal.integrated.shell.linux": "/bin/bash"
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	// Add the IDs of extensions you want installed when the container is created.
 | 
			
		||||
	"extensions": [
 | 
			
		||||
		"ms-vscode.cpptools"
 | 
			
		||||
	],
 | 
			
		||||
 | 
			
		||||
	// Use 'forwardPorts' to make a list of ports inside the container available locally.
 | 
			
		||||
	// "forwardPorts": [],
 | 
			
		||||
 | 
			
		||||
	// Use 'postCreateCommand' to run commands after the container is created.
 | 
			
		||||
	// "postCreateCommand": "gcc -v",
 | 
			
		||||
 | 
			
		||||
	// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
 | 
			
		||||
	// "remoteUser": "vscode"
 | 
			
		||||
	"remoteUser": "infinitime"
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user