[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