Subject: |
Re: seq: benign(?) error message when building with R3.15 |
From: |
Benjamin Franksen <[email protected]> |
To: |
<[email protected]> |
Date: |
Fri, 1 Mar 2013 15:33:54 +0100 |
Thanks Andrew
I applied your patch (USR_DBDFLAGS addition is needed with 3.14.10, I added a
comment to explain that). I also made a number of changes to src/snc/Makefile
to restore builing with 3.14.8. The latest snapshot should now build with
3.14.8, 3.14.10, 3.14.12 and 3.15 (head); parallel build is supported from
3.14.12 onward, 'make runtests' from 3.14.10 onwards.
Ugh. That was a bit harder than I expected. (Note to self: remember to check
build compatibility with all support versions of base each time I make any
changes to any Makefile.)
If nothing comes up in the next few days I'll make a new release with these
changes.
Cheers
Ben
On Thursday, February 28, 2013 18:11:44 Andrew Johnson wrote:
> Hi Benjamin,
>
> On 2013-02-28 Benjamin Franksen wrote:
> > with the latest snapshot (http://www-
> > csr.bessy.de/control/SoftDist/sequencer/releases/seq-snapshot-latest.tar.g
> > z
> >
> > or darcs get
> > http://www-csr.bessy.de/control/SoftDist/sequencer/repo/branch-2-1/ ) I
> > can build the sequencer reliably under 3.15.0.1 (all patches applied),
> > even with parallel make. however, I get a spurious message saying
> >
> > Can't find file 'vxTestHarnessRegistrars.dbd'
> >
> > that I do not understand and do not get with base 3.14.12.2. It looks as
> > if
> > the build is ok despite the message (make runtests runs through just
> > fine),
> > but if you have a hint how to get rid of the message I'd be glad.
>
> I get several different issues. Using the latest 3.15 branch code and a
> serial build the first error I saw was this:
>
> /usr/bin/g++ -o decl -L/home/phoebus3/ANJ/epics/modules/soft/seq-
> snapshot-2013-02-28/lib/linux-x86_64 -
> L/home/phoebus3/ANJ/epics/base/mirror-3.15/lib/linux-x86_64 -Wl,-
> rpath,/home/phoebus3/ANJ/epics/modules/soft/seq-snapshot-2013-02-28/lib/linu
> x- x86_64
> -Wl,-rpath,/home/phoebus3/ANJ/epics/base/mirror-3.15/lib/linux-x86_64 -m64
> decl.o -lseqSoftIoc -lseq -lpv -ldbRecStd -ldbCore -lca -lCom decl.o: In
> function `main':
> /home/phoebus3/ANJ/epics/modules/soft/seq-
> snapshot-2013-02-28/test/validate/O.linux-x86_64/../seqMain.c:118: undefined
> reference to `seqSoftIoc_registerRecordDeviceDriver'
> collect2: ld returned 1 exit status
> make[3]: *** [decl] Error 1
> make[3]: Leaving directory `/home/phoebus3/ANJ/epics/modules/soft/seq-
> snapshot-2013-02-28/test/validate/O.linux-x86_64'
>
> I immediately went to the test/validate directory and ran make there.
> tux% make
> make: `vxTestHarness.db' is up to date.
> Huh? In the O.linux-x86_64 directory I get the same seqMain error from
> above.
>
> This is happening because in your test/validate/Makefile the rule for
> vxTestHarness.db$(DEP) appears *above* the "include $(TOP)/configure/RULES"
> line, contrary to the comment that follows. All rules *must* go below that
> include or they interfere with the default rule. You should probably check
> the other Makefiles for that too, I haven't looked.
>
> With that issue out of the way, the seqMain error is happening because my
> 3.15 build has gcc's -fvisibility=hidden flag set. That makes it essential
> to properly decorate all symbols that are going to be exported from a
> shared library, thus matching the behavior of DLLs built on Windows.
> Unfortunately the generated seqSoftIoc_registerRecordDeviceDriver()
> function is not (and can't be) decorated, so it's not actually possible to
> link it from a library. You have to link the .o file directly into each of
> your executables instead.
>
> I removed the seqSoftIoc library from your Makefile and added the magic to
> set xxx_SRCS = xxx.st $(seqSoftIoc_SRCS)
> for all your test programs.
>
> Ok, Finally I can see your error:
> tux% make -sj4
> Can't find file 'vxTestHarnessRegistrars.dbd'
> tux%
> Where is it coming from? Well if I run a serial make and look at the output
> it occurs here:
>
> perl -CSD /home/phoebus/ANJ/epics/base/mirror-3.15/bin/linux-
> x86_64/makeIncludeDbd.pl base.dbd ../O.Common/vxTestHarnessRegistrars.dbd
> vxTestHarnessInclude.dbd
> Can't find file 'vxTestHarnessRegistrars.dbd'
> make[1]: Leaving directory `/home/phoebus3/ANJ/epics/modules/soft/seq-
> snapshot-2013-02-28/test/validate/O.linux-x86_64'
> make[1]: Entering directory `/home/phoebus3/ANJ/epics/modules/soft/seq-
> snapshot-2013-02-28/test/validate/O.linux-x86_64'
>
> The fact that this came from the first build pass (when GNUmake says
> "Leaving" followed by "Entering" the same directory) usually indicates that
> it's a problem generating a dependency file, and in this case you don't
> have a rule to generate the vxTestHarness.dbd$(DEP) file. If I add that as
> well the error goes away:
>
> tux% make clean
> rm -rf O.linux-x86_64 O.vxWorks-ppc604_long O.vxWorks-ppc32
> O.vxWorks-ppc32sf O.RTEMS-uC5282 O.Common
> tux% make -sj4
> tux%
>
> I also ran the tests on linux-x86_64, which all passed BTW.
>
> You don't need to set USR_DBDFLAGS for 3.15 so I commented it out, but I
> guess it may be necessary for some earlier release of Base.
>
> Patch file attached, but I only tried this with the latest 3.15 branch.
>
> - Andrew
--
Ben Franksen
() ascii ribbon campaign - against html e-mail
/\ www.asciiribbon.org - against proprietary attachments
Attachment:
signature.asc
Description: This is a digitally signed message part.
- References:
- seq: benign(?) error message when building with R3.15 Benjamin Franksen
- Re: seq: benign(?) error message when building with R3.15 Andrew Johnson
- Navigate by Date:
- Prev:
RE: JCA Error Lucas José
- Next:
Re: What I learned today... Benjamin Franksen
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
<2013>
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: seq: benign(?) error message when building with R3.15 Andrew Johnson
- Next:
Building an Epics module only for a target (not host) Florian Feldbauer
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
<2013>
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|