►
From YouTube: Rust Cologne: Rust on FreeBSD
Description
https://media.ccc.de/v/rustcologne.2018.11.rust-on-freebsd
FreeBSD: What is it?
Rust on FreeBSD: State of the art.
How to build a FreeBSD package for a Rust project.
Luca Pizzamiglio
A
A
Welcome
everyone
I'm
Luca,
it's
Emilio,
it's
complicated
enough
I
will
talk
about
rust
on
three
BC.
Who
am
I
I'm,
pretty
the
user
since
long
ago,
I
become
contributor
in
2011,
and
now
I
am
vodka
meter
since
one
year
for
one
year
now,
my
main
work
on
FreeBSD
is
about
packages
and
so
on,
but
I
have
working
in
the
past,
also
the
kernel
side
and
so
on,
but
I
would
speak
more
later.
The
problem
today
is
kind
of
small
introduction.
A
What
FreeBSD
is
I
guess
a
lot
of
people
know
more
or
less
what
it
is,
but
just
to
make
things
clear.
So
we
are
on
the
same
page,
what's
the
state
of
rust
on
FreeBSD
currently
and
then
kind
of
a
way
how
four
basic
packages
works
and
how
is
possible
to
provide
packages
of
rubies
the
applications
on
FreeBSD,
how
it
works
and
how
was
the
challenges
behind
it?
A
As
you
see,
there
is
a
small
line
here.
That
term
is
the
UNIX
family
and
the
unix-like
systems.
This
is
you
can
find
it
on
on
Wikipedia
sent
on
Saturday
picture
love,
as
you
see
here,
there
is
Linux
is
an
independent,
completely
independent
tree.
As
everyone
knows,
the
history
of
Linux
Linux
Tourville
started
1991
its
own
tree
and
it
evolved
until
now,
and
then
this
is
the
UNIX
family,
how
we
started
start
with
on
pdp-7
the
operating
system
and
evolved
in
a
different
way.
This
is
why
you
see
this.
A
Normally
people
calls
about
UNIX
as
a
family.
The
main
difference
is
that
you,
as
a
BSD
to
stay
for
Berkeley
software
distribution
means
the
license.
This
could
be
different
from
the
GPL
one.
The
BSD
license
allows
to
do
whatever
you
want
with
the
code.
It
means
that
this
was
this:
yellow
one
was
a
mixed
set,
open
source
closed
source,
and
from
that
you
can
see
closed
source
solutions
and
open
source
solutions.
Not
only
if
you
can
see
then,
for
instance,
FreeBSD
contribute
to
become
mecco
six.
A
A
This
is
open
BSD
and
at
a
certain
point,
more
or
less
here
freebies
the
developers
decide
to
port
the
PF,
the
file
of
a
Miss
D
in
freebsd,
and
at
that
point
those
projects
just
fork,
but
you
can
have
all
these
kind
of
features
moving
on
and
on
all
the
time-
and
that's
happened
with,
for
instance,
with
Solaris
became
open
Solaris
at
the
time
when
sand
was
still
existing
and
a
lot
of
features.
There
went
then
to
FreeBSD
like
data
fest
de
trĂªs
and
other
stuff,
like
that.
A
A
Yeah
and
for
instance,
a
lot
of
commercial
products
come
out
for
FreeBSD,
the
operating
system
of
the
I
was
called.
The
PlayStation
4
is
based
on
FreeBSD.
Basically,
what
Sonny
did?
Okay,
we
fork
it.
We
customize.
Obviously,
then
you
cannot
merge
back
stuff,
you
can
merge,
maybe
something,
but
then
you
can
fork
and
create
products
with
that
and
so
on.
So
that's
the
way
they
mean
differences
between
product
and
then
the
other
big
difference
is
that
how
we
know
Linux
Linux
is
normally
just
the
kernel
and
distribution
is
everything
else.
A
We
talk
about
distribution
today
and
every
distribution
has
its
own.
Installer
is
so
packages
system,
okay,
more
or
less?
Every
distribution
is,
but
they
decide
which
to
chain
use
how
they
split
packages
if
they
make
the
devil
version,
and
so
on.
Freebsd
is
a
slightly
different.
It's
not
just
the
kernel
is
the
kernel
boot
loader
and
it's
a
cost
war.
There
is
system,
libraries
to
chain
services
and
installer,
and
everything
else
is
packages.
A
A
That's
the
freebsd,
so
there
is
one
package
called
languorous.
Luckily
enough,
rust
support,
freebsd,
openbsd
netbsd
soberness
all
these
days,
so
it
there
is
no
problem
to
build
it.
This
package
is
just
last
stable,
so
the
last
was
stable
version.
Maybe
there
would
be
our
us
2018
for
the
future.
I'm,
not
really
sure,
but
we
see-
and
this
package
you
install
everything
plus
see.
Cargo
is
everything
that
is
needed
to
build
other
US
projects.
A
Rostov
is
supported
by
three
BC.
So
what
I
use
here
on
my
laptop
I
use,
FreeBSD
and
I
installed
everything
we
are
asked
up
so
I,
still
the
every
version
of
Arizona
idly
and
unstable
normally
but
base
as
well,
and
then
the
resupport
whip
review
rust
fmt
is
a
different
one,
so
you
have
to
install
the
component
called
last.fm
tip
review,
but
everything
is
is
there,
so
there
is
nothing
from
rust
prospective
that
is
missing
to
work
on
freebsd
for
editor
and
ide.
The
sad
news
is
there
is
no
support
on
electron
on
freebsd.
A
I
work
on.
That
is
a
long
story
out
of
topic,
but
we
would
have
no
adams
obvious
code.
Nothing
of
this
kind
of
stuff
run
off
a
busy.
Actually
I
have
an
external
running
on
my
laptop,
but
it's
complicated.
What
I
do
normally
I
use
vim.
So
we're
a
scream.
You
complete
me
sin,
tastic
I,
have
everything
I
can
ask
for
a
development
platform.
A
So,
but
this
is
more
desktop
user
usage
than
language
itself.
There
is
no
missing
features.
So
to
say
there
was
actually
a
problem
with
the
Lib
C
bindings.
We
will
solve
sometimes
ago
because
there
was,
as
you
know,
Lipsy
is
the
interface
between
the
operating
system
and
the
user
space
and,
as
you
see
in
C
operating
system
are
written
in
C,
so
this
interface
is
written
in
C
and
the
retro
type
wasn't
well-defined
between
multiple
unix's.
So
it's
an
integral
whatever.
That
means
in
C
integral
means.
A
broad
spectrum
of
possible
type
could
be.
A
A
What
is
the
package
and
how
package
works
on
FreeBSD
packages
are
more
or
less
the
same
as
every
distribution,
so
our
binary
blobs
that
you
just
installed
on
your
system
and
it
works
period,
FreeBSD
ports.
What
it
is
exactly
is
the
recipe
to
install
the
software
and/or
build.
The
package
basically
is
in
every
other
equals
for
arc
is
called
a.
A
You
are
subtly
that
you
have
package
based
basically,
this
kind
of
instruction
where
to
fetching
sources
how
to
dependencies
and
so
on,
and
this
is
called
FreeBSD
port
with
those
recipe
you
can
directly
install
your
software
or
you
can
build
a
package
as
a
huge
amount
of
them
and
how
it
works.
Is
it's
basically,
a
meta
system
based
on
make
file
that
support
every
possible
languages.
Every
possible
bit
mechanism,
so
ninja
see
make
maven
of
the
tools
and
so
on.
A
A
This
target
that
you
download
them
from
SourceForge
somewhere,
remember
it
and
you're,
not
just
configure,
make
making
stuff
and
how
that
works
is
that
configure
was
searching
for
dependencies
for
libraries
where
the
libraries
are
and
where
the
includes
are
C
or
C++
normally
so
prepare
it
will
make
files
and
you
can
make
it
builds
everything.
And
then
you
may
make
install
and
install
your
program
or
your
libraries
in
your
system.
A
So
that
is
basically
the
base
how
to
build
a
package
come
from.
There
are
multiple
targets
you
have
make
fetch
two
fresh
batteries,
make
checksum
to
verify
that
those
binaries
are
the
supposed
one
may
extra
start.
Binaries
Mac
patch
is
an
optional
step
to
apply
local
patches
may
configure,
render
configure
make
build,
will
build
your
program,
make
stage
will
install
the
program
in
a
kind
of
a
sandbox,
and
then
this
sandbox
can
be
used
to
install
your
program
to
your
system
or
to
create
a
package,
and
this
is
how
an
FreeBSD
those
FreeBSD
ports
works.
A
A
Why
I
put
that
there?
Basically
there
is.
There
was
some
years
ago,
an
effort
between
Linux
distributions
and
OBS.
These
was
this
effort
called
reproducible
build.
It
was
an
effort
to
be
able
to
build
packages
in
a
reproducible
way.
That
means
that
if
I
run
the
build
twice,
the
output
should
be
exactly
the
same.
A
So
they
start
to
understand
how
to
make
this
possible
and
so
on,
and
they
came
out
with
several
solution.
One
is
okay:
you
have
to
provide
the
checksum
of
your
sources
because
you
know
there
is.
You
are
building
software
provided
by
someone
else
and
this
someone
else
can
be
nice
and
changed
the
version
of
number
of
your
packages.
If
it's
changed
something,
but
not
everyone
is
nice.
A
So
if
someone
is
make
some
dirty
things,
oh
I
made
her
come
by
make
a
tag,
but
then
there
was
a
bug:
I
don't
want
to
make
a
new
Terry.
There's
several
in
the
in
the
past
there
were
several
bad
situations
or
to
avoid
tempering
the
port
recipe
host,
also
the
checksum
of
your
binaries,
so
it
can
be
verified.
So
when
the
package
system,
the
package
builder,
download
everything
that
verify
everything
everything
has
to
be
consistent,
the
same
time
and
so
on,
but
imagine
to
the
the
freebies
deep
package
builder:
it's
an
open
source
project.
A
A
A
A
Ideally,
what
you
want
to
do
is
make
fetch
with
fetch
creative
crate,
full
dependencies,
make
checks
and
will
verify
those
crates
may
extract,
will
extract
them,
and
actually
this
it's
not
really
true,
it's
here
and
will
test
cargo
to
download
to
use
the
download
crates
instead
of
use
the
github
provide
them
in
the
internet
ones.
So
to
say,
and
then
finally,
here
we
can
say:
okay
make
built,
I
can
use
cargo
build
language
mixed
age.
A
This
is
tedious,
but
there
is
some
utility
to
do
that,
and
not
only
the
license
problem
that
before
was
mentioned,
there
is
a
specific
target
to
make.
You
can
say.
Please
tell
me
all
the
licenses
of
old
Chris.
There
is
dependency,
so
you
can
have
the
list
of
all
licenses
and
you
can
see
probably
that
there
are
some
conflicting
licenses
in
what
you
are
doing
or
something
like
that,
but
we
will
get
and
it
with
more
with
that.
A
Basically,
when
you
have
a
rasp
program,
the
rust
project
last
application,
do
you
want
to
create
a
package
you
use?
This
uses
cargo
that
will
do
more
or
less
everything
that
we
show
here
automatically
for
you,
so
it's
already
in
the
framework,
so
you
need
to
do
basically
almost
nothing.
The
thing
you
have
to
do
is
to
use
these
additional
targets
called
cargo
crates.
It
will
give
you
automatically
the
list
of
all
Chris,
that's
with
version
that
your
application
needs,
and
then
we
make
make
some.
A
A
A
Is
the
information
about
all
the
packages
to
be
downloaded?
So
you
see
every
single
create?
This
is
dependency.
There
is
the
checksum
and
the
size.
But
what
is
more
interesting
is
here.
This
is
basically
the
recipe
you
have
to
specify
the
part
name,
the
version
some
beta
information
there
there.
What
is
important
is
the
use,
this
cargo
that
basically
tells
these
meta
environments
to
use
cargo
and
rust
to
build
everything.
This
is
our
small
information
to
tell
that
this
project
is
hosted
on
github,
so
it
would
take
Pizza
means
accounts.
A
A
There
has
to
be
specified
there,
and
only
one
thing
that
is
missing
in
cargo
is
that
in
normally
you
want
to
install
strict,
comma
or
stripped
executables.
There
is
a
kind
of
mold
passage
that
you
step
that
you
can
do
on
binaries
to
reduce
the
final
size.
It
makes
this
a
bit
less
debuggable,
but
to
deliver
release
versions.
You
want
to
I
mean
I,
guess
it
had
30
or
40
percent
of
the
size
of
a
statically
compiled
binary.
A
B
B
A
Whatever
Italy,
it's
open
that
your
project,
it
looks
automatically
in
the
cargo
lock
if
it's
not
there,
it's
automatically
open
it
and
it
created,
and
then
it
downloads
now
is
for
some
reason.
My
network
doesn't
work
in
turn
loads,
then
all
possible
other
crates.
To
give
you
a
full
foot
possible,
a
full
list.
A
A
A
A
It
replaced
creates
a
yo
with
a
custom
sources
to
use
a
specific
directory,
so
in
this
way,
is
cheating
cargo
and
telling
a
don't
use
github,
whatever
great
Co,
but
use
this
directory
already
filled
up
with
all
the
crates
that
you
need,
and
in
this
in
doing
this
way,
you
don't
need
any
internet
connection
to
download
anything
anything
before
your
stuff
in
a
proper
way.
You
cheeks
a
cargo
to
use
the
local
version
of
stuff,
and
you
also
run
card
update,
making
sure
that
is
happy
and
then
the
cargo.
A
There
are
and
install
is
basically
rancagua
stall
installing
in
the
proper
stage
directory,
and
then
everything
that
is
more
or
less
automatically
done.
There
is
an
additional
target
you
can
make
test
if
you
run
run
test
provided
by
your
package
and
it
is
supported
as
well,
and
there
are
these
two
additional
helper
target.
One
is
cargo
crate.
What
we
try
to
run
before
that
basically
provides
you
the
full
list
of
all
dependencies
with
versions,
so
all
the
crates
with
versions
and
something
that
others
project
to
to
get
these
things,
but
also
cargo
crates
licenses.
A
It
will
extract
all
licenses
from
all
crates
automatically
giving
you
the
full
list
of
licenses
of
all
dependencies,
and
that
would
be
probably
a
problem
in
the
future,
because
when
you
have
a
statically
linked
blob
and
you
have
creates
their
gplv3,
something
that
are
more
permissive
and
they
are
not
theoretically
allowed
to
coexist.
So
not
every
licence
is
compatible
to
the
other
ones.
A
This
one
aspect
that
is
not
really
rust,
oriented
and
Ares
does
I
just
play
more
left
with
it.
What
that
means,
if,
in
your
cargo
crates,
there
is,
for
instance,
the
gap
Texas
who,
whatever
version
it
will
ok
include,
basically,
it
will
add
the
needed
library
dependencies.
The
gates
is
guess,
everyone
knows.
Those
sees
normally
are
the
flapper
to
see
code.
So
it's
automatically
for
the
already
known
grace
that
has
binary
dependencies.
A
A
A
A
B
A
Zero
one
five
and
there
is
a
native
TLS
zero
point
two,
but
because
the
former
version
use
this
great,
so
you
cannot
update
both
native
TLS
used
open
an
open,
SSL,
0.9
0.9
use
an
older
version
of
open
SSL
sis
that
only
supports
open,
SSL,
1.10
freebies,
the
update
to
open
open,
say
one
point,
one
point:
one:
it
doesn't
build
and
there
are
some
crates
using
open,
SSL
one
or
ten
zero
to
ten,
and
it
works.
Great
other
doesn't
work
the
usual
way
to
solve
this
kind
of
issues.
A
This
patch
step
and
providing
a
patch
you
don't
have
really
to
read
it,
but
the
original
one
when
I
just
download
it.
This
patch
will
remove
okay.
This
is
not
important,
but
it
will
remove
OpenSSL
from
the
dependencies
of
native
TLS
itself,
a
use,
the
newer
one
it
will
remove
from
cargo
lock,
also
open
SSL,
0
94,
and
because
that
was
the
only
one
using
bit
Flags
0
9
1.
It
will
remove
also
b-flat
0
9
1,
because
it's
induced
it
will
clean
up,
removing
checksum
and
so
on,
and
then
we
will
apply.
A
The
patch
to
native
TLS
do
is
basically
in
the
Gita
in
github.
You
see
the
commit
of
natty
TLS
that
move
from
the
former
version
of
open
SSL
to
the
new
one.
Take
this
patch
put
in
there
create
just
a
you,
a
huge
big
patch
that
solve
this
issue
using
basically
net
ET
les
1.5.
With
this
small
patch
remove
the
former
chris
dependencies
and
everything
magically
works,
I
mean
I,
didn't
develop
this
kind
of
stuff,
but
the
native
TLS
yeah
I
did
that's
yeah,
and
that
is
quite
typical.
In.
A
In
packaging
system,
when
you
have
to
find
a
balance
with
your
system,
how
its
configured
and
certainly
they
come
from
outside,
is
design
a
different
way
if
it
doesn't
fit
so
I
guess
every
other
distribution
does
similar
things.
Pretty
sure
that
if
you
want
the
last
thing
running
with
the
old
version,
after
other
things
like
that,
what
is
funny
is
normally
previously.
A
A
In
the
list
of
crazed
are
the
dependencies
there
is
a
compiled
on
previously
and
they
have
to
download
all
of
them
all
of
them.
You
have
to
download
them
cargo
wants
them
there.
Then
it
decide.
Obviously
if
they
are
needed
or
not.
Okay,
this
is
not.
Windows
could
be
little
micro,
six,
whatever
those
have
not
loaded,
because
when
you
verify
at
the
beginning,
everything
has
to
be
there.
That
is
also
I.
Don't
know
that
every
operating
system
has
to
be
there.
A
Then
cargo
decide
to
ignore
when
they
bills,
but
at
the
beginning,
in
the
cargo
lock,
they
are
present
because
in
the
cargo
lock
pull
whatever
reasons
there
are
other
craze.
They
want
to
use
them
and
so
on,
so
you
always
have
to
I
try
to
remove
them
like
get
it
up.
Green,
it's
funny
enough
to
have
to
download
Windows
code
for
the
times,
but
that's
sudden
that
happens
all
the
time.
A
A
C
D
I
maintain
a
sis
crate
for
binding
to
a
seed
library
and
I
was
wondering.
Is
there
anything
I
could
do
to
make
your
life
easier,
so
it
will
work
on
FreeBSD
without
nasty
patches
being
needed,
because
this
is
quite
a
niche
library
and
I.
Don't
see
a
lot
of
people
working
magic
to
make
it
compile
the.
A
Only
thing
that
is
really
important
is
to
use
the
last
version
of
grace
period
because
for
how
the
I
mean
these
dependencies
create
that
you
don't
see,
that's
why
these
features
that
Roz
provide
is
really
useful.
You
don't
want
this
duplicated
stuff.
If
you
have
bit
flex
0
9
a
big
fat,
0
10,
the
0
9
is
abandoned.
It's
not
used
anymore
I
mean
the
developers
just
released
a
new
version.
A
There
are
only
maintaining
the
last
version,
they're,
not
maintaining
the
former
version
normally,
so
if
there
is
a
back
there
or
whatever,
they
are
still
using
some
deprecated
stuff
in
this
case
open
it
yourself,
because
it's
a
shared
library.
If
you
want
shared
libraries,
you
have
to
know
that
ok,
the
last
version
is
supporting
the
last
version
of
the
other
things.
So
it's
the
only
thing
is
really
to
keep
all
dependencies
really
up
to
date
and
everything
has
come.
Hopefully,
you.
D
A
A
Here,
as
you
can
see,
normally
it's
just
oh
you
need
see,
may
ok,
I!
You
did
means
that
you
need
seem
a
in
this
case
or
free
type.
You
want
free
type.
This
is
the
way
how
you
express
dependencies.
Sometimes
you
need
that
kind
of
stuff,
for
whatever
reasons
additional
environment
variables
for
cargo
to
know
how
to
build
them,
and
one
typical
example
is
I,
know
past
a
light
problem
with
likies.
That
was,
for
instance,
how
to
do
it.
If
there
is
multiple
ways
to
build
your
system.
A
Ok,
you
need
some
environment
in
cargo
to
expressly
tell
exactly
how
to
do
it
and
normally
because
package
config
yeah
there
is
that
for
package
conflict,
because
it's
not
native
vs
this
stuff,
but
they
are
added
like
this,
for
instance,
is
pretty
this
onigumo?
Ok,
don't
use
the
bundle,
one
use
the
system
one
and
use
the
dynamic
one
instead
of
the
static
one.
This
is
what
this
line
means,
but
they
have
to
open
the
code.
Look
at
the
car.
A
How
has
to
be
built
and
use
these
environment
variables
to
do
exactly
what
I
want
and
that's
the
way
that
you
can
provide
if
you
want
to
offer,
is
only
a
reasonable
way.
The
thing
is
normally.
If
you
read
all
the
instructions,
everyone
says,
use
the
static
version,
but
then
as
distribute.
If
you
want
kind
of
a
distribution,
you
don't
want
static
version
at
all.
You
want
dynamic,
because
you
don't
want
to
rebuild
everything
all
the
time.
Also,
you
cannot
track
them
down
easily
because.
A
It's
quite
hard
issues,
hard
I
mean
it's
especially
bundled
version
of
stuff
is
really
bad
for
distribution
because
you
lose
track
of
them.
You
do
they
are
installed.
If
there
is
a
CV
security
problem
on
this
environment,
then
it
statically
compiled
you
don't
know
that
is
in
because
when
you
look
at
your
system,
you
don't
know
it's
statically
compiled
in
you
and
then
you
lose
it.
So
you
have
technical
to
extend
every
vulnerability
to
all
the
coded.
Statically
linkages:
it's
a
mess.
So
that's
why
that's.
D
A
The
point
is
from
your
point
of
view:
you
want
to
make
it
easy
for
everyone
to
use
it,
so
you
obviously
want
to
support
multiple
ways.
So
you
provide
a
bundle,
because,
if
he's
not
there,
you
want
abandon
one
I.
Guess
it's
quite
okay,
the
poor,
the
most
important
thing
you
have
to
provide
a
way
to
use
an
external
one.
All.
A
A
A
Is
if
they're
not
there,
it's
right
to
means
download
them
for
whatever
reason,
I,
don't
not,
really
sure
why
it
doesn't.
Basically,
because
you
are
cutted
off
from
Internet,
has
okay,
it
is
the
only
sources
to
be
there.
So
there
is
no
cargo.
Are
you
whatever?
So
probably
that's
the
main
issues
there,
because
I
don't
recall
that
is
that
I
downloaded
no
I,
don't
I,
don't
not
really
sure,
but
I
think
it
is
I
tried
once
and
I
say:
okay,
you
know
too
much
work
for
meaning
yeah,
meaningful
improvement,
Thanks.
E
A
It
complains,
because
in
the
cargo
log
those
are
the
list
of
packages
are
all
of
them.
There
I
mean
you
have
to
look
at
the
format
of
cargo
law.
It
doesn't
make.
This
difference
is
the
cargo
tamil
that
there
is
this
difference,
and
then
you
decide
to
use
them
or
not
depending
what
you
are
doing,
but
in
the
cargo
loader
is
all
of
them.
So
if
you
are
cut
off
from
internet,
everything
that
is
in
the
car
below
has
to
be
there
I
see.
E
E
A
The
so
the
test
target
in
the
make
file
is
available,
so
you
can
use
it
and
automatically
run
the
car
got
it.
Basically,
you
can
invoke
cargo
tests.
We
are.
The
make
framework
is
not
performed
in
the
package
build
process,
but
you
can
do
it,
I
mean
if
the
test
is
supported,
but
it's
not
performed
every
time.
I
mean
to
build
those
packages.
It
takes
do
two
days
on
a
big
server,
so
they
try
to.
Basically
the
point
is
for
every
package.
A
There
should
be
a
maintainer
and
then
maintain
and
then
irresponsible
to
the
well-being
of
your
package
or
the
port
whatever
so
its
responsibility
of
the
maintainer
to
RAM
make
test
in
every
FreeBSD
version
and
so
on,
and
then
okay,
everything
is
fine.
Okay,
it's
not
in
the
release
process
per
se.
If
speeded
up
their
responsibility
is
booted
up.
The
maintainer
run
the
test
and
then
the
release
process
just
create
the
package
for
everyone
else.
A
It's
would
be
nice
to
run
them
both,
but
for
this
assignment
in
gdb,
if
you
run
make
tests
on
gdb,
it
would
take
two
hours
just
to
run
it
and
there
is
1,100
failure.
If
you
running
on
Linux,
there
are
700
failures,
whatever
reason,
so
it
doesn't
Inc
really
also
it
depends
them
of
the
quality.
You
have
almost
imagine
when
you
create
packages,
you
are
dealing
with
software
or
someone
else,
and
then
you
have
to
touch
there
somehow
to
make
things
that
works
reliably,
not
just
build
them,
and
sometimes
it's
just
hard.
E
Cool
thanks,
I
have
another
weird
question.
So
as
part
of
this
Eli
working
group,
we
were
talking
about
how
to
distribute
shell
completion
files,
make
files
whatsoever
you
as
a
package.
Maintainer,
are
probably
also
responsible
for
getting
the
files
out
of
the
build
and
putting
them
somewhere.
So
anyway,
we
can
help
you
set
some
convention,
you
love
to
use
and
want
us
to.
A
Basically,
every
shell
has
their
own
ad,
already
pre-configured.
Normally,
you
know
where
those
auto-completion
are
expected
to
land
and,
for
instance,
for
data
sage.
Okay,
yes,
a
lot,
they
didn't
mention
user
local
is
where
all
packages
are
installed
in
FreeBSD.
So
it's
quite
easy
to
know
what
is
packages
and
what
is
not
and
shares
at
the
sage
site
functions
where
everything
is
installed.
When
you
see
the
rust
package,
for
instance,
it
will
install
automatically
this
cargo
I
have
installed
a
la
critic.
Caliphate
I
still
automatically
I
mean
it's
part
10
of
the
package.
A
Those
files
can
exist
even
without
the
Pettitte
Sh
installed,
doesn't
really
matter
RG,
for
instance,
it's
a
strat
last
program
is
the
grep
substitution.
It
works
in
the
same
way,
just
build
our
us,
a
guest
to
to
create
out
of
completion
and
automatically
install
it.
So
it
one
is
there
it's
easy
to
be
used.
A
B
A
So,
as
far
as
I
know,
reducible
bills
are
an
effort
from
distributions
to
be
able
to
run
twice
the
same
codebase
and
say:
ok,
we
got
the
same
exactly
the
same
binary,
well,
the
exerting
with
shell.
If
you
make
an
hash,
it
comes
out
the
same
hash.
The
problem
is
mainly
the
amore
is
most.
The
biggest
issues
are,
for
instance,
there
are
some
programs
that
in
the
version
they
put
also
the
timestamp
on
when
they
are
built
all
this
kind
of
stuff.
Those
kind
of
thoughts
should
be
avoided
at
all.
C
F
F
I
go
back
to
the
to
the
make
file.
Please
I
was
wondering
you
said
you
are
stripping
the
library
after
the
the
binary
afterwards
isn't
built,
touched
off
release
enough.
No,
it's
not
doing
it
by
using
both
touched
off
release
because
in
the
Comanche
said
you
showed
you
didn't
and
I
was
wondering
if
there's
a.
F
F
A
Is
five
hundred
years?
Several
you
see
the
reason
it's
built.
Basically,
this
cargo
argument
collecting
this
environment
stuff
is
collecting
these.
For
instance,
pretty
nice,
if
you
specify
typically
for
C
or
C++
the
architecture
or
the
CPU
optimization,
is
converting
in
the
proper
reflects
and
so
on.
So
it's
building
automatically
all
this
kind
of
stuff
in
between
and
somewhere
there
is
release
all
right
cool.
If
you
specify
I
mean
there
is
a
general
knob,
it's
called
with
the
back.
A
In
this
case
we
will
create
all
packages
in
debug
version,
otherwise
it
will
be
released
and
then,
if
you
are,
for
instance,
this
is
the
way
you
can
activate
or
deactivate
features
crystal
for
education
is
using
cargo
features
all.
But
if
you
want
to
activate
some
of
them,
I
mean
they
try
to
mimic
all
the
possible
features
that
cargo
expose
in
this
way,
but
yeah
thanks,
I
guess
the
main
problem
with
strip
is
part
of
the
binutils.
B
A
Yeah,
actually,
the
sensei
I
discovered
when
I
was
doing
this
presentation.
Normally
you
specify
the
license
of
your
package
for
every
package.
When
you
build
it,
you
don't
have
license
complaining,
hey,
there's
no
license.
Tell
me
something
something
I
discovered
doing.
This
presentation
was
that
it's
possible
to
extract
the
licenses
of
all
crates
that
you
are
depending
on
I,
mean
I.
Think
I
have
some.
A
A
Theoretically,
you
have
to
do
it.
I
have
no
idea
how
to
do
them.
I
mean
something
I
discovered
two
days
ago.
I
did
not
have
time
to
play
with
it.
Theoretically,
you
should
put
them
all
the
licenses.
They
are
needed.
If
it
is
double
license,
you
have
to
say
double
license.
There
is
a
full
license
framework.
A
A
G
B
G
At
least
MIT
has
that
I'm
not
sure
what
ESD
actually
but,
like
you,
have
a
requirement
to
reproduce
that
exact
copying
notice,
which
is
probably
also
the
reason
that
you
had
fast
like
these
deductive
and
something
in
the
last
folder.
So
you
would
then
just
add.
One
line
like
license
file
equals
something,
and
that
would
you
have
to
split.
A
A
A
Mean
it's
part,
those
are
I
mean
I,
guess
you
know,
that
is
the
cat's
replacement
written
in
rust,
suggested
to
use
it's
great
and
yeah
I,
just
marked
in
the
the
make
file
that
is
Apache,
and
then
it
comes
automatically
it
shipped
automatically
that
license
with
it.
This
is
how
this
package,
all
the
files
that
are
installed
with
this
package
automatically.
You
just
specify
the
lysis
and
it
carry
the
license
in
the
proper
way.
So
yeah.
G
A
G
A
G
A
Internet,
yet
here
also
for
every
I,
mean
it's
true
for
every
package
it
to
install.
There
is
a
copy
of
the
license,
but
in
personal
there
is
a
copy
of
the
license
for
every
package
that
you
are
installing,
so
it's
not
busy,
but
every
one
of
them
here,
but
then
with
PC
and
I
know.
This
is
really
permissive,
but
I
yeah.