On Wed, May 26, 2021, 7:54 PM Chris Johns <chr...@rtems.org> wrote: > 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. :) >
This may be a stupid question but can you build it by hand? --joel > > > 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 >
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel