From 911e746520af0e4ef52044fc3c3f0aa4c4a26dbd Mon Sep 17 00:00:00 2001 From: Philip Taron Date: Fri, 17 Nov 2023 20:31:09 -0800 Subject: [PATCH] squeak: fix build with LLVM 16 Part of ZHF for 23.11: https://hydra.nixos.org/build/241300457 I bisected this failure to this first bad commit: [9ed7bfe46bf193e55a6fd8ae89dfe54b4dca2c18] llvmPackages: 11 -> 16 on Linux, then looked around for other repairs made to assuage LLVM's errors. This appears to be the pattern. --- pkgs/development/compilers/squeak/default.nix | 51 +++++++++++++++---- pkgs/top-level/all-packages.nix | 4 +- 2 files changed, 45 insertions(+), 10 deletions(-) diff --git a/pkgs/development/compilers/squeak/default.nix b/pkgs/development/compilers/squeak/default.nix index 79627eba7c83..0494539c4435 100644 --- a/pkgs/development/compilers/squeak/default.nix +++ b/pkgs/development/compilers/squeak/default.nix @@ -1,15 +1,40 @@ -{ lib, stdenv, fetchFromGitHub, fetchurl, fetchzip -, autoconf, automake, autoreconfHook, clang, dos2unix, file, perl +{ lib +, stdenv +, fetchFromGitHub +, fetchurl +, fetchzip +, autoconf +, automake +, autoreconfHook +, dos2unix +, file +, perl , pkg-config -, alsa-lib, coreutils, freetype, glib, glibc, gnugrep, libGL, libpulseaudio -, libtool, libuuid, openssl, pango, xorg -, squeakImageHash ? null, squeakSourcesHash ? null, squeakSourcesVersion ? null -, squeakVersion ? null, squeakVmCommitHash ? null, squeakVmCommitHashHash ? null +, alsa-lib +, coreutils +, freetype +, glib +, glibc +, gnugrep +, libGL +, libpulseaudio +, libtool +, libuuid +, openssl +, pango +, xorg +, squeakImageHash ? null +, squeakSourcesHash ? null +, squeakSourcesVersion ? null +, squeakVersion ? null +, squeakVmCommitHash ? null +, squeakVmCommitHashHash ? null , squeakVmVersion ? null } @ args: let - inherit (builtins) elemAt; + inherit (builtins) elemAt toString; + nullableOr = o: default: if o == null then default else o; bits = stdenv.hostPlatform.parsed.cpu.bits; @@ -75,7 +100,6 @@ in stdenv.mkDerivation { autoconf automake autoreconfHook - clang dos2unix file perl @@ -140,7 +164,16 @@ in stdenv.mkDerivation { # Workaround build failure on -fno-common toolchains: # ld: vm/vm.a(cogit.o):spur64src/vm/cogitX64SysV.c:2552: multiple definition of # `traceStores'; vm/vm.a(gcc3x-cointerp.o):spur64src/vm/cogit.h:140: first defined here - env.NIX_CFLAGS_COMPILE = "-fcommon"; + env.NIX_CFLAGS_COMPILE = toString ( + [ "-fcommon" ] + ++ (lib.optionals stdenv.cc.isClang [ + # LLVM 16 turned these into errors (rightly, perhaps.) + # Allow this package to continue to build despite this change. + "-Wno-error=int-conversion" + "-Wno-error=implicit-function-declaration" + "-Wno-error=incompatible-function-pointer-types" + ]) + ); preAutoreconf = '' pushd ./platforms/unix/config > /dev/null diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7fb9cdafdd72..2c463f4d4369 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -17287,7 +17287,9 @@ with pkgs; inherit (darwin.apple_sdk.frameworks) SystemConfiguration CoreFoundation Security; }; - squeak = callPackage ../development/compilers/squeak { }; + squeak = callPackage ../development/compilers/squeak { + stdenv = clangStdenv; + }; squirrel-sql = callPackage ../development/tools/database/squirrel-sql { drivers = [ jtds_jdbc mssql_jdbc mysql_jdbc postgresql_jdbc ];