diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.gitignore diff --git a/.redhat-rpm-config.metadata b/.redhat-rpm-config.metadata new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.redhat-rpm-config.metadata diff --git a/SOURCES/brp-kmod-restore-perms b/SOURCES/brp-kmod-restore-perms new file mode 100755 index 0000000..6ada4c5 --- /dev/null +++ b/SOURCES/brp-kmod-restore-perms @@ -0,0 +1,20 @@ +#! /bin/bash -f + +## A counterpart of brp-kmod-set-exec-bits that restores original kmod +## file permissions + +# If using normal root, avoid changing anything. +[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != "/" ] || exit 0 + +# Checking for required programs +which chmod >/dev/null || exit 0 + +[ -r "$RPM_BUILD_ROOT/kmod-permissions.list" ] || exit 0 + +while read perm path; do + [ -n "$perm" ] || continue + + chmod "$perm" "$RPM_BUILD_ROOT/$path" +done < "$RPM_BUILD_ROOT/kmod-permissions.list" + +rm -f "$RPM_BUILD_ROOT/kmod-permissions.list" diff --git a/SOURCES/brp-kmod-set-exec-bit b/SOURCES/brp-kmod-set-exec-bit new file mode 100755 index 0000000..68876cf --- /dev/null +++ b/SOURCES/brp-kmod-set-exec-bit @@ -0,0 +1,14 @@ +#! /bin/bash -fx + +## A hack for making brp-strip taking into account kmod files + +# If using normal root, avoid changing anything. +[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != "/" ] || exit 0 + +# Checking for required programs +which find chmod >/dev/null || exit 0 + +find "$RPM_BUILD_ROOT" \ + -name '*.ko' \ + -printf '%#m %P\n' \ + -exec chmod u+x '{}' \; > "$RPM_BUILD_ROOT/kmod-permissions.list" diff --git a/SOURCES/brp-ldconfig b/SOURCES/brp-ldconfig new file mode 100755 index 0000000..3cb3cc0 --- /dev/null +++ b/SOURCES/brp-ldconfig @@ -0,0 +1,10 @@ +#!/bin/sh -f +# Force creating of DSO symlinks. + +# If using normal root, avoid changing anything. +if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then + exit 0 +fi + +/sbin/ldconfig -N -r "$RPM_BUILD_ROOT" +# TODO: warn if it created new symlinks and guide people. diff --git a/SOURCES/brp-mangle-shebangs b/SOURCES/brp-mangle-shebangs new file mode 100755 index 0000000..b4341a2 --- /dev/null +++ b/SOURCES/brp-mangle-shebangs @@ -0,0 +1,144 @@ +#!/bin/bash + +# If using normal root, avoid changing anything. +if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then + exit 0 +fi + +exclude_files="" +exclude_files_from="" +exclude_shebangs="" +exclude_shebangs_from="" + +usage() { + local verbose=$1 && shift + local outfile=$1 && shift + local status=$1 && shift + + ( + echo 'usage: brp-mangle-shebangs [--files <regexp>] [--files-from <file>] [--shebangs <regexp>] [--shebangs-from <file>]' + if [ "${verbose}" == "yes" ]; then + echo ' --files: extended regexp of files to ignore' + echo ' --files-from: file containing a list of extended regexps of files to ignore' + echo ' --shebangs: extended regexp of shebangs to ignore' + echo ' --shebangs-from: file containing a list of extended regexps of shebangs to ignore' + fi + ) >>${outfile} + exit ${status} +} + +while [ $# -gt 0 ] ; do + case "$1" in + --files) + exclude_files="${2}" + shift + ;; + --files=*) + exclude_files="${1##--files=}" + ;; + --files-from) + exclude_files_from="${2}" + shift + ;; + --files-from=*) + exclude_files_from="${1##--files-from=}" + ;; + --shebangs) + exclude_shebangs="${2}" + shift + ;; + --shebangs=*) + exclude_shebangs="${1##--shebangs=}" + ;; + --shebangs-from) + exclude_shebangs_from="${2}" + shift + ;; + --shebangs-from=*) + exclude_shebangs_from="${1##--shebangs-from=}" + ;; + --help|--usage|"-?"|-h) + usage yes /dev/stdout 0 + ;; + *) + echo "Unknown option \"${1}\"" 1>&2 + usage no /dev/stderr 1 + ;; + esac + shift +done + +cd "$RPM_BUILD_ROOT" + +trim() { + printf '%s' "$*" +} + +fail=0 +while IFS= read -r -d $'\0' f; do + file -N --mime-type "$f" | grep -q -P ".+(?=: text/)" || continue + + # Remove the dot + path="${f#.}" + + if [ -n "$exclude_files" ]; then + echo "$path" | grep -q -E "$exclude_files" && continue + fi + if [ -n "$exclude_files_from" ]; then + echo "$path" | grep -q -E -f "$exclude_files_from" && continue + fi + + ts=$(stat -c %y "$f") + + read shebang_line < "$f" || : + orig_shebang=$(trim $(echo "$shebang_line" | grep -Po "#!\K.*" || echo)) + shebang="$orig_shebang" + if [ -n "$exclude_shebangs" ]; then + echo "$shebang" | grep -q -E "$exclude_shebangs" && continue + fi + if [ -n "$exclude_shebangs_from" ]; then + echo "$shebang" | grep -q -E -f "$exclude_shebangs_from" && continue + fi + + if [ -z "$shebang" ]; then + echo >&2 "*** WARNING: $f is executable but has empty or no shebang, removing executable bit" + chmod -x "$f" + touch -d "$ts" "$f" + continue + elif [ -n "${shebang##/*}" ]; then + echo >&2 "*** ERROR: $f has shebang which doesn't start with '/' ($shebang)" + fail=1 + continue + fi + + if ! { echo "$shebang" | grep -q -P "^/(?:usr/)?(?:bin|sbin)/"; }; then + continue + fi + + # Replace "special" env shebang: + # /whatsoever/env /whatever/foo → /whatever/foo + shebang=$(echo "$shebang" | sed -r -e 's@^(.+)/env /(.+)$@/\2@') + # /whatsoever/env foo → /whatsoever/foo + shebang=$(echo "$shebang" | sed -r -e 's@^(.+/)env (.+)$@\1\2@') + + # Replace python3 with the desired Python 3 shebang, + # if passed as an non-empty environment variable PYTHON3 + if [ -n "${PYTHON3:+x}" ]; then + shebang=$(echo "$shebang" | sed -r -e "s@/usr/bin/python3(\s|$)@${PYTHON3}\1@") + fi + + # Replace ambiguous python with python2 + py_shebang=$(echo "$shebang" | sed -r -e 's@/usr/bin/python(\s|$)@/usr/bin/python2\1@') + + if [ "$shebang" != "$py_shebang" ]; then + echo >&2 "*** ERROR: ambiguous python shebang in $path: #!$orig_shebang. Change it to python3 (or python2) explicitly." + fail=1 + elif [ "#!$shebang" != "#!$orig_shebang" ]; then + sed -i -e "1c #!$shebang" "$f" + echo "mangling shebang in $path from $orig_shebang to #!$shebang" + fi + + touch -d "$ts" "$f" +done < <(find -executable -type f -print0) + +exit $fail diff --git a/SOURCES/buildflags.md b/SOURCES/buildflags.md new file mode 100644 index 0000000..abcfcbb --- /dev/null +++ b/SOURCES/buildflags.md @@ -0,0 +1,377 @@ +This document contains documentation of the individual compiler flags +and how to use them. + +[TOC] + +# Using RPM build flags + +For packages which use autoconf to set up the build environment, use +the `%configure` macro to obtain the full complement of flags, like +this: + + %configure + +This will invoke the `./configure` with arguments (such as +`--prefix=/usr`) to adjust the paths to the packaging defaults. + +As a side effect, this will set the environment variables `CFLAGS`, +`CXXFLAGS`, `FFLAGS`, `FCFLAGS`, and `LDFLAGS`, so they can be used by +makefiles and other build tools. (However, existing values for this +variables are not overwritten.) + +If your package does not use autoconf, you can still set the same +environment variables using + + %set_build_flags + +early in the `%build` section. (Again, existing environment variables +are not overwritten.) + +Individual build flags are also available through RPM macros: + +* `%{build_cflags}` for the C compiler flags (also known as the + `CFLAGS` variable). Also historically available as `%{optflags}`. + Furthermore, at the start of the `%build` section, the environment + variable `RPM_OPT_FLAGS` is set to this value. +* `%{build_cxxflags}` for the C++ compiler flags (usually assigned to + the `CXXFLAGS` shell variable). +* `%{build_fflags} for `FFLAGS` (the Fortran compiler flags, also + known as the `FCFLAGS` variable). +* `%{build_ldflags}` for the link editor (ld) flags, usually known as + `LDFLAGS`. Note that the contents quotes linker arguments using + `-Wl`, so this variable is intended for use with the `gcc` compiler + driver. At the start of the `%build` section, the environment + variable `RPM_LD_FLAGS` is set to this value. + +These RPM macros do not alter shell environment variables. + +For some other build tools separate mechanisms exist: + +* CMake builds use the the `%cmake` macro from the `cmake-rpm-macros` + package. + +Care must be taking not to compile the current selection of compiler +flags into any RPM package besides `redhat-rpm-config`, so that flag +changes are picked up automatically once `redhat-rpm-config` is +updated. + +# Flag selection for the build type + +The default flags are suitable for building applications. + +For building shared objects, you must compile with `-fPIC` in +(`CFLAGS` or `CXXFLAGS`) and link with `-shared` (in `LDFLAGS`). + +For other considerations involving shared objects, see: + +* [Fedora Packaging Guidelines: Shared Libraries](https://fedoraproject.org/wiki/Packaging:Guidelines#Shared_Libraries) + +# Customizing compiler flags + +It is possible to set RPM macros to change some aspects of the +compiler flags. Changing these flags should be used as a last +recourse if other workarunds are not available. + +### Lazy binding + +If your package depends on the semantics of lazy binding (e.g., it has +plugins which load additional plugins to complete their dependencies, +before which some referenced functions are undefined), you should put +`-Wl,-z,lazy` at the end of the `LDFLAGS` setting when linking objects +which have such requirements. Under these circumstances, it is +unnecessary to disable hardened builds (and thus lose full ASLR for +executables), or link everything without `-Wl,z,now` (non-lazy +binding). + +### Hardened builds + +By default, the build flags enable fully hardened builds. To change +this, include this in the RPM spec file: + + %undefine _hardened_build + +This turns off certain hardening features, as described in detail +below. The main difference is that executables will be +position-dependent (no full ASLR) and use lazy binding. + +### Annotated builds/watermarking + +By default, the build flags cause a special output section to be +included in ELF files which describes certain aspects of the build. +To change this for all compiler invocations, include this in the RPM +spec file: + + %undefine _annotated_build + +Be warned that this turns off watermarking, making it impossible to do +full hardening coverage analysis for any binaries produced. + +It is possible to disable annotations for individual compiler +invocations, using the `-fplugin-arg-annobin-disable` flag. However, +the annobin plugin must still be loaded for this flag to be +recognized, so it has to come after the hardening flags on the command +line (it has to be added at the end of `CFLAGS`, or specified after +the `CFLAGS` variable contents). + +### Strict symbol checks in the link editor (ld) + +Optionally, the link editor will refuse to link shared objects which +contain undefined symbols. Such symbols lack symbol versioning +information and can be bound to the wrong (compatibility) symbol +version at run time, and not the actual (default) symbol version which +would have been used if the symbol definition had been available at +static link time. Furthermore, at run time, the dynamic linker will +not have complete dependency information (in the form of DT_NEEDED +entries), which can lead to errors (crashes) if IFUNC resolvers are +executed before the shared object containing them is fully relocated. + +To switch on these checks, define this macro in the RPM spec file: + + %define _strict_symbol_defs_build 1 + +If this RPM spec option is active, link failures will occur if the +linker command line does not list all shared objects which are needed. +In this case, you need to add the missing DSOs (with linker arguments +such as `-lm`). As a result, the link editor will also generated the +necessary DT_NEEDED entries. + +In some cases (such as when a DSO is loaded as a plugin and is +expected to bind to symbols in the main executable), undefined symbols +are expected. In this case, you can add + + %undefine _strict_symbol_defs_build + +to the RPM spec file to disable these strict checks. Alternatively, +you can pass `-z undefs` to ld (written as `-Wl,-z,undefs` on the gcc +command line). The latter needs binutils 2.29.1-12.fc28 or later. + +# Individual compiler flags + +Compiler flags end up in the environment variables `CFLAGS`, +`CXXFLAGS`, `FFLAGS`, and `FCFLAGS`. + +The general (architecture-independent) build flags are: + +* `-O2`: Turn on various GCC optimizations. See the [GCC manual](https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-O2). + Optimization improves performance, the accuracy of warnings, and the + reach of toolchain-based hardening, but it makes debugging harder. +* `-g`: Generate debugging information (DWARF). In Fedora, this data + is separated into `-debuginfo` RPM packages whose installation is + optional, so debuging information does not increase the size of + installed binaries by default. +* `-pipe`: Run compiler and assembler in parallel and do not use a + temporary file for the assembler input. This can improve + compilation performance. (This does not affect code generation.) +* `-Wall`: Turn on various GCC warnings. + See the [GCC manual](https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wall). +* `-Werror=format-security`: Turn on format string warnings and treat + them as errors. + See the [GCC manual](https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wformat-security). + This can occasionally result in compilation errors. In this case, + the best option is to rewrite the source code so that only constant + format strings (string literals) are used. +* `-Wp,-D_FORTIFY_SOURCE=2`: Source fortification activates various + hardening features in glibc: + * String functions such as `memcpy` attempt to detect buffer lengths + and terminate the process if a buffer overflow is detected. + * `printf` format strings may only contain the `%n` format specifier + if the format string resides in read-only memory. + * `open` and `openat` flags are checked for consistency with the + presence of a *mode* argument. + * Plus other minor hardening changes. + (These changes can occasionally break valid programs.) +* `-fexceptions`: Provide exception unwinding support for C programs. + See the [`-fexceptions` option in the GCC + manual](https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#index-fexceptions) + and the [`cleanup` variable + attribute](https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#index-cleanup-variable-attribute). + This also hardens cancellation handling in C programs because + it is not required to use an on-stack jump buffer to install + a cancellation handler with `pthread_cleanup_push`. It also makes + it possible to unwind the stack (using C++ `throw` or Rust panics) + from C callback functions if a C library supports non-local exits + from them (e.g., via `longjmp`). +* `-Wp,-D_GLIBCXX_ASSERTIONS`: Enable lightweight assertions in the + C++ standard library, such as bounds checking for the subscription + operator on vectors. (This flag is added to both `CFLAGS` and + `CXXFLAGS`; C compilations will simply ignore it.) +* `-fstack-protector-strong`: Instrument functions to detect + stack-based buffer overflows before jumping to the return address on + the stack. The *strong* variant only performs the instrumentation + for functions whose stack frame contains addressable local + variables. (If the address of a variable is never taken, it is not + possible that a buffer overflow is caused by incorrect pointer + arithmetic involving a pointer to that variable.) +* `-grecord-gcc-switches`: Include select GCC command line switches in + the DWARF debugging information. This is useful for detecting the + presence of certain build flags and general hardening coverage. + +For hardened builds (which are enabled by default, see above for how +to disable them), the flag +`-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1` is added to the +command line. It adds the following flag to the command line: + +* `-fPIE`: Compile for a position-independent executable (PIE), + enabling full address space layout randomization (ASLR). This is + similar to `-fPIC`, but avoids run-time indirections on certain + architectures, resulting in improved performance and slightly + smaller executables. However, compared to position-dependent code + (the default generated by GCC), there is still a measurable + performance impact. + + If the command line also contains `-r` (producing a relocatable + object file), `-fpic` or `-fPIC`, this flag is automatically + dropped. (`-fPIE` can only be used for code which is linked into + the main program.) Code which goes into static libraries should be + compiled with `-fPIE`, except when this code is expected to be + linked into DSOs, when `-fPIC` must be used. + + To be effective, `-fPIE` must be used with the `-pie` linker flag + when producing an executable, see below. + +To support [binary watermarks for ELF +objects](https://fedoraproject.org/wiki/Toolchain/Watermark) using +annobin, the `-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1` flag is +added by default. This can be switched off by undefining the +`%_annotated_build` RPM macro (see above). + +### Architecture-specific compiler flags + +These compiler flags are enabled for all builds (hardened/annotated or +not), but their selection depends on the architecture: + +* `-fstack-clash-protection`: Turn on instrumentation to avoid + skipping the guard page in large stack frames. (Without this flag, + vulnerabilities can result where the stack overlaps with the heap, + or thread stacks spill into other regions of memory.) This flag is + fully ABI-compatible and has adds very little run-time overhead, but + is only available on certain architectures (currently aarch64, i386, + ppc64, ppc64le, s390x, x86_64). +* `-fcf-protection`: Instrument binaries to guard against + ROP/JOP attacks. Used on i686 and x86_64. +* `-m64` and `-m32`: Some GCC builds support both 32-bit and 64-bit in + the same compilation. For such architectures, the RPM build process + explicitly selects the architecture variant by passing this compiler + flag. +* `-fasynchronous-unwind-tables`: Generate full unwind information + covering all program points. This is required for support of + asynchronous cancellation and proper unwinding from signal + handlers. It also makes performance and debugging tools more + useful because unwind information is available without having to + install (and load) debugging ienformation. + Asynchronous unwind tables are enabled for aarch64, i686, s390x, + and x86_64. They are not needed on armhfp, ppc64 and ppc64le due + to architectural differences in stack management. On these + architectures, `-fexceptions` (see above) still enables regular + unwind tables (or they are enabled by default even without this + option). +* `-funwind-tables`: A subset of the unwind information restricted + to actual call sites. Used on ppc64, ppc64le. Also implied by + `-fexceptions`. + +In addition, `redhat-rpm-config` re-selects the built-in default +tuning in the `gcc` package. These settings are: + +* **armhfp**: `-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard` + selects an Arm subarchitecture based on the ARMv7-A architecture + with 16 64-bit floating point registers. `-mtune=cortex-8a` selects + tuning for the Cortex-A8 implementation (while preserving compatibility + with other ARMv7-A implementations). `-mabi=aapcs-linux` switches to + the AAPCS ABI for GNU/Linux. +* **i686**: `-march=x86-64` is used to select a minimum supported + CPU level matching the baseline for the x86_64 architecture. + `-mtune=generic` activates tuning for a current blend of CPUs. + `-mfpmath=sse` uses the SSE2 unit for floating point math, + instead of the legacy i387 FPU, avoiding issues related to excess + precision. `-mstackrealign` ensures that the generated code + does not assume 16-byte stack alignment (as required by the current + i386 ABI), but stays compatible with application code compiled + before the introduction of 16-byte stack alignment along with SSE2 + support. +* **ppc64le**: `-mcpu=power8 -mtune=power8` selects a minimum supported + CPU level of POWER8 (the first CPU with ppc64le support) and tunes + for POWER8. +* **s390x**: `-march=z13 -mtune=z14` specifies a minimum supported CPU + level of z13, while optimizing for a subsequent CPU generation + (z14). +* **x86_64**: `-mtune=generic` selects tuning which is expected to + beneficial for a broad range of current CPUs. +* **ppc64** and **aarch64** do not have any architecture-specific tuning. + +# Individual linker flags + +Linker flags end up in the environment variable `LDFLAGS`. + +The linker flags listed below are injected. Note that they are +prefixed with `-Wl` because it is expected that these flags are passed +to the compiler driver `gcc`, and not directly to the link editor +`ld`. + +* `-z relro`: Activate the *read-only after relocation* feature. + Constant data and relocations are placed on separate pages, and the + dynamic linker is instructed to revoke write permissions after + dynamic linking. Full protection of relocation data requires the + `-z now` flag (see below). +* `-z defs`: Refuse to link shared objects (DSOs) with undefined symbols + (optional, see above). + +For hardened builds, the +`-specs=/usr/lib/rpm/redhat/redhat-hardened-ld` flag is added to the +compiler driver command line. (This can be disabled by undefining the +`%_hardened_build` macro; see above) This activates the following +linker flags: + +* `-pie`: Produce a PIE binary. This is only activated for the main + executable, and only if it is dynamically linked. This requires + that all objects which are linked in the main executable have been + compiled with `-fPIE` or `-fPIC` (or `-fpie` or `-fpic`; see above). + By itself, `-pie` has only a slight performance impact because it + disables some link editor optimization, however the `-fPIE` compiler + flag has some overhead. +* `-z now`: Disable lazy binding and turn on the `BIND_NOW` dynamic + linker feature. Lazy binding involves an array of function pointers + which is writable at run time (which could be overwritten as part of + security exploits, redirecting execution). Therefore, it is + preferable to turn of lazy binding, although it increases startup + time. + +# Support for extension builders + +Some packages include extension builders that allow users to build +extension modules (which are usually written in C and C++) under the +control of a special-purpose build system. This is a common +functionality provided by scripting languages such as Python and Perl. +Traditionally, such extension builders captured the Fedora build flags +when these extension were built. However, these compiler flags are +adjusted for a specific Fedora release and toolchain version and +therefore do not work with a custom toolchain (e.g., different C/C++ +compilers), and users might want to build their own extension modules +with such toolchains. + +The macros `%{extension_cflags}`, `%{extension_cxxflags}`, +`%{extension_fflags}`, `%{extension_ldflags}` contain a subset of +flags that have been adjusted for compatibility with alternative +toolchains, while still preserving some of the compile-time security +hardening that the standard Fedora build flags provide. + +The current set of differences are: + +* No GCC plugins (such as annobin) are activated. +* No GCC spec files (`-specs=` arguments) are used. + +Additional flags may be removed in the future if they prove to be +incompatible with alternative toolchains. + +Extension builders should detect whether they are performing a regular +RPM build (e.g., by looking for an `RPM_OPT_FLAGS` variable). In this +case, they should use the *current* set of Fedora build flags (that +is, the output from `rpm --eval '%{build_cflags}'` and related +commands). Otherwise, when not performing an RPM build, they can +either use hard-coded extension builder flags (thus avoiding a +run-time dependency on `redhat-rpm-config`), or use the current +extension builder flags (with a run-time dependency on +`redhat-rpm-config`). + +As a result, extension modules built for Fedora will use the official +Fedora build flags, while users will still be able to build their own +extension modules with custom toolchains. diff --git a/SOURCES/config.guess b/SOURCES/config.guess new file mode 100644 index 0000000..2e9ad7f --- /dev/null +++ b/SOURCES/config.guess @@ -0,0 +1,1462 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2016 Free Software Foundation, Inc. + +timestamp='2016-10-02' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <http://www.gnu.org/licenses/>. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# +# Please send patches to <config-patches@gnu.org>. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2016 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include <features.h> + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case "${UNAME_MACHINE_ARCH}" in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}${abi}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include <stdio.h> /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <sys/systemcfg.h> + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include <stdlib.h> + #include <unistd.h> + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = hppa2.0w ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <unistd.h> + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + *:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + mips64el:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-${LIBC} + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` + echo ${UNAME_MACHINE}-pc-isc$UNAME_REL + elif /bin/uname -X 2>/dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says <Richard.M.Bartel@ccMail.Census.GOV> + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes <hewes@openmarket.com>. + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = 386; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; +esac + +cat >&2 <<EOF +$0: unable to guess system type + +This script (version $timestamp), has failed to recognize the +operating system you are using. If your script is old, overwrite +config.guess and config.sub with the latest versions from: + + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +and + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +If $0 has already been updated, send the following data and any +information you think might be pertinent to config-patches@gnu.org to +provide the necessary information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/SOURCES/config.sub b/SOURCES/config.sub new file mode 100644 index 0000000..cc69b06 --- /dev/null +++ b/SOURCES/config.sub @@ -0,0 +1,1823 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2016 Free Software Foundation, Inc. + +timestamp='2016-09-05' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <http://www.gnu.org/licenses/>. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to <config-patches@gnu.org>. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2016 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | cloudabi*-eabi* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + os=$os"spe" + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -ios) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/SOURCES/dist.sh b/SOURCES/dist.sh new file mode 100755 index 0000000..db6c053 --- /dev/null +++ b/SOURCES/dist.sh @@ -0,0 +1,66 @@ +#!/bin/bash +# dist.sh +# Author: Tom "spot" Callaway <tcallawa@redhat.com> +# License: GPL +# This is a script to output the value for the %{dist} +# tag. The dist tag takes the following format: .$type$num +# Where $type is one of: el, fc, rh +# (for RHEL, Fedora Core, and RHL, respectively) +# And $num is the version number of the distribution. +# NOTE: We can't detect Rawhide or Fedora Test builds properly. +# If we successfully detect the version number, we output the +# dist tag. Otherwise, we exit with no output. + +RELEASEFILE=/etc/redhat-release + +function check_num { + MAINVER=`cut -d "(" -f 1 < $RELEASEFILE | \ + sed -e "s/[^0-9.]//g" -e "s/$//g" | cut -d "." -f 1` + + echo $MAINVER | grep -q '[0-9]' && echo $MAINVER +} + +function check_rhl { + grep -q "Red Hat Linux" $RELEASEFILE && ! grep -q "Advanced" $RELEASEFILE && echo $DISTNUM +} + +function check_rhel { + egrep -q "(Enterprise|Advanced)" $RELEASEFILE && echo $DISTNUM +} + +function check_fedora { + grep -q Fedora $RELEASEFILE && echo $DISTNUM +} + +DISTNUM=`check_num` +DISTFC=`check_fedora` +DISTRHL=`check_rhl` +DISTRHEL=`check_rhel` +if [ -n "$DISTNUM" ]; then + if [ -n "$DISTFC" ]; then + DISTTYPE=fc + elif [ -n "$DISTRHEL" ]; then + DISTTYPE=el + elif [ -n "$DISTRHL" ]; then + DISTTYPE=rhl + fi +fi +[ -n "$DISTTYPE" -a -n "$DISTNUM" ] && DISTTAG=".${DISTTYPE}${DISTNUM}" + +case "$1" in + --el) echo -n "$DISTRHEL" ;; + --fc) echo -n "$DISTFC" ;; + --rhl) echo -n "$DISTRHL" ;; + --distnum) echo -n "$DISTNUM" ;; + --disttype) echo -n "$DISTTYPE" ;; + --help) + printf "Usage: $0 [OPTIONS]\n" + printf " Default mode is --dist. Possible options:\n" + printf " --el\t\tfor RHEL version (if RHEL)\n" + printf " --fc\t\tfor Fedora version (if Fedora)\n" + printf " --rhl\t\tfor RHL version (if RHL)\n" + printf " --dist\t\tfor distribution tag\n" + printf " --distnum\tfor distribution number (major)\n" + printf " --disttype\tfor distribution type\n" ;; + *) echo -n "$DISTTAG" ;; +esac diff --git a/SOURCES/find-provides b/SOURCES/find-provides new file mode 100755 index 0000000..9d3bd73 --- /dev/null +++ b/SOURCES/find-provides @@ -0,0 +1,50 @@ +#!/bin/bash + +# This script reads filenames from STDIN and outputs any relevant provides +# information that needs to be included in the package. + +if [ "$1" ] +then + package_name="$1" +fi + +filelist=`sed "s/['\"]/\\\&/g"` + +[ -x /usr/lib/rpm/rpmdeps -a -n "$filelist" ] && + echo $filelist | tr '[:blank:]' \\n | /usr/lib/rpm/rpmdeps --provides + +# +# --- any other extra find-provides scripts +for i in /usr/lib/rpm/redhat/find-provides.d/*.prov +do + [ -x $i ] && + (echo $filelist | tr '[:blank:]' \\n | $i | sort -u) +done + +# +# --- Kernel module imported symbols +# +# Since we don't (yet) get passed the name of the package being built, we +# cheat a little here by looking first for a kernel, then for a kmod. +# + +is_kmod=1 +for f in $filelist; do + if [ $(echo "$f" | sed -r -ne 's:^.*/lib/modules/(.*)/(.*)\.ko(\.gz|\.bz2|\.xz)?$:\2:p') ] + then + is_kernel=1; + fi + if [ $(echo "$f" | sed -r -ne 's:^.*/boot/(.*):\1:p') ] + then + unset is_kmod; + fi +done +if [ ! "$is_kernel" ] || [ "$package_name" == "kernel" ] +then + unset is_kmod +fi + +[ -x /usr/lib/rpm/redhat/find-provides.ksyms ] && [ "$is_kmod" ] && + printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/redhat/find-provides.ksyms + +exit 0 diff --git a/SOURCES/find-provides.ksyms b/SOURCES/find-provides.ksyms new file mode 100755 index 0000000..a58978b --- /dev/null +++ b/SOURCES/find-provides.ksyms @@ -0,0 +1,48 @@ +#! /bin/bash + +IFS=$'\n' + +for module in $(grep -E '/lib/modules/.+\.ko(\.gz|\.bz2|\.xz)?$'); do + tmpfile="" + if [ "x${module%.ko}" = "x${module}" ]; then + tmpfile=$(mktemp -t ${0##*/}.XXXXXX.ko) + proc_bin= + case "${module##*.}" in + xz) + proc_bin=xz + ;; + bz2) + proc_bin=bzip2 + ;; + gz) + proc_bin=gzip + ;; + esac + + [ -n "$proc_bin" ] || continue + + "$proc_bin" -d -c - < "$module" > "$tmpfile" || continue + module="$tmpfile" + fi + + if [[ -n $(nm $module | sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):0x\1 \2:p') ]]; then + nm $module \ + | sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):0x\1 \2:p' \ + | awk --non-decimal-data '{printf("ksym(%s) = 0x%08x\n", $2, $1)}' \ + | LC_ALL=C sort -u + else + ELFRODATA=$(readelf -R .rodata $module | awk '/0x/{printf $2$3$4$5}') + if [[ -n $(readelf -h $module | grep "little endian") ]]; then + RODATA=$(echo $ELFRODATA | sed 's/\(..\)\(..\)\(..\)\(..\)/\4\3\2\1/g') + else + RODATA=$ELFRODATA + fi + for sym in $(nm $module | sed -r -ne 's:^0*([0-9a-f]+) R __crc_(.+):0x\1 \2:p'); do + echo $sym $RODATA + done \ + | awk --non-decimal-data '{printf("ksym(%s) = 0x%08s\n", $2, substr($3,($1*2)+1,8))}' \ + | LC_ALL=C sort -u + fi + + [ -z "$tmpfile" ] || rm -f -- "$tmpfile" +done diff --git a/SOURCES/find-requires b/SOURCES/find-requires new file mode 100755 index 0000000..3c427d8 --- /dev/null +++ b/SOURCES/find-requires @@ -0,0 +1,38 @@ +#!/bin/bash + +# +# Auto-generate requirements for executables (both ELF and a.out) and library +# sonames, script interpreters, and perl modules. +# + +ulimit -c 0 + +filelist=`sed "s/[]['\"*?{}]/\\\\\&/g"` + +[ -x /usr/lib/rpm/rpmdeps -a -n "$filelist" ] && \ + echo $filelist | tr '[:blank:]' \\n | /usr/lib/rpm/rpmdeps --requires + +# +# --- Kernel module imported symbols +# +# Since we don't (yet) get passed the name of the package being built, we +# cheat a little here by looking first for a kernel, then for a kmod. +# + +unset is_kmod + +for f in $filelist; do + if [ $(echo "$f" | sed -r -ne 's:^.*/lib/modules/(.*)/(.*)\.ko(\.gz|\.bz2|\.xz)?$:\2:p') ] + then + is_kmod=1; + elif [ $(echo "$f" | sed -r -ne 's:^.*/boot/(.*):\1:p') ] + then + unset is_kmod; + break; + fi +done + +[ -x /usr/lib/rpm/redhat/find-requires.ksyms ] && [ "$is_kmod" ] && + printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/redhat/find-requires.ksyms + +exit 0 diff --git a/SOURCES/find-requires.ksyms b/SOURCES/find-requires.ksyms new file mode 100755 index 0000000..0681e11 --- /dev/null +++ b/SOURCES/find-requires.ksyms @@ -0,0 +1,155 @@ +#! /bin/bash +# +# This script is called during external module building to create dependencies +# both upon the RHEL kernel, and on additional external modules. Symbols that +# cannot be reconciled against those provided by the kernel are assumed to be +# provided by an external module and "ksym" replaces th regular "kernel" dep. + +IFS=$'\n' + +# Extract all of the symbols provided by this module. +all_provides() { + for module in "$@"; do + tmpfile="" + if [ "x${module%.ko}" = "x${module}" ]; then + tmpfile=$(mktemp -t ${0##*/}.XXXXXX.ko) + proc_bin= + case "${module##*.}" in + xz) + proc_bin=xz + ;; + bz2) + proc_bin=bzip2 + ;; + gz) + proc_bin=gzip + ;; + esac + + [ -n "$proc_bin" ] || continue + + "$proc_bin" -d -c - < "$module" > "$tmpfile" || continue + module="$tmpfile" + fi + + if [[ -n $(nm "$module" | sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):0x\1 \2:p') ]]; then + nm "$module" \ + | sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):0x\1 \2:p' \ + | awk --non-decimal-data '{printf("%s:0x%08x\n", $2, $1)}' + else + ELFRODATA=$(readelf -R .rodata "$module" | awk '/0x/{printf $2$3$4$5}') + if [[ -n $(readelf -h "$module" | grep "little endian") ]]; then + RODATA=$(echo $ELFRODATA | sed 's/\(..\)\(..\)\(..\)\(..\)/\4\3\2\1/g') + else + RODATA=$ELFRODATA + fi + for sym in $(nm "$module" | sed -r -ne 's:^0*([0-9a-f]+) R __crc_(.+):0x\1 \2:p'); do + echo $sym $RODATA + done \ + | awk --non-decimal-data '{printf("%s:0x%08s\n", $2, substr($3,($1*2)+1,8))}' + fi + + [ -z "$tmpfile" ] || rm -f -- "$tmpfile" + done \ + | LC_ALL=C sort -k1,1 -u +} + +# Extract all of the requirements of this module. +all_requires() { + for module in "$@"; do + set -- $(/sbin/modinfo -F vermagic "$module" | sed -e 's: .*::' -e q) + /sbin/modprobe --dump-modversions "$module" \ + | awk --non-decimal-data ' + BEGIN { FS = "\t" ; OFS = "\t" } + {printf("%s:0x%08x\n", $2, $1)}' \ + | sed -r -e 's:$:\t'"$1"':' + done \ + | LC_ALL=C sort -k1,1 -u +} + +# Filter out requirements fulfilled by the module itself. +mod_requires() { + LC_ALL=C join -t $'\t' -j 1 -v 1 \ + <(all_requires "$@") \ + <(all_provides "$@") \ + | LC_ALL=C sort -k1,1 -u +} + +if ! [ -e /sbin/modinfo -a -e /sbin/modprobe ]; then + cat > /dev/null + exit 0 +fi + +check_kabi() { + arch=$(uname -m) + kabi_file="/lib/modules/kabi-current/kabi_whitelist_$arch" + + # If not installed, output a warning and return (continue) + if [ ! -f "$kabi_file" ]; then + echo "" >&2 + echo "********************************************************************************" >&2 + echo "*********************** KERNEL ABI COMPATIBILITY WARNING ***********************" >&2 + echo "********************************************************************************" >&2 + echo "The kernel ABI reference files (provided by "kabi-whitelists") were not found." >&2 + echo "No compatibility check was performed. Please install the kABI reference files" >&2 + echo "and rebuild if you would like to verify compatibility with kernel ABI." >&2 + echo "" >&2 + return + fi + + unset non_kabi + for symbol in "$@"; do + if ! egrep "^[[:space:]]$symbol\$" $kabi_file >/dev/null; then + non_kabi=("${non_kabi[@]}" "$symbol") + fi + done + + if [ ${#non_kabi[@]} -gt 0 ]; then + echo "" >&2 + echo "********************************************************************************" >&2 + echo "*********************** KERNEL ABI COMPATIBILITY WARNING ***********************" >&2 + echo "********************************************************************************" >&2 + echo "The following kernel symbols are not guaranteed to remain compatible with" >&2 + echo "future kernel updates to this RHEL release:" >&2 + echo "" >&2 + for symbol in "${non_kabi[@]}"; do + printf "\t$symbol\n" >&2 + done + echo "" >&2 + echo "Red Hat recommends that you consider using only official kernel ABI symbols" >&2 + echo "where possible. Requests for additions to the kernel ABI can be filed with" >&2 + echo "your partner or customer representative (component: driver-update-program)." >&2 + echo "" >&2 + fi +} + +modules=($(grep -E '/lib/modules/.+\.ko(\.gz|\.bz2|\.xz)?$')) +if [ ${#modules[@]} -gt 0 ]; then + kernel=$(/sbin/modinfo -F vermagic "${modules[0]}" | sed -e 's: .*::' -e q) + + # get all that kernel provides + symvers=$(mktemp -t ${0##*/}.XXXXX) + + cat /usr/src/kernels/$kernel/Module.symvers | awk ' + BEGIN { FS = "\t" ; OFS = "\t" } + { print $2 ":" $1 } + ' \ + | sed -r -e 's:$:\t'"$kernel"':' \ + | LC_ALL=C sort -k1,1 -u > $symvers + + # Symbols matching with the kernel get a "kernel" dependency + mod_req=$(mktemp -t mod_req.XXXXX) + mod_requires "${modules[@]}" > "$mod_req" + LC_ALL=C join -t $'\t' -j 1 $symvers "$mod_req" | LC_ALL=C sort -u \ + | awk 'BEGIN { FS = "[\t:]" ; OFS = "\t" } { print "kernel(" $1 ") = " $2 }' + + # Symbols from elsewhere get a "ksym" dependency + LC_ALL=C join -t $'\t' -j 1 -v 2 $symvers "$mod_req" | LC_ALL=C sort -u \ + | awk 'BEGIN { FS = "[\t:]" ; OFS = "\t" } { print "ksym(" $1 ") = " $2 }' + + # Check kABI if the kabi-whitelists package is installed + # Do this last so we can try to output this error at the end + kabi_check_symbols=($(LC_ALL=C join -t $'\t' -j 1 $symvers "$mod_req" | LC_ALL=C sort -u \ + | awk 'BEGIN { FS = "[\t:]" ; OFS = "\t" } { print $1 }')) + check_kabi "${kabi_check_symbols[@]}" +fi diff --git a/SOURCES/firmware.prov b/SOURCES/firmware.prov new file mode 100644 index 0000000..c4aa26f --- /dev/null +++ b/SOURCES/firmware.prov @@ -0,0 +1,14 @@ +#!/bin/sh +# +# firmware.prov - Automatically extract any and all firmware dependencies from +# kernel object (.ko) files and add to RPM deps. + +IFS=$'\n' + +for module in $(grep -E '/lib/modules/.+\.ko(\.gz|\.bz2|\.xz)?$') $*; +do + for firmware in `/sbin/modinfo -F firmware $module`; + do + echo "firmware($firmware)" + done +done diff --git a/SOURCES/kabi.attr b/SOURCES/kabi.attr new file mode 100644 index 0000000..2d81387 --- /dev/null +++ b/SOURCES/kabi.attr @@ -0,0 +1,2 @@ +%__kabi_provides %{_rpmconfigdir}/kabi.sh +%__kabi_path ^(/boot/symvers-.*|/lib/modules/[1-9].*/symvers)\.gz$ diff --git a/SOURCES/kabi.sh b/SOURCES/kabi.sh new file mode 100644 index 0000000..59b2b86 --- /dev/null +++ b/SOURCES/kabi.sh @@ -0,0 +1,13 @@ +#!/bin/bash +x +# +# kabi.sh - Automatically extract any kernel symbol checksum from the +# symvers file and add to RPM deps. This is used to move the +# checksum checking from modprobe to rpm install for 3rd party +# modules (so they can fail during install and not at load). + +IFS=$'\n' + +for symvers in $(grep -E '(/boot/symvers-.*|/lib/modules/[1-9].*/symvers)\.gz') "$@"; +do + zcat $symvers | awk ' {print "kernel(" $2 ") = " $1 }' +done diff --git a/SOURCES/kmod.attr b/SOURCES/kmod.attr new file mode 100644 index 0000000..f2a50d0 --- /dev/null +++ b/SOURCES/kmod.attr @@ -0,0 +1,2 @@ +%__kmod_provides %{_rpmconfigdir}/kmod.prov +%__kmod_path ^/lib/modules/.*$ diff --git a/SOURCES/kmod.prov b/SOURCES/kmod.prov new file mode 100644 index 0000000..f02d8a0 --- /dev/null +++ b/SOURCES/kmod.prov @@ -0,0 +1,17 @@ +#!/bin/sh +x + +IFS=$'\n' + +for i in $(grep -E '(/lib/modules/.*\.ko|/lib/modules/.*/modules.builtin)'); +do + kmod=$(basename $i | sed -e 's/.[xg]z//'); + + if [ $kmod == "modules.builtin" ]; then + for j in $(cat $i); do + j=$(basename $j); + echo "kmod($j)" + done + else + echo "kmod($kmod)" + fi +done diff --git a/SOURCES/kmodtool b/SOURCES/kmodtool new file mode 100755 index 0000000..4796530 --- /dev/null +++ b/SOURCES/kmodtool @@ -0,0 +1,349 @@ +#!/bin/bash + +# kmodtool - Helper script for building kernel module RPMs +# An original version appeared in Fedora. This version is +# generally called only by the %kernel_module_package RPM macro +# during the process of building Driver Update Packages (which +# are also known as "kmods" in the Fedora community). +# +# Copyright (c) 2003-2010 Ville Skyttä <ville.skytta@iki.fi>, +# Thorsten Leemhuis <fedora@leemhuis.info> +# Jon Masters <jcm@redhat.com> +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +# Changelog: +# +# 2010/07/28 - Add fixes for filelists in line with LF standard +# - Remove now defunct "framepointer" kernel variant +# - Change version to "rhel6-rh2" as a consequence. +# +# 2010/01/10 - Simplified for RHEL6. We are working on upstream +# moving to a newer format and in any case do not +# need to retain support for really old systems. + +shopt -s extglob + +myprog="kmodtool" +myver="0.10.10_rhel8" +knownvariants=@(debug|kdump|zfcpdump) +kmod_name= +kver= +verrel= +variant= + +get_verrel () +{ + verrel=${1:-$(uname -r)} + verrel=${verrel/%[.+]$knownvariants/} +} + +print_verrel () +{ + get_verrel "$@" + echo "${verrel}" +} + +get_variant () +{ + get_verrel "$@" + variant=${1:-$(uname -r)} + variant=${variant/#$verrel?(.+)/} + variant=${variant:-'""'} +} + +print_variant () +{ + get_variant $@ + echo "${variant}" +} + +# Detect flavor separator character. We have to do that due to +# a systemd-tailored patch for kernel spec[1][2] introduced in Fedora and then +# imported in RHEL 8 that broke all OOT kmod infrastructure for the flavored +# kernels. +# +# [1] https://lists.fedoraproject.org/pipermail/kernel/2013-June/004262.html +# [2] https://src.fedoraproject.org/rpms/kernel/c/faf25207dc86666a611c45ae3ffaf385c170bd2a +# +# $1 - kver +# $2 - variant +get_variant_char () +{ + variant="$2" + [ "$variant" != "default" ] || variant="" + + get_verrel "$1" + + variant_char="" + [ -n "$variant" ] || return 0 + + # We expect that the flavored kernel is already installed in the buildroot + variant_char="+" + [ -e "/usr/src/kernels/${verrel}+${variant}" ] && return 0 + + variant_char="." +} + +print_variant_char () +{ + get_variant_char "$@" + echo "${variant_char}" +} + +print_kernel_source () +{ + get_variant_char "$@" + echo "/usr/src/kernels/${verrel}${variant_char}${variant}" +} + +get_filelist() { + local IFS=$'\n' + filelist=($(cat)) + + if [ ${#filelist[@]} -gt 0 ]; + then + for ((n = 0; n < ${#filelist[@]}; n++)); + do + line="${filelist[n]}" + line=$(echo "$line" \ + | sed -e "s/%verrel/$verrel/g" \ + | sed -e "s/%variant/$variant/g" \ + | sed -e "s/%dashvariant/$dashvariant/g" \ + | sed -e "s/%dotvariant/$dotvariant/g" \ + | sed -e "s/\+%1/$dotvariant/g" \ + | sed -e "s/\.%1/$dotvariant/g" \ + | sed -e "s/\-%1/$dotvariant/g" \ + | sed -e "s/%2/$verrel/g") + echo "$line" + done + else + echo "%defattr(644,root,root,755)" + echo "/lib/modules/${verrel}${dotvariant}" + fi +} + + +get_rpmtemplate () +{ + local variant="${1}" + + get_variant_char "${verrel}" "${variant}" + + local dashvariant="${variant:+-${variant}}" + local dotvariant="${variant:+${variant_char}${variant}}" + + echo "%package -n kmod-${kmod_name}${dashvariant}" + + if [ -z "$kmod_provides_summary" ]; then + echo "Summary: ${kmod_name} kernel module(s)" + fi + + if [ -z "$kmod_provides_group" ]; then + echo "Group: System Environment/Kernel" + fi + + if [ ! -z "$kmod_version" ]; then + echo "Version: %{kmod_version}" + fi + + if [ ! -z "$kmod_release" ]; then + echo "Release: %{kmod_release}" + fi + + # Turn of the internal dep generator so we will use the kmod scripts. + echo "%global _use_internal_dependency_generator 0" + + cat <<EOF +Provides: kernel-modules >= ${verrel}${dotvariant} +Provides: kernel${dashvariant}-modules >= ${verrel} +Provides: ${kmod_name}-kmod = %{?epoch:%{epoch}:}%{version}-%{release} +Requires(post): /usr/sbin/depmod +Requires(postun): /usr/sbin/depmod +Requires(post): /usr/sbin/weak-modules +Requires(postun): /usr/sbin/weak-modules +EOF + + if [ "yes" != "$nobuildreqs" ] + then + cat <<EOF +BuildRequires: kernel${dashvariant}-devel +BuildRequires: kernel-abi-whitelists +BuildRequires: redhat-rpm-config kernel-rpm-macros +BuildRequires: elfutils-libelf-devel kmod +EOF + fi + + if [ "" != "$override_preamble" ] + then + cat "$override_preamble" + fi + +cat <<EOF +%description -n kmod-${kmod_name}${dashvariant} +This package provides the ${kmod_name} kernel modules built for +the Linux kernel ${verrel}${dotvariant} for the %{_target_cpu} +family of processors. +EOF + +############################################################################## +## The following are not part of this script directly, they are scripts ## +## that will be executed by RPM during various stages of package processing ## +############################################################################## + +cat <<EOF +%post -n kmod-${kmod_name}${dashvariant} +if [ -e "/boot/System.map-${verrel}${dotvariant}" ]; then + /usr/sbin/depmod -aeF "/boot/System.map-${verrel}${dotvariant}" "${verrel}${dotvariant}" > /dev/null || : +fi + +modules=( \$(find /lib/modules/${verrel}${dotvariant}/extra/${kmod_name} | grep '\.ko$') ) +if [ -x "/usr/sbin/weak-modules" ]; then + printf '%s\n' "\${modules[@]}" \ + | /usr/sbin/weak-modules --add-modules +fi +EOF + +cat <<EOF +%preun -n kmod-${kmod_name}${dashvariant} +rpm -ql kmod-${kmod_name}${dashvariant}-%{kmod_version}-%{kmod_release}.$(arch) | grep '\.ko$' > /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules +EOF + +cat <<EOF +%postun -n kmod-${kmod_name}${dashvariant} +if [ -e "/boot/System.map-${verrel}${dotvariant}" ]; then + /usr/sbin/depmod -aeF "/boot/System.map-${verrel}${dotvariant}" "${verrel}${dotvariant}" > /dev/null || : +fi + +modules=( \$(cat /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules) ) +rm /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules +if [ -x "/usr/sbin/weak-modules" ]; then + printf '%s\n' "\${modules[@]}" \ + | /usr/sbin/weak-modules --remove-modules +fi +EOF + +echo "%files -n kmod-${kmod_name}${dashvariant}" + +if [ "" == "$override_filelist" ]; +then + echo "%defattr(644,root,root,755)" + echo "/lib/modules/${verrel}${dotvariant}" +else + cat "$override_filelist" | get_filelist +fi +} + +print_rpmtemplate () +{ + kmod_name="${1}" + shift + kver="${1}" + get_verrel "${1}" + shift + if [ -z "${kmod_name}" ] ; then + echo "Please provide the kmodule-name as first parameter." >&2 + exit 2 + elif [ -z "${kver}" ] ; then + echo "Please provide the kver as second parameter." >&2 + exit 2 + elif [ -z "${verrel}" ] ; then + echo "Couldn't find out the verrel." >&2 + exit 2 + fi + + for variant in "$@" ; do + if [ "default" == "$variant" ]; + then + get_rpmtemplate "" + else + get_rpmtemplate "${variant}" + fi + done +} + +usage () +{ + cat <<EOF +You called: ${invocation} + +Usage: ${myprog} <command> <option>+ + Commands: + verrel <uname> + - Get "base" version-release. + variant <uname> + - Get variant from uname. + variant_char <uname> <variant> + - Get kernel variant separator character. + kernel_source <uname> <variant> + - Get path to kernel source directory. + rpmtemplate <mainpgkname> <uname> <variants> + - Return a template for use in a source RPM + version + - Output version number and exit. +EOF +} + +invocation="$(basename ${0}) $@" +while [ "${1}" ] ; do + case "${1}" in + verrel) + shift + print_verrel "$@" + exit $? + ;; + variant) + shift + print_variant "$@" + exit $? + ;; + variant_char) + shift + print_variant_char "$@" + exit $? + ;; + kernel_source) + shift + print_kernel_source "$@" + exit $? + ;; + rpmtemplate) + shift + print_rpmtemplate "$@" + exit $? + ;; + version) + echo "${myprog} ${myver}" + exit 0 + ;; + *) + echo "Error: Unknown option '${1}'." >&2 + usage >&2 + exit 2 + ;; + esac +done + +# Local variables: +# mode: sh +# sh-indentation: 2 +# indent-tabs-mode: nil +# End: +# ex: ts=2 sw=2 et diff --git a/SOURCES/libsymlink.attr b/SOURCES/libsymlink.attr new file mode 100644 index 0000000..4e4981f --- /dev/null +++ b/SOURCES/libsymlink.attr @@ -0,0 +1,5 @@ +# Make libfoo.so symlinks require the soname-provide of the target library +%__libsymlink_requires %{_rpmconfigdir}/elfdeps --provides --soname-only +%__libsymlink_magic ^symbolic link to .*lib.*\.so\..*$ +%__libsymlink_path ^.*\.so$ +%__libsymlink_flags magic_and_path diff --git a/SOURCES/macros b/SOURCES/macros new file mode 100644 index 0000000..2cbb14e --- /dev/null +++ b/SOURCES/macros @@ -0,0 +1,268 @@ +# Per-platform rpm configuration file. + +#============================================================================== +# ---- per-platform macros. +# +%_vendor redhat +%_os linux +%_target_platform %{_target_cpu}-%{_vendor}-%{_target_os}%{?_gnu} + +#============================================================================== +# ---- configure macros. note that most of these are inherited +# from the defaults. +# +%_localstatedir /var + +%_pkgdocdir %{_docdir}/%{name} +%_docdir_fmt %%{NAME} + +%_fmoddir %{_libdir}/gfortran/modules + +%_enable_debug_packages 1 +%_include_minidebuginfo 1 +%_include_gdb_index 1 +%_debugsource_packages 1 +%_debuginfo_subpackages 1 + +#============================================================================== +# ---- compiler flags. + +# C compiler flags. This is traditionally called CFLAGS in makefiles. +# Historically also available as %%{optflags}, and %%build sets the +# environment variable RPM_OPT_FLAGS to this value. +%build_cflags %{optflags} + +# C++ compiler flags. This is traditionally called CXXFLAGS in makefiles. +%build_cxxflags %{optflags} + +# Fortran compiler flags. Makefiles use both FFLAGS and FCFLAGS as +# the corresponding variable names. +%build_fflags %{optflags} -I%{_fmoddir} + +# Link editor flags. This is usually called LDFLAGS in makefiles. +# (Some makefiles use LFLAGS instead.) The default value assumes that +# the flags, while intended for ld, are still passed through the gcc +# compiler driver. At the beginning of %%build, the environment +# variable RPM_LD_FLAGS to this value. +%build_ldflags -Wl,-z,relro %{_ld_symbols_flags} %{_hardened_ldflags} + +# Expands to shell code to seot the compiler/linker environment +# variables CFLAGS, CXXFLAGS, FFLAGS, FCFLAGS, LDFLAGS if they have +# not been set already. RPM_OPT_FLAGS and RPM_LD_FLAGS have already +# been set implicitly at the start of the %%build section. +%set_build_flags \ + CFLAGS="${CFLAGS:-%{build_cflags}}" ; export CFLAGS ; \ + CXXFLAGS="${CXXFLAGS:-%{build_cxxflags}}" ; export CXXFLAGS ; \ + FFLAGS="${FFLAGS:-%{build_fflags}}" ; export FFLAGS ; \ + FCFLAGS="${FCFLAGS:-%{build_fflags}}" ; export FCFLAGS ; \ + LDFLAGS="${LDFLAGS:-%{build_ldflags}}" ; export LDFLAGS + +# Internal-only. Do not use. Expand a variable and strip the flags +# not suitable to extension builders. +%__extension_strip_flags() %{lua: +local name = rpm.expand("%{1}") +local value = " " .. rpm.expand("%{build_" .. name .. "}") +local result = string.gsub(value, "%s+-specs=[^%s]+", " ") +print(result) +} + +# Variants of CFLAGS, CXXFLAGS, FFLAGS, LDFLAGS for use within +# extension builders. +%extension_cflags %{__extension_strip_flags cflags} +%extension_cxxflags %{__extension_strip_flags cxxflags} +%extension_fflags %{__extension_strip_flags fflags} +%extension_ldflags %{__extension_strip_flags ldflags} + +# Deprecated names. For backwards compatibility only. +%__global_cflags %{build_cflags} +%__global_cxxflags %{build_cxxflags} +%__global_fflags %{build_fflags} +%__global_fcflags %{build_fflags} +%__global_ldflags %{build_ldflags} + +#============================================================================== +# ---- configure and makeinstall. +# +%_configure_gnuconfig_hack 1 +%_configure_libtool_hardening_hack 1 +# If defined, _configure_disable_silent_rules will cause --disable-silent-rules +# to be added to the list of options passed to the configure script. +# Eventually we'll want to turn this on by default, but this gives packagers a +# way to turn it back off. +# %_configure_disable_silent_rules 1 +%configure \ + %{set_build_flags}; \ + [ "%_configure_gnuconfig_hack" = 1 ] && for i in $(find $(dirname %{_configure}) -name config.guess -o -name config.sub) ; do \ + [ -f /usr/lib/rpm/redhat/$(basename $i) ] && %{__rm} -f $i && %{__cp} -fv /usr/lib/rpm/redhat/$(basename $i) $i ; \ + done ; \ + [ "%_configure_libtool_hardening_hack" = 1 ] && [ x != "x%{_hardened_ldflags}" ] && \ + for i in $(find . -name ltmain.sh) ; do \ + %{__sed} -i.backup -e 's~compiler_flags=$~compiler_flags="%{_hardened_ldflags}"~' $i \ + done ; \ + %{_configure} --build=%{_build} --host=%{_host} \\\ + --program-prefix=%{?_program_prefix} \\\ + --disable-dependency-tracking \\\ + %{?_configure_disable_silent_rules:--disable-silent-rules} \\\ + --prefix=%{_prefix} \\\ + --exec-prefix=%{_exec_prefix} \\\ + --bindir=%{_bindir} \\\ + --sbindir=%{_sbindir} \\\ + --sysconfdir=%{_sysconfdir} \\\ + --datadir=%{_datadir} \\\ + --includedir=%{_includedir} \\\ + --libdir=%{_libdir} \\\ + --libexecdir=%{_libexecdir} \\\ + --localstatedir=%{_localstatedir} \\\ + --sharedstatedir=%{_sharedstatedir} \\\ + --mandir=%{_mandir} \\\ + --infodir=%{_infodir} + +# Maximum number of CPU's to use when building, 0 for unlimited. +# +# This was for some time capped at 16. Please see +# https://bugzilla.redhat.com/show_bug.cgi?id=669638 and +# https://bugzilla.redhat.com/show_bug.cgi?id=1384938 for the situation +# surrounding this. +#%_smp_ncpus_max 0 +%_smp_mflags %([ -z "$RPM_BUILD_NCPUS" ] \\\ + && RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"; \\\ + ncpus_max=%{?_smp_ncpus_max}; \\\ + if [ -n "$ncpus_max" ] && [ "$ncpus_max" -gt 0 ] && [ "$RPM_BUILD_NCPUS" -gt "$ncpus_max" ]; then RPM_BUILD_NCPUS="$ncpus_max"; fi; \\\ + if [ "$RPM_BUILD_NCPUS" -gt 1 ]; then echo "-j$RPM_BUILD_NCPUS"; fi) + +#============================================================================== +# ---- Build policy macros. +# +# +#--------------------------------------------------------------------- +# Expanded at beginning of %install scriptlet. +# + +%__spec_install_pre %{___build_pre}\ + [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"\ + mkdir -p `dirname "$RPM_BUILD_ROOT"`\ + mkdir "$RPM_BUILD_ROOT"\ +%{nil} + +#--------------------------------------------------------------------- +# Expanded at end of %install scriptlet. +# + +%__arch_install_post /usr/lib/rpm/check-buildroot + +# Build root policy macros. Standard naming: +# convert all '-' in basename to '_', add two leading underscores. +%__brp_ldconfig /usr/lib/rpm/redhat/brp-ldconfig +%__brp_compress /usr/lib/rpm/brp-compress +%__brp_strip /usr/lib/rpm/brp-strip %{__strip} +%__brp_strip_comment_note /usr/lib/rpm/brp-strip-comment-note %{__strip} %{__objdump} +%__brp_strip_static_archive /usr/lib/rpm/brp-strip-static-archive %{__strip} +%__brp_python_bytecompile /usr/lib/rpm/brp-python-bytecompile "" %{?_python_bytecompile_errors_terminate_build} +%__brp_python_hardlink /usr/lib/rpm/brp-python-hardlink +# __brp_mangle_shebangs_exclude - shebangs to exclude +# __brp_mangle_shebangs_exclude_file - file from which to get shebangs to exclude +# __brp_mangle_shebangs_exclude_from - files to ignore +# __brp_mangle_shebangs_exclude_from_file - file from which to get files to ignore +%__brp_mangle_shebangs PYTHON3="%{__python3}" /usr/lib/rpm/redhat/brp-mangle-shebangs %{?__brp_mangle_shebangs_exclude:--shebangs "%{?__brp_mangle_shebangs_exclude}"} %{?__brp_mangle_shebangs_exclude_file:--shebangs-from "%{__brp_mangle_shebangs_exclude_file}"} %{?__brp_mangle_shebangs_exclude_from:--files "%{?__brp_mangle_shebangs_exclude_from}"} %{?__brp_mangle_shebangs_exclude_from_file:--files-from "%{__brp_mangle_shebangs_exclude_from_file}"} + +%__os_install_post \ + %{?__brp_ldconfig} \ + %{?__brp_compress} \ + %{!?__debug_package:\ + %{?__brp_strip} \ + %{?__brp_strip_comment_note} \ + } \ + %{?__brp_strip_static_archive} \ + %{?py_auto_byte_compile:%{?__brp_python_bytecompile}} \ + %{?__brp_python_hardlink} \ + %{?__brp_mangle_shebangs} \ +%{nil} + +%__spec_install_post\ + %{?__debug_package:%{__debug_install_post}}\ + %{__arch_install_post}\ + %{__os_install_post}\ +%{nil} + +%install %{?_enable_debug_packages:%{?buildsubdir:%{debug_package}}}\ +%%install\ +%{nil} + +# +# Should missing buildids terminate a build? +%_missing_build_ids_terminate_build 1 + +# +## Automatically compile python files +%py_auto_byte_compile 1 + +# +## Should python bytecompilation errors terminate a build? +%_python_bytecompile_errors_terminate_build 1 + +# Use SHA-256 for FILEDIGESTS instead of default MD5 +%_source_filedigest_algorithm 8 +%_binary_filedigest_algorithm 8 + +# Use XZ compression for binary payloads +%_binary_payload w2.xzdio + +%_hardening_cflags -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 +# we don't escape symbols '~', '"', etc. so be careful when changing this +%_hardening_ldflags -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld + +# Harden packages by default for Fedora 23: +# https://fedorahosted.org/fesco/ticket/1384 (accepted on 2014-02-11) +# Use "%undefine _hardened_build" to disable. +%_hardened_build 1 +%_hardened_cflags %{?_hardened_build:%{_hardening_cflags}} +%_hardened_ldflags %{?_hardened_build:%{_hardening_ldflags}} + +%_annobin_cflags -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 + +# Add extra information to binary objects created by gcc for Fedora 28: +# https://pagure.io/fesco/issue/1780 (accepted on 2017-10-30) +# Use "%undefine _annotated_build" to disable. +%_annotated_build 1 +%_annotated_cflags %{?_annotated_build:%{_annobin_cflags}} + +# Fail linking if there are undefined symbols. Required for proper +# ELF symbol versioning support. Disabled by default. +# Use "%define _strict_symbol_defs_build 1" to enable. +#%_strict_symbol_defs_build 1 +%_ld_symbols_flags %{?_strict_symbol_defs_build:-Wl,-z,defs} + +%__global_compiler_flags -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches %{_hardened_cflags} %{_annotated_cflags} + +#============================================================================== +# ---- Generic auto req/prov filtering macros +# +# http://fedoraproject.org/wiki/PackagingDrafts/AutoProvidesAndRequiresFiltering + +# prevent anything matching from being scanned for provides +%filter_provides_in(P) %{expand: \ +%global __filter_prov_cmd %{?__filter_prov_cmd} %{__grep} -v %{-P} '%*' | \ +} + +# prevent anything matching from being scanned for requires +%filter_requires_in(P) %{expand: \ +%global __filter_req_cmd %{?__filter_req_cmd} %{__grep} -v %{-P} '%*' | \ +} + +# filter anything matching out of the provides stream +%filter_from_provides() %{expand: \ +%global __filter_from_prov %{?__filter_from_prov} | %{__sed} -e '%*' \ +} + +# filter anything matching out of the requires stream +%filter_from_requires() %{expand: \ +%global __filter_from_req %{?__filter_from_req} | %{__sed} -e '%*' \ +} + +# actually set up the filtering bits +%filter_setup %{expand: \ +%global _use_internal_dependency_generator 0 \ +%global __deploop() while read FILE; do echo "${FILE}" | /usr/lib/rpm/rpmdeps -%{1}; done | /bin/sort -u \ +%global __find_provides /bin/sh -c "%{?__filter_prov_cmd} %{__deploop P} %{?__filter_from_prov}" \ +%global __find_requires /bin/sh -c "%{?__filter_req_cmd} %{__deploop R} %{?__filter_from_req}" \ +} diff --git a/SOURCES/macros.dwz b/SOURCES/macros.dwz new file mode 100644 index 0000000..f1e4813 --- /dev/null +++ b/SOURCES/macros.dwz @@ -0,0 +1,39 @@ +# Macros for reducing debug info size using dwz(1) utility. + +# The two default values below should result in dwz taking at most +# 3GB of RAM or so on 64-bit hosts and 2.5GB on 32-bit hosts +# on the largest *.debug files (in mid 2012 those are +# libreoffice-debuginfo, debuginfos containing +# libxul.so.debug and libwebkitgtk-*.so.*.debug). +# This needs to be tuned based on the amount of available RAM +# on build boxes for each architecture as well as virtual address +# space limitations if dwz is 32-bit program. While it needs less +# memory than 64-bit program because pointers are smaller, it can +# never have more than 4GB-epsilon of RAM and on some architecture +# even less than that (e.g. 2GB). + +# Number of debugging information entries (DIEs) above which +# dwz will stop considering file for multifile optimizations +# and enter a low memory mode, in which it will optimize +# in about half the memory needed otherwise. +%_dwz_low_mem_die_limit 10000000 +# Number of DIEs above which dwz will stop processing +# a file altogether. +%_dwz_max_die_limit 50000000 + +# On x86_64 increase the higher limit to make libwebkit* optimizable. +# libwebkit* in mid 2012 contains roughly 87mil DIEs, and 64-bit +# dwz is able to optimize it from ~1.1GB to ~410MB using 5.2GB of RAM. +%_dwz_max_die_limit_x86_64 110000000 + +# On ARM, build boxes often have only 512MB of RAM and are very slow. +# Lower both the limits. +%_dwz_low_mem_die_limit_armv5tel 4000000 +%_dwz_low_mem_die_limit_armv7hl 4000000 +%_dwz_max_die_limit_armv5tel 10000000 +%_dwz_max_die_limit_armv7hl 10000000 + +%_dwz_limit() %{expand:%%{?%{1}_%{_arch}}%%{!?%{1}_%{_arch}:%%%{1}}} +%_find_debuginfo_dwz_opts --run-dwz\\\ + --dwz-low-mem-die-limit %{_dwz_limit _dwz_low_mem_die_limit}\\\ + --dwz-max-die-limit %{_dwz_limit _dwz_max_die_limit} diff --git a/SOURCES/macros.fedora-misc-srpm b/SOURCES/macros.fedora-misc-srpm new file mode 100644 index 0000000..1dc5779 --- /dev/null +++ b/SOURCES/macros.fedora-misc-srpm @@ -0,0 +1,8 @@ +# Some miscellaneous Fedora-related macros + +# A directory for rpm macros +%rpmmacrodir /usr/lib/rpm/macros.d + +# A directory for appdata metainfo. This has changed between releases so a +# macro is useful. +%_metainfodir %{_datadir}/metainfo diff --git a/SOURCES/macros.forge b/SOURCES/macros.forge new file mode 100644 index 0000000..1bec610 --- /dev/null +++ b/SOURCES/macros.forge @@ -0,0 +1,282 @@ +# Map forge information to rpm metadata. This macro will compute default spec +# variable values. +# +# The following spec variables SHOULD be set before calling the macro: +# +# forgeurl the project url on the forge, strongly recommended; +# alternatively, use -u <url> +# Version if applicable, set it with Version: <version> +# tag if applicable +# commit if applicable +# +# The macro will attempt to compute and set the following variables if they are +# not already set by the packager: +# +# forgesource an URL that can be used as SourceX: value +# forgesetupargs the correct arguments to pass to %setup for this source +# used by %forgesetup and %forgeautosetup +# archivename the source archive filename, without extentions +# archiveext the source archive filename extensions, without leading dot +# archiveurl the url that can be used to download the source archive, +# without renaming +# scm the scm type, when packaging code snapshots: commits or tags +# +# If the macro is unable to parse your forgeurl value set at least archivename +# and archiveurl before calling it. +# +# Most of the computed variables are both overridable and optional. However, +# the macro WILL REDEFINE %{dist} when packaging a snapshot (commit or tag). +# The previous %{dist} value will be lost. Don’t call the macro if you don’t +# wish %{dist} to be changed. +# +# Optional parameters: +# -u <url> Ignore forgeurl even if it exists and use <url> instead. Note +# that the macro will still end up setting <url> as the forgeurl +# spec variable if it manages to parse it. +# -s Silently ignore problems in forgeurl, use it if it can be parsed, +# ignore it otherwise. +# -p Restore problem handling, override -s. +# -v Be verbose and print every spec variable the macro sets. +# -i Print some info about the state of spec variables the macro may use or +# set at the end of the processing. +%forgemeta(u:spvi) %{lua: +local forgeurl = rpm.expand("%{?-u*}") +if (forgeurl == "") then + forgeurl = rpm.expand("%{?forgeurl}") +end +local silent = false +local verbose = false +local informative = false +if (rpm.expand("%{?-s}") ~= "") then + silent = true +end +if (rpm.expand("%{?-p}") ~= "") then + silent = false +end +if (rpm.expand("%{?-v}") ~= "") then + verbose = true +end +if (rpm.expand("%{?-i}") ~= "") then + informative = true +end +local tag = rpm.expand("%{?tag}") +local commit = rpm.expand("%{?commit}") +-- Be explicit about the spec variables we’re setting +local function explicitset(rpmvariable,value) + rpm.define(rpmvariable .. " " .. value) + if verbose then + rpm.expand("%{echo:Setting %%{" .. rpmvariable .. "} = " .. value .. "\\n}") + end +end +-- Never ever stomp on a spec variable the packager already set +local function safeset(rpmvariable,value) + if (rpm.expand("%{?" .. rpmvariable .. "}") == "") then + explicitset(rpmvariable,value) + end +end +-- Set spec variable values for each known software publishing service +if (forgeurl ~= "") then + local forge = string.match(forgeurl, "^[^:]+://([^/]+)/") + if (forge == nil) then + if not silent then + rpm.expand("%{error:URLs must include a protocol such as https:// and a path starting with / !\\n}") + end + else + if (string.match(forge, "^gitlab[%.-]") or string.match(forge, "[%.-]gitlab[%.]")) then + forgeurl = string.match(forgeurl, "https://[^/]+/[^/]+/[^/#?]+") + if (forgeurl == nil) then + if not silent then + rpm.expand("%{error:Gitlab URLs must match https://(…[-.])gitlab[-.]…/owner/repo !\\n}") + end + else + explicitset("forgeurl", forgeurl) + if (commit == "") then + rpm.expand("%{error:All Gitlab URLs require commit value knowledge: you need to define %{commit}!\\nPlease vote on https://gitlab.com/gitlab-org/gitlab-ce/issues/38830\\n}") + end + safeset("archiveext", "tar.bz2") + safeset("forgesetupargs", "-n %{archivename}") + if (commit ~= "") or (tag ~= "") then + safeset("scm", "git") + end + local owner = string.match(forgeurl, "^[^:]+://[^/]+/([^/]+)") + local repo = string.match(forgeurl, "^[^:]+://[^/]+/[^/]+/([^/]+)") + local version = rpm.expand("%{?version}") + if (version ~= "") and (version ~= "0") and (tag == "") then + -- GitLab does not have strong versionning semantics + -- Some projects use "version" as release tag, others "v" + "version" + -- Tag value needs to be explicitly declared before calling the macro + -- in the second case + tag = version + safeset("tag", tag) + end + if (tag ~= "") then + safeset("archivename", repo .. "-%{tag}-%{commit}") + safeset("archiveurl", "%{forgeurl}/repository/%{tag}/archive.%{archiveext}") + else + safeset("archivename", repo .. "-%{commit}") + safeset("archiveurl", "%{forgeurl}/repository/%{commit}/archive.%{archiveext}") + end + end + end + if (string.match(forge, "^github[%.-]") or string.match(forge, "[%.-]github[%.]")) then + forgeurl = string.match(forgeurl, "https://[^/]+/[^/]+/[^/#?]+") + if (forgeurl == nil) then + if not silent then + rpm.expand("%{error:GitHub URLs must match https://(…[-.])github[-.]…/owner/repo !\\n}") + end + else + explicitset("forgeurl", forgeurl) + safeset("archiveext", "tar.gz") + local forgesetupargs = "-n %{archivename}" + if (commit ~= "") or (tag ~= "") then + safeset("scm", "git") + end + local owner = string.match(forgeurl, "^[^:]+://[^/]+/([^/]+)") + local repo = string.match(forgeurl, "^[^:]+://[^/]+/[^/]+/([^/]+)") + if (tag ~= "") then + -- if upstream used a version suffix such as -rc1 or -beta it will not + -- be a valid version string for rpm but github will accept it fine and + -- use the same naming as for other versions: v prefix in the tag and + -- archivename, no v prefix in the topdir naming inside the archive + local version = rpm.expand("%{?version}") + if version ~= "" and + (string.match(tag, "^v" .. version .. "[^%d]") or + string.match(tag, "^v" .. version .. "$")) then + forgesetupargs = "-n " .. repo .. "-" .. string.gsub(tag, "^v", "") + end + safeset("archivename", repo .. "-%{tag}") + safeset("archiveurl", "%{forgeurl}/archive/%{tag}.%{archiveext}") + else + if (commit ~= "") then + safeset("archivename", repo .. "-%{commit}") + safeset("archiveurl", "%{forgeurl}/archive/%{commit}/" .. repo .. "-%{commit}.%{archiveext}") + else + safeset("archivename", repo .. "-%{version}") + safeset("archiveurl", "%{forgeurl}/archive/v%{version}.%{archiveext}") + end + end + safeset("forgesetupargs", forgesetupargs) + end + end + if (forge == "code.googlesource.com") then + forgeurl = string.match(forgeurl, "https://code.googlesource.com/[^#?]*[^/#?]+") + if (forgeurl == nil) then + if not silent then + rpm.expand("%{error:Googlesource URLs must match https://code.googlesource.com/…/repo !\\n}") + end + else + explicitset("forgeurl", forgeurl) + safeset("archiveext", "tar.gz") + safeset("forgesetupargs", "-c") + if (commit ~= "") or (tag ~= "") then + safeset("scm", "git") + end + local repo = string.match(forgeurl, "^[^:]+://.+/([^/?#]+)") + if (tag ~= "") then + safeset("archivename", repo .. "-%{tag}") + safeset("archiveurl", "%{forgeurl}/+archive/%{tag}.%{archiveext}") + else + if (commit ~= "") then + safeset("archivename", repo .. "-%{commit}") + safeset("archiveurl", "%{forgeurl}/+archive/%{commit}.%{archiveext}") + else + safeset("archivename", repo .. "-v%{version}") + safeset("archiveurl", "%{forgeurl}/+archive/v%{version}.%{archiveext}") + end + end + end + end + if (forge == "bitbucket.org") then + forgeurl = string.match(forgeurl, "https://[^/]+/[^/]+/[^/#?]+") + if (forgeurl == nil) then + if not silent then + rpm.expand("%{error:BitBucket URLs must match https://bitbucket.org/owner/repo !\\n}") + end + else + explicitset("forgeurl", forgeurl) + if (commit == "") then + rpm.expand("%{error:All BitBucket URLs require commit value knowledge: you need to define %{commit}!\\n}") + end + local shortcommit = string.sub(commit, 1, 12) + safeset("archiveext", "tar.bz2") + -- Default to git even though BitBucket allows choosing between several SCMs + -- Set scm to hg for example before calling the macro if your project does not use git + safeset("scm", "git") + local owner = string.match(forgeurl, "^[^:]+://[^/]+/([^/]+)") + local repo = string.match(forgeurl, "^[^:]+://[^/]+/[^/]+/([^/]+)") + safeset("archivename", owner .. "-" .. repo .. "-" .. shortcommit) + safeset("forgesetupargs", "-n %{archivename}") + if (tag ~= "") then + safeset("archiveurl", "%{forgeurl}/get/%{tag}.%{archiveext}") + else + safeset("archiveurl", "%{forgeurl}/get/%{commit}.%{archiveext}") + end + end + end + if (forge == "pagure.io") then + if not silent then + rpm.expand("%{error:https://pagure.io/pagure/issue/861 needs to be resolved before the “pagure.io”\\nsoftware publishing service can be supported.\\n}") + end + end + -- Final tests to check forgeurl was successfuly parsed + if not silent then + if (rpm.expand("%{?archivename}") == "") or (rpm.expand("%{?archiveurl}") == "") then + rpm.expand("%{error:Automation for the “" .. forge .. "”\\nsoftware publishing service is not implemented yet.\\nPlease extend the %%forgemeta macro!\\n}") + end + end + end +end +-- Set defaults if forgeurl is missing or does not parse +local archivename = rpm.expand("%{?archivename}") +safeset("archiveext", "tar.gz") +if (archivename ~= "") then + safeset("forgesetupargs", "-n %{archivename}") +end +if (commit ~= "") or (tag ~= "") then + safeset("scm", "git") +end +-- Source URL processing (computing the forgesource spec variable) +local archiveurl = rpm.expand("%{?archiveurl}") +local archiveext = rpm.expand("%{?archiveext}") +if (archivename ~= "") and (archiveurl ~= "") then + if (string.match(archiveurl, "/([^/]+)$") == archivename .. "." .. archiveext) then + safeset("forgesource", "%{archiveurl}") + else + safeset("forgesource", "%{?archiveurl}#/%{?archivename}.%{archiveext}") + end +end +-- dist processing (computing the correct pefix for snapshots) +local distprefix = rpm.expand("%{?tag}") +local version = rpm.expand("%{?version}") +if (distprefix == version) or (distprefix == "v" .. version) then + distprefix = "" +end +if (distprefix == "") then + distprefix = string.sub(rpm.expand("%{?commit}"), 1, 7) +end +if (distprefix ~= "") then + local dist = ".%([ -r %{_sourcedir}/%{archivename}.%{archiveext} ] && date +%Y%m%d -u -r %{_sourcedir}/%{archivename}.%{archiveext})%{scm}" .. string.gsub(distprefix, "-",".") .. rpm.expand("%{?dist}") + explicitset("dist", dist) +end +-- Final spec variable summary if the macro was called with -i +if informative then + rpm.expand("%{echo:Forge-specific packaging variables\\n}") + rpm.expand("%{echo: forgeurl: %{?forgeurl}\\n}") + rpm.expand("%{echo: forgesource: %{?forgesource}\\n}") + rpm.expand("%{echo: forgesetupargs: %{?forgesetupargs}\\n}") + rpm.expand("%{echo:Generic variables\\n}") + rpm.expand("%{echo: archivename: %{?archivename}\\n}") + rpm.expand("%{echo: archiveext: %{?archiveext}\\n}") + rpm.expand("%{echo: archiveurl: %{?archiveurl}\\n}") + rpm.expand("%{echo: scm: %{?scm}\\n}") + rpm.expand("%{echo: tag: %{?tag}\\n}") + rpm.expand("%{echo: commit: %{?commit}\\n}") + rpm.expand("%{echo: dist: %{?dist} (snapshot date is computed once %%{_sourcedir}/%%{archivename}.%%{archiveext} is available)\\n}") +end +} + +# Convenience macro to relay computed arguments to %setup +%forgesetup(a:b:cDn:Tq) %setup %{?forgesetupargs} %{-a} %{-b} %{-c} %{-D} %{-n} %{-T} %{-q} + +# Convenience macro to relay computed arguments to %autosetup +%forgeautosetup(a:b:cDn:TvNS:p:) %autosetup %{?forgesetupargs} %{-a} %{-b} %{-c} %{-D} %{-n} %{-T} %{-v} %{-N} %{-S} %{-p} diff --git a/SOURCES/macros.kmp b/SOURCES/macros.kmp new file mode 100644 index 0000000..a765547 --- /dev/null +++ b/SOURCES/macros.kmp @@ -0,0 +1,97 @@ +# Use these macros to differentiate between RH and other KMP implementation(s). +%global redhat_kernel_module_package 1 +%global kernel_module_package_release 1 + +%global redhat_kmp_has_post_hooks 1 + +%__brp_kmod_set_exec_bit /usr/lib/rpm/redhat/brp-kmod-set-exec-bit +%__brp_kmod_restore_perms /usr/lib/rpm/redhat/brp-kmod-restore-perms + +%__kmod_brps_added 0 + +%__find_provides /usr/lib/rpm/redhat/find-provides +%__find_requires /usr/lib/rpm/redhat/find-requires + +#kernel_module_package [ -n name ] [ -v version ] [ -r release ] [ -s script ] +# [ -f filelist] [ -x ] [ -p preamble ] flavor flavor ... + +%kernel_module_package_buildreqs %global kmodtool_generate_buildreqs 1 \ + kernel-devel kernel-abi-whitelists redhat-rpm-config kernel-rpm-macros elfutils-libelf-devel kmod + +%kernel_module_package(n:v:r:s:f:xp:) %{expand:%( \ + ## An ugly hack: we want kmods to be processed by find-debuginfo, + ## but it processes only files with executable permission set. + ## It is important now since, as of now, if debuginfo package + ## is enabled (and it is enabled), there's an RPM build error + ## as a result of lack of ether absence or emptiness of + ## debugsourcefiles.list (which is likely a bug in RPM, but it looks + ## like that there's no obvious fix and apparently no one have + ## any issues with this). + ## In order to minimise intrusiveness, usually (in Red Hat-built kmod + ## RPMs) *.ko files just have executable permission being set as a part + ## of %build section. There are two caveats with kmp, however: + ## * We have no control over %build section itself (and it wasn't + ## required previously) + ## * Changing the criteria used in find-debuginfo.sh/brp-strip + ## for selecting files that have to undergo debug section separation + ## may introduce regression. + ## As a result, we insert additional hooks in __spec_install_post + ## (__brp_kmod_set_exec_bit in the beginning and + ## __brp_kmod_restore_perms in the end) that (temporarily) set + ## executable permission for *.ko files so find-debuginfo.sh will pick + ## them up. + ## Unfortunately, __spec_install_post's body is copied here since + ## we want that __debug_package macro expansion has been performed + ## lazily and it looks like RPM has no ability to provide a body + ## of a macro verbatim. + if [ 0 = "%{__kmod_brps_added}" ]; then \ + echo "%%global __spec_install_post \\\\" \ + echo " %%{?__brp_kmod_set_exec_bit} \\\\" \ + echo " %%%%{?__debug_package:%%%%{__debug_install_post}} \\\\" \ + echo " %%{__arch_install_post} \\\\" \ + echo " %%{__os_install_post} \\\\" \ + echo " %%{?__brp_kmod_pre_sign_process} \\\\" \ + echo " %%{?__brp_kmod_sign} \\\\" \ + echo " %%{?__brp_kmod_post_sign_process} \\\\" \ + echo " %%{?__brp_kmod_compress} \\\\" \ + echo " %%{?__brp_kmod_post_compress_process} \\\\" \ + echo " %%{?__brp_kmod_restore_perms} \\\\" \ + echo "%%{nil}" \ + fi \ + %global __kmod_brps_added 1 \ + %global kmodtool %{-s*}%{!-s:/usr/lib/rpm/redhat/kmodtool} \ + %global kmod_version %{-v*}%{!-v:%{version}} \ + %global kmod_release %{-r*}%{!-r:%{release}} \ + %global latest_kernel %({ rpm -q --qf '%%{VERSION}-%%{RELEASE}.%%{ARCH}\\\\n' `rpm -qa | egrep "^kernel(-rt|-aarch64)?-devel" | /usr/lib/rpm/redhat/rpmsort -r | head -n 1`; echo '%%%%{nil}'; } | head -n 1) \ + %{!?kernel_version:%{expand:%%global kernel_version %{latest_kernel}}} \ + %global kverrel %(%{kmodtool} verrel %{?kernel_version} 2>/dev/null) \ + flavors="default" \ + if [ -z "%*" ]; then \ + flavors_to_build=$flavors \ + elif [ -z "%{-x}" ]; then \ + flavors_to_build="%*" \ + else \ + flavors_to_build=" $flavors "\ + for i in %* \ + do \ + flavors_to_build=${flavors_to_build//$i /} + done \ + fi \ + echo "%%global flavors_to_build ${flavors_to_build:-%%nil}" \ + echo "%%global kernel_source() \\\$([ default = \"%%%%{1}\" ] && echo \"/usr/src/kernels//%%%%kverrel\" || %{kmodtool} kernel_source \"%%%%{kverrel}\" \"%%%%{1}\" 2>/dev/null || { ls -Ud \"/usr/src/kernels///%%%%{kverrel}\"[.+]\"%%%%{1}\" | sort -V | tail -n 1; } || echo \"/usr/src/kernels////%%%%kverrel.%%%%1\")" \ + echo "%%global kernel_module_package_moddir() extra" \ + if [ ! -z "%{-f*}" ] \ + then \ + filelist="%{-f*}" \ + fi \ + if [ ! -z "%{-p*}" ] \ + then \ + preamble="%{-p*}" \ + fi \ + nobuildreqs="yes" \ + if [ "x%{kmodtool_generate_buildreqs}" != "x1" ] \ + then \ + nobuildreqs="no" \ + fi \ + override_filelist="$filelist" override_preamble="$preamble" nobuildreqs="$nobuildreqs" kmod_version=%kmod_version kmod_release=%kmod_release %{kmodtool} rpmtemplate %{-n*}%{!-n:%name} %{kverrel} $flavors_to_build 2>/dev/null \ +)} diff --git a/SOURCES/macros.ldc-srpm b/SOURCES/macros.ldc-srpm new file mode 100644 index 0000000..5718d0c --- /dev/null +++ b/SOURCES/macros.ldc-srpm @@ -0,0 +1,2 @@ +# arches that ldc builds on +%ldc_arches %{ix86} x86_64 %{arm} %{power64} diff --git a/SOURCES/macros.ldconfig b/SOURCES/macros.ldconfig new file mode 100644 index 0000000..2e491db --- /dev/null +++ b/SOURCES/macros.ldconfig @@ -0,0 +1,9 @@ +#%ldconfig /sbin/ldconfig +%ldconfig_post(n:) %{?ldconfig:%post -p %ldconfig %{?*} %{-n:-n %{-n*}}\ +%end} +%ldconfig_postun(n:) %{?ldconfig:%postun -p %ldconfig %{?*} %{-n:-n %{-n*}}\ +%end} +%ldconfig_scriptlets(n:) %{?ldconfig:\ +%ldconfig_post %{?*} %{-n:-n %{-n*}}\ +%ldconfig_postun %{?*} %{-n:-n %{-n*}}\ +} diff --git a/SOURCES/macros.mono-srpm b/SOURCES/macros.mono-srpm new file mode 100644 index 0000000..c5862c8 --- /dev/null +++ b/SOURCES/macros.mono-srpm @@ -0,0 +1,5 @@ +# arches that mono builds on +%mono_arches %{ix86} x86_64 sparc sparcv9 ia64 %{arm} aarch64 alpha s390x ppc ppc64 ppc64le + +%_monodir %{_prefix}/lib/mono +%_monogacdir %{_monodir}/gac diff --git a/SOURCES/macros.nodejs-srpm b/SOURCES/macros.nodejs-srpm new file mode 100644 index 0000000..faf03a7 --- /dev/null +++ b/SOURCES/macros.nodejs-srpm @@ -0,0 +1,7 @@ +# nodejs_arches lists what arches Node.js and dependent packages run on. +# +# Enabling Node.js on other arches requires porting the V8 JavaScript JIT to +# those arches. Support for POWER and aarch64 arrived in nodejs v4. Support +# for s390x arrived in nodejs v6 + +%nodejs_arches %{ix86} x86_64 %{arm} aarch64 %{power64} s390x diff --git a/SOURCES/macros.valgrind-srpm b/SOURCES/macros.valgrind-srpm new file mode 100644 index 0000000..50b9828 --- /dev/null +++ b/SOURCES/macros.valgrind-srpm @@ -0,0 +1,3 @@ +# valgrind_arches lists what arches Valgrind works on + +%valgrind_arches %{ix86} x86_64 ppc ppc64 ppc64le armv7hl aarch64 s390x diff --git a/SOURCES/macros.vpath b/SOURCES/macros.vpath new file mode 100644 index 0000000..a37f1f9 --- /dev/null +++ b/SOURCES/macros.vpath @@ -0,0 +1,7 @@ +# ---- VPATH default settings + +# directory where CMakeLists.txt/meson.build/etc. are placed +%_vpath_srcdir . + +# directory (doesn't need to exist) where all generated build files will be placed +%_vpath_builddir %_target_platform diff --git a/SOURCES/modalias.prov b/SOURCES/modalias.prov new file mode 100644 index 0000000..c5eda32 --- /dev/null +++ b/SOURCES/modalias.prov @@ -0,0 +1,76 @@ +#! /bin/sh + +# heavily based upon find-suggests.ksyms by Andreas Gruenbacher <agruen@suse.de>. +# with modifications by Michael Brown <Michael_E_Brown@dell.com> +# +# -- added module versioning info to modalias() symbols +# -- removed code which inspects spec files. + +IFS=$'\n' + +# +# Initially, dont generate modalias() lines for kernel package. This needs +# additional discussion. Would like to eventually add them for +# completeness, so that we can determine when drivers are folded into +# mainline kernel. +# +case "$1" in +kernel-module-*) ;; # Fedora kernel module package names start with + # kernel-module. +kernel*) is_kernel_package=1 ;; +esac + +if ! [ -z "$is_kernel_package" ]; then + cat > /dev/null + exit 0 +fi + +print_modaliases() { + declare class=$1 variants=$2 pos=$3 + if [ -n "$variants" ]; then + echo "${class:0:pos}[$variants]${class:pos+1}" + else + [ -z "$class" ] || echo "$class" + fi +} + +combine_modaliases() { + declare tag class variants pos n + read class + while read tag; do + for ((n=0; n<${#class}; n++)); do + if [ "*" != "${class:n:1}" -a \ + "${class:0:n}" = "${tag:0:n}" -a \ + "${class:n+1}" = "${tag:n+1}" ] && + ( [ -z "$pos" ] || [ $n = $pos ] ); then + variants="${variants:-${class:n:1}}${tag:n:1}" + pos=$n + break + fi + done + if [ $n -eq ${#class} ]; then + print_modaliases "$class" "$variants" "$pos" + variants= + pos= + class=$tag + fi + done + print_modaliases "$class" "$variants" "$pos" +} + +for module in $(grep -E '/lib/modules/.+\.ko$') $*; do + # | head -n1 because some modules have *two* version tags. *cough*b44*cough* + modver=$(/sbin/modinfo -F version "$module"| head -n1) + modver=${modver// /_} + + # only add version tag if it has a version + if [ -n "$modver" ]; then + /sbin/modinfo -F alias "$module" \ + | sed -nre "s,(.+),modalias(\\1) = $modver,p" + else + /sbin/modinfo -F alias "$module" \ + | sed -nre "s,(.+),modalias(\\1),p" + fi +done \ +| sort -u \ +| combine_modaliases diff --git a/SOURCES/redhat-annobin-cc1 b/SOURCES/redhat-annobin-cc1 new file mode 100644 index 0000000..edb8245 --- /dev/null +++ b/SOURCES/redhat-annobin-cc1 @@ -0,0 +1,2 @@ +*cc1_options: ++ %{!-fno-use-annobin:%{!iplugindir*:%:find-plugindir()} -fplugin=annobin} diff --git a/SOURCES/redhat-hardened-cc1 b/SOURCES/redhat-hardened-cc1 new file mode 100644 index 0000000..fc54bcb --- /dev/null +++ b/SOURCES/redhat-hardened-cc1 @@ -0,0 +1,2 @@ +*cc1_options: ++ %{!r:%{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}} diff --git a/SOURCES/redhat-hardened-ld b/SOURCES/redhat-hardened-ld new file mode 100644 index 0000000..bd6b907 --- /dev/null +++ b/SOURCES/redhat-hardened-ld @@ -0,0 +1,2 @@ +*self_spec: ++ %{!static:%{!shared:%{!r:-pie}}} diff --git a/SOURCES/rpmrc b/SOURCES/rpmrc new file mode 100644 index 0000000..264f90f --- /dev/null +++ b/SOURCES/rpmrc @@ -0,0 +1,97 @@ +include: /usr/lib/rpm/rpmrc + +optflags: i386 %{__global_compiler_flags} -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection +optflags: i486 %{__global_compiler_flags} -m32 -march=i486 -fasynchronous-unwind-tables -fstack-clash-protection +optflags: i586 %{__global_compiler_flags} -m32 -march=i586 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection +optflags: i686 %{__global_compiler_flags} -m32 -march=x86-64 -mtune=generic -mfpmath=sse -mstackrealign -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection +optflags: athlon %{__global_compiler_flags} -m32 -march=athlon -fasynchronous-unwind-tables -fstack-clash-protection +optflags: ia64 %{__global_compiler_flags} +optflags: x86_64 %{__global_compiler_flags} -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection + +optflags: alpha %{__global_compiler_flags} -mieee +optflags: alphaev5 %{__global_compiler_flags} -mieee -mcpu=ev5 +optflags: alphaev56 %{__global_compiler_flags} -mieee -mcpu=ev56 +optflags: alphapca56 %{__global_compiler_flags} -mieee -mcpu=pca56 +optflags: alphaev6 %{__global_compiler_flags} -mieee -mcpu=ev6 +optflags: alphaev67 %{__global_compiler_flags} -mieee -mcpu=ev67 + +optflags: sparc %{__global_compiler_flags} -m32 -mcpu=v7 -mtune=ultrasparc +optflags: sparcv8 %{__global_compiler_flags} -m32 -mcpu=v8 +optflags: sparcv9 %{__global_compiler_flags} -m32 -mcpu=ultrasparc +optflags: sparcv9v %{__global_compiler_flags} -m32 -mcpu=niagara +optflags: sparc64 %{__global_compiler_flags} -m64 -mcpu=ultrasparc +optflags: sparc64v %{__global_compiler_flags} -m64 -mcpu=niagara + +optflags: m68k %{__global_compiler_flags} + +optflags: ppc %{__global_compiler_flags} -m32 -funwind-tables +optflags: ppciseries %{__global_compiler_flags} -m32 +optflags: ppcpseries %{__global_compiler_flags} -m32 +optflags: ppc64 %{__global_compiler_flags} -m64 -funwind-tables -fstack-clash-protection +optflags: ppc64p7 %{__global_compiler_flags} -m64 -O3 -mcpu=power7 -mtune=power7 -funwind-tables -fstack-clash-protection +optflags: ppc64le %{__global_compiler_flags} -m64 -mcpu=power8 -mtune=power8 -funwind-tables -fstack-clash-protection +optflags: ppc64iseries %{__global_compiler_flags} -m64 +optflags: ppc64pseries %{__global_compiler_flags} -m64 +optflags: ppc8260 %{__global_compiler_flags} -m32 +optflags: ppc8560 %{__global_compiler_flags} -m32 + +optflags: parisc %{__global_compiler_flags} -mpa-risc-1-0 +optflags: hppa1.0 %{__global_compiler_flags} -mpa-risc-1-0 +optflags: hppa1.1 %{__global_compiler_flags} -mpa-risc-1-0 +optflags: hppa1.2 %{__global_compiler_flags} -mpa-risc-1-0 +optflags: hppa2.0 %{__global_compiler_flags} -mpa-risc-1-0 + +optflags: mips %{__global_compiler_flags} -march=mips32r2 -mfpxx +optflags: mipsel %{__global_compiler_flags} -march=mips32r2 -mfpxx +optflags: mips64 %{__global_compiler_flags} -march=mips64r2 -mabi=64 +optflags: mips64el %{__global_compiler_flags} -march=mips64r2 -mabi=64 +optflags: mipsr6 %{__global_compiler_flags} -march=mips32r6 +optflags: mipsr6el %{__global_compiler_flags} -march=mips32r6 +optflags: mips64r6 %{__global_compiler_flags} -march=mips64r6 +optflags: mips64r6el %{__global_compiler_flags} -march=mips64r6 + +optflags: armv3l %{__global_compiler_flags} -fsigned-char -march=armv3 +optflags: armv4b %{__global_compiler_flags} -fsigned-char -march=armv4 +optflags: armv4l %{__global_compiler_flags} -fsigned-char -march=armv4 +optflags: armv4tl %{__global_compiler_flags} -march=armv4t +optflags: armv5tel %{__global_compiler_flags} -march=armv5te -mfloat-abi=soft +optflags: armv5tejl %{__global_compiler_flags} -march=armv5te -mfloat-abi=soft +optflags: armv6l %{__global_compiler_flags} -march=armv6 -mfloat-abi=soft +optflags: armv6hl %{__global_compiler_flags} -march=armv6 -mfpu=vfp -mfloat-abi=hard +optflags: armv6hnl %{__global_compiler_flags} -march=armv6 -mfpu=neon -mfloat-abi=hard +optflags: armv7l %{__global_compiler_flags} -march=armv7-a -mfloat-abi=soft +optflags: armv7hl %{__global_compiler_flags} -march=armv7-a -mfpu=vfpv3-d16 -mtune=generic-armv7-a -mabi=aapcs-linux -mfloat-abi=hard +optflags: armv7hnl %{__global_compiler_flags} -march=armv7-a -mfpu=neon -mfloat-abi=hard + +optflags: atarist %{__global_compiler_flags} +optflags: atariste %{__global_compiler_flags} +optflags: ataritt %{__global_compiler_flags} +optflags: falcon %{__global_compiler_flags} +optflags: atariclone %{__global_compiler_flags} +optflags: milan %{__global_compiler_flags} +optflags: hades %{__global_compiler_flags} + +optflags: s390 %{__global_compiler_flags} -m31 -march=z13 -mtune=z14 -fasynchronous-unwind-tables +optflags: s390x %{__global_compiler_flags} -m64 -march=z13 -mtune=z14 -fasynchronous-unwind-tables -fstack-clash-protection + +optflags: aarch64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection + +optflags: riscv64 %{__global_compiler_flags} + +# set build arch to fedora buildarches on hardware capable of running it +# saves having to do rpmbuild --target= +buildarchtranslate: athlon: i686 +buildarchtranslate: geode: i686 +buildarchtranslate: pentium4: i686 +buildarchtranslate: pentium3: i686 +buildarchtranslate: i686: i686 +buildarchtranslate: i586: i586 + +buildarchtranslate: sparcv9: sparcv9 +buildarchtranslate: sparcv9v: sparcv9 + +buildarchtranslate: armv5tejl: armv5tel +buildarchtranslate: armv6l: armv5tel +buildarchtranslate: armv7l: armv5tel +buildarchtranslate: armv7hl: armv7hl +buildarchtranslate: armv7hnl: armv7hl diff --git a/SOURCES/rpmsort b/SOURCES/rpmsort new file mode 100755 index 0000000..c8ae298 --- /dev/null +++ b/SOURCES/rpmsort @@ -0,0 +1,76 @@ +#! /usr/bin/perl -w + +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. + +use Getopt::Long qw(:config gnu_getopt); + +sub rpm_cmp_versions { + my ($evr1, $evr2) = @_; + + sub _rpm_cmp { + my ($s1, $s2) = @_; + + return defined $s1 <=> defined $s2 + unless defined $s1 && defined $s2; + + my ($r, $x1, $x2); + do { + $s1 =~ s/^[^a-zA-Z0-9]+//; + $s2 =~ s/^[^a-zA-Z0-9]+//; + if ($s1 =~ /^\d/ || $s2 =~ /^\d/) { + $s1 =~ s/^0*(\d*)//; $x1 = $1; + $s2 =~ s/^0*(\d*)//; $x2 = $1; + $r = length $x1 <=> length $x2 || $x1 cmp $x2; + } else { + $s1 =~ s/^([a-zA-Z]*)//; $x1 = $1; + $s2 =~ s/^([a-zA-Z]*)//; $x2 = $1; + return 0 + if $x1 eq '' && $x2 eq ''; + $r = $x1 cmp $x2; + } + } until $r; + return $r; + } + + my ($e1, $v1, $r1) = $evr1 =~ /^(?:(\d*):)?(.*?)(?:-([^-]*))?$/; + my ($e2, $v2, $r2) = $evr2 =~ /^(?:(\d*):)?(.*?)(?:-([^-]*))?$/; + my $r = _rpm_cmp($e1 || 0, $e2 || 0); + $r = _rpm_cmp($v1, $v2) + unless $r; + $r = _rpm_cmp($r1, $r2) + unless $r; + return $r; +} + +my $reorder = sub { return @_ }; +my $key = 0; + +GetOptions ("r|reverse" => sub { $reorder = sub { return reverse @_ } }, + "k|key=i" => \$key) +or do { + print STDERR "Usage\n"; + exit 1; +}; + +if ($key == 0) { + # Sort by entire lines + map { print } &$reorder(sort { rpm_cmp_versions($a, $b) } <>); +} else { + # Sort by field $key + my @data = map { [(split)[$key-1], $_] } <>; + map { print } &$reorder(map { $_->[1] } + sort { rpm_cmp_versions($a->[0], $b->[0]) } @data); +} diff --git a/SOURCES/symset-table b/SOURCES/symset-table new file mode 100755 index 0000000..acc00c3 --- /dev/null +++ b/SOURCES/symset-table @@ -0,0 +1,40 @@ +#! /bin/sh + +# Create a table of all symbol sets defined in all /boot/symsets*.tar.gz +# files. +# +# Format: +# kernelrelease/modver/symbol <tab> symset <tab> symset_hash +# +# This table is needed for computing the appropriate Requires: tags for +# kernel module packages. + +tmpdir=$(mktemp -t -d ${0##*/}.XXXXXX) +trap "cd / ; rm -rf $tmpdir" EXIT +cd $tmpdir + +shopt -s nullglob +for symsets in /boot/symsets-*.tar.gz; do + zcat $symsets \ + | tar xf - +done + +for symsets in /usr/src/kernels/*/symsets-*.tar.gz; do + zcat $symsets \ + | tar xf - +done + +for symsets in *; do + krel=${symsets#symsets-} + for symset in $symsets/*; do + class=${symset##*/} ; class=${class%.*} + hash=${symset##*.} + awk ' + BEGIN { FS = "\t" ; OFS = "\t" } + { sub(/0x0*/, "", $1) + print krel "/" $1 "/" $2, class, hash } + ' krel="$krel" class="$class" hash="$hash" $symset + done +done + +# vim:shiftwidth=4 softtabstop=4 diff --git a/SPECS/redhat-rpm-config.spec b/SPECS/redhat-rpm-config.spec new file mode 100644 index 0000000..4bec78e --- /dev/null +++ b/SPECS/redhat-rpm-config.spec @@ -0,0 +1,1120 @@ +# TO WHOM IT MAY CONCERN +# +# 1) Don't add patches, dist-git is the upstream repository for this package. +# 2) When making changes, update version by +1, leave release alone. +# + +Summary: Red Hat specific rpm configuration files +Name: redhat-rpm-config +Version: 122 +Release: 1%{?dist} +# No version specified. +License: GPL+ +Group: Development/System +URL: https://src.fedoraproject.org/rpms/redhat-rpm-config + +# Core rpm settings +Source0: macros +Source1: rpmrc + +# kabi provides generator +Source20: kabi.attr +Source21: kabi.sh + +# gcc specs files for hardened builds +Source50: redhat-hardened-cc1 +Source51: redhat-hardened-ld + +# gcc specs files for annobin builds +Source52: redhat-annobin-cc1 + +# The macros defined by these files are for things that need to be defined +# at srpm creation time when it is not feasible to require the base packages +# that would otherwise be providing the macros. other language/arch specific +# macros should not be defined here but instead in the base packages that can +# be pulled in at rpm build time, this is specific for srpm creation. +Source100: macros.fedora-misc-srpm +Source102: macros.mono-srpm +Source103: macros.nodejs-srpm +Source104: macros.ldc-srpm +Source105: macros.valgrind-srpm + +# Other misc macros +Source150: macros.dwz +Source151: macros.kmp +Source152: macros.vpath +Source153: macros.forge +Source154: macros.ldconfig + +# Build policy scripts +# this comes from https://github.com/rpm-software-management/rpm/pull/344 +# added a python -> python2 conversion for fedora with warning +# and an echo when the mangling happens +Source201: brp-mangle-shebangs + +# Dependency generator scripts (deprecated) +Source300: find-provides +Source301: find-provides.ksyms +Source304: find-requires +Source305: find-requires.ksyms +Source308: firmware.prov +Source309: modalias.prov + +# Misc helper scripts +Source400: dist.sh +Source401: rpmsort +Source402: symset-table +Source403: kmodtool + +# 2016-10-02 snapshots from http://git.savannah.gnu.org/gitweb/?p=config.git +Source500: config.guess +Source501: config.sub + +# Dependency generators & their rules +Source600: kmod.attr +Source601: kmod.prov +Source602: libsymlink.attr + +# BRPs +Source700: brp-ldconfig +Source701: brp-kmod-set-exec-bit +Source702: brp-kmod-restore-perms + +# Documentation +Source900: buildflags.md + +BuildArch: noarch +BuildRequires: perl-generators +Requires: coreutils + +Requires: efi-srpm-macros +Requires: ghc-srpm-macros +Requires: go-srpm-macros +Requires: ocaml-srpm-macros +Requires: openblas-srpm-macros +Requires: perl-srpm-macros +Requires: python-srpm-macros +Requires: python3-rpm-macros +Requires: rust-srpm-macros +Requires: qt5-srpm-macros + +Requires: rpm >= 4.11.0 +Requires: dwz >= 0.4 +Requires: zip +Requires: (annobin if gcc) + +# for brp-mangle-shebangs +Requires: %{_bindir}/find +Requires: %{_bindir}/file +Requires: %{_bindir}/grep +Requires: %{_bindir}/sed +Requires: %{_bindir}/xargs + +# -fstack-clash-protection and -fcf-protection require GCC 8. +Conflicts: gcc < 8 + +Provides: system-rpm-config = %{version}-%{release} + +%global rrcdir /usr/lib/rpm/redhat + +%description +Red Hat specific rpm configuration files. + +%package -n kernel-rpm-macros +Summary: Macros and scripts for building kernel module packages. +Requires: redhat-rpm-config >= 13 + +# for brp-kmod-set-exec-bit +Requires: %{_bindir}/find + +%description -n kernel-rpm-macros +Macros and scripts for building kernel module packages. + +%prep +# Not strictly necessary but allows working on file names instead +# of source numbers in install section +%setup -c -T +cp -p %{sources} . + +%install +mkdir -p %{buildroot}%{rrcdir} +install -p -m 644 -t %{buildroot}%{rrcdir} macros rpmrc +install -p -m 444 -t %{buildroot}%{rrcdir} redhat-hardened-* +install -p -m 444 -t %{buildroot}%{rrcdir} redhat-annobin-* +install -p -m 755 -t %{buildroot}%{rrcdir} config.* +install -p -m 755 -t %{buildroot}%{rrcdir} dist.sh rpmsort symset-table kmodtool +install -p -m 755 -t %{buildroot}%{rrcdir} brp-* + +install -p -m 755 -t %{buildroot}%{rrcdir} find-* +mkdir -p %{buildroot}%{rrcdir}/find-provides.d +install -p -m 755 -t %{buildroot}%{rrcdir}/find-provides.d firmware.prov modalias.prov + +install -p -m 755 -t %{buildroot}%{rrcdir} brp-* + +mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d +install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d macros.* + +mkdir -p %{buildroot}%{_fileattrsdir} +install -p -m 644 -t %{buildroot}%{_fileattrsdir} *.attr +install -p -m 755 -t %{buildroot}%{_rpmconfigdir} kmod.prov + +install -p -m 644 %{SOURCE20} %{buildroot}%{_fileattrsdir}/kabi.attr +install -p -m 755 %{SOURCE21} %{buildroot}%{_rpmconfigdir}/kabi.sh + +%files +%dir %{rrcdir} +%{rrcdir}/macros +%{rrcdir}/rpmrc +%{rrcdir}/brp-mangle-shebangs +%{rrcdir}/brp-ldconfig +%{rrcdir}/dist.sh +%{rrcdir}/redhat-hardened-* +%{rrcdir}/redhat-annobin-* +%{rrcdir}/config.* +%{rrcdir}/find-provides +%{rrcdir}/find-requires +%{rrcdir}/brp-ldconfig +%{_fileattrsdir}/*.attr +%{_rpmconfigdir}/kmod.prov +%{_rpmconfigdir}/macros.d/macros.*-srpm +%{_rpmconfigdir}/macros.d/macros.dwz +%{_rpmconfigdir}/macros.d/macros.forge +%{_rpmconfigdir}/macros.d/macros.ldconfig +%{_rpmconfigdir}/macros.d/macros.vpath +%{_rpmconfigdir}/kabi.sh +%doc buildflags.md + +%files -n kernel-rpm-macros +%dir %{rrcdir}/find-provides.d +%{rrcdir}/brp-kmod-set-exec-bit +%{rrcdir}/brp-kmod-restore-perms +%{rrcdir}/kmodtool +%{rrcdir}/rpmsort +%{rrcdir}/symset-table +%{rrcdir}/find-provides.ksyms +%{rrcdir}/find-requires.ksyms +%{rrcdir}/find-provides.d/firmware.prov +%{rrcdir}/find-provides.d/modalias.prov +%{_rpmconfigdir}/macros.d/macros.kmp + +%changelog +* Mon Feb 24 2020 Michal Domonkos <mdomonko@redhat.com> - 122-1 +- Fix argument shift in %%__brp_python_bytecompile (#1724567) + +* Tue Nov 26 2019 Eugene Syromiatnikov <esyr@redhat.com> - 121-1 +- macros.kmp: add post-install hooks for kmod processing (#1664478, #1673200) + +* Thu Jul 04 2019 Florian Festi <ffesti@redhat.com> - 120-1 +- Fix permission for various build scripts (#1719363) + +* Tue Jun 04 2019 Florian Festi <ffesti@redhat.com> - 119-1 +- Remove -eu param from shell scripts (#1686413) + +* Mon May 20 2019 Florian Weimer <fweimer@redhat.com> - 118-1 +- Build flags: Add support for extension builders (#1661186) + +* Wed Apr 17 2019 Panu Matilainen <pmatilai@redhat.com> - 117-1 +- Add s390x to valgrind supported architectures (#1659106) + +* Wed Feb 06 2019 Eugene Syromiatnikov <esyr@redhat.com> - 116-1 +- Forward-port RHEL-specific kmodtool/macros.kmp changes from RHEL 7, + update kmodtool script for RHEL 8 (#1658414, #1666162) + +* Sat Sep 15 2018 Eugene Syromiatnikov <esyr@redhat.com> - 115-1 +- Revert back to usage of join in find-requires.ksym:mod_requires() + as generated "Requires:" and "Provides:" lists have different format + and unsuitable for processing with comm (#1622016) + +* Fri Aug 24 2018 Eugene Syromiatnikov <esyr@redhat.com> - 114-1 +- Add support for compressed kernel modules to find-provides, + find-provides.ksyms, find-requires, find-requires.ksyms, firmware.prov + (#1622019) + +* Mon Aug 20 2018 Eugene Syromiatnikov <esyr@redhat.com> - 113-1 +- Fix generation for kernel module symbol version dependencies for the case + when module depends on the symbol with the same name as one present in kernel + but a different version (#1622016) + +* Mon Aug 13 2018 Eugene Syromiatnikov <esyr@redhat.com> - 112-1 +- Re-instantiate support for old symvers path (#1571186) + +* Mon Aug 13 2018 Eugene Syromiatnikov <esyr@redhat.com> - 111-1 +- Add dependency generator for kABI provides (#1571186) + +* Thu Aug 9 2018 Marek Polacek <polacek@redhat.com> - 110-1 +- Use -march=z13 -mtune=z14 for s390{,x} (#1573944) +- Drop s390x from %%{valgrind_arches} + +* Mon Jul 23 2018 Peter Jones <pjones@redhat.com> - 109-1 +- Add Requires: efi-srpm-macros for %%{efi} +- brp-mangle-shebangs: add %%{__brp_mangle_shebangs_exclude_file} and + %%{__brp_mangle_shebangs_exclude_from_file} to allow you to specify files + containing the shebangs to be ignore and files to be ignored regexps, + respectively, so that they can be generated during the package build. + +* Mon Jul 09 2018 Tomas Orsava <torsava@redhat.com> - 108-1 +- Impement changing python3 shebangs in brp-mangle-shebangs +- Added a dependency on python3-rpm-macros + +* Tue Jul 03 2018 Tomas Orsava <torsava@redhat.com> - 107.3-3.1 +- Bump release + +* Thu Jun 28 2018 Tomas Orsava <torsava@redhat.com> - 107.3-3 +- The brp-python-bytecompile script no longer accepts two arguments, as the + first argument has been obsoleted +- Modified the definition of %%__brp_python_bytecompile to match the new scheme + +* Thu Jun 28 2018 Florian Festi <ffesti@redhat.com> - 107.3-2 +- Replace find-provides.ksyms and find-requires.ksyms by RHEL 7.6 versions (#1571186) + +* Thu Jun 07 2018 Florian Festi <ffesti@redhat.com> - 107.3-1 +- Remove dependencies to fpc-srpm-macros, gnat-srpm-macros and nim-srpm-macros + +* Fri Jun 1 2018 Florian Weimer <fweimer@redhat.com> - 107.2-1 +- i686: Build with -mstackrealign (#1478332) +- Update documentation for i686 build flags (#1554855) + +* Fri May 4 2018 Florian Weimer <fweimer@redhat.com> - 107.1-1 +- Use plain -fcf-protection compiler flag, without -mcet (#1574937) + +* Fri Apr 20 2018 Jason L Tibbitts III <tibbs@math.uh.edu> - 107-1 +- Add %%_metainfodir macro. +- %%forgeautosetup tweak to fix patch application. + +* Mon Mar 05 2018 Jason L Tibbitts III <tibbs@math.uh.edu> - 106-1 +- Update forge macros. + +* Wed Feb 28 2018 Florian Weimer <fweimer@redhat.com> - 105-1 +- Make -fasynchronous-unwind-tables explicit on aarch64 (#1536431) + +* Wed Feb 28 2018 Florian Weimer <fweimer@redhat.com> - 104-1 +- Use -funwind-tables on POWER (#1536431, #1548847) + +* Sun Feb 25 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 103-1 +- Make %%ldconfig_post/%%ldconfig_postun parameterized + +* Sat Feb 24 2018 Florian Weimer <fweimer@redhat.com> - 102-1 +- Second step of -z now move: removal from GCC specs file (#1548397) + +* Sat Feb 24 2018 Florian Weimer <fweimer@redhat.com> - 101-1 +- First step of moving -z now to the gcc command line (#1548397) + +* Thu Feb 22 2018 Miro Hrončok <mhroncok@redhat.com> - 100-1 +- Don't mangle shebangs with whitespace only changes (#1546993) + +* Thu Feb 22 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 99-1 +- Move %%end to %%ldconfig_scriptlets + +* Sat Feb 17 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 98-1 +- Explicitly close scriptlets with %%end (ldconfig) + +* Wed Feb 14 2018 Miro Hrončok <mhroncok@redhat.com> - 97-1 +- Allow to opt-out from shebang mangling for specific paths/shebangs + +* Thu Feb 08 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 96-1 +- Simplify/Fix check for shebang starting with "/" + +* Wed Feb 07 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 95-1 +- Fix mangling env shebangs with absolute paths + +* Sun Feb 4 2018 Florian Weimer <fweimer@redhat.com> - 94-1 +- Add RPM macros for compiler/linker flags + +* Sat Feb 03 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 93-1 +- Use newly available /usr/bin/grep + +* Wed Jan 31 2018 Peter Robinson <pbrobinson@fedoraproject.org> 92-1 +- Use generic tuning for ARMv7 + +* Tue Jan 30 2018 Jason L Tibbitts III <tibbs@math.uh.edu> - 91-1 +- The grep package only provides /bin/grep, not /usr/bin/grep. + +* Mon Jan 29 2018 Miro Hrončok <mhroncok@redhat.com> - 90-1 +- Add brp-mangle-shebangs + +* Mon Jan 29 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 89-1 +- Add macros.ldconfig + +* Mon Jan 29 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 88-1 +- Create DSO symlinks automatically + +* Mon Jan 29 2018 Florian Weimer <fweimer@redhat.com> - 87-1 +- Build flags: Disable -z defs again (#1535422) + +* Mon Jan 29 2018 Florian Weimer <fweimer@redhat.com> - 86-1 +- Build flags: Enable CET on i686, x86_64 (#1538725) + +* Thu Jan 25 2018 Florian Weimer <fweimer@redhat.com> - 85-1 +- Build flags: Switch to generic tuning on i686 (#1538693) + +* Mon Jan 22 2018 Florian Weimer <fweimer@redhat.com> - 84-1 +- Link with -z defs by default (#1535422) + +* Mon Jan 22 2018 Florian Weimer <fweimer@redhat.com> - 83-1 +- Make armhfp flags consistent with GCC defaults + +* Mon Jan 22 2018 Florian Weimer <fweimer@redhat.com> - 82-1 +- Make use of -fasynchronous-unwind-tables more explicit (#1536431) + +* Mon Jan 22 2018 Florian Weimer <fweimer@redhat.com> - 81-1 +- Remove --param=ssp-buffer-size=4 + +* Mon Jan 22 2018 Florian Weimer <fweimer@redhat.com> - 80-1 +- Document build flags + +* Fri Jan 19 2018 Panu Matilainen <pmatilai@redhat.com> - 79-1 +- Document how to disable hardened and annotated build (#1211296) + +* Wed Jan 17 2018 Panu Matilainen <pmatilai@redhat.com> - 78-1 +- Fix the inevitable embarrassing typo in 77, doh + +* Wed Jan 17 2018 Panu Matilainen <pmatilai@redhat.com> - 77-1 +- Macroize build root policies for consistent disable/override ability + +* Wed Jan 17 2018 Florian Weimer <fweimer@redhat.com> - 76-1 +- Add -fstack-clash-protection for supported architectures (#1515865) + +* Wed Jan 17 2018 Florian Weimer <fweimer@redhat.com> - 75-1 +- Add _GLIBCXX_ASSERTIONS to CFLAGS/CXXFLAGS (#1515858) + +* Mon Jan 15 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 74-1 +- Remove Requires: cmake-rpm-macros + +* Thu Jan 11 2018 Jason L Tibbitts III <tibbs@math.uh.edu> - 73-1 +- Add macros.forge for simplifying packaging of forge-hosted packages. See + https://fedoraproject.org/wiki/Forge-hosted_projects_packaging_automation and + https://bugzilla.redhat.com/show_bug.cgi?id=1523779 + +* Wed Jan 03 2018 Sergey Avseyev <sergey.avseyev@gmail.com> - 72-1 +- Add Requires: nim-srpm-macros for %%nim_arches + +* Tue Jan 02 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 71-1 +- Require annobin only if gcc is installed + +* Thu Dec 21 2017 Björn Esser <besser82@fedoraproject.org> - 70-2 +- Add Requires: cmake-rpm-macros for CMake auto-{provides,requires} (#1498894) + +* Fri Dec 08 2017 Panu Matilainen <pmatilai@redhat.com> - 70-1 +- Update URL to current location at src.fedoraproject.org + +* Wed Nov 22 2017 Nick Clifton <nickc@redhat.com> - 69-1 +- Enable binary annotations in compiler flags + +* Thu Oct 26 2017 Troy Dawson <tdawson@redhat.com> - 68-1 +- Remove Requires: fedora-rpm-macros + +* Mon Jul 31 2017 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 67-1 +- Define _include_gdb_index (RHBZ #1476722) +- Move _debuginfo_subpackages and _debugsource_packages from rpm (RHBZ #1476735) + +* Tue Jul 18 2017 Florian Festi <ffesti@redhat.com> - 66-1 +- Honor %%kmodtool_generate_buildreqs (#1472201) + +* Thu Jul 13 2017 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 65-1 +- Add Requires: rust-srpm-macros for %%rust_arches + +* Wed Mar 15 2017 Orion Poplawski <orion@cora.nwra.com> - 64-1 +- Add Requires: openblas-srpm-macros for %%openblas_arches + +* Thu Feb 02 2017 Dan Horák <dan[at]danny.cz> - 63-1 +- set zEC12 as minimum architecture level for s390(x) (#1404991) + +* Thu Dec 15 2016 Jason L Tibbitts III <tibbs@math.uh.edu> - 62-1 +- Add macros.vpath (https://fedorahosted.org/fpc/attachment/ticket/655) + +* Tue Dec 06 2016 Adam Williamson <awilliam@redhat.com> - 61-1 +- revert changes from 60, they break far too much stuff (#1401231) + +* Wed Nov 30 2016 Panu Matilainen <pmatilai@redhat.com> - 60-1 +- Error on implicit function declaration and -return type for C (#1393492) + +* Wed Nov 30 2016 Panu Matilainen <pmatilai@redhat.com> - 59-1 +- Move global compiler flags to __global_compiler_flags macro +- Introduce separate __global_fooflags for C, C++ and Fortran + +* Tue Nov 29 2016 Panu Matilainen <pmatilai@redhat.com> - 58-1 +- Drop atom optimization on i686 (#1393492) + +* Tue Nov 15 2016 Dan Horák <dan[at]danny.cz> - 57-1 +- set z10 as minimum architecture level for s390(x) + +* Fri Nov 11 2016 Panu Matilainen <pmatilai@redhat.com> - 56-1 +- Fix directory name mismatch in kernel_source macro (#648996) + +* Tue Nov 08 2016 Michal Toman <mtoman@fedoraproject.org> - 55-1 +- Add default compiler flags for various MIPS architectures (#1366735) + +* Tue Nov 08 2016 Panu Matilainen <pmatilai@redhat.com> - 54-1 +- -pie is incompatible with static linkage (#1343892, #1287743) + +* Mon Nov 07 2016 Panu Matilainen <pmatilai@redhat.com> - 53-1 +- Drop brp-java-repack-jars by request (#1235770) +- Drop brp-implant-ident-static, unused for 13 years and counting + +* Mon Nov 07 2016 Lubomir Rintel <lkundrak@v3.sk> - 52-1 +- Add valgrind_arches macro for BuildRequires of valgrind + +* Fri Nov 04 2016 Stephen Gallagher <sgallagh@redhat.com> - 51-1 +- Add s390x build target for Node.js packages + +* Mon Oct 31 2016 Kalev Lember <klember@redhat.com> - 50-1 +- Add ldc_arches macro + +* Mon Oct 17 2016 Jason L Tibbitts III <tibbs@math.uh.edu> - 49-1 +- Remove hardcoded limit of 16 CPUs for makefile parallelism. +- See https://bugzilla.redhat.com/show_bug.cgi?id=1384938 + +* Thu Oct 13 2016 Richard W.M. Jones <rjones@redhat.com> 48-1 +- Add support for riscv64. + This also updates config.sub/config.guess to the latest upstream versions. + +* Wed Oct 12 2016 Peter Robinson <pbrobinson@fedoraproject.org> 47-1 +- Enable aarch64 for mono arches + +* Mon Oct 03 2016 Jason L Tibbitts III <tibbs@math.uh.edu> - 46-1 +- Allow %%configure to optionally pass --disable-silent-rules. Define + %%_configure_disable_silent_rules (defaulting to 0) to control this. + +* Wed Sep 14 2016 Jason L Tibbitts III <tibbs@math.uh.edu> - 45-1 +- Add dependency on qt5-srpm-macros. + +* Fri Aug 12 2016 Jason L Tibbitts III <tibbs@math.uh.edu> - 44-1 +- And somehow I managed to make a typo in that dependency. + +* Fri Aug 12 2016 Jason L Tibbitts III <tibbs@math.uh.edu> - 43-1 +- Add dependency on fedora-rpm-macros. + +* Tue Apr 12 2016 Jason L Tibbitts III <tibbs@math.uh.edu> - 42-1 +- Add dependency on fpc-srpm-macros. + +* Mon Apr 11 2016 Jason L Tibbitts III <tibbs@math.uh.edu> - 41-1 +- Add a file for miscellaneous macros, currently containing just %%rpmmacrodir. + +* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 40-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Feb 02 2016 Dan Horák <dan[at]danny.cz> 40-1 +- switch to -mcpu=power8 for ppc64le default compiler flags + +* Wed Jan 13 2016 Orion Poplawski <orion@cora.nwra.com> 39-1 +- Add Requires: python-srpm-macros + +* Fri Jan 8 2016 Peter Robinson <pbrobinson@fedoraproject.org> 38-1 +- Add missing ARMv6 optflags + +* Wed Dec 2 2015 Peter Robinson <pbrobinson@fedoraproject.org> 37-1 +- nodejs 4+ now supports aarch64 and power64 + +* Fri Jul 17 2015 Florian Festi <ffesti@redhat.com> 36-1 +- Add Requires: go-srpm-macros (#1243922) + +* Thu Jul 09 2015 Sandro Mani <manisandro@gmail.com> 35-1 +- Use %%__libsymlink_path instead of %%__libsymlink_exclude_path in libsymlink.attr + +* Wed Jul 08 2015 Adam Jackson <ajax@redhat.com> 34-1 +- Fix cc1 specs mishandling of incremental linking + +* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 33-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri Jun 05 2015 Dan Horák <dan[at]danny.cz> 33-1 +- Mono 4 adds support for ppc64le + +* Fri May 29 2015 Florian Festi <ffesti@redhat.com> 32-1 +- Support out of source builds for %%_configure_gnuconfig_hack (#1191788) +- Fix typo in %%kernel_module_package (#1159361) + +* Tue May 19 2015 Florian Festi <ffesti@redhat.com> 31-1 +- Add %%py_auto_byte_compile macro controlling Python bytecompilation +(#976651) + +* Wed Apr 29 2015 Florian Festi <ffesti@redhat.com> 30-1 +- Fix libsymlink.attr for new magic pattern for symlinks (#1207945) + +* Wed Apr 08 2015 Adam Jackson <ajax@redhat.com> 29-1 +- Fix ld specs mishandling of incremental linking + +* Thu Feb 19 2015 Till Maas <opensource@till.name> - 28-1 +- Enable harden flags by default (#1192183) + +* Wed Dec 10 2014 Dan Horák <dan[at]danny.cz> - 27-1 +- Explicitly set -mcpu/-mtune for ppc64p7 and ppc64le to override rpm defaults + +* Mon Sep 22 2014 Panu Matilainen <pmatilai@redhat.com> - 26-1 +- Gnat macros are now in a package of their own (#1133632) + +* Fri Sep 19 2014 Dan Horák <dan[at]danny.cz> - 25-1 +- there is still no properly packaged Mono for ppc64le + +* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 24-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu Jun 5 2014 Peter Robinson <pbrobinson@fedoraproject.org> 24-1 +- ARMv7 has Ada so add it to GNAT_arches + +* Sat May 24 2014 Brent Baude <baude@us.ibm.com> - 23-2 +- Changed ppc64 to power64 macro for mono_archs + +* Tue May 13 2014 Peter Robinson <pbrobinson@fedoraproject.org> +- aarch64 has Ada so add it to GNAT_arches + +* Mon May 12 2014 Josh Boyer <jwboyer@fedoraproject.org> - 22-1 +- Fix kmod.prov to deal with compressed modules (#1096349) + +* Wed Apr 30 2014 Jens Petersen <petersen@redhat.com> - 21-1 +- macros.ghc-srpm moved to ghc-rpm-macros package (#1089102) +- add requires ghc-srpm-macros + +* Tue Apr 29 2014 Peter Robinson <pbrobinson@fedoraproject.org> 20-1 +- With gcc 4.9 aarch64 now supports stack-protector + +* Sun Apr 27 2014 Ville Skyttä <ville.skytta@iki.fi> - 19-1 +- Drop bunch of duplicated-with-rpm macro definitions and brp-* scripts + +* Tue Apr 15 2014 Panu Matilainen <pmatilai@redhat.com> - 18-1 +- Temporarily bring back find-requires and -provides scripts to rrc-side + +* Tue Apr 15 2014 Panu Matilainen <pmatilai@redhat.com> - 17-1 +- Let OCaml handle its own arch macros (#1087794) + +* Tue Apr 15 2014 Panu Matilainen <pmatilai@redhat.com> - 16-1 +- Move kmod and libsymlink dependency generators here from rpm + +* Thu Apr 10 2014 Panu Matilainen <pmatilai@redhat.com> - 15-1 +- Drop most of the script-based dependency generation bits + +* Tue Apr 08 2014 Panu Matilainen <pmatilai@redhat.com> - 14-1 +- Add Mono path macros (#1070936) +- Allow opting out of config.{guess,sub} replacement hack (#991613) + +* Tue Apr 08 2014 Panu Matilainen <pmatilai@redhat.com> - 13-1 +- Move the remaining dependency generator stuff to the kmp macro package +- Stop overriding rpm external dependency generator settings by default + +* Mon Apr 07 2014 Panu Matilainen <pmatilai@redhat.com> - 12-1 +- Be more explicit about the package contents +- Split kernel module macros to a separate file +- Split kernel module scripts and macros to a separate package + +* Wed Apr 02 2014 Panu Matilainen <pmatilai@redhat.com> - 11-1 +- Stop pretending this package is relocatable, its not +- Require rpm >= 4.11 for /usr/lib/rpm/macros.d support etc +- Move our macros out of from /etc, they're not configuration + +* Wed Apr 02 2014 Panu Matilainen <pmatilai@redhat.com> - 10-1 +- Make fedora dist-git the upstream of this package and its sources +- Add maintainer comments to spec wrt versioning and changes + +* Mon Mar 24 2014 Dan Horák <dan[at]danny.cz> - 9.1.0-58 +- enable ppc64le otherwise default rpm cflags will be used + +* Fri Feb 07 2014 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-57 +- config.guess/sub don't need to be group-writable (#1061762) + +* Sun Jan 12 2014 Kevin Fenzi <kevin@scrye.com> 9.1.0-56 +- Update libtool hardening hack and re-enable (#978949) + +* Wed Dec 18 2013 Dhiru Kholia <dhiru@openwall.com> - 9.1.0-55 +- Enable "-Werror=format-security" by default (#1043495) + +* Wed Sep 04 2013 Karsten Hopp <karsten@redhat.com> 9.1.0-54 +- update config.sub with ppc64p7 support (from Fedora automake) + +* Fri Aug 16 2013 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-53 +- updated config.guess/sub from upstream for little-endian ppc archs + +* Mon Jul 29 2013 Petr Pisar <ppisar@redhat.com> - 9.1.0-52 +- Perl 5.18 rebuild + +* Thu Jul 25 2013 Tomas Mraz <tmraz@redhat.com> 9.1.0-51 +- Disable the libtool hack as it is breaking builds + +* Wed Jul 24 2013 Kevin Fenzi <kevin@scrye.com> 9.1.0-50 +- Make docdirs unversioned on Fedora 20+ (#986871) +- Hack around libtool issue for hardened build for now (#978949) + +* Wed Jul 17 2013 Petr Pisar <ppisar@redhat.com> - 9.1.0-49 +- Perl 5.18 rebuild + +* Fri Jul 05 2013 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-48 +- fix brp-java-repack-jars failing on strange permissions (#905573) + +* Thu Jul 04 2013 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-47 +- switch from -fstack-protector to -fstack-protector-strong (#978763) + +* Thu Jun 27 2013 Panu Matilainen <pmatilai@redhat.com> - - 9.1.0-46 +- make cpu limit for building configurable through _smp_ncpus_max macro + +* Tue May 21 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 9.1.0-45 +- add nodejs_arches macro for ExclusiveArch for Node.js packages + +* Mon May 13 2013 Adam Jackson <ajax@redhat.com> 9.1.0-44 +- redhat-config-*: Use + to append rather than %%rename, to protect against + multiple -specs= ending up in the command line. (#892837) + +* Tue Apr 23 2013 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-43 +- Add optflags stack protector override for AArch64 (#909788) +- Also set FCFLAGS from %%configure (#914831) + +* Mon Apr 22 2013 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-42 +- Switch back to manual config.guess/sub copies for reproducability +- Replace config.guess/sub from %%configure again (#951442) + +* Mon Apr 22 2013 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-41 +- Add -grecord-gcc-switches to global CFLAGS (#951669) + +* Mon Mar 25 2013 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-40 +- Add virtual system-rpm-config provide + +* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 9.1.0-39 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Sat Nov 17 2012 Jens Petersen <petersen@redhat.com> - 9.1.0-38 +- add ARM to ghc_arches_with_ghci for ghc-7.4.2 ghci support + (NB this change should not be backported before ghc-7.4.2) + +* Fri Nov 9 2012 Toshio Kuratomi <toshio@fedoraproject.org> - 9.1.0-37 +- Patch to fix spaces in java jar files + https://bugzilla.redhat.com/show_bug.cgi?id=872737 + +* Fri Nov 9 2012 Toshio Kuratomi <toshio@fedoraproject.org> - 9.1.0-36 +- Patch to fix spaces in files used in filtering macros + https://bugzilla.redhat.com/show_bug.cgi?id=783932 + +* Wed Oct 3 2012 Ville Skyttä <ville.skytta@iki.fi> - 9.1.0-35 +- Drop (un)setting LANG and DISPLAY in build stages, require rpm >= 4.8.0. + +* Wed Oct 3 2012 Toshio Kuratomi <toshio@fedoraproject.org> - 9.1.0-34 +- Add patch from https://bugzilla.redhat.com/show_bug.cgi?id=783433 + to fix spaces in files and directories that are fed to the + brp-python-hardlink script +- Require zip since java repack jars requires it + https://bugzilla.redhat.com/show_bug.cgi?id=857479 +- Java jars need the MANIFEST.MF file to be first in the archive + https://bugzilla.redhat.com/show_bug.cgi?id=465664 +- Fix kernel_source macro to match the directory that kernel sources are installed in + https://bugzilla.redhat.com/show_bug.cgi?id=648996 +- Patch _mandir, _infodir, and _defaultocdir to use _prefix + https://bugzilla.redhat.com/show_bug.cgi?id=853216 + +* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 9.1.0-33 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed Jun 27 2012 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-32 +- enable minidebuginfo generation (#834073) + +* Mon Jun 25 2012 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-31 +- revert back to plain -g, -g3 seems to cancel dwz size improvements + +* Mon Jun 25 2012 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-30 +- require dwz, enable dwarf compression for debuginfo packages (#833311) + +* Wed Jun 06 2012 Petr Pisar <ppisar@redhat.com> - 9.1.0-29 +- Pull in dependency with macros specific for building Perl source packages + +* Sat Mar 3 2012 Jens Petersen <petersen@redhat.com> - 9.1.0-28 +- add s390 and s390x to ghc_arches + +* Wed Feb 22 2012 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-27 +- add GNAT arch definitions + +* Sun Jan 15 2012 Dennis Gilmore <dennis@ausil.us> - 9.1.0-26 +- per ppc team request drop -mminimal-toc on ppc64 + +* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 9.1.0-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Dec 27 2011 Jens Petersen <petersen@redhat.com> - 9.1.0-24 +- add ghc_arches_with_ghci + +* Wed Nov 09 2011 Dennis Gilmore <dennis@ausil.us> - 9.1.0-23 +- remove patch that forces --disable-silent-rules to configure +- it breaks anything set to not ignore unknown configure options + +* Tue Oct 18 2011 Jens Petersen <petersen@redhat.com> - 9.1.0-22 +- add armv5tel to ghc_arches + +* Wed Sep 28 2011 Dennis Gilmore <dennis@ausil.us> - 9.1.0-21 +- build armv5tel on armv7l since they are the same abi armv7hl is + an incompatible ABI + +* Wed Sep 28 2011 Jens Petersen <petersen@redhat.com> - 9.1.0-20 +- add armv7hl to ghc_arches + +* Sun Sep 25 2011 Ville Skyttä <ville.skytta@iki.fi> - 9.1.0-19 +- Fix URL. + +* Thu Sep 22 2011 Adam Jackson <ajax@redhat.com> 9.1.0-18 +- redhat-hardened-cc1: Inject -fPIE, not -fPIC. + cf. http://lists.fedoraproject.org/pipermail/devel/2011-September/157365.html + +* Fri Sep 16 2011 Adam Jackson <ajax@redhat.com> 9.1.0-17 +- Expose %%_hardening_{c,ld}flags independently to make it easier for + packages to apply them to selected components + +* Wed Aug 10 2011 Colin Walters <walters@verbum.org> - 9.1.0-16 +- Globally disable silent rules + +* Wed Aug 03 2011 Adam Jackson <ajax@redhat.com> 9.1.0-15 +- redhat-hardened-{cc1,ld}: Move some of the rewrite magic to gcc specs so + we don't end up with both -fPIC and -fPIE on the command line + +* Mon Aug 01 2011 Adam Jackson <ajax@redhat.com> 9.1.0-14 +- redhat-rpm-config-9.1.0-hardened.patch: Add macro magic for %%_hardened_build + +* Thu Jul 07 2011 Adam Jackson <ajax@redhat.com> 9.1.0-13 +- redhat-rpm-config-9.1.0-relro.patch: LDFLAGS, not CFLAGS. + +* Sat Jul 02 2011 Jon Masters <jcm@jonmasters.org> - 9.1.0-12 +- redhat-rpm-config-9.1.0-arm.patch: Make armv7hl default on all v7 ARM + +* Mon Jun 27 2011 Adam Jackson <ajax@redhat.com> - 9.1.0-11 +- redhat-rpm-config-9.1.0-relro.patch: Add -Wl,-z,relro to __global_cflags + +* Tue Jun 21 2011 Jens Petersen <petersen@redhat.com> - 9.1.0-10 +- revert last build since releng prefers exclusivearch here + +* Sat Jun 18 2011 Jens Petersen <petersen@redhat.com> - 9.1.0-9 +- replace ghc_archs with ghc_excluded_archs + +* Mon Jun 13 2011 Dennis Gilmore <dennis@ausil.us> - 9.1.0-8 +- add arm hardware float macros, fix up armv7l + +* Mon May 30 2011 Dennis Gilmore <dennis@ausil.us> - 9.1.0-7 +- add -srpm to the arches files so that the base language macros can + be parallel installable with these + +* Fri May 27 2011 Dennis Gilmore <dennis@ausil.us> - 9.1.0-6 +- add some specific macros needed at srpm creation time + +* Thu May 27 2010 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-5 +- adjust to new pkg-config behavior wrt private dependencies (#596433) + +* Mon Mar 01 2010 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-4 +- avoid unnecessarily running brp-strip-comment-note (#568924) + +* Mon Feb 15 2010 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-3 +- unbreak find-requires again, doh (#564527) + +* Wed Feb 3 2010 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-2 +- python byte-compilation errors abort the build by default + +* Tue Feb 2 2010 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-1 +- new version, lose merged patches (fixes #521141, #455279, #496522, #458648) +- require rpm for parent dir, version >= 4.6.0 for sane keyserver behavior +- buildrequire libtool to grab copies of config.guess and config.sub +- add URL to the git repo and upstream changelog as documentation + +* Mon Nov 23 2009 Orion Poplawski <orion@cora.nwra.com> - 9.0.3-19 +- Change configure macro to use _configure to allow override (bug #489942) + +* Mon Sep 28 2009 Bill Nottingham <notting@redhat.com> +- Drop xz compression level to 2 + +* Thu Sep 03 2009 Adam Jackson <ajax@redhat.com> +- Delete *.orig in %%install + +* Thu Sep 03 2009 Paul Howarth <paul@city-fan.org> 9.0.3-17 +- redhat-rpm-config-9.0.3-filtering-macros.patch: Rediff so we don't ship a .orig file +- add (empty) %%build section +- fix unescaped macros in changelog + +* Tue Aug 18 2009 Chris Weyl <cweyl@alumni.drew.edu> 9.0.3-16 +- add the filtering framework approved by the FPC/FESCo. (#516240) + +* Thu Aug 13 2009 Adam Jackson <ajax@redhat.com> 9.0.3-15 +- redhat-rpm-config-9.0.4-brpssa-speedup.patch: When looking for static + archives, only run file(1) on files named *.a. (#517101) + +* Wed Aug 12 2009 Adam Jackson <ajax@redhat.com> 9.0.3-14 +- redhat-rpm-config-9.0.3-jars-with-spaces.patch: Handle repacking jars + whose filenames contain spaces. (#461854) + +* Sun Jul 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 9.0.3-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Jul 22 2009 Bill Nottingham <notting@redhat.com> 9.0.3-12 +- use XZ payload compression for binary packages + +* Tue Jul 21 2009 Tom "spot" Callaway <tcallawa@redhat.com> - 9.0.3-10 +- always delete %%buildroot as first step of %%install (as long as %%buildroot is not /) + +* Fri Jul 17 2009 Bill Nottingham <notting@redhat.com> 9.0.3-10 +- apply fedora 12 default buildflags + +* Wed Jun 03 2009 Adam Jackson <ajax@redhat.com> 9.0.3-9 +- limit-smp-16-threads.patch: Rediff so we don't ship a .orig file (#500316) + +* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 9.0.3-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Mon Feb 23 2009 Jon Masters <jcm@redhat.com> - 9.0.3-7 +- Change default hashing algorithm in file digests to SHA-256 +- Resolves: #485826. + +* Tue Feb 17 2009 Dennis Gilmore <dennis@ausil.us> - 9.0.3-6 +- add missing armv7l arch +- set the default build arch to match fedora arm build target + +* Mon Feb 16 2009 Dennis Gilmore <dennis@ausil.us> - 9.0.3-5 +- apply fedora 11 default buildflags +- set 32 bit intel build arch to i586 on compatible hardware +- set 32 bit sparc build arch to sparcv9 on compatible hardware + +* Mon Feb 16 2009 Dennis Gilmore <dennis@ausil.us> - 9.0.3-4 +- limit _smp_flags to -j16 + +* Wed Sep 3 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 9.0.3-3 +- fix license tag +- nuke ancient conflicts + +* Mon Aug 11 2008 Panu Matilainen <pmatilai@redhat.com> - 9.0.3-2 +- Unbreak find-requires (#443015) + +* Tue May 06 2008 Jon Masters <jcm@redhat.com> - 9.0.3-1 +- Ensure Java Jar files have readable files within. +- Remove overwritten config.guess|sub files (testing). +- Fix Fortran flags for building using _fmoddir. +- Pull in objdump fix to upstream find-requires. + +* Thu Apr 03 2008 Jon Masters <jcm@redhat.com> - 9.0.2-1 +- Remove smp dependencies +- Update config.guess|sub files +- Don't call find-requires.ksyms for kmod packages (kernel kABI scripts). + +* Thu Jul 05 2007 Jesse Keating <jkeating@redhat.com> - 9.0.1-1 +- Remove dist defines, fedora-release does that now +- Enable post-build buildroot checking by default + +* Tue Jun 19 2007 Jeremy Katz <katzj@redhat.com> - 9.0.0-1 +- use stock find-lang.sh (#213041) +- arm fixes (Lennert Buytenhek, #243523) +- allow jar repacking to be disabled (#219731) +- fix running dist.sh --fc (#223651) +- hardlink identical .pyc and .pyo files to save space (Ville Skyttä) +- fix TMPDIR usage (Matthew Miller, #235614) + +* Tue Jun 19 2007 Jeremy Katz <katzj@redhat.com> - 8.1.0-1 +- add modalias tags to kmod packages and other kmod changes (jcm) +- recompress jars to avoid multilib conflicts (bkonrath) + +* Fri May 18 2007 Jesse Keating <jkeating@redhat.com> 8.0.45-16 +- Update macros for F8 +- hardcode dist in release string, as we provide it. chicken/egg. + +* Wed Apr 11 2007 Jon Masters <jcm@redhat.com> 8.0.45-15 +- Add modalias tags to kernel module packages (kmods) for tracking. +- Further information is available at http://www.kerneldrivers.org/. + +* Tue Apr 03 2007 Jon Masters <jcm@redhat.com> 8.0.45-14 +- Rebased all previous patches (since java fix introduced offset). +- Added Fedora per-release macros to platforms section of macros. + Further debate may see these move elsewhere in the ordering. + +* Tue Mar 13 2007 Ben Konrath <bkonrath@redhat.com> 8.0.45-13 +- Update brp-java-repack-jars to fix issue with tomcat. + +* Wed Oct 18 2006 Jon Masters <jcm@redhat.com> 8.0.45-12 +- Synced kernel_module_package semantics with SuSE. +- Updated kmodtool. + +* Tue Oct 17 2006 Jon Masters <jcm@redhat.com> 8.0.45-10 +- Updated kernel_module_package. + +* Mon Oct 16 2006 Jon Masters <jcm@redhat.com> 8.0.45-9 +- Added kernel_module_package macro. Working on unified packaging. + +* Thu Oct 12 2006 Jon Masters <jcm@redhat.com> 8.0.45-8 +- Added patch for find-requires. Waiting on write access to public CVS. + +* Tue Sep 12 2006 Deepak Bhole <dbhole@redhat.com> 8.0.45-6 +- Fix brp-java-repack-jars to work with builddirs that aren't %%name-%%version + +* Mon Sep 11 2006 Fernando Nasser <fnasser@redhat.com> - 8.0.45-5 +- Fix order of tokens in find command (thanks mikeb@redhat.com) + +* Thu Sep 7 2006 Ben Konrath <bkonrath@redhat.com> - 8.0.45-4 +- Fix bug in repack jars script. + +* Wed Sep 6 2006 Jeremy Katz <katzj@redhat.com> - 8.0.45-3 +- path fix + +* Tue Sep 5 2006 Jeremy Katz <katzj@redhat.com> - 8.0.45-2 +- Add script from Ben Konrath <bkonrath@redhat.com> to repack jars to + avoid multilib conflicts + +* Sun Jul 30 2006 Jon Masters <jcm@redhat.com> - 8.0.45-1 +- Fix inverted kernel test. + +* Sun Jul 30 2006 Jon Masters <jcm@redhat.com> - 8.0.44-1 +- Add a better check for a kernel vs. kmod. + +* Thu Jun 15 2006 Jon Masters <jcm@redhat.com> - 8.0.43-1 +- Workaround bug in find-requires/find-provides for kmods. + +* Thu Jun 15 2006 Jon Masters <jcm@redhat.com> - 8.0.42-1 +- Fix a typo in KMP find-requires. + +* Tue Jun 13 2006 Jon Masters <jcm@redhat.com> - 8.0.41-1 +- Add support for KMP Fedora Extras packaging. + +* Fri Feb 3 2006 Jeremy Katz <katzj@redhat.com> - 8.0.40-1 +- use -mtune=generic for x86 and x86_64 + +* Tue Aug 16 2005 Elliot Lee <sopwith@redhat.com> - 8.0.39-1 +- Fix #165416 + +* Mon Aug 01 2005 Elliot Lee <sopwith@redhat.com> - 8.0.38-1 +- Add -Wall into cflags + +* Mon Aug 01 2005 Elliot Lee <sopwith@redhat.com> - 8.0.37-1 +- Patch from Uli: enable stack protector, fix sparc & ppc cflags + +* Thu Jun 16 2005 Elliot Lee <sopwith@redhat.com> - 8.0.36-1 +- Fix the fix + +* Wed Apr 6 2005 Elliot Lee <sopwith@redhat.com> - 8.0.35-1 +- Fix #129025 (enable python byte compilation) + +* Wed Mar 23 2005 Elliot Lee <sopwith@redhat.com> 8.0.34-1 +- Bug fixes +- Cflags change by drepper + +* Wed Feb 9 2005 Elliot Lee <sopwith@redhat.com> 8.0.33-1 +- Change -D to -Wp,-D to make java happy +- Add -D_FORTIFY_SOURCE=2 to global cflags (as per Jakub & Arjan's request) + +* Fri Oct 1 2004 Bill Nottingham <notting@redhat.com> 8.0.32-1 +- allow all symbol versioning in find_requires - matches RPM internal + behavior + +* Mon Jun 28 2004 Elliot Lee <sopwith@redhat.com> 8.0.31-1 +- Add ppc8[25]60 to rpmrc optflags + +* Fri Jun 25 2004 Elliot Lee <sopwith@redhat.com> 8.0.29-1 +- rpmrc patch from jakub to change optflags. + +* Wed Sep 17 2003 Elliot Lee <sopwith@redhat.com> 8.0.28-1 +- Change brp-compress to pass -n flag to gzip (per msw's request) + +* Tue Jul 15 2003 Elliot Lee <sopwith@redhat.com> 8.0.27-1 +- Fix broken configure macro find for config.guess/config.sub +- Put host/target/build back for now + +* Mon Jul 7 2003 Jens Petersen <petersen@redhat.com> - 8.0.26-1 +- preserve the vendor field when VENDOR not set +- put VENDOR in the final i386-libc line, not the tentative one + +* Mon Jul 7 2003 Jens Petersen <petersen@redhat.com> - 8.0.25-1 +- update config.{guess,sub} to 2003-06-17 +- define VENDOR to be redhat only when /etc/redhat-release present + [suggested by jbj] +- put VENDOR in vendor field in our config.guess file for + ia64, ppc, ppc64, s390, s390x, x86_64 and elf32-i386 Linux +- drop the --host, --build, --target and --program-prefix configure options + from %%configure, since this causes far too many problems + +* Fri May 2 2003 Jens Petersen <petersen@redhat.com> - 8.0.24-3 +- make config.{guess,sub} executable + +* Thu May 1 2003 Jens Petersen <petersen@redhat.com> - 8.0.22-2 +- add config.guess and config.sub (2003-02-22) with s390 patch on config.sub +- make %%configure use them + +* Mon Mar 03 2003 Elliot Lee <sopwith@redhat.com> +- Unset $DISPLAY in macros + +* Mon Feb 24 2003 Elliot Lee <sopwith@redhat.com> 8.0.21-1 +- Just turn on -g unconditionally for now + +* Thu Feb 13 2003 Elliot Lee <sopwith@redhat.com> 8.0.20-1 +- Reorganize rpmrc/macros to set cflags in a nicer manner. + +* Wed Jan 22 2003 Elliot Lee <sopwith@redhat.com> 8.0.19-1 +- Disable brp-implant-ident-static until it works everywhere + +* Thu Jan 16 2003 Nalin Dahyabhai <nalin@redhat.com> 8.0.18-1 +- add brp-implant-ident-static, which requires mktemp + +* Thu Jan 9 2003 Bill Nottingham <notting@redhat.com> 8.0.17-1 +- add brp-strip-static-archive from rpm-4.2-0.54 + +* Tue Dec 17 2002 Bill Nottingham <notting@redhat.com> 8.0.16-1 +- make -g in rpmrc conditional on debug_package + +* Mon Dec 16 2002 Elliot Lee <sopwith@redhat.com> 8.0.15-1 +- Rename -debug subpackages to -debuginfo + +* Sat Dec 14 2002 Tim Powers <timp@redhat.com> 8.0.14-1 +- tweak debug package stuff so that we are overloading %%install + instead of %%post + +* Sat Dec 14 2002 Tim Powers <timp@redhat.com> 8.0.13-1 +- turn on internal rpm dep generation by default + +* Fri Dec 13 2002 Elliot Lee <sopwith@redhat.com> 8.0.12-1 +- New release with debug packages on + +* Tue Dec 3 2002 Bill Nottingham <notting@redhat.com> 8.0.8-1 +- turn debug packages off +- override optflags with no -g + +* Fri Nov 22 2002 Elliot Lee <sopwith@redhat.com> 8.0.7-1 +- turn on debug packages + +* Thu Nov 21 2002 Elliot Lee <sopwith@redhat.com> 8.0.6-1 +- Pass __strip and __objdump macros + +* Thu Nov 21 2002 Elliot Lee <sopwith@redhat.com> 8.0.5-1 +- Update macros to specify find-provides/find-requires + +* Thu Oct 31 2002 Elliot Lee <sopwith@redhat.com> 8.0.4-1 +- Remove tracking dependency + +* Wed Oct 16 2002 Phil Knirsch <pknirsch@redhat.com> 8.0.3-2 +- Added fix for outdated config.[sub|guess] files in %%configure section + +* Wed Oct 16 2002 Elliot Lee <sopwith@redhat.com> 8.0.3-1 +- New release that blows up on unpackaged files and missing doc files. + +* Thu Oct 3 2002 Jeremy Katz <katzj@redhat.com> 8.0.2 +- don't redefine everything in macros, just what we need to + +* Mon Sep 16 2002 Alexander Larsson <alexl@redhat.com> 8.0.1 +- Add debug package support to %%__spec_install_post + +* Tue Sep 3 2002 Bill Nottingham <notting@redhat.com> 8.0-1 +- bump version + +* Wed Aug 28 2002 Elliot Lee <sopwith@redhat.com> 7.3.94-1 +- Update macrofiles + +* Wed Jul 31 2002 Elliot Lee <sopwith@redhat.com> 7.3.93-1 +- Add _unpackaged_files_terminate_build and +_missing_doc_files_terminate_build to macros + +* Thu Jul 11 2002 Elliot Lee <sopwith@redhat.com> 7.3.92-6 +- find-lang.sh fix from 67368 +- find-requires fix from 67325 + +* Thu Jul 11 2002 Elliot Lee <sopwith@redhat.com> 7.3.92-5 +- Add /etc/rpm/macros back to make #67951 go away + +* Wed Jun 26 2002 Jens Petersen <petersen@redhat.com> 7.3.92-4 +- fix %%configure targeting for autoconf-2.5x (#58468) +- include ~/.rpmmacros in macrofiles file path again + +* Fri Jun 21 2002 Tim Powers <timp@redhat.com> 7.3.92-3 +- automated rebuild + +* Fri Jun 21 2002 Elliot Lee <sopwith@redhat.com> 7.3.92-2 +- Don't define _arch + +* Thu Jun 20 2002 Elliot Lee <sopwith@redhat.com> 7.3.92-1 +- find-lang error detection from Havoc + +* Wed Jun 12 2002 Elliot Lee <sopwith@redhat.com> 7.3.91-1 +- Update + +* Sun Jun 9 2002 Jeff Johnson <jbj@redhat.com> +- create.