[lsb-discuss] How to generate binary from the source?

Stew Benedict stewb at linux-foundation.org
Fri Aug 15 05:03:28 PDT 2008


On Fri, 15 Aug 2008, Hao Liu wrote:

> Hao Liu wrote:
> > Hi, guys,
> >   I'm working on debugging a test case, which is 
> > /tset/LI18NUX2K.L1/base/swscanf/T.swscanf,  given by LSB.
> > According to http://bugs.linuxbase.org/show_bug.cgi?id=1558#c6 ,  I 
> > patched the source .c file, revised scen.bld
> > and scen.exec, after these steps, I tried to generate the test case from 
> > the revised source file with
> >   tcc -b -s $HOME/scen.bld $*
> > I checked the build journal, it says:
> >
> > 0|3.6-lite 15:04:45 20080815|User: vsx0 (500) TCC Start, Command line: 
> > tcc -b -s scen.bld
> > 5|Linux IPv6testee.nay.redhat.com 2.6.18-92.el5 #1 SMP Tue Apr 29 
> > 13:21:29 EDT 2008 ppc64|System Information
> > 20|/home/tet/test_sets/tetbuild.cfg 0|Config Start
> > 30||VSX_OPER=hliu
> > 30||VSX_ORG=Red Hat
> > 30||VSX_SYS=Unknown
> > 30||TEST_XNFS=n
> > 30||VSXDIR=/home/tet/test_sets/SRC
> > 30||PATH=/home/tet/bin:/home/tet/test_sets/BIN:/home/tet/test_sets/TESTROOT/BIN:/home/tet/bin:/opt/lsb-tet3-lite/bin:/home/tet/test_sets/BIN:/home/tet/test_sets/TESTROOT/BIN:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/tet/test_sets:/sbin/:/usr/sbin:/home/tet/test_sets/BIN
> > 30||TET_SIG_IGN=
> > 30||TET_SIG_LEAVE=
> > 30||TET_BUILD_TOOL=vbuild
> > 30||TET_OUTPUT_CAPTURE=False
> > 30||TET_API_COMPLIANT=True
> > 30||TET_PASS_TC_NAME=False
> > 30||TET_VERSION=3.6-lite
> > 40||Config End
> > 110|0 /tset/LI18NUX2K.L1/base/swscanf/T.swscanf 15:04:45|Build Start, 
> > scenario ref 1-0
> > 15|0 3.6-lite 1|TCM Start
> > 400|0 0 1 15:04:45|IC Start
> > 200|0 1 15:04:45|TP Start
> > 520|0 1 00031892 1 1|/usr/bin/cc  
> > -I/home/tet/test_sets/SRC/../../inc/tet3 -I/home/tet/test_sets/SRC/INC 
> > -I/home/tet/test_sets/SRC/SYSINC -I. -D_XOPEN_SOURCE=500 -DUNDEF_MACROS  
> > -ansi -I/usr/include/gdbm    -c -o swscanf.o swscanf.c
> > 520|0 1 00031892 1 2|make: *** No rule to make target 
> > `/home/tet/test_sets/SRC/../../lib/tet3/tcm.o', needed by `T.swscanf'.  
> > Stop.
> > 220|0 1 1 15:04:45|FAIL
> > 410|0 0 1 15:04:45|IC End
> > 130|0 0 15:04:46|Build End, scenario ref 1-0
> > 900|15:04:46|TCC End
> >
> >
> > Can somebody tell me what's going wrong with my operations? Thank you.
> >
> > All the best,
> > Hao Liu
> > _______________________________________________
> > lsb-discuss mailing list
> > lsb-discuss at lists.linux-foundation.org
> > https://lists.linux-foundation.org/mailman/listinfo/lsb-discuss
> >   
> hey, guys,
>   I think it's because I miss so much .so and .o files in my 
> /home/tet/lib/tet3 folder making me unable to build binary from the 
> source, one of my colleague showed me there should be much more lib 
> files in tt folder.
>   Her folder:
> 
>     Ctcmchild.o       Cthrtcm.o    libthrapi_s.so  tcm_m.o
>     thrtcmc_m.o
>     Ctcmchild_s.o     Cthrtcm_s.o  libthrtcm_s.a   tcm_ms.o
>     thrtcmc_ms.o
>     Ctcm.o            libapi.a     tcmchild.o      tcm.o
>     thrtcm_m.o
>     Ctcm_s.o          libapi_s.so  tcmchild_s.o    tcm_s.o
>     thrtcm_ms.o
>     Cthrtcmchild.o    libtcm_s.a   tcmc_m.o        thrtcmchild.o    thrtcm.o
>     Cthrtcmchild_s.o  libthrapi.a  tcmc_ms.o       thrtcmchild_s.o
>     thrtcm_s.o
> 
>  
>   My /home/tet/lib/tet3:
> 
>     libapi.a libapi_s.so libtcm_s.a libthrapi.a libthrapi_s.so libthrtcm_s.a
> 
> 
> Can somebody tell me what's going wrong here? Thank you.
> 

I'm a little surprised if you're finding the file was not patched. This 
work was done well before the 3.2 release, but I guess it depends on how 
you're getting the source too, as the patch is applied at build time in 
the spec file.

Also, we've pretty much done away with things building in /home/tet, and 
building as root, via the rpm driven build.

But, to answer your question, shifting the directory tree to the way I'm 
more accustomed to seeing the build, yes there should be more files in 
lib/tet3. These are built before the tcc build of the tests itself, and in 
our build, the whole thing is scripted by some expect scripts.

The tet build is handled by setup.sh in the toplevel directory.

The easiest way I've found to be able to do interactive patch work with 
these tests is to check out our bzr tree and build a source rpm, and then 
you can use this in your ~/rpm to be able to work with individual tests.

bzr branch http://bzr.freestandards.org/lsb/3.2/runtime-test
cd runtime-test/scripts/package
BZRTREES=<top of your new 3.2 tree, mine is /mnt/LSB/bzr/3.2> make 
rpm_package

This should give you a src.rpm that you can install and build as a normal 
user.  In the devel tree, I've added a src_rpm target to make things 
faster to get a src.rpm, I could push the same in 3.2 if that helps.
It looks like our published src.rpm is lagging the binaries:

http://ftp.freestandards.org/pub/lsb/test_suites/released-3.2.0/source/runtime/lsb-test-core-3.2.0-2.src.rpm

I think Mats and I had a dsicussion about this earlier this week. We need 
to get better at publishing source and keeping things in sync.

rpm -i lsb-test-core-3.2.1-1.src.rpm
cd ~/rpm/SPECS
rpmbuild -bc lsb-test-core.spec --define "ver 3.2.1" --define "rel 1"
cd ~/rpm/BUILD/lsb-test-core-3.90.0/tet/test_sets/tset/LI18NUX2K.L1/base/swscanf
grep lsbcc vmake.INSTALL > make.sh
patch, edit, etc.
sh make.sh to rebuild
TET_ROOT=`pwd` ./T.swscanf && cat tet_xres 
(to run the test, doesn't work if the test needs variables provided by the harness, but works for many)

Hope this helps. You can try and grab me on IRC if you need more 
interactive help.

-- 
Stew Benedict
The Linux Foundation


More information about the lsb-discuss mailing list