From owner-freebsd-hackers@freebsd.org Wed Mar 28 16:05:09 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9BA11F6A4D2 for ; Wed, 28 Mar 2018 16:05:08 +0000 (UTC) (envelope-from danny@cs.huji.ac.il) Received: from kabab.cs.huji.ac.il (kabab.cs.huji.ac.il [132.65.116.210]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E4970737C4; Wed, 28 Mar 2018 16:05:07 +0000 (UTC) (envelope-from danny@cs.huji.ac.il) Received: from imac.bk.cs.huji.ac.il ([132.65.179.42]) by kabab.cs.huji.ac.il with esmtp id 1f1DZP-0004Kh-IY; Wed, 28 Mar 2018 19:05:03 +0300 From: Daniel Braniss Message-Id: Mime-Version: 1.0 (Mac OS X Mail 11.2 \(3445.5.20\)) Subject: Re: how to add local changes to buildworld? Date: Wed, 28 Mar 2018 19:05:03 +0300 In-Reply-To: <1522247949.49673.54.camel@freebsd.org> Cc: freebsd-hackers@freebsd.org To: Ian Lepore References: <1522169225.49673.36.camel@freebsd.org> <539E3F8D-8275-4904-8D19-8FB31C05787C@cs.huji.ac.il> <1522247949.49673.54.camel@freebsd.org> X-Mailer: Apple Mail (2.3445.5.20) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Mar 2018 16:05:09 -0000 > On 28 Mar 2018, at 17:39, Ian Lepore wrote: >=20 > On Wed, 2018-03-28 at 08:50 +0300, Daniel Braniss wrote: >>=20 >>>=20 >>> On 27 Mar 2018, at 19:47, Ian Lepore wrote: >>>=20 >>> On Tue, 2018-03-27 at 19:20 +0300, Daniel Braniss wrote: >>>>=20 >>>> Hi, >>>> I have some local additions which int the past, after making = changes >>>> to some Makefiles, etc, I got them compiled >>>> but somehow, things stopped working after 11, so I=E2=80=99m now = trying to do >>>> a fresh set of patches, >>>> and was wondering if there is some docs around on how to to this >>>> cleanly? trying to figure out the *.mk is becoming a bit = complicated. >>>> thanks, >>>> danny >>>>=20 >>> If you're asking what I think (you want to add code of your own into >>> the buildworld), just add LOCAL_DIRS=3D"path/to/dir1 path/to/dir2" = to the >>> buildworld command line and it will visit your directories and run = the >>> same targets there as for standard freebsd dirs (so your makefiles = have >>> to have those targets, mostly easily accomplished by including the >>> usual bsd..mk where foo=3Dprog|lib|subdir|whatever. >>>=20 >>> The local dir paths in LOCAL_DIRS must be relative to the top-level >>> freebsd source dir, you can't use absolute paths (but you can use >>> relative paths that take you outside the freebsd path, I think, like >>> ../mysources/project1). >>>=20 >>> -- Ian >>>=20 >> I guess in my haste I was not clear enough :-) >> my problem is the dependency, >> in particular, it=E2=80=99s a pam module, that needs a local library. = in the past the library was compiled first, and then the module, >> now it still happens, but the module does not find the library, which = has been compiled! there is a new piece of mail that >> i=E2=80=99m missing :-(=20 >> i=E2=80=99ll try again with LOCAL_DIRS. >> thanks >> danny >=20 > Oh yeah, libraries... there is also a LOCAL_LIB_DIRS you can set to > list libraries. But looking at Makefile.inc1 it builds the local lib > dirs after the other local dirs, which seems completely wrong and > useless. I think the LOCAL_LIB_DIRS should be built along with the > base system dirs; the attached patch would do that. >=20 > -- Ian > Index: Makefile.inc1 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- Makefile.inc1 (revision 331499) > +++ Makefile.inc1 (working copy) > @@ -241,6 +241,17 @@ X${BINUTIL}?=3D ${${BINUTIL}} > SUBDIR=3D ${SUBDIR_OVERRIDE} > .else > SUBDIR=3D lib libexec > +# Add LOCAL_LIB_DIRS, but only if they will not be picked up as a = SUBDIR > +# of a LOCAL_DIRS directory. This allows LOCAL_DIRS=3Dfoo and > +# LOCAL_LIB_DIRS=3Dfoo/lib to behave as expected. > +.for _DIR in ${LOCAL_DIRS:M*/} ${LOCAL_DIRS:N*/:S|$|/|} > +_REDUNDANT_LIB_DIRS+=3D ${LOCAL_LIB_DIRS:M${_DIR}*} > +.endfor > +.for _DIR in ${LOCAL_LIB_DIRS} > +.if ${_DIR} =3D=3D ".WAIT" || (empty(_REDUNDANT_LIB_DIRS:M${_DIR}) && = exists(${.CURDIR}/${_DIR}/Makefile)) > +SUBDIR+=3D ${_DIR} > +.endif > +.endfor > .if !defined(NO_ROOT) && (make(installworld) || make(install)) > # Ensure libraries are installed before progressing. > SUBDIR+=3D.WAIT > @@ -282,17 +293,6 @@ SUBDIR+=3Dcontrib/ofed > SUBDIR+=3D ${_DIR} > .endif > .endfor > -# Add LOCAL_LIB_DIRS, but only if they will not be picked up as a = SUBDIR > -# of a LOCAL_DIRS directory. This allows LOCAL_DIRS=3Dfoo and > -# LOCAL_LIB_DIRS=3Dfoo/lib to behave as expected. > -.for _DIR in ${LOCAL_DIRS:M*/} ${LOCAL_DIRS:N*/:S|$|/|} > -_REDUNDANT_LIB_DIRS+=3D ${LOCAL_LIB_DIRS:M${_DIR}*} > -.endfor > -.for _DIR in ${LOCAL_LIB_DIRS} > -.if ${_DIR} =3D=3D ".WAIT" || (empty(_REDUNDANT_LIB_DIRS:M${_DIR}) && = exists(${.CURDIR}/${_DIR}/Makefile)) > -SUBDIR+=3D ${_DIR} > -.endif > -.endfor >=20 > # We must do etc/ last as it hooks into building the man whatis file > # by calling 'makedb' in share/man. This is only relevant for i also found LOCAL_LIB_DIRS, and the library was built, but then when I = tried to use it with LIBADD +=3D idng it complained it didn=E2=80=99t know what I was talking, so I had to add = it to bsd.libnames.mk and bsd.own.mk which is sort of messy. BTW, the order of the libs in my case was not important, as long as they = got compiled before the pam module! anyways, now I have changed my old method (dates back to 4!) and = switched to use mercurial + svn, and hopefully will be able to track my local changes better - though I=E2=80=99= m still figuring out how to do this :-) thanks, danny