[Pkg-julia-devel] julia_1.0.0-1_amd64.changes REJECTED

Lumin cdluminate at gmail.com
Thu Aug 23 08:49:09 BST 2018


On Thu, Aug 16, 2018 at 09:55:11PM +0200, Bastian Blank wrote:
> On Wed, Aug 15, 2018 at 09:48:55AM +0000, Lumin wrote:
> > > -rw-r--r-- root/root   2093360 2018-08-14 12:28 ./usr/lib/x86_64-linux-gnu/libjulia.so.1.0
> > This is what I expected and is NOT a mistake.
> >      libjulia.so.1 (symlink) -> libjulia.so.1.1 (ELF shared object)
> 
> Whoops, I missed the symlink.  Usually someone uses the complete
> version, aka 1.0.0 for the filename.

So there is no problem with the SONAME/SOVERSION or package name.
 
> > > Please describe directly why you need debug infos.
> > Justification: Unable to pass unit test without debugging info.
> > Conclusion:
> >   1. keeping debugging info makes sense.
> 
> No.  You confuse reason with effect.  Some program error is the reason,
> the failing tests the effect.

At the bottom part of this mail you can find a julia code snippet,
extracted from Julia's unit test.

What I'm emphasizing here is, the debug info in those shared objects
are intensionally kept to preserve a good user experience and
avoid increasing maintainance burden.

This is the expected backtrace from the code snippet:

> ERROR: could not open file /tmp/y/____nonexistent_file
> Stacktrace:
>  [1] include at ./boot.jl:317 [inlined]
>  [2] include_relative(::Module, ::String) at ./loading.jl:1038
>  [3] include(::Module, ::String) at ./sysimg.jl:29
>  [4] include(::String) at ./client.jl:388
>  [5] top-level scope at none:0

This is the actual backtrace after stripping the shared objects:

> ERROR: could not open file /tmp/y/____nonexistent_file
> Stacktrace:
>  [1] include(::String) at ./client.jl:388
>  [2] top-level scope at none:0

Stripping the shared object is bad to both us Julia maintainers and
Julia upstream, because the users is always getting a problematic
backtrace and the bug reports will always possibly be problematic.

Especially when there is a problem in Julia's internal, such
incomplete backtrace is really not what we want to see.

Most importantly, policy chapter 10.1 says

> Note that by default all installed binaries should be stripped,
> either by using the -s flag to install, or by calling strip on the
> binaries after they have been copied into debian/tmp but before
> the tree is made into a package.

It is "SHOULD" instead of "MUST".

Is this answer acceptable now?

----------------------------------------------------------------------------

using Test
import Libdl

# helper function for returning stderr and stdout
# from running a command (ignoring failure status)
function readchomperrors(exename::Cmd)
    out = Base.PipeEndpoint()
    err = Base.PipeEndpoint()
    p = run(exename, devnull, out, err, wait=false)
    o = @async(readchomp(out))
    e = @async(readchomp(err))
    return (success(p), fetch(o), fetch(e))
end

# backtrace contains type and line number info (esp. on windows #17179)
for precomp in ("yes", "no")
    succ, out, bt = readchomperrors(`$(Base.julia_cmd()) --startup-file=no --sysimage-native-code=$precomp -E 'include("____nonexistent_file")'`)
    @test !succ
    @test out == ""
	println("DEBUG")
	println(bt)
	println("DEBUG")

    @test occursin("include_relative(::Module, ::String) at $(joinpath(".", "loading.jl"))", bt)
    lno = match(r"at \.[\/\\]loading\.jl:(\d+)", bt)
    @test length(lno.captures) == 1
    @test parse(Int, lno.captures[1]) > 0
end




More information about the Pkg-julia-devel mailing list