forked from ARMmbed/mbed-os
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Squashed 'features/filesystem/littlefs/littlefs/' changes from 5ee20e8..
b2124a5 b2124a5 Fixed multiple deploy steps in Travis 949015a Merge pull request ARMmbed#28 from geky/configurables 67daf9e Added cross-compile targets for testing a3fd2d4 Added more configurable utils a0a55fb Added conversion to/from little-endian on disk 4f08424 Added software implementations of bitwise instructions 59ce49f Merge pull request ARMmbed#26 from Sim4n6/master 2f8ae34 Added a git ignore file with .o .d blocks dir and lfs bin e611cf5 Fix incorrect lookahead population before ack a25743a Fixed some minor error code differences 6716b55 Fixed error check when truncating files to larger size 809ffde Merge pull request ARMmbed#24 from aldot/silence-shadow-warnings-1 dc513b1 Silenced more of aldot's warnings aa50e03 Commentary typo fix 6d55755 tests: Silence warnings in template 029361e Silence shadow warnings fd04ed4 Added autogenerated release notes from commits 3101bc9 Do not print command invocation if QUIET d82e34c Merge pull request ARMmbed#21 from aldot/doc-tweaks 436707c doc: Editorial tweaks 3457252 doc: Spelling fixes 6d8e0e2 Moved -Werror flag to CI only 88f678f Fixed self-assign warning in tests 3ef4847 Added remove step in tests to force rebuild f694b14 Merge pull request ARMmbed#16 from geky/versioning 5a38d00 Added deploy step in Travis to push new version as tags 035552a Add version info for software library and on-disk structures 997c2e5 Fixed incorrect reliance on errno in emubd d88f0ac Added lfs_file_truncate 2ad435e Added files test to littlefs-fuse tests in Travis 1fb6a19 Reduced ctz traverse runtime by 2x db88727 Added error code LFS_ERR_NOTEMPTY c2fab8f Added asserts on geometry and updated config documentation 472ccc4 Fixed file truncation without writes aea3d3d Fixed positive seek bounds checking be22d34 Updated links to Mbed OS 425aa3c Fixed issue with immediate exhaustion and small unaligned storage git-subtree-dir: features/filesystem/littlefs/littlefs git-subtree-split: b2124a5
- Loading branch information
Showing
17 changed files
with
949 additions
and
244 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# Compilation output | ||
*.o | ||
*.d | ||
*.a | ||
|
||
# Testing things | ||
blocks/ | ||
lfs | ||
test.c |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,48 +1,223 @@ | ||
# Environment variables | ||
env: | ||
global: | ||
- CFLAGS=-Werror | ||
|
||
# Common test script | ||
script: | ||
# make sure example can at least compile | ||
- sed -n '/``` c/,/```/{/```/d; p;}' README.md > test.c && | ||
CFLAGS=' | ||
# make sure example can at least compile | ||
- sed -n '/``` c/,/```/{/```/d; p;}' README.md > test.c && | ||
make all CFLAGS+=" | ||
-Duser_provided_block_device_read=NULL | ||
-Duser_provided_block_device_prog=NULL | ||
-Duser_provided_block_device_erase=NULL | ||
-Duser_provided_block_device_sync=NULL | ||
-include stdio.h -Werror' make all size | ||
-include stdio.h" | ||
|
||
# run tests | ||
- make test QUIET=1 | ||
|
||
# run tests with a few different configurations | ||
- make test QUIET=1 CFLAGS+="-DLFS_READ_SIZE=1 -DLFS_PROG_SIZE=1" | ||
- make test QUIET=1 CFLAGS+="-DLFS_READ_SIZE=512 -DLFS_PROG_SIZE=512" | ||
- make test QUIET=1 CFLAGS+="-DLFS_BLOCK_COUNT=1023 -DLFS_LOOKAHEAD=2048" | ||
|
||
- make clean test QUIET=1 CFLAGS+="-DLFS_NO_INTRINSICS" | ||
|
||
# compile and find the code size with the smallest configuration | ||
- make clean size | ||
OBJ="$(ls lfs*.o | tr '\n' ' ')" | ||
CFLAGS+="-DLFS_NO{ASSERT,DEBUG,WARN,ERROR}" | ||
| tee sizes | ||
|
||
# update status if we succeeded, compare with master if possible | ||
- | | ||
if [ "$TRAVIS_TEST_RESULT" -eq 0 ] | ||
then | ||
CURR=$(tail -n1 sizes | awk '{print $1}') | ||
PREV=$(curl https://api.github.com/repos/$TRAVIS_REPO_SLUG/status/master \ | ||
| jq -re "select(.sha != \"$TRAVIS_COMMIT\") | ||
| .statuses[] | select(.context == \"$STAGE/$NAME\").description | ||
| capture(\"code size is (?<size>[0-9]+)\").size" \ | ||
|| echo 0) | ||
# run tests | ||
- make test QUIET=1 | ||
STATUS="Passed, code size is ${CURR}B" | ||
if [ "$PREV" -ne 0 ] | ||
then | ||
STATUS="$STATUS ($(python -c "print '%+.2f' % (100*($CURR-$PREV)/$PREV.0)")%)" | ||
fi | ||
fi | ||
# run tests with a few different configurations | ||
- CFLAGS="-DLFS_READ_SIZE=1 -DLFS_PROG_SIZE=1" make test QUIET=1 | ||
- CFLAGS="-DLFS_READ_SIZE=512 -DLFS_PROG_SIZE=512" make test QUIET=1 | ||
- CFLAGS="-DLFS_BLOCK_COUNT=1023" make test QUIET=1 | ||
- CFLAGS="-DLFS_LOOKAHEAD=2048" make test QUIET=1 | ||
# CI matrix | ||
jobs: | ||
include: | ||
# native testing | ||
- stage: test | ||
env: | ||
- STAGE=test | ||
- NAME=littlefs-x86 | ||
|
||
# cross-compile with ARM (thumb mode) | ||
- stage: test | ||
env: | ||
- STAGE=test | ||
- NAME=littlefs-arm | ||
- CC="arm-linux-gnueabi-gcc --static -mthumb" | ||
- EXEC="qemu-arm" | ||
install: | ||
- sudo apt-get install gcc-arm-linux-gnueabi qemu-user | ||
- arm-linux-gnueabi-gcc --version | ||
- qemu-arm -version | ||
|
||
# cross-compile with PowerPC | ||
- stage: test | ||
env: | ||
- STAGE=test | ||
- NAME=littlefs-powerpc | ||
- CC="powerpc-linux-gnu-gcc --static" | ||
- EXEC="qemu-ppc" | ||
install: | ||
- sudo apt-get install gcc-powerpc-linux-gnu qemu-user | ||
- powerpc-linux-gnu-gcc --version | ||
- qemu-ppc -version | ||
|
||
# cross-compile with MIPS | ||
- stage: test | ||
env: | ||
- STAGE=test | ||
- NAME=littlefs-mips | ||
- CC="mips-linux-gnu-gcc --static" | ||
- EXEC="qemu-mips" | ||
install: | ||
- sudo add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu/ xenial main universe" | ||
- sudo apt-get -qq update | ||
- sudo apt-get install gcc-mips-linux-gnu qemu-user | ||
- mips-linux-gnu-gcc --version | ||
- qemu-mips -version | ||
|
||
# self-host with littlefs-fuse for fuzz test | ||
- make -C littlefs-fuse | ||
- stage: test | ||
env: | ||
- STAGE=test | ||
- NAME=littlefs-fuse | ||
install: | ||
- sudo apt-get install libfuse-dev | ||
- git clone --depth 1 https://github.com/geky/littlefs-fuse | ||
- fusermount -V | ||
- gcc --version | ||
before_script: | ||
# setup disk for littlefs-fuse | ||
- rm -rf littlefs-fuse/littlefs/* | ||
- cp -r $(git ls-tree --name-only HEAD) littlefs-fuse/littlefs | ||
|
||
- mkdir mount | ||
- sudo chmod a+rw /dev/loop0 | ||
- dd if=/dev/zero bs=512 count=2048 of=disk | ||
- losetup /dev/loop0 disk | ||
script: | ||
# self-host test | ||
- make -C littlefs-fuse | ||
|
||
- littlefs-fuse/lfs --format /dev/loop0 | ||
- littlefs-fuse/lfs /dev/loop0 mount | ||
|
||
- littlefs-fuse/lfs --format /dev/loop0 | ||
- littlefs-fuse/lfs /dev/loop0 mount | ||
- ls mount | ||
- mkdir mount/littlefs | ||
- cp -r $(git ls-tree --name-only HEAD) mount/littlefs | ||
- cd mount/littlefs | ||
- ls | ||
- make -B test_dirs test_files QUIET=1 | ||
|
||
- ls mount | ||
- mkdir mount/littlefs | ||
- cp -r $(git ls-tree --name-only HEAD) mount/littlefs | ||
- cd mount/littlefs | ||
- ls | ||
- make -B test_dirs QUIET=1 | ||
# Automatically update releases | ||
- stage: deploy | ||
env: | ||
- STAGE=deploy | ||
- NAME=deploy | ||
script: | ||
# Update tag for version defined in lfs.h | ||
- LFS_VERSION=$(grep -ox '#define LFS_VERSION .*' lfs.h | cut -d ' ' -f3) | ||
- LFS_VERSION_MAJOR=$((0xffff & ($LFS_VERSION >> 16))) | ||
- LFS_VERSION_MINOR=$((0xffff & ($LFS_VERSION >> 0))) | ||
- LFS_VERSION="v$LFS_VERSION_MAJOR.$LFS_VERSION_MINOR" | ||
- echo "littlefs version $LFS_VERSION" | ||
- | | ||
curl -u $GEKY_BOT_RELEASES -X POST \ | ||
https://api.github.com/repos/$TRAVIS_REPO_SLUG/git/refs \ | ||
-d "{ | ||
\"ref\": \"refs/tags/$LFS_VERSION\", | ||
\"sha\": \"$TRAVIS_COMMIT\" | ||
}" | ||
- | | ||
curl -f -u $GEKY_BOT_RELEASES -X PATCH \ | ||
https://api.github.com/repos/$TRAVIS_REPO_SLUG/git/refs/tags/$LFS_VERSION \ | ||
-d "{ | ||
\"sha\": \"$TRAVIS_COMMIT\" | ||
}" | ||
# Create release notes from commits | ||
- LFS_PREV_VERSION="v$LFS_VERSION_MAJOR.$(($LFS_VERSION_MINOR-1))" | ||
- | | ||
if [ $(git tag -l "$LFS_PREV_VERSION") ] | ||
then | ||
curl -u $GEKY_BOT_RELEASES -X POST \ | ||
https://api.github.com/repos/$TRAVIS_REPO_SLUG/releases \ | ||
-d "{ | ||
\"tag_name\": \"$LFS_VERSION\", | ||
\"name\": \"$LFS_VERSION\" | ||
}" | ||
RELEASE=$( | ||
curl -f https://api.github.com/repos/$TRAVIS_REPO_SLUG/releases/tags/$LFS_VERSION | ||
) | ||
CHANGES=$( | ||
git log --oneline $LFS_PREV_VERSION.. --grep='^Merge' --invert-grep | ||
) | ||
curl -f -u $GEKY_BOT_RELEASES -X PATCH \ | ||
https://api.github.com/repos/$TRAVIS_REPO_SLUG/releases/$( | ||
jq -r '.id' <<< "$RELEASE" | ||
) \ | ||
-d "$( | ||
jq -s '{ | ||
"body": ((.[0] // "" | sub("(?<=\n)#+ Changes.*"; ""; "mi")) | ||
+ "### Changes\n\n" + .[1]) | ||
}' <(jq '.body' <<< "$RELEASE") <(jq -sR '.' <<< "$CHANGES") | ||
)" | ||
fi | ||
# Manage statuses | ||
before_install: | ||
- fusermount -V | ||
- gcc --version | ||
- | | ||
curl -u $GEKY_BOT_STATUSES -X POST \ | ||
https://api.github.com/repos/$TRAVIS_REPO_SLUG/statuses/${TRAVIS_PULL_REQUEST_SHA:-$TRAVIS_COMMIT} \ | ||
-d "{ | ||
\"context\": \"$STAGE/$NAME\", | ||
\"state\": \"pending\", | ||
\"description\": \"${STATUS:-In progress}\", | ||
\"target_url\": \"https://travis-ci.org/$TRAVIS_REPO_SLUG/jobs/$TRAVIS_JOB_ID\" | ||
}" | ||
install: | ||
- sudo apt-get install libfuse-dev | ||
- git clone --depth 1 https://github.com/geky/littlefs-fuse | ||
after_failure: | ||
- | | ||
curl -u $GEKY_BOT_STATUSES -X POST \ | ||
https://api.github.com/repos/$TRAVIS_REPO_SLUG/statuses/${TRAVIS_PULL_REQUEST_SHA:-$TRAVIS_COMMIT} \ | ||
-d "{ | ||
\"context\": \"$STAGE/$NAME\", | ||
\"state\": \"failure\", | ||
\"description\": \"${STATUS:-Failed}\", | ||
\"target_url\": \"https://travis-ci.org/$TRAVIS_REPO_SLUG/jobs/$TRAVIS_JOB_ID\" | ||
}" | ||
before_script: | ||
- rm -rf littlefs-fuse/littlefs/* | ||
- cp -r $(git ls-tree --name-only HEAD) littlefs-fuse/littlefs | ||
after_success: | ||
- | | ||
curl -u $GEKY_BOT_STATUSES -X POST \ | ||
https://api.github.com/repos/$TRAVIS_REPO_SLUG/statuses/${TRAVIS_PULL_REQUEST_SHA:-$TRAVIS_COMMIT} \ | ||
-d "{ | ||
\"context\": \"$STAGE/$NAME\", | ||
\"state\": \"success\", | ||
\"description\": \"${STATUS:-Passed}\", | ||
\"target_url\": \"https://travis-ci.org/$TRAVIS_REPO_SLUG/jobs/$TRAVIS_JOB_ID\" | ||
}" | ||
- mkdir mount | ||
- sudo chmod a+rw /dev/loop0 | ||
- dd if=/dev/zero bs=512 count=2048 of=disk | ||
- losetup /dev/loop0 disk | ||
# Job control | ||
stages: | ||
- name: test | ||
- name: deploy | ||
if: branch = master |
Oops, something went wrong.