Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/littlefs-project/littlefs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-01-19Merge pull request #916 from littlefs-project/ci-ubuntu-latestChristopher Haster
Change CI to just run on ubuntu-latest
2023-12-21Changed CI to just run on ubuntu-latestci-ubuntu-latestChristopher Haster
If we already have to bump this version as GitHub phases out older Ubuntu runners (which is reasonable), I don't really see the value of pinning a specific version. We might as well just respond to any broken dependencies caused by GitHub's implicit updates as they happen... It's not like CI is truly continuous.
2023-12-20Fixed struct sizes missing from generated release notesfix-release-structsChristopher Haster
This script was missed during a struct -> structs naming change
2023-07-03Fixed release script breaking if there is no previous versionfix-ci-release-no-versionChristopher Haster
This can't actually happen in the current state of the littlefs GitHub repo, but could in theory cause problems if CI is enabled on a fork. Found while enabling GitHub Actions on littlefs-fuse.
2023-06-29Added LFS_MULTIVERSION and testing of lfs2.0 to CIconfigurable-disk-versionChristopher Haster
- Added test-multiversion test job - Added test-lfs2_0 test job - Added mutliversion size measurement
2023-06-07Increased context on failures for Valgrind in CIChristopher Haster
Valgrind output is very verbose but useful, with a default limit of 5 lines the output usually doesn't contain much useful info.
2023-04-21Added compatibility testing on pull-request to GitHub test actionChristopher Haster
This uses the "github.event.pull_request.base.ref" variable as the "lfsp" target for compatibility testing.
2022-12-07Changed test_runner to run with -Pnone,linear by defaultChristopher Haster
The linear powerloss heuristic provides very good powerloss coverage without a significant runtime hit, so there's really no reason to run the tests without -Plinear. Previous behavior can be accomplished with an explicit -Pnone.
2022-12-07Added make benchmarks/testmarks rulesChristopher Haster
Mostly for benchmarking, this makes it easy to view and compare runner results similarly to other csv results.
2022-12-07A couple of script changes after CI integrationChristopher Haster
- Renamed struct_.py -> structs.py again. - Removed lfs.csv, instead prefering script specific csv files. - Added *-diff make rules for quick comparison against a previous result, results are now implicitly written on each run. For example, `make code` creates lfs.code.csv and prints the summary, which can be followed by `make code-diff` to compare changes against the saved lfs.code.csv without overwriting. - Added nargs=? support for -s and -S, now uses a per-result _sort attribute to decide sort if fields are unspecified.
2022-12-07Fixed Clang testing in CI, removed override vars in MakefileChristopher Haster
Two flags introduced: -fcallgraph-info=su for stack analysis, and -ftrack-macro-expansions=0 for cleaner prettyassert.py warnings, are unfortunately not supported in Clang. The override vars in the Makefile meant it wasn't actually possible to remove these flags for Clang testing, so this commit changes those vars to normal, non-overriding vars. This means `make CFLAGS=-Werror` and `CFLAGS=-Werror make` behave _very_ differently, but this is just an unfortunate quirk of make that needs to be worked around.
2022-12-07Merge remote-tracking branch 'origin/master' into test-and-bench-runnersChristopher Haster
2022-12-07Fixed bench workflow + changeprefix issue in prefix releasesChristopher Haster
changeprefix.py only works on prefixes, which is a bit of a problem for flags in the workflow scripts, requiring extra handling to not hide the prefix from changeprefix.py
2022-12-07Added a bot-generated PR-comment with a simple status tableChristopher Haster
The littlefs CI is actually in a nice state that generates a lot of information about PRs (code/stack/struct changes, line/branch coverage changes, benchmark changes), but GitHub's UI has changed overtime to make CI statuses harder to find for some reason. This bot comment should hopefully make this information easy to find without creating too much noise in the discussion. If not, this can always be changed later.
2022-12-07Adopted script changes in GitHub ActionsChristopher Haster
- Moved to Ubuntu 22.04 This notably means we no longer have to bend over backwards to install GCC 10! - Changed shell in gha to include the verbose/undefined flags, making debugging gha a bit less painful - Adopted the new test.py/test_runners framework, which means no more heavy recompilation for different configurations. This reduces the test job runtime from >1 hour to ~15 minutes, while increasing the number of geometries we are testing. - Added exhaustive powerloss testing, because of time constraints this is at most 1pls for general tests, 2pls for a subset of useful tests. - Limited coverage measurements to `make test` Originally I tried to maximize coverage numbers by including coverage from every possible source, including the more elaborate CI jobs which provide an extra level of fuzzing. But this missed the purpose of coverage measurements, which is to find areas where test cases can be improved. We don't want to improve coverage by just shoving more fuzz tests into CI, we want to improve coverage by adding specific, intentioned test cases, that, if they fail, highlight the reason for the failure. With this perspective, maximizing coverage measurement in CI is counter-productive. This changes makes it so the reported coverage is always less than actual CI coverage, but acts as a more useful metric. This also simplifies coverage collection, so that's an extra plus. - Added benchmarks to CI Note this doesn't suffer from inconsistent CPU performance because our benchmarks are based on purely simulated read/prog/erase measurements. - Updated the generated markdown table to include line+branch coverage info and benchmark results.
2022-09-07Added clang build step to CIChristopher Haster
As found by dpgeorge, clang has slightly different warnings than GCC. There's really no cost to running clang as an extra build step to test for these.
2022-03-20Fixed Popen deadlock issue in test.pymore-scriptsChristopher Haster
As noted in Python's subprocess library: > This will deadlock when using stdout=PIPE and/or stderr=PIPE and the > child process generates enough output to a pipe such that it blocks > waiting for the OS pipe buffer to accept more data. Curiously, this only became a problem when updating to Ubuntu 20.04 in CI (python3.6 -> python3.8).
2022-03-20In CI, determine loop devices dynamically to avoid conflicts with Ubuntu snapsChristopher Haster
Introduced when updating CI to Ubuntu 20.04, Ubuntu snaps consume loop devices, which conflict with out assumption that /dev/loop0 will always be unused. Changed to request a dynamic loop device from losetup, though it would have been nice if Ubuntu snaps allocated from the last device or something.
2022-03-20Added new scripts to CI resultsChristopher Haster
- Added to GitHub statuses (61 results) - Reworked generated release table to include these (16 results, only thumb) These also required a surprisingly large number of other changes: - Bumbed CI Ubuntu version 18.04 -> 20.04, 22.04 is already on the horizon but not usable in GitHub yet - Manualy upgrade to GCC v10, this is required for the -fcallgraph-info flag that scripts/stack.py uses. - Increased paginated status queries to 100 per-page. If we have more statuses than this the status diffs may get much more complicated... - Forced whitespace in generated release table to always be nbsp. GitHub tables get scrunched rather ugly without this, prefering margins to readable tables. - Added limited support for "∞" results, since this is returned by ./scripts/stack.py for recursive functions. As a side-note, this increases the number of statuses reported per-commit from 6 to 61, so hopefully that doesn't cause any problems...
2022-03-11Added size-sort options to scripts/code.pyChristopher Haster
Now with -s/--sort and -S/--reverse-sort for sorting the functions by size. You may wonder why add reverse-sort, since its utility doesn't seem worth the cost to implement (these are just helper scripts after all), the reason is that reverse-sort is quite useful on the command-line, where scrollback may be truncated, and you only care about the larger entries. Outside of the command-line, normal sort is prefered. Fortunately the difference is just the sign in the sort key. Note this conflicts with the short --summary flag, so that has been removed.
2021-01-18Merge branch 'devel' into ci-revampChristopher Haster
Needed to bring in new "error-asserts" configuration
2021-01-10Added post-release script, cleaned up workflowsChristopher Haster
This helps an outstanding maintainer annoyance: updating dependencies to bring in new versions on each littlefs release. But instead of adding a bunch of scripts to the tail end of the release workflow, the post-release script just triggers a single "repository_dispatch" event in the newly created littlefs.post-release repo. From there any number of post-release workflows can be run. This indirection should let the post-release scripts move much quicker than littlefs itself, which helps offset how fragile these sort of scripts are. --- Also finished cleaning up the workflows now that they are mostly working.
2021-01-10Reduced build sources to just the core littlefsChristopher Haster
Currently this is just lfs.c and lfs_util.c. Previously this included the block devices, but this meant all of the scripts needed to explicitly deselect the block devices to avoid reporting build size/coverage info on them. Note that test.py still explicitly adds the block devices for compiling tests, which is their main purpose. Humorously this means the block devices will probably be compiled into most builds in this repo anyways.
2021-01-10Brought over the release workflowChristopher Haster
This is pretty much a cleaned up version of the release script that ran on Travis. This biggest change is that now the release script also collecs the build results into a table as part of the change notes, which is a nice addition.
2021-01-10Fixed a recompilation issue in CI, tweaked coverage.py a bit moreChristopher Haster
This was lost in the Travis -> GitHub transition, in serializing some of the jobs, I missed that we need to clean between tests with different geometry configurations. Otherwise we end up running outdated binaries, which explains some of the weird test behavior we were seeing. Also tweaked a few script things: - Better subprocess error reporting (dump stderr on failure) - Fixed a BUILDDIR rule issue in test.py - Changed test-not-run status to None instead of undefined
2021-01-10Added BUILDDIR, a bit of script reworkingChristopher Haster
Now littlefs's Makefile can work with a custom build directory for compilation output. Just set the BUILDDIR variable and the Makefile will take care of the rest. make BUILDDIR=build size This makes it very easy to compare builds with different compile-time configurations or different cross-compilers. This meant most of code.py's build isolation is no longer needed, so revisted the scripts and cleaned/tweaked a number of things. Also bought code.py in line with coverage.py, fixing some of the inconsistencies that were created while developing these scripts. One change to note was removing the inline measuring logic, I realized this feature is unnecessary thanks to GCC's -fkeep-static-functions and -fno-inline flags.
2021-01-10Added coverage.py, and optional coverage info to test.pyChristopher Haster
Now coverage information can be collected if you provide the --coverage to test.py. Internally this uses GCC's gcov instrumentation along with a new script, coverage.py, to parse *.gcov files. The main use for this is finding coverage info during CI runs. There's a risk that the instrumentation may make it more difficult to debug, so I decided to not make coverage collection enabled by default.
2021-01-10Added GitHub workflows to run testsChristopher Haster
Mostly taken from .travis.yml, biggest changes were around how to get the status updates to work. We can't use a token on PRs the same way we could in Travis, so instead we use a second workflow that checks every pull request for "status" artifacts, and create the actual statuses in the "workflow_run" event, where we have full access to repo secrets.