Summary: | USES=gmake can break CMAKE_NINJA=yes | ||
---|---|---|---|
Product: | Ports & Packages | Reporter: | Raphael Kubo da Costa <rakuco> |
Component: | Ports Framework | Assignee: | Port Management Team <portmgr> |
Status: | Closed Overcome By Events | ||
Severity: | Affects Only Me | CC: | kde, ports-bugs, tcberner |
Priority: | --- | ||
Version: | Latest | ||
Hardware: | Any | ||
OS: | Any | ||
See Also: | https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=219629 |
Description
Raphael Kubo da Costa
![]() ![]() I think that a port should have only 1 USES that sets MAKE_CMD. If it needs 2 tools, like scons calling gmake, it should have USES=scons + a build dependency on gmake. Can't you use something like this? .if !defined(CMAKE_NINJA) USES+= gmake .endif Also "USES=gmake cmake" is different from "USES=cmake gmake" but it's quite dirty to rely on this. (In reply to Antoine Brodin from comment #1) > Can't you use something like this? > > .if !defined(CMAKE_NINJA) > USES+= gmake > .endif The problem with this is that it adds a burden to every single port that uses CMake and cannot be built with bmake, which is not very feasible. One thing tcberner@ thought of a while ago was this in Uses/cmake.mk: .if ${USES:Mgmake} .include ${USESDIR}/gmake.mk .endif .if defined(CMAKE_NINJA) .include "${USESDIR}/ninja.mk" .endif which would give preference to ninja as expected. Would something like this be OK? (In reply to Raphael Kubo da Costa from comment #2) This will still bring gmake in the build depends. Maybe a USES= cmake:something, which brings either gmake.mk or ninja.mk depending on CMAKE_NINJA? I think that there should be an exp-run with CMAKE_NINJA=yes and USES=gmake neutralized to determine what are the actual needs of the ports: - Are there ports that build fine with gmake but fail to build with ninja? - Are there ports that build fine with bsd make but fail to build with ninja? - Are there ports that build fine with either gmake or ninja? Something like: .if defined(CMAKE_NINJA) # Neutralize gmake.mk for the exp-run _INCLUDE_USES_GMAKE_MK= yes .include "${USESDIR}/ninja.mk" .endif (In reply to Antoine Brodin from comment #4) > I think that there should be an exp-run with CMAKE_NINJA=yes and USES=gmake > neutralized to determine what are the actual needs of the ports: > > - Are there ports that build fine with gmake but fail to build with ninja? > - Are there ports that build fine with bsd make but fail to build with ninja? > - Are there ports that build fine with either gmake or ninja? I work on that, but what's the desired effect of those results on this bug? A commit references this bug: Author: tcberner Date: Sun Jun 25 21:08:06 UTC 2017 New revision: 444324 URL: https://svnweb.freebsd.org/changeset/ports/444324 Log: Make ninja opt-out in cmake.mk Using ninja instead of make (1) can lead to significant speed ups while building. Therefore switch from having the ninja generator opt-in to having it opt-out. Previously cmake-ports that wanted to use ninja could set CMAKE_NINJA=yes now, ports that do not work with ninja can set cmake:<existing args>,noninja Note, that needing this should be an exception and most often points to a broken cmake of the port. The ports using cmake were modified * removed USES=gmake, if ninja is used * removed MAKE_ARGS, if ninja is used * added the cmake-argument noninja if necessary PR: 219629 PR: 213331 Exp-run by: antoine Reviewed by: rakuco Differential Revision: https://reviews.freebsd.org/D10748 Changes: head/CHANGES head/Mk/Uses/cmake.mk head/Mk/bsd.sanity.mk head/astro/marble/Makefile head/audio/csound6/Makefile head/audio/fluidsynth/Makefile head/audio/libgme/Makefile head/cad/kicad/Makefile head/cad/opencascade/Makefile head/cad/openvsp/Makefile head/chinese/fcitx/Makefile head/chinese/ibus-chewing/Makefile head/comms/uhd/Makefile head/comms/usrp/Makefile head/databases/cppdb/Makefile head/databases/evolution-data-server/Makefile head/databases/mariadb100-server/Makefile head/databases/mariadb55-server/Makefile head/databases/mysql55-server/Makefile head/databases/mysql56-server/Makefile head/databases/mysql57-server/Makefile head/databases/mysql80-server/Makefile head/databases/mysqlwsrep56-server/Makefile head/databases/percona55-server/Makefile head/databases/percona56-server/Makefile head/databases/percona57-server/Makefile head/databases/tarantool/Makefile head/databases/xtrabackup/Makefile head/deskutils/kdeconnect/Makefile head/deskutils/kdepim4/Makefile head/deskutils/owncloudclient/Makefile head/devel/bullet/Makefile head/devel/compiler-rt/Makefile head/devel/doxygen/Makefile head/devel/flang/Makefile head/devel/flang-clang/Makefile head/devel/kapptemplate/Makefile head/devel/kdevelop-kde4/Makefile head/devel/kdevelop-php/Makefile head/devel/libzrtpcpp/Makefile head/devel/llvm-cheri/Makefile head/devel/llvm-devel/Makefile head/devel/llvm38/Makefile head/devel/llvm39/Makefile head/devel/llvm40/Makefile head/devel/mongo-c-driver/Makefile head/devel/rapidjson/Makefile head/devel/tesla/Makefile head/devel/xxhash/files/ head/devel/xxhash/files/patch-git_5ab73ee head/editors/codelite/Makefile head/editors/jucipp/Makefile head/editors/kate-plugin-pate/Makefile head/editors/neovim/Makefile head/games/hedgewars/Makefile head/games/openclonk/Makefile head/games/openmw/Makefile head/games/palomino/Makefile head/games/solarus/Makefile head/games/vavoom/Makefile head/graphics/aseprite/Makefile head/graphics/darktable/Makefile head/graphics/digikam-kde4/Makefile.common head/graphics/ilmbase/files/patch-git_8eed7012 head/graphics/inkscape/Makefile head/graphics/luxrender/Makefile head/graphics/mitsuba/Makefile head/graphics/opensubdiv/Makefile head/graphics/osg-devel/Makefile head/graphics/osgearth/Makefile head/graphics/rawtherapee/Makefile head/graphics/tulip/Makefile head/graphics/waffle/Makefile head/graphics/xcftools/Makefile head/irc/weechat/Makefile head/lang/beignet/Makefile head/lang/io/Makefile head/lang/sagittarius-scheme/Makefile head/mail/evolution/Makefile head/mail/evolution-ews/Makefile head/mail/libcmime/Makefile head/mail/libvmime/Makefile head/mail/spmfilter/Makefile head/mail/spmfilter-clamav/Makefile head/math/metis/Makefile head/math/parmetis/Makefile head/math/stp/Makefile head/multimedia/avidemux/Makefile.common head/multimedia/gstreamer-qt4/Makefile head/multimedia/plexhometheater/Makefile head/multimedia/zoneminder/Makefile head/multimedia/zoneminder-h264/Makefile head/net/ceph-devel/Makefile head/net/tigervnc/Makefile head/net-im/licq/Makefile head/net-im/ring-gnome/Makefile head/net-im/ring-libclient/Makefile head/science/paraview/Makefile head/security/kwalletmanager/Makefile head/security/libzrtpcppcore/Makefile head/sysutils/baloo/Makefile head/sysutils/conky/Makefile head/sysutils/fluent-bit/Makefile head/sysutils/kcm-polkit-kde/Makefile head/sysutils/osquery/Makefile head/textproc/clucene/Makefile head/textproc/zxing-cpp/Makefile head/www/h2o/Makefile head/www/webkit2-gtk3/Makefile head/x11/kde4-runtime/Makefile head/x11/kde4-workspace/Makefile head/x11/virtualgl/Makefile head/x11-themes/kde4-style-bespin/Makefile head/x11-themes/kde4-windeco-crystal/Makefile head/x11-wm/pawm/Makefile |