Bug 498390
Summary: | Review Request: rakudo - Perl 6 compiler implementation that runs on MoarVM | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Gerd Pokorra <gp> |
Component: | Package Review | Assignee: | Petr Pisar <ppisar> |
Status: | CLOSED ERRATA | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
Severity: | medium | Docs Contact: | |
Priority: | medium | ||
Version: | rawhide | CC: | bill-bugzilla.redhat.com, christoph.wickert, cweyl, emmanuel, fedora-package-review, notting, ppisar, thomas.moschny, wayland |
Target Milestone: | --- | Keywords: | Reopened |
Target Release: | --- | Flags: | ppisar:
fedora-review+
kevin: fedora-cvs+ |
Hardware: | All | ||
OS: | Linux | ||
URL: | http://rakudo.org | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2017-03-20 01:50:55 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Gerd Pokorra
2009-04-30 09:07:10 UTC
Do you have a timeframe in which you plan on submitting this? There is no timeframe, because nobody know how long it will take that the basis arrives (rakudo builds on an installed parrot). I also can not say how long the review will be. By be making some tests with an include parrot in the meantime. (So it will start when rakudo builds on an installed parrot and end when it is done. But then it think, it will be updated the next ten years a lot of times.) The first scratch build has a patch added for the file 'build/Makefile.in' so that the make starts. http://koji.fedoraproject.org/koji/taskinfo?taskID=1495665 There is to see that 'build/gen_objectref_pmc.pl' as to be patched as next. Parrot 1.4.0 and Rakudo 2009.07 is used. The next step to build Rakudo Perl 6 from the parrot package is done. The Spec- and SRPM-files on the FTP-Server are updated. URL of the current srcatch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=1539789 As next "dynpmc.pl" will be fixed. here, on f11 x86_64, the package builds and installs without error. > make test ... All tests successful. Files=29, Tests=236, 34 wallclock secs ( 0.09 usr 0.06 sys + 30.40 cusr 2.21 csys = 32.76 CPU) Result: PASS nice. I got a couple backtraces during spectest: http://fpaste.org/paste/20093 > make spectest ... Test Summary Report ------------------- t/spec/S12-attributes/class.rakudo (Wstat: 6 Tests: 26 Failed: 0) Non-zero wait status: 6 t/spec/S14-roles/basic.rakudo (Wstat: 6 Tests: 33 Failed: 0) Non-zero wait status: 6 Files=416, Tests=14575, 622 wallclock secs ( 4.60 usr 1.17 sys + 1599.25 cusr 61.22 csys = 1666.24 CPU) Result: FAIL URLs of successful koji scratch builds: F11: https://koji.fedoraproject.org/koji/taskinfo?taskID=1541662 F12: https://koji.fedoraproject.org/koji/taskinfo?taskID=1541637 The appropriate rakudo bug is: http://rt.perl.org/rt3//Public/Bug/Display.html?id=63360 The spec-file at the URL: ftp://ftp.uni-siegen.de/pub/parrot.rpms/rakudo/rakudo.spec it updated. The SRPM according to this spec has the URL: ftp://ftp.uni-siegen.de/pub/parrot.rpms/rakudo/SRPMS/rakudo-0.2009.07-2.fc11.src.rpm Successful scratch builds for F11 and F12 are at: http://koji.fedoraproject.org/koji/taskinfo?taskID=1570122 http://koji.fedoraproject.org/koji/taskinfo?taskID=1569940 The rpmlint output for the spec-file and the srpm has 0 errors and 0 warnings. The rpmlint output for the binary rpm has 0 errors and 1 warning. Looks good so far, stay tuned for the formal review. You should remove the "exit 0" statements because that prevents the debuginfo from being extracted. Then you can also remove the %define debug_package %{nil} line. REVIEW FOR b9e3e00e3ad9a0c99ea5b190c14fa84f rakudo-0.2009.07-2.fc11.src.rpm FAIL - MUST: rpmlint must be run on every package. The output should be posted in the review. $ rpmlint Desktop/rakudo-0.2009.07-2.fc11.src.rpm 1 packages and 0 specfiles checked; 0 errors, 0 warnings. $ rpmlint fedora/rpmbuild/RPMS/x86_64/rakudo-0.2009.07-2.fc11.x86_64.rpm rakudo.x86_64: W: unstripped-binary-or-object /usr/bin/perl6 see comment # 10 for a fix. FAIL - MUST: The package is named according to the Package Naming Guidelines: Versioning is not correct OK - MUST: The spec file name matches the base package %{name}, in the format %{name}.spec. FAIL - MUST: The package meets the Packaging Guidelines. RPM_OPT_FLAGS are not honored, SourceURLs not ok. OK - MUST: The package is licensed with a Fedora approved license and meets the Licensing Guidelines: Artistic 2.0 OK - MUST: The License field in the package spec file matches the actual license. OK - MUST: The license file from the source package is included in %doc. OK - MUST: The spec file is in American English. OK - MUST: The spec file for the package is legible. OK - MUST: The sources used to build the package match the upstream source by MD5 df841289a91a804a5bd2fe3125dfc06b OK - MUST: The package successfully compiles and builds into binary rpms on x86_64 N/A - MUST: If the package does not successfully compile, build or work on an architecture, then those architectures should be listed in the spec in ExcludeArch. OK - MUST: All build dependencies are listed in BuildRequires. N/A - MUST: The spec file handles locales properly with the %find_lang macro. N/A - MUST: Every binary RPM package (or subpackage) which stores shared library files (not just symlinks) in any of the dynamic linker's default paths, must call ldconfig in %post and %postun. N/A - MUST: If the package is designed to be relocatable, the packager must state this fact in the request for review, along with the rationalization for relocation of that specific package. OK - MUST: The package owns all directories that it creates (none except in docdir) OK - MUST: The package does not contain any duplicate files in the %files listing. OK - MUST: Permissions on files are set properly. Every %files section includes a %defattr(...) line. OK - MUST: The package has a %clean section, which contains rm -rf $RPM_BUILD_ROOT. OK - MUST: The package consistently uses macros, as described in the macros section of Packaging Guidelines. OK - MUST: The package contains code, or permissable content. N/A - MUST: Large documentation files should go in a -doc subpackage. OK - MUST: Files included as %doc do not affect the runtime of the application. N/A - MUST: Header files must be in a -devel package. N/A - MUST: Static libraries must be in a -static package. N/A - MUST: Packages containing pkgconfig(.pc) files must 'Requires: pkgconfig'. N/A - MUST: If a package contains library files with a suffix (e.g. libfoo.so.1.1), then library files that end in .so (without suffix) must go in a -devel package. N/A - MUST: In the vast majority of cases, devel packages must require the base package using a fully versioned dependency: Requires: %{name} = %{version}-%{release} OK - MUST: The package does not contain any .la libtool archives. N/A - MUST: Packages containing GUI applications must include a %{name}.desktop file, and that file must be properly installed with desktop-file-install in the %install section. OK - MUST: The packages does not own files or directories already owned by other packages. OK - MUST: At the beginning of %install, the package runs rm -rf $RPM_BUILD_ROOT. OK - MUST: All filenames in rpm packages are valid UTF-8. SHOULD Items: N/A - SHOULD: If the source package does not include license text(s) as a separate file from upstream, the packager SHOULD query upstream to include it. N/A - SHOULD: The description and summary sections in the package spec file should contain translations for supported Non-English languages, if available. OK - SHOULD: The the package builds in mock. OK - SHOULD: The package should compile and build into binary rpms on all supported architectures. OK - SHOULD: The package functions as described. N/A - SHOULD: If scriptlets are used, those scriptlets must be sane. This is vague, and left up to the reviewers judgement to determine sanity. N/A - SHOULD: Usually, subpackages other than devel should require the base package using a fully versioned dependency. N/A - SHOULD: The placement of pkgconfig(.pc) files depends on their usecase, and this is usually for development purposes, so should be placed in a -devel pkg. N/A - SHOULD: If the package has file dependencies outside of /etc, /bin, /sbin, /usr/bin, or /usr/sbin consider requiring the package which provides the file instead of the file itself. OTHER Items: OK - latest version packaged OK - timestamps are matching OK - Provides and Requires are sane: $ rpm -qp --provides rakudo-0.2009.07-2.fc11.x86_64.rpm rakudo = 0.2009.07-2.fc11 rakudo(x86-64) = 0.2009.07-2.fc11 Issues: - Use complete SourceURLs, see http://fedoraproject.org/wiki/Packaging/SourceURL - Version should be 2009.7, drop the leading 0. If you want a leading 0, put it in release. See: http://fedoraproject.org/wiki/Packaging/NamingGuidelines#Snapshot_packages - export CFLAGS="$RPM_OPT_FLAGS" to honor Fedora's compiler flags. Gerd is going to upload a new package in a few hours and I think can approve it. The spec-file at the URL: ftp://ftp.uni-siegen.de/pub/parrot.rpms/rakudo/rakudo.spec it updated. The SRPM according to this spec has the URL: ftp://ftp.uni-siegen.de/pub/parrot.rpms/rakudo/SRPMS/rakudo-2009.07-3.fc11.src.rpm Successful scratch builds for F11 and F12 are at: http://koji.fedoraproject.org/koji/taskinfo?taskID=1571582 http://koji.fedoraproject.org/koji/taskinfo?taskID=1571566 [gz016@vgerd2 beide]$ rpmlint rakudo.spec 0 packages and 1 specfiles checked; 0 errors, 0 warnings. [gz016@vgerd2 beide]$ [gz016@vgerd2 beide]$ rpmlint /home/gz016/rpmbuild/SRPMS/rakudo-2009.07-3.fc11.src.rpm 1 packages and 0 specfiles checked; 0 errors, 0 warnings. [gz016@vgerd2 beide]$ [gz016@vgerd2 beide]$ rpmlint /home/gz016/rpmbuild/RPMS/x86_64/rakudo-2009.07-3.fc11.x86_64.rpm 1 packages and 0 specfiles checked; 0 errors, 0 warnings. [gz016@vgerd2 beide]$ Let's see what we've got: OK - RPM_OPT_FLAGS are used OK - SourceURLs are correct OK - Versioning is correct One thing is left: make spectest is not running correctly, but this is something that you and upstream can work on once the package is in the repo. The Makefile also could need some changes, but for now the package is APPROVED Gerd, just setting fedora-cvs? is not enough, you also need to fill out the template from http://fedoraproject.org/wiki/PackageMaintainers/CVSAdminProcedure#New_Packages New Package CVS Request ======================= Package Name: rakudo Short Description: A Perl compiler for Parrot Owners: gerd Branches: F-11 InitialCC: gerd CVS done. The current Rakudo source only build from the Parrot package on the ppc64, i386 and x86_64 cpu-architecture. Interesting is that it build on ppc64 but not on ppc. The error message where the build on ppc stops is: + make /usr/bin/parrot /usr/lib/parrot/1.4.0/library/PGE/Perl6Grammar.pbc \ --output=src/gen_grammar.pir --encoding=utf8 \ src/parser/grammar.pg src/parser/grammar-oper.pg make: *** [src/gen_grammar.pir] Segmentation fault error: Bad exit status from /var/tmp/rpm-tmp.SWs6bb (%build) Also only on ppc a build of pynie fails with a simular error: + ./setup.py build running build /usr/bin/parrot /usr/lib//parrot/1.4.0/library/PGE/Perl6Grammar.pbc --output=include/gen_grammar.pir Grammar/Grammar.pg error: command '/usr/bin/parrot' terminated by signal 11 error: Bad exit status from /var/tmp/rpm-tmp.0zM1GQ (%build) RPM build errors: Bad exit status from /var/tmp/rpm-tmp.0zM1GQ (%build) The current spec file and source rpm are: spec URL: ftp://ftp.uni-siegen.de/pub/parrot.rpms/rakudo/rakudo.spec SRPM URL: ftp://ftp.uni-siegen.de/pub/parrot.rpms/rakudo/rakudo-0.0.2009.07_1.4.0-1.fc11.src.rpm The problem with ppc is a bug in Parrot a ticket is created: https://trac.parrot.org/parrot/ticket/904 rakudo is in the repos for quite a while now. Closing. Package Change Request ====================== Package Name: rakudo New Branches: EL-6 Owners: gerd cvs done. Plesae review this package again. I want to unretire this package. It was a mistake to move from the rakudo package to the rakudo-star package, so I want to move back. A first successful scratch build is at: https://koji.fedoraproject.org/koji/taskinfo?taskID=16892417 The current spec file and source rpm are: spec URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/spec/rakudo.spec.1 SRPM URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/srpm/rakudo-0.2016.11-1.fc25.src.rpm During the review the following links to the current spec file and current srpm will maintained: spec URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/spec/rakudo.spec SRPM URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/srpm/rakudo.src.rpm The rpmlint output is: $ rpmlint rakudo.spec 0 packages and 1 specfiles checked; 0 errors, 0 warnings. The last scratch build in rawhide (f26) is at: https://koji.fedoraproject.org/koji/taskinfo?taskID=16907351 The rpmlint output of the package is: $ rpmlint rakudo-0.2016.11-1.fc25.x86_64.rpm rakudo.x86_64: E: arch-dependent-file-in-usr-share /usr/share/perl6/runtime/dynext/libperl6_ops_moar.so rakudo.x86_64: W: no-manual-page-for-binary perl6-debug-m rakudo.x86_64: W: no-manual-page-for-binary perl6-gdb-m rakudo.x86_64: W: no-manual-page-for-binary perl6-eval-server rakudo.x86_64: W: no-manual-page-for-binary perl6-valgrind-m rakudo.x86_64: W: no-manual-page-for-binary perl6-debug-j rakudo.x86_64: W: no-manual-page-for-binary perl6-jdb-server rakudo.x86_64: W: uncompressed-zip /usr/share/perl6/runtime/rakudo-runtime.jar rakudo.x86_64: W: desktopfile-without-binary /usr/share/applications/perl6_doc_link.desktop xdg-open rakudo.x86_64: W: desktopfile-without-binary /usr/share/applications/rakudo_guide_pdf.desktop xdg-open 1 packages and 0 specfiles checked; 1 errors, 9 warnings. The last scratch build in rawhide (f26) is at: https://koji.fedoraproject.org/koji/taskinfo?taskID=16912231 The rakudo package is done more rpmlint conform: $ rpmlint rakudo rakudo.x86_64: W: dangling-symlink /usr/share/perl6/runtime/dynext /usr/lib64/dynext rakudo.x86_64: W: no-manual-page-for-binary perl6-debug-j rakudo.x86_64: W: no-manual-page-for-binary perl6-eval-server rakudo.x86_64: W: no-manual-page-for-binary perl6-debug-m rakudo.x86_64: W: no-manual-page-for-binary perl6-jdb-server rakudo.x86_64: W: no-manual-page-for-binary perl6-valgrind-m rakudo.x86_64: W: no-manual-page-for-binary perl6-gdb-m rakudo.x86_64: W: uncompressed-zip /usr/share/perl6/runtime/rakudo-runtime.jar 1 packages and 0 specfiles checked; 0 errors, 8 warnings. The link /usr/share/perl6/runtime/dynext is not really broken. The jar file will now be compredded. The rpmlint output is now: $ rpmlint rakudo-0.2016.11-1.fc25.x86_64.rpm rakudo.x86_64: W: dangling-symlink /usr/share/perl6/runtime/dynext /usr/lib64/dynext rakudo.x86_64: W: no-manual-page-for-binary perl6-debug-m rakudo.x86_64: W: no-manual-page-for-binary perl6-valgrind-m rakudo.x86_64: W: no-manual-page-for-binary perl6-debug-j rakudo.x86_64: W: no-manual-page-for-binary perl6-jdb-server rakudo.x86_64: W: no-manual-page-for-binary perl6-eval-server rakudo.x86_64: W: no-manual-page-for-binary perl6-gdb-m 1 packages and 0 specfiles checked; 0 errors, 7 warnings. At the moment the corresponding 2016.11 moarvm, nqp and nqp-jvm packages of fc25 are in the updates-testing repository. (dnf install moarvm --enablerepo=updates-testing) Hi Gerd, unfortunately I am currently unable to review this package. Please ask somebody else. Reassigning to default assignee. A scratch build of the current rakudo release (2017.01) on rawhide (f26) is at: https://koji.fedoraproject.org/koji/taskinfo?taskID=17854857 A scratch build of the current rakudo release (2017.01) on Fedora 25 is at: https://koji.fedoraproject.org/koji/taskinfo?taskID=17886592 Please feel free to take the review! The current spec file and source rpm are: spec URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/spec/rakudo.spec.2 SRPM URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/srpm/rakudo-0.2017.01-1.fc25.src.rpm The review request is changed to include only the backend for the MoarVM. The current spec file and source rpm are: spec URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/spec/rakudo.spec.3 The SRPM file is overwritten: ftp://ftp.uni-siegen.de/pub/review/rakudo/srpm/rakudo-0.2017.01-1.fc25.src.rpm A successful rawhide scratch build is at: https://koji.fedoraproject.org/koji/taskinfo?taskID=17988954 URL is usable. Ok. Source0 (SHA-256: 2651f60f3123aeb015e9fa11d55c5b506abb88a1725f1fdd801dd3ea34f2a783) is original. Ok. Source1 (SHA-256: 0b6957ec19eb5b219ad671ae389bb41a4dae365af04fb6d49153675fe592e7ca) is original. Ok. TODO: Remove the leading `A' from the summary. TODO: Correct typos in description. The first sentence does not have any verb. The second sentence starts with "Is is". Summary text should end a full stop symbol. I recommends rewrite it like this: Rakudo Perl 6, or just Rakudo, is an implementation of the Perl 6 language specification. More information about Perl 6 is available from <http://perl6.org/>. This package provides a Perl 6 compiler built for MoarVM virtual machine. License verified from t/spec/LICENSE, README.md, LICENSE. Ok. TODO: The `Obsoletes: rakudo-star <= 0.0.2017.01-2' should use `<' operator as 0.0.2017.01 is the last one in Fedora. FIX: Build-require `perl' (rakudo.spec:54). FIX: Use %{__prefix} in `Configure.pl --prefix=/usr' instead of `/usr'. FIX: Build-require `make' (rakudo.spec:55). FIX: Build-require `perl-podlators' (rakudo.spec:63). FIX: Build-require `coreutils' (rakudo.spec:82). FIX: Build-require `perl(base)' (tools/lib/NQP/Configure.pm:8). FIX: Build-require `perl(Cwd)' (Configure.pl:10). FIX: Build-require `perl(Exporter)' (tools/lib/NQP/Configure.pm:8). FIX: Build-require `perl(File::Copy)' (tools/lib/NQP/Configure.pm:5). FIX: Build-require `perl(File::Spec)' (Configure.pl:9). FIX: Build-require `perl(Getopt::Long)' (Configure.pl:8). FIX: Build-require `perl(lib)' (Configure.pl:11). FIX: Build-require `perl(strict)' (Configure.pl:5). FIX: Build-require `perl(Text::ParseWords)' (Configure.pl:7). FIX: Build-require `perl(warnings)' (Configure.pl:6). FIX: Build-require `gcc'. FIX: Build-require `perl(FindBin)' for tests (t/harness5:9). FIX: Build-require `perl(List::Util)' for tests (t/harness5:11). FIX: Build-require `perl(Test::Harness)' for tests (t/harness5:15). FIX: Remove %defattr from %files section. TODO: Package docs/ChangeLog as a documentation. All tests pass. Ok. TODO: The `-ltommath -latomic_ops -luv -lm -lpthread -lrt -ldl' linker options come from `/usr/bin/nqp-m --show-config' tool, therefore I think it would make more sense to move the dependency on libtommath-devel and other libraries from rakudo.spec to nqp or moarvm-devel. I grepped for header files included by rakudo and I could not find any usage of them. (Maybe the are not needed at all). TODO: Is the build-time dependency on readline-devel needed? It's nowhere used and docs/ChangeLog reads it was removed. $ rpmlint rakudo.spec ../SRPMS/rakudo-0.2017.01-1.fc26.src.rpm ../RPMS/x86_64/rakudo-* rakudo.x86_64: W: self-obsoletion rakudo-star <= 0.0.2017.01-2 obsoletes rakudo-star = 0.0.0.2017.01-1.fc26 rakudo.x86_64: E: arch-dependent-file-in-usr-share /usr/share/perl6/runtime/dynext/libperl6_ops_moar.so rakudo.x86_64: W: hidden-file-or-dir /usr/share/perl6/precomp/.lock rakudo.x86_64: E: zero-length /usr/share/perl6/precomp/.lock rakudo.x86_64: E: zero-length /usr/share/perl6/repo.lock rakudo.x86_64: W: no-manual-page-for-binary perl6-debug-m rakudo.x86_64: W: no-manual-page-for-binary perl6-gdb-m rakudo.x86_64: W: no-manual-page-for-binary perl6-valgrind-m 3 packages and 1 specfiles checked; 3 errors, 5 warnings. FIX: Move the libperl6_ops_moar.so out of /usr/share (to /usr/lib64/perl6 or somewhere else). FIX: Are the *.moarvm files stored under /usr/share differ on each architecture. They must be moved somewhere else. Quick fix would be to install everything under %{__libbdir}. But if the 'share' component comes from nqp or moarvm, then they need to be moved first. $ rpm -q --requires -p ../RPMS/x86_64/rakudo-0.2017.01-1.fc26.x86_64.rpm | sort -f | uniq -c 1 /bin/sh 1 libatomic_ops.so.1()(64bit) 1 libc.so.6()(64bit) 1 libc.so.6(GLIBC_2.2.5)(64bit) 1 libc.so.6(GLIBC_2.4)(64bit) 1 libdl.so.2()(64bit) 1 libm.so.6()(64bit) 1 libmoar.so()(64bit) 1 libpthread.so.0()(64bit) 1 librt.so.1()(64bit) 1 libtommath.so.1()(64bit) 1 libuv.so.1()(64bit) 1 nqp >= 0.0.2017.01 1 rpmlib(CompressedFileNames) <= 3.0.4-1 1 rpmlib(FileDigests) <= 4.6.0-1 1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 1 rpmlib(PayloadIsXz) <= 5.2-1 1 rtld(GNU_HASH) Binary requires are Ok. TODO: I grep binary package of some libuv.so.1 symbols and I could not find any. I suspect that many of libraries are not needed. $ rpm -q --provides -p ../RPMS/x86_64/rakudo-0.2017.01-1.fc26.x86_64.rpm | sort -f | uniq -c 1 libperl6_ops_moar.so()(64bit) 1 perl6 = 0.2017.01-1.fc26 1 rakudo = 0.2017.01-1.fc26 1 rakudo(x86-64) = 0.2017.01-1.fc26 1 rakudo-star = 0.0.0.2017.01-1.fc26 Binary provides are Ok. Notice: I have no idea what the `perl6' Provide means. If it's about implemented language version, then it should be something like `2016.c'. See <https://github.com/perl6/roast#introduction>. $ resolvedeps rawhide ../RPMS/x86_64/rakudo-0.2017.01-1.fc26.x86_64.rpm Binary dependencies resolvable. Ok. Package builds in F26 (https://koji.fedoraproject.org/koji/taskinfo?taskID=17993233). Ok. Please correct all `FIX' items, consider fixing `TODO' items and provide a new spec file. Resolution: Package NOT approved. A new spec file and source rpm are at: spec URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/spec/rakudo.spec.2 The SRPM file is overwritten: ftp://ftp.uni-siegen.de/pub/review/rakudo/srpm/rakudo-0.2017.01-2.fc25.src.rpm The links are updated: pec URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/spec/rakudo.spec SRPM URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/srpm/rakudo.src.rpm Changes: - summary tab, description and operator in obsoletes tag is changed - dependency on readline-devel is removed - _prefix marcro is used - docs/ChangeLog is packaged as documentation - general build-requires are added - the 'perl6' Provides is removed I will check it is possible to move libperl6_ops_moar.so and *.moarvm files. I am afraid that then the compiler will not work. The help of the configuration (perl Configure.pl --help) from NPQ and rakudo do not show an option to specify a destination path other then /usr/share. MoarVM, NQP and Rakudo only support to specify a prefix. *.moarvm files are at: /usr/share/nqp/lib/Perl6 and /usr/share/perl6/runtime The paths are hard coded in perl5 files. The file rakudo-2017.01/tools/build/Makefile-Moar.in has the following lines where paths are hard coded: M_LIBPATH = $(PREFIX)@slash@share@slash@nqp@slash@lib $(CP) $(M_PERL6_LANG_OUTPUT) $(DESTDIR)$(M_LIBPATH)/Perl6 $(MKPATH) $(DESTDIR)$(PERL6_LANG_DIR)/runtime A hard coded path in akudo-2017.01/tools/build/Makefile-common-macros.in: PERL6_LANG_DIR = $(PREFIX)/share/perl6 Maintaining patches for the package that do changing the paths would be hard work. I think the best way is to leave the paths as they are designed. If the moarvm files were portable (could you try overwriting e.g. the x86_64 files by i686 files and check that rakudo still works?), then keeping the files under /usr/share, but packaging them into noarch sub-package could work (i.e. comply to packaging guidelines and not break Fedora infrastructure). I think the best thing would be ask rakudo developers why they chose /usr/share and if the files are indeed portable. The reality is that most of the Fedora packages are not multilib ready, so bending rakudo in order to not have architecture-varying files in /usr/share is not worth of the struggle. I will ask on <packaging.org> for their opinion. My question on Fedora packaging list <https://lists.fedoraproject.org/archives/list/packaging@lists.fedoraproject.org/thread/I53S4JXG3XNRKMLPMSQNGLWMVEFM6IKI/>. People on the packaging list also think that the only way is to patch all the packages to install files that differ into %{__libdir}. I have done an architecture dependent nqp scratch build at: https://koji.fedoraproject.org/koji/taskinfo?taskID=18093323 From the scratch build I downloaded nqp-0.0.2017.01-1.fc25.i686.rpm and nqp-0.0.2017.01-1.fc25.x86_64.rpm. I could install both rpms and both rpms are working at my x86_64 machine. # rpm -qa nqp | grep nqp nqp-0.0.2017.01-1.fc25.i686 # nqp --e 'say("Hello!");' Hello! # uname -a Linux ..fc25.x86_64 #1 SMP Fri Jan 6 18:11:49 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux The Java bytecode goes to /usr/share/java. At https://koji.fedoraproject.org/koji/taskinfo?taskID=18104785 I tried a scratch build with a noarch subpackage. The subpackage should store only the moarvm files from %{_datadir}/nqp/lib/Perl6 The build fails with: 18104785 build (f25, rakudo-0.2017.01-3.fc25.src.rpm): open (buildhw-05.phx2.fedoraproject.org) -> FAILED: BuildError: The following noarch package built differently on different architectures: rakudo-moar-0.2017.01-3.fc25.noarch.rpm rpmdiff output was: error: cannot open Packages index using db5 - Permission denied (13) error: cannot open Packages database in /var/lib/rpm error: cannot open Packages database in /var/lib/rpm removed REQUIRES rakudo(armv7hl-32) = 0.2017.01-3.fc25 added REQUIRES rakudo(x86-64) = 0.2017.01-3.fc25 0 free 0 open 3 done 1 failed 18104785 build (f25, rakudo-0.2017.01-3.fc25.src.rpm) failed A rakudo build on top of an architecture dependent nqp would also store the files at /usr/share/perl6 and /usr/share/nqp/lib/Perl6 Thanks for testing. We can see Fedora infrastructure enforces noarch package to contain identical files. Provided FHS and Packaging list and my opinions, I believe the only option is to patch the packages to install moarvm files under %{__libdir} (until upstream makes the file identical). The are a lot of files that are installed under /usr/share. I am not sure if understand correct which of that files should installed under %{_libdir}. Should all that files installed under %{_libdir} or only the files with the filename extension moarvm? Moving all the files is the simplest way and probably the right to do. Obviously shareable files as manual pages should be kept under /usr/shrare. I think the move should be applied to /usr/share/nqp(/lib?) and /usr/share/perl6. I just added a nice improvement. The shared library 'libperl6_ops_moar.so' will now be installed at %{_libdir} were it belongs to. This do not break to obsolete the rakudo-star package. A new spec file and source rpm are at: spec URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/spec/rakudo.spec.3 ftp://ftp.uni-siegen.de/pub/review/rakudo/srpm/rakudo-0.2017.01-3.fc25.src.rpm The links are updated: pec URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/spec/rakudo.spec SRPM URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/srpm/rakudo.src.rpm In the spec file I added the two tags: %post -p /sbin/ldconfig %postun -p /sbin/ldconfig It works also without the 'post' and 'postun' tags. I am not sure if the new two lines with that tags should remain in the spec file. New scratch builds for f25 and rawhide are at rawhide: https://koji.fedoraproject.org/koji/taskinfo?taskID=18124408 F25: https://koji.fedoraproject.org/koji/taskinfo?taskID=18124396 Here is an other version of the rakudo.spec and srpm of release 3. The alternative release 3 is uploaded at: spec file URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/spec/new/rakudo.spec that link points to ftp://ftp.uni-siegen.de/pub/review/rakudo/spec/new/rakudo.spec.3 SRPM URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/srpm/new/rakudo-0.2017.01-3.fc25.src.rpm By this version of release 3 the whole directory /usr/share/perl6 is install to ${_libdir]/perl6. Would you please let me know with which version or release 3 from the spec file I should go on in this review? (In reply to Gerd Pokorra from comment #46) > spec file URL: > ftp://ftp.uni-siegen.de/pub/review/rakudo/spec/new/rakudo.spec > that link points to > ftp://ftp.uni-siegen.de/pub/review/rakudo/spec/new/rakudo.spec.3 > SRPM URL: > ftp://ftp.uni-siegen.de/pub/review/rakudo/srpm/new/rakudo-0.2017.01-3.fc25. > src.rpm > > By this version of release 3 the whole directory /usr/share/perl6 is install > to ${_libdir]/perl6. > > Would you please let me know with which version or release 3 from the spec > file I should go on in this review? This one is better of the two spec files. Though there are still some moarvm files under /usr/share that should be moved either: /usr/share/nqp/lib/Perl6/Actions.moarvm /usr/share/nqp/lib/Perl6/BOOTSTRAP.moarvm /usr/share/nqp/lib/Perl6/Compiler.moarvm /usr/share/nqp/lib/Perl6/DebugPod.moarvm /usr/share/nqp/lib/Perl6/Grammar.moarvm /usr/share/nqp/lib/Perl6/Metamodel.moarvm /usr/share/nqp/lib/Perl6/ModuleLoader.moarvm /usr/share/nqp/lib/Perl6/Ops.moarvm /usr/share/nqp/lib/Perl6/Optimizer.moarvm /usr/share/nqp/lib/Perl6/Pod.moarvm /usr/share/nqp/lib/Perl6/World.moarvm I already made some tests to do that. NQP has the not documented configuration option --libdir. I installed a nqp package on my computer which has the configuration --libdir=%{_libdir}. This nqp rpm works fine. In the rakudo.spec file I added the lines: %{__sed} -i -e 's#$(PREFIX)/share/nqp/lib#%{_libdir}/nqp#g' Makefile %{__sed} -i -e 's#/usr/share/nqp/lib#%{_libdir}/nqp#g' Makefile So with that modifications all is installed at /usr/lib64/nqp on my computer: # ls /usr/lib64/nqp JASTNodes.jar NQPHLL.jar NQPP5QRegex.moarvm QASTNode.jar MASTNodes.moarvm NQPHLL.moarvm NQPP6QRegex.jar QASTNode.moarvm MASTOps.moarvm nqp.jar NQPP6QRegex.moarvm QRegex.jarModuleLoader.jar nqp.moarvm Perl6 QRegex.moarvm ... But executing same perl6 code fails: [gz016@vgerd2 ~]$ perl6 -e 'say 10' While looking for '/usr/share/nqp/lib/Perl6/BOOTSTRAP.moarvm': no such file or directory at gen/moar/ModuleLoader.nqp:83 (/usr/lib64/nqp/Perl6/ModuleLoader.moarvm:) from gen/moar/ModuleLoader.nqp:75 (/usr/lib64/nqp/Perl6/ModuleLoader.moarvm:load_module) ... The reason for that problem seems to be that the path $[prefix}/share/nqp/lib is hardcoded in rakudo source files. The source file src/Perl6/ModuleLoader.nqp has the following code at line 51: $file := ($include ?? $include ~ '/' !! nqp::getcomp('perl6').config<prefix> ~ '/share/nqp/lib/') ~ $file; For moving (installing) the files /usr/share/nqp/lib/Perl/*.moarvm also this source files have to been changed. A other solution would be to configure the moarvm, nqp and rakudo rpms with the configuration --prefix=%{_libdir}. I do not like this solution. The necessary nqp rebuilds with use of %{_libdir} are done for f25, f26 and rawhide. nqp-0.0.2017.01-2.fc27 https://koji.fedoraproject.org/koji/taskinfo?taskID=18251423 nqp-0.0.2017.01-2.fc26 https://koji.fedoraproject.org/koji/taskinfo?taskID=18254115 nqp-0.0.2017.01-2.fc25 https://koji.fedoraproject.org/koji/taskinfo?taskID=18254213 For not breaking the dependencies the rakudo-star packages on top of NQP are rebuilt. A new spec file and source rpm are at: spec URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/spec/rakudo.spec.4 srpm URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/srpm/rakudo-0.2017.01-4.fc25.src.rpm The links are updated: pec URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/spec/rakudo.spec SRPM URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/srpm/rakudo.src.rpm /usr/share/nqp/lib/Perl6 now goes to %{_libdir}/nqp/Perl6 and the perl6 executable seems to be still working. F25 scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=18254650 build owerrides for nqp: gerd's nqp-0.0.2017.01-2.fc25 override (expires 2017-03-14 20:31:33) gerd's nqp-0.0.2017.01-2.fc26 override (expires 2017-03-14 20:25:42) According updates URLs for nqp with rakudo-star are at: F25: https://bodhi.fedoraproject.org/updates/FEDORA-2017-70bcbcad25 F26: https://bodhi.fedoraproject.org/updates/FEDORA-2017-45f5b1c2a6 nqp-0.0.2017.01-2.fc25 is currently in the updates-testing repository. dnf update --enablerepo=updates-testing nqp The rakudo rpm release 4 can only be checked on top of this new nqp package. Reviewing release 4: > TODO: Remove the leading `A' from the summary. Ok. > TODO: Correct typos in description. The first sentence does not have any verb. > The second sentence starts with "Is is". Summary text should end a full stop > symbol. Ok. > TODO: The `Obsoletes: rakudo-star <= 0.0.2017.01-2' should use `<' operator > as 0.0.2017.01 is the last one in Fedora. Ok. > FIX: Build-require `perl' (rakudo.spec:54). Ok. > FIX: Use %{__prefix} in `Configure.pl --prefix=/usr' instead of `/usr'. Ok. > FIX: Build-require `make' (rakudo.spec:55). > FIX: Build-require `perl-podlators' (rakudo.spec:63). > FIX: Build-require `coreutils' (rakudo.spec:82). Ok. > FIX: Build-require `perl(base)' (tools/lib/NQP/Configure.pm:8). > FIX: Build-require `perl(Cwd)' (Configure.pl:10). > FIX: Build-require `perl(Exporter)' (tools/lib/NQP/Configure.pm:8). > FIX: Build-require `perl(File::Copy)' (tools/lib/NQP/Configure.pm:5). > FIX: Build-require `perl(File::Spec)' (Configure.pl:9). > FIX: Build-require `perl(Getopt::Long)' (Configure.pl:8). > FIX: Build-require `perl(lib)' (Configure.pl:11). > FIX: Build-require `perl(strict)' (Configure.pl:5). > FIX: Build-require `perl(Text::ParseWords)' (Configure.pl:7). > FIX: Build-require `perl(warnings)' (Configure.pl:6). Ok. > FIX: Build-require `gcc'. Ok. > FIX: Build-require `perl(FindBin)' for tests (t/harness5:9). > FIX: Build-require `perl(List::Util)' for tests (t/harness5:11). > FIX: Build-require `perl(Test::Harness)' for tests (t/harness5:15). Ok. FIX: Do not build-require `perl(ExtUtils::Command)'. It's not used. Configure.pl use it only on non-UNIX platforms and t/spec/test_summary contains it only in a documentation. > FIX: Remove %defattr from %files section. Ok. > TODO: Package docs/ChangeLog as a documentation. Ok. > TODO: The `-ltommath -latomic_ops -luv -lm -lpthread -lrt -ldl' linker > options come from `/usr/bin/nqp-m --show-config' tool, therefore I think it > would make more sense to move the dependency on libtommath-devel and other > libraries from rakudo.spec to nqp or moarvm-devel. I grepped for header files > included by rakudo and I could not find any usage of them. (Maybe the are not > needed at all). Not addressed. Ok. > TODO: Is the build-time dependency on readline-devel needed? It's nowhere > used and docs/ChangeLog reads it was removed. Ok. $ rpmlint rakudo.spec ../SRPMS/rakudo-0.2017.01-4.fc27.src.rpm ../RPMS/x86_64/rakudo-* rakudo.src: W: spelling-error %description -l en_US http -> HTTP rakudo.x86_64: W: spelling-error %description -l en_US http -> HTTP rakudo.x86_64: W: self-obsoletion rakudo-star < 0.0.2017.01-3 obsoletes rakudo-star = 0.0.0.2017.01-4.fc27 rakudo.x86_64: W: hidden-file-or-dir /usr/lib64/perl6/precomp/.lock rakudo.x86_64: E: zero-length /usr/lib64/perl6/precomp/.lock rakudo.x86_64: E: zero-length /usr/lib64/perl6/repo.lock rakudo.x86_64: W: no-manual-page-for-binary perl6-debug-m rakudo.x86_64: W: no-manual-page-for-binary perl6-gdb-m rakudo.x86_64: W: no-manual-page-for-binary perl6-valgrind-m 3 packages and 1 specfiles checked; 2 errors, 14 warnings. FIX: The `rakudo-star' Provides has a superfluous "0" because %{version} already contains one. TODO: I have no idea how the .lock files are used. But if they are used for write-locking, then it will not work if /usr is a readonly file system. In that case they should be placed into /var or /run with tmpfiles.d technique <https://fedoraproject.org/wiki/Packaging:Tmpfiles.d> and rakudo should have be patched accordingly. I thing this a good candidate for a bug report to upstream. > FIX: Move the libperl6_ops_moar.so out of /usr/share (to /usr/lib64/perl6 or somewhere else). > FIX: Are the *.moarvm files stored under /usr/share differ on each architecture. They must be moved somewhere > else. Quick fix would be to install everything under %{__libbdir}. But if the 'share' component comes from nqp > or moarvm, then they need to be moved first. Ok. > TODO: I grep binary package of some libuv.so.1 symbols and I could not find any. I suspect that many of > libraries are not needed. Not addressed. Ok. Should be reported to upstream. TODO: You can remove `Group:' tag. It's usage is discouraged. $ rpm -q --provides -p ../RPMS/x86_64/rakudo-0.2017.01-4.fc27.x86_64.rpm | sort -f | uniq -c 1 libperl6_ops_moar.so()(64bit) 1 rakudo = 0.2017.01-4.fc27 1 rakudo(x86-64) = 0.2017.01-4.fc27 1 rakudo-star = 0.0.0.2017.01-4.fc27 TODO: The libperl6_ops_moar.so()(64bit) Provides comes from non-standard shared library path (/usr/lib64/perl6/runtime/dynext/). As such it's not a public rakudo ABI and it should not be provided by the RPM package. You can filter the autogenerated dependency with __provides_exclude_from <https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering>. Otherwise the package looks good. Thank you very much for implementing the changes. This was a tough review. Please correct the `FIX' items and consider fixing the `TODO' item before building this package. Resolution: Package APPROVED. (In reply to Petr Pisar from comment #52) > TODO: I have no idea how the .lock files are used. But if they are used for > write-locking, then it will not work if /usr is a readonly file system. In > that case they should be placed into /var or /run with tmpfiles.d technique > <https://fedoraproject.org/wiki/Packaging:Tmpfiles.d> and rakudo should have > be patched accordingly. I thing this a good candidate for a bug report to > upstream. > docs/module_management.md reads: When we install a distribution, we do the following: 1. Create the `repo.lock` file; if it already exists, fail. So maybe the repo.lock file should not exist at all in rakudo binary package. And maybe it's irrelevant for read-only /usr because user won't be able to install any Perl6 distribution at all. What worries me is precomp directory that will need to regenerate its content when updating a distribution that is used by an already installed distribution. If it won't be be possible to prebuild in Koji, there will need to be some postscript in each RPM package or I don't know. - fix the rakudo-star version that is provided - group tag removed - remove zero-length files - preventing to provides libperl6_ops_moar.so from non-standard path I hope that I have not forgotten something. The links for the spec file and source rpm are updated. spec file URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/spec/rakudo.spec srpm URL: ftp://ftp.uni-siegen.de/pub/review/rakudo/srpm/rakudo-0.2017.01-5.fc25.src.rpm Thank you for doing the review. Sorry that it was tough. I will start to retire the rakudo-star package, first. Scratch build URL: https://koji.fedoraproject.org/koji/taskinfo?taskID=18281895 Asking Unretirement do not work for the master branch. I get the following message: Could not save the request for branch: master, has it already been requested? It was requested before. Do I have to wait or what can I do? It looks like bug in the package database tools. You can complain at <https://pagure.io/releng/issues>. The releng ticket URL is: https://pagure.io/releng/issue/6694 May be I have to remove the flag: fedora-cvs+ rakudo-0.2017.01-5.fc25 has been submitted as an update to Fedora 25. https://bodhi.fedoraproject.org/updates/FEDORA-2017-5476a3b710 rakudo-0.2017.01-5.fc25 has been pushed to the Fedora 25 testing repository. If problems still persist, please make note of it in this bug report. See https://fedoraproject.org/wiki/QA:Updates_Testing for instructions on how to install test updates. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-5476a3b710 (In reply to Petr Pisar from comment #36) > If the moarvm files were portable (could you try overwriting e.g. the x86_64 > files by i686 files and check that rakudo still works?), then keeping the > files under /usr/share, but packaging them into noarch sub-package could > work (i.e. comply to packaging guidelines and not break Fedora > infrastructure). > > I think the best thing would be ask rakudo developers why they chose > /usr/share and if the files are indeed portable. > Upstream answer is: The bytecode, strings, callframe info, and debug annotations forth are all certainly portable. That leaves the serialized objects blob, which represents a bunch of objects and types. In Perl 6 terms, this stores stuff like meta-objects, code objects, signatures, parameters and so forth - but also the results of all BEGIN-time computation including constants. The objects serialized on, say, a 64-bit LE architecture can be deserialized on a 32-bit BE architecture, for example. Indeed, we rely on this, since we store a single stage0 binary compiler in the NQP repository, which is used as the base of the bootstrap. However, users can do anything they want at BEGIN time, including using things such as $?BITS which will be platform-dependent. This means that a .moarvm file potentially can end up being platform-dependent. rakudo-0.2017.01-5.fc25 has been pushed to the Fedora 25 stable repository. If problems still persist, please make note of it in this bug report. |