# Trace Exporters

## Regenerating Jaeger Thrift

_The instructions below use docker, but this is optional._

_Depending on your setup there may be permissions complications that require using`-u`_

Startup a Debian bullseye image

```
docker run -it -v $PWD:/out debian:bullseye-slim
```

Install the thrift-compiler

```
$ apt-get update
$ apt-get install thrift-compiler wget
```

Verify the version of the compiler matches the version of `thrift` in [Cargo.toml](./Cargo.toml)

```
$ thrift --version
Thrift version 0.13.0
```

Get the IDL definition

```
$ wget https://raw.githubusercontent.com/jaegertracing/jaeger-idl/master/thrift/jaeger.thrift https://raw.githubusercontent.com/jaegertracing/jaeger-idl/master/thrift/zipkincore.thrift https://raw.githubusercontent.com/jaegertracing/jaeger-idl/master/thrift/agent.thrift
``` 

Generate the code

```
$ thrift --out /out/src/thrift --gen rs agent.thrift
$ thrift --out /out/src/thrift --gen rs jaeger.thrift
$ thrift --out /out/src/thrift --gen rs zipkincore.thrift
```

Patch up imports

```
sed -i 's/use jaeger;/use super::jaeger;/g' /out/src/thrift/agent.rs 
sed -i 's/use zipkincore;/use super::zipkincore;/g' /out/src/thrift/agent.rs
```

Remove the clippy line

```
#![cfg_attr(feature = "cargo-clippy", allow(too_many_arguments, type_complexity))]
```