diff --git a/.gitignore b/.gitignore index 15a72d4..2148a7e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,118 +1,19 @@ -*.bak -*.gypcmd -*.mk -*.ncb -*.opensdf -*.orig -*.pdb -*.props -*.pyc -*.pyproj -*.rules -*.sdf -*.sln -*.sublime-project -*.sublime-workspace -*.suo -*.targets -*.user -*.vc.opendb -*.vcproj -*.vcxproj -*.vcxproj.filters -*.vpj -*.vpw -*.vpwhistu -*.vtg -*.xcodeproj -*.xcworkspace -*.VC.db -*_proto.xml -*_proto_cpp.xml -*~ -!Android.mk -.*.sw? -.DS_Store -.cache -.cipd -.classpath -.cproject -.gdb_history -.gdbinit -.landmines -.metadata -.project -.pydevproject -.recipe_deps -.checkstyle -/clang -compile_commands.json -cscope.* -out/ -GPATH -GRTAGS -GSYMS -GTAGS -Session.vim -tags -Thumbs.db -# Settings directories for eclipse -/.externalToolBuilders/ -/.settings/ -/.vs/ -# Visual Studio Code -/.vscode/ -/_out -# VSChromium configuration file -vs-chromium-project.txt -/gn-22581fb46c0c.tar.gz -/gn-cfddfffb7913.tar.gz -/gn-93ee9b91423c.tar.gz -/gn-415b3b19e094.tar.gz -/gn-d823fd85da3f.tar.gz -/gn-155c53952ec2.tar.gz -/gn-b0c2742896b6.tar.gz -/gn-df98b86690c8.tar.gz -/gn-d010969ecc31.tar.gz -/gn-b3a0bff47dd8.tar.gz -/gn-b2afae122eeb.tar.gz -/gn-0ee833e823f2.tar.gz -/gn-8f2193f70793.tar.gz -/gn-05eed8f6252e.tar.gz -/gn-449f3e4dfb45.tar.gz -/gn-54f5b539df8c.tar.gz -/gn-32f63e70484f.tar.gz -/gn-d010e218ca70.tar.gz -/gn-225e90c5025b.tar.gz -/gn-20806f79c6b4.tar.gz -/gn-95b0f8fe31a9.tar.gz -/gn-feafd1012a32.tar.gz -/gn-468c6128db7f.tar.gz -/gn-c97a86a72105.tar.gz -/gn-ed1abc107815.tar.gz -/gn-ab638bd7cbb9.tar.gz -/gn-4a8016dc3915.tar.gz -/gn-3d0d3445f67d.tar.gz -/gn-7a8aa3a08a13.tar.gz -/gn-18602f6cf116.tar.gz -/gn-6e8e0d6d4a15.tar.gz -/gn-90478db6b59b.tar.gz -/gn-487f8353f154.tar.gz -/gn-0c25d1bbde6e.tar.gz -/gn-cad8f67e2dd0.tar.gz -/gn-ebc8f16ca7b0.tar.gz -/gn-afd24ed11bc5.tar.gz -/gn-54169531ed6d.tar.gz -/gn-635a71e20e99.tar.gz -/gn-c15bfa41e526.tar.gz -/gn-5d0a4153b0bc.tar.gz -/gn-aa3ecaecac29.tar.gz -/gn-81b24e01531e.tar.gz -/gn-07d3c6f4dc29.tar.gz -/gn-092f4f0d612e.tar.gz -/gn-e7f3202128bd.tar.gz -/gn-c5a0003bcc2a.tar.gz -/gn-5964f4997670.tar.gz -/gn-64d35867ca0a.tar.gz -/gn-5550ba0f4053.tar.gz -/gn-9673115bc14c.tar.gz +/64b3b9401c1c3ed5f3c43c1cac00b91f83597ab8.tar.gz +/gn-64b3b940.tar.gz +/gn-b2e3d862.tar.gz +/gn-a95c8a3c.tar.gz +/gn-dba01723.tar.gz +/gn-6771ce56.tar.gz +/gn-39a87c0b.tar.gz +/gn-d2dce752.tar.gz +/gn-e9b84332.tar.gz +/gn-d924640c.tar.gz +/gn-4d207c94.tar.gz +/gn-24e2f7df.tar.gz +/gn-d565aa3e.tar.gz +/gn-eea3906f.tar.gz +/gn-69ec4fca.tar.gz +/gn-46b572ce.tar.gz +/gn-07e2e1b9.tar.gz +/gn-de86ec41.tar.gz +/gn-0153d369.tar.gz diff --git a/0001-Downstream-only-do-not-override-optimization-flags.patch b/0001-Downstream-only-do-not-override-optimization-flags.patch deleted file mode 100644 index 2b97a74..0000000 --- a/0001-Downstream-only-do-not-override-optimization-flags.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 8969bb39cc827bd36a9fd5b5742eb645fb2c4bf6 Mon Sep 17 00:00:00 2001 -From: "Benjamin A. Beasley" -Date: Thu, 30 May 2024 08:49:32 -0400 -Subject: [PATCH 1/2] Downstream-only: do not override optimization flags - -Stop overriding optimization flags; not sent upstream because this is -intentional on their part. - -https://docs.fedoraproject.org/en-US/packaging-guidelines/#_compiler_flags ---- - build/gen.py | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/build/gen.py b/build/gen.py -index 6f3652ee..2cb433bc 100755 ---- a/build/gen.py -+++ b/build/gen.py -@@ -432,10 +432,8 @@ def WriteGNNinja(path, platform, host, options, args_list): - cflags.extend(['-D_LIBCPP_DEBUG=1', '-D_GLIBCXX_DEBUG=1']) - else: - cflags.append('-DNDEBUG') -- cflags.append('-O3') - if options.no_strip: - cflags.append('-g') -- ldflags.append('-O3') - # Use -fdata-sections and -ffunction-sections to place each function - # or data item into its own section so --gc-sections can eliminate any - # unused functions and data items. --- -2.44.0 - diff --git a/0002-Downstream-only-do-not-build-with-Wno-format.patch b/0002-Downstream-only-do-not-build-with-Wno-format.patch deleted file mode 100644 index b93237e..0000000 --- a/0002-Downstream-only-do-not-build-with-Wno-format.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 8bbbd89be97178be941bd11071c009145d3caf4b Mon Sep 17 00:00:00 2001 -From: "Benjamin A. Beasley" -Date: Thu, 30 May 2024 08:56:58 -0400 -Subject: [PATCH 2/2] Downstream-only: do not build with -Wno-format - -This conflicts with -Werror=format-security. ---- - build/gen.py | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/build/gen.py b/build/gen.py -index 2cb433bc..155c579f 100755 ---- a/build/gen.py -+++ b/build/gen.py -@@ -513,7 +513,6 @@ def WriteGNNinja(path, platform, host, options, args_list): - '-Wno-implicit-fallthrough', - '-Wno-redundant-move', - '-Wno-unused-variable', -- '-Wno-format', # Use of %llx, which is supported by _UCRT, false positive - '-Wno-strict-aliasing', # Dereferencing punned pointer - '-Wno-cast-function-type', # Casting FARPROC to RegDeleteKeyExPtr - ]) --- -2.44.0 - diff --git a/README.md b/README.md index 4bb1a9e..9a2f879 100644 --- a/README.md +++ b/README.md @@ -1,218 +1,3 @@ -# GN +# gn -GN is a meta-build system that generates build files for -[Ninja](https://ninja-build.org). - -Related resources: - - * Documentation in [docs/](https://gn.googlesource.com/gn/+/main/docs/). In - particular: - * [GN quick start guide](https://gn.googlesource.com/gn/+/main/docs/quick_start.md). - * [Frequently asked questions](https://gn.googlesource.com/gn/+/main/docs/faq.md) - * [Reference](https://gn.googlesource.com/gn/+/main/docs/reference.md) - (all builtin help converted to a single file). - * An introductory [presentation](https://docs.google.com/presentation/d/15Zwb53JcncHfEwHpnG_PoIbbzQ3GQi_cpujYwbpcbZo/edit?usp=sharing). - * The [mailing list](https://groups.google.com/a/chromium.org/forum/#!forum/gn-dev). - * The [bug database](https://bugs.chromium.org/p/gn/issues/list). - -## What GN is for - -GN is currently used as the build system for Chromium, Fuchsia, and related -projects. Some strengths of GN are: - - * It is designed for large projects and large teams. It scales efficiently to - many thousands of build files and tens of thousands of source files. - - * It has a readable, clean syntax. Once a build is set-up, it is generally - easy for people with no backround in GN to make basic edits to the build. - - * It is designed for multi-platform projects. It can cleanly express many - complicated build variants across different platforms. A single build - invocation can target multiple platforms. - - * It supports multiple parallel output directories, each with their own - configuration. This allows a developer to maintain builds targeting debug, - release, or different platforms in parallel without forced rebuilds when - switching. - - * It has a focus on correctness. GN checks for the correct dependencies, - inputs, and outputs to the extent possible, and has a number of tools to - allow developers to ensure the build evolves as desired (for example, `gn - check`, `testonly`, `assert_no_deps`). - - * It has comprehensive build-in help available from the command-line. - -Although small projects successfully use GN, the focus on large projects has -some disadvanages: - - * GN has the goal of being minimally expressive. Although it can be quite - flexible, a design goal is to direct members of a large team (who may not - have much knowledge about the build) down an easy-to-understand, well-lit - path. This isn't necessarily the correct trade-off for smaller projects. - - * The minimal build configuration is relatively heavyweight. There are several - files required and the exact way all compilers and linkers are run must be - specified in the configuration (see "Examples" below). There is no default - compiler configuration. - - * It is not easily composable. GN is designed to compile a single large - project with relatively uniform settings and rules. Projects like Chromium - do bring together multiple repositories from multiple teams, but the - projects must agree on some conventions in the build files to allow this to - work. - - * GN is designed with the expectation that the developers building a project - want to compile an identical configuration. So while builds can integrate - with the user's environment like the CXX and CFLAGS variables if they want, - this is not the default and most project's builds do not do this. The result - is that many GN projects do not integrate well with other systems like - ebuild. - - * There is no simple release scheme (see "Versioning and distribution" below). - Projects are expected to manage the version of GN they require. Getting an - appropriate GN binary can be a hurdle for new contributors to a project. - Since GN is relatively uncommon, it can be more difficult to find - information and examples. - -GN can generate Ninja build files for C, C++, Rust, Objective C, and Swift -source on most popular platforms. Other languages can be compiled using the -general "action" rules which are executed by Python or another scripting -language (Google does this to compile Java and Go). But because this is not as -clean, generally GN is only used when the bulk of the build is in one of the -main built-in languages. - -## Getting a binary - -You can download the latest version of GN binary for -[Linux](https://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+/latest), -[macOS](https://chrome-infra-packages.appspot.com/dl/gn/gn/mac-amd64/+/latest) and -[Windows](https://chrome-infra-packages.appspot.com/dl/gn/gn/windows-amd64/+/latest) -from Google's build infrastructure (see "Versioning and distribution" below for -how this is expected to work). - -Alternatively, you can build GN from source with a C++17 compiler: - - git clone https://gn.googlesource.com/gn - cd gn - python build/gen.py # --allow-warning if you want to build with warnings. - ninja -C out - # To run tests: - out/gn_unittests - -On Windows, it is expected that `cl.exe`, `link.exe`, and `lib.exe` can be found -in `PATH`, so you'll want to run from a Visual Studio command prompt, or -similar. - -On Linux, Mac and z/OS, the default compiler is `clang++`, a recent version is -expected to be found in `PATH`. This can be overridden by setting the `CC`, `CXX`, -and `AR` environment variables. - -On z/OS, building GN requires [ZOSLIB](https://github.com/ibmruntimes/zoslib) to be -installed, as described at that URL. When building with `build/gen.py`, use the option -`--zoslib-dir` to specify the path to [ZOSLIB](https://github.com/ibmruntimes/zoslib): - - cd gn - python build/gen.py --zoslib-dir /path/to/zoslib - -By default, if you don't specify `--zoslib-dir`, `gn/build/gen.py` expects to find -`zoslib` directory under `gn/third_party/`. - -## Examples - -There is a simple example in [examples/simple_build](examples/simple_build) -directory that is a good place to get started with the minimal configuration. - -To build and run the simple example with the default gcc compiler: - - cd examples/simple_build - ../../out/gn gen -C out - ninja -C out - ./out/hello - -For a maximal configuration see the Chromium setup: - * [.gn](https://cs.chromium.org/chromium/src/.gn) - * [BUILDCONFIG.gn](https://cs.chromium.org/chromium/src/build/config/BUILDCONFIG.gn) - * [Toolchain setup](https://cs.chromium.org/chromium/src/build/toolchain/) - * [Compiler setup](https://cs.chromium.org/chromium/src/build/config/compiler/BUILD.gn) - -and the Fuchsia setup: - * [.gn](https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/.gn) - * [BUILDCONFIG.gn](https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/build/config/BUILDCONFIG.gn) - * [Toolchain setup](https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/build/toolchain/) - * [Compiler setup](https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/build/config/BUILD.gn) - -## Reporting bugs - -If you find a bug, you can see if it is known or report it in the [bug -database](https://bugs.chromium.org/p/gn/issues/list). - -## Sending patches - -GN uses [Gerrit](https://www.gerritcodereview.com/) for code review hosted at -[gn-review.googlesource.com](https://gn-review.googlesource.com/). The short -version of how to patch is: - - Register at https://gn-review.googlesource.com. - - ... edit code ... - ninja -C out && out/gn_unittests - -Then, to upload a change for review: - - git commit - git push origin HEAD:refs/for/main - -The first time you do this you'll get an error from the server about a missing -change-ID. Follow the directions in the error message to install the change-ID -hook and run `git commit --amend` to apply the hook to the current commit. - -When revising a change, use: - - git commit --amend - git push origin HEAD:refs/for/main - -which will add the new changes to the existing code review, rather than creating -a new one. - -We ask that all contributors -[sign Google's Contributor License Agreement](https://cla.developers.google.com/) -(either individual or corporate as appropriate, select 'any other Google -project'). - -## Community - -You may ask questions and follow along with GN's development on Chromium's -[gn-dev@](https://groups.google.com/a/chromium.org/forum/#!forum/gn-dev) -Google Group. - -## Versioning and distribution - -Most open-source projects are designed to use the developer's computer's current -toolchain such as compiler, linker, and build tool. But the large -centrally controlled projects that GN is designed for typically want a more -hermetic environment. They will ensure that developers are using a specific -compatible toolchain that is versioned with the code. - -As a result, GN expects that the project choose the appropriate version of GN -that will work with each version of the project. There is no "current stable -version" of GN that is expected to work for all projects. - -As a result, the GN developers do not maintain any packages in any of the -various packaging systems (Debian, RedHat, HomeBrew, etc.). Some of these -systems to have GN packages, but they are maintained by third parties and you -should use them at your own risk. Instead, we recommend you refer your checkout -tooling to download binaries for a specific hash from [Google's build -infrastructure](https://chrome-infra-packages.appspot.com/p/gn/gn) or compile -your own. - -GN does not guarantee the backwards-compatibility of new versions and has no -branches or versioning scheme beyond the sequence of commits to the main git -branch (which is expected to be stable). - -In practice, however, GN is very backwards-compatible. The core functionality -has been stable for many years and there is enough GN code at Google alone to -make non-backwards-compatible changes very difficult, even if they were -desirable. - -There have been discussions about adding a versioning scheme with some -guarantees about backwards-compatibility, but nothing has yet been implemented. +The gn package diff --git a/gn-0153d369-no-O3.patch b/gn-0153d369-no-O3.patch new file mode 100644 index 0000000..13a4820 --- /dev/null +++ b/gn-0153d369-no-O3.patch @@ -0,0 +1,14 @@ +diff -Naur gn-0153d369bbccc908f4da4993b1ba82728055926a-original/build/gen.py gn-0153d369bbccc908f4da4993b1ba82728055926a/build/gen.py +--- gn-0153d369bbccc908f4da4993b1ba82728055926a-original/build/gen.py 2021-09-27 14:58:14.000000000 -0400 ++++ gn-0153d369bbccc908f4da4993b1ba82728055926a/build/gen.py 2021-09-27 15:59:42.330405195 -0400 +@@ -344,10 +344,8 @@ + cflags.extend(['-O0', '-g']) + else: + cflags.append('-DNDEBUG') +- cflags.append('-O3') + if options.no_strip: + cflags.append('-g') +- ldflags.append('-O3') + # Use -fdata-sections and -ffunction-sections to place each function + # or data item into its own section so --gc-sections can eliminate any + # unused functions and data items. diff --git a/gn-39a87c0b-gcc-cleanup.patch b/gn-39a87c0b-gcc-cleanup.patch new file mode 100644 index 0000000..6bba655 --- /dev/null +++ b/gn-39a87c0b-gcc-cleanup.patch @@ -0,0 +1,45 @@ +diff -Naur gn-39a87c0b-original/src/gn/err.h gn-39a87c0b/src/gn/err.h +--- gn-39a87c0b-original/src/gn/err.h 2021-05-11 06:58:33.000000000 -0400 ++++ gn-39a87c0b/src/gn/err.h 2021-05-11 08:33:58.379386372 -0400 +@@ -56,7 +56,7 @@ + const std::string& help_text = std::string()); + + Err(const Err& other); +- ++ Err& operator=(const Err& other) = default; + ~Err(); + + bool has_error() const { return has_error_; } +diff -Naur gn-39a87c0b-original/src/gn/label_pattern.h gn-39a87c0b/src/gn/label_pattern.h +--- gn-39a87c0b-original/src/gn/label_pattern.h 2021-05-11 06:58:33.000000000 -0400 ++++ gn-39a87c0b/src/gn/label_pattern.h 2021-05-11 08:34:19.399513188 -0400 +@@ -33,6 +33,7 @@ + std::string_view name, + const Label& toolchain_label); + LabelPattern(const LabelPattern& other); ++ LabelPattern& operator=(const LabelPattern& other) = default; + ~LabelPattern(); + + // Converts the given input string to a pattern. This does special stuff +diff -Naur gn-39a87c0b-original/src/gn/substitution_list.h gn-39a87c0b/src/gn/substitution_list.h +--- gn-39a87c0b-original/src/gn/substitution_list.h 2021-05-11 06:58:33.000000000 -0400 ++++ gn-39a87c0b/src/gn/substitution_list.h 2021-05-11 08:34:42.355651684 -0400 +@@ -15,6 +15,7 @@ + public: + SubstitutionList(); + SubstitutionList(const SubstitutionList& other); ++ SubstitutionList& operator=(const SubstitutionList& other) = default; + ~SubstitutionList(); + + bool Parse(const Value& value, Err* err); +diff -Naur gn-39a87c0b-original/src/gn/substitution_pattern.h gn-39a87c0b/src/gn/substitution_pattern.h +--- gn-39a87c0b-original/src/gn/substitution_pattern.h 2021-05-11 06:58:33.000000000 -0400 ++++ gn-39a87c0b/src/gn/substitution_pattern.h 2021-05-11 08:34:50.294699582 -0400 +@@ -35,6 +35,7 @@ + + SubstitutionPattern(); + SubstitutionPattern(const SubstitutionPattern& other); ++ SubstitutionPattern& operator=(const SubstitutionPattern& other) = default; + ~SubstitutionPattern(); + + // Parses the given string and fills in the pattern. The pattern must only diff --git a/gn.rpmlintrc b/gn.rpmlintrc index 7ae199b..d96c788 100644 --- a/gn.rpmlintrc +++ b/gn.rpmlintrc @@ -1,15 +1,8 @@ -# Hardinking duplicates is not worthwhile because these files are small and few -# in number. -addFilter(r"gn-doc\..*: files-duplicate /.*\.json") -# This script is for documentation only; it has a weird polyglot self-exec -# trick. -addFilter(r"gn-doc\..*: (potential-bashisms|bin-sh-syntax-error) /.*/infra/recipes\.py") -# These are all acceptable in the context of sample projects in the docs: -addFilter(r"gn-doc\..*: (zero-length|version-control-internal-file) /.*/examples/") -addFilter(r"gn-doc\..*: hidden-file-or-dir /.*/examples/.*/\.(gitignore|gn)") -# This script is for looking at, not for executing: -addFilter(r"gn-doc\..*: env-script-interpreter /.*/infra/config/main\.star .*") -# This is as prescribed in -# https://docs.fedoraproject.org/en-US/packaging-guidelines/Emacs/, and the -# macro is not unexpanded in practice. -addFilter(r"Possible unexpanded macro in: Requires:\s+emacs-filesystem") +# This is a maintainer script, so it should indeed be executable: +addFilter(r' strange-permission update-version 775$') +# The source URL exports a tarball directly from git; while the contents are +# stable since it references a particular commit, the tarball checksum and even +# file size are different every time. I haven’t looked too closely, but I +# suspect this is due to timestamps in the tar stream being based on the access +# time rather than the time of the commit. +addFilter(r' file-size-mismatch gn-[0-9A-Fa-f]{8}\.tar\.gz = ') diff --git a/gn.spec b/gn.spec index 5eb150a..9873d54 100644 --- a/gn.spec +++ b/gn.spec @@ -1,5 +1,5 @@ # Build HTML docs from markdown using pandoc? -%bcond html_docs 1 +%bcond_without html_docs Name: gn # Upstream uses the number of commits in the git history as the version number. @@ -24,45 +24,37 @@ Name: gn # 7. Commit the changes # # See https://gn.googlesource.com/gn/+log for the latest changes. -%global commit 9673115bc14c8630da5b7f6fe07e0b362ac49dcb -%global access 20260111 -%global shortcommit %{sub %{commit} 1 12} -%global position 2316 -Version: %{position}^%{access}.%{shortcommit} -Release: %autorelease +%global commit 0153d369bbccc908f4da4993b1ba82728055926a +%global access 20210927 +%global shortcommit %(echo %{commit} | cut -b -8) +Version: 1938 +Release: %autorelease -s %{access}git%{shortcommit} Summary: Meta-build system that generates build files for Ninja -# The entire source is BSD-3-Clause, except: -# - src/base/third_party/icu/ is (Unicode-DFS-2016 AND ICU); see -# src/base/third_party/icu/LICENSE and also the header comment in -# src/base/third_party/icu/icu_utf.h. +# BSD except for src/base/third_party/icu/, which is (Unicode and MIT); note +# that the “ICU License” is MIT, +# https://fedoraproject.org/wiki/Licensing:MIT#Modern_style_.28ICU_Variant.29 # -# Note that src/util/test/gn_test.cc, which is licensed Apache-2.0, does not -# contribute to the binary RPMs, only to the gn_unittests executable, which is -# not installed; you may verify this with: +# Note that src/util/test/gn_test.cc, which is licensed ASL 2.0, does not +# contribute to the installed RPM, only to the gn_unittests executable; you may +# verify this with: # gdb -ex 'set pagination off' -ex 'info sources' gn | grep -F gn_test.cc -License: BSD-3-Clause AND Unicode-DFS-2016 AND ICU -SourceLicense: %{license} AND Apache-2.0 +License: BSD and Unicode and MIT URL: https://gn.googlesource.com/gn Source0: %{url}/+archive/%{commit}.tar.gz#/gn-%{shortcommit}.tar.gz # Generated using script update-version: Source1: last_commit_position.h Source2: update-version -# Downstream-only: do not override optimization flags +# Clean up compiler warnings on gcc/g++. This patch is a rebased version of +# chromium-84.0.4147.105-gn-gcc-cleanup.patch from the chromium RPM; see: # -# Stop overriding optimization flags; not sent upstream because this is -# intentional on their part. -# -# https://docs.fedoraproject.org/en-US/packaging-guidelines/#_compiler_flags -Patch: 0001-Downstream-only-do-not-override-optimization-flags.patch -# Downstream-only: do not build with -Wno-format -# -# This conflicts with -Werror=format-security. -Patch: 0002-Downstream-only-do-not-build-with-Wno-format.patch - -# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval -ExcludeArch: %{ix86} +# https://src.fedoraproject.org/rpms/chromium/raw/ +# ce30313f5e4af121140c037bf026453355534f24/f/ +# chromium-84.0.4147.105-gn-gcc-cleanup.patch +Patch: gn-39a87c0b-gcc-cleanup.patch +# Stop overriding optimization flags +Patch: gn-0153d369-no-O3.patch BuildRequires: python3-devel BuildRequires: ninja-build @@ -125,22 +117,17 @@ cp -vp misc/vim/README.md README-vim.md %py3_shebang_fix . -%conf +%build AR='gcc-ar'; export AR -# Treating warnings as errors is too strict for downstream builds. -# +%set_build_flags # Both --use-icf and --use-lto add compiler flags that only work with clang++, # not with g++. We do get LTO on Fedora anyway, since we respect the # distribution’s build flags. %{python3} build/gen.py \ - --allow-warnings \ --no-last-commit-position \ --no-strip \ --no-static-libstdc++ - - -%build -ninja -j %{_smp_build_ncpus} -C out -v +ninja -C out -v %if %{with html_docs} # There is a script, misc/help_as_html.py, that generates some HTML help, but @@ -180,10 +167,10 @@ out/gn_unittests # Verify consistency of the version header with the spec file grep -E '^#define[[:blank:]]+LAST_COMMIT_POSITION_NUM[[:blank:]]+'\ -'%{position}[[:blank:]]*' \ +'%{version}[[:blank:]]*' \ 'out/last_commit_position.h' >/dev/null grep -E '^#define[[:blank:]]+LAST_COMMIT_POSITION[[:blank:]]+'\ -'"%{position} \(%{shortcommit}\)"[[:blank:]]*' \ +'"%{version} \(%{shortcommit}\)"[[:blank:]]*' \ 'out/last_commit_position.h' >/dev/null @@ -210,10 +197,10 @@ grep -E '^#define[[:blank:]]+LAST_COMMIT_POSITION[[:blank:]]+'\ %if %{with html_docs} %doc README*.html %endif -%doc docs/ -%doc examples/ -%doc infra/ -%doc tools/ +%doc docs +%doc examples +%doc infra +%doc tools %changelog diff --git a/last_commit_position.h b/last_commit_position.h index ef88d41..bd0df72 100644 --- a/last_commit_position.h +++ b/last_commit_position.h @@ -3,7 +3,7 @@ #ifndef OUT_LAST_COMMIT_POSITION_H_ #define OUT_LAST_COMMIT_POSITION_H_ -#define LAST_COMMIT_POSITION_NUM 2316 -#define LAST_COMMIT_POSITION "2316 (9673115bc14c)" +#define LAST_COMMIT_POSITION_NUM 1938 +#define LAST_COMMIT_POSITION "1938 (0153d369)" #endif // OUT_LAST_COMMIT_POSITION_H_ diff --git a/sources b/sources index c8fd12b..d4f4c2d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gn-9673115bc14c.tar.gz) = b05e287b5e700e1cd725ef75a0af6088abd51be0a0c072f42daa61e39f6d159355ef95130a9f4478d7c62129a17c51f341624cfc4b58fb7d29e1c77a2e2cf3af +SHA512 (gn-0153d369.tar.gz) = 034458b8eb31504c17cc5dce12445a4dfa4bf429171e44b84d47f4ed98c40e3fc6455ce814c74f8ed6e8013c13ef5952ed04b03e5007535381b2c0c5f476ccb6 diff --git a/update-version b/update-version index cc0ed43..b9d74fe 100755 --- a/update-version +++ b/update-version @@ -83,7 +83,7 @@ sed -r -i \ -e 's/(%global[[:blank:]]+access[[:blank:]]+)[[:digit:]]{8}[[:blank:]]*$/\1'"$( date -u '+%Y%m%d' )/" \ - -e 's/(%global[[:blank:]]+position[[:blank:]]+)[[:digit:]]+[[:blank:]]*$/\1'"${POSITION}/" \ + -e 's/(Version:[[:blank:]]+)[[:digit:]]+[[:blank:]]*$/\1'"${POSITION}/" \ "${SPEC}" # Download the new tarball