Skip to content

Commit 1505aea

Browse files
committed
Merge commit 'fd729208' into HEAD
2 parents 1e676f6 + fd72920 commit 1505aea

File tree

13 files changed

+328
-391
lines changed

13 files changed

+328
-391
lines changed

features/filesystem/littlefs/littlefs/.travis.yml

Lines changed: 32 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@ script:
2727
# compile and find the code size with the smallest configuration
2828
- make clean size
2929
OBJ="$(ls lfs*.o | tr '\n' ' ')"
30-
CFLAGS+="-DLFS_NO{ASSERT,DEBUG,WARN,ERROR}"
30+
CFLAGS+="-DLFS_NO_ASSERT -DLFS_NO_DEBUG -DLFS_NO_WARN -DLFS_NO_ERROR"
3131
| tee sizes
3232

3333
# update status if we succeeded, compare with master if possible
3434
- |
3535
if [ "$TRAVIS_TEST_RESULT" -eq 0 ]
3636
then
3737
CURR=$(tail -n1 sizes | awk '{print $1}')
38-
PREV=$(curl https://api.github.com/repos/$TRAVIS_REPO_SLUG/status/master \
38+
PREV=$(curl -u $GEKY_BOT_STATUSES https://api.github.com/repos/$TRAVIS_REPO_SLUG/status/master \
3939
| jq -re "select(.sha != \"$TRAVIS_COMMIT\")
4040
| .statuses[] | select(.context == \"$STAGE/$NAME\").description
4141
| capture(\"code size is (?<size>[0-9]+)\").size" \
@@ -134,52 +134,44 @@ jobs:
134134
- STAGE=deploy
135135
- NAME=deploy
136136
script:
137-
# Update tag for version defined in lfs.h
137+
# Find version defined in lfs.h
138138
- LFS_VERSION=$(grep -ox '#define LFS_VERSION .*' lfs.h | cut -d ' ' -f3)
139139
- LFS_VERSION_MAJOR=$((0xffff & ($LFS_VERSION >> 16)))
140140
- LFS_VERSION_MINOR=$((0xffff & ($LFS_VERSION >> 0)))
141-
- LFS_VERSION="v$LFS_VERSION_MAJOR.$LFS_VERSION_MINOR"
142-
- echo "littlefs version $LFS_VERSION"
141+
# Grab latests patch from repo tags, default to 0
142+
- LFS_VERSION_PATCH=$(curl -f -u "$GEKY_BOT_RELEASES"
143+
https://api.github.com/repos/$TRAVIS_REPO_SLUG/git/refs
144+
| jq 'map(.ref | match(
145+
"refs/tags/v'"$LFS_VERSION_MAJOR"'\\.'"$LFS_VERSION_MINOR"'\\.(.*)$")
146+
.captures[].string | tonumber + 1) | max // 0')
147+
# We have our new version
148+
- LFS_VERSION="v$LFS_VERSION_MAJOR.$LFS_VERSION_MINOR.$LFS_VERSION_PATCH"
149+
- echo "VERSION $LFS_VERSION"
143150
- |
144-
curl -u $GEKY_BOT_RELEASES -X POST \
145-
https://api.github.com/repos/$TRAVIS_REPO_SLUG/git/refs \
146-
-d "{
147-
\"ref\": \"refs/tags/$LFS_VERSION\",
148-
\"sha\": \"$TRAVIS_COMMIT\"
149-
}"
150-
- |
151-
curl -f -u $GEKY_BOT_RELEASES -X PATCH \
152-
https://api.github.com/repos/$TRAVIS_REPO_SLUG/git/refs/tags/$LFS_VERSION \
153-
-d "{
154-
\"sha\": \"$TRAVIS_COMMIT\"
155-
}"
156-
# Create release notes from commits
157-
- LFS_PREV_VERSION="v$LFS_VERSION_MAJOR.$(($LFS_VERSION_MINOR-1))"
158-
- |
159-
if [ $(git tag -l "$LFS_PREV_VERSION") ]
151+
# Check that we're the most recent commit
152+
CURRENT_COMMIT=$(curl -f -u "$GEKY_BOT_RELEASES" \
153+
https://api.github.com/repos/$TRAVIS_REPO_SLUG/commits/master \
154+
| jq -re '.sha')
155+
if [ "$TRAVIS_COMMIT" == "$CURRENT_COMMIT" ]
160156
then
161-
curl -u $GEKY_BOT_RELEASES -X POST \
157+
# Build release notes
158+
PREV=$(git tag --sort=-v:refname -l "v*" | head -1)
159+
if [ ! -z "$PREV" ]
160+
then
161+
echo "PREV $PREV"
162+
CHANGES=$'### Changes\n\n'$( \
163+
git log --oneline $PREV.. --grep='^Merge' --invert-grep)
164+
printf "CHANGES\n%s\n\n" "$CHANGES"
165+
fi
166+
# Create the release
167+
curl -f -u "$GEKY_BOT_RELEASES" -X POST \
162168
https://api.github.com/repos/$TRAVIS_REPO_SLUG/releases \
163169
-d "{
164170
\"tag_name\": \"$LFS_VERSION\",
165-
\"name\": \"$LFS_VERSION\"
171+
\"target_commitish\": \"$TRAVIS_COMMIT\",
172+
\"name\": \"${LFS_VERSION%.0}\",
173+
\"body\": $(jq -sR '.' <<< "$CHANGES")
166174
}"
167-
RELEASE=$(
168-
curl -f https://api.github.com/repos/$TRAVIS_REPO_SLUG/releases/tags/$LFS_VERSION
169-
)
170-
CHANGES=$(
171-
git log --oneline $LFS_PREV_VERSION.. --grep='^Merge' --invert-grep
172-
)
173-
curl -f -u $GEKY_BOT_RELEASES -X PATCH \
174-
https://api.github.com/repos/$TRAVIS_REPO_SLUG/releases/$(
175-
jq -r '.id' <<< "$RELEASE"
176-
) \
177-
-d "$(
178-
jq -s '{
179-
"body": ((.[0] // "" | sub("(?<=\n)#+ Changes.*"; ""; "mi"))
180-
+ "### Changes\n\n" + .[1])
181-
}' <(jq '.body' <<< "$RELEASE") <(jq -sR '.' <<< "$CHANGES")
182-
)"
183175
fi
184176
185177
# Manage statuses
@@ -220,4 +212,4 @@ after_success:
220212
stages:
221213
- name: test
222214
- name: deploy
223-
if: branch = master
215+
if: branch = master AND type = push
Lines changed: 24 additions & 165 deletions
Original file line numberDiff line numberDiff line change
@@ -1,165 +1,24 @@
1-
Apache License
2-
Version 2.0, January 2004
3-
http://www.apache.org/licenses/
4-
5-
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6-
7-
1. Definitions.
8-
9-
"License" shall mean the terms and conditions for use, reproduction, and
10-
distribution as defined by Sections 1 through 9 of this document.
11-
12-
"Licensor" shall mean the copyright owner or entity authorized by the copyright
13-
owner that is granting the License.
14-
15-
"Legal Entity" shall mean the union of the acting entity and all other entities
16-
that control, are controlled by, or are under common control with that entity.
17-
For the purposes of this definition, "control" means (i) the power, direct or
18-
indirect, to cause the direction or management of such entity, whether by
19-
contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
20-
outstanding shares, or (iii) beneficial ownership of such entity.
21-
22-
"You" (or "Your") shall mean an individual or Legal Entity exercising
23-
permissions granted by this License.
24-
25-
"Source" form shall mean the preferred form for making modifications, including
26-
but not limited to software source code, documentation source, and configuration
27-
files.
28-
29-
"Object" form shall mean any form resulting from mechanical transformation or
30-
translation of a Source form, including but not limited to compiled object code,
31-
generated documentation, and conversions to other media types.
32-
33-
"Work" shall mean the work of authorship, whether in Source or Object form, made
34-
available under the License, as indicated by a copyright notice that is included
35-
in or attached to the work (an example is provided in the Appendix below).
36-
37-
"Derivative Works" shall mean any work, whether in Source or Object form, that
38-
is based on (or derived from) the Work and for which the editorial revisions,
39-
annotations, elaborations, or other modifications represent, as a whole, an
40-
original work of authorship. For the purposes of this License, Derivative Works
41-
shall not include works that remain separable from, or merely link (or bind by
42-
name) to the interfaces of, the Work and Derivative Works thereof.
43-
44-
"Contribution" shall mean any work of authorship, including the original version
45-
of the Work and any modifications or additions to that Work or Derivative Works
46-
thereof, that is intentionally submitted to Licensor for inclusion in the Work
47-
by the copyright owner or by an individual or Legal Entity authorized to submit
48-
on behalf of the copyright owner. For the purposes of this definition,
49-
"submitted" means any form of electronic, verbal, or written communication sent
50-
to the Licensor or its representatives, including but not limited to
51-
communication on electronic mailing lists, source code control systems, and
52-
issue tracking systems that are managed by, or on behalf of, the Licensor for
53-
the purpose of discussing and improving the Work, but excluding communication
54-
that is conspicuously marked or otherwise designated in writing by the copyright
55-
owner as "Not a Contribution."
56-
57-
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
58-
of whom a Contribution has been received by Licensor and subsequently
59-
incorporated within the Work.
60-
61-
2. Grant of Copyright License.
62-
63-
Subject to the terms and conditions of this License, each Contributor hereby
64-
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
65-
irrevocable copyright license to reproduce, prepare Derivative Works of,
66-
publicly display, publicly perform, sublicense, and distribute the Work and such
67-
Derivative Works in Source or Object form.
68-
69-
3. Grant of Patent License.
70-
71-
Subject to the terms and conditions of this License, each Contributor hereby
72-
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
73-
irrevocable (except as stated in this section) patent license to make, have
74-
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
75-
such license applies only to those patent claims licensable by such Contributor
76-
that are necessarily infringed by their Contribution(s) alone or by combination
77-
of their Contribution(s) with the Work to which such Contribution(s) was
78-
submitted. If You institute patent litigation against any entity (including a
79-
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
80-
Contribution incorporated within the Work constitutes direct or contributory
81-
patent infringement, then any patent licenses granted to You under this License
82-
for that Work shall terminate as of the date such litigation is filed.
83-
84-
4. Redistribution.
85-
86-
You may reproduce and distribute copies of the Work or Derivative Works thereof
87-
in any medium, with or without modifications, and in Source or Object form,
88-
provided that You meet the following conditions:
89-
90-
You must give any other recipients of the Work or Derivative Works a copy of
91-
this License; and
92-
You must cause any modified files to carry prominent notices stating that You
93-
changed the files; and
94-
You must retain, in the Source form of any Derivative Works that You distribute,
95-
all copyright, patent, trademark, and attribution notices from the Source form
96-
of the Work, excluding those notices that do not pertain to any part of the
97-
Derivative Works; and
98-
If the Work includes a "NOTICE" text file as part of its distribution, then any
99-
Derivative Works that You distribute must include a readable copy of the
100-
attribution notices contained within such NOTICE file, excluding those notices
101-
that do not pertain to any part of the Derivative Works, in at least one of the
102-
following places: within a NOTICE text file distributed as part of the
103-
Derivative Works; within the Source form or documentation, if provided along
104-
with the Derivative Works; or, within a display generated by the Derivative
105-
Works, if and wherever such third-party notices normally appear. The contents of
106-
the NOTICE file are for informational purposes only and do not modify the
107-
License. You may add Your own attribution notices within Derivative Works that
108-
You distribute, alongside or as an addendum to the NOTICE text from the Work,
109-
provided that such additional attribution notices cannot be construed as
110-
modifying the License.
111-
You may add Your own copyright statement to Your modifications and may provide
112-
additional or different license terms and conditions for use, reproduction, or
113-
distribution of Your modifications, or for any such Derivative Works as a whole,
114-
provided Your use, reproduction, and distribution of the Work otherwise complies
115-
with the conditions stated in this License.
116-
117-
5. Submission of Contributions.
118-
119-
Unless You explicitly state otherwise, any Contribution intentionally submitted
120-
for inclusion in the Work by You to the Licensor shall be under the terms and
121-
conditions of this License, without any additional terms or conditions.
122-
Notwithstanding the above, nothing herein shall supersede or modify the terms of
123-
any separate license agreement you may have executed with Licensor regarding
124-
such Contributions.
125-
126-
6. Trademarks.
127-
128-
This License does not grant permission to use the trade names, trademarks,
129-
service marks, or product names of the Licensor, except as required for
130-
reasonable and customary use in describing the origin of the Work and
131-
reproducing the content of the NOTICE file.
132-
133-
7. Disclaimer of Warranty.
134-
135-
Unless required by applicable law or agreed to in writing, Licensor provides the
136-
Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
137-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
138-
including, without limitation, any warranties or conditions of TITLE,
139-
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
140-
solely responsible for determining the appropriateness of using or
141-
redistributing the Work and assume any risks associated with Your exercise of
142-
permissions under this License.
143-
144-
8. Limitation of Liability.
145-
146-
In no event and under no legal theory, whether in tort (including negligence),
147-
contract, or otherwise, unless required by applicable law (such as deliberate
148-
and grossly negligent acts) or agreed to in writing, shall any Contributor be
149-
liable to You for damages, including any direct, indirect, special, incidental,
150-
or consequential damages of any character arising as a result of this License or
151-
out of the use or inability to use the Work (including but not limited to
152-
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
153-
any and all other commercial damages or losses), even if such Contributor has
154-
been advised of the possibility of such damages.
155-
156-
9. Accepting Warranty or Additional Liability.
157-
158-
While redistributing the Work or Derivative Works thereof, You may choose to
159-
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
160-
other liability obligations and/or rights consistent with this License. However,
161-
in accepting such obligations, You may act only on Your own behalf and on Your
162-
sole responsibility, not on behalf of any other Contributor, and only if You
163-
agree to indemnify, defend, and hold each Contributor harmless for any liability
164-
incurred by, or claims asserted against, such Contributor by reason of your
165-
accepting any such warranty or additional liability.
1+
Copyright (c) 2017, Arm Limited. All rights reserved.
2+
3+
Redistribution and use in source and binary forms, with or without modification,
4+
are permitted provided that the following conditions are met:
5+
6+
- Redistributions of source code must retain the above copyright notice, this
7+
list of conditions and the following disclaimer.
8+
- Redistributions in binary form must reproduce the above copyright notice, this
9+
list of conditions and the following disclaimer in the documentation and/or
10+
other materials provided with the distribution.
11+
- Neither the name of ARM nor the names of its contributors may be used to
12+
endorse or promote products derived from this software without specific prior
13+
written permission.
14+
15+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
19+
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
22+
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

features/filesystem/littlefs/littlefs/Makefile

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
TARGET = lfs
1+
TARGET = lfs.a
2+
ifneq ($(wildcard test.c main.c),)
3+
override TARGET = lfs
4+
endif
25

36
CC ?= gcc
47
AR ?= ar
@@ -22,7 +25,7 @@ ifdef WORD
2225
override CFLAGS += -m$(WORD)
2326
endif
2427
override CFLAGS += -I.
25-
override CFLAGS += -std=c99 -Wall -pedantic
28+
override CFLAGS += -std=c99 -Wall -pedantic -Wshadow -Wunused-parameter
2629

2730

2831
all: $(TARGET)
@@ -33,9 +36,11 @@ size: $(OBJ)
3336
$(SIZE) -t $^
3437

3538
.SUFFIXES:
36-
test: test_format test_dirs test_files test_seek test_truncate test_parallel \
37-
test_alloc test_paths test_orphan test_move test_corrupt
39+
test: test_format test_dirs test_files test_seek test_truncate \
40+
test_interspersed test_alloc test_paths test_orphan test_move test_corrupt
41+
@rm test.c
3842
test_%: tests/test_%.sh
43+
3944
ifdef QUIET
4045
@./$< | sed -n '/^[-=]/p'
4146
else
@@ -44,7 +49,7 @@ endif
4449

4550
-include $(DEP)
4651

47-
$(TARGET): $(OBJ)
52+
lfs: $(OBJ)
4853
$(CC) $(CFLAGS) $^ $(LFLAGS) -o $@
4954

5055
%.a: $(OBJ)

features/filesystem/littlefs/littlefs/README.md

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,17 @@ All littlefs have the potential to return a negative error code. The errors
115115
can be either one of those found in the `enum lfs_error` in [lfs.h](lfs.h),
116116
or an error returned by the user's block device operations.
117117
118-
It should also be noted that the current implementation of littlefs doesn't
119-
really do anything to ensure that the data written to disk is machine portable.
120-
This is fine as long as all of the involved machines share endianness
121-
(little-endian) and don't have strange padding requirements.
118+
In the configuration struct, the `prog` and `erase` function provided by the
119+
user may return a `LFS_ERR_CORRUPT` error if the implementation already can
120+
detect corrupt blocks. However, the wear leveling does not depend on the return
121+
code of these functions, instead all data is read back and checked for
122+
integrity.
123+
124+
If your storage caches writes, make sure that the provided `sync` function
125+
flushes all the data to memory and ensures that the next read fetches the data
126+
from memory, otherwise data integrity can not be guaranteed. If the `write`
127+
function does not perform caching, and therefore each `read` or `write` call
128+
hits the memory, the `sync` function can simply return 0.
122129
123130
## Reference material
124131
@@ -139,6 +146,19 @@ The tests assume a Linux environment and can be started with make:
139146
make test
140147
```
141148

149+
## License
150+
151+
The littlefs is provided under the [BSD-3-Clause](https://spdx.org/licenses/BSD-3-Clause.html)
152+
license. See [LICENSE.md](LICENSE.md) for more information. Contributions to
153+
this project are accepted under the same license.
154+
155+
Individual files contain the following tag instead of the full license text.
156+
157+
SPDX-License-Identifier: BSD-3-Clause
158+
159+
This enables machine processing of license information based on the SPDX
160+
License Identifiers that are here available: http://spdx.org/licenses/
161+
142162
## Related projects
143163

144164
[Mbed OS](https://github.com/ARMmbed/mbed-os/tree/master/features/filesystem/littlefs) -

0 commit comments

Comments
 (0)