From patchwork Tue Jan 31 16:26:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 50957 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp846wrn; Tue, 31 Jan 2023 08:30:32 -0800 (PST) X-Google-Smtp-Source: AK7set/j91o+FvdLfQ108e7WsGp4+nwi2pBGF5j/FRnAbEZM3r2kd4wGvlgNuDzrb2FjjmNWP4X9 X-Received: by 2002:a17:902:ea0a:b0:196:8db5:fd67 with SMTP id s10-20020a170902ea0a00b001968db5fd67mr6343901plg.2.1675182632132; Tue, 31 Jan 2023 08:30:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675182632; cv=none; d=google.com; s=arc-20160816; b=H3xenO4SjkqEkw9zHWzVb3brk4HrmVwsVQV7dsY7JzV5RWzK2vv4v9Q1vNZ0Wx/Nk4 fvc6sImOSuqTAk7ZIjNexzEnmALr64gDYiIDDhlOvvFB1E9H7pAfxGirhgHHQpxR2kBQ Yr0DCYP0EgYGntsfXc+njKs1ZpXatZ9jcEz7WNsosanCg5EsiIE3B04KT/5YoAwDb2Jj IA2HoWCmlTlA3ynA+5jpHHvkoRP7IwVRMx/hNo3tEIwcv9yIDyUG8b4+2KGQdNez+1qu J9rkztLfE2NeB4hz66T9Ms2+tBG8Um3gPORT1IDimYs8NX6zcrrSrnqvXhPFyf+gkpFO pdjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=x2k2YyiDnRILkH0uVsurt4s2OlUoP3q3FwXBkb/PMFc=; b=A+59ab/opCzkb/4uAlNURNp7Drq1oL2h+7QY3FyXHuk1FnFrioCEKpNfxKM2nLr2rM BSBGAhrvnPaR0KFfLa/rON9lUT48A8r1w42tVCwoFqrtfbKcz2ZNs3m/cF8JCQXUfBSt tDLtFLWDXWu+sj0RnclXgy6CjJnfkUvVVYpXUDpVzDgB2YICpRV10nWJk23OPLeDVTYH s2So+RG4HRa9dbLGAFY+iSXK4G4ObwBmJ+mq1MEWabNN6N+ZxDMa+qqqfYr1svWHnKsz DwuzlRp27Io8KK1Ing92o/7csp0TswXeZJIb+ABBPopXSi8zTs4bMr3BehuIR+SJ5/Z8 VzAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="qy/ZtxJM"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q13-20020a170902f34d00b00196486c4b17si14204634ple.56.2023.01.31.08.30.19; Tue, 31 Jan 2023 08:30:32 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="qy/ZtxJM"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230008AbjAaQ11 (ORCPT + 99 others); Tue, 31 Jan 2023 11:27:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36254 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229468AbjAaQ1Z (ORCPT ); Tue, 31 Jan 2023 11:27:25 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4B8EE53E4F; Tue, 31 Jan 2023 08:27:23 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id C8C386159A; Tue, 31 Jan 2023 16:27:22 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D30C5C433EF; Tue, 31 Jan 2023 16:27:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675182442; bh=XpHJNxjtiCCFCEoleGsv+2kCo8+SabiuXjs6x0sS/yg=; h=From:To:Cc:Subject:Date:From; b=qy/ZtxJMV+mTG8kK6CJ0swnOPUeHJFldQZt0prx83N6b99UEwaT+Xm1M3ddFvPQU1 W1wiJlSs9X5YIG6YQfjsdGOjAhwsQUHjfCx2YT83pusFou81K9PiOfLPQSjEu3NdCw mkTx3qSuWE1xQeX6i05n9kpM09R60Ru9r6KRK0GJCZMITVBLHskJwF2aVRLNuezW67 okFH/5Cnr/D+zptnXL96/oWVKw7DFodbEbED8ufpgGbweXUKsQ5O+OWcTaufgaGzbp f5Wg021icwdurKMJGkhTozHSvOErNqmNuahfU+xQSIlOoxhcBd+OHWeaqqb56FtwQ9 gkYdoXTor7qvQ== From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Masahiro Yamada , Nathan Chancellor , Nick Desaulniers , Nicolas Schier Subject: [PATCH v3 1/5] kbuild: add a tool to generate a list of files ignored by git Date: Wed, 1 Feb 2023 01:26:11 +0900 Message-Id: <20230131162615.1575215-1-masahiroy@kernel.org> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756556303728817349?= X-GMAIL-MSGID: =?utf-8?q?1756556303728817349?= In short, the motivation of this commit is to build a source package without cleaning the source tree. The deb-pkg and (src)rpm-pkg targets first run 'make clean' before creating a source tarball. Otherwise build artifacts such as *.o, *.a, etc. would be included in the tarball. Yet, the tarball ends up containing several garbage files since 'make clean' does not clean everything. Cleaning the tree everytime is annoying since it makes the incremental build impossible. It is desirable to create a source tarball without cleaning the tree. In fact, there are some ways to archive this. The easiest way is 'git archive'. Actually, 'make perf-tar*-src-pkg' does this way, but I do not like it because it works only when the source tree is managed by git, and all files you want in the tarball must be committed in advance. I want to make it work without relying on git. We can do this. Files that are not tracked by git are generated files. We can list them out by parsing the .gitignore files. Of course, .gitignore does not cover all the cases, but it works well enough. tar(1) claims to support it: --exclude-vcs-ignores Exclude files that match patterns read from VCS-specific ignore files. Supported files are: .cvsignore, .gitignore, .bzrignore, and .hgignore. The best scenario would be to use 'tar --exclude-vcs-ignores', but this option does not work. --exclude-vcs-ignore does not understand any of the negation (!), preceding slash, following slash, etc.. So, this option is just useless. Hence, I wrote this gitignore parser. The previous version [1], written in Python, was so slow. This version is implemented in C, so it works much faster. This tool tarverses the source tree, parsing the .gitignore files. It prints the file paths that are not tracked by git. This is suitable to be passed to tar's --exclude-from= option. [How to test this tool] $ git clean -dfx $ make -s -j$(nproc) defconfig all # or allmodconifg or whatever $ git archive -o ../linux1.tar --prefix=./ HEAD $ tar tf ../linux1.tar | LANG=C sort > ../file-list1 # files emitted by 'git archive' $ make scripts_exclude HOSTCC scripts/gen-exclude $ scripts/gen-exclude --prefix=./ -o ../exclude-list $ tar cf ../linux2.tar --exclude-from=../exclude-list . $ tar tf ../linux2.tar | LANG=C sort > ../file-list2 # files emitted by 'tar' $ diff ../file-list1 ../file-list2 | grep -E '^(<|>)' < ./Documentation/devicetree/bindings/.yamllint < ./drivers/clk/.kunitconfig < ./drivers/gpu/drm/tests/.kunitconfig < ./drivers/gpu/drm/vc4/tests/.kunitconfig < ./drivers/hid/.kunitconfig < ./fs/ext4/.kunitconfig < ./fs/fat/.kunitconfig < ./kernel/kcsan/.kunitconfig < ./lib/kunit/.kunitconfig < ./mm/kfence/.kunitconfig < ./net/sunrpc/.kunitconfig < ./tools/testing/selftests/arm64/tags/ < ./tools/testing/selftests/arm64/tags/.gitignore < ./tools/testing/selftests/arm64/tags/Makefile < ./tools/testing/selftests/arm64/tags/run_tags_test.sh < ./tools/testing/selftests/arm64/tags/tags_test.c < ./tools/testing/selftests/kvm/.gitignore < ./tools/testing/selftests/kvm/Makefile < ./tools/testing/selftests/kvm/config < ./tools/testing/selftests/kvm/settings The source tarball contains most of files that are tracked by git. You see some diffs, but it is just because some .gitignore files are wrong. $ git ls-files -i -c --exclude-per-directory=.gitignore Documentation/devicetree/bindings/.yamllint drivers/clk/.kunitconfig drivers/gpu/drm/tests/.kunitconfig drivers/hid/.kunitconfig fs/ext4/.kunitconfig fs/fat/.kunitconfig kernel/kcsan/.kunitconfig lib/kunit/.kunitconfig mm/kfence/.kunitconfig tools/testing/selftests/arm64/tags/.gitignore tools/testing/selftests/arm64/tags/Makefile tools/testing/selftests/arm64/tags/run_tags_test.sh tools/testing/selftests/arm64/tags/tags_test.c tools/testing/selftests/kvm/.gitignore tools/testing/selftests/kvm/Makefile tools/testing/selftests/kvm/config tools/testing/selftests/kvm/settings [1]: https://lore.kernel.org/all/20230128173843.765212-1-masahiroy@kernel.org/ Signed-off-by: Masahiro Yamada --- Changes in v3: - Various code refactoring: remove struct gitignore, remove next: label etc. - Support --extra-pattern option Changes in v2: - Reimplement in C Makefile | 4 + scripts/.gitignore | 1 + scripts/Makefile | 2 +- scripts/gen-exclude.c | 618 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 624 insertions(+), 1 deletion(-) create mode 100644 scripts/gen-exclude.c diff --git a/Makefile b/Makefile index 339121558928..01c6f4ff515f 100644 --- a/Makefile +++ b/Makefile @@ -1652,6 +1652,10 @@ distclean: mrproper %pkg: include/config/kernel.release FORCE $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.package $@ +PHONY += scripts_exclude +scripts_exclude: scripts_basic + $(Q)$(MAKE) $(build)=scripts scripts/gen-exclude + # Brief documentation of the typical targets used # --------------------------------------------------------------------------- diff --git a/scripts/.gitignore b/scripts/.gitignore index 6e9ce6720a05..7f433bc1461c 100644 --- a/scripts/.gitignore +++ b/scripts/.gitignore @@ -1,5 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-only /asn1_compiler +/gen-exclude /generate_rust_target /insert-sys-cert /kallsyms diff --git a/scripts/Makefile b/scripts/Makefile index 32b6ba722728..5dcd7f57607f 100644 --- a/scripts/Makefile +++ b/scripts/Makefile @@ -38,7 +38,7 @@ HOSTCFLAGS_sorttable.o += -DMCOUNT_SORT_ENABLED endif # The following programs are only built on demand -hostprogs += unifdef +hostprogs += gen-exclude unifdef # The module linker script is preprocessed on demand targets += module.lds diff --git a/scripts/gen-exclude.c b/scripts/gen-exclude.c new file mode 100644 index 000000000000..7d58cfaeba48 --- /dev/null +++ b/scripts/gen-exclude.c @@ -0,0 +1,618 @@ +// SPDX-License-Identifier: GPL-2.0-only +// +// Traverse the source tree, parsing all .gitignore files, and print file paths +// that are not tracked by git. +// The output is suitable to the --exclude-from option of tar. +// This is useful until the --exclude-vcs-ignores option gets working correctly. +// +// Copyright (C) 2023 Masahiro Yamada + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) + +// struct pattern - represent an ignore pattern (a line in .gitignroe) +// @negate: negate the pattern (prefixing '!') +// @dir_only: only matches directories (trailing '/') +// @path_match: true if the glob pattern is a path instead of a file name +// @double_asterisk: true if the glob pattern contains double asterisks ('**') +// @glob: glob pattern +struct pattern { + bool negate; + bool dir_only; + bool path_match; + bool double_asterisk; + char glob[]; +}; + +struct pattern **patterns; +static int nr_patterns, alloced_patterns; + +// remember the number of patterns at each directory level +static int *nr_patterns_at; +// track the current/max directory level; +static int depth, max_depth; +static bool debug_on; +static FILE *out_fp; +static char *prefix = ""; +static char *progname; + +static void __attribute__((noreturn)) perror_exit(const char *s) +{ + perror(s); + exit(EXIT_FAILURE); +} + +static void __attribute__((noreturn)) error_exit(const char *fmt, ...) +{ + va_list args; + + fprintf(stderr, "%s: error: ", progname); + + va_start(args, fmt); + vfprintf(stderr, fmt, args); + va_end(args); + + exit(EXIT_FAILURE); +} + +static void debug(const char *fmt, ...) +{ + va_list args; + int i; + + if (!debug_on) + return; + + fprintf(stderr, "[DEBUG]"); + + for (i = 0; i < depth * 2; i++) + fputc(' ', stderr); + + va_start(args, fmt); + vfprintf(stderr, fmt, args); + va_end(args); +} + +static void *xrealloc(void *ptr, size_t size) +{ + ptr = realloc(ptr, size); + if (!ptr) + perror_exit(progname); + + return ptr; +} + +static void *xmalloc(size_t size) +{ + return xrealloc(NULL, size); +} + +static char *xstrdup(const char *s) +{ + char *new = strdup(s); + + if (!new) + perror_exit(progname); + + return new; +} + +static bool simple_match(const char *string, const char *pattern) +{ + return fnmatch(pattern, string, FNM_PATHNAME) == 0; +} + +// Handle double asterisks ("**") matching. +// FIXME: +// This function does not work if double asterisks apppear multiple times, +// like "foo/**/bar/**/baz". +static bool double_asterisk_match(const char *path, const char *pattern) +{ + bool result = false; + int slash_diff = 0; + char *modified_pattern, *q; + const char *p; + size_t len; + + for (p = path; *p; p++) + if (*p == '/') + slash_diff++; + + for (p = pattern; *p; p++) + if (*p == '/') + slash_diff--; + + len = strlen(pattern) + 1; + + if (slash_diff > 0) + len += slash_diff * 2; + modified_pattern = xmalloc(len); + + q = modified_pattern; + for (p = pattern; *p; p++) { + if (!strncmp(p, "**/", 3)) { + // "**/" means zero of more sequences of '*/". + // "foo**/bar" matches "foobar", "foo*/bar", + // "foo*/*/bar", etc. + while (slash_diff-- > 0) { + *q++ = '*'; + *q++ = '/'; + } + + if (slash_diff == 0) { + *q++ = '*'; + *q++ = '/'; + } + + if (slash_diff < 0) + slash_diff++; + + p += 2; + } else if (!strcmp(p, "/**")) { + // A trailing "/**" matches everything inside. + while (slash_diff-- >= 0) { + *q++ = '/'; + *q++ = '*'; + } + + p += 2; + } else { + // Copy other patterns as-is. + // Other consecutive asterisks are considered regular + // asterisks. fnmatch() already handles them like that. + *q++ = *p; + } + } + + *q = '\0'; + + result = simple_match(path, modified_pattern); + + free(modified_pattern); + + return result; +} + +// Return true if the given path is ignored by git. +static bool is_ignored(const char *path, const char *name, bool is_dir) +{ + int i; + + // Search the patterns in the reverse order because the last matching + // pattern wins. + for (i = nr_patterns - 1; i >= 0; i--) { + struct pattern *p = patterns[i]; + + if (!is_dir && p->dir_only) + continue; + + if (!p->path_match) { + // If the pattern has no slash at the beginning or + // middle, it matches against the basename. Most cases + // fall into this and work well with double asterisks. + if (!simple_match(name, p->glob)) + continue; + } else if (!p->double_asterisk) { + // Unless the pattern has double asterisks, it is still + // simple but matches against the path instead. + if (!simple_match(path, p->glob)) + continue; + } else { + // Double asterisks with a slash. Complex, but rare. + if (!double_asterisk_match(path, p->glob)) + continue; + } + + debug("%s: matches %s%s%s\n", path, p->negate ? "!" : "", + p->glob, p->dir_only ? "/" : ""); + + return !p->negate; + } + + debug("%s: no match\n", path); + + return false; +} + +// Return the length of the initial segment of the string that does not contain +// the unquoted sequence of the given character. +static size_t strcspn_trailer(const char *str, char c) +{ + bool quoted = false; + size_t len = strlen(str); + size_t spn = len; + const char *s; + + for (s = str; *s; s++) { + if (!quoted && *s == c) { + if (s - str < spn) + spn = s - str; + } else { + spn = len; + + if (!quoted && *s == '\\') + quoted = true; + else + quoted = false; + } + } + + return spn; +} + +static void add_pattern(char *s, const char *dirpath) +{ + bool negate = false; + bool dir_only = false; + bool path_match = false; + bool double_asterisk = false; + char *e = s + strlen(s); + struct pattern *p; + size_t len; + + // Skip comments + if (*s == '#') + return; + + // Trailing spaces are ignored unless they are quoted with backslash. + e = s + strcspn_trailer(s, ' '); + *e = '\0'; + + // The prefix '!' negates the pattern + if (*s == '!') { + s++; + negate = true; + } + + // If there is slash(es) that is not escaped at the end of the pattern, + // it matches only directories. + len = strcspn_trailer(s, '/'); + if (s + len < e) { + dir_only = true; + e = s + len; + *e = '\0'; + } + + // Skip if the line gets empty + if (*s == '\0') + return; + + // Double asterisk is tricky. Mark it to handle it specially later. + if (strstr(s, "**/") || strstr(s, "/**")) + double_asterisk = true; + + // If there is a slash at the beginning or middle, the pattern + // is relative to the directory level of the .gitignore. + if (strchr(s, '/')) { + if (*s == '/') + s++; + path_match = true; + } + + len = e - s; + + // We need more room to store dirpath and '/' + if (path_match) + len += strlen(dirpath) + 1; + + p = xmalloc(sizeof(*p) + len + 1); + p->negate = negate; + p->dir_only = dir_only; + p->path_match = path_match; + p->double_asterisk = double_asterisk; + p->glob[0] = '\0'; + + if (path_match) { + strcat(p->glob, dirpath); + strcat(p->glob, "/"); + } + + strcat(p->glob, s); + + debug("Add pattern: %s%s%s\n", negate ? "!" : "", p->glob, + dir_only ? "/" : ""); + + if (nr_patterns >= alloced_patterns) { + alloced_patterns += 128; + patterns = xrealloc(patterns, + sizeof(*patterns) * alloced_patterns); + } + + patterns[nr_patterns++] = p; +} + +static void *load_gitignore(const char *dirpath) +{ + struct stat st; + char path[PATH_MAX], *buf; + int fd, ret; + + ret = snprintf(path, sizeof(path), "%s/.gitignore", dirpath); + if (ret >= sizeof(path)) + error_exit("%s: too long path was truncated\n", path); + + // If .gitignore does not exist in this directory, open() fails. + // It is ok, just skip it. + fd = open(path, O_RDONLY); + if (fd < 0) + return NULL; + + if (fstat(fd, &st) < 0) + perror_exit(path); + + buf = xmalloc(st.st_size + 1); + if (read(fd, buf, st.st_size) != st.st_size) + perror_exit(path); + + buf[st.st_size] = '\0'; + if (close(fd)) + perror_exit(path); + + return buf; +} + +// Parse '.gitignore' in the given directory. +static void parse_gitignore(const char *dirpath) +{ + char *buf, *s, *next; + + buf = load_gitignore(dirpath); + if (!buf) + return; + + debug("Parse %s/.gitignore\n", dirpath); + + for (s = buf; *s; s = next) { + next = s; + + while (*next != '\0' && *next != '\n') + next++; + + if (*next != '\0') { + *next = '\0'; + next++; + } + + add_pattern(s, dirpath); + } + + free(buf); +} + +// Save the current number of patterns and increment the depth +static void increment_depth(void) +{ + if (depth >= max_depth) { + max_depth += 1; + nr_patterns_at = xrealloc(nr_patterns_at, + sizeof(*nr_patterns_at) * max_depth); + } + + nr_patterns_at[depth] = nr_patterns; + depth++; +} + +// Decrement the depth, and free up the patterns of this directory level. +static void decrement_depth(void) +{ + depth--; + if (depth < 0) + error_exit("BUG\n"); + + while (nr_patterns > nr_patterns_at[depth]) + free(patterns[--nr_patterns]); +} + +// If we find an ignored path, print it. +static void print_path(const char *path) +{ + if (strlen(path) < 2) + error_exit("BUG\n"); + + fprintf(out_fp, "%s%s\n", prefix, path + 2); +} + +// Traverse the entire directory tree, parsing .gitignore files. +// Print file paths that are not tracked by git. +// +// Return true if all files under the directory are ignored, false otherwise. +static bool traverse_directory(const char *dirpath) +{ + bool all_ignored = true; + DIR *dirp; + + debug("Enter[%d]: %s\n", depth, dirpath); + increment_depth(); + + // We do not know whether .gitignore exists in this directory or not. + // Anyway, try to open it. + parse_gitignore(dirpath); + + dirp = opendir(dirpath); + if (!dirp) + perror_exit(dirpath); + + while (1) { + char path[PATH_MAX]; + struct dirent *d; + int ret; + + errno = 0; + d = readdir(dirp); + if (!d) { + // readdir() returns NULL on the end of the directory + // steam, and also on an error. To distinguish them, + // errno should be checked. + if (errno) + perror_exit(dirpath); + break; + } + + if (!strcmp(d->d_name, "..") || !strcmp(d->d_name, ".")) + continue; + + ret = snprintf(path, sizeof(path), "%s/%s", dirpath, d->d_name); + if (ret >= sizeof(path)) + error_exit("%s: too long path was truncated\n", path); + + if (is_ignored(path, d->d_name, d->d_type & DT_DIR)) { + debug("Ignore: %s\n", path); + print_path(path); + } else { + if ((d->d_type & DT_DIR) && !(d->d_type & DT_LNK)) { + if (!traverse_directory(path)) + all_ignored = false; + } else { + all_ignored = false; + } + } + } + + if (closedir(dirp)) + perror_exit(dirpath); + + // If all the files under this directory are ignored, let's ignore this + // directory as well in order to avoid empty directories in the tarball. + if (all_ignored) { + debug("Ignore: %s (due to all files inside ignored)\n", dirpath); + print_path(dirpath); + } + + decrement_depth(); + debug("Leave[%d]: %s\n", depth, dirpath); + + return all_ignored; +} + +// Register hard-coded ignore patterns. +static void add_fixed_patterns(void) +{ + const char * const fixed_patterns[] = { + ".git/", + }; + int i; + + for (i = 0; i < ARRAY_SIZE(fixed_patterns); i++) { + char *s = xstrdup(fixed_patterns[i]); + + add_pattern(s, "."); + free(s); + } +} + +static void usage(void) +{ + fprintf(stderr, + "usage: %s [options]\n" + "\n" + "Print files that are not ignored by git\n" + "\n" + "options:\n" + " -d, --debug print debug messages to stderr\n" + " -e, --extra-pattern PATTERN Add extra ignore patterns. This behaves like it is prepended to the top .gitignore\n" + " -h, --help show this help message and exit\n" + " -o, --output FILE output to a file (default: '-', i.e. stdout)\n" + " -p, --prefix PREFIX prefix added to each path\n" + " -r, --rootdir DIR root of the source tree (default: current working directory):\n", + progname); +} + +int main(int argc, char *argv[]) +{ + const char *output = "-"; + const char *rootdir = "."; + + progname = strrchr(argv[0], '/'); + if (progname) + progname++; + else + progname = argv[0]; + + while (1) { + static struct option long_options[] = { + {"debug", no_argument, NULL, 'd'}, + {"extra-pattern", required_argument, NULL, 'e'}, + {"help", no_argument, NULL, 'h'}, + {"output", required_argument, NULL, 'o'}, + {"prefix", required_argument, NULL, 'p'}, + {"rootdir", required_argument, NULL, 'r'}, + {}, + }; + + int c = getopt_long(argc, argv, "de:ho:p:r:", long_options, NULL); + + if (c == -1) + break; + + switch (c) { + case 'd': + debug_on = true; + break; + case 'e': + add_pattern(optarg, "."); + break; + case 'h': + usage(); + exit(0); + case 'o': + output = optarg; + break; + case 'p': + prefix = optarg; + break; + case 'r': + rootdir = optarg; + break; + case '?': + usage(); + /* fallthrough */ + default: + exit(EXIT_FAILURE); + } + } + + if (chdir(rootdir)) + perror_exit(rootdir); + + if (strcmp(output, "-")) { + out_fp = fopen(output, "w"); + if (!out_fp) + perror_exit(output); + } else { + out_fp = stdout; + } + + add_fixed_patterns(); + + traverse_directory("."); + + if (depth != 0) + error_exit("BUG\n"); + + while (nr_patterns > 0) + free(patterns[--nr_patterns]); + free(patterns); + free(nr_patterns_at); + + fflush(out_fp); + if (ferror(out_fp)) + error_exit("not all data was written to the output\n"); + + if (fclose(out_fp)) + perror_exit(output); + + return 0; +} From patchwork Tue Jan 31 16:26:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 50959 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp961wrn; Tue, 31 Jan 2023 08:30:43 -0800 (PST) X-Google-Smtp-Source: AK7set+Ea7eUURybzInskZyKyT5G/1d+SvuLCjlBfLD2akRhORhCo3Pg9UScZVwb1TYN+Y9wBOPT X-Received: by 2002:a17:902:e892:b0:198:981d:1805 with SMTP id w18-20020a170902e89200b00198981d1805mr4188043plg.9.1675182643092; Tue, 31 Jan 2023 08:30:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675182643; cv=none; d=google.com; s=arc-20160816; b=Oyx5USBWBFAMgHokih0X/qtNt0ZEE8hyuwHvZ3Hc06rklnNn3NDBcxMjqUOKLkiEFZ oz9zrTRNqZyb98clLEeN5NHCM9gAGandcaZcRVI0WKPuKXZIRzhZQV8TcmAoZxLeqoJZ 2nJursj8sTsHYGJ7NtUe48HIZk7kwm8uMa7d47NKvtXqOghLoNRcSOoHd/OiugRuB9pE r9GYfqeVZAvuRTD1eDJ9wCN+7MAqJ3zkLcC9M2d2ZudgS372x36c3tZjY5cfl/3kJX0v rxyvIz2MHRA+SIjpVtZXwB3T84nKtnj6C04uFLpJoKyRn8+gzvtnDiGQhMZkviWrmu65 tR2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=WviyiVM3gPlM7qMG/c89Wnn1nH4kUzjAQuFMnBHTrek=; b=EqUVvI+npguyGmpl/lOe8brYLoKrXeqT8v6Eo8FegNSWXB2FW3CcnM5uzAhZhbdwC2 QlhW4kgXDKX4Fus85DofJVnQZrfbMcLSSbFb0X66M3X4nsAfpkScmE32bvjhjSnWAc8H hRSIlYfVhLzk5CwKnvZNMasBZhWSmnti/+T4xMcza/VQHeOiBvN4K7O89aGvof+haaHM 4aw7fVSafoKTGp4MC2YpTyQABfw4xbYcMHAMVxLJdpuGm2SHlXi2CcZbfSfogagOoLGF HQLPZDzPYCk2PH9zKwY9oYxj+KULHYEon8+O9VRt1aixQYvwNpMHlokrb7VphvSkxRqF vYUA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="F102/jP5"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q12-20020a170902dacc00b00194a6e1b334si18755388plx.327.2023.01.31.08.30.29; Tue, 31 Jan 2023 08:30:43 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="F102/jP5"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231234AbjAaQ1c (ORCPT + 99 others); Tue, 31 Jan 2023 11:27:32 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36288 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229468AbjAaQ12 (ORCPT ); Tue, 31 Jan 2023 11:27:28 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0443813538; Tue, 31 Jan 2023 08:27:27 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id A7D63B81DA9; Tue, 31 Jan 2023 16:27:25 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9F44BC4339E; Tue, 31 Jan 2023 16:27:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675182444; bh=MEVJM+cYgJvnZYTgb2e5vWc4TqT9kt49CgVxTgaytkY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=F102/jP5YNrcj7VmXmt+0OjraxeVoKQGKofrtpcQrhgbUGHLl2MtfVJhOdRQcETQQ 5vXqcNpyDECjp91nzUddGRuGxkyL2jVMNvWEKnmGsII6pVM37ta90d/cSS4NMKHBR6 BCzgi9wR14I8rZK68YHz7nwnJDTF0A+uZwarmjPDcy6Mw6Omlhrsp0If8uF5zDWxSE c9M9JjiWrkYi9CMfPZg0/iLXIphQ/p8wfJw93CY2Syiy39v4zPK4tV0ciiMoseNAmE 3m1CwnekBV6iBFpNaDfq4tc2acLHNSSkg4Aro2h7+ncSSpcGpXGKqWn0aSRh0ImTvz MjIcKBlrEuLgg== From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Masahiro Yamada , Nathan Chancellor , Nick Desaulniers , Nicolas Schier , Tom Rix , llvm@lists.linux.dev Subject: [PATCH v3 2/5] kbuild: deb-pkg: create source package without cleaning Date: Wed, 1 Feb 2023 01:26:12 +0900 Message-Id: <20230131162615.1575215-2-masahiroy@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230131162615.1575215-1-masahiroy@kernel.org> References: <20230131162615.1575215-1-masahiroy@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756556315170361503?= X-GMAIL-MSGID: =?utf-8?q?1756556315170361503?= If you run 'make deb-pkg', all objects are lost due to 'make clean', which makes the incremental builds impossible. Instead of cleaning, pass the exclude list to tar's --exclude-from option. Previously, *.diff.gz contained some check-in files such as .clang-format, .cocciconfig. With this commit, *.diff.gz will only contain the .config and debian/. The other source files will go into the tarball. Signed-off-by: Masahiro Yamada --- Changes in v3: - Add --extra-pattern='*.rej' - Exclude symlinks at the toplevel - Add --sort=name tar option scripts/Makefile.package | 38 +++++++++++++++++++++++++++++++++----- scripts/package/mkdebian | 25 +++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/scripts/Makefile.package b/scripts/Makefile.package index dfbf40454a99..f4f44f01deb3 100644 --- a/scripts/Makefile.package +++ b/scripts/Makefile.package @@ -50,6 +50,32 @@ fi ; \ tar -I $(KGZIP) -c $(RCS_TAR_IGNORE) -f $(2).tar.gz \ --transform 's:^:$(2)/:S' $(TAR_CONTENT) $(3) +# Source Tarball +# --------------------------------------------------------------------------- + +PHONY += gen-exclude +gen-exclude: + $(Q)$(MAKE) -f $(srctree)/Makefile scripts_exclude + +# - Commit 1f5d3a6b6532e25a5cdf1f311956b2b03d343a48 removed '*.rej' from +# .gitignoredoes, but it is definitely a generated file. +# - The kernel tree has no symlink at the toplevel. If there exists one, it is +# a generated one. +quiet_cmd_exclude_list = GEN $@ + cmd_exclude_list = \ + scripts/gen-exclude --extra-pattern='*.rej' --prefix=./ --rootdir=$(srctree) > $@; \ + find . -maxdepth 1 -type l >> $@; \ + echo "./$@" >> $@ + +.exclude-list: gen-exclude + $(call cmd,exclude_list) + +quiet_cmd_tar = TAR $@ + cmd_tar = tar -I $(KGZIP) -c -f $@ -C $(srctree) --exclude-from=$< --exclude=./$@ --sort=name --transform 's:^\.:linux:S' . + +%.tar.gz: .exclude-list + $(call cmd,tar) + # rpm-pkg # --------------------------------------------------------------------------- PHONY += rpm-pkg @@ -81,12 +107,11 @@ binrpm-pkg: PHONY += deb-pkg deb-pkg: - $(MAKE) clean $(CONFIG_SHELL) $(srctree)/scripts/package/mkdebian - $(call cmd,src_tar,$(KDEB_SOURCENAME)) - origversion=$$(dpkg-parsechangelog -SVersion |sed 's/-[^-]*$$//');\ - mv $(KDEB_SOURCENAME).tar.gz ../$(KDEB_SOURCENAME)_$${origversion}.orig.tar.gz - +dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) $(DPKG_FLAGS) --source-option=-sP -i.git -us -uc + $(Q)origversion=$$(dpkg-parsechangelog -SVersion |sed 's/-[^-]*$$//');\ + $(MAKE) -f $(srctree)/scripts/Makefile.package ../$(KDEB_SOURCENAME)_$${origversion}.orig.tar.gz + +dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) $(DPKG_FLAGS) \ + --build=source,binary --source-option=-sP -nc -us -uc PHONY += bindeb-pkg bindeb-pkg: @@ -174,4 +199,7 @@ help: @echo ' perf-tarxz-src-pkg - Build $(perf-tar).tar.xz source tarball' @echo ' perf-tarzst-src-pkg - Build $(perf-tar).tar.zst source tarball' +PHONY += FORCE +FORCE: + .PHONY: $(PHONY) diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian index c3bbef7a6754..2f612617cbcf 100755 --- a/scripts/package/mkdebian +++ b/scripts/package/mkdebian @@ -84,6 +84,8 @@ set_debarch() { fi } +rm -rf debian + # Some variables and settings used throughout the script version=$KERNELRELEASE if [ -n "$KDEB_PKGVERSION" ]; then @@ -135,6 +137,29 @@ fi mkdir -p debian/source/ echo "1.0" > debian/source/format +# Ugly: ignore anything except .config or debian/ +# (is there a cleaner way to do this?) +cat<<'EOF' > debian/source/local-options +diff-ignore + +extend-diff-ignore = ^[^.d] + +extend-diff-ignore = ^\.[^c] +extend-diff-ignore = ^\.c($|[^o]) +extend-diff-ignore = ^\.co($|[^n]) +extend-diff-ignore = ^\.con($|[^f]) +extend-diff-ignore = ^\.conf($|[^i]) +extend-diff-ignore = ^\.confi($|[^g]) +extend-diff-ignore = ^\.config. + +extend-diff-ignore = ^d($|[^e]) +extend-diff-ignore = ^de($|[^b]) +extend-diff-ignore = ^deb($|[^i]) +extend-diff-ignore = ^debi($|[^a]) +extend-diff-ignore = ^debia($|[^n]) +extend-diff-ignore = ^debian[^/] +EOF + echo $debarch > debian/arch extra_build_depends=", $(if_enabled_echo CONFIG_UNWINDER_ORC libelf-dev:native)" extra_build_depends="$extra_build_depends, $(if_enabled_echo CONFIG_SYSTEM_TRUSTED_KEYRING libssl-dev:native)" From patchwork Tue Jan 31 16:26:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 50958 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp876wrn; Tue, 31 Jan 2023 08:30:35 -0800 (PST) X-Google-Smtp-Source: AK7set8t7598d/l8oviWYPeCGqEKh3F5wZCEm4zqULAGa1c50R0fQtPxgqq1pi4Jo2UzHYsstemM X-Received: by 2002:a17:90a:72c8:b0:22c:8171:e366 with SMTP id l8-20020a17090a72c800b0022c8171e366mr11740694pjk.4.1675182635447; Tue, 31 Jan 2023 08:30:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675182635; cv=none; d=google.com; s=arc-20160816; b=TF9YKRCp9+KSC//nIYFHzr1rUE52ODGQSLvsp+RyrpMydjEdEtCzlH7CNkA5ZygExW QQEUQOdNMiis320Prf1K6HWcXlE7NzAO8JvNb2XI0yKl8wH9uh+ft4tMx7v0QF1e5WAb HyDtgbeiBzcJxuRWAmtbBqqsk274LHi9EjdjxghNe2trYQEkWMZJ5HH6LuiToqRHLOUx +dRXH9aR8Blb6NZ8gZ2G9f55C9ZfR0T0esDnZ0IbLs1xc3qMcgE6zTmYHT04oMdUlgW2 Qc6CHtRmmn/AKedN3yGLS19qiqdThY9X8vfemBFWklsdNxt/RJvDrp8c/q9N7gydaO2I pl0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=en7QeKvZ7YxwXdOROABbIVmIVdPHnnHxxr9169zFblM=; b=zB71CQJOs6vF81FESDicGE2d5XV7JfYpsrbfZ6wWlZPoVlMAB/STPbr+8vO1ovOkaV x20OhKnwJq4XgtnRl2pqoDsSR9raEdbfB/pR5LEg03WeB5yS2IYRjpS72qWz18JgC5DZ yR6XmNf+0q0OPKhTrIqN3YJhu5YNM+bMg8PapyfgpuWLhOVuplVv89wS7ogk6eYzlZw8 FEFggIalYekULFj0zd9ui8Oq+5oq17626hYiT3Ehe755OeV8YxfXmWlSNDmxfR/zUdCy xhc9U727r8MiPv0Tpt8y8TZDKVYkfWWmL4GDVfA+4/CPDN6+movLDwzr90rWGFwFn80o EsUA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=YAywpdok; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g15-20020a17090a640f00b00218b7ae4defsi20263020pjj.134.2023.01.31.08.30.23; Tue, 31 Jan 2023 08:30:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=YAywpdok; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230299AbjAaQ13 (ORCPT + 99 others); Tue, 31 Jan 2023 11:27:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36266 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230011AbjAaQ11 (ORCPT ); Tue, 31 Jan 2023 11:27:27 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 07EE353E4F; Tue, 31 Jan 2023 08:27:27 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 98ABF6159B; Tue, 31 Jan 2023 16:27:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C28ACC4339C; Tue, 31 Jan 2023 16:27:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675182446; bh=DWkGelkh52HkYzxb7qURR75OplaKnXS904IdAqPc8P0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YAywpdokkmJ/HmrmGEMjwBuUrpiDUtcYMSGD/WoOuQgZZO2+voCYE65Ons8O95C4Z 8P7qz3s3lEM/bDIkb6JhoEWgu8IZ3Std3S0oyTRCdKi2+OvQEh9F/Llq9TcGG3B2bi XInawV87zbE+azOk//bcmUM6hZYouP8LGFkofbEXZmCExAndEdVlAFxLxyCSfoK+nI BZbqrAJjQoFsXRYOwuR23as1YlErQU9lhu/dev3y/1PhbZnE3n0+uT2txNSiuEXviv oCa+qJl6vfXd9KHQAYxcSrf1G37NRmefQD7MUImTguiJdJp9qZiTPfpDWAFTlCx5GI 2byzUVC6IhiJA== From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Masahiro Yamada , Nathan Chancellor , Nick Desaulniers , Nicolas Schier Subject: [PATCH v3 3/5] kbuild: rpm-pkg: build binary packages from source rpm Date: Wed, 1 Feb 2023 01:26:13 +0900 Message-Id: <20230131162615.1575215-3-masahiroy@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230131162615.1575215-1-masahiroy@kernel.org> References: <20230131162615.1575215-1-masahiroy@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756556307042121041?= X-GMAIL-MSGID: =?utf-8?q?1756556307042121041?= The build rules of rpm-pkg and srcrpm-pkg are almost the same. Remove the code duplication. Change rpm-pkg to build binary packages from the source package generated by srcrpm-pkg. This changes the output directory of the srpm generated by 'make rpm-pkg' because srcrpm-pkg overrides _srcrpmdir. Signed-off-by: Masahiro Yamada --- (no changes since v1) scripts/Makefile.package | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/scripts/Makefile.package b/scripts/Makefile.package index f4f44f01deb3..31c52bd0d180 100644 --- a/scripts/Makefile.package +++ b/scripts/Makefile.package @@ -79,11 +79,9 @@ quiet_cmd_tar = TAR $@ # rpm-pkg # --------------------------------------------------------------------------- PHONY += rpm-pkg -rpm-pkg: - $(MAKE) clean - $(CONFIG_SHELL) $(MKSPEC) >$(objtree)/kernel.spec - $(call cmd,src_tar,$(KERNELPATH),kernel.spec) - +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE)-linux -ta $(KERNELPATH).tar.gz \ +rpm-pkg: srpm = $(shell rpmspec --srpm --query --queryformat='%{name}-%{VERSION}-%{RELEASE}.src.rpm' kernel.spec) +rpm-pkg: srcrpm-pkg + +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE)-linux -rb $(srpm) \ --define='_smp_mflags %{nil}' # srcrpm-pkg From patchwork Tue Jan 31 16:26:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 50960 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp963wrn; Tue, 31 Jan 2023 08:30:43 -0800 (PST) X-Google-Smtp-Source: AK7set8NUab2e/sGpK2oDMOYwk1y3eCVbFWM1+7NQXdISjxsBKEl3NKgRwBtKbZCJuSEiihiBzPQ X-Received: by 2002:a05:6a20:8415:b0:bc:33b1:bfda with SMTP id c21-20020a056a20841500b000bc33b1bfdamr23428225pzd.1.1675182643272; Tue, 31 Jan 2023 08:30:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675182643; cv=none; d=google.com; s=arc-20160816; b=At5i5gmOj25NjepbgcoDqaoGzMbLqVIwSZM/cH5BQQQxTkPpM+DtsvNe81J7zRB45B Mr3uop8vlh3FGT1yiVw7SiJSHou8qwOPeM5YEu25rCnFR+uwFPfZ2Ccj9GnsTBnv06Mz uPQxstV+sWf1rnWsXtwv4MLC+tYvaIkPBsHNe2px36r+jrPbNNfQF7w9CJuqv+i0bvq7 LZNjRWQxQ/1PoVtIw5VDk0WH6xB2gdcRTCzfp2oJnWmGvf4MWpVsvGwfCOjjSfrcrUWc XQaq10dzWJA0R4w44l5MFdwupr1uyt+W5GF9PqXuyJCm1Eiir+i9KcZEbJUa3g63B/No uXlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=4DmFh6I8rpf7Y0+5k6s3nNaO84VJA7RDgtqTkhx82iY=; b=qE+PSRX1xnoBVSAjjW8E+JVcvVEw8GANUVW3r48MrqPUOCVREp1vXVWRlW7IweDgin Ss+aCFof3Y2uiT3OHHj9AFyU4PDemYC5QWa52rGt/M3pAtMjMpSeTORFLWv3nKxxxvqE MIIFVULhzfWgGl1cQ5Ty+6T6bFf6XgdvZeMKrlQHxW3i4LlvzzV+ydxN+ebwdrwAS9xP eTsPVb4TqKJTsquFez4uoNvA85gVvXyR8w7p/lHJu+j5TRY3KqdDQmJqom6pnaV7a+qO h3ElVWUpFtGjrSCRKtQKWaGaPEZy0W5zPRdaP74mohHcFR8lLfH51YZ11Pcd5Tvs6Mj/ gEdA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=EClBqLqz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w15-20020a63b74f000000b004788e156154si15453829pgt.360.2023.01.31.08.30.30; Tue, 31 Jan 2023 08:30:43 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=EClBqLqz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231550AbjAaQ1s (ORCPT + 99 others); Tue, 31 Jan 2023 11:27:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36550 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230340AbjAaQ1f (ORCPT ); Tue, 31 Jan 2023 11:27:35 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4AFFE552B4; Tue, 31 Jan 2023 08:27:31 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id B680FB81DAB; Tue, 31 Jan 2023 16:27:29 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 69B9DC433A1; Tue, 31 Jan 2023 16:27:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675182448; bh=NP4BYZc6xhqctJ8/b5x2SFMZ6bc2TqZIGDHNl8QnbQI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EClBqLqzpH9TSu/oXQeG1LcwgvGu8AeD7eZipdyuVz2L/JC5wMoBtnaCnVriwfhnX XmmI6mUtC0MuKJFPH+JJBdmJabGzT4AQ+Ku/vpZxd5iBjN/I9KYqD72m2okVWBU4Dk F6jNxxcwhZBbBIvt1uhhdgZZEpFudvA9ravL9e80kFkV/WnViiToJDHR3sHL9YzD9f bMdkecnlKa4wjgBCzTLvlj335zn6r71oTaQM3yV2vh8PKAU+r8KvwaqtKPL8SfS3gK E1aVOXMoYFi+zbUU58HRyHI4HVJO8m4oWSbK+EWce9VDSf91ZjDwYoKJdsnFVxAIU6 9k9StVR1U6iyA== From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Masahiro Yamada , Alex Gaynor , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Boqun Feng , Gary Guo , Miguel Ojeda , Nathan Chancellor , Nick Desaulniers , Nicolas Schier , Wedson Almeida Filho , rust-for-linux@vger.kernel.org Subject: [PATCH v3 4/5] kbuild: srcrpm-pkg: create source package without cleaning Date: Wed, 1 Feb 2023 01:26:14 +0900 Message-Id: <20230131162615.1575215-4-masahiroy@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230131162615.1575215-1-masahiroy@kernel.org> References: <20230131162615.1575215-1-masahiroy@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756556315782741847?= X-GMAIL-MSGID: =?utf-8?q?1756556315782741847?= If you run 'make (src)rpm-pkg', all objects are lost due to 'make clean', which makes the incremental builds impossible. Instead of cleaning, pass the exclude list to tar's --exclude-from option. Previously, the .config was contained in the source tarball. With this commit, the source rpm consists of separate linux.tar.gz and .config. Remove stale comments. Now, 'make (src)rpm-pkg' works with O= option. Signed-off-by: Masahiro Yamada --- (no changes since v1) scripts/Makefile.package | 50 +++------------------------------------- scripts/package/mkspec | 8 +++---- 2 files changed, 7 insertions(+), 51 deletions(-) diff --git a/scripts/Makefile.package b/scripts/Makefile.package index 31c52bd0d180..1383160d0eee 100644 --- a/scripts/Makefile.package +++ b/scripts/Makefile.package @@ -3,53 +3,11 @@ include $(srctree)/scripts/Kbuild.include -# RPM target -# --------------------------------------------------------------------------- -# The rpm target generates two rpm files: -# /usr/src/packages/SRPMS/kernel-2.6.7rc2-1.src.rpm -# /usr/src/packages/RPMS/i386/kernel-2.6.7rc2-1..rpm -# The src.rpm files includes all source for the kernel being built -# The .rpm includes kernel configuration, modules etc. -# -# Process to create the rpm files -# a) clean the kernel -# b) Generate .spec file -# c) Build a tar ball, using symlink to make kernel version -# first entry in the path -# d) and pack the result to a tar.gz file -# e) generate the rpm files, based on kernel.spec -# - Use /. to avoid tar packing just the symlink - -# Note that the rpm-pkg target cannot be used with KBUILD_OUTPUT, -# but the binrpm-pkg target can; for some reason O= gets ignored. - -# Remove hyphens since they have special meaning in RPM filenames -KERNELPATH := kernel-$(subst -,_,$(KERNELRELEASE)) KDEB_SOURCENAME ?= linux-upstream KBUILD_PKG_ROOTCMD ?="fakeroot -u" export KDEB_SOURCENAME -# Include only those top-level files that are needed by make, plus the GPL copy -TAR_CONTENT := Documentation LICENSES arch block certs crypto drivers fs \ - include init io_uring ipc kernel lib mm net rust \ - samples scripts security sound tools usr virt \ - .config Makefile \ - Kbuild Kconfig COPYING $(wildcard localversion*) MKSPEC := $(srctree)/scripts/package/mkspec -quiet_cmd_src_tar = TAR $(2).tar.gz - cmd_src_tar = \ -if test "$(objtree)" != "$(srctree)"; then \ - echo >&2; \ - echo >&2 " ERROR:"; \ - echo >&2 " Building source tarball is not possible outside the"; \ - echo >&2 " kernel source tree. Don't set KBUILD_OUTPUT, or use the"; \ - echo >&2 " binrpm-pkg or bindeb-pkg target instead."; \ - echo >&2; \ - false; \ -fi ; \ -tar -I $(KGZIP) -c $(RCS_TAR_IGNORE) -f $(2).tar.gz \ - --transform 's:^:$(2)/:S' $(TAR_CONTENT) $(3) - # Source Tarball # --------------------------------------------------------------------------- @@ -87,12 +45,10 @@ rpm-pkg: srcrpm-pkg # srcrpm-pkg # --------------------------------------------------------------------------- PHONY += srcrpm-pkg -srcrpm-pkg: - $(MAKE) clean +srcrpm-pkg: linux.tar.gz $(CONFIG_SHELL) $(MKSPEC) >$(objtree)/kernel.spec - $(call cmd,src_tar,$(KERNELPATH),kernel.spec) - +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE)-linux -ts $(KERNELPATH).tar.gz \ - --define='_smp_mflags %{nil}' --define='_srcrpmdir $(srctree)' + +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE)-linux -bs kernel.spec \ + --define='_smp_mflags %{nil}' --define='_sourcedir .' --define='_srcrpmdir .' # binrpm-pkg # --------------------------------------------------------------------------- diff --git a/scripts/package/mkspec b/scripts/package/mkspec index 108c0cb95436..83a64d9d7372 100755 --- a/scripts/package/mkspec +++ b/scripts/package/mkspec @@ -47,7 +47,8 @@ sed -e '/^DEL/d' -e 's/^\t*//' < X-Patchwork-Id: 50965 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp1383wrn; Tue, 31 Jan 2023 08:31:23 -0800 (PST) X-Google-Smtp-Source: AMrXdXs6iD9rS319KJrjLL1sop1ikqCIlvYMlPK+ljV0L8RZT6Wobj0qeZ8jBIcimj7VyGX1dE7o X-Received: by 2002:a17:902:76c5:b0:189:5ff5:eb92 with SMTP id j5-20020a17090276c500b001895ff5eb92mr49575021plt.39.1675182683436; Tue, 31 Jan 2023 08:31:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675182683; cv=none; d=google.com; s=arc-20160816; b=IcoCK8/vhVka8x1K+t1PaUgJbD2hN4jhgORWI7xbkQwmpvGDsARAvol9oaPXrYu7Vq 5UARkpRI/yX44ir6mdCavVsMwZ3pXiMS4BpA0/jcx70BiBegRSgyu0E+IL4b+V+oXblV uoAy/l0rs8TQXMs68QQcjxnUSf7jOtLiAJS7dVx4KgGXoBd9iapmUOxJVeH2o4HDbAyZ i2TNf7i/mS3jZXtDlDTJTOMgIQN4tvFWRm1qQrJyCj3iMpg6aYKWMT6CzMJW7B/EK/kA YDFYAzP32Q0VWVDpF9RCSrnj7VCn5RfmPU0IA+X3CZG7iPSREAVg3d9WM/MsRz21UwGW ymgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=CqlfvDs6svJsbQVHhU7Eya/UvE/0Ib61Y8uswB1KNjo=; b=xL61X4bWr5UHAyk/DUvrQOZCjlV7SDEf8bCvKi80H1xx7Bnkng02Tjikj7uMN6Cq5Q +tkk7r9j3OJ0aTCwL3+wUClf+WJIAmDUHWB2lkSmzD4hgO6Cq3MNvJQH7EBx33l/zHg2 endqjrmUzPVCqhlBdKuCGs+gP8GiCDv36V0GMVq4DXl/YD99gCSoXBnCa1HpNafJCA4f Kj/dd1IYVjYuLyBeSXoVmH2Fo0VzcDLOpj2C6N4hf5Mrqe0Fzq74okhBNDF4PG/tSntf y2PJoOTEpFWIHtj47kVHD55NXmrXBpO79WFl7ibSJQceyjXBeIlIKgIBCCizao8gGG/z SZUA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=t6G7SP2S; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l189-20020a6388c6000000b00477fbd59895si16553222pgd.852.2023.01.31.08.31.11; Tue, 31 Jan 2023 08:31:23 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=t6G7SP2S; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229468AbjAaQ1u (ORCPT + 99 others); Tue, 31 Jan 2023 11:27:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36608 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229693AbjAaQ1g (ORCPT ); Tue, 31 Jan 2023 11:27:36 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CBFE056196; Tue, 31 Jan 2023 08:27:32 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 32538B81DAE; Tue, 31 Jan 2023 16:27:31 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C5DE8C433A4; Tue, 31 Jan 2023 16:27:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675182449; bh=g/PguSDXjg6VLI4lh9MpBwOaQPS/+vjk/LM6FEYEX3g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=t6G7SP2S/BdD/6qKiVdYXuTw3I5yjQjR3bEONpTev0/P/WY3nK/iUqJtRalNKQCu+ EUcsQDSvQCmeZCNF17SOxjfGCNaGJPxwKnS0NKQRJX6Yqui/ThcFNsrbuOQjyl6L0t ZPJAoNw3R7HgPE4KMYsYzh4/yIWihJaNzNLefvJFD6DhvSU7MpSTrnt6aeQidq3KCw ZrzbF9M5YVoKHd67hDNRJASZ+zekkjdxx0Vcg2a31jkaQmKYqr+wzK+Ot1sqeWbtXQ gjAQBqWps4OhScvie1n/Y4/10z7iunHwrj66HCxoZ+IZJUPcr8NaBlHSfUuVXDsCfW /G3snRZk6ComA== From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Masahiro Yamada , Nathan Chancellor , Nick Desaulniers , Nicolas Schier Subject: [PATCH v3 5/5] kbuild: deb-pkg: hide KDEB_SOURCENAME from Makefile Date: Wed, 1 Feb 2023 01:26:15 +0900 Message-Id: <20230131162615.1575215-5-masahiroy@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230131162615.1575215-1-masahiroy@kernel.org> References: <20230131162615.1575215-1-masahiroy@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756556357163603935?= X-GMAIL-MSGID: =?utf-8?q?1756556357163603935?= scripts/Makefile.package does not need to know the value of KDEB_SOURCENAME because the source name can be taken from debian/changelog by using dpkg-parsechangelog. Move the default of KDEB_SOURCENAME (i.e. linux-upstream) to scripts/package/mkdebian. Signed-off-by: Masahiro Yamada --- (no changes since v2) Changes in v2: - New patch scripts/Makefile.package | 23 +++++++++++++++-------- scripts/package/mkdebian | 2 +- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/scripts/Makefile.package b/scripts/Makefile.package index 1383160d0eee..677692b9c74c 100644 --- a/scripts/Makefile.package +++ b/scripts/Makefile.package @@ -3,9 +3,7 @@ include $(srctree)/scripts/Kbuild.include -KDEB_SOURCENAME ?= linux-upstream KBUILD_PKG_ROOTCMD ?="fakeroot -u" -export KDEB_SOURCENAME MKSPEC := $(srctree)/scripts/package/mkspec # Source Tarball @@ -59,19 +57,28 @@ binrpm-pkg: +rpmbuild $(RPMOPTS) --define "_builddir $(objtree)" --target \ $(UTS_MACHINE)-linux -bb $(objtree)/binkernel.spec +PHONY += debian +debian: + $(call cmd,debianize) + +PHONY += debian-tarball +debian-tarball: source = $(shell dpkg-parsechangelog -S Source) +debian-tarball: orig-version = $(shell dpkg-parsechangelog -S Version | sed 's/-[^-]*$$//') +debian-tarball: debian + $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.package ../$(source)_$(orig-version).orig.tar.gz + PHONY += deb-pkg -deb-pkg: - $(CONFIG_SHELL) $(srctree)/scripts/package/mkdebian - $(Q)origversion=$$(dpkg-parsechangelog -SVersion |sed 's/-[^-]*$$//');\ - $(MAKE) -f $(srctree)/scripts/Makefile.package ../$(KDEB_SOURCENAME)_$${origversion}.orig.tar.gz +deb-pkg: debian-tarball +dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) $(DPKG_FLAGS) \ --build=source,binary --source-option=-sP -nc -us -uc PHONY += bindeb-pkg -bindeb-pkg: - $(CONFIG_SHELL) $(srctree)/scripts/package/mkdebian +bindeb-pkg: debian +dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) $(DPKG_FLAGS) -b -nc -uc +quiet_cmd_debianize = GEN $@ + cmd_debianize = $(srctree)/scripts/package/mkdebian + PHONY += intdeb-pkg intdeb-pkg: +$(CONFIG_SHELL) $(srctree)/scripts/package/builddeb diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian index 2f612617cbcf..0c1ed6215a02 100755 --- a/scripts/package/mkdebian +++ b/scripts/package/mkdebian @@ -95,7 +95,7 @@ else revision=$($srctree/init/build-version) packageversion=$version-$revision fi -sourcename=$KDEB_SOURCENAME +sourcename=${KDEB_SOURCENAME:-linux-upstream} if [ "$ARCH" = "um" ] ; then packagename=user-mode-linux