Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 1882871
Summary: | Review Request: xmake - A cross-platform build utility based on Lua | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | ruki <waruqi> |
Component: | Package Review | Assignee: | Nobody's working on this, feel free to take it <nobody> |
Status: | CLOSED NOTABUG | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
Severity: | medium | Docs Contact: | |
Priority: | unspecified | ||
Version: | rawhide | CC: | andymenderunix, fedora, package-review, shngmao, stsp2, zebob.m |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | If docs needed, set a value | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2022-07-03 00:45:19 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: | |||
Bug Depends On: | |||
Bug Blocks: | 177841, 201449 |
Description
ruki
2020-09-26 03:57:09 UTC
*** Bug 1882872 has been marked as a duplicate of this bug. *** >Source0: https://github.com/xmake-io/xmake/archive/%{xmake_branch}.tar.gz#/xmake-%{xmake_branch}.tar.gz >Source1: https://github.com/tboox/tbox/archive/%{tbox_branch}.tar.gz#/tbox-%{tbox_branch}.tar.gz >Source2: https://github.com/xmake-io/xmake-core-luajit/archive/v%{luajit_branch}.tar.gz#/xmake-core-luajit- Links to a branch point to, well, a branch - which is a moving target. If you re-fetch these links a year from now, the file will be different. You should specify links which will always return the same file. With GitHub, you can reference a git tag, or a specific commit. https://docs.fedoraproject.org/en-US/packaging-guidelines/SourceURL/ >License: Apache-2.0 Fedora uses the "ASL 2.0" short identifier for this licence. https://fedoraproject.org/wiki/Licensing:Main#Good_Licenses >%build >make build 1. You need to call the %set_build_flags macro to ensure that Fedora's CXXFLAGS are set properly. 2. Use the %make_build macro. >cp -r xmake %{buildroot}%{_datadir}/%{name} >cp core/src/demo/demo.b %{buildroot}%{_bindir}/%{name} Use "cp -a" or "cp -p" so that file timestamps are preserved. https://docs.fedoraproject.org/en-US/packaging-guidelines/#_timestamps >%clean >rm -rf %{buildroot} The %clean section is not used in Fedora. https://docs.fedoraproject.org/en-US/packaging-guidelines/#_tags_and_sections I have fixed it. The new spec url: https://github.com/xmake-io/xmake/blob/spec/scripts/rpmbuild/SPECS/xmake.spec > 1. You need to call the %set_build_flags macro to ensure that Fedora's CXXFLAGS are set properly. Is this necessary? I saw that many other rpm packages do not add this. for example: https://src.fedoraproject.org/rpms/premake/blob/master/f/premake.spec When I add it, it will cause the xmake program to crash on the fedora i386 platform. Crash log: https://download.copr.fedorainfracloud.org/results/waruqi/xmake/fedora-31-i386/01686127-xmake/builder-live.log.gz > + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld' It seems that this ldflags is causing this problem and it works fine for all platforms if do not add %set_build_flags BTW, All tasks on copr /fedora-eln-* always fail to download. ``` Errors during downloading metadata for repository 'eln': - Status code: 404 for https://odcs.fedoraproject.org/composes/production/latest-Fedora-ELN/compose/Everything/x86_64/os/repodata/repomd.xml (IP: 152.19.134.198) Error: Failed to download metadata for repo 'eln': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried ``` https://copr.fedorainfracloud.org/coprs/waruqi/xmake/build/1687682/ https://download.copr.fedorainfracloud.org/results/waruqi/xmake/fedora-eln-x86_64/01687682-xmake/builder-live.log.gz >>1. You need to call the %set_build_flags macro to ensure that Fedora's CXXFLAGS are set properly.
>Is this necessary? I saw that many other rpm packages do not add this. for example:
>https://src.fedoraproject.org/rpms/premake/blob/master/f/premake.spec
Fedora's CFLAGS are available in the form of the %{optflags} RPM macro.
What %set_build_flags does, is it simply performs 'export CFLAGS="%{optflags}"' (and the same for CXXFLAGS).
The linked spec for premake employs a slightly different approach, as it uses sed to inject %{optflags} straight into the Makefile.
> When I add it, it will cause the xmake program to crash on the fedora i386 platform. I have fixed this problem. But on opensuse-leap-15.1-*, %set_build_flags still causes some problems. + %set_build_flags /var/tmp/rpm-tmp.9RYL8i: line 32: fg: no job control error: Bad exit status from /var/tmp/rpm-tmp.9RYL8i (%build) Bad exit status from /var/tmp/rpm-tmp.9RYL8i (%build) Links: https://copr.fedorainfracloud.org/coprs/waruqi/xmake/build/1693007/ https://download.copr.fedorainfracloud.org/results/waruqi/xmake/opensuse-leap-15.2-x86_64/01693007-xmake/builder-live.log.gz I have completely fixed all the problems, can you help me review this spec file? https://github.com/xmake-io/xmake/blob/dev/scripts/rpmbuild/SPECS/xmake.spec Hi ruki, according to review guidelines [1]: > MUST: rpmlint must be run on the source rpm and all binary rpms the build produces. The output should be posted in the review. There are two lint errors: xmake.noarch: E: world-writable /usr/bin/xrepo 777 xmake.noarch: E: non-standard-executable-perm /usr/bin/xrepo 777 [1]: https://docs.fedoraproject.org/en-US/packaging-guidelines/ReviewGuidelines/ (In reply to Sheng Mao from comment #7) > Hi ruki, according to review guidelines [1]: > > > MUST: rpmlint must be run on the source rpm and all binary rpms the build produces. The output should be posted in the review. > > There are two lint errors: > > xmake.noarch: E: world-writable /usr/bin/xrepo 777 > xmake.noarch: E: non-standard-executable-perm /usr/bin/xrepo 777 > > [1]: > https://docs.fedoraproject.org/en-US/packaging-guidelines/ReviewGuidelines/ I have fixed it, Thanks! https://github.com/xmake-io/xmake/blob/dev/scripts/rpmbuild/SPECS/xmake.spec - Please don't mix suse conditionals in the Fedora package - Add make explicitly as a BR as we are removing it from the default buildroot - Are the default build flags correctly used during the build, the summary before the build does not mention them: flags: cflag: ccflag: cxflag: mflag: mmflag: mxflag: ldflag: asflag: arflag: shflag: It seems core/suffix.mak is using non standard flags name so set_build_flags would have no effect. # append flags CFLAGS += $(CFLAG) $(CFLAGS-y) CXFLAGS += $(CXFLAG) $(CXFLAGS-y) CCFLAGS += $(CCFLAG) $(CCFLAGS-y) MFLAGS += $(MFLAG) $(MFLAGS-y) MMFLAGS += $(MMFLAG) $(MMFLAGS-y) MXFLAGS += $(MXFLAG) $(MXFLAGS-y) LDFLAGS += $(LDFLAG) $(LDFLAGS-y) ASFLAGS += $(ASFLAG) $(ASFLAGS-y) ARFLAGS += $(ARFLAG) $(ARFLAGS-y) SHFLAGS += $(SHFLAG) $(SHFLAGS-y) I'd use this: %build export CFLAG="%{optflags}" export CXFLAG="%{optflags}" export CCFLAG="%{optflags}" export LDFLAG="%{build_ldflags}" %make_build - Use %global instead of %define: %define xmake_revision 2f6e5e72cb9527bad1b417ef9c48ea0ecfae53b7 %define tbox_revision 6e5fb77c5ab5c0d712871c52c42a5bc7843cd780 %define sv_revision 9a3cf7c8e589de4f70378824329882c4a047fffc %define lua_cjson_revision 515bab6d6d80b164b94db73af69609ea02f3a798 %define luajit_revision e9af1abec542e6f9851ff2368e7f196b6382a44c %define _binaries_in_noarch_packages_terminate_build - This is not ok: %define _binaries_in_noarch_packages_terminate_build 0 Your package shouldn't be noarch as you are shipping binary code. Also it needs to properly provide debug info: xmake.noarch: E: arch-independent-package-contains-binary-or-object /usr/bin/xmake - You description line are too long, split them to stay under 80 characters per line. xmake.noarch: E: description-line-too-long C It uses xmake.lua to maintain project builds. Compared with makefile/CMakeLists.txt, xmake.noarch: E: description-line-too-long C generate project files like CMake/Meson, and it also has a built-in package management - the version in the changelog does not match the header: xmake.noarch: W: incoherent-version-in-changelog 2.3.8-1 ['2.5.1-1.fc34', '2.5.1-1'] Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed ===== MUST items ===== Generic: [x]: Package is licensed with an open-source compatible license and meets other legal requirements as defined in the legal section of Packaging Guidelines. [x]: License field in the package spec file matches the actual license. Note: Checking patched sources after %prep for licenses. Licenses found: "Unknown or generated", "*No copyright* Apache License 2.0", "Apache License 2.0", "zlib/libpng license", "BSD 3-clause "New" or "Revised" License Apache License 2.0", "GNU General Public License v2.0 or later", "Boost Software License 1.0". 179 files have unknown license. Detailed output of licensecheck in /home/bob/packaging/review/xmake/review-xmake/licensecheck.txt [x]: Package contains no bundled libraries without FPC exception. [x]: Changelog in prescribed format. [x]: Sources contain only permissible code or content. [-]: Package contains desktop file if it is a GUI application. [-]: Development files must be in a -devel package [x]: Package uses nothing in %doc for runtime. [x]: Package consistently uses macros (instead of hard-coded directory names). [x]: Package is named according to the Package Naming Guidelines. [x]: Package does not generate any conflict. [x]: Package obeys FHS, except libexecdir and /usr/target. [-]: If the package is a rename of another package, proper Obsoletes and Provides are present. [x]: Requires correct, justified where necessary. [x]: Spec file is legible and written in American English. [-]: Package contains systemd file(s) if in need. [x]: Package is not known to require an ExcludeArch tag. [!]: Package complies to the Packaging Guidelines [x]: Package successfully compiles and builds into binary rpms on at least one supported primary architecture. [x]: Package installs properly. [x]: Rpmlint is run on all rpms the build produces. Note: There are rpmlint messages (see attachment). [x]: Package requires other packages for directories it uses. [x]: Package does not own files or directories owned by other packages. [x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT [x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the beginning of %install. [x]: Macros in Summary, %description expandable at SRPM build time. [x]: Dist tag is present. [x]: Package does not contain duplicates in %files. [x]: Permissions on files are set properly. [x]: Package use %makeinstall only when make install DESTDIR=... doesn't work. [x]: Package is named using only allowed ASCII characters. [x]: Package does not use a name that already exists. [x]: Package is not relocatable. [x]: Sources used to build the package match the upstream source, as provided in the spec URL. [x]: Spec file name must match the spec package %{name}, in the format %{name}.spec. [x]: File names are valid UTF-8. [x]: Large documentation must go in a -doc subpackage. Large could be size (~1MB) or number of files. Note: Documentation size is 0 bytes in 0 files. [x]: Packages must not store files under /srv, /opt or /usr/local ===== SHOULD items ===== Generic: [-]: If the source package does not include license text(s) as a separate file from upstream, the packager SHOULD query upstream to include it. [x]: Final provides and requires are sane (see attachments). [?]: Package functions as described. [x]: Latest version is packaged. [x]: Package does not include license text files separate from upstream. [-]: Sources are verified with gpgverify first in %prep if upstream publishes signatures. Note: gpgverify is not used. [-]: Description and summary sections in the package spec file contains translations for supported Non-English languages, if available. [x]: Package should compile and build into binary rpms on all supported architectures. [x]: %check is present and all tests pass. [x]: Packages should try to preserve timestamps of original installed files. [!]: Spec use %global instead of %define unless justified. Note: %define requiring justification: %define xmake_revision 2f6e5e72cb9527bad1b417ef9c48ea0ecfae53b7, %define tbox_revision 6e5fb77c5ab5c0d712871c52c42a5bc7843cd780, %define sv_revision 9a3cf7c8e589de4f70378824329882c4a047fffc, %define lua_cjson_revision 515bab6d6d80b164b94db73af69609ea02f3a798, %define luajit_revision e9af1abec542e6f9851ff2368e7f196b6382a44c, %define _binaries_in_noarch_packages_terminate_build 0 [x]: Reviewer should test that the package builds in mock. [x]: Buildroot is not present [x]: Package has no %clean section with rm -rf %{buildroot} (or $RPM_BUILD_ROOT) [x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin. [x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file [x]: Sources can be downloaded from URI in Source: tag [x]: SourceX is a working URL. ===== EXTRA items ===== Generic: [x]: Rpmlint is run on all installed packages. Note: There are rpmlint messages (see attachment). [x]: Spec file according to URL is the same as in SRPM. Rpmlint ------- Checking: xmake-2.5.1-1.fc34.noarch.rpm xmake-2.5.1-1.fc34.src.rpm xmake.noarch: W: spelling-error %description -l en_US makefile -> make file, make-file, filmmaker xmake.noarch: W: spelling-error %description -l en_US txt -> text, ext, tit xmake.noarch: E: description-line-too-long C It uses xmake.lua to maintain project builds. Compared with makefile/CMakeLists.txt, xmake.noarch: E: description-line-too-long C generate project files like CMake/Meson, and it also has a built-in package management xmake.noarch: W: incoherent-version-in-changelog 2.3.8-1 ['2.5.1-1.fc34', '2.5.1-1'] xmake.noarch: E: arch-independent-package-contains-binary-or-object /usr/bin/xmake xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/scripts/find_cudadevices.cpp xmake.noarch: E: non-executable-script /usr/share/xmake/scripts/update-script.sh 644 /bin/sh xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/console/project/src/main.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/qt.console/project/src/main.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/qt.quickapp/project/src/main.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/qt.quickapp_static/project/src/main.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/qt.shared/project/src/demo.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/qt.shared/project/src/demo.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/qt.shared/project/src/demo_global.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/qt.static/project/src/demo.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/qt.static/project/src/demo.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/qt.widgetapp/project/src/main.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/qt.widgetapp/project/src/mainwindow.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/qt.widgetapp/project/src/mainwindow.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/qt.widgetapp_static/project/src/main.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/qt.widgetapp_static/project/src/mainwindow.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/qt.widgetapp_static/project/src/mainwindow.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/shared/project/src/interface.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/shared/project/src/interface.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/shared/project/src/main.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/static/project/src/interface.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/static/project/src/interface.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/static/project/src/main.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/tbox.console/project/src/main.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/tbox.shared/project/src/_demo/main.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/tbox.shared/project/src/_library/interface.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/tbox.shared/project/src/_library/interface.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/tbox.static/project/src/_demo/main.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/tbox.static/project/src/_library/interface.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/tbox.static/project/src/_library/interface.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c++/xmake.cli/project/src/lni/main.cpp xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c/console/project/src/main.c xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c/shared/project/src/interface.c xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c/shared/project/src/interface.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c/shared/project/src/main.c xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c/static/project/src/interface.c xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c/static/project/src/interface.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c/static/project/src/main.c xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c/tbox.console/project/src/main.c xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c/tbox.shared/project/src/_demo/main.c xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c/tbox.shared/project/src/_library/interface.c xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c/tbox.shared/project/src/_library/interface.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c/tbox.static/project/src/_demo/main.c xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c/tbox.static/project/src/_library/interface.c xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c/tbox.static/project/src/_library/interface.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/c/xmake.cli/project/src/lni/main.c xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/objc++/bundle/project/src/test.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/objc++/framework/project/src/test.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/objc/bundle/project/src/test.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/objc/framework/project/src/test.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/objc/iosapp/project/src/AppDelegate.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/objc/iosapp/project/src/SceneDelegate.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/objc/iosapp/project/src/ViewController.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/objc/iosapp_with_framework/project/src/app/AppDelegate.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/objc/iosapp_with_framework/project/src/app/SceneDelegate.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/objc/iosapp_with_framework/project/src/app/ViewController.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/objc/iosapp_with_framework/project/src/framework/test.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/objc/macapp/project/src/AppDelegate.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/objc/macapp/project/src/ViewController.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/objc/macapp_with_framework/project/src/app/AppDelegate.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/objc/macapp_with_framework/project/src/app/ViewController.h xmake.noarch: W: devel-file-in-non-devel-package /usr/share/xmake/templates/objc/macapp_with_framework/project/src/framework/test.h xmake.noarch: W: no-manual-page-for-binary xmake xmake.noarch: W: no-manual-page-for-binary xrepo xmake.src: W: spelling-error %description -l en_US lua -> la, luau, lea xmake.src: W: spelling-error %description -l en_US makefile -> make file, make-file, filmmaker xmake.src: W: spelling-error %description -l en_US txt -> text, ext, tit xmake.src: E: description-line-too-long C It uses xmake.lua to maintain project builds. Compared with makefile/CMakeLists.txt, xmake.src: E: description-line-too-long C generate project files like CMake/Meson, and it also has a built-in package management 2 packages and 0 specfiles checked; 6 errors, 69 warnings. - You need to set debug=y to generate the debuginfo. Not sure how you're supposed to do it properly. This is an automatic check from review-stats script. This review request ticket hasn't been updated for some time. We're sorry it is taking so long. If you're still interested in packaging this software into Fedora repositories, please respond to this comment clearing the NEEDINFO flag. You may want to update the specfile and the src.rpm to the latest version available and to propose a review swap on Fedora devel mailing list to increase chances to have your package reviewed. If this is your first package and you need a sponsor, you may want to post some informal reviews. Read more at https://fedoraproject.org/wiki/How_to_get_sponsored_into_the_packager_group. Without any reply, this request will shortly be considered abandoned and will be closed. Thank you for your patience. This is an automatic action taken by review-stats script. The ticket submitter failed to clear the NEEDINFO flag in a month. As per https://fedoraproject.org/wiki/Policy_for_stalled_package_reviews we consider this ticket as DEADREVIEW and proceed to close it. |