Giter Site home page Giter Site logo

ebay / tsv-utils Goto Github PK

View Code? Open in Web Editor NEW
1.4K 39.0 80.0 2.83 MB

eBay's TSV Utilities: Command line tools for large, tabular data files. Filtering, statistics, sampling, joins and more.

Home Page: https://ebay.github.io/tsv-utils/

License: Boost Software License 1.0

D 79.74% Makefile 2.22% Shell 18.04%
csv command-line dlang data-science tabular-data cli delimited-files sampling tsv statistics

tsv-utils's Issues

tsv-select: Inverse selection

I'm on fire! :D Just thought of this while I was writing #71: a way to drop columns instead of select them would probably be even clearer in many cases. Consider:
tsv-select -f 1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,$(seq -s, 19 49) rawdata.tsv
vs.
tsv-select --inverse -f 9,18 rawdata.tsv
...or better:
tsv-select --inverse 9,18 rawdata.tsv
...because you may want to rearrange what's left:
tsv-select -v 9,18 -f 1,43,38 -r last (short option -v, like grep)
In the above example 9 and 18 are still not part of the output despite the -r last, and numbering doesn't shift for other addressing (i.e. 43 wasn't 45 before columns were removed).

Of course, it'd pair well with ranges, too, so they're not mutually exclusive:
tsv-select -v 2-9

Trying to include and exclude a field at the same time... should probably just be an error, though that could be annoying at times.

I'm not sold on the name/shortening, either. It'd make more sense for my initial thought (tsv-select -inverse -f 9,18), than the form I'd consider more usable.

keep-header missing dub.json

When I run dub in tsv-utils to build, I get this:

Stevens-MacBook-Pro:tsv-utils-dlang steves$ dub
Unknown dependency: tsv-utils-dlang:keep-header
Stevens-MacBook-Pro:tsv-utils-dlang steves$ 

Looks like the dub.json file is missing in the keep-header directory. I can mock up one based on another dub.json, but the real description/etc I'd prefer you to make.

Good utility to test ring buffer?

I have added a new type of buffer to iopipe that allows me to avoid copying at all (even when the buffer needs to be reused). It works by using some mmap magic that @DmitryOlshansky clued me into at dconf.

However, I have discovered after getting it to work, that it's performance is pretty much equivalent to the original buffer type. The reason is that my "big test case" is byline, and byline copies very little data to begin with (and not very often). I wondered if you have any utilities that would benefit from such a buffer? Basically I'm looking for an example case that keeps a lot of data in the buffer at a time.

If you don't have any, I'm going to implement an example of keeping N lines in buffer at once (think of a grep-style iopipe that can be used to print N lines of context around the match). I think this should show some significant difference, but I wondered if you had examples that would be relevant in this library?

Column-wise 1:1 append

Haha, while writing #68, I realised a couple other ones. This time, I realised there's no easy way to simply append a column to a TSV, as far as I can tell. Maybe something like this:

$ cat sample.tsv
foo	1	2
foo	3	22
foo	5	222
$ tsv-join --append sample.tsv sample.tsv
foo	1	2	foo	1	2
foo	3	22	foo	3	22
foo	5	222	foo	5	222

No filter file, just a line-by-line append. This would be useful for the cases where I want to calculate some sort of derived column and append it to the original file at the end of my pipeline or a periodic addition of new aggregated data in a time-series.

Statically linked binaries for Linux

It would be nice if the pre-compiled binaries for Linux were statically linked. This would allow them to work on a more variety of Linux distributions and versions. Since it looks like there are no external dependencies it should be pretty simple when compiling with LDC to just add the -static flag.

reproducible benchmarks?

I'd like to try and reproduce some of your benchmarks. Is possible to acquire the data used in each of the benchmarks? Thanks.

Package tsv-utils for conda(-forge)?

I love tsv-utils, it's so good. I'm using it extensively to analyze SARS-CoV-2 metadata (5.5m line TSVs with around 40 columns giving 5GB files).

I'm telling everyone about it and people love it when they try it.

One thing that's in the way of wider adoption is the lack of packaging. In the bioinformatics community, conda is the de facto standard. It'd be amazing if tsv-utils was available through conda-forge or bioconda. I'm happy to help maintain, but I've never packaged something for bioconda myself.

Print tool name with error message

Hey there, been a while! Just noticed that something I thought should work doesn't. But at what point in the pipeline did things go wrong? So I had to remove things one at a time until the bug unfurled. I'd like it if error messages printed their name before the error. e.g.
[csv2tsv] Error: Not enough fields in line. File: Standard Input, Line: 3

Improve tsv-pretty lookahead logic [tsv-pretty mistake in column formatting.]

I'm using tsv-utils from the arch linux aur, trying to format some word frequency data from the new general services list dataset. tsv-utils makes at least two errors that I'm able to see when I'm running this commandline:

tsv-select -f 1,7 NGSL+1.01+with+SFI.tsv | tsv-pretty | less

adding -s 5 to tsv-pretty works around this problem. The tsv file was converted from the file NGSL+1.01+with+SFI.xlsx available from this site: http://www.newgeneralservicelist.org/

I'll attach
NGSL+1.01+with+SFI.xlsx
the original xlsx file because github won't let me post the tsv file.

Compute quantiles of columns

Hi,

Just wondering if it's possible to implement a function for computing any given quantile of a column with tsv-summarize. I use datamash a lot and computing any given quantile is feature I'm missing there as well (it can compute the standard quartiles, however). If the functionality is already in tsv-summarize, sorry for not finding out about it in my cursory glance through the documentation.

Significant digits/rounding

Numbers like 9830.76111111 and 18421.40625 are rather unfriendly for humans. It'd be nice to be able to specify significant digits for mean/median/mad/et al.

Select columns by name

Another day, another feature request. ;)

I was doing some ad hoc data mangling late yesterday and kept thinking it would be very useful to be able to refer to columns by name. Part of it was the constant checking of which data had which column number. Especially once I started using multiple tools in pipelines, it would have saved time to be able to just call things by name. A simple example:
tsv-join -k 1,2 -f transaction-rate.tsv -a 3 average-crossover-times.tsv | tsv-select -f 1,2,7 --rest last
I'd find it more readable (and thus better for use in larger scripts) to be able to do something like this:
tsv-join -k cores,threads -f transaction-rate.tsv -a 't/m' average-crossover-times.tsv | tsv-select -f cores,threads,'t/m' --rest last

tsv-append: limit number of rows per file? [feature request]

tsv-append is useful for combining several tsv files each with a header line.

However, very often one does this and also wants to combine only the top ki lines of the ith file (e.g. after all those files have been sorted by some criterion).

This can of course be in several steps but since tsv-append already exists, adding a way to do this with this command would make it easy to do this in one easy to understand step.

One way to implement this perhaps would be to make source tracking with -f optional and allow to enable "top-n" processing:

  • enable top-n processing using -T/--topn
  • if -t is specified, specify each file as -f STR=FILE:N
  • if -t is not specified, specify each file as -f FILE:N
  • alternately, specify files without -f as FILE:N

So whenever -T/--topn is specified, if a file ends in ":[0-9]+" then this suffix is used to specify the number of top data rows to include (maximally, if the file is shorter, include everything there is).

Multi-file Join

Hey there, been a while. :)

I just tired to use tsv-join on a bunch of files and was very surprised when it applied the filter file to each of them in turn. Is there an approach that lets me nicely pull them all together that I've missed?

Why?: One of the really nice things about tsv-join is, since you're working with a key, ordering doesn't matter and holes in the data can be mitigated. But it's clumsy to have to repeatedly join a whole pile of intermediate things to get an end result.

To clarify: with the following data files...

left

label   v1
foo     1
bar     11
baz     111

centre

label   v2
foo     2
bar     22
baz     222

right

label   v3
foo     3
bar     33
baz     333

...I'd like to see something like this:

$ tsv-join -f left -k 1 left centre right
label   v1      v2      v3
foo     1       2       3
bar     11      22      33
baz     111     222     333

Instead, that just prints each file in turn. (N.B. I reused the filter file as a data file because I want to preserve the column ordering.)

Trying this instead...

$ tsv-join -f right -k 1 -a 2 left centre
label   v1      v3
foo     1       3
bar     11      33
baz     111     333
label   v2      v3
foo     2       3
bar     22      33
baz     222     333

...closer. Sort of. (I guess?)

This is the best I've got right now and I think it should be reliable but I haven't tested it on something substantial:

$ tsv-select -f1 left > labels
$ for I in left centre right; do tsv-join -f left -k1 $I | tsv-select -f2 > intermediate-$I; done
$ paste labels intermediate-{left,centre,right}
label   v1      v2      v3
foo     1       2       3
bar     11      22      33
baz     111     222     333

Build tsv-filter failure

$ dub run tsv-utils-dlang
Building package tsv-utils-dlang in /home/mab/.dub/packages/tsv-utils-dlang-1.0.7/tsv-utils-dlang/
Performing "debug" build using dmd for x86_64.
tsv-utils-dlang:csv2tsv 1.0.7: building configuration "unittest"...
tsv-utils-dlang 1.0.7: building configuration "executable"...
Linking...
Running .dub/packages/tsv-utils-dlang-1.0.7/tsv-utils-dlang/dub_build 

=== Building tsv-utils-dlang executables ===

Building csv2tsv

dub build tsv-utils-dlang:csv2tsv --force -b release
Building package tsv-utils-dlang:csv2tsv in /home/mab/.dub/packages/tsv-utils-dlang-1.0.7/tsv-utils-dlang/csv2tsv/
Performing "release" build using dmd for x86_64.
tsv-utils-dlang:csv2tsv 1.0.7: building configuration "executable"...
Linking...

Building number-lines

dub build tsv-utils-dlang:number-lines --force -b release
Building package tsv-utils-dlang:number-lines in /home/mab/.dub/packages/tsv-utils-dlang-1.0.7/tsv-utils-dlang/number-lines/
Performing "release" build using dmd for x86_64.
tsv-utils-dlang:number-lines 1.0.7: building configuration "executable"...
Linking...

Building tsv-filter

dub build tsv-utils-dlang:tsv-filter --force -b release
Building package tsv-utils-dlang:tsv-filter in /home/mab/.dub/packages/tsv-utils-dlang-1.0.7/tsv-utils-dlang/tsv-filter/
Performing "release" build using dmd for x86_64.
tsv-utils-dlang:tsv-filter 1.0.7: building configuration "executable"...
.dub/packages/tsv-utils-dlang-1.0.7/tsv-utils-dlang/tsv-filter/src/tsv-filter.d(532,16): Error: module getopt_inorder is in file 'getopt_inorder.d' which cannot be read
import path[0] = .dub/packages/tsv-utils-dlang-1.0.7/tsv-utils-dlang/tsv-filter/src/
import path[1] = /usr/include/dlang/dmd
dmd failed with exit code 1.


===> Build failure.

Program exited with code 2

AUR package with LTO & PGO enabled

@wilzbach Hi Seb,

It's great to have tsv-utils available via a package manager distribution, but it's been a while since it's been updated. Could you update it when you get a chance?

There's another reason for doing it now. With the 1.3.1 tsv-utils release it should be possible to build the AUR package using LTO & PGO using LDC as shipped. There is no longer a need to use the ldc-build-runtime tool, that's as of LDC 1.9.0 and later. This was the issue when you put together the first version of the AUR package (#98).

tsv-utils 1.3.1 now supports building with the LTO compiled druntime/phobos libs. That enables PGO also. To build this way:

make DCOMPILER=ldc2 LDC_LTO_RUNTIME=1 LDC_PGO=2

I've tested this on a couple of ubuntu versions, but not on ArchLinux. The test suite is pretty easy to run. After the above build line run:

make test-nobuild DCOMPILER=ldc2

It'd be great if you got a chance to do this. I don't know if there are other package manager distributions shipping with LDC's LTO enabled, but it'd be nice to get have some examples to point to. Homebrew is another example where this form of LTO build would be more consistent with their build policies, as there is no file download when building.

Field ranges

I think it'd be a boon to usability if we could specify ranges of fields similarly to the shell tool cut. Especially for something like this:

tsv-select -f 1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,$(seq -s, 19 49)

It would be more familiar and more readable to be able to render it like so:

tsv-select -f 1-10,12-17,19-

This becomes especially nice when you have a lot of columns.

And there's the hat trick. ;)

why dub_build start automatically ?(curious)

Your tsv tools are handy, but I have a more curious question: after cloning, I run dub only and everything compiled. What mechanism allows dub_build binary to execute by itself? At first I thought it has something to do with postGenerateCommands, but could not find any trace of that in the repo. So please teach me :)

Bulding tsv-utils with LTO and PGO on Archlinux

Hi,

As per our conversation, building tsv-utils with LTO and PGO on Archlinux fails. Below is the output for trying to compile current master with just LTO.

$ make DCOMPILER=ldc2 LDC_LTO_RUNTIME=1

make -C common 
make[1]: Entering directory '/tmp/tsv-utils/common'
make[1]: 'release' is up to date.
make[1]: Leaving directory '/tmp/tsv-utils/common'

make -C csv2tsv 
make[1]: Entering directory '/tmp/tsv-utils/csv2tsv'
ldc2 -release -O3 -boundscheck=off -singleobj -flto=thin -odobj  -defaultlib=phobos2-ldc-lto,druntime-ldc-lto  -of/tmp/tsv-utils/bin/csv2tsv -I/tmp/tsv-utils/common/src/tsv_utils/common /tmp/tsv-utils/csv2tsv/src/tsv_utils/csv2tsv.d /tmp/tsv-utils/common/src/tsv_utils/common/utils.d /tmp/tsv-utils/common/src/tsv_utils/common/numerics.d /tmp/tsv-utils/common/src/tsv_utils/common/fieldlist.d /tmp/tsv-utils/common/src/tsv_utils/common/getopt_inorder.d /tmp/tsv-utils/common/src/tsv_utils/common/unittest_utils.d /tmp/tsv-utils/common/src/tsv_utils/common/tsvutils_version.d
/usr/bin/ld.gold: error: cannot find -lphobos2-ldc-lto-shared
/usr/bin/ld.gold: error: cannot find -ldruntime-ldc-lto-shared
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function ldc.register_dso: error: undefined reference to '_d_dso_registry'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std6getopt12endOfOptionsAya'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std6getopt12endOfOptionsAya'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std6getopt13configuration20stopOnFirstNonOptionMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std6getopt10optionCharw'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std6getopt13configuration8bundlingMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std6getopt10optionCharw'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std6getopt8optMatchFNfAyaMQeKQhSQBhQBg13configurationZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_d_arraycatT'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std5ascii7isUpperFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std5ascii7isUpperFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std5range10primitives__T5emptyTAyaZQlFNaNbNdNiNfMKQtZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_aApplycd2'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_d_arraycatnTX'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std4conv10parseErrorFNaNfLAyaQdmZCQBjQBi13ConvException'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_d_throw_exception'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_d_eh_enter_catch'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_d_throw_exception'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std5range10primitives__T5emptyTAyaZQlFNaNbNdNiNfMKQtZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_d_throw_exception'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFAyaQjKAQhKSQBuQBt13configurationbZ14__foreachbody6MFNfKmKwZi: error: undefined reference to '_D3std5ascii7isAlphaFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFAyaQjKAQhKSQBuQBt13configurationbZ14__foreachbody6MFNfKmKwZi: error: undefined reference to '_D3std6getopt10optionCharw'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFAyaQjKAQhKSQBuQBt13configurationbZ14__foreachbody6MFNfKmKwZi: error: undefined reference to '_d_arrayappendcTX'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPbZQsFAyaQjKAQhKSQBuQBt13configurationbZ14__foreachbody6MFNfKmKwZi: error: undefined reference to '_d_arrayappendcTX'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std6getopt12endOfOptionsAya'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std6getopt12endOfOptionsAya'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std6getopt13configuration20stopOnFirstNonOptionMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std6getopt10optionCharw'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std6getopt13configuration8bundlingMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std6getopt8optMatchFNfAyaMQeKQhSQBhQBg13configurationZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_d_arraycatT'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_d_arraycatT'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std5range10primitives__T5emptyTAyaZQlFNaNbNdNiNfMKQtZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_D3std5range10primitives__T5emptyTAyaZQlFNaNbNdNiNfMKQtZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_aApplycd2'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_d_arraycatnTX'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_d_throw_exception'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFNfAyaQlKAQhKSQBwQBv13configurationbZb: error: undefined reference to '_d_eh_enter_catch'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFAyaQjKAQhKSQBuQBt13configurationbZ14__foreachbody6MFNfKmKwZi: error: undefined reference to '_D3std5ascii7isAlphaFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFAyaQjKAQhKSQBuQBt13configurationbZ14__foreachbody6MFNfKmKwZi: error: undefined reference to '_d_arrayappendcTX'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFAyaQjKAQhKSQBuQBt13configurationbZ14__foreachbody6MFNfKmKwZi: error: undefined reference to '_d_arrayappendcTX'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFAyaQjKAQhKSQBuQBt13configurationbZ12__dgliteral7MFNaNbNfZAxa: error: undefined reference to '_D12TypeInfo_Axa6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPaZQsFAyaQjKAQhKSQBuQBt13configurationbZ12__dgliteral7MFNaNbNfZAxa: error: undefined reference to '_d_arraycatnTX'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPAyaZQuFNfQjQmKAQpKSQBxQBw13configurationbZb: error: undefined reference to '_D3std6getopt13configuration20stopOnFirstNonOptionMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPAyaZQuFNfQjQmKAQpKSQBxQBw13configurationbZb: error: undefined reference to '_D3std6getopt13configuration8bundlingMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPAyaZQuFNfQjQmKAQpKSQBxQBw13configurationbZb: error: undefined reference to '_D3std6getopt8optMatchFNfAyaMQeKQhSQBhQBg13configurationZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPAyaZQuFNfQjQmKAQpKSQBxQBw13configurationbZb: error: undefined reference to '_d_arraycatT'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPAyaZQuFNfQjQmKAQpKSQBxQBw13configurationbZb: error: undefined reference to '_D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPAyaZQuFNfQjQmKAQpKSQBxQBw13configurationbZb: error: undefined reference to '_aApplycd2'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPAyaZQuFNfQjQmKAQpKSQBxQBw13configurationbZb: error: undefined reference to '_d_arraycatnTX'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPAyaZQuFQhQkKAQnKSQBvQBu13configurationbZ14__foreachbody6MFNfKmKwZi: error: undefined reference to '_D3std5ascii7isAlphaFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6getopt__T12handleOptionTPAyaZQuFQhQkKAQnKSQBvQBu13configurationbZ12__dgliteral7MFNaNbNfZAxa: error: undefined reference to '_D12TypeInfo_Axa6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std4conv__T4textTAyaTxaZQnFNaNbNfQqxaZQv: error: undefined reference to '_D3std5array__T8appenderTAyaZQoFNaNbNfZSQBmQBl__T8AppenderTQBiZQo'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG4awZm: error: undefined reference to '_D3std3utf12UTFException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG4awZm: error: undefined reference to '_d_allocclass'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG4awZm: error: undefined reference to '_D3std3utf12UTFException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG4awZm: error: undefined reference to '_D3std3utf12UTFException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG4awZm: error: undefined reference to '_D3std3utf12UTFException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG4awZm: error: undefined reference to '_d_allocclass'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG4awZm: error: undefined reference to '_D3std3utf12UTFException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG4awZm: error: undefined reference to '_D3std3utf12UTFException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG4awZm: error: undefined reference to '_D3std3utf12UTFException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCnQCmQCl'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D9tsv_utils6common5utils11InputSource11__fieldDtorMFNeZv: error: undefined reference to '_D3std5stdio4File6__dtorMFNfZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5array__T8AppenderTAyaZQo13ensureAddableMFNaNbNfmZv: error: undefined reference to '_d_newitemT'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5array__T8AppenderTAyaZQo13ensureAddableMFNaNbNfmZv: error: undefined reference to '_D4core6memory2GC6extendFNaNbPvmmxC8TypeInfoZm'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5array__T8AppenderTAyaZQo13ensureAddableMFNaNbNfmZv: error: undefined reference to '_D4core6memory2GC6qallocFNaNbmkxC8TypeInfoZSQBqQBo8BlkInfo_'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File17LockingTextWriter__T3putTAyaZQjMFNfMQlZv: error: undefined reference to '_D3std5stdio4File17LockingTextWriter26highSurrogateShouldBeEmptyMFNfZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File17LockingTextWriter__T3putTAyaZQjMFNfMQlZv: error: undefined reference to '_D3std5stdio4File17LockingTextWriter7handle_MFNdNeZPS4core4stdcQCf8_IO_FILE'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File17LockingTextWriter__T3putTAyaZQjMFNfMQlZv: error: undefined reference to '_D3std9exception14ErrnoException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File17LockingTextWriter__T3putTAyaZQjMFNfMQlZv: error: undefined reference to '_d_allocclass'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File17LockingTextWriter__T3putTAyaZQjMFNfMQlZv: error: undefined reference to '_D3std9exception14ErrnoException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File17LockingTextWriter__T3putTAyaZQjMFNfMQlZv: error: undefined reference to '_D3std9exception14ErrnoException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File17LockingTextWriter__T3putTAyaZQjMFNfMQlZv: error: undefined reference to '_D3std9exception14ErrnoException6__ctorMFNfAyaQdmZCQBxQBwQBp'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std5stdio4File17lockingTextWriterMFNfZSQBoQBnQBk17LockingTextWriter'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6__ctorMFNaNbNcNiNfIAaZSQCdQCc__TQByTaZQCe'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std6format__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTQBmZQCbFNaNfkQBzQCcZi'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6flDashMFNaNbNdNiNfbZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std6format__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTQBuZQCjFNaNfkQChQCkZi'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std6format__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTQBmZQCbFNaNfkQBzQCcZi'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6flDashMFNaNbNdNiNfbZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std6format__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTQBuZQCjFNaNfkQChQCkZi'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std6format__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTQCcZQCrFNaNfkQCpQCsZi'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std6format__T6getNthVAyaa19_736570617261746f7220636861726163746572SQCq6traits10isSomeCharTwTQCtTQCxZQDjFNaNfkQDkQDnZw'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std9exception__T7enforceHTCQBc6format15FormatExceptionZ__TQBqTbZQBwFNaNfbLAxaAyamZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std9exception__T7enforceHTCQBc6format15FormatExceptionZ__TQBqTbZQBwFNaNfbLAxaAyamZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std5stdio4File17LockingTextWriter26highSurrogateShouldBeEmptyMFNfZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std5stdio4File17LockingTextWriter7handle_MFNdNeZPS4core4stdcQCf8_IO_FILE'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std5stdio4File17LockingTextWriter10__aggrDtorMFNeZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std6format15FormatException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_d_allocclass'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std6format15FormatException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std6format15FormatException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std4conv__T4textTAyaThTaTaTQkTmZQvFNaNbNfQyhaaQBdmZQBi'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std6format15FormatException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCsQCo'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8writeflnTaTAyaTQeZQtMFNfIAaQqQsZv: error: undefined reference to '_D3std5stdio4File17LockingTextWriter10__aggrDtorMFNeZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File17LockingTextWriter__T3putTAxaZQjMFNfMQlZv: error: undefined reference to '_D3std5stdio4File17LockingTextWriter26highSurrogateShouldBeEmptyMFNfZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File17LockingTextWriter__T3putTAxaZQjMFNfMQlZv: error: undefined reference to '_D3std5stdio4File17LockingTextWriter7handle_MFNdNeZPS4core4stdcQCf8_IO_FILE'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File17LockingTextWriter__T3putTAxaZQjMFNfMQlZv: error: undefined reference to '_D3std9exception14ErrnoException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File17LockingTextWriter__T3putTAxaZQjMFNfMQlZv: error: undefined reference to '_D3std9exception14ErrnoException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File17LockingTextWriter__T3putTAxaZQjMFNfMQlZv: error: undefined reference to '_D3std9exception14ErrnoException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File17LockingTextWriter__T3putTAxaZQjMFNfMQlZv: error: undefined reference to '_D3std9exception14ErrnoException6__ctorMFNfAyaQdmZCQBxQBwQBp'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File17LockingTextWriter__T3putTxwZQiMFNfxwZv: error: undefined reference to '_D3std5stdio4File17LockingTextWriter26highSurrogateShouldBeEmptyMFNfZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File17LockingTextWriter__T3putTxwZQiMFNfxwZv: error: undefined reference to '_D3std5stdio4File17LockingTextWriter7handle_MFNdNeZPS4core4stdcQCf8_IO_FILE'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8rawWriteTaZQmMFNfIAaZv: error: undefined reference to '_D3std5array__T8appenderTAyaZQoFNaNbNfZSQBmQBl__T8AppenderTQBiZQo'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8rawWriteTaZQmMFNfIAaZv: error: undefined reference to '_D11TypeInfo_Aa6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8rawWriteTaZQmMFNfIAaZv: error: undefined reference to '_d_newarrayU'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8rawWriteTaZQmMFNfIAaZv: error: undefined reference to '_D11TypeInfo_Aa6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8rawWriteTaZQmMFNfIAaZv: error: undefined reference to '_d_newarrayU'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8rawWriteTaZQmMFNfIAaZv: error: undefined reference to '_D3std9exception14ErrnoException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8rawWriteTaZQmMFNfIAaZv: error: undefined reference to '_D3std9exception14ErrnoException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8rawWriteTaZQmMFNfIAaZv: error: undefined reference to '_D3std9exception14ErrnoException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8rawWriteTaZQmMFNfIAaZv: error: undefined reference to '_D12TypeInfo_Axa6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8rawWriteTaZQmMFNfIAaZv: error: undefined reference to '_d_newarrayU'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5stdio4File__T8rawWriteTaZQmMFNfIAaZv: error: undefined reference to '_D3std9exception14ErrnoException6__ctorMFNfAyaQdmZCQBxQBwQBp'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5array__T8AppenderTAaZQn13ensureAddableMFNaNbNfmZv: error: undefined reference to '_d_newitemT'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5array__T8AppenderTAaZQn13ensureAddableMFNaNbNfmZv: error: undefined reference to '_D4core6memory2GC6extendFNaNbPvmmxC8TypeInfoZm'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std5array__T8AppenderTAaZQn13ensureAddableMFNaNbNfmZv: error: undefined reference to '_D4core6memory2GC6qallocFNaNbmkxC8TypeInfoZSQBqQBo8BlkInfo_'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std4path14isDirSeparatorFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std4path14isDirSeparatorFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std4path14isDirSeparatorFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std4path14isDirSeparatorFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt11splitAndGetFNaNbNeAyaZSQBkQBj6Option'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt13configuration8requiredMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_aaGetY'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_aaGetY'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt13configuration8requiredMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt15GetOptException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt15GetOptException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt15GetOptException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D12TypeInfo_Aya6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt15GetOptException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDbQCx'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt13configuration8requiredMFNaNbNdNiNfbZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt9setConfigFNaNbNiNfKSQBgQBf13configurationEQCcQCb6configZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt11splitAndGetFNaNbNeAyaZSQBkQBj6Option'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt13configuration8requiredMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_aaGetY'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_aaGetY'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt13configuration8requiredMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt15GetOptException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt15GetOptException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt15GetOptException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D12TypeInfo_Aya6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt15GetOptException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDbQCx'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt13configuration8requiredMFNaNbNdNiNfbZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt9setConfigFNaNbNiNfKSQBgQBf13configurationEQCcQCb6configZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt11splitAndGetFNaNbNeAyaZSQBkQBj6Option'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt15GetOptException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt15GetOptException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt15GetOptException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D12TypeInfo_Aya6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt15GetOptException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDbQCx'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt13configuration8requiredMFNaNbNdNiNfbZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt11splitAndGetFNaNbNeAyaZSQBkQBj6Option'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt15GetOptException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt15GetOptException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt15GetOptException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D12TypeInfo_Aya6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt15GetOptException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDbQCx'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt13configuration8requiredMFNaNbNdNiNfbZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt9setConfigFNaNbNiNfKSQBgQBf13configurationEQCcQCb6configZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt9setConfigFNaNbNiNfKSQBgQBf13configurationEQCcQCb6configZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt13configuration11passThroughMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt13configuration20stopOnFirstNonOptionMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt20defaultGetoptPrinterFAyaASQBnQBm6OptionZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt20defaultGetoptPrinterFAyaASQBnQBm6OptionZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio13trustedStdoutFNdNeZSQBgQBf4File'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File17lockingTextWriterMFNfZSQBoQBnQBk17LockingTextWriter'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File6__dtorMFNfZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std6getopt13configuration16keepEndOfOptionsMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File17LockingTextWriter10__aggrDtorMFNeZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e7374646f7574ZQDgFNbNcNdNiZSQEhQEg4File'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File10__postblitMFNbNfZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File10__postblitMFNbNfZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File6__dtorMFNfZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNbNcNdNiZSQEfQEe4File'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File10__postblitMFNbNfZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File6__ctorMFNcNfAyaMAxaZSQBlQBkQBh'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File10__postblitMFNbNfZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File7byChunkMFAhZSQBdQBcQz11ByChunkImpl'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File6__dtorMFNfZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File11ByChunkImpl15__fieldPostblitMFNbNeZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File11ByChunkImpl11__fieldDtorMFNeZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File11ByChunkImpl5emptyMxFNbNdZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File11ByChunkImpl5frontMFNbNdZAh'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File11ByChunkImpl8popFrontMFZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File11ByChunkImpl5emptyMxFNbNdZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File11ByChunkImpl11__fieldDtorMFNeZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D9Exception7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D9Exception6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D9Exception6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5array__T8appenderTAyaZQoFNaNbNfZSQBmQBl__T8AppenderTQBiZQo'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std9exception__T7enforceHTCQBc6format15FormatExceptionZ__TQBqTbZQBwFNaNfbLAxaAyamZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D6object9Exception6__ctorMFNaNbNiNfAyaQdmCQBp9ThrowableZCQBx'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D9Exception7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D9Exception6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D9Exception6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D12TypeInfo_Axa6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_d_newarrayU'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D6object9Exception6__ctorMFNaNbNiNfAyaQdmCQBp9ThrowableZCQBx'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File17LockingTextWriter10__aggrDtorMFNeZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_d_eh_enter_catch'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio13trustedStdoutFNdNeZSQBgQBf4File'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNbNcNdNiZSQEfQEe4File'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio4File5flushMFNeZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e737464657272ZQDgFNbNcNdNiZSQEhQEg4File'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_d_eh_enter_catch'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _Dmain: error: undefined reference to '_D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e737464657272ZQDgFNbNcNdNiZSQEhQEg4File'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function main: error: undefined reference to '_d_run_main'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFNaKQlKmZw: error: undefined reference to '_D3std3utf12isValidDcharFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFKQjKmZ10invalidUTFMFNaNbZCQFgQFf12UTFException: error: undefined reference to '_D3std3utf12UTFException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFKQjKmZ10invalidUTFMFNaNbZCQFgQFf12UTFException: error: undefined reference to '_D3std3utf12UTFException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFKQjKmZ10invalidUTFMFNaNbZCQFgQFf12UTFException: error: undefined reference to '_D3std3utf12UTFException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFKQjKmZ10invalidUTFMFNaNbZCQFgQFf12UTFException: error: undefined reference to '_D3std3utf12UTFException6__ctorMFNaNbNfAyamQemC6object9ThrowableZCQCmQClQCk'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFKQjKmZ11outOfBoundsMFNaNbZCQFhQFg12UTFException: error: undefined reference to '_D3std3utf12UTFException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFKQjKmZ11outOfBoundsMFNaNbZCQFhQFg12UTFException: error: undefined reference to '_D3std3utf12UTFException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFKQjKmZ11outOfBoundsMFNaNbZCQFhQFg12UTFException: error: undefined reference to '_D3std3utf12UTFException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFKQjKmZ11outOfBoundsMFNaNbZCQFhQFg12UTFException: error: undefined reference to '_D3std3utf12UTFException6__ctorMFNaNbNfAyamQemC6object9ThrowableZCQCmQClQCk'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std4conv__T8textImplTAyaTwTwZQsFNaNfwwZQs: error: undefined reference to '_D3std5array__T8appenderTAyaZQoFNaNbNfZSQBmQBl__T8AppenderTQBiZQo'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std4conv__T9convErrorTAyaTbZQrFNaNfQnQpmZCQBrQBq13ConvException: error: undefined reference to '_D3std4conv13ConvException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std4conv__T9convErrorTAyaTbZQrFNaNfQnQpmZCQBrQBq13ConvException: error: undefined reference to '_D3std4conv13ConvException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std4conv__T9convErrorTAyaTbZQrFNaNfQnQpmZCQBrQBq13ConvException: error: undefined reference to '_D3std4conv13ConvException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std4conv__T9convErrorTAyaTbZQrFNaNfQnQpmZCQBrQBq13ConvException: error: undefined reference to '_D3std4conv13ConvException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCyQCxQCv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std4conv__T9convErrorTAyaTaZQrFNaNfQnQpmZCQBrQBq13ConvException: error: undefined reference to '_D3std4conv13ConvException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std4conv__T9convErrorTAyaTaZQrFNaNfQnQpmZCQBrQBq13ConvException: error: undefined reference to '_D3std4conv13ConvException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std4conv__T9convErrorTAyaTaZQrFNaNfQnQpmZCQBrQBq13ConvException: error: undefined reference to '_D3std4conv13ConvException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std4conv__T9convErrorTAyaTaZQrFNaNfQnQpmZCQBrQBq13ConvException: error: undefined reference to '_D3std4conv13ConvException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCyQCxQCv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFNaQkKmZw: error: undefined reference to '_D3std3utf12isValidDcharFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ10invalidUTFMFNaNbZCQFfQFe12UTFException: error: undefined reference to '_D3std3utf12UTFException6__ctorMFNaNbNfAyamQemC6object9ThrowableZCQCmQClQCk'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ11outOfBoundsMFNaNbZCQFgQFf12UTFException: error: undefined reference to '_D3std3utf12UTFException6__ctorMFNaNbNfAyamQemC6object9ThrowableZCQCmQClQCk'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCd5stdio4File17LockingTextWriterZQCdMFNlNfKQBtZb: error: undefined reference to '_D3std9exception__T7enforceHTCQBc6format15FormatExceptionZ__TQBqTbZQBwFNaNfbLAxaAyamZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCd5stdio4File17LockingTextWriterZQCdMFNlNfKQBtZb: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6fillUpMFNaNlNfZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5stdio4File17LockingTextWriterTaTAyaTQeZQCjFKQBxMxAaQtQvZ12__dgliteral6MFNaNbNiNfZAxa: error: undefined reference to '_D3std4conv__T4textTAyaTaZQmFNaNbNfQpaZQt'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5stdio4File17LockingTextWriterTaTAyaTQeZQCjFKQBxMxAaQtQvZ12__dgliteral7MFNaNbNiNfZAxa: error: undefined reference to '_D3std4conv__T4textTAyaTaZQmFNaNbNfQpaZQt'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format__T19needToSwapEndianessTaZQyFNaNbNiNfMKxSQCbQCa__T10FormatSpecTaZQpZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6__ctorMFNaNbNcNiNfIAaZSQCdQCc__TQByTaZQCe'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6flDashMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni11isGraphicalFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni11isGraphicalFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6__ctorMFNaNbNcNiNfIAaZSQCdQCc__TQByTaZQCe'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std4conv__T2toTiZ__TQjTkZQoFNaNfkZi'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6flDashMFNaNbNdNiNfbZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std4conv__T2toTiZ__TQjTkZQoFNaNfkZi'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std4conv__T2toTiZ__TQjTkZQoFNaNfkZi'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6flDashMFNaNbNdNiNfbZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std4conv__T2toTiZ__TQjTkZQoFNaNfkZi'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format15FormatException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format15FormatException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format15FormatException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format15FormatException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format15FormatException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format15FormatException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format15FormatException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format15FormatException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format15FormatException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std4conv__T4textTAyaTQeTQhZQqFNaNbNfQtQvQxZQBa'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std4conv__T4textTAyaThTaTaTQkTmZQvFNaNbNfQyhaaQBdmZQBi'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T11formatRangeTSQBd5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format15FormatException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCsQCo'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni19isRegionalIndicatorFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std8internal14unicode_tables7isHangLFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni6hangLVFNaNbNdNiNfZySQBdQBc__T4TrieTSQBtQBs__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDjQDi__T9sliceBitsVmi13Vmi21ZQvTSQErQEq__TQBiVmi8Vmi13ZQBvTSQFsQFr__TQCjVmi0Vmi8ZQCvZQFf'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy6__ctorMNgFNaNbNcNiNfPNgmZNgSQDpQDo__TQDnTQDbVmi1ZQDz'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy7opIndexMNgFNaNbNimZQCf'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std8internal14unicode_tables7isHangVFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni7hangLVTFNaNbNdNiNfZySQBeQBd__T4TrieTSQBuQBt__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDkQDj__T9sliceBitsVmi13Vmi21ZQvTSQEsQEr__TQBiVmi8Vmi13ZQBvTSQFtQFs__TQCjVmi0Vmi8ZQCvZQFf'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy6__ctorMNgFNaNbNcNiNfPNgmZNgSQDpQDo__TQDnTQDbVmi1ZQDz'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy7opIndexMNgFNaNbNimZQCf'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std8internal14unicode_tables7isHangTFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni19isRegionalIndicatorFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std8internal14unicode_tables7isHangLFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std8internal14unicode_tables7isHangVFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std8internal14unicode_tables7isHangTFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std8internal14unicode_tables7isHangVFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni6hangLVFNaNbNdNiNfZySQBdQBc__T4TrieTSQBtQBs__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDjQDi__T9sliceBitsVmi13Vmi21ZQvTSQErQEq__TQBiVmi8Vmi13ZQBvTSQFsQFr__TQCjVmi0Vmi8ZQCvZQFf'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy6__ctorMNgFNaNbNcNiNfPNgmZNgSQDpQDo__TQDnTQDbVmi1ZQDz'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy7opIndexMNgFNaNbNimZQCf'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni7hangLVTFNaNbNdNiNfZySQBeQBd__T4TrieTSQBuQBt__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDkQDj__T9sliceBitsVmi13Vmi21ZQvTSQEsQEr__TQBiVmi8Vmi13ZQBvTSQFtQFs__TQCjVmi0Vmi8ZQCvZQFf'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy6__ctorMNgFNaNbNcNiNfPNgmZNgSQDpQDo__TQDnTQDbVmi1ZQDz'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy7opIndexMNgFNaNbNimZQCf'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni18graphemeExtendTrieFNaNbNdNiNfZySQBqQBp__T4TrieTSQCgQCf__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDwQDv__T9sliceBitsVmi13Vmi21ZQvTSQFeQFd__TQBiVmi8Vmi13ZQBvTSQGfQGe__TQCjVmi0Vmi8ZQCvZQFf'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni6mcTrieFNaNbNdNiNfZySQBdQBc__T4TrieTSQBtQBs__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDjQDi__T9sliceBitsVmi13Vmi21ZQvTSQErQEq__TQBiVmi8Vmi13ZQBvTSQFsQFr__TQCjVmi0Vmi8ZQCvZQFf'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6flDashMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formatUnsignedTSQBg5stdio4File17LockingTextWriterTmTaZQCeFNfKQBumMKxSQDhQDg__T10FormatSpecTaZQpkbZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6flDashMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formatUnsignedTSQBg5stdio4File17LockingTextWriterTmTaZQCeFNfKQBumMKxSQDhQDg__T10FormatSpecTaZQpkbZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6flZeroMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formatUnsignedTSQBg5stdio4File17LockingTextWriterTmTaZQCeFNfKQBumMKxSQDhQDg__T10FormatSpecTaZQpkbZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6flPlusMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formatUnsignedTSQBg5stdio4File17LockingTextWriterTmTaZQCeFNfKQBumMKxSQDhQDg__T10FormatSpecTaZQpkbZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6flHashMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formatUnsignedTSQBg5stdio4File17LockingTextWriterTmTaZQCeFNfKQBumMKxSQDhQDg__T10FormatSpecTaZQpkbZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6flHashMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formatUnsignedTSQBg5stdio4File17LockingTextWriterTmTaZQCeFNfKQBumMKxSQDhQDg__T10FormatSpecTaZQpkbZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp7flSpaceMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formatUnsignedTSQBg5stdio4File17LockingTextWriterTmTaZQCeFNfKQBumMKxSQDhQDg__T10FormatSpecTaZQpkbZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp11flSeparatorMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formatUnsignedTSQBg5stdio4File17LockingTextWriterTmTaZQCeFNfKQBumMKxSQDhQDg__T10FormatSpecTaZQpkbZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp11flSeparatorMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formatUnsignedTSQBg5stdio4File17LockingTextWriterTmTaZQCeFNfKQBumMKxSQDhQDg__T10FormatSpecTaZQpkbZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp11flSeparatorMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formatUnsignedTSQBg5stdio4File17LockingTextWriterTmTaZQCeFNfKQBumMKxSQDhQDg__T10FormatSpecTaZQpkbZv: error: undefined reference to '_D3std9exception14ErrnoException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formatUnsignedTSQBg5stdio4File17LockingTextWriterTmTaZQCeFNfKQBumMKxSQDhQDg__T10FormatSpecTaZQpkbZv: error: undefined reference to '_D3std9exception14ErrnoException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formatUnsignedTSQBg5stdio4File17LockingTextWriterTmTaZQCeFNfKQBumMKxSQDhQDg__T10FormatSpecTaZQpkbZv: error: undefined reference to '_D3std9exception14ErrnoException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formatUnsignedTSQBg5stdio4File17LockingTextWriterTmTaZQCeFNfKQBumMKxSQDhQDg__T10FormatSpecTaZQpkbZv: error: undefined reference to '_D3std9exception14ErrnoException6__ctorMFNfAyaQdmZCQBxQBwQBp'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAwTaZQCdFNfKQBvQpMKxSQDhQDg__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni19isRegionalIndicatorFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAwTaZQCdFNfKQBvQpMKxSQDhQDg__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std8internal14unicode_tables7isHangLFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAwTaZQCdFNfKQBvQpMKxSQDhQDg__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni6hangLVFNaNbNdNiNfZySQBdQBc__T4TrieTSQBtQBs__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDjQDi__T9sliceBitsVmi13Vmi21ZQvTSQErQEq__TQBiVmi8Vmi13ZQBvTSQFsQFr__TQCjVmi0Vmi8ZQCvZQFf'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAwTaZQCdFNfKQBvQpMKxSQDhQDg__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std8internal14unicode_tables7isHangVFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAwTaZQCdFNfKQBvQpMKxSQDhQDg__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std3uni7hangLVTFNaNbNdNiNfZySQBeQBd__T4TrieTSQBuQBt__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDkQDj__T9sliceBitsVmi13Vmi21ZQvTSQEsQEr__TQBiVmi8Vmi13ZQBvTSQFtQFs__TQCjVmi0Vmi8ZQCvZQFf'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAwTaZQCdFNfKQBvQpMKxSQDhQDg__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std8internal14unicode_tables7isHangTFNaNbNiNfwZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T12writeAlignedTSQBe5stdio4File17LockingTextWriterTAwTaZQCdFNfKQBvQpMKxSQDhQDg__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6flDashMxFNaNbNdNiNfZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T15formatValueImplTSQBh5stdio4File17LockingTextWriterTkTaZQCfFNfKQBukMKxSQDiQDh__T10FormatSpecTaZQpZv: error: undefined reference to '_D3std6format__T19needToSwapEndianessTaZQyFNaNbNiNfMKxSQCbQCa__T10FormatSpecTaZQpZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5stdio4File17LockingTextWriterTaTkZQCeFKQBsMxAakZ12__dgliteral5MFNaNbNiNfZAxa: error: undefined reference to '_D3std4conv__T4textTAyaTaZQmFNaNbNfQpaZQt'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T6getNthVAyaa19_736570617261746f7220636861726163746572SQCq6traits10isSomeCharTwTkZQDdFNaNfkkZw: error: undefined reference to '_D3std4conv__T4textTAyaTQeTQhTQkTkZQvFNaNbNfQyQBaQBdQBgkZQBl'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T6getNthVAyaa19_736570617261746f7220636861726163746572SQCq6traits10isSomeCharTwTkZQDdFNaNfkkZw: error: undefined reference to '_D3std4conv__T4textTAyaTQeTQhZQqFNaNbNfQtQvQxZQBa'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T6getNthVAyaa19_736570617261746f7220636861726163746572SQCq6traits10isSomeCharTwTkZQDdFNaNfkkZw: error: undefined reference to '_D3std6format15FormatException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCsQCo'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5stdio4File17LockingTextWriterTaTkZQCeFKQBsMxAakZ12__dgliteral6MFNaNbNiNfZAxa: error: undefined reference to '_D3std4conv__T4textTAyaTaZQmFNaNbNfQpaZQt'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp6__ctorMFNaNbNcNiNfIAaZSQCdQCc__TQByTaZQCe'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCd5array__T8AppenderTAyaZQoZQByMFNaNlNfKQBqZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std6format__T14formatIntegralTSQBg5array__T8AppenderTAyaZQoTmTaZQBzFNaNfKQBrxmMKxSQDfQDe__T10FormatSpecTaZQpkmZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std6format__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCd5array__T8AppenderTAyaZQoZQByMFNaNlNfKQBqZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std6format__T11formatValueTSQBd5array__T8AppenderTAyaZQoTQhTaZQBxFNaNfKQBsKQzMKxSQDeQDd__T10FormatSpecTaZQpZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std6format__T19needToSwapEndianessTaZQyFNaNbNiNfMKxSQCbQCa__T10FormatSpecTaZQpZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTxaZQBmFNaNbNfKQBsxaZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTxaZQBmFNaNbNfKQBsxaZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTxaZQBmFNaNbNfKQBsxaZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTxaZQBmFNaNbNfKQBsxaZv'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std4conv__T4textTAyaThTaTaTQkTmZQvFNaNbNfQyhaaQBdmZQBi'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std4conv__T4textTAyaTQeTQhTQkTkZQvFNaNbNfQyQBaQBdQBgkZQBl'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std4conv__T4textTAyaTQeTQhZQqFNaNbNfQtQvQxZQBa'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std6format15FormatException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCsQCo'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std4conv21ConvOverflowException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std4conv21ConvOverflowException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std4conv21ConvOverflowException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjTmZQCcFNaNfKQBuMxAaQBemZk: error: undefined reference to '_D3std4conv21ConvOverflowException6__ctorMFNaNbNfAyaQdmZCQCdQCcQCa'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__TQkTaTAyaTmZQvFIAaQmmZ12__dgliteral5MFNaNbNiNfZAxa: error: undefined reference to '_D3std4conv__T4textTAyaTkTQgTmTQlZQuFNaNbNfQxkQBamQBeZQBi'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T6getNthVAyaa19_736570617261746f7220636861726163746572SQCq6traits10isSomeCharTwTQCtTmZQDhFNaNfkQDimZw: error: undefined reference to '_D3std4conv__T4textTAyaTQeTQhTQkTkZQvFNaNbNfQyQBaQBdQBgkZQBl'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T6getNthVAyaa19_736570617261746f7220636861726163746572SQCq6traits10isSomeCharTwTQCtTmZQDhFNaNfkQDimZw: error: undefined reference to '_D3std4conv__T4textTAyaTQeTQhTQkTkZQvFNaNbNfQyQBaQBdQBgkZQBl'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T6getNthVAyaa19_736570617261746f7220636861726163746572SQCq6traits10isSomeCharTwTQCtTmZQDhFNaNfkQDimZw: error: undefined reference to '_D3std4conv__T4textTAyaTQeTQhZQqFNaNbNfQtQvQxZQBa'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T6getNthVAyaa13_696e7465676572207769647468SQCe6traits10isIntegralTiTQChTmZQCvFNaNfkQCwmZi: error: undefined reference to '_D3std4conv21ConvOverflowException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T6getNthVAyaa13_696e7465676572207769647468SQCe6traits10isIntegralTiTQChTmZQCvFNaNfkQCwmZi: error: undefined reference to '_D3std4conv21ConvOverflowException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T6getNthVAyaa13_696e7465676572207769647468SQCe6traits10isIntegralTiTQChTmZQCvFNaNfkQCwmZi: error: undefined reference to '_D3std4conv21ConvOverflowException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T6getNthVAyaa13_696e7465676572207769647468SQCe6traits10isIntegralTiTQChTmZQCvFNaNfkQCwmZi: error: undefined reference to '_D3std4conv21ConvOverflowException6__ctorMFNaNbNfAyaQdmZCQCdQCcQCa'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T6getNthVAyaa17_696e746567657220707265636973696f6eSQCm6traits10isIntegralTiTQCpTmZQDdFNaNfkQDemZi: error: undefined reference to '_D3std4conv21ConvOverflowException7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T6getNthVAyaa17_696e746567657220707265636973696f6eSQCm6traits10isIntegralTiTQCpTmZQDdFNaNfkQDemZi: error: undefined reference to '_D3std4conv21ConvOverflowException6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T6getNthVAyaa17_696e746567657220707265636973696f6eSQCm6traits10isIntegralTiTQCpTmZQDdFNaNfkQDemZi: error: undefined reference to '_D3std4conv21ConvOverflowException6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:function _D3std6format__T6getNthVAyaa17_696e746567657220707265636973696f6eSQCm6traits10isIntegralTiTQCpTmZQDdFNaNfkQDemZi: error: undefined reference to '_D3std4conv21ConvOverflowException6__ctorMFNaNbNfAyaQdmZCQCdQCcQCa'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D15TypeInfo_HAyaAv6__initZ: error: undefined reference to '_D25TypeInfo_AssociativeArray6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D15TypeInfo_HAyaAv6__initZ: error: undefined reference to '_D11TypeInfo_Av6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D29TypeInfo_AS3std6getopt6Option6__initZ: error: undefined reference to '_D14TypeInfo_Array6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D28TypeInfo_S3std6getopt6Option6__initZ: error: undefined reference to '_D15TypeInfo_Struct6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D28TypeInfo_S3std6getopt6Option6__initZ: error: undefined reference to '_D3std6getopt6Option9__xtoHashFNbNeKxSQBkQBjQBfZm'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D28TypeInfo_S3std6getopt6Option6__initZ: error: undefined reference to '_D3std6getopt6Option11__xopEqualsFKxSQBjQBiQBeKxQmZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D13TypeInfo_AAya6__initZ: error: undefined reference to '_D14TypeInfo_Array6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D11TypeInfo_xm6__initZ: error: undefined reference to '_D14TypeInfo_Const6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D11TypeInfo_xm6__initZ: error: undefined reference to '_D10TypeInfo_m6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D11TypeInfo_xb6__initZ: error: undefined reference to '_D14TypeInfo_Const6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D11TypeInfo_xb6__initZ: error: undefined reference to '_D10TypeInfo_b6__initZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D12TypeInfo_xAa6__initZ: error: undefined reference to '_D14TypeInfo_Const6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std9exception12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std6format12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std5range12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std5regex12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std5stdio12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std6traits12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std8typecons12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std5regex8internal12backtracking12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std5regex8internal6parser12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std5array12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std10functional12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std4conv12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std9algorithm8mutation12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std9algorithm10comparison12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std6string12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std5regex8internal8thompson12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D4core8internal5array5utils12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D4core6memory12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common9fieldlist12__ModuleInfoZ: error: undefined reference to '_D3std3uni12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common8numerics12__ModuleInfoZ: error: undefined reference to '_D3std6traits12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common8numerics12__ModuleInfoZ: error: undefined reference to '_D3std5range12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils16InputSourceRange7__ClassZ: error: undefined reference to '_D14TypeInfo_Class6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils16InputSourceRange7__ClassZ: error: undefined reference to '_D6Object7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils16InputSourceRange6__vtblZ: error: undefined reference to '_D6object6Object8toStringMFZAya'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils16InputSourceRange6__vtblZ: error: undefined reference to '_D6object6Object6toHashMFNbNeZm'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils16InputSourceRange6__vtblZ: error: undefined reference to '_D6object6Object5opCmpMFCQqZi'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils16InputSourceRange6__vtblZ: error: undefined reference to '_D6object6Object8opEqualsMFCQtZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils11InputSource7__ClassZ: error: undefined reference to '_D14TypeInfo_Class6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils11InputSource7__ClassZ: error: undefined reference to '_D6Object7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils11InputSource6__vtblZ: error: undefined reference to '_D6object6Object8toStringMFZAya'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils11InputSource6__vtblZ: error: undefined reference to '_D6object6Object6toHashMFNbNeZm'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils11InputSource6__vtblZ: error: undefined reference to '_D6object6Object5opCmpMFCQqZi'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils11InputSource6__vtblZ: error: undefined reference to '_D6object6Object8opEqualsMFCQtZb'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D44TypeInfo_S3std5array__T8AppenderTAyaZQo4Data6__initZ: error: undefined reference to '_D15TypeInfo_Struct6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D43TypeInfo_S3std5array__T8AppenderTAaZQn4Data6__initZ: error: undefined reference to '_D15TypeInfo_Struct6__vtblZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils12__ModuleInfoZ: error: undefined reference to '_D3std5range12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils12__ModuleInfoZ: error: undefined reference to '_D3std5stdio12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils12__ModuleInfoZ: error: undefined reference to '_D3std6traits12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils12__ModuleInfoZ: error: undefined reference to '_D3std8typecons12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils6common5utils12__ModuleInfoZ: error: undefined reference to '_D3std9exception12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils7csv2tsv12__ModuleInfoZ: error: undefined reference to '_D3std5stdio12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils7csv2tsv12__ModuleInfoZ: error: undefined reference to '_D3std9exception12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils7csv2tsv12__ModuleInfoZ: error: undefined reference to '_D3std6format12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils7csv2tsv12__ModuleInfoZ: error: undefined reference to '_D3std5range12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils7csv2tsv12__ModuleInfoZ: error: undefined reference to '_D3std6traits12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils7csv2tsv12__ModuleInfoZ: error: undefined reference to '_D3std8typecons12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils7csv2tsv12__ModuleInfoZ: error: undefined reference to '_D3std4path12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils7csv2tsv12__ModuleInfoZ: error: undefined reference to '_D3std9algorithm8mutation12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils7csv2tsv12__ModuleInfoZ: error: undefined reference to '_D3std4conv12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils7csv2tsv12__ModuleInfoZ: error: undefined reference to '_D3std5array12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils7csv2tsv12__ModuleInfoZ: error: undefined reference to '_D4core6memory12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils7csv2tsv12__ModuleInfoZ: error: undefined reference to '_D4core8internal5array5utils12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils7csv2tsv12__ModuleInfoZ: error: undefined reference to '_D3std9algorithm10comparison12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils7csv2tsv12__ModuleInfoZ: error: undefined reference to '_D3std10functional12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils7csv2tsv12__ModuleInfoZ: error: undefined reference to '_D3std6string12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:_D9tsv_utils7csv2tsv12__ModuleInfoZ: error: undefined reference to '_D3std3uni12__ModuleInfoZ'
/tmp/lto-llvm-8b1aea.o(.data+0x0): error: undefined reference to '_D6object9Throwable7__ClassZ'
/tmp/lto-llvm-8b1aea.o(.data+0x8): error: undefined reference to '_D9Exception7__ClassZ'
/tmp/lto-llvm-8b1aea.o:tsvutils_version.d:DW.ref._d_eh_personality: error: undefined reference to '_d_eh_personality'
collect2: error: ld returned 1 exit status
Error: /usr/bin/cc failed with status: 1
make[1]: *** [../makeapp.mk:18: /tmp/tsv-utils/bin/csv2tsv] Error 1
make[1]: Leaving directory '/tmp/tsv-utils/csv2tsv'
make: *** [makefile:96: csv2tsv] Error 2

ldc2.conf contains the following on Archlinux:

default:
{
    // default switches injected before all explicit command-line switches
    switches = [
        "-defaultlib=phobos2-ldc,druntime-ldc","-link-defaultlib-shared"
    ];
    // default switches appended after all explicit command-line switches
    post-switches = [
        "-I/usr/include/dlang/ldc",
    ];
    // default directories to be searched for libraries when linking
    lib-dirs = [
        "/usr/lib",
    ];
    // default rpath when linking against the shared default libs
    rpath = "/usr/lib";
};

tsv-summarize: "total line" when grouping.

Only a small ER this time. ;)

I hit a case where I'd like to have a "total" line in addition to the output of my --group-by. I can get it by removing the --group-by option and rerunning the input, but it'd be nice if I could get them both in one go.

Q: any API doc? how to skip empty field in csvReader?

https://forum.dlang.org/thread/[email protected]

If there is any API doc?

Readme only has command line doc.

BTW, how to skip empty field in csvReader? E.g. how to achieve the following in this library? Thanks.

https://run.dlang.io/is/9afmT1

void main()
{
    import std.csv;
    import std.stdio: write, writeln, writef, writefln;
    import std.algorithm.comparison : equal;
    string text = "Hello;65;;\nWorld;123;7.5";
    struct Layout
    {
        string name;
        int value;
        double other;
    }

    auto records = text.csvReader!Layout(';');
    assert(records.equal([
        Layout("Hello", 65, 2.5),
        Layout("World", 123, 7.5),
    ]));


}

There is an empty field in the 1st line: "Hello;65;;", then

std.csv.CSVException@/dlang/dmd/linux/bin64/../../src/phobos/std/csv.d(1232): Floating point conversion error for input "".

Is there a way to tell csvReader to skip such empty fields?

bufferedByLine does not work with File due to @safe <> @system conflict

This is the first time I am using tsv-utils. I am trying to compile the following chunk of code:

import std.stdio;
import std.typecons : Yes, No;
import tsv_utils.common.utils : bufferedByLine;

enum testFile = "test.tsv";

void main(string[] args)
{
    foreach (line; testFile.File().bufferedByLine!(Yes.keepTerminator))
    {
        writeln(line);
    }
}

and get the following exception:

> dub build --single preprocessor.d --compiler=ldc2 --force
Performing "debug" build using ldc2 for x86_64.
mir-core 1.1.2: building configuration "library"...
mir-algorithm 3.7.28: building configuration "default"...
preprocessor ~master: building configuration "application"...
C:\Users\tasty\AppData\Local\dub\packages\tsv-utils-1.6.0\tsv-utils\common\src\tsv_utils\common\utils.d(899,38): Error: @safe function tsv_utils.common.util
s.bufferedByLine!(cast(Flag)true, char, cast(ubyte)10u, 131072LU, 16384LU).bufferedByLine.BufferedByLineImpl.popFront cannot call @system function std.stdio
.File.rawRead!ubyte.rawRead
C:\ldc2-1.20.0-windows-x64\bin\..\import\std\stdio.d(1076,9):        std.stdio.File.rawRead!ubyte.rawRead is declared here
preprocessor.d(29,40): Error: template instance tsv_utils.common.utils.bufferedByLine!(cast(Flag)true, char, cast(ubyte)10u, 131072LU, 16384LU) error instan
tiating
ldc2 failed with exit code 1.

Am I using it correctly?

Ability to produce proper CSV files

We have a need to clean up CSV files and produce comma delimited files (not tab delimited). If the data has commas embedded in the fields, those fields should be quoted.

Currently it's possible to set the tsv-delimiter to comma, but this would also replace any commas in the source data with spaces, which is not what we want.

The goal of this exercise is to basically go from QUOTE_ALL to QUOTE_MINIMAL for the CSV files.

Compilation error, tsv-filter: undefined reference

My system install of dmd is v2.068.1. Also tried it with the latest version of dmd (v.2.071.0).
I cloned the repository and in the repo root issued make:

[code]$ git clone https://github.com/eBay/tsv-utils-dlang
Cloning into 'tsv-utils-dlang'...                                      
remote: Counting objects: 89, done.                                    
remote: Compressing objects: 100% (60/60), done.                       
remote: Total 89 (delta 11), reused 89 (delta 11), pack-reused 0       
Unpacking objects: 100% (89/89), done.                                 
Checking connectivity... done.                            
[code]$ cd tsv-utils-dlang/                              
[tsv-utils-dlang]$ make                                                             

make -C common                                                                                    
make[1]: Entering directory `/home/boulund/code/tsv-utils-dlang/common'                           
make[1]: `release' is up to date.                                                                 
make[1]: Leaving directory `/home/boulund/code/tsv-utils-dlang/common'                            

make -C number-lines                                                                              
make[1]: Entering directory `/home/boulund/code/tsv-utils-dlang/number-lines'                     
dmd -release -O -inline -boundscheck=off -odobj  -of/home/boulund/code/tsv-utils-dlang/bin/number-lines -I/home/boulund/code/tsv-utils-dlang/common/src src/number-lines.d                          
make[1]: Leaving directory `/home/boulund/code/tsv-utils-dlang/number-lines'                      

make -C tsv-select                                                                                
make[1]: Entering directory `/home/boulund/code/tsv-utils-dlang/tsv-select'                       
dmd -release -O -inline -boundscheck=off -odobj  -of/home/boulund/code/tsv-utils-dlang/bin/tsv-select -I/home/boulund/code/tsv-utils-dlang/common/src src/tsv-select.d /home/boulund/code/tsv-utils-dlang/common/src/tsvutil.d                                                                        
make[1]: Leaving directory `/home/boulund/code/tsv-utils-dlang/tsv-select'                        

make -C tsv-filter                                                                                
make[1]: Entering directory `/home/boulund/code/tsv-utils-dlang/tsv-filter'                       
dmd -release -O -inline -boundscheck=off -odobj  -of/home/boulund/code/tsv-utils-dlang/bin/tsv-filter -I/home/boulund/code/tsv-utils-dlang/common/src src/tsv-filter.d                              
obj/tsv-filter.o: In function `_D10tsv_filter9istrInFldFxAAamAywZb':                              
src/tsv-filter.d:(.text._D10tsv_filter9istrInFldFxAAamAywZb+0x42): undefined reference to `_D3std9algorithm9searching49__T16simpleMindedFindVAyaa6_61203d3d2062TAxaTAywZ16simpleMindedFindFNaNfAxaAywZAxa'                                                                                            
obj/tsv-filter.o: In function `_D10tsv_filter12istrNotInFldFxAAamAywZb':                          
src/tsv-filter.d:(.text._D10tsv_filter12istrNotInFldFxAAamAywZb+0x42): undefined reference to `_D3std9algorithm9searching49__T16simpleMindedFindVAyaa6_61203d3d2062TAxaTAywZ16simpleMindedFindFNaNfAxaAywZAxa'                                                                                        
obj/tsv-filter.o: In function `_D3std9algorithm9searching36__T4findVAyaa6_61203d3d2062TAxaTAywZ4findFNaNfAxaAywZAxa':                                                                               
src/tsv-filter.d:(.text._D3std9algorithm9searching36__T4findVAyaa6_61203d3d2062TAxaTAywZ4findFNaNfAxaAywZAxa+0x37): undefined reference to `_D3std9algorithm9searching49__T16simpleMindedFindVAyaa6_61203d3d2062TAxaTAywZ16simpleMindedFindFNaNfAxaAywZAxa'                                           
obj/tsv-filter.o: In function `_D3std9algorithm9searching12__T7canFindZ20__T7canFindTAxaTAywZ7canFindFNaNfAxaAywZb':
src/tsv-filter.d:(.text._D3std9algorithm9searching12__T7canFindZ20__T7canFindTAxaTAywZ7canFindFNaNfAxaAywZb+0x37): undefined reference to `_D3std9algorithm9searching49__T16simpleMindedFindVAyaa6_61203d3d2062TAxaTAywZ16simpleMindedFindFNaNfAxaAywZAxa'                                            
collect2: error: ld returned 1 exit status                                                        
--- errorlevel 1                                                                                  
make[1]: *** [/home/boulund/code/tsv-utils-dlang/bin/tsv-filter] Error 1                          
make[1]: Leaving directory `/home/boulund/code/tsv-utils-dlang/tsv-filter'                        
make: *** [tsv-filter] Error 2                                                                    

Column-wise maths (sum-product?)

Hey, been a while! Just hit another thing that'd be useful for my work, so I figured I'd put it here.

Consider the following file sample.tsv:

script	weight	actions
foo.js	100	6
bar.js	600	6
baz.js	1200	5
qux.js	500	2

If we want to know the total number of actions for each script, each second column value needs to be multiplied by the third for each line. Right now, I can get this far:

tsv-select --fields 2,3 sample.tsv | \
    keep-header -- /bin/sh -c \
        '(sed "s/\t/ \* /" | xargs printf "%d\n" $(bc $1))'

Which will give me:

weight
600
3600
6000
1000

Hm. Not quite. Better still, the rows match, but we can't join this with the current tools. We can sort of fake it with some awful circumlocutions involving number-lines:

tsv-select --fields 2,3 sample.tsv | \
    keep-header -- /bin/sh -c \
        '(sed "s/\t/ \* /" | xargs printf "%d\n" $(bc $1))' | \
    number-lines --H | \
    tsv-join -H  -k 1 -a 2,3,4 -f <(number-lines -H sample.tsv) | \
    tsv-select -H -f 3,4,5,2

gives me:

script	weight	actions	weight
foo.js	100	6	600
bar.js	600	6	3600
baz.js	1200	5	6000
qux.js	500	2	1000

Well, it's better. The new column is named wrong, though. Dang.

More broadly, that's only multiplication. What I'd like to see is something like... this isn't really tsv-summarize, which is columnar reductions. Maybe it's an advanced selection?
tsv-select -H -f1,2,3 --multiply 2:3:total_actions
Or maybe it's a new tool; tsv-eval or something. Hm. :/

tsv-summarize: doesn't support windows line-ending

When aggregating the last column, the prebuilt binary for linux (v1.1.15) returns the following error:

' when converting from type const(char)[] to type doubleUnexpected '
File: dummy.tsv Line: 2

I've used tsv-append, tsv-uniq and tsv-select, and each works just fine. After updating line-endings to unix, tsv-summarize works.

Sort using column names

How to sort using column names instead of indices? e.g. tsv-sort -H -k age:nr -k name instead of keep-header -- sort -t $'\t' -k 2,2nr -k 1,1

tsv-summarize: Slice SummarizerBase._operators when invoking std.algorithm.each

Code improvement. SummarizerBase._operators is a doubly linked list (std.container.dlist). It's not an input range, but can converted to one by slicing. This is done in most of the tsv-summarize code, but not in SummarizerBase.processHeaderLine, which directly invokes std.algorithm.each (line 865):

   _operators.each!(x => x.processHeaderLine(lineFields));

This works for std.algorithm.each, but better code would be to slice it (_operators[].each!) to turn it into a proper input range. Identified by Phobos PR #7638. During an intermediate point in the PR buildkite produced the error:

Error: template `std.algorithm.iteration.each` cannot deduce function from argument types
`!((x) => x.processHeaderLine(lineFields))(DList!(Operator))`,
candidates are: /var/lib/buildkite-agent/builds/ci-agent-1274edee-3159-4508-b412-871bec2025b7-3/dlang/phobos/build/distribution/bin/../imports/std/algorithm/iteration.d(805):
  `each(alias fun = "a", Range)(auto ref Range range)`
  with `fun = __lambda2,
        Range = DList!(Operator)`
  must satisfy one of the following constraints:
`       isInputRange!Range
       isArray!Range
       hasMember!(Range, "opApply")`

Note: Given the role of tsv-utils in dlang CI tests, this code should not be modified until the issues raised by the Phobos PR have been resolved. In particular, does each retain backward compatibility (preferably with unit tests), or is it modified in a non-backward compatible way?

Add code coverage reports to travis-ci

@wilzbach Do you have suggestions on adding code coverage reports to the travis-ci builds? I'm trying to figure out the provider and what I need to do to construct the report files.

My tests use both unit tests and runs against the command line executable. I expect I'll need to generate reports from both unit tests and each call against the executable and create and aggregated coverage reports for each file. This will happen for each tool subdirectory in the repo.

Since I have multiple executables in the repo, I'm expecting that I'll need to do a final aggregation & copy of the *.lst files up to the top-level of the repo. Does this sound right? Best I can tell, the code coverage integrators with D support look for DMD *.lst coverage report files in the top level directory.

I'd appreciate any suggestions you have on this provider selection and the procedure I outlined.

Inconsistent newline handling on Windows

This is a follow-on to issue #307, which identified issues with newline handling on Windows.

Note: Windows is not a currently supported platform. However, it is certainly desirable to have it run on Windows, making it worthwhile to identify issues needing to be addressed on Windows.

The general problem is that the different read and write mechanisms used in the different tsv-utils tools are not consistent with respect to handling of newlines on the Windows platform. In some cases files are read in binary mode, in other cases in text mode. Similar for writing. (Text mode engages newline translation on Windows in the low-level I/O routines.) At present the exact behavior of each tool is not known, this requires further evaluation.

There are a couple things that need to be done. One is to have complete test suite. The other is to choose newline policies. These would tested in the test suite.

Some possible newline handling policies:

  1. Read and write Unix newlines only, on all platforms.
  2. Read and write using platform preferred linefeeds.
  3. Read either Windows or Unix linefeeds; Write Unix linefeeds
  4. Full customization via command line arguments.

The simplest policy to support would be to restrict the tools to Unix newlines. Require Unix newlines on input and output only Unix newlines. The existing test suite would largely support this. And, it would be the correct choice in many environments, especially in circumstances where a mix of Unix and Windows platforms are in use. That is, if data files are being shared, Unix newlines will normally be preferred.

Reading either form (option 3) might be easier done than expected, as most tools use bufferedByLine. In particular, bufferedByLine.front handles newlines. However, a number of tools have their own reader functionality, so it would still be necessary to have a test suite for each tool.

Full customization of newline handling has a material downside, in that it create additional user complexity in the form of additional command line arguments.

Add some way to split a field

Another feature request that came to mind as I was working. Consider the following single column of data:

file
5core_05thread
5core_06thread
5core_07thread
5core_08thread

I ended up doing it in post-process, but I think it'd be handy to have some way to split fields so that it comes out like this:

cores  threads
5      5
5      6
5      7
5      8

How to best use the code as a library?

I like TSV utils a lot. I'm wondering what's the best way to use the code as a library in own applications?

Is it planned to separate the generic code-parts into a library? Maybe even add them to Phobos? IMO that would make a lot of sense too.

Summary bucketing to columns

Ahaha, it keeps happening! ;) This time, in a much longer form.

I'm not sure what to call this precisely, so I'll describe the problem and see what you think:

Say we have as input a list of actions and their outcome:

action                success
frob                  true
tweak                 true
frob                  false
frob                  true
twiddle               true
tweak                 false
frob                  true

The goal is something like this:

action  succ    fail
frob    3       1
tweak   1       1
twiddle 1       0

The above was done with the following incantation:

tsv-join -w 0 --filter-file \
    <(tsv-filter -H --str-eq 2:"false" input.tsv | tsv-summarize -H --group-by 1 --count-header fail) \
    -k 1 \
    -a 2 \
    <(tsv-filter -H --str-eq 2:"true" input.tsv | tsv-summarize -H --group-by 1 --count-header succ)

This is pretty nasty: two subshells (with bonus bashisms), two scans of the input file, annoying and error-prone to edit... you can probably see why I'd like to improve this one.

Two ideas come to mind for how this might work:

  1. A bucketing action. Something like this, perhaps:
    tsv-summarize --group-by 1 --bucket 2
    For the above input, I'd expect this to output:
action  success_true    success_false
frob    3               1
tweak   1               1
twiddle 1               0

i.e. each unique value in the group is counted and given a bucket.

Advantages:

  • It's relatively simple. Low overhead on the user and the column names can be cleaned up with little effort.
  • It actually works for any number of unique values in the bucketed column (e.g. if I had a third "baz" status, it'd give me a column for that too).

Disadvantages:

  • You do have to clean up the names. Given what we discussed before, I can't really think of any decent syntaxen for naming the columns in situ.
  • It may be too simple? This is just a hunch, though.
  • More feature-creep in tsv-summarize doesn't necessarily sit well with me.
  1. Some mechanism for pivoting (possibly as a new tool?). Using existing tools, we can get the following:
$ tsv-summarize -H --group-by 1,2 --count input.tsv | sort
action  success count
frob    false   1
frob    true    3
tweak   false   1
tweak   true    1
twiddle true    1

In this case, there needs to be something to bridge the gap. Maybe something like this?
tsv-pivot --column 2 --fact sum:3

Output... probably the same as before.

Advantages:

  • General tool, functional for this scenario and for any other pivot operation
  • Can probably reuse a lot code, including the aggregates from tsv-summarize
  • More flexibility WRT syntax because it's a whole new tool.

Disadvantages:

  • It's a new tool in the suite, so hooray for effort and bugs. Do I really need more disadvantages at this point?
  • ...Hahah, whoops, probably still have to clean up column names!

why don't you use mmfile?

A couple of weeks ago I did a (noobish) benchmark that compared different D functions with C, C++ and Python.
By far the fastest was the following code:

scope mmFile = new MmFile(args[1]);
auto file = splitter(cast(string)mmFile[0..mmFile.length], '\n').filter!"!a.empty";
file.popFront; // header
// parse body (or whatever you want to do with it)
foreach(line; file){
        int[] csv = line.splitter(' ').map!(to!int).array;
        counter += csv.sum;

I am just wondering whether you just didn't know about this or there was any reason against it.
Memory-mapping also works well with extremely large files.

https://dlang.org/phobos/std_mmfile.html
https://en.wikipedia.org/wiki/Memory-mapped_file

Status of Windows build

This issues tracks the status of native Windows builds for the toolkit.

Windows is not currently a supported platform. Windows users are encouraged to run Linux builds of the tools using either Windows Subsystem for Linux (WSL) or Docker for Windows.

Acknowledging the above caveat, it is useful to track known issues on Windows and resolve them over time. At present, the toolkit is built on Windows as part of CI tests, and large parts of the test suite run successfully. Cases where the test suite does not run successfully are primarily due to limitations in the test suite, not the tools. At this time there are no known bugs in the tools, but there are gaps in the runnable test suite and limited real-world testing.

The two main issues for having Windows support are having a complete CI test suite that runs on Windows, and resolving inconsistencies in Windows newline handling. Most other known issues are minor, though a couple complicate having a test suite shared across Windows and Unix platforms. With PRs #314 and #320 newline consistency issues are largely addressed.

Windows CI Test suite status

A Windows CI test suite was setup using GitHub Actions. See PRs #313 and #315. Current status:

  • Build (compile/link) w/ dub, DMD 64-bit - Done (passses)
  • Build (compile/link) w/ dub, LDC 64-bit - Done (passses)
  • Build (compile/link) w/ make, DMD 64-bit - Done (passses)
  • Build (compile/link) w/ make, LDC 64-bit - Done (passses)
  • Built-in unit tests w/ make unittest, DMD 64-bit - Passes, with minor caveats. See "Disabled unit tests" below.
  • Built-in unit tests w/ make unittest, LDC 64-bit - Fails in tsv-sample due to differences in floating point format output. As an example, a floating point value formatted as 0.75346697377181959 on Linux/MacOs is formatted as 0.75346697377181970 on Windows. This looks like a round-off difference in a mathematical calculation, nothing more.
  • Command line unit tests w/ make test, both DMD and LDC. These fail from the beginning because of newline differences between the golden set files from the repo and the results produced in the tests. In particular, the "error" and "help" tests that generate messages to end users are getting written using Windows newlines, but the "gold" files with expected results were generated on Unix. The main complication is that many expected results should be newline equivalent, so different strategies are needed for each.
  • Input files with Windows newlines - The test suite needs to include files with Windows newlines, for every tool.

Notes:

  • Disabled unit tests - A pair of rounding tests for common.tsv-utils.numerics.formatNumber function fail on Windows and were disabled. The cases are formatNumber(0.6, 0) and formatNumber(-0.6, 0). These should return "1" and "-1" respectively, but on Windows return "0" and "-0". This is due to incorrect results from the calls being made to std.format.format. std.format.format is likely calling snprintf from platform's C library. The disabled unit tests are in common.tsv-utils.numerics.d starting at lines 220 and 334.
    Update (03/14/21): This has been addressed in DMD 2.096, PR #7757 by moving the work into Phobos. Unit tests have been conditioned on version.

Windows Newline handling

On Unix and MacOs tsv-utils requires and generates Unix newlines. However, a newline handling policy has never been identified for running on a Windows platform. As a result, tools are inconsistent in the manner they handled Windows newlines when running on Windows. Some possible newline handling policies:

  1. Read and write Unix newlines only, on all platforms.
  2. Read and write using platform preferred linefeeds.
  3. Read either Windows or Unix linefeeds; Write Unix linefeeds
  4. Full customization via command line arguments.

Option 1 is simplest policy to support and what is being done initially. It is the easiest to enforce in the current code, and easiest to support in the current test suite. And, it is a reasonable choice in many environments, especially in circumstances where a mix of Unix and Windows platforms are in use. If data files are being shared, Unix newlines will normally be preferred. Option 1 is also consistent with other choices made in the toolkit. In particular, supporting only one file format (UTF-8 TSV), and delegating conversion to that format to other tools (e.g. dos2unix, csv2tsv).

Option 1 is largely in place with PRs #314 and #320, but the test suite still needs work to test it fully. Tasks:

  • Detection of Windows newlines when on a Window platform, same as it is being done on Unix. (PR #320)
  • Have files with Windows newlines (or platform newlines) in the test suite so these cases are tested.

Option 2 might be the preferred option in many traditional applications, but it is not clear if this is a good choice for data mining tools. In particular, it is very common to share data files between people, platforms, and tools. In such environments Unix newlines will be preferred. Switching to Windows newlines on Windows machines may be more an annoyance than a benefit.

Option 3, reading both newline forms, but writing Unix newlines, has some nice properties. And, it might be easier done than expected, as most tools use bufferedByLine. In particular, bufferedByLine.front handles newlines. However, a number of tools have their own reader functionality, so it would still be necessary to have a test suite for each tool. And, it is not really necessary given the availability of tools like dos2unix. Still, this option may be worth consideration.

Option 4, full customization of newline handling, would provide the most complete solution. However, it has a material downsides. It creates additional user complexity in the form of additional command line arguments. It also creates complexity in the tools and test suite. At present these downsides seem to outweigh the benefits.

Other issues

  • Floating point number formatting - This is described under "Disabled unit tests" above. This affects primarily tsv-pretty when printing floats in formatted forms. Appears to affect a relatively small number of forms, though it is undesirable when it occurs.
    Update (03/14/21): This has been addressed in DMD 2.096, PR #7757 by moving the work into Phobos. This should eliminate this problem, especially when the LDC release with this version is available.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.