Skip to content

Commit fce279e

Browse files
alexeilebedevAlexei Lebedev
andauthored
Compute a document when it is read, and rebuild acr_dm as a set merge (#124)
* Rebuild acr_dm as a set merge, and give package dependencies a type An ssimfile is a set of rows, and merging one as text throws that away. acr_dm now merges it as a set: a row is found by its key, and each of its attributes, the lines above it, and the row it comes after are merged one at a time. One value stands; two values with the base among them are a change; two values with the base in neither is a conflict written between markers. Position is the part a text merge cannot supply. Row order in data/dmmeta/field.ssim is the member order of a generated struct, so a row that comes back where the base had it, from a file that moved it, is a struct laid out the way nobody asked for. Position travels as a tree, each row hanging off the row it follows, and the merged file is a walk of that tree. Rows that run consecutively hang off one anchor rather than off each other, which keeps the walk's depth at the nesting of runs instead of at the number of rows -- a file one side adds whole used to build a chain as long as itself and overflow the stack around fifty thousand rows. A package dependency now says how the two packages stand to each other. `dev.pkgdeptype` has three values: a **contain** parent distributes the package, so the parent's content covers it; an **extend** parent does not, so the parent's content is reduced by whatever the package captures; **require** is ordering alone. A tree that builds on this one therefore keeps itself out of the distribution by declaring the relation once, rather than by listing its own namespaces as negative keys in this package's definition. Two rules decide the edges: a record a package names outright stays with it, because an extender's reference closure reaches records it never meant to claim, and the subtraction runs after every package is evaluated, because packages are evaluated parents first. `apm -check` reports a namespace two packages claim as `apm.doubleclaim`. amc names a generated record from its ctype now. `Instname` is what a ctype contributes to an identifier, `Varname` is the variable that holds one of its records, and `Refname` is what a body calls the container; the three had drifted into each other's jobs, and the instname itself came from whichever field instantiated the ctype first. Ten ctypes have more than one instance, so for those, moving two unrelated rows in field.ssim renamed generated identifiers. A field row's position decides struct layout, and nothing else. atf_unit finds its own binary again. Taking argv[0] as the path to re-execute holds only when the tool was started by a path: found on PATH, argv[0] is a bare word that exec cannot resolve, and given as bin/atf_unit it names a symlink into a build tree rather than the binary the link points at. Every unit test on a Linux checkout failed with `can't exec: errno:2`. algo::GetExePath answers with the file that is really running -- /proc/self/exe where there is one, _NSGetExecutablePath on Darwin, argv[0] as the last resort -- and both call sites ask it. A namespace's internals doc under txt/gen is wholly derived now. abt_md fills a section a file already carries and never adds one, and the generators for the table of contents and the description were scoped to README files, so under txt/gen both sections were carried text that nothing here could reproduce. Both generators match a txt/gen mdfile as well, and a description there is one line pointing at the namespace's usage README, titled from its dmmeta.ns comment. A README elsewhere keeps the description someone wrote for it. The Functions section a library's doc carries comes back the same way, from src_func over that namespace's own sources. The rule files for acr, acr_dm, acr_ed, amc and openacr arrive with their dev.readmefile rows, so abt_md maintains their headings and links here rather than leaving them as files it does not know about. txt/lib/lib_ams/README.md lists the process types this tree's own amsdb defines. It had been carrying the table from the tree that publishes this one, which names processes no target here builds. Two scripts under test/lstw are gone. Nothing here reads them and no target here ever did; they came across in an earlier publication and stayed, because a publication adds and rewrites files without removing one that has left the distribution. CI builds and tests on macOS as well as Linux. The runner is `macos-26`, a standard Apple Silicon machine and therefore free for a public repository, and arm64 is the arch this tree can describe: `dev.tool_opt` carries `Darwin-%.%-arm64` rows and nothing for Darwin x86_64. The image has to be macOS 26 rather than 15, because the Darwin arm64 build passes `-Wno-cast-function-type-mismatch` and `-Wno-nontrivial-memcall`, which clang learned in 19 and 20; `macos-15` defaults to Xcode 16.4, whose clang is 17, and under `-Werror` an older clang rejects the unknown option itself and fails the bootstrap's first compile. `fail-fast: false` keeps the Linux leg reporting when macOS fails, the macOS leg is `continue-on-error` until it goes green, and `memcheck` is a Linux-only step because valgrind has no macOS arm64 port. Two things that leg needs in order to link. Homebrew keeps openssl and the mariadb connector keg-only, so neither reaches `/opt/homebrew/include`, while `include/sha.h` includes `<openssl/evp.h>` unconditionally and five Darwin targets link `crypto` or `ssl`; four `dev.tool_opt` rows name those two kegs in the shape the readline rows already used. And `lib_mysql` compiles `<mariadb/mysql.h>` while its Darwin row asked the linker for `mysqlclient`, which belongs to a different package -- the row says `mariadb` now, the library Linux already links. Where macOS code goes is written down. A call Linux provides and macOS does not belongs in `cpp/lib/algo/macos.cpp`, inside one `#if defined(__MACH__)` spanning the file, because `dev.targsrc` names a target and a source with no uname between them: every source in a target compiles on every platform, so nothing short of a file-wide condition can make a source macOS-only. A conditional choosing between two bodies of one function is not that, and neither is one in a header. That file exists now, and two Linux-only calls put it there -- different in kind, which is what the rule is for. `algo::GetNcore` reads the affinity mask under `#ifndef WIN32`, and `cpu_set_t` exists on Linux alone, so the guard says `__linux__` and every other system takes the online count that was already the fallback; nothing moves, because nothing was missing. `pipe2` is genuinely absent on Darwin, so `cpp/lib/algo/macos.cpp` supplies it: both ends get their flags immediately after the pipe, and a flag it cannot apply is refused rather than quietly dropped, since dropping the O_CLOEXEC a caller asked for reopens the fork window the call exists to close. The line-ending citest converts with perl rather than `sed -i`. BSD sed wants a suffix after `-i`, so it took the script as one and then read the filename as the script -- `txt/README.md` parsed as sed's `t` command, reporting an undefined label named after the file. Every invocation failed, the citest modified nothing, and it therefore reported success: on macOS it was inert rather than red, which is the worse of the two. `perl -pi -e` takes no suffix on either system, and the filename is quoted now instead of spliced raw. A tutorial's recorded output no longer names the machine that produced it. `abt.config` reports the builddir it built in, and a doc generated on Linux therefore said `Linux-g++.release-x86_64` where a macOS run says `Darwin-clang++.release-arm64`; the value is a property of whoever ran the command, exactly like the `ood_src` and `cache` beside it, so it joins them in `dev.unstablefld` and renders as `***`. The Darwin link line asks its linker not to warn about duplicate archives. Repeating an archive is deliberate here -- a library is emitted before and after its own dependencies so that a single-pass linker can close a cycle, and there is a second `algo_lib` after `gen_lib` for the same reason. A multi-pass linker has no need of the repetition and says so, once per link, which lands in the recorded output of every doc that builds something. Two amc tests say what they mean on a system that serves a big block without mapping it. `SbrkMmapTrace` asserts that a request no mapping can serve counts no mapping, and it wrote that as `n_mmap == nmmap + 1` -- the plus one being what the *successful* request before it happened to count where big blocks are mapped. It takes that reading now instead of assuming it, so the assertion holds its force either way rather than being switched off by platform. And `TaryInsaryBadIndex` reports what the child process did, since a fatal exit, a crash while composing the fatal report, and a bounds check that never fired are three different repairs behind one failed assertion. A fail-stop emits its enrichment one piece at a time. The cause already went out before anything that could fail to state it, on the principle that a report must not depend on the resource whose absence it reports; the build stamp, the backtrace and the trace counters were then composed together and emitted at the end, so a crash while composing any of them discarded all three. Each goes out as it is composed now, which costs a dying process two extra writes and means the record ends at the stage that died. The test that provokes a fail-stop names a record file too, since its child discards stderr and the record is otherwise the only account of how far the path ran. The counters go out one database at a time for the same reason, and each database is named before its table is touched. Reading a database's counters means calling through the function pointers its generated reflection installed, so a table that cannot be printed kills the process there, and the record now ends with the name of that database instead of losing every database that printed cleanly before it. That record named the defect, and it is not a Darwin one. A ctype's `_Print` is generated to take its row by value when the ctype is plain data of at most sixteen bytes, while reflection calls a printer through `algo::ImrowPrintFcn`, which takes an `ImrowPtr` -- and the registration bridged the two with a cast. A by-value printer therefore received the row across as many argument slots as it has eightbytes and read its `cstring` from the wrong register. Where the row goes by reference the two agree, a reference being a pointer on every target, so this survived until a table small enough to be register-passed met an ABI that passes small structs in registers: `lib_json.trace` has two counters, exactly the boundary. A by-value printer now gets a generated `_PrintImrow` carrying the signature reflection calls, and the registration has no cast in it. `txt/exe/apm/internals.md` is gone. It describes the publishing tree's own internals, no key here names it, and its links into `txt/exe/amc/reftype.md` pointed at anchors that moved when the ssimdb documents became one file per reftype -- so `abt_md` reported fourteen dangling anchors in a file nothing here owns. Three unit tests were reading Linux for a rule. `algo_lib.FProc` asks whether a pipe the parent holds reaches a child spawned afterwards, and it answered by matching the pipe's `/proc/self/fd` name in a listing the child made of its own descriptors -- a directory macOS does not have, so the helper found no name and reported no leak whichever way the flag was set. It asks the child to read from the descriptor instead, which tests the consequence rather than the bookkeeping and needs no way to enumerate another process's descriptors. `algo_lib.Mmap` asserts that a write through another handle shows up in the mapping, and `MmapFile_LoadFd` mapped MAP_PRIVATE, which leaves that unsaid: the standard does not decide whether a later write reaches a private mapping, Linux lets it through and Darwin does not. The mapping is MAP_SHARED now. Nothing is written through it, it being PROT_READ, so sharing costs nothing and the two systems answer alike. `algo_lib.Decimal` compared two conversions of one number that were never the same function. `Decimal_GetDouble` computed the mantissa times `pow(10, exponent)` while the parser builds its scale by repeated multiplication, and no power of ten above 10^22 is representable in a double, so the two land on different ones -- 2.7e-16 apart at 10^-63 under glibc, which is 27% of the tolerance the test allows, and further apart under a libm whose `pow` is less accurate for a large integral exponent. What a decimal is worth as a double is what this tree's own parser makes of it, so `Decimal_GetDouble` prints and parses, and there is one definition of that rather than two. `fstep_TimeHookRecur` counted the platform's sleep and called it the mechanism. `bh_timehook_Step` reschedules a recurrent hook from the loop's own clock rather than from the deadline it just met, so the period is a floor: a cycle that returns late pushes the next firing out by however late it was, and what the count measures is whatever `nanosleep` managed. A tenth of a second at a hundredth-second period fires ten times on Linux and three times on a macOS runner, and neither is the hook misbehaving. The window is a second now, long enough that a coarse sleep still leaves plenty of firings, and the bounds state what is actually promised -- that the hook keeps firing, and that it never outruns its period, which is a hundred firings in the window plus the immediate one. The test reports the count it saw rather than only that the count was wrong. `acr_dm.DeepRun` counted lines with `wc`, which pads its count to a column width on a BSD userland and not on a GNU one, so one run printed `100000` and the other ` 100000`. `awk "END{print NR}"` prints the number and nothing beside it on either. gcache told the compiler its input was already preprocessed by passing `-fpreprocessed`, which is gcc's own spelling and which clang refuses outright. The command line already carries an `-x`, put there by `dev.tool_opt`, and gcache already rewrites it -- a precompile turns `c++` into `c++-header` -- so the preprocessed case joins it as `c++-cpp-output`, which both drivers read. It has to be that `-x` and not an appended one, because `-x` applies to the inputs after it and one placed past the source applies to nothing. The precompiled-header build keeps `-fpreprocessed`: its input is a header rather than a `.ii`, and that path emits `#pragma GCC pch_preprocess`, so it is gcc's either way. The gcache comptests reached for a GNU userland in two more places. `stat -c%s` names the flag GNU's stat takes and BSD's does not, so the size it was meant to feed `truncate` arrived empty and truncate refused a size of `-`. `$(( $(wc -c < f) ))` reads the size on either, and the arithmetic strips the column padding a BSD wc adds. `touch -d 2020-01-01` is GNU's spelling of a timestamp, and `touch -t 202001010000` is the spelling both accept. The header gcache writes for that build is named `.hpp` rather than `.h`, since a driver reads the language off the suffix and `.h` is a C header to both of them. g++ takes it as C++ anyway and says nothing, while clang++ obeys the suffix and warns on every compile that it is treating a C header as C++. gcache already writes C++ everywhere else -- the preprocessed file it makes is a `.ii` -- so the suffix now says what the file is. A precompiled header that fails to build no longer fails the compile. gcache counted that failure into its exit code and then skipped the compile, so a driver that does not read gcc's own `pch_preprocess` pragma stops every build that goes through the cache. The header is an optimization; the compile proceeds without it, and gcache says on stderr that it did. A failed leg repeats its own tail as an annotation. Downloading a job's log needs admin rights on the repository, so a contributor reading a red check sees that something failed and nothing about what -- and the macOS leg is the one that fails, on a machine most people here do not have. An annotation needs no rights, rides on the check run, and is what the workflow now emits from the last six kilobytes of the run: the citest that died, and what it printed. Alongside that: fbuf and avl reworked, atf_comp restructured around a process wrapper, and atf_unit and atf_ci taken from the tree that publishes this one. * Compute a document when it is read, and add the tool that does it `doc` renders any document of this tree, any source file, and any record of the ssim database -- at the terminal, as an HTML page, or from an HTTP server it runs itself. The argument is a key: any substring of a `dev.readmefile` path, the name of a documented thing, or, when it carries a colon, an acr query. So a page that used to be committed as markdown is synthesized when it is asked for, and `txt/gen`, the per-ctype documents under `txt/protocol` and the per-table documents under `txt/ssimdb` are gone -- 333 files, answered on demand out of data that cannot go stale. At the terminal the arrows move a selection between the page's links, Enter opens one and Backspace returns. `e` runs the editor on the document, or on the query with `-e` added to it. `m` asks acr for the schema of the selection, which is records too and is walked with the same keys. `-html` writes the same page for a browser and `-bind` serves it, and the navigation pane is one markdown text, drawn above the page at the terminal and beside it in a browser. The command line a page shows is one `doc` accepts, so a reader can type back what they see, and a display state that is not an option of `doc` may not appear there. `dev.docpage` is the vocabulary: a row per synthesized page, bound to `doc::docpage_<name>`, and both devices dispatch through it. `msg` is the protocols, which is to say every message header in the tree. `msg:ams.MsgHeader` is that header and the messages that begin with it, each with its type and its size. `msg:ams.LogMsg` is that message, its wire layout field by field, and the dispatches that receive it, which lead on to the handler's source. Nothing wrote that relation down; it is `dmmeta.typefld` and the Base fields, walked. `abt_md` generates a title, a syntax block, an options list, an inputs list and a handful of protocol tables, and nothing else, so `dev.mdsection` is eight rows where it was twenty-six. It takes the namespace of a help declaration as the text before the first underscore outside the string: a tool's help opens by naming the tool, and `atf_unit_help = "atf_unit: ...` had its last underscore inside the string, which left a third of the tool READMEs carrying no Syntax section. A document's title is recorded on its `dev.readmefile` row, so a listing need not open the file to name it. `acr_ed` no longer writes a markdown file per ssim table. `amc` keeps the `dmmeta.msg` and `dmmeta.msgfield` rows of a message that ends in a varlen tail. The walk refused a field it could not place, which is right for a field with something after it and wrong for the last one, and twenty-two messages under `ams.MsgHeader` were being dropped entirely. The access list above a struct leaves Base out, since that list is confined to one namespace and a Base relation rarely is -- a header named the few messages beside it and none of the hundred elsewhere. Every rule file under `txt/rule` is titled `<ns>: Rules`. A title naming what the file happens to say today goes stale as soon as it grows a section about something else, and leaves a reader scanning the directory unable to tell which namespace it belongs to. Every `txt/ssimdb` README stays, including the nineteen holding only a computed title. Some 2,900 committed links name a table as `txt/ssimdb/<ns>/README.md#<ns>-<name>`, and a link whose path is not a file git tracks is rejected. 683 fenced blocks under `txt/` gained a language, a bare fence having reached the shell lexer and coloured ssim and C++ as shell. The page footer claims no copyright. This tree is GPL, and the license travels with the source and says what a reader may do with it, so the footer carries the moment of the commit the running binary was built from and that commit's ref, and names nobody. * Resolve what the sync left behind, and guard a single match by its own pointer Four checks were red, and each names a different way a document or a table can outlive the thing it described. `dev.readmesort` is gone, so `data/dev/readmesort.ssim` goes with it. The table ordered a chapter listing that is no longer generated; its catalog row left with the sync and the file stayed, since nothing manages `data/` for it. `update-gitfile` drops the row naming it. `txt/lib/lib_prot/README.md` no longer offers an `Internals` link. It pointed into `txt/gen`, which is not a directory this tree has, and the section is carried text that no `dev.mdsection` row regenerates or removes. Two rule files illustrate themselves with tables this tree has. `abt_md` resolves a `ssimfile:` span against the database it runs in, so an example naming a table absent here is a dangling reference rather than a link: the field rename in `txt/rule/acr_ed.md` renames `dev.Htmlentity.code`, and the short-name span in `txt/rule/openacr.md` names `dmmeta.ctype`. `ShortkeyQ` dereferences `only` under a null test rather than under a count. The pointer and the counter said the same thing, and only the pointer says it to a static analyzer -- `only` now holds the candidate while there is exactly one, and a second match clears it. --------- Co-authored-by: Alexei Lebedev <alexei@algox2.com>
1 parent 2c23284 commit fce279e

969 files changed

Lines changed: 62836 additions & 80918 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/main.yml

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,20 @@ jobs:
1010
name: Build & test on ${{ matrix.os }}.
1111
runs-on: ${{ matrix.os }}
1212
strategy:
13+
fail-fast: false
1314
matrix:
14-
os: [ubuntu-22.04]
15+
# macos-26 rather than macos-15: the Darwin arm64 build passes
16+
# -Wno-cast-function-type-mismatch and -Wno-nontrivial-memcall, which
17+
# clang learned in 19 and 20, and under -Werror an older clang rejects
18+
# the option itself. macos-15 defaults to Xcode 16.4, which is clang 17.
19+
os: [ubuntu-22.04, macos-26]
20+
continue-on-error: ${{ matrix.os == 'macos-26' }}
1521
if: "!contains(github.event.head_commit.message, 'ci skip')"
1622

1723
steps:
1824
- uses: actions/checkout@v3
1925
- name: Setup developers tools
26+
if: runner.os == 'Linux'
2027
run: |
2128
sudo apt-get update && sudo apt-get install -y \
2229
mariadb-client\
@@ -28,11 +35,54 @@ jobs:
2835
liblz4-dev \
2936
cppcheck \
3037
valgrind
38+
- name: Setup developers tools
39+
if: runner.os == 'macOS'
40+
run: |
41+
# mariadb for mysqld_safe, which acr_my starts itself; rsync because
42+
# the one Apple ships predates --ignore-missing-args, which wt needs
43+
# to copy a modified-file list that can name a deleted path.
44+
brew install openssl@3 mariadb-connector-c mariadb readline rsync cppcheck
45+
brew --prefix openssl@3 mariadb-connector-c mariadb readline
46+
command -v mysqld_safe rsync
3147
- name: Build and test
3248
run: |
3349
export PATH=bin:$PATH
3450
git config --global user.email root@localhost
3551
git config --global user.name runner
36-
bin/normalize
37-
bin/atf_ci -cijob:comp
52+
# Downloading a job's log needs admin rights on the repository, so a
53+
# red leg tells a contributor only that something failed. An
54+
# annotation needs no rights at all and rides on the check run itself,
55+
# so a failure repeats its own tail as one, where anyone reading the
56+
# pull request can see which citest died and what it printed.
57+
# The log goes outside the tree, since checkclean reads the tree.
58+
log="${RUNNER_TEMP:-/tmp}/citest.log"
59+
set -o pipefail
60+
rc=0
61+
{ bin/normalize && bin/atf_ci -cijob:comp; } 2>&1 | tee "$log" || rc=$?
62+
if [ $rc -ne 0 ]; then
63+
# An annotation's message is capped at 4096 characters and is cut
64+
# from the end, so the encoded text is trimmed from the front here
65+
# -- the last thing the run printed is the part worth keeping.
66+
# perl rather than sed: an escape sequence written \x1b is a GNU
67+
# extension, and the macOS leg runs the BSD one.
68+
annotate() {
69+
body=$(perl -pe 's/\e\[[0-9;]*m//g; s/%/%25/g; s/\r//g; s/\n/%0A/g' | tail -c 3800)
70+
echo "::error title=$1::$body"
71+
}
72+
# Two annotations rather than one: a citest that dies thousands of
73+
# lines before the end leaves nothing of itself in the tail. The
74+
# first failure is the one that matters, since a cijob stops at it,
75+
# so this half is taken from the top and carries the lines above each
76+
# hit -- what a test printed sits above the line reporting it. The
77+
# pattern matches how a failure is spelled rather than words like
78+
# fatal or assert, which a passing test's own comment can contain.
79+
grep -a -B6 -E 'success:N|\.error|\.failed|exception:|errno:|signal:|Segmentation fault' "$log" \
80+
| head -n 70 | annotate "${{ matrix.os }}: first lines naming a failure" || true
81+
tail -n 40 "$log" | annotate "${{ matrix.os }}: end of the run"
82+
fi
83+
exit $rc
84+
- name: Memory check
85+
if: runner.os == 'Linux'
86+
run: |
87+
export PATH=bin:$PATH
3888
bin/atf_ci -cijob:memcheck

README.md

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,3 @@ C++ from them.
1111
For OpenACR fundamentals — installation, ssim format, the standard
1212
toolchain, common recipes, and the C++ style guide — see
1313
[/txt/openacr/README.md](/txt/openacr/README.md).
14-
15-
### Table Of Contents
16-
<a href="#table-of-contents"></a>
17-
<!-- abt_md.toc_beg -->
18-
&#128193; [OpenACR](/txt/openacr/README.md)<br/>
19-
&#128193; [Tutorials](/txt/tut/README.md)<br/>
20-
&#128193; [Ssim Databases](/txt/ssimdb/README.md)<br/>
21-
&#128193; [Executables](/txt/exe/README.md)<br/>
22-
&#128193; [Libraries](/txt/lib/README.md)<br/>
23-
&#128193; [Protocols](/txt/protocol/README.md)<br/>
24-
&#128193; [Scripts](/txt/script/README.md)<br/>
25-
<!-- abt_md.toc_end -->

bin/bootstrap/Darwin-clang++.release-arm64

Lines changed: 71 additions & 70 deletions
Large diffs are not rendered by default.

bin/bootstrap/Darwin-clang++.release-x86_64

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ rm -f build/debug
1919
mkdir -p build/Darwin-clang++.debug-x86_64 # create target directory
2020
ln -s Darwin-clang++.debug-x86_64 build/debug # and a soft link to it
2121

22+
echo '# setting up soft link build/memcheck (default)'
23+
rm -f build/memcheck
24+
mkdir -p build/Darwin-clang++.memcheck-x86_64 # create target directory
25+
ln -s Darwin-clang++.memcheck-x86_64 build/memcheck # and a soft link to it
26+
2227
echo '# setting up soft link build/profile (default)'
2328
rm -f build/profile
2429
mkdir -p build/Darwin-clang++.profile-x86_64 # create target directory
@@ -76,6 +81,7 @@ clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-m
7681
clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-missing-exception-spec -iquote . -Wno-vla -fpch-preprocess -c cpp/lib/algo/lib.cpp -o build/release/cpp.lib.algo.lib.o -msse4.2 -D AOS_SSE42 -O -Werror -Wreinterpret-base-class
7782
clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-missing-exception-spec -iquote . -Wno-vla -fpch-preprocess -c cpp/lib/algo/line.cpp -o build/release/cpp.lib.algo.line.o -msse4.2 -D AOS_SSE42 -O -Werror -Wreinterpret-base-class
7883
clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-missing-exception-spec -iquote . -Wno-vla -fpch-preprocess -c cpp/lib/algo/lockfile.cpp -o build/release/cpp.lib.algo.lockfile.o -msse4.2 -D AOS_SSE42 -O -Werror -Wreinterpret-base-class
84+
clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-missing-exception-spec -iquote . -Wno-vla -fpch-preprocess -c cpp/lib/algo/macos.cpp -o build/release/cpp.lib.algo.macos.o -msse4.2 -D AOS_SSE42 -O -Werror -Wreinterpret-base-class
7985
clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-missing-exception-spec -iquote . -Wno-vla -fpch-preprocess -c cpp/lib/algo/mmap.cpp -o build/release/cpp.lib.algo.mmap.o -msse4.2 -D AOS_SSE42 -O -Werror -Wreinterpret-base-class
8086
clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-missing-exception-spec -iquote . -Wno-vla -fpch-preprocess -c cpp/lib/algo/prlog.cpp -o build/release/cpp.lib.algo.prlog.o -msse4.2 -D AOS_SSE42 -O -Werror -Wreinterpret-base-class
8187
clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-missing-exception-spec -iquote . -Wno-vla -fpch-preprocess -c cpp/lib/algo/proc.cpp -o build/release/cpp.lib.algo.proc.o -msse4.2 -D AOS_SSE42 -O -Werror -Wreinterpret-base-class
@@ -91,36 +97,31 @@ clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-m
9197
clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-missing-exception-spec -iquote . -Wno-vla -fpch-preprocess -c cpp/lib/algo/url.cpp -o build/release/cpp.lib.algo.url.o -msse4.2 -D AOS_SSE42 -O -Werror -Wreinterpret-base-class
9298
clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-missing-exception-spec -iquote . -Wno-vla -fpch-preprocess -c cpp/lib/algo/uuid.cpp -o build/release/cpp.lib.algo.uuid.o -msse4.2 -D AOS_SSE42 -O -Werror -Wreinterpret-base-class
9399
clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-missing-exception-spec -iquote . -Wno-vla -fpch-preprocess -c cpp/lib/algo/win32.cpp -o build/release/cpp.lib.algo.win32.o -msse4.2 -D AOS_SSE42 -O -Werror -Wreinterpret-base-class
94-
clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-missing-exception-spec -iquote . -Wno-vla -fpch-preprocess -c cpp/gen/lib_git_gen.cpp -o build/release/cpp.gen.lib_git_gen.o -msse4.2 -D AOS_SSE42 -O -Werror -Wreinterpret-base-class
95-
clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-missing-exception-spec -iquote . -Wno-vla -fpch-preprocess -c cpp/lib/lib_git.cpp -o build/release/cpp.lib.lib_git.o -msse4.2 -D AOS_SSE42 -O -Werror -Wreinterpret-base-class
96-
clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-missing-exception-spec -iquote . -Wno-vla -fpch-preprocess -c cpp/gen/lib_json_gen.cpp -o build/release/cpp.gen.lib_json_gen.o -msse4.2 -D AOS_SSE42 -O -Werror -Wreinterpret-base-class
97-
clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-missing-exception-spec -iquote . -Wno-vla -fpch-preprocess -c cpp/lib/lib_json.cpp -o build/release/cpp.lib.lib_json.o -msse4.2 -D AOS_SSE42 -O -Werror -Wreinterpret-base-class
98-
rm -f build/release/lib_json-x86_64.a.tmp
99-
ar cr build/release/lib_json-x86_64.a.tmp build/release/cpp.gen.lib_json_gen.o build/release/cpp.lib.lib_json.o && ranlib build/release/lib_json-x86_64.a.tmp
100-
mv -f build/release/lib_json-x86_64.a.tmp build/release/lib_json-x86_64.a
101100
rm -f build/release/algo_lib-x86_64.a.tmp
102-
ar cr build/release/algo_lib-x86_64.a.tmp build/release/cpp.gen._gen.o build/release/cpp.gen.algo_gen.o build/release/cpp.gen.algo_lib_gen.o build/release/cpp.gen.command_gen.o build/release/cpp.gen.dev_gen.o build/release/cpp.gen.dmmeta_gen.o build/release/cpp.gen.report_gen.o build/release/cpp.lib.algo.arg.o build/release/cpp.lib.algo.backtrace.o build/release/cpp.lib.algo.base64.o build/release/cpp.lib.algo.bin_decode.o build/release/cpp.lib.algo.bin_encode.o build/release/cpp.lib.algo.cpu_hz.o build/release/cpp.lib.algo.crc32.o build/release/cpp.lib.algo.decimal.o build/release/cpp.lib.algo.errtext.o build/release/cpp.lib.algo.file.o build/release/cpp.lib.algo.fmt.o build/release/cpp.lib.algo.iohook.o build/release/cpp.lib.algo.lib.o build/release/cpp.lib.algo.line.o build/release/cpp.lib.algo.lockfile.o build/release/cpp.lib.algo.mmap.o build/release/cpp.lib.algo.prlog.o build/release/cpp.lib.algo.proc.o build/release/cpp.lib.algo.regx.o build/release/cpp.lib.algo.replscope.o build/release/cpp.lib.algo.retry.o build/release/cpp.lib.algo.string.o build/release/cpp.lib.algo.time.o build/release/cpp.lib.algo.timehook.o build/release/cpp.lib.algo.tstamp.o build/release/cpp.lib.algo.txttbl.o build/release/cpp.lib.algo.u128.o build/release/cpp.lib.algo.url.o build/release/cpp.lib.algo.uuid.o build/release/cpp.lib.algo.win32.o && ranlib build/release/algo_lib-x86_64.a.tmp
101+
ar cr build/release/algo_lib-x86_64.a.tmp build/release/cpp.gen._gen.o build/release/cpp.gen.algo_gen.o build/release/cpp.gen.algo_lib_gen.o build/release/cpp.gen.command_gen.o build/release/cpp.gen.dev_gen.o build/release/cpp.gen.dmmeta_gen.o build/release/cpp.gen.report_gen.o build/release/cpp.lib.algo.arg.o build/release/cpp.lib.algo.backtrace.o build/release/cpp.lib.algo.base64.o build/release/cpp.lib.algo.bin_decode.o build/release/cpp.lib.algo.bin_encode.o build/release/cpp.lib.algo.cpu_hz.o build/release/cpp.lib.algo.crc32.o build/release/cpp.lib.algo.decimal.o build/release/cpp.lib.algo.errtext.o build/release/cpp.lib.algo.file.o build/release/cpp.lib.algo.fmt.o build/release/cpp.lib.algo.iohook.o build/release/cpp.lib.algo.lib.o build/release/cpp.lib.algo.line.o build/release/cpp.lib.algo.lockfile.o build/release/cpp.lib.algo.macos.o build/release/cpp.lib.algo.mmap.o build/release/cpp.lib.algo.prlog.o build/release/cpp.lib.algo.proc.o build/release/cpp.lib.algo.regx.o build/release/cpp.lib.algo.replscope.o build/release/cpp.lib.algo.retry.o build/release/cpp.lib.algo.string.o build/release/cpp.lib.algo.time.o build/release/cpp.lib.algo.timehook.o build/release/cpp.lib.algo.tstamp.o build/release/cpp.lib.algo.txttbl.o build/release/cpp.lib.algo.u128.o build/release/cpp.lib.algo.url.o build/release/cpp.lib.algo.uuid.o build/release/cpp.lib.algo.win32.o && ranlib build/release/algo_lib-x86_64.a.tmp
103102
mv -f build/release/algo_lib-x86_64.a.tmp build/release/algo_lib-x86_64.a
104103
rm -f build/release/abt.tmp
105-
clang++ build/release/cpp.abt.build.o build/release/cpp.abt.disas.o build/release/cpp.abt.gitinfo.o build/release/cpp.abt.main.o build/release/cpp.abt.ood.o build/release/cpp.abt.opt.o build/release/cpp.abt.scan.o build/release/cpp.gen.abt_gen.o -o build/release/abt.tmp build/release/algo_lib-x86_64.a build/release/lib_json-x86_64.a build/release/lib_json-x86_64.a build/release/algo_lib-x86_64.a build/release/algo_lib-x86_64.a
104+
clang++ build/release/cpp.abt.build.o build/release/cpp.abt.disas.o build/release/cpp.abt.gitinfo.o build/release/cpp.abt.main.o build/release/cpp.abt.ood.o build/release/cpp.abt.opt.o build/release/cpp.abt.scan.o build/release/cpp.gen.abt_gen.o -o build/release/abt.tmp build/release/algo_lib-x86_64.a build/release/algo_lib-x86_64.a build/release/algo_lib-x86_64.a
106105
mv -f build/release/abt.tmp build/release/abt
107106
ln -sf ../build/release/abt bin/abt
108107

109108
rm -f build/release/gcache.tmp
110-
clang++ build/release/cpp.gcache.gcache.o build/release/cpp.gen.gcache_gen.o -o build/release/gcache.tmp build/release/algo_lib-x86_64.a build/release/lib_json-x86_64.a build/release/lib_json-x86_64.a build/release/algo_lib-x86_64.a -lcrypto build/release/algo_lib-x86_64.a
109+
clang++ build/release/cpp.gcache.gcache.o build/release/cpp.gen.gcache_gen.o -o build/release/gcache.tmp build/release/algo_lib-x86_64.a build/release/algo_lib-x86_64.a -lcrypto build/release/algo_lib-x86_64.a
111110
mv -f build/release/gcache.tmp build/release/gcache
112111
ln -sf ../build/release/gcache bin/gcache
113112

114113
rm -f build/release/src_func.tmp
115-
clang++ build/release/cpp.gen.src_func_gen.o build/release/cpp.src_func.edit.o build/release/cpp.src_func.fileloc.o build/release/cpp.src_func.header.o build/release/cpp.src_func.iffy.o build/release/cpp.src_func.list.o build/release/cpp.src_func.main.o build/release/cpp.src_func.nextfile.o build/release/cpp.src_func.scan.o -o build/release/src_func.tmp build/release/algo_lib-x86_64.a build/release/lib_json-x86_64.a build/release/lib_json-x86_64.a build/release/algo_lib-x86_64.a build/release/algo_lib-x86_64.a
114+
clang++ build/release/cpp.gen.src_func_gen.o build/release/cpp.src_func.edit.o build/release/cpp.src_func.fileloc.o build/release/cpp.src_func.header.o build/release/cpp.src_func.iffy.o build/release/cpp.src_func.list.o build/release/cpp.src_func.main.o build/release/cpp.src_func.nextfile.o build/release/cpp.src_func.scan.o -o build/release/src_func.tmp build/release/algo_lib-x86_64.a build/release/algo_lib-x86_64.a build/release/algo_lib-x86_64.a
116115
mv -f build/release/src_func.tmp build/release/src_func
117116
ln -sf ../build/release/src_func bin/src_func
118117

118+
clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-missing-exception-spec -iquote . -Wno-vla -fpch-preprocess -c cpp/gen/lib_git_gen.cpp -o build/release/cpp.gen.lib_git_gen.o -msse4.2 -D AOS_SSE42 -O -Werror -Wreinterpret-base-class
119+
clang++ -x c++ -Wno-invalid-offsetof -ffunction-sections -Wsequence-point -Wno-multichar -Wshadow -pipe -Wextra -Winit-self -Wmissing-include-dirs -Wmissing-declarations -Wno-enum-compare -Wno-array-bounds -Wno-missing-exception-spec -iquote . -Wno-vla -fpch-preprocess -c cpp/lib/lib_git.cpp -o build/release/cpp.lib.lib_git.o -msse4.2 -D AOS_SSE42 -O -Werror -Wreinterpret-base-class
119120
rm -f build/release/lib_git-x86_64.a.tmp
120121
ar cr build/release/lib_git-x86_64.a.tmp build/release/cpp.gen.lib_git_gen.o build/release/cpp.lib.lib_git.o && ranlib build/release/lib_git-x86_64.a.tmp
121122
mv -f build/release/lib_git-x86_64.a.tmp build/release/lib_git-x86_64.a
122123
rm -f build/release/src_hdr.tmp
123-
clang++ build/release/cpp.gen.src_hdr_gen.o build/release/cpp.src_hdr.hdr.o -o build/release/src_hdr.tmp build/release/algo_lib-x86_64.a build/release/lib_json-x86_64.a build/release/lib_json-x86_64.a build/release/algo_lib-x86_64.a build/release/lib_git-x86_64.a build/release/algo_lib-x86_64.a build/release/algo_lib-x86_64.a build/release/lib_git-x86_64.a build/release/algo_lib-x86_64.a
124+
clang++ build/release/cpp.gen.src_hdr_gen.o build/release/cpp.src_hdr.hdr.o -o build/release/src_hdr.tmp build/release/algo_lib-x86_64.a build/release/algo_lib-x86_64.a build/release/lib_git-x86_64.a build/release/algo_lib-x86_64.a build/release/algo_lib-x86_64.a build/release/lib_git-x86_64.a build/release/algo_lib-x86_64.a
124125
mv -f build/release/src_hdr.tmp build/release/src_hdr
125126
ln -sf ../build/release/src_hdr bin/src_hdr
126127

0 commit comments

Comments
 (0)