Durandal compilation ‘stm32_spi.o’ failed but the other boards are compiling fine

Hi everyone,

I’m trying to compile the PX4 Firmare (pulled on april 15) for the durandal board
make holybro_durandal-v1_default
but the compilation crashes
Makefile:172: recipe for target 'stm32_spi.o' failed
The odd thing is that I am able to compile the other boards; make and make mro_x21 are working perfectly.

I’m on ubuntu 16.04LTS. Any idea ?

complete compilation report:

-- PX4 version: v1.11.0-beta1-1323-g90a5827
-- PX4 config file: /home/romain/src/ourpx4stuff/boards/holybro/durandal-v1/default.cmake
-- PX4 config: holybro_durandal-v1_default
-- PX4 platform: nuttx
Checked platforms/nuttx/NuttX/nuttx submodule, ACTION REQUIRED:

Different commits:
* platforms/nuttx/NuttX/nuttx b902d4c...7fffab1 (5):
  > [BACKPORT] Revert "arch/arm/src/stm32f7/stm32_flash.c: Add flash block mapping support for progmem."
  > [Backport] FMUK66 SocketCAN driver & Configurable Bitrate support
  > [Backport] SocketCAN support
  > [BACKPORT] stm32h7:Fix DMA Overrun error
  > [BACKPORT] stm32h7:spi Add buffers for DMA


 *******************************************************************************
 *   IF YOU DID NOT CHANGE THIS FILE (OR YOU DON'T KNOW WHAT A SUBMODULE IS):  *
 *   Hit 'u' and <ENTER> to update ALL submodules and resolve this.            *
 *   (performs git submodule sync --recursive                                  *
 *    and git submodule update --init --recursive )                            *
 *******************************************************************************


   Only for EXPERTS:
   platforms/nuttx/NuttX/nuttx submodule is not in the recommended version.
   Hit 'y' and <ENTER> to continue the build with this version. Hit <ENTER> to resolve manually.
   Use git add platforms/nuttx/NuttX/nuttx && git commit -m 'Updated platforms/nuttx/NuttX/nuttx' to choose this version (careful!)

u
Synchronizing submodule url for 'platforms/nuttx/NuttX/nuttx'
Submodule path 'platforms/nuttx/NuttX/nuttx': checked out 'b902d4ca3d79ffbd5148670cb13bfeef7d917555'
Submodule path 'platforms/nuttx/NuttX/nuttx': checked out 'b902d4ca3d79ffbd5148670cb13bfeef7d917555'
Submodule fixed, continuing build..
-- cmake build type: MinSizeRel
-- The CXX compiler identification is GNU 7.2.1
-- The C compiler identification is GNU 7.2.1
-- The ASM compiler identification is GNU
-- Found assembler: /home/romain/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-none-eabi-gcc
-- Check for working CXX compiler using: Ninja
-- Check for working CXX compiler using: Ninja -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Check for working C compiler using: Ninja
-- Check for working C compiler using: Ninja -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Enabling double FP precision hardware instructions
-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.5.1", minimum required is "3") 
-- build type is MinSizeRel
-- PX4 ECL: Very lightweight Estimation & Control Library v1.9.0-rc1-255-g47624a0
-- Building and including px4_io-v2_default
-- Building and including bootloader holybro_durandal-v1_bootloader
-- ROMFS: px4fmu_common
-- ROMFS: Adding rc.board_defaults
-- ROMFS: Adding rc.board_sensors
-- ROMFS: Adding rc.board_mavlink
-- Found SVD: 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/romain/src/ourpx4stuff/build/holybro_durandal-v1_default
[1/1276] git submodule platforms/nuttx/NuttX/nuttx
[7/1276] git submodule platforms/nuttx/NuttX/apps
[10/1276] git submodule src/lib/ecl
[20/1276] git submodule src/drivers/gps/devices
[23/1276] git submodule mavlink/include/mavlink/v2.0
[183/1276] Performing configure step for 'bootloader_firmware'
-- PX4 version: v1.11.0-beta1-1323-g90a5827
-- PX4 config file: /home/romain/src/ourpx4stuff/boards/holybro/durandal-v1/bootloader.cmake
-- PX4 config: holybro_durandal-v1_bootloader
-- PX4 platform: nuttx
-- cmake build type: MinSizeRel
-- The CXX compiler identification is GNU 7.2.1
-- The C compiler identification is GNU 7.2.1
-- The ASM compiler identification is GNU
-- Found assembler: /home/romain/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-none-eabi-gcc
-- Check for working CXX compiler using: Ninja
-- Check for working CXX compiler using: Ninja -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Check for working C compiler using: Ninja
-- Check for working C compiler using: Ninja -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Enabling double FP precision hardware instructions
-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.5.1", minimum required is "3") 
-- build type is MinSizeRel
-- PX4 ECL: Very lightweight Estimation & Control Library v1.9.0-rc1-255-g47624a0
-- Configuring done
-- Generating done
-- Build files have been written to: /home/romain/src/ourpx4stuff/build/holybro_durandal-v1_default/external/Build/bootloader_firmware
[184/1276] Performing build step for 'bootloader_firmware'
[1/238] git submodule platforms/nuttx/NuttX/nuttx
[5/238] git submodule platforms/nuttx/NuttX/apps
[236/238] Linking CXX executable holybro_durandal-v1_bootloader.elf
Memory region         Used Size  Region Size  %age Used
            itcm:          0 GB        64 KB      0.00%
           flash:       41850 B         2 MB      2.00%
           dtcm1:          0 GB        64 KB      0.00%
           dtcm2:          0 GB        64 KB      0.00%
            sram:        7032 B       512 KB      1.34%
           sram1:          0 GB       128 KB      0.00%
           sram2:          0 GB       128 KB      0.00%
           sram3:          0 GB        32 KB      0.00%
           sram4:          0 GB        64 KB      0.00%
           bbram:          0 GB         4 KB      0.00%
[238/238] Creating /home/romain/src/ou...are/holybro_durandal-v1_bootloader.px4
[184/1276] Performing configure step for 'px4io_firmware'
-- PX4 version: v1.11.0-beta1-1323-g90a5827
-- PX4 config file: /home/romain/src/ourpx4stuff/boards/px4/io-v2/default.cmake
-- PX4 config: px4_io-v2_default
-- PX4 platform: nuttx
-- cmake build type: MinSizeRel
-- The CXX compiler identification is GNU 7.2.1
-- The C compiler identification is GNU 7.2.1
-- The ASM compiler identification is GNU
-- Found assembler: /home/romain/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-none-eabi-gcc
-- Check for working CXX compiler using: Ninja
-- Check for working CXX compiler using: Ninja -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Check for working C compiler using: Ninja
-- Check for working C compiler using: Ninja -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.5.1", minimum required is "3") 
-- build type is MinSizeRel
-- PX4 ECL: Very lightweight Estimation & Control Library v1.9.0-rc1-255-g47624a0
-- Configuring done
-- Generating done
-- Build files have been written to: /home/romain/src/ourpx4stuff/build/holybro_durandal-v1_default/external/Build/px4io_firmware
[314/1276] Generating nuttx/arch/arm/src/libarch.a
FAILED: cd /home/romain/src/ourpx4stuff/build/holybro_durandal-v1_default/NuttX/nuttx && find arch/arm/src -type f -name *.o -delete && make -C arch/arm/src --quiet --no-print-directory all TOPDIR=/home/romain/src/ourpx4stuff/build/holybro_durandal-v1_default/NuttX/nuttx KERNEL=y EXTRADEFINES=-D__KERNEL__
chip/stm32_spi.c:387:15: error: 'DMAMAP_SPI2_RX' undeclared here (not in a function); did you mean 'DMAMAP_SPI1_RX'?
   .rxch     = DMAMAP_SPI2_RX,
               ^~~~~~~~~~~~~~
               DMAMAP_SPI1_RX
chip/stm32_spi.c:388:15: error: 'DMAMAP_SPI2_TX' undeclared here (not in a function); did you mean 'DMAMAP_SPI2_RX'?
   .txch     = DMAMAP_SPI2_TX,
               ^~~~~~~~~~~~~~
               DMAMAP_SPI2_RX
chip/stm32_spi.c:487:15: error: 'DMAMAP_SPI4_RX' undeclared here (not in a function); did you mean 'DMAMAP_SPI2_RX'?
   .rxch     = DMAMAP_SPI4_RX,
               ^~~~~~~~~~~~~~
               DMAMAP_SPI2_RX
chip/stm32_spi.c:488:15: error: 'DMAMAP_SPI4_TX' undeclared here (not in a function); did you mean 'DMAMAP_SPI4_RX'?
   .txch     = DMAMAP_SPI4_TX,
               ^~~~~~~~~~~~~~
               DMAMAP_SPI4_RX
chip/stm32_spi.c:537:15: error: 'DMAMAP_SPI5_RX' undeclared here (not in a function); did you mean 'DMAMAP_SPI4_RX'?
   .rxch     = DMAMAP_SPI5_RX,
               ^~~~~~~~~~~~~~
               DMAMAP_SPI4_RX
chip/stm32_spi.c:538:15: error: 'DMAMAP_SPI5_TX' undeclared here (not in a function); did you mean 'DMAMAP_SPI5_RX'?
   .txch     = DMAMAP_SPI5_TX,
               ^~~~~~~~~~~~~~
               DMAMAP_SPI5_RX
chip/stm32_spi.c:587:15: error: 'DMAMAP_SPI6_RX' undeclared here (not in a function); did you mean 'DMAMAP_SPI5_RX'?
   .rxch     = DMAMAP_SPI6_RX,
               ^~~~~~~~~~~~~~
               DMAMAP_SPI5_RX
chip/stm32_spi.c:588:15: error: 'DMAMAP_SPI6_TX' undeclared here (not in a function); did you mean 'DMAMAP_SPI6_RX'?
   .txch     = DMAMAP_SPI6_TX,
               ^~~~~~~~~~~~~~
               DMAMAP_SPI6_RX
Makefile:172: recipe for target 'stm32_spi.o' failed
make[1]: *** [stm32_spi.o] Error 1
[314/1276] Generating nuttx/drivers/libdrivers.a
ninja: build stopped: subcommand failed.
Makefile:198: recipe for target 'holybro_durandal-v1_default' failed
make: *** [holybro_durandal-v1_default] Error 1

@bkueng this should work fine, right?

I think the problem is here:

when I do a git submodule update --init --recursive I obtain
platforms/nuttx/NuttX/nuttx, fatal: reference is not a tree

remote: Enumerating objects: 457, done.
remote: Counting objects: 100% (457/457), done.
remote: Compressing objects: 100% (74/74), done.
remote: Total 472 (delta 278), reused 454 (delta 275), pack-reused 15
Receiving objects: 100% (472/472), 70.49 KiB | 0 bytes/s, done.
Resolving deltas: 100% (278/278), completed with 165 local objects.
From https://github.com/PX4/NuttX
   e899bc9..a59ae55  master     -> origin/master
 + 854dbe3...d20f32a pr-f412_px4 -> origin/pr-f412_px4  (forced update)
fatal: reference is not a tree: 010c11372bf01cbea03f84405790ed400fc70dc6
Unable to checkout '010c11372bf01cbea03f84405790ed400fc70dc6' in submodule path 'platforms/nuttx/NuttX/nuttx'

I tried to pull the submodule manually but was not able to. How can I fix this ?

Thanks,

Romain

Sorry I messed this up. https://github.com/PX4/Firmware/pull/14711 will fix it.

awesome, thanks a lot !