Change:
<del> diff --git a/src/uname.c b/src/uname.c index ae9b8e29d..e84fc477a 100644 --- a/src/uname.c +++ b/src/uname.c @@ -27,7 +27,7 @@ # include <sys/systeminfo.h> #endif -#if HAVE_SYS_SYSCTL_H && ! defined __GLIBC__ +#if HAVE_SYS_SYSCTL_H && ! defined __GLIBC__ && ! defined __APPLE__ # if HAVE_SYS_PARAM_H #  include <sys/param.h> /* needed for OpenBSD 3.0 */ # endif @@ -44,11 +44,6 @@ # endif #endif -#ifdef __APPLE__ -# include <mach/machine.h> -# include <mach-o/arch.h> -#endif - #include "system.h" #include "die.h" #include "error.h" @@ -167,6 +162,24 @@ print_element (char const *element) fputs (element, stdout); } +/* Print ELEMENT, preceded by a space if something has already been +   printed.  But if the environment variable ENVVAR is set, print its +   value instead of ELEMENT.  */ + +static void +print_element_env (char const *element, char const *envvar) +{ +#ifdef __APPLE__ +  if (envvar) +    { +      char const *val = getenv (envvar); +      if (val) +        element = val; +    } +#endif +  print_element (element); +} + /* Set all the option flags according to the switches specified. Return the mask indicating which elements to print.  */ @@ -287,26 +300,36 @@ main (int argc, char **argv) die (EXIT_FAILURE, errno, _("cannot get system name")); if (toprint & PRINT_KERNEL_NAME) -        print_element (name.sysname); +        print_element_env (name.sysname, "UNAME_SYSNAME"); if (toprint & PRINT_NODENAME) -        print_element (name.nodename); +        print_element_env (name.nodename, "UNAME_NODENAME"); if (toprint & PRINT_KERNEL_RELEASE) -        print_element (name.release); +        print_element_env (name.release, "UNAME_RELEASE"); if (toprint & PRINT_KERNEL_VERSION) -        print_element (name.version); +        print_element_env (name.version, "UNAME_VERSION"); if (toprint & PRINT_MACHINE) -        print_element (name.machine); +        print_element_env (name.machine, "UNAME_MACHINE"); } if (toprint & PRINT_PROCESSOR) { char const *element = unknown; +#ifdef __APPLE__ +# if defined __arm__ || defined __arm64__ +      element = "arm"; +# elif defined __i386__ || defined __x86_64__ +      element = "i386"; +# elif defined __ppc__ || defined __ppc64__ +      element = "powerpc"; +# endif +#endif #if HAVE_SYSINFO && defined SI_ARCHITECTURE -      { -        static char processor[257]; -        if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor)) -          element = processor; -      } +      if (element == unknown) +        { +          static char processor[257]; +          if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor)) +            element = processor; +        } #endif #ifdef UNAME_PROCESSOR if (element == unknown) @@ -316,26 +339,6 @@ main (int argc, char **argv) static int mib[] = { CTL_HW, UNAME_PROCESSOR }; if (sysctl (mib, 2, processor, &s, 0, 0) >= 0) element = processor; - -# ifdef __APPLE__ -          /* This kludge works around a bug in Mac OS X.  */ -          if (element == unknown) -            { -              cpu_type_t cputype; -              size_t cs = sizeof cputype; -              NXArchInfo const *ai; -              if (sysctlbyname ("hw.cputype", &cputype, &cs, NULL, 0) == 0 -                  && (ai = NXGetArchInfoFromCpuType (cputype, -                                                     CPU_SUBTYPE_MULTIPLE)) -                  != NULL) -                element = ai->name; - -              /* Hack "safely" around the ppc vs. powerpc return value. */ -              if (cputype == CPU_TYPE_POWERPC -                  && STRNCMP_LIT (element, "ppc") == 0) -                element = "powerpc"; -            } -# endif } #endif if (! (toprint == UINT_MAX && element == unknown)) </del>

Discussion:
<!-- Note that these are hard requirements --<!-- You can use the "Go to file" functionality on GitHub to find the package Then you can go to the history for this package Find the latest "packagename: oldversion -newversion" commit The "newversion" is the current version of the package --- <!-- Type the name of your package and try to find an open pull request for the package If you find an open pull request, you can review it! There's a high chance that you'll have the new version right away while helping the community! --- name: coreutils <!-- The current version can be found easily with the same process as above for checking the master branch If an open PR is present for the package, take this version as the current one and link to the PR --current version: 9.0 desired version: 9.1 <!-- Search your package here: If no maintainer is listed for your package, tag the person that last updated the package --maintainers: Please tag this issue in your PR.
I'm already on it :) might take some while before I do the pr because I want to build stdenv first