On Mon, Sep 02, 2019 at 10:47:42PM +0200, Klemens Nanni wrote:
> Came here to tinker with one board in particular, but always building
> everything was taking so too much time, so I noticed `make BOARDS=foo'
> would build just that board... anyways, here's some cleanup that also
> enables us to split the +1G build assets from the ~90M sources:
>
> - use TLS
jsing has a pending diff which does that and adds a target
> - drop python handling in pre-build; done automatically in pre-configure
This used to be required but if it works with all targets without this
without a local 'python' symlink when building aarch64 targets with
rk3399 sure.
> - use python 3 at build
I think there may be some spots where python2 is used as it checks for
both, but python3 is the direction all the linux people are pushing.
> - introduce ${MK} helper variable: better readability, less repitition
Not so sold on this as the currents lines are designed to be
close to bsd.port.mk.
> - turn ${WRKSRC}/build/${BOARD} into ${WRKBUILD}/${BOARD}
> - create build directories at once prior to build
> - pass BL31 as make flag not environment variable to enable unified ${MK}
>
> Bits are still written to WRKSRC as its size increases by a few
> megabytes after build, but I think the split is still worth it and makes
> it easier to look into these remaining matters.
Why do you want to change this?
>
> The resulting u-boot images files slightly differ at various offsets,
> but this also happens when I simply build the unmodified port myself.
> Other FILES only differ in embedded timestamps with my diff.
>
> Tested on amd64 with obviously no PLIST change.
> Feedback? OK?
As this changes HOMEPAGE shouldn't there be a REVISION bump?
>
>
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/sysutils/u-boot/Makefile,v
> retrieving revision 1.55
> diff -u -p -r1.55 Makefile
> --- Makefile 30 Jul 2019 17:55:47 -0000 1.55
> +++ Makefile 2 Sep 2019 19:22:30 -0000
> @@ -12,13 +12,13 @@ DISTNAME= u-boot-${VERSION}
> PKGNAME= u-boot-${FLAVOR}-${VERSION:S/-//}
> FULLPKGNAME= ${PKGNAME}
> CATEGORIES= sysutils
> -HOMEPAGE= http://www.denx.de/wiki/U-Boot
> +HOMEPAGE= https://www.denx.de/wiki/U-Boot
> MAINTAINER= Jonathan Gray <[email protected]>
>
> # GPLv2
> PERMIT_PACKAGE= Yes
>
> -MASTER_SITES= ftp://ftp.denx.de/pub/u-boot/
> +MASTER_SITES= https://ftp.denx.de/pub/u-boot/
> EXTRACT_SUFX= .tar.bz2
> PKG_ARCH= *
>
> @@ -28,6 +28,7 @@ BUILD_DEPENDS= devel/bison \
> textproc/gsed
>
> MODULES= lang/python
> +MODPY_VERSION= ${MODPY_DEFAULT_VERSION_3}
> MODPY_RUNDEP= No
>
> MODPY_ADJ_FILES=\
> @@ -48,6 +49,7 @@ BUILD_DEPENDS+= devel/arm-none-eabi/gcc-
> MAKE_ENV+= CROSS_COMPILE="arm-none-eabi-"
> .endif
>
> +SEPARATE_BUILD= Yes
> USE_GMAKE= Yes
> NO_TEST= Yes
>
> @@ -144,57 +146,37 @@ FILES=\
> spl/sunxi-spl.bin \
>
> pre-build:
> -.for f in ${MODPY_ADJ_FILES}
> - ${MODPY_BIN_ADJ} ${WRKSRC}/${f}
> -.endfor
> + cd ${WRKBUILD} && mkdir -p ${BOARDS} ${SUNXI64}
>
> do-build:
> .for BOARD in ${BOARDS}
> - cd ${WRKSRC} && \
> - mkdir -p build/${BOARD} && \
> - ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${MAKE_FLAGS} \
> - O="build/${BOARD}" \
> - -f ${MAKE_FILE} "${BOARD}"_defconfig && \
> - ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${MAKE_FLAGS} \
> - O="build/${BOARD}" \
> - -f ${MAKE_FILE} ${ALL_TARGET}
> -.if "${BOARD}" == "tinker-rk3288"
> - cd ${WRKSRC}/build/${BOARD} && \
> + ${MK} O=${WRKBUILD}/${BOARD} ${BOARD}_defconfig
> + ${MK} O=${WRKBUILD}/${BOARD} ${ALL_TARGET}
> +. if "${BOARD}" == "tinker-rk3288"
> + cd ${WRKBUILD}/${BOARD} && \
> tools/mkimage -n rk3288 -T rksd -d tpl/u-boot-tpl.bin \
> idbloader.img && \
> cat spl/u-boot-spl-dtb.bin >> idbloader.img
> -.endif
> -.if "${BOARD}" == "firefly-rk3399"
> - cd ${WRKSRC}/build/${BOARD} && \
> - ${SETENV} ${MAKE_ENV} BL31=${RK3399_BL31} ${MAKE_PROGRAM} \
> - ${MAKE_FLAGS} O="build/${BOARD}" \
> - -f ${MAKE_FILE} u-boot.itb && \
> +. elif "${BOARD}" == "firefly-rk3399"
> + ${MK} O=${WRKBUILD}/${BOARD} BL31=${RK3399_BL31} u-boot.itb
> + cd ${WRKBUILD}/${BOARD} && \
> tools/mkimage -n rk3399 -T rksd -d tpl/u-boot-tpl.bin \
> - idbloader.img && \
> + idbloader.img && \
> cat spl/u-boot-spl-dtb.bin >> idbloader.img
> -.endif
> +. endif
> .endfor
> .for BOARD in ${SUNXI64}
> - cd ${WRKSRC} && \
> - mkdir -p build/${BOARD} && \
> - ${SETENV} ${MAKE_ENV} BL31=${SUNXI_BL31} ${MAKE_PROGRAM} \
> - ${MAKE_FLAGS} O="build/${BOARD}" \
> - -f ${MAKE_FILE} "${BOARD}"_defconfig && \
> - ${SETENV} ${MAKE_ENV} BL31=${SUNXI_BL31} ${MAKE_PROGRAM} \
> - ${MAKE_FLAGS} O="build/${BOARD}" \
> - -f ${MAKE_FILE} ${ALL_TARGET}
> - if [[ -f ${WRKSRC}/build/${BOARD}/spl/sunxi-spl.bin && \
> - -f ${WRKSRC}/build/${BOARD}/u-boot.itb ]]; then \
> - cd ${WRKSRC}/build/${BOARD} && \
> - cat spl/sunxi-spl.bin u-boot.itb >
> u-boot-sunxi-with-spl.bin ; \
> - fi
> + ${MK} O=${WRKBUILD}/${BOARD} BL31=${SUNXI_BL31} ${BOARD}_defconfig
> + ${MK} O=${WRKBUILD}/${BOARD} BL31=${SUNXI_BL31} ${ALL_TARGET}
> + cd ${WRKBUILD}/${BOARD} && \
> + [[ -f spl/sunxi-spl.bin && -f u-boot.itb ]] && \
> + cat spl/sunxi-spl.bin u-boot.itb > u-boot-sunxi-with-spl.bin
> .endfor
>
> do-install:
> - ${INSTALL_DATA_DIR} ${PREFIX}/share/u-boot
> .for BOARD in ${BOARDS} ${SUNXI64}
> ${INSTALL_DATA_DIR} ${PREFIX}/share/u-boot/${BOARD}
> - -cd ${WRKSRC}/build/${BOARD} && \
> + -cd ${WRKBUILD}/${BOARD} && \
> cp ${FILES} ${PREFIX}/share/u-boot/${BOARD}/
> .endfor
> ===================================================================
> Stats: --- 38 lines 1454 chars
> Stats: +++ 20 lines 838 chars
> Stats: -18 lines
> Stats: -616 chars
>