pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pkg/42704: Adding support for bmake as a pkgsrc tool (ala gmake)



>Number:         42704
>Category:       pkg
>Synopsis:       Adding support for bmake as a pkgsrc tool (ala gmake)
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    pkg-manager
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Sat Jan 30 11:20:00 +0000 2010
>Originator:     Robert Elz
>Release:        NetBSD 4.0 / i386   (pkgsrc current 2010-01-30)
>Organization:
        Prince of Songkla University
>Environment:
System: NetBSD jade.coe.psu.ac.th 4.0_STABLE NetBSD 4.0_STABLE 
(JADE-1.696-20080517) #9: Fri May 23 18:55:13 ICT 2008 
kre%jade.coe.psu.ac.th@localhost:/usr/obj/4/kernels/JADE i386
Architecture: i386
Machine: i386
>Description:
        There are more and more packages (gnome derived ones mostly)
        that are triggering the bug in NetBSD 4's make program related
        to long input lines (usually found in a .deps/*.po type file)

        Since NetBSD 4 is still supposed to be supported by pkgsrc,
        and since it seems unlikely that there will ever be a new NetBSD 4
        release to incorporate a fixed version of make, all the packages
        that encounter this problem need to use a pkgsrc supplied
        version of make rather than the system version (when building
        in a NetBSD 4 environment).

        Until now, the only alternative has been gmake, and while gmake
        and bmake are largely compatible, "largely" should probably be
        in quotes - it seems to me that if a package builds using the
        standard NetBSD make on NetBSD 5 (or later) it should use as close
        to that as possible on NetBSD 4.

        Since we have devel/bmake already in pkgsrc, I thought I'd see how
        easy it would be to make that available as a build tool for
        pkgsrc (as gmake is, for packages that have gmake extensions in
        their Makefiles).   This turns out to be easy...

        What's more, it seems to work...

>How-To-Repeat:
        I'm not sur ethis section makes much sense in a PR that's a
        change request, but to see an example of a package that has
        the problem today, try time/gtodo-applet - attempt to build
        that on NetBSD 4, and expect to see ...

===> Installing for gtodo-applet-0.1nb18
=> Generating pre-install file lists
Making install in src
[1]   Segmentation fault (core dumped) (cd ${subdir} &&...
*** Error code 1

Stop.
make: stopped in /pkg_comp/obj/pkgsrc/time/gtodo-applet/4x/gtodo-applet-0.1

        the core file dumped is from make, and sure enough, there's a
        BIG .deps/xxx.po file (I forget its name, it isn't important here)

        After the following patch is applied, adding

                USE_TOOLS+= bmake

        to gtodo-applet's Makefile allows that package to build successfully.

        Quite possibly using gmake would as well - since these are mostly
        gnome applications that encounter the bug, it would be surprising if
        gmake wouldn't work ... neevrtheless, the NetBSD 4 make bug could be
        experienced anywhere, so I submit that being able to use bmake as
        a tool is a useful function to add.

>Fix:
        The following patch (applied in pkgsrc/mk) will add support
        for adding bmake as a tool.

Index: tools/defaults.mk
===================================================================
RCS file: /cvsroot/NetBSD/pkgsrc/mk/tools/defaults.mk,v
retrieving revision 1.57
diff -u -r1.57 defaults.mk
--- tools/defaults.mk   8 Jul 2009 12:51:16 -0000       1.57
+++ tools/defaults.mk   30 Jan 2010 10:48:11 -0000
@@ -55,6 +55,7 @@
 _TOOLS_VARNAME.basename=       BASENAME
 _TOOLS_VARNAME.bash=           BASH
 _TOOLS_VARNAME.bison-yacc=     YACC
+_TOOLS_VARNAME.bmake=          BMAKE
 _TOOLS_VARNAME.byacc=          YACC
 _TOOLS_VARNAME.bzcat=          BZCAT
 _TOOLS_VARNAME.bzip2=          BZIP2
Index: tools/make.mk
===================================================================
RCS file: /cvsroot/NetBSD/pkgsrc/mk/tools/make.mk,v
retrieving revision 1.13
diff -u -r1.13 make.mk
--- tools/make.mk       17 Jul 2005 21:36:24 -0000      1.13
+++ tools/make.mk       30 Jan 2010 10:54:12 -0000
@@ -49,6 +49,8 @@
 # Define MAKE_PROGRAM to be the "make" used to build the package.
 .if !empty(_USE_TOOLS:Mgmake)
 MAKE_PROGRAM=          ${GMAKE}
+.elif !empty(_USE_TOOLS:Mbmake)
+MAKE_PROGRAM=          ${BMAKE}
 .elif !empty(_USE_TOOLS:Mimake) && defined(IMAKE_MAKE)
 MAKE_PROGRAM=          ${IMAKE_MAKE}
 .else
Index: tools/replace.mk
===================================================================
RCS file: /cvsroot/NetBSD/pkgsrc/mk/tools/replace.mk,v
retrieving revision 1.223
diff -u -r1.223 replace.mk
--- tools/replace.mk    20 Jan 2010 14:47:30 -0000      1.223
+++ tools/replace.mk    30 Jan 2010 10:46:06 -0000
@@ -258,6 +258,17 @@
 TOOLS_VALUE_GNU.bison-yacc=    ${TOOLS_CMDLINE.bison-yacc}
 .endif
 
+.if !defined(TOOLS_IGNORE.bmake) && !empty(_USE_TOOLS:Mbmake)
+.  if !empty(PKGPATH:Mdevel/bmake)
+MAKEFLAGS+=                    TOOLS_IGNORE.bmake=
+.  elif !empty(_TOOLS_USE_PKGSRC.bmake:M[yY][eE][sS])
+TOOLS_DEPENDS.bmake?=          bmake>=20090909:../../devel/bmake
+TOOLS_CREATE+=                 bmake
+TOOLS_FIND_PREFIX+=            TOOLS_PREFIX.bmake=bmake
+TOOLS_PATH.bmake=              ${TOOLS_PREFIX.bmake}/bin/bmake
+.  endif
+.endif
+
 .if !defined(TOOLS_IGNORE.bsdtar) && !empty(_USE_TOOLS:Mbsdtar)
 .  if !empty(PKGPATH:Marchivers/bsdtar)
 MAKEFLAGS+=                    TOOLS_IGNORE.bsdtar=



Home | Main Index | Thread Index | Old Index