Re: Build issue with i386 port

From: Fernando_ApesteguĂ­a <>
Date: Mon, 11 Apr 2022 17:53:29 UTC
On Mon, Apr 11, 2022 at 7:24 PM <> wrote:
> Hello folks,
> I'm fairly new to the porting game so please bear with me.
> A few months ago, I created my first port: sysutils/cpufetch
> Back then, I was only testing this on amd64 so ONLY_FOR_ARCHS was set to amd64.
> In the meantime, I've spun up some i386 VMs (both FreeBSD 13 and 14) as upstream advertises to also support 32-bit FreeBSD.
> In the VMs, if I just clone the upstream repository [1] and run gmake, the software compiles & runs fine.
> After those successful tests I've updated the port's Makefile to also include i386 in ONLY_FOR_ARCHS.
> Not long after, I was receiving my first pkg fallout message informing me that the official pkg builds are failing:
> =======================<phase: build          >============================
> ===>  Building for cpufetch-1.00_1
> gmake[1]: Entering directory '/wrkdirs/usr/ports/sysutils/cpufetch/work/cpufetch-1.00'
> Makefile:38: Unsupported arch detected: i386. See
> Makefile:39: If your architecture is supported but the compilation fails, please open an issue in
> Makefile:40: *** Aborting compilation.  Stop.
> gmake[1]: Leaving directory '/wrkdirs/usr/ports/sysutils/cpufetch/work/cpufetch-1.00'
> ===> Compilation failed unexpectedly.
> Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
> the maintainer.
> *** Error code 1
> Upstream's Makefile uses $(shell uname -m) to determine the architecture [2]. My VMs are successfully reporting this as
> i386 which upstream's Makefile appears to support explicitly. After all, I'm also able to build this software
> on those VMs if just cloning & running gmake manually.
> I'm not really sure where to go from here. As I can build the software in FreeBSD i386 VMs I think
> that the issue is related to my port and not upstream. But then again, the build fails "within" upstream's Makefile.
> Could somebody help me out here?

When the Makefile checks the output of uname -m, it compares the
result with a list of values that includes i686 but not i386.
I think a simple REINPLACE_CMD would suffice here.

Since I failed to detect this, do you want me to fix it in the repo? I
will also send a patch upstream.

> [1]
> [2]
> Best regards,
> ~ Joel Bodenmann