On 30/4/21 1:15 am, dufa...@hda.com wrote: > > >> On Apr 30, 2021, at 05:03 , dufa...@hda.com wrote: >> >> Can I override what to use as "cmake" in RSB to specify "cmake3"? >> >>> On Apr 30, 2021, at 04:41 , Peter Dufault <dufa...@hda.com> wrote: >>> >>> I verified my environment is squeaky-clean with a simple path and no >>> environment variables set that affect RTEMS or "make". >> > > I need help figuring out how to setup rtems-source-builder, SOEM, and cmake. > I got it to "work" but it's mis-configured. At first it is not finding > header files (is it looking at the Linux headers?), then it installs SOEM in > the wrong place, etc. I can get the build and install to "work" by > re-running commands in a shell script - the second time a command is run it > behaves differently. > > - *Notes* > -- This started when I updated SOEM and needed to change to "cmake3". > -- After the following convoluted process the testing I've done on the > results are OK. > > - To simplify my path I make it simple except I add a directory with only a > "cmake" bash script: "cmake3 $*" in order to pick up cmake3.
Maybe the --macros argument can help. Create a file `xyz.txt` containing ... __cmake: exe, optional, 'cmake3' then try running with `--macros=xyz.txt` If the recipe for the build using cmake uses `%{__cmake}` then this may work. I have not tested any of this. :) Chris > > - The first time I run "sb-set-builder" the SOEM build fails because it can't > find <net/bpf.h>. This is just after it compiled a C file that includes > <net/if.h>. I'm not sure where it is looking for the headers, I'd expect it > would fail earlier if it was trying to use Linux headers, it's all the way to > the last file. > > - I then run the do-build script sb-set-builder created and it builds SOEM > *but it installs it in the wrong place*. > -- The do-build script is in > "${GITDIR}/rtems/rtems-source-builder/rtems/build/soem-powerpc-rtems6-1/do-build" > -- "do-build" installs SOEM in in > "${GITDIR}/rtems-source-builder/rtems/build/tmp/soem-powerpc-rtems6-1-root-dufault/opt/flatland/opt/rtems-6" > instead of "/opt/flatland/opt/rtems-6". > > - I then go to the generated directory > "${GITDIR}/rtems/rtems-source-builder/rtems/build/soem-powerpc-rtems6-1/build-xc" > and type "make install" The make succeeds, and *it installs SOEM in the > correct place* and SOEM is "successfully" built and installed. > > - The last nit is that when I try to build the SOEM examples I need to export > LDFLAGS="-lrtemsdefaultconfig -lm" to get the SOEM examples to configure. > *Note* this was an issue before I switched to cmake3, this one is not new. > > > I hope this gives someone enough clues to suggest what must be done to set > source builder up correctly. For reference here's the script. > > #!/bin/sh > set -e > # Script to get SOEM to build and install "properly". I just need to be > insistent. > > HERE=$(pwd) > # Clean up environment rsb-overrides only has a cmake shell script that is > "cmake $*". > export PATH=${HOME}/bin/rsb-overrides:/usr/bin:/usr/sbin:/bin:/sbin > unset LD_IBRARY_PATH > > export RTEMS_GIT=/home/dufault/development/rtems > export RTEMS_VER=6 > export RTEMS_SB=${RTEMS_GIT}/rtems-source-builder > export RTEMS_SB_BUILD=${RTEMS_SB}/rtems/build > export RTEMS_TOOLS=/opt/flatland/opt/rtems-${RTEMS_VER} > export RTEMS_ARCH=powerpc > export RTEMS_BSP=beatnik > # "soem-rtems" fetches waf-2.0.4. > SOEM_WAF=waf-2.0.4 > > SOEM_TIDY_UP="\ > ${RTEMS_TOOLS}/share/rtems/rsb/soem-${RTEMS_ARCH}-rtems${RTEMS_VER}-1.txt > \ > ${RTEMS_TOOLS}/share/rtems/rsb/soem-${RTEMS_ARCH}-rtems${RTEMS_VER}-1.xml > \ > > ${RTEMS_TOOLS}/${RTEMS_ARCH}-rtems${RTEMS_VER}/${RTEMS_BSP}/lib/share/soem \ > > ${RTEMS_TOOLS}/${RTEMS_ARCH}-rtems${RTEMS_VER}/${RTEMS_BSP}/lib/include/soem" > > > # We have this setup: ${RTEMS_GIT} > # |-- soem-rtems > # |-- rtems > # |-- rtems-source-builder > > # First tidy-up so we always start in the same state. > rm -rf ${RTEMS_SB_BUILD} ${SOEM_TIDY_UP} > cd ${RTEMS_GIT}/soem-rtems > if [ ! -e ${SOEM_WAF} ]; then > wget -P . https://waf.io/${SOEM_WAF} > chmod u+x ${SOEM_WAF} > git submodule init > git submodule update > else > ./${SOEM_WAF} distclean > fi > > cd ${RTEMS_SB}/rtems > > RTEMS_SB_DEBUG="--no-clean --jobs=1" > > # Now configure to build SOEM. > # This will fail with: > # > ${RTEMS_SB_BUILD}soem-${RTEMS_ARCH}-rtems${RTEMS_VER}-1/soem/oshw/rtems/nicdrv.c:37:10: > # fatal error: net/bpf.h: No such file or directory > > if ${RTEMS_SB}/source-builder/sb-set-builder \ > --log=log_${RTEMS_ARCH}_soem \ > --prefix=${RTEMS_TOOLS} \ > --with-tools=${RTEMS_TOOLS} \ > --host=${RTEMS_ARCH}-rtems${RTEMS_VER} \ > --with-rtems-bsp=${RTEMS_BSP} \ > ${RTEMS_SB_DEBUG} \ > net/soem ; \ > then > echo 2>&1 "*************************" > echo 2>&1 "************************* Success with sb-set-builder for > net/soem? But I expect failure!" > echo 2>&1 "*************************" > exit 1 > else > echo "*************************" > echo "************************* sb-set-builder failed because it > can't find <net/bpf.h>. Build again..." > echo "*************************" > fi > > # Now we can manually do the build to finish the build. > # This won't quite work either, because it installs SOEM in the wrong place. > ${RTEMS_SB_BUILD}/soem-${RTEMS_ARCH}-rtems${RTEMS_VER}-1/do-build > > echo "*************************" > echo "************************* Finished do-build but it installed in the > wrong place. Redo install..." > echo "*************************" > > # so to finish up and install properly in the prefix > # I need to do another "make install" in the build-xc directory. > cd ${RTEMS_SB_BUILD}/soem-${RTEMS_ARCH}-rtems${RTEMS_VER}-1/build-xc/ > make install > > # SOEM is "installed". Now I can build the RTEMS SOEM examples. > > cd ${RTEMS_GIT}/soem-rtems > > export LDFLAGS="-lrtemsdefaultconfig -lm" > > echo "*************************" > echo "************************* XXX Why do I need to set LDFLAGS to > ${LDFLAGS} before the ./${SOEM_WAF} configure?" > echo "*************************" > > ./${SOEM_WAF} configure \ > --prefix=${RTEMS_TOOLS} \ > --rtems-bsps=${RTEMS_ARCH}/${RTEMS_BSP} \ > --rtems-version=${RTEMS_VER} > > ./${SOEM_WAF} > > echo "*************************" > echo "************************* Done!" > echo "*************************" > > > Peter > ----------------- > Peter Dufault > HD Associates, Inc. Software and System Engineering > > This email is delivered through the public internet using protocols subject > to interception and tampering. > > > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel > _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel