From 3246d0998b22dc7129a0db47d2f5d11b5754f594 Mon Sep 17 00:00:00 2001 From: redengin Date: Fri, 8 Jan 2021 23:22:15 -0500 Subject: [PATCH 1/7] simplify docker build --- docker-build | 1 + 1 file changed, 1 insertion(+) create mode 100755 docker-build diff --git a/docker-build b/docker-build new file mode 100755 index 0000000000..394de5f8ee --- /dev/null +++ b/docker-build @@ -0,0 +1 @@ +docker run --rm -v /home/redengin/projects/Pinetime:/sources pfeerick/infinitime-build From c096b2ae08f55e17628626dfd78d8514e4b398e4 Mon Sep 17 00:00:00 2001 From: redengin Date: Mon, 11 Jan 2021 01:12:11 -0500 Subject: [PATCH 2/7] code complete --- src/CMakeLists.txt | 3 +- src/components/littlefs/CMakeLists.txt | 35 +++++++++ src/components/littlefs/LittleFs.cpp | 100 +++++++++++++++++++++++++ src/components/littlefs/LittleFs.h | 87 +++++++++++++++++++++ 4 files changed, 224 insertions(+), 1 deletion(-) create mode 100644 src/components/littlefs/CMakeLists.txt create mode 100644 src/components/littlefs/LittleFs.cpp create mode 100644 src/components/littlefs/LittleFs.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index fde1f58672..621370da04 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -624,7 +624,8 @@ set(EXECUTABLE_FILE_NAME ${EXECUTABLE_NAME}-${pinetime_VERSION_MAJOR}.${pinetime set(NRF5_LINKER_SCRIPT "${CMAKE_SOURCE_DIR}/gcc_nrf52.ld") add_executable(${EXECUTABLE_NAME} ${SOURCE_FILES}) set_target_properties(${EXECUTABLE_NAME} PROPERTIES OUTPUT_NAME ${EXECUTABLE_FILE_NAME}) -target_link_libraries(${EXECUTABLE_NAME} nimble nrf-sdk lvgl) +add_subdirectory("components/littlefs") +target_link_libraries(${EXECUTABLE_NAME} nimble nrf-sdk lvgl littlefs) target_compile_options(${EXECUTABLE_NAME} PUBLIC $<$,$>: ${COMMON_FLAGS} -O0 -g3> $<$,$>: ${COMMON_FLAGS} -O3> diff --git a/src/components/littlefs/CMakeLists.txt b/src/components/littlefs/CMakeLists.txt new file mode 100644 index 0000000000..acb82bc776 --- /dev/null +++ b/src/components/littlefs/CMakeLists.txt @@ -0,0 +1,35 @@ + +include(FetchContent) +set(FETCHCONTENT_QUIET OFF) # enable GIT_PROGRESS output + +FetchContent_Declare(project_littlefs + GIT_REPOSITORY https://github.com/littlefs-project/littlefs.git + GIT_SHALLOW ON + GIT_PROGRESS ON +) + +# littlefs Pull +#------------------------------------------------------------------------------- +if(NOT project_littlefs_POPULATED) + FetchContent_Populate(project_littlefs) +endif() + +add_library(littlefs + ${project_littlefs_SOURCE_DIR}/lfs_util.c + ${project_littlefs_SOURCE_DIR}/lfs.c +) +target_include_directories(littlefs + PUBLIC + ${project_littlefs_SOURCE_DIR}/ +) +target_link_libraries(littlefs littlefs-target) + +add_library(littlefs-target + LittleFs.cpp +) +target_include_directories(littlefs-target + PUBLIC + #FIXME refactor source into actual components + ../../drivers/ +) +target_link_libraries(littlefs-target littlefs) diff --git a/src/components/littlefs/LittleFs.cpp b/src/components/littlefs/LittleFs.cpp new file mode 100644 index 0000000000..dc71b9bfcd --- /dev/null +++ b/src/components/littlefs/LittleFs.cpp @@ -0,0 +1,100 @@ +#include "LittleFs.h" + +using namespace Pinetime::System; + +static int read(const struct lfs_config *c, lfs_block_t block, + lfs_off_t off, void *buffer, lfs_size_t size); + +static int prog(const struct lfs_config *c, lfs_block_t block, + lfs_off_t off, const void *buffer, lfs_size_t size); + +static int erase(const struct lfs_config *c, lfs_block_t block); + +static int sync(const struct lfs_config *c); + +constexpr size_t BLOCK_SIZE_BYTES = 4096u; +constexpr size_t PAGE_SIZE_BYTES = 256u; +constexpr size_t CACHE_PAGE_COUNT = 1u; +constexpr size_t CACHE_SIZE_BYTES = (CACHE_PAGE_COUNT * PAGE_SIZE_BYTES); +constexpr size_t LOOKAHEAD_SIZE_BYTES = (CACHE_PAGE_COUNT * 8u); +static uint8_t readBuffer[CACHE_SIZE_BYTES]; +static uint8_t progBuffer[CACHE_SIZE_BYTES]; +static uint8_t __attribute__((aligned(32))) + lookaheadBuffer[LOOKAHEAD_SIZE_BYTES]; +const static struct lfs_config baseLfsConfig = { + .read = read, + .prog = prog, + .erase = erase, + .sync = sync, + + .read_size = PAGE_SIZE_BYTES, + .prog_size = PAGE_SIZE_BYTES, + .block_size = BLOCK_SIZE_BYTES, + .block_cycles = 500u, + + .cache_size = CACHE_SIZE_BYTES, + .lookahead_size = LOOKAHEAD_SIZE_BYTES, + + .read_buffer = readBuffer, + .prog_buffer = progBuffer, + .lookahead_buffer = lookaheadBuffer, + + .name_max = 0u, /** use LFS default */ + .file_max = 0u, /** use LFS default */ + .attr_max = 0u, /** use LFS default */ +}; + +constexpr struct lfs_config createLfsConfig(Pinetime::System::LittleFs& lfs, const size_t totalSize_bytes) { + struct lfs_config config = baseLfsConfig; + config.context = &lfs; + config.block_count = totalSize_bytes / BLOCK_SIZE_BYTES; + return config; +} + +LittleFs::LittleFs(Pinetime::Drivers::SpiNorFlash& driver, + const size_t startAddress, + const size_t size_bytes, + const bool allowFormat) +:mDriver(driver), mStartAddress(startAddress), mSize_bytes(size_bytes), + mLfsConfig(createLfsConfig(*this, size_bytes)) +{ + // try mount + if(0u != lfs_mount(&mLfs, &mLfsConfig)) { + if(allowFormat) { + // format and mount + if(0u == lfs_format(&mLfs, &mLfsConfig)) { + lfs_mount(&mLfs, &mLfsConfig); + } + } + } +} + +static int read(const struct lfs_config *c, lfs_block_t block, + lfs_off_t off, void *buffer, lfs_size_t size) { + Pinetime::System::LittleFs& lfs = *(reinterpret_cast(c->context)); + const size_t address = lfs.mStartAddress + (block * BLOCK_SIZE_BYTES) + off; + lfs.mDriver.Read(address, (uint8_t*)buffer, size); + // TODO assumes READ was successful + return 0u; +} + +static int prog(const struct lfs_config *c, lfs_block_t block, + lfs_off_t off, const void *buffer, lfs_size_t size) { + Pinetime::System::LittleFs& lfs = *(reinterpret_cast(c->context)); + const size_t address = lfs.mStartAddress + (block * BLOCK_SIZE_BYTES) + off; + lfs.mDriver.Write(address, (uint8_t*)buffer, size); + return lfs.mDriver.ProgramFailed() ? -1u : 0u; +} + +static int erase(const struct lfs_config *c, lfs_block_t block) { + Pinetime::System::LittleFs& lfs = *(reinterpret_cast(c->context)); + const size_t address = lfs.mStartAddress + (block * BLOCK_SIZE_BYTES); + lfs.mDriver.SectorErase(address); + return lfs.mDriver.EraseFailed() ? -1u : 0u; +} + +static int sync(const struct lfs_config *c) { + // no hardware caching used + return 0u; +} + diff --git a/src/components/littlefs/LittleFs.h b/src/components/littlefs/LittleFs.h new file mode 100644 index 0000000000..2fa635052c --- /dev/null +++ b/src/components/littlefs/LittleFs.h @@ -0,0 +1,87 @@ +#pragma once + +#include +#include + +namespace Pinetime { + namespace System { + class LittleFs { + public: + class LittleFsFile; + class LittleFsDir; + explicit LittleFs(Pinetime::Drivers::SpiNorFlash&, + const size_t startAddress, ///< address of first block to use + const size_t size_bytes, ///< must be a multiple of block size + const bool allowFormat = true ///< if filesystem not detected, format the space + ); + LittleFs(const LittleFs&) = delete; + LittleFs& operator=(const LittleFs&) = delete; + LittleFs(LittleFs&&) = delete; + LittleFs& operator=(LittleFs&&) = delete; + + bool remove(const char* path) { return 0u == lfs_remove(&mLfs, path); } + bool rename(const char* oldpath, const char* newpath) { return 0u == lfs_rename(&mLfs, oldpath, newpath); } + ssize_t filesize(const char* path) { + struct lfs_info info; + if(0u == lfs_stat(&mLfs, path, &info)) + return info.size; + return -1; + } + /// file is closed upon destructor of the object + LittleFsFile& open(const char* const path, + const int flags ///< @see lfs_open_flags + ) { return *(new LittleFsFile(mLfs, path, flags)); } + bool mkdir(const char* path) { return 0u == lfs_mkdir(&mLfs, path); } + LittleFsDir& opendir(const char* path) { return *(new LittleFsDir(mLfs, path)); } + + const size_t mStartAddress; + const size_t mSize_bytes; + Pinetime::Drivers::SpiNorFlash& mDriver; + + private: + lfs_t mLfs; + const struct lfs_config mLfsConfig; + + public: + class LittleFsFile { + public: + explicit LittleFsFile(lfs_t& lfs, const char* const path, const int flags) + : mLfs(lfs) { lfs_file_open(&mLfs, &mLfs_file, path, flags); } + LittleFsFile(const LittleFsFile&) = delete; + LittleFsFile& operator=(const LittleFsFile&) = delete; + LittleFsFile(LittleFsFile&&) = delete; + LittleFsFile& operator=(LittleFsFile&&) = delete; + ~LittleFsFile() { + lfs_file_close(&mLfs, &mLfs_file); + } + ssize_t read(void* buffer, size_t size) { return lfs_file_read(&mLfs, &mLfs_file, buffer, size); } + ssize_t write(const void* buffer, size_t size) { return lfs_file_write(&mLfs, &mLfs_file, buffer, size); } + ssize_t seek(size_t offset, size_t whence) { return 0u == lfs_file_seek(&mLfs, &mLfs_file, offset, whence); } + bool truncate(size_t sz) { return 0u == lfs_file_truncate(&mLfs, &mLfs_file, sz); } + /// return the current position within the file + ssize_t tell() { return lfs_file_tell(&mLfs, &mLfs_file); } + ssize_t size() { return lfs_file_size(&mLfs, &mLfs_file); } + private: + lfs_t& mLfs; + lfs_file_t mLfs_file; + }; + + class LittleFsDir { + public: + explicit LittleFsDir(lfs_t& lfs, const char* path) + : mLfs(lfs) { lfs_dir_open(&mLfs, &mLfs_dir, path); } + LittleFsDir(const LittleFsDir&) = delete; + LittleFsDir& operator=(const LittleFsDir&) = delete; + LittleFsDir(LittleFsDir&&) = delete; + LittleFsDir& operator=(LittleFsDir&&) = delete; + ~LittleFsDir() { + lfs_dir_close(&mLfs, &mLfs_dir); + } + // TODO determine API for directories + private: + lfs_t& mLfs; + lfs_dir_t mLfs_dir; + }; + }; + } +} From fcb4032afc931ebfd260145b81998fe7edd506ae Mon Sep 17 00:00:00 2001 From: redengin Date: Tue, 12 Jan 2021 09:34:05 -0500 Subject: [PATCH 3/7] use latest CMake for docker build --- docker-build | 2 +- docker/Dockerfile | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/docker-build b/docker-build index 394de5f8ee..c07f74bcef 100755 --- a/docker-build +++ b/docker-build @@ -1 +1 @@ -docker run --rm -v /home/redengin/projects/Pinetime:/sources pfeerick/infinitime-build +docker run --rm -v /home/redengin/projects/Pinetime:/sources infinitime-build diff --git a/docker/Dockerfile b/docker/Dockerfile index 7f0fb4b077..257f4fbfab 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -6,7 +6,6 @@ RUN apt-get update -qq \ # x86_64 / generic packages bash \ build-essential \ - cmake \ git \ make \ python3 \ @@ -22,6 +21,16 @@ RUN apt-get update -qq \ RUN pip3 install adafruit-nrfutil +# install latest CMake (and utils) +RUN apt install -y \ + make +ARG CMAKE_VERSION=3.17.2 +ADD https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-Linux-x86_64.sh /tmp/cmake-install.sh +RUN apt install -y \ + tar gzip +RUN yes | sh /tmp/cmake-install.sh --skip-license --prefix=/ +RUN rm /tmp/cmake-install.sh + # build.sh knows how to compile COPY build.sh /opt/ From f65f597bc0336630c61e08a46e4ae4836f4ea5d0 Mon Sep 17 00:00:00 2001 From: redengin Date: Tue, 12 Jan 2021 09:48:41 -0500 Subject: [PATCH 4/7] use brace initialization --- src/components/littlefs/LittleFs.cpp | 4 ++-- src/components/littlefs/LittleFs.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/littlefs/LittleFs.cpp b/src/components/littlefs/LittleFs.cpp index dc71b9bfcd..1230431a34 100644 --- a/src/components/littlefs/LittleFs.cpp +++ b/src/components/littlefs/LittleFs.cpp @@ -55,8 +55,8 @@ LittleFs::LittleFs(Pinetime::Drivers::SpiNorFlash& driver, const size_t startAddress, const size_t size_bytes, const bool allowFormat) -:mDriver(driver), mStartAddress(startAddress), mSize_bytes(size_bytes), - mLfsConfig(createLfsConfig(*this, size_bytes)) +:mDriver{driver}, mStartAddress{startAddress}, mSize_bytes{size_bytes}, + mLfsConfig{createLfsConfig(*this, size_bytes)} { // try mount if(0u != lfs_mount(&mLfs, &mLfsConfig)) { diff --git a/src/components/littlefs/LittleFs.h b/src/components/littlefs/LittleFs.h index 2fa635052c..5d6b8568a5 100644 --- a/src/components/littlefs/LittleFs.h +++ b/src/components/littlefs/LittleFs.h @@ -46,7 +46,7 @@ namespace Pinetime { class LittleFsFile { public: explicit LittleFsFile(lfs_t& lfs, const char* const path, const int flags) - : mLfs(lfs) { lfs_file_open(&mLfs, &mLfs_file, path, flags); } + : mLfs{lfs} { lfs_file_open(&mLfs, &mLfs_file, path, flags); } LittleFsFile(const LittleFsFile&) = delete; LittleFsFile& operator=(const LittleFsFile&) = delete; LittleFsFile(LittleFsFile&&) = delete; @@ -69,7 +69,7 @@ namespace Pinetime { class LittleFsDir { public: explicit LittleFsDir(lfs_t& lfs, const char* path) - : mLfs(lfs) { lfs_dir_open(&mLfs, &mLfs_dir, path); } + : mLfs{lfs} { lfs_dir_open(&mLfs, &mLfs_dir, path); } LittleFsDir(const LittleFsDir&) = delete; LittleFsDir& operator=(const LittleFsDir&) = delete; LittleFsDir(LittleFsDir&&) = delete; From ac876be6746e4f1188c5bd94936d7d4fd3debe81 Mon Sep 17 00:00:00 2001 From: redengin Date: Tue, 12 Jan 2021 23:01:38 -0500 Subject: [PATCH 5/7] pulling in obex changes --- src/CMakeLists.txt | 3 +++ src/components/littlefs/CMakeLists.txt | 19 ++++++++++++++++++- src/components/littlefs/LittleFs.cpp | 16 ++++++++++++++++ src/components/littlefs/LittleFs.h | 26 ++++++++++++++++++++------ 4 files changed, 57 insertions(+), 7 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 621370da04..e469ea5f06 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -476,6 +476,9 @@ include_directories( . ../ libs/ + # FIXME workaround hack + ${CMAKE_BINARY_DIR}/_deps/project_littlefs-src/ + components/littlefs/ FreeRTOS/ libs/date/includes libs/mynewt-nimble/porting/npl/freertos/include diff --git a/src/components/littlefs/CMakeLists.txt b/src/components/littlefs/CMakeLists.txt index acb82bc776..f6148dce4f 100644 --- a/src/components/littlefs/CMakeLists.txt +++ b/src/components/littlefs/CMakeLists.txt @@ -23,13 +23,30 @@ target_include_directories(littlefs ${project_littlefs_SOURCE_DIR}/ ) target_link_libraries(littlefs littlefs-target) +target_compile_options(littlefs + PUBLIC + $<$,$>: ${COMMON_FLAGS} -O0 -g3> + $<$,$>: ${COMMON_FLAGS} -O3> + $<$,$>: ${COMMON_FLAGS} -O0 -g3> + $<$,$>: ${COMMON_FLAGS} -O3> + $<$: -MP -MD -std=c99 -x assembler-with-cpp> +) add_library(littlefs-target LittleFs.cpp ) target_include_directories(littlefs-target PUBLIC + ./ #FIXME refactor source into actual components - ../../drivers/ + ../../ ) target_link_libraries(littlefs-target littlefs) +target_compile_options(littlefs-target + PUBLIC + $<$,$>: ${COMMON_FLAGS} -O0 -g3> + $<$,$>: ${COMMON_FLAGS} -O3> + $<$,$>: ${COMMON_FLAGS} -O0 -g3> + $<$,$>: ${COMMON_FLAGS} -O3> + $<$: -MP -MD -std=c99 -x assembler-with-cpp> +) diff --git a/src/components/littlefs/LittleFs.cpp b/src/components/littlefs/LittleFs.cpp index 1230431a34..af4b34da5b 100644 --- a/src/components/littlefs/LittleFs.cpp +++ b/src/components/littlefs/LittleFs.cpp @@ -98,3 +98,19 @@ static int sync(const struct lfs_config *c) { return 0u; } +const LittleFs::LittleFsDir::LittleFsEntry LittleFs::LittleFsDir::next() { + lfs_info entryInfo; + const int rtn = lfs_dir_read(&mLfs, &mLfs_dir, &entryInfo); + if(rtn == 0) { + LittleFsEntry entry{ + .type = (entryInfo.type == LFS_TYPE_DIR) ? + LittleFs::LittleFsDir::LittleFsEntry::Type::DIR : + LittleFs::LittleFsDir::LittleFsEntry::Type::FILE, + .size = entryInfo.size + }; + strncpy(entry.name, entryInfo.name, sizeof(entry.name)); + return entry; + } + else + return LittleFsEntry{ .type = LittleFs::LittleFsDir::LittleFsEntry::Type::NULLENTRY }; +} \ No newline at end of file diff --git a/src/components/littlefs/LittleFs.h b/src/components/littlefs/LittleFs.h index 5d6b8568a5..590d34c57f 100644 --- a/src/components/littlefs/LittleFs.h +++ b/src/components/littlefs/LittleFs.h @@ -1,6 +1,6 @@ #pragma once -#include +#include #include namespace Pinetime { @@ -27,16 +27,23 @@ namespace Pinetime { return info.size; return -1; } - /// file is closed upon destructor of the object + /// file resource is closed upon leave of scope LittleFsFile& open(const char* const path, const int flags ///< @see lfs_open_flags ) { return *(new LittleFsFile(mLfs, path, flags)); } bool mkdir(const char* path) { return 0u == lfs_mkdir(&mLfs, path); } + /// dir resource is closed upon leave of scope LittleFsDir& opendir(const char* path) { return *(new LittleFsDir(mLfs, path)); } + // the following require owner to delete the instance + LittleFsFile* open_danger(const char* const path, + const int flags ///< @see lfs_open_flags + ) { return new LittleFsFile(mLfs, path, flags); } + LittleFsDir* opendir_danger(const char* const path) { return new LittleFsDir(mLfs, path); } + + Pinetime::Drivers::SpiNorFlash& mDriver; const size_t mStartAddress; const size_t mSize_bytes; - Pinetime::Drivers::SpiNorFlash& mDriver; private: lfs_t mLfs; @@ -46,7 +53,7 @@ namespace Pinetime { class LittleFsFile { public: explicit LittleFsFile(lfs_t& lfs, const char* const path, const int flags) - : mLfs{lfs} { lfs_file_open(&mLfs, &mLfs_file, path, flags); } + : mLfs{lfs} { mLfs_file.type = ~LFS_TYPE_REG; lfs_file_open(&mLfs, &mLfs_file, path, flags); } LittleFsFile(const LittleFsFile&) = delete; LittleFsFile& operator=(const LittleFsFile&) = delete; LittleFsFile(LittleFsFile&&) = delete; @@ -54,6 +61,7 @@ namespace Pinetime { ~LittleFsFile() { lfs_file_close(&mLfs, &mLfs_file); } + bool isNULL() { return mLfs_file.type != LFS_TYPE_REG; } ssize_t read(void* buffer, size_t size) { return lfs_file_read(&mLfs, &mLfs_file, buffer, size); } ssize_t write(const void* buffer, size_t size) { return lfs_file_write(&mLfs, &mLfs_file, buffer, size); } ssize_t seek(size_t offset, size_t whence) { return 0u == lfs_file_seek(&mLfs, &mLfs_file, offset, whence); } @@ -69,7 +77,7 @@ namespace Pinetime { class LittleFsDir { public: explicit LittleFsDir(lfs_t& lfs, const char* path) - : mLfs{lfs} { lfs_dir_open(&mLfs, &mLfs_dir, path); } + : mLfs{lfs} { mLfs_dir.type = ~LFS_TYPE_DIR; lfs_dir_open(&mLfs, &mLfs_dir, path); } LittleFsDir(const LittleFsDir&) = delete; LittleFsDir& operator=(const LittleFsDir&) = delete; LittleFsDir(LittleFsDir&&) = delete; @@ -77,7 +85,13 @@ namespace Pinetime { ~LittleFsDir() { lfs_dir_close(&mLfs, &mLfs_dir); } - // TODO determine API for directories + bool isNULL() { return mLfs_dir.type != LFS_TYPE_DIR; } + struct LittleFsEntry { + enum class Type : uint8_t { NULLENTRY, FILE, DIR } type; + char name[LFS_NAME_MAX+1]; + size_t size = 0; + }; + const LittleFsEntry next(); private: lfs_t& mLfs; lfs_dir_t mLfs_dir; From e833555d0939bea09b15679c6b5ea0992427c8b5 Mon Sep 17 00:00:00 2001 From: redengin Date: Wed, 13 Jan 2021 00:07:04 -0500 Subject: [PATCH 6/7] fixed block size to match sector size --- src/components/littlefs/LittleFs.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/littlefs/LittleFs.cpp b/src/components/littlefs/LittleFs.cpp index af4b34da5b..3699c9052f 100644 --- a/src/components/littlefs/LittleFs.cpp +++ b/src/components/littlefs/LittleFs.cpp @@ -12,8 +12,8 @@ static int erase(const struct lfs_config *c, lfs_block_t block); static int sync(const struct lfs_config *c); -constexpr size_t BLOCK_SIZE_BYTES = 4096u; -constexpr size_t PAGE_SIZE_BYTES = 256u; +constexpr size_t BLOCK_SIZE_BYTES = 256u; +constexpr size_t PAGE_SIZE_BYTES = BLOCK_SIZE_BYTES; constexpr size_t CACHE_PAGE_COUNT = 1u; constexpr size_t CACHE_SIZE_BYTES = (CACHE_PAGE_COUNT * PAGE_SIZE_BYTES); constexpr size_t LOOKAHEAD_SIZE_BYTES = (CACHE_PAGE_COUNT * 8u); From a51c8909808811483ec1cc4f09d783bc142ba3bf Mon Sep 17 00:00:00 2001 From: redengin Date: Wed, 13 Jan 2021 00:09:27 -0500 Subject: [PATCH 7/7] remove host path --- docker-build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-build b/docker-build index c07f74bcef..198adb625f 100755 --- a/docker-build +++ b/docker-build @@ -1 +1 @@ -docker run --rm -v /home/redengin/projects/Pinetime:/sources infinitime-build +docker run --rm -v $PWD:/sources infinitime-build