Bug 1131492

Summary: moarvm: package contains bundled libraries
Product: [Fedora] Fedora Reporter: Jakub Čajka <jcajka>
Component: moarvmAssignee: Gerd Pokorra <gp>
Status: CLOSED CURRENTRELEASE QA Contact: Christopher Meng <i>
Severity: high Docs Contact:
Priority: urgent    
Version: rawhideCC: dan, gp, i
Target Milestone: ---Keywords: Tracking
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-09-10 02:38:26 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 504493    

Description Jakub Čajka 2014-08-19 12:16:29 UTC
Package violate packaging guidelines( https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries and https://fedoraproject.org/wiki/Packaging:Treatment_Of_Bundled_Libraries ) as it contains bundled libraries which are used during package build(removing 3rdparty dir in %prep breaks build in %build phase):

tinyMT(probably not a big deal as MT is approved to be bundled, but still should be brought up to FPC https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries#Exceptions , also breaks build on s390(x))
libatomic_ops
uthash 
libuv
dyncall
libtommath

3rdparty/sha1 3rdparty/linenoise 3rdparty/msinttypes build passes without them.

Please look in to it.

Comment 1 Dan Horák 2014-08-19 12:25:54 UTC
rpmls moarvm-debuginfo-0.2014.04-3.fc20.x86_64.rpm returns:

...
drwxr-xr-x  /usr/src/debug/MoarVM-2014.04
drwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty
drwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/dyncall
drwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/dyncall/dyncall
-rw-r--r--  /usr/src/debug/MoarVM-2014.04/3rdparty/dyncall/dyncall/dyncall.h
-rw-r--r--  /usr/src/debug/MoarVM-2014.04/3rdparty/dyncall/dyncall/dyncall_types.h
-rw-r--r--  /usr/src/debug/MoarVM-2014.04/3rdparty/dyncall/dyncall/dyncall_value.h
drwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/dyncall/dyncallback
-rw-r--r--  /usr/src/debug/MoarVM-2014.04/3rdparty/dyncall/dyncallback/dyncall_args.h
-rw-r--r--  /usr/src/debug/MoarVM-2014.04/3rdparty/dyncall/dyncallback/dyncall_callback.h
drwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/dyncall/dynload
-rw-r--r--  /usr/src/debug/MoarVM-2014.04/3rdparty/dyncall/dynload/dynload.h
drwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/libatomic_ops
drwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/libatomic_ops/src
drwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/libatomic_ops/src/atomic_ops
-rwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/libatomic_ops/src/atomic_ops/generalize-small.h
drwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/libatomic_ops/src/atomic_ops/sysdeps
drwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/libatomic_ops/src/atomic_ops/sysdeps/gcc
-rwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/libatomic_ops/src/atomic_ops/sysdeps/gcc/x86.h
drwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/libatomic_ops/src/atomic_ops/sysdeps/loadstore
-rwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/libatomic_ops/src/atomic_ops/sysdeps/loadstore/atomic_load.h
-rwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/libatomic_ops/src/atomic_ops/sysdeps/loadstore/atomic_store.h
-rwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/libatomic_ops/src/atomic_ops/sysdeps/ordered_except_wr.h
-rwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/libatomic_ops/src/atomic_ops/sysdeps/read_ordered.h
drwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/libtommath
-rw-r--r--  /usr/src/debug/MoarVM-2014.04/3rdparty/libtommath/bn_mp_get_long.c
-rw-r--r--  /usr/src/debug/MoarVM-2014.04/3rdparty/libtommath/bn_mp_set_long.c
-rw-r--r--  /usr/src/debug/MoarVM-2014.04/3rdparty/libtommath/tommath.h
drwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/libuv
drwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/libuv/include
-rw-r--r--  /usr/src/debug/MoarVM-2014.04/3rdparty/libuv/include/uv-unix.h
-rw-r--r--  /usr/src/debug/MoarVM-2014.04/3rdparty/libuv/include/uv.h
drwxr-xr-x  /usr/src/debug/MoarVM-2014.04/3rdparty/tinymt
-rw-r--r--  /usr/src/debug/MoarVM-2014.04/3rdparty/tinymt/tinymt64.c
-rw-r--r--  /usr/src/debug/MoarVM-2014.04/3rdparty/tinymt/tinymt64.h
-rw-r--r--  /usr/src/debug/MoarVM-2014.04/3rdparty/uthash.h
...

so even for libs, that are set as BuildRequires, some bundled files are used

Comment 2 Christopher Meng 2014-08-19 14:29:12 UTC
It finally sucks. 

Gerd, now you should understand me why I didn't want to approve it at the time.

For uthash, I don't consider it as a bundled library, because the bundled library policy is unclear to me, you can check the mail thread on devel.

uthash is a header only library and the one shipped in moarvm is not the same as the current version in Fedora, and moarvm has done some modifications on it. 

I will track this bug and get these craps out ASAP.

Comment 3 Gerd Pokorra 2014-08-19 14:55:37 UTC
The moarvm package do not bundle:

3rdparty/sha1 3rdparty/linenoise 3rdparty/msinttypes

During the review special options was added with upstream and they are used at the configuration:

%{__perl} Configure.pl --prefix=%{_usr} --has-libtommath --use-readline \
                       --has-sha --has-libuv --has-libatomic_ops

The directories 3rdparty/sha1 3rdparty/linenoise 3rdparty/msinttype are only not deleted before the build.

Only uthash.h is really used wich is not the same as in Fedora.

Comment 4 Dan Horák 2014-08-19 15:15:08 UTC
(In reply to Gerd Pokorra from comment #3)
> The moarvm package do not bundle:
> 
> 3rdparty/sha1 3rdparty/linenoise 3rdparty/msinttypes
> 
> During the review special options was added with upstream and they are used
> at the configuration:
> 
> %{__perl} Configure.pl --prefix=%{_usr} --has-libtommath --use-readline \
>                        --has-sha --has-libuv --has-libatomic_ops

but the buildsystem is not 100% correct so some of the bundled files still are used, as you can see in my comment #1, that's why is recommended to remove the unbundled files before build
 
> The directories 3rdparty/sha1 3rdparty/linenoise 3rdparty/msinttype are only
> not deleted before the build.
> 
> Only uthash.h is really used wich is not the same as in Fedora.

Comment 5 Gerd Pokorra 2014-08-19 15:34:31 UTC
(In reply to Dan Horák from comment #4)
> but the buildsystem is not 100% correct so some of the bundled files still
> are used, as you can see in my comment #1, that's why is recommended to
> remove the unbundled files before build

Okay! I will try a build with first removing the files excluded uthash.h.

Comment 6 Gerd Pokorra 2014-08-20 05:27:38 UTC
The build works if I add the line:

rm -r 3rdparty/sha1 3rdparty/linenoise 3rdparty/libtommath

To my surprise it do not build if I remove more.
For example: 3rdparty/libatomic_ops

I will look daeper for the reason, may be I need some days to find a solution, because I am working also on other things.

Comment 7 Gerd Pokorra 2014-08-22 13:03:34 UTC
To libatomic_ops:

I forgot to add the RuildRequires libatomic_ops-devel.
It is corrected.

MoarVM rebuilds are done for f21 and f22 (rawhide):

f21: https://koji.fedoraproject.org/koji/buildinfo?buildID=569986

f22: https://koji.fedoraproject.org/koji/buildinfo?buildID=569984


I also add in the specfile the line:
rm -r 3rdparty/sha1 3rdparty/linenoise 3rdparty/libatomic_ops 3rdparty/msinttypes

In Fedora 20 the libatomic_ops version is: 7.2d
In MoarVM the bundled libatomic_ops version is: 7.3alpha3

So there is a problem to do this in Fedora 20. I ask for updating libatomic_ops in Fedora 20 but the package maintainers have reasons not to do this.

Next I will have a deeper look to libtommath and MoarVM. I hope I will find some time for it soon.

Comment 8 Fedora Update System 2014-08-28 10:11:50 UTC
moarvm-0.2014.04-5.fc21 has been submitted as an update for Fedora 21.
https://admin.fedoraproject.org/updates/moarvm-0.2014.04-5.fc21

Comment 9 Fedora Update System 2014-08-28 10:35:46 UTC
moarvm-0.2014.04-4.fc20 has been submitted as an update for Fedora 20.
https://admin.fedoraproject.org/updates/moarvm-0.2014.04-4.fc20

Comment 10 Gerd Pokorra 2014-08-30 04:15:47 UTC
Remove of libtommath source files is added.

The rebuilds are at:

F20:
http://koji.fedoraproject.org/koji/taskinfo?taskID=7473745

F21:
http://koji.fedoraproject.org/koji/taskinfo?taskID=7473645

F22:
http://koji.fedoraproject.org/koji/taskinfo?taskID=7473588


Now there are 3rdparth source files are removed as much as possible.

This is added to the specfils:

# make sure to not bundle this
rm -r 3rdparty/sha1 3rdparty/linenoise 3rdparty/msinttypes
%if 0%{?fedora} > 20
rm -r 3rdparty/libatomic_ops
%endif
#
# The upstream libtommath doesn't have the conversion from and to
# float/double that MoarVM needs. bn_mp_(get|set)_long.c are extentions of the
# origin libtommath source. The header files are needed to build.
rm `find 3rdparty/libtommath -type f ! -name '*long.c' -a ! -name '*.h'`


I did not found the software dnycall and tinymt in Fedora 20. So this software needed to be included. Let me know if I am wrong.

Comment 11 Fedora Update System 2014-09-09 22:25:50 UTC
moarvm-0.2014.04-4.fc20 has been pushed to the Fedora 20 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 12 Fedora Update System 2014-09-23 04:50:24 UTC
moarvm-0.2014.04-5.fc21 has been pushed to the Fedora 21 stable repository.  If problems still persist, please make note of it in this bug report.