From 9d48ed298c8ce7d111489a343f64979b537bf299 Mon Sep 17 00:00:00 2001 From: openeuler-basic Date: Mon, 13 Jan 2020 13:01:04 +0800 Subject: [PATCH 1/3] rebuild for openEuler --- README.en.md | 36 ---- README.md | 39 ---- brp-ldconfig | 8 + config.guess | 0 config.sub | 0 generic-rpm-config.spec | 150 ++++---------- genericOS.patch | 193 ------------------ macros | 0 macros.forge | 0 macros.fpc-srpm | 3 - macros.ghc-srpm | 7 - macros.gnat-srpm | 14 -- macros.go | 0 macros.go-srpm | 170 --------------- macros.nim-srpm | 1 - macros.ocaml-srpm | 11 - macros.openEuler | 31 --- macros.openblas-srpm | 2 - macros.perl | 151 ++++++++++++++ macros.perl-srpm | 15 -- macros.pybytecompile | 19 -- macros.python | 81 -------- macros.python-srpm | 107 ---------- macros.python2 | 41 ---- macros.python3 | 43 ---- macros.rust-srpm | 1 - openEuler-hardened-cc1 | 2 + openEuler-hardened-ld | 2 + openEuler-pie-cc1 | 2 + openEuler-pie-ld | 2 + openeuler-fs-cc1 | 2 + redhat-rpm-config-118.tar.gz | Bin 61142 -> 0 bytes ...-fcf-protection-for-gcc-7.3.0-x86_64.patch | 25 --- rpmrc | 19 ++ 34 files changed, 231 insertions(+), 946 deletions(-) delete mode 100644 README.en.md delete mode 100644 README.md create mode 100644 brp-ldconfig create mode 100644 config.guess create mode 100644 config.sub delete mode 100644 genericOS.patch create mode 100644 macros create mode 100644 macros.forge delete mode 100644 macros.fpc-srpm delete mode 100644 macros.ghc-srpm delete mode 100644 macros.gnat-srpm create mode 100644 macros.go delete mode 100644 macros.go-srpm delete mode 100644 macros.nim-srpm delete mode 100644 macros.ocaml-srpm delete mode 100644 macros.openEuler delete mode 100644 macros.openblas-srpm create mode 100644 macros.perl delete mode 100644 macros.perl-srpm delete mode 100644 macros.pybytecompile delete mode 100644 macros.python-srpm delete mode 100644 macros.python2 delete mode 100644 macros.python3 delete mode 100644 macros.rust-srpm create mode 100644 openEuler-hardened-cc1 create mode 100644 openEuler-hardened-ld create mode 100644 openEuler-pie-cc1 create mode 100644 openEuler-pie-ld create mode 100644 openeuler-fs-cc1 delete mode 100644 redhat-rpm-config-118.tar.gz delete mode 100644 remove-fcf-protection-for-gcc-7.3.0-x86_64.patch create mode 100644 rpmrc diff --git a/README.en.md b/README.en.md deleted file mode 100644 index 6974945..0000000 --- a/README.en.md +++ /dev/null @@ -1,36 +0,0 @@ -# openEuler-rpm-config - -#### Description -{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**} - -#### Software Architecture -Software architecture description - -#### Installation - -1. xxxx -2. xxxx -3. xxxx - -#### Instructions - -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md deleted file mode 100644 index 1be441b..0000000 --- a/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# openEuler-rpm-config - -#### 介绍 -{**以下是码云平台说明,您可以替换此简介** -码云是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 -无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 码云特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 -5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/brp-ldconfig b/brp-ldconfig new file mode 100644 index 0000000..fc22582 --- /dev/null +++ b/brp-ldconfig @@ -0,0 +1,8 @@ +#!/bin/sh -efu + +# 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" diff --git a/config.guess b/config.guess new file mode 100644 index 0000000..e69de29 diff --git a/config.sub b/config.sub new file mode 100644 index 0000000..e69de29 diff --git a/generic-rpm-config.spec b/generic-rpm-config.spec index 5c902e6..8d1c64e 100644 --- a/generic-rpm-config.spec +++ b/generic-rpm-config.spec @@ -1,46 +1,27 @@ %global vendor %{?_vendor:%{_vendor}}%{!?_vendor:openEuler} -Name: %{vendor}-rpm-config -Version: 29 -Release: 20 -License: GPL+ -Summary: specific rpm configuration files -URL: https://src.fedoraproject.org/rpms/redhat-rpm-config - -# Core rpm settings -#fedora 29 snapshots from https://src.fedoraproject.org/rpms/redhat-rpm-config -Source0: redhat-rpm-config-118.tar.gz -#https://src.fedoraproject.org/rpms/fpc-srpm-macros/blob/f29/f/macros.fpc-srpm -Source1: macros.fpc-srpm -#https://src.fedoraproject.org/rpms/ghc-srpm-macros/blob/f29/f/macros.ghc-srpm -Source2: macros.ghc-srpm -#https://src.fedoraproject.org/rpms/gnat-srpm-macros/blob/f29/f/macros.gnat-srpm -Source3: macros.gnat-srpm -#https://src.fedoraproject.org/rpms/nim-srpm-macros/tree/f29 -Source4: macros.nim-srpm -#https://src.fedoraproject.org/rpms/ocaml-srpm-macros/blob/f29/f/macros.ocaml-srpm -Source5: macros.ocaml-srpm -#https://src.fedoraproject.org/rpms/openblas-srpm-macros/blob/f29/f/macros.openblas-srpm -Source6: macros.openblas-srpm -#https://src.fedoraproject.org/rpms/perl-srpm-macros/blob/f29/f/macros.perl-srpm -Source7: macros.perl-srpm -#https://pagure.io/fedora-rust/rust2rpm -Source8: macros.rust-srpm -#https://github.com/gofed/go-macros -Source9: macros.go-srpm - - -#python https://src.fedoraproject.org/rpms/python-rpm-macros/blob/f29/ -Source10: macros.python -Source11: macros.python-srpm -Source12: macros.python2 -Source13: macros.python3 -Source14: macros.pybytecompile - -Source99: macros.openEuler - -Patch0: genericOS.patch -Patch1: remove-fcf-protection-for-gcc-7.3.0-x86_64.patch +Name: %{vendor}-rpm-config +Version: 30 +Release: 1 +License: GPL+ +Summary: specific rpm configuration files +URL: https://gitee.com/src-openeuler/openEuler-rpm-config + +Source1: brp-ldconfig +Source2: rpmrc +Source3: macros +Source4: config.guess +Source5: config.sub + +Source10: macros.perl +Source11: macros.python +Source12: macros.go +Source13: macros.forge + +Source20: openEuler-hardened-cc1 +Source21: openEuler-hardened-ld +Source22: openEuler-pie-cc1 +Source23: openEuler-pie-ld Provides: python-rpm-macros = %{version}-%{release} Provides: python2-rpm-macros = %{version}-%{release} @@ -55,6 +36,8 @@ Provides: openblas-srpm-macros Provides: perl-srpm-macros Provides: rust-srpm-macros Provides: go-srpm-macros +Provides: kernel-rpm-macros +Obsoletes: kernel-rpm-macros Obsoletes: python-rpm-macros Obsoletes: python2-rpm-macros Obsoletes: python3-rpm-macros @@ -73,7 +56,6 @@ Requires: efi-srpm-macros Requires: qt5-srpm-macros Requires: rpm >= 4.11.0 -Requires: dwz >= 0.4 Requires: zip #Requires: (annobin if gcc) @@ -81,7 +63,7 @@ Requires: zip Requires: %{_bindir}/find Requires: %{_bindir}/file Requires: %{_bindir}/grep -Requires: sed +Requires: %{_bindir}/sed Requires: %{_bindir}/xargs # -fstack-clash-protection and -fcf-protection require GCC 8. @@ -89,83 +71,37 @@ Conflicts: gcc < 7 Provides: system-rpm-config = %{version}-%{release} -%global rrcdir /usr/lib/rpm/%{vendor} +%global rpmvdir /usr/lib/rpm/%{vendor} %description specific rpm configuration files for %{vendor}. -%package -n kernel-rpm-macros -Summary: Macros and scripts for building kernel module packages -Requires: %{vendor}-rpm-config - -%description -n kernel-rpm-macros -Macros and scripts for building kernel module packages. - %prep -sed -i "s/generic_os/%{vendor}/g" $RPM_SOURCE_DIR/genericOS.patch - -%setup -T -c -tar -xf %{SOURCE0} --strip-components 1 -%patch0 -p1 -%patch1 -p1 -mv redhat-hardened-cc1 %{vendor}-hardened-cc1 -mv redhat-hardened-ld %{vendor}-hardened-ld -mv redhat-annobin-cc1 %{vendor}-annobin-cc1 +%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} %{vendor}-hardened-* -install -p -m 444 -t %{buildroot}%{rrcdir} %{vendor}-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 644 -t %{buildroot}%{rrcdir}/find-provides.d firmware.prov modalias.prov - -install -p -m 755 -t %{buildroot}%{rrcdir} brp-* +mkdir -p %{buildroot}%{rpmvdir} +install -p -m 644 -t %{buildroot}%{rpmvdir} macros rpmrc +install -p -m 755 -t %{buildroot}%{rpmvdir} config.* +install -p -m 755 -t %{buildroot}%{rpmvdir} brp-* +install -p -m 644 -t %{buildroot}%{rpmvdir} openEuler-* mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d -install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d macros.* +install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d/ %{SOURCE11} %{SOURCE12} %{SOURCE13} mkdir -p %{buildroot}%{_fileattrsdir} -install -p -m 644 -t %{buildroot}%{_fileattrsdir} *.attr -install -p -m 755 -t %{buildroot}%{_rpmconfigdir} kmod.prov - -install -m 644 %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7} %{SOURCE8} \ - %{SOURCE9} %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} %{SOURCE99}\ - %{buildroot}/%{rpmmacrodir}/ %files -%dir %{rrcdir} -%{rrcdir}/macros -%{rrcdir}/rpmrc -%{rrcdir}/brp-* -%{rrcdir}/dist.sh -%{rrcdir}/%{vendor}-hardened-* -%{rrcdir}/%{vendor}-annobin-* -%{rrcdir}/config.* -%{rrcdir}/find-provides -%{rrcdir}/find-requires -%{rrcdir}/brp-ldconfig -%{_fileattrsdir}/*.attr -%{_rpmconfigdir}/kmod.prov -%{_rpmconfigdir}/macros.d/macros.* -%doc buildflags.md -%exclude %{_rpmconfigdir}/macros.d/macros.kmp - -%files -n kernel-rpm-macros -%dir %{rrcdir}/find-provides.d -%{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 +%dir %{rpmvdir} +%{rpmvdir}/macros +%{rpmvdir}/rpmrc +%{rpmvdir}/brp-* +%{rpmvdir}/config.* +%{rpmvdir}/openEuler-* +%{_fileattrsdir}/ +%{_rpmconfigdir}/macros.d/ +%{_rpmconfigdir}/macros.d/* %changelog * Thu Dec 26 2019 openEuler Buildteam 29-20 diff --git a/genericOS.patch b/genericOS.patch deleted file mode 100644 index 8fbc0bf..0000000 --- a/genericOS.patch +++ /dev/null @@ -1,193 +0,0 @@ -diff -urN a/buildflags.md b/buildflags.md ---- a/buildflags.md 2019-08-08 06:06:41.000000000 +0000 -+++ b/buildflags.md 2019-08-09 06:55:22.060000000 +0000 -@@ -208,7 +208,7 @@ - - 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 -+`-specs=/usr/lib/rpm/generic_os/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), -@@ -231,7 +231,7 @@ - - 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 -+annobin, the `-specs=/usr/lib/rpm/generic_os/redhat-annobin-cc1` flag is - added by default. This can be switched off by undefining the - `%_annotated_build` RPM macro (see above). - -@@ -314,7 +314,7 @@ - (optional, see above). - - For hardened builds, the --`-specs=/usr/lib/rpm/redhat/redhat-hardened-ld` flag is added to the -+`-specs=/usr/lib/rpm/generic_os/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: -diff -urN a/dist.sh b/dist.sh ---- a/dist.sh 2019-08-08 06:06:41.000000000 +0000 -+++ b/dist.sh 2019-08-09 06:55:22.060000000 +0000 -@@ -11,7 +11,7 @@ - # If we successfully detect the version number, we output the - # dist tag. Otherwise, we exit with no output. - --RELEASEFILE=/etc/redhat-release -+RELEASEFILE=/etc/generic_os-release - - function check_num { - MAINVER=`cut -d "(" -f 1 < $RELEASEFILE | \ -diff -urN a/find-provides b/find-provides ---- a/find-provides 2019-08-08 06:06:41.000000000 +0000 -+++ b/find-provides 2019-08-09 06:55:22.060000000 +0000 -@@ -15,7 +15,7 @@ - - # - # --- any other extra find-provides scripts --for i in /usr/lib/rpm/redhat/find-provides.d/*.prov -+for i in /usr/lib/rpm/generic_os/find-provides.d/*.prov - do - [ -x $i ] && - (echo $filelist | tr '[:blank:]' \\n | $i | sort -u) -@@ -44,7 +44,7 @@ - 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 -+[ -x /usr/lib/rpm/generic_os/find-provides.ksyms ] && [ "$is_kmod" ] && -+ printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/generic_os/find-provides.ksyms - - exit 0 -diff -urN a/find-requires b/find-requires ---- a/find-requires 2019-08-08 06:06:41.000000000 +0000 -+++ b/find-requires 2019-08-09 06:55:22.060000000 +0000 -@@ -33,7 +33,7 @@ - done - - # Disabling for now while the Fedora kernel doesn't produce kABI deps. --#[ -x /usr/lib/rpm/redhat/find-requires.ksyms ] && [ "$is_kmod" ] && --# printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/redhat/find-requires.ksyms -+#[ -x /usr/lib/rpm/generic_os/find-requires.ksyms ] && [ "$is_kmod" ] && -+# printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/generic_os/find-requires.ksyms - - exit 0 -diff -urN a/macros b/macros ---- a/macros 2019-08-08 06:06:41.000000000 +0000 -+++ b/macros 2019-08-09 06:57:55.040000000 +0000 -@@ -3,7 +3,7 @@ - #============================================================================== - # ---- per-platform macros. - # --%_vendor redhat -+%_vendor generic_os - %_os linux - %_target_platform %{_target_cpu}-%{_vendor}-%{_target_os}%{?_gnu} - -@@ -77,7 +77,7 @@ - %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 ; \ -+ [ -f /usr/lib/rpm/generic_os/$(basename $i) ] && %{__rm} -f $i && %{__cp} -fv /usr/lib/rpm/generic_os/$(basename $i) $i ; \ - done ; \ - [ "%_configure_libtool_hardening_hack" = 1 ] && [ x != "x%{_hardened_ldflags}" ] && \ - for i in $(find . -name ltmain.sh) ; do \ -@@ -136,7 +136,7 @@ - - # Build root policy macros. Standard naming: - # convert all '-' in basename to '_', add two leading underscores. --%__brp_ldconfig /usr/lib/rpm/redhat/brp-ldconfig -+%__brp_ldconfig /usr/lib/rpm/generic_os/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} -@@ -147,7 +147,7 @@ - # __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 /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}"} -+%__brp_mangle_shebangs /usr/lib/rpm/generic_os/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} \ -@@ -193,9 +193,9 @@ - # Use XZ compression for binary payloads - %_binary_payload w2.xzdio - --%_hardening_cflags -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -+%_hardening_cflags -specs=/usr/lib/rpm/generic_os/generic_os-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 -+%_hardening_ldflags -Wl,-z,now -specs=/usr/lib/rpm/generic_os/generic_os-hardened-ld - - # Harden packages by default for Fedora 23: - # https://fedorahosted.org/fesco/ticket/1384 (accepted on 2014-02-11) -@@ -204,12 +204,14 @@ - %_hardened_cflags %{?_hardened_build:%{_hardening_cflags}} - %_hardened_ldflags %{?_hardened_build:%{_hardening_ldflags}} - --%_annobin_cflags -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -+#%_annobin_cflags -specs=/usr/lib/rpm/generic_os/generic_os-annobin-cc1 -+%_annobin_cflags %{nil} - - # 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_build 1 -+%undefine _annotated_build - %_annotated_cflags %{?_annotated_build:%{_annobin_cflags}} - - # Fail linking if there are undefined symbols. Required for proper -diff -urN a/macros.kmp b/macros.kmp ---- a/macros.kmp 2019-08-08 06:06:41.000000000 +0000 -+++ b/macros.kmp 2019-08-09 06:55:22.060000000 +0000 -@@ -2,8 +2,8 @@ - redhat_kernel_module_package 1 - kernel_module_package_release 1 - --%__find_provides /usr/lib/rpm/redhat/find-provides --%__find_requires /usr/lib/rpm/redhat/find-requires -+%__find_provides /usr/lib/rpm/generic_os/find-provides -+%__find_requires /usr/lib/rpm/generic_os/find-requires - - #kernel_module_package [ -n name ] [ -v version ] [ -r release ] [ -s script ] - # [ -f filelist] [ -x ] [ -p preamble ] flavor flavor ... -@@ -12,10 +12,10 @@ - kernel-devel - - %kernel_module_package(n:v:r:s:f:xp:) %{expand:%( \ -- %define kmodtool %{-s*}%{!-s:/usr/lib/rpm/redhat/kmodtool} \ -+ %define kmodtool %{-s*}%{!-s:/usr/lib/rpm/generic_os/kmodtool} \ - %define kmp_version %{-v*}%{!-v:%{version}} \ - %define kmp_release %{-r*}%{!-r:%{release}} \ -- %define latest_kernel %(rpm -q --qf '%{VERSION}-%{RELEASE}\\\\n' `rpm -q kernel-devel | /usr/lib/rpm/redhat/rpmsort -r | head -n 1` | head -n 1) \ -+ %define latest_kernel %(rpm -q --qf '%{VERSION}-%{RELEASE}\\\\n' `rpm -q kernel-devel | /usr/lib/rpm/generic_os/rpmsort -r | head -n 1` | head -n 1) \ - %{!?kernel_version:%{expand:%%global kernel_version %{latest_kernel}}} \ - %global kverrel %(%{kmodtool} verrel %{?kernel_version} 2>/dev/null) \ - flavors="default" \ -diff -urN a/redhat-rpm-config.spec b/redhat-rpm-config.spec ---- a/redhat-rpm-config.spec 2019-08-08 06:06:41.000000000 +0000 -+++ b/redhat-rpm-config.spec 2019-08-09 06:55:22.060000000 +0000 -@@ -110,7 +110,7 @@ - - Provides: system-rpm-config = %{version}-%{release} - --%global rrcdir /usr/lib/rpm/redhat -+%global rrcdir /usr/lib/rpm/generic_os - - %description - Red Hat specific rpm configuration files. -@@ -952,7 +952,7 @@ - - * Mon Jul 7 2003 Jens Petersen - 8.0.25-1 - - update config.{guess,sub} to 2003-06-17 --- define VENDOR to be redhat only when /etc/redhat-release present -+- define VENDOR to be redhat only when /etc/generic_os-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 diff --git a/macros b/macros new file mode 100644 index 0000000..e69de29 diff --git a/macros.forge b/macros.forge new file mode 100644 index 0000000..e69de29 diff --git a/macros.fpc-srpm b/macros.fpc-srpm deleted file mode 100644 index d755825..0000000 --- a/macros.fpc-srpm +++ /dev/null @@ -1,3 +0,0 @@ -%fpc_arches %{ix86} %{arm} x86_64 ppc64 -# fpc_arches lists the architectures where the Free Pascal Compiler is -# available in Fedora. diff --git a/macros.ghc-srpm b/macros.ghc-srpm deleted file mode 100644 index 766ab9e..0000000 --- a/macros.ghc-srpm +++ /dev/null @@ -1,7 +0,0 @@ -# Macros needed for building srpms of Haskell packages -# from ghc-7.8 ghci is supported on all arch's -# former archs: armv5tel ppc sparcv9 -%ghc_arches_with_ghci %{ix86} x86_64 armv7hl ppc64 ppc64le aarch64 s390 s390x %{mips} -# ghc_arches is not used in current packages but still here for back compat -# former archs: alpha ppc sparcv9 armv5tel -%ghc_arches %{ix86} x86_64 armv7hl ppc64 ppc64le aarch64 s390 s390x diff --git a/macros.gnat-srpm b/macros.gnat-srpm deleted file mode 100644 index 02df504..0000000 --- a/macros.gnat-srpm +++ /dev/null @@ -1,14 +0,0 @@ -%GNAT_arches %{GPRbuild_arches} ia64 ppc alpha %{ix86} -# GNAT_arches lists the architectures where GNAT is available in Fedora. Ada -# packages won't build on other architectures until GNAT is bootstrapped for -# them. -# (Although not all of these architectures have active maintainer teams in -# Fedora, it seems appropriate to keep this list in agreement with the one in -# gcc.spec.) -%GPRbuild_arches x86_64 ppc64 ppc64p7 ppc64le s390x %{arm} aarch64 -# GPRbuild_arches lists the architectures where GPRbuild is available in Fedora. -# If an architecture is included in GNAT_arches but not in GPRbuild_arches, then -# either GPRbuild hasn't been bootstrapped for that architecture, or there might -# be some architecture-specific problem. -# x86 is excluded from GPRbuild_arches because of -# https://bugzilla.redhat.com/show_bug.cgi?id=1444614 diff --git a/macros.go b/macros.go new file mode 100644 index 0000000..e69de29 diff --git a/macros.go-srpm b/macros.go-srpm deleted file mode 100644 index c1e6e75..0000000 --- a/macros.go-srpm +++ /dev/null @@ -1,170 +0,0 @@ -# Copyright (c) 2015-2018 Jakub Cajka , -# Jan Chaloupka , -# Nicolas Mailhot -# This file is distributed under the terms of GNU GPL license version 3, or -# any later version. - -# This file contains macros for building projects in golang for packages -# with golang compiler or gcc-go compiler based on an architecture. -# Golang is primarly for primary architectures, gcc-go for secondary. -# -# This file provides only macros and must not use any other package except -# redhat-rpm-macros. - -# Define arches for PA and SA -%golang_arches %{ix86} x86_64 %{arm} aarch64 ppc64le s390x -%gccgo_arches %{mips} -%go_arches %{golang_arches} %{gccgo_arches} - -# Where to set GOPATH for builds -%gopath %{_datadir}/gocode - -# Define go_compilers macro to signal go-compiler package is available -%go_compiler 1 - -# Sanitize a Go import path that can then serve as rpm package name -# Mandatory parameter: a Go import path -%gorpmname() %{lua: -local goname = rpm.expand("%1") --- lowercase and end with '/' -goname = string.lower(goname .. "/") --- remove eventual protocol prefix -goname = string.gsub(goname, "^http(s?)://", "") --- remove eventual .git suffix -goname = string.gsub(goname, "%.git/*", "") --- remove eventual git. prefix -goname = string.gsub(goname, "^git%.", "") --- add golang prefix -goname = "golang-" .. goname --- remove FQDN root (.com, .org, etc) -goname = string.gsub(goname, "^([^/]+)%.([^%./]+)/", "%1/") --- special-case x.y.z number-strings as that’s an exception in our naming --- guidelines -repeat - goname, i = string.gsub(goname, "(%d)%.(%d)", "%1:%2") -until i == 0 --- replace various separators rpm does not like with - -goname = string.gsub(goname, "[%._/%-]+", "-") --- because of the Azure sdk -goname = string.gsub(goname, "%-for%-go%-", "-") --- Tokenize along - separators and remove duplicates to avoid --- golang-foo-foo-bar-foo names -local result = "" -local tokens = {} -tokens["go"] = true -for token in string.gmatch(goname, "[^%-]+") do - if not tokens[token] then - result = result .. "-" .. token - tokens[token] = true - end -end --- reassemble the string, restore x.y.z runs, convert the vx.y.z --- Go convention to x.y.z as prefered in rpm naming -result = string.gsub(result, "^-", "") -result = string.gsub(result, ":", ".") --- some projects have a name that end up in a number, and *also* add release --- numbers on top of it, keep a - prefix before version strings -result = string.gsub(result, "%-v([%.%d])", "-%1") -print(result) -} - -# Map Go information to rpm metadata. This macro will compute default spec -# variable values. -# -# The following spec variable MUST be set before calling the macro: -# -# goipath the packaged Go project import path -# -# The following spec variables SHOULD be set before calling the macro: -# -# forgeurl the project url on the forge, strongly recommended, if it can not -# be deduced from goipath; alternatively, use -u -# Version if applicable, set it with 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: -# -# goname an rpm-compatible package name derived from goipath -# gosource an URL that can be used as SourceX: value -# gourl an URL that can be used as URL: value -# -# It will delegate processing to the forgemeta macro for: -# -# 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 Ignore forgeurl even if it exists and use instead. Note -# that the macro will still end up setting 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. -%gometa(u:spvi) %{expand:%{lua: -local forgeurl = rpm.expand("%{?-u*}") -if (forgeurl == "") then - forgeurl = rpm.expand("%{?forgeurl}") -end --- Be explicit about the spec variables we’re setting -local function explicitset(rpmvariable,value) - rpm.define(rpmvariable .. " " .. value) - if (rpm.expand("%{?-v}") ~= "") 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 --- All the Go packaging automation relies on goipath being set -local goipath = rpm.expand("%{?goipath}") -if (goipath == "") then - rpm.expand("%{error:Please set the Go import path in the “goipath” variable before calling “gometa”!}") -end --- Compute and set spec variables -if (forgeurl ~= "") then - rpm.expand("%forgemeta %{?-v} %{?-i} %{?-s} %{?-p} -u " .. forgeurl .. "\\n") - safeset("gourl", forgeurl) -else - safeset("gourl", "https://" .. goipath) - rpm.expand("%forgemeta %{?-v} %{?-i} -s %{?-p} -u %{gourl}\\n") -end -if (rpm.expand("%{?forgesource}") ~= "") then - safeset("gosource", "%{forgesource}") -else - safeset("gosource", "%{gourl}/%{archivename}.%{archiveext}") -end -safeset("goname", "%gorpmname %{goipath}") -rpm.define("gosetup %forgesetup") --- Final spec variable summary if the macro was called with -i -if (rpm.expand("%{?-i}") ~= "") then - rpm.expand("%{echo:Go-specific packaging variables}") - rpm.expand("%{echo: goipath: %{?goipath}}") - rpm.expand("%{echo: goname: %{?goname}}") - rpm.expand("%{echo: gourl: %{?gourl}}") - rpm.expand("%{echo: gosource: %{?gosource}}") -end} -BuildRequires: compiler(go-compiler) -ExclusiveArch: %{go_arches} -} diff --git a/macros.nim-srpm b/macros.nim-srpm deleted file mode 100644 index 8d5b12b..0000000 --- a/macros.nim-srpm +++ /dev/null @@ -1 +0,0 @@ -%nim_arches %{ix86} x86_64 %{arm} aarch64 %{power64} diff --git a/macros.ocaml-srpm b/macros.ocaml-srpm deleted file mode 100644 index 7a5d744..0000000 --- a/macros.ocaml-srpm +++ /dev/null @@ -1,11 +0,0 @@ -# Note that OCaml is compiled on all architectures. However -# on some (rare) architectures, only bytecode compilation is -# available. Use these macros to find out if native code -# compilation is available on a particular architecture. -# Architectures that support the OCaml native code compiler. -%ocaml_native_compiler aarch64 %{arm} %{ix86} ppc ppc64 ppc64le riscv64 s390x sparc sparcv9 x86_64 -# Architectures that support native dynamic linking of OCaml code. -%ocaml_natdynlink aarch64 %{arm} %{ix86} ppc ppc64 ppc64le riscv64 s390x sparc sparcv9 x86_64 -# Architectures that support profiling of native code (ocamlopt -p). -%ocaml_native_profiling %{arm} %{ix86} ppc ppc64 ppc64le sparc sparcv9 x86_64 - diff --git a/macros.openEuler b/macros.openEuler deleted file mode 100644 index 03c682d..0000000 --- a/macros.openEuler +++ /dev/null @@ -1,31 +0,0 @@ -#custom macros - -%disable_rpath \ -sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool \ -sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool - -%delete_la_and_a \ -find $RPM_BUILD_ROOT -type f -name "*.la" -delete \ -find $RPM_BUILD_ROOT -type f -name "*.a" -delete - -%delete_la find $RPM_BUILD_ROOT -type f -name "*.la" -delete - -%chrpath_delete find $RPM_BUILD_ROOT/ -type f -exec file {} ';' | grep "\" | awk -F ':' '{print $1}' | xargs -i chrpath --delete {} - -%package_help \ -%package help \ -Summary: Documents for %{name} \ -Buildarch: noarch \ -Requires: man info \ -\ -%description help \ -Man pages and other related documents for %{name}. - -#%sbin_installinfo_rm bc.info -#%sbin_installinfo_rm bc.info.gz - -%install_info() \ -/sbin/install-info %1 %{_infodir}/dir || : - -%install_info_rm() \ -/sbin/install-info --remove %1 %{_infodir}/dir || : diff --git a/macros.openblas-srpm b/macros.openblas-srpm deleted file mode 100644 index c4f9fdc..0000000 --- a/macros.openblas-srpm +++ /dev/null @@ -1,2 +0,0 @@ -# Architectures that OpenBLAS supports -%openblas_arches x86_64 %{ix86} armv7hl %{power64} aarch64 s390x diff --git a/macros.perl b/macros.perl new file mode 100644 index 0000000..9c1fd0c --- /dev/null +++ b/macros.perl @@ -0,0 +1,151 @@ +# Sensible Perl-specific RPM build macros. +# +# Note that these depend on the generic filtering system being in place in +# rpm core; but won't cause a build to fail if they're not present. +# +# Chris Weyl 2009 +# Marcela Mašláňová 2011 + +# This macro unsets several common vars used to control how Makefile.PL (et +# al) build and install packages. We also set a couple to help some of the +# common systems be less interactive. This was blatantly stolen from +# cpanminus, and helps building rpms locally when one makes extensive use of +# local::lib, etc. +# +# Usage, in %build, before "%{__perl} Makefile.PL ..." +# +# %{?perl_ext_env_unset} + +%perl_ext_env_unset %{expand: +unset PERL_MM_OPT MODULEBUILDRC PERL5INC +export PERL_AUTOINSTALL="--defaultdeps" +export PERL_MM_USE_DEFAULT=1 +} + +############################################################################# +# Filtering macro incantations + +# keep track of what "revision" of the filtering we're at. Each time we +# change the filter we should increment this. + +%perl_default_filter_revision 3 + +# By default, for perl packages we want to filter all files in _docdir from +# req/prov scanning. +# Filtering out any provides caused by private libs in vendorarch/archlib +# (vendor/core) is done by rpmbuild since Fedora 20 +# . +# +# Note that this must be invoked in the spec file, preferably as +# "%{?perl_default_filter}", before any %description block. + +%perl_default_filter %{expand: \ +%global __provides_exclude_from %{?__provides_exclude_from:%__provides_exclude_from|}^%{_docdir} +%global __requires_exclude_from %{?__requires_exclude_from:%__requires_exclude_from|}^%{_docdir} +%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\\\(VMS|^perl\\\\(Win32|^perl\\\\(DB\\\\)|^perl\\\\(UNIVERSAL\\\\) +%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\\\(VMS|^perl\\\\(Win32 +} + +############################################################################# +# Macros to assist with generating a "-tests" subpackage in a semi-automatic +# manner. +# +# The following macros are still in a highly experimental stage and users +# should be aware that the interface and behaviour may change. +# +# PLEASE, PLEASE CONDITIONALIZE THESE MACROS IF YOU USE THEM. +# +# See http://gist.github.com/284409 + +# These macros should be invoked as above, right before the first %description +# section, and conditionalized. e.g., for the common case where all our tests +# are located under t/, the correct usage is: +# +# %{?perl_default_subpackage_tests} +# +# If custom files/directories need to be specified, this can be done as such: +# +# %{?perl_subpackage_tests:%perl_subpackage_tests t/ one/ three.sql} +# +# etc, etc. + +%perl_version %(eval "`%{__perl} -V:version`"; echo $version) +%perl_testdir %{_libexecdir}/perl5-tests +%cpan_dist_name %(eval echo %{name} | %{__sed} -e 's/^perl-//') + +# easily mark something as required by -tests and BR to the main package +%tests_req() %{expand:\ +BuildRequires: %*\ +%%tests_subpackage_requires %*\ +} + +# fixup (and create if needed) the shbang lines in tests, so they work and +# rpmlint doesn't (correctly) have a fit +%fix_shbang_line() \ +TMPHEAD=`mktemp`\ +TMPBODY=`mktemp`\ +for file in %* ; do \ + head -1 $file > $TMPHEAD\ + tail -n +2 $file > $TMPBODY\ + %{__perl} -pi -e '$f = /^#!/ ? "" : "#!%{__perl}$/"; $_="$f$_"' $TMPHEAD\ + cat $TMPHEAD $TMPBODY > $file\ +done\ +%{__perl} -MExtUtils::MakeMaker -e "ExtUtils::MM_Unix->fixin(qw{%*})"\ +%{__rm} $TMPHEAD $TMPBODY\ +%{nil} + +# additional -tests subpackage requires, if any +%tests_subpackage_requires() %{expand: \ +%global __tests_spkg_req %{?__tests_spkg_req} %* \ +} + +# additional -tests subpackage provides, if any +%tests_subpackage_provides() %{expand: \ +%global __tests_spkg_prov %{?__tests_spkg_prov} %* \ +} + +# +# Runs after the body of %check completes. +# + +%__perl_check_pre %{expand: \ +%{?__spec_check_pre} \ +pushd %{buildsubdir} \ +%define perl_br_testdir %{buildroot}%{perl_testdir}/%{cpan_dist_name} \ +%{__mkdir_p} %{perl_br_testdir} \ +%{__tar} -cf - %{__perl_test_dirs} | ( cd %{perl_br_testdir} && %{__tar} -xf - ) \ +find . -maxdepth 1 -type f -name '*META*' -exec %{__cp} -vp {} %{perl_br_testdir} ';' \ +find %{perl_br_testdir} -type f -exec %{__chmod} -c -x {} ';' \ +T_FILES=`find %{perl_br_testdir} -type f -name '*.t'` \ +%fix_shbang_line $T_FILES \ +%{__chmod} +x $T_FILES \ +%{_fixperms} %{perl_br_testdir} \ +popd \ +} + +# +# The actual invoked macro +# + +%perl_subpackage_tests() %{expand: \ +%global __perl_package 1\ +%global __perl_test_dirs %* \ +%global __spec_check_pre %{expand:%{__perl_check_pre}} \ +%package tests\ +Summary: Test suite for package %{name}\ +Group: Development/Debug\ +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}\ +Requires: /usr/bin/prove \ +%{?__tests_spkg_req:Requires: %__tests_spkg_req}\ +%{?__tests_spkg_prov:Provides: %__tests_spkg_prov}\ +AutoReqProv: 0 \ +%description tests\ +This package provides the test suite for package %{name}.\ +%files tests\ +%defattr(-,root,root,-)\ +%{perl_testdir}\ +} + +# shortcut sugar +%perl_default_subpackage_tests %perl_subpackage_tests t/ + diff --git a/macros.perl-srpm b/macros.perl-srpm deleted file mode 100644 index a284fcf..0000000 --- a/macros.perl-srpm +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright (c) 2012 Petr Pisar . -# This file is distributed under the terms of GNU GPL license version 3, or -# any later version. -# This file contains macros that can be used for building source RPM package -# from git source repository. This file must present in minimal build root to -# take effect. -# This file must not use Perl or any non-minimal-build-root package. The -# purpose is to enable bootstrapping perl. - -# Perl bootstrap For rebuild of Perl and all related packages is needed -# switch, which enable only vital build requires. This could help cyclic -# dependencies, for example: perl-Test-Minimum-Version <-> -# perl-Perl-Minimum-Version Defined for bootstraping, undefined otherwise. -# Usage: %%if !%%{defined perl_bootstrap} ... %%endif -#%%perl_bootstrap 1 diff --git a/macros.pybytecompile b/macros.pybytecompile deleted file mode 100644 index a41b3a2..0000000 --- a/macros.pybytecompile +++ /dev/null @@ -1,19 +0,0 @@ -# Note that the path could itself be a python file, or a directory - -# Python's compile_all module only works on directories, and requires a max -# recursion depth - -# Usage: -# %py_byte_compile -# Example: -# %py_byte_compile %{__python3} %{buildroot}%{_datadir}/spam/plugins/ - -# This will terminate build on SyntaxErrors, if you want to avoid that, -# use it in a subshell like this: -# (%{py_byte_compile }) || : - -%py_byte_compile()\ -python_binary="%1"\ -bytecode_compilation_path="%2"\ -find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -O -m py_compile\ -find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -m py_compile diff --git a/macros.python b/macros.python index 70eb148..e69de29 100644 --- a/macros.python +++ b/macros.python @@ -1,81 +0,0 @@ -%py_setup setup.py -%py_shbang_opts -s - -# Use the slashes after expand so that the command starts on the same line as -# the macro -%py_build() %{expand:\\\ - CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ - %{__python} %{py_setup} %{?py_setup_args} build --executable="%{__python} %{py_shbang_opts}" %{?*} - sleep 1 -} - -%py_build_egg() %{expand:\\\ - CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ - %{__python} %{py_setup} %{?py_setup_args} bdist_egg %{?*} - sleep 1 -} - -%py_build_wheel() %{expand:\\\ - CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ - %{__python} %{py_setup} %{?py_setup_args} bdist_wheel %{?*} - sleep 1 -} - -%py_install() %{expand:\\\ - CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ - %{__python} %{py_setup} %{?py_setup_args} install -O1 --skip-build --root %{buildroot} %{?*} -} - -%py_install_egg() %{expand:\\\ - mkdir -p %{buildroot}%{python_sitelib} - easy_install -m --prefix %{buildroot}%{_prefix} -Z dist/*-py%{python_version}.egg %{?*} -} - -%py_install_wheel() %{expand:\\\ - pip install -I dist/%{1} --root %{buildroot} --strip-file-prefix %{buildroot} --no-deps -} - -%python_provide() %{lua: - function string.starts(String,Start) - return string.sub(String,1,string.len(Start))==Start - end - package = rpm.expand("%{?1}") - vr = rpm.expand("%{?epoch:%{epoch}:}%{version}-%{release}") - if (string.starts(package, "python2-")) then - if (rpm.expand("%{?buildarch}") ~= "noarch") then - str = "Provides: python-" .. string.sub(package,9,string.len(package)) .. "%{?_isa} = " .. vr - print(rpm.expand(str)) - end - print("\\nProvides: python-") - print(string.sub(package,9,string.len(package))) - print(" = ") - print(vr) - --Obsoleting the previous default python package - print("\\nObsoletes: python-") - print(string.sub(package,9,string.len(package))) - print(" < ") - print(vr) - elseif (string.starts(package, "python" .. rpm.expand("%{python3_pkgversion}") .. "-")) then - --No unversioned provides as python3 is not default - elseif (rpm.expand("%{?python3_other_pkgversion}") ~= "" and string.starts(package, "python" .. rpm.expand("%{python3_other_pkgversion}") .. "-")) then - --No unversioned provides as python3_other is not default - elseif (string.starts(package, "pypy-")) then - --No unversioned provides as pypy is not default - elseif (string.starts(package, "pypy3-")) then - --No unversioned provides as pypy is not default - elseif (string.starts(package, "python-")) then - --Providing the current default python - print("Provides: python2-") - print(string.sub(package,8,string.len(package))) - print(" = ") - print(vr) - else - print("%python_provide: ERROR: ") - print(package) - print(" not recognized.") - end -} - -%python_enable_dependency_generator() \ -%global __pythondist_requires %{_rpmconfigdir}/pythondistdeps.py --requires \ -%{nil} diff --git a/macros.python-srpm b/macros.python-srpm deleted file mode 100644 index c4bdd1c..0000000 --- a/macros.python-srpm +++ /dev/null @@ -1,107 +0,0 @@ -# python3_pkgversion specifies the version of Python 3 in the distro. It can be -# a specific version (e.g. 34 in Fedora EPEL7) -%python3_pkgversion 3 - -# Set to /bin/true to avoid %ifdefs and %{? in specfiles -%__python3_other /bin/true -%py3_other_build /bin/true -%py3_other_install /bin/true - - - -# === Macros for Build/Requires tags using Python dist tags === -# - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages -# - These macros need to be in macros.python-srpm, because BuildRequires tags -# get rendered as runtime requires into the metadata of SRPMs. - -# Converts Python dist name to a canonical format -%py_dist_name() %{lua:\ - name = rpm.expand("%{?1:%{1}}");\ - canonical = string.gsub(string.lower(name), "[^%w%.]+", "-");\ - print(canonical);\ -} - -# Creates Python 2 dist tag(s) after converting names to canonical format -# Needs to first put all arguments into a list, because invoking a different -# macro (%py_dist_name) overwrites them -%py2_dist() %{lua:\ - args = {}\ - arg = 1\ - while (true) do\ - name = rpm.expand("%{?" .. arg .. ":%{" .. arg .. "}}");\ - if (name == nil or name == '') then\ - break\ - end\ - args[arg] = name\ - arg = arg + 1\ - end\ - for arg, name in ipairs(args) do\ - canonical = rpm.expand("%py_dist_name " .. name);\ - print("python2dist(" .. canonical .. ") ");\ - end\ -} - -# Creates Python 3 dist tag(s) after converting names to canonical format -# Needs to first put all arguments into a list, because invoking a different -# macro (%py_dist_name) overwrites them -%py3_dist() %{lua:\ - args = {}\ - arg = 1\ - while (true) do\ - name = rpm.expand("%{?" .. arg .. ":%{" .. arg .. "}}");\ - if (name == nil or name == '') then\ - break\ - end\ - args[arg] = name\ - arg = arg + 1\ - end\ - for arg, name in ipairs(args) do\ - canonical = rpm.expand("%py_dist_name " .. name);\ - print("python3dist(" .. canonical .. ") ");\ - end\ -} - -# Macro to replace overly complicated references to PyPI source files. -# Expands to the pythonhosted URL for a package -# Accepts zero to three arguments: -# 1: The PyPI project name, defaulting to %srcname if it is defined, then -# %pypi_name if it is defined, then just %name. -# 2: The PYPI version, defaulting to %version. -# 3: The file extension, defaulting to "tar.gz". (A period will be added -# automatically.) -# Requires %__pypi_url and %__pypi_default_extension to be defined. -%__pypi_url https://files.pythonhosted.org/packages/source/ -%__pypi_default_extension tar.gz - -%pypi_source() %{lua: - local src = rpm.expand('%1') - local ver = rpm.expand('%2') - local ext = rpm.expand('%3') - local url = rpm.expand('%__pypi_url') -\ - -- If no first argument, try %srcname, then %pypi_name, then %name - -- Note that rpm leaves macros unchanged if they are not defined. - if src == '%1' then - src = rpm.expand('%srcname') - end - if src == '%srcname' then - src = rpm.expand('%pypi_name') - end - if src == '%pypi_name' then - src = rpm.expand('%name') - end -\ - -- If no second argument, use %version - if ver == '%2' then - ver = rpm.expand('%version') - end -\ - -- If no third argument, use the preset default extension - if ext == '%3' then - ext = rpm.expand('%__pypi_default_extension') - end -\ - local first = string.sub(src, 1, 1) -\ - print(url .. first .. '/' .. src .. '/' .. src .. '-' .. ver .. '.' .. ext) -} diff --git a/macros.python2 b/macros.python2 deleted file mode 100644 index d6c74c2..0000000 --- a/macros.python2 +++ /dev/null @@ -1,41 +0,0 @@ -%__python2 /usr/bin/python2 -%python2_sitelib %(%{__python2} -Esc "from distutils.sysconfig import get_python_lib; print(get_python_lib())") -%python2_sitearch %(%{__python2} -Esc "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))") -%python2_version %(%{__python2} -Esc "import sys; sys.stdout.write('{0.major}.{0.minor}'.format(sys.version_info))") -%python2_version_nodots %(%{__python2} -Esc "import sys; sys.stdout.write('{0.major}{0.minor}'.format(sys.version_info))") - -%py2_shbang_opts -s - -# Use the slashes after expand so that the command starts on the same line as -# the macro -%py2_build() %{expand:\\\ - CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ - %{__python2} %{py_setup} %{?py_setup_args} build --executable="%{__python2} %{py2_shbang_opts}" %{?*} - sleep 1 -} - -%py2_build_egg() %{expand:\\\ - CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ - %{__python2} %{py_setup} %{?py_setup_args} bdist_egg %{?*} - sleep 1 -} - -%py2_build_wheel() %{expand:\\\ - CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ - %{__python2} %{py_setup} %{?py_setup_args} bdist_wheel %{?*} - sleep 1 -} - -%py2_install() %{expand:\\\ - CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ - %{__python2} %{py_setup} %{?py_setup_args} install -O1 --skip-build --root %{buildroot} %{?*} -} - -%py2_install_egg() %{expand:\\\ - mkdir -p %{buildroot}%{python2_sitelib} - easy_install-%{python2_version} -m --prefix %{buildroot}%{_prefix} -Z dist/*-py%{python2_version}.egg %{?*} -} - -%py2_install_wheel() %{expand:\\\ - pip%{python2_version} install -I dist/%{1} --root %{buildroot} --strip-file-prefix %{buildroot} --no-deps -} diff --git a/macros.python3 b/macros.python3 deleted file mode 100644 index 25c6f62..0000000 --- a/macros.python3 +++ /dev/null @@ -1,43 +0,0 @@ -%__python3 /usr/bin/python3 -%python3_sitelib %(%{__python3} -Ic "from distutils.sysconfig import get_python_lib; print(get_python_lib())") -%python3_sitearch %(%{__python3} -Ic "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))") -%python3_version %(%{__python3} -Ic "import sys; sys.stdout.write(sys.version[:3])") -%python3_version_nodots %(%{__python3} -Ic "import sys; sys.stdout.write(sys.version[:3].replace('.',''))") -%python3_platform %(%{__python3} -Ic "import sysconfig; print(sysconfig.get_platform())") -%py3dir %{_builddir}/python3-%{name}-%{version}-%{release} - -%py3_shbang_opts -s - -# Use the slashes after expand so that the command starts on the same line as -# the macro -%py3_build() %{expand:\\\ - CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ - %{__python3} %{py_setup} %{?py_setup_args} build --executable="%{__python3} %{py3_shbang_opts}" %{?*} - sleep 1 -} - -%py3_build_egg() %{expand:\\\ - CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ - %{__python3} %{py_setup} %{?py_setup_args} bdist_egg %{?*} - sleep 1 -} - -%py3_build_wheel() %{expand:\\\ - CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ - %{__python3} %{py_setup} %{?py_setup_args} bdist_wheel %{?*} - sleep 1 -} - -%py3_install() %{expand:\\\ - CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ - %{__python3} %{py_setup} %{?py_setup_args} install -O1 --skip-build --root %{buildroot} %{?*} -} - -%py3_install_egg() %{expand:\\\ - mkdir -p %{buildroot}%{python3_sitelib} - easy_install-%{python3_version} -m --prefix %{buildroot}%{_prefix} -Z dist/*-py%{python3_version}.egg %{?*} -} - -%py3_install_wheel() %{expand:\\\ - pip%{python3_version} install -I dist/%{1} --root %{buildroot} --strip-file-prefix %{buildroot} --no-deps -} diff --git a/macros.rust-srpm b/macros.rust-srpm deleted file mode 100644 index f2bae9d..0000000 --- a/macros.rust-srpm +++ /dev/null @@ -1 +0,0 @@ -%rust_arches x86_64 i686 armv7hl aarch64 ppc64 ppc64le s390x diff --git a/openEuler-hardened-cc1 b/openEuler-hardened-cc1 new file mode 100644 index 0000000..fc54bcb --- /dev/null +++ b/openEuler-hardened-cc1 @@ -0,0 +1,2 @@ +*cc1_options: ++ %{!r:%{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}} diff --git a/openEuler-hardened-ld b/openEuler-hardened-ld new file mode 100644 index 0000000..bd6b907 --- /dev/null +++ b/openEuler-hardened-ld @@ -0,0 +1,2 @@ +*self_spec: ++ %{!static:%{!shared:%{!r:-pie}}} diff --git a/openEuler-pie-cc1 b/openEuler-pie-cc1 new file mode 100644 index 0000000..95615fa --- /dev/null +++ b/openEuler-pie-cc1 @@ -0,0 +1,2 @@ +*cc1_options: ++ %{!r:%{!D__KERNEL__:%{!pie:%{!fpic:%{!fPIC:%{!fpie:%{!fPIE:%{!fno-pic:%{!fno-PIC:%{!fno-pie:%{!fno-PIE:%{!shared:%{!static:%{!nostdlib:%{!nostartfiles:-fPIE}}}}}}}}}}}}}}} diff --git a/openEuler-pie-ld b/openEuler-pie-ld new file mode 100644 index 0000000..ff33f64 --- /dev/null +++ b/openEuler-pie-ld @@ -0,0 +1,2 @@ +*self_spec: ++ %{!D__KERNEL__:%{!pie:%{!A:%{!fno-pie:%{!fno-PIE:%{!fno-pic:%{!fno-PIC:%{!shared:%{!static:%{!r:%{!nostdlib:%{!nostartfiles:-pie}}}}}}}}}}}} diff --git a/openeuler-fs-cc1 b/openeuler-fs-cc1 new file mode 100644 index 0000000..199a711 --- /dev/null +++ b/openeuler-fs-cc1 @@ -0,0 +1,2 @@ +*cc1_options: ++ %{!D__KERNEL__:%{!nostdlib:%{!nodefaultlibs:%{!fno-stack-protector:%{!fstack-protector-all:-fstack-protector-strong}}}}} diff --git a/redhat-rpm-config-118.tar.gz b/redhat-rpm-config-118.tar.gz deleted file mode 100644 index cfce2053eb8950270ea4cc25f3291b7f684cbd37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61142 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 diff --git a/remove-fcf-protection-for-gcc-7.3.0-x86_64.patch b/remove-fcf-protection-for-gcc-7.3.0-x86_64.patch deleted file mode 100644 index beab11e..0000000 --- a/remove-fcf-protection-for-gcc-7.3.0-x86_64.patch +++ /dev/null @@ -1,25 +0,0 @@ -From b2723527bfbfa90d5fc77bf171a13e934d707471 Mon Sep 17 00:00:00 2001 -From: jiangchuangang -Date: Fri, 15 Nov 2019 11:13:48 +0800 -Subject: [PATCH] remove -fcf-protection for gcc-7.3.0 x86_64, -fcf-protection require GCC 8. - ---- - rpmrc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/rpmrc b/rpmrc -index 630c8c0..0b516aa 100644 ---- a/rpmrc -+++ b/rpmrc -@@ -6,7 +6,7 @@ optflags: i586 %{__global_compiler_flags} -m32 -march=i586 -mtune=generic -fasyn - optflags: i686 %{__global_compiler_flags} -m32 -march=i686 -mtune=generic -msse2 -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: x86_64 %{__global_compiler_flags} -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection - - optflags: alpha %{__global_compiler_flags} -mieee - optflags: alphaev5 %{__global_compiler_flags} -mieee -mcpu=ev5 --- -2.19.1 - diff --git a/rpmrc b/rpmrc new file mode 100644 index 0000000..5ff42a8 --- /dev/null +++ b/rpmrc @@ -0,0 +1,19 @@ +include: /usr/lib/rpm/rpmrc + +optflags: i686 %{__global_compiler_flags} -m32 -march=i686 -mtune=generic -msse2 -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 + +optflags: aarch64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection + +buildarchtranslate: athlon: i686 +buildarchtranslate: geode: i686 +buildarchtranslate: pentium4: i686 +buildarchtranslate: pentium3: i686 +buildarchtranslate: i686: i686 +buildarchtranslate: i586: i586 + +buildarchtranslate: armv7l: armv5tel +buildarchtranslate: armv7hl: armv7hl +buildarchtranslate: armv7hnl: armv7hl -- Gitee From 84fb8b96cc9f18cdbeba00159cd3ce9e6ece805c Mon Sep 17 00:00:00 2001 From: syyhao Date: Mon, 13 Jan 2020 13:29:43 +0800 Subject: [PATCH 2/3] update config.guess. --- config.guess | 1462 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1462 insertions(+) diff --git a/config.guess b/config.guess index e69de29..463631a 100644 --- a/config.guess +++ b/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 . +# +# 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 . + + +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 ." + +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 + #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 /* 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 + + 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 + #include + + 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 + 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' /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 + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # 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 </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: \ No newline at end of file -- Gitee From dc22eb9b26d4844fab07ff1d6c2729b948c2f876 Mon Sep 17 00:00:00 2001 From: syyhao Date: Mon, 13 Jan 2020 13:35:54 +0800 Subject: [PATCH 3/3] update file for openEuler --- config.sub | 1823 ++++++++++++++++++++++++++++++++++++++++++++++++++ macros | 294 ++++++++ macros.forge | 283 ++++++++ macros.go | 170 +++++ 4 files changed, 2570 insertions(+) diff --git a/config.sub b/config.sub index e69de29..c91fcf8 100644 --- a/config.sub +++ b/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 . +# +# 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 . +# +# 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 ." + +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: \ No newline at end of file diff --git a/macros b/macros index e69de29..0d2abaa 100644 --- a/macros +++ b/macros @@ -0,0 +1,294 @@ +# Per-platform rpm configuration file. + +%_vendor %{?_vendor:%{_vendor}}%{!?_vendor:openEuler} +%_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. + +%build_cflags %{optflags} +%build_cxxflags %{optflags} +%build_fflags %{optflags} -I%{_fmoddir} +%build_ldflags -Wl,-z,relro %{_ld_as_needed_flags} %{_ld_symbols_flags} %{_hardened_ldflags} + +%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 + +#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 +%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/openEuler/$(basename $i) ] && %{__rm} -f $i && %{__cp} -fv /usr/lib/rpm/openEuler/$(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} + +# ---- Build policy macros. + +%__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/openEuler/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}" "%{?_python_bytecompile_errors_terminate_build}" "%{?_python_bytecompile_extra}" +%__brp_python_hardlink /usr/lib/rpm/brp-python-hardlink + +%__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} \ +%{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 +## Should python bytecompilation compile outisde python specific directories? +%_python_bytecompile_extra 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 + + +# secure options for rpmbuild +# +# #hardened options +%_hardening_cflags -specs=/usr/lib/rpm/%{_vendor}/openEuler-hardened-cc1 +%_hardening_ldflags -Wl,-z,now -specs=/usr/lib/rpm/%{_vendor}/openEuler-hardened-ld +# Use "%undefine _hardened_build" to disable. +%_hardened_build 1 +%_hardened_cflags %{?_hardened_build:%{_hardening_cflags}} +%_hardened_ldflags %{?_hardened_build:%{_hardening_ldflags}} + +#secure options pie +%_sec_opt_build 1 +#Use "%undefine _sec_opt_build" to disable. +#Use "%undefine _pie_build" to disable. +%_pie_build 1 +%_pie_pre_cflags -specs=/usr/lib/rpm/%{_vendor}/openEuler-pie-cc1 +%_pie_pre_ldflags -Wl,-z,now -specs=/usr/lib/rpm/%{_vendor}/openEuler-pie-ld +%_pie_cflags %{?_sec_opt_build:?_pie_build:%{_pie_pre_cflags}} +%_pie_ldflags %{?_sec_opt_build:?_pie_build:%{_pie_pre_ldflags}} + +#Use "%undefine _fs_build" to disable. +%_fs_build 1 +%_fs_pre_cflags -specs=/usr/lib/rpm/%{_vendor}/openEuler-fs-cc1 +%_fs_cflags %{?_fs_build:%{_fs_pre_cflags}} + + +# Fail linking if there are undefined symbols. Required for proper +# ELF symbol versioning support. Disabled by default. +# Use "%define _ld_strict_symbol_defs 1" to enable. +#%_ld_strict_symbol_defs 1 +%_ld_symbols_flags %{?_ld_strict_symbol_defs:-Wl,-z,defs} + +# use "%define _ld_as_needed 1" to enable. +#%_ld_as_needed 1 +%_ld_as_needed_flags %{?_ld_as_needed:-Wl,--as-needed} + +%__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} + +# Automatically trim changelog entries after 2 years +%_changelog_trimtime %{lua:print(os.time() - 2 * 365 * 86400)} + +#============================================================================== +# ---- Generic auto req/prov filtering macros + +# 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}" \ +} + +# compare two versions, returns -1, 0, 1, ~~~ +%rpm_vercmp() %{lua:print(rpm.expand('%1') == '~~~' and '~~~' or rpm.vercmp(rpm.expand('%1'), rpm.expand('%2')))} +# expand to the installed version of a package/provides +%pkg_version() %(LC_ALL=C rpm -q --whatprovides --qf "%%{version}" "%1" | sed -e "s/^no package provides .*/~~~/") +# compare the installed version to a value. returns -1, 0, 1, ~~~ +%pkg_version_cmp() %{expand:%{expand:%%%%{rpm_vercmp %%{pkg_version %1} %%2}}} +# convenience/readability +%pkg_vcmp() (%{expand:%%{pkg_version_cmp %1 %3}} %2 0) + +#arches macros +%generic_arches %{ix86} x86_64 %{arm} aarch64 +%ldc_arches %{generic_arches} +%valgrind_arches %{generic_arches} +%nodejs_arches %{generic_arches} +%ldc_arches %{generic_arches} +%mono_arches %{generic_arches} +%fpc_arches %{generic_arches} +%ghc_arches_with_ghci %{generic_arches} +%ghc_arches %{generic_arches} +%GNAT_arches %{GPRbuild_arches} %{generic_arches} +%GPRbuild_arches %{generic_arches} +%nim_arches %{generic_arches} +%nodejs_arches %{generic_arches} +%ocaml_native_compiler %{generic_arches} +%ocaml_natdynlink %{generic_arches} +%ocaml_native_profiling %{generic_arches} +%openblas_arches %{generic_arches} + +#%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*}}\ +} + +# Some miscellaneous macros +%_metainfodir %{_datadir}/metainfo +%rpmmacrodir /usr/lib/rpm/macros.d + +# arches that mono builds on +%_monogacdir %{_monodir}/gac +%_monodir %{_prefix}/lib/mono + +# ---- VPATH default settings +%_vpath_builddir %_target_platform +%_vpath_srcdir . + + +# ---- custom macros +%disable_rpath \ +sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool \ +sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool + +%delete_la_and_a \ +find $RPM_BUILD_ROOT -type f -name "*.la" -delete \ +find $RPM_BUILD_ROOT -type f -name "*.a" -delete + +%delete_la find $RPM_BUILD_ROOT -type f -name "*.la" -delete + +%chrpath_delete find $RPM_BUILD_ROOT/ -type f -exec file {} ';' | grep "\" | awk -F ':' '{print $1}' | xargs -i chrpath --delete {} + +%package_help \ +%package help \ +Summary: Documents for %{name} \ +Buildarch: noarch \ +Requires: man info \ +\ +%description help \ +Man pages and other related documents for %{name}. + +#%sbin_installinfo_rm bc.info +#%sbin_installinfo_rm bc.info.gz + +%install_info() \ +/sbin/install-info %1 %{_infodir}/dir || : + +%install_info_rm() \ +/sbin/install-info --remove %1 %{_infodir}/dir || : diff --git a/macros.forge b/macros.forge index e69de29..49aa489 100644 --- a/macros.forge +++ b/macros.forge @@ -0,0 +1,283 @@ +# 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 +# Version if applicable, set it with Version: +# tag if applicable +# commit if applicable +# date if applicable (to override the mtime of the Source archive) +# +# 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 Ignore forgeurl even if it exists and use instead. Note +# that the macro will still end up setting 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 = ".%{?date}%{!?date:%([ -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 either manually supplied or 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/macros.go b/macros.go index e69de29..c359d1e 100644 --- a/macros.go +++ b/macros.go @@ -0,0 +1,170 @@ +# Copyright (c) 2015-2018 Jakub Cajka , +# Jan Chaloupka , +# Nicolas Mailhot +# This file is distributed under the terms of GNU GPL license version 3, or +# any later version. + +# This file contains macros for building projects in golang for packages +# with golang compiler or gcc-go compiler based on an architecture. +# Golang is primarly for primary architectures, gcc-go for secondary. +# +# This file provides only macros and must not use any other package except +# redhat-rpm-macros. + +# Define arches for PA and SA +%golang_arches %{ix86} x86_64 %{arm} aarch64 ppc64le s390x +%gccgo_arches %{mips} +%go_arches %{golang_arches} %{gccgo_arches} + +# Where to set GOPATH for builds +%gopath %{_datadir}/gocode + +# Define go_compilers macro to signal go-compiler package is available +%go_compiler 1 + +# Sanitize a Go import path that can then serve as rpm package name +# Mandatory parameter: a Go import path +%gorpmname() %{lua: +local goname = rpm.expand("%1") +-- lowercase and end with '/' +goname = string.lower(goname .. "/") +-- remove eventual protocol prefix +goname = string.gsub(goname, "^http(s?)://", "") +-- remove eventual .git suffix +goname = string.gsub(goname, "%.git/*", "") +-- remove eventual git. prefix +goname = string.gsub(goname, "^git%.", "") +-- add golang prefix +goname = "golang-" .. goname +-- remove FQDN root (.com, .org, etc) +goname = string.gsub(goname, "^([^/]+)%.([^%./]+)/", "%1/") +-- special-case x.y.z number-strings as that’s an exception in our naming +-- guidelines +repeat + goname, i = string.gsub(goname, "(%d)%.(%d)", "%1:%2") +until i == 0 +-- replace various separators rpm does not like with - +goname = string.gsub(goname, "[%._/%-]+", "-") +-- because of the Azure sdk +goname = string.gsub(goname, "%-for%-go%-", "-") +-- Tokenize along - separators and remove duplicates to avoid +-- golang-foo-foo-bar-foo names +local result = "" +local tokens = {} +tokens["go"] = true +for token in string.gmatch(goname, "[^%-]+") do + if not tokens[token] then + result = result .. "-" .. token + tokens[token] = true + end +end +-- reassemble the string, restore x.y.z runs, convert the vx.y.z +-- Go convention to x.y.z as prefered in rpm naming +result = string.gsub(result, "^-", "") +result = string.gsub(result, ":", ".") +-- some projects have a name that end up in a number, and *also* add release +-- numbers on top of it, keep a - prefix before version strings +result = string.gsub(result, "%-v([%.%d])", "-%1") +print(result) +} + +# Map Go information to rpm metadata. This macro will compute default spec +# variable values. +# +# The following spec variable MUST be set before calling the macro: +# +# goipath the packaged Go project import path +# +# The following spec variables SHOULD be set before calling the macro: +# +# forgeurl the project url on the forge, strongly recommended, if it can not +# be deduced from goipath; alternatively, use -u +# Version if applicable, set it with 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: +# +# goname an rpm-compatible package name derived from goipath +# gosource an URL that can be used as SourceX: value +# gourl an URL that can be used as URL: value +# +# It will delegate processing to the forgemeta macro for: +# +# 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 Ignore forgeurl even if it exists and use instead. Note +# that the macro will still end up setting 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. +%gometa(u:spvi) %{expand:%{lua: +local forgeurl = rpm.expand("%{?-u*}") +if (forgeurl == "") then + forgeurl = rpm.expand("%{?forgeurl}") +end +-- Be explicit about the spec variables we’re setting +local function explicitset(rpmvariable,value) + rpm.define(rpmvariable .. " " .. value) + if (rpm.expand("%{?-v}") ~= "") 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 +-- All the Go packaging automation relies on goipath being set +local goipath = rpm.expand("%{?goipath}") +if (goipath == "") then + rpm.expand("%{error:Please set the Go import path in the “goipath” variable before calling “gometa”!}") +end +-- Compute and set spec variables +if (forgeurl ~= "") then + rpm.expand("%forgemeta %{?-v} %{?-i} %{?-s} %{?-p} -u " .. forgeurl .. "\\n") + safeset("gourl", forgeurl) +else + safeset("gourl", "https://" .. goipath) + rpm.expand("%forgemeta %{?-v} %{?-i} -s %{?-p} -u %{gourl}\\n") +end +if (rpm.expand("%{?forgesource}") ~= "") then + safeset("gosource", "%{forgesource}") +else + safeset("gosource", "%{gourl}/%{archivename}.%{archiveext}") +end +safeset("goname", "%gorpmname %{goipath}") +rpm.define("gosetup %forgesetup") +-- Final spec variable summary if the macro was called with -i +if (rpm.expand("%{?-i}") ~= "") then + rpm.expand("%{echo:Go-specific packaging variables}") + rpm.expand("%{echo: goipath: %{?goipath}}") + rpm.expand("%{echo: goname: %{?goname}}") + rpm.expand("%{echo: gourl: %{?gourl}}") + rpm.expand("%{echo: gosource: %{?gosource}}") +end} +BuildRequires: compiler(go-compiler) +ExclusiveArch: %{go_arches} +} -- Gitee