Date: Tue, 1 May 2018 15:04:02 -0300 From: Le Baron =?utf-8?B?ZOKAmU1lcmRl?= <lebarondemerde@privacychain.ch> To: freebsd-hackers@freebsd.org Subject: Re: Porting questions Message-ID: <20180501180402.e4kigr4f5qh44m6d@privacychain.ch> In-Reply-To: <fe5ac958-441b-054f-3a6b-1146bcad6a41@freebsd.org> References: <fe5ac958-441b-054f-3a6b-1146bcad6a41@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi! Ps. reviews.freebsd.org is a good place for that. :) On Tue, May 01, 2018 at 10:26:32AM -0700, Craig Leres wrote: > I'm working a port for the Espressif ESP32 toolchain so I can move > development of some projects (FreeRTOS and Arduino) from Ubuntu to FreeBSD. > I have a few questions. > > (1) Naming: The pre-built linux 64 bit toolchain is called: > > xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz > > so I thought the port should be called xtensa-esp32-elf; is this a > reasonable name? > > (2) Port version: The toolchain is built from the latest version: > > https://github.com/espressif/crosstool-NG > > There is not a release that corresponds to this version; is it legit for me > to use: > > DISTVERSION= 1.22.0-80-g6c4433a5 When upstream does not provide a version (or a separated commit will be used like HEAD), the version format to be used for GitHub is: gYYYYMMDD See 5.13: https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/makefile-distfiles.html#makefile-master_sites-github-description > GH_TUPLE= espressif:crosstool-NG:${DISTVERSION} I *think* GH_TAGNAME would be more aproppiated. > > which apparently gives me 1.22.0.80.g6.c4433.a5 as the PORTVERSION? > > (3) USES=gcc doesn't provide a binary named gcc: crosstool-NG has the string > "gcc" firmly baked into it. When I have USES=gcc (today) I get gcc6 but > without patching a ton of files I need gcc to exist when poudriere is > building. I solved this by also adding: > > BUILD_DEPENDS+= gcc:lang/gcc > > but it seems wrong to me that USES=gcc doesn't provide a binary named gcc. I didn't tried but ${REINPLACE_CMD} should do the job. See 4.4.3: https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/slow-patch.html > > (4) How to handle downloads that shouldn't be extracted: The toolchain uses > specific versions of a bunch of things: > > TARBALLS= \ > binutils-2.25.1.tar.bz2 \ > expat-2.1.0.tar.gz \ > gcc-5.2.0.tar.bz2 \ > gdb-7.10.tar.xz \ > gmp-6.0.0a.tar.xz \ > isl-0.14.tar.xz \ > mpc-1.0.3.tar.gz \ > mpfr-3.1.3.tar.xz \ > ncurses-6.0.tar.gz \ > newlib-2.2.0.tar.gz > > Normally the build process downloads these which doesn't work well with > poudriere; you don't want to download these every time you build port. I put > copies in my /usr/ports/distfiles and add symlinks to the work tree in > post-extract and later the build script correctly skips downloading them > when it finds them already there. I'd like to add these to DISTFILES for > auto-download and checksums but I don't want them extracted by do-extract. > Is my best option to override the do-extract target? I guess those are git submodules. GH_TUPLE are used for them. You can see a working example on x11/polybar > > I've attached the current version of the Makefile for informal review. > > Craig > # Created by: Craig Leres <leres@freebsd.org> > # $FreeBSD$ > > PORTNAME= xtensa-esp32-elf > DISTVERSION= 1.22.0-80-g6c4433a5 > CATEGORIES= devel > #DISTFILES= > #MASTER_SITES= SF > DIST_SUBDIR= xtensa-esp32-elf > > MAINTAINER= leres@freebsd.org > COMMENT= Toolchain for xtensa-esp32-elf > > LICENSE= GPLv2 LGPL21 > LICENSE_COMB= multi > > BUILD_DEPENDS+= bash:shells/bash \ > gawk:lang/gawk \ > gcc:lang/gcc \ > git:devel/git \ > gpatch:devel/patch \ > ${LOCALBASE}/bin/grep:textproc/gnugrep \ > gperf:devel/gperf \ > gsed:textproc/gsed \ > help2man:misc/help2man \ > makeinfo:print/texinfo \ > wget:ftp/wget > > USES= autoreconf:build bison gmake libtool python:build > USE_GITHUB= yes > GH_TUPLE= espressif:crosstool-NG:${DISTVERSION} > USE_GCC= yes > > TARBALLS= \ > binutils-2.25.1.tar.bz2 \ > expat-2.1.0.tar.gz \ > gcc-5.2.0.tar.bz2 \ > gdb-7.10.tar.xz \ > gmp-6.0.0a.tar.xz \ > isl-0.14.tar.xz \ > mpc-1.0.3.tar.gz \ > mpfr-3.1.3.tar.xz \ > ncurses-6.0.tar.gz \ > newlib-2.2.0.tar.gz > > post-extract: > ${MKDIR} ${BUILD_WRKSRC}/.build/tarballs > .for F in $(TARBALLS) > ${LN} -s ${DISTDIR}/${DIST_SUBDIR}/${F} ${BUILD_WRKSRC}/.build/tarballs > .endfor > > pre-configure: > cd ${BUILD_WRKSRC} && ./bootstrap > > do-configure: > cd ${BUILD_WRKSRC} && \ > ./configure --enable-local --with-grep=${LOCALBASE}/bin/grep > > pre-build: > cd ${BUILD_WRKSRC} && \ > ${SETENV} -uMAKELEVEL -uMAKEFLAGS -u.MAKE.LEVEL.ENV \ > ${MAKE_CMD} install && ./ct-ng xtensa-esp32-elf > > do-build: > cd ${BUILD_WRKSRC} && CT_ALLOW_BUILD_AS_ROOT_SURE=1 ./ct-ng build > > .include <bsd.port.mk> > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" Cheers! -- Best Regards. LBdM.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20180501180402.e4kigr4f5qh44m6d>