diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..3075f58 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +generate-ninja (0.0~git20221212.5e19d2f-ok1) yangtze; urgency=medium + + * Build for openKylin. + + -- zhouganqing Mon, 13 Feb 2023 14:45:10 +0800 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..ac46a52 --- /dev/null +++ b/debian/control @@ -0,0 +1,25 @@ +Source: generate-ninja +Section: utils +Priority: optional +Maintainer: OpenKylin Developers +Build-Depends: clang [linux-any], + debhelper-compat (= 13), + git, + help2man, + ninja-build, + python3 +Standards-Version: 4.6.2 +Homepage: https://gn.googlesource.com/gn/ +Vcs-Browser: https://gitee.com/openkylin/generate-ninja +Vcs-Git: https://gitee.com/openkylin/generate-ninja.git +Rules-Requires-Root: no + +Package: generate-ninja +Architecture: amd64 arm64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mips64el mipsel ppc64 ppc64el riscv64 s390x +Depends: ${misc:Depends}, ${shlibs:Depends} +Provides: gn +Description: meta-build system for ninja + Generate-Ninja, or GN, is a meta-build system that generates Ninja + build files so that you can build your project with Ninja. GN was, + originally, part of the Chromium source tree, and has since been + extracted into its own standalone repo. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..4fba630 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,96 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: gn +Upstream-Contact: gn-dev@googlegroups.com +Source: https://gn.googlesource.com/gn + +Files: * +Copyright: 2013-2020 Google Inc + 2013-2020 scottmg@chromium.org + 2013-2020 brettw@chromium.org + 2013-2020 phosek@chromium.org +License: BSD-3-Clause + +Files: debian/* +Copyright: 2020-2023 qinxialei + 2013-2020 Ricardo Ribalda Delgado +License: BSD-3-Clause + +Files: infra/recipes.py +Copyright: Copyright 2017 The LUCI Authors. +License: Apache-2.0 + +Files: infra/recipes/gn.py +Copyright: Copyright 2018 The Chromium Authors. +License: Apache-2.0 + +Files: src/util/test/gn_test.cc +Copyright: Copyright 2017 The LUCI Authors. +License: Apache-2.0 + +Files: src/base/third_party/icu/* +Copyright: Copyright 1999-2015 International Business Machines +License: ICU + +License: BSD-3-Clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE HOLDERS OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: ICU + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, and/or sell + copies of the Software, and to permit persons + to whom the Software is furnished to do so, provided that the above + copyright notice(s) and this permission notice appear in all copies + of the Software and that both the above copyright notice(s) and this + permission notice appear in supporting documentation. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL + THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, + OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER + RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, + NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE + USE OR PERFORMANCE OF THIS SOFTWARE. + . + Except as contained in this notice, the name of a copyright holder shall not be + used in advertising or otherwise to promote the sale, use or other dealings in + this Software without prior written authorization of the copyright holder. + +License: Apache-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at + . + https://www.apache.org/licenses/LICENSE-2.0 + . + Unless required by applicable law or agreed to in writing, software distributed + under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. See the License for the + specific language governing permissions and limitations under the License. + . + On Debian systems, the complete text of the Apache License, Version 2.0, can be + found in "/usr/share/common-licenses/Apache-2.0". diff --git a/debian/generate-ninja.examples b/debian/generate-ninja.examples new file mode 100644 index 0000000..56b03d6 --- /dev/null +++ b/debian/generate-ninja.examples @@ -0,0 +1,2 @@ +examples/simple_build/* +examples/simple_build/.gn diff --git a/debian/generate-ninja.install b/debian/generate-ninja.install new file mode 100644 index 0000000..c2e6c49 --- /dev/null +++ b/debian/generate-ninja.install @@ -0,0 +1 @@ +out/gn /usr/bin diff --git a/debian/generate-ninja.manpages b/debian/generate-ninja.manpages new file mode 100644 index 0000000..4ae54e4 --- /dev/null +++ b/debian/generate-ninja.manpages @@ -0,0 +1 @@ +out/gn.1 diff --git a/debian/gn-describe b/debian/gn-describe new file mode 100755 index 0000000..c94e223 --- /dev/null +++ b/debian/gn-describe @@ -0,0 +1,12 @@ +#!/bin/bash + +set -e + +if git rev-parse --git-dir &>/dev/null ; then + git fetch --tags &>/dev/null || true + upstream_tag=$(dpkg-parsechangelog --show-field Version | sed 's#-.*##' | tr '~' '_') + git describe upstream/${upstream_tag} --abbrev=12 --match initial-commit + exit 0 +fi + +echo $DEB_VERSION_UPSTREAM | sed 's#^.*\.#initial-commit-1000-g#' diff --git a/debian/patches/Unbundling-version-from-git.patch b/debian/patches/Unbundling-version-from-git.patch new file mode 100644 index 0000000..19ae985 --- /dev/null +++ b/debian/patches/Unbundling-version-from-git.patch @@ -0,0 +1,14 @@ +Unbundling version from git +diff --git a/build/gen.py b/build/gen.py +index fa23266c..794b4357 100755 +--- a/build/gen.py ++++ b/build/gen.py +@@ -218,7 +218,7 @@ def main(argv): + def GenerateLastCommitPosition(host, header): + ROOT_TAG = 'initial-commit' + describe_output = subprocess.check_output( +- ['git', 'describe', 'HEAD', '--abbrev=12', '--match', ROOT_TAG], ++ ['debian/gn-describe'], + shell=host.is_windows(), cwd=REPO_ROOT) + mo = re.match(ROOT_TAG + '-(\d+)-g([0-9a-f]+)', describe_output.decode()) + if not mo: diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..b243104 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +Unbundling-version-from-git.patch diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..8831955 --- /dev/null +++ b/debian/rules @@ -0,0 +1,40 @@ +#!/usr/bin/make -f +include /usr/share/dpkg/buildflags.mk +export DEB_BUILD_MAINT_OPTIONS = hardening=+all +CXXFLAGS += $(CPPFLAGS) -fPIE +LDFLAGS += -pie + +include /usr/share/dpkg/architecture.mk +ifeq "$(DEB_HOST_ARCH)" "armel" +LDFLAGS += -latomic +endif + +#Needed by gn-describe when building outside git tree +include /usr/share/dpkg/pkg-info.mk +export DEB_VERSION_UPSTREAM + +#Fallback to c++ if clang is not available +ifeq (, $(shell which clang++)) +export CXX = c++ +endif + +%: + dh $@ --buildsystem=ninja --builddirectory=out + +override_dh_auto_configure: + python3 $(CURDIR)/build/gen.py + +override_dh_auto_test: +ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) + $(CURDIR)/out/gn_unittests +endif + +override_dh_auto_install: + #noop + +override_dh_dwz: + #Clang-14 does not seem to play nice with dwz #1016563 + +VERSION = $(shell out/gn --version) +execute_before_dh_installdocs: + help2man --version-string="gn $(VERSION)" --name="Meta-build system that generates build files for Ninja" -N -o out/gn.1 out/gn diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/tests/control b/debian/tests/control new file mode 100644 index 0000000..67e8128 --- /dev/null +++ b/debian/tests/control @@ -0,0 +1,2 @@ +Tests: upstream-test-suite +Depends: g++, generate-ninja, ninja-build diff --git a/debian/tests/upstream-test-suite b/debian/tests/upstream-test-suite new file mode 100644 index 0000000..56a765f --- /dev/null +++ b/debian/tests/upstream-test-suite @@ -0,0 +1,8 @@ +#!/bin/sh +set -e + +cd examples/simple_build +gn gen /tmp/out +cd /tmp/out +ninja +./hello diff --git a/debian/watch b/debian/watch new file mode 100644 index 0000000..e46e3db --- /dev/null +++ b/debian/watch @@ -0,0 +1,4 @@ +version=4 +opts="mode=git, pgpmode=none, pretty=0.0~git%cd.%h, repack, compression=xz" \ + https://gn.googlesource.com/gn \ + HEAD